A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
WifiTxopTest Class Reference

Test TXOP rules. More...

+ Inheritance diagram for WifiTxopTest:
+ Collaboration diagram for WifiTxopTest:

Classes

struct  FrameInfo
 Information about transmitted frames. More...
 
struct  Params
 Parameters for this test. More...
 

Public Member Functions

 WifiTxopTest (const Params &params)
 Constructor.
 
void CheckResults ()
 Check correctness of transmitted frames.
 
void L7Receive (std::string context, Ptr< const Packet > p, const Address &addr)
 Function to trace packets received by the server application.
 
void Transmit (std::string context, WifiConstPsduMap psduMap, WifiTxVector txVector, double txPowerW)
 Callback invoked when PHY receives a PSDU to transmit.
 
- Public Member Functions inherited from ns3::TestCase
 TestCase (const TestCase &)=delete
 
virtual ~TestCase ()
 Destructor.
 
std::string GetName () const
 
TestCaseoperator= (const TestCase &)=delete
 

Private Member Functions

void DoRun () override
 Implementation to actually run this TestCase.
 

Private Attributes

bool m_apCorrupted
 whether the frame to be corrupted by the AP has been corrupted
 
NetDeviceContainer m_apDevices
 container for AP's NetDevice
 
Ptr< ListErrorModelm_apErrorModel
 error model to install on the AP
 
Time m_apTxopLimit
 TXOP limit for AP (AC BE)
 
bool m_lengthBasedRtsCtsThresh
 whether to use length based RTS/CTS threshold
 
WifiMode m_mode
 wifi mode used to transmit data frames
 
bool m_nonHt
 whether to use 802.11a or 802.11ax
 
uint16_t m_nStations
 number of stations
 
std::size_t m_payloadSizeRtsOff
 size in bytes of packets not protected by RTS
 
std::size_t m_payloadSizeRtsOn
 size in bytes of packets protected by RTS
 
bool m_pifsRecovery
 whether to use PIFS recovery
 
uint16_t m_received
 number of packets received by the stations
 
bool m_singleRtsPerTxop
 whether to use single RTS per TXOP
 
uint8_t m_staAifsn
 AIFSN for STAs (AC BE)
 
bool m_staCorrupted
 whether the frame to be corrupted by the STA has been corrupted
 
uint32_t m_staCwMax
 CWmax for STAs (AC BE)
 
uint32_t m_staCwMin
 CWmin for STAs (AC BE)
 
NetDeviceContainer m_staDevices
 container for stations' NetDevices
 
Ptr< ListErrorModelm_staErrorModel
 error model to install on a STA
 
Time m_startTime
 time when data frame exchanges start
 
Time m_staTxopLimit
 TXOP limit for STAs (AC BE)
 
std::vector< FrameInfom_txPsdus
 transmitted PSDUs
 

Additional Inherited Members

- Public Types inherited from ns3::TestCase
enum class  Duration { QUICK = 1 , EXTENSIVE = 2 , TAKES_FOREVER = 3 }
 How long the test takes to execute. More...
 
- Static Public Attributes inherited from ns3::TestCase
static constexpr auto QUICK = Duration::QUICK
 Deprecated test duration simple enums.
 
static constexpr auto EXTENSIVE = Duration::EXTENSIVE
 
static constexpr auto TAKES_FOREVER = Duration::TAKES_FOREVER
 
- Protected Member Functions inherited from ns3::TestCase
 TestCase (std::string name)
 Constructor.
 
void AddTestCase (TestCase *testCase, Duration duration=Duration::QUICK)
 Add an individual child TestCase to this test suite.
 
TestCaseGetParent () const
 Get the parent of this TestCase.
 
bool IsStatusFailure () const
 Check if any tests failed.
 
bool IsStatusSuccess () const
 Check if all tests passed.
 
void SetDataDir (std::string directory)
 Set the data directory where reference trace files can be found.
 
void ReportTestFailure (std::string cond, std::string actual, std::string limit, std::string message, std::string file, int32_t line)
 Log the failure of this TestCase.
 
bool MustAssertOnFailure () const
 Check if this run should assert on failure.
 
bool MustContinueOnFailure () const
 Check if this run should continue on failure.
 
std::string CreateDataDirFilename (std::string filename)
 Construct the full path to a file in the data directory.
 
std::string CreateTempDirFilename (std::string filename)
 Construct the full path to a file in a temporary directory.
 

Detailed Description

Test TXOP rules.

