(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.