The Count-to-Infinity Bug in Network Routing: Split Horizon & Poison Reverse
The Count-to-Infinity Bug in Network Routing: Split Horizon & Poison Reverse In Distance Vector routing protocols (such as RIP and Bellman-Ford implementations), routers maintain routing tables by exchanging distance v
The Count-to-Infinity Bug in Network Routing: Split Horizon & Poison Reverse
In Distance Vector routing protocols (such as RIP and Bellman-Ford implementations), routers maintain routing tables by exchanging distance vectors solely with their immediate neighbors.
While computationally simple, this decentralized architecture is vulnerable to a subtle, catastrophic bug: The Count-to-Infinity Routing Loop.
⚡ How the Loop Forms
Consider a simple linear network of three routers:
[ Router A ] ─── cost 1 ─── [ Router B ] ─── cost 1 ─── [ Router C ]
- Router B reaches C with cost
1. - Router A reaches C via B with cost
2.
Now, imagine the physical link between B and C suddenly snaps:
[ Router A ] ────────────── [ Router B ] ⚡ Link Broken ⚡ [ Router C ]
- The Disconnect: Router B detects that its direct route to C is dead.
- The Erroneous Advertisement: However, Router A had previously advertised: "I can reach C with distance 2" (unbeknownst to B, A's path originally routed through B!).
- The Trap: Router B mistakenly assumes Router A has a different, independent path to C. Router B updates its table: "I can reach C through A with cost 3!"
- The Escalation: Router A receives B's update and recalculates: "B's distance increased to 3, so my distance via B is now 4!"
-
Count-to-Infinity: The metric slowly bounces back and forth:
2 → 3 → 4 → 5 → ... → 16. Packets destined for C bounce between A and B until their TTL expires!
🛠️ The Architectural Fixes
Protocol engineers introduced two techniques to break the cycle:
1. Split Horizon
"Never advertise a route back out the same interface you learned it from."
- Router A learned its path to C through Router B. Therefore, Router A never includes the route to C when sending updates to Router B.
2. Poison Reverse
"If you route through a neighbor, advertise that destination back to them as unreachable (
∞)."
- Router A explicitly tells Router B:
Destination C: Distance = ∞ (16 in RIP).- This immediately informs Router B: "Do not route through me to reach C; my only path goes through you!"
🚀 Simulate Distance Vector Routing Loops Interactively
You can configure node topologies, snap links in real time, and observe Bellman-Ford convergence animations on Binary Dose.
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.