Multipath Transmission in SDN.
This repository using ryu controller implement multipath transminssion in SDN.
For implement multipath transmission, we need to modify Open vSwitch(OvS) and remake it.
The Changing includes select function in group table.
Setting buckets transmission method to implement multipath transmission.
Reference: https://github.com/saeenali/openvswitch/wiki/Stochastic-Switching-using-Open-vSwitch-in-Mininet
This repository provide ryu controller file and mininet topology to implement multipath transmission in SDN.
Before you try this repository, you need to install the environments. (ryu, mininet, openvswitch)
This repository will update transmission weights every 30 seconds.
If link is interrupted or switch is down, the transmission rule will be revised real time.
mininet shows:
Ryu Controller shows:
Ubuntu 14.04
OpenFlow v1.3
Open vSwitch 2.3.1
Ryu Controller 3.12
Mininet 2.2.1
This repository use sFlow to monitor network performance.
Using curl cmd to catch the parameter for multipath weights.
curl can catch network paramaters on the web by sFlow.
You can also use network monitoring tools(NetFlow, sFlow......) or LLDP Packet to monitor network performance.
The topology shows:
Quickly Install
pip install ryu
installing from source code
git clone git://github.com/osrg/ryu.git
cd ryu; python ./setup.py install
Reference: https://ryu-sdn.org/
-
choose the ovs version from here:
Reference: http://www.openvswitch.org//download/ -
modify group table transmission rule:
Reference: https://github.com/saeenali/openvswitch/wiki/Stochastic-Switching-using-Open-vSwitch-in-Mininet -
build and install.
After finishing, you can use multipath transmisstion on ovs.
git clone git://github.com/mininet/mininet
cd mininet
git tag
git checkout -b 2.2.1 2.2.1
cd util
./install.sh -3nV 2.3.1
cmd "./install.sh -h" shows function of parameters.
this can customize the installation.
Mininet's version is 2.2.1.
Open vSwitch's version is 2.3.1.
When you installed environment, you can run the cmd to experiment.
on ryu controller:
sudo ryu-manager --observe-link multipath_controller_4_link_monitor.py
on mininet:
sudo mn --custom multipath_4_link_topo.py --topo mytopo --controller=remote