
OpenOnload is a high performance network stack for Linux, supporting TCP/UDP/IP networking with the BSD sockets API. It is unusual in that it performs network processing at user-level, bypassing the OS kernel entirely on the data path. Networking overheads are reduced considerably without sacrificing the security and resource management functionality that the kernel normally provides.
Google TechTalk We recently gave a tech-talk at Google all about the implementation of OpenOnload. Watch here, and the slides are here.
OpenOnload is compatible at the binary level with existing applications. It comprises a user-level shared library that implements the protocol stack, and a supporting kernel module. The stack addresses a number of the challenges posed to a general purpose user-level network stack including: intercepting network system calls, binary compatibility with existing applications, maintaining security, supporting the semantics of system calls such as fork() and exec(), passing sockets through Unix domain sockets and advancing the protocol when the application is not scheduled. OpenOnload also includes innovative techniques that reduce interrupt overheads and improve scalability.
OpenOnload is available for download, and is licenced under the GPLv2. It is compatible with the SMC 10G Ethernet NICs (SMC10GPCIe-XFP and SMC10GPCIe-10BT) running on x86 (ia32, amd64/emt64) platforms with Linux 2.6 kernels.
Support for other network controllers which are capable of providing user-accessible (or virtualized) network interfaces is possible and interested parties are recommended to contact the OpenOnload developers.
Current project directions include:
Feedback, suggestions, bug reports are all welcome on the OpenOnload email address.
[ Downloads | Contact Us ]