Monday, April 23, 2012

ping command: TTL Expired In Transit Error and Solution

When I try to ping other UNIX / Linux / BSD or MS-Windows servers in our network I get the following message:
TTL Expired In Transit
How do I fix this problem?

This error indicates network configuration problem. There is loop in routing:
A routing loop is a common problem with various types of networks, particularly computer networks. They are formed when an error occurs in the operation of the routing algorithm, and as a result, in a group of nodes, the path to a particular destination forms a loop. In the simplest version, a routing loop of size two, node A thinks that the path to some destination (call it C) is through its neighbouring node, node B. At the same time, node B thinks that the path to C starts at node A. Thus, whenever traffic for C arrives at either A or B, it will loop endlessly between A and B, unless some mechanism exists to prevent that behaviour.

How Do I Troubleshoot Routing Loop Problem?

To debug the problem you need to type the following command to see current routing table under UNIX / Linux / BSD / OS X operating systems:
# ip route show
OR
# route -n
OR
# netstat -rn
If you are using a hardware router or managed switch, check routing table using vendor specific route command, the following should work on cisco devices:
# show ip route
You can now find out wrong routing tables. You can delete or correct those routes using route command or ip command itself.
### delete example ###
ip route delete 192.168.1.0/24 dev eth1
### set route example ###
ip route add 192.168.1.0/24 dev eth0

In same cases you can simply reboot your router or managed switch and fix the problem.

No comments:

Post a Comment