Skip to content

Live interoperability results

The Live interop workflow runs every Monday (and on demand) on GitHub-hosted runners and queries public servers with every ntpstats client. The latest results are in the workflow's job summary, and the first run of each month is recorded in the open dataset in data/interop/ (JSON lines, schema in its README). The dataset ships with every release and is therefore archived on Zenodo with it:

ntpstats dataset data/interop                 # availability, offsets, protocol support per server
ntpstats info data/interop --all-peers        # one series per test and server

Below is the first run, kept as a reference.

2026-09-29 11:26 UTC (ntpstats 2.2.0, GitHub Actions ubuntu-latest, IPv4)

NTPv4 (SNTP, random transmit timestamp)

server address stratum refid offset delay root dist.
time.cloudflare.com 162.159.200.123 3 10.157.8.4 -65.6 µs 5.15 ms 6.1 ms
time.google.com 216.239.35.0 1 GOOG -30.5 µs 6.08 ms 91.6 µs
ptbtime1.ptb.de 192.53.103.108 1 PTB -121 µs 93.7 ms 68.7 µs
time.nist.gov 132.163.97.4 1 NIST -1.85 ms 47.1 ms 610 µs
pool.ntp.org 23.172.120.58 2 54.219.187.236 -700 µs 108 ms 526 µs
ntp.ubuntu.com 185.125.190.58 2 29.88.99.4 -695 µs 79 ms 3.51 ms

NTS (RFC 8915): two authenticated exchanges per server

server NTP host:port stratum offset delay cookies left
time.cloudflare.com time.cloudflare.com:123 3 -71.2 µs 5.2 ms 8
nts.netnod.se 194.58.205.197:4123 1 -1.69 ms 108 ms 8
ptbtime1.ptb.de ptbtime1.ptb.de:123 1 474 µs 95.9 ms 8
ntppool1.time.nl ntppool1.time.nl:123 1 44 µs 91.8 ms 8
ntp.3eck.net ntp.3eck.net:123 2 -525 µs 95.6 ms 8

Notes: - Netnod hands out a different NTP server and port (4123) through the NTS-KE server and port negotiation records, which the client follows. - "cookies left = 8" after two queries shows that cookie renewal works: each authenticated response returned a fresh cookie encrypted with the S2C key. - The large offsets and delays of distant servers (PTB, Netnod and NIST seen from a US data centre) come from path asymmetry, not clock error. This is exactly what the offset/delay wedge and the delay-weighted estimators in ntpstats are for.

NTPv5 (draft-ietf-ntp-ntpv5-09 upgrade probe)

None of the probed public servers (Cloudflare, PTB, time.nl) offered NTPv5 at the time of the run. The v5 client is verified against a local draft-09 test server (see tests/test_sntp.py) whose wire format was cross-checked with ntpd-rs.