Speeding up next-generation networking
An interessting talk (local copy) from Van Jacobson and Bob Felderman from the Linux.conf.au 2006 about the history and future of implementing networking stacks:
“The way we’ve always done it is not necessarily the same as the right way to do it”
The background is that the networking stacks we know today were initially created for MULTICS machines and had to had the well-known in-kernel design (networking card -> Interrupt service routine -> soft interrupt -> socket interface -> user space read()) because of the very slow paging mechanisms of MULTICS. This would not matter, if all computers would be singlecore machines. But on a multicore machines all the protocol work should be moved to the processor core that’s going to handle the data.
As a result a linear scalability on multicore systems can be achieved and everything gets a lot faster (about 6 times). Within the slides there are some measurements done by Van Jacobson on a patched linux machine supporting the benefits of this networking design.
But there is also some critisism from LWN here and here on this networking approach. Especially this detail might be of interest:
In traditional approach you also fetch all the headers on softirq, but you do all the required work with them immediately and do not access them when the rest of processing is done in process context. I do not see how netchannels (without hardware classification) can improve something here. At the first sight it makes locality worse. [...] It is an amazing toy. But I see nothing, which could promote its status to practical. Exokernels used to do this thing for ages, and all the performance gains are compensated by overcomplicated classification engine, which has to remain in kernel and essentially to do the same work which routing/firewalling/socket hash tables do.
So more research might be neccessary to implement Van Jacobsons idea and make it a success.
Recent Entries
- Is my code compiled on Mono (or Microsoft .NET)?
- Definition of C#
- Google Wave – A Revolution done wrong!
- C# and implicit conversions
- Mein Cluster hat vier Räder ;)
- OpenVPN and Windows7
- M$ SharePoint and Symlinks…
- Die sones GmbH sucht weitere engagierte Softwareentwickler
- Detexify2 – Latex symbol classifier
- Piratenspot “Klarmachen zum Ändern” 2009

