Go to file
Adler Neves c6b6bd16e4 avgdiffs 2019-08-27 23:55:37 -03:00
boxplots avgdiffs 2019-08-27 23:55:37 -03:00
resultcache first commit 2019-07-08 22:54:45 -03:00
.gitignore first commit 2019-07-08 22:54:45 -03:00
Makefile first release 2019-07-09 00:25:20 -03:00
README.md added DOI 2019-07-09 00:28:56 -03:00
__all__.autotests.json first commit 2019-07-08 22:54:45 -03:00
bcube.json first commit 2019-07-08 22:54:45 -03:00
bcube.pdf first commit 2019-07-08 22:54:45 -03:00
bcube.pdf.bw.txt first commit 2019-07-08 22:54:45 -03:00
bcube.py first commit 2019-07-08 22:54:45 -03:00
bcubeswitched.json first commit 2019-07-08 22:54:45 -03:00
bcubeswitched.pdf first commit 2019-07-08 22:54:45 -03:00
bcubeswitched.pdf.bw.txt first commit 2019-07-08 22:54:45 -03:00
bcubeswitched.py first commit 2019-07-08 22:54:45 -03:00
bigtopo.json first commit 2019-07-08 22:54:45 -03:00
bigtopo.pdf first commit 2019-07-08 22:54:45 -03:00
bigtopo.pdf.bw.txt first commit 2019-07-08 22:54:45 -03:00
bigtopo.py first commit 2019-07-08 22:54:45 -03:00
bipartite.json first commit 2019-07-08 22:54:45 -03:00
bipartite.pdf first commit 2019-07-08 22:54:45 -03:00
bipartite.pdf.bw.txt first commit 2019-07-08 22:54:45 -03:00
bipartite.py first commit 2019-07-08 22:54:45 -03:00
clos.json first commit 2019-07-08 22:54:45 -03:00
clos.pdf first commit 2019-07-08 22:54:45 -03:00
clos.pdf.bw.txt first commit 2019-07-08 22:54:45 -03:00
clos.py first commit 2019-07-08 22:54:45 -03:00
clos5.json first commit 2019-07-08 22:54:45 -03:00
clos5.pdf first commit 2019-07-08 22:54:45 -03:00
clos5.pdf.bw.txt first commit 2019-07-08 22:54:45 -03:00
clos5.py first commit 2019-07-08 22:54:45 -03:00
counteriter.py first commit 2019-07-08 22:54:45 -03:00
dcell.json first commit 2019-07-08 22:54:45 -03:00
dcell.pdf first commit 2019-07-08 22:54:45 -03:00
dcell.pdf.bw.txt first commit 2019-07-08 22:54:45 -03:00
dcell.py first commit 2019-07-08 22:54:45 -03:00
dcellswitched.json first commit 2019-07-08 22:54:45 -03:00
dcellswitched.pdf first commit 2019-07-08 22:54:45 -03:00
dcellswitched.pdf.bw.txt first commit 2019-07-08 22:54:45 -03:00
dcellswitched.py first commit 2019-07-08 22:54:45 -03:00
fattree.json first commit 2019-07-08 22:54:45 -03:00
fattree.pdf first commit 2019-07-08 22:54:45 -03:00
fattree.pdf.bw.txt first commit 2019-07-08 22:54:45 -03:00
fattree.py first commit 2019-07-08 22:54:45 -03:00
graphtools.py first commit 2019-07-08 22:54:45 -03:00
grid.json first commit 2019-07-08 22:54:45 -03:00
grid.pdf first commit 2019-07-08 22:54:45 -03:00
grid.pdf.bw.txt first commit 2019-07-08 22:54:45 -03:00
grid.py first commit 2019-07-08 22:54:45 -03:00
id2ip.py first commit 2019-07-08 22:54:45 -03:00
latencycontroller.py first commit 2019-07-08 22:54:45 -03:00
principle.json first commit 2019-07-08 22:54:45 -03:00
principle.mn first commit 2019-07-08 22:54:45 -03:00
principle.pdf first commit 2019-07-08 22:54:45 -03:00
principle.py first commit 2019-07-08 22:54:45 -03:00
requirements.txt first commit 2019-07-08 22:54:45 -03:00
simpletree.json first commit 2019-07-08 22:54:45 -03:00
simpletree.pdf first commit 2019-07-08 22:54:45 -03:00
simpletree.pdf.bw.txt first commit 2019-07-08 22:54:45 -03:00
simpletree.py first commit 2019-07-08 22:54:45 -03:00
sortundirectednodepair.py first commit 2019-07-08 22:54:45 -03:00
topoautostandalonetest.py first commit 2019-07-08 22:54:45 -03:00
topoautotest.py first commit 2019-07-08 22:54:45 -03:00
topoboxplot.py avgdiffs 2019-08-27 23:55:37 -03:00
topocreatebcube.py first commit 2019-07-08 22:54:45 -03:00
topocreatebcubeswitched.py first commit 2019-07-08 22:54:45 -03:00
topocreatebig.py first commit 2019-07-08 22:54:45 -03:00
topocreatebipartite.py first commit 2019-07-08 22:54:45 -03:00
topocreateclos.py first commit 2019-07-08 22:54:45 -03:00
topocreateclos5.py first commit 2019-07-08 22:54:45 -03:00
topocreatedcell.py first commit 2019-07-08 22:54:45 -03:00
topocreatedcellswitched.py first commit 2019-07-08 22:54:45 -03:00
topocreatefattree.py first commit 2019-07-08 22:54:45 -03:00
topocreategrid.py first commit 2019-07-08 22:54:45 -03:00
topocreatesimpletree.py first commit 2019-07-08 22:54:45 -03:00
topomn2json.py first commit 2019-07-08 22:54:45 -03:00
toporender.py first commit 2019-07-08 22:54:45 -03:00
toporenderpdfgraph.py first commit 2019-07-08 22:54:45 -03:00
topotable.py first commit 2019-07-08 22:54:45 -03:00
topoviewer.py first commit 2019-07-08 22:54:45 -03:00
variables.ini first commit 2019-07-08 22:54:45 -03:00

