<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ntp-update-registries-16" number="9748" category="std" consensus="true" submissionType="IETF" obsoletes="" updates="5905, 5906, 7821, 7822, 8573" tocInclude="true" sortRefs="true" symRefs="true" version="3" xml:lang="en">

  <front>
    <title>Updating the NTP Registries</title>
    <seriesInfo name="RFC" value="9748"/>
    <author initials="R." surname="Salz" fullname="Rich Salz">
      <organization>Akamai Technologies</organization>
      <address>
        <email>rsalz@akamai.com</email>
      </address>
    </author>
    <date year="2025" month="February"/>
    <area>INT</area>
    <workgroup>ntp</workgroup>
    <keyword>NTP</keyword>
    <keyword>extensions</keyword>
    <keyword>registries</keyword>
    <keyword>IANA</keyword>
    <abstract>
<t>The Network Time Protocol (NTP) and Network Time Security (NTS) documents
define a number of registries, collectively called the NTP
registries.</t>
<t>   Some registries are correct, but some include incorrect assignments 
   and some don't follow common practice. For the sake of completeness, 
   this document reviews all NTP and NTS registries, and corrects the 
   registries where necessary.</t>

      <t>This document updates RFCs 5905, 5906, 7821, 7822, and 8573.
</t>
    </abstract>
  </front>
  <middle>


<section anchor="introduction">
      <name>Introduction</name>
      <t>The Network Time Protocol (NTP) and Network Time Security (NTS) documents
define a number of registries, collectively called the NTP
registries.
The NTP registries can all be found at
<eref target="https://www.iana.org/assignments/ntp-parameters" brackets="angle"/>
and the NTS registries can all be found at
<eref target="https://www.iana.org/assignments/nts" brackets="angle"/>.</t>
      <t>Some registries are correct, but some include incorrect assignments 
and some don't follow common practice. For the sake of completeness, 
this document reviews all NTP and NTS registries, and corrects the 
registries where necessary.</t>

      <t>The bulk of this document can be divided into two parts:</t>
      <ul spacing="normal">
        <li>
          <t>a summary of the relevant registries, including syntax requirements, 
registration procedures, and the defining documents.</t>
        </li>
        <li>
          <t>a revised format and entries for each registry 
being modified. </t>
        </li>
      </ul>
    </section>
    <section anchor="existing-registries">
      <name>Existing Registries</name>
      <t>This section describes the registries and the rules for them.
It is intended to be a short summary of the syntax and registration
requirements for each registry.
The semantics and protocol processing rules for each registry -- that is,
how an implementation acts when sending or receiving any of the fields --
are not described here.</t>
      <section anchor="reference-id-kiss-o-death">
        <name>Reference ID and Kiss-o'-Death Registries</name>

        <t><xref target="RFC5905"/> defines two registries:
	"NTP Reference Identifier Codes" in Section <xref target="RFC5905" section="7.3" sectionFormat="bare"/> and the
"NTP Kiss-o'-Death Codes" in Section <xref target="RFC5905" section="7.4" sectionFormat="bare"/>.  Reference identifiers and kiss codes can be up to four ASCII characters, 
padded on the right with all-bits-zero if necessary.
Entries that start with 0x58, the ASCII
letter uppercase X, are reserved for Private or Experimental Use.
Both registries are First Come First Served. The registries were created
per <xref section="16" sectionFormat="of" target="RFC5905"/>.</t>
      </section>
      <section anchor="extension-field-types">
        <name>Extension Field Types</name>
        <t><xref section="7.5" sectionFormat="of" target="RFC5905"/> defines the on-the-wire format of extension
fields but does not create a registry for them.</t>
        <t><xref target="RFC5906" sectionFormat="of" section="13"/> mentions the "NTP Extension Field Types" registry, and defines it
