A Discrete-Event Network Simulator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Wifi Models


class  ns3::AarfcdWifiManager
 an implementation of the AARF-CD algorithmThis algorithm was first described in "Efficient Collision Detection for Auto Rate Fallback Algorithm". The implementation available here was done by Federico Maguolo for a very early development version of ns-3. Federico died before merging this work in ns-3 itself so his code was ported to ns-3 later without his supervision. More...
class  ns3::AarfWifiManager
 AARF Rate control algorithmThis class implements the AARF rate control algorithm which was initially described in IEEE 802.11 Rate Adaptation: A Practical Approach, by M. Lacage, M.H. Manshaei, and T. Turletti. More...
class  ns3::AdhocWifiMac
class  ns3::AmrrWifiManager
 AMRR Rate control algorithmThis class implements the AMRR rate control algorithm which was initially described in IEEE 802.11 Rate Adaptation: A Practical Approach, by M. Lacage, M.H. Manshaei, and T. Turletti. More...
class  ns3::AmsduSubframeHeader
class  ns3::ApWifiMac
 Wi-Fi AP state machineHandle association, dis-association and authentication, of STAs within an infrastructure BSS. More...
class  ns3::ArfWifiManager
 ARF Rate control algorithm. More...
struct  ns3::Bar
 Block Ack Request. More...
class  ns3::BlockAckAgreement
 Maintains information for a block ack agreement. More...
class  ns3::BlockAckCache
class  ns3::BlockAckManager
 Manages all block ack agreements for an originator station. More...
class  ns3::CapabilityInformation
class  ns3::CaraWifiManager
 implement the CARA rate control algorithmImplement the CARA algorithm from: J. Kim, S. Kim, S. Choi, and D. Qiao. "CARA: Collision-Aware Rate Adaptation for IEEE 802.11 WLANs." More...
class  ns3::ConstantRateWifiManager
 use constant rates for data and control transmissions More...
class  ns3::CtrlBAckRequestHeader
 Headers for Block ack request. More...
class  ns3::CtrlBAckResponseHeader
 Headers for Block ack response. More...
class  ns3::DcaTxop
 handle packet fragmentation and retransmissions.This class implements the packet fragmentation and retransmission policy. It uses the ns3::MacLow and ns3::DcfManager helper classes to respectively send packets and decide when to send them. Packets are stored in a ns3::WifiMacQueue until they can be sent. More...
class  ns3::Dcf
class  ns3::DcfManager
 Manage a set of ns3::DcfStateHandle a set of independent ns3::DcfState, each of which represents a single DCF within a MAC stack. Each ns3::DcfState has a priority implicitely associated with it (the priority is determined when the ns3::DcfState is added to the DcfManager: the first DcfState to be added gets the highest priority, the second, the second highest priority, and so on.) which is used to handle "internal" collisions. i.e., when two local DcfState are expected to get access to the medium at the same time, the highest priority local DcfState wins access to the medium and the other DcfState suffers a "internal" collision. More...
class  ns3::DcfState
 keep track of the state needed for a single DCF function.Multiple instances of a DcfState can be registered in a single DcfManager to implement 802.11e-style relative QoS. DcfState::SetAifsn and DcfState::SetCwBounds allow the user to control the relative QoS differentiation. More...
class  ns3::DsssErrorRateModel
 an implementation of DSSS error rate modelThe 802.11b modulations: More...
class  ns3::EdcaTxopN
class  ns3::ErrorRateModel
 the interface for Wifi's error models More...
class  ns3::ExtendedSupportedRatesIE
 The Extended Supported Rates Information ElementThis class knows how to serialise and deserialise the Extended Supported Rates Element that holds (non-HT) rates beyond the 8 that the original Supported Rates element can carry. More...
class  ns3::IdealWifiManager
 Ideal rate control algorithmThis class implements an 'ideal' rate control algorithm similar to RBAR in spirit (see A rate-adaptive MAC protocol for multihop wireless networks by G. Holland, N. Vaidya, and P. Bahl.): every station keeps track of the snr of every packet received and sends back this snr to the original transmitter by an out-of-band mechanism. Each transmitter keeps track of the last snr sent back by a receiver and uses it to pick a transmission mode based on a set of snr thresholds built from a target ber and transmission mode-specific snr/ber curves. More...
class  ns3::InterferenceHelper
 handles interference calculations More...
class  ns3::MacLow
 handle RTS/CTS/DATA/ACK transactions. More...
class  ns3::MacLowBlockAckEventListener
 listen for block ack events. More...
class  ns3::MacLowDcfListener
 listen to NAV eventsThis class is typically connected to an instance of ns3::Dcf and calls to its methods are forwards to the corresponding ns3::Dcf methods. More...