A BSS consisting of an AP and 3 non-AP STAs is considered in this test. Both non-HT (802.11a) and HE devices are tested. Two TXOPs are simulated in this test:

  • In the first TXOP, the AP sends a QoS data frame to each of the three STAs. The Ack in response to the initial frame is corrupted, hence the AP terminates the TXOP and tries again when a new TXOP is gained. In the new TXOP, the initial frame sent to STA 1 is successfully received, while the second frame to STA 2 is corrupted. It is checked that the AP performs PIFS recovery or invokes backoff depending on the value of the PifsRecovery attribute. All QoS data frames transmitted have a length/duration that does not exceed the length/duration based RTS/CTS threshold, hence RTS/CTS is never used.
  • In the second TXOP, the AP sends a QoS data frame, in case of non-HT devices, or an A-MPDU consisting of 2 MPDUs, in case of HE devices, to each of the three STAs. All PSDUs transmitted have a length/duration that exceeds the length/duration based RTS/CTS threshold, hence RTS/CTS is used to protect every PSDU, unless the SingleRtsPerTxop attribute is set to true, in which case only the initial frame in the TXOP is protected by RTS/CTS.

Definition at line 57 of file wifi-txop-test.cc.

Constructor & Destructor Documentation

◆ WifiTxopTest()

WifiTxopTest::WifiTxopTest ( const Params & params)

Constructor.

Parameters
paramsparameters for the Wi-Fi TXOP test

Definition at line 136 of file wifi-txop-test.cc.

Member Function Documentation

◆ CheckResults()

void WifiTxopTest::CheckResults ( )

Check correctness of transmitted frames.

Definition at line 451 of file wifi-txop-test.cc.

References ns3::AC_BE, ns3::WifiPhy::CalculatePhyPreambleAndHeaderDuration(), ns3::DynamicCast(), ns3::NetDeviceContainer::Get(), ns3::NetDeviceContainer::GetN(), ns3::WifiRemoteStationManager::GetTypeId(), ns3::TypeId::AttributeInformation::initialValue, ns3::TypeId::LookupAttributeByName(), m_apDevices, m_apTxopLimit, m_lengthBasedRtsCtsThresh, m_nonHt, m_pifsRecovery, m_received, m_singleRtsPerTxop, m_staAifsn, m_staCwMax, m_staCwMin, m_staDevices, m_staTxopLimit, m_txPsdus, ns3::MicroSeconds(), ns3::NanoSeconds(), NS_TEST_ASSERT_MSG_EQ, NS_TEST_EXPECT_MSG_EQ, NS_TEST_EXPECT_MSG_GT, NS_TEST_EXPECT_MSG_GT_OR_EQ, NS_TEST_EXPECT_MSG_LT, NS_TEST_EXPECT_MSG_LT_OR_EQ, ns3::Seconds(), and ns3::SINGLE_LINK_OP_ID.

Referenced by DoRun().

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

◆ DoRun()

◆ L7Receive()

void WifiTxopTest::L7Receive ( std::string context,
Ptr< const Packet > p,
const Address & addr )

Function to trace packets received by the server application.

Parameters
contextthe context
pthe packet
addrthe address

Definition at line 161 of file wifi-txop-test.cc.

References m_payloadSizeRtsOff, and m_received.

Referenced by DoRun().

+ Here is the caller graph for this function:

◆ Transmit()

void WifiTxopTest::Transmit ( std::string context,
WifiConstPsduMap psduMap,
WifiTxVector txVector,
double txPowerW )

Callback invoked when PHY receives a PSDU to transmit.

Parameters
contextthe context
psduMapthe PSDU map
txVectorthe TX vector
txPowerWthe tx power in Watts

Definition at line 170 of file wifi-txop-test.cc.

References ns3::WifiPhy::CalculateTxDuration(), ns3::NetDeviceContainer::Get(), m_apCorrupted, m_apErrorModel, m_staCorrupted, m_staDevices, m_staErrorModel, m_startTime, m_txPsdus, ns3::Simulator::Now(), NS_LOG_INFO, ns3::ListErrorModel::SetList(), ns3::SU_STA_ID, and ns3::WIFI_PHY_BAND_5GHZ.

Referenced by DoRun().

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

Member Data Documentation

◆ m_apCorrupted

bool WifiTxopTest::m_apCorrupted
private

whether the frame to be corrupted by the AP has been corrupted

Definition at line 132 of file wifi-txop-test.cc.

Referenced by Transmit().

◆ m_apDevices

NetDeviceContainer WifiTxopTest::m_apDevices
private

container for AP's NetDevice

Definition at line 114 of file wifi-txop-test.cc.

Referenced by CheckResults(), and DoRun().

◆ m_apErrorModel

