A Discrete-Event Network Simulator
API
Wifi Models

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

+ Collaboration diagram for Wifi Models:

Modules

 wifi module tests
 

Files

file  dsss-phy.h
 Declaration of ns3::DsssPhy class.
 
file  dsss-ppdu.h
 Declaration of ns3::DsssPpdu class.
 
file  erp-ofdm-phy.h
 Declaration of ns3::ErpOfdmPhy class.
 
file  erp-ofdm-ppdu.h
 Declaration of ns3::ErpOfdmPpdu class.
 
file  he-phy.h
 Declaration of ns3::HePhy class and ns3::HeSigAParameters struct.
 
file  he-ppdu.h
 Declaration of ns3::HePpdu class.
 
file  ht-phy.h
 Declaration of ns3::HtPhy class.
 
file  ht-ppdu.h
 Declaration of ns3::HtPpdu class.
 
file  ofdm-phy.h
 Declaration of ns3::OfdmPhy class and ns3::OfdmPhyVariant enum.
 
file  ofdm-ppdu.h
 Declaration of ns3::OfdmPpdu class.
 
file  phy-entity.h
 Declaration of:
 
file  vht-phy.h
 Declaration of ns3::VhtPhy class.
 
file  vht-ppdu.h
 Declaration of ns3::VhtPpdu class.
 
file  wifi-phy-common.h
 Declaration of the following enums:
 
file  wifi-ppdu.h
 Declaration of ns3::WifiPpdu class and ns3::WifiConstPsduMap.
 

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
 Wifi MAC high model for an ad-hoc Wifi MAC. More...
 
class  ns3::AmpduSubframeHeader
 Headers for A-MPDU subframes. 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
 Headers for A-MSDU subframes. More...
 
class  ns3::AparfWifiManager
 APARF Power and rate control algorithm. More...
 
struct  ns3::ApInfo
 Struct to hold information regarding observed AP through active/passive scanning. 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
 BlockAckRequest frame information. More...
 
class  ns3::BlockAckAgreement
 Maintains information for a block ack agreement. More...
 
class  ns3::BlockAckManager
 Manages all block ack agreements for an originator station. More...
 
struct  ns3::BlockAckReqType
 The different BlockAckRequest variants. More...
 
struct  ns3::BlockAckType
 The different BlockAck variants. More...
 
class  ns3::BlockAckWindow
 Block ack window. More...
 
class  ns3::CapabilityInformation
 Capability information. More...
 
class  ns3::CaraWifiManager
 implement the CARA rate control algorithmImplement the CARA algorithm from: J. More...
 
class  CarrierAggregationTestCase
 
This system test program creates different test cases with a single eNB and several UEs, all having the same Radio Bearer specification. More...
 
class  ns3::ChannelAccessManager
 Manage a set of ns3::TxopHandle a set of independent ns3::Txop, each of which represents a single DCF within a MAC stack. More...
 
class  ns3::ConstantObssPdAlgorithm
 Constant OBSS PD algorithmThis constant OBSS_PD algorithm is a simple OBSS_PD algorithm which evaluates if a receiving signal should be accepted or rejected based on a constant threshold. More...
 
class  ns3::ConstantRateWifiManager
 use constant rates for data and RTS transmissions More...
 
class  ns3::CtrlBAckRequestHeader
 Headers for BlockAckRequest. More...
 
class  ns3::CtrlBAckResponseHeader
 Headers for BlockAck response. More...
 
class  ns3::CtrlTriggerHeader
 Headers for Trigger frames. More...
 
class  ns3::CtrlTriggerUserInfoField
 User Info field of Trigger frames. More...
 
class  ns3::DsssErrorRateModel
 an implementation of DSSS error rate modelThe 802.11b modulations: More...
 
class  ns3::DsssParameterSet
 The DSSS Parameter SetThis class knows how to serialise and deserialise the DSSS Parameter Set. More...
 
class  ns3::DsssPhy
 PHY entity for HR/DSSS (11b)Refer to IEEE 802.11-2016, clause 16 (HR/DSSS). More...
 
class  ns3::DsssPpdu
 DSSS (HR/DSSS) PPDU (11b)DsssPpdu stores a preamble, PHY headers and a PSDU of a PPDU with DSSS modulation. More...
 
class  ns3::EdcaParameterSet
 The EDCA Parameter SetThis class knows how to serialise and deserialise the EDCA Parameter Set. More...
 
class  ns3::ErpInformation
 The ErpInformation Information ElementThis class knows how to serialise and deserialise the ErpInformation Information Element. More...
 
class  ns3::ErpOfdmPhy
 PHY entity for ERP-OFDM (11g)ERP-OFDM PHY is based on OFDM PHY. More...
 
