This repository collects network emulation scenarios used for a thesis-level comparison of:
- Mininet
- Containernet
- Kathara
The scenarios cover recurring networking topics such as static/dynamic routing, DNS hierarchies, BGP, load balancing, and performance logging.
Containernet/DNS Simple/: single DNS server plus clientsDNS Kathara/: multi-level DNS hierarchy (root, TLD, authoritative, web servers, clients)start.sh: helper script to run a Containernet topology
Kathara/ThesisLabs/: scenario-based labs (BGP, DNS, OSPF, RIP, LoadBalancer, etc.)Performance Test/: usage logging and graph generation
Mininet/Thesis Scenarios/: scenario-based Mininet equivalentsPerformance Test/: usage logging and graph generation
Install and configure the following on Linux:
- Python 3.8+
- Docker
- Open vSwitch
- Mininet
- Containernet
- Kathara
Python packages used by graph scripts:
- matplotlib
Example installation for plotting:
python3 -m pip install matplotlibcd "Containernet/DNS Simple"
chmod +x build-images.sh
./build-images.sh
sudo python3 containernet_dns_topo.pycd "Containernet/DNS Kathara"
chmod +x build-images.sh
./build-images.sh
sudo python3 containernet_dns_topo.pyEach scenario in Kathara/ThesisLabs/ has a lab.conf and startup files.
Typical flow:
cd Kathara/ThesisLabs/DNS
kathara lstart
kathara linfo
kathara connect pc1
# run tests
kathara lcleanRun the Mininet scenario scripts from the corresponding scenario folder under Mininet/Thesis Scenarios/.
Use sudo when needed by Mininet/OVS commands.
Both Mininet and Kathara sections include tools to log resource usage over time and generate SVG graphs.
- Start logging:
cd "Mininet/Performance Test"
chmod +x logger.sh
./logger.sh- Run your scenario.
- Stop the logger (
Ctrl+C). - Generate graphs:
python3 GraphCreator.py .- Start logging:
cd "Kathara/Performance Test"
chmod +x log_docker.sh
./log_docker.sh- Run your scenario.
- Stop the logger (
Ctrl+C). - Generate graphs:
python3 GraphCreator.py .Generated graphs are saved as SVG files in output folders created by each graph script.
- Many scenarios require root privileges due to virtual networking and namespace operations.
- Docker images for Containernet DNS scenarios must be built before launching topologies.
- If DNS tests fail, verify container IP addresses and
/etc/resolv.confinside emulated nodes.
Inside client nodes (Containernet/Kathara):
ping -c 3 192.168.0.5
nslookup www.example.com
dig @192.168.0.5 www.example.comAdjust hostnames and DNS server IPs based on the active scenario.