Skip to content
YunxiangChi edited this page Nov 18, 2025 · 4 revisions

This wiki contains all information about the Reliable Transport project, which is part of the Computer Networks Course at Princeton University taught by Prof. Maria Apostolaki from the NetΣyn Group.

Introduction to the project

Now that you are all experts in routing, it is time to attack the remaining pillar of networking: reliable transport. Together with your group, your objective is to implement a TCP-like reliable transport protocol capable of sending binary data over unreliable IP networks (like the Internet).

As a starting point, we provide you with a Python-based skeleton of a Go-Back-N (GBN) sender and receiver. Once you have implemented the most basic version of the GBN protocol, you will already be able to transmit data between your sender and receiver even if you encounter packet loss.

The assignment starts with completing the basic GBN sender and receiver, and continues with improving the protocol by implementing first Selective Repeat and second Selective Acknowledgments. Finally, your goal is to implement a Congestion Control scheme to adapt the sending rate to the available throughput in the internet.

Table of contents

This wiki consists of five main parts.

We first explain how you can ask questions, access the repo as well as the submission and grading process:

  • 1.1 Access: Tutorial to access your repo to run test cases and modify your implementation.
  • 1.2 Collaboration over GitHub: Using GitHub to collaborate with other members of your group.
  • 1.3 Submission: Instructions to submit your work at the end of the project.
  • 1.4 Grading: How we use the test framework to compute your grades.
  • 1.5 Questions: Where to ask questions in case you need help or something is unclear?
  • 1.6 Important remarks: This section explains our policies regarding plagiarism and misuse of resources.

Afterward, we introduce the basic Go-Back-N protocol:

  • 2.1 General design: This section gives an overview of the Go-Back-N (GBN) protocol that you will implement.
  • 2.2 Sender details: Explains the state machine and the provided python skeleton of the sender.
  • 2.3 Receiver details: Explains the state machine and the provided python skeleton of the receiver.

Then, we highlight the actual tasks you have to solve as part of the reliable transport project:

Followed by a detailed introduction to the available test framework:

  • 4.1 Overview: What is the test framework and how can you use it.
  • 4.2 Local execution: This section describes how you can run your sender against your receiver.
  • 4.3 Test sequences: This section introduces the most important aspect of the test framework: running test cases. It also explains how to debug your implementation.
  • 4.4 Public test overview: This section goes over all public test case and explain what each test does at a high level for more information

Finally, we also give you some programming tips:

  • 5.1 Python: This section introduces essential and useful python concepts.
  • 5.2 Scapy: Here, we introduce the relevant aspects of the scapy library.

Credits

The Reliable Transport project is originally part of the Communication Networks Course at ETH taught by Prof. Laurent Vanbever from the Networked Systems Group.

Clone this wiki locally