What multiple areas are for
Every OSPF article so far has used a single-area design with all links in area 0. Inside an area every router holds the same LSDB (link state database), and each time a link goes up or down the LSA reaches every router in the area and every router reruns SPF. As the number of routers and links grows, that load stops being negligible.
OSPF can therefore split a network into “areas”. Splitting it confines the LSDB, the scope of the SPF calculation, and the flooding scope of LSAs to the inside of an area.
| Term | Description |
|---|---|
| Area | The unit that confines the LSDB and the SPF calculation. An area ID is 32 bits and can be written as a decimal number or in dotted-quad form |
| Backbone area | Area 0. The special area responsible for distributing routes between areas |
| ABR (area border router) | A router attached to more than one area. It summarizes an area’s routes and hands them to the next area |
| Internal router | A router whose connected networks all belong to the same area |
| Summary-LSA (type 3) | The LSA with which an ABR reports “a network that lives in another area” |
| ASBR Summary-LSA (type 4) | The LSA with which an ABR reports “reachability to an ASBR that lives in another area” |
This article splits seven routers into three areas and uses real devices to show what an ABR does, how the cost of an inter-area route is built up, and which ABR is chosen when there are two of them. Summarizing an area’s routes is covered in a separate article. Stub areas are covered in a separate article too.
The ground rules of area design
Section 3.3 of RFC 2328 classifies routers into the following four categories (one router can fall into several of them).
| Category | Definition | In this lab |
|---|---|---|
| Internal router | All of its directly connected networks belong to the same area | R1, R11, R12, R13 |
| ABR | Attached to more than one area | R2, R3 and R4 |
| Backbone router | Has an interface to area 0. It does not have to be an ABR | R2, R3, R4 |
| ASBR | Brings routes in from outside OSPF | R1 (from STEP 4 on) |
There are three design rules.
- Area 0 (the backbone) is mandatory, and every ABR belongs to it. Section 3.1 of RFC 2328 states that the OSPF backbone always contains all area border routers. An area that cannot be attached to area 0 directly needs a virtual link
- Traffic between areas always transits the backbone. Section 3.2 of RFC 2328 breaks an inter-area path into three pieces: an intra-area path from the source to an ABR, a backbone path between the areas, and another intra-area path to the destination
- An area is chosen per interface, not per router. On IOS XR you write
area <ID>underrouter ospfand put the interfaces inside it
How an ABR carries routes between areas
Once the network is split, Router-LSAs (type 1) and Network-LSAs (type 2) no longer leave their area. Instead each ABR converts the routes it holds into Summary-LSAs (type 3) and floods them into the next area. An ABR runs a separate SPF per attached area and hands the summarized result across, which makes it act rather like a distance-vector protocol between areas.
| LSA type | How far it travels | Originated by |
|---|---|---|
| Type 1 / type 2 | Only inside its own area | Every router (type 2 by the DR) |
| Type 3 (summary) | Regenerated by each ABR for the next area | ABR |
| Type 4 (ASBR summary) | Regenerated by each ABR for the next area | ABR |
| Type 5 (AS external) | Across the whole AS unchanged (except into stub areas) | ASBR |
Section 12.4.3 of RFC 2328 lays down two important rules for type 3.
- The metric is the cost from that ABR to the destination (
metric equal to the routing table cost). The cost accumulates each time the route passes an ABR - Only intra-area routes are advertised into the backbone, while both intra-area and inter-area routes are advertised into the other areas. That is the mechanism that prevents inter-area loops, and it is why the star-shaped topology centred on area 0 is required
Lab topology
Seven Cisco IOS XR routers (XRd 26.1.1) are split into three areas: area 1 - area 0 - area 2. The ABRs are R2 (area 1 and area 0) plus R3 and R4 (area 0 and area 2), so area 2 has two ABRs facing it.
| Item | Content |
|---|---|
| Area 1 | R1’s Loopback0 and the R1 - R2 link (10.0.12.0/24) |
| Area 0 | The Loopback0 of R2, R3 and R4, plus R2 - R3 (10.0.23.0/24) and R2 - R4 (10.0.24.0/24) |
| Area 2 | The Loopback0 of R11, R12 and R13, plus R3 - R11 (172.16.3.0/24), R4 - R12 (172.16.4.0/24), R11 - R13 and R12 - R13 |
| ABR | R2 (area 1 to 0), R3 and R4 (area 0 to 2) |
| ASBR | R1 (redistributes a static route in STEP 4) |
| Observation point | R13, an internal router in area 2. The destination is 1.1.1.1/32, R1’s Loopback0 |
| Network type | network point-to-point on every link. No DR/BDR is elected and no Network-LSA (type 2) has to be generated |
| Link cost | Cost 1 everywhere by default (IOS XR’s default reference bandwidth of 100 Mbps is below Gigabit Ethernet). Only from STEP 3 on is the R4 - R12 link set to cost 10 on both ends |
Areas are assigned per interface. R3’s configuration in the final state looks like this (an excerpt of show running-config). Gi0/0/0/0 is in area 0 and Gi0/0/0/1 is in area 2, which makes R3 an ABR.
router ospf 1
router-id 3.3.3.3
area 0
interface Loopback0
passive enable
!
interface GigabitEthernet0/0/0/0
network point-to-point
!
!
area 2
interface GigabitEthernet0/0/0/1
network point-to-point
!
!
!The single-area starting point (STEP 0)
For comparison the lab starts with all interfaces of all seven routers in area 0. From R13, every interface is in area 0.
RP/0/RP0/CPU0:R13#show ospf interface brief
Sun Sep 6 11:10:26.265 UTC
* Indicates MADJ interface, (P) Indicates fast detect hold down state
Interfaces for OSPF 1
Interface PID Area IP Address/Mask Cost State Nbrs F/C
Lo0 1 0 13.13.13.13/32 1 LOOP 0/0
Gi0/0/0/0 1 0 10.1.11.13/24 1 P2P 1/1
Gi0/0/0/1 1 0 10.1.12.13/24 1 P2P 1/1Every route is an O (intra-area) route; there is no O IA inter-area route yet. R1’s Loopback0 (1.1.1.1/32) costs 5, and both the path via R11 and the path via R12 are installed at that equal cost (see equal-cost multipath).
RP/0/RP0/CPU0:R13#show route ospf
Sun Sep 6 11:10:22.737 UTC
O 1.1.1.1/32 [110/5] via 10.1.11.11, 00:47:01, GigabitEthernet0/0/0/0
[110/5] via 10.1.12.12, 00:47:01, GigabitEthernet0/0/0/1
O 2.2.2.2/32 [110/4] via 10.1.11.11, 00:47:16, GigabitEthernet0/0/0/0
[110/4] via 10.1.12.12, 00:47:16, GigabitEthernet0/0/0/1
O 3.3.3.3/32 [110/3] via 10.1.11.11, 00:47:25, GigabitEthernet0/0/0/0
O 4.4.4.4/32 [110/3] via 10.1.12.12, 00:47:16, GigabitEthernet0/0/0/1
O 10.0.12.0/24 [110/4] via 10.1.11.11, 00:47:16, GigabitEthernet0/0/0/0
[110/4] via 10.1.12.12, 00:47:16, GigabitEthernet0/0/0/1
O 10.0.23.0/24 [110/3] via 10.1.11.11, 00:47:25, GigabitEthernet0/0/0/0
O 10.0.24.0/24 [110/3] via 10.1.12.12, 00:47:16, GigabitEthernet0/0/0/1
O 11.11.11.11/32 [110/2] via 10.1.11.11, 00:47:25, GigabitEthernet0/0/0/0
O 12.12.12.12/32 [110/2] via 10.1.12.12, 00:47:19, GigabitEthernet0/0/0/1
O 172.16.3.0/24 [110/2] via 10.1.11.11, 00:47:25, GigabitEthernet0/0/0/0
O 172.16.4.0/24 [110/2] via 10.1.12.12, 00:47:19, GigabitEthernet0/0/0/1Carving out area 2 (STEP 1)
The interfaces of R3 and R4 that face R11 and R12, and every interface of R11, R12 and R13, are moved into area 2. On IOS XR, moving an interface between areas is written as a removal from the old area plus an addition to the new one.
(R3 and R4)
router ospf 1
area 0
no interface GigabitEthernet0/0/0/1
!
router ospf 1
area 2
interface GigabitEthernet0/0/0/1
network point-to-point
(R11, R12 and R13)
router ospf 1
no area 0
area 2
interface Loopback0
passive enable
interface GigabitEthernet0/0/0/0
network point-to-point
interface GigabitEthernet0/0/0/1
network point-to-pointR3’s interfaces are now split: Gi0/0/0/0 in area 0 and Gi0/0/0/1 in area 2.
RP/0/RP0/CPU0:R3#show ospf interface brief
Sun Sep 6 11:14:51.577 UTC
* Indicates MADJ interface, (P) Indicates fast detect hold down state
Interfaces for OSPF 1
Interface PID Area IP Address/Mask Cost State Nbrs F/C
Lo0 1 0 3.3.3.3/32 1 LOOP 0/0
Gi0/0/0/0 1 0 10.0.23.3/24 1 P2P 1/1
Gi0/0/0/1 1 2 172.16.3.3/24 1 P2P 1/1The top of show ospf now says It is an area border router. The router has recognized that it has interfaces in more than one area, and at that point the B bit (the area border router flag) is set in its Router-LSA.
RP/0/RP0/CPU0:R3#show ospf
Sun Sep 6 11:14:50.494 UTC
Routing Process "ospf 1" with ID 3.3.3.3
Role: Primary Active
NSR (Non-stop routing) is Enabled
Supports only single TOS(TOS0) routes
Supports opaque LSA
It is an area border router
Maximum number of non self-generated LSA allowed 500000
Current number of non self-generated LSA 24
Threshold for warning message 75%
Ignore-time 5 minutes, reset-time 10 minutes
Ignore-count allowed 5, current ignore-count 0On R13 the destinations in area 0 and area 1 have become O IA (inter-area) routes. The cost is still 5, but what matters is that from has changed from 1.1.1.1 to the ABRs 3.3.3.3 and 4.4.4.4. An inter-area route is a route an ABR summarized and passed on, so the ABR that passed it on is the advertising router.
RP/0/RP0/CPU0:R13#show route ospf
Sun Sep 6 11:16:33.535 UTC
O IA 1.1.1.1/32 [110/5] via 10.1.11.11, 00:03:13, GigabitEthernet0/0/0/0
[110/5] via 10.1.12.12, 00:03:13, GigabitEthernet0/0/0/1
O IA 2.2.2.2/32 [110/4] via 10.1.11.11, 00:03:13, GigabitEthernet0/0/0/0
[110/4] via 10.1.12.12, 00:03:13, GigabitEthernet0/0/0/1
O IA 3.3.3.3/32 [110/3] via 10.1.11.11, 00:03:13, GigabitEthernet0/0/0/0
O IA 4.4.4.4/32 [110/3] via 10.1.12.12, 00:03:14, GigabitEthernet0/0/0/1
O IA 10.0.12.0/24 [110/4] via 10.1.11.11, 00:03:13, GigabitEthernet0/0/0/0
[110/4] via 10.1.12.12, 00:03:13, GigabitEthernet0/0/0/1
O IA 10.0.23.0/24 [110/3] via 10.1.11.11, 00:03:13, GigabitEthernet0/0/0/0
O IA 10.0.24.0/24 [110/3] via 10.1.12.12, 00:03:14, GigabitEthernet0/0/0/1
O 11.11.11.11/32 [110/2] via 10.1.11.11, 00:03:13, GigabitEthernet0/0/0/0
O 12.12.12.12/32 [110/2] via 10.1.12.12, 00:03:14, GigabitEthernet0/0/0/1
O 172.16.3.0/24 [110/2] via 10.1.11.11, 00:03:13, GigabitEthernet0/0/0/0
O 172.16.4.0/24 [110/2] via 10.1.12.12, 00:03:14, GigabitEthernet0/0/0/1Type 3 LSAs appear in R13’s LSDB. For 1.1.1.1/32, R3 (3.3.3.3) and R4 (4.4.4.4) each advertise it with metric 3.
RP/0/RP0/CPU0:R13#show ospf database summary
Sun Sep 6 11:16:40.167 UTC
OSPF Router with ID (13.13.13.13) (Process ID 1)
Summary Net Link States (Area 2)
Routing Bit Set on this LSA
LS age: 289
Options: (No TOS-capability, DC)
LS Type: Summary Links (Network)
Link State ID: 1.1.1.1 (Summary Network Number)
Advertising Router: 3.3.3.3
LS Seq Number: 80000001
Checksum: 0x1f0b
Length: 28
Network Mask: /32
TOS: 0 Metric: 3
Routing Bit Set on this LSA
LS age: 263
Options: (No TOS-capability, DC)
LS Type: Summary Links (Network)
Link State ID: 1.1.1.1 (Summary Network Number)
Advertising Router: 4.4.4.4
LS Seq Number: 80000001
Checksum: 0x125
Length: 28
Network Mask: /32
TOS: 0 Metric: 3 show ospf border-routers shows how the router reaches the ABRs and ASBRs. From R13 both R3 and R4 are at cost 2.
RP/0/RP0/CPU0:R13#show ospf border-routers
Sun Sep 6 11:16:42.095 UTC
OSPF 1 Internal Routing Table
Codes: i - Intra-area route, I - Inter-area route
i 3.3.3.3 [2] via 10.1.11.11, GigabitEthernet0/0/0/0, ABR , Area 2, SPF 4
i 4.4.4.4 [2] via 10.1.12.12, GigabitEthernet0/0/0/1, ABR , Area 2, SPF 4Capturing on the area 0 side (between R2 and R3) shows R3 turning area 2 information into type 3 LSAs for area 0. No.30 of the attached capture is the LS Update in which R3 advertises 10.1.11.0/24 and 11.11.11.11/32 with metric 2. The Area ID: 0.0.0.0 (Backbone) field shows that these LSAs were flooded into area 0.
Open Shortest Path First
OSPF Header
Version: 2
Message Type: LS Update (4)
Packet Length: 84
Source OSPF Router: 3.3.3.3
Area ID: 0.0.0.0 (Backbone)
Checksum: 0xf99b [correct]
Instance ID: Base IPv4 Unicast Instance (0)
Auth Type: Null (0)
Auth Data (none): 0000000000000000
LS Update Packet
Number of LSAs: 2
LSA-type 3 (Summary-LSA (IP network)), len 28
.000 0000 0000 0001 = LS Age (seconds): 1
0... .... .... .... = Do Not Age Flag: 0
Options: 0x22, (DC) Demand Circuits, (E) External Routing
0... .... = DN: Not set
.0.. .... = (O) Opaque: Not set
..1. .... = (DC) Demand Circuits: Supported
...0 .... = (L) LLS Data block: Not Present
.... 0... = (N) NSSA: Not supported
.... .0.. = (MC) Multicast: Not capable
.... ..1. = (E) External Routing: Capable
.... ...0 = (MT) Multi-Topology Routing: No
LS Type: Summary-LSA (IP network) (3)
Link State ID: 10.1.11.0
Advertising Router: 3.3.3.3
Sequence Number: 0x80000001
Checksum: 0x3bdd
Length: 28
Netmask: 255.255.255.0
TOS: 0
Metric: 2
LSA-type 3 (Summary-LSA (IP network)), len 28
.000 0000 0000 0001 = LS Age (seconds): 1
0... .... .... .... = Do Not Age Flag: 0
Options: 0x22, (DC) Demand Circuits, (E) External Routing
0... .... = DN: Not set
.0.. .... = (O) Opaque: Not set
..1. .... = (DC) Demand Circuits: Supported
...0 .... = (L) LLS Data block: Not Present
.... 0... = (N) NSSA: Not supported
.... .0.. = (MC) Multicast: Not capable
.... ..1. = (E) External Routing: Capable
.... ...0 = (MT) Multi-Topology Routing: No
LS Type: Summary-LSA (IP network) (3)
Link State ID: 11.11.11.11
Advertising Router: 3.3.3.3
Sequence Number: 0x80000001
Checksum: 0x47bb
Length: 28
Netmask: 255.255.255.255
TOS: 0
Metric: 2Carving out area 1 to complete three areas (STEP 2)
Next the R1 - R2 link (10.0.12.0/24) and R1’s Loopback0 move into area 1. That makes R2 an ABR as well and completes the three-area design.
(R1)
router ospf 1
no area 0
area 1
interface Loopback0
passive enable
interface GigabitEthernet0/0/0/0
network point-to-point
(R2)
router ospf 1
area 0
no interface GigabitEthernet0/0/0/0
!
router ospf 1
area 1
interface GigabitEthernet0/0/0/0
network point-to-pointRP/0/RP0/CPU0:R2#show ospf interface brief
Sun Sep 6 11:18:32.425 UTC
* Indicates MADJ interface, (P) Indicates fast detect hold down state
Interfaces for OSPF 1
Interface PID Area IP Address/Mask Cost State Nbrs F/C
Lo0 1 0 2.2.2.2/32 1 LOOP 0/0
Gi0/0/0/1 1 0 10.0.23.2/24 1 P2P 1/1
Gi0/0/0/2 1 0 10.0.24.2/24 1 P2P 1/1
Gi0/0/0/0 1 1 10.0.12.2/24 1 P2P 1/1R3’s LSDB holds the type 3 LSAs that R2 injected into area 0. The metric for 1.1.1.1/32 is 2, which is R2’s own cost to 1.1.1.1/32 (1 for the link plus 1 for Loopback0).
RP/0/RP0/CPU0:R3#show ospf database summary
Sun Sep 6 11:19:00.815 UTC
OSPF Router with ID (3.3.3.3) (Process ID 1)
Summary Net Link States (Area 0)
Routing Bit Set on this LSA
LS age: 85
Options: (No TOS-capability, DC)
LS Type: Summary Links (Network)
Link State ID: 1.1.1.1 (Summary Network Number)
Advertising Router: 2.2.2.2
LS Seq Number: 80000001
Checksum: 0x33fb
Length: 28
Network Mask: /32
TOS: 0 Metric: 2 R3 and R4 take that type 3, build an inter-area route from it, and re-inject it into area 2 with metric 3 (1 to reach R2 plus the 2 they received). Listing R13’s LSDB shows that every destination in area 0 and area 1 is advertised by both R3 and R4.
RP/0/RP0/CPU0:R13#show ospf database
Sun Sep 6 11:20:36.782 UTC
OSPF Router with ID (13.13.13.13) (Process ID 1)
Router Link States (Area 2)
Link ID ADV Router Age Seq# Checksum Link count
3.3.3.3 3.3.3.3 478 0x80000002 0x00cc8d 2
4.4.4.4 4.4.4.4 453 0x80000002 0x00d278 2
11.11.11.11 11.11.11.11 438 0x80000003 0x00cc9c 5
12.12.12.12 12.12.12.12 439 0x80000003 0x00e56d 5
13.13.13.13 13.13.13.13 437 0x80000003 0x0093ee 5
Summary Net Link States (Area 2)
Link ID ADV Router Age Seq# Checksum
1.1.1.1 3.3.3.3 181 0x80000001 0x001f0b
1.1.1.1 4.4.4.4 181 0x80000001 0x000125
2.2.2.2 3.3.3.3 525 0x80000001 0x00e640
2.2.2.2 4.4.4.4 500 0x80000001 0x00c85a
3.3.3.3 3.3.3.3 525 0x80000001 0x00ae75
3.3.3.3 4.4.4.4 500 0x80000001 0x00a479
4.4.4.4 3.3.3.3 525 0x80000001 0x009489
4.4.4.4 4.4.4.4 500 0x80000001 0x0062b9
10.0.12.0 3.3.3.3 185 0x80000001 0x003cdc
10.0.12.0 4.4.4.4 185 0x80000001 0x001ef6
10.0.23.0 3.3.3.3 525 0x80000001 0x00b856
10.0.23.0 4.4.4.4 500 0x80000001 0x00a465
10.0.24.0 3.3.3.3 525 0x80000001 0x00b755
10.0.24.0 4.4.4.4 500 0x80000001 0x008f7aFrom R13 the path to 1.1.1.1/32 via R3 and the one via R4 both cost 5, so both are installed in the routing table. The traceroute happens to follow one of them (R12, R4, R2, R1).
RP/0/RP0/CPU0:R13#show route 1.1.1.1/32
Sun Sep 6 11:17:53.341 UTC
Routing entry for 1.1.1.1/32
Known via "ospf 1", distance 110, metric 5, type inter area
Installed Sep 6 11:17:37.792 for 00:00:15
Routing Descriptor Blocks
10.1.11.11, from 3.3.3.3, via GigabitEthernet0/0/0/0
Route metric is 5
10.1.12.12, from 4.4.4.4, via GigabitEthernet0/0/0/1
Route metric is 5
No advertising protos.
RP/0/RP0/CPU0:R13#traceroute 1.1.1.1 source 13.13.13.13
Sun Sep 6 11:17:53.521 UTC
Type escape sequence to abort.
Tracing the route to 1.1.1.1
1 10.1.12.12 11 msec 4 msec 4 msec
2 172.16.4.4 13 msec 7 msec 6 msec
3 10.0.24.2 14 msec 10 msec 9 msec
4 10.0.12.1 27 msec * 16 msec How the cost of an inter-area route is built up
Step (4) of section 16.2 of RFC 2328 defines the cost of an inter-area route as the distance to BR (the ABR that originated the type 3) plus the cost carried in the LSA. For 1.1.1.1/32 it builds up like this.
| Segment | Value | Where to see it |
|---|---|---|
| Metric of the type 3 R2 injects into area 0 | 2 | show ospf database summary on R3 (area 0) |
| Metric of the type 3 R3 and R4 inject into area 2 | 3 (1 to R2 plus 2) | show ospf database summary on R13 (area 2) |
| Distance from R13 to the ABRs R3 and R4 | 2 | show ospf border-routers on R13 |
Cost of 1.1.1.1/32 on R13 | 5 (2 plus 3) | show route 1.1.1.1/32 on R13 |
The detailed topology inside an area never reaches the other areas. R13 does not know the actual path to R1; it simply adds the distance to the ABR to the value the ABR reported.
Changing which ABR is used, with cost (STEP 3)
With two ABRs facing area 2, R13 picks the closer one. Setting the R4 - R12 link to cost 10 on both ends pushes the distance to R4 up to 11.
(R4)
router ospf 1
area 2
interface GigabitEthernet0/0/0/1
cost 10
(R12)
router ospf 1
area 2
interface GigabitEthernet0/0/0/0
cost 10R4’s cost in show ospf border-routers rises from 2 to 11, and 1.1.1.1/32 is left with the single path via R3 (via R4 it would be 11 plus 3, that is 14). The traceroute now goes R11, R3, R2, R1.
RP/0/RP0/CPU0:R13#show route 1.1.1.1/32
Sun Sep 6 11:21:30.191 UTC
Routing entry for 1.1.1.1/32
Known via "ospf 1", distance 110, metric 5, type inter area
Installed Sep 6 11:21:21.584 for 00:00:08
Routing Descriptor Blocks
10.1.11.11, from 3.3.3.3, via GigabitEthernet0/0/0/0
Route metric is 5
No advertising protos.
RP/0/RP0/CPU0:R13#show ospf border-routers
Sun Sep 6 11:21:30.383 UTC
OSPF 1 Internal Routing Table
Codes: i - Intra-area route, I - Inter-area route
i 3.3.3.3 [2] via 10.1.11.11, GigabitEthernet0/0/0/0, ABR , Area 2, SPF 6
i 4.4.4.4 [11] via 10.1.12.12, GigabitEthernet0/0/0/1, ABR , Area 2, SPF 6
RP/0/RP0/CPU0:R13#traceroute 1.1.1.1 source 13.13.13.13
Sun Sep 6 11:21:31.192 UTC
Type escape sequence to abort.
Tracing the route to 1.1.1.1
1 10.1.11.11 16 msec 15 msec 5 msec
2 172.16.3.3 14 msec 9 msec 8 msec
3 10.0.23.2 12 msec 12 msec 33 msec
4 10.0.12.1 16 msec * 17 msec External routes across areas, and type 4 (STEP 4)
R1, in area 1, now redistributes a static route into OSPF and becomes an ASBR. The behaviour of external routes themselves is covered in OSPF external routes (redistributing static routes), so the focus here is what changes when areas are involved. To give the redistributed 192.168.1.0/24 something that answers, R1 also gets a Loopback1.
(R1)
router static
address-family ipv4 unicast
192.168.1.0/24 Null0
!
router ospf 1
redistribute static
!
interface Loopback1
description external network host (192.168.1.0/24)
ipv4 address 192.168.1.1 255.255.255.255R13 receives 192.168.1.0/24 as type extern 2 (E2) with metric 20. Unlike a type 3 route, from is 1.1.1.1 — the ASBR itself.
RP/0/RP0/CPU0:R13#show route 192.168.1.0/24
Sun Sep 6 11:31:18.664 UTC
Routing entry for 192.168.1.0/24
Known via "ospf 1", distance 110, metric 20, type extern 2
Installed Sep 6 11:25:06.972 for 00:06:11
Routing Descriptor Blocks
10.1.11.11, from 1.1.1.1, via GigabitEthernet0/0/0/0
Route metric is 20
No advertising protos. In the LSDB the type 5 LSA still has Advertising Router: 1.1.1.1. A type 5 LSA is not regenerated by ABRs; it floods across the whole AS as it is, so the advertising router does not change when it crosses an area boundary.
RP/0/RP0/CPU0:R13#show ospf database external
Sun Sep 6 11:31:16.187 UTC
OSPF Router with ID (13.13.13.13) (Process ID 1)
Type-5 AS External Link States
Routing Bit Set on this LSA
LS age: 373
Options: (No TOS-capability, DC)
LS Type: AS External Link
Link State ID: 192.168.1.0 (External Network Number)
Advertising Router: 1.1.1.1
LS Seq Number: 80000001
Checksum: 0xd25
Length: 36
Network Mask: /24
Metric Type: 2 (Larger than any link state path)
TOS: 0
Metric: 20
Forward Address: 0.0.0.0
External Route Tag: 0The LS Update captured inside area 2 shows the same thing. No.6 of the attached capture is the type 5 LSA that R11 sent to R13: a packet with Area ID: 0.0.0.2 carrying an LSA whose Advertising Router: 1.1.1.1 is untouched.
Open Shortest Path First
OSPF Header
Version: 2
Message Type: LS Update (4)
Packet Length: 64
Source OSPF Router: 11.11.11.11
Area ID: 0.0.0.2
Checksum: 0xf78e [correct]
Instance ID: Base IPv4 Unicast Instance (0)
Auth Type: Null (0)
Auth Data (none): 0000000000000000
LS Update Packet
Number of LSAs: 1
LSA-type 5 (AS-External-LSA (ASBR)), len 36
.000 0000 0000 0100 = LS Age (seconds): 4
0... .... .... .... = Do Not Age Flag: 0
Options: 0x20, (DC) Demand Circuits
0... .... = DN: Not set
.0.. .... = (O) Opaque: Not set
..1. .... = (DC) Demand Circuits: Supported
...0 .... = (L) LLS Data block: Not Present
.... 0... = (N) NSSA: Not supported
.... .0.. = (MC) Multicast: Not capable
.... ..0. = (E) External Routing: Not capable
.... ...0 = (MT) Multi-Topology Routing: No
LS Type: AS-External-LSA (ASBR) (5)
Link State ID: 192.168.1.0
Advertising Router: 1.1.1.1
Sequence Number: 0x80000001
Checksum: 0x0d25
Length: 36
Netmask: 255.255.255.0
1... .... = External Type: Type 2 (metric is larger than any other link state path)
.000 0000 = TOS: 0
Metric: 20
Forwarding Address: 0.0.0.0
External Route Tag: 0For R13 to use 192.168.1.0/24, however, it needs reachability to the ASBR R1 — and R1 sits in area 1, invisible from area 2. That gap is filled by the type 4 (ASBR Summary-LSA): its Link State ID is the ASBR’s router ID (1.1.1.1), its Advertising Router is each ABR (3.3.3.3 and 4.4.4.4), and its metric is 2, the cost from that ABR to the ASBR.
RP/0/RP0/CPU0:R13#show ospf database asbr-summary
Sun Sep 6 11:31:15.437 UTC
OSPF Router with ID (13.13.13.13) (Process ID 1)
Summary ASB Link States (Area 2)
Routing Bit Set on this LSA
LS age: 371
Options: (No TOS-capability, DC)
LS Type: Summary Links (AS Boundary Router)
Link State ID: 1.1.1.1 (AS Boundary Router address)
Advertising Router: 3.3.3.3
LS Seq Number: 80000001
Checksum: 0x723
Length: 28
Network Mask: /0
TOS: 0 Metric: 2
Routing Bit Set on this LSA
LS age: 371
Options: (No TOS-capability, DC)
LS Type: Summary Links (AS Boundary Router)
Link State ID: 1.1.1.1 (AS Boundary Router address)
Advertising Router: 4.4.4.4
LS Seq Number: 80000001
Checksum: 0xe83d
Length: 28
Network Mask: /0
TOS: 0 Metric: 2 No.7 of the capture is the LS Update that carried that type 4 LSA. Placed next to the type 5 of No.6, the division of labour is clear: the external route itself travels in a type 5 originated by the ASBR, while reachability to the ASBR travels in a type 4 originated by each ABR.
Open Shortest Path First
OSPF Header
Version: 2
Message Type: LS Update (4)
Packet Length: 56
Source OSPF Router: 11.11.11.11
Area ID: 0.0.0.2
Checksum: 0x365a [correct]
Instance ID: Base IPv4 Unicast Instance (0)
Auth Type: Null (0)
Auth Data (none): 0000000000000000
LS Update Packet
Number of LSAs: 1
LSA-type 4 (Summary-LSA (ASBR)), len 28
.000 0000 0000 0010 = LS Age (seconds): 2
0... .... .... .... = Do Not Age Flag: 0
Options: 0x22, (DC) Demand Circuits, (E) External Routing
0... .... = DN: Not set
.0.. .... = (O) Opaque: Not set
..1. .... = (DC) Demand Circuits: Supported
...0 .... = (L) LLS Data block: Not Present
.... 0... = (N) NSSA: Not supported
.... .0.. = (MC) Multicast: Not capable
.... ..1. = (E) External Routing: Capable
.... ...0 = (MT) Multi-Topology Routing: No
LS Type: Summary-LSA (ASBR) (4)
Link State ID: 1.1.1.1
Advertising Router: 3.3.3.3
Sequence Number: 0x80000001
Checksum: 0x0723
Length: 28
Netmask: 0.0.0.0
TOS: 0
Metric: 2The ASBR also shows up in show ospf border-routers. ABRs are marked i (reached by an intra-area route) and the ASBR I (reached by an inter-area route), and R1 is at cost 4 (2 to R3 plus the type 4 metric of 2).
RP/0/RP0/CPU0:R13#show ospf border-routers
Sun Sep 6 11:31:16.827 UTC
OSPF 1 Internal Routing Table
Codes: i - Intra-area route, I - Inter-area route
I 1.1.1.1 [4] via 10.1.11.11, GigabitEthernet0/0/0/0, ASBR , Area 2, SPF 6
i 3.3.3.3 [2] via 10.1.11.11, GigabitEthernet0/0/0/0, ABR , Area 2, SPF 6
i 4.4.4.4 [11] via 10.1.12.12, GigabitEthernet0/0/0/1, ABR , Area 2, SPF 6Reachability from R13 to 192.168.1.1 can be confirmed as well. The traceroute crosses all three areas — area 2, area 0, area 1 — to reach R1.
RP/0/RP0/CPU0:R13#show route 192.168.1.0/24
Sun Sep 6 11:27:52.811 UTC
Routing entry for 192.168.1.0/24
Known via "ospf 1", distance 110, metric 20, type extern 2
Installed Sep 6 11:25:06.972 for 00:02:45
Routing Descriptor Blocks
10.1.11.11, from 1.1.1.1, via GigabitEthernet0/0/0/0
Route metric is 20
No advertising protos.
RP/0/RP0/CPU0:R13#ping 192.168.1.1 source 13.13.13.13
Sun Sep 6 11:27:52.986 UTC
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1 timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/13/18 ms
RP/0/RP0/CPU0:R13#traceroute 192.168.1.1 source 13.13.13.13
Sun Sep 6 11:27:53.832 UTC
Type escape sequence to abort.
Tracing the route to 192.168.1.1
1 10.1.11.11 6 msec 4 msec 5 msec
2 172.16.3.3 8 msec 7 msec 8 msec
3 10.0.23.2 10 msec 9 msec 12 msec
4 10.0.12.1 13 msec * 15 msec An ABR cut off from the backbone (STEP 5)
Finally, shutting down R3’s area 0 interface (Gi0/0/0/0) creates the state in which an ABR has lost its connection to the backbone.
(R3)
interface GigabitEthernet0/0/0/0
shutdownOn R13, 1.1.1.1/32 switches to the path via R4 at cost 14, because the path via R3 is no longer usable.
RP/0/RP0/CPU0:R13#show route 1.1.1.1/32
Sun Sep 6 11:33:19.743 UTC
Routing entry for 1.1.1.1/32
Known via "ospf 1", distance 110, metric 14, type inter area
Installed Sep 6 11:31:44.576 for 00:01:35
Routing Descriptor Blocks
10.1.12.12, from 4.4.4.4, via GigabitEthernet0/0/0/1
Route metric is 14
No advertising protos.
RP/0/RP0/CPU0:R13#show ospf border-routers
Sun Sep 6 11:33:19.938 UTC
OSPF 1 Internal Routing Table
Codes: i - Intra-area route, I - Inter-area route
I 1.1.1.1 [13] via 10.1.12.12, GigabitEthernet0/0/0/1, ASBR , Area 2, SPF 6
i 3.3.3.3 [2] via 10.1.11.11, GigabitEthernet0/0/0/0, ABR , Area 2, SPF 6
i 4.4.4.4 [11] via 10.1.12.12, GigabitEthernet0/0/0/1, ABR , Area 2, SPF 6
RP/0/RP0/CPU0:R13#traceroute 1.1.1.1 source 13.13.13.13
Sun Sep 6 11:33:20.673 UTC
Type escape sequence to abort.
Tracing the route to 1.1.1.1
1 10.1.12.12 5 msec 5 msec 4 msec
2 172.16.4.4 8 msec 7 msec 7 msec
3 10.0.24.2 10 msec 9 msec 9 msec
4 10.0.12.1 13 msec * 16 msec The LSDB explains why. Among the type 3 LSAs in area 2 (Summary Net Link States), the only one still advertised by 3.3.3.3 is its own Loopback0 (3.3.3.3/32); every destination in area 0 and area 1 is left with the copy from 4.4.4.4 alone.
RP/0/RP0/CPU0:R13#show ospf database
Sun Sep 6 11:36:05.576 UTC
OSPF Router with ID (13.13.13.13) (Process ID 1)
Router Link States (Area 2)
Link ID ADV Router Age Seq# Checksum Link count
3.3.3.3 3.3.3.3 1407 0x80000002 0x00cc8d 2
4.4.4.4 4.4.4.4 899 0x80000003 0x0082b5 2
11.11.11.11 11.11.11.11 1367 0x80000003 0x00cc9c 5
12.12.12.12 12.12.12.12 885 0x80000004 0x006ed1 5
13.13.13.13 13.13.13.13 1366 0x80000003 0x0093ee 5
Summary Net Link States (Area 2)
Link ID ADV Router Age Seq# Checksum
1.1.1.1 4.4.4.4 1110 0x80000001 0x000125
2.2.2.2 4.4.4.4 1428 0x80000001 0x00c85a
3.3.3.3 3.3.3.3 1454 0x80000001 0x00ae75
4.4.4.4 4.4.4.4 1428 0x80000001 0x0062b9
10.0.12.0 4.4.4.4 1114 0x80000001 0x001ef6
10.0.23.0 4.4.4.4 1428 0x80000001 0x00a465
10.0.24.0 4.4.4.4 1428 0x80000001 0x008f7a
Summary ASB Link States (Area 2)
Link ID ADV Router Age Seq# Checksum
1.1.1.1 4.4.4.4 661 0x80000001 0x00e83d
Type-5 AS External Link States
Link ID ADV Router Age Seq# Checksum Tag
192.168.1.0 1.1.1.1 663 0x80000001 0x000d25 0R3 itself still reports as an ABR in show ospf (and the B bit stays set in its Router-LSA) because Loopback0 remains in area 0, yet Gi0/0/0/0 is DOWN and it has no area 0 adjacency at all.
RP/0/RP0/CPU0:R3#show ospf interface brief
Sun Sep 6 11:34:25.920 UTC
* Indicates MADJ interface, (P) Indicates fast detect hold down state
Interfaces for OSPF 1
Interface PID Area IP Address/Mask Cost State Nbrs F/C
Lo0 1 0 3.3.3.3/32 1 LOOP 0/0
Gi0/0/0/0 1 0 10.0.23.3/24 1 DOWN 0/0
Gi0/0/0/1 1 2 172.16.3.3/24 1 P2P 1/1And R3’s routing table shows it learning the destinations in area 0 and area 1 the long way round, through area 2 (172.16.3.11, that is R11).
RP/0/RP0/CPU0:R3#show route ospf
Sun Sep 6 11:34:24.529 UTC
O IA 1.1.1.1/32 [110/16] via 172.16.3.11, 00:02:40, GigabitEthernet0/0/0/1
O IA 2.2.2.2/32 [110/15] via 172.16.3.11, 00:02:40, GigabitEthernet0/0/0/1
O IA 4.4.4.4/32 [110/14] via 172.16.3.11, 00:02:40, GigabitEthernet0/0/0/1
O IA 10.0.12.0/24 [110/15] via 172.16.3.11, 00:02:40, GigabitEthernet0/0/0/1
O IA 10.0.23.0/24 [110/15] via 172.16.3.11, 00:02:40, GigabitEthernet0/0/0/1
O IA 10.0.24.0/24 [110/14] via 172.16.3.11, 00:02:40, GigabitEthernet0/0/0/1
O 10.1.11.0/24 [110/2] via 172.16.3.11, 00:21:44, GigabitEthernet0/0/0/1
O 10.1.12.0/24 [110/3] via 172.16.3.11, 00:21:00, GigabitEthernet0/0/0/1
O 11.11.11.11/32 [110/2] via 172.16.3.11, 00:21:44, GigabitEthernet0/0/0/1
O 12.12.12.12/32 [110/4] via 172.16.3.11, 00:21:00, GigabitEthernet0/0/0/1
O 13.13.13.13/32 [110/3] via 172.16.3.11, 00:21:00, GigabitEthernet0/0/0/1
O 172.16.4.0/24 [110/13] via 172.16.3.11, 00:13:03, GigabitEthernet0/0/0/1
O E2 192.168.1.0/24 [110/20] via 172.16.3.11, 00:02:40, GigabitEthernet0/0/0/1RFC 2328 alone does not explain this behaviour. Section 16.2 states that a router attached to multiple areas examines only the backbone’s summary-LSAs, which would leave R3 with no inter-area route at all — and dropping any backbone-bound traffic that area 2 sends through it. RFC 3509, “Alternative Implementations of OSPF Area Border Routers”, was written to solve exactly that problem, and what the devices do here matches its “Cisco Systems Interpretation”.
| Observed behaviour | RFC 2328 | RFC 3509 (Cisco interpretation) |
|---|---|---|
| R3 stays an ABR because Loopback0 remains in area 0 | Section 3.3, “a router that attaches to multiple areas” (it says nothing about a link going down) | Section 2.1 defines the area states. A router is an ABR when two or more areas are Actively Attached and one of them is the backbone; Loopback0 in the LOOP state qualifies |
| R3 computed inter-area routes from area 2’s type 3 LSAs | Section 16.2, “if the router has active attachments to multiple areas, only backbone summary-LSAs are examined” | Section 2.2: even an ABR may examine the summary-LSAs of every actively attached area when it has no Active Backbone Connection (at least one fully adjacent neighbor in the backbone) |
| The only type 3 R3 still injects into area 2 is its own Loopback0 | Section 12.4.3, “both intra-area and inter-area routes are advertised into the other areas” | Section 2.2: an ABR without an Active Backbone Connection advertises only intra-area routes into non-backbone areas, to keep type 3 LSAs from looping |
via 10.0.23.2 (through R2 in the backbone) and area 2’s summary-LSAs are not used at all. Only in STEP 5, having lost its fully adjacent backbone neighbor, does R3 go the long way round through area 2. The design rule never build an ABR that is not attached to the backbone exists so that you do not have to depend on this implementation-specific behaviour.Restoring the link (STEP 6)
Returning R3’s Gi0/0/0/0 to no shutdown brings 1.1.1.1/32 back to the path via R3 at cost 5.
RP/0/RP0/CPU0:R13#show route 1.1.1.1/32
Sun Sep 6 11:36:46.194 UTC
Routing entry for 1.1.1.1/32
Known via "ospf 1", distance 110, metric 5, type inter area
Installed Sep 6 11:36:40.828 for 00:00:05
Routing Descriptor Blocks
10.1.11.11, from 3.3.3.3, via GigabitEthernet0/0/0/0
Route metric is 5
No advertising protos.
RP/0/RP0/CPU0:R13#show ospf border-routers
Sun Sep 6 11:36:46.467 UTC
OSPF 1 Internal Routing Table
Codes: i - Intra-area route, I - Inter-area route
I 1.1.1.1 [4] via 10.1.11.11, GigabitEthernet0/0/0/0, ASBR , Area 2, SPF 6
i 3.3.3.3 [2] via 10.1.11.11, GigabitEthernet0/0/0/0, ABR , Area 2, SPF 6
i 4.4.4.4 [11] via 10.1.12.12, GigabitEthernet0/0/0/1, ABR , Area 2, SPF 6
RP/0/RP0/CPU0:R13#traceroute 1.1.1.1 source 13.13.13.13
Sun Sep 6 11:36:47.088 UTC
Type escape sequence to abort.
Tracing the route to 1.1.1.1
1 10.1.11.11 57 msec 5 msec 4 msec
2 172.16.3.3 8 msec 7 msec 7 msec
3 10.0.23.2 9 msec 9 msec 9 msec
4 10.0.12.1 13 msec * 13 msec The order of preference between route types
When several kinds of route exist for the same destination, OSPF compares the type of the route before it compares any cost. RFC 2328 settles this in step (6) of section 16.2, “intra-area paths are always preferred”, and in step (6)(a) of section 16.4, where intra-area and inter-area paths are preferred over AS external paths.
| Order | Type | How show route shows it | Example in this lab |
|---|---|---|---|
| 1 | Intra-area route | O | Every route in STEP 0; the area 2 routes from STEP 1 on |
| 2 | Inter-area route | O IA | 1.1.1.1/32 from STEP 1 on (cost 5) |
| 3 | AS external route | O E1 / O E2 | 192.168.1.0/24 from STEP 4 on (E2, metric 20) |
A lower-preference type is not chosen even when its cost is smaller. The metric 20 of 192.168.1.0/24 is larger than the cost 5 of 1.1.1.1/32, but they are different destinations, so they are never compared. This order applies when the same destination arrives as more than one type of route.
Design notes
- Two ABRs facing an area, as in area 2, keep traffic flowing when one of them fails. STEP 5 is that case. If the two ABRs have equal cost the result is equal-cost multipath, so set costs deliberately, as in STEP 3, when you want a specific path
- Never build an ABR that is not attached to the backbone, or you end up in the implementation-specific territory of STEP 5. Where that is physically unavoidable, use a virtual link
- To get the full benefit of splitting areas, plan summarization together with it. Splitting areas still leaves one type 3 LSA per prefix; summarizing on the ABR reduces the number of LSAs handed to the next area
- Use a stub area when an area should not carry external routes. Type 5 and type 4 LSAs can be stopped at the edge of the area
Verification config and show output
For each STEP the following three files were collected from all seven routers, split per router. The verification config is the ..._run.txt file (the final state is the one from STEP 6).
| File | Content |
|---|---|
..._show.txt | show version / show interface description / show route / show route ospf / show ospf / show ospf interface / show ospf interface brief / show ospf neighbor / show ospf neighbor detail / show ospf database / show ospf database router / show ospf database network / show ospf statistics interface / show ospf database summary / show ospf database asbr-summary / show ospf database external / show ospf border-routers / show ospf routes / show route 1.1.1.1/32 / show route 13.13.13.13/32 / show route 192.168.1.0/24 / show ospf trace events / show ospf trace spf |
..._log.txt | show logging narrowed to that STEP. A marker was written with logmsg at the start of each STEP and its timestamp passed to show logging start |
..._run.txt | show running-config at that point in time (that is, the verification config for that STEP) |
The final state is the three-area design, with cost 10 on the R4 - R12 link and the static redistribution on R1.
STEP 0: the initial state (a single area, every link in area 0) — every route is an O route; 1.1.1.1/32 costs 5 over two paths
| Router | show output | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
| R11 | show | log | run |
| R12 | show | log | run |
| R13 | show | log | run |
STEP 1: R3 and R4’s interfaces facing R11 and R12, plus R11, R12 and R13, move into area 2 — R3 and R4 become ABRs; type 3 LSAs appear and R13’s routes turn into O IA
| Router | show output | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
| R11 | show | log | run |
| R12 | show | log | run |
| R13 | show | log | run |
STEP 2: the R1 - R2 link and R1’s Loopback0 move into area 1 — R2 becomes an ABR too, completing the three areas; 1.1.1.1/32 costs 5 over two paths
| Router | show output | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
| R11 | show | log | run |
| R12 | show | log | run |
| R13 | show | log | run |
This STEP also has show route 1.1.1.1/32 and traceroute taken from R13.
STEP 3: the R4 - R12 link is set to cost 10 on both ends — the distance to R4 rises to 11 and 1.1.1.1/32 is left with the single path via R3
| Router | show output | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
| R11 | show | log | run |
| R12 | show | log | run |
| R13 | show | log | run |
This STEP also has show route, border-routers and traceroute taken from R13.
STEP 4: R1 redistributes a static route (becoming an ASBR) — type 5 and type 4 LSAs appear and 192.168.1.0/24 arrives as E2 with metric 20
| Router | show output | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
| R11 | show | log | run |
| R12 | show | log | run |
| R13 | show | log | run |
This STEP also has show route, ping and traceroute taken from R13.
STEP 5: R3’s Gi0/0/0/0 (the area 0 side) is shut down — R3 is cut off from the backbone and 1.1.1.1/32 moves to the path via R4 at cost 14
| Router | show output | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
| R11 | show | log | run |
| R12 | show | log | run |
| R13 | show | log | run |
This STEP also has show route, border-routers and traceroute taken from R13.
STEP 6: R3’s Gi0/0/0/0 is returned to no shutdown (final state) — 1.1.1.1/32 returns to the path via R3 at cost 5
| Router | show output | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
| R11 | show | log | run |
| R12 | show | log | run |
| R13 | show | log | run |
This STEP also has show route and traceroute taken from R13.
The captures were taken at two points, both filtered with ip proto 89.
Download the capture from the area 0 side (R2 - R3, STEP 1)
Download the capture from the area 2 side (R11 - R13, STEP 4)
References
| RFC | Title | Summary |
|---|---|---|
| RFC 2328 | OSPF Version 2 | The definition of areas and the backbone (sections 3.1 to 3.3), the rules for originating summary-LSAs (section 12.4.3) and the inter-area route calculation (section 16.2). |
| RFC 3509 | Alternative Implementations of OSPF Area Border Routers | How an ABR without a backbone connection behaves. The definitions of an actively attached area and an Active Backbone Connection (section 2.1) and the per-implementation behaviour (section 2.2). |