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...
#include <rraa-wifi-manager.h>
Classes | |
struct | ThresholdsItem |
Public Member Functions | |
RraaWifiManager () | |
virtual | ~RraaWifiManager () |
![]() | |
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) |
virtual void | SetupPhy (Ptr< WifiPhy > phy) |
![]() | |
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) |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
![]() | |
static void | Cleanup (void) |
![]() | |
static TypeId | GetTypeId (void) |
Private Attributes | |
bool | m_basic |
uint32_t | m_ewndfor12 |
uint32_t | m_ewndfor18 |
uint32_t | m_ewndfor24 |
uint32_t | m_ewndfor36 |
uint32_t | m_ewndfor48 |
uint32_t | m_ewndfor54 |
uint32_t | m_ewndfor6 |
uint32_t | m_ewndfor9 |
double | m_pmtlfor12 |
double | m_pmtlfor18 |
double | m_pmtlfor24 |
double | m_pmtlfor36 |
double | m_pmtlfor48 |
double | m_pmtlfor54 |
double | m_pmtlfor9 |
double | m_porifor12 |
double | m_porifor18 |
double | m_porifor24 |
double | m_porifor36 |
double | m_porifor48 |
double | m_porifor6 |
double | m_porifor9 |
Time | m_timeout |
Additional Inherited Members | |
![]() | |
virtual void | DoDispose (void) |
bool | GetGreenfield (const WifiRemoteStation *station) const |
uint32_t | GetLongRetryCount (const WifiRemoteStation *station) const |
uint8_t | GetMcsSupported (const WifiRemoteStation *station, uint32_t i) const |
uint32_t | GetNMcsSupported (const WifiRemoteStation *station) const |
uint32_t | GetNSupported (const WifiRemoteStation *station) const |
uint32_t | GetNumberOfReceiveAntennas (const WifiRemoteStation *station) const |
uint32_t | GetNumberOfTransmitAntennas (const WifiRemoteStation *station) const |
bool | GetShortGuardInterval (const WifiRemoteStation *station) const |
uint32_t | GetShortRetryCount (const WifiRemoteStation *station) const |
bool | GetStbc (const WifiRemoteStation *station) const |
WifiMode | GetSupported (const WifiRemoteStation *station, uint32_t i) const |
![]() | |
Object (const Object &o) | |
virtual void | DoInitialize (void) |
virtual void | NotifyNewAggregate (void) |
![]() | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
virtual void | NotifyConstructionCompleted (void) |
Robust Rate Adaptation Algorithm
This 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.
ns3::RraaWifiManager is accessible through the following paths with Config::Set and Config::Connect:
No TraceSources are defined for this type.
Definition at line 39 of file rraa-wifi-manager.h.
ns3::RraaWifiManager::RraaWifiManager | ( | ) |
Definition at line 182 of file rraa-wifi-manager.cc.
|
virtual |
Definition at line 185 of file rraa-wifi-manager.cc.
|
private |
Definition at line 335 of file rraa-wifi-manager.cc.
References ns3::RraaWifiRemoteStation::m_lastFrameFail, ns3::RraaWifiRemoteStation::m_rtsCounter, ns3::RraaWifiRemoteStation::m_rtsOn, and ns3::RraaWifiRemoteStation::m_rtsWnd.
Referenced by DoNeedRts().
|
private |
Definition at line 303 of file rraa-wifi-manager.cc.
References ns3::RraaWifiRemoteStation::m_counter, ns3::RraaWifiRemoteStation::m_lastReset, m_timeout, ns3::Simulator::Now(), and ResetCountersBasic().
Referenced by DoReportDataFailed(), and DoReportDataOk().
|
privatevirtual |
Implements ns3::WifiRemoteStationManager.
Definition at line 191 of file rraa-wifi-manager.cc.
References ns3::RraaWifiRemoteStation::m_initialized, ns3::RraaWifiRemoteStation::m_lastFrameFail, ns3::RraaWifiRemoteStation::m_rtsCounter, ns3::RraaWifiRemoteStation::m_rtsOn, and ns3::RraaWifiRemoteStation::m_rtsWnd.
|
privatevirtual |
station | the station with which we need to communicate |
size | size of the packet or fragment we want to send |
Note: This method is called before sending a unicast packet or a fragment of a unicast packet to decide which transmission mode to use.
Implements ns3::WifiRemoteStationManager.
Definition at line 273 of file rraa-wifi-manager.cc.
References ns3::WifiRemoteStationManager::GetDefaultTxPowerLevel(), ns3::WifiRemoteStationManager::GetLongRetryCount(), ns3::WifiRemoteStationManager::GetNumberOfReceiveAntennas(), ns3::WifiRemoteStationManager::GetNumberOfTransmitAntennas(), ns3::WifiRemoteStationManager::GetShortGuardInterval(), ns3::WifiRemoteStationManager::GetStbc(), ns3::WifiRemoteStationManager::GetSupported(), ns3::RraaWifiRemoteStation::m_initialized, ns3::RraaWifiRemoteStation::m_rate, ns3::Min(), and ResetCountersBasic().
|
privatevirtual |
station | the station with which we need to communicate |
Note: This method is called before sending an rts to a station to decide which transmission mode to use for the rts.
Implements ns3::WifiRemoteStationManager.
Definition at line 284 of file rraa-wifi-manager.cc.
References ns3::WifiRemoteStationManager::GetDefaultTxPowerLevel(), ns3::WifiRemoteStationManager::GetNumberOfReceiveAntennas(), ns3::WifiRemoteStationManager::GetNumberOfTransmitAntennas(), ns3::WifiRemoteStationManager::GetShortGuardInterval(), ns3::WifiRemoteStationManager::GetShortRetryCount(), ns3::WifiRemoteStationManager::GetStbc(), ns3::WifiRemoteStationManager::GetSupported(), and ns3::Min().
|
privatevirtual |
station | the station with which we need to communicate |
packet | the packet to send |
normally | indicates whether the normal 802.11 rts enable mechanism would request that the rts is sent or not. |
Note: This method is called before a unicast packet is sent on the medium.
Reimplemented from ns3::WifiRemoteStationManager.
Definition at line 290 of file rraa-wifi-manager.cc.
References ARts(), m_basic, and ns3::RraaWifiRemoteStation::m_rtsOn.
|
privatevirtual |
Implements ns3::WifiRemoteStationManager.
Definition at line 233 of file rraa-wifi-manager.cc.
References CheckTimeout(), ns3::RraaWifiRemoteStation::m_counter, ns3::RraaWifiRemoteStation::m_failed, ns3::RraaWifiRemoteStation::m_lastFrameFail, and RunBasicAlgorithm().
|
privatevirtual |
Implements ns3::WifiRemoteStationManager.
Definition at line 254 of file rraa-wifi-manager.cc.
References CheckTimeout(), ns3::RraaWifiRemoteStation::m_counter, ns3::RraaWifiRemoteStation::m_lastFrameFail, and RunBasicAlgorithm().
|
privatevirtual |
Implements ns3::WifiRemoteStationManager.
Definition at line 268 of file rraa-wifi-manager.cc.
|
privatevirtual |
Implements ns3::WifiRemoteStationManager.
Definition at line 264 of file rraa-wifi-manager.cc.
|
privatevirtual |
Implements ns3::WifiRemoteStationManager.
Definition at line 228 of file rraa-wifi-manager.cc.
|
privatevirtual |
Implements ns3::WifiRemoteStationManager.
Definition at line 248 of file rraa-wifi-manager.cc.
References NS_LOG_DEBUG.
|
privatevirtual |
Implements ns3::WifiRemoteStationManager.
Definition at line 243 of file rraa-wifi-manager.cc.
|
private |
Definition at line 216 of file rraa-wifi-manager.cc.
References ns3::WifiRemoteStationManager::GetNSupported().
Referenced by ResetCountersBasic(), and RunBasicAlgorithm().
|
private |
Definition at line 221 of file rraa-wifi-manager.cc.
Referenced by RunBasicAlgorithm().
|
private |
Definition at line 369 of file rraa-wifi-manager.cc.
References m_ewndfor12, m_ewndfor18, m_ewndfor24, m_ewndfor36, m_ewndfor48, m_ewndfor54, m_ewndfor6, m_ewndfor9, m_pmtlfor12, m_pmtlfor18, m_pmtlfor24, m_pmtlfor36, m_pmtlfor48, m_pmtlfor54, m_pmtlfor9, m_porifor12, m_porifor18, m_porifor24, m_porifor36, m_porifor48, m_porifor6, m_porifor9, and NS_ASSERT_MSG.
Referenced by GetThresholds(), ResetCountersBasic(), and RunBasicAlgorithm().
|
private |
Definition at line 361 of file rraa-wifi-manager.cc.
References ns3::WifiRemoteStationManager::GetSupported(), and GetThresholds().
|
static |
Definition at line 52 of file rraa-wifi-manager.cc.
References m_basic, m_ewndfor12, m_ewndfor18, m_ewndfor24, m_ewndfor36, m_ewndfor48, m_ewndfor54, m_ewndfor6, m_ewndfor9, m_pmtlfor12, m_pmtlfor18, m_pmtlfor24, m_pmtlfor36, m_pmtlfor48, m_pmtlfor54, m_pmtlfor9, m_porifor12, m_porifor18, m_porifor24, m_porifor36, m_porifor48, m_porifor6, m_porifor9, m_timeout, ns3::MakeTimeChecker(), and ns3::TypeId::SetParent().
|
privatevirtual |
Note: In this context, low vs high latency is defined in IEEE 802.11 Rate Adaptation: A Practical Approach, by M. Lacage, M.H. Manshaei, and T. Turletti.
Implements ns3::WifiRemoteStationManager.
Definition at line 459 of file rraa-wifi-manager.cc.
|
private |
Definition at line 203 of file rraa-wifi-manager.cc.
References ns3::RraaWifiManager::ThresholdsItem::ewnd, GetMaxRate(), GetThresholds(), ns3::RraaWifiRemoteStation::m_counter, ns3::RraaWifiRemoteStation::m_failed, ns3::RraaWifiRemoteStation::m_initialized, ns3::RraaWifiRemoteStation::m_lastReset, ns3::RraaWifiRemoteStation::m_rate, and ns3::Simulator::Now().
Referenced by CheckTimeout(), DoGetDataTxVector(), and RunBasicAlgorithm().
|
private |
Definition at line 313 of file rraa-wifi-manager.cc.
References ns3::RraaWifiManager::ThresholdsItem::ewnd, GetMaxRate(), GetMinRate(), GetThresholds(), ns3::RraaWifiRemoteStation::m_counter, ns3::RraaWifiRemoteStation::m_failed, ns3::RraaWifiRemoteStation::m_rate, ns3::RraaWifiManager::ThresholdsItem::pmtl, ns3::RraaWifiManager::ThresholdsItem::pori, and ResetCountersBasic().
Referenced by DoReportDataFailed(), and DoReportDataOk().
|
private |
Definition at line 83 of file rraa-wifi-manager.h.
Referenced by DoNeedRts(), and GetTypeId().
|
private |
Definition at line 90 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 89 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 88 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 87 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 86 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 85 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 92 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 91 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 105 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 104 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 103 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 102 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 101 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 100 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 106 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 97 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 96 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 95 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 94 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 93 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 99 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 98 of file rraa-wifi-manager.h.
Referenced by GetThresholds(), and GetTypeId().
|
private |
Definition at line 84 of file rraa-wifi-manager.h.
Referenced by CheckTimeout(), and GetTypeId().