270 likes | 459 Views
Overview: network layer services routing principle: path selection hierarchical routing IP what’s inside a router?. Network Layer. Postal-service mail carrier. goals: understand principles behind network layer services: routing (path selection) how a router works
E N D
Overview: network layer services routing principle: path selection hierarchical routing IP what’s inside a router? Network Layer Postal-service mail carrier goals: • understand principles behind network layer services: • routing (path selection) • how a router works • instantiation and implementation in the Internet
application transport network data link physical network data link physical network data link physical network data link physical network data link physical network data link physical network data link physical network data link physical network data link physical application transport network data link physical Network layer functions HOST A • transport packet from sending to receiving hosts • network layer protocols in every host, router Important functions: • Forwarding/switching: per-router action of moving a packet arriving at an input port to the appropriate output port • Routing/Path determination: calculation of the route that the packet will take through the network (from source to dest); this is a network-wide process. Routing algorithms HOST B
DATAGRAM ROUTING (The internet model) • routers: no state about end-to-end connections • no network-level concept of 'connection' • packets are typically routed using destination host ID • packets between same source-destination pair may take different paths Each router has a forwarding table that maps destination addresses to link interfaces application transport network data link physical application transport network data link physical 1. Send data 2. Receive data
Routing protocol 5 3 B C 5 2 A 2 F 1 3 1 2 D E 1 • 'good' path: • typically means minimum cost path • other definitions possible Routing Physical distance, link speed, monetary cost, etc. Goal: determine good path (sequence of routers) through network from source to destination. Graph (undirected) abstraction for routing algorithms: • nodes represent routers • Lines/graph edges are physical links • link cost: delay, cost of sending a packet across link, or congestion level
Static or dynamic? Static: routes change slowly over time Dynamic: routes change more quickly periodic update in response to topology or link cost changes Classification of Routing Algorithms Global or decentralized information? Global: • Least-cost path is computed using complete, global knowledge of the network: • topology, link cost info • Link State (LS) algorithms Decentralized: • Least-cost path is calculated in an iterative, distributed manner • router only knows physically-connected neighbours, link costs to neighbours • Involves an iterative process of calculation & exchange of distance vector information with neighbours • Distance Vector (DV) algorithms
Distance Vector Routing Algorithm iterative: • continues until no nodes exchange information anymore • self-terminating: no signal to stop asynchronous: • nodes need not exchange info/iterate in lock step! distributed: • each node communicates only with directly-attached neighbours
Distance Vector Algorithm Bellman-Ford Equation (dynamic programming) Define dx(y) := cost of least-cost path from x to y Then dx(y) = min {c(x,v) + dv(y) } where min is taken over all neighbors v of x v
5 3 5 2 2 1 3 1 2 1 x z w u y v Bellman-Ford example By inspection from the graph, we can see that: dv(z) = 5, dx(z) = 3, dw(z) = 3 B-F equation says: du(z) = min { c(u,v) + dv(z), c(u,x) + dx(z), c(u,w) + dw(z) } = min {2 + 5, 1 + 3, 5 + 3} = 4 The least cost path from node u to z is one of the paths that passes through node u’s neighbors The node that arrives with the minimum cost = the next hopneighbour along the shortest path ➜ forwarding table
Distance Table data structure row for each possible destination column for each directly-attached neighbor Calculation of values example: Node X, routing for destination Y via directly attached neighbor Z: cost to destination via 1 B C E D () A B C D A 1 7 6 4 B 14 8 9 11 D 5 5 4 2 7 A 2 8 1 E D 2 destination distance from X to Y, via Z as next hop = X D (Y,Z) Z c(X,Z) + min {D (Y,w)} = w Distance Vector Routing Algorithm Directly attached neighbors of E Currently known minimum-cost path from Z to Y
cost to destination via 1 B C E D () A B C D A 1 7 6 4 B 14 8 9 11 D 5 5 4 2 7 A 2 8 1 E D 2 E D D (C,D) c(E,D) + min {D (C,w)} = destination w = 2+2 = 4 E D D (A,D) c(E,D) + min {D (A,w)} = w = 2+3 = 5 E B D (A,B) c(E,B) + min {D (A,w)} = w = 8+6 = 14 DISTANCE TABLE: Example ENTRIES IN THE DATA TABLE for NODE E (after DV converges) Direct link Any possible path from D to C Node E to C via D Node E to A via D loop! Node E to A via B loop!
cost to destination via 1 E B C D () A B C D A 1 7 6 4 B 14 8 9 11 D 5 5 4 2 7 A 2 8 1 E D 2 destination Distance table gives routing table DE() Outgoing link to use, cost A B C D A,1 D,5 D,4 D,2 destination Routing table Distance table
Distance Vector Routing: (more details) BELLMAN-FORD ALGORITHM – Internet RIP, BGP, IDRP, Novell IPX, ARPANet Each node: Iterative, asynchronous: Each local iteration (Distance Table update) caused by: • Change of cost of an attached link • Receipt of message update from neighbour Distributed: • each node notifies neighbours only when its least-cost path to any destination changes wait for (change in local link cost or msg from neighbor) recompute distance table if a least-cost path to any destination has changed, notifyneighbors
Y 2 1 X Z 7 Distance Vector Algorithm: At each node, X: 1 Initialization: 2 for all adjacent nodes v: 3 D (*,v) =infinite ( the * operator means "for all rows" ) 4 D (v,v) = c(X,v) 5 for all destinations, y 6 send min D (y,w) to each neighbor (w over all X's neighbors ) Initially, set all link costs to all destination nodes to infinite (∞) X X Send a table of vectors to each neighbor of X X w
Distance Vector Algorithm (cont.): 8 loop 9 wait (until I see a link cost change to neighbor V 10 or until I receive an update from neighbor V) 11 //link cost change 12 if (c(X,V) changes by d) 13 /* change cost to all dest's via neighbor v by d */ 14 /* note: d could be positive or negative */ 15 for all destinations y: D (y,V) = D (y,V) + d 16 //receipt of routing table from neighbor V 17 else if (update received from V wrt destination Y) 18 /* shortest path from V to some Y has changed */ 19 /* V has sent a new value for its min DV(Y,w) */ 20 /* call this received new value as newval */ 21 for the single destination y: D (Y,V) = c(X,V) + newval 22 //new least-cost to any destination Y found 23 ifwe have a new min D (Y,w) for any destination Y 24 send new value of min D (Y,w) to all neighbors 25 26 forever Change in link cost; therefore, update Entire column in distance table X X Received one update from neighbor v; therefore, Calculate new link cost in distance table w X X w X w
Y 2 1 X Z Z X c(X,Z) + min {D (Y,w)} D (Y,Z) = 7 w = 7+1 = 8 Y X c(X,Y) + min {D (Z,w)} D (Z,Y) = w = 2+1 = 3 Distance Vector Algorithm: example Let’s examine one sample computation here
Y 2 1 X Z 7 Distance Vector Algorithm: example Examine which table finds a new minimum cost value after an update
Link cost changes: • node detects local link cost change • updates distance table (line 15) • if cost change in least cost path, notify neighbours (lines 23,24) 1 Y 4 1 X Z 50 Distance Vector: link cost changes algorithm terminates “good news travels fast” Note: The illustrations limits the exchange of packets between nodes Y and Z only.
Link cost changes: • good news travels fast • bad news travels slow - 'count to infinity' problem! 60 Y 4 1 X Z 50 Distance Vector: link cost changes Routing loop bet. Y & Z – will persist after 44 iterations algorithm continues on!
60 Y 4 1 X Z 50 Distance Vector: link cost changes algorithm continues on! Routing Table for Node Y Routing Table for Node Z Node Z computes the new least-cost to X, then updates its Routing Table t2: Node Z informs y of its new least-cost to X, since it has changed (increased) Sometime after t0: Node Y calculates the new least-cost path, and finds that passing through Z is more cost effective to reach Node X Sometime after t1: Node Z receives the new least-cost to Node X from Y, then computes a new least-cost to X At time t1: Node Y broadcasts the new least-cost path to Z (neighbor) And so on, and so forth… Link-cost change: the new link-cost to X changes from 4 to 60. ROUTING LOOP! Node Y doesn’t know that Z would pass through Y itself to get to X (at this point in time, Z is still using the old least-cost path (from Node Y to X is equal to 4)
If Z routes through Y to get to X : • Z tells Y its (Z's) distance to X is infinite (so Y won’t route to X via Z) • will this completely solve count to infinity problem? 60 Y 4 1 X Z 50 Distance Vector: poisoned reverse It does not. Loops with nodes >= 3 will not be detected! algorithm terminates
Poisone Reverse Algorithm Example How to apply the Poisoned Reverse Algorithm? Eventually, the value 8 would become ∞because it is not a direct link, and it is not the least-cost path for destination C via destination ∞ Inspect each row, If the link is NOT a direct link and if the link-cost is NOT equal to the minimum cost for a given destination node, then set the link-cost = ∞ (infinite)
Dijkstra’s algorithm net topology, link costs known to all nodes accomplished via “link state broadcast” all nodes have the same info computes least cost paths from one node (‘source”) to all other nodes gives forwarding table for that node iterative: after k iterations, know least cost path to k dest.’s Notation: c(x,y): link cost from node x to y; set equal to ∞ if not direct neighbors D(v): current value of cost of path from source to dest. v p(v): predecessor node along path from source to v N': set of nodes whose least cost path definitively known Link-State Routing Algorithm
Dijsktra’s Algorithm 1 Initialization: 2 N' = {u} 3 for all nodes v 4 if v adjacent to u 5 then D(v) = c(u,v) 6 else D(v) = ∞ 7 8 Loop 9 find w not in N' such that D(w) is a minimum 10 add w to N' 11 update D(v) for all v adjacent to w and not in N' : 12 D(v) = min( D(v), D(w) + c(w,v) ) 13 /* new cost to v is either old cost to v or known 14 shortest path cost to w plus cost from w to v */ 15 until all nodes in N'
5 3 5 2 2 1 3 1 2 1 x z w u y v Dijkstra’s algorithm: example D(v),p(v) 2,u 2,u 2,u D(x),p(x) 1,u D(w),p(w) 5,u 4,x 3,y 3,y D(y),p(y) ∞ 2,x Step 0 1 2 3 4 5 N' u ux uxy uxyv uxyvw uxyvwz D(z),p(z) ∞ ∞ 4,y 4,y 4,y 8 Loop 9 find w not in N' such that D(w) is a minimum 10 add w to N' 11 update D(v) for all v adjacent to w and not in N' : 12 D(v) = min( D(v), D(w) + c(w,v) ) 13 /* new cost to v is either old cost to v or known 14 shortest path cost to w plus cost from w to v */ 15 until all nodes in N' 1 Initialization: 2 N' = {u} 3 for all nodes v 4 if v adjacent to u 5 then D(v) = c(u,v) 6 else D(v) = ∞
x z w u y v destination link (u,v) v (u,x) x y (u,x) (u,x) w z (u,x) Dijkstra’s algorithm: example (2) Resulting shortest-path tree from u: Resulting forwarding table in u: Next hop router for node u to take: (either v or x)
Algorithm complexity: n nodes each iteration: need to check all nodes, w, not in N n(n+1)/2 comparisons: O(n2) more efficient implementations possible: O(nlogn) Oscillations possible: e.g., link cost = amount of carried traffic A A A A D D D D B B B B C C C C 1 1+e 2+e 0 2+e 0 2+e 0 0 0 1 1+e 0 0 1 1+e e 0 0 0 e 1 1+e 0 1 1 e … recompute … recompute routing … recompute initially Dijkstra’s algorithm, discussion destination source
A A A A D D D D B B B B C C C C 1 1+e 2+e 0 2+e 0 2+e 0 0 0 1 1+e 0 0 1 1+e e 0 0 0 e 1 1+e 0 1 1 e … recompute … recompute routing … recompute initially Dijkstra’s algorithm, discussion Problem: Oscillations with congestion-sensitive routing • Solution: Oscillations can be prevented by not running the LS algorithm at the same time. Let routers use randomised sending times for sending the link advertisement. destination Clock-wise routes Counter-clock-wise routes source Clock-wise routes