README.md

DOI

Mininet+Ryu Routing algorithm Comparator

A bunch of scripts and files that describe topology creation, the topologies, the testing data, real-time graph rendering, table creation and chart creation.

How to replicate these results

  • Install Mininet, Ryu and Python3
    • Untested on Mininet compiled against Python2
    • Untested on Ryu compiled against Python2
  • Either run pip3 install -r requirements.txt with enough privileges on your system or install those requirements from your package manager.
  • Run make as root.

Files which are safe to delete

  • rm -rf boxplots
  • rm -rf resultcache
  • rm -rf *.json
  • rm -rf *.pdf
  • rm -rf *.pdf.bw.txt
  • rm -rf *.state

Or, you can simply run make clear to run them all.

How to add more algorithms to the comparison:

  1. On latencycontroller.py, create your algorithm as a class child of AbstractPathEvaluator (example: MyPathEvaluator), where you override “__call__(self, ...)” with your algorithm.
  2. On latencycontroller.py, add the class you created as an entry of the path_evaluators dict (example: “'my_path_eval': MyPathEvaluator,”).
  3. Add the key in the previous dict for your class into the ALGOS list (example: “'my_path_eval',”).

That's it.

How to add more topologies to the comparison:

From miniedit

  1. Create a topology and save it; we're going to use my_topo.mn in this example.
  2. Add a recipe to Makefile:
    my_topo.json:
        ./topomn2json.py my_topo
  3. Add that same last line to the end of generatetopos recipe.
  4. Add add my_topo.json as a requirement for testall recipe.
  5. Add my_topo.json at the end of the topoautostandalonetest.py line of the testall recipe.

With generator script

  1. Create a copy from an existing one, such as topocreatesimpletree.py.
  2. Give your name to the copy, such as topocreatemy.py.
  3. Edit your topocreatemy.py to the default value be the name you want, such as my_topo.
  4. Edit create_topo on your topocreatemy.py to return the topology you want.
  5. Add a recipe to Makefile:
    my_topo.json:
        ./topocreatemy.py
  6. Add that same last line to the end of generatetopos recipe.
  7. Add add my_topo.json as a requirement for testall recipe.
  8. Add my_topo.json at the end of the topoautostandalonetest.py line of the testall recipe.

How to visualize the topology

Assumption: you already have a recipe for “my_topo.json” created and configured on the Makefile.

For articles

  • Run make my_topo.pdf.

For presentations, with (almost) real-time updates

  • 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.

Starting up the controller:

ryu-manager latencycontroller.py my_topo.json