Octet

What does a routing loop look like in traceroute, and how do you confirm it?

Show the answer

Say this first

The same two or more addresses repeat in a cycle until the trace hits its maximum TTL (30 by default) without reaching the destination. A ping shows "TTL expired in transit". I confirm it with show ip route <destination> on each router in the cycle: each points at the other. Common causes are two static routes pointing at each other, a summary with no Null0 discard route, or mutual redistribution at two points.

Go deeper

What it looks like

Output
R3# traceroute 172.16.9.10
Type escape sequence to abort.
Tracing the route to 172.16.9.10
VRF info: (vrf in name/id, vrf out name/id)
  1 10.0.34.4 1 msec 1 msec 1 msec
  2 10.0.34.3 1 msec 1 msec 1 msec
  3 10.0.34.4 2 msec 1 msec 2 msec
  4 10.0.34.3 2 msec 2 msec 2 msec
  5 10.0.34.4 2 msec 2 msec 2 msec

It carries on alternating until hop 30.

Confirm on both routers

Output
R3# show ip route 172.16.9.10
Routing entry for 0.0.0.0/0, supernet
  Known via "static", distance 1, metric 0, candidate default path
  Routing Descriptor Blocks:
  * 10.0.34.4
      Route metric is 0, traffic share count is 1

R4# show ip route 172.16.9.10
Routing entry for 172.16.0.0/16
  Known via "static", distance 1, metric 0
  Routing Descriptor Blocks:
  * 10.0.34.3
      Route metric is 0, traffic share count is 1

R4 sends the whole 172.16.0.0/16 to R3. R3 no longer has the specific subnet, so it follows its default route back to R4. Each packet bounces until its TTL runs out, and the link between them fills up.

Fixes

  • Correct the wrong route, or put back the missing one.
  • On the router that owns a block, add a discard route so unknown subnets inside it are dropped locally: ip route 172.16.0.0 255.255.0.0 Null0.
  • With redistribution, tag routes and filter them at the second redistribution point.

Traps

  • Calling a trace that ends in * * * a loop. A loop shows repeating addresses, not silence.
How did you do?Book 3.4 Routing