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

This section documents the API of the ns-3 Wifi module. More...

Classes

class  ns3::AarfcdWifiManager
 an implementation of the AARF-CD algorithmThis algorithm was first described in "Efficient Collision Detection for Auto Rate Fallback Algorithm". 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. More...
 
class  ns3::AdhocWifiMac
 
class  ns3::AmpduSubframeHeader
 Introspection did not find any typical Config paths. More...
 
class  ns3::AmpduTag
 The aim of the AmpduTag is to provide means for a MAC to specify that a packet includes A-MPDU since this is done in HT-SIG and there is no HT-SIG representation in ns-3. More...
 
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. More...
 
class  ns3::AmsduSubframeHeader
 Introspection did not find any typical Config paths. More...
 
class  ns3::AparfWifiManager
 APARF Power and rate control algorithm. More...
 
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
 Capability information. More...
 
class  ns3::CaraWifiManager
 implement the CARA rate control algorithmImplement the CARA algorithm from: J. More...
 
class  ns3::ConstantRateWifiManager
 use constant rates for data and RTS 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. More...
 
class  ns3::Dcf
 Introspection did not find any typical Config paths. More...
 
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. More...
 
class  ns3::DcfState
 keep track of the state needed for a single DCF function. More...
 
class  ns3::DsssErrorRateModel
 an implementation of DSSS error rate modelThe 802.11b modulations: More...
 
class  ns3::EdcaTxopN
 This queue contains packets for a particular access class. More...
 
class  ns3::ErpInformation
 The ErpInformation Information ElementThis class knows how to serialise and deserialise the ErpInformation Information Element. More...
 
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::HtCapabilities
 The HT Capabilities Information ElementThis class knows how to serialise and deserialise the HT Capabilities Information Element. More...
 
class  ns3::HtOperations
 The HT Operations Information ElementThis class knows how to serialise and deserialise the HT Operations Information Element. 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. More...
 
class  ns3::InterferenceHelper
 handles interference calculations More...
 
class  ns3::MacLow
 handle RTS/CTS/DATA/ACK transactions. More...
 
class  ns3::MacLowAggregationCapableTransmissionListener
 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. More...
 
class  ns3::MacRxMiddle
 This class handles duplicate detection and recomposition of fragments. More...
 
class  ns3::MacTxMiddle
 Handles sequence numbering of IEEE 802.11 data frames. More...
 
class  ns3::MgtAddBaRequestHeader
 Implement the header for management frames of type add block ack request. More...
 
class  ns3::MgtAddBaResponseHeader
 Implement the header for management frames of type add block ack response. More...
 
class  ns3::MgtAssocRequestHeader
 Implement the header for management frames of type association request. More...
 
class  ns3::MgtAssocResponseHeader
 Implement the header for management frames of type association response. More...
 
class  ns3::MgtBeaconHeader
 Implement the header for management frames of type beacon. More...
 
class  ns3::MgtDelBaHeader
 Implement the header for management frames of type del block ack. More...
 
class  ns3::MgtProbeRequestHeader
 Implement the header for management frames of type probe request. More...
 
class  ns3::MgtProbeResponseHeader
 Implement the header for management frames of type probe response. More...
 
class  ns3::MinstrelHtWifiManager
 Implementation of Minstrel HT Rate Control AlgorithmMinstrel-HT is a rate adaptation mechanism for the 802.11n/ac standard based on Minstrel, and is based on the approach of probing the channel to dynamically learn about working rates that can be supported. More...
 
class  ns3::MinstrelWifiManager
 Implementation of Minstrel Rate Control AlgorithmMinstrel is a rate control algorithm implemented in MadWifi and Linux. More...
 
class  ns3::MpduAggregator
 Abstract class that concrete mpdu aggregators have to implement. More...
 
class  ns3::MpduStandardAggregator
 Standard MPDU aggregator. More...
 
class  ns3::MsduAggregator
 Abstract class that concrete msdu aggregators have to implement. More...
 
