Static routes are the first routing tool you'll learn and the last one you'll stop using. They scale poorly past a handful of routers, but they're deterministic, free of CPU cost, and the only way you'll fully understand what a routing protocol is replacing. This lab uses six routers to build full reachability with nothing but ip route. The R200↔R40 link arrives with OSPF already running between the two routers — that gives you a working dynamic adjacency to compare your statics against, so administrative distance becomes a thing you can see rather than just a number on a chart.

The payoff at the end is a single concept: lower AD wins. Static defaults to 1, OSPF to 110, so static always wins by default. But change one static's AD to 120 and the contest flips — that's a floating static route, the standard idiom for backup paths that only activate when the primary protocol dies.

Static and floating static lab topology — six ISR4331 routers (R10, R20, R100, R200, R30, R40) with two 2960 access switches per side and four /24 PC LANs. The two core routers R100 and R200 connect over 172.16.100.0/24. OSPF is configured only on the R200↔R40 link (172.16.40.0/24).
[ FIG 1 — Lab topology shipped with the .pkt file. Branch routers face their PC LANs; core routers R100 and R200 carry transit traffic between sides. ]

★ WHY STATIC, WHY FLOATING

Three reasons static routes still exist in 2026 networks:

[ DEFAULT ROUTES ]

Every branch router that has exactly one path to the rest of the network points a default static (0.0.0.0/0) at its upstream and never runs a protocol on that edge. Simpler, lighter, more predictable.

[ POLICY ROUTES ]

Send a single prefix down a non-default path — VPN traffic over a tunnel, scrubbed traffic to a security appliance, management traffic over an out-of-band link. A static route is the cleanest tool for "this one destination goes a different way".

[ FLOATING BACKUPS ]

A static route with an AD higher than the dynamic protocol's AD installs only when the dynamic route disappears. Used for cellular failovers, dual-WAN routers, and any "if the main link dies, fall back to this one" pattern.

★ ADMINISTRATIVE DISTANCE — THE TIE-BREAKER

When two sources offer a route to the same prefix, IOS picks the one with the lower AD. Memorize these — they're CCNA-direct material:

SOURCE DEFAULT AD NOTES
Connected0Directly attached subnet — always wins.
Static1Manually configured. Override with a trailing AD value.
EIGRP (internal)90Cisco hybrid IGP.
OSPF110Open-standard link-state IGP.
IS-IS115Open-standard link-state IGP — ISP backbones.
RIP120Distance-vector. Mostly historical.
External BGP20Internet backbone routing. Trusted between ASes.
Internal BGP200BGP inside an AS.
[ ⚠ LONGEST PREFIX BEATS AD ]

AD only comes into play when the two competing routes have the same prefix length. A specific OSPF /24 will beat a static default /0, even though OSPF's AD is higher — because longest prefix match runs first. AD is the second tiebreaker.

★ IP ADDRESSING TABLE

Two conventions in play. On the 172.16.x.x inter-router links, every interface's last octet matches the router number — R100 G0/0/0 = 172.16.100.100, R200 G0/0/2 = 172.16.40.200, and so on. On the 192.168.X0.0/24 LANs, the router uses .254 as the gateway (matches what the PCs are pre-configured to point at). Rows marked PRE are configured in the .pkt before you open it — you bring up the ten rows marked YOU.

