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...
Public Member Functions |
| IdealWifiManager () |
virtual | ~IdealWifiManager () |
virtual void | SetupPhy (Ptr< WifiPhy > phy) |
| WifiRemoteStationManager () |
virtual | ~WifiRemoteStationManager () |
void | AddBasicMcs (uint8_t mcs) |
void | AddBasicMode (WifiMode mode) |
void | AddStationHtCapabilities (Mac48Address from, HtCapabilities htcapabilities) |
void | AddSupportedMcs (Mac48Address address, uint8_t mcs) |
void | AddSupportedMode (Mac48Address address, WifiMode mode) |
WifiTxVector | DoGetCtsToSelfTxVector (void) |
WifiTxVector | GetAckTxVector (Mac48Address address, WifiMode dataMode) |
uint8_t | GetBasicMcs (uint32_t i) const |
WifiMode | GetBasicMode (uint32_t i) const |
WifiTxVector | GetBlockAckTxVector (Mac48Address address, WifiMode dataMode) |
WifiTxVector | GetCtsToSelfTxVector (const WifiMacHeader *header, Ptr< const Packet > packet) |
WifiTxVector | GetCtsTxVector (Mac48Address address, WifiMode rtsMode) |
WifiTxVector | GetDataTxVector (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fullPacketSize) |
uint8_t | GetDefaultMcs (void) const |
WifiMode | GetDefaultMode (void) const |
uint8_t | GetDefaultTxPowerLevel (void) const |
uint32_t | GetFragmentationThreshold (void) const |
uint32_t | GetFragmentOffset (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fragmentNumber) |
uint32_t | GetFragmentSize (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fragmentNumber) |
bool | GetGreenfieldSupported (Mac48Address address) const |
WifiRemoteStationInfo | GetInfo (Mac48Address address) |
uint32_t | GetMaxSlrc (void) const |
uint32_t | GetMaxSsrc (void) const |
uint32_t | GetNBasicMcs (void) const |
uint32_t | GetNBasicModes (void) const |
WifiMode | GetNonUnicastMode (void) const |
uint32_t | GetNumberOfTransmitAntennas (void) |
uint32_t | GetRtsCtsThreshold (void) const |
WifiTxVector | GetRtsTxVector (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet) |
bool | HasHtSupported (void) const |
bool | IsAssociated (Mac48Address address) const |
bool | IsBrandNew (Mac48Address address) const |
bool | IsLastFragment (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fragmentNumber) |
bool | IsWaitAssocTxOk (Mac48Address address) const |
bool | NeedCtsToSelf (WifiTxVector txVector) |
bool | NeedDataRetransmission (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet) |
bool | NeedFragmentation (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet) |
bool | NeedRts (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet) |
bool | NeedRtsRetransmission (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet) |
void | PrepareForQueue (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fullPacketSize) |
void | RecordDisassociated (Mac48Address address) |
void | RecordGotAssocTxFailed (Mac48Address address) |
void | RecordGotAssocTxOk (Mac48Address address) |
void | RecordWaitAssocTxOk (Mac48Address address) |
void | ReportDataFailed (Mac48Address address, const WifiMacHeader *header) |
void | ReportDataOk (Mac48Address address, const WifiMacHeader *header, double ackSnr, WifiMode ackMode, double dataSnr) |
void | ReportFinalDataFailed (Mac48Address address, const WifiMacHeader *header) |
void | ReportFinalRtsFailed (Mac48Address address, const WifiMacHeader *header) |
void | ReportRtsFailed (Mac48Address address, const WifiMacHeader *header) |
void | ReportRtsOk (Mac48Address address, const WifiMacHeader *header, double ctsSnr, WifiMode ctsMode, double rtsSnr) |
void | ReportRxOk (Mac48Address address, const WifiMacHeader *header, double rxSnr, WifiMode txMode) |
void | Reset (void) |
void | Reset (Mac48Address address) |
void | SetDefaultTxPowerLevel (uint8_t txPower) |
void | SetFragmentationThreshold (uint32_t threshold) |
void | SetHtSupported (bool enable) |
void | SetMaxSlrc (uint32_t maxSlrc) |
void | SetMaxSsrc (uint32_t maxSsrc) |
void | SetRtsCtsThreshold (uint32_t threshold) |
| Object () |
virtual | ~Object () |
void | AggregateObject (Ptr< Object > other) |
void | Dispose (void) |
AggregateIterator | GetAggregateIterator (void) const |
virtual TypeId | GetInstanceTypeId (void) const |
template<typename T > |
Ptr< T > | GetObject (void) const |
template<typename T > |
Ptr< T > | GetObject (TypeId tid) const |
void | Initialize (void) |
| SimpleRefCount () |
| SimpleRefCount (const SimpleRefCount &o) |
uint32_t | GetReferenceCount (void) const |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
void | Ref (void) const |
void | Unref (void) const |
virtual | ~ObjectBase () |
void | GetAttribute (std::string name, AttributeValue &value) const |
bool | GetAttributeFailSafe (std::string name, AttributeValue &attribute) const |
void | SetAttribute (std::string name, const AttributeValue &value) |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Ideal rate control algorithm
This 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.
ns3::IdealWifiManager is accessible through the following paths with Config::Set and Config::Connect:
-
/NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/RemoteStationManager/$ns3::IdealWifiManager
Attributes
-
BerThreshold: The maximum Bit Error Rate acceptable at any transmission mode
-
Set with class: ns3::DoubleValue
-
Underlying type: double -1.79769e+308:1.79769e+308
-
Initial value: 1e-05
-
Flags: construct write read
-
IsLowLatency: If true, we attempt to modelize a so-called low-latency device: a device where decisions about tx parameters can be made on a per-packet basis and feedback about the transmission of each packet is obtained before sending the next. Otherwise, we modelize a high-latency device, that is a device where we cannot update our decision about tx parameters after every packet transmission.
-
MaxSsrc: The maximum number of retransmission attempts for an RTS. This value will not have any effect on some rate control algorithms.
-
MaxSlrc: The maximum number of retransmission attempts for a DATA packet. This value will not have any effect on some rate control algorithms.
-
RtsCtsThreshold: If the size of the data packet + LLC header + MAC header + FCS trailer is bigger than this value, we use an RTS/CTS handshake before sending the data, as per IEEE Std. 802.11-2007, Section 9.2.6. This value will not have any effect on some rate control algorithms.
-
FragmentationThreshold: If the size of the data packet + LLC header + MAC header + FCS trailer is biggerthan this value, we fragment it such that the size of the fragments are equal or smaller than this value, as per IEEE Std. 802.11-2007, Section 9.4. This value will not have any effect on some rate control algorithms.
-
NonUnicastMode: Wifi mode used for non-unicast transmissions.
-
Set with class: WifiModeValue
-
Underlying type: WifiMode
-
Initial value: Invalid-WifiMode
-
Flags: construct write read
-
DefaultTxPowerLevel: Default power level to be used for transmissions. This is the power level that is used by all those WifiManagers that do notimplement TX power control.
No TraceSources are defined for this type.
-
MacTxRtsFailed: The transmission of a RTS by the MAC layer has failed
-
MacTxDataFailed: The transmission of a data packet by the MAC layer has failed
-
MacTxFinalRtsFailed: The transmission of a RTS has exceeded the maximum number of attempts
-
MacTxFinalDataFailed: The transmission of a data packet has exceeded the maximum number of attempts
Definition at line 45 of file ideal-wifi-manager.h.