PROGRAM 1
/* filename: program1.c author: anthony f. ortiz */
/* link state routing program */
/* header files */
#include
/* max node constant */
#define maxnodes 8
/* max events constant */
#define maxevents 1000
/* initialization constants for routing tables */
#define infinity 10000
#define tentative 0
#define permanent 1
/* topologies structure will be a int [][][] */
/* not shown here */
/* link state packet structure */
struct linkstatepacket
{
int address;
int links [maxnodes];
};
/* single routing buffer */
struct buffer
{
int address;
int sendflags [maxnodes];
int ackflags [maxnodes];
};
/* full routing buffer */
struct routerbuffer
{
struct buffer buffers [maxnodes - 1];
};
/* single node of the routing table */
struct state
{
int pred;
int length;
int label;
};
/* full routing table */
struct routingtable
{
struct state states [maxnodes];
};
/* single event */
struct event
{
int orgin;
int source;
int destination;
};
/* initialize all router topologies to 0. */
void initialize_topologies_zero (int topologies [maxnodes][maxnodes][maxnodes])
{
int i = 0;
int j = 0;
int k = 0;
for (i = 0; i < maxnodes; i++)
{
for (j = 0; j < maxnodes; j++)
{
for (k = 0; k < maxnodes; k++)
{
topologies [i][j][k] = 0;
}
}
}
}
/* initialize all state link packets to 0. */
void initialize_linkstatepackets_zero (struct linkstatepacket packets [maxnodes])
{
int i = 0;
int j = 0;
for (i = 0; i < maxnodes; i++)
{
packets [i].address = i;
for (j = 0; j < maxnodes; j++)
{
packets [i].links [j] = 0;
}
}
}
/* initialize all router buffers to 0. */
void initialize_routerbuffers_zero (struct routerbuffer rbuffers [maxnodes])
{
int i = 0;
int j = 0;
int k = 0;
int address;
for (i = 0; i < maxnodes; i++)
{
address = 0;
for (j = 0; j < maxnodes - 1; j++)
{
if (i == j)
{
address = address + 1;
}
rbuffers [i].buffers [j].address = address;
address = address + 1;
for (k = 0; k < maxnodes; k++)
{
rbuffers [i].buffers [j].sendflags [k] = 0;
rbuffers [i].buffers [j].ackflags [k] = 0;
}
}
}
}
/* initialize all routing tables to 0. */
void initialize_routingtables_zero (struct routingtable tables [maxnodes])
{
int i = 0;
int j = 0;
for (i = 0; i < maxnodes; i++)
{
for (j = 0; j < maxnodes; j++)
{
tables [i].states [j].pred = -1;
tables [i].states [j].length = infinity;
tables [i].states [j].label = tentative;
}
}
}
/* initialize event queue to zero. */
void initialize_eventqueue_zero (struct event events [maxevents])
{
int i = 0;
for (i = 0; i < maxevents; i++)
{
events [i].orgin = 0;
events [i].destination = 0;
events [i].source = 0;
}
}
/* initialize all router topologies. */
void initialize_topolologies (int topologies [maxnodes][maxnodes][maxnodes])
{
FILE * infile;
int startnode = 0;
int endnode = 0;
int weight = 0;
infile = fopen ("nodes.dat", "r");
while (! feof (infile))
{
fscanf (infile, "%i %i %i", &startnode, &endnode, &weight);
topologies [startnode - 1][startnode - 1][endnode - 1] = weight;
}
fclose (infile);
}
/* initialize all link state packets. */
void initialize_linkstatepackets (int topologies [maxnodes][maxnodes][maxnodes], struct linkstatepacket packets [maxnodes])
{
int i = 0;
int j = 0;
for (i = 0; i < maxnodes; i++)
{
for (j = 0; j < maxnodes; j++)
{
if (i == packets [i].address && topologies [i][i][j] != 0)
{
packets [i].links [j] = topologies [i][i][j];
}
}
}
}
/* initialize all router buffers. */
void initialize_routerbuffers (struct routerbuffer rbuffers [maxnodes], struct linkstatepacket packets [maxnodes])
{
int i = 0;
int j = 0;
int k = 0;
for (i = 0; i < maxnodes; i++)
{
for (j = 0; j < maxnodes - 1; j++)
{
for (k = 0; k < maxnodes; k++)
{
if (i == k)
{
rbuffers [i].buffers [j].ackflags [k] = 1;
}
if (rbuffers [i].buffers [j].address != packets [i].address && packets [i].links [k] != 0)
{
rbuffers [i].buffers [j].sendflags [k] = 1;
}
}
}
}
}
/* this procedure simulates flooding using routing buffers and an */
/* event queue. */
int do_flooding (int topologies [maxnodes][maxnodes][maxnodes], struct linkstatepacket packets [maxnodes], struct routerbuffer rbuffers [maxnodes], struct event events [maxevents])
{
int i = 0;
int j = 0;
int k = 0;
int size = 0;
int orgin = 0;
int source = 0;
int destination = 0;
for (i = 0; i < maxnodes; i++)
{
for (j = 0; j < maxnodes - 1; j++)
{
for (k = 0; k < maxnodes; k++)
{
if (rbuffers [i].buffers [j].sendflags [k] == 1)
{
events [size].orgin = rbuffers [i].buffers [j].address;
events [size].source = i;
events [size].destination = k;
size++;
}
}
}
}
printf ("flooding process\n\n");
for (i = 0; i < size; i++)
{
orgin = events [i].orgin;
source = events [i].source;
destination = events [i].destination;
printf ("node %i sending node %i's link state packet to node %i.\n", source + 1, orgin + 1, destination + 1);
for (j = 0; j < maxnodes; j++)
{
topologies [orgin][source][j] = packets [source].links [j];
}
printf ("node %i received node %i's link state packet from node %i.\n", destination + 1, orgin + 1, source + 1);
printf ("node %i sending ack for node %i's link state packet to node %i.\n", destination + 1, orgin + 1, source + 1);
printf ("node %i received ack for node %i's link state packet from node %i.\n\n", source + 1, orgin + 1, destination + 1);
}
printf ("the # of messages is %i\n\n", size);
return size;
}
/* calculate routing tables with dijkstra's algorithm. */
void calculate_routingtables (int topologies [maxnodes][maxnodes][maxnodes], struct routingtable tables [maxnodes], int source, int terminal)
{
int initial = 0;
int i = 0;
int min = 0;
tables [terminal].states [terminal].pred = -1;
tables [terminal].states [terminal].length = 0;
tables [terminal].states [terminal].label = permanent;
initial = terminal;
source = -1; /* not sure about this variable */
do
{
for (i = 0; i < maxnodes; i++)
{
if (topologies [terminal][initial][i] != 0 && tables [terminal].states [i].label == tentative)
{
if (tables [terminal].states [initial].length + topologies [terminal][initial][i] < tables [terminal].states [i].length)
{
tables [terminal].states [i].pred = initial;
tables [terminal].states [i].length = tables [terminal].states [initial].length + topologies [terminal][initial][i];
}
}
}
initial = -1;
min = infinity;
for (i = 0; i < maxnodes; i++)
{
if (tables [terminal].states [i].label == tentative && tables [terminal].states [i].length < min)
{
min = tables [terminal].states [i].length;
initial = i;
}
}
tables [terminal].states [initial].label = permanent;
}
while (initial != source);
}
/* find optimal path given a start and destination. */
void find_path (struct routingtable tables [maxnodes])
{
int start = 0;
int destination = 0;
int hop = 0;
int hop2 = 0;
int length = 0;
int pathlength = 0;
do
{
pathlength = 0;
printf ("enter a source (1-8): ");
scanf ("%i", &start);
start = start - 1;
printf ("\nenter a destination (1-8): ");
scanf ("%i", &destination);
destination = destination - 1;
printf ("\nthe path is ");
if (start == destination)
{
printf ("%i with weight = 0.\n", start + 1);
}
else
{
hop = start;
do
{
printf ("%i -> ", hop + 1);
hop = tables [destination].states [hop].pred;
}
while (destination != hop);
printf ("%i with weights ", hop + 1);
hop = start;
do
{
hop2 = tables [destination].states [hop].pred;
length = tables [destination].states [hop].length - tables [destination].states [hop2].length;
printf ("%i + ", length);
pathlength = pathlength + length;
hop = tables [destination].states [hop].pred;
}
while (destination != hop);
printf ("0 = %i\n", pathlength);
}
printf ("\n");
}
while (start != destination);
}
/* print all the routers topologies. */
void print_topologies (int topologies [maxnodes][maxnodes][maxnodes])
{
int i = 0;
int j = 0;
int k = 0;
printf ("router topologies\n\n");
for (i = 0; i < maxnodes; i++)
{
for (j = 0; j < maxnodes; j++)
{
for (k = 0; k < maxnodes; k++)
{
printf ("%i ", topologies [i][j][k]);
}
printf ("\n");
}
printf ("\n");
}
}
/* print all the link state packets. */
void print_linkstatepackets (struct linkstatepacket packets [maxnodes])
{
int i = 0;
int j = 0;
printf ("link state packets\n\n");
for (i = 0; i < maxnodes; i++)
{
printf ("%i ", packets [i].address + 1);
for (j = 0; j < maxnodes; j++)
{
printf ("%i ", packets [i].links [j]);
}
printf ("\n\n");
}
}
/* print all the router buffers. */
void print_routerbuffers (struct routerbuffer rbuffers [maxnodes])
{
int i = 0;
int j = 0;
int k = 0;
printf ("router buffers\n\n");
for (i = 0; i < maxnodes; i++)
{
for (j = 0; j < maxnodes - 1; j++)
{
printf ("%i ", rbuffers [i].buffers [j].address + 1);
for (k = 0; k < maxnodes; k++)
{
printf ("%i ", rbuffers [i].buffers [j].sendflags [k]);
}
for (k = 0; k < maxnodes; k++)
{
printf ("%i ", rbuffers [i].buffers [j].ackflags [k]);
}
printf ("\n");
}
printf ("\n\n");
}
}
/* print all the routing tables. */
void print_routingtables (struct routingtable tables [maxnodes])
{
int i = 0;
int j = 0;
printf ("routing tables\n\n");
for (i = 0; i < maxnodes; i++)
{
for (j = 0; j < maxnodes; j++)
{
printf ("%i %i %i\n", j + 1, tables [i].states [j].pred + 1, tables [i].states [j].length);
}
printf ("\n");
}
}
/* print event queue. */
void print_eventqueue (struct event events [maxevents], int size)
{
int i = 0;
printf ("event queue\n\n");
for (i = 0; i < size; i++)
{
printf ("%i %i %i\n", events [i].orgin + 1, events [i].destination + 1, events [i].source + 1);
}
}
/* this is the main function. it simulates the link state routing */
/* algorithm, */
/* 1) discover its neighbors and learn their network addresses. */
/* 2) measure the delay or cost to each of its neigbors. */
/* 3) construct a packet telling all it has just learned. */
/* 4) send this packet to all other routers. */
/* 5) compute the shortest path to every other router. */
void main ()
{
/* router's topologies */
int topologies [maxnodes][maxnodes][maxnodes];
/* router's link state packets */
struct linkstatepacket packets [maxnodes];
/* router's buffers */
struct routerbuffer rbuffers [maxnodes];
/* router's routing tables */
struct routingtable tables [maxnodes];
/* event queue */
struct event events [maxevents];
/* source used for dijkstra's algorithm */
int source = 0;
/* destination used for dijkstra's algorithm */
int destination = 0;
/* events in queue */
int size = 0;
/* first 3 steps */
initialize_topologies_zero (topologies);
initialize_linkstatepackets_zero (packets);
initialize_routerbuffers_zero (rbuffers);
initialize_topolologies (topologies);
initialize_linkstatepackets (topologies, packets);
initialize_routerbuffers (rbuffers, packets);
//print_topologies (topologies);
//print_linkstatepackets (packets);
//print_routerbuffers (rbuffers);
/* 4th step */
initialize_eventqueue_zero (events);
size = do_flooding (topologies, packets, rbuffers, events);
//print_topologies (topologies);
//print_eventqueue (events, size);
/* 5th step */
initialize_routingtables_zero (tables);
for (destination = 0; destination < maxnodes; destination++)
calculate_routingtables (topologies, tables, source, destination);
print_routingtables (tables);
/* done with link state routing algorithm */
/* test */
find_path (tables);
}
/* filename: prog1.out */
flooding process
node 1 sending node 2's link state packet to node 2.
node 2 received node 2's link state packet from node 1.
node 2 sending ack for node 2's link state packet to node 1.
node 1 received ack for node 2's link state packet from node 2.
node 1 sending node 3's link state packet to node 2.
node 2 received node 3's link state packet from node 1.
node 2 sending ack for node 3's link state packet to node 1.
node 1 received ack for node 3's link state packet from node 2.
node 1 sending node 4's link state packet to node 2.
node 2 received node 4's link state packet from node 1.
node 2 sending ack for node 4's link state packet to node 1.
node 1 received ack for node 4's link state packet from node 2.
node 1 sending node 5's link state packet to node 2.
node 2 received node 5's link state packet from node 1.
node 2 sending ack for node 5's link state packet to node 1.
node 1 received ack for node 5's link state packet from node 2.
node 1 sending node 6's link state packet to node 2.
node 2 received node 6's link state packet from node 1.
node 2 sending ack for node 6's link state packet to node 1.
node 1 received ack for node 6's link state packet from node 2.
node 1 sending node 7's link state packet to node 2.
node 2 received node 7's link state packet from node 1.
node 2 sending ack for node 7's link state packet to node 1.
node 1 received ack for node 7's link state packet from node 2.
node 1 sending node 8's link state packet to node 2.
node 2 received node 8's link state packet from node 1.
node 2 sending ack for node 8's link state packet to node 1.
node 1 received ack for node 8's link state packet from node 2.
node 2 sending node 1's link state packet to node 1.
node 1 received node 1's link state packet from node 2.
node 1 sending ack for node 1's link state packet to node 2.
node 2 received ack for node 1's link state packet from node 1.
node 2 sending node 1's link state packet to node 3.
node 3 received node 1's link state packet from node 2.
node 3 sending ack for node 1's link state packet to node 2.
node 2 received ack for node 1's link state packet from node 3.
node 2 sending node 1's link state packet to node 5.
node 5 received node 1's link state packet from node 2.
node 5 sending ack for node 1's link state packet to node 2.
node 2 received ack for node 1's link state packet from node 5.
node 2 sending node 3's link state packet to node 1.
node 1 received node 3's link state packet from node 2.
node 1 sending ack for node 3's link state packet to node 2.
node 2 received ack for node 3's link state packet from node 1.
node 2 sending node 3's link state packet to node 3.
node 3 received node 3's link state packet from node 2.
node 3 sending ack for node 3's link state packet to node 2.
node 2 received ack for node 3's link state packet from node 3.
node 2 sending node 3's link state packet to node 5.
node 5 received node 3's link state packet from node 2.
node 5 sending ack for node 3's link state packet to node 2.
node 2 received ack for node 3's link state packet from node 5.
node 2 sending node 4's link state packet to node 1.
node 1 received node 4's link state packet from node 2.
node 1 sending ack for node 4's link state packet to node 2.
node 2 received ack for node 4's link state packet from node 1.
node 2 sending node 4's link state packet to node 3.
node 3 received node 4's link state packet from node 2.
node 3 sending ack for node 4's link state packet to node 2.
node 2 received ack for node 4's link state packet from node 3.
node 2 sending node 4's link state packet to node 5.
node 5 received node 4's link state packet from node 2.
node 5 sending ack for node 4's link state packet to node 2.
node 2 received ack for node 4's link state packet from node 5.
node 2 sending node 5's link state packet to node 1.
node 1 received node 5's link state packet from node 2.
node 1 sending ack for node 5's link state packet to node 2.
node 2 received ack for node 5's link state packet from node 1.
node 2 sending node 5's link state packet to node 3.
node 3 received node 5's link state packet from node 2.
node 3 sending ack for node 5's link state packet to node 2.
node 2 received ack for node 5's link state packet from node 3.
node 2 sending node 5's link state packet to node 5.
node 5 received node 5's link state packet from node 2.
node 5 sending ack for node 5's link state packet to node 2.
node 2 received ack for node 5's link state packet from node 5.
node 2 sending node 6's link state packet to node 1.
node 1 received node 6's link state packet from node 2.
node 1 sending ack for node 6's link state packet to node 2.
node 2 received ack for node 6's link state packet from node 1.
node 2 sending node 6's link state packet to node 3.
node 3 received node 6's link state packet from node 2.
node 3 sending ack for node 6's link state packet to node 2.
node 2 received ack for node 6's link state packet from node 3.
node 2 sending node 6's link state packet to node 5.
node 5 received node 6's link state packet from node 2.
node 5 sending ack for node 6's link state packet to node 2.
node 2 received ack for node 6's link state packet from node 5.
node 2 sending node 7's link state packet to node 1.
node 1 received node 7's link state packet from node 2.
node 1 sending ack for node 7's link state packet to node 2.
node 2 received ack for node 7's link state packet from node 1.
node 2 sending node 7's link state packet to node 3.
node 3 received node 7's link state packet from node 2.
node 3 sending ack for node 7's link state packet to node 2.
node 2 received ack for node 7's link state packet from node 3.
node 2 sending node 7's link state packet to node 5.
node 5 received node 7's link state packet from node 2.
node 5 sending ack for node 7's link state packet to node 2.
node 2 received ack for node 7's link state packet from node 5.
node 2 sending node 8's link state packet to node 1.
node 1 received node 8's link state packet from node 2.
node 1 sending ack for node 8's link state packet to node 2.
node 2 received ack for node 8's link state packet from node 1.
node 2 sending node 8's link state packet to node 3.
node 3 received node 8's link state packet from node 2.
node 3 sending ack for node 8's link state packet to node 2.
node 2 received ack for node 8's link state packet from node 3.
node 2 sending node 8's link state packet to node 5.
node 5 received node 8's link state packet from node 2.
node 5 sending ack for node 8's link state packet to node 2.
node 2 received ack for node 8's link state packet from node 5.
node 3 sending node 1's link state packet to node 2.
node 2 received node 1's link state packet from node 3.
node 2 sending ack for node 1's link state packet to node 3.
node 3 received ack for node 1's link state packet from node 2.
node 3 sending node 1's link state packet to node 4.
node 4 received node 1's link state packet from node 3.
node 4 sending ack for node 1's link state packet to node 3.
node 3 received ack for node 1's link state packet from node 4.
node 3 sending node 2's link state packet to node 2.
node 2 received node 2's link state packet from node 3.
node 2 sending ack for node 2's link state packet to node 3.
node 3 received ack for node 2's link state packet from node 2.
node 3 sending node 2's link state packet to node 4.
node 4 received node 2's link state packet from node 3.
node 4 sending ack for node 2's link state packet to node 3.
node 3 received ack for node 2's link state packet from node 4.
node 3 sending node 4's link state packet to node 2.
node 2 received node 4's link state packet from node 3.
node 2 sending ack for node 4's link state packet to node 3.
node 3 received ack for node 4's link state packet from node 2.
node 3 sending node 4's link state packet to node 4.
node 4 received node 4's link state packet from node 3.
node 4 sending ack for node 4's link state packet to node 3.
node 3 received ack for node 4's link state packet from node 4.
node 3 sending node 5's link state packet to node 2.
node 2 received node 5's link state packet from node 3.
node 2 sending ack for node 5's link state packet to node 3.
node 3 received ack for node 5's link state packet from node 2.
node 3 sending node 5's link state packet to node 4.
node 4 received node 5's link state packet from node 3.
node 4 sending ack for node 5's link state packet to node 3.
node 3 received ack for node 5's link state packet from node 4.
node 3 sending node 6's link state packet to node 2.
node 2 received node 6's link state packet from node 3.
node 2 sending ack for node 6's link state packet to node 3.
node 3 received ack for node 6's link state packet from node 2.
node 3 sending node 6's link state packet to node 4.
node 4 received node 6's link state packet from node 3.
node 4 sending ack for node 6's link state packet to node 3.
node 3 received ack for node 6's link state packet from node 4.
node 3 sending node 7's link state packet to node 2.
node 2 received node 7's link state packet from node 3.
node 2 sending ack for node 7's link state packet to node 3.
node 3 received ack for node 7's link state packet from node 2.
node 3 sending node 7's link state packet to node 4.
node 4 received node 7's link state packet from node 3.
node 4 sending ack for node 7's link state packet to node 3.
node 3 received ack for node 7's link state packet from node 4.
node 3 sending node 8's link state packet to node 2.
node 2 received node 8's link state packet from node 3.
node 2 sending ack for node 8's link state packet to node 3.
node 3 received ack for node 8's link state packet from node 2.
node 3 sending node 8's link state packet to node 4.
node 4 received node 8's link state packet from node 3.
node 4 sending ack for node 8's link state packet to node 3.
node 3 received ack for node 8's link state packet from node 4.
node 4 sending node 1's link state packet to node 3.
node 3 received node 1's link state packet from node 4.
node 3 sending ack for node 1's link state packet to node 4.
node 4 received ack for node 1's link state packet from node 3.
node 4 sending node 1's link state packet to node 5.
node 5 received node 1's link state packet from node 4.
node 5 sending ack for node 1's link state packet to node 4.
node 4 received ack for node 1's link state packet from node 5.
node 4 sending node 2's link state packet to node 3.
node 3 received node 2's link state packet from node 4.
node 3 sending ack for node 2's link state packet to node 4.
node 4 received ack for node 2's link state packet from node 3.
node 4 sending node 2's link state packet to node 5.
node 5 received node 2's link state packet from node 4.
node 5 sending ack for node 2's link state packet to node 4.
node 4 received ack for node 2's link state packet from node 5.
node 4 sending node 3's link state packet to node 3.
node 3 received node 3's link state packet from node 4.
node 3 sending ack for node 3's link state packet to node 4.
node 4 received ack for node 3's link state packet from node 3.
node 4 sending node 3's link state packet to node 5.
node 5 received node 3's link state packet from node 4.
node 5 sending ack for node 3's link state packet to node 4.
node 4 received ack for node 3's link state packet from node 5.
node 4 sending node 5's link state packet to node 3.
node 3 received node 5's link state packet from node 4.
node 3 sending ack for node 5's link state packet to node 4.
node 4 received ack for node 5's link state packet from node 3.
node 4 sending node 5's link state packet to node 5.
node 5 received node 5's link state packet from node 4.
node 5 sending ack for node 5's link state packet to node 4.
node 4 received ack for node 5's link state packet from node 5.
node 4 sending node 6's link state packet to node 3.
node 3 received node 6's link state packet from node 4.
node 3 sending ack for node 6's link state packet to node 4.
node 4 received ack for node 6's link state packet from node 3.
node 4 sending node 6's link state packet to node 5.
node 5 received node 6's link state packet from node 4.
node 5 sending ack for node 6's link state packet to node 4.
node 4 received ack for node 6's link state packet from node 5.
node 4 sending node 7's link state packet to node 3.
node 3 received node 7's link state packet from node 4.
node 3 sending ack for node 7's link state packet to node 4.
node 4 received ack for node 7's link state packet from node 3.
node 4 sending node 7's link state packet to node 5.
node 5 received node 7's link state packet from node 4.
node 5 sending ack for node 7's link state packet to node 4.
node 4 received ack for node 7's link state packet from node 5.
node 4 sending node 8's link state packet to node 3.
node 3 received node 8's link state packet from node 4.
node 3 sending ack for node 8's link state packet to node 4.
node 4 received ack for node 8's link state packet from node 3.
node 4 sending node 8's link state packet to node 5.
node 5 received node 8's link state packet from node 4.
node 5 sending ack for node 8's link state packet to node 4.
node 4 received ack for node 8's link state packet from node 5.
node 5 sending node 1's link state packet to node 2.
node 2 received node 1's link state packet from node 5.
node 2 sending ack for node 1's link state packet to node 5.
node 5 received ack for node 1's link state packet from node 2.
node 5 sending node 1's link state packet to node 4.
node 4 received node 1's link state packet from node 5.
node 4 sending ack for node 1's link state packet to node 5.
node 5 received ack for node 1's link state packet from node 4.
node 5 sending node 1's link state packet to node 6.
node 6 received node 1's link state packet from node 5.
node 6 sending ack for node 1's link state packet to node 5.
node 5 received ack for node 1's link state packet from node 6.
node 5 sending node 1's link state packet to node 8.
node 8 received node 1's link state packet from node 5.
node 8 sending ack for node 1's link state packet to node 5.
node 5 received ack for node 1's link state packet from node 8.
node 5 sending node 2's link state packet to node 2.
node 2 received node 2's link state packet from node 5.
node 2 sending ack for node 2's link state packet to node 5.
node 5 received ack for node 2's link state packet from node 2.
node 5 sending node 2's link state packet to node 4.
node 4 received node 2's link state packet from node 5.
node 4 sending ack for node 2's link state packet to node 5.
node 5 received ack for node 2's link state packet from node 4.
node 5 sending node 2's link state packet to node 6.
node 6 received node 2's link state packet from node 5.
node 6 sending ack for node 2's link state packet to node 5.
node 5 received ack for node 2's link state packet from node 6.
node 5 sending node 2's link state packet to node 8.
node 8 received node 2's link state packet from node 5.
node 8 sending ack for node 2's link state packet to node 5.
node 5 received ack for node 2's link state packet from node 8.
node 5 sending node 3's link state packet to node 2.
node 2 received node 3's link state packet from node 5.
node 2 sending ack for node 3's link state packet to node 5.
node 5 received ack for node 3's link state packet from node 2.
node 5 sending node 3's link state packet to node 4.
node 4 received node 3's link state packet from node 5.
node 4 sending ack for node 3's link state packet to node 5.
node 5 received ack for node 3's link state packet from node 4.
node 5 sending node 3's link state packet to node 6.
node 6 received node 3's link state packet from node 5.
node 6 sending ack for node 3's link state packet to node 5.
node 5 received ack for node 3's link state packet from node 6.
node 5 sending node 3's link state packet to node 8.
node 8 received node 3's link state packet from node 5.
node 8 sending ack for node 3's link state packet to node 5.
node 5 received ack for node 3's link state packet from node 8.
node 5 sending node 4's link state packet to node 2.
node 2 received node 4's link state packet from node 5.
node 2 sending ack for node 4's link state packet to node 5.
node 5 received ack for node 4's link state packet from node 2.
node 5 sending node 4's link state packet to node 4.
node 4 received node 4's link state packet from node 5.
node 4 sending ack for node 4's link state packet to node 5.
node 5 received ack for node 4's link state packet from node 4.
node 5 sending node 4's link state packet to node 6.
node 6 received node 4's link state packet from node 5.
node 6 sending ack for node 4's link state packet to node 5.
node 5 received ack for node 4's link state packet from node 6.
node 5 sending node 4's link state packet to node 8.
node 8 received node 4's link state packet from node 5.
node 8 sending ack for node 4's link state packet to node 5.
node 5 received ack for node 4's link state packet from node 8.
node 5 sending node 6's link state packet to node 2.
node 2 received node 6's link state packet from node 5.
node 2 sending ack for node 6's link state packet to node 5.
node 5 received ack for node 6's link state packet from node 2.
node 5 sending node 6's link state packet to node 4.
node 4 received node 6's link state packet from node 5.
node 4 sending ack for node 6's link state packet to node 5.
node 5 received ack for node 6's link state packet from node 4.
node 5 sending node 6's link state packet to node 6.
node 6 received node 6's link state packet from node 5.
node 6 sending ack for node 6's link state packet to node 5.
node 5 received ack for node 6's link state packet from node 6.
node 5 sending node 6's link state packet to node 8.
node 8 received node 6's link state packet from node 5.
node 8 sending ack for node 6's link state packet to node 5.
node 5 received ack for node 6's link state packet from node 8.
node 5 sending node 7's link state packet to node 2.
node 2 received node 7's link state packet from node 5.
node 2 sending ack for node 7's link state packet to node 5.
node 5 received ack for node 7's link state packet from node 2.
node 5 sending node 7's link state packet to node 4.
node 4 received node 7's link state packet from node 5.
node 4 sending ack for node 7's link state packet to node 5.
node 5 received ack for node 7's link state packet from node 4.
node 5 sending node 7's link state packet to node 6.
node 6 received node 7's link state packet from node 5.
node 6 sending ack for node 7's link state packet to node 5.
node 5 received ack for node 7's link state packet from node 6.
node 5 sending node 7's link state packet to node 8.
node 8 received node 7's link state packet from node 5.
node 8 sending ack for node 7's link state packet to node 5.
node 5 received ack for node 7's link state packet from node 8.
node 5 sending node 8's link state packet to node 2.
node 2 received node 8's link state packet from node 5.
node 2 sending ack for node 8's link state packet to node 5.
node 5 received ack for node 8's link state packet from node 2.
node 5 sending node 8's link state packet to node 4.
node 4 received node 8's link state packet from node 5.
node 4 sending ack for node 8's link state packet to node 5.
node 5 received ack for node 8's link state packet from node 4.
node 5 sending node 8's link state packet to node 6.
node 6 received node 8's link state packet from node 5.
node 6 sending ack for node 8's link state packet to node 5.
node 5 received ack for node 8's link state packet from node 6.
node 5 sending node 8's link state packet to node 8.
node 8 received node 8's link state packet from node 5.
node 8 sending ack for node 8's link state packet to node 5.
node 5 received ack for node 8's link state packet from node 8.
node 6 sending node 1's link state packet to node 5.
node 5 received node 1's link state packet from node 6.
node 5 sending ack for node 1's link state packet to node 6.
node 6 received ack for node 1's link state packet from node 5.
node 6 sending node 1's link state packet to node 7.
node 7 received node 1's link state packet from node 6.
node 7 sending ack for node 1's link state packet to node 6.
node 6 received ack for node 1's link state packet from node 7.
node 6 sending node 2's link state packet to node 5.
node 5 received node 2's link state packet from node 6.
node 5 sending ack for node 2's link state packet to node 6.
node 6 received ack for node 2's link state packet from node 5.
node 6 sending node 2's link state packet to node 7.
node 7 received node 2's link state packet from node 6.
node 7 sending ack for node 2's link state packet to node 6.
node 6 received ack for node 2's link state packet from node 7.
node 6 sending node 3's link state packet to node 5.
node 5 received node 3's link state packet from node 6.
node 5 sending ack for node 3's link state packet to node 6.
node 6 received ack for node 3's link state packet from node 5.
node 6 sending node 3's link state packet to node 7.
node 7 received node 3's link state packet from node 6.
node 7 sending ack for node 3's link state packet to node 6.
node 6 received ack for node 3's link state packet from node 7.
node 6 sending node 4's link state packet to node 5.
node 5 received node 4's link state packet from node 6.
node 5 sending ack for node 4's link state packet to node 6.
node 6 received ack for node 4's link state packet from node 5.
node 6 sending node 4's link state packet to node 7.
node 7 received node 4's link state packet from node 6.
node 7 sending ack for node 4's link state packet to node 6.
node 6 received ack for node 4's link state packet from node 7.
node 6 sending node 5's link state packet to node 5.
node 5 received node 5's link state packet from node 6.
node 5 sending ack for node 5's link state packet to node 6.
node 6 received ack for node 5's link state packet from node 5.
node 6 sending node 5's link state packet to node 7.
node 7 received node 5's link state packet from node 6.
node 7 sending ack for node 5's link state packet to node 6.
node 6 received ack for node 5's link state packet from node 7.
node 6 sending node 7's link state packet to node 5.
node 5 received node 7's link state packet from node 6.
node 5 sending ack for node 7's link state packet to node 6.
node 6 received ack for node 7's link state packet from node 5.
node 6 sending node 7's link state packet to node 7.
node 7 received node 7's link state packet from node 6.
node 7 sending ack for node 7's link state packet to node 6.
node 6 received ack for node 7's link state packet from node 7.
node 6 sending node 8's link state packet to node 5.
node 5 received node 8's link state packet from node 6.
node 5 sending ack for node 8's link state packet to node 6.
node 6 received ack for node 8's link state packet from node 5.
node 6 sending node 8's link state packet to node 7.
node 7 received node 8's link state packet from node 6.
node 7 sending ack for node 8's link state packet to node 6.
node 6 received ack for node 8's link state packet from node 7.
node 7 sending node 1's link state packet to node 6.
node 6 received node 1's link state packet from node 7.
node 6 sending ack for node 1's link state packet to node 7.
node 7 received ack for node 1's link state packet from node 6.
node 7 sending node 1's link state packet to node 8.
node 8 received node 1's link state packet from node 7.
node 8 sending ack for node 1's link state packet to node 7.
node 7 received ack for node 1's link state packet from node 8.
node 7 sending node 2's link state packet to node 6.
node 6 received node 2's link state packet from node 7.
node 6 sending ack for node 2's link state packet to node 7.
node 7 received ack for node 2's link state packet from node 6.
node 7 sending node 2's link state packet to node 8.
node 8 received node 2's link state packet from node 7.
node 8 sending ack for node 2's link state packet to node 7.
node 7 received ack for node 2's link state packet from node 8.
node 7 sending node 3's link state packet to node 6.
node 6 received node 3's link state packet from node 7.
node 6 sending ack for node 3's link state packet to node 7.
node 7 received ack for node 3's link state packet from node 6.
node 7 sending node 3's link state packet to node 8.
node 8 received node 3's link state packet from node 7.
node 8 sending ack for node 3's link state packet to node 7.
node 7 received ack for node 3's link state packet from node 8.
node 7 sending node 4's link state packet to node 6.
node 6 received node 4's link state packet from node 7.
node 6 sending ack for node 4's link state packet to node 7.
node 7 received ack for node 4's link state packet from node 6.
node 7 sending node 4's link state packet to node 8.
node 8 received node 4's link state packet from node 7.
node 8 sending ack for node 4's link state packet to node 7.
node 7 received ack for node 4's link state packet from node 8.
node 7 sending node 5's link state packet to node 6.
node 6 received node 5's link state packet from node 7.
node 6 sending ack for node 5's link state packet to node 7.
node 7 received ack for node 5's link state packet from node 6.
node 7 sending node 5's link state packet to node 8.
node 8 received node 5's link state packet from node 7.
node 8 sending ack for node 5's link state packet to node 7.
node 7 received ack for node 5's link state packet from node 8.
node 7 sending node 6's link state packet to node 6.
node 6 received node 6's link state packet from node 7.
node 6 sending ack for node 6's link state packet to node 7.
node 7 received ack for node 6's link state packet from node 6.
node 7 sending node 6's link state packet to node 8.
node 8 received node 6's link state packet from node 7.
node 8 sending ack for node 6's link state packet to node 7.
node 7 received ack for node 6's link state packet from node 8.
node 7 sending node 8's link state packet to node 6.
node 6 received node 8's link state packet from node 7.
node 6 sending ack for node 8's link state packet to node 7.
node 7 received ack for node 8's link state packet from node 6.
node 7 sending node 8's link state packet to node 8.
node 8 received node 8's link state packet from node 7.
node 8 sending ack for node 8's link state packet to node 7.
node 7 received ack for node 8's link state packet from node 8.
node 8 sending node 1's link state packet to node 5.
node 5 received node 1's link state packet from node 8.
node 5 sending ack for node 1's link state packet to node 8.
node 8 received ack for node 1's link state packet from node 5.
node 8 sending node 1's link state packet to node 7.
node 7 received node 1's link state packet from node 8.
node 7 sending ack for node 1's link state packet to node 8.
node 8 received ack for node 1's link state packet from node 7.
node 8 sending node 2's link state packet to node 5.
node 5 received node 2's link state packet from node 8.
node 5 sending ack for node 2's link state packet to node 8.
node 8 received ack for node 2's link state packet from node 5.
node 8 sending node 2's link state packet to node 7.
node 7 received node 2's link state packet from node 8.
node 7 sending ack for node 2's link state packet to node 8.
node 8 received ack for node 2's link state packet from node 7.
node 8 sending node 3's link state packet to node 5.
node 5 received node 3's link state packet from node 8.
node 5 sending ack for node 3's link state packet to node 8.
node 8 received ack for node 3's link state packet from node 5.
node 8 sending node 3's link state packet to node 7.
node 7 received node 3's link state packet from node 8.
node 7 sending ack for node 3's link state packet to node 8.
node 8 received ack for node 3's link state packet from node 7.
node 8 sending node 4's link state packet to node 5.
node 5 received node 4's link state packet from node 8.
node 5 sending ack for node 4's link state packet to node 8.
node 8 received ack for node 4's link state packet from node 5.
node 8 sending node 4's link state packet to node 7.
node 7 received node 4's link state packet from node 8.
node 7 sending ack for node 4's link state packet to node 8.
node 8 received ack for node 4's link state packet from node 7.
node 8 sending node 5's link state packet to node 5.
node 5 received node 5's link state packet from node 8.
node 5 sending ack for node 5's link state packet to node 8.
node 8 received ack for node 5's link state packet from node 5.
node 8 sending node 5's link state packet to node 7.
node 7 received node 5's link state packet from node 8.
node 7 sending ack for node 5's link state packet to node 8.
node 8 received ack for node 5's link state packet from node 7.
node 8 sending node 6's link state packet to node 5.
node 5 received node 6's link state packet from node 8.
node 5 sending ack for node 6's link state packet to node 8.
node 8 received ack for node 6's link state packet from node 5.
node 8 sending node 6's link state packet to node 7.
node 7 received node 6's link state packet from node 8.
node 7 sending ack for node 6's link state packet to node 8.
node 8 received ack for node 6's link state packet from node 7.
node 8 sending node 7's link state packet to node 5.
node 5 received node 7's link state packet from node 8.
node 5 sending ack for node 7's link state packet to node 8.
node 8 received ack for node 7's link state packet from node 5.
node 8 sending node 7's link state packet to node 7.
node 7 received node 7's link state packet from node 8.
node 7 sending ack for node 7's link state packet to node 8.
node 8 received ack for node 7's link state packet from node 7.
the # of messages is 126
routing tables
1 0 0
2 1 2
3 2 6
4 3 8
5 2 8
6 5 11
7 8 13
8 5 12
1 2 2
2 0 0
3 2 4
4 3 6
5 2 6
6 5 9
7 8 11
8 5 10
1 2 6
2 3 4
3 0 0
4 3 2
5 4 3
6 5 6
7 8 8
8 5 7
1 2 8
2 3 6
3 4 2
4 0 0
5 4 1
6 5 4
7 8 6
8 5 5
1 2 8
2 5 6
3 4 3
4 5 1
5 0 0
6 5 3
7 8 5
8 5 4
1 2 11
2 5 9
3 4 6
4 5 4
5 6 3
6 0 0
7 6 3
8 7 4
1 2 13
2 5 11
3 4 8
4 5 6
5 8 5
6 7 3
7 0 0
8 7 1
1 2 12
2 5 10
3 4 7
4 5 5
5 8 4
6 7 4
7 8 1
8 0 0
enter a source (1-8): 7
enter a destination (1-8): 3
the path is 7 -> 8 -> 5 -> 4 -> 3 with weights 1 + 4 + 1 + 2 + 0 = 8
enter a source (1-8): 1
enter a destination (1-8): 1
the path is 1 with weight = 0.
BACK TO CS4590 PAGE.