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 |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
Static Public Member Functions inherited from ns3::WifiRemoteStationManager | |
static TypeId | GetTypeId (void) |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId (void) |
Static Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
static void | Cleanup (void) |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId (void) |
Private Member Functions | |
void | ARts (RraaWifiRemoteStation *station) |
void | CheckTimeout (RraaWifiRemoteStation *station) |
virtual WifiRemoteStation * | DoCreateStation (void) const |
virtual WifiMode | DoGetDataMode (WifiRemoteStation *station, uint32_t size) |
virtual WifiMode | DoGetRtsMode (WifiRemoteStation *station) |
virtual bool | DoNeedRts (WifiRemoteStation *st, Ptr< const Packet > packet, bool normally) |
virtual void | DoReportDataFailed (WifiRemoteStation *station) |
virtual void | DoReportDataOk (WifiRemoteStation *station, double ackSnr, WifiMode ackMode, double dataSnr) |
virtual void | DoReportFinalDataFailed (WifiRemoteStation *station) |
virtual void | DoReportFinalRtsFailed (WifiRemoteStation *station) |
virtual void | DoReportRtsFailed (WifiRemoteStation *station) |
virtual void | DoReportRtsOk (WifiRemoteStation *station, double ctsSnr, WifiMode ctsMode, double rtsSnr) |
virtual void | DoReportRxOk (WifiRemoteStation *station, double rxSnr, WifiMode txMode) |
uint32_t | GetMaxRate (RraaWifiRemoteStation *station) |
uint32_t | GetMinRate (RraaWifiRemoteStation *station) |
struct ThresholdsItem | GetThresholds (WifiMode mode) const |
struct ThresholdsItem | GetThresholds (RraaWifiRemoteStation *station, uint32_t rate) const |
virtual bool | IsLowLatency (void) const |
void | ResetCountersBasic (RraaWifiRemoteStation *station) |
void | RunBasicAlgorithm (RraaWifiRemoteStation *station) |
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 | |
Public Member Functions inherited from ns3::WifiRemoteStationManager | |
void | AddBasicMode (WifiMode mode) |
void | AddSupportedMode (Mac48Address address, WifiMode mode) |
WifiMode | GetAckMode (Mac48Address address, WifiMode dataMode) |
WifiMode | GetBasicMode (uint32_t i) const |
WifiMode | GetCtsMode (Mac48Address address, WifiMode rtsMode) |
WifiMode | GetDataMode (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fullPacketSize) |
WifiMode | GetDefaultMode (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) |
WifiRemoteStationInfo | GetInfo (Mac48Address address) |
uint32_t | GetMaxSlrc (void) const |
uint32_t | GetMaxSsrc (void) const |
uint32_t | GetNBasicModes (void) const |
WifiMode | GetNonUnicastMode (void) const |
uint32_t | GetRtsCtsThreshold (void) const |
WifiMode | GetRtsMode (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet) |
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 | 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 | SetFragmentationThreshold (uint32_t threshold) |
void | SetMaxSlrc (uint32_t maxSlrc) |
void | SetMaxSsrc (uint32_t maxSsrc) |
void | SetRtsCtsThreshold (uint32_t threshold) |
virtual void | SetupPhy (Ptr< WifiPhy > phy) |
Public Member Functions inherited from ns3::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) |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount (const SimpleRefCount &o) | |
uint32_t | GetReferenceCount (void) const |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
void | Ref (void) const |
void | Unref (void) const |
Public Member Functions inherited from ns3::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) |
Protected Member Functions inherited from ns3::WifiRemoteStationManager | |
virtual void | DoDispose (void) |
uint32_t | GetNSupported (const WifiRemoteStation *station) const |
WifiMode | GetSupported (const WifiRemoteStation *station, uint32_t i) const |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
virtual void | DoInitialize (void) |
virtual void | NotifyNewAggregate (void) |
Protected Member Functions inherited from ns3::ObjectBase | |
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.
|
privatevirtual |
Implements ns3::WifiRemoteStationManager.
Definition at line 189 of file rraa-wifi-manager.cc.
|
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 271 of file rraa-wifi-manager.cc.
|
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 282 of file rraa-wifi-manager.cc.
|
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 288 of file rraa-wifi-manager.cc.
|
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 457 of file rraa-wifi-manager.cc.