indirectly by defining 30 extensions (10 each for request, response, and
error response).
It does not provide a formal definition of the columns in the registry.
<xref section="10" sectionFormat="of" target="RFC5906"/> splits the Field Type into four subfields,
only for use within the Autokey extensions.</t>
        <t><xref target="RFC7821"/> adds a new entry, Checksum Complement, to the "NTP Extension Field Types" registry.</t>
        <t><xref target="RFC7822"/> clarifies the processing rules for Extension Field Types,
particularly around the interaction with the Message Authentication
Code (MAC) field. NTPv4 packets may contain a MAC that appears where
one would expect the next extension field header.</t>
        <t><xref target="RFC8573"/> changes the cryptography used in the MAC field.</t>
        <t><xref target="RFC8915"/> adds four new entries to the "NTP Extension Field Types" registry.</t>
        <t>The following problems exist with the current registry:</t>
        <ul spacing="normal">
          <li>

            <t>Many of the entries in the "NTP Extension Field Types" registry have
swapped some of the nibbles; for example, 0x0302 was listed for Cookie Message 
Request instead of 0x0203.  
The errors are due to documentation errors with the original implementation
of Autokey.
This document marks the erroneous values as reserved, in case there
is an implementation using the registered values
instead of what the original implementation used.
Applications that used those values would have realized
that they did not interoperate with the dominant (if not only)
implementation at the time.
Marking the values as reserved ensures that any such applications continue
to work as is.</t>
          </li>
          <li>
            <t>Some values were mistakenly reused.</t>
          </li>
        </ul>
      </section>
      <section anchor="network-time-security-registries">
        <name>Network Time Security Registries</name>
        <t><xref target="RFC8915"/> defines the NTS protocol.
The related registries are listed here for completeness, but there are no
changes specified in this document.</t>

<t>In <xref target="RFC8915"/>:</t>
        <t>Sections <xref target="RFC8915" section="7.1" sectionFormat="bare"/> through <xref target="RFC8915" section="7.5" sectionFormat="bare"/> (inclusive) added entries to existing registries.</t>

        <t>Section <xref target="RFC8915" section="7.6" sectionFormat="bare"/> created the "Network Time Security Key Establishment Record Types" registry that partitions the range into three different registration policies:
IETF Review, Specification Required, and Private or Experimental Use.</t>
        <t>Section <xref target="RFC8915" section="7.7" sectionFormat="bare"/> created the "Network Time Security Next Protocols" registry that similarly partitions the range.</t>
        <t>Section <xref target="RFC8915" section="7.8" sectionFormat="bare"/> created the "Network Time Security Error Codes" and "Network Time Security Warning Codes" registries.  
Both registries are partitioned the same way.</t>
      </section>
    </section>

      <section anchor="registry-updates">
<name>NTP Registry Updates</name>
      <t>The following general guidelines apply to the NTP registries:</t>
      <ul spacing="normal">
        <li>
          <t>A partition of the "NTP Extension Field Types" registry is reserved for Private or Experimental Use.</t>
        </li>
        <li>
          <t>In the "NTP Reference Identifier Codes" and "NTP Kiss-o'-Death Codes" registries, entries with ASCII fields are now limited to uppercase letters or digits.  Fields
starting with 0x58, the uppercase letter "X", are reserved for Private or
Experimental Use.</t>
        </li>
        <li>
          <t>The policy for each registry is now Specification Required, as defined
in <xref section="4.6" sectionFormat="comma" target="RFC8126"/>.</t>
        </li>
      </ul>
      
      <section anchor="designated-experts">
<name>Designated Experts</name>
      <t>The IESG is requested to choose three designated experts (DEs), with approvals from two being required to implement a change. Guidance for the experts is given below.</t>
        <t>The DEs should be familiar with <xref target="RFC8126"/>, particularly
Section <xref target="RFC8126" section="5" sectionFormat="bare"/>. As that reference suggests, the DE should ascertain the existence
of a suitable specification and verify that it is publicly available. The DE
is also expected to check the clarity of purpose and use of the requested
code points.</t>
        <t>In addition, the DE is expected to be familiar with this document,
