There are many ways to contribute to Route 0. If you are an expert in networking you can look for and correct errors, improve the existing lessons, add new lessons, or add IPv6 lessons/support. Another way to contribute is to simply add new scenarios or topologies that you feel would be interesting for others and perhaps some accompanying lessons.
Adding a new topology is straightforward.
- Create a new directory in the
topology
directory. - Create an empty
__init__.py
file in the new directory. - Create a
topo.py
file and define a classNetTopo
that inherits frommininet.topo.Topo
and build your new topology in its constructor.WARNING:
Mininet will number the interfaces according to the order they are added to a given node. Make sure theREADME.md
reflects this. - Create a
zebra
directory and populate it with configuration files for thezebra
daemon to configure the interfaces in your topology. - Create a
staticd
directory and populate it with configuration files for thestaticd
daemon to configure the default routes on hosts. - Create a
README.md
file to describe your topology.
The easiest way to start would be to copy some other topology and customise it
as appropriate. Once ready, the topology should be automatically detected by
route0.py
when you pass your topology's name as the --topology
argument.
By default all topologies support the plain
and basic
scenarios. Adding a
additional scenarios is also pretty straightforward.
- In the topology's directory, make sure there is a
scenario
directory. Create one if it doesn't exist. If you had to create the directory, add an empty__init__.py
file to it. - In the
scenario
directory create a new directory for your specific scenario. Add an empty__init__.py
file to it. - In your new directory create one directory for each daemon you intend to
run. You don't need to do this for
zebra
orstaticd
unless you want to override the topology defaults.
Just like with the topology, the main script should automatically pick up the new scenario.