CS 4284 Systems Capstone Godmar Back Networking
CS 4284 Spring 2013 Summary Basics of Network Layer –Routing (path selection) vs Forwarding (switching) –Service models –Datagram Networks vs VC Networks –Basics of routers Packet classification, Packet Scheduling, AQM Next: Routing Algorithms
CS 4284 Spring 2013 The Network Layer transports segment from sending to receiving host on sending side encapsulates segments into datagrams on receiving side, delivers segments to transport layer network layer protocols in every host, router router examines header fields in all IP datagrams passing through it 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 application transport network data link physical
CS 4284 Spring 2013 Key Network-Layer Functions forwarding: move packets from router’s input to appropriate router output routing: determine route taken by packets from source to dest. –Routing algorithms analogy: routing: process of planning trip from source to dest forwarding: process of getting through single interchange
CS 4284 Spring value in arriving packet’s header routing algorithm local forwarding table header value output link Interplay between Routing and Forwarding
Routing Algorithms
CS 4284 Spring 2013 u y x wv z Graph: G = (N,E) N = set of routers = { u, v, w, x, y, z } E = set of links ={ (u,v), (u,x), (v,x), (v,w), (x,w), (x,y), (w,y), (w,z), (y,z) } Graph abstraction
CS 4284 Spring 2013 Graph Abstraction: Costs u y x wv z c(x,x’) = cost of link (x,x’) - e.g., c(w,z) = 5 cost could always be 1, or inversely related to bandwidth, or inversely related to congestion Cost of path (x 1, x 2, x 3,…, x p ) = c(x 1,x 2 ) + c(x 2,x 3 ) + … + c(x p-1,x p ) Question: What’s the least-cost path between u and z ?
CS 4284 Spring 2013 Routing Algorithm Classification Global or decentralized information? Global: all routers have complete topology, link cost info “link state” algorithms Decentralized: router knows physically- connected neighbors, link costs to neighbors iterative process of computation, exchange of info with neighbors “distance vector” algorithms Static or dynamic? Static: routes change slowly over time Dynamic: routes change more quickly –periodic update –in response to link cost changes Note: Global/decentralized classification does not say where routing computation is performed, it says what information one has when computing routes
CS 4284 Spring 2013 Link State Routing Routers periodically broadcast link state information –link state messages or LSA (link state advertisement) –broadcast via sequence-number controlled flooding All routers acquire complete connectivity + link cost information of entire network Each router computes routing table from that obtained topology –Dijkstra’s shortest path to other routers, from computing router this becomes forwarding table
CS 4284 Spring 2013 Link State Broadcast Goal: every node obtains a copy of this table –and updates as conditions change u y x wv z uvwxyz u0251 v2032 w x12301 y 1102 z 5 20
CS 4284 Spring 2013 Link State Broadcast (2) Idea: –Send n’th row of own adjacency matrix – (conceptually, at least) –With sender id n –Sequence number k On receipt of msg from node n, node m updates n’th row with msg content –update adj[m][n] to note connection to neighbor with link cost Controlled flooding, based on sequence number First round, everybody sends u y x wv z *,0 from node_id seq number
CS 4284 Spring 2013 Link State Broadcast (3) u’s view after first broadcast u y x wv z uvwxyz u0251 v 0 w 0 x 0 y 0 z 0
CS 4284 Spring 2013 Link State Broadcast (4) v’s view after first broadcast u y x wv z uvwxyz u0 v2032 w 0 x 0 y 0 z 0
CS 4284 Spring 2013 Link State Broadcast (5) Msgs exchanged in second round u y x wv z u,10251 v,12032 w, x, y,1 1102 z,1 5 20
CS 4284 Spring 2013 Link State Broadcast (6) everybody’s view after 2 nd broadcast –Link changes will cause new broadcasts u y x wv z uvwxyz u0251 v2032 w x12301 y 1102 z 5 20
CS 4284 Spring 2013 Dijkstra’s algorithm Notation: c(x,y): link cost from node x to y; = ∞ 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 Idea: –Keep track of nodes to whom least cost path is known –Keep track of complement: “candidate set” – for which you have estimates of cost Start with one node –Create estimates for adjacent nodes Repeat –Choose best candidate, update estimates for other candidates based on candidate’s neighbors –Remove candidate from candidate set and add to known set Until done
CS 4284 Spring 2013 Dijkstra’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'
CS 4284 Spring , u 4, x 2, x 2, u 3, y 4, y 3, y 4, y 4, y 2, u 5, u 1, u Dijkstra’s Algorithm Example u y x wv z Step N’ D(v), p(v) D(w), p(w) D(x), p(x) D(y), p(y) D(z), p(z)vwxy z 0 u 1 u 2 ux 3 uxy 5 uxyvw 4 uxyv Done!
CS 4284 Spring 2013 Implementing Link State Routing “HELLO” neighbor protocol –Get to know your neighbors –Learn if neighbor moves out (link goes down) LSA broadcast protocol –Let the entire world know who your neighbors are As soon as you learn who yours are Whenever your knowledge changes –Help others broadcast information about their neighbors to entire world (until everybody learns entire topology) –Maintain sequence numbers to prevent circular forwarding The two can be combined (design choice)
CS 4284 Spring 2013 Dijkstra’s algorithm, discussion Algorithm complexity: n nodes, assume |E| << n 2 each iteration: need to check all nodes, w, not in N n(n+1)/2 comparisons: O(n 2 ) more efficient implementations possible: O(nlogn) Oscillations possible: If, for instance, link cost = amount of carried traffic A D C B 1 1+e e 0 e A D C B 2+e e 1 A D C B 0 2+e 1+e A D C B 2+e e 1 initially … recompute routing … recompute
CS 4284 Spring 2013 Distance Vector Algorithm (1) Bellman-Ford Equation (dynamic programming) Define d x (y) := cost of least-cost path from x to y Then d x (y) = min {c(x,v) + d v (y) } where min is taken over all neighbors of x
CS 4284 Spring 2013 Bellman-Ford Example (2) u y x wv z Clearly, d v (z) = 5, d x (z) = 3, d w (z) = 3 d u (z) = min { c(u,v) + d v (z), c(u,x) + d x (z), c(u,w) + d w (z) } = min {2 + 5, 1 + 3, 5 + 3} = 4 Node that achieves minimum is next hop in shortest path ➜ forwarding table B-F equation says:
CS 4284 Spring 2013 Distance Vector Algorithm (3) D x (y) = estimate of least cost from x to y Distance vector: D x = [D x (y): y N ] Node x knows cost to each neighbor v: c(x,v) Node x maintains D x = [D x (y): y N ] Node x also maintains its neighbors’ distance vectors (at least temporarily) –For each neighbor v, x maintains D v = [D v (y): y N ]
CS 4284 Spring 2013 Distance Vector Algorithm (4) Basic Idea: Each node periodically sends its own distance vector estimate to neighbors When a node x receives new DV estimate from neighbor, it updates its own DV using B-F equation: D x (y) ← min v {c(x,v) + D v (y)} for each node y ∊ N Under minor, natural conditions, the estimate D x (y) converges to actual least cost d x (y)
CS 4284 Spring 2013 Distance Vector Algorithm (5) Iterative, asynchronous: each local iteration caused by: local link cost change DV update message from neighbor Distributed: each node notifies neighbors only when its DV changes –neighbors then notify their neighbors if necessary wait for (change in local link cost of msg from neighbor) recompute estimates if DV to any dest has changed, notify neighbors Each node:
CS 4284 Spring 2013 Example DV Routing
CS 4284 Spring 2013 Example (cont’d) time 341- D x (y) ← min v {c(x,v) + D v (y)} for each node y ∊ N
CS 4284 Spring 2013 Example (cont’d) Converged after 3 iterations What if link cost changes?
CS 4284 Spring 2013 Distance Vector: Link Cost Changes Link cost changes: node detects local link cost change updates routing info, recalculates distance vector if DV changes, notify neighbors “good news travels fast” x z y 1 At time t 0, y detects the link-cost change, updates its DV, and informs its neighbors. At time t 1, z receives the update from y and updates its table. It computes a new least cost to x and sends its neighbors its DV. At time t 2, y receives z’s update and updates its distance table. y’s least costs do not change and hence y does not send any message to z.
CS 4284 Spring 2013 Count-To-Infinity x z 1 4 y 60 x y z Before change: y to x via z z to x via y y to x via z 51 50
CS 4284 Spring 2013 Distance Vector: Link Cost Changes Link cost changes: good news travels fast bad news travels slow - “count to infinity” problem! 44 iterations before algorithm stabilizes Poisoned reverse: 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? x z y 60
CS 4284 Spring 2013 Poisoned Reverse x z 1 4 y After change: y to x via z z to x via x -1 Don’t tell z dist to x x y z
CS 4284 Spring 2013 Comparison of LS and DV algorithms Message complexity LS: with n nodes, E links, O(nE) msgs sent DV: exchange between neighbors only –convergence time varies Speed of Convergence LS: O(n 2 ) algorithm requires O(nE) msgs –may have oscillations 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: –DV node can advertise incorrect path cost –each node’s table used by others error propagates thru network
CS 4284 Spring 2013 Hierarchical Routing scale: with 200 million destinations: can’t store all dest’s in routing tables! routing table exchange would swamp links! administrative autonomy internet = network of networks each network admin may want to control routing in its own network Our routing study thus far - idealization all routers identical network “flat” … not true in practice
CS 4284 Spring 2013 Hierarchical Routing aggregate routers into regions, “autonomous systems” (AS) routers in same AS run same routing protocol –“intra-AS” routing protocol –routers in different AS may run different intra- AS routing protocols Gateway router Direct link to router in another AS Example: –[AS1312]AS1312
CS 4284 Spring b 1d 3a 1c 2a AS3 AS1 AS2 1a 2c 2b 1b Intra-AS Routing algorithm Inter-AS Routing algorithm Forwarding table 3c Interconnected ASes Forwarding table is configured by both intra- and inter-AS routing algorithm –Intra-AS sets entries for internal dests –Inter-AS & Intra-AS sets entries for external dests
CS 4284 Spring b 1d 3a 1c 2a AS3 AS1 AS2 1a 2c 2b 1b 3c Inter-AS tasks Suppose router in AS1 receives datagram for which dest is outside of AS1 –Router should forward packet towards one of the gateway routers, but which one? AS1 needs: 1.to learn which dests are reachable through AS2 and which through AS3 2.to propagate this reachability info to all routers in AS1 Job of inter-AS routing!
CS 4284 Spring b 1d 3a 1c 2a AS3 AS1 AS2 1a 2c 2b 1b 3c Inter-AS tasks (cont’d) Suppose router in AS1 receives datagram for which dest is outside of AS1 –Router should forward packet towards one of the gateway routers, but which one? Scenario 1 Destination x is reachable through single AS Inter-AS must propagate this information inside AS AS3 advertises route to x AS2 does not advertise route to x Spread in AS1: use gateway 1c to get to x Least cost path to 1c is interface l, add (x, l) to routing table
CS 4284 Spring b 1d 3a 1c 2a AS3 AS1 AS2 1a 2c 2b 1b 3c Hot Potato Routing Suppose router in AS1 receives datagram for which dest is outside of AS1 –Router should forward packet towards one of the gateway routers, but which one? Scenario 2: Destination is reachable through multiple AS: Hot potato routing: send packet towards closest of two routers
CS 4284 Spring b 1d 3a 1c 2a AS3 AS1 AS2 1a 2c 2b 1b 3c Hot Potato Routing Suppose router in AS1 receives datagram for which dest is outside of AS1 –Router should forward packet towards one of the gateway routers, but which one? Scenario 2: Destination is reachable through multiple AS: Hot potato routing: send packet towards closest of two routers AS3 advertises route to x AS2 advertises route to x Spread in AS1: 1c and 1b lead to x 1b is closer than 1c, interface k leads to 1b, so add (x, k) to routing table
CS 4284 Spring 2013 Summary Routing algorithms: –Link State –Distance Vector Hierarchical Routing –AS: autonomous systems Next: application to Internet/IP