EECS 122 Introduction to Computer Networks Link State

  • Slides: 37
Download presentation
EECS 122: Introduction to Computer Networks Link State and Distance Vector Routing Computer Science

EECS 122: Introduction to Computer Networks Link State and Distance Vector Routing Computer Science Division Department of Electrical Engineering and Computer Sciences University of California, Berkeley, CA 94720 -1776 EECS 122 - UCB Katz, Stoica F 04

Today’s Lecture: 7 2 17, 18, 19 6 Transport 10, 11 14, 15, 16

Today’s Lecture: 7 2 17, 18, 19 6 Transport 10, 11 14, 15, 16 7, 8, 9 21, 22, 23 25 Application Network (IP) Link Physical Katz, Stoica F 04 2

IP Header § § § § § Vers: IP versions HL: Header length (in

IP Header § § § § § Vers: IP versions HL: Header length (in 32 bits) Type: Type of service Length: size of datagram (header + data; in bytes) Identification: fragment ID Fragment offset: offset of current fragment (x 8 bytes) TTL: number of network hops Protocol: protocol type (e. g. , TCP, UDP) Source IP addresses Destination IP address Katz, Stoica F 04 3

What is Routing? Routing is the core function of a network It ensures that

What is Routing? Routing is 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. Katz, Stoica F 04 4

Internet Routing § § Internet organized as a two level hierarchy First level –

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 Katz, Stoica F 04 5

Example Interior router BGP router AS-1 AS-3 AS-2 Katz, Stoica F 04 6

Example Interior router BGP router AS-1 AS-3 AS-2 Katz, Stoica F 04 6

Intra-domain Routing Protocols § § Based on unreliable datagram delivery Distance vector - Routing

Intra-domain Routing Protocols § § Based on unreliable datagram delivery Distance vector - Routing Information Protocol (RIP), based on Bellman-Ford - Each neighbor periodically exchange reachability information to its neighbors - Minimal communication overhead, but it takes long to converge, i. e. , in proportion to the maximum path length § Link state - Open Shortest Path First (OSPF), based on Dijkstra - Each network periodically floods immediate reachability information to other routers - Fast convergence, but high communication and computation overhead Katz, Stoica F 04 7

Routing § Goal: determine a “good” path through the network from source to destination

Routing § Goal: determine a “good” path through the network from source to destination - Good means usually the shortest path § Network modeled as a graph A - Routers nodes 1 - Link edges • Edge cost: delay, congestion level, … 2 5 B 2 D 3 C 3 1 5 F 1 E Katz, Stoica F 04 2 8

Outline Ø § Link State Distance Vector Katz, Stoica F 04 9

Outline Ø § Link State Distance Vector Katz, Stoica F 04 9

A Link State Routing Algorithm Dijkstra’s algorithm § § § Net topology, link costs

A Link State Routing Algorithm Dijkstra’s algorithm § § § Net topology, link costs known to all nodes - Accomplished via “link state flooding” - All nodes have same info Compute least cost paths from one node (‘source”) to all other nodes Iterative: after k iterations, know least cost paths to k closest destinations Notations § c(i, j): link cost from node i to j; cost infinite if not direct neighbors § D(v): current value of cost § p(v): predecessor node § S: set of nodes whose of path from source to destination v along path from source to v, that is next to v least cost path definitively known Katz, Stoica F 04 10

Link State Flooding Example 5 4 7 8 6 11 2 1 10 3

Link State Flooding Example 5 4 7 8 6 11 2 1 10 3 13 12 Katz, Stoica F 04 11

Link State Flooding Example 5 4 7 8 6 11 2 1 10 3

Link State Flooding Example 5 4 7 8 6 11 2 1 10 3 13 12 Katz, Stoica F 04 12

Link State Flooding Example 5 4 7 8 6 11 2 1 10 3

Link State Flooding Example 5 4 7 8 6 11 2 1 10 3 13 12 Katz, Stoica F 04 13

Link State Flooding Example 5 4 7 8 6 11 2 1 10 3

Link State Flooding Example 5 4 7 8 6 11 2 1 10 3 13 12 Katz, Stoica F 04 14

Dijsktra’s Algorithm 1 Initialization: 2 S = {A}; 3 for all nodes v 4

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 D(v) = min( D(v), D(w) + c(w, v) ); // new cost to v is either old cost to v or known // shortest path cost to w plus cost from w to v 13 until all nodes in S; Katz, Stoica F 04 15

Example: Dijkstra’s Algorithm Step 0 1 2 3 4 5 start S A D(B),

Example: Dijkstra’s Algorithm Step 0 1 2 3 4 5 start S A D(B), p(B) D(C), p(C) D(D), p(D) D(E), p(E) D(F), p(F) 2, A 1, A 5 2 A B 2 1 D 3 C 3 1 5 F 1 E 2 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) = ; … Katz, Stoica F 04 16

