Although the resulting product was decried by many converts to the open source movement, the developers successfully asserted their right under the GPL to keep portions of the code proprietary. But it also prompted multiple authors to fork new code bases aimed at satisfying a wide range of requirements.
Most retail wireless routers are based on Systems-on-Chip (SoC) that incorporate a processor, memory, and specialized peripherals. Such systems restrict the number of hardwired LAN connections, optional software and router-based packet processing. Open Source gives us a way to address these issues – we can port wireless router software to a
new target processor. But we need a radio to interface to the WiFi transmissions.
WiFi radio units are available from a number of vendors. Marvell’s 88W8786U radio module is typical of module functionality. The device provides the combined functions of the IEEE Standard 802.11/802.11b Direct Sequence Spread Spectrum (DSSS), 802.11g and 802.11n Orthogonal Frequency Division Multiplexing (OFDM), baseband modulation, Medium Access Controller (MAC), CPU, memory, host interfaces, direct-conversion WLAN RF radio, and Bluetooth coexistence on a single integrated chip. The CPU used in these modules provides control of the radio elements themselves. Making a full featured wireless router requires additional processing power, memory, and peripherals.
ADI Engineering (1) also offers a WiFi capable radio, RM1 High-Power MiniPCI 802.11 a/b/g Radio, as part of its network boards. ADI also offers customized hardware based on stahdard Intel processors, or customized single chip ATOM-based computers as a solution to needs outside their standard offerings.
No matter what WiFi radio is chosen for your design, there still is a lot of software needed to operate a large scale wireless router. DD-WRT and OpenWRT are probably the most popular wireless router software packages available. Even though these packages will implement a wireless router with minimal effort, there is a porting effort involved to make them operate on an ATOM-type CPU. Still, existing ports to other embedded processors simplifies the job - OpenWRT is a Linux distribution configured for embedded devices including members of the Intel architecture processor family.
OpenWRT provides these basic wireless router services
- port forwarding of external traffic to computers inside the LAN
- UPnP for dynamically configured port forwarding
- static DHCP leases
- extensive firewall and router configuration
- QoS for applications such as VoIP, online gaming, and streaming media
- configuration of the device as a wireless repeater, wireless access point, and wireless bridge
- mesh networking
- use of Dynamic DNS services to maintain a fixed domain name with an ISP that does not provide a static IP address
- for devices with USB ports, it supports printer sharing, Windows-compatible file sharing (via SAMBA), USB audio, and most any device that can be connected
- realtime network monitoring
The code base for OpenWRT includes all retail wireless router functions, and adds some capabilities usually found on enterprise class routers. Since OpenWRT is the product of the Open Source movement, there are additions that developers either thought were “cool” or they had a personal interest in developing. A third party offering from EXPlanetOne adds load balancing, normally an enterprise class capability. There are a number of third party Open Source code forks of the original software. Some of these can be added to OpenWRT, while others require complete rewrites.
Still other Open Source code bases can add more capability, possibly while maintaining the OpenWRT base. Zeroshell is one software package that provides a great number of Internet service routines. Zeroshell is primarily focused on LAN services, but many of these are also of critical importance to enterprise class wireless routers. Zeroshell offers a Wireless Access Point mode with Multiple SSID and VLAN support by using WiFi network cards.
A Zeroshell box with one WiFi card could become an IEEE 802.11a/b/g Access Point providing reliable authentication and dynamic keys exchange by 802.1X and WPA protocols. Of course, the authentication takes place using EAP-TLS and PEAP over the integrated RADIUS server that is part of Zeroshell.
Porting any one of the wireless router software packages may become a large undertaking based on the relatively limited number of supported CPU architectures. The amount of work required to port a specific piece fo software is difficult to predict in advance. Without doubt, combining disparate code bases for wireless routers will be a significant effort. But, the effort will be less than developing the entire application as a complete new development. For many wireless routers, a single chip-based hardware platform is preferred due to cost reasons. Other wireless routers can easily support a single board computer solution. Alisting od Intel-based COM boards may be found in an overview blog of COM boards.
Open Source may save development time and effort. But it isn’t free. How will you decide whether to use Open Source code or develop the application completely yourself?
- ADI Engineering is an Associate Member of the Intel Embedded Alliance
Roving Reporter (Intel Contractor)
Intel(r) Embedded Alliance