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 Berkeley, CA 94720-1776 Katz, Stoica F04 Today’s Lecture: 7 2 17, 18, 19 6 10, 11 Transport 14, 15, 16 7, 8, 9 21, 22, 23 25 Application Network (IP) Link Physical Katz, Stoica F04 2 IP Header Vers: IP versions HL: Header length (in 32bits) 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 F04 3 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 F04 4 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 F04 5 Example Interior router BGP router AS-1 AS-3 AS-2 Katz, Stoica F04 6 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 F04 7 Routing Goal: determine a “good” path through the network from source to destination 5 - Good means usually the shortest path Network modeled as a graph A - Routers nodes 1 - Link edges • Edge cost: delay, congestion level,… 2 B 2 D 3 C 3 1 5 F 1 E Katz, Stoica F04 2 8 Outline Link State Distance Vector Katz, Stoica F04 9 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 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 Katz, Stoica F04 10 Link State Flooding Example 5 7 4 8 6 11 2 1 10 3 13 12 Katz, Stoica F04 11 Link State Flooding Example 5 7 4 8 6 11 2 1 10 3 13 12 Katz, Stoica F04 12 Link State Flooding Example 5 7 4 8 6 11 2 1 10 3 13 12 Katz, Stoica F04 13 Link State Flooding Example 5 7 4 8 6 11 2 1 10 3 13 12 Katz, Stoica F04 14 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 F04 15 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,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 F04 16 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 F04 17 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 F04 18 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 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 F04 19 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 ADEB 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 F04 20 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 ADEB ADEBC 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 F04 21 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(n2) - More efficient implementations possible: O(n*log(n)) Katz, Stoica F04 22 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 F04 23 Outline Link State Distance Vector Katz, Stoica F04 24 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 F04 25 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 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 F04 26 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 F04 27 Example: Distance Vector Algorithm Node A Dest. 2 A B 7 3 1 C D 1 Node B Cost NextHop Cost NextHop 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. Dest. Node D Cost NextHop Dest. Cost NextHop A 7 A A ∞ - B 1 B B 3 B D 1 D C 1 C Katz, Stoica F04 28 Example: 1st Iteration (C A) Node A Dest. 2 A B 7 3 1 C D 1 Node B Cost NextHop Dest. Cost NextHop 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 Node C 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 Dest. (D(C,A), D(C,B), D(C,D)) Node D Cost NextHop Dest. Cost NextHop A 7 A A ∞ - B 1 B B 3 B D 1 D C 1 C Katz, Stoica F04 29 Example: 1st Iteration (BA, CA) Node A Dest. 2 A B 7 3 1 C D 1 Node B Cost NextHop 2 B A 2 A C 3 B C 1 C D 5 B D 3 D D(A,C) = D(A,B) + D(B,C) = 2 + 1 = 3 Node C 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 NextHop B D(A,D) = D(A,B) + D(B,D) = 2 + 3 = 5 7 Dest. Dest. Node D Cost NextHop Dest. Cost NextHop A 7 A A ∞ - B 1 B B 3 B D 1 D C 1 C Katz, Stoica F04 30 Example: End of 1st Iteration Node A Dest. 2 A B 7 3 1 C D 1 Node B Cost NextHop 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 Cost NextHop B 2 B A 2 A C 3 B C 1 C D 5 B D 2 C Node C 7 Dest. Dest. Node D Cost NextHop Dest. Cost NextHop A 3 B A 5 B B 1 B B 2 C D 1 D C 1 C Katz, Stoica F04 31 Example: End of 2nd Iteration Node A Dest. 2 A B 7 3 1 C D 1 Node B Cost NextHop 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 Cost NextHop B 2 B A 2 A C 3 B C 1 C D 4 B D 2 C Node C 7 Dest. Dest. Node D Cost NextHop Dest. Cost NextHop A 3 B A 4 C B 1 B B 2 C D 1 D C 1 C Katz, Stoica F04 32 Example: End of 3rd Iteration Node A Dest. 2 A B 7 3 1 C D 1 Node B Cost NextHop 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 Cost NextHop B 2 B A 2 A C 3 B C 1 C D 4 B D 2 C Node C 7 Dest. Dest. Node D Cost NextHop Dest. Cost NextHop A 3 B A 4 C B 1 B B 2 C D 1 D C 1 C Nothing changes algorithm terminates Katz, Stoica F04 33 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 D C N D C N A 1 A A 1 A A 1 A C 1 B C 1 B C 1 B C 1 B Node C D C N A 5 B D C N D C N D C N A 5 B A 2 B A 2 B B 1 B B 1 B B 1 B B 1 B Link cost changes here B 50 1 C “good news travels fast” time Algorithm terminatesKatz, Stoica F04 34 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 D C N D C N A 6 C A 6 C A 8 C C 1 B C 1 B C 1 B C 1 B Node C D C N A 5 B D C N D C N D C N A 5 B A 7 B A 2 B B 1 B B 1 B B 1 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 F04 35 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 A 51 C C 1 B C C 1 B C 1 B C 1 B C N D 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 A 50 A A 50 A B 1 B B 1 B B B B 1 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 F04 36 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(n2) 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 F04 37