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.txt
with enough privileges on your system or install those requirements from your package manager. - Run
make
as root.
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.
- 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_evaluators
dict (example: “'my_path_eval': MyPathEvaluator,
”). - Add the key in the previous dict for your class into the
ALGOS
list (example: “'my_path_eval',
”).
That's it.
- Create a topology and save it; we're going to use
my_topo.mn
in this example. - Add a recipe to
Makefile
:my_topo.json:
./topomn2json.py my_topo
- Add that same last line to the end of
generatetopos
recipe. - Add add
my_topo.json
as a requirement fortestall
recipe. - Add
my_topo.json
at the end of thetopoautostandalonetest.py
line of thetestall
recipe.
- Create a copy from an existing one, such as
topocreatesimpletree.py
. - Give your name to the copy, such as
topocreatemy.py
. - Edit your
topocreatemy.py
to the default value be the name you want, such asmy_topo
. - Edit
create_topo
on yourtopocreatemy.py
to return the topology you want. - Add a recipe to
Makefile
:my_topo.json:
./topocreatemy.py
- Add that same last line to the end of
generatetopos
recipe. - Add add
my_topo.json
as a requirement fortestall
recipe. - Add
my_topo.json
at the end of thetopoautostandalonetest.py
line of thetestall
recipe.
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