IPv4 Packet Header

Hello Don

The TTL is used as a last resort to ensure that IP packets do not continuously roam the network forever if there is some misconfiguration or network fault. Since it is a last resort, it is rare that it is ever needed to get rid of such packets. In most cases, packets will either reach their destination, will be dropped due to lack of a route, or be dropped due to other loop prevention mechanisms such as those of routing protocols as you mentioned in your post.

The reason the default TTL is set so high is that, first, it is generally accepted that you should be able to reach any destination on the Internet within 30 hops under normal circumstances. But you may have situations when there is a routing problem on the internet that may cause this number to increase. So setting this value to 64 or even 255 ensures that you’re not prematurely dropping packets that would have eventually reached their destination, albeit after an unusually high number of hops. Any packets that do exceed 64 hops are likely not going to reach their destinations, so they are dropped outright.

So it is not considered inefficient, because only a very small number of packets actually get dropped due to TTL reaching zero. Secondly, your assumption that TTL will never be used is almost right in the sense that it is rarely used, because of all the other prevention mechanisms in place.

TTL is definitely needed if you have only static routing in your network, because there are no other mechanisms to prevent loops. So if you create a routing loop with your static routes, then only the TTL will be able to get rid of eternally routed packets.

TTL is extensively used in various other mechanisms including the following:

I hope this has been helpful!

Laz