Mininet on OpenBSD

Using rdomains for interactive SDN testing and development

Mininet is an interactive development tool designed for the purpose of prototyping and testing of SDN controllers, their applications, and SDN-capable switches. It, however, heavily depends on Linux-specific network virtualization features and applications. This talk describes the work to create a version of Mininet that is capable of running on OpenBSD by making use of rdomain(4)s and the SDN components available on it, namely switch(4) and switchd(8).

A developer of an SDN component can only get so far with piecemeal validation and unit testing. Sooner or later, that component will need to be tested within reasonably realistic SDN environments to see how it fares as part of a network. Mininet is one tool that allows this type of testing. It allows developers to quickly create custom network topologies and test scenarios, and to interact with their emulated network via a CLI. It has also seen fairly wide usage among SDN developers because of its flexibility and ease-of-use, and its historical ties to, and support of, OpenFlow.

OpenBSD implements its own SDN-capable switch and controller, and a tool like Mininet would make developing and testing further enhancements for these components easier. I worked on getting Mininet to run on OpenBSD with that idea in mind, and it was eventually imported into the ports tree as net/mininet.

In this talk, I will describe how Mininet was ported to OpenBSD - In specific, how the various components that enable Mininet to emulate SDN networks on Linux (e.g., network namespaces, OpenvSwitch) were translated over to what is available on OpenBSD (e.g., rdomain(4)s, switch(4) and switchd(8)). Along the way I will give an overview of SDN, examples of how Mininet is used, and some the issues that were encountered during the porting process so far. Since this is a work-in-progress, I will end with some of the work that remains.