1
EE 122
:
Shortest Path Routing
Ion Stoica
TAs:
Junda
Liu, DK Moon, David
Zats
http://inst.eecs.berkeley.edu/~ee122/fa09
(Materials with thanks to Vern
Paxson
, Jennifer Rexford,
and colleagues at UC Berkeley)
2
What is Routing?
Routing implements the core function of a
network:
It ensures that information accepted for transfer
at a source node is delivered to the correct set
of destination nodes, at reasonable levels of
performance.
3
Internet Routing
Internet organized as a
two
level hierarchy
First level
–
autonomous systems (AS’s)
AS
–
region of network under a single administrative
domain
AS’s run an intra

domain routing protocols
Distance Vector, e.g., Routing Information Protocol (RIP)
Link State, e.g., Open Shortest Path First (OSPF)
Between AS’s runs inter

domain routing protocols,
e.g., Border Gateway Routing (BGP)
De facto standard today, BGP

4
4
Example
AS

1
AS

2
AS

3
Interior router
BGP router
5
Forwarding vs. Routing
Forwarding: “data plane”
Directing a data packet to an outgoing link
Individual router
using
a forwarding table
Routing: “control plane”
Computing paths the packets will follow
Routers talking amongst themselves
Individual router
creating
a forwarding table
6
Routing requires knowledge of the network structure
Centralized global state
Single entity knows the complete network structure
Can calculate all routes centrally
Problems with this approach?
Distributed global state
Every router knows the complete network structure
Independently calculates routes
Problems with this approach?
Distributed no

global state
Every router knows only about its neighboring routers
Independently calculates routes
Problems with this approach?
Know Thy Network
Link State Routing
E.g. Algorithm: Dijkstra
E.g. Protocol: OSPF
Distance Vector Routing
E.g. Algorithm: Bellman