Example: Dijkstra’s Algorithm Step 0 1 2 3 4 5 D(B), p(B) D(C), p(C)

Example: Dijkstra’s Algorithm Step 0 1 2 3 4 5 D(B), p(B) D(C), p(C) D(D), p(D) D(E), p(E) D(F), p(F) 2, A 1, A 5, A 4, D 2, D start S A AD 5 2 A B 2 1 D 3 C 3 1 5 F 1 E 2 … 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 D(v) = min( D(v), D(w) + c(w, v) ); 13 until all nodes in S; Katz, Stoica F 04 17

Example: Dijkstra’s Algorithm Step 0 1 2 3 4 5 D(B), p(B) D(C), p(C)

Example: Dijkstra’s Algorithm Step 0 1 2 3 4 5 D(B), p(B) D(C), p(C) D(D), p(D) D(E), p(E) D(F), p(F) 2, A 1, A 5, A 4, D 2, D 3, E 4, E start S A AD ADE 5 2 A B 2 1 D 3 C 3 1 5 F 1 E 2 … 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 D(v) = min( D(v), D(w) + c(w, v) ); 13 until all nodes in S; Katz, Stoica F 04 18

Example: Dijkstra’s Algorithm Step 0 1 2 3 4 5 D(B), p(B) D(C), p(C)

Example: Dijkstra’s Algorithm Step 0 1 2 3 4 5 D(B), p(B) D(C), p(C) D(D), p(D) D(E), p(E) D(F), p(F) 2, A 1, A 5, A 4, D 2, D 3, E 4, E start S A AD ADEB 5 2 A B 2 1 D 3 C 3 1 5 F 1 E 2 … 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 D(v) = min( D(v), D(w) + c(w, v) ); 13 until all nodes in S; Katz, Stoica F 04 19

Example: Dijkstra’s Algorithm Step 0 1 2 3 4 5 D(B), p(B) D(C), p(C)

Example: Dijkstra’s Algorithm Step 0 1 2 3 4 5 D(B), p(B) D(C), p(C) D(D), p(D) D(E), p(E) D(F), p(F) 2, A 1, A 5, A 4, D 2, D 3, E 4, E start S A AD ADEBC 5 2 A B 2 1 D 3 C 3 1 5 F 1 E 2 … 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 D(v) = min( D(v), D(w) + c(w, v) ); 13 until all nodes in S; Katz, Stoica F 04 20

Example: Dijkstra’s Algorithm Step 0 1 2 3 4 5 D(B), p(B) D(C), p(C)

Example: Dijkstra’s Algorithm Step 0 1 2 3 4 5 D(B), p(B) D(C), p(C) D(D), p(D) D(E), p(E) D(F), p(F) 2, A 1, A 5, A 4, D 2, D 3, E 4, E start S A AD ADEBCF 5 2 A B 2 1 D 3 C 3 1 5 F 1 E 2 … 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 D(v) = min( D(v), D(w) + c(w, v) ); 13 until all nodes in S; Katz, Stoica F 04 21

Complexity § Assume a network consisting of n nodes - Each iteration: need to

Complexity § 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)) Katz, Stoica F 04 22

Oscillations § Assume link cost = amount of carried traffic 1 A 1+e D

Oscillations § Assume link cost = amount of carried traffic 1 A 1+e D 0 0 B e 0 C 1 1 e initially § 2+e A 0 D 1+e 1 B 0 0 C … recompute routing A 0 2+e D 0 0 B 1 1+e C … recompute 2+e A 0 D 1+e 1 B e 0 C … recompute How can you avoid oscillations? Katz, Stoica F 04 23

Outline § Ø Link State Distance Vector Katz, Stoica F 04 24

Outline § Ø Link State Distance Vector Katz, Stoica F 04 24

