Lec 12
Lec 12
Packet-Switching
Networks
Shortest Path Routing
1
Routing Metrics
Means for measuring desirability of a path
Path Length = sum of costs or distances
Possible metrics
Hop count: rough measure of resources used
Reliability: link availability; BER
Delay: sum of delays along path; complex & dynamic
Bandwidth: “available capacity” in a path
Load: Link & router utilization along path
Cost: $$$
2
Distance Vector
Do you know the way to San Jose?
Sa
n Jo San Jose 392
se
29
4
Sa
n
Jo
s e
25
0
Distance Vector
Local Signpost Table Synthesis
Direction Neighbors exchange
Distance table entries
Determine current best
3
Shortest Path to SJ
Focus on how nodes find their shortest
path to a given destination node, i.e. SJ San
Jose
Dj
Cij
j
i
Di If Di is the shortest distance to SJ from i
and if j is a neighbor on the shortest path,
then Di = Cij + Dj
4
Bellman-Ford Algorithm
Consider computations for one destination d
Initialization
Each node table has 1 row for destination d
Distance of node d to itself is zero: Dd=0
Distance of other node j to d is infinite: Dj=∝, for j≠ d
Next hop node nj = -1 to indicate not yet defined for j ≠ d
Send Step
Send new distance vector to immediate neighbors across local link
Receive Step
At node j, find the next hop that gives the minimum distance to d,
Minj { Cij + Dj }
Replace old (nj, Dj(d)) by new (nj*, Dj*(d)) if new next node or distance
Go to send step
Bellman-Ford Algorithm
Now consider parallel computations for all destinations d
Initialization
Each node has 1 row for each destination d
Distance of node d to itself is zero: Dd(d)=0
Distance of other node j to d is infinite: Dj(d)= ∝ , for j ≠ d
Next node nj = -1 since not yet defined
Send Step
Send new distance vector to immediate neighbors across local link
Receive Step
For each destination d, find the next hop that gives the minimum
distance to d,
Minj { Cij+ Dj(d) }
Replace old (nj, Di(d)) by new (nj*, Dj*(d)) if new next node or distance
found
Go to send step
5
Iteration Node 1 Node 2 Node 3 Node 4 Node 5
2
2 5
4
D3=D6+1
n3=6
D6=0
2 3 1
1 1
5 2
0
4 San
3 1 3 6
Jose
2 5 2
4
2
D5=D6+2 D6=0
n5=6
6
Iteration Node 1 Node 2 Node 3 Node 4 Node 5
3 1
2 3
1 1
5 2
3 0
4 San
3 1 3 6
Jose
2 2
5
4
6 2
1
3 2 3
1 1
5 2
3 0
4 San
3 1 3 6
Jose
2
2 5
4
6 4 2
7
Iteration Node 1 Node 2 Node 3 Node 4 Node 5
1 5
3 2 3
1 1
5 2
3 0
4 San
3 1 3 6
Jose
2
2 5
4 4
2
Network disconnected; Loop created between nodes 3 and 4
Link-State Algorithm
Basic idea: two step procedure
Each source node gets a map of all nodes and link metrics
(link state) of the entire network
Find the shortest path on the map from the source node to
all destination nodes
Broadcast of link-state information
Every node i in the network broadcasts to every other node
in the network:
ID’s of its neighbors: Ni=set of neighbors of i
Distances to its neighbors: {Cij | j ∈Ni}
Flooding is a popular method of broadcasting packets
8
Dijkstra Algorithm: Finding
shortest paths in order
Find shortest paths from Closest node to s is 1 hop away
source s to all other
destinations 2nd closest node to s is 1 hop
away from s or w”
3rd closest node to s is 1 hop
w' away from s, w”, or x
w z
x
s z'
w"
x'
Dijkstra’s algorithm
N: set of nodes for which shortest path already found
Initialization: (Start with source node s)
N = {s}, Ds = 0, “s is distance zero from itself”
Dj=Csj for all j ≠ s, distances of directly-connected neighbors
Step A: (Find next closest node i)
Find i ∉ N such that
Di = min Dj for j ∉ N
Add i to N
If N contains all the nodes, stop
Step B: (update minimum costs)
For each node j ∉ N
Minimum distance from s to
Dj = min (Dj, Di+Cij)
j through node i in N
Go to Step A
9
Execution of Dijkstra’s algorithm
2 2
1 3 1 1 3 1
6 6
5 2 5 2
3 3
1 4 1 4 2
2
3 3
2 2
4 5 4 5
Iteration N D2 D3 D4 D5 D6
Initial {1} 3 2 5 ∝ ∝
1 {1,3} 3 2 4 ∝ 3
2 {1,2,3} 3 2 4 7 3
3 {1,2,3,6} 3 2 4 5 3
4 {1,2,3,4,6} 3 2 4 5 3
5 {1,2,3,4,5,6} 3 2 4 5 3
2 3 1 2 3 1
1 1
6 6
5 2 5 2
3 3
1 4 2 1 4 2
3 3
2 2
4 5 4 5
10
Reaction to Failure
If a link fails,
Router sets link distance to infinity & floods the
network with an update packet
All routers immediately update their link database &
recalculate their shortest paths
Recovery very quick
But watch out for old update messages
Add time stamp or sequence # to each update
message
Check whether each received update message is new
If new, add it to database and broadcast
If older, send update message on arriving link
11