Optimisation with Air Time Fairness

I was recently testing an RF optimisation feature called Air Time Fairness (ATF). An ATF-enabled access point can control the medium access based on the airtime utilization. The purpose of ATF is to improve the client performance by enforcing an airtime limit per WLAN and/or per client.

Air Time Fairness is a feature that is provided by many wireless network manufacturers (Meru Networks historically, Aruba, Aerohive, Extreme, Meraki and many others) with some implementation differences. Many consumer-grade access points are also providing a similar feature.

It is also a component of the Cisco High Density Experience (HDX) features. It is designed for use in a variety of environments, including stadiums, public hotspots, education and enterprise, where there are a large number of clients with mixed connection speeds.

Cisco has introduced ATF into 2 phases. At first it was introduced in AireOS version 8.1. This ATF Phase 1 can create ATF policies to allocate a percentage of airtime to each WLAN on a group of AP radios. The WLC will enforce the traffic policies to ensure that the air utilisation of all the clients of the WLAN matches the allocated airtime.

In a second phase (AireOS 8.2), the ATF Client Fair Sharing (CFS) feature was added to improve the client experience on each WLAN. The idea behind CFS is to allocate an equal airtime to each client in the downstream traffic, from the access point to the client. From the version 8.4, ATF is also supported for Mesh APs.

ATF Monitor mode

The first step towards implementing the ATF feature on the network would be to enable Monitor mode. With no control on the traffic, the Monitor mode will provide useful real-time statistics about the airtime utilisation on the APs and on the WLANs. Later, the ATF policies can be designed based on the measurements that were collected in the Monitor mode.

By default, ATF is disabled globally on the controller. The ATF Monitor mode can be enabled or disabled:

  • Per radio

  • Per AP

  • Per AP Group

  • Globally for all APs

The ATF Monitor mode will provide statistics of the Airtime Utilisation at different levels:

  • Per WLAN

  • Per radio

  • Per AP

Note that before configuring ATF, disable all the WLANs at first. You can enable the WLANs after all the changes are done.

To enable ATF Monitor mode for all the APs that are associated to the controller:

(WLC) >config atf 802.11a mode monitor

(WLC) >config atf 802.11b mode monitor

Using GUI:

In WIRELESS | ATF | Monitor Mode, select Network. Check 802.11a and 802.11b for the Radio Type. And click on Enable.

To verify if ATF is disabled or enabled, in Monitor mode or in Enforce-Policy mode:

(WLC) >show atf config all

AP Name                          MAC Address       Slot Admin    Oper        Mode           Optimization Override

-------------------------------- ----------------- ---- -------- ----------- -------------- ------------ ---------

LAP1                             00:6b:f1:29:f4:80 0    ENABLED  UP          Monitor        n/a          Network level

LAP1                             00:6b:f1:29:f4:80 1    ENABLED  UP          Monitor        n/a          Network level

With ATF enabled, the AP will report the ATF statistics to the controller every 180 seconds by default. The WLC collects the number of bytes and frames which are sent and dropped, and the airtime used for the download traffic, per WLAN and per AP radio.

To display the statistics of the AP per radio and per WLAN:

(WLC) >show atf statistics ap AP-NAME {802.11a | 802.11b} summary

 

ATF is in Monitor Mode

 

  Radio Uptime [ Instantaneous | Total ]......... 180 sec | 1075 sec

  Total Radio Air Time........................... 2551ms

 

  STATISTICS PER WLAN............................ Instantaneous    | Total

 

  Wlan 2:

  Network Name................................... OPEN

  ATF Policy ID.................................. 0

  ATF Policy (weight|%allotted).................. 10 | 100%

  Airtime Used .................................. 47ms              | 2551ms

  Relative Airtime % ............................ 100              | 100

  Absolute Airtime % ............................ 0                | 0

 

  Bytes Sent .................................... 247KB              | 19MB

  Bytes Dropped ................................. 0Bytes           | 2Bytes

  Frames Sent ................................... 270              |  17989

  Frames Dropped ................................ 0                |  1

 

