A bunch of scripts and files that describe topology creation, the topologies, the testing data, real-time graph rendering, table creation and chart creation.
- Install Mininet, Ryu and Python3
-
- Untested on Mininet compiled against Python2
-
- Untested on Ryu compiled against Python2
- Either run
pip3 install -r requirements.txtwith enough privileges on your system or install those requirements from your package manager. - Run
makeas root.
rm -rf boxplotsrm -rf resultcacherm -rf *.jsonrm -rf *.pdfrm -rf *.pdf.bw.txtrm -rf *.state
Or, you can simply run make clear to run them all.
- On
latencycontroller.py, create your algorithm as a class child of AbstractPathEvaluator (example:MyPathEvaluator), where you override “__call__(self, ...)” with your algorithm. - On
latencycontroller.py, add the class you created as an entry of thepath_evaluatorsdict (example: “'my_path_eval': MyPathEvaluator,”). - Add the key in the previous dict for your class into the
ALGOSlist (example: “'my_path_eval',”).
That's it.
- Create a topology and save it; we're going to use
my_topo.mnin this example. - Add a recipe to
Makefile:my_topo.json:
./topomn2json.py my_topo - Add that same last line to the end of
generatetoposrecipe. - Add add
my_topo.jsonas a requirement fortestallrecipe. - Add
my_topo.jsonat the end of thetopoautostandalonetest.pyline of thetestallrecipe.
- Create a copy from an existing one, such as
topocreatesimpletree.py. - Give your name to the copy, such as
topocreatemy.py. - Edit your
topocreatemy.pyto the default value be the name you want, such asmy_topo. - Edit
create_topoon yourtopocreatemy.pyto return the topology you want. - Add a recipe to
Makefile:my_topo.json:
./topocreatemy.py - Add that same last line to the end of
generatetoposrecipe. - Add add
my_topo.jsonas a requirement fortestallrecipe. - Add
my_topo.jsonat the end of thetopoautostandalonetest.pyline of thetestallrecipe.
Assumption: you already have a recipe for “my_topo.json” created and configured on the Makefile.
- Run
make my_topo.pdf.
- Run
make viewer.
Your topology will show on screen as soon as your controller starts up.
- About node color meaning:
-
- Light green nodes are hosts.
-
- Pink nodes are switches which weren't already initialized by the controller.
-
- Cyan nodes are switches which were already initialized by the controller.
- About edge color meaning:
-
- If the edge has its green channel on, that edge is connected to a switch which color is light red.
-
- If the edge has its red channel on, that's the route OSPF would choose.
-
- If the edge has its blue channel on, its intensity indicates what fraction of the traffic is being routed on there.
- The node labels indicates the fraction of the link that is being used. As all links are Full-Duplex links, it ranges from 0 to 2.
ryu-manager latencycontroller.py my_topo.json