class  ns3::ErpOfdmPpdu
 ERP-OFDM PPDU (11g)ErpOfdmPpdu stores a preamble, PHY headers and a PSDU of a PPDU with non-HT header, i.e., PPDU that uses ERP-OFDM modulation. More...
 
class  ns3::ErrorRateModel
 the interface for Wifi's error models More...
 
class  ns3::Event
 handles interference calculations More...
 
class  ns3::ExtendedCapabilities
 The Extended Capabilities Information ElementThis class knows how to serialise and deserialise the Extended Capabilities Information Element. 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::FrameCaptureModel
 the interface for Wifi's frame capture models More...
 
class  ns3::FrameExchangeManager
 FrameExchangeManager is a base class handling the basic frame exchange sequences for non-QoS stations. More...
 
class  ns3::HeCapabilities
 The IEEE 802.11ax HE Capabilities. More...
 
class  ns3::HeConfiguration
 HE configurationThis object stores HE configuration information, for use in modifying AP or STA behavior and for constructing HE-related information elements. More...
 
class  ns3::HeFrameExchangeManager
 HeFrameExchangeManager handles the frame exchange sequences for HE stations. More...
 
class  ns3::HeOperation
 The HE Operation Information ElementThis class knows how to serialise and deserialise the HE Operation Information Element. More...
 
class  ns3::HePhy
 PHY entity for HE (11ax)HE PHY is based on VHT PHY. More...
 
class  ns3::HePpdu
 HE PPDU (11ax)HePpdu stores a preamble, PHY headers and a map of PSDUs of a PPDU with HE header. More...
 
class  ns3::HtCapabilities
 The HT Capabilities Information ElementThis class knows how to serialise and deserialise the HT Capabilities Information Element. More...
 
class  ns3::HtConfiguration
 HT configurationThis object stores HT configuration information, for use in modifying AP or STA behavior and for constructing HT-related information elements. More...
 
class  ns3::HtFrameExchangeManager
 HtFrameExchangeManager handles the frame exchange sequences for HT stations. More...
 
class  ns3::HtOperation
 The HT Operation Information ElementThis class knows how to serialise and deserialise the HT Operation Information Element. More...
 
class  ns3::HtPhy
 PHY entity for HT (11n)HT PHY is based on OFDM PHY. More...
 
class  ns3::HtPpdu
 HT PPDU (11n)HtPpdu stores a preamble, PHY headers and a PSDU of a PPDU with HT header. 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::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 and reassociation 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 Delete 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::MgtReassocRequestHeader
 Implement the header for management frames of type reassociation request. More...
 
class  ns3::MinstrelHtWifiManager
 Implementation of Minstrel-HT Rate Control AlgorithmMinstrel-HT is a rate adaptation mechanism for the 802.11n/ac/ax standards 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
 Aggregator used to construct A-MPDUs. More...
 
class  ns3::MsduAggregator
 Aggregator used to construct A-MSDUs. More...
 
class  ns3::MultiUserScheduler
 MultiUserScheduler is an abstract base class defining the API that APs supporting at least VHT can use to determine the format of their next transmission. More...
 
class  ns3::MuSnrTag
 A tag to be attached to a response to a multi-user UL frame, that carries the SNR values with which the individual frames have been received. More...
 
class  ns3::NistErrorRateModel
 A model for the error rate for different modulations. More...
 
class  ns3::ObssPdAlgorithm
 OBSS PD algorithm interfaceThis object provides the interface for all OBSS_PD algorithms and is designed to be subclassed. More...
 
class  ns3::OfdmPhy
 PHY entity for OFDM (11a)This class is also used for the 10 MHz and 5 MHz bandwidth variants addressing vehicular communications (default is 20 MHz bandwidth). More...
 
class  ns3::OfdmPpdu
 OFDM PPDU (11a)OfdmPpdu stores a preamble, PHY headers and a PSDU of a PPDU with non-HT header, i.e., PPDU that uses OFDM modulation. 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 set to Block Ack for an originator station. More...
 
class  ns3::ParfWifiManager
 PARF Rate control algorithm. More...
 
class  ns3::PhyEntity
 Abstract class for PHY entitiesThis class enables to have a unique set of APIs to be used by each PHY entity, corresponding to the different amendments of the IEEE 802.11 standard. More...
 
class  ns3::PreambleDetectionModel
 the interface for Wifi's preamble detection models More...
 
class  ns3::QosFrameExchangeManager
 QosFrameExchangeManager handles the frame exchange sequences for QoS stations. More...
 
class  ns3::QosTxop
 Handle packet fragmentation and retransmissions for QoS data frames as well as MSDU aggregation (A-MSDU) and block ack sessions, for a given access class. More...
 
