CS519: Computer NetworksLecture 4, Part 3: Feb 23, 2004Internet Routing:CS519Distance-vector (DV) and Path-vector (PV) scaling| DV scales as the number of destinations N| Path-vector scales approx as N(1/2D), where D is the network diameterz Because paths are one average ½ the diameterz A single link change can still result in large updates• (all destinations for which there is a new path)z So overhead can vary depending on situation (unpredictable)CS519Distance-path overhead exampleCS519One link change can result in updates about many destinationsCS519Distance-vector problems| As we saw, distance-vector (DV) routing algorithms, while simple, suffer from slow convergence| Path-vector (PV) fixes most of this, but still has some unpredictability| Link State pre-dates PV, is less flexible but has very fast convergence and predictable overheadsz In wide use: OSPFCS519Link-State approach| Like PV, LS works by providing more explicit information about the state of the networkz In fact, complete information about the state of the network!| Every node knows about every linkz Internally contains a “map” of the complete network| From this map, each node computes its next hopsCS519LS RIBCS519Link State Operation| Each node floods the status of all of its links to every other nodez This creates the RIB| Each node generates its FIB by running a shortest-path spanning tree algorithm with itself as the rootCS519Shortest paths overlapCS519Flooding| Each node periodically floods a Link State Update (LSU) to all nodesz Or immediately if a link changed| LSU contains:z List of all the node’s links and costsz A sequence number (to determine which LSU is the most recentz A hop countCS519Flooding algorithm (simplified)| Each node stores the latest LSU seq num (SNs) received for all nodes| When a node originates an LSU, it increments the SN| When an LSU is received, if the received SNr is “newer than” SNs, then:z Record information in LSUz Send LSU to all neighborsz Set SNs = SNr| Otherwise, ignore the LSUCS519Sequence number initialization and wrap around| This is far trickier than you’d think…| Imagine an 8-bit unsigned sequence number (0 <= SN <= 0xff)| Say SNs = 0xf0, and SNr = 0x0f| Is the received LSU newer or older than the stored one?CS519Sequence number initialization and wrap around| When SN reaches max value, it will wrap around to 0z Thus, at some point, SN=0 is “newer than” SN=0xFFFF| SNs = 0xf0, and SNr = 0x0f| Probably SNr is newer, but you can’t be surez Maybe there is some error that caused a router to send an old SNCS519Approach number 1: circular seq num space| To compare two numbers a and b| Divide seq space in half at a| If b is in clockwise half, then b is newer, else a is newer| Router must save its own SN in non-volatile memory (disk)| When router restarts, initialize own SN to latest saved value + 1CS519Circular seq num spaceCS519One problem with circular seqnum space| These SLU’s would flood forever…z Or until the hop count expiredz This apparently happened in the ARPANETCS519Approach number 2: Huge linear seq num space| 64-bit sequence number space, no wrap-around| Store own SN in non-volatile memory, init from most recent SN + 1| When max value reached (264-1), crash!!!| At 100 LSU/sec, takes 6 billion years to hit max (i.e. never crash)CS519Problem with huge linear seqnum space| Try explaining it to customers…| Non-volatile storage must be very reliablez Disk, for instance, is not that reliable| If the SN is lost, router must be restarted as a different router (i.e. with a different identity)CS519Approach number 3: lollipop shaped seq num spaceCS519Problems with lollipop shaped seq num space| Same a < b < c < a problemz Though this is mitigated by hop count in LSU| If router restarts before SN >= a, then no new LSUs will be recognized until new SN reaches old high-waterz But routers with bugs may often restart shortly after startup| This approach in V1 of OSPFCS519Approach 4: Linear space with LSU flush| Used by OSPF V2| Extra bit in LSU used to indicate that last LSU should be flushed| When router restarts, it flushes max SN, then sends initial LSU with SN=0z Likewise, if SN wraps, flush max SN before wrap| Problem would occur if flush not received by all nodesz But OSPF flood is quite reliable (LSUs are ACK’d)CS519Shortest path calculation| After any change in the network, the shortest path algorithm is run on the “graph” to calculate the next hops for the FIB| Attributed to Dijkstra| All routers must run exactly the same algorithmz So that they calculate consistent shortest pathsCS519Shortest path algorithm (1/2)| Maintain 2 lists, confirmed and tentativez Each entry has <dest, cost, nexthop>| To initialize, add self to confirmed| In each round of the algorithm:z One dest is moved from tentative to confirmedz Zero or more dests are moved into tentativeCS519Shortest path algorithm (2/2)| next = node just moved into confirmedz Calculate costs to all of next’sneighbors (as next_cost + link_cost)• Add neighbor to tentative if not there• Change entry in tentative if new cost is lower| Move node with lowest cost from tentative to confirmed| Repeat until tentative is emptyCS519ExampleCS519Shortest path algorithm optimizations| Finding the lowest-cost node in the tentative list is expensivez Maintain bins for different ranges of costz Only need to search lowest-cost non-empty bin| Maintain full tree (as predecessor nodes)z If non-tree link increases, do nothingz In other cases, can pre-populate confirmed and tentative listsCS519ExampleCS519Routing update packet priority| Routing updates should have higher priority than data packetsz So that they get through during congested periods| But routing updates should be rate limitedz So that an erroneous flood of updates doesn’t starve the networkz Nodes rate limit their neighbors as well as
View Full Document