🎛 Multipath Software Defined Networking Controller which sets up multipath forwarding tables and adjusts them based on network measurements
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
controller Updated controller to latest version Jan 19, 2017
demo Update README.md May 10, 2016
README.md Update README.md Nov 11, 2017
network_create.sh First commit Jan 15, 2016
start_controller.sh First commit Jan 15, 2016
topologies.py First commit Jan 15, 2016


Multipath SDN Controller

This SDN Controller runs on top of a multipath network and sets up optimal multipath forwarding flow tables to maximize throughput. It uses Ryu and can be tested on an emulated network such as Mininet.


The controller requires a modified version of OpenvSwitch in order to run. It can be found in the following repositories, togheter with information about its modifications: https://github.com/dariobanfi/ovs-multipath


The controller therefore has three logic components:

  • Topology Discovery Component This component is used to discover the SDN switches connected to the controller and have knowledge of the paths between them. This can be automatically be done on L2 Topologies through the Link Layer Discovery Protocol (LLDP) but can be more complex over network-layer routing and require a manual con guration (done through REST APIs).
  • Multipath Routing Component It uses the network knowledge to compute multiple paths and push the resulting computation as ow rules to the SDN switches. The rules can be a simple forward or a multipath forward, which splits the ow packets over two or more routes. The controller might additionally set up packet reordering rules at a switch that
  • Network Measurement Component This component is used to do real-time measurements of the network. The con- troller keeps an estimate of the latency and bandwidth of the multiple paths that connect the SDN switches of the multipath topology. This data is used by the multipath routing component to compute forwarding tables which maximize the throughput between the nodes.


Check out a visualization of the network benefits over here: https://www.youtube.com/watch?v=hkgf7l9Lshw&feature=youtu.be

To run the demo make sure to install the dependencies with pip (like bottle, ryu, etc) and to provide a video file to be streamed