EE122Project1 - Project 1 - Reliable Transport UC Berkeley...

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

View Full Document Right Arrow Icon
Project 1 - Reliable Transport UC Berkeley EE 122, Fall 2011 Version 0.1 Due: September 28, 2011 In this project, you will build a simple reliable transport protocol, “BEARS-TP” (BTP). Your protocol must provide in-order, reliable delivery of UDP datagrams, and must do so in the presence of packet loss, delay, corruption, duplication, and re-ordering. There are a variety of ways to ensure a message is reliably delivered from a sender to a receiver. We will provide you with a reference implementation of a receiver (which you must use) that returns a cumulative ACK whenever it receives a data packet. This is further explained with an example later. Your job is to implement a sender that, when sending packets to this receiver, achieves reliable delivery. For extra credit, you may choose to implement one of several performance improvements which are described below. Protocol Description Our simple protocol has four message types: start , end , data , and ack . start , end , and data messages all follow the same general format. start|<sequence number>|<data>|<checksum> data|<sequence number>|<data>|<checksum> end|<sequence number>|<data>|<checksum> To initiate a connection, send a start message. The receiver will use the sequence number provided as the initial sequence number for all packets in that connection. After sending the start message, send additional packets in the same connection using the data message type, adjusting the sequence number appropriately. Unsurprisingly, the last data in a connection should be transmitted with the end message type to signal the receiver that the connection is complete. Your sender should accept acknowledgements from the receiver in the format: ack|<sequence number>|<checksum> An important limitation is the maximum size of your packets. The UDP protocol has an 8 byte header, and the IP protocol underneath it has a header of ~20 bytes. Because we will be using Ethernet networks, which have a maximum frame size of 1500 bytes, this leaves 1472 bytes for your entire packet (message type, sequence number, data, and checksum). The angle brackets (“<” and “>”) are not part of the protocol. However, you should ensure that there are no extra spaces between your delimiters (“|” character) and the fields of your packet. For specific formatting details, see the sample code provided. Receiver specification
Background image of page 1

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

View Full DocumentRight Arrow Icon
We will provide a simple receiver for you; the reference implementation we provide will also be used for grading, so make sure that your sender is compatible with it. 1 The BEARS-TP receiver responds to data packets with cumulative acknowledgements. Upon receiving a message of type start , data , or end , the receiver generates an ack message with the sequence number it expects to receive next, which is the lowest sequence number not yet received. In other words, if it expects a packet of sequence number N, the following two scenarios may occur 1.
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.

Page1 / 5

EE122Project1 - Project 1 - Reliable Transport UC Berkeley...

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