There's something genuinely satisfying about watching a network reroute itself around a broken link. No manual intervention, no panic — the packets just find another way.
That's what this post is about. I built a multi-router network in GNS3, configured static routing with administrative distance-based backup links, and then deliberately broke links to see if the backup paths kicked in. They did.
If you've been doing basic static routing but haven't touched redundancy yet, this is where things get interesting.
The Problem with Single Static Routes
Most introductory routing labs teach you to write one route per destination:
ip route 10.10.10.0 255.255.255.0 10.10.100.1
That works fine — until the link goes down. With a single static route, the router has no fallback. The traffic just dies.
In real networks, that's not acceptable. You need a backup path that only activates when the primary fails. That's where administrative distance comes in.
Understanding Administrative Distance
Administrative distance (AD) is how a router decides which route to trust when it knows multiple paths to the same destination.
Lower AD = more trusted = used first.
| Route Type | Default AD |
|---|---|
| Directly connected | 0 |
| Static route | 1 |
| EIGRP | 90 |
| OSPF | 110 |
| RIP | 120 |
The trick for backup links is simple: assign the primary route an AD of 1 (default) and the backup route a higher AD like 10. The router installs the primary in its routing table. The backup sits dormant. When the primary link fails, the backup's route becomes the only option — and the router uses it automatically.
# Primary route (AD = 1, implicit)
ip route 10.10.10.0 255.255.255.0 10.10.100.1
# Backup route (AD = 10, only used if primary goes down)
ip route 10.10.10.0 255.255.255.0 10.10.200.2 10
Network Topology
The lab topology spans three routers (RouterA, RouterB, RouterC), four LAN switches, and eight PCs.
IP Address Summary
| Device | Interface | IP Address |
|---|---|---|
| RouterA | f0/0 | 10.10.20.250/24 |
| RouterA | f2/0 | 10.10.100.1/24 |
| RouterA | f3/1 | 10.10.200.1/24 |
| RouterB | f2/0 | 10.10.200.2/24 |
| RouterB | f0/0 | 10.10.150.1/24 |
| RouterB | f3/1 | 10.10.1.250/24 |
| RouterB | f3/0 | 10.10.10.250/24 |
| RouterC | f0/0 | 10.10.100.2/24 |
| RouterC | f2/0 | 10.10.150.2/24 |
| RouterC | f3/0 | 10.10.5.250/24 |
| PC1 | e0 | 10.10.20.1/24 |
| PC2 | e0 | 10.10.20.2/24 |
| PC3 | e0 | 10.10.10.1/24 |
| PC4 | e0 | 10.10.10.2/24 |
| PC5 | e0 | 10.10.1.1/24 |
| PC6 | e0 | 10.10.1.2/24 |
| PC7 | e0 | 10.10.5.1/24 |
| PC8 | e0 | 10.10.5.2/24 |
Link 1 = RouterA f2/0 ↔ RouterC f0/0 (via network 10.10.100.0/24)
Link 2 = RouterB f0/0 ↔ RouterC f2/0 (via network 10.10.150.0/24)
Step 1 — Configure IP Addresses on Routers
RouterA
RouterA# enable
RouterA# configure terminal
RouterA(config)# interface f0/0
RouterA(config-if)# ip address 10.10.20.250 255.255.255.0
RouterA(config-if)# no shutdown
RouterA(config-if)# exit
RouterA(config)# interface f2/0
RouterA(config-if)# ip address 10.10.100.1 255.255.255.0
RouterA(config-if)# no shutdown
RouterA(config-if)# exit
RouterA(config)# interface f3/1
RouterA(config-if)# ip address 10.10.200.1 255.255.255.0
RouterA(config-if)# no shutdown
RouterA(config-if)# end
RouterA# write memory
RouterB
RouterB# enable
RouterB# configure terminal
RouterB(config)# interface f2/0
RouterB(config-if)# ip address 10.10.200.2 255.255.255.0
RouterB(config-if)# no shutdown
RouterB(config-if)# exit
RouterB(config)# interface f0/0
RouterB(config-if)# ip address 10.10.150.1 255.255.255.0
RouterB(config-if)# no shutdown
RouterB(config-if)# exit
RouterB(config)# interface f3/1
RouterB(config-if)# ip address 10.10.1.250 255.255.255.0
RouterB(config-if)# no shutdown
RouterB(config-if)# exit
RouterB(config)# interface f3/0
RouterB(config-if)# ip address 10.10.10.250 255.255.255.0
RouterB(config-if)# no shutdown
RouterB(config-if)# end
RouterB# write memory
RouterC
RouterC# enable
RouterC# configure terminal
RouterC(config)# interface f0/0
RouterC(config-if)# ip address 10.10.100.2 255.255.255.0
RouterC(config-if)# no shutdown
RouterC(config-if)# exit
RouterC(config)# interface f2/0
RouterC(config-if)# ip address 10.10.150.2 255.255.255.0
RouterC(config-if)# no shutdown
RouterC(config-if)# exit
RouterC(config)# interface f3/0
RouterC(config-if)# ip address 10.10.5.250 255.255.255.0
RouterC(config-if)# no shutdown
RouterC(config-if)# end
RouterC# write memory
Step 2 — Configure IP Addresses on PCs
Each PC in GNS3 (VPCS) is configured with its IP, mask, and default gateway. The gateway always points to the LAN interface of the connected router.
# PC1 example
PC1> ip 10.10.20.1/24 10.10.20.250
PC1> save
Repeat the same pattern for PC2 through PC8 using the IP table above.
Step 3 — Configure Static Routes with Backup Links
This is the core of the lab. For every remote network, each router gets two static routes: a primary (AD = 1, implied) and a backup (AD = 10, explicitly set).
RouterA
RouterA# configure terminal
# To reach 10.10.10.0 (PC3/PC4 network)
RouterA(config)# ip route 10.10.10.0 255.255.255.0 10.10.200.2
# Backup via RouterC
RouterA(config)# ip route 10.10.10.0 255.255.255.0 10.10.100.2 10
# To reach 10.10.1.0 (PC5/PC6 network)
RouterA(config)# ip route 10.10.1.0 255.255.255.0 10.10.200.2
RouterA(config)# ip route 10.10.1.0 255.255.255.0 10.10.100.2 10
# To reach 10.10.5.0 (PC7/PC8 network)
RouterA(config)# ip route 10.10.5.0 255.255.255.0 10.10.200.2
RouterA(config)# ip route 10.10.5.0 255.255.255.0 10.10.100.2 10
RouterA(config)# end
RouterA# write memory
RouterB
RouterB# configure terminal
# To reach 10.10.20.0 (PC1/PC2 network)
RouterB(config)# ip route 10.10.20.0 255.255.255.0 10.10.200.1
RouterB(config)# ip route 10.10.20.0 255.255.255.0 10.10.150.2 10
# To reach 10.10.5.0 (PC7/PC8 network)
RouterB(config)# ip route 10.10.5.0 255.255.255.0 10.10.150.2
RouterB(config)# ip route 10.10.5.0 255.255.255.0 10.10.200.1 10
# To reach 10.10.100.0 (Link 1 network)
RouterB(config)# ip route 10.10.100.0 255.255.255.0 10.10.150.2
RouterB(config)# ip route 10.10.100.0 255.255.255.0 10.10.200.1 10
RouterB(config)# end
RouterB# write memory
RouterC
RouterC# configure terminal
# To reach 10.10.20.0 (PC1/PC2 network)
RouterC(config)# ip route 10.10.20.0 255.255.255.0 10.10.100.1
RouterC(config)# ip route 10.10.20.0 255.255.255.0 10.10.150.1 10
# To reach 10.10.10.0 (PC3/PC4 network)
RouterC(config)# ip route 10.10.10.0 255.255.255.0 10.10.150.1
RouterC(config)# ip route 10.10.10.0 255.255.255.0 10.10.100.1 10
# To reach 10.10.1.0 (PC5/PC6 network)
RouterC(config)# ip route 10.10.1.0 255.255.255.0 10.10.150.1
RouterC(config)# ip route 10.10.1.0 255.255.255.0 10.10.100.1 10
RouterC(config)# end
RouterC# write memory
Step 4 — Verify Baseline Connectivity
Before testing failure scenarios, confirm the network works normally. Ping across routers end-to-end.
# From PC1, ping PC8
PC1> ping 10.10.5.2
You should see 5 successful replies.
# From PC2, ping PC5
PC2> ping 10.10.1.1
Step 5 — Scenario 1: Ping PC8 from PC1 with Link 1 Down
Link 1 is the direct connection between RouterA (f2/0) and RouterC (f0/0). Taking it down forces traffic through RouterB instead.
Both ends of the link must be shut down. Bringing down only one side leaves the other router with an active interface still trying to use the link — you'll see intermittent failures instead of clean failover.
# Shut down RouterA's side of Link 1
RouterA# configure terminal
RouterA(config)# interface f2/0
RouterA(config-if)# shutdown
# Shut down RouterC's side of Link 1
RouterC# configure terminal
RouterC(config)# interface f0/0
RouterC(config-if)# shutdown
Now ping PC8 from PC1:
PC1> ping 10.10.5.2
The first 1–2 packets may time out while the router converges. After that, replies come back through the backup path (via RouterB).
Step 6 — Scenario 2: Ping PC7 from PC3 with Link 2 Down (Link 1 Active)
Now bring Link 1 back up first, then take down Link 2 (RouterB f0/0 ↔ RouterC f2/0).
# Re-enable Link 1
RouterA(config)# interface f2/0
RouterA(config-if)# no shutdown
RouterC(config)# interface f0/0
RouterC(config-if)# no shutdown
# Shut down Link 2
RouterC# configure terminal
RouterC(config)# interface f2/0
RouterC(config-if)# shutdown
RouterB# configure terminal
RouterB(config)# interface f0/0
RouterB(config-if)# shutdown
Now ping PC7 from PC3:
PC3> ping 10.10.5.1
Traffic from PC3 now goes: RouterB → RouterA → RouterC → PC7, using Link 1 as the active path.
How to Verify
# Check routing table — look for [10/0] entries (backup routes)
RouterA# show ip route
# Confirm interface status
RouterA# show interfaces f2/0
RouterA# show ip interface brief
A healthy routing table for RouterA will show two entries per destination — the active one installed normally, the backup marked with its higher AD in brackets like [10/0].
What I Learned
Administrative distance is what makes backup links work. Without it, two static routes to the same destination just confuse the router — it might load-balance instead of treating one as a standby. Setting a higher AD on the backup gives the router a clear rule: use this only when the primary is gone.
Both ends of a link must go down for clean failover. I found this out the hard way — shutting down only one side caused partial packet loss rather than clean switchover. Cisco routers detect the link down on a shutdown interface, but the far end may still think it's connected.
Static routing with AD-based backups is simple but powerful. It's not as automatic as OSPF or EIGRP, but for small, predictable topologies it's completely reliable and much easier to reason about.
Common Mistakes
| Mistake | What Happens | Fix |
|---|---|---|
| Only shutting down one side of the failed link | Intermittent packet loss instead of clean failover | Shut down both interfaces |
| Forgetting to set AD on backup route | Router load-balances instead of using one as primary | Always add 10 at the end of backup route command |
| Using the same AD for primary and backup | Both routes get installed; unpredictable behavior | Primary = 1 (default), backup = 10 |
| Not configuring return routes | One-way traffic — ping fails from destination side | Every router needs routes in both directions |
Skipping write memory
|
Config lost on reload | Always save after configuring |
Conclusion
Static routing with backup links is one of those foundational skills that shows up everywhere. Even in networks running dynamic routing protocols, static fallbacks are common for out-of-band paths, management links, or ISP connections.
The administrative distance trick is clean: one number tells the router exactly what to do when things break. Once you understand it, designing resilient topologies becomes a lot more intuitive.
If you try this out in GNS3, start with a simpler 2-router setup before scaling to three routers — it helps you visualize the path logic before it gets more complex.























Top comments (0)