DEVICE INTERFACE IP / MASK FACING STATUS
R10G0/0/0192.168.10.254/24PC0 / PC1 LAN (gw)PRE
R10G0/0/1172.16.10.10/24↔ R100 G0/0/1YOU
R20G0/0/0192.168.20.254/24PC2 / PC3 LAN (gw)PRE
R20G0/0/1172.16.20.20/24↔ R100 G0/0/2YOU
R100G0/0/0172.16.100.100/24↔ R200 G0/0/0YOU
R100G0/0/1172.16.10.100/24↔ R10 G0/0/1YOU
R100G0/0/2172.16.20.100/24↔ R20 G0/0/1YOU
R200G0/0/0172.16.100.200/24↔ R100 G0/0/0YOU
R200G0/0/1172.16.30.200/24↔ R30 G0/0/1YOU
R200G0/0/2172.16.40.200/24↔ R40 G0/0/1 (OSPF)YOU
R30G0/0/0192.168.30.254/24PC4 / PC5 LAN (gw)PRE
R30G0/0/1172.16.30.30/24↔ R200 G0/0/1YOU
R40G0/0/0192.168.40.254/24PC6 / PC7 LAN (gw)PRE
R40G0/0/1172.16.40.40/24↔ R200 G0/0/2 (OSPF)YOU

PCs are pre-addressed and the four branch routers' LAN-side G0/0/0 interfaces (R10, R20, R30, R40) ship pre-configured as the gateway at .254. The two core routers (R100, R200) have no G0/0/0 config — you'll bring those up in Task 1 along with G0/0/1 and G0/0/2. Each PC's default gateway is the router's LAN .254 — PC0 (192.168.10.1/24) → 192.168.10.254, and so on.

★ TASK 1 — INTERFACE CONFIG

Six routers, ten interfaces left to bring up. G0/0/0 is pre-configured on the four branch routers (R10/R20/R30/R40 facing their PC LANs) — open each one and confirm with show ip interface brief. The two core routers (R100, R200) have nothing pre-configured: you'll bring up all three of their interfaces (G0/0/0, G0/0/1, G0/0/2) yourself. The rule for the inter-router 172.16.x.x links is one sentence: every IP ends with the router number.

[ ✓ ALREADY DONE FOR YOU ]

G0/0/0 on the four branch routers (R10, R20, R30, R40) ships pre-configured as the LAN-side gateway at .254. PC addressing is pre-loaded with that .254 as the default gateway. R100 and R200 have no interface config — those are on you. Bring up the ten interfaces marked YOU in the addressing table.

! ----- R10 — G0/0/0 (LAN) is pre-configured ----- Router> enable Router# configure terminal Router(config)# hostname R10 R10(config)# interface g0/0/1 R10(config-if)# ip address 172.16.10.10 255.255.255.0 R10(config-if)# no shutdown R10(config-if)# exit
! ----- R20 — G0/0/0 (LAN) is pre-configured ----- R20(config)# interface g0/0/1 R20(config-if)# ip address 172.16.20.20 255.255.255.0 R20(config-if)# no shutdown R20(config-if)# exit
! ----- R100 (core, left) — NO pre-config, all three interfaces are yours ----- Router> enable Router# configure terminal Router(config)# hostname R100 R100(config)# interface g0/0/0 R100(config-if)# ip address 172.16.100.100 255.255.255.0 R100(config-if)# no shutdown R100(config-if)# exit R100(config)# interface g0/0/1 R100(config-if)# ip address 172.16.10.100 255.255.255.0 R100(config-if)# no shutdown R100(config-if)# exit R100(config)# interface g0/0/2 R100(config-if)# ip address 172.16.20.100 255.255.255.0 R100(config-if)# no shutdown R100(config-if)# exit
! ----- R200 (core, right) — NO pre-config, all three interfaces are yours ----- Router(config)# hostname R200 R200(config)# interface g0/0/0 R200(config-if)# ip address 172.16.100.200 255.255.255.0 R200(config-if)# no shutdown R200(config-if)# exit R200(config)# interface g0/0/1 R200(config-if)# ip address 172.16.30.200 255.255.255.0 R200(config-if)# no shutdown R200(config-if)# exit R200(config)# interface g0/0/2 R200(config-if)# ip address 172.16.40.200 255.255.255.0 R200(config-if)# no shutdown R200(config-if)# exit
! ----- R30 — G0/0/0 (LAN) is pre-configured ----- R30(config)# interface g0/0/1 R30(config-if)# ip address 172.16.30.30 255.255.255.0 R30(config-if)# no shutdown R30(config-if)# exit
! ----- R40 — G0/0/0 (LAN) is pre-configured ----- R40(config)# interface g0/0/1 R40(config-if)# ip address 172.16.40.40 255.255.255.0 R40(config-if)# no shutdown R40(config-if)# exit

