mirror of
https://github.com/adlerosn/mininet-n-ryu-routing-algorithm-comparator.git
synced 2026-10-30 13:00:05 +00:00
No description
- Python 80.6%
- TeX 12.6%
- CSV 6%
- Makefile 0.8%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| boxplots | ||
| resultcache | ||
| .gitignore | ||
| __all__.autotests.json | ||
| bcube.json | ||
| bcube.pdf | ||
| bcube.pdf.bw.txt | ||
| bcube.py | ||
| bcubeswitched.json | ||
| bcubeswitched.pdf | ||
| bcubeswitched.pdf.bw.txt | ||
| bcubeswitched.py | ||
| bigtopo.json | ||
| bigtopo.pdf | ||
| bigtopo.pdf.bw.txt | ||
| bigtopo.py | ||
| bipartite.json | ||
| bipartite.pdf | ||
| bipartite.pdf.bw.txt | ||
| bipartite.py | ||
| clos.json | ||
| clos.pdf | ||
| clos.pdf.bw.txt | ||
| clos.py | ||
| clos5.json | ||
| clos5.pdf | ||
| clos5.pdf.bw.txt | ||
| clos5.py | ||
| counteriter.py | ||
| dcell.json | ||
| dcell.pdf | ||
| dcell.pdf.bw.txt | ||
| dcell.py | ||
| dcellswitched.json | ||
| dcellswitched.pdf | ||
| dcellswitched.pdf.bw.txt | ||
| dcellswitched.py | ||
| fattree.json | ||
| fattree.pdf | ||
| fattree.pdf.bw.txt | ||
| fattree.py | ||
| graphtools.py | ||
| grid.json | ||
| grid.pdf | ||
| grid.pdf.bw.txt | ||
| grid.py | ||
| id2ip.py | ||
| latencycontroller.py | ||
| Makefile | ||
| principle.json | ||
| principle.mn | ||
| principle.pdf | ||
| principle.py | ||
| README.md | ||
| requirements.txt | ||
| simpletree.json | ||
| simpletree.pdf | ||
| simpletree.pdf.bw.txt | ||
| simpletree.py | ||
| sortundirectednodepair.py | ||
| topoautostandalonetest.py | ||
| topoautotest.py | ||
| topoboxplot.py | ||
| topocreatebcube.py | ||
| topocreatebcubeswitched.py | ||
| topocreatebig.py | ||
| topocreatebipartite.py | ||
| topocreateclos.py | ||
| topocreateclos5.py | ||
| topocreatedcell.py | ||
| topocreatedcellswitched.py | ||
| topocreatefattree.py | ||
| topocreategrid.py | ||
| topocreatesimpletree.py | ||
| topomn2json.py | ||
| toporender.py | ||
| toporenderpdfgraph.py | ||
| topotable.py | ||
| topoviewer.py | ||
| variables.ini | ||
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.txtwith enough privileges on your system or install those requirements from your package manager. - Run
makeas root.
Files which are safe to delete
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.
How to add more algorithms to the comparison:
- 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.
How to add more topologies to the comparison:
From miniedit
- 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.
With generator script
- 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.
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