Ford
E.g. Protocol: RIP
7
Modeling a Network
Modeled as a
graph
Routers
nodes
Link
edges
Possible edge costs
delay
congestion level
Goal of Routing
Determine a “good” path through the network from source
to destination
Good usually means the shortest path
A
E
D
C
B
F
2
2
1
3
1
1
2
5
3
5
8
Link State: Control Traffic
Each node floods its local information to every other node
in the network
Each node ends up knowing the
entire
network topology
use
Dijkstra
to compute the shortest path to every other
node
Host A
Host B
Host E
Host D
Host C
N1
N2
N3
N4
N5
N7
N6
9
Link State: Node State
Host A
Host B
Host E
Host D
Host C
N1
N2
N3
N4
N5
N7
N6
A
B
E
D
C
A
B
E
D
C
A
B
E
D
C
A
B
E
D
C
A
B
E
D
C
A
B
E
D
C
A
B
E
D
C
10
Notation
c(i,j):
link cost from node
i
to
j
; cost infinite if not
direct neighbors;
≥ 0
D(v):
current value of cost
of path from source to
destination
v
p(v):
predecessor node
along path from source to
v
, that is next to
v
S:
set of nodes whose
least cost path definitively
known
A
E
D
C
B
F
2
2
1
3
1
1
2
5
3
5
Source
11
Dijsktra’s Algorithm
1
Initialization:
2
S
= {
A
};
3 for all nodes
v
4 if
v
adjacent to
A
5 then D(v) = c(A,v);
6 else D(v) = ;
7
8
Loop
9 find
w
not in
S
such that D(w) is a minimum;
10 add
w
to
S
;
11 update D(v) for all
v
adjacent to
w
and not in
S
:
12 if D(w) + c(w,v) < D(v) then
//
w
gives us a shorter path to
v
than we’ve found so far
13 D(v) = D(w) + c(w,v); p(v) = w;
14
until all nodes in S;
c(i,j):
link cost from node
i
to
j
D(v):
current cost source
v
p(v):
predecessor node along
path from source to
v
, that is
next to
v
S:
set of nodes whose least
cost path definitively known
12
Example: Dijkstra’s Algorithm
Step
0
1
2
3
4
5
start S
A
D(B),p(B)
2,A
D(C),p(C)
5,A
D(D),p(D)
1,A
D(E),p(E)
D(F),p(F)
A
E
D
C
B
F
2
2
1
3
1
1
2
5
3
5
1
Initialization:
2
S
= {A};
3 for all nodes
v
4 if
v
adjacent to
A
5 then D(v) = c(A,v);
6 else D(v) = ;
…
13
Example: Dijkstra’s Algorithm
Step
0
1
2
3
4
5
start S
A
D(B),p(B)
2,A
D(C),p(C)
5,A
…
8
Loop
9 find
w
not in
S
s.t
.
D(w
) is a minimum;
10 add
w
to
S
;
11
update
D(v
) for all
v
adjacent
to
w
and not in
S
:
12
If
D(w
) +
c(w,v
) <
D(v
) then
13
D(v
) =
D(w
) +
c(w,v
);
p(v
) =
w
;
14
until all nodes in S;
A
E
D
C
B
F
2
2
1
3
1
1
2
5
3
5
D(D),p(D)
1,A
D(E),p(E)
D(F),p(F)
14
Example: Dijkstra’s Algorithm
Step
0
1
2
3
4
5
start S
A
AD
D(B),p(B)
2,A
D(C),p(C)
5,A
D(D),p(D)
1,A
D(E),p(E)
D(F),p(F)
A
E
D
C
B
F
2
2
1
3
1
1
2
5
3
5
…
8
Loop
9 find
w
not in
S
s.t. D(w) is a minimum;
10 add
w
to
S
;
11
update D(v) for all
v
adjacent
to
w
and not in
S
:
12
If D(w) + c(w,v) < D(v) then
13
D(v) = D(w) + c(w,v); p(v) = w;
14
until all nodes in S;
15
Example: Dijkstra’s Algorithm
Step
0
1
2
3
4
5
start S
A
AD
D(B),p(B)
2,A
D(C),p(C)
5,A
4,D
D(D),p(D)
1,A
D(E),p(E)
2,D
D(F),p(F)
A
E
D
C
B
F
2
2
1
3
1
1
2
5
3
5
…
8
Loop
9 find
w
not in
S
s.t. D(w) is a minimum;
10 add
w
to
S
;
11
update D(v) for all
v
adjacent
to
w
and not in
S
:
12
If D(w) + c(w,v) < D(v) then
13
D(v) = D(w) + c(w,v); p(v) = w;
14
until all nodes in S;
16
Example: Dijkstra’s Algorithm
Step
0
1
2
3
4
5
start S
A
AD
ADE
D(B),p(B)
2,A
D(C),p(C)
5,A
4,D
3,E
D(D),p(D)
1,A
D(E),p(E)
2,D
D(F),p(F)
4,E
A
E
D
C
B
F
2
2
1
3
1
1
2
5
3
5
…
8
Loop
9 find
w
not in
S
s.t. D(w) is a minimum;
10 add
w
to
S
;
11
update D(v) for all
v
adjacent
to
w
and not in
S
:
12
If D(w) + c(w,v) < D(v) then
13
D(v) = D(w) + c(w,v); p(v) = w;
14
until all nodes in S;
17
Example: Dijkstra’s Algorithm
Step
0
1
2
3
4
5
start S
A
AD
ADE
ADEB
D(B),p(B)
2,A
D(C),p(C)
5,A
4,D
3,E
D(D),p(D)
1,A
D(E),p(E)
2,D
D(F),p(F)
4,E
A
E
D
C
B
F
2
2
1
3
1
1
2
5
3
5
…
8
Loop
9 find
w
not in
S
s.t. D(w) is a minimum;
10 add
w
to
S
;
11
update D(v) for all
v
adjacent
to
w
and not in
S
:
12
If D(w) + c(w,v) < D(v) then
13
D(v) = D(w) + c(w,v); p(v) = w;
14
until all nodes in S;
18
Example: Dijkstra’s Algorithm
Step
0
1
2
3
4
5
start S
A
AD
ADE
ADEB
ADEBC
D(B),p(B)
2,A
D(C),p(C)
5,A
4,D
3,E
D(D),p(D)
1,A
D(E),p(E)
2,D
D(F),p(F)
4,E
A
E
D
C
B
F
2
2
1
3
1
1
2
5
3
5
…
8
Loop
9 find
w
not in
S
s.t. D(w) is a minimum;
10 add
w
to
S
;
11
update D(v) for all
v
adjacent
to
w
and not in
S
:
12
If D(w) + c(w,v) < D(v) then
13
D(v) = D(w) + c(w,v); p(v) = w;
14
until all nodes in S;
19
Example: Dijkstra’s Algorithm
Step
0
1
2
3
4
5
start S
A
AD
ADE
ADEB
ADEBC
ADEBCF
D(B),p(B)
2,A
D(C),p(C)
5,A
4,D
3,E
D(D),p(D)
1,A
D(E),p(E)
2,D
D(F),p(F)
4,E
A
E
D
C
B
F
2
2
1
3
1
1
2
5
3
5
…
8
Loop
9 find
w
not in
S
s.t. D(w) is a minimum;
10 add
w
to
S
;
11
update D(v) for all
v
adjacent
to
w
and not in
S
:
12
If D(w) + c(w,v) < D(v) then
13
D(v) = D(w) + c(w,v); p(v) = w;
14
until all nodes in S;
20
Example: Dijkstra’s Algorithm
Step
0
1
2
3
4
5
start S
A
AD
ADE
ADEB
ADEBC
ADEBCF
D(B),p(B)
2,A
D(C),p(C)
5,A
4,D
3,E
D(D),p(D)
1,A
D(E),p(E)
2,D
D(F),p(F)
4,E
A
E
D
C
B
F
2
2
1
3
1
1
2
5
3
5
To determine path A
C (say),
work backward from C via p(v)
21
•
Running Dijkstra at node A gives the shortest
path from A to all destinations
•
We then construct the
forwarding table
The Forwarding Table
A
E
D
C
B
F
2
2
1
3
1
1
2
5
3
5
Destination
Link
B
(A,B)
C
(A,D)
D
(A,D)
E
(A,D)
F
(A,D)
22
Complexity
How much processing does running the Dijkstra
algorithm take?
Assume a network consisting of N nodes
Each iteration: need to check all nodes, w, not in S
N(N+1)/2 comparisons: O(N
2
)
More efficient implementations possible: O(N log(N))
23
Obtaining Global State
Flooding
Each router sends link