The output displays the Instantaneous statistics for the last time interval (the last 180 seconds by default) and the Total statistics that are cumulated since the radio was up or the statistics were resetted. In the example, 247 Kibibytes were sent on WLAN 2 on LAP1 during 47 milliseconds over the last 180 seconds, which means almost 0% of the airtime was used on the downlink. It is a very low usage in this case.

Using GUI:

In WIRELESS | ATF | ATF Statistics, select the AP Name.

The page will display the same statistics (Instantaneous and Accumulated) per WLAN and per radio. Notice that the ATF mode and the ATF measurement interval are also shown on the page.

Click on the WLAN hyperlink to access the statistics of the selected WLAN.

On the ATF Statistics page, the displayed values for Instantaneous statistics are within the period of Measurement Interval. The default is 180 seconds and it can changed for debugging for example.

To specify the ATF Measurement interval in seconds using CLI:

(WLC) >config ap stats-timer PERIOD AP-NAME

To see the actual interval of an AP radio:

(WLC) >show atf statistics ap AP-NAME {802.11b | 802.11a} summary

 

ATF is in Monitor Mode

 

  Radio Uptime [ Instantaneous | Total ]......... 5 sec | 993 sec

Another useful command to reset the cumulative statistics on the controller using CLI:

(WLC) >clear atf statistics

 

This command will clear ATF Statistics!!

Are you sure you want to continue? (y/n) y

 

ATF Policies and ATF Enforcement mode. Phase 1.

The second step is to create some ATF policies for the WLANs and to set the ATF Enforcement mode. The objective is to control the airtime resource with a global limit per WLAN.

The network administrator can manage the policies to control the WLAN airtime budgets, with a strict or an optimised enforcement. The AP will allocate a percentage of the total available airtime (instead of the bandwidth with rate limiting) in order to access the medium. The solution is more efficient than rate limiting to ensure that a client with slow connection speed doesn’t bring down the performance of the clients of the other WLANs.

The mechanism of ATF is controlled by the access point. The AP is passing the traffic if the airtime budget is not reached for the WLAN and/or for the client, by queuing and policing. This traffic policing is done before the frame is transmitted to the EDCA queues. If the budget is reached, the frame is dropped or deferred in another priority queue. But ATF doesn’t replace the standard airtime access mechanism that is EDCA.

Note that ATF is only applicable to the wireless data frames in the downstream direction (from the AP to the clients). The upstream traffic is not controlled by a Cisco access point with ATF.

The network administrator can tune the controller by allocating some weights to the ATF policies. Those weights have no unit of measurement. The allotted airtime utilisation for each WLAN is proportional to the weight of the ATF policy associated to the WLAN. The total airtime utilization is equivalent to the sum of the weights associated to the ATF policies of all the WLANs that are up.

For example, I have configured 2 WLANs:

  • WLAN1 associated to an ATF policy with a weight of 10

  • WLAN2 associated to an ATF policy with a weight of 40

The sum of the weights associated to the 2 WLANs (10 + 40) represents the total airtime utilisation (100%). The AP will enforce the air utilisation so that the traffic on WLAN1 can use the airtime up to 20% (10 out of 50), and the traffic on WLAN2 up to 80% (40 out of 50). Those allotted airtime values in percentage are the maximum airtime traffic on the WLAN in the downstream direction (AP to clients).

At first, disable the WLANs before changing the configuration with ATF. Re-enable the WLANs after all the changes.

