In last weeks Packet Pushers episode Show 177 – Current Practices I speculated about the relationship of Cisco and QNX. Turns out that most of what I discussed was wide of the mark and partly incorrect.
I received an anonymous email which explained that the while Cisco is a licensee of QNX the implementation uses very little of the QNX software. A company can choose to license the micro-kernel plus a wide range of other elements such as network stack, GUI, CLI and I/O modules for storage. Instead Cisco uses just the kernel in IOS-XR and develops most of the software itself.
in contrast to almost all other router vendors, where routes, ARP entries etc end up being programmed into kernel space, using kernel data structures. This is much quicker to get a basic box up if you’re a startup, but much as I love Linux, these data structures are a long way off state of the art for scale and features. Plus most code in kernel space can’t be restarted or upgraded without killing the OS instance.
So what is the value of a micro-kernel. I don’t have a good understanding of this topic and since most vendors, including Cisco, are using Linux does it matter ? We know that Broadcom, Marvell and Intel produce the software drivers for Linux that some vendors are using in their implementations. Other vendors develop their own drivers which, as I understand, improves quality or performance.
Using Linux as a microkernel provides just enough operating system to run the software drivers and applications that vendors add.
So QNX is used in IOS-XR releases which runs in the CRS and just a few other routers. While QNX may be a leaky boat attached to sinking ship, the impact on Cisco is probably limited overall.
I’m hoping to organise a podcast in the near future. If you are someone who knows something about the software architecture, then get in contact and lets see if we share the knowledge with the community. People should understand more about software architectures on their network devices.