400 likes | 470 Views
Discover the basic concepts of link-state protocols and Dijkstra’s SPF algorithm by Henk Smit from January 1999. Dive into the jigsaw puzzle analogy, LSP creation, reliable flooding, SPF execution, and more.
E N D
Link-state protocols SPF algo 0131_09F7/c2 1
Summary • The basic ideas of link-state protocols • Dijkstra’s Shortest Path First algorithm Henk Smit jan1999
Summary • The basic ideas of link-state protocols • Dijkstra’s Shortest Path First algorithm Henk Smit jan1999
The basic idea • In a link-state protocol, the network can be viewed as a jigsaw puzzle • Each piece of the puzzle holds one router • Each router creates a packet which represents its own jigsaw piece • These packets are flooded everywhere • Use SPF to put the pieces together Henk Smit jan1999
LSP for routerB LSP for routerA to A to B to E to D to C to E to B to A LSP for routerE to A to B to C to D LSP for routerD LSP for routerC About link-state protocols The jigsaw puzzle Henk Smit jan1999
Link-state protocols • Each router keeps track of its own state • Send and receive hellos to detect neighbors • Keep track of IP and CLNS addresses • interface IP prefixes • maybe inter-area or redistributed prefixes • Each router builds one linkstate packet (LSP) with all own local information • OSPF builds multiple LSAs for inter-area/externals Henk Smit jan1999
Link-state protocols • All routers exchange copies of all LSPs • via a reliable flooding mechanism • Each router stores all LSPs in a database • separate from the routing table • all routers should have exactly the same LSPDB • New LSPs sent only when there’s a change • and additionally periodic refreshes • new LSP will overwrite the old LSP • no partial updates Henk Smit jan1999
Link-state protocols • By executing Dijkstra’s SPF algorithm, each router ‘composes the jigsaw puzzle’. • the topology is calculated as a shortest-path-tree • each router is the root of the SPT it has calculated • From the SPT the RIBs are calculated • No routing loops will occur because • all routers have an identical LSPDB • all info in the LSPDB comes directly from the source • Distance Vector protocols are based on hear-say Henk Smit jan1999
lspB lspB lspB lspB lspB lspA lspA lspA lspA lspA lspE lspE lspE lspE lspE lspD lspD lspD lspD lspD lspC lspC lspC lspC lspC Each router has the same LSPDB RouterA’s LSPDB RouterB’s LSPDB RouterE’s LSPDB RouterC’s LSPDB RouterD’s LSPDB Henk Smit jan1999
Summary • The basic ideas of link-state protocols • Dijkstra’s Shortest Path First algorithm • Pseudonodes and Network LSAs • Flooding • Scaling link-state protocols by using areas • inter-area routing is IS-IS Henk Smit jan1999
Shortest Path First algorithm • Also called Dijkstra’s algorithm • The goal is to find the topology in the form of a shortest path tree (SPT) • From the SPT we build routing tables • Complexity is independent from position of computing router in the network • makes LS protocols less useful for hub-and-spoke • use distance-vector with default routes and filters Henk Smit jan1999
Shortest Path First algorithm • SPF complexity is O(n log n) • Theoretical complexity depends on sorting • ISIS uses quick array sort • causes link metric limitation of 63 • CPU usage in real life depends on other stuff • number of links is important • number of IP routes, stability of adjacencies, etc • flooding is probably more important for scaling Henk Smit jan1999
Shortest Path First algorithm • We maintain three lists (or sets) • Unknown list • all nodes start on this list • TENTative list • all nodes we are currently examining • also called candidate list • PATHS list • all nodes to which we have calculated final paths • also called known list Henk Smit jan1999
Shortest Path First algorithm • We execute N steps • typically N is the number of nodes in the network • At each step we move one node to PATHS • During the first step we move ourself to PATHS • During the next steps we find the nodethat has the shortest path amongst all nodes on TENT, and move it from TENT to PATHS • At each step we find all neighbors reachable from that node and move them to the TENT list Henk Smit jan1999
Shortest Path First algorithm • Special actions • after each step we clean up the TENT list • if a node is directly connected to us, search the first-hop info in the adjacency database • if a node is not directly connected to us, copy the first-hop info from the parent(s) • for each node on TENT, maintain the cost to get there from the root, and the first-hop info • if parallel paths, maintain multiple first-hops Henk Smit jan1999
A network rtrZ rtrF 3 2 5 rtrB rtrK 3 5 12 12 4 2 2 rtrW RtrR 5 rtrS rtrC 3 2 3 4 7 3 8 5 4 rtrQ rtrD 5 3 rtrA Henk Smit jan1999
The link-state database LSP K IS: 4 S IS: 2 F LSP F IS: 5 B IS: 12 R IS: 5 B IS: 12 W IS: 2 K LSP B IS: 2 C IS: 2 R IS: 5 F IS: 5 F LSP Z IS: 3 C IS: 3 D LSP W IS: 3 R IS: 3 A IS: 12 F IS: 5 S IS: 2 Q LSP S IS: 4 Q IS: 5 W IS: 4 K LSP R IS: 3 D IS: 7 A IS: 3 W IS: 2 B IS: 12 F LSP A IS: 3 D IS: 4 D IS: 7 R IS: 3 W IS: 5 Q IS: 5 Q LSP Q IS: 5 A IS: 5 A IS: 2 W IS: 4 S LSP C IS: 2 B IS: 8 D LSP D IS: 3 A IS: 8 C IS: 3 R IS: 4 A Henk Smit jan1999
The adjacency database Neighbor Interface Cost rtrD serial0 3 rtrD serial1 4 rtrR serial2 7 rtrW serial3 3 rtrQ serial4 5 rtrQ serial5 5 Henk Smit jan1999
Shortest Path First example • Initial situation • TENT: empty • PATHS: empty • Unknown: A B C D F K Q R S W Z Henk Smit jan1999
Shortest Path First example • First iteration • Move ourself (rtrA) to PATHS • Move neighbors of rtrA to TENT • find first-hop info in adjacency database • TENT: D cost 3 via S0, R cost 7 via S2, W cost 3 via S3, Q cost 5 via S4 or S5 • PATHS: A • Unknown: B C F K S Z Henk Smit jan1999
PATHS and TENT rtrZ rtrF 3 2 5 rtrB rtrK 3 5 12 12 4 2 2 rtrW RtrR 5 rtrS rtrC 3 2 3 4 7 3 8 5 4 rtrQ rtrD 5 3 rtrA Henk Smit jan1999
Shortest Path First example • Second iteration • Move rtrD to PATHS • Move neighbors of rtrD to TENT • rtrC and rtrR, found better path to rtrR, ignore rtrA • TENT: W cost 3 via S3, Q cost 5 via S4/S5, C cost 11 via S0, R cost 6 via S0 • PATHS: A, D cost 3 via S0 • Unknown: B F K S Z Henk Smit jan1999
PATHS and TENT rtrZ rtrF 3 2 5 rtrB rtrK 3 5 12 12 4 2 2 rtrW RtrR 5 rtrS rtrC 3 2 3 4 7 3 8 5 4 rtrQ rtrD 5 3 rtrA Henk Smit jan1999
Shortest Path First example • Third iteration • Move rtrW to PATHS, neighbors of rtrW to TENT • F and S, found more equal-cost paths to R and Q • TENT: Q cost 5 via S4/S5/S3, C cost 11 via S0, R cost 6 via S0/S3, S cost 8 via S3, F cost 15 via S3 • PATHS: A, D cost 3 via S0, W cost 3 via S3 • Unknown: B K Z Henk Smit jan1999
PATHS and TENT rtrZ rtrF 3 2 5 rtrB rtrK 3 5 12 12 4 2 2 rtrW RtrR 5 rtrS rtrC 3 2 3 4 7 3 8 5 4 rtrQ rtrD 5 3 rtrA Henk Smit jan1999
Shortest Path First example • Fourth iteration • Move rtrQ to PATHS, neighbors of rtrQ to TENT • found worse path (9 vs 8) to S. A W already known • TENT: C cost 11 via S0, R cost 6 via S0/S3, S cost 8 via S3, F cost 15 via S3 • PATHS: A, D cost 3 via S0, W cost 3 via S3, Q cost 5 via S4/S5/S3 • Unknown: B K Z Henk Smit jan1999
PATHS and TENT rtrZ rtrF 3 2 5 rtrB rtrK 3 5 12 12 4 2 2 rtrW RtrR 5 rtrS rtrC 3 2 3 4 7 3 8 5 4 rtrQ rtrD 5 3 rtrA Henk Smit jan1999
Shortest Path First example • Fifth iteration • Move rtrR to PATHS, neighbors of rtrR to TENT • new path to B, worse to F. A D W already known • TENT: C cost 11 via S0, S cost 8 via S3, F cost 15 via S3, B cost 8 via S0/S3 • PATHS: A, D cost 3 via S0, W cost 3 via S3, Q cost 5 via S4/S5/S3, R cost 6 via S0/S3 • Unknown: K Z Henk Smit jan1999
PATHS and TENT rtrZ rtrF 3 2 5 rtrB rtrK 3 5 12 12 4 2 2 rtrW RtrR 5 rtrS rtrC 3 2 3 4 7 3 8 5 4 rtrQ rtrD 5 3 rtrA Henk Smit jan1999
Shortest Path First example • Sixth iteration • Move rtrS to PATHS, neighbors of rtrS to TENT • new path to K. Q W already known • TENT: C cost 11 via S0, F cost 15 via S3, B cost 8 via S0/S3, K cost 12 via S3 • PATHS: A, D cost 3 via S0, W cost 3 via S3, Q cost 5 via S4/S5/S3, R cost 6 via S0/S3, S cost 8 via S3 • Unknown: Z Henk Smit jan1999
PATHS and TENT rtrZ rtrF 3 2 5 rtrB rtrK 3 5 12 12 4 2 2 rtrW RtrR 5 rtrS rtrC 3 2 3 4 7 3 8 5 4 rtrQ rtrD 5 3 rtrA Henk Smit jan1999
Shortest Path First example • Seventh iteration • Move rtrB to PATHS, neighbors of rtrB to TENT • better paths to C (10 vs 11) and F (13 vs 15) • TENT: C cost 10 via S0/S3, F cost 13 via S0/S3, K cost 12 via S3 • PATHS: A, D cost 3 via S0, W cost 3 via S3, Q cost 5 via S4/S5/S3, R cost 6 via S0/S3, S cost 8 via S3, B cost 8 via S0/S3 • Unknown: Z Henk Smit jan1999
PATHS and TENT rtrZ rtrF 3 2 5 rtrB rtrK 3 5 12 12 4 2 2 rtrW RtrR 5 rtrS rtrC 3 2 3 4 7 3 8 5 4 rtrQ rtrD 5 3 rtrA Henk Smit jan1999
Shortest Path First example • Eigth iteration • Move rtrC to PATHS, neighbors of rtrC to TENT • B and D already known • TENT: F cost 13 via S0/S3, K cost 12 via S3 • PATHS: A, D cost 3 via S0, W cost 3 via S3, Q cost 5 via S4/S5/S3, R cost 6 via S0/S3, S cost 8 via S3, B cost 8 via S0/S3, C cost 10 via S0/S3 • Unknown: Z Henk Smit jan1999
PATHS and TENT rtrZ rtrF 3 2 5 rtrB rtrK 3 5 12 12 4 2 2 rtrW RtrR 5 rtrS rtrC 3 2 3 4 7 3 8 5 4 rtrQ rtrD 5 3 rtrA Henk Smit jan1999
Shortest Path First example • Ninth iteration • Move rtrK to PATHS, neighbors of rtrK to TENT • found worse path to F (14 vs 13), S already known • TENT: F cost 13 via S0/S3 • PATHS: A, D cost 3 via S0, W cost 3 via S3, Q cost 5 via S4/S5/S3, R cost 6 via S0/S3, S cost 8 via S3, B cost 8 via S0/S3, C cost 10 via S0/S3, K cost 12 via S3 • Unknown: Z Henk Smit jan1999
PATHS and TENT rtrZ rtrF 3 2 5 rtrB rtrK 3 5 12 12 4 2 2 rtrW RtrR 5 rtrS rtrC 3 2 3 4 7 3 8 5 4 rtrQ rtrD 5 3 rtrA Henk Smit jan1999
Shortest Path First example • Tenth iteration • Move rtrF to PATHS, neighbors of rtrK to TENT • all neighbors already known, no changes to TENT • TENT: empty • PATHS: A, D cost 3 via S0, W cost 3 via S3, Q cost 5 via S4/S5/S3, R cost 6 via S0/S3, S cost 8 via S3, B cost 8 via S0/S3, C cost 10 via S0/S3, K cost 12 via S3, F cost 13 via S0/S3 • Unknown: Z Henk Smit jan1999
PATHS and TENT rtrZ rtrF 3 2 5 rtrB rtrK 3 5 12 12 4 2 2 rtrW RtrR 5 rtrS rtrC 3 2 3 4 7 3 8 5 4 rtrQ rtrD 5 3 rtrA Henk Smit jan1999
Shortest Path First example • Done ! • iteration stops because TENT is empty • we obviously didn’t find a path to Z • we can now calculate routing tables • result: D cost 3 via S0, W cost 3 via S3, Q cost 5 via S4/S5/S3, R cost 6 via S0/S3, S cost 8 via S3, B cost 8 via S0/S3, C cost 10 via S0/S3, K cost 12 via S3, F cost 13 via S0/S3 Henk Smit jan1999