To enforce Air Time Fairness with ATF policies:

  1. Create the ATF policies:

  2. (WLC) >config atf policy create POLICY-ID POLICY-NAME POLICY-WEIGHT client-sharing {enable | disable}

    The weight can be any value between 5 and 100. Remember that the weight value doesn’t directly express a percentage of the available airtime. The WLANs can be enabled/disabled anytime and the weights of the remaining up WLAN are dynamically recalculated into percentage.

    The Client Sharing feature is described later in the next section. During the early deployment of Phase 1, the feature was not available (by default, disabled in the default policy).

  3. Map each WLAN to an ATF policy:

  4. (WLC) >config wlan atf WLAN-ID policy POLICY-ID

    By default, all the WLANs are mapped to the “Default” with a default weight of 10 and with Client Sharing disabled.

  5. Enable ATF Enforcement Mode

  6. (WLC) >config atf 802.11a mode enforce-policy

    (WLC) >config atf 802.11b mode enforce-policy

    Those 2 commands enables ATF Enforcement mode for all the APs associated to the controller.

  7. Choose between Strict Enforcement and Optimal Enforcement

  8. (WLC) >config atf 802.11a optimization {enable | disable}

    By default, the optimisation feature is disabled.

    With Strict Enforcement, the maximum airtime utilisation on each WLAN is limited to the allotted value that is calculated from the ATF policies.

    With Optimal Enforcement, the available airtime that is unused by some WLANs is shared among the other WLANs, allowing some traffic bursts beyond the allocated limits.

    The ATF Enforcement mode and the Strict/Optimal Enforcement option can be enabled/disabled:

    • Per radio

    • Per AP

    • Per AP Group

    • Globally for all APs

Using GUI:

In WIRELESS | ATF | Policy Configuration, select a new ID. Enter the Policy Name, the Weight and optionally enable the Client Sharing option. Then click on Create.

Notice that the same ATF policy can be used many times for different WLANs.

In WIRELESS | ATF | Enforcement Mode, select Network. Check the 802.11a and 802.11b Radio Type. Select Optimized or Strict for the Enforcement Type. Then click on Enable.

On the same page, select Network. Select WLAN ID and the Policy ID to associate an ATF policy to a WLAN. Then click on Add.

To verify the ATF policy configuration:

(WLC) >show atf config policy

 

 Policy-Id    Policy-Name    Weight    Client Sharing

 ----------   ------------   -------   --------------

  0           Default        10        Disabled

  1           ATF40          40        Disabled

To verify the WLAN-to-Policy mapping:

(WLC) >show atf config wlan

 

WLAN ID  SSID                  Policy-Name                       Weight  Client Sharing

-------  --------------------  --------------------------------  ------  --------------

1        EAP                   Default                           10      Disabled

2        OPEN                  ATF40                             40      Disabled

To verify if ATF is in Enforcement mode and with or without Optimisation for all APs:

(WLC) >show atf config all

AP Name                          MAC Address       Slot Admin    Oper        Mode           Optimization Override

-------------------------------- ----------------- ---- -------- ----------- -------------- ------------ ---------

LAP1                             00:6b:f1:29:f4:80 0    ENABLED  UP          Enforce-Policy Enabled      Network level

LAP1                             00:6b:f1:29:f4:80 1    ENABLED  UP          Enforce-Policy Enabled      Network level

To find out the percentage of airtime allotted for a WLAN on an AP radio:

(WLC) >show atf statistics ap AP-NAME {802.11a | 802.11b} summary

 

ATF is in Enforce-Policy Mode

 

  Radio Uptime [ Instantaneous | Total ]......... 180 sec | 720 sec

  Total Radio Air Time........................... 0us

 

  STATISTICS PER WLAN............................ Instantaneous    | Total

 

  Wlan 1:

  Network Name................................... EAP

  ATF Policy ID.................................. 0

  ATF Policy (weight|%allotted).................. 10 | 20%

  Airtime Used .................................. 0us              | 0us

  Relative Airtime % ............................ 0                | 0

  Absolute Airtime % ............................ 0                | 0

 

  Bytes Sent .................................... 0Bytes           | 0Bytes

  Bytes Dropped ................................. 0Bytes           | 0Bytes

  Frames Sent ................................... 0                |  0

  Frames Dropped ................................ 0                |  0

 

  Wlan 2:

  Network Name................................... OPEN

  ATF Policy ID.................................. 1

  ATF Policy (weight|%allotted).................. 40 | 80%

  Airtime Used .................................. 0us              | 0us

  Relative Airtime % ............................ 0                | 0

  Absolute Airtime % ............................ 0                | 0

 

  Bytes Sent .................................... 0Bytes           | 0Bytes

  Bytes Dropped ................................. 0Bytes           | 0Bytes

  Frames Sent ................................... 0                |  0

  Frames Dropped ................................ 0                |  0

 

