kb:time_sync:tzdist

TZDIST

tzdist is a new network protocol to distribute time zone descriptions including a leap second table and thus TAI-UTC offset information via the network.

The protocol has originally been designed to support WebDAV/CalDAV applications, but could also be very useful for standard time synchronization applications.

Currently, time zone updates for computers are distributed as software updates only. Whenever a new TZ DB version is rolled out, OS vendors have to generate a software update package for their OS or distro which mainly contains just some updated time zone descriptions.

Accurate current time zone rules are not only required to display correct local time, but also to schedule calendar events for the right point in time.

If an OS version or distro goes out of support then update packages aren't provided anymore, and time zone rules aren't updates anymore, either. For embedded systems this is even worse since often there aren't any firmware updates provided anyway.

:!: As reported in some mailing lists, newer versions of Apple's IOS and Google's Android provide some way to update the time zone data, but usually the phones have to be rebooted to let time zone rule changes take effect.

A tzdist client could be a nice extension:

  • NTP cares about the correct UTC time
  • The tzdist client takes care that time zone rules as well as leap second/TAI info is updated

Some RFCs have been published to specify the protocol and server, and there have been implementations for testing.

Actually it's not clear if the test server is still operational. See the discussions

Even if a tzdist server is available, and there's a client that fetches the tzdist data from the server, the remaining question is how to integrate the data a client receives from a server.

There's still much room for improvements for this.

  • Can a tzdist client update a local TZ DB file on the fly?
  • If it can do this, can an application detect that the TZ rules may have been updated, and seamlessly start using the new rules, or has the application to be restarted to let the new TZ rules take effect? This also depends on the implementation of the runtime library used by applications, e.g the glibc.
  • On Windows it should be relatively easy for a tzdist to update the registry, if time zone rules have changed

A current version of ntpd detects at runtime when the leap second file specified in its configuration file has been updated, and re-reads the file, so the leap second and TAI information can be updated on the fly.

So a tzdist client would have to be able to (re-)write a leap second file if required, or some other mechanism needed to be invented to pass the updated data to ntpd.

A discussion on this topic was started on the tzdist mailing list, but didn't yield a real result:

Also a ticked was opened, but then closed without any effect:


Martin Burnicki martin.burnicki@meinberg.de, last updated 2020-09-08

  • kb/time_sync/tzdist.txt
  • Last modified: 2020-09-21 12:45
  • by 127.0.0.1