wifi:ideaspage

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
wifi:ideaspage [2012/03/17 20:01] – AdrianChaddwifi:ideaspage [2022/06/17 01:58] (current) – De-dent title KubilayKocak
Line 1: Line 1:
-====== Wifi Ideas Page ======+===== Wifi Ideas Page =====
  
 ===== WPA2 preauthentication in hostapd ===== ===== WPA2 preauthentication in hostapd =====
 +
 //Suggested Summer of Code project idea// //Suggested Summer of Code project idea//
  
-**Technical Contact**: [[/AdrianChadd|adrian@]], [[/SamLeffler|sam@]]+**Technical Contact**: [[/AdrianChadd|adrian@]]
  
-WPA2 is the authentication protocol defined as part of the IEEE 802.11i specification. This protocol is now commonly used to authenticate wireless stations to access points. Part of this protocol is the ability to pre-authenticate a station with one or more access points so that roaming can happen quickly. %%FreeBSD%% lacks support for this aspect of the protocol in the hostapd program used to construct a WPA-enabled access point. This task would port the Linux code that exists to support pre-authentication in hostapd. This mostly involves rewriting some user-mode multicast code and testing the result.+WPA2 is the authentication protocol defined as part of the IEEE 802.11i specification. This protocol is now commonly used to authenticate wireless stations to access points. Part of this protocol is the ability to pre-authenticate a station with one or more access points so that roaming can happen quickly. %%FreeBSD%% lacks support for this aspect of the protocol in the hostapd program used to construct a WPA-enabled access point. This task would port the Linux code that exists to support pre-authentication in hostapd. This mostly involves rewriting some user-mode multicast code and testing the result. (Whatever we do here should be upstreamed to w1.fi.)
  
 ==== Requirements ==== ==== Requirements ====
Line 14: Line 15:
   * WPA-capable wireless network setup.   * WPA-capable wireless network setup.
  
-===== net80211 rate control API - 802.11n extensions (GSoC) ===== +===== net80211 rate control =====
-//Suggested Summer of Code project idea// +
  
-**Technical Contact**: [[/AdrianChadd|adrian@]], freebsd-wireless@freebsd.org+**Technical Contact**: [[/AdrianChadd|adrian@]], <freebsd-wireless@freebsd.org>
  
