Presentation is loading. Please wait.

Presentation is loading. Please wait.

Extending Windows Vista Native Wi-Fi Capabilities Thomas Kuehnel Program Manager Networking Group Microsoft Corporation Yi Lu Software Development Engineer.

Similar presentations


Presentation on theme: "Extending Windows Vista Native Wi-Fi Capabilities Thomas Kuehnel Program Manager Networking Group Microsoft Corporation Yi Lu Software Development Engineer."— Presentation transcript:

1 Extending Windows Vista Native Wi-Fi Capabilities Thomas Kuehnel Program Manager Networking Group Microsoft Corporation Yi Lu Software Development Engineer Networking Group Microsoft Corporation

2 Agenda Native Wi-Fi in Windows Vista Extensibility AutoConfig Service APIs Code Sample and Demo: Site Survey Proximity service Discovery

3 Native Wi-Fi In Windows Vista The driver architecture for frame format is exposed to Operating System NDIS 6-based (Legacy NDIS 5.1 drivers will work) Wireless Service (AutoConfig) Only activated when Wireless NIC is installed Optional component in Server SKU Provides public APIs

4 Native Wi-Fi In Windows Vista Added and improved features Improved security WPA2 (infrastructure and ad hoc), hidden network handling, all user/per-user profile (ACling) Better management Diagnostic, command line (netshell), group policy Easier to use New User Interface simplifies configuration Performance improvements 4-way handshake in kernel Better ad-hoc network integration File-sharing, “People Near Me”

5 User Interface MS-EAP Auto Configuration Service Native Wi-Fi Architecture Overview NWF Miniport Driver & NIC Public APIs LWF Driver Diagnostics EAPHOST Native Wi-Fi Driver and NIC PHY and MAC layer PHY and MAC layer Roaming, encryption / decryption Roaming, encryption / decryption LWF Filter driver (nwifi.sys) Emulates Emulates Enforces security policy Enforces security policy Configures upper MAC, 4-way handshake Configures upper MAC, 4-way handshake Auto Configuration Service Connection control, discovery Connection control, discovery Profile management Profile management Provides Public APIs Provides Public APIs User Interface View Available Network UI (VAN-UI) View Available Network UI (VAN-UI) Wizards: get connected, create profile Wizards: get connected, create profile Preferred network list, profile UI Preferred network list, profile UI Microsoft EAP Methods MSCHAPv2, EAP TLS, PEAP MSCHAPv2, EAP TLS, PEAP Wireless diagnostics Helper classes Helper classes 802.1x FAT (legacy) Miniport Driver & NIC

6 User Interface MS-EAP 3rd Party Application Auto Configuration Service Native Wi-Fi Extensibility NWF Miniport Driver & NIC Public APIs LWF Driver Helper Diagnostics Provided by: Microsoft ISV IHV EAP HOST Framework Framework Filter 3 rd Party EAP Service Extension UI extension Monitoring Filter Driver Traffic monitor User mode driver extension Key management Key management Proprietary authentication Proprietary authentication Power control Power control Configuration and prompting Interactive UI Interactive UI Advanced UI extension Advanced UI extension Win32 application, scripts Connection manager Connection manager Site survey Site survey Easy connect Easy connect Custom EAP methods e.g., EAPFAST, LEAP e.g., EAPFAST, LEAP Custom Helper Classes 802.1x FAT (legacy) Miniport Driver & NIC

7 Auto Configuration Service (AC) IHV Service EAP Method UI IM Driver IHV Connection Process First time connect using 802.1X Miniport Driver & NIC Profile Store Data User selects network 2. AC creates temporary profiles and passes beacon to IHV service 4. AC tries to connect with temp profile 5. NIC connects and notifies IHV Service 6. IHV service invokes Microsoft 802.1X X handshake (security packets) X UI interaction X success, keys to IHV service 3 3. “IHV data” added to temporary profile 11. IHV indicates success to AC 10. IHV performs key handshake 12. AC opens the port and saves the profile x 2 NDIS Port

