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.
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.
show ip route codes: O, O IA, O*E201
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 / interface | Addressing & area |
|---|---|
| R1 ↔ R2 | 10.0.12.0/30 (R1 .1, R2 .2) — area 0 |
| R1 ↔ R3 | 10.0.13.0/30 (R1 .1, R3 .2) — area 0 |
| R2 ↔ R3 | 10.0.23.0/30 (R2 .1, R3 .2) — area 0 |
| R2 ↔ R4 | 10.0.24.0/30 (R2 .1, R4 .2) — area 1 |
| R3 ↔ R5 | 10.0.35.0/30 (R3 .1, R5 .2) — area 2 |
| R4 LAN | 10.1.40.0/24 — area 1 (simulate with a PC or a loopback) |
| R5 LAN | 10.2.50.0/24 — area 2 |
| R1 WAN | 203.0.113.2/30 → ISP — outside OSPF entirely |
| Router-IDs | Loopback0 = N.N.N.N (R1 → 1.1.1.1 … R5 → 5.5.5.5) |
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
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 — 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# 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
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 type | What it is, and where it stops |
|---|---|
| 1 — Router | Every router describes its own links. Floods only within its area. |
| 2 — Network | A DR describes its multi-access segment. Also area-local. |
| 3 — Summary | The ABR re-advertises other areas' prefixes as plain "network + cost". These become O IA routes. |
| 5 — External | Routes redistributed from outside OSPF — like R1's default. Flood everywhere except stub areas. |
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 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'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
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
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.
# 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.
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
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.
# 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
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
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.1 | router-id= on the instance |
| passive-interface | interface-template … passive |
| area 1 stub no-summary | /routing ospf area type=stub no-summaries=yes |
| default-information originate | originate-default=if-installed on the instance |
| ip ospf cost 500 | cost= on the interface-template |
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
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 →