Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| wifi:ideaspage [2012/03/17 20:01] – AdrianChadd | wifi: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**: [[/ | + | **Technical Contact**: [[/ |
| - | 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. |
| ==== Requirements ==== | ==== Requirements ==== | ||
| Line 14: | Line 15: | ||
| * WPA-capable wireless network setup. | * WPA-capable wireless network setup. | ||
| - | ===== net80211 rate control | + | ===== net80211 rate control ===== |
| - | //Suggested Summer of Code project idea// | + | |
| - | **Technical Contact**: [[/ | + | **Technical Contact**: [[/ |
| - | Extend | + | Update |
| + | |||
| + | 15:18:28 < adrian> the rate control API is done; that shoud be changed to " | ||
| + | 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**: [[/ | + | **Technical Contact**: [[/ |
| Build a " | Build a " | ||
| Line 50: | Line 54: | ||
| //Suggested %%SoC%% project idea// | //Suggested %%SoC%% project idea// | ||
| - | **Technical Contact**: | + | **Technical Contact**: |
| 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/ | ===== Extend/ | ||
| - | **Technical Contact**::: [[/freebsd-wireless@freebsd.org|freebsd-wireless@freebsd.org]] | + | **Technical Contact**: |
| 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/ | ===== Implement a new VAP type that is specifically for raw frame injection/ | ||
| - | **Technical Contact**::: [[/freebsd-wireless@freebsd.org|freebsd-wireless@freebsd.org]] | + | **Technical Contact**: |
| None of the current operating modes are really designed for raw frame injection with no actual MLME functionality. | None of the current operating modes are really designed for raw frame injection with no actual MLME functionality. | ||
| 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/ | ||
| + | |||
| + | **Technical Contact**: < | ||
| + | |||
| + | The ath(4) hardware has some live counters which track the channel status - how much time is spent TX' | ||
| + | |||
| + | 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**: < | ||
| + | |||
| + | 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**: < | ||
| + | |||
| + | Both the wireless stack and individual drivers provide a very large amount of useful statistics information, | ||
| + | |||
| + | 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/ | ||
| + | |||
| + | ==== Requirements ==== | ||
| + | |||
| + | * Good knowledge of javascript/ | ||
| + | * 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. | ||