Simple Module AARFRateControl

Package: inet.linklayer.ieee80211.mac.ratecontrol
File: src/inet/linklayer/ieee80211/mac/ratecontrol/AARFRateControl.ned

C++ definition

References: [1] ftp://ftp-sop.inria.fr/planete/ivs/papers/mswim04.pdf [2] http://research.microsoft.com/en-us/projects/mesh/mobicom01.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."

AARFRateControl

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.

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
datarate

Statistics:

Name Title Source Record Unit Interpolation Mode
datarate vector

Source code:

// References:
//   [1] ftp://ftp-sop.inria.fr/planete/ivs/papers/mswim04.pdf
//   [2] http://research.microsoft.com/en-us/projects/mesh/mobicom01.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[datarate];
        @statistic[datarate](record=vector);
}