class  ns3::MacLowTransmissionListener
 listen to events coming from ns3::MacLow. More...
class  ns3::MacLowTransmissionParameters
 control how a packet is transmitted.The ns3::MacLow::StartTransmission method expects an instance of this class to describe how the packet should be transmitted. More...
class  ns3::MacRxMiddle
class  ns3::MacTxMiddle
class  ns3::MgtAddBaRequestHeader
class  ns3::MgtAddBaResponseHeader
class  ns3::MgtAssocRequestHeader
class  ns3::MgtAssocResponseHeader
class  ns3::MgtBeaconHeader
class  ns3::MgtDelBaHeader
class  ns3::MgtProbeRequestHeader
class  ns3::MgtProbeResponseHeader
class  ns3::MinstrelWifiManager
 Implementation of Minstrel Rate Control AlgorithmPorting Minstrel from Madwifi and Linux Kernel http://linuxwireless.org/en/developers/Documentation/mac80211/RateControl/minstrel. More...
class  ns3::MsduAggregator
 Abstract class that concrete msdu aggregators have to implement. More...
class  ns3::MsduStandardAggregator
class  ns3::NistErrorRateModel
class  ns3::OnoeWifiManager
 an implementation of the rate control algorithm developed by Atsushi Onoe More...
class  ns3::OriginatorBlockAckAgreement
class  ns3::QosTag
class  ns3::RegularWifiMac
 base class for all MAC-level wifi objects.This class encapsulates all the low-level MAC functionality DCA, EDCA, etc) and all the high-level MAC functionality (association/disassociation state machines). More...
class  ns3::RraaWifiManager
 Robust Rate Adaptation AlgorithmThis is an implementation of RRAA as described in "Robust rate adaptation for 802.11 wireless networks" by "Starsky H. Y. Wong", "Hao Yang", "Songwu Lu", and, "Vaduvur Bharghavan" published in Mobicom 06. More...
class  ns3::Ssid
class  ns3::StaWifiMac
class  ns3::SupportedRates
 The Supported Rates Information ElementThis class knows how to serialise and deserialise the Supported Rates Element that holds the first 8 (non-HT) supported rates. More...
class  ns3::WifiActionHeader
class  ns3::WifiChannel
 Wifi Channel interface specificationThis class works in tandem with the ns3::WifiPhy class. If you want to provide a new Wifi PHY layer, you have to subclass both ns3::WifiChannel and ns3::WifiPhy. More...
class  ns3::WifiInformationElement
 Information element, as defined in 802.11-2007 standardThe IEEE 802.11 standard includes the notion of Information Elements, which are encodings of management information to be communicated between STAs in the payload of various frames of type Management. Information Elements (IEs) have a common format, each starting with a single octet - the Element ID, which indicates the specific type of IE (a type to represent the options here is defined as WifiInformationElementId). The next octet is a length field and encodes the number of octets in the third and final field, which is the IE Information field. More...
class  ns3::WifiInformationElementVector
 Information element vectorImplements a vector of WifiInformationElements. Information elements typically come in groups, and the WifiInformationElementVector class provides a representation of a series of IEs, and the facility for serialisation to and deserialisation from the over-the-air format. More...
class  ns3::WifiMac
 base class for all MAC-level wifi objects.This class encapsulates all the low-level MAC functionality DCA, EDCA, etc) and all the high-level MAC functionality (association/disassociation state machines). More...
class  ns3::WifiMacHeader
class  ns3::WifiMacQueue
class  ns3::WifiMacTrailer
class  ns3::WifiMode
 represent a single transmission modeA WifiMode is implemented by a single integer which is used to lookup in a global array the characteristics of the associated transmission mode. It is thus extremely cheap to keep a WifiMode variable around. More...
class  ns3::WifiNetDevice
 Hold together all Wifi-related objects.This class holds together ns3::WifiChannel, ns3::WifiPhy, ns3::WifiMac, and, ns3::WifiRemoteStationManager. More...
class  ns3::WifiPhy
 802.11 PHY layer model More...
class  ns3::WifiPhyStateHelper
class  ns3::WifiRemoteStationManager
 hold a list of per-remote-station state. More...
class  ns3::YansErrorRateModel
 Model the error rate for different modulations.A packet of interest (e.g., a packet can potentially be received by the MAC) is divided into chunks. Each chunk is related to an start/end receiving event. For each chunk, it calculates the ratio (SINR) between received power of packet of interest and summation of noise and interfering power of all the other incoming packets. Then, it will calculate the success rate of the chunk based on BER of the modulation. The success reception rate of the packet is derived from the success rate of all chunks. More...
