Back to blog

Cisco / Lab  ·  Lab Scenario  ·  August 2026

Cisco Lab
Multi-Area OSPF

Part 7 gave you single-area OSPF; this lab is where OSPF gets its real shape. Five routers, three areas, two ABRs. You'll watch LSAs stop at area borders, turn a branch into a stub and then a totally-stubby area, inject a default route where the internet actually lives, and steer traffic with interface costs — then cut a backbone link and time the reroute.

Cisco IOS Packet Tracer Lab OSPF Multi-Area LSA Stub Areas

AREA 1 — totally stubby AREA 0 — backbone AREA 2 — standard Internet R1 — ASBR default-information originate R2 — ABR areas 0 + 1 R3 — ABR areas 0 + 2 10.0.12.0/30 10.0.13.0/30 10.0.23.0/30 R4 — branch LAN 10.1.40.0/24 10.0.24.0/30 R5 — branch LAN 10.2.50.0/24 10.0.35.0/30

Single-area OSPF scales until it doesn't: every router recomputes SPF whenever any link anywhere flaps, and every router carries every route. Areas are OSPF's answer — flood domains with borders. Inside an area, routers share the full link-state map; between areas, Area Border Routers pass summaries only. A flapping link in area 2 no longer makes a branch router in area 1 recompute anything.

This lab makes the abstraction concrete: five routers, a triangle backbone, two branch areas. You will look at the LSA database at each step — multi-area OSPF only clicks when you watch a type-1 LSA stop at the ABR and re-emerge as a type-3 summary. Then we squeeze the branch areas down with stub and no-summary until a branch router's entire routing table is one default route — which is all a branch ever needed.

Prerequisites

01

Topology and Addressing

A triangle backbone (R1–R2–R3) so area 0 has a redundant path, and one branch router hanging off each ABR. Loopbacks as router-IDs — stable identity that never goes down.

Link / interfaceAddressing & area
R1 ↔ R210.0.12.0/30 (R1 .1, R2 .2) — area 0
R1 ↔ R310.0.13.0/30 (R1 .1, R3 .2) — area 0
R2 ↔ R310.0.23.0/30 (R2 .1, R3 .2) — area 0
R2 ↔ R410.0.24.0/30 (R2 .1, R4 .2) — area 1
R3 ↔ R510.0.35.0/30 (R3 .1, R5 .2) — area 2
R4 LAN10.1.40.0/24 — area 1 (simulate with a PC or a loopback)
R5 LAN10.2.50.0/24 — area 2
R1 WAN203.0.113.2/30 → ISP — outside OSPF entirely
Router-IDsLoopback0 = N.N.N.N (R1 → 1.1.1.1 … R5 → 5.5.5.5)
💡 Why the ABRs Sit Where They Do

R2 touches areas 0 and 1, so R2 is area 1's ABR; R3 is area 2's. That's all "ABR" means — a router with interfaces in the backbone and in a non-backbone area. The iron rule that follows: every area must touch area 0. You cannot daisy-chain area 2 behind area 1; inter-area routes only flow through the backbone. Design your areas as a hub-and-spoke around area 0 and OSPF stays predictable.

02

Configure the Backbone, Then the Branches

Same commands as part 7 — the only new ingredient is that the area number in the network statement now differs per interface. That one keyword is what makes a router an ABR.

R1, R2, R4 — R3/R5 mirror R2/R4 with area 2
# R1 — pure backbone router (plus the WAN, which stays out of OSPF)
R1(config)# router ospf 1
R1(config-router)# router-id 1.1.1.1
R1(config-router)# passive-interface GigabitEthernet0/2   ← the WAN: never speak OSPF to the ISP
R1(config-router)# network 10.0.12.0 0.0.0.3 area 0
R1(config-router)# network 10.0.13.0 0.0.0.3 area 0

# R2 — one leg in area 0, one leg in area 1 → automatically an ABR
R2(config)# router ospf 1
R2(config-router)# router-id 2.2.2.2
R2(config-router)# network 10.0.12.0 0.0.0.3 area 0
R2(config-router)# network 10.0.23.0 0.0.0.3 area 0
R2(config-router)# network 10.0.24.0 0.0.0.3 area 1

# R4 — branch: everything in area 1, LAN kept passive
R4(config)# router ospf 1
R4(config-router)# router-id 4.4.4.4
R4(config-router)# passive-interface GigabitEthernet0/1   ← the LAN: advertise it, don't chat on it
R4(config-router)# network 10.0.24.0 0.0.0.3 area 1
R4(config-router)# network 10.1.40.0 0.0.0.255 area 1

