OSPF Configuration Module

This configuration module configures OSPFv2 and OSPFv3 routing processes on most supported platforms (see supported features and platform support).

Note

Use netlab report or netlab create -o report commands to create reports on OSPF areas, routers, and interfaces. Use ‌netlab show reports ospf command to display available OSPF reports.

Supported Features

Supported OSPF features:

  • OSPFv2 and/or OSPFv3 (see platform support table and address families)

  • Multi-area deployment

  • Per-link cost and asymmetric costs

  • OSPF network type

  • Reference bandwidth

  • Unnumbered point-to-point interfaces

  • Passive interfaces

  • Static router ID

  • BFD (optionally with RFC9355 strict mode)

  • VRF OSPFv2 instances (on platforms with VRF support)

Missing features:

  • Stub and NSSA areas

  • Virtual links

  • Opaque LSA

  • Multi-area adjacencies

  • Demand circuits

  • A gazillion nerd knobs and IETF quirks

Need one of those? Create a plugin and contribute it.

Platform Support

The following table describes per-platform support of individual router-level OSPF features:

Operating system

Areas

Reference
bandwidth

OSPFv3

BFD

BFD
Strict-Mode

Arista EOS

Aruba AOS-CX

Cisco IOS

Cisco IOS XRv

Cisco IOS XE

Cisco Nexus OS

Cumulus Linux

Cumulus Linux 5.0 (NVUE)

Dell OS10 ()

Fortinet FortiOS

FRR

Juniper vMX

Juniper vPTX

Juniper vSRX 3.0

Mikrotik RouterOS 6

Mikrotik RouterOS 7

Nokia SR Linux

Nokia SR OS

VyOS

Notes:

  • Mikrotik RouterOS and VyOS support BFD on OSPF only with the system default values for interval and multiplier.

  • Dell OS10 does not support OSPF on the so-called Virtual Network interface, the VLAN implementation model currently used in our templates.

OSPF is also supported on these routing daemons:

Operating system

Areas

Reference
bandwidth

OSPFv3

BFD

BFD
Strict-Mode

BIRD

The following table documents the interface-level OSPF features:

Operating system

Cost

Network
type

Unnumbered
IPv4 interfaces

Passive
interfaces

Arista EOS

Aruba AOS-CX

Cisco IOS

Cisco IOS XE

Cisco IOS XRv

Cisco Nexus OS

Cumulus Linux

Cumulus Linux 5.0 (NVUE)

Dell OS10

Fortinet FortiOS

FRR

Juniper vMX

Juniper vPTX

Juniper vSRX 3.0

Mikrotik RouterOS 6

Mikrotik RouterOS 7

Nokia SR Linux

Nokia SR OS

VyOS

Notes:

  • Arista EOS, Cisco Nexus OS, SR Linux, and Dell OS10 support point-to-point and broadcast network types. Other network types will not be configured.

  • SR OS supports point-to-point, broadcast, and non-broadcast network types. Point-to-multipoint network type will not be configured.

OSPF routing daemons support these interface-level features:

Operating system

Cost

Network
type

Unnumbered
IPv4 interfaces

Passive
interfaces

BIRD

Notes:

  • Routing daemons usually have a single interface. Running OSPF on them seems frivolous unless you need OSPF to get paths toward remote endpoints of IBGP sessions.

Global Parameters

  • ospf.reference_bandwidth sets the OSPF auto-cost reference bandwidth (in Mbps) for all devices in the network.

  • ospf.bfd.strict enables RFC9355 BFD Strict-Mode (default: False)

Node Parameters

  • ospf.process – process ID (default: 1)

  • ospf.afOSPF address families, usually set by the data transformation code. Configures OSPFv2 when ospf.af.ipv4 is set to True and OSPFv3 (on devices that support OSPFv3) when ospf.af.ipv6 is set to True.

  • ospf.area – default OSPF area (default: 0.0.0.0). Used on links without explicit OSPF area and the loopback interface.

  • ospf.reference_bandwidth – per-node OSPF auto-cost reference bandwidth (in Mbps).

  • ospf.bfd – enable BFD for OSPF (default: False)

  • ospf.router_id – set static router ID.

You can specify most node parameters as global values (top-level topology elements) or within individual nodes (see example for details).

VRF Parameters

  • You can specify the default area for a VRF OSPF instance with VRF-level ospf.area parameter

  • You can change the router ID of a VRF OSPF instance with ospf.router_id parameter. Use this parameter when building back-to-back links between VRFs on the same node.

  • Set ospf.active to True to force a VRF to use OSPF even when no routers are attached to the VRF interfaces.

  • To disable OSPF in a VRF set ospf to False (see also Disabling a Routing Protocol in VRF).

Example

We want to create a three-router multi-area OSPF network:

  • R1 is a backbone area router

  • R2 is ABR between the backbone area and area 1

  • R3 is in an intra-area router in area 1.

All devices run OSPF:

module: [ ospf ]

The default OSPF area is 0.0.0.0:

ospf:
  area: 0.0.0.0

R1 and R2 are in default OSPF area (no need to specify per-node area):

nodes:
  r1:
    device: iosv
  r2:
    device: eos

R3 is in area 1. Non-default OSPF area must be specified within node data:

nodes:
  r3:
    device: nxos
    ospf:
      area: 0.0.0.1

The link between R1 and R2 is in area 0. No need to specify per-link area:

links:
- r1:
  r2:

The link between R2 and R3 is in area 1. Specify the OSPF area within the link definition:

links:
- r2:
  r3:
  ospf:
    area: 0.0.0.1

Alternatively, you could specify the OSPF area just for R2 (as R3 is already in area 1):

links:
- r2:
    ospf:
      area: 0.0.0.1
  r3:

Interesting details:

  • The default value for interface OSPF area is the node OSPF area

  • The default value for node OSPF area is the global OSPF area (default value: 0.0.0.0).

  • Due to the propagation of default values, the OSPF area for the R2-R3 link would be area 0 on R2 and area 1 on R3 – you have to specify the OSPF area within the link definition or an individual node connected to the link.

Resulting Device Configurations

The above topology generates the following device configurations:

R1 (Cisco IOS)

router ospf 1
!
interface Loopback0
 ip ospf 1 area 0.0.0.0
!
interface GigabitEthernet0/1
 ip ospf 1 area 0.0.0.0
 ip ospf network point-to-point

R2 (Arista EOS)

router ospf 1
!
interface Loopback0
 ip ospf area 0.0.0.0
!
interface Ethernet1
 ip ospf area 0.0.0.0
 ip ospf network point-to-point
!
interface Ethernet2
 ip ospf area 0.0.0.1
 ip ospf network point-to-point

R3 (Cisco Nexus-OS)

feature ospf
!
router ospf 1
!
interface loopback0
 ip router ospf 1 area 0.0.0.1
!
interface Ethernet1/1
 ip router ospf 1 area 0.0.0.1
 ip ospf network point-to-point

Complete network topology:

module: [ ospf ]

ospf:
  area: 0.0.0.0

nodes:
  r1:
    device: iosv
  r2:
    device: eos
  r3:
    device: nxos
    ospf:
      area: 0.0.0.1

links:
- r1:
  r2:

- r2:
  r3:
  ospf:
    area: 0.0.0.1