# CEN4516: Computer Networks

Project 5

Spring 2008

1

We have discussed this algorithm in class and will discuss the project in lecture next time we meet.

2

You are to implement link state routing. There are ﬁve steps for each node of the graph to accomplish link state routing: 1. Neighbor discovery 2. Flooding of neighbor information to all nodes of the graph 3. Build graph representation of the node conﬁguration and edge values 4. Calculate the shortest from your node to all the other nodes using Dijstra’s shortest path algorithm. 5. Produce the node’s forwarding table If neighbor information changes (new iteration), steps 2 - 5 are repeated to calculate the possibly new forwarding tables.

3

Details

Each node of the graph should be represented with a process and the processes should communicate with one another through UDP sockets. There should only exist one source code ﬁle whose executable is used for each node process. The number of nodes in the graph should be at least ﬁve and the graph should be connected. For neighbor discovery, you may assume this information is already known. I suggest for each node you have a ﬁle for the process to read that contains the node’s neighbors and time to travel to each neighbor. This ﬁle can only contain information about the node’s neighbor! For ﬂooding of neighbor information, you must rely on your neighbors. Part of the design of the project is deciding the structure that is used to send information to the nodes and the representation of the graph. Each node should obtain information to represent a graph in a data structure. You may hard code in the number of nodes in your graph so each node will know that it has obtained information from all nodes in the graph. Once each node has heard from all the other nodes, it is time to run Dijkstra’s shortest path for each node. From these results, build a forwarding table. The forward table should be printed out by each node. Up to this point, the network has been static. To handle a dynamic network will earn bonus points. Each node will need to simulate that the time to travel to its neighbor changes and disseminate that information with ﬂooding. You can develop your own method on how to represent the data and its dynamic behavior. The output of the program should be the forwarding table of each node for each iteration.

4

Testing

Provide a text ﬁle with the information about the nodes. During the demonstration, we should not have to type in information about the location of the nodes. 1

CEN4516: Computer Networks

Project 5

Spring 2008

5

Language

Your program can be written in C or Java.

6

Submitting

Include the following when you submit your project: 1. A README.txt ﬁle 2. source code 3. other necessary ﬁles

7

Points: 25

2