AarfRateControl

Package: inet.linklayer.ieee80211.mac.ratecontrol

simple module AarfRateControl

Implements the Adaptive ARF (AARF) rate control mechanism, which was initially described in IEEE 802.11 Rate Adaptation: A Practical Approach, by M. Lacage, M.H. Manshaei, and T. Turletti, 2004.

inet.linklayer.ieee80211.mac.ratecontrol.AarfRateControlAarfRateControlsimple

Inheritance diagram

Known subclasses

Name

Type

Description

ArfRateControl

simple module

Implements the Auto Rate Fallback (ARF) adaptive rate control mechanism.

Extends

Name

Type

Description

SimpleModule

simple module

Base module for all INET simple modules.

Parameters

Name

Type

Default value

Description

displayStringTextFormat

string

“{currentMode}”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

initialRate

double

-1bps

-1 means the fastest mandatory rate

interval

double

50ms

The rate (unconditionally) increases after each time interval.

increaseThreshold

int

10

Number of successful transmissions needed to increase the rate

decreaseThreshold

int

2

Number of consecutive unsuccessful transmissions (in the sense that the ACK does not arrive within the timeout)

increaseThresholdFactor

double

2

When the transmission of the probing packet fails, increaseThreshold is multiplied by increaseThresholdFactor.

maxIncreaseThreshold

int

50

Upper bound for increaseThreshold.

Properties

Name

Value

Description

class

AarfRateControl

display

i=block/cogwheel

Signals

Name

Type

Unit

Description

datarateChanged

Statistics

Name

Title

Source

Record

Unit

Interpolation Mode

Description

datarateChanged

datarate

vector

sample-hold

Source code

//
// Implements the Adaptive ARF (AARF) rate control mechanism, which was
// initially described in IEEE 802.11 Rate Adaptation: A Practical Approach,
// by M. Lacage, M.H. Manshaei, and T. Turletti, 2004.
//
simple AarfRateControl extends SimpleModule like IRateControl
{
    parameters:
        @class(AarfRateControl);
        double initialRate @unit(bps) = default(-1bps); // -1 means the fastest mandatory rate
        double interval @unit(s) = default(50ms); // The rate (unconditionally) increases after each time interval.
        int increaseThreshold = default(10); // Number of successful transmissions needed to increase the rate
        int decreaseThreshold = default(2); // Number of consecutive unsuccessful transmissions (in the sense that the ACK does not arrive within the timeout)
                                            // needed to increase the rate
        double increaseThresholdFactor = default(2); // When the transmission of the probing packet fails, increaseThreshold is multiplied by increaseThresholdFactor.
        int maxIncreaseThreshold = default(50); // Upper bound for increaseThreshold.
        displayStringTextFormat = default("{currentMode}");
        @display("i=block/cogwheel");
        @signal[datarateChanged];
        @statistic[datarateChanged](title="datarate"; record=vector; interpolationmode=sample-hold);
}

File: src/inet/linklayer/ieee80211/mac/ratecontrol/AarfRateControl.ned