Jouni Malinen | acc1e7a | 2008-06-11 10:42:31 +0300 | [diff] [blame] | 1 | mac80211_hwsim - software simulator of 802.11 radio(s) for mac80211 |
| 2 | Copyright (c) 2008, Jouni Malinen <j@w1.fi> |
| 3 | |
| 4 | This program is free software; you can redistribute it and/or modify |
| 5 | it under the terms of the GNU General Public License version 2 as |
| 6 | published by the Free Software Foundation. |
| 7 | |
| 8 | |
| 9 | Introduction |
| 10 | |
| 11 | mac80211_hwsim is a Linux kernel module that can be used to simulate |
Jouni Malinen | ba77f1a | 2008-06-13 19:44:46 +0300 | [diff] [blame] | 12 | arbitrary number of IEEE 802.11 radios for mac80211. It can be used to |
| 13 | test most of the mac80211 functionality and user space tools (e.g., |
| 14 | hostapd and wpa_supplicant) in a way that matches very closely with |
| 15 | the normal case of using real WLAN hardware. From the mac80211 view |
| 16 | point, mac80211_hwsim is yet another hardware driver, i.e., no changes |
| 17 | to mac80211 are needed to use this testing tool. |
Jouni Malinen | acc1e7a | 2008-06-11 10:42:31 +0300 | [diff] [blame] | 18 | |
| 19 | The main goal for mac80211_hwsim is to make it easier for developers |
| 20 | to test their code and work with new features to mac80211, hostapd, |
| 21 | and wpa_supplicant. The simulated radios do not have the limitations |
| 22 | of real hardware, so it is easy to generate an arbitrary test setup |
| 23 | and always reproduce the same setup for future tests. In addition, |
| 24 | since all radio operation is simulated, any channel can be used in |
| 25 | tests regardless of regulatory rules. |
| 26 | |
| 27 | mac80211_hwsim kernel module has a parameter 'radios' that can be used |
Jouni Malinen | ba77f1a | 2008-06-13 19:44:46 +0300 | [diff] [blame] | 28 | to select how many radios are simulated (default 2). This allows |
Jouni Malinen | acc1e7a | 2008-06-11 10:42:31 +0300 | [diff] [blame] | 29 | configuration of both very simply setups (e.g., just a single access |
| 30 | point and a station) or large scale tests (multiple access points with |
| 31 | hundreds of stations). |
| 32 | |
| 33 | mac80211_hwsim works by tracking the current channel of each virtual |
| 34 | radio and copying all transmitted frames to all other radios that are |
| 35 | currently enabled and on the same channel as the transmitting |
| 36 | radio. Software encryption in mac80211 is used so that the frames are |
| 37 | actually encrypted over the virtual air interface to allow more |
| 38 | complete testing of encryption. |
| 39 | |
| 40 | A global monitoring netdev, hwsim#, is created independent of |
| 41 | mac80211. This interface can be used to monitor all transmitted frames |
| 42 | regardless of channel. |
| 43 | |
| 44 | |
| 45 | Simple example |
| 46 | |
| 47 | This example shows how to use mac80211_hwsim to simulate two radios: |
| 48 | one to act as an access point and the other as a station that |
| 49 | associates with the AP. hostapd and wpa_supplicant are used to take |
| 50 | care of WPA2-PSK authentication. In addition, hostapd is also |
| 51 | processing access point side of association. |
| 52 | |
Jouni Malinen | acc1e7a | 2008-06-11 10:42:31 +0300 | [diff] [blame] | 53 | |
| 54 | # Build mac80211_hwsim as part of kernel configuration |
| 55 | |
| 56 | # Load the module |
| 57 | modprobe mac80211_hwsim |
| 58 | |
| 59 | # Run hostapd (AP) for wlan0 |
| 60 | hostapd hostapd.conf |
| 61 | |
| 62 | # Run wpa_supplicant (station) for wlan1 |
| 63 | wpa_supplicant -Dwext -iwlan1 -c wpa_supplicant.conf |
Jouni Malinen | f9f88fe | 2008-11-09 18:38:51 +0200 | [diff] [blame] | 64 | |
| 65 | |
| 66 | More test cases are available in hostap.git: |
| 67 | git://w1.fi/srv/git/hostap.git and mac80211_hwsim/tests subdirectory |
| 68 | (http://w1.fi/gitweb/gitweb.cgi?p=hostap.git;a=tree;f=mac80211_hwsim/tests) |