AarfRateControl

Package: inet.linklayer.ieee80211.mac.ratecontrol

AarfRateControl

simple module

References:

"However, there is a clear threshold region in the 40ms-60ms range, depending on the degree of mobility, beyond which there is little performance change but below which there is a noticeable drop."

AarfRateControl

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Known subclasses

Name Type Description
ArfRateControl simple module (no description)

Parameters

Name Type Default value Description
initialRate double -1bps -1 means fastest mandatory rate
interval double 50ms

The rate (unconditionally) increases after each time interval (the default interval is unspecified [2]).

increaseThreshold int 10

Number of successful transmissions needed to increase the rate

decreaseThreshold int 2

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

increaseThresholdFactor double 2

When the transmission of probing packet fails, we multiply by "increaseThresholdFactor" the increaseThreshold.

maxIncreaseThreshold int 50

Upper bound for increaseThreshold.

Properties

Name Value Description
display i=block/cogwheel

Signals

Name Type Unit
datarateChanged

Statistics

Name Title Source Record Unit Interpolation Mode
datarateChanged datarate vector sample-hold

Direct method calls (observed)

call tofunctioninfo
Ieee80211Interfaceinet::NetworkInterface::receiveSignalPOST_MODEL_CHANGE

Called methods (observed)

functioninfocall from
inet::ieee80211::AarfRateControl::getRategetRateDcf
inet::ieee80211::AarfRateControl::receiveSignalmodesetChangedIeee80211Mac

Source code

// References:
// - [1] https://www.eecs.yorku.ca/course_archive/2010-11/F/6590/Notes/RBAR.pdf
//
//    "However, there is a clear threshold region in the 40ms-60ms
//    range, depending on the degree of mobility, beyond which
//    there is little performance change but below which there is a
//    noticeable drop."
//
simple AarfRateControl like IRateControl
{
    parameters:
        double initialRate @unit(bps) = default(-1bps); // -1 means fastest mandatory rate
        double interval @unit(s) = default(50ms); // The rate (unconditionally) increases after each time interval (the default interval is unspecified [2]).
        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 ACK does not arrive within timeout)
                                            // needed to increase the rate
        double increaseThresholdFactor = default(2); // When the transmission of probing packet fails, we multiply by "increaseThresholdFactor" the increaseThreshold.
        int maxIncreaseThreshold = default(50); // Upper bound for increaseThreshold.
        @display("i=block/cogwheel");
        @signal[datarateChanged];
        @statistic[datarateChanged](title="datarate"; record=vector; interpolationmode=sample-hold);
}

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