class  ns3::RecipientBlockAckAgreement
 Maintains the scoreboard and the receive reordering buffer used by a recipient of a Block Ack agreement. 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::RrMultiUserScheduler
 RrMultiUserScheduler is a simple OFDMA scheduler that indicates to perform a DL OFDMA transmission if the AP has frames to transmit to at least one station. More...
 
class  ns3::SimpleFrameCaptureModel
 A simple threshold-based model for frame capture effect. More...
 
class  ns3::SpectrumWifiPhy
 802.11 PHY layer modelThis PHY implements a spectrum-aware enhancement of the 802.11 SpectrumWifiPhy model. 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::ThompsonSamplingWifiManager
 Thompson Sampling rate control algorithmThis class implements Thompson Sampling rate control algorithm. More...
 
class  ns3::ThresholdPreambleDetectionModel
 A threshold-based model for detecting PHY preamble. More...
 
class  ns3::Txop
 Handle packet fragmentation and retransmissions for data and management frames. More...
 
class  ns3::VhtCapabilities
 The IEEE 802.11ac VHT Capabilities. More...
 
class  ns3::VhtConfiguration
 VHT configurationThis object stores VHT configuration information, for use in modifying AP or STA behavior and for constructing VHT-related information elements. More...
 
class  ns3::VhtFrameExchangeManager
 VhtFrameExchangeManager handles the frame exchange sequences for VHT stations. More...
 
class  ns3::VhtOperation
 The VHT Operation Information ElementThis class knows how to serialise and deserialise the VHT Operation Information Element. More...
 
class  ns3::VhtPhy
 PHY entity for VHT (11ac)VHT PHY is based on HT PHY. More...
 
class  ns3::VhtPpdu
 VHT PPDU (11ac)VhtPpdu stores a preamble, PHY headers and a PSDU of a PPDU with VHT header. More...
 
class  ns3::WifiAc
 This class stores the pair of TIDs of an Access Category. More...
 
struct  ns3::WifiAckAfterTbPpdu
 WifiAckAfterTbPpdu is used when a station prepares a TB PPDU to send in response to a Basic Trigger Frame. More...
 
class  ns3::WifiAckManager
 WifiAckManager is an abstract base class. More...
 
struct  ns3::WifiAcknowledgment
 WifiAcknowledgment is an abstract base struct. More...
 
class  ns3::WifiActionHeader
 See IEEE 802.11 chapter 7.3.1.11 Header format: | category: 1 | action value: 1 |. More...
 
struct  ns3::WifiBarBlockAck
 WifiBarBlockAck specifies that a BlockAckReq is sent to solicit a Block Ack response. More...
 
struct  ns3::WifiBlockAck
 WifiBlockAck specifies that acknowledgment via Block Ack is required. More...
 
struct  ns3::WifiCtsToSelfProtection
 WifiCtsToSelfProtection specifies that CTS-to-self protection method is used. More...
 
class  ns3::WifiDefaultAckManager
 WifiDefaultAckManager is the default ack manager. More...
 
class  ns3::WifiDefaultProtectionManager
 WifiDefaultProtectionManager is the default protection manager, which selects the protection method for a frame based on its size. More...
 
struct  ns3::WifiDlMuAggregateTf
 WifiDlMuAggregateTf specifies that a DL MU PPDU made of PSDUs including each a MU-BAR Trigger Frame is acknowledged through BlockAck frames sent as HE TB PPDUs. More...
 
struct  ns3::WifiDlMuBarBaSequence
 WifiDlMuBarBaSequence specifies that a DL MU PPDU is acknowledged through a sequence of BlockAckReq and BlockAck frames. More...
 
struct  ns3::WifiDlMuTfMuBar
 WifiDlMuTfMuBar specifies that a DL MU PPDU is followed after a SIFS duration by a MU-BAR Trigger Frame (sent as single user frame) soliciting BlockAck frames sent as HE TB PPDUs. 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::WifiMacQueueItem
 WifiMacQueueItem stores (const) packets along with their Wifi MAC headers and the time when they were enqueued. 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...
 
struct  ns3::WifiNoAck
 WifiNoAck specifies that no acknowledgment is required. More...
 
struct  ns3::WifiNoProtection
 WifiNoProtection specifies that no protection method is used. More...
 
struct  ns3::WifiNormalAck
 WifiNormalAck specifies that acknowledgment via Normal Ack is required. More...
 
class  ns3::WifiPhy
 802.11 PHY layer model More...
 
class  ns3::WifiPhyOperatingChannel
 Class that keeps track of all information about the current PHY operating channel. More...
 
class  ns3::WifiPhyStateHelper
 This objects implements the PHY state machine of the Wifi device. More...
 
