Wireless MAC Simulators

dot11ag v2.4.178 - IEEE 802.11a/g simulator:
    Win32 | Linux i386
    options help | output description

MCBC protocol simulator (Win32):
    Fading v3.0.241
    Standard v2.0.234 (no fading).

These simulators have been successfuly used in our research. They have been written in C++, designed for speed and to allow tweaking a wide range of low-level parameters. The IEEE 802.11 simulator has been validated against various results from literature and other simulators (e.g. OPNET) but also against thorough real-world measurements performed in controlled environments using Atheros AR5002X IEEE 802.11a/b/g based cards. For both simulators, you can opt to use the actual AR5002X parameters that we measuerd (a few of them are slightly different from the 802.11 standard).

The output is CSV so shell scripts can be used and then the output imported in MATLAB, Excel, GNU Plot and others for easy plotting. The command options should be pretty self-explanatory. Run with either the -h or --help or /? option to get the command-line help. Please do drop a line in case you have questions, run into issues or would like more features coded in.

For the 802.11 simulator, try the debug=3 option with steps=10000 DATA=200 to get a full output of frame transmissions and collisions per time step. This represents a real-world time sequence of events. Coupled with the rssi_* options, a visual representation of the variable collision duration with the fading level is obtained. An example is:

dot11ag nn=10 rssi_type=2 rssi_avg=-82 DATA=200 steps=10000 debug=3

(click the above command to show/hide a truncated output example)

The above command will set the fading type to Rayleigh with an average RSSI of -82 dBm per link (which is equal to the default detection threshold), thus giving a link outage probability of approximately Pout = 0.63 per link. The cumulative effect of simultaneous transmissions is accounted for when more nodes transmit at the same time. The simulation will run with 10 active nodes for 10000 time steps using 200 bits data frame sizes. The rest of the parameters are set to their default values (see the options help page). SIFS and DIFS periods are ommitted from the output for simplicity.

Legend for the debug=3 output:

.  = Idle slot. All nodes are backing off. SIFS and DIFS periods are ommitted
     from the output for simplicity.
D  = Unique and valid fragment of a Data or RTS packet. If RTS/CTS is used
     through 'no_rts=0' then the CTS, DATA and ACK packets are ommitted from 
     the output for simplicity.
A  = Fragment of an acknowledgement from the AP.
1  = Unique fragment of a data packet which follows collided data packets
2+ = Multiple (collided) fragments of data packets; the number indicated
     represents the number of nodes that are transmitting simultaneously.
*  = Unique data packet which follows an ACK from the AP; this can basically 
     happen *only* if the node started transmission at the same time the AP 
     started the ACK and the two nodes (i.e. the one receiveing the ACK and 
     the one who just started transmission) cannot hear each other, hence the 
     ACK will be correctly received by the 1st node but the 2nd node will not 
     get an ACK (hence will see a collision).

In the above example, a successful packet looks as 12 D's (DATA) followed by 8 A's (ACK), i.e. DDDDDDDDDDDDAAAAAAAA representing the duration in time steps of 9 us of a 200 byte data packet and an ACK packet transmitted at 6 Mbps (*). Collisions are the ones not followed by an ACK (A), for example, DDDDDD2222221111221111111111 - note the long duration caused by hidden nodes (two of them in this case).

For accurate results though, use debug=2 or debug=1 and use more time steps (e.g. 1000000), or use the time argument specifying the number of virtual seconds to simulate, e.g. time=60.0 is usually enough but may take a while depending on your machine.

(*) This includes mac and phy headers, preamble, signal bits, service bits, tail bits etc. everything as described in "17.4.3. OFDM TXTIME calculation", page 37 of the IEEE 802.11a standard (reaffirmed June 2003 edition).

[1] B. Roman, I. Chatzigeorgiou and I. Wassell and F. Stajano, "Evaluation of Multi-Carrier Burst Contention and IEEE 802.11 with Fading During Channel Sensing," in the 20th IEEE Intl. Symposium on Personal Indoor and Mobile Radio Communications Conference, PIMRC'09, Tokyo, Sep 2009.

[2] B. Roman, F. Stajano, I. Wassell and D. Cottingham, "Multi-Carrier Burst Contention (MCBC): Scalable Medium Access Control for Wireless Networks," in the 9th IEEE Intl. Wireless Communications and Networking Conference, WCNC'08, Las Vegas, Mar 2008

[3] Atheros Communications, AR5002X 802.11a/b/g Universal WLAN Solution