-
Notifications
You must be signed in to change notification settings - Fork 2
ospf
Pre-Alpha. This page describes behavior that may change.
Ze includes an experimental native OSPF engine under the ospf config root. One engine drives OSPFv2 for IPv4 and OSPFv3 for IPv6. The root container configures IPv4; ospf { address-family ipv6 { ... } } enables the OSPFv3 instance on the same engine.
Interface and neighbor state, LSDB flooding, SPF, ABR and NSSA policy, redistribution, and route installation are shared between the two families. Only the wire codec, the raw transport, and the prefix strategy are address-family specific. The IPv4 codec and IPv4 raw transport (protocol 89, 224.0.0.5 / 224.0.0.6) live in internal/plugins/ospf; the OSPFv3 IPv6 codec and IPv6 transport (protocol 89, ff02::5 / ff02::6, link-local source) live in internal/plugins/ospfv3.
SPF builds one graph per area from Router-LSAs and Network-LSAs, enforces the RFC 2328 two-way check, derives next-hops from the Router-LSA link data, merges equal-cost next-hops, and installs one route per next-hop. Selected routes go through the shared Loc-RIB to sysrib to fibkernel path with OSPF administrative distance 110. OSPF does not use redistribution events to reach the kernel FIB.
Areas are declared under areas, and each interface binds to a declared area through interfaces/interface/area. A router is treated as an Area Border Router (ABR) only when it is active in the backbone (0.0.0.0) and at least one other area.
An ABR originates Type 3 Summary-Network LSAs and Type 4 Summary-ASBR LSAs, applies configured area ranges (with optional cost or not-advertise), withdraws stale self-originated summaries, accepts backbone summaries when calculating on an ABR, and computes the inter-area cost as the cost to the advertising ABR plus the summary metric.
ospf {
router-id 10.0.0.1
reference-bandwidth 100000
maximum-paths 8
areas {
area 0.0.0.0 {
area-type normal
}
}
interfaces {
interface eth0 {
area 0.0.0.0
network-type point-to-point
hello-interval 10
dead-interval 40
priority 1
}
interface lo0 {
area 0.0.0.0
network-type loopback
}
}
}
network-type accepts broadcast, point-to-point, nbma, point-to-multipoint, or loopback (see Interface network types below; the OSPFv3 address-family ipv6 interface omits loopback). A loopback record sends no Hellos and opens no raw socket. router-id must be a dotted quad when set; if it is omitted, Ze derives one from the highest loopback IPv4 address, then the highest interface IPv4 address. YANG range-checks the numeric leaves: maximum-paths 1..32, interface cost 1..65535, priority 0..255, and OSPF metrics 0..16777215.
Both families select an RFC 2328 / RFC 5340 network type per interface. broadcast (the default) elects a DR/BDR and floods to the all-routers multicast group; point-to-point forms a single adjacency with no DR; loopback (IPv4 only) sends no Hellos and opens no socket. Two non-broadcast types are also available:
-
nbma(non-broadcast multi-access): a multi-access link with no all-routers multicast. Ze discovers peers only through a per-interfacenbma-neighborlist (IPv4 keyed byaddress; IPv6 keyed byrouter-idwith an optionallink-local), unicasts Hellos to each configured neighbor athello-interval, and polls silent neighbors at the slowerpoll-interval(default 120 s). A DR/BDR is elected over the eligible (priority > 0) configured neighbors, and the DR originates the Network-LSA. A priority-0 neighbor is polled but never elected. Flooding fans out unicast to each flood-eligible neighbor. -
point-to-multipoint: treats a multi-access link as a collection of point-to-point links. No DR and no Network-LSA; a full adjacency forms with every reachable neighbor, and a host route is advertised for the interface's own address (IPv4 as a /32 Router-LSA stub link, IPv6 as a /128 prefix with the LA-bit). Hellos go to the all-routers group, or unicast to annbma-neighborlist when one is configured (the non-broadcast variant).
Configured NBMA neighbor and poll state appears in show ospf interface. The ze_ospf_nbma_neighbors, ze_ospf_nbma_polls_total, and ze_ospf_ptmp_host_routes metrics track NBMA and point-to-multipoint operation.
The IPv6 address family mirrors the area and interface model under address-family ipv6. The presence of the ipv6 container enables the OSPFv3 instance; instance-id defaults to 0 and is used for the RFC 5340 per-link demultiplex.
ospf {
router-id 172.30.0.2
address-family ipv6 {
instance-id 0
areas {
area 0.0.0.0 {
area-type normal
}
area 0.0.0.9 {
area-type nssa
}
}
interfaces {
interface eth0 {
area 0.0.0.0
network-type point-to-point
}
interface eth1 {
area 0.0.0.9
network-type point-to-point
}
}
}
}
The OSPFv3 transport uses the interface IPv6 link-local (fe80::/10) address as the source. If that address is not ready yet (IPv6 Duplicate Address Detection), the interface open is marked pending and retried by the periodic rescan and on interface/addr-added. The OSPFv3 packet checksum is the IPv6 upper-layer checksum over a pseudo-header that includes the IPv6 source and destination (RFC 5340), so the transport finalizes it from the egress link-local source on transmit. OSPFv3 sends with IPv6 Hop Limit 1, matching FRR ospf6d.
area-type selects normal, stub, or nssa. A stub or NSSA area can set default-cost (the injected default metric) and no-summary true for a totally-stubby or totally-NSSA area.
A stub area carries no AS-External information. The E-bit is clear in every Hello and Router-LSA originated within it (a Hello whose E-bit does not match is dropped and no adjacency forms), Type 4 ASBR-Summary and Type 5 AS-External LSAs are neither accepted from nor flooded into the area, and each attached ABR injects a single Type 3 default (0.0.0.0/0; OSPFv3 injects the equivalent ::/0 as an Inter-Area-Prefix-LSA) at the configured default-cost. A totally-stubby area (no-summary true) additionally suppresses every inter-area Type 3 summary except that default, so a spoke holds only intra-area routes plus one default.
An NSSA (area-type nssa, RFC 3101) is stub-like but permits local external redistribution. The N-bit must match between neighbours (the E-bit stays clear as in a stub). An NSSA ASBR originates Type 7 / NSSA LSAs for the routes it redistributes. In OSPFv3 the P-bit lives in the prefix options and a non-zero IPv6 forwarding address is carried in the external body. A router that cannot inject a Type 5 directly sets the P-bit so its Type 7 is translatable; one that can clears it. The ABR may also originate a Type 7 default (nssa { default-originate true }).
ospf {
router-id 10.0.0.1
areas {
area 0.0.0.0 {
area-type normal
}
area 0.0.0.9 {
area-type nssa
no-summary true
default-cost 20
nssa {
translate-role candidate
stability-interval 40
default-originate true
}
}
}
interfaces {
interface eth0 { area 0.0.0.0 }
interface eth1 { area 0.0.0.9 }
}
}
Among the ABRs attached to an NSSA, exactly one is elected the Type 7 to Type 5 translator (RFC 3101 section 3.5): the translator-candidate ABR with the highest Router ID. Each ABR whose role is not never advertises the Nt-bit in its Router-LSA to stand as a candidate. A never ABR clears the Nt-bit and is excluded, so it cannot wedge translation off for a willing lower-Router-ID candidate. The role is configurable per area (nssa { translate-role candidate|always|never }) and is sticky across a stability-interval (default 40 seconds).
The elected translator re-originates each P=1, non-zero forwarding-address Type 7 as a Type 5 onto the backbone (P cleared, Advertising Router set to the translator, forwarding address / metric / tag preserved), counted by ze_ospf_nssa_translations_total{area}. A non-elected ABR does not translate, so no duplicate Type 5 reaches the backbone. When the same external prefix is known via a Type 7 (P=1), a Type 5, and a Type 7 (P=0), the route computation prefers them in that order (RFC 3101 section 2.5).
A router becomes an AS Boundary Router (ASBR) when it originates external LSAs, either by redistributing routes from another protocol or through default-information originate. The ASBR and ABR roles are independent. OSPFv2 uses Type 5 AS-External-LSAs; OSPFv3 uses AS-External-LSAs (0x4005) in normal areas and NSSA-LSAs (0x2007) in attached NSSA areas. AS-scoped Type 5 / 0x4005 LSAs live in an AS-wide store, separate from the per-area LSDBs.
Redistribution uses the shared redistribute orchestrator. The ospf container sets the per-source external metric, metric-type (type-1 / type-2), and route tag. The top-level redistribute block enrols the actual route flow:
-
redistribute { destination ospf { import connected static bgp } }injects each accepted route as an external LSA in the configured address family (Type 5 for IPv4, AS-External-LSA for normal IPv6 areas, NSSA-LSA for attached IPv6 NSSA areas). -
redistribute { destination bgp { import ospf } }exports OSPF-selected routes back into BGP.
import ospf into OSPF itself is a runtime no-op (loop prevention: the import source equals the importing protocol). An unenrolled source falls back to metric 20, type-2. The source list accepts connected, static, kernel, bgp, and isis.
ospf {
router-id 10.0.0.1
default-information {
originate true
always false
metric 10
metric-type type-2
}
redistribute {
connected {
metric 20
metric-type type-2
tag 100
}
static {
}
}
areas { area 0.0.0.0 { } }
interfaces { interface eth0 { area 0.0.0.0 } }
}
redistribute {
destination ospf {
import connected
import static
import bgp
}
destination bgp {
import ospf
}
}
Received external LSAs are resolved by the external SPF stage, which runs after the intra-area and inter-area route tables are built. Each external is resolved against its ASBR (or a non-zero forwarding address, re-resolved through the route table; unreachable externals are skipped).
| Metric type | Cost formula | Tie-break |
|---|---|---|
| Type 1 (E1) | distance to the forwarding target plus the advertised metric | shortest path wins |
| Type 2 (E2) | the advertised metric only | the forwarding distance |
A Type 1 external always wins over a Type 2 regardless of cost, and any external ranks below an intra-area or inter-area route for the same prefix. Unlike IS-IS, OSPF externals carry an explicit metric type, so E1 routes accumulate the IGP distance while E2 routes do not.
default-information originate advertises a Type 5 default (0.0.0.0/0). With always true it originates unconditionally; with always false it originates only while a non-OSPF default route exists in the Loc-RIB (OSPF's own default does not satisfy the condition). The engine re-evaluates the condition at config-apply and live on Loc-RIB default-route changes, withdrawing the Type 5 when the condition lapses.
OSPFv3 Link-LSAs (0x0008) are stored in a link-scoped LSDB keyed by the receiving interface, not in the area or AS-wide stores. Ze originates one self Link-LSA per active OSPFv3 interface, carrying the interface link-local address and the routable IPv6 prefixes, floods it only on that link, and releases the link store when the interface is removed. During database exchange, link-scoped LSAs participate in DD summaries and LS Request lookup using the interface context.
The OSPFv3 family can carry several address families over one link, each as a separate OSPFv3 instance distinguished by its Instance ID range: IPv6-unicast 0-31, IPv6-multicast 32-63, IPv4-unicast 64-95, IPv4-multicast 96-127. Configure each under ospf { address-family { <af> { instance-id N; areas {...} interfaces {...} } } }, where <af> is ipv6-unicast (or the bare ipv6), ipv6-multicast, ipv4-unicast, or ipv4-multicast. The Instance ID must fall inside the chosen AF's range. Each configured AF runs its own engine instance with a private LSDB, neighbor table, SPF, and Loc-RIB install family.
A router running more than one address family sets the AF-bit in its Hello and DD Options; a non-default AF requires the AF-bit to form an adjacency, while the default IPv6-unicast AF ignores a missing AF-bit for backward interoperability (so a lone IPv6-unicast instance keeps the same on-wire bytes and peers with a legacy ospf6d). IPv4-over-OSPFv3 (Instance ID 64-95) carries a 0-32-bit IPv4 prefix and derives its next-hop from the IPv6 link-local adjacency. show ospf ipv6 lists each running AF instance with its address family and Instance ID.
Several independent OSPFv2 instances can coexist on one physical interface or subnet. RFC 6549 carves an 8-bit Instance ID out of the OSPFv2 common header. Ze runs one full OSPFv2 engine per configured Instance ID (its own LSDB, SPF, and neighbor table), demultiplexed by the Instance ID: a packet whose Instance ID does not match the receiving engine is discarded before any handler runs, so neighbours only form within a matching instance.
An interface joins one or more instances with the per-interface instance-id leaf-list; absent, it belongs to base instance 0, which is bit-for-bit identical to base OSPFv2 (so a router with no multi-instance config interoperates unchanged with a legacy peer). The Instance ID has local subnet significance only: it lives in the packet header, is never carried in an LSA, and is never compared across links.
ospf {
interfaces {
interface eth0 {
area 0.0.0.0
instance-id 0
instance-id 5
}
}
}
show ospf instance lists each configured instance with its Instance ID and the size of its isolated area/interface/neighbour/database state. The demux exposes ze_ospf_instances and ze_ospf_instance_mismatch_drops_total{interface}.
A virtual link (RFC 2328 for IPv4, RFC 5340 for IPv6) is a logical unnumbered point-to-point link that belongs to the backbone but runs through a non-backbone transit area between two area-border routers. It repairs a partitioned backbone or attaches a remote area to Area 0. Configure it under the transit area on both endpoints, keyed by the far endpoint's Router ID:
ospf {
router-id 10.0.0.1
areas {
area 0.0.0.1 {
virtual-link 10.0.0.2 {
hello-interval 10
dead-interval 40
retransmit-interval 5
transmit-delay 1
}
}
}
}
The transit area must be declared and must not be the backbone, a stub, or (for IPv6) an NSSA; the router must be an ABR; and the remote Router ID must not be this router's own. These are rejected at config validation. The cost is never configured: it is the transit area's intra-area SPF path cost to the neighbour, recomputed every SPF run. When the neighbour reaches Full, the endpoint originates the virtual link into its backbone Router-LSA and sets the V-bit in the transit area's Router-LSA. Virtual-link packets are routed across the transit area, not link-local. Inspect them with show ospf virtual-links. The IPv6 family carries its own list under address-family ipv6.
Ze implements OSPF Segment Routing over the MPLS data plane as one feature across both families. The IPv4 family (OSPFv2, RFC 8665) rides SR TLVs in the Router Information and Extended Prefix/Link opaque LSAs; the IPv6 family (OSPFv3, RFC 8666) rides them in the OSPFv3 RI Opaque LSA and the RFC 8362 Extended LSAs. Both share the SRGB/SRLB label ranges, the index-to-label arithmetic, and the install through the shared mpls-fib bus. SR is off by default and requires opaque true.
ospf {
router-id 10.0.0.1
opaque true
segment-routing {
enable true
srgb { lower-bound 16000; upper-bound 23999; }
srlb { lower-bound 40000; upper-bound 40999; }
prefix-sid 10.0.0.1/32 { index 1; node-sid true; }
}
address-family {
ipv6 {
segment-routing { enable true; srgb { lower-bound 16000; upper-bound 23999; } }
}
}
}
When enabled, the RI LSA advertises SR-Algorithm 0 plus the SRGB/SRLB, the Extended Prefix LSA carries a Prefix-SID for each configured node prefix, and the Extended Link LSA carries an Adjacency-SID (and a LAN-Adjacency-SID on broadcast/NBMA) for each adjacency in 2-Way or higher. On reception Ze computes the outgoing MPLS label for a reachable Prefix-SID and applies the next-hop's NP/E/M push/swap/PHP flags. Forwarding is programmed through the mpls-fib bus (source tags OSPF-SR for IPv4, OSPFv3-SR for IPv6). show ospf segment-routing and show ospf ipv6 segment-routing render the configured ranges, advertised algorithm, this node's Prefix-SIDs, and the allocated Adjacency-SIDs. The doctor-ospf-segment-routing-overlap check reports an SRGB/SRLB overlap before install. Metrics are the ze_ospf_sr_* series, each carrying an af label.
Ze implements the OSPFv2 Traffic Engineering LSA as a consumer of the opaque-LSA carrier (Opaque type 1 for intra-area TE, Opaque type 6 for inter-AS TE). TE is not a routing change: the LSAs flood by scope and feed a passive Traffic Engineering Database (TED) that never triggers SPF. It requires opaque true and a stable TE router-address.
ospf {
opaque true
router-address 10.0.0.1
interfaces {
interface eth0 {
area 0.0.0.0
traffic-engineering {
enable true
te-metric 100
max-bandwidth 1250000000 # bytes/second
max-reservable-bandwidth 1000000000 # bytes/second
admin-group 5 # 32-bit mask, LSB = group 0
}
}
}
}
The TE metric is independent of the OSPF cost and defaults to it when unset. An inter-AS TE link (RFC 5392) is a proxied advertisement with no adjacency on the link; configure it with an inter-as sub-block carrying the remote AS (required) and at least one remote ASBR ID, and a flooding scope of area (Type 10) or as (Type 11, AS-wide). show ospf te-database renders the TED; show ospf database opaque-area / opaque-as decode any TE LSA body inline. Metrics are the ze_ospf_te_* series. CSPF and RSVP-TE signalling are out of scope.
Fast reroute pre-computes a loop-free backup next-hop alongside each primary, so a single local link or node failure is repaired locally the instant it is detected, before the IGP reconverges. It changes no OSPF packet on the wire and is off by default.
ospf {
fast-reroute {
enable true
mode ti-lfa # lfa (default) or ti-lfa
node-protection true # prefer node-protecting alternates
}
}
Base LFA (RFC 5286) selects, per primary next-hop, a directly-connected neighbour that satisfies the loop-free inequality, preferring node-protecting over link-protecting alternates. TI-LFA (mode ti-lfa) adds a fallback where no directly-connected LFA exists: it computes the post-convergence SPF and builds a Segment Routing repair label stack, giving full single-failure coverage on the post-convergence path. TI-LFA repair labels require Segment Routing and are IPv4-only; OSPFv3 gets base-LFA next-hop selection through the same seam. In multi-area topologies where the local-area SPF cannot see the real path (an inter-area prefix via more than one ABR, an external via more than one ASBR, or the backbone with virtual links), the LFA is suppressed rather than installed wrong. show ospf route fast-reroute lists each prefix's backup next-hop, protection class (node/link/downstream), and TI-LFA repair label stack. On Linux the backup is programmed as a link-down multipath next-hop carrying the repair MPLS encap, so the kernel forwards to it only when the primary link is down. Metrics are the ze_ospf_fast_reroute_* series.
Graceful Restart lets Ze restart or reload its OSPF control software while staying on the forwarding path (non-stop forwarding). It is one feature across both families; only the Grace-LSA wire object differs (OSPFv2 carries it as a link-local Type-9 Opaque LSA, OSPFv3 as a native link-scope LSA). Configure it under a single family-neutral graceful-restart container (a top-level container drives both families unless the OSPFv3 family sets its own):
ospf {
graceful-restart {
restarter {
support planned # disabled (default), planned, or planned-and-unplanned
restart-interval 120 # grace period, 1..1800 s
}
helper {
support true # default
strict-lsa-checking true # default
}
}
}
As the restarting router Ze ensures the FIB is current, originates one Grace-LSA per interface, persists the restart fact to non-volatile storage, and stops without withdrawing routes. On resume it suppresses self-LSA origination and route install, retains the pre-restart kernel routes, and exits on the earliest of the three RFC 3623 triggers (all pre-restart adjacencies re-reach Full, an inconsistent LSA is received, or the grace period expires). As a helper it keeps advertising the adjacency to a restarting neighbour until the Grace-LSA is flushed, the grace period expires, or (with strict LSA checking) a topology change would have flooded to the restarter. With GR disabled (the default) Ze originates no Grace-LSA and restarts as a router without the feature. show ospf graceful-restart and show ospf ipv6 graceful-restart report per-family restarter and helper state; doctor-ospf-graceful-restart-nvs warns when the non-volatile store is unwritable. Metrics are the ze_ospf_gr_* series.
Single-hop BFD can be enabled per interface in both families. When a neighbour reaches Full, Ze opens a single-hop BFD session (an IPv6 link-local pair for OSPFv3); a BFD-detected failure declares the neighbour down far faster than the router-dead interval, and OSPF otherwise runs on the Hello/Dead timers.
ospf {
interfaces {
interface eth0 {
area 0.0.0.0
bfd {
enabled true
min-tx 50 # ms
min-rx 50 # ms
multiplier 3
}
}
}
}
BFD is driven through the shared bfd plugin over the event bus. If that plugin is not loaded, OSPF still forms adjacencies on the Hello/Dead timers and ze doctor reports doctor-ospf-bfd-plugin-absent. The session state is annotated onto each neighbour in show ospf neighbor. Metrics: ze_ospf_bfd_sessions, ze_ospf_bfd_session_down_total, ze_ospf_bfd_register_failures_total.
LDP-IGP synchronization holds a link at maximum cost (point-to-point) or withholds its transit link (broadcast, non-cut-edge) until LDP is synchronized, so transit traffic is not black-holed before the label bindings exist. It is a local metric-origination mechanism that adds no wire format, and it works in both families through the shared interface model.
ospf {
interfaces {
interface eth0 {
area 0.0.0.0
ldp-sync {
enable true
holddown 10 # seconds to wait after the LDP session is up
}
}
}
}
The per-interface state machine holds the link not-synchronized until LDP signals the session is up, waits out the holddown estimate that all bindings are exchanged, then restores the configured cost. The coupling to LDP is only over the event bus, so removing the LDP plugin leaves OSPF compiling and an ldp-sync interface simply stays not-synchronized. show ospf ldp-sync lists each interface with its state (not-synchronized / hold-down / synchronized), remaining hold-down, and effective metric. Metrics: ze_ospf_ldp_sync_state, ze_ospf_ldp_sync_transitions_total, ze_ospf_ldp_sync_holddown_expired_total, ze_ospf_ldp_sync_costout_seconds.
OSPFv2 packets can be authenticated per interface with a named key chain (RFC 2328 Appendix D, RFC 5709, RFC 7474). The scheme is selected by the key algorithm and the chain's extended-sequence flag.
| AuType | Scheme | Selected by |
|---|---|---|
| 0 | None | no chain bound |
| 1 | Simple 8-byte cleartext password | algorithm simple |
| 2 | Keyed-MD5 or HMAC-SHA-1/256/384/512 |
algorithm md5 / hmac-sha-*, extended-sequence false
|
| 3 | Same HMAC-SHA algorithms with a 64-bit extended cryptographic sequence number |
algorithm hmac-sha-*, extended-sequence true
|
Every outgoing packet is signed and every incoming packet is verified before it reaches the ISM/NSM/LSDB. A packet that fails is dropped before any protocol processing and increments ze_ospf_auth_failures_total{interface,reason}. All digest and password comparisons are constant-time. The cryptographic sequence number is non-decreasing per neighbour, key-id, and packet type, so a replayed packet is rejected; the send counter is seeded from a monotonic clock so it does not regress across a restart. For AuType 3 the IP source address is bound into the digest (RFC 7474), so a spoofed source fails verification.
Keys are organised as named chains for hitless rotation: a chain holds multiple keys, the first signs, and any chain key is accepted on receive during the overlap window. Bind a chain to an interface directly, or set the interface authentication { mode inherit } so it uses the chain bound to its area. Secrets are stored $9$-encoded and never appear in plaintext in show configuration or backups.
ospf {
router-id 10.0.0.1
key-chains core {
extended-sequence true
key 1 {
algorithm hmac-sha-256
secret $9$encoded
}
}
areas {
area 0.0.0.0 {
authentication { key-chain core }
}
}
interfaces {
interface eth0 {
area 0.0.0.0
authentication { mode inherit }
}
}
}
OSPFv3 packets can carry an RFC 7166 Authentication Trailer; when its signer is installed the OSPFv3 packet checksum is left zero and the trailer provides integrity.
An OSPFv3 interface can instead be protected with manual-keyed IPsec (RFC 4552), a path distinct from the RFC 7166 authentication trailer and mutually exclusive with a per-interface key chain. On interface up Ze installs a transport-mode kernel Security Association plus a protocol-89 policy scoped to that interface; the kernel then applies AH or ESP below the socket and silently discards unprotected or failed-integrity OSPF packets. RFC 4552 uses manual keying only (IKE cannot key the multicast group), so one shared key and SPI protect both directions.
ospf {
address-family ipv6 {
interfaces {
interface eth0 {
area 0.0.0.0
ipsec {
spi 256
protocol esp # esp (default) or ah
algorithm sha256 # sha1 / sha256 / sha384 / sha512
key <hex>
# optional ESP confidentiality:
encryption-algorithm aes256 # null / aes128 / aes256
encryption-key <hex>
}
}
}
}
}
Each IPsec interface needs a unique SPI (256 or higher; 0-255 are reserved). Per-interface IPsec status (configured, protocol) appears in show ospf ipv6 interface. Metrics: ze_ospfv3_ipsec_sas, ze_ospfv3_ipsec_policies, ze_ospfv3_ipsec_install_failures_total, ze_ospfv3_ipsec_kernel_drops_total.
The neighbor and database views are available in the web UI, with live updates over SSE.
| URL | Purpose |
|---|---|
/ospf |
OSPF process and neighbor view. |
/ospf/database |
LSDB browser, live SSE updates. |
Operational state is available through the show ospf command tree.
| Command | Output |
|---|---|
show ospf |
Process summary: router-id, ABR/ASBR status, areas, and the active stub-router / max-metric state. |
show ospf instance |
Each configured multi-instance (RFC 6549) engine with its Instance ID and isolated state size. |
show ospf neighbor |
Neighbour adjacencies and their states, including BFD session state. |
show ospf interface |
Per-interface OSPF state, including NBMA neighbor and poll state. |
show ospf database [router|network|summary|asbr-summary|external|nssa-external] |
Every LSA, or one LS Type (1/2/3/4/5/7) filtered view. |
show ospf database [opaque-link|opaque-area|opaque-as|router-information] |
Opaque LSAs by scope (Type 9/10/11) and the RFC 7770 Router Information LSAs, with TE / RI / Extended / SR bodies decoded inline. |
show ospf route [fast-reroute] |
Route table; fast-reroute adds each prefix's backup next-hop, protection class, and TI-LFA repair label stack. |
show ospf spf |
Per-area SPF run state: last run time, duration, node count, pending state, current throttle delay. |
show ospf border-routers |
Reachable ABRs and ASBRs with area, metric, and next-hop set. |
show ospf virtual-links |
Configured virtual links with transit area, remote router-id, adjacency state, and computed cost. |
show ospf te-database |
RFC 3630 / RFC 5392 Traffic Engineering Database. |
show ospf segment-routing |
Configured SRGB/SRLB, advertised algorithm, Prefix-SIDs, and Adjacency-SIDs. |
show ospf graceful-restart |
Restarter and helper state. |
show ospf ldp-sync |
Per-interface LDP-IGP synchronization state. |
show ospf ipv6 ... |
The OSPFv3 (IPv6-family) equivalents: interface, neighbor, database, spf, instance, graceful-restart, segment-routing. Per-interface RFC 4552 IPsec status appears in show ospf ipv6 interface. |
The runtime can be reset without reconfiguring:
| Command | Effect |
|---|---|
clear ospf process |
Tear down adjacencies and re-run SPF. |
clear ospf neighbor |
Re-form adjacencies. |
clear ospf counters |
Reset the SPF-run log. |
- Redistribution for the cross-protocol import/export model OSPF shares with BGP and IS-IS.
- FIB for the Loc-RIB to sysrib to fibkernel installation path.
- BFD for sub-second forwarding-failure detection.
-
Web UI for the browser surfaces, including
/ospf. - Plugins for the plugin list.
Adapted from docs/guide/ospf.md.
Unreviewed draft. This wiki was authored in bulk and has not been reviewed. File corrections on the issue tracker.
- Overview
- YANG Model
- Editor Workflow
- Archive and Rollback
- System
- Interfaces
- VRRP
- BFD
- FIB
- OSPF
- IS-IS
- MPLS / LDP / RSVP-TE
- RSVP-TE
- SRv6
- Static Routes
- Policy Routing
- Firewall
- Traffic Control
- Class of Service
- L2TP/PPP
- PPPoE
- VPP Data Plane
- RPKI
- IPsec VPN
- TACACS+ AAA
- RADIUS AAA
- AS112 DNS
- Authorization
- Fleet
- BGP
- Starting and Stopping
- Show Commands
- Monitoring
- Flow Export
- DDoS Mitigation
- Anomaly Detection
- Health Checks
- Audit Trail
- Production Diagnostics
- Logging
- Operational Reports
- Healthcheck
- Self-Update
- Zero-Touch Provisioning
- MRT Analysis
- Upgrade and Restart
- Storage
- Policy
- Core
- Resilience
- Validation
- Capabilities
- Address Families
- Protocol
- Subsystems
- Infrastructure
- Route Server at an IXP
- Transit Edge with RPKI
- Public Looking Glass
- ExaBGP Migration Walkthrough
- FlowSpec Injection
- Chaos-Tested Peering
- AS Path Topology