ATF Phase 2 with Client Fair Sharing.

The third step of the ATF implementation consists in enabling Client Fair Sharing. This is the final RF optimisation. The objective of CFS is to avoid the situation where the channel is being monopolized by specific clients with slow connection speed.

Let’s assume a scenario (without CFS) where an access point is sending some traffic with the same flow characteristics to 2 different clients. The frames would be scheduled for transmission alternatively on a per-packet basis to the 2 clients. If one client has lower PHY data rate specifications than the other, then the packet designated to the client with the slowest PHY data rate will consume more airtime than the packet designated to the other client. Without contention, the throughput would be the same for each client. However the airtime utilisation would be greater for the traffic to the slowest client. I have illustrated it in the figure A below.

With Client Fair Sharing (CFS), the airtime is allocated equally per client within the WLAN in the downlink direction (AP to client). In our scenario, the traffic towards each client would be limited to 50% each. The traffic towards the fastest client would have more airtime and more throughput than previously, as shown in figure B. This is particularly useful in high density environments with multiple clients of mixed connexion speed.

To enable Client Fair Sharing on an existing ATF policy:

(WLC) >config atf policy modify client-sharing {enable | disable} POLICY-NAME

Client Fair Sharing requires that ATF is enabled in Enforcement mode. It is also advised to disable the WLANs while changing the ATF policy.

Using GUI:

In WIRELESS | ATF | Policy Configuration, select the ID of the ATF policy. Enable the Client Sharing option. Then click on Modify.

To verify if Client Fair Sharing is enabled on the ATF policy:

(WLC) >show atf config policy

 

 Policy-Id    Policy-Name    Weight    Client Sharing

 ----------   ------------   -------   --------------

  0           Default        10        Disabled

  1           ATF40          40        Enabled

To verify if Client Fair Sharing is enabled on the WLAN:

(WLC) >show atf config wlan

 

WLAN ID  SSID                  Policy-Name                       Weight  Client Sharing

-------  --------------------  --------------------------------  ------  --------------

1        EAP                   Default                           10      Disabled

2        OPEN                  ATF40                             40      Enabled

With CFS enabled, the AP will add the used airtime, the number of bytes and frames for each client into the ATF statistics sent to the controller.

To display the client statistics of an AP, per radio and per WLAN:

(WLC) >show atf statistics ap AP-NAME {802.11a | 802.11b} wlan WLAN-ID

 

ATF is in Enforce-Policy Mode

 

  Radio Uptime [ Instantaneous | Total ]......... 180 sec | 1600 sec

  Total Radio Air Time........................... 2199ms

 

  STATISTICS PER WLAN............................ Instantaneous    | Total

  Wlan 2:

  Network Name................................... OPEN

  ATF Policy ID.................................. 1

  ATF Policy (weight|%allotted).................. 40 | 80%

  Airtime Used .................................. 2197ms              | 2199ms

  Relative Airtime % ............................ 100              | 100

  Absolute Airtime % ............................ 1                | 0

 

  Bytes Sent .................................... 13MB              | 13MB

  Bytes Dropped ................................. 0Bytes           | 0Bytes

  Frames Sent ................................... 10510            |  10517

  Frames Dropped ................................ 0                |  0

                      Instantaneous Airtime               Cumulative Airtime

Clients           [Abs % | Rel % | Airtime]           [Abs % | Rel % | Airtime]           Tx(Sent)Frames           Tx(Dropped)Frames       Usage Status

-------           -------------------------           -------------------------           --------------           -----------------      -----------------

985f.d3bb.35e8     1%| 63%|1391521us                    0%| 63%|1391 ms                      4813                         0                LOW USAGE

ec9b.f332.f140     0%| 37%|806426us 0%| 37%|807 ms 5697 0 LOW USAGE

 

(WLC) >show atf statistics client CLIENT-MAC

 

Client MAC Address............................... 98:5f:d3:bb:35:e8

Client Username ................................. N/A

AP MAC Address................................... 00:6b:f1:29:f4:80

AP Name.......................................... LAP1             

AP radio slot Id................................. 1 

Wireless LAN Id.................................. 2 

ATF Policy ID.................................... 1 

Wireless LAN Profile Name........................ OPEN

  Radio Uptime [ Instantaneous | Total ]......... 180 sec | 1600 sec

  Total Radio Air Time........................... 2199ms

  Airtime Used .................................. 1391ms              | 1391ms

  Relative Airtime % ............................ 63               | 63

  Absolute Airtime % ............................ 1                | 0

 

  Frames Sent ................................... 4813             |  4813

  Frames Dropped ................................ 0                |  0

Using GUI:

In WIRELESS | ATF | ATF Statistics, select the AP Name. It will redirect to the ATF Statistics page for this AP. Then click on the WLAN hyperlink to access the statistics of the selected WLAN.

You can get the client statistics by clicking on the Client MAC address hyperlink.

The experiment.

In the following example, I have setup a WLAN with an ATF policy limited to 90% of the total airtime with Strict Enforcement. To do so, I have another WLAN with an ATF policy with 10% airtime budget.

Three clients were connected to the WLAN using a clean 5GHz channel:

  • 1 client configured with HT disabled (802.11a, limited to 54 Mbps): STA-A

  • 2 High Throughput clients (802.11n, 2 Spatial Streams, limited to m15 i.e. 144 Mbps): STA-B and STA-C

Then I have used the iperf software to send a maximum throughput to all the clients. A local server was setup to transmit 500MB of UDP traffic at a bitrate of 144 Mbps with the same frame size from the AP to each client.

The following graph shows the results. The stacked areas represents the airtime utilisation of each client. The coloured lines shows the throughput of each client and the total throughput.

The graph shows that the airtime utilisation is limited to 90% as configured in the ATF policy.

During the first half of the test, the throughput is not the same between the 3 clients. The 2 High-Throughput 802.11n clients have fluctuated around an average of 24.35 Mbps and 28 Mbps. The legacy 802.11a client has achieved a lower throughput of 7.87 Mbps.

However the airtime utilisation for each client is equally distributed between the 3 clients during that time (cumulative airtime of 32% for STA-A and 34% for the 2 other clients, between 0 and 145 seconds). The ATF policy with CFS was dropping frames to ensure that the airtime between clients stays equal.

During the second half-time of the test, iperf was finished for the 2 802.11n clients. The 802.11a client was still receiving packets from the server at a higher throughput of 18.94 Mbps (20-22 Mbps typical downstream throughput for a data rate of 54Mbps).

To compare, I’ve tried the same experiment with CFS disabled and ATF in Monitor mode:

The result were quite different. The time when the fastest client has finished downloading 500 MB is longer (213 seconds) than in the previous test (145 seconds). During that time, the received throughput on the 802.11a client is also higher (10.95 Mbps). In this case, the 802.11a client has taken more throughput and more airtime than previously, slowing the faster clients. The previous test with CFS enabled was more efficient for the 802.11n clients.

Here are a few more comments about the experiment:

  • I used UDP instead of TCP (to avoid having additional congestion control mechanisms)

  • I used at least 3 clients. I’ve not seeing client fairness working with 2 clients only.

  • Give a bit of buffer to the WLAN maximum airtime when testing with iperf. With an ATF policy of 100% airtime and CFS enabled, the results were not looking fair when the utilisation came close to 100% (hence the 90% policy). In production, the WLAN would hopefully never reach 100%.

  • I've tested each client one-by-one to make sure that the client could maximise the total airtime. If the airtime utilisation is lower than the allocated airtime per client, there are no packet drops and no traffic policing.

 

Troubleshooting and debugging.

