McGill University
School of Computer Science

Computer Science 308-535B
Computer Networks

Description: 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.

Network 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).

Routing 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.

Implemetation 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.

Submission requirements For this project, you are asked to use the handin facility for the executable. To use this facility, you should type the following:
handin cs535
to obtain a list of the available subdirectories handin cs535 ass01 file1 file2
to hand in file 1 and file 2 for subdirectory 01.
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 other files.

Due date The assignment is due on Friday, November 15.