(plugin-ospf-areas)= # OSPF Area Parameters Plugin You can use the **ospf.areas** plugin to configure stub and NSSA areas, area ranges (summarization), or summarization of external NSSA (type-7) routes into external (type-2) routes. These features are considered core features as they're defined in RFC 2328, RFC 5340, and RFC 1587. The plugin also supports suppressing inter-area routes in stub/NSSA areas, resulting in totally stubby/NSSA areas. This feature might not be available on all supported platforms. ## Supported Platforms The plugin includes Jinja2 templates for the following platforms: | Operating system | Stub/NSSA
areas | Totally
stubby areas | Area ranges | NSSA area
ranges | |--------------|:-:|:-:|:-:|:-:| | Arista EOS |✅ [❗](caveats-eos) |✅|✅| ❌ | | Aruba CX |✅|✅|✅|✅| | Cisco IOS/XE[^18v] |✅|✅|✅| ❌ | | Cumulus NVUE |✅|✅|✅ [❗](caveats-cumulus-nvue) | ❌ | | Dell OS10 |✅|✅|✅ [❗](caveats-os10) | ❌ | | FRR |✅|✅|✅ [❗](caveats-frr) |✅| | Junos[^Junos]|✅|✅|✅|✅| | SR Linux |✅|✅|✅ [❗](caveats-srlinux) |✅| [^18v]: Includes Cisco IOSv, Cisco IOSvL2, Cisco CSR 1000v, Cisco Catalyst 8000v, Cisco IOS-on-Linux (IOL), and IOL Layer-2 image. [^Junos]: Includes vMX, vSRX, vPTX, vJunos-switch, and vJunos-router ## Specifying OSPF Area Parameters The OSPF area parameters can be specified in global-, node-, or VRF-level **ospf.areas** list. Each element of the list can have these attributes: * **area** (mandatory) -- OSPF area ID in integer or IPv4 address format. * **kind** -- OSPF area type (*stub*, *nssa*, or *regular*) * **default.cost** (int) -- The cost of the default route inserted into the stub/NSSA area (IPv4 only) * **inter_area** (bool, default: *true*) -- propagation of inter-area routes into stub/NSSA area. Set to *false* to implement totally stubby areas. * **range** -- summarization ranges for the area * **filter** (list of IPv4 or IPv6 prefixes) -- not-advertized summarization ranges for the area * **external_range** -- NSSA summarization ranges for the external type-7 routes from this area * **external_filter** (list of IPv4 or IPv6 prefixes) -- not-advertized summarization ranges for the external type-7 routes from this area The **range** and **external_range** parameters are lists of area summarization ranges. Each range can be specified as an IPv4/IPv6 prefix or a dictionary with these parameters: * **ipv4** -- IPv4 summary prefix * **ipv6** -- IPv6 summary prefix * **cost** -- The cost of the summary prefix * **type** (NSSA **external_range** only) -- the external metric type of the summary type-5 LSA (*e1* or *e2*) Example: ``` ospf.areas: # Regular area with a summarization # range and a no-advertise (filtering) range # You can specify IPv4 and IPv6 prefixes in the # same list. - area: 11 range: - 10.17.0.0/16 - ipv6: 2001:db8:1::/48 cost: 42 filter: - 10.18.0.0/16 - 2001:db8:2::/48 # Totally stubby area - area: 51 kind: stub inter_area: false ``` ## Inheritance of Configuration Parameters * Global (topology) **ospf.areas** definitions are merged with node **ospf.areas** definitions, allowing you to define OSPF area parameters for the whole lab topology. * Node **ospf.areas** definitions are merged with the definitions in VRF instances. * The merge of data is done on the attribute level. For example, the global **range** parameter would be *copied* into the node definition if the node definition does not contain that parameter, but will not be *appended* to an existing node-level **range** parameter. You can set most parameters in the node- or VRF definition to *False* to prevent their inheritance.