Sanity-check each new link with a ping from one side to the other before moving on. If R10 ping 172.16.10.100 fails, no routing will fix it — go find the layer-1 / layer-2 problem first.

★ TASK 2 — STATIC ROUTES SO ALL PCs CAN PING

Every PC needs to reach every other PC. Each router only has direct knowledge of its own connected networks — anything beyond a single hop needs an explicit ip route. Two patterns to use:

[ DEFAULT ROUTE — FOR LEAVES ]

Branch routers (R10, R20, R30) have one path to everything that isn't local — point a default at the core. One line replaces six.

[ SPECIFIC ROUTES — FOR HUBS ]

Core routers (R100, R200) sit between many destinations. They need a specific /24 per remote LAN so they can pick the right next hop.

[ R40 — SPECIFIC + EXPLICIT AD ]

R40 is a leaf, but we configure specific /24 statics with an explicit AD of 100. Two reasons: in task 3 we want overlapping prefixes between static and OSPF so the AD comparison is meaningful (a default route wouldn't compete with an OSPF /24 — longest prefix wins before AD), and pinning AD = 100 keeps the static below OSPF's AD 110 by an obvious margin so the route table shows [100/0] instead of the implicit [1/0]. Easier to read, easier to teach.

! ----- R10 — default to R100 ----- R10(config)# ip route 0.0.0.0 0.0.0.0 172.16.10.100
! ----- R20 — default to R100 ----- R20(config)# ip route 0.0.0.0 0.0.0.0 172.16.20.100
! ----- R30 — default to R200 ----- R30(config)# ip route 0.0.0.0 0.0.0.0 172.16.30.200
! ----- R100 (core left) — six specifics ----- R100(config)# ip route 192.168.10.0 255.255.255.0 172.16.10.10 R100(config)# ip route 192.168.20.0 255.255.255.0 172.16.20.20 R100(config)# ip route 192.168.30.0 255.255.255.0 172.16.100.200 R100(config)# ip route 192.168.40.0 255.255.255.0 172.16.100.200 R100(config)# ip route 172.16.30.0 255.255.255.0 172.16.100.200 R100(config)# ip route 172.16.40.0 255.255.255.0 172.16.100.200
! ----- R200 (core right) — six specifics ----- R200(config)# ip route 192.168.10.0 255.255.255.0 172.16.100.100 R200(config)# ip route 192.168.20.0 255.255.255.0 172.16.100.100 R200(config)# ip route 192.168.30.0 255.255.255.0 172.16.30.30 R200(config)# ip route 192.168.40.0 255.255.255.0 172.16.40.40 R200(config)# ip route 172.16.10.0 255.255.255.0 172.16.100.100 R200(config)# ip route 172.16.20.0 255.255.255.0 172.16.100.100
! ----- R40 — specific statics with explicit AD 100 ----- ! AD 100 < 110 → static wins over OSPF when both know the prefix R40(config)# ip route 192.168.10.0 255.255.255.0 172.16.40.200 100 R40(config)# ip route 192.168.20.0 255.255.255.0 172.16.40.200 100 R40(config)# ip route 192.168.30.0 255.255.255.0 172.16.40.200 100 R40(config)# ip route 172.16.10.0 255.255.255.0 172.16.40.200 100 R40(config)# ip route 172.16.20.0 255.255.255.0 172.16.40.200 100 R40(config)# ip route 172.16.30.0 255.255.255.0 172.16.40.200 100 R40(config)# ip route 172.16.100.0 255.255.255.0 172.16.40.200 100

WHAT EACH PIECE DOES

[ ip route DEST MASK NEXT-HOP ]

"To reach this destination, send the packet to this neighbour's IP." IOS recursively looks up the next hop in its own table to find which interface to use. Cleanest form for production. AD defaults to 1.

[ ip route DEST MASK INTERFACE ]

Same thing, but with the exit interface named directly. Works fine on point-to-point links; on multi-access segments it forces ARP-for-every-destination, which scales badly. Avoid except for /30 P2P.

[ ip route DEST MASK NEXT-HOP AD ]

A trailing number overrides the default AD of 1. Use a value below the competing protocol's AD to keep static preferred, or above it for a floating backup. On R40 we use 100 (below OSPF's 110) so the lab clearly shows the AD field in the route table.

