School of Computer Science
Computer Science 308-535B
In this project, you are asked to implement a simple IP protocol,
and to implement the RIP routing protocol. You are expected to
fragment a datagram at its source and to reassemble it at its destination.
Details of the project follow.
We will assume that hosts are resident on a point to
point network which has a fixed routing table. For the sake of
simplicity, assume that each network has 4 hosts, that the
network takes the form of a square, and that all packets
circulate in a clockwise manner (this defines a fixed routing algorithm
in the "local" networks). One of the nodes is attached to
a backbone node on the backbone network.
The backbone network is to be in the form of a pentagon, with
one "square" network attached to each of the backbone nodes.
Fragmentation and encapsulation
You are expected to fragment datagrams and to re-assemble them
at destination hosts. You should consult the section in
chapter 4 on fragmentation and reassembly.
You are expected to encapsulate the packets of the fragemented
datagram with the appropriate frame headers and trailers.
This means IP headers/trailers for IP datagrams (and fragments).
The metric which RIP is to employ is hop count, and RIP packets
announcing the distances to neighbouring networks are to be
broadcast periodically. You are determine when to launch them.
This is an important design decision. You will also have to assign
network numbers to each of the destination("square") networks.
Testing the program
In order to test your program, you should demonstrate that
you can have at least 4 separate full duplex connections active
simultaneously. The 4 separate connections should originate
and terminate at distinct hosts (i.e. you will use a total of at
least 8 hosts). You should make sure that you force the program
to both fragment and re-assemble a message. It is up to you
to chose a large enough message size so that you are forced
to fragment and reassemble messages.
You are to make use of the handin program
and to provide a documented hard copy of the
source code, along with a clear
description of how to run the code. I expect extensive comments on the
program. This means that I want comments on the purpose of
each process, the inputs and outputs to the process, and comments
on the meaning of the lines of code. The quality of your documentation
will count as part of the grade.
For this project, you are asked to use the handin
facility for the executable. To use this facility, you should
type the following:
to obtain a list of the available subdirectories
handin cs535 ass01 file1 file2
to hand in file 1 and file 2 for
handin cs535 ass1
to check whether the files were, in fact, received.
The handin facility should be accessed from the server nova.
All programs should be able to compile and run on willy.
A Makefile must be included.
A Readme file must be included with brief introduction of the program
and detailed instructions on how to run the program.
Instructions on how to execute the program must be included in the Readme file.
Submit a blank file with your student ID along with with all of the
The assignment is due on Friday, November 15.