class  ns3::YansWifiChannel
 A Yans wifi channelThis wifi channel implements the propagation model described in "Yet Another Network Simulator", (http://cutebugs.net/files/wns2-yans.pdf). More...
class  ns3::YansWifiPhy
 802.11 PHY layer modelThis PHY implements a model of 802.11a. The model implemented here is based on the model described in "Yet Another Network Simulator", (http://cutebugs.net/files/wns2-yans.pdf). More...


enum  ns3::AcIndex {
  ns3::AC_BE = 0, ns3::AC_BK = 1, ns3::AC_VI = 2, ns3::AC_VO = 3,
  ns3::AC_BE_NQOS = 4, AC_UNDEF
enum  ns3::WifiPhyStandard {
  ns3::WIFI_PHY_STANDARD_80211a, ns3::WIFI_PHY_STANDARD_80211b, ns3::WIFI_PHY_STANDARD_80211g, ns3::WIFI_PHY_STANDARD_80211_10MHZ,


uint8_t ns3::QosUtilsGetTidForPacket (Ptr< const Packet > packet)
bool ns3::QosUtilsIsOldPacket (uint16_t startingSeq, uint16_t seqNumber)
uint32_t ns3::QosUtilsMapSeqControlToUniqueInteger (uint16_t seqControl, uint16_t endSequence)
AcIndex ns3::QosUtilsMapTidToAc (uint8_t tid)

Detailed Description

This section documents the API of the ns-3 Wifi module. For a generic functional description, please refer to the ns-3 manual.

Enumeration Type Documentation

This enumeration defines the Access Categories as an enumeration with values corresponding to the AC index (ACI) values specified in Table 7-36 of IEEE 802.11-2007.


Best Effort








Total number of ACs

Definition at line 35 of file qos-utils.h.

Identifies the PHY specification that a Wifi device is configured to use.


OFDM PHY for the 5 GHz band (Clause 17)


DSSS PHY (Clause 15) and HR/DSSS PHY (Clause 18)


ERP-OFDM PHY (Clause 19, Section 19.5)


OFDM PHY for the 5 GHz band (Clause 17 with 10 MHz channel bandwidth)


OFDM PHY for the 5 GHz band (Clause 17 with 5 MHz channel bandwidth)


This is intended to be the configuration used in this paper: Gavin Holland, Nitin Vaidya and Paramvir Bahl, "A Rate-Adaptive MAC Protocol for Multi-Hop Wireless Networks", in Proc. of ACM MOBICOM, 2001.


deprecated, see bug 945


deprecated, see bug 945

Definition at line 30 of file wifi-phy-standard.h.

The type of preamble to be used by an IEEE 802.11 transmission

Definition at line 29 of file wifi-preamble.h.

Function Documentation

uint8_t ns3::QosUtilsGetTidForPacket ( Ptr< const Packet >  packet)

If a qos tag is attached to the packet, returns a value < 8. A value >= 8 is returned otherwise.

Definition at line 60 of file qos-utils.cc.

References ns3::Packet::PeekPacketTag().

Referenced by ns3::StaWifiMac::Enqueue(), and ns3::AdhocWifiMac::Enqueue().

bool ns3::QosUtilsIsOldPacket ( uint16_t  startingSeq,
uint16_t  seqNumber 

This function checks if packet with sequence number seqNumber is an "old" packet. The sequence number space is considered divided into two parts, one of which is "old" and one of which is "new" by means of a boundary created by adding half the sequence number range to the starting sequence number startingSeq. So this function works fine also when seqNumber is smaller than startingSeq and startingSeq + 2048 is greater than 4096 because all comparison are circular modulo 2^12. The following are possible scenarios:

--— = old packets +++++ = new packets


0 4095 |++++++|-------------—|++++++| ^ ^ | endSeq | startingSeq


0 4095 |---—|++++++++++++++++|--—| ^ ^ | startingSeq | endSeq

Here in the examples endSeq is the sequenceNumber of the "last" new packet. So this function, when specified a starting sequence and a sequence number, returns true if that packet (with sequence number numberSeq)) belongs to the section of the sequence number space marked with '-' characters. The function returns false otherwise.

Definition at line 86 of file qos-utils.cc.

References NS_ASSERT.

Referenced by ns3::QosUtilsIsOldPacketTest::DoRun().

uint32_t ns3::QosUtilsMapSeqControlToUniqueInteger ( uint16_t  seqControl,
uint16_t  endSequence 

Next function is useful to correctly sort buffered packets under block ack. When an BAR is received from originator station, completed "old" (see section 9.10.3 in IEEE802.11e) packets must be forwarded up before "new" packets.

Definition at line 75 of file qos-utils.cc.

Referenced by PacketBufferingCaseA::DoRun(), PacketBufferingCaseB::DoRun(), and ns3::MacLow::RxCompleteBufferedPacketsWithSmallerSequence().

AcIndex ns3::QosUtilsMapTidToAc ( uint8_t  tid)