S6-TAICLOCK(8)

NAME
s6-taiclock - client for the TAICLOCK[1] protocol

SYNOPSIS
s6-taiclock [-f] [-v verbosity] [-r roundtrips] [-t triptimeout] [-h throttle] [-T totaltimeout] [-e errmax] [-p port] ipaddress

DESCRIPTION
s6-taiclock connects to a TAICLOCK server, computes an estimated discrepancy between the local clock time and the absolute time given by the server, and outputs it on stdout.

s6-taiclock exchanges TAICLOCK messages with a server such as s6-taiclockd(8) listening on ipaddress, UDP port 4014. ipaddress can be IPv4 or IPv6.

It computes the mean difference between the absolute time given by the system clock and the one given by the server.

It prints the difference to stdout in a format understood by s6-clockadd(8) and s6-clockview(8). It then exits 0.

  On the usage of NTP vs. TAICLOCK
TAICLOCK is not as generic or failproof as NTP. It is not as resistant to network latency. It has been designed to broadcast time on a local area network, whereas NTP has been designed to broadcast time over the whole Internet.

TAICLOCK will produce faster results on a LAN; moreover, the point of TAICLOCK is to broadcast TAI instead of UTC, so it is more accurate around a leap second.

The Internet is much more reliable latency-wise today than it was when dialout connections and broken routing protocols were the norm. So it is possible to use TAICLOCK across a WAN if the accuracy expectations are not too strict.

TAICLOCK is much easier to implement. The s6-sntpclock(8) client binary code (statically linked on a i386) is 50% bigger than the s6-taiclock client. Also, the s6-taiclockd(8) server is extremely small (close to 50% smaller than the client), whereas NTP servers, even SNTP servers, are behemoths requiring a project of their own.

  Related work
The clockspeed[2] package is the original inspiration for the clock management part of s6-networking. Unfortunately, it is unmaintained.

OPTIONS

-f  Force. Normally, s6-taiclock exits 111 if it cannot compute a time with a smaller uncertainty than errmax. If this option is set, it will output a time difference and exit 0 even if the error is too big.

-v verbosity
    Be more or less verbose. By default, verbosity is 1. 0 means only print fatal error messages; 2 means print advanced warnings.

-r roundtrips
    Perform roundtrips exchanges with the server. By default, roundtrips is 10. A lower value yields a higher time uncertainty; a higher value puts more load on the server.

-t triptimeout
    If a TAICLOCK exchange with the server takes more than triptimeout milliseconds, abort this exchange and move on to the next one. By default, triptimeout is 2000.

-h throttle
    Wait throttle milliseconds between exchanges with the server. A lower value gets the final result earlier, but exerts more load on the server. A higher value puts a lighter load on the server, but delays the computation. By default, throttle is 0. It is recommended to set it to a reasonable nonzero value when increasing roundtrips.

-T totaltimeout
    If the whole operation takes more than totaltimeout milliseconds, abort and exit 1. By default, totaltimeout is 10000.

-e errmax
    Accept a maximum time uncertainty of errmax milliseconds. By default, errmax is 100.

-p port
    Contact a server on port port. By default, port is 4014.

SEE ALSO
s6-clockadd(8), s6-clockview(8), s6-sntpclock(8), s6-taiclockd(8)

[1] https://cr.yp.to/proto/taiclock.txt

[2] https://cr.yp.to/clockspeed.html This man page is ported from the authoritative documentation at: https://skarnet.org/software/s6-networking/s6-taiclock.html

AUTHORS
Laurent Bercot Alexis <flexibeast@gmail.com> (man page port)