Distance Vector Routing Algorithm § § Iterative: continues until no nodes exchange info Asynchronous:

Distance Vector Routing Algorithm § § Iterative: continues until no nodes exchange info Asynchronous: nodes need not exchange info/iterate in lock steps Distributed: each node communicates only with directlyattached neighbors Each router maintains - 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 (remember this !) § Note: for simplicity in this lecture examples we show only the shortest distances to each destination Katz, Stoica F 04 25

Distance Vector Routing § Each local iteration caused by: Each node: - Local link

Distance Vector Routing § Each local iteration caused by: Each node: - Local link cost change wait for (change in local link - Message from neighbor: its least cost or msg from neighbor) path change from neighbor to destination § Each node notifies neighbors only when its least cost path to any destination changes - Neighbors then notify their neighbors if necessary recompute distance table if least cost path to any dest has changed, notify neighbors Katz, Stoica F 04 26

Distance Vector Algorithm (cont’d) 1 Initialization: 2 for all neighbors V do 3 if

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 • D(A, V) = ∞; • loop: 8 wait (until A sees a link cost change to neighbor V 9 or until A receives update from neighbor V) 10 if (D(A, V) changes by d) 11 for all destinations Y through V do 12 D(A, Y) = D(A, Y) + d 13 else if (update D(V, Y) received from V) /* shortest path from V to some Y has changed */ 14 D(A, Y) = D(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 Katz, Stoica F 04 27

Example: Distance Vector Algorithm Node A 2 A B 7 Dest. 3 1 C

Example: Distance Vector Algorithm Node A 2 A B 7 Dest. 3 1 C D 1 Node B Cost Next. Hop B 2 B A 2 A C 7 C C 1 C D ∞ - D 3 D Node C 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) = ∞; … Dest. Node D Cost Next. Hop Dest. Cost Next. Hop A 7 A A ∞ - B 1 B B 3 B D 1 D C 1 C Katz, Stoica F 04 28

Example: 1 st Iteration (C A) Node A 2 A B 7 Dest. 3

Example: 1 st Iteration (C A) Node A 2 A B 7 Dest. 3 1 C D 1 Node B Cost Next. Hop Dest. Cost Next. Hop B 2 B A 2 A C 7 C C 1 C D 8 C D 3 D D(A, D) = D(A, C) + D(C, D) = 7 + 1 = 8 7 loop: … 13 else if (update D(V, Y) received from V) 14 D(A, Y) = D(A, V) + D(V, Y); 15 if (there is a new min. for destination Y) 16 send D(A, Y) to all neighbors 17 forever Node C Dest. (D(C, A), D(C, B), D(C, D)) Node D Cost Next. Hop Dest. Cost Next. Hop A 7 A A ∞ - B 1 B B 3 B D 1 D C 1 C Katz, Stoica F 04 29

Example: 1 st Iteration (B A, C A) Node A 2 A B 7

Example: 1 st Iteration (B A, C A) Node A 2 A B 7 Dest. 3 1 C D 1 Node B Cost Next. Hop loop: … 13 else if (update D(V, Y) received from V) 14 D(A, Y) = min(D(A, V), D(A, V) + D(V, Y)) 15 if (there is a new min. for destination Y) 16 send D(A, Y) to all neighbors 17 forever Cost Next. Hop B 2 B A 2 A C 3 B C 1 C D 5 B D 3 D D(A, D) = D(A, B) + D(B, D) = 2 + 3 = 5 7 Dest. D(A, C) = D(A, B) + D(B, C) = 2 + 1 = 3 Node C Dest. Node D Cost Next. Hop Dest. Cost Next. Hop A 7 A A ∞ - B 1 B B 3 B D 1 D C 1 C Katz, Stoica F 04 30

Example: End of 1 st Iteration Node A 2 A 7 B 7 Dest.

Example: End of 1 st Iteration Node A 2 A 7 B 7 Dest. 3 1 C D 1 loop: … 13 else if (update D(V, Y) received from V) 14 D(A, Y) = D(A, V) + D(V, Y); 15 if (there is a new min. for destination Y) 16 send D(A, Y) to all neighbors 17 forever Node B Cost Next. Hop Dest. Cost Next. Hop B 2 B A 2 A C 3 B C 1 C D 5 B D 2 C Node C Dest. Node D Cost Next. Hop Dest. Cost Next. Hop A 3 B A 5 B B 1 B B 2 C D 1 D C 1 C Katz, Stoica F 04 31

Example: End of 2 nd Iteration Node A 2 A 7 B 7 Dest.

Example: End of 2 nd Iteration Node A 2 A 7 B 7 Dest. 3 1 C D 1 loop: … 13 else if (update D(V, Y) received from V) 14 D(A, Y) = D(A, V) + D(V, Y); 15 if (there is a new min. for destination Y) 16 send D(A, Y) to all neighbors 17 forever Node B Cost Next. Hop Dest. Cost Next. Hop B 2 B A 2 A C 3 B C 1 C D 4 B D 2 C Node C Dest. Node D Cost Next. Hop Dest. Cost Next. Hop A 3 B A 4 C B 1 B B 2 C D 1 D C 1 C Katz, Stoica F 04 32

Example: End of 3 rd Iteration Node A 2 A 7 B 7 Dest.

Example: End of 3 rd Iteration Node A 2 A 7 B 7 Dest. 3 1 C D 1 Node B Cost Next. Hop … 13 else if (update D(V, Y) received from V) 14 D(A, Y) = D(A, V) + D(V, Y); 15 if (there is a new min. for destination Y) 16 send D(A, Y) to all neighbors 17 forever Cost Next. Hop B 2 B A 2 A C 3 B C 1 C D 4 B D 2 C Node C loop: Dest. Node D Cost Next. Hop Dest. Cost Next. Hop A 3 B A 4 C B 1 B B 2 C D 1 D C 1 C Nothing changes algorithm terminates Katz, Stoica F 04 33

Distance Vector: Link Cost Changes 7 loop: 8 wait (until A sees a link

Distance Vector: Link Cost Changes 7 loop: 8 wait (until A sees a link cost change to neighbor V 9 or until A receives update from neighbor V) 10 if (D(A, V) changes by d) 11 for all destinations Y through V do 12 D(A, Y) = D(A, Y) + d 13 else if (update D(V, Y) received from V) 14 D(A, Y) = D(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 1 4 A Node B D C N A 4 A D C N A 1 A C 1 B Node C D C N A 5 B D C N A 5 B A 2 B B 1 B Link cost changes here B 50 1 C “good news travels fast” time Algorithm terminates. Katz, Stoica F 04 34

Distance Vector: Count to Infinity Problem 7 loop: 8 wait (until A sees a

Distance Vector: Count to Infinity Problem 7 loop: 8 wait (until A sees a link cost change to neighbor V 9 or until A receives update from neighbor V) 10 if (D(A, V) changes by d) 11 for all destinations Y through V do 12 D(A, Y) = D(A, Y) + d ; 13 else if (update D(V, Y) received from V) 14 D(A, Y) = D(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 Node B D C N A 4 A D C N A 6 C A 8 C C 1 B Node C D C N A 5 B D C N A 5 B A 7 B A 2 B B 1 B 60 4 A B 50 … 1 C “bad news travels slowly” time Link cost changes here; recall from slide 24 that B also maintains shortest distance to A through C, which is 6. Thus D(B, A) becomes 6 Katz, ! Stoica F 04 35

Distance Vector: Poisoned Reverse § If C routes through B to get to A:

Distance Vector: Poisoned Reverse § If C routes through B to get to A: 60 - C tells B its (C’s) distance to A is infinite (so B won’t route to A via C) - Will this completely solve count to infinity problem? A 60 A A 51 C C 1 B C N D C N B D C N C 50 A 60 A 1 N 1 D N C A B Node B D C N A 4 A C D 4 D C N Node C D C N A 5 B D C N D A 5 B A 50 A B 1 B B B B 1 Link cost changes here; B updates D(B, A) = 60 as C has advertised D(C, A) = ∞ B 1 B time Algorithm terminates Katz, Stoica F 04 36

Link State vs. Distance Vector Per node message complexity § LS: O(n*e) messages; n

Link State vs. Distance Vector Per node message complexity § LS: O(n*e) messages; n – number of nodes; e – number of edges § DV: O(d) messages; where d is node’s degree Complexity § LS: O(n 2) with O(n*e) messages § DV: convergence time varies - may be routing loops - 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; error propagate through network Katz, Stoica F 04 37