# NTP update (April 2022)
In April we implemented a large part of the NTP specification, and are on track for completion of the project in July 2022. So far we have implemented most of the network interaction and all of the clock selection. The major remaining component is clock adjustment. We are confident that in May we can complete the implementation of the NTP specification (planning details below).
Some technical highlights of the work we've done so far:
__Clock filtering and selection__
This week we were able to run all of clock selection and filtering, producing some actual results:
offset: -0.149ms (jitter: 0.1783950720397744ms)
offset: 0.172ms (jitter: 0.6666872651937156ms)
offset: 0.338ms (jitter: 0.7328107023455227ms)
offset: 0.016ms (jitter: 0.7582886611945668ms)
Here we see `ntpd-rs` monitor what it thinks its offset is based on 4 associations with public NTP servers. The numbers we get out are plausible and seem to agree (in sign and order of magnitude) with what the system NTP daemon is doing.
That means that large parts of the NTP specification are already working. We've done a lot of (fuzz) testing to gain confidence in our implementation.
__Kernel timestamping of received packets__
We now ask the kernel to timestamp when a packet was *received*. That is more accurate than software timestamping. Kernel timestamping of when a package was sent is trickier, and is a stretch goal. (it wouldn't impact accuracy that much)
## Reviewing process
All code is reviewed by at least one other TG engineer, and usually also by DJ. From our perspective this has worked quite well.
Open question: do we want to do more in-depth review session(s). Maybe this is useful before the security audit?
# Planned work
## Planned work May 2022
In May we plan to tackle the remaining technical parts of the NTP specification.
- clock adjustment
- the peer process
- give the peer access to updated system state
- clearly specify what happens when the peer encounters an error
- have the peer handle DENY/RSTR kiss codes properly
See also the [issue tracker](https://github.com/memorysafety/ntpd-rs/issues).
At the end of May, meet with Let's Encrypt to discuss user experience:
## Planned work June 2022
- Implement user experience features
- Meet with Let's Encrypt to discuss security audit
- Prepare for security audit
## Planned work July 2022
- Run two-week validation test
- Security audit
- Process results of the security audit