Environmental Independence : BSD Kernel TCP / IP in Userspace Antti Kantee

Antti Kantee
Abstract:Code is code. In the entire application stack only a very small fraction of code is special in the sense that it requires the hardware to run in privileged mode. In theory all the rest can run in either the kernel or user domain, with the tradeoffs being well-known. Engineering an operating system core so that the same code can function both in user and kernel mode alike provides numerous benefits: testing and development, virtualization, stability and reusability of code in applications. In the current Unix style, code is divided to kernel code and userspace code. Although some limited code modules, such as byte order and address translation routines may be shared, functionality at large is not available in both domains. This paper discusses the nuts and bolts of running the BSD networking code in userspace. It does not advocate turning BSD into a microkernel operating system, but rather gives concrete level proof that the kernel networking stack and kernel networking applications can be run in userspace. The virtual userspace networking stack is measured to be performant enough to be able to saturate a regular network and to be over 10 times faster than the kernel networking stack running in a machine emulator. An implementation for NetBSD available from the NetBSD source repository is discussed.
Computer Science,Environmental Science
What problem does this paper attempt to address?