TAICLOCK D. J. Bernstein, djb@pobox.com 19970814 1. Introduction TAICLOCK servers announce the current time in TAI64NA format, as defined in http://pobox.com/~djb/proto/tai64.txt. Previous Internet clock protocols include TIME and NTP. TIME offers only 1-second precision, which is inadequate for many applications; TAI64NA offers 1-attosecond precision. Both TIME and NTP use time formats that will roll over in 2038; the TAI64NA format will last for hundreds of billions of years. The NTP timescale is based on UTC, posing problems for real-time applications whenever a leap second occurs; the TAI64NA timescale is based on TAI. TAICLOCK is designed to be very easy to implement. 2. Protocol TAICLOCK runs over an error-detecting datagram protocol. The client sends the server a packet, between 20 bytes and 256 bytes long. Bytes 0 through 3 of the packet are the ASCII string "ctai". The server replaces byte 0 of the packet with ASCII "s", replaces bytes 4 through 19 with the current time in TAI64NA format, and sends the modified packet back to the client. The server may arrange for another IP address (e.g., another address on a multihomed host) to send the response to the client. The server ignores any packet that does not begin with "ctai" and any packet shorter than 20 bytes. It may truncate or ignore packets longer than 256 bytes. 3. Encapsulation TAICLOCK can be used over UDP/IP. The server listens on UDP port 4014. Note that UDP is not secure. Clients can prevent some attacks by including a ``cookie'' in the packet and checking for the same ``cookie'' in the server's response. In any case, clients that use TAICLOCK results to adjust the local clock should limit the total daily adjustment to 60 seconds at most.