class  ns3::WifiPhyTag
 Tag for WifiTxVector and WifiPreamble information to be embedded in outgoing transmissions as a PacketTag. More...
 
class  ns3::WifiPpdu
 WifiPpdu stores a preamble, a modulation class, PHY headers and a PSDU. More...
 
struct  ns3::WifiProtection
 WifiProtection is an abstract base struct. More...
 
class  ns3::WifiProtectionManager
 WifiProtectionManager is an abstract base class. More...
 
class  ns3::WifiPsdu
 WifiPsdu stores an MPDU, S-MPDU or A-MPDU, by keeping header(s) and payload(s) separate for each constituent MPDU. More...
 
class  ns3::WifiRemoteStationManager
 hold a list of per-remote-station state. More...
 
struct  ns3::WifiRrpaaThresholds
 Robust Rate and Power Adaptation Algorithm. More...
 
struct  ns3::WifiRtsCtsProtection
 WifiRtsCtsProtection specifies that RTS/CTS protection method is used. More...
 
class  ns3::WifiSpectrumPhyInterface
 This class is an adaptor between class SpectrumWifiPhy (which inherits from WifiPhy) and class SpectrumChannel (which expects objects derived from class SpectrumPhy to be connected to it). More...
 
struct  ns3::WifiSpectrumSignalParameters
 Signal parameters for wifi. More...
 
class  ns3::WifiTxParameters
 This class stores the TX parameters (TX vector, protection mechanism, acknowledgment mechanism, TX duration, ...) for a frame of different types (MPDU, A-MPDU, multi-TID A-MPDU, MU PPDU, ...). More...
 
class  ns3::WifiTxTimer
 This class is used to handle the timer that a station starts when transmitting a frame that solicits a response. More...
 
struct  ns3::WifiUlMuMultiStaBa
 WifiUlMuMultiStaBa specifies that a Basic Trigger Frame is being sent to solicit TB PPDUs that will be acknowledged through a multi-STA BlockAck frame. More...
 
class  ns3::YansErrorRateModel
 Model the error rate for different modulations. More...
 
class  ns3::YansWifiChannel
 a channel to interconnect ns3::YansWifiPhy objects. More...
 
class  ns3::YansWifiPhy
 802.11 PHY layer modelThis PHY implements a model of 802.11a. More...
 

Enumerations

enum  ns3::AcIndex : uint8_t {
  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::FrequencyChannelType : uint8_t { ns3::WIFI_PHY_DSSS_CHANNEL = 0, ns3::WIFI_PHY_OFDM_CHANNEL, ns3::WIFI_PHY_80211p_CHANNEL }
 Enumeration of frequency channel types. More...
 
enum  ns3::MpduType {
  ns3::NORMAL_MPDU, ns3::SINGLE_MPDU, ns3::FIRST_MPDU_IN_AGGREGATE, ns3::MIDDLE_MPDU_IN_AGGREGATE,
  ns3::LAST_MPDU_IN_AGGREGATE
}
 The type of an MPDU. More...
 
enum  ns3::OfdmPhyVariant { ns3::OFDM_PHY_DEFAULT, ns3::OFDM_PHY_10_MHZ, ns3::OFDM_PHY_5_MHZ }
 The OFDM (11a) PHY variants. More...
 
enum  ns3::TriggerFrameType : uint8_t {
  ns3::BASIC_TRIGGER = 0, ns3::BFRP_TRIGGER = 1, ns3::MU_BAR_TRIGGER = 2, ns3::MU_RTS_TRIGGER = 3,
  ns3::BSRP_TRIGGER = 4, ns3::GCR_MU_BAR_TRIGGER = 5, ns3::BQRP_TRIGGER = 6, ns3::NFRP_TRIGGER = 7
}
 The different Trigger frame types. More...
 
enum  ns3::WifiMacDropReason : uint8_t { ns3::WIFI_MAC_DROP_FAILED_ENQUEUE = 0, ns3::WIFI_MAC_DROP_EXPIRED_LIFETIME, ns3::WIFI_MAC_DROP_REACHED_RETRY_LIMIT }
 The reason why an MPDU was dropped. More...
 
enum  ns3::WifiMacStandard { ns3::WIFI_MAC_STANDARD_80211, ns3::WIFI_MAC_STANDARD_80211n, ns3::WIFI_MAC_STANDARD_80211ac, ns3::WIFI_MAC_STANDARD_80211ax }
 Identifies the MAC specification that a Wifi device is configured to use. More...
 
enum  ns3::WifiModulationClass {
  ns3::WIFI_MOD_CLASS_UNKNOWN = 0, ns3::WIFI_MOD_CLASS_DSSS, ns3::WIFI_MOD_CLASS_HR_DSSS, ns3::WIFI_MOD_CLASS_ERP_OFDM,
  ns3::WIFI_MOD_CLASS_OFDM, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_MOD_CLASS_VHT, ns3::WIFI_MOD_CLASS_HE
}
 This enumeration defines the modulation classes per (Table 10-6 "Modulation classes"; IEEE 802.11-2016, with updated in 802.11ax/D6.0 as Table 10-9). More...
 
enum  ns3::WifiPhyBand { ns3::WIFI_PHY_BAND_2_4GHZ, ns3::WIFI_PHY_BAND_5GHZ, ns3::WIFI_PHY_BAND_6GHZ, ns3::WIFI_PHY_BAND_UNSPECIFIED }
 Identifies the PHY band. More...
 
enum  ns3::WifiPhyRxfailureReason {
  ns3::UNKNOWN = 0, ns3::UNSUPPORTED_SETTINGS, ns3::CHANNEL_SWITCHING, ns3::RXING,
  ns3::TXING, ns3::SLEEPING, ns3::BUSY_DECODING_PREAMBLE, ns3::PREAMBLE_DETECT_FAILURE,
  ns3::RECEPTION_ABORTED_BY_TX, ns3::L_SIG_FAILURE, ns3::HT_SIG_FAILURE, ns3::SIG_A_FAILURE,
  ns3::SIG_B_FAILURE, ns3::PREAMBLE_DETECTION_PACKET_SWITCH, ns3::FRAME_CAPTURE_PACKET_SWITCH, ns3::OBSS_PD_CCA_RESET,
  ns3::HE_TB_PPDU_TOO_LATE, ns3::FILTERED
}
 Enumeration of the possible reception failure reasons. 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_80211p, ns3::WIFI_PHY_STANDARD_80211n_2_4GHZ, ns3::WIFI_PHY_STANDARD_80211n_5GHZ,
  ns3::WIFI_PHY_STANDARD_80211n, ns3::WIFI_PHY_STANDARD_80211ac, ns3::WIFI_PHY_STANDARD_80211ax, ns3::WIFI_PHY_STANDARD_UNSPECIFIED
}
 Identifies the PHY specification that a Wifi device is configured to use. More...
 
