Initial Linux implementations of the node functionality resulted in problems with the performance and stability of the systems. Partly they were due to the older hardware used: the PCI controller not allowing to assign different interrupts to the wireless cards and the interrupt handling in the Linux kernel. Other problems were connected with using multiple wireless cards with the PRISM hostap driver [HostAP]. We could have used other drivers (e.g. wlan-ng), but the hostap driver was the only one implementing an user software (i.e. not firmware) driven access point functionality. Another major issue was the number of different Linux distributions around and the rapid change thereof.
Using FreeBSD solved some of the Linux-related problems, like interrupt handling on heavily loaded systems, while adding features such as having one build tree, a steady release and distribution scheme. Furthermore, a single stable PRISM 2 support stack and access to a more mature configuration system makes the system more suitable for mass deployment. Another benefit of using FreeBSD is the inclusion of several wireless network card firmware cutoff checks which will restrict the functionality accessible from userland when a too old version of the firmware is detected.
For the Compaq WL200 card we did have to fix a specific routing bug which was introduced in between FreeBSD 4.6 and 4.7 as part of the cardbus / newbus project. This has since been picked up by CURRENT and will be in the next release of FreeBSD. Prior to FreeBSD 5.0 release some issues where also found and reported with regard to the wicontrol and ifconfig settings not being propagated properly. These have since been fixed.
It should be noted that each of the different wireless stacks on Linux has at least one or two elements which are vastly superior to the rather dated PRISM 2 support in FreeBSD; but unfortunately each stack also exhibited showstoppers ranging from erroneous detection of cards to kernel panics. It is not unlikely that a maturing or crystallizing, of one of the wireless options of Linux will make Linux a viable choice in the near future. This, combined for example with a good AODV routing protocol implementation (see section 3.4), may again cause us to switch platforms. Another, unplanned, benefit of the BSD stack is the rather mature diskless boot system which is part of the standard distribution; which is an excellent starting point for automated installers and systems operating from a read-only storage device.
As FreeBSD has just a single version number and release path; the entire 'build' procedure of the master machine from which all nodes are automatically built entails less than 5 kbytes of script; just short of one page. The 'definition' of a node, including kernel configuration, routing, antenna frequencies etc.; i.e. all that needs to be defined given a specific version of FreeBSD, currently runs at around 12 kbytes of data.
Tools such as 'mergemaster' available in FreeBSD and the rather elaborate documentation make upgrades in the field, even across versions, reliable and predictable. Likewise extensive use is made of the 'ports' collection to manage the versioning and updating of ``third party'' packages such as the ISC-Bind, Zebra and a few others.