# Adjacencies up?
R2# show ip ospf neighbor
Neighbor ID     Pri   State           Dead Time   Address         Interface
1.1.1.1           1   FULL/BDR        00:00:36    10.0.12.1       Gi0/0
3.3.3.3           1   FULL/DR         00:00:33    10.0.23.2       Gi0/1
4.4.4.4           1   FULL/BDR        00:00:38    10.0.24.2       Gi0/2
R4 — read the route codes: O vs O IA
R4# show ip route ospf
     10.0.0.0/8 is variably subnetted
O       10.0.12.0/30 [110/2] via 10.0.24.1, 00:04:11, Gi0/0   ← intra-area? No —
O IA    10.0.13.0/30 [110/3] via 10.0.24.1, 00:04:11, Gi0/0      wait for it…
O IA    10.0.23.0/30 [110/2] via 10.0.24.1, 00:04:11, Gi0/0
O IA    10.2.50.0/24 [110/4] via 10.0.24.1, 00:03:52, Gi0/0   ← area 2's LAN,
                                                                  via the backbone

O means the route was computed from the full link-state map inside R4's own area; O IA (inter-area) means it arrived as a summary from the ABR — R4 knows the destination and the cost, but nothing about area 2's internal topology. That information asymmetry is the entire point of areas.

03

Read the LSA Database Like a Map

Four LSA types explain everything this lab does. Look at the database on R4 and find each one — this five-minute exercise is worth more than any diagram of "OSPF LSA types 1–11".

LSA typeWhat it is, and where it stops
1 — RouterEvery router describes its own links. Floods only within its area.
2 — NetworkA DR describes its multi-access segment. Also area-local.
3 — SummaryThe ABR re-advertises other areas' prefixes as plain "network + cost". These become O IA routes.
5 — ExternalRoutes redistributed from outside OSPF — like R1's default. Flood everywhere except stub areas.
R4 — the database tells you what the area knows
R4# show ip ospf database
            OSPF Router with ID (4.4.4.4) (Process ID 1)

                Router Link States (Area 1)          ← type 1: only R2 and R4
Link ID         ADV Router      Age         Seq#       Checksum Link count
2.2.2.2         2.2.2.2         112         0x80000004 0x00A1B2 1
4.4.4.4         4.4.4.4         98          0x80000003 0x00C4D1 2

                Summary Net Link States (Area 1)     ← type 3: the rest of the
Link ID         ADV Router      Age                      network, as summaries
10.0.12.0       2.2.2.2         201
10.0.13.0       2.2.2.2         201
10.0.23.0       2.2.2.2         201
10.2.50.0       2.2.2.2         187

Notice what's missing: R4 has no type-1 LSA from R1, R3, or R5. It literally does not know those routers exist — it only knows prefixes and costs that R2 vouches for. When a link inside area 2 flaps, R5's type-1 LSA changes, area 2 recomputes SPF, R3 updates one type-3 summary… and R4 just swaps a routing-table entry. No SPF run in area 1 at all. That's the scaling win, visible in one show command.

04

The Default Route — default-information originate

The internet lives on R1, outside OSPF. Rather than configuring statics everywhere, R1 injects its default into OSPF as a type-5 external — one command, every router learns the way out.

R1 — inject the default
# R1's own default points at the ISP (static, out of band for OSPF)
R1(config)# ip route 0.0.0.0 0.0.0.0 203.0.113.1

# …and OSPF advertises it to everyone else
R1(config)# router ospf 1
R1(config-router)# default-information originate

# Every other router now has:
R5# show ip route | include 0.0.0.0/0
O*E2  0.0.0.0/0 [110/1] via 10.0.35.1, 00:00:41, GigabitEthernet0/0
⚠ Gotcha — No Default in the Table, No Advertisement

Plain default-information originate only advertises the default while R1 itself has one — which is a feature: if R1's WAN static disappears, the advertised default is withdrawn and the network doesn't blackhole traffic toward a dead exit. The variant default-information originate always advertises unconditionally; it looks more robust but keeps announcing an exit that doesn't work. Combine the plain form with an IP SLA-tracked WAN static (part 10) and the OSPF default follows real internet reachability end-to-end.

05

Shrink the Branches — Stub and Totally Stubby

A branch router doesn't need fifty routes; it needs "everything is that way". Stub areas remove externals; totally-stubby areas remove everything but a default from the ABR.

Area 1 → totally stubby (stub flag on ALL area-1 routers)
# Both routers in area 1 must agree the area is stub —
# the flag is in the hello packets; mismatched flags = no adjacency.
R4(config)# router ospf 1
R4(config-router)# area 1 stub

# On the ABR, add no-summary → "totally stubby": type-3s stop too
R2(config)# router ospf 1
R2(config-router)# area 1 stub no-summary

