In my previous posts about WMM support in Vista, I described how Windows network applications can indicate which priority level they desire for traffic sent, and how Native WiFi (NWF) drivers can identify this traffic to provide appropriate prioritization over the shared wireless segment. It’s important; however, to realize that the NWF driver in Windows can only prioritize this traffic if the wireless access point (AP) supports WMM. I thought it would be worthwhile to discuss how to determine if an AP supports this capability. Note that your network application does not have to worry about this; the driver does it for you. But, if you were inclined to figure it out yourself, I’ll tell you how to go about it. As always, some background is necessary first:

 

Element ID 221 in the 802.11 beacon is vendor specific, and therefore can be used for additions and improvements to the protocol. The first three octets of this field represents the Organizationally Unique Identifier (OUI). IEEE assigns a unique OUI for each vendor (Microsoft happens to be 00:50:f2). Following the OUI is the vendor-specific data. You will see security improvements, such as WPA, making use of this element, as well as WMM. Each distinct improvement (such as WPA or WMM) has a specific OUI type, and in Windows, WMM happens to have OUI Type of 2. The following table highlights this for Native WiFi in Vista:

 

Field

Value

Element ID

221

Length

7

OUI

00 : 50 : F2 (hex)

OUI Type

2

OUI Subtype

0

Version

1

 

So, based on this information, how do you put it to practical use? For starters, you could use an 802.11 protocol sniffer (such as AiroPeek) to capture a beacon from the AP. This capture will allow you to see each Element, so you simply look for Element ID 221. Once you’ve found this Element, you can look for the OUI:OUI Type in the frame, which, from the above table, happens to be 00:50:F2:02 for WMM.

If you don’t have an 802.11 protocol sniffer at your disposal, you could use the WlanGetNetworkBssList() API available via NWF. The WLAN_BSS_LIST structure on output will contain an array of WLAN_BSS_ENTRY structures. After a little parsing on your side, you’ll turn up the OUI:OUI Type combination which identifies the AP as supporting WMM.

 

Next, I’ll write about WMM behavior, i.e. how you can expect your prioritized traffic to be handled on the wireless network. As always, let me know if you have any questions or comments.

 

- Gabe Frost (gfrost)