RFC 9748
Updating the NTP Registries
RFC 9748: Updating the NTP Registries π
Okay bestie, this is the RFC that cleans up the NTP registries π§Ήβ¨ It's Updating the NTP Registries, written by R. Salz at Akamai Technologies, published in February 2025.
- Request for Comments: 9748 π
- Publisher: Internet Engineering Task Force (IETF) π
- Category: Standards Track, meaning it's an Internet Standards Track document π
- ISSN: 2070-1721
- Updates: RFCs 5905, 5906, 7821, 7822, and 8573 π
- Obsoletes: the title block doesn't list anything it obsoletes
So this one updates five older RFCs. It doesn't replace any of them π«Ά
Abstract β¨
NTP and NTS are the two protocol specs behind accurate time on the internet, and they each come with their own set of registries. Together those are called the NTP registries π°οΈ
Some of those registries are totally fine, but others have wrong assignments, and some don't follow common practice either π So this doc goes through every NTP and NTS registry, for completeness, and fixes the ones that need it π§
This document updates RFCs 5905, 5906, 7821, 7822, and 8573. π¦
Status of This Memo π
This is an Internet Standards Track document. It's a product of the Internet Engineering Task Force (IETF), so it reflects consensus from the IETF community. It went through public review and got approved for publication by the Internet Engineering Steering Group (IESG) π
If you want more on Internet Standards, check out Section 2 of RFC 7841 π
You can find the current status, any errata, and the way to send feedback at <https://www.rfc-editor.org/info/rfc9748>. Bookmark that one π
Copyright Notice π
Copyright (c) 2025 IETF Trust and the persons identified as the document authors. All rights reserved. π
This document is covered by BCP 78 and by the IETF Trust's Legal Provisions Relating to IETF Documents, which you can read at https://trustee.ietf.org/license-info as they stood on the publication date. Please actually read those, because they spell out your rights and restrictions for this document π§
Any Code Components pulled out of this document have to include the Revised BSD License text, as described in Section 4.e of the Trust Legal Provisions. They come without warranty, as described in the Revised BSD License β οΈ
Table of Contents πΊοΈ
- 1. Introduction
- 2. Existing Registries
- 2.1. Reference ID and Kiss-o'-Death Registries
- 2.2. Extension Field Types
- 2.3. Network Time Security Registries
- 3. NTP Registry Updates
- 3.1. Designated Experts
- 4. IANA Considerations
- 4.1. NTP Reference Identifier Codes
- 4.2. NTP Kiss-o'-Death Codes
- 4.3. NTP Extension Field Types
- 5. Security Considerations
- 6. Normative References
- Acknowledgements
- Author's Address
1. Introduction πΈ
Okay so, NTP and NTS together define a whole bunch of registries, and we call them the NTP registries as a group π§ You can find the NTP ones at https://www.iana.org/assignments/ntp-parameters, and the NTS ones at https://www.iana.org/assignments/nts π
Same tea as the abstract: some registries are right, some have incorrect assignments, and some don't match common practice. So this doc reviews all of them, for completeness, and corrects them where needed π
The bulk of this document basically splits into two parts:
- a summary of the relevant registries, covering the syntax requirements, the registration procedures, and the documents that define them π
- a revised format and entries for each registry being changed π
2. Existing Registries π
This section is a quick recap of the registries and the rules attached to them. It's meant to be a short summary of the syntax and registration requirements for each one π
What it doesn't cover is the semantics or the protocol processing rules, meaning how an implementation acts when it sends or receives any of the fields. Those live somewhere else, bestie π
2.1. Reference ID and Kiss-o'-Death Registries π
[RFC5905] defines two registries: "NTP Reference Identifier Codes" in Section 7.3 and "NTP Kiss-o'-Death Codes" in Section 7.4 β¨
Reference identifiers and kiss codes can be up to four ASCII characters, and if they're shorter, they get padded on the right with all-bits-zero. Entries that start with 0x58, which is the ASCII uppercase letter X, are reserved for Private or Experimental Use π§ͺ Both registries are First Come First Served, and they were created per Section 16 of [RFC5905] π
2.2. Extension Field Types π§©
Section 7.5 of [RFC5905] defines what extension fields look like on the wire, but it doesn't create a registry for them. Iconic behaviour, honestly π
Section 13 of [RFC5906] mentions the "NTP Extension Field Types" registry and defines it indirectly, by defining 30 extensions (10 each for request, response, and error response). It never gives a formal definition of the columns in the registry π Section 10 of [RFC5906] splits the Field Type into four subfields, but only for use within the Autokey extensions π
[RFC7821] adds a new entry, Checksum Complement, to the "NTP Extension Field Types" registry π«Ά
[RFC7822] clarifies the processing rules for Extension Field Types. It's especially about how they interact with the Message Authentication Code (MAC) field, since NTPv4 packets may have a MAC sitting exactly where you'd expect the next extension field header π
[RFC8573] changes the cryptography used in the MAC field π
[RFC8915] adds four new entries to the "NTP Extension Field Types" registry π¦
Now for the tea β The following problems exist with the current registry:
- Many of the entries in the "NTP Extension Field Types" registry have swapped some of their nibbles. For example,
0x0302was listed for Cookie Message Request instead of0x0203π The errors trace back to documentation errors in the original implementation of Autokey. This document marks the erroneous values as reserved. The reason is that some implementation might be using the registered values instead of what the original implementation used. Applications that used those values would have noticed they didn't interoperate with the dominant (if not only) implementation at the time. Marking them as reserved means those applications keep working as they do now π‘οΈ - Some values were mistakenly reused. π
2.3. Network Time Security Registries π
[RFC8915] defines the NTS protocol. The related registries are listed here for completeness, but this document doesn't specify any changes to them π€
In [RFC8915]:
- Sections 7.1 through 7.5 (inclusive) added entries to existing registries π
- Section 7.6 created the "Network Time Security Key Establishment Record Types" registry. It splits the range into three different registration policies: IETF Review, Specification Required, and Private or Experimental Use π§
- Section 7.7 created the "Network Time Security Next Protocols" registry, which splits its range in a similar way π·
- Section 7.8 created the "Network Time Security Error Codes" and "Network Time Security Warning Codes" registries. Both are partitioned the same way π
Part 1 is done, bestie! π Part 2 picks up with Section 3, NTP Registry Updates, so stay tuned π§β¨
4.3. NTP Extension Field Types β¨
okay so this one's the registration procedure glow-up π The registration procedure has been changed to Specification Required and [RFC5906] and this document have been added as references π
Two Notes got added too, and they're lowkey important π
Field Types in the range 0xF000 through 0xFFFF, inclusive, are reserved for experimentation and development. IANA cannot assign them.
Both NTS Cookie and Autokey Message Request have the same Field Type; in practice this is not a problem as the field semantics will be determined by other parts of the message.
The "Reserved for historic reasons" is for differences between the original documentation and implementation of Autokey and marks the erroneous values as reserved, in case there is an implementation that used the registered values instead of what the original implementation used.
Okay the note about the two Field Types 0x0204 is giving "it'll be fine" energy π Same number, different meanings, but the rest of the message sorts it out. Iconic.
The columns are defined as follows π¦
- Field Type (required): a two-byte value in hexadecimal.
- Meaning (required): a brief text description of the field type.
- Reference (required): the publication defining the field type.
IANA has updated the registry as shown in Table 1. Here's the whole glow-up, bestie π
+===============+====================================+=============+
| Field Type | Meaning | Reference |
+===============+====================================+=============+
| 0x0000 | Crypto-NAK; authentication failure | [RFC5905] |
+---------------+------------------------------------+-------------+
| 0x0002 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0x0102 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0x0104 | Unique Identifier | [RFC8915], |
| | | Section 5.3 |
+---------------+------------------------------------+-------------+
| 0x0200 | No-Operation Request | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x0201 | Association Message Request | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x0202 | Certificate Message Request | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x0203 | Cookie Message Request | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x0204 | Autokey Message Request | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x0204 | NTS Cookie | [RFC8915], |
| | | Section 5.4 |
+---------------+------------------------------------+-------------+
| 0x0205 | Leapseconds Message Request | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x0206 | Sign Message Request | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x0207 | IFF Identity Message Request | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x0208 | GQ Identity Message Request | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x0209 | MV Identity Message Request | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x0302 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0x0304 | NTS Cookie Placeholder | [RFC8915], |
| | | Section 5.5 |
+---------------+------------------------------------+-------------+
| 0x0402 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0x0404 | NTS Authenticator and Encrypted | [RFC8915], |
| | Extension Fields | Section 5.6 |
+---------------+------------------------------------+-------------+
| 0x0502 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0x0602 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0x0702 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0x0802 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0x0902 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0x2005 | UDP Checksum Complement | [RFC7821] |
+---------------+------------------------------------+-------------+
| 0x8002 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0x8102 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0x8200 | No-Operation Response | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x8201 | Association Message Response | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x8202 | Certificate Message Response | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x8203 | Cookie Message Response | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x8204 | Autokey Message Response | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x8205 | Leapseconds Message Response | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x8206 | Sign Message Response | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x8207 | IFF Identity Message Response | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x8208 | GQ Identity Message Response | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x8209 | MV Identity Message Response | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0x8302 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0x8402 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0x8502 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0x8602 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0x8702 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0x8802 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0x8902 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0xC002 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0xC102 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0xC200 | No-Operation Error Response | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0xC201 | Association Message Error Response | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0xC202 | Certificate Message Error Response | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0xC203 | Cookie Message Error Response | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0xC204 | Autokey Message Error Response | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0xC205 | Leapseconds Message Error Response | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0xC206 | Sign Message Error Response | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0xC207 | IFF Identity Message Error | [RFC5906] |
| | Response | |
+---------------+------------------------------------+-------------+
| 0xC208 | GQ Identity Message Error Response | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0xC209 | MV Identity Message Error Response | [RFC5906] |
+---------------+------------------------------------+-------------+
| 0xC302 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0xC402 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0xC502 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0xC602 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0xC702 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0xC802 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0xC902 | Reserved for historic reasons | RFC 9748 |
+---------------+------------------------------------+-------------+
| 0xF000-0xFFFF | Reserved for Private or | RFC 9748 |
| | Experimental Use | |
+---------------+------------------------------------+-------------+
Table 1 πΈ
5. Security Considerations π₯π
This document adds no new security considerations, as they are defined in the document that defines the extension. See the References column of the appropriate IANA registry π§ Go check the References column, it's where the real security tea lives π
6. Normative References β¨
okay bestie, this is the reading list the spec leans on π every one of these is a must-know if you wanna implement this stuff π
- [RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, "Network Time Protocol Version 4: Protocol and Algorithms Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010, <https://www.rfc-editor.org/info/rfc5905>.
- [RFC5906] Haberman, B., Ed. and D. Mills, "Network Time Protocol Version 4: Autokey Specification", RFC 5906, DOI 10.17487/RFC5906, June 2010, <https://www.rfc-editor.org/info/rfc5906>.
- [RFC7821] Mizrahi, T., "UDP Checksum Complement in the Network Time Protocol (NTP)", RFC 7821, DOI 10.17487/RFC7821, March 2016, <https://www.rfc-editor.org/info/rfc7821>.
- [RFC7822] Mizrahi, T. and D. Mayer, "Network Time Protocol Version 4 (NTPv4) Extension Fields", RFC 7822, DOI 10.17487/RFC7822, March 2016, <https://www.rfc-editor.org/info/rfc7822>.
- [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10.17487/RFC8126, June 2017, <https://www.rfc-editor.org/info/rfc8126>.
- [RFC8573] Malhotra, A. and S. Goldberg, "Message Authentication Code for the Network Time Protocol", RFC 8573, DOI 10.17487/RFC8573, June 2019, <https://www.rfc-editor.org/info/rfc8573>.
- [RFC8915] Franke, D., Sibold, D., Teichel, K., Dansarie, M., and R. Sundblad, "Network Time Security for the Network Time Protocol", RFC 8915, DOI 10.17487/RFC8915, September 2020, <https://www.rfc-editor.org/info/rfc8915>.
Acknowledgements π«Ά
the NTP Working Group absolutely carried this one, no cap π these people helped a ton, so big thank yous to:
- Miroslav Lichvar, Red Hat
- Daniel Franke, formerly at Akamai Technologies
- Danny Mayer, Network Time Foundation
- Michelle Cotton, formerly at IANA
- Tamme Dittrich, Tweede Golf
Author's Address π
the author behind all of this is Rich Salz π
Rich Salz
Akamai Technologies
Email: rsalz@akamai.com
that's the whole doc, periodt π¦β¨
π¦ where this page comes from
- ietf: rfc9748 2025-02
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms