# CEN4516: Computer Networks

Project 5

Spring 2008

1

Distance Vector Routing

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

2

Overview of distance vector routing

You are to implement distance vector routing. There are ﬁve steps for each node of the graph to accomplish link state routing: 1. Neighbor discovery 2. Create forwarding table with only the information learned during neighbor discovery 3. Exchange the “two columns” of the fowarding table with neighbors 4. Update forwarding table with information received from neighbors 5. Repeat steps 3 and 4 until convergence

3

Details

Your assignment is to implement distance vector routing. The metric to minimize is distance. 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! Part of the design of the project is deciding the structure that is used to send information to the nodes. .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. The node executable may need to use select(). A node can only send datagrams to its neighbors and receive datagrams from its neighbors. The information that is sent from a node, for example node A, should be (destination node, A’s minimum cost to destination node). This is further described in your text. A node only sends information to its neighbors when the node has a new value to a destination. In each node, a 2D array, D, should be maintained at each node. Also, each node should store in an array the distance to its neighbors. You may ﬁnd other data structures are necessary, this is dependent on your implementation decision. Again, please see your book for details. The project consists of three parts.

4

Part 1 (25 points): Convergence to minimum distance

The nodes should exchange data until they converge to the minimum distance. The distances to neighbors should remain static. After the nodes have converged, each node should print out its distance table D in a meaningful form - see examples in the text for guidance. Also each node must report how many cost tables it received from each neighbor for the node to converge. 1

CEN4516: Computer Networks

Project 5

Spring 2008

5

Part 2 (5 points): Good News

The distance between nodes, say A and C, changes to lower value. Again, let the values converge to the minimum distance. Each node should report (print out) its distance table after converge. Also each node must report how many cost tables it received from each neighbor for the node to converge

6

Part 3 (5 points): Bad News

The distance between nodes changes to a higher value. Use the distance update from part 2 and the distance tables after part 2 as the starting point. Again, let the values converge to the minimum distance. Each node should report (print out) its distance table after converge. Also report the number of exchanges required by each node for each destination for the values to converge.

7

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.

8

Language

Your program can be written in C or Java.

9

Submitting

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

10

Points 35; 10 of 35 are BONUS POINTS!

2