class  ns3::MsduStandardAggregator
 Standard MSDU aggregator. More...
 
class  ns3::NistErrorRateModel
 A model for the error rate for different modulations. More...
 
class  ns3::OnoeWifiManager
 an implementation of the rate control algorithm developed by Atsushi Onoe More...
 
class  ns3::OriginatorBlockAckAgreement
 Maintains the state and information about transmitted MPDUs with ack policy block ack for an originator station. More...
 
class  ns3::ParfWifiManager
 PARF Rate control algorithm. More...
 
class  ns3::QosTag
 The aim of the QosTag is to provide means for an Application to specify the TID which will be used by a QoS-aware WifiMac for a given traffic flow. More...
 
class  ns3::RegularWifiMac
 base class for all MAC-level wifi objects. 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
 The IEEE 802.11 SSID Information Element. More...
 
class  ns3::StaWifiMac
 The Wifi MAC high model for a non-AP STA in a BSS. More...
 
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::VhtCapabilities
 The IEEE 802.11ac VHT Capabilities. More...
 
class  ns3::WifiActionHeader
 See IEEE 802.11 chapter 7.3.1.11 Header format: | category: 1 | action value: 1 |. More...
 
class  ns3::WifiChannel
 Wifi Channel interface specificationThis class works in tandem with the ns3::WifiPhy class. 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. More...
 
class  ns3::WifiInformationElementVector
 Information element vectorImplements a vector of WifiInformationElements. More...
 
class  ns3::WifiMac
 base class for all MAC-level wifi objects. More...
 
class  ns3::WifiMacHeader
 Implements the IEEE 802.11 MAC header. More...
 
class  ns3::WifiMacQueue
 This queue implements the timeout procedure described in (Section 9.19.2.6 "Retransmit procedures" paragraph 6; IEEE 802.11-2012). More...
 
class  ns3::WifiMacTrailer
 Implements the IEEE 802.11 MAC trailer. More...
 
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. More...
 
class  ns3::WifiNetDevice
 Hold together all Wifi-related objects. More...
 
class  ns3::WifiPhy
 802.11 PHY layer model More...
 
class  ns3::WifiPhyStateHelper
 This objects implements the PHY state machine of the Wifi device. More...
 
class  ns3::WifiRemoteStationManager
 hold a list of per-remote-station state. More...
 
class  ns3::YansErrorRateModel
 Model the error rate for different modulations. 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. More...
 

Enumerations

enum  ns3::AcIndex {
  ns3::AC_BE = 0, ns3::AC_BK = 1, ns3::AC_VI = 2, ns3::AC_VO = 3,
  ns3::AC_BE_NQOS = 4, ns3::AC_UNDEF
}
 This enumeration defines the Access Categories as an enumeration with values corresponding to the AC index (ACI) values specified (Table 8-104 "ACI-to-AC coding"; IEEE 802.11-2012). More...
 
enum  ns3::WifiPhyStandard {
  ns3::WIFI_PHY_STANDARD_80211a, ns3::WIFI_PHY_STANDARD_80211b, ns3::WIFI_PHY_STANDARD_80211g, ns3::WIFI_PHY_STANDARD_80211_10MHZ,
  ns3::WIFI_PHY_STANDARD_80211_5MHZ, ns3::WIFI_PHY_STANDARD_holland, ns3::WIFI_PHY_STANDARD_80211n_2_4GHZ, ns3::WIFI_PHY_STANDARD_80211n_5GHZ,
  ns3::WIFI_PHY_STANDARD_80211ac
}
 Identifies the PHY specification that a Wifi device is configured to use. More...
 
enum  ns3::WifiPreamble {
  ns3::WIFI_PREAMBLE_LONG, ns3::WIFI_PREAMBLE_SHORT, ns3::WIFI_PREAMBLE_HT_MF, ns3::WIFI_PREAMBLE_HT_GF,
  ns3::WIFI_PREAMBLE_VHT, ns3::WIFI_PREAMBLE_NONE
}
 The type of preamble to be used by an IEEE 802.11 transmission. More...
 

