Project 1
ECE4050: Principles and Practices of Network Communications
Due: 17:00, February 28, 2024
1. In this assignment, we will use the network simulator ns.py (https://github.com/TLSystem/ns.py) to conduct some experiments, then write a report to record and analyse the corresponding results. Firstly, please install this simulator correctly on your
own computers following the guidance. Next, read and run the examples in the
examples/ folder to get familiar with the framework and components.
Please follow the examples/tcp.py file and construct a topology shown in Fig. 1.
There are two flows (s1 → d1 and s2 → d2) that need to transmit data on this
topology. As can be seen, these two flows will compete the bandwidth of link r1 → r2.
Hence each flow is equipped with a congestion control algorithm at the source to
regulate the sending rate such that the network bandwidth can be utilized efficiently
and fairly. In this assignment, you need to use different congestion control algorithms
(Reno, CUBIC, BBR) at the sources to compare their performance.
Specifically, some parameters can be set as follows:
• packet size: 1KB
• link propagation delay: 0.1s
• queue-length for each port: 100 packets
• env.run(until=500) (It implies that the time you need to record is 500s.)
Some other parameters can be set following the given example. And the test cases
include:
• s1 and s2 both adopt Reno;
• s1 adopts Reno and s2 adopts CUBIC ;
• s1 adopts Reno and s2 adopts BBR.
Please record and plot the changes in window size and sending rate for two flows in
three different cases, then analyse the corresponding results in the report.
Figure 1: A network example. The number (in Mbps) attached to a link is the capacity
of the link.
Page 2