Link state routing is a technique in which each router shares the knowledge of its neighborhood with every other router in the internetwork.
The three keys to understand the Link State Routing algorithm:
- Knowledge about the neighborhood: Instead of sending its routing table, a router
sends the information about its neighborhood only. A router broadcast its
identities and cost of the directly attached links to other routers.
- Flooding: Each
router sends the information to every other router on the internetwork
except its neighbors. This process is known as Flooding. Every router that
receives the packet sends the copies to all its neighbors. Finally, each
and every router receives a copy of the same information.
- Information sharing: A
router sends the information to every other router only when the change
occurs in the information.
Link
State Routing has two phases:
Reliable
Flooding
- Initial state: Each
node knows the cost of its neighbors.
- Final state: Each
node knows the entire graph.
Route Calculation
Each
node uses Dijkstra's algorithm on the graph to calculate the optimal routes to
all nodes.
- The Link state routing algorithm is also known as
Dijkstra's algorithm which is used to find the shortest path from one node
to every other node in the network.
- The Dijkstra's algorithm is an iterative, and it has
the property that after kth iteration of the algorithm,
the least cost paths are well known for k destination nodes.
Algorithm
Initialization
N = {A} // A is a
root node.
for all nodes v
if v adjacent to A
then D(v) = c(A,v)
else D(v) = infinity
loop
find w not in N such that D(w) is a minimum.
Add w to N
Update D(v) for all v adjacent to w and not in N:
D(v) = min(D(v) , D(w) + c(w,v))
Until all nodes in N
In the above algorithm, an initialization step is followed by the
loop. The number of times the loop is executed is equal to the total number of
nodes available in the network.
where,
o c( i , j): Link cost from node i to node j. If i and j nodes are not
directly linked, then c(i , j) = ∞.
o D(v): It defines the cost of the path from source code to
destination v that has the least cost currently.
o P(v): It defines the previous node (neighbor of v) along with
current least cost path from source to v.
o N: It is the total number of nodes available in the network.
Example:
Step
1:
The
first step is an initialization step. The currently known least cost path from
A to its directly attached neighbors, B, C, D are 2,5,1 respectively.
Step
2:
In
the table, we observe that vertex D contains the least cost path in step
1. Therefore, it is added in N. Now, we need to determine a least-cost path
through D vertex.
Step
3:
In
the table, we observe that both E and B have the least cost path in step
2. Let's consider the E vertex. Now, we determine the least cost path of
remaining vertices through E.
Step
4:
In
the table, we observe that B vertex has the least cost path in step 3.
Therefore, it is added in N. Now, we determine the least cost path of remaining
vertices through B.
Step
5:
In
the table, we observe that C vertex has the least cost path in step 4.
Therefore, it is added in N. Now, we determine the least cost path of remaining
vertices through C.
Step |
N |
D(B),P(B) |
D(C),P(C) |
D(D),P(D) |
D(E),P(E) |
D(F),P(F) |
1 |
A |
2,A |
5,A |
1,A |
∞ |
∞ |
2 |
AD |
2,A |
4,D |
2,D |
∞ |
|
3 |
ADE |
2,A |
3,E |
4,E |
||
4 |
ADEB |
3,E |
4,E |
|||
5 |
ADEBC |
4,E |
||||
6 |
ADEBCF |