lab11_reliable_data_transport

lab11_reliable_data_transport - Massachusetts Institute of...

Info iconThis preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.02 Spring 2008 Lab 11: Reliable Data Transport May 12–14, 2008 Goal: Using NetSim, implement reliable packet transport for a best-effort network that drops packets. 1 Lab setup As we discussed in lecture, packets can be lost by the network for a number of reasons (besides being reordered or even duplicated). A “best-effort” network layer is simple and has a number of attractive prop- erties, but from the point of view of an application trying to reliably transmit a stream of data from one node to another, a reliable, in-order transport mechanism is invaluable. The goal of this lab is to implement a reliable data stream on top of the sometimes flaky best-effort packet delivery by adding the appropriate code in the transmit method of the sending node and the receive method of the receiving node. We’ll implement a transport protocol where the receiver sends an ACK packet to the sender for each DATA packet received. If an excessive amount of time passes without receiving an ACK packet, the sender assumes that the corresponding DATA packet has been lost (in truth, either the sender’s DATA packet or the receiver’s ACK packet was lost, but the sender can’t tell which exactly), and retransmits the DATA packet. At some point both the DATA packet and corresponding ACK packet are successfully received and that portion of the data stream has been reliably delivered. We describe below how a simple reliable transport protocol can be implemented. The description separates the sender and receiver functions. We also note that many optimizations to this reliable transport protocol are possible, but we’ll just take the straightforward approach for this lab. 1.1 Source code First, copy our Lab 11 files to your local Athena home directory: athena% setup 6.02 athena% cp -R /mit/6.02/Labs/Lab11 ˜/6.02/ You should now have three files: lab11 stop and wait.py , lab11 sliding window.py , and network11.py in your Lab11 directory. The following discussion will refer to the code contained in these files. We will use NetSim, the same simulator you used in Lab 10, and we will use Python inheritance to extend class Node with functions for path-vector routing, end-to-end reliable sending, and end-to-end reliable receiving. 1
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Figure 1: Python inheritance tree showing classes derived from Node implementing path-vector routing, reliable sending, and reliable receiving functionality. Reading the code The Node class has been extended to PathVectorNode as shown in Figure 1. The route method of PathVectorNode uses a routing table built using the path-vector protocol described in lecture. The code for building the routing tables has been added to the process and transmit methods of PathVectorNode , in network11.py . You don’t need to make further changes to PathVectorNode . Next, we will extend the
Background image of page 2
Image of page 3
This is the end of the preview. Sign up to access the rest of the document.

This note was uploaded on 08/23/2009 for the course EECS 6.02 taught by Professor Terman during the Spring '08 term at MIT.

Page1 / 7

lab11_reliable_data_transport - Massachusetts Institute of...

This preview shows document pages 1 - 3. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online