LAB: Principles of Reliable Data Transfer


Introduction

In this lab, we will incrementally develop, simulate and test protocols for reliable transport as described in Chapter 3 of the textbook “Computer Networks: A top-down approach” by Kurose and Ross (6th ed). We will make use of SimPy, a popular open-source Python package for discrete-event simulations. For understanding the principles behind these protocols, please refer to Section 3.4 in the textbook.

Video Tutorial (YouTube)

The video tutorial for this lab is uploaded in three parts: part 1, part 2, part 3

Part 1

Part 2

Part 3

Requirements

  • Python3 (version >3.2)

  • SimPy (version >=3.0.10) for Python3.
    In Linux, this can be installed using the command pip3 install simpy

  1. You can check if you have the correct version installed, using the following command (for Linux): python3 -c “import simpy; print(simpy.__version__)”

  2. It should output the current version of SimPy (for example “3.0.10”)

Template

To get started, here is a template that contains models for the sending and receiving processes, the sender and receiver-side transport-layer protocols, an unreliable channel, and a Testbench to connect these together and run the simulation. The names for the entities and their interfaces closely follows the terminology used in the textbook.

Template 

Problem Statement

Download the problem statement and instructions for the lab exercise here (pdf).