Theoretical foundations and architecture
Carrier backbone IGP design standardizes on link-state protocols: OSPF (Open Shortest Path First) or IS-IS (Intermediate System to Intermediate System). Tier-1 transit backbones historically favor IS-IS because it runs directly over Layer 2 (independent of IP stack), utilizes extensible TLVs, and offers exceptional scalability across flat Level-2 domains. Enterprise and regional carriers frequently leverage OSPF Area 0. On all core Ethernet links, Point-to-Point network type must be explicitly configured. This eliminates Designated Router (DR/BDR) elections and Network LSAs and speeds up adjacency formation; failure-reaction time is determined by BFD and SPF timers, not by the network type itself. In IS-IS deployments, every node receives a globally unique Network Entity Title (NET), where the System-ID is derived systematically from the router loopback address for operational clarity.
What they have in common and how they differ
OSPF and IS-IS are link-state protocols: every node describes its links and prefixes, floods the description across the whole domain, and then independently runs Dijkstra's algorithm (SPF) over the same database (LSDB). The differences lie in transport, message format and hierarchy model.
| Property | OSPFv2 / OSPFv3 | IS-IS |
|---|---|---|
| Transport | IP protocol 89, 224.0.0.5/224.0.0.6 | CLNS over L2 (LLC 0xFEFE), no IP |
| Flooding units | LSA (Type 1, 2, 3, 4, 5, 7, 9/10/11 opaque) | LSP, up to 256 fragments per node |
| Extensibility | opaque LSAs, new LSA types | TLV/sub-TLV inside the same LSP |
| Hierarchy | areas; Area 0 is the mandatory backbone, ABR | levels L1/L2; L2 is a contiguous backbone |
| IPv4 + IPv6 | OSPFv2 and OSPFv3 - two processes | one process, TLV 135 and TLV 236 |
| Identity | router-id (IPv4-like) | NET: AFI.area.System-ID.NSEL |
OSPF: LSA types and lifecycle
The Router-LSA (Type 1) describes the node's links inside an area, the Network-LSA (Type 2) is created by the DR on a broadcast segment, the Summary-LSA (Type 3) carries inter-area prefixes, Type 4 points to an ASBR, Type 5 carries external routes, Type 7 external routes in an NSSA. Opaque LSAs of types 9, 10 and 11 have link-local, area and AS flooding scope respectively; Traffic Engineering and Segment Routing are built on Type 10. In OSPFv3 the Router/Network LSAs no longer contain prefixes: they are carried by the Intra-Area-Prefix-LSA (Type 0x2009) and the Link-LSA (0x0008).
A neighbor passes through Down, Init, 2-Way, ExStart, Exchange, Loading, Full. On a broadcast segment Full is built only with the DR/BDR, the others stay in 2-Way; on point-to-point no DR is elected and all neighbors become Full. Default timers: Hello/Dead 10/40 s on broadcast and p2p, 30/120 s on NBMA. Every LSA has an age: it is re-originated every 30 minutes (LSRefreshTime = 1800 s), ages up to MaxAge = 3600 s and is then flooded as being deleted. MinLSInterval of 5 s prevents a node from originating the same LSA more often; in practice it is lowered with throttling timers. A mismatch of area-id, hello/dead, network type, authentication or MTU prevents convergence: with an MTU mismatch the neighbor gets stuck in ExStart/Exchange.
IS-IS: PDUs, levels, metrics
IS-IS uses four PDU types: IIH (Hello), LSP, CSNP (a full LSDB summary) and PSNP (request and acknowledgment). On a point-to-point link the adjacency is built with a three-way IIH exchange (RFC 5303); on a LAN a DIS with a pseudonode is elected. The Hello interval is 10 s, the hold time is hello × multiplier (3) = 30 s; the DIS sends Hellos three times as often. By default a Hello is padded to the MTU size, which immediately reveals an MTU mismatch: the adjacency does not come up or flaps, whereas OSPF gets stuck later at the DBD exchange. The LSP ID has the form System-ID.Pseudonode-ID-LSP-number; the default maximum lifetime is 1200 s, refreshed every 900 s. The LSP size is limited by the MTU (1492 bytes for Ethernet), and a node has 256 fragments available (the LSP number occupies one byte) - this is the real ceiling on the number of prefixes and links per node.
Levels: L1 is inside an area, L2 is between areas and the backbone. An L1/L2 node sets the ATT bit and thereby becomes an "exit" from the area. In an SP core a flat L2 is most often used (every device level-2-only), with no ATT and no leaking between levels; L1 is used to aggregate large POPs. Metrics are either narrow (TLV 2 and 128, 6 bits per link, maximum 63, path up to 1023) or wide (TLV 22 and 135, 24 bits per link, 32 bits per path). Wide is mandatory for TE and Segment Routing, and the metric-style value must match on all nodes: a node with narrow does not understand TLV 135, silently ignores part of the prefixes, and the adjacency stays UP. Cisco IOS and Huawei VRP work in narrow mode by default, while Junos without wide-metrics-only accepts both styles, so set the style explicitly. IS-IS by default gives every interface metric 10 regardless of speed, whereas OSPF computes it as reference-bandwidth / bandwidth (details in the metrics lesson).
Single-topology and IPv6
In single-topology mode IS-IS builds one SPF table for IPv4 and IPv6: if IPv6 is not enabled on all links, traffic following the best IPv4 path lands on a node without IPv6 and is lost (an IPv6 black hole). Solutions are to enable both families on the same interfaces or to move to Multi-Topology (RFC 5120, TLV 229): then a separate SPF is built for IPv6. OSPFv3 does not have this problem, but IPv4/IPv6 are usually run by different processes, each with its own flooding cycle and SPF.
Convergence timers and restart
Recovery time is made up of: failure detection (BFD or carrier-delay), LSA/LSP generation (throttling), flooding, SPF (initial/secondary/max wait) and FIB update. Typical SPF throttling values are 50 ms, 200 ms, 5 s: the first run is almost immediate, repeated runs during a flap are stretched so as not to overload the CPU. IS-IS has a separate PRC (Partial Route Calculation): a change of a single prefix does not require a full SPF.