Advanced Networking

ELEC-E7321

View the Project on GitHub

Task 1: Simple client

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:

  1. 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

  2. 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

  3. 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

  4. 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: