Introduction to the Current
Implementation

The current release is 802.11MX2.0
and has been tested for ns-2.28 on Cygwin.
802.11MX is designed to be compatible with IEEE
802.11 MAC. It supports reliable multicast,
broadcast and unicast communications. The current
implementation does not support unreliable data
transmissions i.e. even control packets from
higher layers must be sent reliably. This limitation
will be removed in the next release. Also, 802.11MX
2.0 is a significant improvement over the earlier
version and as such does not conform to the
publication material currently available.

The current release also contains
implementation for busy tone channels. The busy
tone implementation (PHY and wireless channel) may
be used independently of the MAC. This release also
includes a MAC Data Generator and Consumer for
studying throughput and reliability ofany
MAC.

Add the following lines, preferably after
the defaults for Phy/WirelessPhy:

#
Initialize the SharedMedia interface with
parameters to make
# it work like the 914MHz Lucent WaveLAN DSSS radio interface
Phy/ToneWirelessPhy set CPThresh_ 10.0
Phy/ToneWirelessPhy set CSThresh_ 1.559e-11
Phy/ToneWirelessPhy set RXThresh_ 3.652e-10
Phy/ToneWirelessPhy set bandwidth_ 2e6
Phy/ToneWirelessPhy set Pt_ 0.28183815
Phy/ToneWirelessPhy set freq_ 914e+6
Phy/ToneWirelessPhy set L_ 1.0
Phy/ToneWirelessPhy set debug_ false

MACDataGen set debug_ false

Edit the file 'tcl/lib/ns-lib.tcl'

Source an extra tcl file by adding the
following statement amongst the other
sourcing statements:

source ns-wmcast.tcl

Edit the file common/packet.h

Add the following definition:

#define HDR_MAC11MX(p) ((hdr_mac11MX *)hdr_mac::access(p))

make

Instructions on using MX for
simulations:

Locate the file MX-Sample-MAC-Data.tcl in the directory
"ns-allinone-2.28/ns-2.28/tcl/ex/Impact/MX"

Change the parameters in the MX-Sample-MAC-Data.tcl script to suit your
simulation needs.

Create a movement file.

run "ns <tcl script file> -movement <movement file> -BER
<exponent value of bit error rate>"e.g.-> ns MX-Sample-MAC-Data.tcl -movement
MX-Movement-Static.tcl -BER 5Note: Parsing for -movement {movement file} and -BER {Bit Error Rate} is
done in MX-Sample-Script.tcl and not in ns.exe. You may also use -node to set
the number of nodes.

Frequently
Asked Questions

How do I form multicast
groups?
Multicast groups are formed by choosing a
multicast address and having nodes join a
group represented by that multicast address.
You may choose any address greater than
7000 to be a multicast address. For
example, the following tcl script creates
two groups with addresses 9000 and 8000.
Group 9000 has nodes 0, 5 and 8 while group
8000 has nodes 5, 8 and 10.

What is the
MACDataGenerator and why use it?
MACDataGenerator is a C++ module designed
to study throughput and reliability of a MAC
without interference from higher layers of
the network stack. It generates
and consumes its own data and.includes
functionality to log packet transmission and
reception. Further, it prevents packets from
higher layers, such as ARP and JOIN,
from skewing results. It replaces the LL in
simulations meant to study MAC performance.
Output is written to Transceive-Info.dat.
Current implementation assumes unbounded buffer i.e. packets are not dropped due to delays.

Do not use MACDataGenerator
if your simulations are intended to study
layers above the MAC Layer.

How do I send multicast
data to a group?
To generate CBR traffic with the
MACDataGenerator, set the "-interval"
parameter in the
"generate-data" function call in your tcl
scripts. For example, $ns_ at 1.0 "$node_(7) generate-data
-interval $PKT_INTERVAL -destn 8000 -pktsize
512"

To generate CBR traffic with
the MACDataGenerator, set the "-pktnum"
parameter in the
"generate-data" function call in your tcl
scripts. For example, $ns_ at 1.0 "$node_(7) generate-data -pktnum
$PKT_NUM -destn 9000 -pktsize 512"

To send broadcast data, -destn
must be set to -1. Nodes need not
explicitly join group -1.

How do I send unicast
data with the MACDataGenerator?
Just specify a valid node address in the
"generate-data" function. For example, to
set up unicast traffic between node 8 and
node 15: $ns_ at 1.0 "$node_(8) generate-data
-interval $PKT_INTERVAL -destn 15 -pktsize
512"

How do I use MX with the
complete stack including the LL and network
layers?
You may use MX as your MAC layer, without
the data generator, just like you would any
other MAC. Packets must then be generated
and consumed at the application layer. You
must still explicitly inform the MAC about
multicast groups by using the join-group
and leave-group calls. You may use
any routing protocol. However, care must be
taken to set the RTSThreshold in the MX MAC
so that even control packets, such as ARP,
are delivered reliably. The current
implementation does not correctly deliver
unreliable packets. This constraint will be
removed in the next release of MX.