Last week in InfoWorld's New Tech Forum, Dinesh Dutt outlined the thinking behind Cumulus Networks' Linux-based networking solution. The whole piece is a great read, but to distill his point, he makes the case for running Linux on network switches and discusses how Cumulus uses constant inspection of the Linux netlink socket family to modify the actions of ASICs within the switch.
Essentially, you make changes to various network configuration elements within Linux, and those are translated into directives that work at wire-speed across the switch. Thus, the kernel itself is not in the middle of the packet flow, but merely forming the directives to control that traffic.
[ Also on InfoWorld: Your next network operating system is Linux | Get expert networking how-to advice from InfoWorld's Networking Deep Dive PDF special report. | For the latest practical data center info and news, check out Paul Venezia's Deep End blog and InfoWorld's Data Center newsletter. ]
This is a very interesting solution, especially since Cumulus doesn't use any type of custom UI to achieve these results. Rather than collect all the configuration elements required in modern data center switching within a restricted shell, you manage the box just like any other Linux box.
Want L3 switching and VLANs? Use the 802.1q module and vconfig, and configure routing. Port aggregation? Use the bonding driver or the teaming driver, just as you would on any Linux server. Need OSPF? Go configure Quagga. In fact, the whole idea is that you treat a 52-port 10G switch as a Linux server with 52 10G interfaces.
Naturally, it also blurs the lines between server and network admins.
The old boundaries
On the one hand, most network administrators have been working in what are essentially restricted shells for their entire career. When you log into most switches or routers, you find some form of command-based configuration, with a central configuration file. Everything from IP address assignments to BGP directives live in the same file, and they are configured in the same way using similar syntax. This is how it's always been, leaving aside those woeful attempts at menu-based network device configuration. Network admins are used to dealing with purpose-built UIs and a high level of consistency between devices.
Linux admins, on the other hand, are used to dealing with a wide variety of interfaces and configuration elements. Depending on what needs to be configured, one package might have a smattering of different configuration files that follow a particular syntax, while a different package will have only one configuration file with a completely different configuration syntax. Changing parameters in /etc/ssh/sshd_config is nowhere close to adjusting a Postfix configuration, for instance. The only commonality is the need for a text editor like vi to make those changes. And using a text editor is much different than logging into a switch CLI and issuing commands for a live application, then saving the configuration.