Skip to content

ntpstats 2.17.0

Choose a tag to compare

@github-actions github-actions released this 02 Oct 15:24

Research bench v2, part 2: completes #29.

Added

  • Reference algorithms:

    • hull: Huygens-style. The max-margin line through the offset bounds θm ± δ/2 of a sliding
      window, causal.
    • kalman-combine: multi-server, ntpd-rs-style. Per-source Kalman filters, interval
      intersection, inverse-variance mean.

    With symmetric floors hull is the most accurate single-server estimator on the presets.
    kalman-combine rejects falsetickers and stepping servers.

  • A reproducible benchmark on a replayed trace: examples/scenarios/replay-chrony.toml scores
    every estimator on the delays of a real log under a simulated clock
    (docs/examples/trace-benchmark.html). CI runs it.

  • Stable API: delay traces, PTP chains and the simulator formats join ntpstats.api
    (load_trace, TracePath, ChainScenario, simulate_chain, read_omnetpp_vec,
    inet_oscillator and the rest).

  • Web UI overhaul, still plain JavaScript with uPlot, no build step, offline.

    • Five workspaces: Analyze, Compare (side by side, against a reference, N-cornered hat),
      Comply (time error with TE/TEL and MTIE/TDEV charts; UTC audit with a verdict and an evidence
      report), Lab (simulator, estimator bench, PTP boundary-clock chains) and Live.
    • A command palette (Ctrl K), keyboard shortcuts, a link for every page (#/comply/audit), and
      dataset sparklines, filter and rename.
    • Expandable charts, one-way delays on the Network page, and stale answers are never drawn.
    • New API endpoints: audit, trace, compare, hat, estimators, bench, chain, and the
      audit.html export.
    • A Playwright test drives every page in CI.
  • Simulator interop (#29): OMNeT++ .vec result files are read like logs (INET clock
    timeChanged vectors become time error against simulation time; other vectors on request) and
    written (convert --to omnetpp-vec). ns-3 time value text is written with convert --to ns3.
    ntpstats noise --inet writes INET RandomDriftOscillator settings that reproduce the fitted
    random-walk FM, and lists what INET's oscillator cannot represent.