#include <fstream>
#include "ns3/log.h"
#include "ns3/config.h"
#include "ns3/gnuplot.h"
#include "ns3/boolean.h"
#include "ns3/string.h"
#include "ns3/double.h"
#include "ns3/integer.h"
#include "ns3/uinteger.h"
#include "ns3/command-line.h"
#include "ns3/node-list.h"
#include "ns3/yans-wifi-helper.h"
#include "ns3/ssid.h"
#include "ns3/wifi-mac-header.h"
#include "ns3/queue-size.h"
#include "ns3/propagation-loss-model.h"
#include "ns3/propagation-delay-model.h"
#include "ns3/rng-seed-manager.h"
#include "ns3/mobility-helper.h"
#include "ns3/wifi-net-device.h"
#include "ns3/packet-socket-helper.h"
#include "ns3/packet-socket-client.h"
#include "ns3/packet-socket-server.h"
#include "ns3/application-container.h"
#include "ns3/ampdu-subframe-header.h"
#include "ns3/wifi-mac.h"
Go to the source code of this file.
Classes | |
class | Experiment |
Helper class for UAN CW MAC example. More... | |
Macros | |
#define | PI 3.1415926535 |
Functions | |
void | AssociationLog (std::string context, Mac48Address address) |
void | BackoffTrace (std::string context, uint32_t newVal) |
Mac48Address | ContextToMac (std::string context) |
uint32_t | ContextToNodeId (std::string context) |
void | CwTrace (std::string context, uint32_t oldVal, uint32_t newVal) |
void | DisassociationLog (std::string context, Mac48Address address) |
uint64_t | GetCount (const std::map< Mac48Address, uint64_t > &counter, Mac48Address addr) |
void | IncrementCounter (std::map< Mac48Address, uint64_t > &counter, Mac48Address addr, uint64_t increment=1) |
void | MacRxTrace (std::string context, Ptr< const Packet > p) |
void | MacTxTrace (std::string context, Ptr< const Packet > p) |
void | PhyRxDoneTrace (std::string context, Ptr< const Packet > p) |
void | PhyRxDropTrace (std::string context, Ptr< const Packet > p, WifiPhyRxfailureReason reason) |
void | PhyRxErrorTrace (std::string context, Ptr< const Packet > p, double snr) |
void | PhyRxOkTrace (std::string context, Ptr< const Packet > p, double snr, WifiMode mode, WifiPreamble preamble) |
void | PhyRxPayloadTrace (std::string context, WifiTxVector txVector, Time psduDuration) |
void | PhyRxTrace (std::string context, Ptr< const Packet > p, RxPowerWattPerChannelBand power) |
void | PhyTxDoneTrace (std::string context, Ptr< const Packet > p) |
void | PhyTxTrace (std::string context, Ptr< const Packet > p, double txPowerW) |
void | RestartCalc () |
void | SocketSendTrace (std::string context, Ptr< const Packet > p, const Address &addr) |
void | TracePacketReception (std::string context, Ptr< const Packet > p, uint16_t channelFreqMhz, WifiTxVector txVector, MpduInfo aMpdu, SignalNoiseDbm signalNoise, uint16_t staId) |
Variables | |
std::set< uint32_t > | associated |
Contains the IDs of the STAs that successfully associated to the access point (in infrastructure mode only) More... | |
std::ofstream | backoffTraceFile |
File that traces backoff over time. More... | |
std::map< std::string, std::map< unsigned int, double > > | bianchiResultsDifs |
std::map< std::string, std::map< unsigned int, double > > | bianchiResultsEifs |
std::map< Mac48Address, uint64_t > | bytesReceived |
Map that stores the total bytes received per STA (and addressed to that STA) More... | |
std::ofstream | cwTraceFile |
File that traces CW over time. More... | |
std::ofstream | macRxTraceFile |
File that traces MAC receptions over time. More... | |
std::ofstream | macTxTraceFile |
File that traces MAC transmissions over time. More... | |
uint8_t | maxMpdus = 0 |
The maximum number of MPDUs in A-MPDUs (0 to disable MPDU aggregation) More... | |
std::map< Mac48Address, uint64_t > | packetsReceived |
Map that stores the total packets received per STA (and addressed to that STA) More... | |
std::map< Mac48Address, uint64_t > | packetsTransmitted |
Map that stores the total packets transmitted per STA. More... | |
std::map< Mac48Address, uint64_t > | phyHeaderFailed |
Map that stores the total number of unsuccessfully received PHY headers per STA. More... | |
std::ofstream | phyTxTraceFile |
File that traces PHY transmissions over time. More... | |
uint32_t | pktSize = 1500 |
packet size used for the simulation (in bytes) More... | |
std::map< Mac48Address, uint64_t > | psduFailed |
Map that stores the total number of unsuccessfully received PSDUS (for which the PHY header was successfully received) per STA (including PSDUs not addressed to that STA) More... | |
std::map< Mac48Address, uint64_t > | psduSucceeded |
Map that stores the total number of successfully received PSDUs per STA (including PSDUs not addressed to that STA) More... | |
std::map< Mac48Address, uint64_t > | rxEventAbortedByTx |
Map that stores the number of reception events aborted per STA because the PHY has started to transmit. More... | |
std::map< Mac48Address, uint64_t > | rxEventWhileDecodingPreamble |
Map that stores the number of reception events per STA that occured while PHY was already decoding a preamble. More... | |
std::map< Mac48Address, uint64_t > | rxEventWhileRxing |
Map that stores the number of reception events per STA that occured while PHY was already receiving a PPDU. More... | |
std::map< Mac48Address, uint64_t > | rxEventWhileTxing |
Map that stores the number of reception events per STA that occured while PHY was already transmitting a PPDU. More... | |
std::ofstream | socketSendTraceFile |
File that traces packets transmitted by the application over time. More... | |
std::map< Mac48Address, Time > | timeFirstReceived |
Map that stores the time at which the first packet was received per STA (and the packet is addressed to that STA) More... | |
std::map< Mac48Address, Time > | timeFirstTransmitted |
Map that stores the time at which the first packet was transmitted per STA. More... | |
std::map< Mac48Address, Time > | timeLastReceived |
Map that stores the time at which the last packet was received per STA (and the packet is addressed to that STA) More... | |
std::map< Mac48Address, Time > | timeLastTransmitted |
Map that stores the time at which the last packet was transmitted per STA. More... | |
bool | tracing = false |
Flag to enable/disable generation of tracing files. More... | |
$ ./ns3 run "wifi-bianchi [Program Options]"
–verbose
–tracing
–pktSize
–trials
–duration
–pcap
–infra
–workDir
–phyMode
–standard
–nMinStas
–nMaxStas
–nStepSize
–plotBianchiModel
–validate
–maxRelativeError
–frequency
–channelWidth
–guardIntervalNs
–maxMpdus
–distance
–apTxPower
–staTxPower
–pktInterval
Definition in file wifi-bianchi.cc.
#define PI 3.1415926535 |
Definition at line 57 of file wifi-bianchi.cc.
void AssociationLog | ( | std::string | context, |
Mac48Address | address | ||
) |
Definition at line 805 of file wifi-bianchi.cc.
References associated, ContextToNodeId(), ns3::Simulator::Now(), NS_FATAL_ERROR, and NS_LOG_DEBUG.
Referenced by Experiment::Run().
void BackoffTrace | ( | std::string | context, |
uint32_t | newVal | ||
) |
Definition at line 613 of file wifi-bianchi.cc.
References backoffTraceFile, ContextToNodeId(), ns3::Time::GetSeconds(), ns3::Simulator::Now(), NS_LOG_INFO, and tracing.
Referenced by Experiment::Run().
Mac48Address ContextToMac | ( | std::string | context | ) |
Definition at line 527 of file wifi-bianchi.cc.
References ns3::Mac48Address::ConvertFrom(), ns3::WifiNetDevice::GetAddress(), ns3::Node::GetDevice(), ns3::Node::GetNDevices(), ns3::NodeList::GetNode(), and ns3::Object::GetObject().
Referenced by PhyRxDropTrace(), PhyRxErrorTrace(), PhyRxOkTrace(), PhyTxTrace(), and TracePacketReception().
uint32_t ContextToNodeId | ( | std::string | context | ) |
Definition at line 518 of file wifi-bianchi.cc.
Referenced by AssociationLog(), BackoffTrace(), CwTrace(), DisassociationLog(), MacRxTrace(), MacTxTrace(), PhyRxDoneTrace(), PhyRxDropTrace(), PhyRxErrorTrace(), PhyRxOkTrace(), PhyRxPayloadTrace(), PhyRxTrace(), PhyTxDoneTrace(), PhyTxTrace(), and SocketSendTrace().
void CwTrace | ( | std::string | context, |
uint32_t | oldVal, | ||
uint32_t | newVal | ||
) |
Definition at line 603 of file wifi-bianchi.cc.
References ContextToNodeId(), cwTraceFile, ns3::Time::GetSeconds(), ns3::Simulator::Now(), NS_LOG_INFO, and tracing.
Referenced by Experiment::Run().
void DisassociationLog | ( | std::string | context, |
Mac48Address | address | ||
) |
Definition at line 821 of file wifi-bianchi.cc.
References ContextToNodeId(), ns3::Simulator::Now(), NS_FATAL_ERROR, and NS_LOG_DEBUG.
Referenced by Experiment::Run().
uint64_t GetCount | ( | const std::map< Mac48Address, uint64_t > & | counter, |
Mac48Address | addr | ||
) |
Definition at line 1060 of file wifi-bianchi.cc.
void IncrementCounter | ( | std::map< Mac48Address, uint64_t > & | counter, |
Mac48Address | addr, | ||
uint64_t | increment = 1 |
||
) |
Definition at line 548 of file wifi-bianchi.cc.
Referenced by PhyRxDropTrace(), PhyRxErrorTrace(), PhyRxOkTrace(), PhyTxTrace(), and TracePacketReception().
Definition at line 787 of file wifi-bianchi.cc.
References ContextToNodeId(), ns3::Time::GetSeconds(), ns3::Packet::GetSize(), macRxTraceFile, ns3::Simulator::Now(), and tracing.
Referenced by Experiment::Run().
Definition at line 778 of file wifi-bianchi.cc.
References ContextToNodeId(), ns3::Time::GetSeconds(), ns3::Packet::GetSize(), macTxTraceFile, ns3::Simulator::Now(), and tracing.
Referenced by Experiment::Run().
Definition at line 714 of file wifi-bianchi.cc.
References ContextToNodeId(), ns3::Packet::GetSize(), ns3::Simulator::Now(), and NS_LOG_INFO.
Referenced by Experiment::Run().
void PhyRxDropTrace | ( | std::string | context, |
Ptr< const Packet > | p, | ||
WifiPhyRxfailureReason | reason | ||
) |
Definition at line 635 of file wifi-bianchi.cc.
References ns3::BUSY_DECODING_PREAMBLE, ns3::CHANNEL_SWITCHING, ContextToMac(), ContextToNodeId(), ns3::FRAME_CAPTURE_PACKET_SWITCH, ns3::Packet::GetSize(), ns3::HT_SIG_FAILURE, IncrementCounter(), ns3::L_SIG_FAILURE, ns3::Simulator::Now(), NS_FATAL_ERROR, NS_LOG_INFO, ns3::OBSS_PD_CCA_RESET, phyHeaderFailed, pktSize, ns3::PREAMBLE_DETECT_FAILURE, ns3::PREAMBLE_DETECTION_PACKET_SWITCH, ns3::RECEPTION_ABORTED_BY_TX, rxEventAbortedByTx, rxEventWhileDecodingPreamble, rxEventWhileRxing, rxEventWhileTxing, ns3::RXING, ns3::SIG_A_FAILURE, ns3::SIG_B_FAILURE, ns3::SLEEPING, ns3::TXING, ns3::UNKNOWN, and ns3::UNSUPPORTED_SETTINGS.
Referenced by Experiment::Run().
Definition at line 746 of file wifi-bianchi.cc.
References ContextToMac(), ContextToNodeId(), ns3::Packet::GetSize(), IncrementCounter(), ns3::Simulator::Now(), NS_LOG_INFO, pktSize, and psduFailed.
Referenced by Experiment::Run().
void PhyRxOkTrace | ( | std::string | context, |
Ptr< const Packet > | p, | ||
double | snr, | ||
WifiMode | mode, | ||
WifiPreamble | preamble | ||
) |
Definition at line 720 of file wifi-bianchi.cc.
References ContextToMac(), ContextToNodeId(), ns3::Packet::GetSize(), IncrementCounter(), maxMpdus, ns3::Simulator::Now(), NS_FATAL_ERROR, NS_LOG_INFO, NS_LOG_WARN, pktSize, psduSucceeded, and ns3::Time::S.
Referenced by Experiment::Run().
void PhyRxPayloadTrace | ( | std::string | context, |
WifiTxVector | txVector, | ||
Time | psduDuration | ||
) |
Definition at line 629 of file wifi-bianchi.cc.
References ContextToNodeId(), ns3::Simulator::Now(), and NS_LOG_INFO.
Referenced by Experiment::Run().
void PhyRxTrace | ( | std::string | context, |
Ptr< const Packet > | p, | ||
RxPowerWattPerChannelBand | power | ||
) |
Definition at line 623 of file wifi-bianchi.cc.
References ContextToNodeId(), ns3::Packet::GetSize(), ns3::Simulator::Now(), and NS_LOG_INFO.
Referenced by Experiment::Run().
Definition at line 772 of file wifi-bianchi.cc.
References ContextToNodeId(), ns3::Packet::GetSize(), ns3::Simulator::Now(), and NS_LOG_INFO.
Referenced by Experiment::Run().
Definition at line 757 of file wifi-bianchi.cc.
References ContextToMac(), ContextToNodeId(), ns3::Time::GetSeconds(), ns3::Packet::GetSize(), IncrementCounter(), ns3::Simulator::Now(), NS_LOG_INFO, packetsTransmitted, phyTxTraceFile, pktSize, and tracing.
Referenced by Experiment::Run().
void RestartCalc | ( | ) |
Definition at line 829 of file wifi-bianchi.cc.
References bytesReceived, packetsReceived, packetsTransmitted, phyHeaderFailed, psduFailed, psduSucceeded, rxEventAbortedByTx, rxEventWhileDecodingPreamble, rxEventWhileRxing, rxEventWhileTxing, timeFirstReceived, and timeLastReceived.
Referenced by Experiment::Run().
Definition at line 796 of file wifi-bianchi.cc.
References ContextToNodeId(), ns3::Time::GetSeconds(), ns3::Packet::GetSize(), ns3::Simulator::Now(), socketSendTraceFile, and tracing.
Referenced by Experiment::Run().
void TracePacketReception | ( | std::string | context, |
Ptr< const Packet > | p, | ||
uint16_t | channelFreqMhz, | ||
WifiTxVector | txVector, | ||
MpduInfo | aMpdu, | ||
SignalNoiseDbm | signalNoise, | ||
uint16_t | staId | ||
) |
Definition at line 562 of file wifi-bianchi.cc.
References bytesReceived, ContextToMac(), ns3::Packet::Copy(), ns3::Packet::CreateFragment(), ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetAddr2(), ns3::AmpduSubframeHeader::GetLength(), ns3::Packet::GetSize(), IncrementCounter(), ns3::WifiTxVector::IsAggregation(), ns3::Simulator::Now(), packetsReceived, ns3::Packet::PeekHeader(), pktSize, ns3::Packet::RemoveHeader(), timeFirstReceived, and timeLastReceived.
Referenced by Experiment::Run().
std::set<uint32_t> associated |
Contains the IDs of the STAs that successfully associated to the access point (in infrastructure mode only)
Definition at line 86 of file wifi-bianchi.cc.
Referenced by AssociationLog().
std::ofstream backoffTraceFile |
File that traces backoff over time.
Definition at line 64 of file wifi-bianchi.cc.
Referenced by BackoffTrace(), and Experiment::Run().
std::map<std::string , std::map<unsigned int , double > > bianchiResultsDifs |
Definition at line 304 of file wifi-bianchi.cc.
std::map<std::string , std::map<unsigned int , double > > bianchiResultsEifs |
Definition at line 92 of file wifi-bianchi.cc.
std::map<Mac48Address, uint64_t> bytesReceived |
Map that stores the total bytes received per STA (and addressed to that STA)
Definition at line 71 of file wifi-bianchi.cc.
Referenced by RestartCalc(), and TracePacketReception().
std::ofstream cwTraceFile |
File that traces CW over time.
Definition at line 63 of file wifi-bianchi.cc.
Referenced by CwTrace(), and Experiment::Run().
std::ofstream macRxTraceFile |
File that traces MAC receptions over time.
Definition at line 67 of file wifi-bianchi.cc.
Referenced by MacRxTrace(), and Experiment::Run().
std::ofstream macTxTraceFile |
File that traces MAC transmissions over time.
Definition at line 66 of file wifi-bianchi.cc.
Referenced by MacTxTrace(), and Experiment::Run().
uint8_t maxMpdus = 0 |
The maximum number of MPDUs in A-MPDUs (0 to disable MPDU aggregation)
Definition at line 90 of file wifi-bianchi.cc.
Referenced by PhyRxOkTrace(), and Experiment::Run().
std::map<Mac48Address, uint64_t> packetsReceived |
Map that stores the total packets received per STA (and addressed to that STA)
Definition at line 70 of file wifi-bianchi.cc.
Referenced by VanetRoutingExperiment::CheckThroughput(), RestartCalc(), and TracePacketReception().
std::map<Mac48Address, uint64_t> packetsTransmitted |
Map that stores the total packets transmitted per STA.
Definition at line 72 of file wifi-bianchi.cc.
Referenced by PhyTxTrace(), and RestartCalc().
std::map<Mac48Address, uint64_t> phyHeaderFailed |
Map that stores the total number of unsuccessfully received PHY headers per STA.
Definition at line 75 of file wifi-bianchi.cc.
Referenced by PhyRxDropTrace(), and RestartCalc().
std::ofstream phyTxTraceFile |
File that traces PHY transmissions over time.
Definition at line 65 of file wifi-bianchi.cc.
Referenced by PhyTxTrace(), and Experiment::Run().
uint32_t pktSize = 1500 |
packet size used for the simulation (in bytes)
Definition at line 89 of file wifi-bianchi.cc.
Referenced by ns3::TcpRxBuffer::Add(), CreateBulkFlow(), ns3::TcpTxBuffer::DiscardUpTo(), ns3::TbfQueueDisc::DoDequeue(), ns3::SubscriberStationNetDevice::DoReceive(), SpectrumIdealPhyTestCase::DoRun(), CobaltQueueDiscBasicEnqueueDequeue::DoRun(), CobaltQueueDiscMarkTest::DoRun(), CobaltQueueDiscCeThresholdTest::DoRun(), CobaltQueueDiscEnhancedBlueTest::DoRun(), CoDelQueueDiscBasicEnqueueDequeue::DoRun(), CoDelQueueDiscBasicOverflow::DoRun(), CoDelQueueDiscBasicDrop::DoRun(), CoDelQueueDiscBasicMark::DoRun(), FifoQueueDiscTestCase::DoRunFifoTest(), ns3::SixLowPanNetDevice::DoSend(), ns3::TcpRxBuffer::Extract(), ns3::TapBridge::Filter(), GenerateTraffic(), Experiment::GenerateTraffic(), ns3::BsmApplication::GenerateWaveTraffic(), TestInterBssConstantObssPdAlgo::NotifyPhyRxDrop(), TestInterBssConstantObssPdAlgo::NotifyPhyRxEnd(), TestInterBssConstantObssPdAlgo::NotifyPhyTxBegin(), PhyRxDropTrace(), PhyRxErrorTrace(), PhyRxOkTrace(), PhyTxTrace(), WifiPhyStats::PhyTxTrace(), Experiment::Run(), AredQueueDiscTestCase::RunAredDiscTest(), CobaltQueueDiscDropTest::RunDropTest(), FifoQueueDiscTestCase::RunFifoTest(), PieQueueDiscTestCase::RunPieTest(), RedQueueDiscTestCase::RunRedTest(), TbfQueueDiscTestCase::RunTbfTest(), SendPacket(), ns3::TcpGeneralTest::SendPacket(), ns3::Ipv4RawSocketImpl::SendTo(), ns3::Ipv6RawSocketImpl::SendTo(), ns3::PacketSocket::SendTo(), ns3::TcpGeneralTest::SetAppPktSize(), TracePacketReception(), and ns3::TcpTxBuffer::Update().
std::map<Mac48Address, uint64_t> psduFailed |
Map that stores the total number of unsuccessfully received PSDUS (for which the PHY header was successfully received) per STA (including PSDUs not addressed to that STA)
Definition at line 73 of file wifi-bianchi.cc.
Referenced by PhyRxErrorTrace(), and RestartCalc().
std::map<Mac48Address, uint64_t> psduSucceeded |
Map that stores the total number of successfully received PSDUs per STA (including PSDUs not addressed to that STA)
Definition at line 74 of file wifi-bianchi.cc.
Referenced by PhyRxOkTrace(), and RestartCalc().
std::map<Mac48Address, uint64_t> rxEventAbortedByTx |
Map that stores the number of reception events aborted per STA because the PHY has started to transmit.
Definition at line 79 of file wifi-bianchi.cc.
Referenced by PhyRxDropTrace(), and RestartCalc().
std::map<Mac48Address, uint64_t> rxEventWhileDecodingPreamble |
Map that stores the number of reception events per STA that occured while PHY was already decoding a preamble.
Definition at line 78 of file wifi-bianchi.cc.
Referenced by PhyRxDropTrace(), and RestartCalc().
std::map<Mac48Address, uint64_t> rxEventWhileRxing |
Map that stores the number of reception events per STA that occured while PHY was already receiving a PPDU.
Definition at line 77 of file wifi-bianchi.cc.
Referenced by PhyRxDropTrace(), and RestartCalc().
std::map<Mac48Address, uint64_t> rxEventWhileTxing |
Map that stores the number of reception events per STA that occured while PHY was already transmitting a PPDU.
Definition at line 76 of file wifi-bianchi.cc.
Referenced by PhyRxDropTrace(), and RestartCalc().
std::ofstream socketSendTraceFile |
File that traces packets transmitted by the application over time.
Definition at line 68 of file wifi-bianchi.cc.
Referenced by Experiment::Run(), and SocketSendTrace().
std::map<Mac48Address, Time> timeFirstReceived |
Map that stores the time at which the first packet was received per STA (and the packet is addressed to that STA)
Definition at line 81 of file wifi-bianchi.cc.
Referenced by RestartCalc(), and TracePacketReception().
std::map<Mac48Address, Time> timeFirstTransmitted |
Map that stores the time at which the first packet was transmitted per STA.
Definition at line 83 of file wifi-bianchi.cc.
std::map<Mac48Address, Time> timeLastReceived |
Map that stores the time at which the last packet was received per STA (and the packet is addressed to that STA)
Definition at line 82 of file wifi-bianchi.cc.
Referenced by RestartCalc(), and TracePacketReception().
std::map<Mac48Address, Time> timeLastTransmitted |
Map that stores the time at which the last packet was transmitted per STA.
Definition at line 84 of file wifi-bianchi.cc.
bool tracing = false |
Flag to enable/disable generation of tracing files.
Definition at line 88 of file wifi-bianchi.cc.
Referenced by BackoffTrace(), CwTrace(), MacRxTrace(), MacTxTrace(), PhyTxTrace(), Experiment::Run(), and SocketSendTrace().