| mac80211_hwsim - software simulator of 802.11 radio(s) for mac80211 |
| Copyright (c) 2008, Jouni Malinen <j@w1.fi> |
| |
| This program is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License version 2 as |
| published by the Free Software Foundation. |
| |
| |
| Introduction |
| |
| mac80211_hwsim is a Linux kernel module that can be used to simulate |
| arbitrary number of IEEE 802.11 radios for mac80211. It can be used to |
| test most of the mac80211 functionality and user space tools (e.g., |
| hostapd and wpa_supplicant) in a way that matches very closely with |
| the normal case of using real WLAN hardware. From the mac80211 view |
| point, mac80211_hwsim is yet another hardware driver, i.e., no changes |
| to mac80211 are needed to use this testing tool. |
| |
| The main goal for mac80211_hwsim is to make it easier for developers |
| to test their code and work with new features to mac80211, hostapd, |
| and wpa_supplicant. The simulated radios do not have the limitations |
| of real hardware, so it is easy to generate an arbitrary test setup |
| and always reproduce the same setup for future tests. In addition, |
| since all radio operation is simulated, any channel can be used in |
| tests regardless of regulatory rules. |
| |
| mac80211_hwsim kernel module has a parameter 'radios' that can be used |
| to select how many radios are simulated (default 2). This allows |
| configuration of both very simply setups (e.g., just a single access |
| point and a station) or large scale tests (multiple access points with |
| hundreds of stations). |
| |
| mac80211_hwsim works by tracking the current channel of each virtual |
| radio and copying all transmitted frames to all other radios that are |
| currently enabled and on the same channel as the transmitting |
| radio. Software encryption in mac80211 is used so that the frames are |
| actually encrypted over the virtual air interface to allow more |
| complete testing of encryption. |
| |
| A global monitoring netdev, hwsim#, is created independent of |
| mac80211. This interface can be used to monitor all transmitted frames |
| regardless of channel. |
| |
| |
| Simple example |
| |
| This example shows how to use mac80211_hwsim to simulate two radios: |
| one to act as an access point and the other as a station that |
| associates with the AP. hostapd and wpa_supplicant are used to take |
| care of WPA2-PSK authentication. In addition, hostapd is also |
| processing access point side of association. |
| |
| Please note that the current Linux kernel does not enable AP mode, so a |
| simple patch is needed to enable AP mode selection: |
| http://johannes.sipsolutions.net/patches/kernel/all/LATEST/006-allow-ap-vlan-modes.patch |
| |
| |
| # Build mac80211_hwsim as part of kernel configuration |
| |
| # Load the module |
| modprobe mac80211_hwsim |
| |
| # Run hostapd (AP) for wlan0 |
| hostapd hostapd.conf |
| |
| # Run wpa_supplicant (station) for wlan1 |
| wpa_supplicant -Dwext -iwlan1 -c wpa_supplicant.conf |