The motivation of this project is to simulate OFDMA/802.11ax type of systems. As part of this project we have developed few new classes and modified many existing ones to support OFDMA/802.11ax type of WLAN systems. This simulator includes MAC and abstracted PHY layers. Note : Our code is not fully compliant with IEEE802.11ax standard
Follow the https://www.nsnam.org/wiki/Installation#Installation to install and build an ns3 repo. Make sure you install the ns-3.26 version as the patch is compatible with ns-3.26 only
Clone the Cisco github repository
$ git clone https://github.com/cisco/ns3-802.11ax-simulator <cloneDir>
Apply the patch and add files from cloned Cisco repo to the ns3 installated directory
$ cd <ns3_installed_dir>
$ find <cloneDir>/ns-3.26 -type f -exec cp {} {} \;
$ git apply <cloneDir>/tools/ofdma.patch
Build
$ ./waf build
Run Program
$ ./waf --run scratch/wifi-ofdma-multi-traffic - builds and runs
To debug if something goes wrong in run time
$ ./waf --run scratch/wifi-ofdma-multi-traffic "--command-template=gdb/lldb %s"
Passing parameters to the program
Some variables such as packet size, number of packet etc can be modified by command
line argument passing as well
$ ./waf --run scratch/wifi-ofdma-multi-traffic "--numPackets=10"
Newly added Models:
RRMWifiManager, HEWifiChannelHelper, HEWifiPhyHelper, HEWifiPhy, HEWifiChannel,
Enterprise11axPropagationLossModel, HEBitMap, PerTag
RRMWifiManager : Once resources are allocated, it triggers MAC layer for packet transmission.
HEWifiChannelHelper : This class helps to configure HEWifiChannel parameters from
program such as channel number etc.
HEWifiPhyHelper : This class helps to configure HEWifiPhy parameters from
program such as error rate models etc.
HEWifiPhy : This class supports some of the OFDMA aspects
HEWifiChannel : This class helps for OFDMA transmissions and calculates
propagation loss using Enterprise11axPropagationLossModel.
HEBitMap : This class is used to for RU (Resource Unit) bitmap
PerTag : This class is used to log PER (Packet Error Rate) for each packet.
Some other classes such as MacLow, WifiTxVector, WifiMacHeader, EdcaTxopN etc. have been modified to support RU concept.