Professional Documents
Culture Documents
Collision-Aware Rate Adaptation Algorithm For High-Throughput Ieee 802.11N Wlans
Collision-Aware Rate Adaptation Algorithm For High-Throughput Ieee 802.11N Wlans
Abstract—IEEE 802.11n Wireless Local Area Network MiRA [5], CRA [6], ARAMIS [7] and HiWiLA [8]. The
(WLAN) is the default standard that is used on modern increment or decrement of data rate in Minstrel-HT, MiRA and
smartphones and modern PCs/laptops. Medium Access Control CRA is based on random probing. Different to RAMAS, L3S,
(MAC) 802.11n has the capability of transmitting multiple MAC HiWiLA which is done based on order probing and ARAMIS
Protocol Data Units (MPDUs) into an Aggregate-MPDU (A- selects data rate based on the SNR mapping to data rate.
MPDU). Physical (PHY) 802.11n transmits MPDU or A-MPDU
using a PHY rate of 6.5 to 600 Mbps determined by the rate MDPU or A-MDPU can also get error caused by collisions.
adaptation algorithm. The selected PHY rate is expected Collision can be caused hidden terminal problem. In the 802.11
according to the channel conditions for MPDU to be received standard, Request to Send/Clear to Send (RTS/CTS)
without error. Based on the literature study, Minstrel-HT is one transmission mode has been provided to solve the collision
of the rate adaptation algorithms based on proposed channel problem. But as far as we know, all of the algorithms
conditions, especially for IEEE 802.11n high-throughput WLAN. mentioned above do not have the mechanism to activate
However Minstrel-HT does not have a mechanism to activate RTS/CTS mode dynamically. As a result the performance of
RTS/CTS mode dynamically in the event of a collision error. these algorithms can decrease when MPDU or A-MPDU
Collision-aware rate adaptation (CARA) has been proposed, undergoes collision.
however the design has been made not for WLAN high
throughput. In this paper we improve CARA to take advantage Based on literature review, we found only MoFA [9] and
of MAC and PHY 802.11n capabilities and call it CARA for High STRALE [10] algorithms that have RTS/CTS mode activation
Throughput (CARA-HT). We developed the CARA-HT mechanisms in the event of collision in the high throughput of
algorithm in NS-3.26 simulator. The simulation results show the IEEE 802.11n WLAN. MoFA and STRALE are schemes for
throughput produced by CARA-HT is better than Minstrel-HT. adaptation of A-MPDU sizes and use Minstrel as its adaptation
algorithm. MoFA and STARLE also adopt Adaptive-RTS (A-
Keywords—Collision-Aware; Rate Adaptation; CARA-HT; RTS) to overcome collisions. However A-RTS on MoFA is
High Throughput; 802.11n. based on sub frame error rate (SFER) threshold, whereas in
STRALE based on using the hidden detection tool.
I. INTRODUCTION
Collision aware rate adaptation has been proposed by [11],
IEEE 802.11n Wireless Local Area Network (WLAN) is but designs are made not for high throughput WLAN. In this
the default standard used on smartphones and laptops in the paper we improved it to take advantage of MAC and PHY
past few years. Medium Access Control (MAC) 802.11n has 802.11n capabilities and call it as Collision Aware Rate
the capability of transmitting multiple MAC Service Data Units Adaptation (CARA) for High Throughput (HT). In CARA-HT
(MSDUs) into an Aggregate-MSDU (A-MSDU) and the ability we added some new attributes and added functionality for
to transmit a maximum of 64 MAC Protocol Data Units transmission using A-MPDU and HT-PHY rate. We then
(MPDUs) into an Aggregate-MPDU (A-MPDU). Physical implemented proposed method on the open source NS-3
(PHY) of 802.11n transmits MPDU or A-MPDU using the network simulator and tested its performance through several
PHY rate determined by rate adaptation algorithm. The simulations extensively.
802.11n PHY rate is selected by modulation type, coding rate,
channel bandwidth, guard interval, and the number of spatial The next section of this paper is organized as follows. Part
streams [1]. The selected PHY rate is expected according to the II describes the literature studies related to 802.11n standards,
channel conditions for MPDU to be received without error. Collision Aware Rate Adaptation and CARA algorithms on
NS-3. Part III describes the methods of developing CARA-HT
Based on the literature review, there were many adaptation algorithms and their performance testing methods. The results
rate algorithms based on proposed channel conditions, of the development and performance of the CARA-HT
especially for IEEE 802.11n WLAN high throughput. The algorithm are shown in Section IV. Finally, Part V presents the
algorithms include: Minstrel-HT [2], RAMAS [3], L3S [4], conclusion.
13
Fig. 2. Simulation topology
14
main function of the proposed method that is the adaptability of Pseudocode 1. CARA-HT algorithm
data rate based on the channel error and collision error. 1: Initialization:
2: probeThreshold = 1;
Simulation scenarios for performance evaluation of CARA- 3: failureThreshold = 2;
HT algorithm, we do based on topology as shown in Fig. 2. In 4: successThreshold = 10;
the simulation of adaptation rate based on error channel we do 5: timerTimeout = 15;
6: rate = 0;
as follows. A station (STA) at a distance of 5 meters from 7: success = 0;
Access Point (AP) transmits 600 Mbps constant bit rate (CBR) 8: failed = 0;
traffic, packet size is 1420 bytes and uses UDP transport 9: timer = 0;
protocol. The STA then moves away toward the right up to a 10: chWidth = 0;
distance of 100 meters from the AP at a speed of 1m / s. This 11: sgi = true;
12: streams = 1;
distance change is intended to increase the probability of the 13: maxHtRateId = 7;
error channel. Throughput we count on the AP side. 14: nSuccessfulMpdus = 0;
15: maxAMPDU = 0;
In the simulation rate adaptation based on collision error, 16: GetDataTxVector ()
we add one STA which always sends CBR traffic to AP using 17: GetRtsTxVector ()
MCS0. To create a hidden terminal condition, the initial 18:
position of the first STA we place on the 10 m to the right of 19: For each ACK:
the AP and the second STA on the left 85m AP. For CARA- 20: Begin
21: if maxAMPDU < 2*MPDU then
HT performance to be evaluated, an average of 5 seconds 22: timer++;
through CARA-HT then we compare with constant rate 23: success++;
throughput (non-rate adaptation) and Minstrel-HT throughput. 24: failed = 0;
The other parameters we used in the simulation are shown in 25: if ((success = successThreshold || timer > timerTimeout)
TABLE II. 26: && (rate < maxHtRateId)) then
27: rate++;
28: timer = 0;
IV. RESULT AND DICUSSION 29: success = 0;
30: else
In this section we describe the development and evaluation 31: success += nSuccessfulMpdus;
of CARA-HT algorithm performance. 32: failed = 0;
33: retry = 0;
A. Development of CARA-HT Algorithm 34: if ((success >= successThreshold)
35: && (rate < maxHtRateId)) then
Based on CARA-HT algorithm model development method 36: rate++;
described in section III, we have developed CARA-HT pseudo 37: timer = 0;
code algorithm as shown in Pseudocode 1. Pseudocode CARA- 38: success = 0;
39: nSuccessfulMpdus = 0;
HT algorithm consists of initialization part (lines 2-17),
40: end
function to increment data rate for the success of MPDU 41:
transmissions, without or using AMPDU (lines 20-40), a 42: For each packet loss:
function for data rate decrement for MPDU transmission 43: begin
failures (lines 43-51), a function for determining 44: timer++;
MPDU/AMPDU transmission parameters in the DataTxVector 45: failed++;
46: success = 0;
(lines 54-80) function to specify RTS transmission parameters 47: if failed >= failureThreshold then
in RtsTxVector (lines 82-94) and RTS/CTS mode activation 48: if (rate != 0) then rate--;
function dynamically (line 96-100). 49: failed = 0;
50: timer = 0;
In the initialization section we add new attributes that were 51: DoNeedRts()
not previously available in the CARA algorithm, which is 52: end
chWidth (channel width), sgi (short guard interval), streams 53:
(number of spatial streams) and maxHtRateId (maximum 54: GetDataTxVector ()
55: begin
number of ID of HT rate). These four attributes are used to 56: chWidth = GetChWidth ();
identify the HT data rate list supported by STA and AP. 57: sgi = GetShortGuardInterval ();
Additionally we also added the nSuccessfulMpdus (number of 58: streams = GetNumberOfSupportedRxAntennas ();
successful transmission of MPDU) and maxAMPDU 59: if (chWidth = 40 && sgi = true && ss = 4) then rate = {0 ~ 127);
(maximum size of A-MPDU) attributes used when a terminal 60: if (chWidth = 40 && sgi = true && ss = 3) then rate = {0 ~ 95);
61: if (chWidth = 40 && sgi = true && ss = 2) then rate = {0 ~ 63);
activates the AMPDU transmission mode. 62: if (chWidth = 40 && sgi = true && ss = 1) then rate = {0 ~ 31);
In CARA-HT, for each ACK received then the value of the 63: if (chWidth = 40 && sgi = false && ss = 4) then rate = {0 ~ 63);
64: if (chWidth = 40 && sgi = false && ss = 3) then rate = {0 ~ 47);
success attribute will be updated depending on whether the 65: if (chWidth = 40 && sgi = false && ss = 2) then rate = {0 ~ 31);
MPDU is sent using AMPDU or not. If not, then the attribute 66: if (chWidth = 40 && sgi = false && ss = 1) then rate = {0 ~ 15);
value success is incremented. But if using AMPDU, then the 67: if (chWidth = 20 && sgi = true && ss = 4) then rate = {0 ~ 63);
value of attribute success summed with nSuccessfulMpdus. So 68: if (chWidth = 20 && sgi = true && ss = 3) then rate = {0 ~ 47);
on CARA-HT, MPDU transmission using AMPDU can 69: if (chWidth = 20 && sgi = true && ss = 2) then rate = {0 ~ 31);
accelerate the attribute's success value to its threshold value. If 70: if (chWidth = 20 && sgi = true && ss = 1) then rate = {0 ~ 15);
15
Pseudocode 1. CARA-HT algorithm (continued)
71: if (chWidth = 20 && sgi = false && ss = 4) then rate = {0 ~ 31);
72: if (chWidth = 20 && sgi = false && ss = 3) then rate = {0 ~ 23);
73: if (chWidth = 20 && sgi = false && ss = 2) then rate = {0 ~ 15);
74: if (chWidth = 20 && sgi = false && ss = 1) then rate = {0 ~ 7);
75: maxHtRateId = (8 * (chWidth/20) * (sgi+1) * (ss))-1;
76: maxAMPDU = GetAggregation ();
77: return WifiTxVector (GetMcsSupported, GetDefaultTxPower
78: Level (), GetLongRetryCount (), sgi, ss, GetNess (),
79: chWidth, GetAggregation (),GetStbc();
80: end
81:
82: GetRtsTxVector ()
83: begin
84: if (rate < lastDataRate); then
85: rtsrate = GetBasicMode (0);
86: rateFound = true;
87: if (rateFound); then
88: i = 0 ; i < nSupportRates; i++;
89: if (rate < lastDataRate); then
90: rtsrate = GetMode (0); Fig. 3. CARA-HT performance in non-AMPDU and channel error
91: rateFound = true;
92: return WifiTxVector (rtsRate, GetDefaultTxPowerLevel (),
93: GetShortRetryCount (), false, 1, 0, 20, false, false);
94: end
95:
96: DoNeedRts ()
97: Begin
99: return normally || failed >= probeThreshold;
100: end
GetDataTxVector() function is used to specify the wifi-manager.h. Both files have been placed in the /ns-
TxVector parameter of an MPDU transmission. This function 3/ns3.26/src/wifi/model/ directory. The names of the two files
begins with calling the GetChWidth(), GetShortGuardInterval() have also been added in the wscript file in /ns-
and GetNumberOfSupportAntenna() functions to obtain 3/ns3.26/src/wifi/. We have tested the CARA-HT
channel bandwidth size, guard interval and the number of implementation on NS-3.26 using the tool ./test.py. Test results
antennas used by the transmitter. From the information then have shown 230 tests passed, 3 skipped, 0 failed, 0 crashed and
made a list of transmitter index rate. For example, if chWidth = 0 valgrine errors.
20, sgi = false and streams = 1 then the available rate index is
0-7, that means the transmitter has a choice of data rate 6.5 to
B. CARA-HT Performance Evaluation
65 Mbps. However if chWidth = 40, sgi = true and streams = 4
then the available rate index is 0-127 or available options up to Fig. 3 and Fig. 4 show the throughput resulting from the
600 Mbps. The final part of this function returns the value of CARA-HT rate adaptation of channel quality changes. From
the TxVector parameter used for MPDU transmission. both figures it can be validated that the function of sending
MPDU without and using AMPDU has functioned properly.
The DoNeedRts() function is used to enable MPDU Both figures also show MPDU transmission function using
sending using the RTS/CTS scheme. If the number of MPDU various combinations of channel bandwidth size, guard interval
transmit failures is equal to or greater than the value of the and number of spatial streams to function properly.
probeThreshold attribute, then CARA-HT activates the
RTS/CTS transmit mode. When RTS/CTS mode is enabled, Without transmission and using AMPDU, CARA-HT can
before the MPDU is transmitted, the GetRtsTxVector function generate maximum throughput equal to a constant rate, but it
will be called for known TxVector parameters used for takes a few seconds to reach it. This is caused by MPDU
transmitting RTS frame. transmission always begins using the lowest data rate.
Similarly, when channel quality changes, CARA-HT manages
We have written the CARA-HT code algorithm for NS-3 to adjust the data rate to channel quality changes. However, the
and saved it in the file cara-ht-wifi-manager.cc and cara-ht-
16
Fig. 5. CARA-HT performance with non-AMPDU and collision error Fig. 6. CARA-HT performance with AMPDU and collision error
17