-Extend the net80211 rate control API to be 802.11n aware. This includes:+Update the net80211 rate control API and test with newer hardware. 
 + 
 +15:18:28 < adrian> the rate control API is done; that shoud be changed to "update it and test it on modern hardware" 
 +15:18:36 < adrian> it's in a gsoc branch, I never had the time to integrate it 
 +15:18:38 < adrian> i really should at some point though
  
   * Teaching it about multiple TX rate attempts (eg what ath(4) hardware supports;   * Teaching it about multiple TX rate attempts (eg what ath(4) hardware supports;
Line 32: Line 36:
 ==== Requirements ==== ==== Requirements ====
  
-The ideal student will have a supported 802.11n chipset (Intel, Broadcom, Atheros) and be familiar with basic wireless concepts and C programming. If in doubt, please email freebsd-wireless@freebsd.org to ensure your 802.11n NIC is supported in %%FreeBSD%%-HEAD.+The ideal student will have a supported 802.11n chipset (Intel, Atheros) and be familiar with basic wireless concepts and C programming. If in doubt, please email <freebsd-wireless@freebsd.org> to ensure your 802.11n NIC is supported in %%FreeBSD%%-HEAD.
  
 ===== 802.11 Fuzzing and Testing (GSoC) ===== ===== 802.11 Fuzzing and Testing (GSoC) =====
 //Suggested Summer of Code project idea// //Suggested Summer of Code project idea//
  
-**Technical Contact**: [[/AdrianChadd|adrian@]], [[/SamLeffler|sam@]]+**Technical Contact**: [[/AdrianChadd|adrian@]]
  
 Build a "packet fuzzer" tool that can be used to build test suites to improve reliability of the 802.11 code against garbage data. There are various tools out but we're not aware of any good ones that work with 802.11 and are generally available. The basic idea is to write a packet injector/playback tool that's driven by a scripting language. Then you need to build up a database of test cases. It's also possibly important to do time-based playback. Build a "packet fuzzer" tool that can be used to build test suites to improve reliability of the 802.11 code against garbage data. There are various tools out but we're not aware of any good ones that work with 802.11 and are generally available. The basic idea is to write a packet injector/playback tool that's driven by a scripting language. Then you need to build up a database of test cases. It's also possibly important to do time-based playback.
Line 50: Line 54:
 //Suggested %%SoC%% project idea// //Suggested %%SoC%% project idea//
  
-**Technical Contact**: [[/freebsd-wireless@freebsd.org|freebsd-wireless@freebsd.org]]+**Technical Contact**: <freebsd-wireless@freebsd.org>
  
 The wtap interface simulates enough of a wireless interface to allow for mesh (802.11s) testing. It would be nice to extend this to support the other operational modes (sta, hostap, adhoc). The wtap interface simulates enough of a wireless interface to allow for mesh (802.11s) testing. It would be nice to extend this to support the other operational modes (sta, hostap, adhoc).
Line 64: Line 68:
 ===== Extend/cleanup the net80211 regulatory database ===== ===== Extend/cleanup the net80211 regulatory database =====
  
-**Technical Contact**::: [[/freebsd-wireless@freebsd.org|freebsd-wireless@freebsd.org]]+**Technical Contact**: <freebsd-wireless@freebsd.org>
  
 The net80211 code does contain a basic regulatory database but it could do with an overhaul. Specifically: The net80211 code does contain a basic regulatory database but it could do with an overhaul. Specifically:
Line 83: Line 87:
 ===== Implement a new VAP type that is specifically for raw frame injection/reception ===== ===== Implement a new VAP type that is specifically for raw frame injection/reception =====
  
-**Technical Contact**::: [[/freebsd-wireless@freebsd.org|freebsd-wireless@freebsd.org]]+**Technical Contact**: <freebsd-wireless@freebsd.org>
  
 None of the current operating modes are really designed for raw frame injection with no actual MLME functionality.  Some people (eg people implementing custom mesh/adhoc operational modes) are finding this very inconvenient. None of the current operating modes are really designed for raw frame injection with no actual MLME functionality.  Some people (eg people implementing custom mesh/adhoc operational modes) are finding this very inconvenient.
Line 94: Line 98:
   * Good knowledge of wireless and net80211;   * Good knowledge of wireless and net80211;
   * Not being afraid of trying to make a new VAP operating mode and finding all the strange issues therein.   * Not being afraid of trying to make a new VAP operating mode and finding all the strange issues therein.
 +
 +===== Implement per-channel activity/survey support in ath(4) and net80211 =====
 +
 +**Technical Contact**: <freebsd-wireless@freebsd.org>
 +
 +The ath(4) hardware has some live counters which track the channel status - how much time is spent TX'ing, RX'ing, and how much time it believes the channel air is busy. The HAL exposes these as counters and it would be nice to track this per-channel and expose it to net80211.
 +
 +Then other modules in net80211 (eg automatic channel selection) can use this to determine the least used channel.
 +
 +==== Requirements ====
 +
 +  * Good knowledge of C;
 +  * Own a supported ath(4) NIC - anything AR5212 and later (including 802.11n) NICs which are supported will be enough for this task;
 +  * Not afraid to learn about how the Atheros wireless NICs work;
 +  * Not being afraid of doing some device driver and net80211 hacking.
 +
 +===== Implement RX power histogram in net80211 =====
 +
 +**Technical Contact**: <freebsd-wireless@freebsd.org>
 +
 +Most drivers expose the per-frame RSSI as part of the RX process. This can be used by net80211 to build up a histogram of RX power levels. This forms part of the 802.11h DFS specification and is used in both the channel activity measurement and during automatic channel selection.
 +
 +==== Requirements ====
 +
 +  * Good knowledge of C;
 +  * Own a supported wireless NIC in %%FreeBSD%% which returns the per-frame RSSI;
 +  * Not be afraid to learn more about 802.11h and the net80211 stack.
 +
 +===== Implement statistics graphing / visualisation =====
 +
 +**Technical Contact**: <freebsd-wireless@freebsd.org>
 +
 +Both the wireless stack and individual drivers provide a very large amount of useful statistics information, however right now this is exposed only via some basic test utilities.
 +
 +This project aims to provide a generic way to log, visualise and explore the wireless statistics from a variety of locations.
 +
 +The general architecture is thus:
 +
 +  * A userland daemon which will take statistics from a variety of sources (driver, stack, kernel APIs) and both log them to a file as well as expose them as a JSON or similar encoded stream;
 +  * A web service that allows both a live playback of JSON data as well as browsing historical information which has been saved to a file;
 +  * A HTML5/Javascript (browser portable, as much as possible!) implementation of a generic data visualisation frontend, that can take both live and historical data and expose it in a flexible, useful way.
 +
 +==== Requirements ====
 +
 +  * Good knowledge of javascript/HTML5;
 +  * Own a supported wireless NIC in %%FreeBSD%% - preferably an Atheros PCI/PCIe NIC, but anything supported will be good to begin with;
 +  * Not be afraid by data representation and graphing.
  
  • wifi/ideaspage.1332014493.txt.gz
  • Last modified: 2012/03/17 20:01
  • by AdrianChadd