320 likes | 403 Views
Announcement. Project 2 due next week! Homework 3 available soon, will put it online Recitation tomorrow on Minet and project 2. Outline. Introduction and Network Service Models Routing Principles Link State Algorithm Distance Vector Algorithm.
E N D
Announcement • Project 2 due next week! • Homework 3 available soon, will put it online • Recitation tomorrow on Minet and project 2
Outline • Introduction and Network Service Models • Routing Principles • Link State Algorithm • Distance Vector Algorithm
transport packet from sending to receiving hosts network layer protocols in every host, router three important functions: path determination: route taken by packets from source to dest. Routing algorithms forwarding: move packets from router’s input to appropriate router output call setup: some network architectures require router call setup along path before data flows 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 Network layer functions
call setup, teardown for each call before data can flow each packet carries VC identifier (not destination host ID) every router on source-dest path maintains “state” for each passing connection “source-to-dest path behaves much like telephone circuit” performance-wise network actions along source-to-dest path Virtual circuits
used to setup, maintain teardown VC used in ATM, frame-relay, X.25 not used in today’s Internet application transport network data link physical application transport network data link physical Virtual circuits: signaling protocols 6. Receive data 5. Data flow begins 4. Call connected 3. Accept call 1. Initiate call 2. incoming call
no call setup at network layer routers: no state about end-to-end connections no network-level concept of “connection” packets forwarded using destination host address packets between same source-dest pair may take different paths application transport network data link physical application transport network data link physical Datagram networks: the Internet model 1. Send data 2. Receive data
Internet data exchange among computers “elastic” service, no strict timing req. “smart” end systems (computers) can adapt, perform control, error recovery simple inside network, complexity at “edge” many link types different characteristics uniform service difficult ATM evolved from telephony human conversation: strict timing, reliability requirements “dumb” end systems telephones complexity inside network Datagram or VC network: why?
Outline • Introduction and Network Service Models • Routing Principles • Link State Algorithm • Distance Vector Algorithm
Router Architecture Overview Two key router functions: • run routing algorithms/protocol (RIP, OSPF, BGP) • forwarding datagrams from incoming to outgoing link
5 3 5 2 2 1 3 1 2 1 x z w u y v Graph abstraction 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) } Remark: Graph abstraction is useful in other network contexts Example: P2P, where N is set of peers and E is set of TCP connections
5 3 5 2 2 1 3 1 2 1 x z w u y v Graph abstraction: costs • 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 (x1, x2, x3,…, xp) = c(x1,x2) + c(x2,x3) + … + c(xp-1,xp) Question: What’s the least-cost path between u and z ? Routing algorithm: algorithm that finds least-cost path
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 Routing Algorithm classification
Dijkstra’s algorithm net topology, link costs known to all nodes accomplished via “link state broadcast” all nodes have same info computes least cost paths from one node (‘source”) to all other nodes gives routing table for that node iterative: after k iterations, know least cost path to k dest.’s Notation: 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 dest. V p(v): predecessor node along path from source to v, that is next v N: set of nodes whose least cost path definitively known A 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 y u 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
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:
Algorithm complexity: n nodes 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: e.g., link cost = amount of carried traffic A A A A D D D D B B B B C C C C 2+e 0 2+e 0 2+e 0 1 1+e 0 0 1 1+e 0 0 e 1 1+e 0 … recompute … recompute routing … recompute Dijkstra’s algorithm, discussion 1 1+e 0 0 e 0 1 1 e initially
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 Clearly, 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 Node that achieves minimum is next hop in shortest path ➜ forwarding table
Distance Vector Algorithm • Dx(y) = estimate of least cost from x to y • Distance vector: Dx = [Dx(y): y є N ] • Node x knows cost to each neighbor v: c(x,v) • Node x maintains Dx = [Dx(y): y є N ] • Node x also maintains its neighbors’ distance vectors • For each neighbor v, x maintains Dv = [Dv(y): y є N ]
Distance vector algorithm 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: Dx(y) ← minv{c(x,v) + Dv(y)} for each node y ∊ N • Under minor, natural conditions, the estimate Dx(y) converge to the actual least cost dx(y)
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 Each node: wait for (change in local link cost of msg from neighbor) recompute estimates if DV to any dest has changed, notify neighbors Distance Vector Algorithm
Dx(z) = min{c(x,y) + Dy(z), c(x,z) + Dz(z)} = min{2+1 , 7+0} = 3 cost to x y z x 0 2 7 cost to cost to y x y z from ∞ ∞ ∞ x y z z ∞ ∞ ∞ x 0 2 3 x 0 2 3 y from 2 0 1 y from 2 0 1 2 1 z 7 1 0 z 3 1 0 cost to 7 cost to x y z x y z x 0 2 7 x 0 2 3 y from z 2 0 1 y from x y 2 0 1 z 7 1 0 z 3 1 0 cost to cost to x y z x y z x 0 2 7 x 0 2 3 y y 2 0 1 from from 2 0 1 z z 3 1 0 3 1 0 time Dx(y) = min{c(x,y) + Dy(y), c(x,z) + Dz(y)} = min{2+0 , 7+1} = 2 node x table node y table cost to x y z x ∞ ∞ ∞ 2 0 1 y from z ∞ ∞ ∞ node z table cost to x y z x ∞ ∞ ∞ y from ∞ ∞ ∞ z 7 1 0
X Z Y Distance Vector: link cost changes Link cost changes: • node detects local link cost change • updates distance table (line 15) • if cost change in least cost path, notify neighbors (lines 23,24) 1 4 1 50 algorithm terminates “good news travels fast”
X Z Y Distance Vector: link cost changes Link cost changes: • good news travels fast • bad news travels slow - “count to infinity” problem! 60 4 1 50 algorithm continues on!
X Z Y Distance Vector: 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? 60 4 1 50 algorithm terminates
Message complexity LS: with n nodes, E links, O(nE) msgs sent each DV: exchange between neighbors only convergence time varies Speed of Convergence LS: O(n2) 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 propagate thru network Comparison of LS and DV algorithms
cost to destination via E D () A B C D A 1 7 6 4 B 14 8 9 11 D 5 5 4 2 destination A D B E C E E E D (C,D) D (A,D) D (A,B) D D B c(E,D) + min {D (C,w)} c(E,B) + min {D (A,w)} c(E,D) + min {D (A,w)} = = = w w w = = = 2+2 = 4 2+3 = 5 8+6 = 14 Distance Table: example 1 7 2 8 1 2 loop! loop!
cost to destination via E D () A B C D A 1 7 6 4 B 14 8 9 11 D 5 5 4 2 destination Distance table gives routing table Outgoing link to use, cost A B C D A,1 D,5 D,4 D,2 destination Routing table Distance table
Distance Vector Algorithm: At all nodes, X: 1 Initialization: 2 for all adjacent nodes v: 3 D (*,v) = infinity /* 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 */ X 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 update from neighbor V) 11 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 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 is "newval" */ 21 for the single destination y: D (Y,V) = c(X,V) + newval 22 23 if we 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 X X w X X w X w