IEEE 802.11 is the de facto standard for WLANs. It specifies both the medium access control (MAC) and the physical (PHY) layers for WLANs. The MAC layer operates on top of one of several physical layers. Medium access is performed using Carrier Sense Multiple Access with Collision Avoidance. However, simple CSMA is susceptible to the hidden node problem, especially in so called ad hoc networks where a node may communicate directly with every other node in range or using intermediate nodes as relays otherwise. Hidden nodes cause costly packet collisions and thus significantly affect network performance. In order to combat the hidden node problem, a mechanism known as Request to Send/Clear to Send (RTS/CTS) handshake is often used. RTS/CTS mechanism is supported in the IEEE 802.11 family of standards. The RTS/CTS mechanism was initially proposed in a protocol called Multiple- Access with Collision Avoidance (MACA). From a network point of view, one of the primary reasons for using the RTS/CTS mechanism is to avoid network congestion resulting from frequent packet collisions. Figure 1 depicts a conceptual “throughput versus Packet Size” curve for a network. In the presence of congestion, the throughput goes to zero as the Packet Size is increased beyond a certain value. A properly designed network, on the other hand, maintains the maximum throughput as the Packet Size goes to infinity.
The IEEE 802.11 standard includes an optional feature of the RTS/CTS (Request to Send/Clear to Send) function to control station access to the medium when collisions occur due to the hidden node. This option is also known as virtual carrier sensing. Through the proper use of RTS/CTS, you can fine-tune the operation of your wireless LAN since it solves the hidden node problem and provides additional protection against collisions. If you enable RTS/CTS on a particular station, it will refrain from sending a data frame until the station completes a RTS/CTS handshake with another station, such as an access point. A station initiates the process by sending a RTS frame. The access point (AP) or another station receives the RTS and responds with a CTS frame. The station must receive a CTS frame before sending the data frame. The CTS also contains a time value that alerts other stations to hold off from accessing the medium while the station initiating the RTS transmits its data. Thus, the use of RTS/CTS reduces collisions and improves the performance of the network if hidden nodes are present.
We use Ns-3 as simulation tool. NS-3 is built using C++ and Python and scripting is available with both languages. The ns-3 library is wrapped to python thanks to the pybindgen library which delegates the parsing of the ns-3 C++ headers to gccxml and pygccxml to generate automatically the corresponding C++ binding glue. These automatically-generated C++ files are finally compiled into the ns-3 python module to allow users to interact with the C++ ns-3 models and core through python scripts. Graphical visualization of raw or processed data collected in a simulation is graphed using Gnuplot tool. Our experimental done in Ubuntu 11.10 with installation of all needed tools. Simulation environment based on the command below, sudo apt-get install build-essential g++ python mercurial
NS-3 is available in (linux, osx, cygwin, mingw) and we deploy Development version: http://code.nsnam.org/ns-3-dev. The development version is usually stable; a lot of people use it for daily work.
The results analysis are based on the following factors
* Enabling and disabling RTS/CTS
* Protocol bases, either UDP or TCP
* WLAN standards which are IEEE 802.11a, IEEE 802.11b, IEEE 802.11g * Variation of Throughput, Packet Loss Ratio, Delay with Packet Size and Wifi Nodes. From the graphs below result obtained through the following
* Disabling and enabling RTS/CTS
* UDP protocol used...