<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "https://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC5905 SYSTEM "https://xml.resource.org/public/rfc/bibxml/reference.RFC.5905.xml">
<!ENTITY RFC8915 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8915.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="yes"?>
<?rfc toc="no"?>
<?rfc tocdepth="3"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>

<rfc category="std" docName="draft-mlichvar-ntp-over-ptp-00" ipr="trust200902">
  <front>
    <title>NTP Over PTP</title>

    <author fullname="Miroslav Lichvar" initials="M." surname="Lichvar">
      <organization>Red Hat</organization>
      <address>
        <postal>
          <street>Purkynova 115</street>
          <city>Brno</city>
          <region></region>
          <code>612 00</code>
          <country>Czech Republic</country>
        </postal>
        <email>mlichvar@redhat.com</email>
      </address>
    </author>

    <date year="2021" month="Jun" day="24"/>

    <area>General</area>

    <workgroup>Internet Engineering Task Force</workgroup>

    <keyword>NTP</keyword>

    <abstract>
      <t>This document specifies a transport for the Network Time Protocol
        (NTP) client-server mode using the Precision Time Protocol (PTP) to
        enable hardware timestamping on hardware that can timestamp PTP
        messages but not NTP messages.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>The <xref target="IEEE1588">Precision Time Protocol (PTP)</xref> was
        designed for highly accurate synchronization of clocks in a network. It
        relies on hardware timestamping supported in network devices (e.g.
        interface controllers, switches, and routers) to eliminate the impact
        of processing and queueing delays on PTP measurements.</t>

      <t>PTP was originally designed for multicast communication. Later was
        added a unicast mode, which can be used in larger networks with partial
        on-path PTP support (e.g. telecom profiles G.8265.1 and G.8275.2).</t>

      <t>The <xref target="RFC5905">Network Time Protocol</xref> does not rely
        on hardware timestamping support, but implementations can use it if it
        is available to avoid the impact of processing and queueing delays,
        similarly to PTP. The client-server mode of NTP is functionally similar
        to the PTP unicast mode.</t>

      <t>An issue for NTP is hardware that can specifically timestamp only PTP
        packets. This limitation comes from their design, which does not allow
        the timestamps to be captured or retrieved at the same rate as packets
        can be received or transmitted. A filter needs to be implemented in the
        hardware to inspect each packet and timestamp only those that actually
        need it. The filter can be usually configured for the PTP transport
        (e.g. UDPv4, UDPv6, 802.3) and sometimes even the message type (e.g.
        sync message or delay request) to further reduce the rate of timestamps
        on the server or client side. This limitation prevents hardware
        timestamping of NTP messages. It also prevents timestamping of PTP
        messages if they are secured at the transport layer or below (e.g.
        IPSec or MACSec).</t>

      <t>This document specifies a new transport for NTP to enable the
        PTP-specific timestamping support. It adds a new extension field (TLV)
        for PTP to contain NTP messages.</t>

      <t>NTP over PTP does not disrupt normal operation of PTP. A network and
        even a single host can support both at the same time.</t>

      <t>The specification does not take advantage of the PTP correctionField
        modified by PTP transparent clocks as their support for the unicast
        mode seems to be rare or nonexistent.</t>

      <t>The client/server mode of NTP, even if using the PTP transport, has
        several advantages when compared to the PTP unicast mode:

        <list style="symbols">
          <t>It is more secure. It can use existing security mechanisms
            specified for NTP like <xref target="RFC8915">Network Time
            Security</xref>, not losing any of its features. 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 using client authentication.</t>
          <t>It needs fewer messages and less network bandwith to get the same
            number of timestamps.</t>
          <t>It is better suited for synchronization in networks without full
            on-path support. It does not assume the network delay is constant
            and the number of measurements in opposite directions is symmetric
            (in PTP sync messages and delay requests have independent
            timing).</t>
        </list>
      </t>

      <section title="Requirements Language">
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
          "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
          document are to be interpreted as described in <xref
            target="RFC2119">RFC 2119</xref>.</t>
      </section>
    </section>

    <section title="PTP transport for NTP">
      <t>A new TLV is defined for PTP to contain NTP messages in the client and
        server mode. Using other NTP modes in the TLV is not specified. Any
        transport specified for PTP that supports unicast messaging can be used
        for NTP over PTP, e.g. UDP on IPv4 and IPv6.</t>

      <t>The type value of the NTP TLV is TBD. The TLV contains the whole NTP
        message as would normally be the UDP payload, without any
        modifications. The TLV does not propagate through boundary clocks.</t>

      <t>If the UDP transport is used for PTP, the UDP source and destination
        port numbers MUST be the PTP event port (319). Client port randomization
        would break the timestamping.</t>

      <t>The NTP TLV MUST be included in a delay request message. The
        originTimestamp field and all fields of the header SHOULD be zero,
        except:

        <list style="symbols">
          <t>messageType is 1 (delay request)</t>
          <t>versionPTP is 2</t>
          <t>messageLength is the length of the PTP message including the NTP
            TLV</t>
          <t>domainNumber is TBD</t>
          <t>flagField has the unicastFlag bit set</t>
        </list>
      </t>

      <t>An NTP client using the PTP transport sends NTP requests in PTP
        messages to the server at the same rate as it would normally send them
        over UDP.</t>

      <t>A server which supports the NTP TLV MUST check for the domainNumber
        of TBD and respond to an NTP request with a single PTP message
        containing the NTP response using the same PTP message format. It MUST
        NOT send a delay response message.</t>

      <t>A server which does not support the NTP TLV will not recognize the
        domain number and ignore the message. If it responded to messages in
        the domain (e.g. due to misconfiguration), it would send a delay
        response (to port 320 if using the UDP transport), which would be
        ignored by the client.</t>

      <t>Any authenticator fields included in the NTP messages MUST be
        calculated only over the NTP message following the header of the NTP
        TLV.</t>

      <t>Timestamps SHOULD NOT be adjusted for the beginning of the NTP data in
        the PTP message. They SHOULD still correspond to the ending of the
        transmission and beginning of the reception (e.g. start of delimiter in
        the Ethernet frame).</t>

      <t>Any modifications of the correctionField made by potential one-step
        end-to-end transparent clocks in the network SHOULD be ignored by the
        server and client.</t>
    </section>

    <!--
    <section anchor="Acknowledgements" title="Acknowledgements">
    </section>

    <section anchor="IANA" title="IANA Considerations">
    </section>
    -->

    <section anchor="Security" title="Security Considerations">
      <t>The PTP transport prevents NTP clients from randomizing their source
        port. It has no other impact on security of NTP.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      &RFC2119;

      &RFC5905;

      <reference anchor="IEEE1588" target="https://www.ieee.org">
        <front>
          <title>
            IEEE std. 1588-2019, "IEEE Standard for a Precision Clock
            Synchronization for Networked Measurement and Control
            Systems."
          </title>
          <author>
            <organization>
              Institute of Electrical and Electronics Engineers
            </organization>
          </author>
          <date month="11" year="2019" />
        </front>
      </reference>
    </references>

    <references title="Informative References">
      &RFC8915;
    </references>
  </back>
</rfc>
