CNET is running a blurb on Xorp, the eXtensible Open Router Platform. According to the article, Xorp’s authors are hailing it as “the Linux of routing.” Since open-source router platforms are one of my interests, and I’d never really heard of Xorp, I just took a quick look and was pleasantly surprised.
It’s based on the Click modular router from MIT, which I’ve been fascinated with for years. Click is largely a replacement for Linux’s (and potentially other free OS’s) networking stack. It slides in between the hardware network interface drivers and moves the kernel’s native packet handling off to the side. Click’s packet processing is completely programmable; you can write network switches, routers, VPN hardware, mesh routers, programmable network test hardware, or nearly anything else with Click, all without fighting against the kernel’s native packet handling. More importantly, Click is freakishly fast; one of the demos I read about a couple years ago was handling roughly 1 million packets per second on a normal dual-CPU PC.
The big problem with Click was that it was difficult to configure. You had to understand IP networking at a very low level in order to make heads or tails of it, and even a simple 2-port router took most of a page to configure. Multiport routers or switches were doable, but you wouldn’t want to set them up by hand.
Unless I’m mis-reading things, this is where Xorp comes in–it’s a full wrapper for Click. It looks like it provides a CLI, dynamic routing support, and a simple configuration language. Xorp’s backend then sets Click up and off it goes, flinging packets around at freakish speed (er, freakish for a PC, that is–I wouldn’t put it up against a Catalyst 6000 or faster).
Xorp 1.0 is due out soon. I haven’t downloaded it yet, or even looked through more then one whitepaper, but I’m looking forward to playing with it. Assuming that someone goes to the trouble of gluing this together with a small Linux distribution (I think it’s Linux-based; their website and whitepaper don’t say, but Click only works on Linux and FreeBSD, and the FreeBSD layer has been broken for a while), it should be an easy way to build cheap mid-speed routers.