Skip to content

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?
AreaLevelWhat this means
Single-area OSPFv2SupportedNeighbours, router IDs, OSPF routes, interface costs, timers, passive interfaces.
Multi-area OSPFv2SupportedABR detection, area 0 backbone rules, Type-3 inter-area route projection.
Broadcast segmentsSupportedDR / BDR election with priority and router-id tie-breaks.
Stub areasSupportedStub and totally-stubby behaviour, including ABR default route injection.
NSSASupportedNSSA and totally-NSSA route behaviour, including Type-7-style local external handling and ABR projection.
ABR summarisationSupportedarea <id> range, not-advertise, and cost override.
Virtual linksSupportedABR-to-ABR logical area-0 adjacency through a non-stub transit area.
Static redistributionSupportedStatic routes become OSPF external routes; E1 / E2 metric type is tracked.
OSPF authenticationPartialMD5 configuration is parsed and adjacency mismatch is modelled. Packet-level cryptographic fidelity is not the goal.
Packet fidelityPartialPCAP export writes OSPFv2 Hello and LSU-shaped packets. The simulator does not replay every LSA exchange packet.
StandardCoverageNotes
RFC 2328, OSPF Version 2Behaviour modelCore OSPFv2 concepts: areas, router IDs, Hello timers, DR / BDR election, SPF route computation, Type-3 summaries, virtual links, external routes.
RFC 2328 section 9.4SupportedDR / BDR election uses priority first and router ID as deterministic tie-break. Priority 0 prevents DR / BDR eligibility.
RFC 2328 section 12.4.3SupportedABR summary range behaviour for area <id> range: covered components are suppressed and one summary may be advertised.
RFC 2328 section 15.1SupportedVirtual links are validated against ABR and transit-area constraints. Stub-family transit areas are rejected.
RFC 2328 appendix DPartialArea and interface MD5 authentication settings are accepted. Authentication mismatch prevents adjacency.
RFC 3101, NSSABehaviour modelNSSA and totally-NSSA area types are modelled for routing behaviour.
RFC 5880, BFDIntegrationOSPF can be gated by BFD with ip ospf bfd or bfd all-interfaces. BFD itself is modelled separately.
RFC 5340, OSPFv3Separate pageOSPFv3 exists as a separate IPv6 model and is not covered by this OSPFv2 matrix.
FeatureStatusNotes
router ospf <pid>SupportedOne process per device in the global VRF.
Router ID selectionSupportedExplicit router-id; otherwise highest interface IP at startup.
network <prefix> <wildcard> area <id>SupportedCisco-style network statements bind IPv4 interfaces to areas.
Dotted area IDsSupportedAccepted in Cisco-style CLI where implemented.
Hello packetsSupportedSimulated on deterministic timers, not wall-clock timers.
Hello / dead timer mismatchSupportedMismatched neighbours do not form; mismatch is surfaced as an event.
Passive interfacesSupportedpassive-interface <name> and passive-interface default.
Interface costSupportedip ospf cost <cost> participates in route computation.
Interface prioritySupportedip ospf priority <0-255> controls DR / BDR election.
DR / BDR electionSupportedDeterministic election on broadcast multi-access segments.
Point-to-point adjacencySupportedModelled through shared links and interface area membership.
Router LSAsBehaviour modelInternal LSDB state is modelled for route computation and show output.
Network LSAsBehaviour modelBroadcast transit segments are represented for SPF behaviour.
Summary LSAsBehaviour modelType-3 inter-area route projection is modelled at ABRs.
External LSAsBehaviour modelRedistributed statics are projected as external routes.
E1 / E2 metric typeSupportedredistribute static metric-type 1 or 2; E2 is the default.
Stub areaSupportedBlocks external routes and injects a default from the ABR.
Totally-stubby areaSupportedBlocks external and inter-area routes; default remains.
NSSASupportedAllows local external injection while preserving stub-like area behaviour.
Totally-NSSASupportedNSSA plus inter-area suppression.
Area default costSupportedarea <id> default-cost <cost> changes the injected default metric.
Area rangeSupportedarea <id> range <network> <mask>.
Area range not-advertiseSupportedSuppresses covered prefixes and does not emit the summary.
Area range costSupportedExplicit summary cost override.
Virtual linksSupportedarea <transit> virtual-link <remote-router-id>.
Virtual-link costSupportedOptional explicit cost.
Virtual-link auth modeConfiguredAccepted and emitted; packet-level auth exchange is simplified.
maximum-pathsSupportedLimits equal-cost OSPF paths installed into the RIB.
default-information originateSupportedAdvertises a default route when enabled. Optional always is accepted as equivalent.
auto-cost reference-bandwidthStoredAccepted and emitted. Current route calculation still relies on configured/static interface costs.
redistribute bgp ...Import fidelityGrammar is accepted for imported configs; behaviour focus is static redistribution today.
Graceful restartNot modelledPlanned for later production-behaviour coverage.
Opaque LSAs / traffic engineeringNot modelledNot part of the current OSPF training surface.
CommandIOS-styleJunos-styleVyOS-styleNotes
router ospf 1Supportedn/an/aCisco-family process mode.
router-id 1.1.1.1SupportedSupportedSupportedJunos / VyOS map to the same canonical OSPF router ID.
network 10.0.0.0 0.0.0.255 area 0Supportedn/an/aCisco-style interface selection.
set protocols ospf area 0 interface ge-0/0/0n/aSupportedn/aJunos-style interface-to-area binding.
set protocols ospf area 0 interface ge-0/0/0 metric 25n/aSupportedn/aCommits into canonical interface OSPF cost.
set protocols ospf area 0 interface ge-0/0/0 hello-interval 5n/aSupportedn/aCommits into canonical hello timer.
set protocols ospf area 0 interface ge-0/0/0 dead-interval 20n/aSupportedn/aCommits into canonical dead timer.
set protocols ospf area 0 interface ge-0/0/0 priority 0n/aSupportedn/aCommits into DR/BDR priority.
set protocols ospf area 0 interface ge-0/0/0 passiven/aSupportedn/aAdds interface to passive OSPF set.
set protocols ospf area 0 interface ge-0/0/0 bfd-liveness-detectionn/aSupportedn/aEnables OSPF BFD gating.
set protocols ospf area 0 network 10.0.0.0/24n/an/aSupportedVyOS-style area network syntax.
passive-interface defaultSupportedPartialSupportedCanonical passive-default is supported; vendor surfaces vary.
passive-interface GigabitEthernet0/0SupportedPartialSupportedVendor import maps to canonical passive interfaces where available.
ip ospf priority 200Supportedn/an/aControls DR / BDR election.
ip ospf cost 20SupportedPartialPartialCanonical interface cost is supported; vendor syntax differs.
ip ospf hello-interval 5SupportedNot yetNot yetCisco-style per-interface timer override.
ip ospf dead-interval 20SupportedNot yetNot yetMust be greater than hello interval.
ip ospf message-digest-key 1 md5 secretPartialNot yetNot yetAuth mismatch affects adjacency; cryptographic packet fidelity is simplified.
area 1 stubSupportedNot yetSupportedBlocks Type-5 external routes and injects default.
area 1 stub no-summarySupportedNot yetNot yetTotally-stubby behaviour.
area 1 nssaSupportedNot yetSupportedNSSA route behaviour is modelled.
area 1 nssa no-summarySupportedNot yetNot yetTotally-NSSA behaviour.
area 1 range 10.0.0.0 255.255.0.0SupportedNot yetNot yetABR Type-3 summarisation.
area 1 virtual-link 2.2.2.2SupportedNot yetNot yetLogical area-0 adjacency through transit area.
redistribute staticSupportedPartialSupportedStatic redistribution into OSPF.
redistribute static route-map NAMESupportedNot yetNot yetRoute-map can filter redistributed static routes.
bfd all-interfacesSupportedNot yetNot yetEnables BFD gating for all OSPF interfaces.
ip ospf bfdSupportedNot yetNot yetEnables BFD gating per interface.
show ip ospfSupportedSupported viewn/aShows process and area state from canonical runtime.
show ip ospf neighborSupportedSupported viewSupportedNeighbour table from runtime state.
show ip ospf databaseSupportedSupported viewn/aLSDB-oriented view.
show ip ospf border-routersSupportedn/an/aABR / ASBR visibility.
show ip ospf virtual-linksSupportedn/an/aVirtual-link state and reason when down.

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.

