Running Around and Around with Routing Loops
As your static network grows, so does the chance to introduce loops into the routing tables. The following figure shows this issue in action. Note that the route on Router2 to get to 192.168.1.0/24 is removed, and a route on Router3 to send traffic for 192.168.1.0/24 to Router2 is added incorrectly.
The net effect is that if you sit at Computer2 and attempt to use the ping command to test the IP address of Computer1, the data bounces endlessly between Router2 and Router3.
Well, endlessly is not quite correct. The Time to Live (TTL) is reduced by one every time a router processes an IP packet, and when the TTL is set to zero, it is removed from the network and an Internet Control Message Protocol (ICMP) message is sent to the source computer.
Unlike the use of ICMP, when used with the ping command, ICMP sends status and control messages to IP hosts on the network. The message sent to the host is a Packet Expired in Transit message.
The following example shows a packet expiration message that was received when testing the connection to Computer1 from Computer2:
C:\>ping 192.168.1.10 Pinging 192.168.1.10 with 32 bytes of data: Reply from 192.168.3.3: TTL expired in transit. Reply from 192.168.3.3: TTL expired in transit. Reply from 192.168.3.3: TTL expired in transit. Reply from 192.168.3.3: TTL expired in transit. Ping statistics for 192.168.1.10: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms
To further illustrate this issue of expired packets, here is a copy of the output of the traceroute command for the same message. You let it go for only 10 hops by using the –h modifier, but this is enough to see the pattern that has developed as the data bounces between Router2 and Router3.
D:\utils>tracert -h 10 192.168.1.10 Tracing route to 192.168.1.10 over a maximum of 10 hops 1 <1 ms <1 ms <1 ms 192.168.5.1 2 <1 ms <1 ms <1 ms 192.168.3.3 3 1 ms 1 ms 1 ms 192.168.3.2 4 1 ms 1 ms 1 ms 192.168.3.3 5 1 ms 1 ms 1 ms 192.168.3.2 6 2 ms 2 ms 2 ms 192.168.3.3 7 2 ms 2 ms 2 ms 192.168.3.2 8 3 ms 3 ms 3 ms 192.168.3.3 9 3 ms 3 ms 3 ms 192.168.3.2 10 4 ms 4 ms 4 ms 192.168.3.3 Trace complete.
This issue can be corrected by adjusting the route on Router3 to send data destined for the 192.168.1.0/24 network through Router1 rather than Router2. While this would get the data to the correct location, data for Computer1 would travel from Computer2 through both Router2 and Router3, and you should add a specific route on Router2 to directly route 192.168.1.0/24 data to Router1.
Most routing loops give you an expired packet, so by using the ping or traceroute commands, you can quickly identify the issue though output similar to what you have seen. The lengthier task may be identifying the exact source of the problem, as it likely does with one routing table entry on one router. If you work sequentially through the routers on one end of the connection to the other end, you will find it.