March 15, 2011 posted by Antti Kantee

Rump is a componentization of the NetBSD kernel. It lends itself to multiple uses, such as running kernel code as services in userspace and for example makes the high-quality NetBSD kernel code base available for use in multiserver microkernel operating systems.

Running unmodified NetBSD kernel code in standalone userspace applications has been possible for years. Recently, it also became possible to use unmodified userland binaries as remote clients for these lightweight and modular kernel server instances. Things work straight out of the default NetBSD installation. For example, it is possible to run an unmodified web browser against a rump TCP/IP server and restart the TCP/IP server with minimal impact to the browser. Furthermore, it is possible to run a dedicated TCP/IP server for every networking application on the system. The combined flexibility of using proven kernel drivers in lightweight virtual servers is completely unique to NetBSD.

I have written two documents. One is a technical document explaining how the rump client/server architecture works and the other one is a tutorial targetted at users interested in testing how things work in practise. They can be read independent of each other. However, as things work slightly differently than in the classic microkernel / userspace OS / distributed OS / virtualization world, it is recommended to at least skim over the first two introductory sections of the tutorial to properly orient oneself for the technical article.

The implementation is production quality, so it is immediately possible to use and even build products on the features described.

Enjoy!