<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" docName="draft-ietf-ntp-over-ptp-08" number="10030" consensus="true" ipr="trust200902" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" prepTime="2026-08-14T22:21:14" indexInclude="true" scripts="Common,Latin">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-ntp-over-ptp-08" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc10030" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="NTP over PTP">Network Time Protocol (NTP) over the Precision Time Protocol (PTP)</title>
    <seriesInfo name="RFC" value="10030" stream="IETF"/>
    <author fullname="Miroslav Lichvar" initials="M." surname="Lichvar">
      <organization showOnFrontPage="true">Red Hat</organization>
      <address>
        <email>mlichvar@redhat.com</email>
      </address>
    </author>
    <date month="08" year="2026"/>
    <area>INT</area>
    <workgroup>ntp</workgroup>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This document specifies a transport for the client-server and
        symmetric modes of the Network Time Protocol (NTP) that encapsulates
        NTP messages in messages of the Precision Time Protocol (PTP). This
        transport enables hardware timestamping in network interface
        controllers (NICs) that can timestamp only PTP messages and delay
        corrections in PTP transparent clocks.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc10030" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2026 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-comparison-with-ptp">Comparison with PTP</xref></t>
              </li>
              <li pn="section-toc.1-1.1.2.2">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.2.1"><xref derivedContent="1.2" format="counter" sectionFormat="of" target="section-1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ptp-transport-for-ntp">PTP Transport for NTP</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-network-correction-extensio">Network Correction Extension Field</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-new-iana-ptp-tlv-subtypes-r">New IANA PTP TLV Subtypes Registry</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ntp-extension-field-registr">NTP Extension Field Registration</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-address">Author's Address</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">The Precision Time Protocol (PTP) <xref target="IEEE1588-2019" format="default" sectionFormat="of" derivedContent="IEEE1588-2019"/>
        was designed for highly accurate synchronization of clocks in local
        networks. It relies on hardware timestamping support in all network
        devices involved in the synchronization (e.g., network interface
        controllers (NICs), switches, and routers) to eliminate the impact of
        software, processing, and queueing delays on the accuracy of offset and
        delay measurements.</t>
      <t indent="0" pn="section-1-2">PTP was originally designed for multicast communication. Later,
        support for unicast messaging was added, which is useful in larger
        networks with partial on-path PTP support (e.g., telecom profiles
        <xref target="G8265-1" format="default" sectionFormat="of" derivedContent="G8265-1">G.8265.1</xref> and <xref target="G8275-2" format="default" sectionFormat="of" derivedContent="G8275-2">G.8275.2</xref>).</t>
      <t indent="0" pn="section-1-3">The Network Time Protocol (NTP) <xref target="RFC5905" format="default" sectionFormat="of" derivedContent="RFC5905"/> does not rely
        on hardware timestamping support, but implementations can use it if it
        is available to avoid the impact of software, processing, and queueing
        delays, similarly to PTP. When comparing PTP with the timing modes of
        NTP, PTP is functionally closest to the NTP broadcast mode.</t>
      <t indent="0" pn="section-1-4">An issue for NTP is hardware that can specifically timestamp only PTP
        packets. This limitation comes from a hardware design that can provide
        receive timestamps only at a limited rate instead of the maximum rate
        possible at the network link speed. To avoid missing receive timestamps
        when the interface is receiving other traffic at a high rate, a filter
        is implemented in the hardware to inspect each received packet and
        capture a timestamp only for packets that need it.</t>
      <t indent="0" pn="section-1-5">The hardware filter can be usually configured for specific PTP
        transports (e.g., UDP over IPv4, UDP over IPv6, and 802.3) and sometimes even
        the PTP message type (e.g., sync message or delay request) to further
        reduce the timestamping rate on the server or client side in the case
        of multicast messaging, but it typically cannot be configured to
        timestamp NTP messages sent to the UDP port 123.</t>
      <t indent="0" pn="section-1-6">Another issue for NTP is missing hardware support in network switches
        and routers. With PTP, the devices operate as either boundary clocks or
        transparent clocks. Boundary clocks are analogous to NTP clients that
        work also as servers for other clients. Transparent clocks are much
        simpler. They only measure the delay in the forwarding of PTP packets
        and write this delay to the correction field of either the packet
        itself (one-step mode) or a later packet in the PTP exchange (two-step
        mode). Transparent clocks are specific to the PTP delay mechanism used
        in the network, either end to end (E2E) or peer to peer (P2P).</t>
      <t indent="0" pn="section-1-7">This document specifies a new transport for NTP to enable hardware
        timestamping on NICs that can timestamp only PTP messages and to
        take advantage of one-step E2E PTP unicast transparent clocks. It adds
        a new type-length-value (TLV) for PTP to contain NTP messages and
        a new extension field for NTP to provide clients and peers with the
        correction of their NTP requests from transparent clocks. The NTP
        broadcast mode is not supported.</t>
      <t indent="0" pn="section-1-8">The use of PTP messages requires that protocol rules of IEEE 1588 <xref target="IEEE1588-2019" format="default" sectionFormat="of" derivedContent="IEEE1588-2019"/> be followed. NTP over PTP does
        not require other PTP clocks to be present in the network. It does not
        disrupt their operation if they are present. If the network uses
        one-step E2E transparent clocks, NTP clients and peers using PTP for
        transport can reach the same or better accuracy as PTP clocks using PTP
        for synchronization. Hosts in a network can use PTP for synchronization
        in one domain and transport of NTP messages in another domain at the
        same time.</t>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-1.1">
        <name slugifiedName="name-comparison-with-ptp">Comparison with PTP</name>
        <t indent="0" pn="section-1.1-1">The client-server mode of NTP, even with the PTP transport, has
          multiple advantages over PTP using multicast or unicast messaging:

        </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1.1-2">
          <li pn="section-1.1-2.1">
            <t indent="0" pn="section-1.1-2.1.1">NTP is more secure. Existing security mechanisms specified for
              NTP such as Network Time Security <xref target="RFC8915" format="default" sectionFormat="of" derivedContent="RFC8915"/> still
              work over the PTP transport. It is more difficult to secure
              PTP against delay attacks because the sync message is not an
              immediate response to a client request. The PTP unicast mode
              allows an almost-infinite traffic amplification, which can be
              exploited for denial-of-service attacks and can only be limited
              by security mechanisms requiring client authentication.</t>
          </li>
          <li pn="section-1.1-2.2">
            <t indent="0" pn="section-1.1-2.2.1">NTP is more resilient to failures. Each client can use multiple
              servers and detect failed sources in its source selection. In PTP,
              a single hardware or software failure can disrupt the whole PTP
              domain. Multiple independent domains have to be used to handle any
              failure.</t>
          </li>
          <li pn="section-1.1-2.3">
            <t indent="0" pn="section-1.1-2.3.1">NTP is better suited for synchronization in networks that do not
              have full on-path PTP support or where timestamping errors do
              not have a symmetric distribution (e.g., due to sensitivity to
              the network load). NTP does not assume network delay is constant
              and the rate of measurements in opposite directions is symmetric.
              It can filter the measurements more effectively and is not
              sensitive to asymmetrically distributed network delays and
              timestamping errors. PTP has to measure the offset and delay
              separately to enable multicast messaging, which is needed to reduce
              the transmit timestamping rate.</t>
          </li>
          <li pn="section-1.1-2.4">
            <t indent="0" pn="section-1.1-2.4.1">NTP needs fewer messages to get the same number of timestamps. It
              uses less network bandwidth than PTP using unicast messaging.</t>
          </li>
          <li pn="section-1.1-2.5">
            <t indent="0" pn="section-1.1-2.5.1">NTP provides clients with an estimate of the maximum error of the
              clock (root distance).</t>
          </li>
        </ul>
        <t indent="0" pn="section-1.1-3">The disadvantage of NTP is that the transmit timestamping rate increases
          as the number of clients grows. A server that is limited by the hardware
          timestamping rate cannot provide a highly accurate time service to
          the same number of clients as with PTP using multicast messaging.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-1.2">
        <name slugifiedName="name-requirements-language">Requirements Language</name>
        <t indent="0" pn="section-1.2-1">
    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" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
        </t>
      </section>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-ptp-transport-for-ntp">PTP Transport for NTP</name>
      <t indent="0" pn="section-2-1">A new TLV is defined for PTP to contain NTP messages in the NTP client
        (3), server (4), and symmetric modes (1 and 2) (see <xref target="RFC5905" format="default" sectionFormat="of" derivedContent="RFC5905"/>). Using other NTP modes in
        the TLV is not specified. Any transport specified for PTP that supports
        unicast messaging, and an IPv4 or IPv6 mapping, can be used for NTP
        over PTP.</t>
      <t indent="0" pn="section-2-2">The NTP TLV <bcp14>MUST</bcp14> be included in a unicast PTP event message. An event
        message is required to enable the PTP-specific hardware timestamping
        and corrections of transparent clocks. The PTP message <bcp14>MUST</bcp14> conform to
        PTP version 2 <xref target="IEEE1588-2008" format="default" sectionFormat="of" derivedContent="IEEE1588-2008"/>, PTP version 2.1 <xref target="IEEE1588-2019" format="default" sectionFormat="of" derivedContent="IEEE1588-2019"/>, or any future version of
        the PTP specification that allows the NTP TLV to be included as an
        organization-specific TLV.</t>
      <t indent="0" pn="section-2-3">The NTP TLV is an organization-specific TLV having the following
        fields (with octets in network order):
      </t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2-4">
        <li pn="section-2-4.1">
          <t indent="0" pn="section-2-4.1.1">type is 0x8000 (ORGANIZATION_EXTENSION_DO_NOT_PROPAGATE) in
            PTP version 2.1 or 0x0003 (ORGANIZATION_EXTENSION) in PTP version
            2</t>
        </li>
        <li pn="section-2-4.2">
          <t indent="0" pn="section-2-4.2.1">lengthField is 8 + length of the NTP message</t>
        </li>
        <li pn="section-2-4.3">
          <t indent="0" pn="section-2-4.3.1">organizationId is 00-00-5E (the Organizationally Unique Identifier (OUI) is assigned to IANA by the IEEE
            Registration Authority)</t>
        </li>
        <li pn="section-2-4.4">
          <t indent="0" pn="section-2-4.4.1">organizationSubType is 0x1</t>
        </li>
        <li pn="section-2-4.5">
          <t indent="0" pn="section-2-4.5.1">dataField contains two zero octets for 32-bit alignment followed
            by the NTP message, which would normally be the UDP payload</t>
        </li>
      </ul>
      <t indent="0" pn="section-2-5">An NTP client or peer using the PTP transport sends NTP requests
        contained as the NTP TLV in PTP messages.</t>
      <t indent="0" pn="section-2-6">An NTP server or peer responding to an NTP request received over the
        PTP transport <bcp14>MUST</bcp14> form its response as the NTP TLV using the same PTP
        transport. To avoid traffic amplification, the server or peer <bcp14>MUST NOT</bcp14>
        send the response if the PTP message containing the NTP response is
        longer than the PTP message containing the NTP request. This
        requirement impacts Autokey <xref target="RFC5906" format="default" sectionFormat="of" derivedContent="RFC5906"/>, where
        some responses are longer than the requests (e.g., during certificate exchange). The
        request <bcp14>SHOULD</bcp14> be padded with the PTP PAD TLV (type 0x8008) to the
        maximum expected length of the response to enable the transmission of
        the response.</t>
      <t indent="0" pn="section-2-7">If the NTP
        response is expected to be used for synchronization (e.g., it is not an
        error message), the PTP message containing the NTP response <bcp14>SHOULD</bcp14> have
        the same length as the PTP message containing the NTP request, using
        the PTP PAD TLV if needed, to avoid an asymmetric delay in networks
        without full on-path PTP support.</t>
      <t indent="0" pn="section-2-8">The PTP version 2.1 <xref target="IEEE1588-2019" format="default" sectionFormat="of" derivedContent="IEEE1588-2019"/> specification
        states the following:</t>
      <blockquote pn="section-2-9">
        A domain shall define the scope of PTP message
        communication, state, operations, data sets, and timescale. Within a
        PTP Network, a domain is identified by two attributes: domainNumber and
        sdoId.
        </blockquote>
      <t indent="0" pn="section-2-10">
        In the context of NTP over PTP version 2.1, this means that
        the NTP servers, clients, and peers <bcp14>MUST</bcp14> verify that received PTP
        messages have the domainNumber and sdoId that are expected to be used
        by NTP over PTP in the network. The domainNumber <bcp14>SHOULD</bcp14> be 123 by
        default, and sdoId <bcp14>SHOULD</bcp14> be 0. The
        domainNumber 123 is not commonly used by PTP profiles, so it is less
        likely to interfere with any other PTP operation that might be running
        in the network. The domainNumber <bcp14>SHOULD</bcp14> be configurable to allow moving
        NTP over PTP to another domain if a conflict with a PTP profile using
        this domainNumber and sdoId needs to be avoided. However, all servers,
        clients, and peers using NTP over PTP in the network need to use the
        same domainNumber and sdoId to be able to communicate with each
        other.</t>
      <t indent="0" pn="section-2-11">If the UDP transport is used for PTP, the UDP source and destination
        port numbers <bcp14>SHOULD</bcp14> be the PTP event port (319). If the client
        implemented port randomization <xref target="RFC9109" format="default" sectionFormat="of" derivedContent="RFC9109"/>, requests
        and/or responses would not get a hardware receive timestamp due to the
        hardware filter matching only the PTP event port.</t>
      <t indent="0" pn="section-2-12">Any authenticator fields included in the NTP messages <bcp14>MUST</bcp14> be
        calculated only over the NTP message following the header of the NTP
        TLV. Other data in the PTP message (outside of the NTP TLV) are not
        protected. With the exception of the PTP correction field requiring
        special handling as described in the following section, the other PTP
        fields are used only for the transport of the NTP message and have no
        impact on the security of NTP, similarly to the IP and UDP headers.</t>
      <t indent="0" pn="section-2-13">Receive and transmit timestamps contained in the NTP messages <bcp14>SHOULD NOT</bcp14> be adjusted for the beginning of the NTP data in the PTP message.
        To minimize the impact of different link speeds on accuracy in networks
        without full on-path PTP support, the transmit timestamp <bcp14>SHOULD</bcp14>
        correspond to the PTP message timestamp point (i.e., the beginning of the
        first symbol after the Ethernet start of frame delimiter), and the
        receive timestamp <bcp14>SHOULD</bcp14> be transposed from the PTP message timestamp
        point to the ending of the reception (e.g., the ending of the last symbol of
        the Ethernet frame check sequence).</t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-network-correction-extensio">Network Correction Extension Field</name>
      <t indent="0" pn="section-3-1">One-step E2E PTP transparent clocks modify the correction field in the
        header of the PTP event messages containing NTP messages. To be able to
        verify and apply the corrections to an NTP measurement, the client or
        peer needs to know the correction of both the request and response.
        The correction of the response is in the PTP header of the message
        itself. The correction of the request is provided by the server or
        other peer in a new NTP extension field included in the response.</t>
      <t indent="0" pn="section-3-2">The format of the Network Correction Extension Field is shown in
        Figure <xref format="counter" target="net-correction-ext-field" sectionFormat="of" derivedContent="1"/>.
      </t>
      <figure anchor="net-correction-ext-field" align="left" suppress-title="false" pn="figure-1">
        <name slugifiedName="name-format-of-network-correctio">Format of Network Correction Extension Field</name>
        <artwork name="" type="" align="left" alt="" pn="section-3-3.1">
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Type = 0x010A         |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                  Network Correction (64 bits)                 +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
.                                                               .
.                            Padding                            .
.                                                               .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
      </figure>
      <t indent="0" pn="section-3-4">The length of the padding is the minimum required to make a valid
        extension field in the used version of NTP. In NTPv4, it is 16 octets
        to get a 28-octet extension field conforming to <xref target="RFC7822" format="default" sectionFormat="of" derivedContent="RFC7822"/>.</t>
      <t indent="0" pn="section-3-5">The Network Correction field in the extension field uses the 64-bit
        NTP timestamp format (with resolution of about 1/4th of a nanosecond). The
        correction field in the PTP header has a different format (64-bit
        nanoseconds + 16-bit fraction).</t>
      <t indent="0" pn="section-3-6">The value of the NTP network correction is the sum of PTP
        corrections provided by transparent clocks and the time it takes to
        receive the packet (i.e., packet length including the frame check
        sequence divided by the link speed).</t>
      <t indent="0" pn="section-3-7">The reason for not using the PTP correction alone is to avoid an
        asymmetric correction when the server and client, or peers, are
        connected to the network with different link speeds. The receive
        duration included in the NTP correction cancels out the transposition
        from the PTP receive timestamp (which corresponds to the beginning of the
        reception) to NTP receive timestamp (which corresponds to the end of the
        reception).</t>
      <t indent="0" pn="section-3-8">The Figure <xref format="counter" target="ptp-vs-ntp-correction" sectionFormat="of" derivedContent="2"/>
        shows the NTP timestamps, transmit/receive durations, and processing
        and queuing delays included in PTP corrections for an NTP exchange made
        over two PTP transparent clocks. The link speed is increasing on the
        network path from the client to the server. The propagation delays in
        cables are not shown.</t>
      <figure anchor="ptp-vs-ntp-correction" align="left" suppress-title="false" pn="figure-2">
        <name slugifiedName="name-ptp-versus-ntp-correction">PTP Versus NTP Correction</name>
        <artwork name="" type="" align="left" alt="" pn="section-3-9.1">
