Distance Vector Routing Practical

6
AIM: To study and implement Distance Vector Routing Algorithm. THEORY: In distance vector routing, the least-cost route between any two nodes is the route with minimum distance. In this protocol, as the name implies, each node maintains a vector (table) of minimum distances to every node. The table at each node also guides the packets to the desired node by showing the next stop in the route (next-hop routing). Initialization At the beginning, however, this is not the case. Each node can know only the distance between itself and its immediate neighbours, those directly connected to it. So for the moment, we assume that each node can send a message to the immediate neighbours and find the distance between itself and these neighbours. Node which are not connected are marked as infinity. Sharing The whole idea of distance vector routing is the sharing of information between neighbours. A node is not aware of a neighbour’s table. The best solution for each node is to send its entire table to the neighbour and let the neighbour decide what part to use and what part to discard. However, the third column of a table (next stop) is not useful for the neighbour. When the neighbour receives a table, this column needs to be replaced with the sender's name. If any of the rows can be used, the next node is the sender of the table. A node therefore can send only the first two columns of its table to any neighbour. In other words, sharing here means sharing only the first two columns. In distance vector routing, each node shares its routing table with its immediate neighbours periodically and when there is a change.

description

C code for Distance Vector Routing along with

Transcript of Distance Vector Routing Practical

Page 1: Distance Vector Routing Practical

AIM: To study and implement Distance Vector Routing Algorithm.

THEORY:

In distance vector routing, the least-cost route between any two nodes is the route with minimum distance. In this protocol, as the name implies, each node maintains a vector (table) of minimum distances to every node. The table at each node also guides the packets to the desired node by showing the next stop in the route (next-hop routing).

Initialization

At the beginning, however, this is not the case. Each node can know only the distance between itself and its immediate neighbours, those directly connected to it. So for the moment, we assume that each node can send a message to the immediate neighbours and find the distance between itself and these neighbours. Node which are not connected are marked as infinity.

Sharing

The whole idea of distance vector routing is the sharing of information between neighbours. A node is not aware of a neighbour’s table. The best solution for each node is to send its entire table to the neighbour and let the neighbour decide what part to use and what part to discard. However, the third column of a table (next stop) is not useful for the neighbour. When the neighbour receives a table, this column needs to be replaced with the sender's name. If any of the rows can be used, the next node is the sender of the table. A node therefore can send only the first two columns of its table to any neighbour. In other words, sharing here means sharing only the first two columns.

In distance vector routing, each node shares its routing table with its immediate neighbours periodically and when there is a change.

Updating

When a node receives a two-column table from a neighbour, it needs to update its routing table. Updating takes three steps:

1. The receiving node needs to add the cost between itself and the sending node to each value in the second column. The logic is clear. If node C claims that its distance to a destination is x mi, and the distance between A and C is y mi, then the distance between A and that destination, via C, is x + y mi.

Page 2: Distance Vector Routing Practical

2. The receiving node needs to add the name of the sending node to each row as the third column if the receiving node uses information from any row. The sending node is the next node in the route.

3. The receiving node needs to compare each row of its old table with the corresponding row of the modified version of the received table.

a. If the next-node entry is different, the receiving node chooses the row with the smaller cost. If there is a tie, the old one is kept.

b. If the next-node entry is the same, the receiving node chooses the new row. For example, suppose node C has previously advertised a route to node X with distance

4. Suppose that now there is no path between C and X; node C now advertises this route with a distance of infinity. Node A must not ignore this value even though its old entry is smaller. The old route does not exist anymore. The new route has a distance of infinity.

CONCLUSION:

Thus we studied and implemented Distance Vector Routing algorithm.

Page 3: Distance Vector Routing Practical

CODE:

#include <stdio.h>#define INF 999

int main(void) {

int vector[10][10]={0};int i,j,k,n,copy[5][5]={0};

/* Enter Graph Information */printf("Enter no. of Nodes: ");scanf("%d",&n);printf("Enter adjacency matrix(Enter 999 for infinity)\n");for(i=0;i<n;i++)

for(j=0;j<n;j++)scanf("%d",&vector[i][j]);

/* Sharing and Updating Routing Table */for(i=0;i<n;i++){

for(j=0;j<n;j++){

for(k=0;k<n;k++){

copy[j][k]=vector[j][i]+vector[i][k];if(vector[j][i]==INF || vector[i][k]==INF)

copy[j][k]=INF;if(copy[j][k]<vector[j][k])

vector[j][k]=copy[j][k];}

}}

printf("Shared Routing Tables are:\n");for(i=0;i<n;i++){

printf("for %c\n",'A'+i);printf("TO\tCOST\n");for(j=0;j<n;j++)

printf("%c\t%d\n",'A'+j,vector[i][j]);}

return 0;}

Page 4: Distance Vector Routing Practical

OUTPUT:sh-4.3$ gcc -o main *.csh-4.3$ mainEnter no. of Nodes: 5Enter adjacency matrix(Enter 999 for infinity)0 5 2 3 9995 0 4 999 32 4 0 999 43 999 999 0 999999 3 4 999 0Shared Routing Tables are:for ATO COSTA 0B 5C 2D 3E 6for BTO COSTA 5B 0C 4D 8E 3for CTO COSTA 2B 4C 0D 5E 4for DTO COSTA 3B 8C 5D 0E 9for ETO COSTA 6B 3C 4D 9E 0sh-4.3$