EE122 Introduction to Computer Networks Fall 2007 Project 2 Design a Reliable Transfer Protocol Phase 1 Due Tue Nov 13 2007 11PM Phase 2 Due Sat Dec 8 2007 11PM Prof Vern Paxson Lisa Fowler Daniel Killebrew Jorge Ortiz Introduction In Project 1 you built a functional Web applications that could interact with other Web servers and clients in the world at large Building these in an interoperable fashion required adherence to application layer specifications such as RFCs but leveraged the Internet s underlying standard TCP transport service In this project you will apply the networking principles you learned in this course to design your own protocol for reliable data transport You will deepen your understanding of design issues concerning reliability and congestion control by building this protocol on top of the unreliable datagram oriented service provided by UDP To evaluate the effectiveness of your custom protocol you will implement programs to use your protocol to transfer a file from a sender to a receiver and optionally port the Project 1 Web server and client to use your custom protocol instead of TCP Project Structure This project consists of the following two phases Phase Due Date 1 Nov 13 11pm Overview of Tasks Design a reliable transport protocol on top of UDP Deliverable Design Report Grade 20 2 Implement your reliable transport protocol as designed in Project 2 Phase 1 Develop programs to use your protocol to transfer files Optionally revise your preferred Project 1 Web client and server to use your new reliable transport protocol Working implementation 80 Dec 8 11pm Version 3 Tue Nov 20 Porting Project 1 client server is now optional for extra credit This changes the specifics of what programs you turn in for the main credit they are now simple file transfer programs Version 2 Fri Nov 2 Clarified abstracted system calls 1 Team Work You can work in teams of 2 for this project You are free to choose your own partner You may also work on your own no extra credit or additional time granted for working alone Since this project involves a significant amount of design and implementation you are encouraged to work with a partner Be prudent in your choice of partner as you will each rely significantly on the other in order to effectively divide up the work If you choose to have one you should select your teammate by the Phase 1 deadline and turn in a single writeup with both of your names on it 1 Phase 1 Designing a Reliable Transport Protocol TCP is the workhorse of today s Internet carrying the majority of today s Internet traffic TCP provides a reliable in order byte stream abstraction It employs flow control to prevent fast senders from overwhelming slow receivers and congestion control mechanisms to react to network congestion by lowering the sending rate In Project 1 you used TCP to reliably transfer data between your Web server and your Web client In this project you will design and implement your own reliable transport protocol on top of an unreliable transport protocol namely UDP In Phase 1 you will design this protocol Your protocol should have the following features 1 Reliable Data Transfer The protocol should reliably transfer data from a sender to a receiver The underlying packets containing your data e g UDP packets may be lost re ordered replicated or delayed inside the network Your protocol must handle these conditions 2 High Performance Data Transfer The protocol should transfer data quickly by using an approach such as Sliding Window 3 Congestion Control Your protocol should play nice with the network world at large by modifying its behavior in response to network congestion as indicated by packet drops This along with the need for high performance data transfer means you need to adopt an appropriate response to the state of network congestion or its absence such as AIMD 4 Flow Control The receiver should be able to limit the rate at which the sender sends it data i e a fast sender should not overwhelm a slow receiver 1 1 Additional Considerations You do NOT have to implement all the features of TCP You may borrow mechanisms from TCP to implement the features described above TCP is a symmetric protocol a single TCP connection can simultaneously transfer data in both directions Your protocol should transfer data in a single direction only from sender connection originator to receiver connection responder You should optimize the protocol and the headers associated with it for unidirectional data transfer This means that your design should differ somewhat from TCP Optional If you wish to support bidirectional transfers note this in your design writeup In addition when doing so you still must use a design other than copying TCP 2 TCP was standardized more than 25 years ago Do not feel you must restrict yourself to the styles used in TCP If you have a method that can improve on TCP s approaches use it 1 2 Phase 1 Deliverables Due Nov 13 2007 11PM Phase 1 is worth 40 points You need to submit a design report that contains the following information A description of your proposed protocol including any extra messages or headers that you might use Sketch the headers including the size of different fields and their format representation A finite state machine description or diagram illustrating the operation of your proposed protocol from both the sender s and the receiver s perspectives Describe how your protocol achieves reliability Briefly discuss how your protocol deals with 1 2 3 4 5 Lost data Corrupted data Reordered data Replicated duplicated data Delayed data Discuss any limitations imposed by your design including but not limited to 1 How does your protocol deal with extreme loss 2 How well can your protocol take advantage of a very high bandwidth path To what degree is your congestion control scheme fair Keep the report short and concise If you think you need more than 5 pages 12 point font single or double column contact Lisa in advance You do not need to fill 5 pages if you can express your design adequately in less The report must be in one of the following formats doc pdf ps html or txt You can structure the report in any way you deem fit but clarity and presentation will be valued during grading We will aim to return feedback and grades for your design within 3 days after the Phase 1 submission deadline 1 3 Phase 1 Submission Guidelines 1 2 3 4 5 6 Log in to your instructional account Create a directory called proj2phase1 mkdir proj2phase1 Change to
View Full Document