Exploration of TCP performance and congestion control in modern data center networks using NS-3 simulator.
-
TCP variants (Reno, NewReno, DCTCP, Vegas, Cubic, etc.) in datacenter topologies (Fat-Tree, BCube, etc.)
-
Metrics: Flow Completion Time (FCT), throughput, queue length, packet loss
-
Incast problem, long flows vs short flows, incast mitigation
-
Documentation: PDFs/reports on experiments, results graphs.
-
ns3-code/ → Custom modules, scratch simulations (.cc files)
-
configs/ → Simulation scripts/configs
-
docs/ → PDFs, reports, slides on TCP in datacenters
-
results/ → Graphs, logs, throughput/FCT plots
-
older-versions/ → Previous NS-3 setups/experiments
Requires NS-3 installed (bake.py or manual build)
cd ns-3-dev
./ns3 run "scratch/my-datacenter-sim --transport-protocol=TCP"
## Installation Guide – Ubuntu / Linux
This project uses **NS-3** (Network Simulator 3) to run data-center TCP simulations.
The instructions below are tested on **Ubuntu 20.04 / 22.04 / 24.04 LTS** (should also work on Debian and most modern Linux distributions).
### Prerequisites
Update your system and install required packages:
```bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y \
g++ python3 python3-dev pkg-config sqlite3 \
cmake ninja-build git mercurial \
qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools \
gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz \
gir1.2-gtk-3.0 ipython3 tcpdump wireshark gnuplot-x11 \
libgtk-3-dev libxml2 libxml2-dev libsqlite3-dev \
libeigen3-dev libboost-all-dev libgsl-dev libgtkmm-3.0-dev \
libxml2-utils libsqlite3-dev libopenmpi-dev openmpi-bin \
openmpi-common libopenmpi-dev doxygen graphviz imagemagick \
python3-pip python3-setuptools python3-wheel
# Download NS-3 tarball or clone from git
wget https://www.nsnam.org/releases/ns-allinone-3.36.tar.bz2
tar xjf ns-allinone-3.36.tar.bz2
cd ns-allinone-3.36/ns-3.36
# Configure, build, test
./ns3 configure --enable-examples --enable-tests
./ns3 build
./ns3 test
# Or classic waf way (older versions)
./waf configure --enable-examples --enable-tests
./waf build