Package: inet.linklayer.ieee80211.mac.ratecontrol
AarfRateControl
simple moduleReferences:
"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."
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 to | function | info |
---|---|---|
Ieee80211Interface | inet::NetworkInterface::receiveSignal | POST_MODEL_CHANGE |
Called methods (observed)
function | info | call from |
---|---|---|
inet::ieee80211::AarfRateControl::getRate | getRate | Dcf |
inet::ieee80211::AarfRateControl::receiveSignal | modesetChanged | Ieee80211Mac |
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