aboutsummaryrefslogtreecommitdiffstats
s6-networking: the s6-taiclock program

s6-networking
Software
skarnet.org

The s6-taiclock program

s6-taiclock is a client for the TAICLOCK protocol. It 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.

Interface

     s6-taiclock [ -f ] [ -v verbosity ] [ -r roundtrips ] [ -t triptimeout ] [ -h throttle ] [ -T totaltimeout ] [ -e errmax ] [ -p port ] ipaddress | s6-clockview
  • s6-taiclock exchanges TAICLOCK messages with a server such as s6-taiclockd 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 and s6-clockview. It then exits 0.

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.

Notes

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 client binary code (statically linked on a i386) is 50% bigger than the s6-taiclock client. Also, the s6-taiclockd 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 package is the original inspiration for the clock management part of s6-networking. Unfortunately, it is unmaintained.