[ ip route 0.0.0.0 0.0.0.0 NEXT-HOP ]

The default route, sometimes called the "gateway of last resort". Matches anything not matched by a more specific route. Branch routers live on these.

★ VERIFY — END-TO-END PINGS

From PC0 (192.168.10.1) on the far left, ping a PC in each remote LAN.

PC> ping 192.168.20.1 ! PC2 — across R10 → R100 → R20 PC> ping 192.168.30.1 ! PC4 — across R10 → R100 → R200 → R30 PC> ping 192.168.40.1 ! PC6 — across R10 → R100 → R200 → R40 ! First ping in each direction may show one timeout (ARP), ! then 4/4 replies. Subsequent pings: 4/4.

Trace one path so you can see the static routes being followed.

PC> tracert 192.168.40.1 ! Expect 4 hops: ! 1 192.168.10.254 (R10 — PC0's default gateway) ! 2 172.16.10.100 (R100 G0/0/1) ! 3 172.16.100.200 (R200 G0/0/0) ! 4 172.16.40.40 (R40 G0/0/1) ! 192.168.40.1 (PC6)
[ ✓ TASK 2 COMPLETE ]

Every PC can reach every other PC over four hops at most. Zero dynamic routing protocols involved — purely manual configuration on six routers.

★ TASK 3 — OSPF IS ALREADY UP, AND STATIC WINS BY AD

OSPF is pre-configured on R200 and R40 in the .pkt file. The other four routers stay static-only. Your job is to confirm the adjacency is live, then look at R40's routing table to see that your statics at AD 100 beat OSPF's 110 on every contested prefix.

[ ✓ ALREADY CONFIGURED ON R200 AND R40 ]

For reference, the OSPF config shipped in the .pkt looks roughly like this — you don't need to type it.

R200 — process 1, router-id 200.200.200.200, networks 172.16.40.0/24, 172.16.30.0/24, 172.16.100.0/24 in area 0, passive on g0/0/0 (to R100) and g0/0/1 (to R30).

R40 — process 1, router-id 40.40.40.40, networks 172.16.40.0/24 and 192.168.40.0/24 in area 0, passive on g0/0/0 (LAN).

Confirm the adjacency reached FULL.

R40# show ip ospf neighbor ! Expect 1 neighbour: ! Neighbor ID Pri State Address Interface ! 200.200.200.200 1 FULL/BDR 172.16.40.200 GigabitEthernet0/0/1 R200# show ip ospf neighbor ! Expect 1 neighbour: ! Neighbor ID Pri State Address Interface ! 40.40.40.40 1 FULL/DR 172.16.40.40 GigabitEthernet0/0/2

If either side shows anything other than FULL, the pre-config didn't survive the .pkt save — see the OSPF troubleshooting steps in Lab 5.

★ INSPECT R40'S ROUTING TABLE

R40 now has two routes for 172.16.30.0/24 — one static at AD 100 (configured in Task 2), one OSPF at AD 110 (just learned from R200). Both have the same prefix length, so AD is the tiebreaker — and 100 is lower than 110.

R40# show ip route ! S 172.16.30.0/24 [100/0] via 172.16.40.200 ← static wins (100 < 110) ! C 172.16.40.0/24 is directly connected, GigabitEthernet0/0/1 ! S 172.16.100.0/24 [100/0] via 172.16.40.200 ← static wins ! C 192.168.40.0/24 is directly connected, GigabitEthernet0/0/0 ! S 192.168.10.0/24 [100/0] via 172.16.40.200 ! S 192.168.20.0/24 [100/0] via 172.16.40.200 ! S 192.168.30.0/24 [100/0] via 172.16.40.200

No O entries — the OSPF routes lost the AD contest and never installed. The [100/0] in each line is the proof: first number is administrative distance (matches the trailing 100 from the Task 2 commands), second is metric. To prove the OSPF routes exist as candidates, check the LSDB directly.

R40# show ip ospf database ! You'll see Router LSAs from both router-IDs. ! The routes are in the LSDB — they just lost to the lower-AD statics. R40# show ip route 172.16.30.0 ! Routing entry for 172.16.30.0/24 ! Known via "static", distance 100, metric 0 ! ... ! Note: only the active route is shown. To see the OSPF ! candidate, look at the database (above) or temporarily ! remove the competing static.
[ ✓ TASK 3 COMPLETE ]

OSPF is up, the adjacency is FULL, and every contested prefix shows S (static, AD 100) instead of O (OSPF, AD 110). Static is preferred — not by default this time, but by an explicit AD we pinned to make the contest legible.

★ BONUS — FLIP IT WITH A FLOATING STATIC

"Floating static" means a static route with an AD high enough that the dynamic protocol wins under normal conditions; the static only takes over when the dynamic route disappears. The use case is real: cellular failover, dual-WAN, anywhere you want "main path normally, this static as backup".

On R40, replace one of the existing AD-100 statics with one that has an AD of 120 (higher than OSPF's 110).

! Remove the AD-100 static R40(config)# no ip route 172.16.30.0 255.255.255.0 172.16.40.200 100 ! Re-add it with AD 120 — this is now a floating static R40(config)# ip route 172.16.30.0 255.255.255.0 172.16.40.200 120

Check the table — OSPF should win this time.

R40# show ip route 172.16.30.0 ! Routing entry for 172.16.30.0/24 ! Known via "ospf 1", distance 110, metric 2, type intra area ! Last update from 172.16.40.200 on GigabitEthernet0/0/1 ! ...

Now simulate a single-prefix OSPF withdrawal and watch the static float in. Easiest way without disturbing the pre-configured OSPF process: temporarily remove one network statement on R200 so it stops advertising that prefix into OSPF. R40 loses the OSPF route, the AD-120 static takes over.

! On R200 — stop advertising 172.16.30.0/24 into OSPF R200(config)# router ospf 1 R200(config-router)# no network 172.16.30.0 0.0.0.255 area 0 R200(config-router)# exit ! Give OSPF a few seconds to converge, then on R40: R40# show ip route 172.16.30.0 ! Routing entry for 172.16.30.0/24 ! Known via "static", distance 120, metric 0 ! Routing Descriptor Blocks: ! * 172.16.40.200 ! ...

The route to 172.16.30.0/24 is back — same next hop, but now via the AD-120 floating static. End-to-end ping still works.

PC0> ping 192.168.30.1 ! Reply from 192.168.30.1: bytes=32 time=2ms TTL=124 ! ...4/4 replies.
[ ⚠ FLOATING STATIC LIMIT ]

A floating static only protects against routing-protocol failure, not link failure. If the underlying interface (G0/0/1 on R40) goes down, the static's next hop becomes unreachable and the route drops out regardless of AD. For true link-failure failover you need a second physical path, which this single-link topology doesn't provide. Production-grade designs combine floating statics with IP SLA tracking — outside CCNA scope but worth knowing exists.

Restore the pre-configured OSPF advertisement on R200 so the lab is back to its shipped state:

R200(config)# router ospf 1 R200(config-router)# network 172.16.30.0 0.0.0.255 area 0 R200(config-router)# exit ! Optional — return the R40 static to AD 100 if you want to ! see static win against OSPF again R40(config)# no ip route 172.16.30.0 255.255.255.0 172.16.40.200 120 R40(config)# ip route 172.16.30.0 255.255.255.0 172.16.40.200 100

★ COMMON GOTCHAS

[ ⚠ ASYMMETRIC ROUTING — ONE-WAY PINGS ]

Symptom: PC0 can ping PC4 but PC4 can't ping PC0.

Cause: You configured the static on one side of the path but forgot the return route on the other. Every router in both directions needs an entry for both source and destination.

[ ⚠ NEXT HOP IS THE NEIGHBOUR'S IP ]

Symptom: Route installs but doesn't forward.

Fix: The next-hop IP must be on the same subnet as one of your interfaces. R10's next hop is 172.16.10.100, not 172.16.10.10 (that's R10 itself).

[ ⚠ LONGEST PREFIX BEAT YOUR AD ]

Symptom: You added a static and expected it to win, but the OSPF route is still installed.

Fix: Confirm the prefix lengths match. A static 0.0.0.0/0 will never beat an OSPF /24 — longest prefix runs before AD.

[ ⚠ FORGOT TO DELETE THE OLD STATIC ]

Symptom: Floating static demo doesn't flip — OSPF never installs.

Fix: Adding ip route X.X.X.X Y.Y.Y.Y Z.Z.Z.Z 120 when an AD-100 entry already exists creates a second static rather than replacing the first — both stay in the config and the lower AD still wins. Remove the original with the full no ip route ... 100 command (matching the AD) before adding the new one.

★ VERIFICATION CHEAT SHEET

! See every route the router believes in show ip route ! Filter to just static routes show ip route static ! Filter to just OSPF routes show ip route ospf ! Detail on a specific prefix (which source won and why) show ip route 172.16.30.0 ! See the candidate routes the OSPF process knows about show ip ospf database ! Adjacency state on the OSPF link show ip ospf neighbor ! Per-interface OSPF parameters (state, cost, neighbours) show ip ospf interface ! What's installed and which protocols are running show ip protocols

★ THINGS WORTH TRIGGERING

[ KILL ONE STATIC ]

On R100, no ip route 192.168.30.0 255.255.255.0 172.16.100.200. Ping PC0 → PC4 — now black-holed at R100. A single missing return route can break end-to-end reachability across a network. This is why static routing doesn't scale.

[ INTERFACE-BASED STATIC ]

Re-add the static with the exit interface instead of the next-hop IP: ip route 192.168.30.0 255.255.255.0 g0/0/1. Works in Packet Tracer; in production, this forces ARP-for-every-remote-IP on multi-access segments. Look at show ip arp to see the proxy ARP entries pile up.

[ ROUTE PRINT DURING FAILOVER ]

Open a continuous show ip route on R40 in one CLI tab. In another tab, run no network 172.16.30.0 0.0.0.255 area 0 under router ospf 1 on R200. Watch OSPF withdraw the prefix, the AD-120 floating static install, the route flip in real time. Then re-add the network statement and watch OSPF preempt.

[ COMPARE TO LAB 5 ]

Lab 5 (OSPF single-area) gets the same end-to-end reachability with zero static routes — just two devices talking OSPF. Sit with that contrast: 22 static lines here vs. a few network statements there. That's the value of running an IGP.

★ LAB DOWNLOAD

Built and tested in Packet Tracer 8.x. PCs are pre-addressed; interface IPs and routing are yours to build. Plan on ~30 minutes for the full lab including the floating static bonus.

► PACKET TRACER LAB — STATIC & FLOATING STATIC 6 routers · 4 access switches · 8 PCs · 4 LANs
Pre-addressed PCs, all routing config is yours to build
INTERMEDIATE FREE PACKET TRACER
⬇ DOWNLOAD .PKT
[ ★ STUDY RESOURCES ]

Static and floating routes are best understood on real gear where you can yank cables and watch failover happen. 2960X + console cable. Amazon affiliate.