UPDATE: You will not be able to run this specific version against the latest Mininet 2.2. There was a change in Mininet that removed a class that MiniEdit referenced. But there is good news. MiniEdit has been included in the Mininet 2.2 distribution and has this bug fixed in it. So if you want MiniEdit that was released with Mininet 2.2, grab it from the link below.


Out with another update. As I mentioned in my last post, I’m going to start using new functions in Mininet that are not backward compatible with Mininet 2.1.0 or older. So to use this version, you will need to have the latest version of Mininet from GITHUB.

    • Support TCP or SSL for remote controller
    • Some UI layout changes in the host and switch properties.
    • Support new Mininet HostWithPrivateDirs class. Allows you to mount private directories for each host which can also be mounted over an existing directory like /var/tmp or an application directory like /etc/httpd.  Another example is available in Mininet in
    • Replace custom code to set OF protocols with new Mininet OVSSwitch parameter. Below is an example of the new usage in Mininet.
s2 = net.addSwitch( 's2', protocols='OpenFlow13' )
s2 = net.addSwitch( 's2', protocols='OpenFlow13,OpenFlow11' )

Download MiniEdit here.

This post ‘MiniEdit’ first appeared on



Mininet and Open vSwitch on CentOS 7

The following are the steps I took to get Mininet running in CentOS 7.  I ran into many issues trying to get OVS installed and running.  There was a conflict between the OVS script tools starting OVSDB and SELinux.  I had to set SELinux to Passive to work around it.  So depending on what system you are running this on,  be advised of the following steps and what system level settings I changed for security.  I assume most of these will be corrected once OVS officially supports CentOS/RHEL 7.

Installing Mininet on CentOS7
– I needed VM with 2GB memory to get OS installed.
– I used CentOS-7.0-1406-x86_64-livecd.iso to install the VM. I’m not going to outline steps for installing CentOS.
– I created a local user called mininet and gave it sudo access and ran the remainder as that user.
– Install SSHD
sudo yum -y install openssh-server
sudo chkconfig sshd on
sudo service sshd start

– Disable SELinux to get OVSDB to stasrt
sudo setenforce Permissive

– Modify sudoers secure_path to add /usr/local/bin so the ‘controller’ which be found.
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

– Install GIT
sudo yum -y install git

– Get Mininet.
git clone git://
– Update installer mininet/util/
***ADD the following before the line ‘test -e /etc/fedora-release && DIST=”Fedora”‘. Somewhere around line 47.  May differ.
test -e /etc/centos-release && DIST="CentOS"
if [ "$DIST" = "CentOS" ]; then
    install='sudo yum -y install'
    remove='sudo yum -y erase'
    pkginst='sudo rpm -ivh'
    # Prereqs for this script
    if ! which lsb_release &> /dev/null; then
        $install redhat-lsb-core

if ! echo $DIST | egrep 'Ubuntu|Debian|Fedora|CentOS'; then
    echo " currently only supports Ubuntu, Debian and Fedora."
    exit 1

– Install Mininet and OpenFlow reference.  Not OVS.
mininet/util/ -nf

– Build and Install OVS
sudo yum -y install gcc make python-devel openssl-devel kernel-devel graphviz \
kernel-debug-devel autoconf automake rpm-build redhat-rpm-config \
libtool wget

mkdir -p /home/mininet/rpmbuild/SOURCES/
cd /home/mininet/rpmbuild/SOURCES/
tar zxvf openvswitch-2.3.0.tar.gz
cd openvswitch-2.3.0
rpmbuild -bb --without check rhel/openvswitch.spec
sudo rpm -ivh --nodeps /home/mininet/rpmbuild/RPMS/x86_64/openvswitch*.rpm

– Start OVS
sudo /etc/init.d/openvswitch start

– Check working
[mininet@localhost ~]$ sudo ovs-vsctl show
    ovs_version: "2.3.0"

– Test out Mininet
[mininet@localhost ~]$ sudo mn --test pingall
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2
*** Adding switches:
*** Adding links:
(h1, s1) (h2, s1)
*** Configuring hosts
h1 h2
*** Starting controller
*** Starting 1 switches
*** Waiting for switches to connect
*** Ping: testing ping reachability
h1 -> h2
h2 -> h1
*** Results: 0% dropped (2/2 received)
*** Stopping 1 controllers
*** Stopping 1 switches
s1 ..
*** Stopping 2 hosts
h1 h2
*** Done
completed in 5.397 seconds

So it seems to work.  But there are a few things to note.

1. The kernel datapath is not installed.  This is totally userspace.  I could not get the kernel module to compile.  Wait until official support of RHEL7.
2. The above is the extent of the testing I did.  There may be other issues that crop up.

Hope this helps anyone that uses CentOS or RHEL 7 with Mininet.


This post ‘Mininet and OVS on CentOS 7’ first appeared on


It’s been a little while since I published an update.  Here are a few enhancements and bug fixes.

  • Export Script fixes
    • Link class was not getting set properly for TCLink
    • Now also exports the sFlow and NetFlow configuration you setup in MiniEdit
  • Fix loading saved MiniEdit topologies JSON parsing problem.  Now parses properly back into Python
  • Improve importTopo to support TCLink. Note that MiniEdit does not support all the TCLink parameters at this time.
    sudo ./ –custom –topo mytopo –link tc
  • Hosts and OF Switches now have text field for user defined shell command/script to run during node startup and shutdown.
    • Start and Stop commands are on the Host and OF switch properties.
    • The Start command is run after all nodes have started(net.start()).
    • The Stop command is the first thing run before the nodes are stopped (net.stop())

Download MiniEdit here.

This will probably be the last release I make using the Mininet 2.1.0 code base.  My next release will be realigned to use the latest code from Mininet to pick up new features introduced after 2.1.0.

Hope everyone enjoys and is having a good summer so far.

This post ‘MiniEdit’ first appeared on