ELEC-E7321
In this assignment you will implement a TCP client that opens a TCP connection
to the adnet-agent
server assuming the simple_topo
topology in our Mininet
setup. After you send initial control message TASK-001 keyword
to the server,
it will respond by sending a large message consisting of alphanumeric characters
to the same socket. Replace “keyword” with the word that is randomly given to
you in MyCourses task description. You should read all data the server sends.
After server
has finished sending data, it closes the TCP connection. Your task is to repeat
this assignment applying different properties on the bottleneck link, and report
the results following the instructions given below.
Note that the course git repository contains Rust templates for this task that you may use if you want.
You should repeat the assignment applying the following four scenarios:
Long delay. The bottleneck link has one-way delay of 200 ms, no limits on
the transmission speed:
sudo aalto/simple_topo.py --delay=200ms
Slow transmitter The bottleneck link has one-way delay of 50 ms, but
transmission speed is limited to 100 kbps:
sudo aalto/simple_topo.py --delay=50ms --bw=0.1
Lossy link The bottleneck link has one-way delay of 200 ms. Packet loss
rate is 10%:
sudo aalto/simple_topo.py --delay=200ms --loss=10
Survival: In this case you can find the parameters yourself. What is the
most challenging network scenario you can think of that can still complete
the TCP connection, delivering the same amount of bytes as the previous
scenarios? In addition to delay, bandwidth and loss rate, you can also limit
the packet queue size at the bottleneck link (argument max_queue_size
).
Write a report that describes the following details. The report, and answers to the following questions need to be submitted in MyCourses for grading. For all the four afore-mentioned scenarios, the answers to the following three questions should be the same:
In addition, for each of the above four scenarios, report the following:
Tell also what parameters you used in the “Survival” scenario.
For this task, you will need to use Wireshark to analyze the TCP traffic, to determine the number of round-trip times and retransmissions.
Here are the likely useful steps on the Mininet command line, after starting
the simple_topo
script in each of the four scenarios:
lh1 xterm &
: start a separate xterm window representing host “lh1” (IP:
10.0.0.1)rh1 xterm &
: start another xterm window representing host “rh1” (IP:
10.0.0.3)adnet-agent
server. It will be listening
to TCP connections at IP address 10.0.0.3, port 12345wireshark &
. Start capturing
traffic on “rh1-eth0” interface. Because in this case server is doing the
transmission of most data, analyzing e.g. round-trip times and retransmissions
is easier when observing the server side of the connection.