OSPFv2
netverdict models OSPFv2 as a deterministic routing protocol, not as a vendor router binary. The goal is to answer practical questions:
- Will these routers form neighbours?
- Which router becomes DR or BDR?
- Which routes are intra-area, inter-area, or external?
- What changes when an ABR summarizes, a stub area blocks externals, or a virtual link is added?
Support level
Section titled “Support level”| Area | Level | What this means |
|---|---|---|
| Single-area OSPFv2 | Supported | Neighbours, router IDs, OSPF routes, interface costs, timers, passive interfaces. |
| Multi-area OSPFv2 | Supported | ABR detection, area 0 backbone rules, Type-3 inter-area route projection. |
| Broadcast segments | Supported | DR / BDR election with priority and router-id tie-breaks. |
| Stub areas | Supported | Stub and totally-stubby behaviour, including ABR default route injection. |
| NSSA | Supported | NSSA and totally-NSSA route behaviour, including Type-7-style local external handling and ABR projection. |
| ABR summarisation | Supported | area <id> range, not-advertise, and cost override. |
| Virtual links | Supported | ABR-to-ABR logical area-0 adjacency through a non-stub transit area. |
| Static redistribution | Supported | Static routes become OSPF external routes; E1 / E2 metric type is tracked. |
| OSPF authentication | Partial | MD5 configuration is parsed and adjacency mismatch is modelled. Packet-level cryptographic fidelity is not the goal. |
| Packet fidelity | Partial | PCAP export writes OSPFv2 Hello and LSU-shaped packets. The simulator does not replay every LSA exchange packet. |
Standards coverage
Section titled “Standards coverage”| Standard | Coverage | Notes |
|---|---|---|
| RFC 2328, OSPF Version 2 | Behaviour model | Core OSPFv2 concepts: areas, router IDs, Hello timers, DR / BDR election, SPF route computation, Type-3 summaries, virtual links, external routes. |
| RFC 2328 section 9.4 | Supported | DR / BDR election uses priority first and router ID as deterministic tie-break. Priority 0 prevents DR / BDR eligibility. |
| RFC 2328 section 12.4.3 | Supported | ABR summary range behaviour for area <id> range: covered components are suppressed and one summary may be advertised. |
| RFC 2328 section 15.1 | Supported | Virtual links are validated against ABR and transit-area constraints. Stub-family transit areas are rejected. |
| RFC 2328 appendix D | Partial | Area and interface MD5 authentication settings are accepted. Authentication mismatch prevents adjacency. |
| RFC 3101, NSSA | Behaviour model | NSSA and totally-NSSA area types are modelled for routing behaviour. |
| RFC 5880, BFD | Integration | OSPF can be gated by BFD with ip ospf bfd or bfd all-interfaces. BFD itself is modelled separately. |
| RFC 5340, OSPFv3 | Separate page | OSPFv3 exists as a separate IPv6 model and is not covered by this OSPFv2 matrix. |
Feature matrix
Section titled “Feature matrix”| Feature | Status | Notes |
|---|---|---|
router ospf <pid> | Supported | One process per device in the global VRF. |
| Router ID selection | Supported | Explicit router-id; otherwise highest interface IP at startup. |
network <prefix> <wildcard> area <id> | Supported | Cisco-style network statements bind IPv4 interfaces to areas. |
| Dotted area IDs | Supported | Accepted in Cisco-style CLI where implemented. |
| Hello packets | Supported | Simulated on deterministic timers, not wall-clock timers. |
| Hello / dead timer mismatch | Supported | Mismatched neighbours do not form; mismatch is surfaced as an event. |
| Passive interfaces | Supported | passive-interface <name> and passive-interface default. |
| Interface cost | Supported | ip ospf cost <cost> participates in route computation. |
| Interface priority | Supported | ip ospf priority <0-255> controls DR / BDR election. |
| DR / BDR election | Supported | Deterministic election on broadcast multi-access segments. |
| Point-to-point adjacency | Supported | Modelled through shared links and interface area membership. |
| Router LSAs | Behaviour model | Internal LSDB state is modelled for route computation and show output. |
| Network LSAs | Behaviour model | Broadcast transit segments are represented for SPF behaviour. |
| Summary LSAs | Behaviour model | Type-3 inter-area route projection is modelled at ABRs. |
| External LSAs | Behaviour model | Redistributed statics are projected as external routes. |
| E1 / E2 metric type | Supported | redistribute static metric-type 1 or 2; E2 is the default. |
| Stub area | Supported | Blocks external routes and injects a default from the ABR. |
| Totally-stubby area | Supported | Blocks external and inter-area routes; default remains. |
| NSSA | Supported | Allows local external injection while preserving stub-like area behaviour. |
| Totally-NSSA | Supported | NSSA plus inter-area suppression. |
| Area default cost | Supported | area <id> default-cost <cost> changes the injected default metric. |
| Area range | Supported | area <id> range <network> <mask>. |
Area range not-advertise | Supported | Suppresses covered prefixes and does not emit the summary. |
Area range cost | Supported | Explicit summary cost override. |
| Virtual links | Supported | area <transit> virtual-link <remote-router-id>. |
| Virtual-link cost | Supported | Optional explicit cost. |
| Virtual-link auth mode | Configured | Accepted and emitted; packet-level auth exchange is simplified. |
maximum-paths | Supported | Limits equal-cost OSPF paths installed into the RIB. |
default-information originate | Supported | Advertises a default route when enabled. Optional always is accepted as equivalent. |
auto-cost reference-bandwidth | Stored | Accepted and emitted. Current route calculation still relies on configured/static interface costs. |
redistribute bgp ... | Import fidelity | Grammar is accepted for imported configs; behaviour focus is static redistribution today. |
| Graceful restart | Not modelled | Planned for later production-behaviour coverage. |
| Opaque LSAs / traffic engineering | Not modelled | Not part of the current OSPF training surface. |
Vendor command matrix
Section titled “Vendor command matrix”| Command | IOS-style | Junos-style | VyOS-style | Notes |
|---|---|---|---|---|
router ospf 1 | Supported | n/a | n/a | Cisco-family process mode. |
router-id 1.1.1.1 | Supported | Supported | Supported | Junos / VyOS map to the same canonical OSPF router ID. |
network 10.0.0.0 0.0.0.255 area 0 | Supported | n/a | n/a | Cisco-style interface selection. |
set protocols ospf area 0 interface ge-0/0/0 | n/a | Supported | n/a | Junos-style interface-to-area binding. |
set protocols ospf area 0 interface ge-0/0/0 metric 25 | n/a | Supported | n/a | Commits into canonical interface OSPF cost. |
set protocols ospf area 0 interface ge-0/0/0 hello-interval 5 | n/a | Supported | n/a | Commits into canonical hello timer. |
set protocols ospf area 0 interface ge-0/0/0 dead-interval 20 | n/a | Supported | n/a | Commits into canonical dead timer. |
set protocols ospf area 0 interface ge-0/0/0 priority 0 | n/a | Supported | n/a | Commits into DR/BDR priority. |
set protocols ospf area 0 interface ge-0/0/0 passive | n/a | Supported | n/a | Adds interface to passive OSPF set. |
set protocols ospf area 0 interface ge-0/0/0 bfd-liveness-detection | n/a | Supported | n/a | Enables OSPF BFD gating. |
set protocols ospf area 0 network 10.0.0.0/24 | n/a | n/a | Supported | VyOS-style area network syntax. |
passive-interface default | Supported | Partial | Supported | Canonical passive-default is supported; vendor surfaces vary. |
passive-interface GigabitEthernet0/0 | Supported | Partial | Supported | Vendor import maps to canonical passive interfaces where available. |
ip ospf priority 200 | Supported | n/a | n/a | Controls DR / BDR election. |
ip ospf cost 20 | Supported | Partial | Partial | Canonical interface cost is supported; vendor syntax differs. |
ip ospf hello-interval 5 | Supported | Not yet | Not yet | Cisco-style per-interface timer override. |
ip ospf dead-interval 20 | Supported | Not yet | Not yet | Must be greater than hello interval. |
ip ospf message-digest-key 1 md5 secret | Partial | Not yet | Not yet | Auth mismatch affects adjacency; cryptographic packet fidelity is simplified. |
area 1 stub | Supported | Not yet | Supported | Blocks Type-5 external routes and injects default. |
area 1 stub no-summary | Supported | Not yet | Not yet | Totally-stubby behaviour. |
area 1 nssa | Supported | Not yet | Supported | NSSA route behaviour is modelled. |
area 1 nssa no-summary | Supported | Not yet | Not yet | Totally-NSSA behaviour. |
area 1 range 10.0.0.0 255.255.0.0 | Supported | Not yet | Not yet | ABR Type-3 summarisation. |
area 1 virtual-link 2.2.2.2 | Supported | Not yet | Not yet | Logical area-0 adjacency through transit area. |
redistribute static | Supported | Partial | Supported | Static redistribution into OSPF. |
redistribute static route-map NAME | Supported | Not yet | Not yet | Route-map can filter redistributed static routes. |
bfd all-interfaces | Supported | Not yet | Not yet | Enables BFD gating for all OSPF interfaces. |
ip ospf bfd | Supported | Not yet | Not yet | Enables BFD gating per interface. |
show ip ospf | Supported | Supported view | n/a | Shows process and area state from canonical runtime. |
show ip ospf neighbor | Supported | Supported view | Supported | Neighbour table from runtime state. |
show ip ospf database | Supported | Supported view | n/a | LSDB-oriented view. |
show ip ospf border-routers | Supported | n/a | n/a | ABR / ASBR visibility. |
show ip ospf virtual-links | Supported | n/a | n/a | Virtual-link state and reason when down. |
Behaviour notes
Section titled “Behaviour notes”OSPF in netverdict is replay-oriented. Timers are simulated events, not wall-clock sleeps. Running the same topology and the same commands should produce the same neighbour states and route tables.
SPF is deterministic. When multiple equal-cost candidates exist, the engine uses stable ordering so a replay does not drift between runs.
Broadcast network DR / BDR election follows the OSPF priority rule first,
then router ID. The bundled DR lab deliberately uses router IDs 1.1.1.1,
2.2.2.2, and 3.3.3.3 so the default outcome is easy to inspect before
changing priority.
ABR summarisation is modelled at the area boundary. With
area 1 range 10.0.0.0 255.255.0.0, more-specific area-1 components are
suppressed when leaving area 1, and the ABR emits the configured summary
unless not-advertise is present.
Virtual links are modelled as logical area-0 links between ABRs. They require
a valid non-stub transit area. If the transit area is stub-family, the virtual
link stays down and show ip ospf virtual-links reports the reason.
Examples
Section titled “Examples”Basic single-area OSPF
configure terminalrouter ospf 1 router-id 1.1.1.1 network 10.0.12.0 0.0.0.3 area 0 network 1.1.1.1 0.0.0.0 area 0endshow ip ospf neighborshow ip routeVendor styles
IOS-style
router ospf 1 router-id 1.1.1.1 network 10.0.12.0 0.0.0.3 area 0 network 10.0.1.0 0.0.0.255 area 1 area 1 stub no-summaryJunos-style
set routing-options router-id 1.1.1.1set protocols ospf area 0 interface ge-0/0/0.0set protocols ospf area 1 stubset protocols ospf area 1 interface ge-0/0/1.0VyOS-style
set protocols ospf parameters router-id 1.1.1.1set protocols ospf area 0 network 10.0.12.0/30set protocols ospf area 1 network 10.0.1.0/24set protocols ospf area 1 area-type stubForce a DR election outcome
configure terminalinterface GigabitEthernet0/0 ip ospf priority 200endclear ip ospf processshow ip ospf neighborSummarise area routes at an ABR
configure terminalrouter ospf 1 area 1 range 10.0.0.0 255.255.0.0endshow ip ospf databaseshow ip routeBuild a virtual link through area 1
On the ABR connected to area 0:
configure terminalrouter ospf 1 area 1 virtual-link 3.3.3.3endshow ip ospf virtual-linksOn the remote ABR:
configure terminalrouter ospf 1 area 1 virtual-link 2.2.2.2endshow ip ospf virtual-linksRunnable labs
Section titled “Runnable labs”| Lab | Covers | Link |
|---|---|---|
| OSPF DR / BDR election | Broadcast segments, priority, router-id tie-break | Open lab |
| OSPF multi-area ABR | Area 0, non-zero areas, ABR Type-3 projection | Open lab |
| OSPF area range | ABR summarisation with area <id> range | Open lab |
| OSPF virtual link | Logical area-0 adjacency through transit area | Open lab |
Known limits
Section titled “Known limits”netverdict intentionally separates routing behaviour from full packet-level vendor emulation.
The current OSPFv2 model does not implement graceful restart, opaque LSAs, traffic-engineering LSAs, vendor-specific SPF throttling, or exact vendor debug output. PCAP export is useful for inspection, but it is not a guarantee that every byte matches a specific router release.
Use the page as a support contract for the simulator, not as a claim that netverdict is a drop-in replacement for IOS, Junos, FRR, or VyOS.