Functions

uint8_t ns3::QosUtilsGetTidForPacket (Ptr< const Packet > packet)
 If a qos tag is attached to the packet, returns a value < 8. More...
 
bool ns3::QosUtilsIsOldPacket (uint16_t startingSeq, uint16_t seqNumber)
 This function checks if packet with sequence number seqNumber is an "old" packet. More...
 
uint32_t ns3::QosUtilsMapSeqControlToUniqueInteger (uint16_t seqControl, uint16_t endSequence)
 Next function is useful to correctly sort buffered packets under block ack. More...
 
AcIndex ns3::QosUtilsMapTidToAc (uint8_t tid)
 Maps TID (Traffic ID) to Access classes. More...
 

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 (Table 8-104 "ACI-to-AC coding"; IEEE 802.11-2012).

Enumerator
AC_BE 

Best Effort.

AC_BK 

Background.

AC_VI 

Video.

AC_VO 

Voice.

AC_BE_NQOS 

Total number of ACs.

AC_UNDEF 

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

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

Enumerator
WIFI_PHY_STANDARD_80211a 

OFDM PHY for the 5 GHz band (Clause 17)

WIFI_PHY_STANDARD_80211b 

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

WIFI_PHY_STANDARD_80211g 

ERP-OFDM PHY (Clause 19, Section 19.5)

WIFI_PHY_STANDARD_80211_10MHZ 

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

WIFI_PHY_STANDARD_80211_5MHZ 

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

WIFI_PHY_STANDARD_holland 

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.

WIFI_PHY_STANDARD_80211n_2_4GHZ 

HT OFDM PHY for the 2.4 GHz band (clause 20)

WIFI_PHY_STANDARD_80211n_5GHZ 

HT OFDM PHY for the 5 GHz band (clause 20)

WIFI_PHY_STANDARD_80211ac 

VHT OFDM PHY (clause 22)

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

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

Enumerator
WIFI_PREAMBLE_LONG 
WIFI_PREAMBLE_SHORT 
WIFI_PREAMBLE_HT_MF 
WIFI_PREAMBLE_HT_GF 
WIFI_PREAMBLE_VHT 
WIFI_PREAMBLE_NONE 

Definition at line 30 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.

Parameters
packetthe packet to checked for a QoS tag
Returns
a value less than 8 if QoS tag was present, a value >= 8 is returned if no QoS tag was present

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

References ns3::QosTag::GetTid(), and ns3::Packet::PeekPacketTag().

Referenced by ns3::StaWifiMac::Enqueue(), ns3::AdhocWifiMac::Enqueue(), ns3::OcbWifiMac::Enqueue(), ns3::ApWifiMac::ForwardDown(), and ns3::OcbWifiMac::SendVsc().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

CASE A:

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

CASE B:

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.

Parameters
startingSeqthe starting sequence number
seqNumberthe sequence number to be checked
Returns
true if the packet is old, false otherwise

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

References NS_ASSERT.

Referenced by QosUtilsIsOldPacketTest::DoRun(), ns3::BlockAckManager::GetNextPacket(), ns3::BlockAckManager::PeekNextPacket(), ns3::MacLow::ReceiveMpdu(), ns3::MacLow::SendBlockAckAfterBlockAckRequest(), ns3::BlockAckCache::UpdateWithBlockAckReq(), and ns3::BlockAckCache::UpdateWithMpdu().

+ Here is the caller graph for this function:

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 IEEE 802.11e) packets must be forwarded up before "new" packets.

Parameters
seqControlthe sequence control field
endSequence
Returns
a unique integer for the given sequence control and end sequence

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

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

+ Here is the caller graph for this function:

AcIndex ns3::QosUtilsMapTidToAc ( uint8_t  tid)