A group of major vendors has put forward an open source TCP/IP stack they say is designed to reinvigorate the ancient and rather crusty protocol.
Nokia, ARM, and Enea are offering up both code and tutorials here for their OpenFastPath user-space TCP/IP implementation.
As The Register has previously noted, user-space networking is designed to get TCP/IP out of the kernel space, for two reasons: kernels have absorbed a lot of code over the years; and using the kernel for packet processing involves extra operations to get packets into memory, pass them to the kernel, and push them back out to the interface.
The BBC, for example, has crafted a user-space stack so its video farms can push out the 340,000 packets per second needed for high-definition video, and a Swiss company called Teclo is using a user-space stack to improve mobile network processing.
Enter OpenFastPath: based on FreeBSD, it currently includes User Datagram Protocol (UDP), Transmission Control Protocol (TCP), and Internet Control Message Protocol (ICMP) functions, with more to be added in the future.
OpenFastPath system view. Click to embiggen
Both IPv4 and IPv6 are supported, with an “optimised callback-based zero-copy socket API” to keep packet processing in user-space as far as possible. Since the feature set isn't complete, OpenFastPath as it now stands will still have to hand-off some functions either to the kernel or to another software packet processor.
So far so good, but it's in the cloud that the three companies hope OpenFastPath will shine, with particular attention to comms processing on bare metal switches.
They say the stack is optimised for OpenDataPlane (ODP) programming interfaces. This will let OpenFastPath take advantage of acceleration in systems-on-a-chip that support ODP, and make the protocol programmable via the ODP environment.
As well as the three founding companies, the OpenFastPath Foundation claims support from AMD, Cavium, Freescale, HP and Linaro.
The group is hoping future contributors will work on interfaces for the open source Data Plane Development Kit (DPDK, here). Currently, data plane integration happens via the ODP-DPDK layer. ®