Mininet on FreeBSD

This page describes the ongoing work of porting Mininet to FreeBSD.

Link to the repo: https://github.com/akoshibe/mininet

Motivation

Mininet is a network emulation tool that has seen fairly wide usage in software defined networking (SDN). A good chunk of Mininet's appeal comes from how it bundles in tools, controllers, and software switches like Open vSwitch (OVS) that are useful for development and research related to, or for learning about, SDN.

Mininet relies on cgroups and network namespaces to emulate network nodes and links, and tools like tc to shape traffic, meaning that someone who currently wants to use it either must run Ubuntu(or another supported Linux distribution) or run it in a VM where Mininet can be installed and used.

Mininet also has a wish list, which includes support on other platforms.

Approach

Mininet mostly hides away platform-specific features into a few classes and methods that call the right shell commands to use them. The work here takes advantage of the fact that many of the commands and features that Mininet relies on has analogues in FreeBSD. To be specific:

As for bundled software, some, like OVS, is already available as a port (albeit as a userspace switch). Others, like the OpenFlow reference switch, aren't as readily available, and either need to be ported or replaced with suitable substitutes.

Status

What's there, and/or working:

What's missing

What haven't been tested/tried

Known bugs

Additional Parts

These are some things that might be interesting or nice to have.

Mininet (last edited 2017-03-30T07:54:08+0000 by AyakaKoshibe)