enum  ns3::WifiPpduField {
  ns3::WIFI_PPDU_FIELD_PREAMBLE = 0, ns3::WIFI_PPDU_FIELD_NON_HT_HEADER, ns3::WIFI_PPDU_FIELD_HT_SIG, ns3::WIFI_PPDU_FIELD_TRAINING,
  ns3::WIFI_PPDU_FIELD_SIG_A, ns3::WIFI_PPDU_FIELD_SIG_B, ns3::WIFI_PPDU_FIELD_DATA
}
 The type of PPDU field (grouped for convenience) More...
 
enum  ns3::WifiPpduType { ns3::WIFI_PPDU_TYPE_SU = 0, ns3::WIFI_PPDU_TYPE_DL_MU, ns3::WIFI_PPDU_TYPE_UL_MU }
 The type of PPDU (SU, DL MU, or UL MU) More...
 
enum  ns3::WifiPreamble {
  ns3::WIFI_PREAMBLE_LONG, ns3::WIFI_PREAMBLE_SHORT, ns3::WIFI_PREAMBLE_HT_MF, ns3::WIFI_PREAMBLE_VHT_SU,
  ns3::WIFI_PREAMBLE_VHT_MU, ns3::WIFI_PREAMBLE_HE_SU, ns3::WIFI_PREAMBLE_HE_ER_SU, ns3::WIFI_PREAMBLE_HE_MU,
  ns3::WIFI_PREAMBLE_HE_TB
}
 The type of preamble to be used by an IEEE 802.11 transmission. More...
 
enum  ns3::WifiStandard {
  ns3::WIFI_STANDARD_80211a, ns3::WIFI_STANDARD_80211b, ns3::WIFI_STANDARD_80211g, ns3::WIFI_STANDARD_80211p,
  ns3::WIFI_STANDARD_80211n_2_4GHZ, ns3::WIFI_STANDARD_80211n_5GHZ, ns3::WIFI_STANDARD_80211ac, ns3::WIFI_STANDARD_80211ax_2_4GHZ,
  ns3::WIFI_STANDARD_80211ax_5GHZ, ns3::WIFI_STANDARD_80211ax_6GHZ
}
 Identifies the allowed configurations that a Wifi device is configured to use. More...
 

Functions

uint8_t ns3::GetTid (Ptr< const Packet > packet, const WifiMacHeader hdr)
 This function is useful to get traffic id of different packet types. More...
 
