A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
amrr-wifi-manager.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2003,2007 INRIA
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
7 */
8
9#ifndef AMRR_WIFI_MANAGER_H
10#define AMRR_WIFI_MANAGER_H
11
12#include "ns3/traced-value.h"
13#include "ns3/wifi-remote-station-manager.h"
14
15namespace ns3
16{
17
18struct AmrrWifiRemoteStation;
19
20/**
21 * @brief AMRR Rate control algorithm
22 * @ingroup wifi
23 *
24 * This class implements the AMRR rate control algorithm which
25 * was initially described in <i>IEEE 802.11 Rate Adaptation:
26 * A Practical Approach</i>, by M. Lacage, M.H. Manshaei, and
27 * T. Turletti.
28 *
29 * This RAA does not support HT modes and will error
30 * exit if the user tries to configure this RAA with a Wi-Fi MAC
31 * that supports 802.11n or higher.
32 */
34{
35 public:
36 /**
37 * @brief Get the type ID.
38 * @return the object TypeId
39 */
40 static TypeId GetTypeId();
41
43 ~AmrrWifiManager() override;
44
45 private:
46 void DoInitialize() override;
47 WifiRemoteStation* DoCreateStation() const override;
48 void DoReportRxOk(WifiRemoteStation* station, double rxSnr, WifiMode txMode) override;
52 double ctsSnr,
54 double rtsSnr) override;
56 double ackSnr,
58 double dataSnr,
60 uint8_t dataNss) override;
65
66 /**
67 * Update the mode used to send to the given station.
68 *
69 * @param station the remote station state
70 */
72 /**
73 * Reset transmission statistics of the given station.
74 *
75 * @param station the remote station state
76 */
78 /**
79 * Increase the transmission rate to the given station.
80 *
81 * @param station the remote station state
82 */
84 /**
85 * Decrease the transmission rate to the given station.
86 *
87 * @param station the remote station state
88 */
90 /**
91 * Check if the current rate for the given station is the
92 * minimum rate.
93 *
94 * @param station the remote station state
95 *
96 * @return true if the current rate is the minimum rate,
97 * false otherwise
98 */
100 /**
101 * Check if the current rate for the given station is the
102 * maximum rate.
103 *
104 * @param station the remote station state
105 *
106 * @return true if the current rate is the maximum rate,
107 * false otherwise
108 */
110 /**
111 * Check if the number of retransmission and transmission error
112 * is less than the number of successful transmission (times ratio).
113 *
114 * @param station the remote station state
115 *
116 * @return true if the number of retransmission and transmission error
117 * is less than the number of successful transmission
118 * (times ratio), false otherwise
119 */
121 /**
122 * Check if the number of retransmission and transmission error
123 * is greater than the number of successful transmission (times ratio).
124 *
125 * @param station the remote station state
126 *
127 * @return true if the number of retransmission and transmission error
128 * is less than the number of successful transmission
129 * (times ratio), false otherwise
130 */
132 /**
133 * Check if the number of retransmission, transmission error,
134 * and successful transmission are greater than 10.
135 *
136 * @param station the remote station state
137 * @return true if the number of retransmission, transmission error,
138 * and successful transmission are greater than 10,
139 * false otherwise
140 */
142
143 Time m_updatePeriod; ///< update period
144 double m_failureRatio; ///< failure ratio
145 double m_successRatio; ///< success ratio
146 uint32_t m_maxSuccessThreshold; ///< maximum success threshold
147 uint32_t m_minSuccessThreshold; ///< minimum success threshold
148
149 TracedValue<uint64_t> m_currentRate; //!< Trace rate changes
150};
151
152} // namespace ns3
153
154#endif /* AMRR_WIFI_MANAGER_H */
AMRR Rate control algorithm.
double m_failureRatio
failure ratio
static TypeId GetTypeId()
Get the type ID.
void UpdateMode(AmrrWifiRemoteStation *station)
Update the mode used to send to the given station.
void DoReportFinalRtsFailed(WifiRemoteStation *station) override
This method is a pure virtual method that must be implemented by the sub-class.
uint32_t m_minSuccessThreshold
minimum success threshold
bool IsMaxRate(AmrrWifiRemoteStation *station) const
Check if the current rate for the given station is the maximum rate.
TracedValue< uint64_t > m_currentRate
Trace rate changes.
bool IsMinRate(AmrrWifiRemoteStation *station) const
Check if the current rate for the given station is the minimum rate.
void DoInitialize() override
Initialize() implementation.
void DoReportRtsOk(WifiRemoteStation *station, double ctsSnr, WifiMode ctsMode, double rtsSnr) override
This method is a pure virtual method that must be implemented by the sub-class.
void ResetCnt(AmrrWifiRemoteStation *station)
Reset transmission statistics of the given station.
uint32_t m_maxSuccessThreshold
maximum success threshold
bool IsEnough(AmrrWifiRemoteStation *station) const
Check if the number of retransmission, transmission error, and successful transmission are greater th...
void DoReportRtsFailed(WifiRemoteStation *station) override
This method is a pure virtual method that must be implemented by the sub-class.
void DoReportDataOk(WifiRemoteStation *station, double ackSnr, WifiMode ackMode, double dataSnr, MHz_u dataChannelWidth, uint8_t dataNss) override
This method is a pure virtual method that must be implemented by the sub-class.
void DecreaseRate(AmrrWifiRemoteStation *station)
Decrease the transmission rate to the given station.
void DoReportFinalDataFailed(WifiRemoteStation *station) override
This method is a pure virtual method that must be implemented by the sub-class.
bool IsSuccess(AmrrWifiRemoteStation *station) const
Check if the number of retransmission and transmission error is less than the number of successful tr...
WifiRemoteStation * DoCreateStation() const override
void DoReportRxOk(WifiRemoteStation *station, double rxSnr, WifiMode txMode) override
This method is a pure virtual method that must be implemented by the sub-class.
void DoReportDataFailed(WifiRemoteStation *station) override
This method is a pure virtual method that must be implemented by the sub-class.
Time m_updatePeriod
update period
WifiTxVector DoGetDataTxVector(WifiRemoteStation *station, MHz_u allowedWidth) override
void IncreaseRate(AmrrWifiRemoteStation *station)
Increase the transmission rate to the given station.
WifiTxVector DoGetRtsTxVector(WifiRemoteStation *station) override
bool IsFailure(AmrrWifiRemoteStation *station) const
Check if the number of retransmission and transmission error is greater than the number of successful...
double m_successRatio
success ratio
Simulation virtual time values and global simulation resolution.
Definition nstime.h:94
Trace classes with value semantics.
a unique identifier for an interface.
Definition type-id.h:49
represent a single transmission mode
Definition wifi-mode.h:40
hold a list of per-remote-station state.
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Definition ptr.h:436
Every class exported by the ns3 library is enclosed in the ns3 namespace.
hold per-remote-station state for AMRR Wifi manager.
hold per-remote-station state.