NTP server                          T2  T3
             --------------------|==|----|==|--------------------
PTP TC #2                      |~|          |~|
                          |====|              |====|
PTP TC #1               |~|                        |~|
             --|========|----------------------------|========|--
NTP client    T1                                              T4

PTP correction |========|~|====|~|       |==|~|====|~|
NTP correction |========|~|====|~|==|    |==|~|====|~|========|</artwork>
      </figure>
      <t indent="0" pn="section-3-10">When an NTP server that supports the PTP transport receives an NTP
        request containing the Network Correction Extension Field, it <bcp14>SHOULD</bcp14>
        respond with the extension field providing the network correction of
        the client's request. The server <bcp14>MUST</bcp14> ignore the value of the network
        correction in the request.</t>
      <t indent="0" pn="section-3-11">An NTP client or peer that supports the PTP transport and is
        configured to use the network correction for the association <bcp14>SHOULD</bcp14>
        include the extension field in its NTP requests. In the case of a
        client, the correction value in the extension field <bcp14>SHOULD</bcp14> be always
        zero.</t>
      <t indent="0" pn="section-3-12">When the client or peer has the network correction of both the request
        and response, it can correct the measured NTP peer delay and offset:

      </t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3-13">
        <li pn="section-3-13.1">
          <t indent="0" pn="section-3-13.1.1">delta_c = delta - (nc_rs + nc_rq - dur_rs - dur_rq) * (1 - freq_tc)</t>
        </li>
        <li pn="section-3-13.2">
          <t indent="0" pn="section-3-13.2.1">theta_c = theta + (nc_rs - nc_rq) / 2</t>
        </li>
      </ul>
      <t indent="0" pn="section-3-14">

        where

      </t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3-15">
        <li pn="section-3-15.1">
          <t indent="0" pn="section-3-15.1.1">delta is the NTP peer delay from <xref target="RFC5905" format="default" sectionFormat="of" derivedContent="RFC5905"/></t>
        </li>
        <li pn="section-3-15.2">
          <t indent="0" pn="section-3-15.2.1">theta is the NTP offset from <xref target="RFC5905" format="default" sectionFormat="of" derivedContent="RFC5905"/></t>
        </li>
        <li pn="section-3-15.3">
          <t indent="0" pn="section-3-15.3.1">nc_rq is the network correction of the request</t>
        </li>
        <li pn="section-3-15.4">
          <t indent="0" pn="section-3-15.4.1">nc_rs is the network correction of the response</t>
        </li>
        <li pn="section-3-15.5">
          <t indent="0" pn="section-3-15.5.1">dur_rq is the transmit duration of the request</t>
        </li>
        <li pn="section-3-15.6">
          <t indent="0" pn="section-3-15.6.1">dur_rs is the receive duration of the response</t>
        </li>
        <li pn="section-3-15.7">
          <t indent="0" pn="section-3-15.7.1">freq_tc is the maximum assumed frequency error of transparent
            clocks</t>
        </li>
      </ul>
      <t indent="0" pn="section-3-16">The corrected delay (delta_c) and offset (theta_c) <bcp14>MUST NOT</bcp14> be
        accepted for synchronization if any of delta_c, nc_rs, and nc_rq is
        negative. This requirement limits the error caused by faulty
        transparent clocks and on-path attackers.</t>
      <t indent="0" pn="section-3-17">Root delay (DELTA) <bcp14>MUST NOT</bcp14> be corrected to ensure that the maximum
        assumed error (root distance) remains independent of network
        corrections.</t>
      <t indent="0" pn="section-3-18">The scaling by the freq_tc constant (e.g., 100 parts per million (ppm)) is needed to
        make room for errors in corrections made by transparent clocks running
        faster than true time and to avoid samples with larger corrections from
        getting a shorter delay than samples with smaller corrections, which
        would negatively impact their filtering and weighting.</t>
      <t indent="0" pn="section-3-19">The dur_rq and dur_rs values make the corrected peer delay correspond
        to a direct connection to the server.  If they were not used, a
        perfectly corrected delay on a short network path would be too close to
        zero and frequently negative due to frequency offset between the client
        and server. Note that NTP peers and PTP clocks using the E2E delay
        mechanism are more sensitive to frequency offsets due to longer
        measurement intervals. If dur_rq is unknown, it <bcp14>MAY</bcp14> be assumed to be
        equal to dur_rs.</t>
    </section>
    <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-new-iana-ptp-tlv-subtypes-r">New IANA PTP TLV Subtypes Registry</name>
        <t indent="0" pn="section-4.1-1">IANA has created the "IANA PTP TLV Subtypes" registry under the "IANA OUI Ethernet Numbers" registry group for organizationSubType
          values of PTP TLVs using 00-00-5E
          as the organizationId (i.e., the OUI assigned to IANA by the IEEE Registration Authority).</t>
        <t indent="0" pn="section-4.1-2">The entries in the registry have the following fields, which are <bcp14>REQUIRED</bcp14>:
        </t>
        <dl spacing="normal" newline="false" indent="3" pn="section-4.1-3">
          <dt pn="section-4.1-3.1">Subtype:</dt>
          <dd pn="section-4.1-3.2">An integer in the range 0-0xFFFFFF</dd>
          <dt pn="section-4.1-3.3">Description:</dt>
          <dd pn="section-4.1-3.4">A short text description</dd>
          <dt pn="section-4.1-3.5">Reference:</dt>
          <dd pn="section-4.1-3.6">A reference to a document describing the
          IANA PTP TLV</dd>
        </dl>
        <t indent="0" pn="section-4.1-4">The subtype range is split into the following three ranges with
          different allocation policies:</t>
        <dl spacing="normal" newline="false" indent="3" pn="section-4.1-5">
          <dt pn="section-4.1-5.1">0-0xFFFF:</dt>
          <dd pn="section-4.1-5.2">IETF Review</dd>
          <dt pn="section-4.1-5.3">0x10000-0x7FFFFF:</dt>
          <dd pn="section-4.1-5.4">Specification Required</dd>
          <dt pn="section-4.1-5.5">0x800000-0xFFFFFE:</dt>
          <dd pn="section-4.1-5.6">Experimental and Private Use</dd>
        </dl>
        <t keepWithNext="true" indent="0" pn="section-4.1-6">The initial contents of the registry are as follows:</t>
        <table align="center" pn="table-1">
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Subtype</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
              <th align="left" colspan="1" rowspan="1">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">0x0</td>
              <td align="left" colspan="1" rowspan="1">Reserved</td>
              <td align="left" colspan="1" rowspan="1">RFC 10030</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">0x1</td>
              <td align="left" colspan="1" rowspan="1">Network Time Protocol Message</td>
              <td align="left" colspan="1" rowspan="1">RFC 10030</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">0x2-0x7FFFFF</td>
              <td align="left" colspan="1" rowspan="1">Unassigned</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">0x800000-0xFFFFFE</td>
              <td align="left" colspan="1" rowspan="1">Reserved for Experimental and Private Use</td>
              <td align="left" colspan="1" rowspan="1">RFC 10030</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">0xFFFFFF</td>
              <td align="left" colspan="1" rowspan="1">Reserved</td>
              <td align="left" colspan="1" rowspan="1">RFC 10030</td>
            </tr>
          </tbody>
        </table>
        <t indent="0" pn="section-4.1-8">Changes in the Specification Required range are approved by a
          designated expert (DE). The DE should be familiar with <xref target="RFC8126" format="default" sectionFormat="of" derivedContent="RFC8126"/> (particularly <xref target="RFC8126" section="5" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8126#section-5" derivedContent="RFC8126"/>) and the current PTP
          specifications. The DE should verify that the specification of the
          organization-specific TLV identified by the assigned subtype exists
          and is publicly available. The purpose and use of the TLV should be
          sufficiently clear to enable interoperating implementations, without
          harming the protocol or the ecosystem.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-ntp-extension-field-registr">NTP Extension Field Registration</name>
        <t indent="0" pn="section-4.2-1">IANA has allocated the following field in the "NTP Extension Field Types" registry <eref target="https://www.iana.org/assignments/ntp-parameters/" brackets="angle"/> defined by <xref target="RFC5905" format="default" sectionFormat="of" derivedContent="RFC5905"/>:</t>
        <table align="center" pn="table-2">
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Field Type</th>
              <th align="left" colspan="1" rowspan="1">Meaning</th>
              <th align="left" colspan="1" rowspan="1">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">0x010A</td>
              <td align="left" colspan="1" rowspan="1">Network Correction</td>
              <td align="left" colspan="1" rowspan="1">RFC 10030</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="Security" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-5-1">PTP transport prevents NTP clients from randomizing their source
        port as described in <xref target="RFC9109" format="default" sectionFormat="of" derivedContent="RFC9109"/> because both requests
        and responses need to be sent to the PTP port in order to get a
        hardware receive timestamp and corrections from PTP transparent
        clocks.</t>
      <t indent="0" pn="section-5-2">The corrections provided by PTP transparent clocks cannot be
        authenticated. On-path attackers can modify the correction
        field, but only corrections smaller than the measured delay are
        accepted by clients. The impact is comparable to the impact of delaying
        unmodified NTP messages.</t>
    </section>
  </middle>
  <back>
    <references pn="section-6">
      <name slugifiedName="name-references">References</name>
      <references pn="section-6.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="IEEE1588-2019" target="https://ieeexplore.ieee.org/document/9120376" quoteTitle="true" derivedAnchor="IEEE1588-2019">
          <front>
            <title>IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems</title>
            <author>
              <organization showOnFrontPage="true">IEEE</organization>
            </author>
            <date month="6" year="2020"/>
          </front>
          <seriesInfo name="IEEE Std" value="1588-2019"/>
          <seriesInfo name="DOI" value="10.1109/IEEESTD.2020.9120376"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="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 indent="0">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="RFC5905" target="https://www.rfc-editor.org/info/rfc5905" quoteTitle="true" derivedAnchor="RFC5905">
          <front>
            <title>Network Time Protocol Version 4: Protocol and Algorithms Specification</title>
            <author fullname="D. Mills" initials="D." surname="Mills"/>
            <author fullname="J. Martin" initials="J." role="editor" surname="Martin"/>
            <author fullname="J. Burbank" initials="J." surname="Burbank"/>
            <author fullname="W. Kasch" initials="W." surname="Kasch"/>
            <date month="June" year="2010"/>
            <abstract>
              <t indent="0">The Network Time Protocol (NTP) is widely used to synchronize computer clocks in the Internet. This document describes NTP version 4 (NTPv4), which is backwards compatible with NTP version 3 (NTPv3), described in RFC 1305, as well as previous versions of the protocol. NTPv4 includes a modified protocol header to accommodate the Internet Protocol version 6 address family. NTPv4 includes fundamental improvements in the mitigation and discipline algorithms that extend the potential accuracy to the tens of microseconds with modern workstations and fast LANs. It includes a dynamic server discovery scheme, so that in many cases, specific server configuration is not required. It corrects certain errors in the NTPv3 design and implementation and includes an optional extension mechanism.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5905"/>
          <seriesInfo name="DOI" value="10.17487/RFC5905"/>
        </reference>
        <reference anchor="RFC7822" target="https://www.rfc-editor.org/info/rfc7822" quoteTitle="true" derivedAnchor="RFC7822">
          <front>
            <title>Network Time Protocol Version 4 (NTPv4) Extension Fields</title>
            <author fullname="T. Mizrahi" initials="T." surname="Mizrahi"/>
            <author fullname="D. Mayer" initials="D." surname="Mayer"/>
            <date month="March" year="2016"/>
            <abstract>
              <t indent="0">The Network Time Protocol version 4 (NTPv4) defines the optional usage of extension fields. An extension field, as defined in RFC 5905, is an optional field that resides at the end of the NTP header and that can be used to add optional capabilities or additional information that is not conveyed in the standard NTP header. This document updates RFC 5905 by clarifying some points regarding NTP extension fields and their usage with Message Authentication Codes (MACs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7822"/>
          <seriesInfo name="DOI" value="10.17487/RFC7822"/>
        </reference>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126" quoteTitle="true" derivedAnchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t indent="0">Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t indent="0">To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t indent="0">This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="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 indent="0">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 pn="section-6.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="G8265-1" target="https://www.itu.int/rec/T-REC-G.8265.1-202211-I/en" quoteTitle="true" derivedAnchor="G8265-1">
          <front>
            <title>Precision time protocol telecom profile for frequency synchronization</title>
            <author>
              <organization showOnFrontPage="true">ITU-T</organization>
            </author>
            <date month="11" year="2022"/>
          </front>
          <refcontent>ITU-T Recommendation G.8265.1/Y.1365.1</refcontent>
        </reference>
        <reference anchor="G8275-2" target="https://www.itu.int/rec/T-REC-G.8275.2-202211-I/en" quoteTitle="true" derivedAnchor="G8275-2">
          <front>
            <title>Precision time protocol telecom profile for phase/time synchronization with partial timing support from the network</title>
            <author>
              <organization showOnFrontPage="true">ITU-T</organization>
            </author>
            <date month="11" year="2022"/>
          </front>
          <refcontent>ITU-T Recommendation G.8275.2/Y.1369.2</refcontent>
        </reference>
        <reference anchor="IEEE1588-2008" target="https://ieeexplore.ieee.org/document/4579760" quoteTitle="true" derivedAnchor="IEEE1588-2008">
          <front>
            <title>IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems</title>
            <author>
              <organization showOnFrontPage="true">IEEE</organization>
            </author>
            <date month="7" year="2008"/>
          </front>
          <seriesInfo name="IEEE Std" value="1588-2008"/>
          <seriesInfo name="DOI" value="10.1109/IEEESTD.2008.4579760"/>
        </reference>
        <reference anchor="RFC5906" target="https://www.rfc-editor.org/info/rfc5906" quoteTitle="true" derivedAnchor="RFC5906">
          <front>
            <title>Network Time Protocol Version 4: Autokey Specification</title>
            <author fullname="B. Haberman" initials="B." role="editor" surname="Haberman"/>
            <author fullname="D. Mills" initials="D." surname="Mills"/>
            <date month="June" year="2010"/>
            <abstract>
              <t indent="0">This memo describes the Autokey security model for authenticating servers to clients using the Network Time Protocol (NTP) and public key cryptography. Its design is based on the premise that IPsec schemes cannot be adopted intact, since that would preclude stateless servers and severely compromise timekeeping accuracy. In addition, Public Key Infrastructure (PKI) schemes presume authenticated time values are always available to enforce certificate lifetimes; however, cryptographically verified timestamps require interaction between the timekeeping and authentication functions.</t>
              <t indent="0">This memo includes the Autokey requirements analysis, design principles, and protocol specification. A detailed description of the protocol states, events, and transition functions is included. A prototype of the Autokey design based on this memo has been implemented, tested, and documented in the NTP version 4 (NTPv4) software distribution for the Unix, Windows, and Virtual Memory System (VMS) operating systems at http://www.ntp.org. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5906"/>
          <seriesInfo name="DOI" value="10.17487/RFC5906"/>
        </reference>
        <reference anchor="RFC8915" target="https://www.rfc-editor.org/info/rfc8915" quoteTitle="true" derivedAnchor="RFC8915">
          <front>
            <title>Network Time Security for the Network Time Protocol</title>
            <author fullname="D. Franke" initials="D." surname="Franke"/>
            <author fullname="D. Sibold" initials="D." surname="Sibold"/>
            <author fullname="K. Teichel" initials="K." surname="Teichel"/>
            <author fullname="M. Dansarie" initials="M." surname="Dansarie"/>
            <author fullname="R. Sundblad" initials="R." surname="Sundblad"/>
            <date month="September" year="2020"/>
            <abstract>
              <t indent="0">This memo specifies Network Time Security (NTS), a mechanism for using Transport Layer Security (TLS) and Authenticated Encryption with Associated Data (AEAD) to provide cryptographic security for the client-server mode of the Network Time Protocol (NTP).</t>
              <t indent="0">NTS is structured as a suite of two loosely coupled sub-protocols. The first (NTS Key Establishment (NTS-KE)) handles initial authentication and key establishment over TLS. The second (NTS Extension Fields for NTPv4) handles encryption and authentication during NTP time synchronization via extension fields in the NTP packets, and holds all required state only on the client via opaque cookies.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8915"/>
          <seriesInfo name="DOI" value="10.17487/RFC8915"/>
        </reference>
        <reference anchor="RFC9109" target="https://www.rfc-editor.org/info/rfc9109" quoteTitle="true" derivedAnchor="RFC9109">
          <front>
            <title>Network Time Protocol Version 4: Port Randomization</title>
            <author fullname="F. Gont" initials="F." surname="Gont"/>
            <author fullname="G. Gont" initials="G." surname="Gont"/>
            <author fullname="M. Lichvar" initials="M." surname="Lichvar"/>
            <date month="August" year="2021"/>
            <abstract>
              <t indent="0">The Network Time Protocol (NTP) can operate in several modes. Some of these modes are based on the receipt of unsolicited packets and therefore require the use of a well-known port as the local port. However, in the case of NTP modes where the use of a well-known port is not required, employing such a well-known port unnecessarily facilitates the ability of attackers to perform blind/off-path attacks. This document formally updates RFC 5905, recommending the use of transport-protocol ephemeral port randomization for those modes where use of the NTP well-known port is not required.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9109"/>
          <seriesInfo name="DOI" value="10.17487/RFC9109"/>
        </reference>
      </references>
    </references>
    <section anchor="Acknowledgements" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">The author would like to thank <contact fullname="Doug Arnold"/>,
      <contact fullname="Rodney Cummings"/>, <contact fullname="Martin       Langer"/>, and <contact fullname="Robert Sparks"/> for their comments
      and suggestions.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-address">Author's Address</name>
      <author fullname="Miroslav Lichvar" initials="M." surname="Lichvar">
        <organization showOnFrontPage="true">Red Hat</organization>
        <address>
          <email>mlichvar@redhat.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
