This repository contains the codebase for my thesis project, focusing on video streaming performance and network traffic analysis using MPEG-DASH within Software Defined Networks (SDN) simulated by Mininet.
- Linux Environment (Arch Linux, Ubuntu, etc.)
- Bun (JavaScript runtime)
- Python 3
- Mininet
- Open vSwitch
- Chromium (Recommended, due to the absence of video.webkitVideoDecodedByteCount property in Firefox)
Run the Mininet topology script with sudo privileges. You can configure bandwidth, delay, and loss.
sudo python3 net_conf_mininet/thesis_mininet.py -bw 10 -delay 10ms -loss 0Inside the Mininet CLI (mininet>), start the HTTP server on h1.
# Start server on host h1
h1 bun server_mininet/server_mininet.js &Open a browser from another host (e.g., h2) to view the stream and analysis charts.
# Launch Chromium on host h2 (using local display)
h2 env DISPLAY=:1 chromium --no-sandbox --user-data-dir=/tmp/chromium_h2 http://10.0.0.1:1337/ &net_conf_mininet/: Containsthesis_mininet.py, the Mininet topology script defining switches, hosts, and link constraints.server_mininet/: The main Node.js (Bun) server and DASH video client.videos/: Contains the DASH.mpdmanifests and.m4ssegments.videos/client/: The web client (client.js,dash.js,chart.js) for playback and metrics visualization.
plot_and_stats/: Python scripts for generating plots and analyzing traffic statistics.statistics/: Output directory for generated statistics organized by network configuration.server_over_network_*: Server variants for AWS and University network deployment scenarios.
- Network Parameters: Adjust
-bw(Bandwidth in Mbps),-delay(Latency), and-loss(Packet loss %) when runningthesis_mininet.py. - Video Generation: Use
ffmpegandMP4Boxto generate new DASH content if needed (scripts available inserver_mininet/videos/).