8 AutoConfig Service APIs Overview Win32 APIs for Managing of wireless profiles (set, retrieve) All user/per user profiles, ACling of APIs Managing of wireless connections and scanning Adapter enumeration and settings Concurrency Simultaneous use of APIs Unifies Interfaces Native Wi-Fi and legacy drivers Subset will be back-ported to Windows XP Connection and profile management

9 Code Sample Site survey GUI application Show all visible networks Provide details (BSSIDs, signal quality, …) Select network and connect Radio on/off Demonstrates the following functionality Register and receive notifications Perform scan Get network information Issue connect

10 Program Sequence Notification callback thread Enumerate interfaces Connect Get available networks Register notifications Scan Initialization De-initialization Notification callback Update connection status Deregister notifications Callback thread starts Callback thread ends

11 Open And Close Handle WlanOpenHandle/WlanCloseHandle // WLAN Site Management Initialization... WlanOpenHandle( WLAN_API_VERSION,// current API version NULL,// reserved, must be NULL &dwServiceVersion,// version of the WLAN service &hClientHandle// returned handle );... // WLAN Site Management De-initialization... WlanCloseHandle( hClientHandle,// opened handle NULL// reserved, must be NULL );...

12 Enumerate Interfaces WlanEnumInterface // Enumerate WLAN interfaces PWLAN_INTERFACE_INFO_LIST pInterfaceList = NULL; WlanEnumInterface( hClientHandle,// opened handle NULL,// reserved, must be NULL &pInterfaceList// returned interface info list ); // Process interface information, obtain interface GUID... WlanFreeMemory(pInterfaceList);

13 Set Interface Properties WlanSetInterface /* Set interface property, e.g. turn off radio */ WLAN_PHY_RADIO_STATE wlanPhyRadioState; wlanPhyRadioState.dwPhyIndex = 0;// turn off the radio on 1st PHY wlanPhyRadioState.dot11SoftwareRadioState = dot11_radio_state_off; WlanSetInterface( hClientHandle,// opened handle pInterfaceGuid,// interface GUID wlan_intf_opcode_radio_state,// opcode to set radio state sizeof(WLAN_PHY_RADIO_STATE),// data size (PBYTE)&wlanPhyRadioState,// pointer to the data NULL// reserved, must be NULL );

14 Register Notifications WlanRegisterNotification // Register notifications WlanRegisterNotification( hClientHandle,// opened handle WLAN_NOTIFICATION_SOURCE_ALL,// register all notifications FALSE,// don’t ignore duplicate NotificationCallBack,// callback function pContext,// context data NULL,// reserved, must be NULL, NULL// don’t return previous ); // Callback function will be called in another thread when // a notification is available...

15 Notification Callback Function // Application defined callback function VOID NotificationCallback( PWLAN_NOTIFICATION_DATA pNotifData, PVOID pContext ) {... if (pNotifData->NotificationSource == WLAN_NOTIFICATION_SOURCE_ACM) { switch(pNotifData->NotificationCode) { case wlan_notification_acm_connection_attempt_fail: OnConnectionAttemptFail( (PWLAN_CONNECTION_NOTIFICATION_DATA)pNotifData->pData ); break; // other cases... }... }

16 Issue Scan Request WlanScan Asynchronous call Notification upon completion Get networks using WlanGetAvailableNetworks // Perform a scan on a specific interfaces WlanScan( hClientHandle,// opened handle &pInterfaceGuid,// interface GUID NULL,// don’t probe NULL// reserved, must be NULL );

17 Get Available Networks WlanGetAvailableNetworks // Query available networks. This is usually done when the scan // complete notification is received. PWLAN_AVAILABLE_NETWORK_LIST pNetworkList = NULL; WlanGetAvailableNetworkList( hClientHandle,// opened handle pInterfaceGuid,// interface GUID 0,// don’t include hidden/adhoc profiles NULL,// reserved, must be NULL &pNetworkList// pointer to the returned network list ); // Process available networks... WlanFreeMemory(pNetworkList);

