pendulum-project / ntpd-rs

A full-featured implementation of the Network Time Protocol, including NTS support.
https://trifectatech.org
Other
781 stars 43 forks source link
clock ntp ntp-client ntp-protocol ntp-server ntpd time time-synchronization

checks codecov Crates.io Docs OpenSSF Best Practices OpenSSF Scorecard

ntpd-rs

ntpd-rs is a tool for synchronizing your computer's clock, implementing the NTP and NTS protocols. It is written in Rust, with a focus on security and stability. It includes both client and server support.

If a feature you need is missing please let us know by opening an issue.

Documentation

Be sure to check out the documentation website as it includes guides on getting started, installation and migration, as well as a high-level overview of the code structure.

Usage

You can install the packages from the releases page. These packages configure ntpd-rs to synchronize your computers clock to servers from the NTP pool. After installation, check the status of the ntpd-rs daemon with

$ sudo systemctl status ntpd-rs

If ntpd-rs was not started automatically, you can do so now with

$ sudo systemctl start ntpd-rs

You should now be able to check the synchronization status with

$ ntp-ctl status
Synchronization status:
Dispersion: 0.000299s, Delay: 0.007637s
Desired poll interval: 16s
Stratum: 4

Sources:
ntpd-rs.pool.ntp.org:123/77.171.247.180:123 (1): +0.000024±0.000137(±0.016886)s
    poll interval: 16s, missing polls: 0
    root dispersion: 0.005905s, root delay:0.016190s
ntpd-rs.pool.ntp.org:123/45.137.101.154:123 (2): +0.000022±0.000081(±0.007414)s
    poll interval: 16s, missing polls: 0
    root dispersion: 0.004517s, root delay:0.005051s
ntpd-rs.pool.ntp.org:123/178.215.228.24:123 (3): +0.000117±0.000091(±0.009162)s
    poll interval: 16s, missing polls: 0
    root dispersion: 0.000549s, root delay:0.004318s
ntpd-rs.pool.ntp.org:123/162.159.200.123:123 (4): +0.000111±0.000076(±0.004066)s
    poll interval: 16s, missing polls: 0
    root dispersion: 0.000351s, root delay:0.003571s

Servers:

The top part shows the overall quality of the time synchronization, and the time sources section shows which servers are used as well as offsets and uncertainties of those individual servers.

For more details on how to install and use ntpd-rs, see our documentation website.

Roadmap

In Q1 2023 we completed our work on NTS. Our implementation is now full-featured, it supports NTP client and server with NTS.

Our roadmap for 2024:

We seek sponsorship for features and maintenance to continue our work. Contact us via pendulum@tweedegolf.com if you are interested!

History

2022

The project originates from ISRG's project Prossimo, as part of their mission to achieve memory safety for the Internet's most critical infrastructure.

Prossimo

Prossimo funded the initial development of the NTP client and server, and NTS support. The NTP initiative page on Prossimo's website tells the story.

2023

After completion of the initial development, the project's ownership moved from Prossimo to Tweede golf in April 2023. See the NTP announcement for more information.

Tweede golf is the long-term maintainer of ntpd-rs, that is now part of Tweede golf's Project Pendulum. Pendulum is building modern, open-source implementations of the Network Time Protocol (ntpd-rs) and the Precision Time Protocol (Statime).

In July of 2023 the Sovereign Tech Fund invested in Pendulum, securing ntpd-rs development and maintenance in 2023, and maintenance and adoption work in 2024.

STF