-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Validate, evaluate and study network time synchronisation.
ntpstats reads what time systems already produce:
- logs of ntpd, NTPsec, chrony and linuxptp;
- packet captures of NTP, NTP over PTP (RFC 10030) and PTP;
- GNSS time-transfer and laboratory files;
- network-simulator results.
It computes the statistics used in timing research and telecom standards, each with a stated uncertainty: frequency stability with confidence intervals and noise identification, time error, and an audited error bound to UTC. It measures servers itself with NTPv4, NTS, NTPv5 and Roughtime clients, and its simulator with ground truth is a test bench for synchronisation algorithms. Use it as a command-line tool, a Python library with a stable API, a local web UI, or in your browser.
pip install ntpstats
ntpstats ui /var/log/chrony/measurements.log # local web UI
ntpstats stability tracking.log -k oadev,tdev --ci 0.95
| Page | What it covers |
|---|---|
| Getting started | install, the web UI and its shortcuts, first analyses |
| CLI reference | every command and its options |
| In your browser | the web UI running locally in the page (Pyodide), no install |
| Notebooks & gallery | runnable notebooks and reproductions of published results |
| Page | What it covers |
|---|---|
| Formats | every supported input, sign conventions, how to enable the logs |
| Statistics | ADEV … TheoH, MTIE, EDF and confidence intervals, masks, dynamic views |
| Network & estimators | delay floor, wedge, FPP, filters and estimators |
| PTP captures & time error | PTP and NTP over PTP from captures, max|TE|, cTE, dTE, limits and masks |
| Sources, instruments & bounds | live daemons, instrument profiles, clock-error bound validation |
| Metrology | power-law noise model, spectra, cornered hat, holdover |
| Research data | CGGTTS, RINEX clock, Circular T, RIPE Atlas, NTP Pool, the interop dataset |
| Page | What it covers |
|---|---|
| Audit, events & CI checks | UTC traceability audit, change detection, GitHub Action, pytest assertions |
| Monitoring | Prometheus/OpenMetrics, OpenTelemetry, Grafana |
| Protocols | NTS, NTS pools, NTPv5, Roughtime, RFC 9769 interleaved mode |
| Page | What it covers |
|---|---|
| Trace replay & PTP chains | real network delays in the bench, PTP exchanges and transparent clocks, boundary-clock chains, OMNeT++/INET and ns-3, reference algorithms |
| Dataframes & Parquet | pandas, xarray, Parquet/Arrow |
| Writing a plugin | add formats, estimators, detectors, masks and profiles from your own package |
| Stable32, TimeLab, allantools | moving data and code over, and checking the numbers agree |
| Stable API and API reference | the 3.x API promise and every module |
| Page | What it covers |
|---|---|
| Validation | how correctness is established, and how to validate your own setup |
| Live interop | monthly results against public NTP/NTS/NTPv5/Roughtime servers |
| State of the art and Tools landscape | where network time is in 2026, and how ntpstats relates to other tools |
ntpstats is MIT-licensed, © 2012–2026 Thiago de Freitas. The only runtime dependency is numpy; everything else (plots, NTS, dataframes) is an optional extra.
ntpstats
- Home
- Getting started
- CLI reference
- In your browser
- Input formats
- Statistics
- Network & estimators
- Trace replay & PTP chains
- PTP & time error
- Sources & bounds
- Audit, events & CI
- Monitoring
- Protocols
- Metrology
- Research data
- Dataframes & Parquet
- Writing a plugin
- Notebooks & gallery
- Validation
- API reference
- Live interop
- State of the art
- Tools landscape
- Changelog
- Roadmap