12
1 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

EE 122: Shortest Path Routinginst.eecs.berkeley.edu/~ee122/fa09/notes/15-ShortestPa...Link State Routing! E.g. Algorithm: Dijkstra! E.g. Protocol: OSPF! Distance Vector Routing! E.g

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: EE 122: Shortest Path Routinginst.eecs.berkeley.edu/~ee122/fa09/notes/15-ShortestPa...Link State Routing! E.g. Algorithm: Dijkstra! E.g. Protocol: OSPF! Distance Vector Routing! E.g

1

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

Page 2: EE 122: Shortest Path Routinginst.eecs.berkeley.edu/~ee122/fa09/notes/15-ShortestPa...Link State Routing! E.g. Algorithm: Dijkstra! E.g. Protocol: OSPF! Distance Vector Routing! E.g

2

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

Page 3: EE 122: Shortest Path Routinginst.eecs.berkeley.edu/~ee122/fa09/notes/15-ShortestPa...Link State Routing! E.g. Algorithm: Dijkstra! E.g. Protocol: OSPF! Distance Vector Routing! E.g

3

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) = ; …

Page 4: EE 122: Shortest Path Routinginst.eecs.berkeley.edu/~ee122/fa09/notes/15-ShortestPa...Link State Routing! E.g. Algorithm: Dijkstra! E.g. Protocol: OSPF! Distance Vector Routing! E.g

4

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;

Page 5: EE 122: Shortest Path Routinginst.eecs.berkeley.edu/~ee122/fa09/notes/15-ShortestPa...Link State Routing! E.g. Algorithm: Dijkstra! E.g. Protocol: OSPF! Distance Vector Routing! E.g

5

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)

Page 6: EE 122: Shortest Path Routinginst.eecs.berkeley.edu/~ee122/fa09/notes/15-ShortestPa...Link State Routing! E.g. Algorithm: Dijkstra! E.g. Protocol: OSPF! Distance Vector Routing! E.g

6

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(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

Page 7: EE 122: Shortest Path Routinginst.eecs.berkeley.edu/~ee122/fa09/notes/15-ShortestPa...Link State Routing! E.g. Algorithm: Dijkstra! E.g. Protocol: OSPF! Distance Vector Routing! E.g

7

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

Page 8: EE 122: Shortest Path Routinginst.eecs.berkeley.edu/~ee122/fa09/notes/15-ShortestPa...Link State Routing! E.g. Algorithm: Dijkstra! E.g. Protocol: OSPF! Distance Vector Routing! E.g

8

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 = DZ(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 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 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)

Page 9: EE 122: Shortest Path Routinginst.eecs.berkeley.edu/~ee122/fa09/notes/15-ShortestPa...Link State Routing! E.g. Algorithm: Dijkstra! E.g. Protocol: OSPF! Distance Vector Routing! E.g

9

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 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 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 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 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 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 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 C A ∞ ∞ B 3 ∞ C ∞ 1

Page 10: EE 122: Shortest Path Routinginst.eecs.berkeley.edu/~ee122/fa09/notes/15-ShortestPa...Link State Routing! E.g. Algorithm: Dijkstra! E.g. Protocol: OSPF! Distance Vector Routing! E.g

10

Example: End of 1st 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 1st Iteration All nodes knows the best two-hop paths

A C D A 2 3 ∞ C 9 1 4 D ∞ 2 3

Example: 2nd Iteration (A B)

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 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 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 2nd 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 2nd Iteration: Algorithm

Converges!

Page 11: EE 122: Shortest Path Routinginst.eecs.berkeley.edu/~ee122/fa09/notes/15-ShortestPa...Link State Routing! E.g. Algorithm: Dijkstra! E.g. Protocol: OSPF! Distance Vector Routing! E.g

11

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 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 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 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 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

Page 12: EE 122: Shortest Path Routinginst.eecs.berkeley.edu/~ee122/fa09/notes/15-ShortestPa...Link State Routing! E.g. Algorithm: Dijkstra! E.g. Protocol: OSPF! Distance Vector Routing! E.g

12

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