There are some show commands related to the ATF statistics on the APs. To see the statistics in real-time on the AP:

(AP) >show controller dot11Radio {0 | 1} atf [detail]

If CFS is enabled on the AP, you can use the following command to see the client statistics in real-time:

(AP) >show controller dot11Radio {0 | 1} atf cfs [client | detail | policy]

For example, you will find the real-time client statistics from the AP command:

(AP) >show controller dot11Radio 1 atf cfs detail

 

ATF CLIENT ENFORCEMENT DEAILED STATS:

--------------------------------------

SSID Name: OPEN Policy Name: ATF90

--------------------------------------

     Active Client Count: 3 Left Client Count: 0 Updated : Since 1977 ms before

     [Category Count]Low: 0 Regular: 1 Over-Use: 0

     SharedPoolTokens: 76554 usecs Total Airtime: 3833956

 

  Clients  [ClientState|Duration]  [PrevState]  [Airtime|Usage%]  [DropCount|Size]  [SharedPoolUsage]  [RefillsTried]  [LeftSince]

  -------  -----------------------    ----------    ----------------    ---------------    ----------------    -------------    -----------------

8c70.5a7c.44f9 OVER USAGE| 153 sec LOW USAGE         1342342us  35 %         84112 |88654048          246840  393             NA

985f.d3bb:35e8 LOW USAGE|   0 sec OVER USAGE             0us   0 %     0 |  0                    0              0             NA

fc75.1661.290a OVER USAGE| 151 sec OVER USAGE        2491614us  65 %         58672 |61840288          922936  400             NA

Notice that the client state is categorized into 3 groups: Low, Regular and Over Usage. It allows for the AP to take the unused airtime of the clients in Low or Regular Usage state for the clients in Over Usage state.

There are also some debug commands associated to ATF on the controller:

(WLC) >debug atf detail enable

 

(WLC) >debug atf error enable

 

(WLC) >debug atf events enable

You can see the messages related to ATF statistics that are sent from the APs to the controller:

*iappSocketTask: Dec 20 19:24:58.804: IAPP-ATF Stats:50 Bytes Sent from AP

*iappSocketTask: Dec 20 19:29:37.109: iapp_decode_update_atf_client_stats for slotid 1 wlanid 2 TotalEntries 2 CurrentPcktCount 2 entry indx 0

*iappSocketTask: Dec 20 19:29:37.109: 985f.d3bb:35e8 1391521us 4813                0                    1

*iappSocketTask: Dec 20 19:29:37.109: ec9b.f332.f140 806426us 5697                 0                    1

*spamApTask2: Dec 20 19:29:37.109: tlvDecodeSpamAtfStatsPayload wlanid 1 airtimeused 0 bytesent 0 bytedrop  0  framesent   0  framedrop 0

*spamApTask2: Dec 20 19:29:37.110: tlvDecodeSpamAtfStatsPayload wlanid 1 airtimeused 2197947 bytesent 13794304 bytedrop  0  framesent   10510  framedrop 0

Those messages are sent periodically by every AP at the interval defined by the stats-timer value (180 seconds by default). The controller will process them to refresh the ATF statistics.

 

Additional Resources

Cisco Air Time Fairness (ATF) Deployment Guide Release 8.4:

https://www.cisco.com/c/en/us/td/docs/wireless/technology/mesh/8-4/b_Air_Time_Fairness_ATF_Deployment_Guide_rel_8_4.html

Enhancing Cisco High Density Experience with Cisco Air Time Fairness White Paper:

https://www.cisco.com/c/en/us/products/collateral/wireless/aironet-3700-series/white-paper-c11-735947.html

Meraki documentation, Air Time Fairness (ATF):

https://documentation.meraki.com/MR/WiFi_Basics_and_Best_Practices/Air_Time_Fairness_(ATF)

Meru Networks videos, Airtime Fairness:

https://www.youtube.com/watch?v=UwmR5nJcTgs

Ruckus videos, Airtime Fairness:

https://www.youtube.com/watch?v=hXEVAuHxZpg