bool ns3::operator< (enum AcIndex left, enum AcIndex right)
 Operator< overload returning true if the AC on the left has lower priority than the AC on the right. More...
 
bool ns3::operator<= (enum AcIndex left, enum AcIndex right)
 Operator<= overload returning true if the AC on the left has lower or the same priority than the AC on the right. More...
 
bool ns3::operator> (enum AcIndex left, enum AcIndex right)
 Operator> overload returning true if the AC on the left has higher priority than the AC on the right. More...
 
bool ns3::operator>= (enum AcIndex left, enum AcIndex right)
 Operator>= overload returning true if the AC on the left has higher or the same priority than the AC on the right. More...
 
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...
 
uint8_t ns3::SelectQueueByDSField (Ptr< QueueItem > item)
 Determine the TX queue for a given packet. 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

◆ AcIndex

enum ns3::AcIndex : uint8_t

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 70 of file qos-utils.h.

◆ FrequencyChannelType

enum ns3::FrequencyChannelType : uint8_t

Enumeration of frequency channel types.

Enumerator
WIFI_PHY_DSSS_CHANNEL 
WIFI_PHY_OFDM_CHANNEL 
WIFI_PHY_80211p_CHANNEL 

Definition at line 218 of file wifi-standards.h.

◆ MpduType

The type of an MPDU.

Enumerator
NORMAL_MPDU 

The MPDU is not part of an A-MPDU.

SINGLE_MPDU 

The MPDU is a single MPDU.

FIRST_MPDU_IN_AGGREGATE 

The MPDU is the first aggregate in an A-MPDU with multiple MPDUs, but is not the last aggregate.

MIDDLE_MPDU_IN_AGGREGATE 

The MPDU is part of an A-MPDU with multiple MPDUs, but is neither the first nor the last aggregate.

LAST_MPDU_IN_AGGREGATE 

The MPDU is the last aggregate in an A-MPDU with multiple MPDUs.

Definition at line 30 of file wifi-mpdu-type.h.

◆ OfdmPhyVariant

The OFDM (11a) PHY variants.

See also
OfdmPhy
Enumerator
OFDM_PHY_DEFAULT 
OFDM_PHY_10_MHZ 
OFDM_PHY_5_MHZ 

Definition at line 43 of file ofdm-phy.h.

◆ TriggerFrameType

enum ns3::TriggerFrameType : uint8_t

The different Trigger frame types.

Enumerator
BASIC_TRIGGER 
BFRP_TRIGGER 
MU_BAR_TRIGGER 
MU_RTS_TRIGGER 
BSRP_TRIGGER 
GCR_MU_BAR_TRIGGER 
BQRP_TRIGGER 
NFRP_TRIGGER 

Definition at line 560 of file ctrl-headers.h.

◆ WifiMacDropReason

enum ns3::WifiMacDropReason : uint8_t

The reason why an MPDU was dropped.

Enumerator
WIFI_MAC_DROP_FAILED_ENQUEUE 
WIFI_MAC_DROP_EXPIRED_LIFETIME 
WIFI_MAC_DROP_REACHED_RETRY_LIMIT 

Definition at line 54 of file wifi-mac.h.

◆ WifiMacStandard

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

Enumerator
WIFI_MAC_STANDARD_80211 
WIFI_MAC_STANDARD_80211n 
WIFI_MAC_STANDARD_80211ac 
WIFI_MAC_STANDARD_80211ax 

Definition at line 101 of file wifi-standards.h.

◆ WifiModulationClass

This enumeration defines the modulation classes per (Table 10-6 "Modulation classes"; IEEE 802.11-2016, with updated in 802.11ax/D6.0 as Table 10-9).

Enumerator
WIFI_MOD_CLASS_UNKNOWN 

Modulation class unknown or unspecified.

A WifiMode with this WifiModulationClass has not been properly initialized.

WIFI_MOD_CLASS_DSSS 

DSSS (Clause 15)

WIFI_MOD_CLASS_HR_DSSS 

HR/DSSS (Clause 16)

WIFI_MOD_CLASS_ERP_OFDM 

ERP-OFDM (18.4)

WIFI_MOD_CLASS_OFDM 

OFDM (Clause 17)

WIFI_MOD_CLASS_HT 

HT (Clause 19)

WIFI_MOD_CLASS_VHT 

VHT (Clause 22)

WIFI_MOD_CLASS_HE 

HE (Clause 27)

Definition at line 116 of file wifi-phy-common.h.

◆ WifiPhyBand

Identifies the PHY band.

Enumerator
WIFI_PHY_BAND_2_4GHZ 

The 2.4 GHz band.

WIFI_PHY_BAND_5GHZ 

The 5 GHz band.

WIFI_PHY_BAND_6GHZ 

