NS-3 simulation and analysis of access network bottlenecks affecting data center connectivity in Ghanaian broadband networks (ADSL2+, 4G LTE, FTTH under NewReno/CUBIC/BBR)
# Simulation and Performance Analysis of Access Network Bottlenecks Affecting Data Center Connectivity in Ghanaian Broadband Networks Using NS-3
**Author:** Enoch K. Koranteng, MPhil — Department of Computer Engineering, Kwame Nkrumah University of Science and Technology
## Overview
This repository contains an NS-3 3.38 discrete-event simulation study of access
network bottlenecks and their cascading effects on data center connectivity in
Ghana. A hierarchical dumbbell topology, calibrated against statistics from
Ghana's National Communications Authority (NCA), is used to evaluate three
access technologies — ADSL2+, 4G LTE, and FTTH — under TCP NewReno, CUBIC, and
BBR across concurrent flow loads of N ∈ {1, 2, 4, 8, 16}.
Six metrics are reported: aggregate goodput, mean round-trip time (RTT),
packet loss rate, jitter, Jain's fairness index, and mean flow completion time
(FCT).
## Repository structure
```
*.pdf Final paper (IEEE format)
paper/ LaTeX source and references for the paper
simulation/ NS-3 simulation source (.cc) and post-processing script
figures/ Topology diagram and result charts produced by the simulation
```
## Simulation setup
The `.cc` files in `simulation/` are NS-3 scratch simulations and require an
NS-3 3.38 installation to build and run.
1. Download and build ns-3.38 (via `ns-allinone-3.38`).
2. Copy `bcn_ghana_sim.cc` and `bcn_lte_300.cc` into `ns-allinone-3.38/ns-3.38/scratch/`.
3. Build and run from the ns-3 root, e.g.:
```
./ns3 build
./ns3 run scratch/bcn_ghana_sim
./ns3 run scratch/bcn_lte_300
```
4. Post-process the resulting trace/flow-monitor output with `simulation/compute_stats.py`:
```
python3 compute_stats.py
```
By default it looks for a `results/` folder next to the script; pass a
path to point at your ns-3 build's `results/` output instead.
## Paper
The final paper PDF is at the repository root. LaTeX source is in
`paper/paper.tex` (references in `paper/references.bib`) if you want to
rec …