CS519 : Programming Assignment 2(Optional)  

Implementing a Transport Layer Protocol in the Linux Kernel

Due: 15th April, 2002 by 11pm

How is this assignment different from the regular one?

This assignment is an option to the reliable transport protocol for the second programming assignment.  While this project is slightly tougher than the other option, it should be more fun and will give you invaluable hands on experience of working with the kernel networking implementations.  You will get more time to do this assignment, and should expect better grades even if you are unable to complete it, but are able to implement something substantial.  You WILL have to work in groups of 2 on this assignment!

What to do?

This assignment has to be done in two phases.  The specifications of the phases are as follows:

·        In Phase 1, you are required to add a protocol, parallel to TCP and UDP, in the Linux kernel. 

o       Specifications: Your modified protocol, called TCP_PLUS, should run over IP, and have a similar interface and functionality as TCP.  It should implement flow control, congestion control, sequencing, checksum, etc similar to TCP.  However, a user should be able to invoke your transport protocol by specifying a new socket type in the create_socket functional call.  Currently supported values for this type are SOCK_STREAM, SOCK_DGRAM, SOCK_RAW, etc.  You should add a new type, called SOCK_TCPPLUS, which will use TCP_PLUS to send messages over this connection.

o       How to Proceed: You should copy all the tcp files and rename them based on your new protocol.  Then you are advised to go through the different layers and see how they call TCP functions.  This should be a good learning experience.  Most of your modifications should be in the /usr/src/linux/net/ipv4 directory.

·        In Phase 2, you are required to do an interesting analysis of TCP_PLUS, or add new features to it.

o      Specifications: You are free to implement any new feature in TCP, or take out features, or just do an interesting analysis.  However, you should get your choice approved by Prof. Matthews and Ranveer Chandra.  This is to ensure that you do sufficient work and it can be reasonably graded.  Some options for this phase are:

§        Implement ATP: (This option is recommended.)  Benjamin Atkin, a graduate student at Cornell, recently submitted a paper on an Adaptive Transport Protocol, called ATP.  This protocol is reliable and message oriented, and is well suited for use in wireless networks with varying bandwidth.  Since it might be difficult to implement the entire protocol in the course of this project, we expect you to add small features of ATP to TCP.  For example, you might include deadlines in the send calls for the sockets.  If the underlying layers were unable to send the packet within the deadline, you would have to send a callback to the application.  The specifications for ATP give details, which might be helpful for this phase.

·        Help: Ben Atkin will hold special office hours on Wednesdays from 1:30pm to 2:30pm for this assignment.  Ben has implemented ATP in the user level over Reliable UDP.  He has kindly agreed to make his code available to the groups interested in this project.

§         Analyze the overhead of TCP:  We have learnt in cs519 that TCP has a significant overhead in message sends and receive.  A classic paper, titled “The Analysis of TCP Processing Overhead”, by Clark, Jacobson, Romkey and Sarwen in the IEEE Communications Magazine, vol. 27, pp. 23--29, June 1989 does an interesting analysis on the overhead of TCP.  You could think of schemes to replicate their results, come up with some new suggestion, or implement a scheme suggested in the paper to speed up TCP performance.

§         Other suggestions:  You are most welcome to come up with your own suggestions! We could discuss and help fine-tune it to something that you should target in this phase.

o       How to Proceed: You definitely need to finish Phase 1 to begin work on this phase;)  This phase is mainly research, and more importantly fun! A good effort will definitely fetch you a good grade. 

What to Submit:

You will need to demo your code and submit a paper on your work.  The paper should be in the format of a research/technical publication.  The template will be provided for assistance, but in general the two papers mentioned above should provide you sufficient guidelines.  The demos will be scheduled in the week from the 15th to the 22nd of April.  Details will be posted to the newsgroup.

You will have to tar a copy of the files you modified (nothing more) and mail them to Jeanna and Ranveer.  The tar ball should follow the directory structure of the linux source files, but only contain the changed files.  For example, the linux/net/ipv4 directory will only have the tcpplus files, and no tcp or udp files if you did not touch them.

Help with Linux Machines:

ADM has been very helpful to provide us with infrastructure in the CSUGLab, Upson 315 and 330.  7 machines running Windows 2000 in Room 315 have VMWare installed on them.  Further, linux is running on 7 machines in Room 330.  To be able to login to the linux machines or be able to use VMWare in 315, you will need to contact Ranveer or Dora Abdullah.  You are also free to use your own linux boxes, which could be a laptop, or a desktop at home.  However, you will have to demo your code in Upson, on either one of the machines in the CSUGLab or your laptop.  

Resources on the Web:

·        Linux Kernel Hacker’s Guide

·        List of kernel documentation

 

Note: we don’t expect this to change much, but there might be some minor changes after spring break