The 6 GHz band.

WIFI_PHY_BAND_UNSPECIFIED 

Unspecified.

Definition at line 32 of file wifi-phy-band.h.

◆ WifiPhyRxfailureReason

Enumeration of the possible reception failure reasons.

Enumerator
UNKNOWN 
UNSUPPORTED_SETTINGS 
CHANNEL_SWITCHING 
RXING 
TXING 
SLEEPING 
BUSY_DECODING_PREAMBLE 
PREAMBLE_DETECT_FAILURE 
RECEPTION_ABORTED_BY_TX 
L_SIG_FAILURE 
HT_SIG_FAILURE 
SIG_A_FAILURE 
SIG_B_FAILURE 
PREAMBLE_DETECTION_PACKET_SWITCH 
FRAME_CAPTURE_PACKET_SWITCH 
OBSS_PD_CCA_RESET 
HE_TB_PPDU_TOO_LATE 
FILTERED 

Definition at line 257 of file wifi-phy-common.h.

◆ WifiPhyStandard

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

Enumerator
WIFI_PHY_STANDARD_80211a 

OFDM PHY (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)

this value is NS_DEPRECATED_3_32

WIFI_PHY_STANDARD_80211_5MHZ 

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

this value is NS_DEPRECATED_3_32

WIFI_PHY_STANDARD_80211p 

OFDM PHY (Clause 17 - amendment for 10 MHz and 5 MHz channels)

WIFI_PHY_STANDARD_80211n_2_4GHZ 

HT PHY for the 2.4 GHz band (clause 20)

this value is NS_DEPRECATED_3_32

WIFI_PHY_STANDARD_80211n_5GHZ 

HT PHY for the 5 GHz band (clause 20)

this value is NS_DEPRECATED_3_32

WIFI_PHY_STANDARD_80211n 

HT PHY (clause 20)

WIFI_PHY_STANDARD_80211ac 

VHT PHY (clause 22)

WIFI_PHY_STANDARD_80211ax 

HE PHY (clause 26)

WIFI_PHY_STANDARD_UNSPECIFIED 

Unspecified.

Definition at line 34 of file wifi-standards.h.

◆ WifiPpduField

The type of PPDU field (grouped for convenience)

Enumerator
WIFI_PPDU_FIELD_PREAMBLE 

SYNC + SFD fields for DSSS or ERP, shortSYNC + shortSFD fields for HR/DSSS or ERP, HT-GF-STF + HT-GF-LTF1 fields for HT-GF, L-STF + L-LTF fields otherwise.

WIFI_PPDU_FIELD_NON_HT_HEADER 

PHY header field for DSSS or ERP, short PHY header field for HR/DSSS or ERP, field not present for HT-GF, L-SIG field or L-SIG + RL-SIG fields otherwise.

WIFI_PPDU_FIELD_HT_SIG 

HT-SIG field.

WIFI_PPDU_FIELD_TRAINING 

STF + LTF fields (excluding those in preamble for HT-GF)

WIFI_PPDU_FIELD_SIG_A 

SIG-A field.

WIFI_PPDU_FIELD_SIG_B 

SIG-B field.

WIFI_PPDU_FIELD_DATA 

data field

Definition at line 165 of file wifi-phy-common.h.

◆ WifiPpduType

The type of PPDU (SU, DL MU, or UL MU)

Enumerator
WIFI_PPDU_TYPE_SU 
WIFI_PPDU_TYPE_DL_MU 
WIFI_PPDU_TYPE_UL_MU 

Definition at line 223 of file wifi-phy-common.h.

◆ WifiPreamble

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_VHT_SU 
WIFI_PREAMBLE_VHT_MU 
WIFI_PREAMBLE_HE_SU 
WIFI_PREAMBLE_HE_ER_SU 
WIFI_PREAMBLE_HE_MU 
WIFI_PREAMBLE_HE_TB 

Definition at line 62 of file wifi-phy-common.h.

◆ WifiStandard

Identifies the allowed configurations that a Wifi device is configured to use.

Enumerator
WIFI_STANDARD_80211a 
WIFI_STANDARD_80211b 
WIFI_STANDARD_80211g 
WIFI_STANDARD_80211p 
WIFI_STANDARD_80211n_2_4GHZ 
WIFI_STANDARD_80211n_5GHZ 
WIFI_STANDARD_80211ac 
WIFI_STANDARD_80211ax_2_4GHZ 
WIFI_STANDARD_80211ax_5GHZ 
WIFI_STANDARD_80211ax_6GHZ 

Definition at line 137 of file wifi-standards.h.

Function Documentation

◆ GetTid()

◆ operator<()

bool ns3::operator< ( enum AcIndex  left,
enum AcIndex  right 
)

