In the previous lesson,

we learned the shortest distance to routing based on distance vector.

Today, we discuss its problems in a study,

The Shortest Distance Routing Based on Link State.

In distance vector approach,

the changes in routing table should trigger a router to broadcast

the minimum cost to its neighbors to speed up its convergence.

However, the problem is that the approach is very slow for values.

Consider the topology shown in the figure,

with the router four be the destination.

Suppose after the distance vector approach stabilize,

link three four breaks.

There is need to recompute the minimal cost from each node to the destination node.

The table shows the computation process of minimal cost.

And it shows each node keeps updating its cost in increment of two units.

At each update, node two thinks that

its the shortest path to the destination is through node three.

Likewise, node three thinks that

its the shortest path to the destination is through node two.

As a result, a packet in either of

these two nodes bounce back and forth until the process stop updating.

The process keeps iterating until the minimal cost is infinite at

which point the process realize that the destination node is unreachable.

This is often called count-to-infinity Problem.

To avoid it, several changes to the distance vector algorithm have

been proposed but none of them work well in all situations.

One method that was widely implemented is called

the Split Horizon in which the minimum cost to

a given destination is not sent to

the neighbor if the neighbor is the next node along the shortest path.

Another variation is called a Split Horizon with

Poisoned Reverse which allows a node to send the minimal costs to all its neighbor.

But the minimal cost to a given destination is set to infinity,

if the neighbor is the next node along the shortest path.

Let's have an example on how Split Horizon with Poisoned Reverse works.

We consider same topology with a destination node four.

After link three to four breaks,

node two advertise its route to four to node three as having distance infinity.

Node three finds there is no router to node four.

And therefore its distance vector becomes an active one, infinity.

In the second update,

node one advertise its route to four to node two as having distant infinity.

Node two finds there is no route to four.

In the set update,

node one finds there is no route to node four.

In total three updates.

All three nodes find the destination node is unreachable.

So this reverse approach can break [inaudible] direct loops immediately.

The essential problem of distance vector routing is that

the information is only exchanged with local neighbors.

The link-state algorithm seeks global optimization.

The basic idea involves three steps.

First, each source node creates a link state packet of local to neighbor link metrics.

Then, each source node broadcasts the link-state packet,

so that each source node gets a map of all nodes and link metrics of the entire network.

Finally, apply an algorithm to find the shortest path

on the map from the source node to all destination nodes.

The Link state packet contains the identifier of

its neighbors as well as the distance to its links.

The broadcast of link-state packets can be done by flooding.

Recall the disadvantage of flooding.

To limit scale of flooding,

one can add source node identifier,

sequence number and time to leave so as to remove duplicates.

Here is an example of link-state packet.

Consider a network topology with six nodes as shown in the figure.

Each node contains its own identifier,

the sequence number, the time to leave,

neighbors' identifiers and distance.

One question you may have is when to build links data packets.

A quick answer is,

periodically or when significant events occur such as system reboot.

Once the global view of the network is constructed each node,

the last step is to apply an algorithm to find

the shortest path from the source node to all destination nodes.

The algorithm often used is called Digester

algorithm which we will discuss in details in the next class.