wifi: Add user documentation for EMLSR
This commit is contained in:
committed by
Stefano Avallone
parent
2bfc81db90
commit
831281e54f
@@ -1139,7 +1139,11 @@ attribute of the EMLSR Manager base class (after multi-link setup, EMLSR mode is
|
||||
default). Setting the ``EmlsrLinkSet`` attribute triggers the transmission of an EML Operating
|
||||
Mode Notification frame to the AP to communicate the new set of EMLSR links, if ML setup has been
|
||||
completed. Otherwise, the set of EMLSR links is stored and the EML Operating Mode Notification
|
||||
frame is sent as soon as the ML setup is completed. The selection of the link used by the non-AP
|
||||
frame is sent as soon as the ML setup is completed. Therefore, users can choose to enable EMLSR
|
||||
mode on some links upon the completion of ML setup by setting the ``EmlsrLinkSet`` attribute at
|
||||
(or before) initialization time; alternatively, they can leave the ``EmlsrLinkSet`` attribute
|
||||
empty at initialization time and set it at runtime to enable EMLSR mode on some links at a
|
||||
specific simulation time (after ML setup). The selection of the link used by the non-AP
|
||||
MLD to transmit the EML Operating Mode Notification frame is done by the EMLSR Manager subclass.
|
||||
The default EMLSR Manager subclass, ``DefaultEmlsrManager``, selects the link on which the main
|
||||
PHY is operating. When the non-AP MLD receives the acknowledgment for the EML Operating Mode
|
||||
|
||||
@@ -1082,3 +1082,71 @@ Multiple RF interfaces configuration
|
||||
mobility.Install(c);
|
||||
|
||||
// other set up (e.g. InternetStack, Application)
|
||||
|
||||
EMLSR configuration
|
||||
+++++++++++++++++++
|
||||
|
||||
Proper EMLSR operations require the configuration of multiple RF interfaces, as illustrated above.
|
||||
Therefore, in order to configure EMLSR operations, we can start from the configuration shown above
|
||||
and apply the changes described in the following. Firstly, we need to activate EMLSR on both the
|
||||
AP MLD and the EMLSR client. This can be done by configuring the appropriate ``EhtConfiguration``
|
||||
attribute through the wifi helper:
|
||||
|
||||
.. sourcecode:: cpp
|
||||
|
||||
WifiHelper wifi;
|
||||
wifi.SetStandard(WIFI_STANDARD_80211be);
|
||||
wifi.ConfigEhtOptions("EmlsrActivated", BooleanValue(true));
|
||||
|
||||
The ``EhtConfiguration`` class also provides attributes for the various EMLSR parameters that an
|
||||
AP MLD that supports EMLSR has to advertise. Given that these attributes are simply ignored by
|
||||
non-AP MLDs, we can use the same wifi helper to configure such parameters:
|
||||
|
||||
.. sourcecode:: cpp
|
||||
|
||||
WifiHelper wifi;
|
||||
wifi.SetStandard(WIFI_STANDARD_80211be);
|
||||
wifi.ConfigEhtOptions("EmlsrActivated", BooleanValue(true));
|
||||
wifi.ConfigEhtOptions("TransitionTimeout", TimeValue(MicroSeconds(1024)));
|
||||
wifi.ConfigEhtOptions("MediumSyncDuration", TimeValue(MicroSeconds(3200)));
|
||||
wifi.ConfigEhtOptions("MsdOfdmEdThreshold", IntegerValue(-72);
|
||||
wifi.ConfigEhtOptions("MsdMaxNTxops", UintegerValue(0)); // unlimited attempts
|
||||
|
||||
EMLSR parameters that are client specific can be configured through the attributes of the EMLSR
|
||||
Manager class and subclass. The ``WifiMacHelper`` class provides the ``SetEmlsrManager``
|
||||
method to conveniently set the type of EMLSR Manager and its attributes:
|
||||
|
||||
.. sourcecode:: cpp
|
||||
|
||||
// setup STA.
|
||||
wifiMac.SetType("ns3::StaWifiMac",
|
||||
"Ssid", SsidValue(ssid),
|
||||
"ActiveProbing", BooleanValue(false));
|
||||
wifiMac.SetEmlsrManager("ns3::DefaultEmlsrManager",
|
||||
"EmlsrLinkSet",
|
||||
StringValue("0,1,2"), // enable EMLSR on all EMLSR links
|
||||
"MainPhyId",
|
||||
UintegerValue(1),
|
||||
"EmlsrPaddingDelay",
|
||||
TimeValue(MicroSeconds(32)),
|
||||
"EmlsrTransitionDelay",
|
||||
TimeValue(MicroSeconds(128)),
|
||||
"SwitchAuxPhy",
|
||||
BooleanValue(false),
|
||||
"AuxPhyChannelWidth",
|
||||
UintegerValue(40));
|
||||
NetDeviceContainer staDevice = wifi.Install(wifiPhy, wifiMac, sta);
|
||||
devices.Add(staDevice);
|
||||
|
||||
Note that the channel switch delay should be less than the transition delay:
|
||||
|
||||
.. sourcecode:: cpp
|
||||
|
||||
// SpectrumWifiPhyHelper (3 links)
|
||||
SpectrumWifiPhyHelper phy(3);
|
||||
phy.SetPcapDataLinkType(WifiPhyHelper::DLT_IEEE802_11_RADIO);
|
||||
phy.AddChannel(spectrumChannel2_4Ghz, WIFI_SPECTRUM_2_4_GHZ);
|
||||
phy.AddChannel(spectrumChannel5Ghz, WIFI_SPECTRUM_5_GHZ);
|
||||
phy.AddChannel(spectrumChannel6Ghz, WIFI_SPECTRUM_6_GHZ);
|
||||
phy.Set("ChannelSwitchDelay", TimeValue(MicroSeconds(100)));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user