Bug 248002 - ping(8): TTL DETAILS update
Summary: ping(8): TTL DETAILS update
Status: New
Alias: None
Product: Documentation
Classification: Unclassified
Component: Manual Pages (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: freebsd-bugs (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-07-15 14:27 UTC by Jose Luis Duran
Modified: 2020-07-16 00:02 UTC (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jose Luis Duran 2020-07-15 14:27:25 UTC
Reading ping(8), section "TTL DETAILS", I have seen a number of
inconsistencies regarding this value in FreeBSD.  This section of the man page
has not been updated to reflect the current state. For instance:

> Not change it; this is what BSD systems did before the 4.3BSD-Tahoe release.
> In this case the TTL value in the received packet will be 255 minus the
> number of routers in the round-trip path.

This paragraph implies that FreeBSD is still using 255 as its default TTL,
it should be updated to reflect the current value (64) [1], perhaps:

Not change it; this is what BSD systems did before the 4.3BSD-Tahoe release.
In this case the TTL value in the received packet will be 64 minus the number
of routers in the round-trip path.

Other paragraphs could also be updated, for example:

> The TCP/IP specification recommends setting the TTL field for IP packets to
> 64, but many systems use smaller values (4.3BSD uses 30, 4.2BSD used 15).

The TCP/IP specification recommends setting the TTL field for IP packets to
64, FreeBSD uses this value...

The DESCRIPTION mentions that the sysctl net.inet.ip.ttl is used, but
it does not say that this value is 64 by default.

Maybe also include some current OSs? I have compiled a quick list that can be
easily verified pinging the hosts inside the brackets, this should give you
the TTL (plus the number of hops):

Windows: 128 [live.com]
BSDs (NetBSD and OpenBSD): 255 [netbsd.org, openbsd.org]
Linux: 64 [linux.org]

FreeBSD, macOS: 64

> Set it to 255; this is what current BSD systems do.  In this case the TTL
> value in the received packet will be 255 minus the number of routers in the
> path from the remote system to the pinging host.

Set it to 255; this is what some BSD systems do...

Some current BSD systems do use 255 (at least NetBSD and OpenBSD); however,
FreeBSD uses the IANA-recommended value of 64 [2].

References:

[1]  https://github.com/freebsd/freebsd/blob/3f4da6d3e7a2a8cc34a94938bd1c4f80c8d1d449/sys/netinet/ip.h#L212
[2]  https://www.iana.org/assignments/ip-parameters/ip-parameters.xhtml#ip-parameters-2
Comment 1 Jose Luis Duran 2020-07-15 15:10:45 UTC
Thanks to THUS (https://www.tuhs.org), I was able to track when the change was made (4.4 BSD):

4.3 BSD TTL: 255 [3]
4.3 BSD-Tahoe TTL: 255 [4]
4.4 BSD TTL: 64 [5]

References:

[3]  https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD/usr/src/sys/netinet/ip.h
[4]  https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-Tahoe/usr/src/sys/netinet/ip.h
[5]  https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.4BSD/usr/src/sys/netinet/ip.h
Comment 2 Jose Luis Duran 2020-07-15 23:21:08 UTC
(In reply to Jose Luis Duran from comment #1)

Scratch that. Reading imp@'s sources for 2.11BSD:

https://github.com/bsdimp/2.11bsd/blob/master/sys/netinet/ip.h#L150
Comment 3 Jose Luis Duran 2020-07-16 00:02:26 UTC
In FreeBSD, the change from MAXTTL to ip.ttl was done in:

https://github.com/freebsd/freebsd/commit/5639e86bdd7ea151958776264bf5a67e60a54d68