| rfc8877xml2.original.xml | rfc8877.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
| <!-- [ | ||||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info" | ||||
| docName="draft-ietf-ntp-packet-timestamps-09" ipr="trust200902" | ||||
| obsoletes="" updates="" submissionType="IETF" xml:lang="en" | ||||
| tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" version="3" | ||||
| consensus="true" number="8877"> | ||||
| <!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .2119.xml"> | ||||
| <!ENTITY RFC8174 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .8174.xml"> | ||||
| <!ENTITY RFC2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .2629.xml"> | ||||
| <!ENTITY RFC3552 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .3552.xml"> | ||||
| <!ENTITY RFC5226 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .5226.xml"> | ||||
| ]> | ||||
| <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
| <?rfc strict="yes" ?> | ||||
| <?rfc toc="yes"?> | ||||
| <?rfc tocdepth="4"?> | ||||
| <?rfc symrefs="yes"?> | ||||
| <?rfc sortrefs="yes" ?> | ||||
| <?rfc compact="yes" ?> | ||||
| <?rfc subcompact="no" ?> | ||||
| <rfc category="info" docName="draft-ietf-ntp-packet-timestamps-09" | ||||
| ipr="trust200902"> | ||||
| <front> | <front> | |||
| <title abbrev="Packet Timestamps">Guidelines for Defining Packet | <title abbrev="Packet Timestamps">Guidelines for Defining Packet | |||
| Timestamps</title> | Timestamps</title> | |||
| <seriesInfo name="RFC" value="8877"/> | ||||
| <author fullname="Tal Mizrahi" initials="T." surname="Mizrahi"> | <author fullname="Tal Mizrahi" initials="T." surname="Mizrahi"> | |||
| <organization abbrev="">Huawei Smart Platforms iLab</organization> | <organization abbrev="">Huawei</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>8-2 Matam</street> | <street>8-2 Matam</street> | |||
| <city>Haifa</city> | <city>Haifa</city> | |||
| <code>3190501</code> | <code>3190501</code> | |||
| <country>Israel</country> | <country>Israel</country> | |||
| </postal> | </postal> | |||
| <email>tal.mizrahi.phd@gmail.com</email> | <email>tal.mizrahi.phd@gmail.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Joachim Fabini" initials="J." surname="Fabini"> | <author fullname="Joachim Fabini" initials="J." surname="Fabini"> | |||
| <organization>TU Wien</organization> | <organization>TU Wien</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Gusshausstrasse 25/E389</street> | <street>Gusshausstrasse 25/E389</street> | |||
| <city>Vienna</city><code>1040</code> | ||||
| <city>Vienna 1040</city> | ||||
| <country>Austria</country> | <country>Austria</country> | |||
| </postal> | </postal> | |||
| <phone>+43 1 58801 38813</phone> | <phone>+43 1 58801 38813</phone> | |||
| <facsimile>+43 1 58801 38898</facsimile> | ||||
| <email>Joachim.Fabini@tuwien.ac.at</email> | <email>Joachim.Fabini@tuwien.ac.at</email> | |||
| <uri>http://www.tc.tuwien.ac.at/about-us/staff/joachim-fabini/</uri> | <uri>http://www.tc.tuwien.ac.at/about-us/staff/joachim-fabini/</uri> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Al Morton" initials="A." surname="Morton"> | <author fullname="Al Morton" initials="A." surname="Morton"> | |||
| <organization>AT&T Labs</organization> | <organization>AT&T Labs</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>200 Laurel Avenue South</street> | <street>200 Laurel Avenue South</street> | |||
| <city>Middletown</city> | ||||
| <city>Middletown,</city> | ||||
| <region>NJ</region> | <region>NJ</region> | |||
| <code>07748</code> | <code>07748</code> | |||
| <country>United States of America</country> | ||||
| <country>USA</country> | ||||
| </postal> | </postal> | |||
| <phone>+1 732 420 1571</phone> | <phone>+1 732 420 1571</phone> | |||
| <facsimile>+1 732 368 1192</facsimile> | ||||
| <email>acmorton@att.com</email> | <email>acmorton@att.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date month="September" year="2020"/> | ||||
| <date year="2020"/> | ||||
| <area>General</area> | <area>General</area> | |||
| <workgroup>NTP Working Group</workgroup> | <workgroup>NTP Working Group</workgroup> | |||
| <keyword>Timestamps</keyword> | <keyword>Timestamps</keyword> | |||
| <abstract> | <abstract> | |||
| <t>Various network protocols make use of binary-encoded timestamps that | <t>Various network protocols make use of binary-encoded timestamps that | |||
| are incorporated in the protocol packet format, referred to as packet | are incorporated in the protocol packet format, referred to as "packet | |||
| timestamps for short. This document specifies guidelines for defining | timestamps" for short. This document specifies guidelines for defining | |||
| packet timestamp formats in networking protocols at various layers. It | packet timestamp formats in networking protocols at various layers. It | |||
| also presents three recommended timestamp formats. The target audience | also presents three recommended timestamp formats. The target audience | |||
| of this document includes network protocol designers. It is expected | of this document includes network protocol designers. It is expected | |||
| that a new network protocol that requires a packet timestamp will, in | that a new network protocol that requires a packet timestamp will, in | |||
| most cases, use one of the recommended timestamp formats. If none of the | most cases, use one of the recommended timestamp formats. If none of the | |||
| recommended formats fits the protocol requirements, the new protocol | recommended formats fits the protocol requirements, the new protocol | |||
| specification should specify the format of the packet timestamp | specification should specify the format of the packet timestamp | |||
| according to the guidelines in this document.</t> | according to the guidelines in this document.</t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| skipping to change at line 112 ¶ | skipping to change at line 71 ¶ | |||
| packet timestamp formats in networking protocols at various layers. It | packet timestamp formats in networking protocols at various layers. It | |||
| also presents three recommended timestamp formats. The target audience | also presents three recommended timestamp formats. The target audience | |||
| of this document includes network protocol designers. It is expected | of this document includes network protocol designers. It is expected | |||
| that a new network protocol that requires a packet timestamp will, in | that a new network protocol that requires a packet timestamp will, in | |||
| most cases, use one of the recommended timestamp formats. If none of the | most cases, use one of the recommended timestamp formats. If none of the | |||
| recommended formats fits the protocol requirements, the new protocol | recommended formats fits the protocol requirements, the new protocol | |||
| specification should specify the format of the packet timestamp | specification should specify the format of the packet timestamp | |||
| according to the guidelines in this document.</t> | according to the guidelines in this document.</t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section title="Introduction"> | <section numbered="true" toc="default"> | |||
| <section title="Background"> | <name>Introduction</name> | |||
| <section numbered="true" toc="default"> | ||||
| <name>Background</name> | ||||
| <t>Timestamps are widely used in network protocols for various | <t>Timestamps are widely used in network protocols for various | |||
| purposes: timestamps are used for logging or reporting the time of an | purposes: for logging or reporting the time of an | |||
| event, delay measurement and clock synchronization protocols both make | event, for messages in delay measurement and clock synchronization | |||
| use of timestamped messages, and in security protocols a timestamp is | protocols, and as part of a value that is unlikely to repeat (nonce) | |||
| often used as part of a value that is unlikely to repeat (nonce).</t> | in security protocols.</t> | |||
| <t>Timestamps are represented in the RFC series in one of two forms: | <t>Timestamps are represented in the RFC series in one of two forms: | |||
| text-based timestamps, and packet timestamps. Text-based timestamps | text-based timestamps and packet timestamps. Text-based timestamps | |||
| <xref target="RFC3339"/> are represented as user-friendly strings, and | <xref target="RFC3339" format="default"/> are represented as user-friend | |||
| are widely used in the RFC series, for example in information objects | ly strings and | |||
| and data models, e.g., <xref target="RFC5646"/>, <xref | are widely used in the RFC series -- for example, in information objects | |||
| target="RFC6991"/>, and <xref target="RFC7493"/>. Packet timestamps, | and data models, e.g., <xref target="RFC5646" format="default"/>, <xref | |||
| target="RFC6991" format="default"/>, and <xref target="RFC7493" format="default" | ||||
| />. Packet timestamps, | ||||
| on the other hand, are represented by a compact binary field that has | on the other hand, are represented by a compact binary field that has | |||
| a fixed size, and are not intended to have a human-friendly format. | a fixed size and are not intended to have a human-friendly format. | |||
| Packet timestamps are also very common in the RFC series, and are used | Packet timestamps are also very common in the RFC series and are used, | |||
| for example for measuring delay and for synchronizing clocks, e.g., | for example, for measuring delay and for synchronizing clocks, e.g., | |||
| <xref target="RFC5905"/>, <xref target="RFC4656"/>, and <xref | <xref target="RFC5905" format="default"/>, <xref target="RFC4656" format | |||
| target="RFC7323"/>.</t> | ="default"/>, and <xref target="RFC7323" format="default"/>.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Scope of this Document"> | <name>Scope of this Document</name> | |||
| <t>This document presents guidelines for defining a packet timestamp | <t>This document presents guidelines for defining a packet timestamp | |||
| format in network protocols. Three recommended timestamp formats are | format in network protocols. Three recommended timestamp formats are | |||
| presented. It is expected that a new network protocol that requires a | presented. It is expected that a new network protocol that requires a | |||
| packet timestamp will, in most cases, use one of these recommended | packet timestamp will, in most cases, use one of these recommended | |||
| timestamp formats. In some cases a network protocol may use more than | timestamp formats. In some cases, a network protocol may use more than | |||
| one of the recommended timestamp formats. However, if none of the | one of the recommended timestamp formats. However, if none of the | |||
| recommended formats fits the protocol requirements, the new protocol | recommended formats fits the protocol requirements, the new protocol | |||
| specification should specify the format of the packet timestamp | specification should specify the format of the packet timestamp | |||
| according to the guidelines in this document.</t> | according to the guidelines in this document.</t> | |||
| <t>The rationale behind defining a relatively small set of recommended | <t>The rationale behind defining a relatively small set of recommended | |||
| formats is that it enables significant reuse; network protocols can | formats is that it enables significant reuse; network protocols can | |||
| typically reuse the timestamp format of the Network Time Protocol | typically reuse the timestamp format of the Network Time Protocol | |||
| (NTP) or the Precision Time Protocol (PTP), allowing a straightforward | (NTP) <xref target="RFC5905"/> or the Precision Time Protocol (PTP) | |||
| integration with an NTP or a PTP-based timer. Moreover, since accurate | <xref target="IEEE1588"/>, allowing a straightforward | |||
| integration with an NTP- or PTP-based timer. Moreover, since accurate | ||||
| timestamping mechanisms are often implemented in hardware, a new | timestamping mechanisms are often implemented in hardware, a new | |||
| network protocol that reuses an existing timestamp format can be | network protocol that reuses an existing timestamp format can be | |||
| quickly deployed using existing hardware timestamping | quickly deployed using existing hardware timestamping | |||
| capabilities.</t> | capabilities.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="How to Use This Document"> | <name>How to Use This Document</name> | |||
| <t>This document is intended as a reference for network protocol | <t>This document is intended as a reference for network protocol | |||
| designers. When defining a network protocol that uses a packet | designers. When defining a network protocol that uses a packet | |||
| timestamp, the recommended timestamp formats should be considered | timestamp, the recommended timestamp formats should be considered | |||
| first (<xref target="Recommended"/>). If one of these formats is used, | first (<xref target="Recommended" format="default"/>). If one of these f | |||
| it should be referenced along the lines of the examples in <xref | ormats is used, | |||
| target="Ex1Sec"/> and <xref target="Ex2Sec"/>. If none of the | it should be referenced along the lines of the examples in Sections <xre | |||
| f target="Ex1Sec" format="counter"/> and <xref target="Ex2Sec" format="counter"/ | ||||
| >. If none of the | ||||
| recommended formats fits the required functionality, then a new | recommended formats fits the required functionality, then a new | |||
| timestamp format should be defined using the template of <xref | timestamp format should be defined using the template in <xref target="f | |||
| target="format"/>.</t> | ormat" format="default"/>.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Terminology"> | <name>Terminology</name> | |||
| <section title="Requirements Language"> | <section numbered="true" toc="default"> | |||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <name>Requirements Language</name> | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | <t> | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
| when, they appear in all capitals, as shown here.</t> | 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> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Abbreviations"> | <name>Abbreviations</name> | |||
| <t>NTP Network Time Protocol <xref | <dl newline="false" spacing="normal" indent="8"> | |||
| target="RFC5905"/></t> | <dt>NTP</dt> | |||
| <dd>Network Time Protocol <xref target="RFC5905" format="default"/></dd> | ||||
| <t>PTP Precision Time Protocol <xref | <dt>PTP</dt> | |||
| target="IEEE1588"/></t> | <dd>Precision Time Protocol <xref target="IEEE1588" format="default"/></dd> | |||
| <dt>TAI</dt> | ||||
| <t>TAI International Atomic Time</t> | <dd>International Atomic Time</dd> | |||
| <dt>UTC</dt> | ||||
| <t>UTC Coordinated Universal Time</t> | <dd>Coordinated Universal Time</dd> | |||
| </dl> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Terms used in this Document"> | <name>Terms Used in This Document</name> | |||
| <t><list hangIndent="23" style="hanging"> | <dl newline="false" spacing="normal" indent="23"> | |||
| <t hangText="Timestamp:">A value that represents a point in time, | <dt>Timestamp:</dt> | |||
| <dd>A value that represents a point in time, | ||||
| corresponding to an event that occurred or is scheduled to | corresponding to an event that occurred or is scheduled to | |||
| occur.</t> | occur.</dd> | |||
| <dt>Timestamp error:</dt> | ||||
| <t hangText="Timestamp error:">The difference between the | <dd>The difference between the | |||
| timestamp value and the value of a reference clock at the time of | timestamp value and the value of a reference clock at the time of | |||
| the event that the timestamp was intended to indicate.</t> | the event that the timestamp was intended to indicate.</dd> | |||
| <dt>Timestamp format:</dt> | ||||
| <t hangText="Timestamp format:">The specification of a timestamp, | <dd>The specification of a timestamp, | |||
| which is represented by a set of attributes that unambiguously | which is represented by a set of attributes that unambiguously | |||
| define the syntax and semantics of a timestamp.</t> | defines the syntax and semantics of a timestamp.</dd> | |||
| <dt>Timestamp accuracy:</dt> | ||||
| <t hangText="Timestamp accuracy:">The mean over an ensemble of | <dd>The mean over an ensemble of | |||
| measurements of the timestamp error.</t> | measurements of the timestamp error.</dd> | |||
| <dt>Timestamp precision:</dt> | ||||
| <t hangText="Timestamp precision:">The variation over an ensemble | <dd>The variation over an ensemble | |||
| of measurements of the timestamp error.</t> | of measurements of the timestamp error.</dd> | |||
| <dt>Timestamp resolution:</dt> | ||||
| <t hangText="Timestamp resolution:">The minimal time unit used for | <dd>The minimal time unit used for | |||
| representing the timestamp.</t> | representing the timestamp.</dd> | |||
| </list></t> | </dl> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="format" numbered="true" toc="default"> | ||||
| <section anchor="format" title="Packet Timestamp Specification Template"> | <name>Packet Timestamp Specification Template</name> | |||
| <t>This document recommends to use the timestamp formats defined in | <t>This document recommends using the timestamp formats defined in | |||
| <xref target="Recommended"/>. In cases where these timestamp formats do | <xref target="Recommended" format="default"/>. In cases where these timest | |||
| amp formats do | ||||
| not satisfy the protocol requirements, the timestamp specification | not satisfy the protocol requirements, the timestamp specification | |||
| should clearly state the reasons for defining a new format. Moreover, it | should clearly state the reasons for defining a new format. Moreover, it | |||
| is recommended to derive the new timestamp format from an existing | is recommended to derive the new timestamp format from an existing | |||
| timestamp format, either a timestamp format from this document, or any | timestamp format, either a timestamp format from this document or any | |||
| other previously defined timestamp format.</t> | other previously defined timestamp format.</t> | |||
| <t>The timestamp specification must unambiguously define the syntax and | <t>The timestamp specification must unambiguously define the syntax and | |||
| the semantics of the timestamp. The current section defines the minimum | semantics of the timestamp. The current section defines the minimum | |||
| set of attributes, but it should be noted that in some cases additional | set of attributes, but it should be noted that in some cases, additional | |||
| attributes or aspects will need to be defined in the timestamp | attributes or aspects will need to be defined in the timestamp | |||
| specification.</t> | specification.</t> | |||
| <t>This section defines a template for specifying packet timestamps. A | <t>This section defines a template for specifying packet timestamps. A | |||
| timestamp format specification MUST include at least the following | timestamp format specification <bcp14>MUST</bcp14> include at least the fo llowing | |||
| aspects:</t> | aspects:</t> | |||
| <dl newline="true" spacing="normal"> | ||||
| <t>Timestamp syntax: <list hangIndent="10" style="empty"> | <dt>Timestamp syntax:</dt> | |||
| <t>- Size: The number of bits (or octets) used to represent the | <dd> | |||
| packet timestamp field. If the timestamp is comprised of more than | <dl newline="false" spacing="normal"> | |||
| <dt>Size:</dt><dd><t> The number of bits (or octets) used to represent | ||||
| the packet timestamp field. If the timestamp is comprised of more than | ||||
| one field, the size of each field is specified. Network order (big | one field, the size of each field is specified. Network order (big | |||
| endian) is assumed by default; if this is not the case then this | endian) is assumed by default; if this is not the case, then this | |||
| section explicitly specifies the endianity.</t> | section explicitly specifies the endianity.</t></dd></dl></dd></dl> | |||
| </list></t> | ||||
| <t>Timestamp semantics: <list hangIndent="10" style="empty"> | <dl newline="true" spacing="normal"> | |||
| <t>- Units: The units used to represent the timestamp. If the | <dt>Timestamp semantics:</dt><dd> | |||
| <dl newline="false" spacing="normal"> | ||||
| <dt>Units:</dt><dd><t>The units used to represent the timestamp. If the | ||||
| timestamp is comprised of more than one field, the units of each | timestamp is comprised of more than one field, the units of each | |||
| field are specified. If a field is limited to a specific range of | field are specified. If a field is limited to a specific range of | |||
| values, this section specifies the permitted range of values.</t> | values, this section specifies the permitted range of values.</t></dd> | |||
| <dt>Resolution:</dt><dd><t>The timestamp resolution; the resolution is e | ||||
| <t>- Resolution: The timestamp resolution; the resolution is equal | qual | |||
| to the timestamp field unit. If the timestamp consists of two or | to the timestamp field unit. If the timestamp consists of two or | |||
| more fields using different time units, then the resolution is the | more fields using different time units, then the resolution is the | |||
| smallest time unit.</t> | smallest time unit.</t></dd> | |||
| <dt>Wraparound:</dt><dd><t>The wraparound period of the timestamp; any f | ||||
| <t>- Wraparound: The wraparound period of the timestamp; any further | urther | |||
| wraparound-related considerations should be described here.</t> | wraparound-related considerations should be described here.</t></dd> | |||
| <dt>Epoch:</dt><dd><t>The origin of the timescale used for the timestamp | ||||
| <t>- Epoch: The origin of the timescale used for the timestamp; the | ; the | |||
| moment in time used as a reference for the timestamp value. For | moment in time used as a reference for the timestamp value. For | |||
| example, the epoch may be based on a standard time scale, such as | example, the epoch may be based on a standard time scale, such as | |||
| UTC. Another example is a relative timestamp, in which the epoch | UTC. Another example is a relative timestamp, in which the epoch | |||
| could be the time at which the device using the timestamp was | could be the time at which the device using the timestamp was | |||
| powered up, and is not affected by leap seconds (see the next | powered up and is not affected by leap seconds (see the next | |||
| attribute).</t> | attribute).</t></dd> | |||
| <dt>Leap seconds:</dt><dd><t>This subsection specifies whether the times | ||||
| <t>- Leap seconds: This subsection specifies whether the timestamp | tamp | |||
| is affected by leap seconds. If the timestamp is affected by leap | is affected by leap seconds. If the timestamp is affected by leap | |||
| seconds, then it represents the time elapsed since the epoch minus | seconds, then it represents the time elapsed since the epoch minus | |||
| the number of leap seconds that have occurred since the epoch.</t> | the number of leap seconds that have occurred since the epoch.</t></dd | |||
| </list></t> | > | |||
| </dl></dd></dl> | ||||
| <t>Synchronization aspects: <list hangIndent="10" style="empty"> | <dl newline="true" spacing="normal"> | |||
| <t>The specification of a network protocol that makes use of a | <dt>Synchronization aspects:</dt> | |||
| <dd>The specification of a network protocol that makes use of a | ||||
| packet timestamp is expected to include the synchronization aspects | packet timestamp is expected to include the synchronization aspects | |||
| of using the timestamp. While the synchronization aspects are not | of using the timestamp. While the synchronization aspects are not | |||
| strictly part of the timestamp format specification, these aspects | strictly part of the timestamp format specification, these aspects | |||
| provide the necessary context for using the timestamp within the | provide the necessary context for using the timestamp within the | |||
| scope of the protocol. In some cases timestamps are used without | scope of the protocol. In some cases, timestamps are used without | |||
| synchronization, e.g., a timestamp that indicates the number of | synchronization, e.g., a timestamp that indicates the number of | |||
| seconds since power up. In such cases the Synchronization Aspects | seconds since power-up. In such cases, the Synchronization Aspects | |||
| section will specify that the timestamp does not correspond to a | section will specify that the timestamp does not correspond to a | |||
| synchronized time reference, and may discuss how this affects the | synchronized time reference and may discuss how this affects the | |||
| usage of the timestamp. Further details about synchronization | usage of the timestamp. Further details about synchronization | |||
| aspects are discussed in <xref target="SynchSec"/>.</t> | aspects are discussed in <xref target="SynchSec" format="default"/>.</ | |||
| </list></t> | dd> | |||
| </dl> | ||||
| </section> | </section> | |||
| <section anchor="Recommended" numbered="true" toc="default"> | ||||
| <section anchor="Recommended" title="Recommended Timestamp Formats"> | <name>Recommended Timestamp Formats</name> | |||
| <t>This document defines a set of recommended timestamp formats. | <t>This document defines a set of recommended timestamp formats. | |||
| Clearly, different network protocols may have different requirements and | Clearly, different network protocols may have different requirements and | |||
| constraints, and consequently may use different timestamp formats. The | constraints; consequently, they may use different timestamp formats. The | |||
| choice of the specific timestamp format for a given protocol may depend | choice of a specific timestamp format for a given protocol may depend | |||
| on a various factors. A few examples of factors that may affect the | on various factors. A few examples of factors that may affect the | |||
| choice of the timestamp format:</t> | choice of the timestamp format include the following:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"> | <li>Timestamp size: While some network protocols use a large | |||
| <t>Timestamp size: while some network protocols use a large | timestamp field, in some cases, there may be constraints with respect | |||
| timestamp field, in some cases there may be constraints with respect | ||||
| to the timestamp size, affecting the choice of the timestamp | to the timestamp size, affecting the choice of the timestamp | |||
| format.</t> | format.</li> | |||
| <li>Resolution: The time resolution is another factor that may | ||||
| <t>Resolution: the time resolution is another factor that may | ||||
| directly affect the selected timestamp format. A potentially | directly affect the selected timestamp format. A potentially | |||
| important factor in this context is extensibility; it may be | important factor in this context is extensibility; it may be | |||
| desirable to allow a timestamp format to be extensible to a higher | desirable to allow a timestamp format to be extensible to a higher | |||
| resolution by extending the field. For example, the resolution of | resolution by extending the field. For example, the resolution of | |||
| the NTP 32-bit timestamp format can be improved by extending it to | the NTP 32-bit timestamp format can be improved by extending it to | |||
| the NTP 64-bit timestamp format in a straightforward way.</t> | the NTP 64-bit timestamp format in a straightforward way.</li> | |||
| <li>Wraparound period: The length of the time interval in which the | ||||
| <t>Wraparound period: the length of the time interval in which the | ||||
| timestamp is unique may also be an important factor in choosing the | timestamp is unique may also be an important factor in choosing the | |||
| timestamp format. Along with the timestamp resolution, these two | timestamp format. Along with the timestamp resolution, these two | |||
| factors determine the required number of bits in the timestamp.</t> | factors determine the required number of bits in the timestamp.</li> | |||
| <li>Common format for multiple protocols: If there are two or more | ||||
| <t>Common format for multiple protocols: if there are two or more | ||||
| network protocols that use timestamps and are often used together in | network protocols that use timestamps and are often used together in | |||
| typical systems, using a common timestamp format should be preferred | typical systems, using a common timestamp format should be preferred | |||
| if possible. For example, if the network protocol that is being | if possible. For example, if the network protocol that is being | |||
| defined typically runs on a PC, then an NTP-based timestamp format | defined typically runs on a PC, then an NTP-based timestamp format | |||
| may allow easier integration with an NTP-synchronized timer. In | may allow easier integration with an NTP-synchronized timer. In | |||
| contrast, a protocol that is typically deployed on a hardware-based | contrast, a protocol that is typically deployed on a hardware-based | |||
| platform, may make better use of a PTP-based timestamp, allowing | platform may make better use of a PTP-based timestamp, allowing | |||
| more efficient integration with a PTP-synchronized timer.</t> | more efficient integration with a PTP-synchronized timer.</li> | |||
| </list></t> | </ul> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Using a Recommended Timestamp Format"> | <name>Using a Recommended Timestamp Format</name> | |||
| <t>A specification that uses one of the recommended timestamp formats | <t>A specification that uses one of the recommended timestamp formats | |||
| should specify explicitly that this is a recommended timestamp format, | should specify explicitly that this is a recommended timestamp format | |||
| and point to the relevant section in the current document.</t> | and point to the relevant section in the current document.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="NTP Timestamp Formats"> | <name>NTP Timestamp Formats</name> | |||
| <section title="NTP 64-bit Timestamp Format"> | <section anchor="time-64bit" numbered="true" toc="default"> | |||
| <name>NTP 64-Bit Timestamp Format</name> | ||||
| <t>The Network Time Protocol (NTP) 64-bit timestamp format is | <t>The Network Time Protocol (NTP) 64-bit timestamp format is | |||
| defined in <xref target="RFC5905"/>. This timestamp format is used | defined in <xref target="RFC5905" format="default"/>. This timestamp f | |||
| in several network protocols, including <xref target="RFC6374"/>, | ormat is used | |||
| <xref target="RFC4656"/>, and <xref target="RFC5357"/>. Since this | in several network protocols, including <xref target="RFC6374" format= | |||
| timestamp format is used in NTP, this timestamp format should be | "default"/>, | |||
| <xref target="RFC4656" format="default"/>, and <xref target="RFC5357" | ||||
| format="default"/>. Since this | ||||
| timestamp format is used in NTP, it should be | ||||
| preferred in network protocols that are typically deployed in | preferred in network protocols that are typically deployed in | |||
| concert with NTP.</t> | concert with NTP.</t> | |||
| <t>The format is presented in this section according to the template | <t>The format is presented in this section according to the template | |||
| defined in <xref target="format"/>.</t> | defined in <xref target="format" format="default"/>.</t> | |||
| <figure anchor="NTPFormat"> | ||||
| <figure align="center" anchor="NTPFormat" | <name>NTP 64-Bit Timestamp Format</name> | |||
| title="NTP [RFC5905] 64-bit Timestamp Format"> | <artwork align="left" name="" type="" alt=""><![CDATA[ | |||
| <artwork align="left"><![CDATA[ | ||||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Seconds | | | Seconds | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Fraction | | | Fraction | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t>Timestamp field format: <list hangIndent="10" style="empty"> | <dl newline="true" spacing="normal"> | |||
| <t>Seconds: specifies the integer portion of the number of | <dt>Timestamp field format:</dt> | |||
| seconds since the epoch.</t> | <dd> | |||
| <dl newline="false" spacing="normal"> | ||||
| <t>- Size: 32 bits.</t> | <dt>Seconds:</dt><dd><t>Specifies the integer portion of the | |||
| number of seconds since the epoch.</t> | ||||
| <t>- Units: seconds.</t> | <dl newline="false" spacing="normal"> | |||
| <dt>Size:</dt><dd>32 bits.</dd> | ||||
| <t>Fraction: specifies the fractional portion of the number of | <dt>Units:</dt> <dd>Seconds.</dd> | |||
| </dl> | ||||
| </dd> | ||||
| <dt>Fraction:</dt><dd><t>Specifies the fractional portion of the num | ||||
| ber of | ||||
| seconds since the epoch.</t> | seconds since the epoch.</t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <t>- Size: 32 bits.</t> | <dt>Size:</dt><dd>32 bits.</dd> | |||
| <dt>Units:</dt><dd>The unit is 2<sup>-32</sup> seconds, which is rou | ||||
| <t>- Units: the unit is 2^(-32) seconds, which is roughly equal | ghly | |||
| to 233 picoseconds.</t> | equal to 233 picoseconds.</dd> | |||
| </list></t> | </dl> | |||
| </dd> | ||||
| <t>Epoch: <list hangIndent="10" style="empty"> | </dl> | |||
| <t>The epoch is 1 January 1900 at 00:00 UTC.</t> | </dd> | |||
| <dt>Epoch:</dt><dd> | ||||
| <t>Note: As pointed out in [RFC5905], strictly speaking, UTC did | <t>The epoch is 1 January 1900 at 00:00 UTC.</t> | |||
| <t>Note: As pointed out in <xref target="RFC5905"/>, strictly speaki | ||||
| ng, UTC did | ||||
| not exist prior to 1 January 1972, but it is convenient to | not exist prior to 1 January 1972, but it is convenient to | |||
| assume it has existed for all eternity. The current epoch | assume it has existed for all eternity. The current epoch | |||
| implies that the timestamp specifies the number of seconds since | implies that the timestamp specifies the number of seconds since | |||
| 1 January 1972 at 00:00 UTC plus 2272060800 (which is the number | 1 January 1972 at 00:00 UTC plus 2272060800 (which is the number | |||
| of seconds between 1 January 1900 and 1 January 1972).</t> | of seconds between 1 January 1900 and 1 January 1972).</t> | |||
| </list></t> | </dd> | |||
| <dt>Leap seconds:</dt><dd> | ||||
| <t>Leap seconds: <list hangIndent="10" style="empty"> | <t>This timestamp format is affected by leap seconds. The | |||
| <t>This timestamp format is affected by leap seconds. The | ||||
| timestamp represents the number of seconds elapsed since the | timestamp represents the number of seconds elapsed since the | |||
| epoch minus the number of leap seconds. Thus, during and | epoch minus the number of leap seconds. Thus, during and | |||
| possibly before and/or after the occurrence of a leap second, | possibly before and/or after the occurrence of a leap second, | |||
| the value of the timestamp may temporarily be ambiguous, as | the value of the timestamp may temporarily be ambiguous, as | |||
| further discussed in <xref target="SynchSec"/>.</t> | further discussed in <xref target="SynchSec" format="default"/>.</ | |||
| </list></t> | t> | |||
| </dd> | ||||
| <t>Resolution: <list hangIndent="10" style="empty"> | <dt>Resolution: </dt><dd> | |||
| <t>The resolution is 2^(-32) seconds.</t> | <t>The resolution is 2<sup>-32</sup> seconds.</t> | |||
| </list></t> | </dd> | |||
| <dt>Wraparound:</dt><dd> | ||||
| <t>Wraparound: <list hangIndent="10" style="empty"> | <t>This time format wraps around every 2<sup>32</sup> seconds, which | |||
| <t>This time format wraps around every 2^32 seconds, which is | is | |||
| roughly 136 years. The next wraparound will occur in the year | roughly 136 years. The next wraparound will occur in the year | |||
| 2036.</t> | 2036.</t> | |||
| </list></t> | </dd> | |||
| </dl> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="NTP 32-bit Timestamp Format"> | <name>NTP 32-Bit Timestamp Format</name> | |||
| <t>The Network Time Protocol (NTP) 32-bit timestamp format is | <t>The Network Time Protocol (NTP) 32-bit timestamp format is | |||
| defined in <xref target="RFC5905"/>. This timestamp format is used | defined in <xref target="RFC5905" format="default"/>. This timestamp f | |||
| in <xref target="I-D.ietf-ippm-initial-registry"/> and <xref | ormat is used | |||
| target="I-D.ietf-sfc-nsh-dc-allocation"/>. This timestamp format | in <xref target="I-D.ietf-ippm-initial-registry" format="default"/> an | |||
| d <xref target="I-D.ietf-sfc-nsh-dc-allocation" format="default"/>. This timesta | ||||
| mp format | ||||
| should be preferred in network protocols that are typically deployed | should be preferred in network protocols that are typically deployed | |||
| in concert with NTP. The 32-bit format can be used either when space | in concert with NTP. The 32-bit format can be used either when space | |||
| constraints do not allow the use of the 64-bit format, or when the | constraints do not allow the use of the 64-bit format or when the | |||
| 32-bit format satisfies the resolution and wraparound | 32-bit format satisfies the resolution and wraparound | |||
| requirements.</t> | requirements.</t> | |||
| <t>The format is presented in this section according to the template | <t>The format is presented in this section according to the template | |||
| defined in <xref target="format"/>.</t> | defined in <xref target="format" format="default"/>.</t> | |||
| <figure anchor="NTPShortFormat"> | ||||
| <figure align="center" anchor="NTPShortFormat" | <name>NTP 32-Bit Timestamp Format</name> | |||
| title="NTP [RFC5905] 32-bit Timestamp Format"> | <artwork align="left" name="" type="" alt=""><![CDATA[ | |||
| <artwork align="left"><![CDATA[ | ||||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Seconds | Fraction | | | Seconds | Fraction | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <dl newline="true" spacing="normal"> | ||||
| <t>Timestamp field format: <list hangIndent="10" style="empty"> | <dt>Timestamp field format:</dt> | |||
| <t>Seconds: specifies the integer portion of the number of | <dd> | |||
| <dl newline="false" spacing="normal"> | ||||
| <dt>Seconds:</dt><dd><t>Specifies the integer portion of the number | ||||
| of | ||||
| seconds since the epoch.</t> | seconds since the epoch.</t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <dt>Size:</dt><dd>16 bits.</dd> | ||||
| <dt>Units:</dt><dd>Seconds.</dd> | ||||
| </dl> | ||||
| </dd> | ||||
| <t>- Size: 16 bits.</t> | <dt>Fraction:</dt><dd><t>Specifies the fractional portion of the num | |||
| ber of | ||||
| <t>- Units: seconds.</t> | ||||
| <t>Fraction: specifies the fractional portion of the number of | ||||
| seconds since the epoch.</t> | seconds since the epoch.</t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <t>- Size: 16 bits.</t> | <dt>Size:</dt><dd>16 bits.</dd> | |||
| <dt>Units:</dt><dd>The unit is 2<sup>-16</sup> seconds, which is rou | ||||
| <t>- Units: the unit is 2^(-16) seconds, which is roughly equal | ghly equal | |||
| to 15.3 microseconds.</t> | to 15.3 microseconds.</dd> | |||
| </list></t> | </dl> | |||
| </dd> | ||||
| <t>Epoch: <list hangIndent="10" style="empty"> | </dl> | |||
| <t>The epoch is 1 January 1900 at 00:00 UTC.</t> | </dd> | |||
| <dt>Epoch:</dt><dd> | ||||
| <t>Note: As pointed out in [RFC5905], strictly speaking, UTC did | <t>The epoch is 1 January 1900 at 00:00 UTC.</t> | |||
| <t>Note: As pointed out in <xref target="RFC5905"/>, strictly speaki | ||||
| ng, UTC did | ||||
| not exist prior to 1 January 1972, but it is convenient to | not exist prior to 1 January 1972, but it is convenient to | |||
| assume it has existed for all eternity. The current epoch | assume it has existed for all eternity. The current epoch | |||
| implies that the timestamp specifies the number of seconds since | implies that the timestamp specifies the number of seconds since | |||
| 1 January 1972 at 00:00 UTC plus 2272060800 (which is the number | 1 January 1972 at 00:00 UTC plus 2272060800 (which is the number | |||
| of seconds between 1 January 1900 and 1 January 1972).</t> | of seconds between 1 January 1900 and 1 January 1972).</t></dd> | |||
| </list></t> | <dt>Leap seconds: </dt><dd><t> | |||
| This timestamp format is affected by leap seconds. The | ||||
| <t>Leap seconds: <list hangIndent="10" style="empty"> | ||||
| <t>This timestamp format is affected by leap seconds. The | ||||
| timestamp represents the number of seconds elapsed since the | timestamp represents the number of seconds elapsed since the | |||
| epoch minus the number of leap seconds. Thus, during and | epoch minus the number of leap seconds. Thus, during and | |||
| possibly after the occurrence of a leap second, the value of the | possibly before and/or after the occurrence of a leap second, the value of the | |||
| timestamp may temporarily be ambiguous, as further discussed in | timestamp may temporarily be ambiguous, as further discussed in | |||
| <xref target="SynchSec"/>.</t> | <xref target="SynchSec" format="default"/>.</t></dd> | |||
| </list></t> | <dt>Resolution: </dt><dd><t> | |||
| The resolution is 2<sup>-16</sup> seconds.</t></dd> | ||||
| <t>Resolution: <list hangIndent="10" style="empty"> | <dt>Wraparound:</dt><dd><t> | |||
| <t>The resolution is 2^(-16) seconds.</t> | This time format wraps around every 2<sup>16</sup> seconds, which is | |||
| </list></t> | roughly 18 hours.</t></dd> | |||
| </dl> | ||||
| <t>Wraparound: <list hangIndent="10" style="empty"> | ||||
| <t>This time format wraps around every 2^16 seconds, which is | ||||
| roughly 18 hours.</t> | ||||
| </list></t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="ptp-trunc" numbered="true" toc="default"> | ||||
| <section title="The PTP Truncated Timestamp Format"> | <name>The PTP Truncated Timestamp Format</name> | |||
| <t>The Precision Time Protocol (PTP) <xref target="IEEE1588"/> uses an | <t>The Precision Time Protocol (PTP) <xref target="IEEE1588" format="def | |||
| ault"/> uses an | ||||
| 80-bit timestamp format. The truncated timestamp format is a 64-bit | 80-bit timestamp format. The truncated timestamp format is a 64-bit | |||
| field, which is the 64 least significant bits of the 80-bit PTP | field, which is the 64 least significant bits of the 80-bit PTP | |||
| timestamp. Since this timestamp format is similar to the one used in | timestamp. Since this timestamp format is similar to the one used in | |||
| PTP, this timestamp format should be preferred in network protocols | PTP, this timestamp format should be preferred in network protocols | |||
| that are typically deployed in PTP-capable devices.</t> | that are typically deployed in PTP-capable devices.</t> | |||
| <t>The PTP truncated timestamp format was defined in <xref target="IEEE1 | ||||
| <t>The PTP truncated timestamp format was defined in <xref | 588v1" format="default"/> and is used in several protocols, such as <xref target | |||
| target="IEEE1588v1"/> and is used in several protocols, such as <xref | ="RFC6374" format="default"/>, <xref target="RFC7456" format="default"/>, <xref | |||
| target="RFC6374"/>, <xref target="RFC7456"/>, <xref target="RFC8186"/> | target="RFC8186" format="default"/>, | |||
| and <xref target="ITU-T-Y.1731"/>.</t> | and <xref target="ITU-T-Y.1731" format="default"/>.</t> | |||
| <figure anchor="PTPFormat"> | ||||
| <figure align="center" anchor="PTPFormat" | <name>PTP Truncated Timestamp Format</name> | |||
| title="PTP [IEEE1588] Truncated Timestamp Format"> | <artwork align="left" name="" type="" alt=""><![CDATA[ | |||
| <artwork align="left"><![CDATA[ | ||||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Seconds | | | Seconds | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Nanoseconds | | | Nanoseconds | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <dl newline="true" spacing="normal"> | ||||
| <t>Timestamp field format: <list hangIndent="10" style="empty"> | <dt>Timestamp field format: </dt><dd> | |||
| <t>Seconds: specifies the integer portion of the number of seconds | <dl newline="false" spacing="normal"> | |||
| <dt>Seconds:</dt><dd><t> Specifies the integer portion of the number o | ||||
| f seconds | ||||
| since the epoch.</t> | since the epoch.</t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <t>- Size: 32 bits.</t> | <dt>Size:</dt><dd>32 bits.</dd> | |||
| <dt>Units:</dt><dd>Seconds.</dd></dl></dd> | ||||
| <t>- Units: seconds.</t> | <dt>Nanoseconds:</dt><dd><t>Specifies the fractional portion of the nu | |||
| mber of | ||||
| <t>Nanoseconds: specifies the fractional portion of the number of | ||||
| seconds since the epoch.</t> | seconds since the epoch.</t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <dt>Size:</dt><dd>32 bits.</dd> | ||||
| <dt>Units:</dt><dd>Nanoseconds. The value of this field is in the rang | ||||
| e 0 | ||||
| to (10<sup>9</sup>)-1.</dd> | ||||
| </dl></dd></dl></dd> | ||||
| <t>- Size: 32 bits.</t> | <dt>Epoch: </dt><dd> | |||
| <t>The PTP <xref target="IEEE1588" format="default"/> epoch is 1 Janua | ||||
| <t>- Units: nanoseconds. The value of this field is in the range 0 | ry 1970 | |||
| to (10^9)-1.</t> | 00:00:00 TAI.</t></dd> | |||
| </list></t> | ||||
| <t>Epoch: <list hangIndent="10" style="empty"> | ||||
| <t>The PTP <xref target="IEEE1588"/> epoch is 1 January 1970 | ||||
| 00:00:00 TAI.</t> | ||||
| </list></t> | ||||
| <t>Leap seconds: <list hangIndent="10" style="empty"> | <dt>Leap seconds:</dt><dd><t> | |||
| <t>This timestamp format is not affected by leap seconds.</t> | This timestamp format is not affected by leap seconds.</t></dd> | |||
| </list></t> | ||||
| <t>Resolution: <list hangIndent="10" style="empty"> | <dt>Resolution:</dt><dd><t> | |||
| <t>The resolution is 1 nanosecond.</t> | The resolution is 1 nanosecond.</t></dd> | |||
| </list></t> | ||||
| <t>Wraparound: <list hangIndent="10" style="empty"> | <dt>Wraparound:</dt><dd><t> | |||
| <t>This time format wraps around every 2^32 seconds, which is | This time format wraps around every 2<sup>32</sup> seconds, which is | |||
| roughly 136 years. The next wraparound will occur in the year | roughly 136 years. The next wraparound will occur in the year | |||
| 2106.</t> | 2106.</t></dd> | |||
| </list></t> | </dl> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="SynchSec" numbered="true" toc="default"> | ||||
| <section anchor="SynchSec" title="Synchronization Aspects"> | <name>Synchronization Aspects</name> | |||
| <t>A specification that defines a new timestamp format or uses one of | <t>A specification that defines a new timestamp format or uses one of | |||
| the recommended timestamp formats should include a section on | the recommended timestamp formats should include a Synchronization | |||
| Synchronization Aspects. Note that the recommended timestamp formats | Aspects section. Note that the recommended timestamp formats | |||
| defined in this document (<xref target="Recommended"/>) do not include | defined in this document (<xref target="Recommended" format="default"/>) d | |||
| o not include | ||||
| the synchronization aspects of these timestamp formats, but it is | the synchronization aspects of these timestamp formats, but it is | |||
| expected that specifications of network protocols that make use of these | expected that specifications of network protocols that make use of these | |||
| formats should include the synchronization aspects. Examples of a | formats should include the synchronization aspects. Examples of a | |||
| Synchronization Aspects section can be found in <xref | Synchronization Aspects section can be found in <xref target="UseCaseSec" | |||
| target="UseCaseSec"/>.</t> | format="default"/>.</t> | |||
| <t>The Synchronization Aspects section should specify all the | <t>The Synchronization Aspects section should specify all the | |||
| assumptions and requirements related to synchronization. For example, | assumptions and requirements related to synchronization. For example, | |||
| the synchronization aspects may specify whether nodes populating the | the synchronization aspects may specify whether nodes populating the | |||
| timestamps should be synchronized among themselves, and whether the | timestamps should be synchronized among themselves and whether the | |||
| timestamp is measured with respect to a central reference clock such as | timestamp is measured with respect to a central reference clock such as | |||
| an NTP server. If time is assumed to be synchronized to a time standard | an NTP server. If time is assumed to be synchronized to a time standard | |||
| such as UTC or TAI, it should be specified in this section. Further | such as UTC or TAI, it should be specified in this section. Further | |||
| considerations may be discussed in this section, such as the required | considerations may be discussed in this section, such as the required | |||
| timestamp accuracy and precision.</t> | timestamp accuracy and precision.</t> | |||
| <t>Another aspect that should be discussed in this section is leap | <t>Another aspect that should be discussed in this section is leap | |||
| second <xref target="RFC5905"/> considerations. The timestamp | second <xref target="RFC5905" format="default"/> considerations. The times | |||
| specification template (<xref target="format"/>) specifies whether the | tamp | |||
| specification template (<xref target="format" format="default"/>) specifie | ||||
| s whether the | ||||
| timestamp is affected by leap seconds. It is often the case that further | timestamp is affected by leap seconds. It is often the case that further | |||
| details about leap seconds will need to be defined in the | details about leap seconds will need to be defined in the | |||
| Synchronization Aspects section. Generally speaking, a leap second is a | Synchronization Aspects section. Generally speaking, a leap second is a | |||
| one-second adjustment that is occasionally applied to UTC in order to | one-second adjustment that is occasionally applied to UTC in order to | |||
| keep it aligned to the solar time. A leap second may be either positive | keep it aligned with solar time. A leap second may be either positive | |||
| or negative, i.e., the clock may either be shifted one second forwards | or negative, i.e., the clock may either be shifted one second forward | |||
| or backwards. All leap seconds that have occurred up to the publication | or backward. All leap seconds that have occurred up to the publication | |||
| of this document have been in the backwards direction, and although | of this document have been in the backward direction, and although | |||
| forward leap seconds are theoretically possible, the text throughout | forward leap seconds are theoretically possible, the text throughout | |||
| this document focuses on the common case, which is the backward leap | this document focuses on the common case, which is the backward leap | |||
| second. In a timekeeping system that considers leap seconds, the system | second. In a timekeeping system that considers leap seconds, the system | |||
| clock may be affected by a leap second in one of three possible | clock may be affected by a leap second in one of three possible | |||
| ways:</t> | ways:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"> | <li>The clock is turned backwards one second at the end of the leap | |||
| <t>The clock is turned backwards one second at the end of the leap | second.</li> | |||
| second.</t> | <li>The clock is frozen during the duration of the leap second.</li> | |||
| <li>The clock is slowed down during the leap second and adjacent time | ||||
| <t>The clock is frozen during the duration of the leap second.</t> | ||||
| <t>The clock is slowed down during the leap second and adjacent time | ||||
| intervals until the new time value catches up. The interval for this | intervals until the new time value catches up. The interval for this | |||
| process, commonly referred to as leap smear, can range from several | process, commonly referred to as "leap smear", can range from several | |||
| seconds to several hours before, during, and/or after the occurrence | seconds to several hours before, during, and/or after the occurrence | |||
| of the leap second.</t> | of the leap second.</li> | |||
| </list></t> | </ul> | |||
| <t>The way leap seconds are handled depends on the synchronization | <t>The way leap seconds are handled depends on the synchronization | |||
| protocol, and is thus not specified in this document. However, if a | protocol and is thus not specified in this document. However, if a | |||
| timestamp format is defined with respect to a timescale that is affected | timestamp format is defined with respect to a timescale that is affected | |||
| by leap seconds, the Synchronization Aspects section should specify how | by leap seconds, the Synchronization Aspects section should specify how | |||
| the use of leap seconds affects the timestamp usage.</t> | the use of leap seconds affects the timestamp usage.</t> | |||
| </section> | </section> | |||
| <section anchor="UseCaseSec" numbered="true" toc="default"> | ||||
| <section anchor="UseCaseSec" title="Timestamp Use Cases"> | <name>Timestamp Use Cases</name> | |||
| <t>Packet timestamps are used in various network protocols. Typical | <t>Packet timestamps are used in various network protocols. Typical | |||
| applications of packet timestamps include delay measurement, clock | applications of packet timestamps include delay measurement, clock | |||
| synchronization, and others. The following table presents a | synchronization, and others. The following table presents a | |||
| (non-exhaustive) list of protocols that use packet timestamps, and the | (non-exhaustive) list of protocols that use packet timestamps and the | |||
| timestamp formats used in each of these protocols.</t> | timestamp formats used in each of these protocols.</t> | |||
| <figure align="center" anchor="TimestampExamples" | <table anchor="tab-1" align="left"> | |||
| title="Protocols that use Packet Timestamps"> | <name>Protocols That Use Packet Timestamps</name> | |||
| <artwork align="left"><![CDATA[ | <thead> | |||
| <tr> | ||||
| <th align="center" colspan="1"></th> | ||||
| <th align="center" colspan="3">Recommended Formats</th> | ||||
| <th align="center" colspan="1">Other</th> | ||||
| </tr> | ||||
| <tr> | ||||
| <th align="center">Protocol</th> | ||||
| <th align="center">NTP 64-Bit</th> | ||||
| <th align="center">NTP 32-Bit</th> | ||||
| <th align="center">PTP Trunc.</th> | ||||
| <th align="center"></th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="center">NTP <xref target="RFC5905"/></td> | ||||
| <td align="center">+</td> | ||||
| <td align="center"></td> | ||||
| <td align="center"></td> | ||||
| <td align="center"></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center">OWAMP <xref target="RFC4656"/></td> | ||||
| <td align="center">+</td> | ||||
| <td align="center"></td> | ||||
| <td align="center"></td> | ||||
| <td align="center"></td> | ||||
| </tr> | ||||
| +----------------------+-----------------------------------+-----------+ | <tr> | |||
| | | Recommended formats | Other | | <td align="center">TWAMP <xref target="RFC5357"/><br/>TWAMP <xref ta | |||
| +----------------------+-----------+-----------+-----------+-----------+ | rget="RFC8186"/></td> | |||
| | Protocol |NTP 64-bit |NTP 32-bit |PTP Trunc. | | | <td align="center">+<br/>+</td> | |||
| +----------------------+-----------+-----------+-----------+-----------+ | <td align="center"></td> | |||
| | NTP [RFC5905] | + | | | | | <td align="center"><br/>+</td> | |||
| +----------------------+-----------+-----------+-----------+-----------+ | <td align="center"></td> | |||
| | OWAMP [RFC4656] | + | | | | | </tr> | |||
| +----------------------+-----------+-----------+-----------+-----------+ | <tr> | |||
| | TWAMP [RFC5357] | + | | | | | <td align="center">TRILL <xref target="RFC7456"/></td> | |||
| | TWAMP [RFC8186] | + | | + | | | <td align="center"></td> | |||
| +----------------------+-----------+-----------+-----------+-----------+ | <td align="center"></td> | |||
| | TRILL [RFC7456] | | | + | | | <td align="center">+</td> | |||
| +----------------------+-----------+-----------+-----------+-----------+ | <td align="center"></td> | |||
| | MPLS [RFC6374] | | | + | | | </tr> | |||
| +----------------------+-----------+-----------+-----------+-----------+ | <tr> | |||
| | TCP [RFC7323] | | | | + | | <td align="center">MPLS <xref target="RFC6374"/></td> | |||
| +----------------------+-----------+-----------+-----------+-----------+ | <td align="center"></td> | |||
| | RTP [RFC3550] | + | | | + | | <td align="center"></td> | |||
| +----------------------+-----------+-----------+-----------+-----------+ | <td align="center">+</td> | |||
| | IPFIX [RFC7011] | | | | + | | <td align="center"></td> | |||
| +----------------------+-----------+-----------+-----------+-----------+ | </tr> | |||
| | BinaryTime [RFC6019] | | | | + | | <tr> | |||
| +----------------------+-----------+-----------+-----------+-----------+ | <td align="center">TCP <xref target="RFC7323"/></td> | |||
| | [I-D.ietf-ippm- | + | + | | | | <td align="center"></td> | |||
| | initial-registry] | | | | | | <td align="center"></td> | |||
| +----------------------+-----------+-----------+-----------+-----------+ | <td align="center"></td> | |||
| | [I-D.ietf-sfc-nsh | | + | + | | | <td align="center">+</td> | |||
| | -dc-allocation] | | | | | | </tr> | |||
| +----------------------+-----------+-----------+-----------+-----------+ | <tr> | |||
| ]]></artwork> | <td align="center">RTP <xref target="RFC3550"/></td> | |||
| </figure> | <td align="center">+</td> | |||
| <td align="center"></td> | ||||
| <td align="center"></td> | ||||
| <td align="center">+</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center">IPFIX <xref target="RFC7011"/></td> | ||||
| <td align="center"></td> | ||||
| <td align="center"></td> | ||||
| <td align="center"></td> | ||||
| <td align="center">+</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center">BinaryTime <xref target="RFC6019"/></td> | ||||
| <td align="center"></td> | ||||
| <td align="center"></td> | ||||
| <td align="center"></td> | ||||
| <td align="center">+</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center"><xref target="I-D.ietf-ippm-initial-registry"/></ | ||||
| td> | ||||
| <td align="center">+</td> | ||||
| <td align="center">+</td> | ||||
| <td align="center"></td> | ||||
| <td align="center"></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center"><xref target="I-D.ietf-sfc-nsh-dc-allocation"/></ | ||||
| td> | ||||
| <td align="center"></td> | ||||
| <td align="center">+</td> | ||||
| <td align="center">+</td> | ||||
| <td align="center"></td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <t>The rest of this section presents two hypothetic examples of network | <t>The rest of this section presents two hypothetical examples of network | |||
| protocol specifications that use one of the recommended timestamp | protocol specifications that use one of the recommended timestamp | |||
| formats. The examples include the text that specifies the information | formats. The examples include the text that specifies the information | |||
| related to the timestamp format.</t> | related to the timestamp format.</t> | |||
| <section anchor="Ex1Sec" numbered="true" toc="default"> | ||||
| <name>Example 1</name> | ||||
| <dl spacing="normal" newline="true"> | ||||
| <dt>Timestamp:</dt> | ||||
| <dd>The timestamp format used in this specification is the NTP | ||||
| <xref target="RFC5905" format="default"/> 64-bit format, as | ||||
| described in <xref target="time-64bit"/> of RFC 8877.</dd> | ||||
| <section anchor="Ex1Sec" title="Example 1"> | <dt>Synchronization aspects:</dt> | |||
| <t>Timestamp: <list hangIndent="10" style="empty"> | <dd>It is assumed that the nodes that run this protocol are | |||
| <t>The timestamp format used in this specification is the NTP | ||||
| <xref target="RFC5905"/> 64-bit format, as specified in Section | ||||
| 4.2.1 of <xref target="I-D.ietf-ntp-packet-timestamps"/>.</t> | ||||
| </list></t> | ||||
| <t>Synchronization aspects: <list hangIndent="10" style="empty"> | ||||
| <t>It is assumed that nodes that run this protocol are | ||||
| synchronized to UTC using a synchronization mechanism that is | synchronized to UTC using a synchronization mechanism that is | |||
| outside the scope of this document. In typical deployments this | outside the scope of this document. In typical deployments, this | |||
| protocol will run on a machine that uses NTP <xref | protocol will run on a machine that uses NTP <xref target="RFC5905" | |||
| target="RFC5905"/> for synchronization. Thus, the timestamp may be | format="default"/> for synchronization. Thus, the timestamp may be | |||
| derived from the NTP-synchronized clock, allowing the timestamp to | derived from the NTP-synchronized clock, allowing the timestamp to | |||
| be measured with respect to the clock of an NTP server. Since the | be measured with respect to the clock of an NTP server. Since the | |||
| NTP time format is affected by leap seconds, the current timestamp | NTP time format is affected by leap seconds, the current timestamp | |||
| format is similarly affected. Thus, the value of a timestamp | format is similarly affected. Thus, the value of a timestamp | |||
| during or slightly after a leap second may be temporarily | during and possibly before and/or after a leap second may be tempora | |||
| inaccurate.</t> | rily | |||
| </list></t> | inaccurate.</dd> | |||
| </dl> | ||||
| </section> | </section> | |||
| <section anchor="Ex2Sec" numbered="true" toc="default"> | ||||
| <section anchor="Ex2Sec" title="Example 2"> | <name>Example 2</name> | |||
| <t>Timestamp: <list hangIndent="10" style="empty"> | <dl spacing="normal" newline="true"> | |||
| <t>The timestamp format used in this specification is the PTP | <dt>Timestamp: </dt> | |||
| <xref target="IEEE1588"/> Truncated format, as specified in | <dd>The timestamp format used in this specification is the PTP | |||
| Section 4.3 of <xref | <xref target="IEEE1588" format="default"/> truncated format, as desc | |||
| target="I-D.ietf-ntp-packet-timestamps"/>.</t> | ribed in | |||
| </list></t> | <xref target="ptp-trunc"/> of RFC 8877.</dd> | |||
| <dt>Synchronization aspects: </dt> | ||||
| <t>Synchronization aspects: <list hangIndent="10" style="empty"> | <dd>It is assumed that the nodes that run this protocol are | |||
| <t>It is assumed that nodes that run this protocol are | ||||
| synchronized among themselves. Nodes may be synchronized to a | synchronized among themselves. Nodes may be synchronized to a | |||
| global reference time. Note that if PTP <xref target="IEEE1588"/> | global reference time. Note that if PTP <xref target="IEEE1588" form at="default"/> | |||
| is used for synchronization, the timestamp may be derived from the | is used for synchronization, the timestamp may be derived from the | |||
| PTP-synchronized clock, allowing the timestamp to be measured with | PTP-synchronized clock, allowing the timestamp to be measured with | |||
| respect to the clock of an PTP Grandmaster clock.</t> | respect to a PTP grandmaster clock.</dd> | |||
| </list></t> | </dl> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="ControlSec" numbered="true" toc="default"> | ||||
| <section anchor="ControlSec" title="Packet Timestamp Control Field"> | <name>Packet Timestamp Control Field</name> | |||
| <t>In some cases it is desirable to have a control field that describes | <t>In some cases, it is desirable to have a control field that describes | |||
| structure, format, content, and properties of timestamps. Control | the structure, format, content, and properties of timestamps. Control | |||
| information about the timestamp format can be conveyed in some protocols | information about the timestamp format can be conveyed in some protocols | |||
| using a dedicated control plane protocol, or may be made available at | using a dedicated control plane protocol or may be made available at | |||
| the management plane, for example using a YANG data model. An optional | the management plane, for example, using a YANG data model. An optional | |||
| control field allows some of the control information to be attached to | control field allows some of the control information to be attached to | |||
| the timestamp.</t> | the timestamp.</t> | |||
| <t>An example of a packet timestamp control field is the Error Estimate | <t>An example of a packet timestamp control field is the Error Estimate | |||
| field, defined by Section 4.1.2 in <xref target="RFC4656"/>, which is | field, defined by <xref target="RFC4656" | |||
| used in OWAMP <xref target="RFC4656"/> and TWAMP <xref | sectionFormat="of" section="4.1.2"/>, which is | |||
| target="RFC5357"/>. The Root Dispersion and Root Delay fields in the NTP | used in the One-Way Active Measurement Protocol (OWAMP) <xref | |||
| header <xref target="RFC5905"/> are two examples of fields that provide | target="RFC4656" format="default"/> and Two-Way Active Measurement | |||
| Protocol (TWAMP) <xref target="RFC5357" format="default"/>. The Root Dispe | ||||
| rsion and Root Delay fields in the NTP | ||||
| header <xref target="RFC5905" format="default"/> are two examples of field | ||||
| s that provide | ||||
| information about the timestamp precision. Another example of an | information about the timestamp precision. Another example of an | |||
| auxiliary field is the Correction Field in the PTP header <xref | auxiliary field is the Correction Field in the PTP header <xref target="IE | |||
| target="IEEE1588"/>; its value is used as a correction to the timestamp, | EE1588" format="default"/>; its value is used as a correction to the timestamp a | |||
| and may be assigned by the sender of the PTP message and updated by | nd may be assigned by the sender of the PTP message and updated by | |||
| transit nodes (Transparent Clocks) in order to account for the delay | transit nodes (Transparent Clocks) in order to account for the delay | |||
| along the path.</t> | along the path.</t> | |||
| <t>This section defines high-level guidelines for defining packet | <t>This section defines high-level guidelines for defining packet | |||
| timestamp control fields in network protocols that can benefit from such | timestamp control fields in network protocols that can benefit from such | |||
| timestamp-related control information. The word 'requirements' is used | timestamp-related control information. The word "requirements" is used | |||
| in its informal context in this section.</t> | in its informal context in this section.</t> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="High-level Control Field Requirements"> | <name>High-Level Control Field Requirements</name> | |||
| <t>A control field for packet timestamps must offer an adequate | <t>A control field for packet timestamps must offer an adequate | |||
| feature set and fulfill a series of requirements to be usable and | feature set and fulfill a series of requirements to be usable and | |||
| accepted. The following list captures the main high-level requirements | accepted. The following list captures the main high-level requirements | |||
| for timestamp fields.</t> | for timestamp fields.</t> | |||
| <ol spacing="normal" type="1"> | ||||
| <t><list style="numbers"> | <li>Extensible Feature Set: Protocols and applications depend on | |||
| <t>Extensible Feature Set: protocols and applications depend on | ||||
| various timestamp characteristics. A timestamp control field must | various timestamp characteristics. A timestamp control field must | |||
| support a variable number of elements (components) that either | support a variable number of elements (components) that either | |||
| describe or quantify timestamp-specific characteristics or | describe or quantify timestamp-specific characteristics or | |||
| parameters. Examples of potential elements include timestamp size, | parameters. Examples of potential elements include timestamp size, | |||
| encoding, accuracy, leap seconds, reference clock identifiers, | encoding, accuracy, leap seconds, reference clock identifiers, | |||
| etc.</t> | etc.</li> | |||
| <li>Size: Essential for an efficient use of timestamp control | ||||
| <t>Size: Essential for an efficient use of timestamp control | ||||
| fields is the trade-off between supported features and control | fields is the trade-off between supported features and control | |||
| field size. Protocols and applications may select the specific | field size. Protocols and applications may select the specific | |||
| control field elements that are needed for their operation from | control field elements that are needed for their operation from | |||
| the set of available elements.</t> | the set of available elements.</li> | |||
| <li>Composition: Applications may depend on specific control field | ||||
| <t>Composition: Applications may depend on specific control field | ||||
| elements being present in messages. The status of these elements | elements being present in messages. The status of these elements | |||
| may be either mandatory, conditional mandatory, or optional, | may be either mandatory, conditional mandatory, or optional, | |||
| depending on the specific application and context. A control field | depending on the specific application and context. A control field | |||
| specification must support applications in conveying or | specification must support applications in conveying or | |||
| negotiating (a) the set of control field elements along with (b) | negotiating (a) the set of control field elements along with (b) | |||
| the status of any element (i.e., mandatory, conditional mandatory, | the status of any element (i.e., mandatory, conditional mandatory, | |||
| or optional) by defining appropriate data structures and identity | or optional) by defining appropriate data structures and identity | |||
| codes.</t> | codes.</li> | |||
| <li>Category: Control field elements can characterize either static | ||||
| <t>Category: Control field elements can characterize either static | timestamp information (e.g., timestamp size in bytes and | |||
| timestamp information (like, e.g., timestamp size in bytes and | timestamp semantics: NTP 64-bit format) or runtime timestamp | |||
| timestamp semantics: NTP 64 bit format) or runtime timestamp | information (e.g., estimated timestamp accuracy at the time | |||
| information (like, e.g., estimated timestamp accuracy at the time | of sampling: 20 microseconds to UTC). For efficiency reasons, it may | |||
| of sampling: 20 microseconds to UTC). For efficiency reason it may | ||||
| be meaningful to support separation of these two concepts: while | be meaningful to support separation of these two concepts: while | |||
| the former (static) information is typically valid throughout a | the former (static) information is typically valid throughout a | |||
| protocol session and may be conveyed only once, at session | protocol session and may be conveyed only once, at session | |||
| establishment time, the latter (runtime) information augments any | establishment time, the latter (runtime) information augments any | |||
| timestamp instance and may cause substantial overhead for | timestamp instance and may cause substantial overhead for | |||
| high-traffic protocols.</t> | high-traffic protocols.</li> | |||
| </list>Proposals for timestamp control fields will be defined in | </ol> | |||
| <t>Proposals for timestamp control fields will be defined in | ||||
| separate documents and are out of scope of this document.</t> | separate documents and are out of scope of this document.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <!-- Possibly a 'Contributors' section ... --> | <section anchor="IANA" numbered="true" toc="default"> | |||
| <name>IANA Considerations</name> | ||||
| <section anchor="IANA" title="IANA Considerations"> | <t>This document has no IANA actions.</t> | |||
| <t>This document includes no request to IANA.</t> | ||||
| </section> | </section> | |||
| <section anchor="Security" numbered="true" toc="default"> | ||||
| <section anchor="Security" title="Security Considerations"> | <name>Security Considerations</name> | |||
| <t>A network protocol that uses a packet timestamp MUST specify the | <t>A network protocol that uses a packet timestamp <bcp14>MUST</bcp14> spe | |||
| cify the | ||||
| security considerations that result from using the timestamp. This | security considerations that result from using the timestamp. This | |||
| section provides an overview of some of the common security | section provides an overview of some of the common security | |||
| considerations of using timestamps.</t> | considerations of using timestamps.</t> | |||
| <t>Any metadata that is attached to control or data packets, and | <t>Any metadata that is attached to control or data packets, and | |||
| specifically packet timestamps, can facilitate network reconnaissance; | specifically packet timestamps, can facilitate network reconnaissance; | |||
| by passively eavesdropping to timestamped packets an attacker can gather | by passively eavesdropping on timestamped packets, an attacker can gather | |||
| information about the network performance, and about the level of | information about the network performance and the level of | |||
| synchronization between nodes.</t> | synchronization between nodes.</t> | |||
| <t>In some cases, timestamps could be spoofed or modified by on-path | ||||
| <t>In some cases timestamps could be spoofed or modified by on-path | ||||
| attackers, thus attacking the application that uses the timestamps. For | attackers, thus attacking the application that uses the timestamps. For | |||
| example, if timestamps are used in a delay measurement protocol, an | example, if timestamps are used in a delay measurement protocol, an | |||
| attacker can modify en route timestamps in a way that manipulates the | attacker can modify en route timestamps in a way that manipulates the | |||
| measurement results. Integrity protection mechanisms, such as Message | measurement results. Integrity protection mechanisms, such as Message | |||
| Authentication Codes (MAC), can mitigate such attacks. The specification | Authentication Codes (MACs), can mitigate such attacks. The specification | |||
| of an integrity protection mechanism is outside the scope of this | of an integrity protection mechanism is outside the scope of this | |||
| document, as typically integrity protection will be defined on a | document as, typically, integrity protection will be defined on a | |||
| per-network-protocol basis, and not specifically for the timestamp | per-network-protocol basis and not specifically for the timestamp | |||
| field.</t> | field.</t> | |||
| <t>Another potential threat that can have a similar impact is delay | <t>Another potential threat that can have a similar impact is delay | |||
| attacks. An attacker can maliciously delay some or all of the en route | attacks. An attacker can maliciously delay some or all of the en route | |||
| messages, with the same harmful implications as described in the | messages, with the same harmful implications as described in the | |||
| previous paragraph. Mitigating delay attacks is a significant challenge; | previous paragraph. Mitigating delay attacks is a significant challenge; | |||
| in contrast to spoofing and modification attacks, the delay attack | in contrast to spoofing and modification attacks, the delay attack | |||
| cannot be prevented by cryptographic integrity protection mechanisms. In | cannot be prevented by cryptographic integrity protection mechanisms. In | |||
| some cases delay attacks can be mitigated by sending the timestamped | some cases, delay attacks can be mitigated by sending the timestamped | |||
| information through multiple paths, allowing to detect and to be | information through multiple paths, allowing detection of and resistance t | |||
| resilient to an attacker that has access to one of the paths.</t> | o an attacker that has access to one of the paths.</t> | |||
| <t>In many cases, timestamping relies on an underlying synchronization | ||||
| <t>In many cases timestamping relies on an underlying synchronization | ||||
| mechanism. Thus, any attack that compromises the synchronization | mechanism. Thus, any attack that compromises the synchronization | |||
| mechanism can also compromise protocols that use timestamping. Attacks | mechanism can also compromise protocols that use timestamping. Attacks | |||
| on time protocols are discussed in detail in <xref | on time protocols are discussed in detail in <xref target="RFC7384" format | |||
| target="RFC7384"/>.</t> | ="default"/>.</t> | |||
| </section> | ||||
| <section anchor="Acknowledgments" title="Acknowledgments"> | ||||
| <t>The authors thank Russ Housley, Yaakov Stein, Greg Mirsky, Warner | ||||
| Losh, Rodney Cummings, Miroslav Lichvar, Denis Reilly, Daniel Franke, | ||||
| Eric Vyncke, Ben Kaduk, Ian Swett, Francesca Palombini, Watson Ladd, and | ||||
| other members of the NTP working group for many helpful comments. The | ||||
| authors gratefully acknowledge Harlan Stenn and the people from the | ||||
| Network Time Foundation for sharing their thoughts and ideas.</t> | ||||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <!-- *****BACK MATTER ***** --> | ||||
| <back> | <back> | |||
| <references title="Normative References"> | <displayreference target="I-D.ietf-ippm-initial-registry" to="METRICS"/> | |||
| <?rfc include='reference.RFC.2119'?> | <displayreference target="I-D.ietf-sfc-nsh-dc-allocation" to="NSHMD"/> | |||
| <references> | ||||
| <?rfc include='reference.RFC.8174'?> | <name>References</name> | |||
| <references> | ||||
| <!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC. | <name>Normative References</name> | |||
| 2119.xml"?--> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.2119.xml"/> | ||||
| <!--&RFC2119;--> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.8174.xml"/> | ||||
| </references> | </references> | |||
| <references> | ||||
| <references title="Informative References"> | <name>Informative References</name> | |||
| <!-- Here we use entities that we defined at the beginning. --> | ||||
| <reference anchor="IEEE1588"> | <reference anchor="IEEE1588"> | |||
| <front> | <front> | |||
| <title>IEEE 1588 Standard for a Precision Clock Synchronization | <title>IEEE Standard for a Precision Clock Synchronization | |||
| Protocol for Networked Measurement and Control Systems Version | ||||
| 2</title> | ||||
| <author> | ||||
| <organization>IEEE</organization> | ||||
| </author> | ||||
| <date year="2008"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="IEEE1588v1"> | ||||
| <front> | ||||
| <title>IEEE 1588 Standard for a Precision Clock Synchronization | ||||
| Protocol for Networked Measurement and Control Systems</title> | Protocol for Networked Measurement and Control Systems</title> | |||
| <seriesInfo name="IEEE Std." value="1588-2008"/> | ||||
| <author> | <seriesInfo name="DOI" value="10.1109/IEEESTD.2008.4579760"/> | |||
| <organization>IEEE</organization> | <author> | |||
| </author> | <organization>IEEE</organization> | |||
| </author> | ||||
| <date year="2002"/> | <date year="2008" month="July"/> | |||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor="IEEE1588v1"> | ||||
| <reference anchor="ITU-T-Y.1731"> | <front> | |||
| <front> | <title>IEEE Standard for a Precision Clock Synchronization | |||
| <title>OAM functions and mechanisms for Ethernet based | Protocol for Networked Measurement and Control Systems</title> | |||
| Networks</title> | <seriesInfo name="IEEE Std." value="1588-2002"/> | |||
| <seriesInfo name="DOI" value="10.1109/IEEESTD.2002.94144"/> | ||||
| <author> | <author> | |||
| <organization>ITU-T</organization> | <organization>IEEE</organization> | |||
| </author> | </author> | |||
| <date month="October" year="2002"/> | ||||
| <date year="2013"/> | </front> | |||
| </front> | </reference> | |||
| </reference> | <reference anchor="ITU-T-Y.1731"> | |||
| <front> | ||||
| <?rfc include='reference.RFC.3339'?> | <title>Operations, administration and maintenance (OAM) functions | |||
| and mechanisms for Ethernet-based networks</title> | ||||
| <!-- ?rfc include='reference.RFC.5277'? --> | <seriesInfo name="ITU-T Recommendation" value="G.8013/Y.1731"/> | |||
| <author> | ||||
| <?rfc include='reference.RFC.7493'?> | <organization>ITU-T</organization> | |||
| </author> | ||||
| <?rfc include='reference.RFC.6991'?> | <date year="2015" month="August"/> | |||
| </front> | ||||
| <?rfc include='reference.RFC.5646'?> | </reference> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <!-- ?rfc include='reference.RFC.7940'? --> | FC.3339.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
| <?rfc include='reference.RFC.5905'?> | .7493.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.7323'?> | FC.6991.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.3550'?> | FC.5646.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
| <?rfc include='reference.RFC.6374'?> | .5905.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.5357'?> | FC.7323.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.4656'?> | FC.3550.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.7011'?> | FC.6374.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.6019'?> | FC.5357.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.7456'?> | FC.4656.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.7384'?> | FC.7011.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.RFC.8186'?> | FC.6019.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.I-D.ietf-ippm-initial-registry'?> | FC.7456.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| <?rfc include='reference.I-D.ietf-sfc-nsh-dc-allocation'?> | FC.7384.xml"/> | |||
| <xi:include | ||||
| <?rfc include='reference.I-D.ietf-ntp-packet-timestamps'?> | href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8186.x | |||
| ml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference. | ||||
| I-D.ietf-ippm-initial-registry.xml"/> | ||||
| <xi:include | ||||
| href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf- | ||||
| sfc-nsh-dc-allocation.xml"/> | ||||
| </references> | ||||
| </references> | </references> | |||
| <section anchor="Acknowledgments" numbered="false" toc="default"> | ||||
| <!-- Change Log | <name>Acknowledgments</name> | |||
| <t>The authors thank <contact fullname="Russ Housley"/>, <contact | ||||
| v00 2016-08-02 TM Initial version | fullname="Yaakov Stein"/>, <contact fullname="Greg Mirsky"/>, <contact | |||
| fullname="Warner Losh"/>, <contact fullname="Rodney Cummings"/>, | ||||
| v01 2016-08-10 TM Minor updates including: timestamp format change, added Flo | <contact fullname="Miroslav Lichvar"/>, <contact fullname="Denis | |||
| w ID. | Reilly"/>, <contact fullname="Daniel Franke"/>, <contact fullname="Éric | |||
| Vyncke"/>, <contact fullname="Ben Kaduk"/>, <contact fullname="Ian | ||||
| --> | Swett"/>, <contact fullname="Francesca Palombini"/>, <contact | |||
| fullname="Watson Ladd"/>, and other members of the NTP Working Group for | ||||
| their many helpful comments. The authors gratefully acknowledge <contact | ||||
| fullname="Harlan Stenn"/> and the people from the Network Time | ||||
| Foundation for sharing their thoughts and ideas.</t> | ||||
| </section> | ||||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| End of changes. 150 change blocks. | ||||
| 603 lines changed or deleted | 618 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||