state information out its links
The next node sends it out through all of its links
except the one where the information arrived
Note: need to remember previous msgs & suppress
duplicates!
X
A
C
B
D
(a)
X
A
C
B
D
(b)
X
A
C
B
D
(c)
X
A
C
B
D
(d)
24
Flooding the Link State
Reliable flooding
Ensure all nodes receive link

state information
Ensure all nodes use the latest version
Challenges
Packet loss
Out

of

order arrival
Solutions
Acknowledgments and retransmissions
Sequence numbers
Time

to

live for each packet
25
When to Initiate Flooding
Topology change
Link or node failure
Link or node recovery
Configuration change
Link cost change
See next slide
for hazards of dynamic link
costs based on current load
Periodically
Refresh the link

state information
Typically (say) 30 minutes
Corrects for possible corruption of the data
26
Oscillations
Assume link cost = amount of carried traffic
A
D
C
B
1
1+e
e
0
e
1
1
0
0
initially
A
D
C
B
2+e
0
0
0
1+e
1
… recompute
routing
A
D
C
B
0
2+e
1+e
1
0
0
… recompute
A
D
C
B
2+e
0
e
0
1+e
1
… recompute
How can you avoid oscillations?
27
5 Minute Break
Questions Before We Proceed?
28
Distance Vector Routing
Each router knows the links to its immediate
neighbors
Does
not
flood this information to the whole network
Each router has some idea about the shortest
path to each destination
E.g.: Router A: “
I can get to router B with cost 11 via
next hop router D
”
Routers exchange this information with their
neighboring routers
Again,
no flooding
the whole network
Routers update their idea of the best path using
info from neighbors
29
Information Flow in Distance
Vector
Host A
Host B
Host E
Host D
Host C
N1
N2
N3
N4
N5
N7
N6
30
Bellman

