<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-yuki-ntp-dns-record-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title>NTP DNS Resource Record</title>
    <seriesInfo name="Internet-Draft" value="draft-yuki-ntp-dns-record-00"/>
    <author fullname="後藤ゆき" asciiFullname="Yuki Goto">
      <organization>independent</organization>
      <address>
        <email>minami.hiroy@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="November" day="24"/>
    <area>Internet</area>
    <workgroup>Network Time Protocols</workgroup>
    <keyword>internet-draft</keyword>
    <abstract>
      <?line 34?>

<t>This document defines a new NTP DNS Resource Record, similar in concept to the HTTPS DNS Resource Record specified in <xref target="RFC9460"/>.</t>
      <t>This record enables an NTP server to indicate, via DNS, the versions of the NTP protocol it supports prior to the initiation of any NTP message exchange.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Network Time Protocols Working Group mailing list (ntp@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ntp/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/flano-yuki/draft-yuki-ntp-dns-rr-"/>.</t>
    </note>
  </front>
  <middle>
    <?line 40?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="NTPv5"/> is currently under standardization, and there are concerns regarding how clients select the newer NTP protocol version to use.</t>
      <t>The server will drop NTP packets with unsupported versions. Therefore, clients need to select an NTP version that the server can receive; however, clients have no reliable way to know the server’s supported versions in advance. Accordingly, clients commonly initiate communication using NTPv4, assuming that NTPv4 is supported by the server, even if the server also implements NTPv5. Servers then attempt to advertise NTPv5 support to clients using the NTPv4 reference timestamp.</t>
      <t>The version of NTP used in the first request is therefore effectively based on implicit assumptions rather than explicit information. This creates challenges for the deployment of future NTP protocol versions.</t>
      <t>To address this challenge, this document defines a DNS-based mechanism similar to the HTTPS Resource Record (<xref target="RFC9460"/>). This mechanism enables a server to advertise the NTP protocol versions it supports before a client initiates any NTP communication.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="ntp-resource-record">
      <name>NTP Resource Record</name>
      <t>The NTP Resource Record (RR type code TBD) is a SVCB-compatible RR type, as defined in <xref target="RFC9460"/>.
It uses the same RDATA wire format as the SVCB RR, but its semantics are specialized for discovery and configuration of Network Time Protocol (NTP) services.</t>
      <section anchor="example">
        <name>Example</name>
        <t>The following example illustrates the presentation format of the NTP RR, showing how a server advertises support for multiple NTP protocol versions using the ntp-version SvcParamKey.</t>
        <artwork><![CDATA[
ntp.example.com. 300 IN NTP 1 . ntp-version=4,5
]]></artwork>
      </section>
      <section anchor="ntp-version-svcparams">
        <name>ntp-version SvcParams</name>
        <t>The ntp-version SvcParamKey indicates the set of NTP protocol versions supported by the service endpoint. Its value is a comma-separated list of ASCII version identifiers. Each version identifier consists of a numeric version number, optionally followed by a hyphen and an alphanumeric label (e.g., “5-draft5”), allowing servers to indicate support for development, experimental, or otherwise distinguished variants of a protocol version.</t>
        <t>ABNF:</t>
        <artwork><![CDATA[
version           = 1*DIGIT *( "-" version-label )
version-label     = 1*( ALPHA / DIGIT )
ntp-version-value = version *( "," version )
]]></artwork>
        <t>The wire-format consists of one or more version identifiers, each encoded as a length-prefixed byte sequence. These length–value pairs are concatenated to form the SvcParamValue.</t>
      </section>
      <section anchor="nts-svcparams">
        <name>nts SvcParams</name>
        <t>( Is it useful to define nts SvcParams to indicate NTS support? )</t>
      </section>
    </section>
    <section anchor="operational-sequence-and-client-behavior">
      <name>Operational Sequence and Client Behavior</name>
      <t>The following list outlines the typical operational flow for deploying and using the NTP Resource Record, from server-side configuration to client-side version selection and communication. In practice, clients <bcp14>MAY</bcp14> perform NTP RR resolution in parallel with their default NTP initiation behavior (typically NTPv4, or NTPv5 when configured) and use the result when available.</t>
      <ul spacing="normal">
        <li>
          <t>The server operator publishes an NTP RR in the authoritative DNS zone, including the appropriate SvcParams such as ntp-version="4,5".</t>
        </li>
        <li>
          <t>The client initiates DNS resolution for the NTP RR corresponding to the target domain name; if the NTP RR is not available, the client falls back to its default behavior (typically NTPv4).</t>
        </li>
        <li>
          <t>The client processes the DNS response using the rules for SVCB-compatible RR types.
          </t>
          <ul spacing="normal">
            <li>
              <t>If the response is in AliasMode (SvcPriority = 0), the client follows the alias target and repeats resolution.</t>
            </li>
            <li>
              <t>If the response is in ServiceMode, the client proceeds to evaluate the associated SvcParams.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>The client parses known SvcParams; unknown parameters are ignored.</t>
        </li>
        <li>
          <t>If the ntp-version SvcParamKey is present, the client parses its value into a list of supported version identifiers.</t>
        </li>
        <li>
          <t>The client determines the intersection between its locally supported NTP versions and the versions listed in the ntp-version SvcParam.</t>
        </li>
        <li>
          <t>The client selects the highest mutually supported version and uses it as the version for the initial NTP request.</t>
        </li>
        <li>
          <t>If no mutually supported version exists, or if the NTP RR or its parameters are malformed, the client falls back to its default behavior (typically initiating communication using NTPv4).</t>
        </li>
        <li>
          <t>The client sends the first NTP request using the selected version.</t>
        </li>
        <li>
          <t>The server accepts the packet if the version is supported; packets using unsupported versions are dropped according to normal NTP behavior.</t>
        </li>
        <li>
          <t>NTP communication proceeds using the selected protocol version.</t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="ntp-rr-type">
        <name>NTP RR Type</name>
        <t>TODO</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9460">
          <front>
            <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <author fullname="E. Nygren" initials="E." surname="Nygren"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document specifies the "SVCB" ("Service Binding") and "HTTPS" DNS resource record (RR) types to facilitate the lookup of information needed to make connections to network services, such as for HTTP origins. SVCB records allow a service to be provided from multiple alternative endpoints, each with associated parameters (such as transport protocol configuration), and are extensible to support future uses (such as keys for encrypting the TLS ClientHello). They also enable aliasing of apex domains, which is not possible with CNAME. The HTTPS RR is a variation of SVCB for use with HTTP (see RFC 9110, "HTTP Semantics"). By providing more information to the client before it attempts to establish a connection, these records offer potential benefits to both performance and privacy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9460"/>
          <seriesInfo name="DOI" value="10.17487/RFC9460"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="NTPv5">
          <front>
            <title>Network Time Protocol Version 5</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ntp-ntpv5-07"/>
        </reference>
      </references>
    </references>
    <?line 129?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
FaW9FwAA

-->

</rfc>