Operator< overload returning true if the AC on the left has lower priority than the AC on the right.

Parameters
leftthe AC on the left of operator<
rightthe AC on the right of operator<
Returns
true if the AC on the left has lower priority than the AC on the right

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

◆ operator<=()

bool ns3::operator<= ( enum AcIndex  left,
enum AcIndex  right 
)

Operator<= overload returning true if the AC on the left has lower or the same priority than the AC on the right.

Parameters
leftthe AC on the left of operator<=
rightthe AC on the right of operator<=
Returns
true if the AC on the left has lower or the same priority than the AC on the right

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

◆ operator>()

bool ns3::operator> ( enum AcIndex  left,
enum AcIndex  right 
)

Operator> overload returning true if the AC on the left has higher priority than the AC on the right.

Parameters
leftthe AC on the left of operator>
rightthe AC on the right of operator>
Returns
true if the AC on the left has higher priority than the AC on the right

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

References ns3::AC_BK, and NS_ABORT_MSG_IF.

◆ operator>=()

bool ns3::operator>= ( enum AcIndex  left,
enum AcIndex  right 
)

Operator>= overload returning true if the AC on the left has higher or the same priority than the AC on the right.

Parameters
leftthe AC on the left of operator>=
rightthe AC on the right of operator>=
Returns
true if the AC on the left has higher or the same priority than the AC on the right

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

References NS_ABORT_MSG_IF.

◆ QosUtilsGetTidForPacket()

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 152 of file qos-utils.cc.

References ns3::SocketPriorityTag::GetPriority(), and ns3::Packet::PeekPacketTag().

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

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ QosUtilsIsOldPacket()

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 178 of file qos-utils.cc.

References NS_ASSERT.

Referenced by QosUtilsIsOldPacketTest::DoRun(), ns3::WifiDefaultAckManager::GetMaxDistFromStartingSeq(), ns3::WifiPsdu::GetMaxDistFromStartingSeq(), ns3::QosTxop::GetNextMpdu(), ns3::QosTxop::IsQosOldPacket(), ns3::BlockAckManager::NotifyDiscardedMpdu(), and ns3::BlockAckManager::NotifyGotBlockAck().

+ Here is the caller graph for this function:

◆ QosUtilsMapSeqControlToUniqueInteger()

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
endSequencethe sequence number ending the acknowledgment window
Returns
a unique integer for the given sequence control and end sequence

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

Referenced by PacketBufferingCaseA::DoRun(), and PacketBufferingCaseB::DoRun().

+ Here is the caller graph for this function:

◆ QosUtilsMapTidToAc()

◆ SelectQueueByDSField()

uint8_t ns3::SelectQueueByDSField ( Ptr< QueueItem item)

Determine the TX queue for a given packet.

Parameters
itemthe packet
Returns
the access category

Modeled after the Linux function ieee80211_select_queue (net/mac80211/wme.c). A SocketPriority tag is attached to the packet (or the existing one is replaced) to carry the user priority, which is set to the three most significant bits of the DS field (TOS field in case of IPv4 and Traffic Class field in case of IPv6). The Access Category corresponding to the user priority according to the QosUtilsMapTidToAc function is returned.

The following table shows the mapping for the Diffserv Per Hop Behaviors.

PHB TOS (binary) UP Access Category
EF 101110xx 5 AC_VI
AF11 001010xx 1 AC_BK
AF21 010010xx 2 AC_BK
AF31 011010xx 3 AC_BE
AF41 100010xx 4 AC_VI
AF12 001100xx 1 AC_BK
AF22 010100xx 2 AC_BK
AF32 011100xx 3 AC_BE
AF42 100100xx 4 AC_VI
AF13 001110xx 1 AC_BK
AF23 010110xx 2 AC_BK
AF33 011110xx 3 AC_BE
AF43 100110xx 4 AC_VI
CS0 000000xx 0 AC_BE
CS1 001000xx 1 AC_BK
CS2 010000xx 2 AC_BK
CS3 011000xx 3 AC_BE
CS4 100000xx 4 AC_VI
CS5 101000xx 5 AC_VI
CS6 110000xx 6 AC_VO
CS7 111000xx 7 AC_VO

This method is called by the traffic control layer before enqueuing a packet in the queue disc, if a queue disc is installed on the outgoing device, or passing a packet to the device, otherwise.

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

References ns3::QueueItem::GetPacket(), ns3::QueueItem::GetUint8Value(), ns3::QueueItem::IP_DSFIELD, ns3::QosUtilsMapTidToAc(), ns3::Packet::ReplacePacketTag(), and ns3::SocketPriorityTag::SetPriority().

+ Here is the call graph for this function: