SDN and Mininet
Where will it be used?
Definitely here
image source: backblaze.com
Very likely here
image source: computerbase.de
Maybe here
image source: heise.de
Not here
image source: avm.de
So … should I care as an end user?
-
No
What are the differences to classical networking?
image source: engeniustech.com
image source: networkscreen.com
Data forwarding and rule-making are part of the same device
image source: David Mahler via Youtube
Data forwarding and rule-making are decoupled
image source: David Mahler via Youtube
How are SDN controllers written?
SDN controller frameworks simplify writing controllers
1 from ryu.base import app_manager
2
3 class L2Switch(app_manager.RyuApp):
4 def __init__(self, *args, **kwargs):
5 super(L2Switch, self).__init__(*args, **kwargs)
source: http://ryu.readthedocs.io
How are SDN controllers tested?
Mininet
Mininet is a python-based network simulation tool
Using mininet one can test …
and more
Mininet uses container based virtualization to emulate network hosts
Containers are an alternative to classical full-OS virtualization
Applications in a Container are isolated from the other containers by the operating system kernel
Mininet uses the Linux container virtualization
features
⇒ Only runs on Linux
It can be installed using …
Mininet workflow
The virtual machine image provided by the mininet community has all of the required tool for running mininet pre-installed and pre-configured.
It is based on the Ubuntu Linux distribution so installing additional software is relatively easy.
The network topology is configured as a python script that is read by mininet.
It sets up the hosts to simulate and the forwarding devices connecting these hosts.
The openflow controller is responsible for analyzing packets entering the forwarding devices and for installing forwarding rules into the device.
Once the openflow controller is started is listens on a TCP port for connections from forwarding devices.
On the previous slide mininet was instructed to run the network topology written earlier and to connect to the custom openflow controller.
The example simulates three hosts connected to a single central switch.
In order to validate the behaviour of the openflow controller the packets flowing into and out of the simulated hosts is monitored.
This is done using the wireshark network analyzer.
The simulated hosts in the mininet topology are implemented using Linux container virtualization.
Any command available for execution on the mininet VM can also be used in the simulated hosts.
In the example at hand the ip addr
command is used on the
first host to find its IP address and the ping
command
is used to send packets from the second host to the first one.
If the test was successful the wireshark instances should show packets flowing between the two hosts.
The previous slide shows the setup I used while developing my openflow controllers.
The tools used are (in clockwise order): Text editor for editing the controllers, Wireshark network analyzer, documentation/source code of the framework I used, debug output of the controller, mininet shell.