Marzipan builds systems of collaborating virtual machines, using the L4Ka::Pistachio microkernel as the hypervisor. Marzipan is a small L4 user-level task that manages virtual machines, assigns resources, and enforces policies. It takes advantage of the flexibility of the L4 API to construct an environment that supports classical virtual machine applications (such as server consolidation), federated systems of collaborating virtual machines (such as tiered servers), and domain specific systems where the virtual machine augments other L4-native applications.
The principal component of Marzipan is the resource monitor, an L4 root task. The resource monitor assumes authorative control over all machine resources. It distributes the resources between its children virtual machines. It also serves as a resource directory and locator, permitting virtual machines to publish services, which other virtual machines can locate.
Marzipan also includes the set of interface definitions used by the virtualization projects. Since communication between protection domains uses L4 IPC, the interfaces are flexible, easily enhanced to accomodate new features, and do not involve changes to the hypervisor (in contrast to typical virtual machine environments).
Marzipan is a research system. We use it to find best principles and practices for building virtual machine environments. Security is one of our research investigations (such as applying the principles of confinement recursively, to build multiple federated virtual machine systems in their own confinement domains). Performance, and multiprocessor performance, are active research topics. And we investigate intelligent solutions for remotely deploying, controlling, and configuring virtual machines.
The resource monitor supports IA32 and IA64 systems. The other platforms of L4Ka::Pistachio's rich platform support can be enabled as necessary.
The resource monitor is for L4 developers, and users of the afterburn project. It is also suitable as an example L4 application for beginning L4 developers.
Most of the source code is authored by and copyrighted by the University of Karlsruhe, and is released under the two-clause BSD license. The remaining source code (some utility routines) was imported from the BSD project, and is also licensed under the BSD license.
- Support mailing list
- Issues and limitations
Server consolidation example:
Federated server example:
Domain specialization example: