Giter VIP home page Giter VIP logo

ns3-802.11ax-simulator's Introduction

Overview

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

Downloading and Installation

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

Patch and build

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

Usage with example

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"

Models

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.

ns3-802.11ax-simulator's People

Contributors

balamura avatar fluffy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ns3-802.11ax-simulator's Issues

RRMWifiManager for STAs

After setting the HESupport mode for STAs, get 11ax,
in the main script, will the RRMWifiManager instead of ConstantRateWifiManager for the STAWifiMac work proper? I have tried it but it fails.
or your design is just for APs in RRMWifiManager?

How can I reach the highest data rates for data traffic with the main example -- wifi-ofdma-multi-traffic.cc -- ?
I can only reach 6 Mbps with 2.4 11ax

ISSUE: rrm-wifi-manager.cc:1399:63: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing] *type = ntohs(*(short*)(message->data+message->read_offset));

HI!
I compile the code and find some error:
rrm-wifi-manager.cc:1399:63: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
type = ntohs((short*)(message->data+message->read_offset));
the struct TlvBuffer as:
typedef struct{
char data[BUFFER_DATA_MAX_SIZE];
int write_offset,read_offset;
int len;
}attribute((packed))TlvBuffer;

and error relate code is fellow:
len = ntohs((short)(message->data+message->read_offset));
(1)I do not understand the code you express, you want to get TlvBuffer struct's len? or read_offset data in data[BUFFER_DATA_MAX_SIZE] , then transform to short type by (short*).
(2)if is it,I think the right code is : ntohs( (short*)(message->data+message->read_offset));
the end How to fix the error? Thank you !~~~~ 💯

VCS Simulator

Hi,
Can we integrate it VCS and use this simulator to test DUT (which supports 11ax station and Access point). Please reply back as it would be real help for me.

Thanks
Prathusha

Compiler warnings because enums are used instead of booleans

Hi!

I'm opening this issue to let you know that the compiler gives me warnings because of the following line:

+ NS_ASSERT (modClass == WIFI_MOD_CLASS_HT || modClass == WIFI_MOD_CLASS_VHT || WIFI_MOD_CLASS_HE);

This can easily be fixed by using:

  NS_ASSERT (modClass == WIFI_MOD_CLASS_HT || modClass == WIFI_MOD_CLASS_VHT || modClass == WIFI_MOD_CLASS_HE);

instead of the current:

  NS_ASSERT (modClass == WIFI_MOD_CLASS_HT || modClass == WIFI_MOD_CLASS_VHT || WIFI_MOD_CLASS_HE);

he-wifi-network.cc example does not work

Hi,

he-wifi-network.cc example ends up with 0 throughput. When I enabling pcaps, I can see the no traffic flow between the AP and STA. When I enable the debugs messages on he-wifi-phy.cc, I can observe the packet flows and RxEndok messages. I am a bit confused. Was the example working in your environment?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.