Ptr<ListErrorModel> WifiTxopTest::m_apErrorModel
private

error model to install on the AP

Definition at line 130 of file wifi-txop-test.cc.

Referenced by DoRun(), and Transmit().

◆ m_apTxopLimit

Time WifiTxopTest::m_apTxopLimit
private

TXOP limit for AP (AC BE)

Definition at line 116 of file wifi-txop-test.cc.

Referenced by CheckResults(), and DoRun().

◆ m_lengthBasedRtsCtsThresh

bool WifiTxopTest::m_lengthBasedRtsCtsThresh
private

whether to use length based RTS/CTS threshold

Definition at line 129 of file wifi-txop-test.cc.

Referenced by CheckResults(), and DoRun().

◆ m_mode

WifiMode WifiTxopTest::m_mode
private

wifi mode used to transmit data frames

Definition at line 126 of file wifi-txop-test.cc.

Referenced by DoRun().

◆ m_nonHt

bool WifiTxopTest::m_nonHt
private

whether to use 802.11a or 802.11ax

Definition at line 122 of file wifi-txop-test.cc.

Referenced by CheckResults(), and DoRun().

◆ m_nStations

uint16_t WifiTxopTest::m_nStations
private

number of stations

Definition at line 112 of file wifi-txop-test.cc.

Referenced by DoRun().

◆ m_payloadSizeRtsOff

std::size_t WifiTxopTest::m_payloadSizeRtsOff
private

size in bytes of packets not protected by RTS

Definition at line 124 of file wifi-txop-test.cc.

Referenced by DoRun(), and L7Receive().

◆ m_payloadSizeRtsOn

std::size_t WifiTxopTest::m_payloadSizeRtsOn
private

size in bytes of packets protected by RTS

Definition at line 123 of file wifi-txop-test.cc.

Referenced by DoRun().

◆ m_pifsRecovery

bool WifiTxopTest::m_pifsRecovery
private

whether to use PIFS recovery

Definition at line 127 of file wifi-txop-test.cc.

Referenced by CheckResults(), and DoRun().

◆ m_received

uint16_t WifiTxopTest::m_received
private

number of packets received by the stations

Definition at line 121 of file wifi-txop-test.cc.

Referenced by CheckResults(), and L7Receive().

◆ m_singleRtsPerTxop

bool WifiTxopTest::m_singleRtsPerTxop
private

whether to use single RTS per TXOP

Definition at line 128 of file wifi-txop-test.cc.

Referenced by CheckResults(), and DoRun().

◆ m_staAifsn

uint8_t WifiTxopTest::m_staAifsn
private

AIFSN for STAs (AC BE)

Definition at line 117 of file wifi-txop-test.cc.

Referenced by CheckResults(), and DoRun().

◆ m_staCorrupted

bool WifiTxopTest::m_staCorrupted
private

whether the frame to be corrupted by the STA has been corrupted

Definition at line 133 of file wifi-txop-test.cc.

Referenced by Transmit().

◆ m_staCwMax

uint32_t WifiTxopTest::m_staCwMax
private

CWmax for STAs (AC BE)

Definition at line 119 of file wifi-txop-test.cc.

Referenced by CheckResults(), and DoRun().

◆ m_staCwMin

uint32_t WifiTxopTest::m_staCwMin
private

CWmin for STAs (AC BE)

Definition at line 118 of file wifi-txop-test.cc.

Referenced by CheckResults(), and DoRun().

◆ m_staDevices

NetDeviceContainer WifiTxopTest::m_staDevices
private

container for stations' NetDevices

Definition at line 113 of file wifi-txop-test.cc.

Referenced by CheckResults(), DoRun(), and Transmit().

◆ m_staErrorModel

Ptr<ListErrorModel> WifiTxopTest::m_staErrorModel
private

error model to install on a STA

Definition at line 131 of file wifi-txop-test.cc.

Referenced by DoRun(), and Transmit().

◆ m_startTime

Time WifiTxopTest::m_startTime
private

time when data frame exchanges start

Definition at line 125 of file wifi-txop-test.cc.

Referenced by DoRun(), and Transmit().

◆ m_staTxopLimit

Time WifiTxopTest::m_staTxopLimit
private

TXOP limit for STAs (AC BE)

Definition at line 120 of file wifi-txop-test.cc.

Referenced by CheckResults(), and DoRun().

◆ m_txPsdus

std::vector<FrameInfo> WifiTxopTest::m_txPsdus
private

transmitted PSDUs

Definition at line 115 of file wifi-txop-test.cc.

Referenced by CheckResults(), and Transmit().


The documentation for this class was generated from the following file: