This project aims to create an Over-the-Top (OTT) service that enables multicast video streaming between clients and servers across an interconnected network of nodes. It features an intelligent control plane that builds and updates routes in real-time based on actual network conditions.

The project was implemented and tested using a CORE topology environment, as shown in the architectural design below:

One of the coolest parts of this app is the dynamic routing. Each OTT node uses a custom implementation of the Distance-Vector algorithm to calculate the best path to a server. We defined a cost metric based on both average RTT and packet loss to ensure users always get the smoothest stream possible. The system is so adaptable that if a better route is found (improving cost by at least 33%), it automatically switches parents mid-stream!
To keep the system resilient, we implemented a few key features:
-
Hybrid Protocol Stack: We used TCP for reliable control messages (like connecting nodes and cost updates) and UDP/RTP for the actual video data to keep overhead low.
-
Failover Mechanism: Nodes detect "unannounced" neighbor failures via TCP keepalives.
-
Grandparent Backups: If a node only has one path to a server, it requests "grandparent" info from its parent to have a backup route ready in case of isolation.
We were really pleased with how the system handled real-world scenarios, like reconstructing a stream path immediately after a node "died" or switching servers when we manually injected latency into the network. If we had more time, we’d love to add proper load balancing to prevent congestion on popular routes and explore more extensive benchmarking for our timing constants.
For a full report and project files, check out this project's repository at https://github.com/luis25franca/ESR-TP2.