-
Prerequisites
- python3 (I used 3.10.2)
- networkx install on python3
- docker
-
To run a simulation and generate a dataset, ust run:
python3 master.py <number of nodes> [nsfnet/geant2/germany50] <number of runs per traffic intensity value> <time per run in SECONDS> <frequency of statistics in MILLISECONDS> <min traffic intensity> <max traffic intensity>- the second argment: nsfnet/geant2/germany50 is the type of network, each one more densely connected than the other
- the master.py orchestrates all the terminals to run the simulation
- if:
- number of runs per traffic intensity value is x
- min traffic intensity is i
- max traffic intensity is j
- then:
- the script runs a simulation x times for every value in the range [i, j] (both inclusive)
- each run has the same test, same target bandwidths between runs
- between different traffic intensities, the target bandwidths of connections vary
- for every run, the topology and the link speeds of the links stay the same
-
Here is the overview of what master.py does:
-
for each simulation (uasge of master.py), we start by randomly generating a topology and the required mininet topology file & ONOS config files
- this is what the file main.py does, it is used once per simulation
- this means that the topology and the bandwidths of the links in the virtual network are same throughout the entire simulation
- we have a range of traffic intensity/lambda values that are also arguments to master.py (we collect a min and max traffic intensity value)
- for each traffic intensity/lambda value in the user-provided range:
- we generate a test file that uses d-itg commands to generate traffic between each pair of nodes, and record results
- we do this once for each traffic intensity/lambda value, since its value determines indirectly target bandwidths for each pair of nodes in the test
- then, we perform a series of runs for a given traffic intensity/lambda value; the number of runs is again an argment for master.py
- we prepare for a series of runs by first setting up ONOS
- this is only done once for a set of runs (for a given traffic intensity/lambda value)
- ONOS is run in a docker container, to keep things as portable as possible
- then, we set up mininet
- mininet is also run in a docker container, to keep things as portable as possible
- the mininet container also has d-itg installed for the test script
- note that we setup ONOS and mininet in tmux windows to control them programatically
- then, we run the test script n times, n being specified by the user
- between each run, we use sed to change where the output of the test run is sent to
- just before the last run has executed ( seconds before it finishes), we query ONOS to get the path between each pair of hosts.
- the script for this is generated by main.py
- and then we tear down the ONOS & mininet containers
-
the files are generated by
main.pyandmain_extension.pymain.pygenerates everything except the test scripttest.py
-
look at the function
run_setupinmaster.pyto get the idea of what happens for a round of a simulation -
the function
runnerdoes set up for a simulation -
please note that the file "test.py" changes between runs: specifically the locations where the output raw filed and decoded files change
-
the output should look like:
simulations/ <network_type>_<# nodes>_<min traffic intensity>_<max traffic intensity>/ custom_topo.py get_hops.sh graph_attr.txt onos_config.json sorted_links.txt topo.json lambda_9/ run_1/ raw_data/ 2024-11-29-19:10:46.121925_4_4_0_1 2024-11-29-19:10:46.121925_4_4_0_2 2024-11-29-19:10:46.121925_4_4_0_3 ... decoded_data/ 2024-11-29-19:10:46.121925_4_4_0_1 2024-11-29-19:10:46.121925_4_4_0_2 2024-11-29-19:10:46.121925_4_4_0_3 ... run_2/ ... lambda_10/ run_1/ raw_data/ 2024-11-29-19:15:24.290317_4_4_0_1 2024-11-29-19:15:24.290317_4_4_0_2 2024-11-29-19:15:24.290317_4_4_0_3 ... decoded_data/ 2024-11-29-19:15:24.290317_4_4_0_1 2024-11-29-19:15:24.290317_4_4_0_2 2024-11-29-19:15:24.290317_4_4_0_3 ... run_2/ ... -
-
Notifications
You must be signed in to change notification settings - Fork 1
jaison-joseph/CS536-project
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published