18 Get BSSIDs WlanGetNetworkBssList // Query the BSS list of a particular network or all networks. PWLAN_BSS_LIST pBssList = NULL; WlanGetNetworkBssList( hClientHandle,// opened handle pInterfaceGuid,// interface GUID pSsid,// SSID, pass in NULL for all networks dot11_BSS_type_infrastructure,// BSS type TRUE,// security enabled NULL,// reserved, must be NULL &pNetworkList// pointer to the returned BSS list ); // Process BSS entries PWLAN_BSS_ENTRY pBssEntry = &pNetworkList->wlanBssEntries[i];... // Process raw IE if needed... WlanFreeMemory(pBssList);

19 Connect To Network WlanConnect Asynchronous call Notification upon completion // Connect to a secure network without a profile // Prepare connection parameters WLAN_CONNECTION_PARAMETERS ConnPara; ConnPara.pDot11Ssid = pDot11Ssid;// SSID ConnPara.dot11BssType = dot11_BSS_type_infrastructure; // BSS type ConnPara.pDesiredBssidList = NULL;// no desired BSSID ConnPara.strProfile = NULL;// no profile ConnPara.wlanConnectionMode = wlan_connection_mode_discovery_secure; ConnPara.dwFlags = 0;// no connection flag WlanConnect( hClientHandle,// opened handle pInterfaceGuid,// interface GUID &ConnPara,// connection parameters NULL// reserved, must be NULL );

20 Update Connection Status Status update in notification call back function // Update connection status upon receiving connection attempt fail // notification VOID OnConnectionAttemptFail( PWLAN_CONNECTION_NOTIFICATION_DATA pConnNotifData ) {... // get the reason for the attempt failure WCHAR strReason[256];// string buffer WlanReasonCodeToString( pConnNotifData->wlanReasonCode, // reason code failure 256,// size of the string buffer strReason,// string buffer NULL// reserved, must be NULL ); // print out the string... }

21 Future Wireless Technology

22 “Hello” “Hello” “Services Near Me”

23 Proximity Service Discovery Discover before connect Advertise and discover services in range Integrates with Function Discovery and PnP-X Uses IBSS Places proprietary IE (221) in Beacon OUI = 00:50:f2 Format string to be registered at tx and rx Payload carries service information Hooks (APIs) in Windows Vista Transmission: WlanSetPsdIEDataList Reception: WlanExtractPsdIEDataList

24 WS-Discovery In “Hello” over FieldValue Element ID221 Length…253 OUI00:50:f2 OUI-Type6 Format4 Octets Type UUID 16 Octets SequenceWord SecurityWord Friendly name 32 Char Base address URL AutoConfig Application xmlns:d="http://schemas.xmlsoap.org /ws/2004/10/discovery" i:PrintBasic uuid:98190dc ef8-ac9a e6119 Hash ( URI) Beacon IE WS-Discovery “Hello” Max IE: 255 Bytes

25 Call To Action Develop drivers based on the Native Wi-Fi architecture for existing and new hardware Make your applications Windows Vista ready by using the AutoConfig APIs Support WPA 2 for ad hoc to enable new scenarios

26 Additional Resources Web Resources API: us/nativewifi/nwifi/portal.asp us/nativewifi/nwifi/portal.asphttp://msdn.microsoft.com/library/en- us/nativewifi/nwifi/portal.asp EAP: Diagnostics: us/ndf/ndf/about_ndf.asp us/ndf/ndf/about_ndf.asp us/ndf/ndf/about_ndf.asp WDK: Related Sessions Link Layer Discovery and Enabling Wi-Fi Diagnostics for Network Performance Tuning SoftAP Test Infrastructure for Obtaining Logo for Wireless LAN drivers to: microsoft.com microsoft.com

27 © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

28


Download ppt "Extending Windows Vista Native Wi-Fi Capabilities Thomas Kuehnel Program Manager Networking Group Microsoft Corporation Yi Lu Software Development Engineer."

Similar presentations


Ads by Google