Basic single-area OSPF
configure terminal
router 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 0
end
show ip ospf neighbor
show ip route

Vendor 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-summary
Junos-style
set routing-options router-id 1.1.1.1
set protocols ospf area 0 interface ge-0/0/0.0
set protocols ospf area 1 stub
set protocols ospf area 1 interface ge-0/0/1.0
VyOS-style
set protocols ospf parameters router-id 1.1.1.1
set protocols ospf area 0 network 10.0.12.0/30
set protocols ospf area 1 network 10.0.1.0/24
set protocols ospf area 1 area-type stub
Force a DR election outcome
configure terminal
interface GigabitEthernet0/0
ip ospf priority 200
end
clear ip ospf process
show ip ospf neighbor
Summarise area routes at an ABR
configure terminal
router ospf 1
area 1 range 10.0.0.0 255.255.0.0
end
show ip ospf database
show ip route
Build a virtual link through area 1

On the ABR connected to area 0:

configure terminal
router ospf 1
area 1 virtual-link 3.3.3.3
end
show ip ospf virtual-links

On the remote ABR:

configure terminal
router ospf 1
area 1 virtual-link 2.2.2.2
end
show ip ospf virtual-links
LabCoversLink
OSPF DR / BDR electionBroadcast segments, priority, router-id tie-breakOpen lab
OSPF multi-area ABRArea 0, non-zero areas, ABR Type-3 projectionOpen lab
OSPF area rangeABR summarisation with area <id> rangeOpen lab
OSPF virtual linkLogical area-0 adjacency through transit areaOpen lab

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.