ee 122 : shortest path routing
DESCRIPTION
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). What is Routing?. Routing implements the core function of a network: - PowerPoint PPT PresentationTRANSCRIPT
1
EE 122: Shortest Path RoutingIon Stoica
TAs: Junda Liu, DK Moon, David Zatshttp://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 routerBGP router
5
Forwarding vs. RoutingForwarding: “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 RoutingE.g. Algorithm: Dijkstra
E.g. Protocol: OSPF
Distance Vector RoutingE.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
ED
CB
F
2
2
13
1
1
2
53
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 BHost E
Host D
Host C
N1 N2
N3
N4
N5
N7N6
9
Link State: Node State
Host A
Host BHost E
Host D
Host C
N1 N2
N3
N4
N5
N7N6
A
B E
DC
A
B E
DC A
B E
DC
A
B E
DC
A
B E
DC
A
B E
DC
A
B E
DC
10
Notationc(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
ED
CB
F
2
2
13
1
1
2
53
5
Source
11
Dijsktra’s Algorithm1 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 AlgorithmStep
012345
start SA
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
ED
CB
F
22
13
1
1
2
53
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 AlgorithmStep
012345
start SA
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) then13 D(v) = D(w) + c(w,v); p(v) = w;14 until all nodes in S;
A
ED
CB
F
22
13
1
1
2
53
5
D(D),p(D)1,A
D(E),p(E) D(F),p(F)
14
Example: Dijkstra’s AlgorithmStep
012345
start SA
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
ED
CB
F
22
13
1
1
2
53
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) then13 D(v) = D(w) + c(w,v); p(v) = w;14 until all nodes in S;
15
Example: Dijkstra’s AlgorithmStep
012345
start SA
AD
D(B),p(B)2,A
D(C),p(C)5,A4,D
D(D),p(D)1,A
D(E),p(E)
2,D
D(F),p(F)
A
ED
CB
F
22
13
1
1
2
53
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) then13 D(v) = D(w) + c(w,v); p(v) = w;14 until all nodes in S;
16
Example: Dijkstra’s AlgorithmStep
012345
start SA
ADADE
D(B),p(B)2,A
D(C),p(C)5,A4,D3,E
D(D),p(D)1,A
D(E),p(E)
2,D
D(F),p(F)
4,E
A
ED
CB
F
22
13
1
1
2
53
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) then13 D(v) = D(w) + c(w,v); p(v) = w;14 until all nodes in S;
17
Example: Dijkstra’s AlgorithmStep
012345
start SA
ADADE
ADEB
D(B),p(B)2,A
D(C),p(C)5,A4,D3,E
D(D),p(D)1,A
D(E),p(E)
2,D
D(F),p(F)
4,E
A
ED
CB
F
22
13
1
1
2
53
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) then13 D(v) = D(w) + c(w,v); p(v) = w;14 until all nodes in S;
18
Example: Dijkstra’s AlgorithmStep
012345
start SA
ADADE
ADEBADEBC
D(B),p(B)2,A
D(C),p(C)5,A4,D3,E
D(D),p(D)1,A
D(E),p(E)
2,D
D(F),p(F)
4,E
A
ED
CB
F
22
13
1
1
2
53
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) then13 D(v) = D(w) + c(w,v); p(v) = w;14 until all nodes in S;
19
Example: Dijkstra’s AlgorithmStep
012345
start SA
ADADE
ADEBADEBC
ADEBCF
D(B),p(B)2,A
D(C),p(C)5,A4,D3,E
D(D),p(D)1,A
D(E),p(E)
2,D
D(F),p(F)
4,E
A
ED
CB
F
22
13
1
1
2
53
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) then13 D(v) = D(w) + c(w,v); p(v) = w;14 until all nodes in S;
20
Example: Dijkstra’s AlgorithmStep
012345
start SA
ADADE
ADEBADEBC
ADEBCF
D(B),p(B)2,A
D(C),p(C)5,A4,D3,E
D(D),p(D)1,A
D(E),p(E)
2,D
D(F),p(F)
4,E
A
ED
CB
F
22
13
1
1
2
53
5To 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
ED
CB
F
22
13
1
1
2
53
5Destination 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(N2) 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
B1 1+e
e0
e1 1
0 0
initially
A
D
C
B2+e 0
001+e 1
… recomputerouting
A
D
C
B0 2+e
1+e10 0
… recompute
A
D
C
B2+e 0
e01+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 BHost E
Host D
Host C
N1 N2
N3
N4
N5
N7N6
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 = DZ(X,Y)
A C12
7
B D3
1
B CB 2 8C 3 7D 4 8
Node A
Neighbor (next-hop)
Destinations DC(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 = DZ(X,Y)
A C12
7
B D3
1
B CB 2 8C 3 7D 4 8
Node A
Smallest distance in row Y = shortestDistance 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 = DZ(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 do3 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 DV(A,Y) = DV(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 DV(A,Y) = DV(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 DZ(A,V): cost from A to V via Z D(A,V): cost of A’s best path to V
Example:1st Iteration (C A)
A C12
7
B D3
1
B CB 2 8C ∞ 7D ∞ 8
Node A
A C DA 2 ∞ ∞C ∞ 1 ∞D ∞ ∞ 3
Node B
Node C
A B DA 7 ∞ ∞B ∞ 1 ∞D ∞ ∞ 1
B CA ∞ ∞B 3 ∞C ∞ 1
Node D7 loop: …13 else if (update D(A, Y) from C) 14 DC(A,Y) = DC(A,C) + D(C, Y);15 if (new min. for destination Y)16 send D(A, Y) to all neighbors 17 forever
DC(A, B) = DC(A,C) + D(C, B) = 7 + 1 = 8
DC(A, D) = DC(A,C) + D(C, D) = 7 + 1 = 8
Example: 1st Iteration (B A)
A C12
7
B D3
1
B CB 2 8C 3 7D 5 8
Node A
A C DA 2 ∞ ∞C ∞ 1 ∞D ∞ ∞ 3
Node B
Node C
A B DA 7 ∞ ∞B ∞ 1D ∞ ∞ 1
Node D7 loop: …13 else if (update D(A, Y) from B) 14 DB(A,Y) = DB(A,B) + D(B, Y);15 if (new min. for destination Y)16 send D(A, Y) to all neighbors 17 forever
DB(A, C) = DB(A,B) + D(B, C) = 2 + 1 = 3
DB(A, D) = DB(A,B) + D(B, D) = 2 + 3 = 5
B CA ∞ ∞B 3 ∞C ∞ 1
Example: End of 1st Iteration
A C12
7
B D3
1
B CB 2 8C 3 7D 5 8
Node A Node B
Node C
A B DA 7 3 ∞B 9 1 4D ∞ 4 1
Node D
B CA 5 8B 3 2C 4 1
End of 1st Iteration All nodes knows the best two-hop
paths
A C DA 2 3 ∞C 9 1 4D ∞ 2 3
Example: 2nd Iteration (A B)
A C12
7
B D3
1
B CB 2 8C 3 7D 5 8
Node A Node B
Node C
A B DA 7 3 ∞B 9 1 4D ∞ 4 1
Node D
B CA 5 8B 3 2C 4 1
A C DA 2 3 ∞C 5 1 4D 7 2 3
7 loop: …13 else if (update D(B, Y) from A) 14 DA(B,Y) = DA(B,A) + D(A, Y);15 if (new min. for destination Y)16 send D(B, Y) to all neighbors 17 forever
DA(B, C) = DA(B,A) + D(A, C) = 2 + 3 = 5
DA(B, D) = DA(B,A) + D(A, D) = 2 + 5 = 7
Example: End of 2nd Iteration
A C12
7
B D3
1
B CB 2 8C 3 7D 4 8
Node A
A C DA 2 3 11C 5 1 4D 7 2 3
Node B
Node C
A B DA 7 3 6B 9 1 4D 12 4 1
Node D
B CA 5 4B 3 2C 4 1
End of 2nd Iteration All nodes knows the best three-hop paths
Example: End of 3rd Iteration
A C12
7
B D3
1
B CB 2 8C 3 7D 4 8
Node A
A C DA 2 3 6C 5 1 4D 7 2 3
Node B
Node C
A B DA 7 3 5B 9 1 4D 11 4 1
Node D
B CA 5 4B 3 2C 4 1
End of 2nd Iteration: Algorithm
Converges!
41
Distance Vector: Link Cost Changes
A C14
50
B1
“goodnews travelsfast”
A CA 4 6C 9 1
Node B
A BA 50 5B 54 1
Node C
Link cost changes heretime
Algorithm terminates
loop: 8 wait (until A sees a link cost change to neighbor V9 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 DV(A,Y) = DV(A,Y) ± d 13 else if (update D(V, Y) received from V) /* case 2 */14 DV(A,Y) = DV(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 CA 1 6C 9 1
A BA 50 5B 54 1
A CA 1 6C 9 1
A BA 50 2B 51 1
A CA 1 3C 3 1
A BA 50 2B 51 1
42
Distance Vector: Count to Infinity Problem
A C14
50
B60
“badnews travelsslowly”
Node B
Node C
Link cost changes here time
…
loop: 8 wait (until A sees a link cost change to neighbor V9 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 DV(A,Y) = DV(A,Y) ± d 13 else if (update D(V, Y) received from V) /* case 2 */14 DV(A,Y) = DV(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 CA 4 6C 9 1
A BA 50 5B 54 1
A CA 60 6C 9 1
A BA 50 5B 54 1
A CA 60 6C 9 1
A BA 50 7B 101 1
A CA 60 8C 9 1
A BA 50 7B 101 1
43
Distance Vector: Poisoned Reverse
A C14
50
B60• 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) = ∞
timeAlgorithm terminates
A CA 4 6C 9 1
A BA 50 5B ∞ 1
A CA 60 6C 9 1
A BA 50 5B ∞ 1
A CA 60 6C 9 1
A BA 50 ∞B ∞ 1
A CA 60 51C 9 1
A BA 50 ∞B ∞ 1
A CA 60 51C 9 1
A BA 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 VectorPer-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