Skip to content

Latest commit

 

History

History
110 lines (92 loc) · 5.59 KB

aarf-user-documentation.rst

File metadata and controls

110 lines (92 loc) · 5.59 KB

AARF User Manual

This document describes the Adaptive Auto Rate Fallback (AARF) algorithm and acts as a user manual for its implementation in ns3.

Introduction

AARF is a rate adaptation algorithm that provides both short term and long term adaptation. It is compatible with the IEEE 802.11 wireless LAN standard.

ARF is good at handling short-term variations but fails when it comes to handling stable conditions. In stable conditions, i.e, when the station and AP are usually stationary or stay within each other's transmission range, the best rate to choose to optimize the application throughput is the highest rate whose Packet Error Rate (PER) is low enough such that the number of retransmissions is low. Usually, higher rates can achieve higher application-level throughput but their higher PERs generate more retransmissions, which decreases the application-level throughput. ARF can recognize this best rate and use it extensively but it also tries constantly (every 10 successfully transmitted consecutive packet) to use a higher rate to be able to react to channel condition changes. This process can be costly since the regular transmission failures generated by ARF decrease the application throughput.

To overcome this drawback in ARF, AARF was proposed, with the difference being the threshold i.e, the number of consecutive successful transmissions required to change to a higher data rate not being fixed. It is adapted using Binary Exponential Backoff. Its value can be any of the following: 10, 20, 40, 60. The effect of this adaptation mechanism is to increase the period between successive failed attempts to use a higher rate. Fewer failed transmissions and retransmissions improves the overall throughput. As far as the practical advantages are concerned, there are two points to make:

  • It does not use the RTS/CTS protocol.
  • On the hardware side, all it requires is a low communication latency between the block which implements the rate control algorithm and the transmission block which handles the ACK timeouts. This new algorithm can thus be easily and incrementally deployed in existing infrastructure networks with a simple firmware or driver upgrade on each node.

The algorithm works in the following way. If the first packet transmitted at a new data rate is a failure, the value of the threshold is doubled (with a maximum bound set to 60) and the sender falls back to the previous rate. In case, the first packet transmitted at the new data rate is a success, the threshold is reset to 10 and the transmission continues.

If there are two consecutive packet transmission failures, the threshold is reset to 10 and the sender goes to the data rate which is lower than the current date rate. If the sender is already at the lowest data rate, the threshold is not reset.

Implementation Details

The following variables are used in the ns3 implementation of AARF.

The variables mentioned below are defined in the AarfWifiRemoteStation struct, which represents a remote WiFi station using AARF:

  • m_timer: It is incremented for each packet transmitted and reset to zero whenever two or more consecutive retries are done or when 10 consecutive packets have been successfully transmitted.
  • m_success: It is the number of consecutive successful packet transmissions.
  • m_failed: number of consecutive failed packet transmissions.
  • m_recovery: It is set to TRUE when a probing packet is sent to try a higher data rate. At all other times, it is FALSE.
  • m_timerTimeout: If a timer reaches this value, a probe packet is sent.
  • m_successThreshold: It is the number of consecutive successful transmissions required to send a probe packet at a higher rate.
  • m_rate: It is the rate at which data is being transmitted currently.

The variables mentioned below are attributes of the AarfWifiManager class. The one-line description given below for each of these variables is available in the source code itself.

  • SuccessK: Multiplication factor used to calculate the success threshold; the default value is 2.
  • TimerK: Multiplication factor for the timer threshold; the default value is 2.
  • MaxSuccessThreshold: Maximum value of the success threshold; the default value is 60.
  • MinTimerThreshold: The minimum value for the 'timer' threshold; the default value is 15.
  • MinSuccessThreshold: The minimum value for the success threshold; the default value is 10.
  • Rate: Traced value for rate changes (b/s)

Here are a few important functions in the ns3 implementation of AARF:

  • The function DoReportDataFailed implements what happens when a data packet is not successfully transmitted. If the packet not transmitted is the first packet at a new data rate, the station will be in recovery mode and take necessary action. If the packet is the second or any higher packet dropped, the normal fallback is performed.
  • The function DoReportDataOk logs that the data was successfully transmitted along with the SNR values for the data and acknowledgement packets. For every packet successfully transmitted, it updates the values of the number of successful transmissions and other values. If the number of successful packets has reached the threshold, it will switch to the next higher data rate and go into recovery mode.
  • The function DoGetDataTxVector and DoGetRtsTxVector are used to define the parameters which will be passed to the 802.11 PHY to be used for transmission. The parameters like mode, channel width, power level among others are returned as a vector.