Ford Algorithm
INPUT:
Link costs to each neighbor
Not
full topology
OUTPUT:
Next hop to each destination and the
corresponding cost
Does
not
give the complete path to the
destination
Bellman

Ford

Overview
Each router maintains a table
Row for each possible destination
Column for each directly

attached
neighbor to node
Entry in row Y and column Z of node
X
best known distance from X to Y,
via
Z as next hop = D
Z
(X,Y
)
A
C
1
2
7
B
D
3
1
B
C
B
2
8
C
3
7
D
4
8
Node A
Neighbor
(next

hop)
Destinations
D
C
(A, D)
Bellman

Ford

Overview
Each router maintains a table
Row for each possible destination
Column for each directly

attached
neighbor to node
Entry in row Y and column Z of node
X
best known distance from X to Y,
via
Z as next hop = D
Z
(X,Y
)
A
C
1
2
7
B
D
3
1
B
C
B
2
8
C
3
7
D
4
8
Node A
Smallest distance in row Y = shortest
Distance of A to Y, D(A, Y)
33
Bellman

Ford

Overview
Each router maintains a table
Row for each possible destination
Column for each directly

attached
neighbor to node
Entry in row Y and column Z of node
X
best known distance from X to Y,
via
Z as next hop = D
Z
(X,Y)
Each local iteration caused by:
Local link cost change
Message from neighbor
Notify neighbors
only
if least cost
path to any destination changes
Neighbors then notify their neighbors
if necessary
wait
for (change in local link
cost or msg from neighbor)
recompute
distance table
if least cost path to any dest
has changed,
notify
neighbors
Each node:
34
Distance Vector Algorithm
(cont’d)
1
Initialization:
2
for all
neighbors
V
do
3
if
V
adjacent to
A
4 D(
A, V
) = c(
A,V
);
5
else
6
D(
A, V
) = ∞;
7
send
D(
A, Y
) to all neighbors
loop:
8
wait
(until
A
sees a link cost change to neighbor
V
/*
case 1
*/
9 or until
A
receives update from neighbor
V
) /*
case 2
*/
10
if
(c(
A
,
V
) changes by
±
d
) /*
case 1
*/
11
for all
destinations
Y
that go through
V
do
12 D
V
(
A,Y
) = D
V
(
A,Y
)
±
d
13
else if
(update D(
V, Y
) received from
V
) /*
case 2
*/
/* shortest path from V to some Y has changed */
14 D
V
(A,Y) = D
V
(
A,V
) + D(
V, Y
); /*
may
also change D(A,Y) */
15
if
(there is a new minimum for destination Y)
16
send
D(
A, Y
) to all neighbors
17
forever
c(i,j):
link cost from node
i
to
j
D
Z
(A,V):
cost from A to V via Z
D(A,V):
cost of A’s best path to V
Example
:
1
st
Iteration (C
䄩
A
C
1
2
7
B
D
3
1
B
C
B
2
8
C
∞
7
D
∞
8
Node A
A
C
D
A
2
∞
∞
C
∞
1
∞
D
∞
∞
3
Node
B
Node
C
A
B
D
A
7
∞
∞
B
∞
1
∞
D
∞
∞
1
B
C
A
∞
∞
B
3
∞
C
∞
1
Node
D
7
loop:
…
13
else if
(update D
(
A
,
Y
) from
C
)
14
D
C
(
A
,Y
)
=
D
C
(
A
,C
)
+ D
(
C
,
Y
);
15
if
(new min. for destination Y)
16
send
D(
A, Y
) to all neighbors
17
forever
D
C
(A, B) = D
C
(A,C) + D(C,
B
) = 7 + 1 = 8
D
C
(A, D) = D
C
(A,C) + D(C, D) = 7 + 1 = 8
Example
:
1
st
Iteration (B
䄩
A
C
1
2
7
B
D
3
1
B
C
B
2
8
C
3
7
D
5
8
Node A
A
C
D
A
2
∞
∞
C
∞
1
∞
D
∞
∞
3
Node
B
Node
C
A
B
D
A
7
∞
∞
B
∞
1
D
∞
∞
1
Node
D
7
loop:
…
13
else if
(update D
(
A
,
Y
) from
B
)
14
D
B
(
A
,Y
)
=
D
B
(
A
,B
)
+ D
(
B
,
Y
);
15
if
(new min. for destination Y)
16
send
D(
A, Y
) to all neighbors
17
forever
D
B
(A, C) = D
B
(A,B) + D(B, C) = 2 + 1 = 3
D
B
(A, D) = D
B
(A,B) + D(B, D) = 2 +
3
= 5
B
C
A
∞
∞
B
3
∞
C
∞
1
Example:
End of 1
st
Iteration
A
C
1
2
7
B
D
3
1
B
C
B
2
8
C
3
7
D
5
8
Node A
Node
B
Node
C
A
B
D
A
7
3
∞
B
9
1
4
D
∞
4
1
Node
D
B
C
A
5
8
B
3
2
C
4
1
End of 1
st
Iteration
All nodes knows the
best
two

hop paths
A
C
D
A
2
3
∞
C
9
1
4
D
∞
2
3
Example:
2
nd
Iteration
(A
䈩
A
C
1
2
7
B
D
3
1
B
C
B
2
8
C
3
7
D
5
8
Node A
Node
B
Node
C
A
B
D
A
7
3
∞
B
9
1
4
D
∞
4
1
Node
D
B
C
A
5
8
B
3
2
C
4
1
A
C
D
A
2
3
∞
C
5
1
4
D
7
2
3
7
loop:
…
13
else if
(update D
(
B
,
Y
) from
A
)
14
D
A
(
B
,Y
)
=
D
A
(
B
,A
)
+ D
(
A
,
Y
);
15
if
(new min. for destination Y)
16
send
D
(
B
,
Y
) to all neighbors
17
forever
D
A
(B, C) = D
A
(
B
,
A
) + D(A, C) = 2 + 3 = 5
D
A
(B, D) = D
A
(
B
,
A
) + D(A, D) = 2 + 5 = 7
Example:
End of 2
nd
Iteration
A
C
1
2
7
B
D
3
1
B
C
B
2
8
C
3
7
D
4
8
Node A
A
C
D
A
2
3
11
C
5
1
4
D
7
2
3
Node
B
Node
C
A
B
D
A
7
3
6
B
9
1
4
D
12
4
1
Node
D
B
C
A
5
4
B
3
2
C
4
1
End of 2
nd
Iteration
All nodes knows the
best
three

hop paths
Example:
End of 3rd Iteration
A
C
1
2
7
B
D
3
1
B
C
B
2
8
C
3
7
D
4
8
Node A
A
C
D
A
2
3
6
C
5
1
4
D
7
2
3
Node
B
Node
C
A
B
D
A
7
3
5
B
9
1
4
D
11
4
1
Node
D
B
C
A
5
4
B
3
2
C
4
1
End of 2
nd
Iteration
:
Algorithm
Converges!
41
Distance Vector: Link Cost
Changes
A
C
1
4
50
B
1
“good
news
travels
fast”
A
C
A
4
6
C
9
1
Node B
A
B
A
50
5
B
54
1
Node C
Link cost changes here
time
Algorithm terminates
loop:
8
wait
(until
A
sees a link cost change to neighbor
V
9 or until
A
receives update from neighbor
V
) /
10
if
(
c(
A
,
V
) changes by
±
d
) /*
case 1
*/
11
for all
destinations
Y
that go through
V
do
12 D
V
(
A,Y
) = D
V
(
A,Y
)
±
d
13
else if
(update D(
V, Y
) received from
V
) /*
case 2
*/
14 D
V
(A,Y) = D
V
(
A,V
) + D(
V, Y
);
15
if
(there is a new minimum for destination Y)
16
send
D(
A, Y
) to all neighbors
17
forever
A
C
A
1
6
C
9
1
A
B
A
50
5
B
54
1
A
C
A
1
6
C
9
1
A
B
A
50
2
B
51
1
A
C
A
1
3
C
3
1
A
B
A
50
2
B
51
1
42
Distance Vector:
Count to Infinity
Problem
A
C
1
4
50
B
60
“bad
news
travels
slowly”
Node B
Node C
Link cost changes here
time
…
loop:
8
wait
(until
A
sees a link cost change to neighbor
V
9 or until
A
receives update from neighbor
V
) /
10
if
(c(
A
,
V
) changes by
±
d
) /*
case 1
*/
11
for all
destinations
Y
that go through
V
do
12 D
V
(
A,Y
) = D
V
(
A,Y
)
±
d
13
else if
(update D(
V, Y
) received from
V
) /*
case 2
*/
14 D
V
(A,Y) = D
V
(
A,V
) + D(
V, Y
);
15
if
(there is a new minimum for destination Y)
16
send
D(
A, Y
) to all neighbors
17
forever
A
C
A
4
6
C
9
1
A
B
A
50
5
B
54
1
A
C
A
60
6
C
9
1
A
B
A
50
5
B
54
1
A
C
A
60
6
C
9
1
A
B
A
50
7
B
101
1
A
C
A
60
8
C
9
1
A
B
A
50
7
B
101
1
43
Distance Vector:
Poisoned
Reverse
A
C
1
4
50
B
60
•
If
B
routes through
C
to get to A:

B
tells
C
its
(B’s
) distance to A is infinite (so
C
won’t route to A via
B)

Will this completely solve
count to infinity
problem?
Node B
Node C
Link cost changes here
;
C
updates D
(C,
A) = 60 as
B
has advertised D
(B,
A) =
∞
time
Algorithm terminates
A
C
A
4
6
C
9
1
A
B
A
50
5
B
∞
1
A
C
A
60
6
C
9
1
A
B
A
50
5
B
∞
1
A
C
A
60
6
C
9
1
A
B
A
50
∞
B
∞
1
A
C
A
60
51
C
9
1
A
B
A
50
∞
B
∞
1
A
C
A
60
51
C
9
1
A
B
A
50
∞
B
∞
1
44
Routing Information Protocol
(RIP)
Simple distance

vector protocol
Nodes send distance vectors every 30 seconds
… or, when an update causes a change in routing
Link costs in RIP
All links have cost 1
Valid distances of 1 through 15
… with 16 representing infinity
Small “infinity”
smaller
“counting to infinity” problem
RIP is limited to fairly small networks
E.g., campus
45
Link State vs. Distance Vector
Per

node
message
complexity:
LS: O(e) messages
e: number of edges
DV: O(d) messages,
many times
d is node’s degree
Complexity/Convergence
LS: O(N log N)
computation
Requires global flooding
DV: convergence time
varies
Count

to

infinity problem
Robustness
: what happens
if router malfunctions?
LS:
Node can advertise
incorrect
link
cost
Each node computes only
its
own
table
DV:
Node can advertise
incorrect
path
cost
Each node’s table used by
others;
errors propagate
through network
46
Summary
Routing is a
distributed
algorithm
Different from forwarding
React to changes in the topology
Compute the shortest paths
Two main shortest

path algorithms
Dijkstra
link

state routing (e.g., OSPF, IS

IS)
Bellman

Ford
distance

vector routing (e.g., RIP)
Convergence process
Changing from one topology to another
Transient periods of inconsistency across routers
Next time: BGP
Reading: K&R 4.6.3
Comments 0
Log in to post a comment