Wireshark – Find out the data rate of an 802.11ax Data Frame
As you know, all data rates are changing with 802.11ax, Hence, the new MCS table you can find here: https://www.semfionetworks.com/blog/mcs-table-updated-with-80211ax-data-rates
In this article, we will see how we can figure out the data rate of a specific 802.11ax data frame.
If you want to know how to capture 802.11ax data frames, refer to this article first: https://www.semfionetworks.com/blog/80211ax-remote-packet-captures-using-the-jetson-nano
The HE RadioTap header provided by the Intel AX card installed on Ubuntu is great and provides a lot of valuable information that we will use to figure out the data rate.
Step 1 – Filter to find the 802.11ax Data Frames
First, once you have your 802.11ax packet capture in Wireshark, you can filter 802.11ax Data Frames by using the following filter: wlan.fc.type == 2 && (radiotap.he.data_1.ppdu_format == 0x0 || radiotap.he.data_1.ppdu_format == 0x2)
wlan.fc.type == 2 means that we are filtering for 802.11 Data Frames
radiotap.he.data_1.ppdu_format == 0x0 means that we are filtering for HE Single User PPDUs.
radiotap.he.data_1.ppdu_format == 0x2 means that we are filtering for HE Multi User PPDUs.
Step 2 – Select the frame you want to analyse
We simply need to choose the frame we want to analyse. Once you have selected the frame, look for the RadioTap Header in the bottom panel in Wireshark:
Step 3 – Find the transmission details in the RadioTap header
In order to be able to find the exact Data Rate used, we need these pieces of information:
- MCS Index
- Guard Interval
- Channel Width or Ressource Unit size
- Number of Spatial Streams
We can find these information in the RadioTap Header.
The MCS Index is located in the “HE Information/HE Data 3” section. In this example, we have a MCS Index of 9:
The Guard Interval and the Channel Width/Ressource Unit size are located in the “HE Information/HE Data 5” section. In this example, we have a GI of 1.6us and a channel width of 20MHZ:
The number of spatial streams information is located in the “HE Information/HE Data 6” section. In this example, we are using 1 spatial stream:
Step 4 – Reference the MCS Table to find the exact Data Rate
Once you have all of the transmission details, you can reference the 802.11ax MCS Table and find out exactly which data rate is used for the communication.
To summarize, here are transmission details what we have for our example:
- PHY: 802.11ax
- MCS Index: 9
- Guard Interval: 1.6us
- Channel Width: 20MHz (OFDMA)
- Number of Spatial Streams: 1
If we reference the MCS Table with this information, we see that the data rate is 108.3Mbps:
Bonus – Configure your Wireshark column to display these transmission details
As a bonus, you can add the following columns to your Wireshark to display the transmission details we have talked about here:
- radiotap.he.data_3.data_mcs: For the MCS Index
- radiotap.he.data_5.gi: For the Guard Interval
- radiotap.he.data_5.data_bw_ru_allocation: For the Channel Width or RU Allocation
- radiotap.he.data_6.nsts : For the number of Spatial Streams
Here is what it will look like: