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:
·
List
of kernel documentation
Note: we don’t expect this to change
much, but there might be some minor changes after spring break