ufes-20191-redes-mininet/proj-impl
Adler Neves 4db2641ea9 end of semester 2019-07-31 09:19:42 -03:00
..
boxplots end of semester 2019-07-31 09:19:42 -03:00
resultcache ran for 30 samples 2019-07-07 11:48:16 -03:00
.gitignore article being written 2019-07-10 02:36:02 -03:00
Makefile article being written 2019-07-10 02:36:02 -03:00
README.md article being written 2019-07-10 02:36:02 -03:00
__all__.autotests.json ran for 30 samples 2019-07-07 11:48:16 -03:00
bcube.json ran for 30 samples 2019-07-07 11:48:16 -03:00
bcube.pdf ran for 30 samples 2019-07-07 11:48:16 -03:00
bcube.pdf.bw.txt wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
bcube.py ran for 30 samples 2019-07-07 11:48:16 -03:00
bcubeswitched.json ran for 30 samples 2019-07-07 11:48:16 -03:00
bcubeswitched.pdf ran for 30 samples 2019-07-07 11:48:16 -03:00
bcubeswitched.pdf.bw.txt wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
bcubeswitched.py ran for 30 samples 2019-07-07 11:48:16 -03:00
bigtopo.json wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
bigtopo.pdf wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
bigtopo.pdf.bw.txt wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
bigtopo.py wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
bipartite.json progress into article writing 2019-07-05 05:52:59 -03:00
bipartite.pdf progress into article writing 2019-07-05 05:52:59 -03:00
bipartite.pdf.bw.txt wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
bipartite.py progress into article writing 2019-07-05 05:52:59 -03:00
clos.json progress into article writing 2019-07-05 05:52:59 -03:00
clos.pdf progress into article writing 2019-07-05 05:52:59 -03:00
clos.pdf.bw.txt wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
clos.py progress into article writing 2019-07-05 05:52:59 -03:00
clos5.json progress into article writing 2019-07-05 05:52:59 -03:00
clos5.pdf progress into article writing 2019-07-05 05:52:59 -03:00
clos5.pdf.bw.txt wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
clos5.py progress into article writing 2019-07-05 05:52:59 -03:00
counteriter.py controller bugfix 2019-06-14 04:51:57 -03:00
dcell.json wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
dcell.pdf wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
dcell.pdf.bw.txt wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
dcell.py wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
dcellswitched.json wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
dcellswitched.pdf wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
dcellswitched.pdf.bw.txt wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
dcellswitched.py wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
fattree.json wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
fattree.pdf wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
fattree.pdf.bw.txt wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
fattree.py wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
graphtools.py visualization 2019-06-15 03:31:09 -03:00
grid.json progress into article writing 2019-07-05 05:52:59 -03:00
grid.pdf progress into article writing 2019-07-05 05:52:59 -03:00
grid.pdf.bw.txt progress into article writing 2019-07-05 05:52:59 -03:00
grid.py progress into article writing 2019-07-05 05:52:59 -03:00
id2ip.py implementation running 2019-06-10 22:19:33 -03:00
latencycontroller.py ran for 30 samples 2019-07-07 11:48:16 -03:00
principle.json progress into article writing 2019-07-05 05:52:59 -03:00
principle.mn progress into article writing 2019-07-05 05:52:59 -03:00
principle.pdf progress into article writing 2019-07-05 05:52:59 -03:00
principle.py progress into article writing 2019-07-05 05:52:59 -03:00
requirements.txt ajustments 2019-06-28 19:37:33 -03:00
simpletree.json wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
simpletree.pdf progress into article writing 2019-07-05 05:52:59 -03:00
simpletree.pdf.bw.txt wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
simpletree.py wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
sortundirectednodepair.py Revert "chmods" 2019-06-19 22:59:37 +00:00
topoautostandalonetest.py progress into article writing 2019-07-05 05:52:59 -03:00
topoautotest.py ran for 30 samples 2019-07-07 11:48:16 -03:00
topoboxplot.py end of semester 2019-07-31 09:19:42 -03:00
topocreatebcube.py ran for 30 samples 2019-07-07 11:48:16 -03:00
topocreatebcubeswitched.py ran for 30 samples 2019-07-07 11:48:16 -03:00
topocreatebig.py wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
topocreatebipartite.py progress into article writing 2019-07-05 05:52:59 -03:00
topocreateclos.py progress into article writing 2019-07-05 05:52:59 -03:00
topocreateclos5.py progress into article writing 2019-07-05 05:52:59 -03:00
topocreatedcell.py wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
topocreatedcellswitched.py wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
topocreatefattree.py wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
topocreategrid.py progress into article writing 2019-07-05 05:52:59 -03:00
topocreatesimpletree.py wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
topomn2json.py implementation running 2019-06-10 22:19:33 -03:00
toporender.py wait tests to run and prepare boxplots 2019-07-01 20:42:25 -03:00
toporenderpdfgraph.py progress into article writing 2019-07-05 05:52:59 -03:00
topotable.py progress into article writing 2019-07-05 05:52:59 -03:00
topoviewer.py minmax-single 2019-07-03 17:52:11 -03:00
variables.ini ran for 30 samples 2019-07-07 11:48:16 -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