Now that the new Solaris WiFi architecture has integrated into Build 54 of Nevada, this seemed an appropriate time to interrupt the static with a fresh blog entry. In short, WiFi's integration represents both a new beginning for WiFi on Solaris and a milestone for the new architecture of Solaris networking. I realize such hyperbole may set off more than a few BS-meters, so let me back these statements up with some specifics.
First, with regard to WiFi:
-
The kernel now has first-class support for the WiFi link-layer
protocols. Previously, WiFi drivers in Solaris masqueraded as Ethernet
drivers, and internally performed header translations to send and
receive actual WiFi link-layer frames.
Having first-class support for WiFi simplifies our codebase, reduces per-packet overhead, introduces WiFi-specific kstats, and opens the door for network sniffers like snoop and Ethereal to directly interpret WiFi frames on Solaris via the new DLIOCNATIVE ioctl.
-
Similarly, the kernel's GLDv3 networking driver framework now natively
supports WiFi, allowing WiFi to be seamlessly handled by the protocol
stack. Accordingly, the bundled ath driver has been
ported to GLDv3, and all unbundled drivers have either been ported
to GLDv3 or in the process of being ported. Previously, WiFi drivers
were relegated to the GLDv2 framework, which is no longer under active
development.
-
The kernel now has a dedicated net80211
kernel module which facilitates code sharing across WiFi drivers. This
kernel module is based closely on the mature and robust FreeBSD 7 WLAN module, allowing
us to easily incorporate enhancements as they become available.
Previously, different versions of the WLAN framework had been directly
linked into each driver, which was a significant maintenance and
support hazard.
- As a result of (2), WiFi drivers can now be managed using our GLDv3 administration command, dladm. For instance, running dladm show-link on a laptop now shows any available WiFi links alongside the Ethernet links. In addition, new dladm subcommands have been added to allow WiFi administration -- e.g., to connect to the most optimal unencrypted WiFi link in-range, just run dladm connect-wifi. Or you can create keys with dladm create-secobj and then pass those keys to connect-wifi. Check out the EXAMPLES section of the latest dladm manpage for specifics.
Collectively -- and in combination with other smaller improvements -- I hope you agree that this adds up to a solid foundation for WiFi on Solaris. Moreover, this foundation greatly benefits the development of our two follow-on WiFi projects -- specifically, WPA/WPA2 support, and bundled support for many more WiFi chipsets.
Now, with regard to Solaris Networking, WiFi both builds on recent work by other projects and paves the way for ongoing and future projects:
-
The new WiFi support in GLDv3 makes use of the MAC
Type plugin architecture integrated by Project
Clearview into Build 44 of Nevada. In fact, two plugin operations
-- mtops_header_cook()
and mtops_header_uncook()
-- were designed around WiFi's requirements. The entire mac_wifi
plugin source is just 415 lines of straightforward code, including
comments. Without the MAC Type plugin architecture, native WiFi
support would have been significantly more complex and less elegant.
-
The userland WiFi architecture was designed to be easily used by future
administrative tools -- especially Network Auto-Magic
(NWAM). Specifically, the heavy lifting for the new WiFi
dladm subcommands is actually done by the new libwladm
library, rendering dladm mostly a trivial wrapper around
the libwladm routines.
This separation of WiFi mechanism from UI policy allows other tools such as NWAM to make use of the WiFi framework without having to resort to ugly calls to dladm or (gag) code duplication. Note that libwladm is currently Consolidation Private, and thus is only safe to call from code in the ON consolidation.
-
Enhancing dladm to support WiFi required new facilities for
administering WEP keys and WiFi properties (e.g., radio and powermode
settings). However, to keep the dladm administrative model
simple and extensible, we introduced two new generic dladm
facilities: link properties and secure objects.
While these facilities are only used by WiFi at present, future projects will extend them in new directions. For instance, both Project Clearview and IP Instances already have new link properties planned (autopush and zone respectively), and an upcoming project to take administration out of the ndd(1M) stone-age will likely build extensively on link properties. Similarly, future secure objects will exist for WPA/WPA2 keys and perhaps other secure data such as certificates.
Looking ahead to 2007, Project Clearview, NWAM, Crossbow, and IP Instances will all make use of features introduced by WiFi - and with features introduced by one another -- to collectively realize a "new world order" for Solaris networking. Stay tuned, it's going to rock.
Peter Memishian Last modified: Mon Dec 4 16:21:48 EST 2006 Technorati Tag: OpenSolaris
Technorati Tag: Solaris