# R4's routing table collapses to almost nothing:
R4# show ip route ospf
O*IA  0.0.0.0/0 [110/2] via 10.0.24.1, 00:00:19, GigabitEthernet0/0

# One default from the ABR. The branch can still reach everything —
# it just no longer carries the map of how.
⚠ Gotcha — The Adjacency Drops the Moment You Type It

When you configure area 1 stub on R2 before R4 (or vice versa), the R2–R4 adjacency immediately falls — the stub flag in their hellos no longer matches, and the neighbors politely refuse each other until both sides agree. In a lab that's a lesson; on a production branch link it's an outage you scheduled without knowing. Configure the branch router first, then the ABR, and expect one dead moment in between. Note the asymmetry: stub goes on every router in the area, no-summary only on the ABR.

06

Steer with Cost, Then Cut a Link Failure Drill

OSPF picks paths by summed interface cost, and the defaults treat everything ≥100 Mb/s as equal. Fix the reference bandwidth fleet-wide, steer a path explicitly, then prove convergence with a stopwatch.

All routers — reference bandwidth; R2 — nudge a path
# Default reference is 100 Mb/s → FastE, GigE, 10GigE all cost 1 (!)
# Set the reference to 100 Gb/s ON EVERY ROUTER so speeds differentiate:
R2(config)# router ospf 1
R2(config-router)# auto-cost reference-bandwidth 100000
# IOS warns: "Please ensure reference bandwidth is consistent across all routers."
# It means it. Inconsistent references = asymmetric, surprising paths.

# Steer: make R2→R1 direct link unattractive; traffic prefers R2→R3→R1
R2(config)# interface GigabitEthernet0/0
R2(config-if)# ip ospf cost 500

R2# traceroute 1.1.1.1
  1 10.0.23.2      ← via R3 now, as designed
  2 10.0.13.1

The drill

Remove the cost tweak, start a continuous ping from R4's LAN PC to R5's LAN (10.2.50.x), then delete the R2–R3 cable — the link that ping crosses. Rapid hellos notice within the dead-interval (or instantly, on a physical link-down), both areas' borders update their type-3s, and the path re-forms as R4 → R2 → R1 → R3 → R5. In Packet Tracer expect a handful of lost pings; watch show ip ospf neighbor lose one FULL entry and traceroute grow the R1 hop. Reconnect the cable and watch it fall back. That — routing that heals around a cut with no human involved — is what all the LSA machinery buys you.

07

MikroTik ↔ Cisco — and PT Notes

RouterOS speaks the same OSPFv2 on the wire — these five routers could be a mixed fleet and the areas would still form.

This lab (Cisco)MikroTik / RouterOS 7
router ospf 1 + network … area N/routing ospf instance + area + interface-template networks=
router-id 1.1.1.1router-id= on the instance
passive-interfaceinterface-template … passive
area 1 stub no-summary/routing ospf area type=stub no-summaries=yes
default-information originateoriginate-default=if-installed on the instance
ip ospf cost 500cost= on the interface-template
💡 Packet Tracer Notes

Everything in this lab works in Packet Tracer 8.x on 2911s: multi-area, stub/totally-stubby, default-information originate, cost, and reference-bandwidth. Two limitations to know: PT's show ip ospf database output is abbreviated compared with real IOS (the columns above are trimmed to match), and NSSA areas (area N nssa) are only partially supported — which is fine, because in the field we reach for NSSA about once a decade. If you want the full database experience, this is the lab most worth re-running in GNS3/CML with real IOS images.

Takeaways

  1. Areas are flood-domain borders, not just labels. Type-1/2 LSAs stop at the ABR; other areas see type-3 summaries. A flap in one area doesn't trigger SPF in another.
  2. An ABR is just a router with legs in area 0 and another area — and every area must touch area 0. Design areas as spokes around the backbone.
  3. Read the codes: O = computed inside your area, O IA = ABR summary, O*E2 = redistributed external. The routing table tells you where knowledge came from.
  4. Inject the default at the exit with default-information originate — and prefer the conditional form, so a dead WAN withdraws the default instead of blackholing the fleet.
  5. Stub on every router in the area, no-summary only on the ABR. A totally-stubby branch runs on one O*IA default — the ideal branch routing table.
  6. Fix auto-cost reference-bandwidth on all routers or GigE and 10GigE tie at cost 1 and OSPF path selection quietly stops meaning anything.
  7. Time the failure drill. Convergence you've watched with a stopwatch is convergence you can promise a client.

Multi-site network that needs real routing?

NOCTIS designs OSPF and hybrid routed networks for multi-building hotels and multi-site businesses across Crete — with areas, failover, and documentation that make sense to the next engineer too.

Book a Discovery Call →