Use docker-compose in the docker-compose.yml directory to start the scenario
sudo docker-compose up
Then, attach into the mininet terminal
sudo docker exec -ti mininet bash
Once in the mininet CLI, change the config and repo_subnet files according to your preferences (see examples below), and execute simulate.py:
Once running, it will create a failure in the network every 5 seconds (it could be more, if the execution of the failure takes more than 5 secondss)
To end its execution, press ctrl+c
Configuration is determined by config and repo_subnets files. Config must have a [main] section with the following attributes:
- Ip: ip address of the controller (you can check it using "docker inspect opendaylight")
- Distribution: distribution of link bandwidth between hosts and network
- equal: uniform distribution
- badwifi, wifi, xdsl, fiber50, fiber300: gaussian distribution centered at 3, 10, 20, 50 or 300 Mbps
- Seed: list of seeds you want to use in the creaton of the network 'None' if you do not want
to provide any seed. In case you provide them, the first one will be used for the first simulation, the second one
for the second simulation, etc.
- MainSwitches: number of switches in the core network
- MainHosts: number of hosts directly connected to the core network
- Datacenters: number of datacenters in the core network
network. "No" otherwise.
- MinutesRunning: amount of time (in minutes) you want each simulation running
- Batch: number of simulations you want to execute
- FailuresType: type of failures you want to simulate in your network
- ErrorInterval: amount of seconds between the execution of two failures
- CollectorInterval: " " " " two events of data mining
- StreamingScenario: choose if you want to build a unicast rtp/rtsp streaming scenario
It also will have another section for each extra network.
Ip = 172.17.0.2
Distribution = equal
Seed = None
MainSwitches = 20
Datacenters = 2
MinutesRunning = 180
Batch = 3
FailuresType = 0,5
ErrorInterval = 20
CollectorInterval = 10
StreamingScenario = No
Number = 1
Number = 2
Those [extra1], [extra2] are networks attached to the main network, and are defined in repo_subnets,
wich has the following structure:
Switches = x
Hosts = y
Where x is the number of switches you want in that extra network, and y is the number of hosts.
The 'Number' field is the number of networks of that type that you want in your network.
Please remember to remove the containers (sudo docker-compose stop if you are running it in detached mode or ctrl+c if
you are running it in attached mode, and sudo docker-compose down) after using it.