specifically the history documented here.</t>
    </section>
      </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>

      <t>Each entry described in the subsections below is intended to completely
replace the existing entry with the same name.</t>

      <section anchor="ntp-reference-identifier-codes">
        <name>NTP Reference Identifier Codes</name>

        <t>The registration procedure has been changed to Specification Required and this document has been added as a reference.</t>
        <t>The Note has been changed to read as follows:</t>

	<blockquote>Codes beginning with the character "X" are reserved for
	experimentation and development. IANA cannot assign them.</blockquote>

        <t>The columns are defined as follows:</t>
        <dl spacing="compact" newline="false">
          <dt>ID (required):</dt><dd> a four-byte value padded on the right
          with all-bits-zero.  Each byte other than padding must be ASCII
          uppercase letters or digits.</dd>
          <dt>Clock source (required):</dt><dd>a brief text description of the ID.</dd>
          <dt>Reference (required):</dt><dd>the publication defining the ID.</dd>
        </dl>

        <t>The existing entries are left unchanged.</t>
      </section>
      <section anchor="ntp-kiss-o-death-codes">
        <name>NTP Kiss-o'-Death Codes</name>
        <t>The registration procedure is changed to Specification Required and this document has been added as a reference.</t>
        <t>The Note has been changed to read as follows:</t>

        <blockquote>Codes beginning with the character "X" are reserved for
        experimentation and development. IANA cannot assign them.</blockquote>

        <t>The columns are defined as follows:</t>
        <dl spacing="compact" newline="false">
          <dt>ID (required):</dt><dd>a four-byte value padded on the right
          with all-bits-zero.  Each byte other than padding must be ASCII
          uppercase letters or digits.</dd>
          <dt>Meaning source (required):</dt><dd>a brief text description of the ID.</dd>
          <dt>Reference (required):</dt><dd>the publication defining the ID.</dd>
        </dl>
        <t>The existing entries are left unchanged.</t>
      </section>
      <section anchor="ntp-extension-field-types">
        <name>NTP Extension Field Types</name>

        <t>The registration procedure has been changed to Specification Required and <xref target="RFC5906"/> and this document have been added as references.</t>
        <t>The following two Notes have been added:</t>

        <blockquote>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.</blockquote>

        <blockquote>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.</blockquote>

        <t>The columns are defined as follows:</t>
        <dl spacing="compact" newline="false">
          <dt>Field Type (required):</dt><dd>a two-byte value in hexadecimal.</dd>
          <dt>Meaning (required):</dt><dd>a brief text description of the field type.</dd>
          <dt>Reference (required):</dt><dd>the publication defining the field type.</dd>
        </dl>

        <t>IANA has updated the registry as shown in <xref target="tab1"/>.</t>
        <table anchor="tab1">
          <thead>
            <tr>
              <th align="left">Field Type</th>
              <th align="left">Meaning</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0000</td>
              <td align="left">Crypto-NAK; authentication failure</td>
              <td align="left"><xref target="RFC5905"/></td>
            </tr>
            <tr>
              <td align="left">0x0002</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0x0102</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0x0104</td>
              <td align="left">Unique Identifier</td>
              <td align="left"><xref target="RFC8915" sectionFormat="comma" section="5.3"/></td>
            </tr>
            <tr>
              <td align="left">0x0200</td>
              <td align="left">No-Operation Request</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x0201</td>
              <td align="left">Association Message Request</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x0202</td>
              <td align="left">Certificate Message Request</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x0203</td>
              <td align="left">Cookie Message Request</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x0204</td>
              <td align="left">Autokey Message Request</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x0204</td>
              <td align="left">NTS Cookie</td>
              <td align="left"><xref target="RFC8915" sectionFormat="comma" section="5.4"/></td>
            </tr>
            <tr>
              <td align="left">0x0205</td>
              <td align="left">Leapseconds Message Request</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x0206</td>
              <td align="left">Sign Message Request</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x0207</td>
              <td align="left">IFF Identity Message Request</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x0208</td>
              <td align="left">GQ Identity Message Request</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x0209</td>
              <td align="left">MV Identity Message Request</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x0302</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0x0304</td>
              <td align="left">NTS Cookie Placeholder</td>
              <td align="left"><xref target="RFC8915" sectionFormat="comma" section="5.5"/></td>
            </tr>
            <tr>
              <td align="left">0x0402</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0x0404</td>
              <td align="left">NTS Authenticator and Encrypted Extension Fields</td>
              <td align="left"><xref target="RFC8915" sectionFormat="comma" section="5.6"/></td>
            </tr>
            <tr>
              <td align="left">0x0502</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0x0602</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0x0702</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0x0802</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0x0902</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0x2005</td>
              <td align="left">UDP Checksum Complement</td>
              <td align="left"><xref target="RFC7821"/></td>
            </tr>
            <tr>
              <td align="left">0x8002</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0x8102</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0x8200</td>
              <td align="left">No-Operation Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x8201</td>
              <td align="left">Association Message Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x8202</td>
              <td align="left">Certificate Message Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x8203</td>
              <td align="left">Cookie Message Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x8204</td>
              <td align="left">Autokey Message Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x8205</td>
              <td align="left">Leapseconds Message Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x8206</td>
              <td align="left">Sign Message Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x8207</td>
              <td align="left">IFF Identity Message Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x8208</td>
              <td align="left">GQ Identity Message Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x8209</td>
              <td align="left">MV Identity Message Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0x8302</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0x8402</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0x8502</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0x8602</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0x8702</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0x8802</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0x8902</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0xC002</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0xC102</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0xC200</td>
              <td align="left">No-Operation Error Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0xC201</td>
              <td align="left">Association Message Error Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0xC202</td>
              <td align="left">Certificate Message Error Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0xC203</td>
              <td align="left">Cookie Message Error Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0xC204</td>
              <td align="left">Autokey Message Error Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0xC205</td>
              <td align="left">Leapseconds Message Error Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0xC206</td>
              <td align="left">Sign Message Error Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0xC207</td>
              <td align="left">IFF Identity Message Error Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0xC208</td>
              <td align="left">GQ Identity Message Error Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0xC209</td>
              <td align="left">MV Identity Message Error Response</td>
              <td align="left"><xref target="RFC5906"/></td>
            </tr>
            <tr>
              <td align="left">0xC302</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0xC402</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0xC502</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0xC602</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0xC702</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0xC802</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0xC902</td>
              <td align="left">Reserved for historic reasons</td>
              <td align="left">RFC 9748</td>
            </tr>
            <tr>
              <td align="left">0xF000-0xFFFF</td>
              <td align="left">Reserved for Private or Experimental Use</td>
              <td align="left">RFC 9748</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>

      <t>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.</t>
    </section>

  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5905.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5906.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7821.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7822.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8573.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8915.xml"/>
    </references>

    <section anchor="acknowledgements" numbered="false">
      <name>Acknowledgements</name>
      <t>The members of the NTP Working Group helped a great deal.
Notable contributors include:</t>
      <ul spacing="normal">
        <li>
          <t><contact fullname="Miroslav Lichvar"/>, Red Hat</t>
        </li>
        <li>
          <t><contact fullname="Daniel Franke"/>, formerly at Akamai Technologies</t>
        </li>
        <li>
          <t><contact fullname="Danny Mayer"/>, Network Time Foundation</t>
        </li>
        <li>
          <t><contact fullname="Michelle Cotton"/>, formerly at IANA</t>
        </li>
        <li>
          <t><contact fullname="Tamme Dittrich"/>, Tweede Golf</t>
        </li>
      </ul>
    </section>

  </back>
</rfc>
