rfc9192xml2.original.xml | rfc9192.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
<!ENTITY RFC2119 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/referen | <!DOCTYPE rfc [ | |||
ce.RFC.2119.xml"> | <!ENTITY nbsp " "> | |||
<!ENTITY zwsp "​"> | ||||
<!ENTITY nbhy "‑"> | ||||
<!ENTITY wj "⁠"> | ||||
]> | ]> | |||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
<?rfc strict="yes" ?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" docName="draft-mymb-sfc-nsh-allo | |||
<?rfc toc="yes"?> | cation-timestamp-12" number="9192" ipr="trust200902" obsoletes="" updates="" sub | |||
<?rfc tocdepth="4"?> | missionType="independent" category="info" xml:lang="en" tocInclude="true" tocDep | |||
<?rfc symrefs="yes"?> | th="4" symRefs="true" sortRefs="true" version="3"> | |||
<?rfc sortrefs="yes" ?> | ||||
<?rfc compact="yes" ?> | <!-- xml2rfc v2v3 conversion 3.12.0 --> | |||
<?rfc subcompact="no" ?> | ||||
<rfc category="info" docName="draft-mymb-sfc-nsh-allocation-timestamp-12" | ||||
ipr="trust200902"> | ||||
<front> | <front> | |||
<title abbrev="NSH Timestamp">Network Service Header (NSH) Fixed-Length | <title abbrev="NSH Timestamp">Network Service Header (NSH) Fixed-Length | |||
Context Header Allocation: Timestamp</title> | Context Header Allocation</title> | |||
<seriesInfo name="RFC" value="9192"/> | ||||
<author fullname="Tal Mizrahi" initials="T." surname="Mizrahi"> | <author fullname="Tal Mizrahi" initials="T." surname="Mizrahi"> | |||
<organization abbrev="">Huawei</organization> | <organization abbrev="">Huawei</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street/> | ||||
<city/> | ||||
<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="Ilan Yerushalmi" initials="I." surname="Yerushalmi"> | ||||
<author fullname="Ilan Yerushalmi" initials="I.Y." surname="Yerushalmi"> | ||||
<organization>Marvell</organization> | <organization>Marvell</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>6 Hamada</street> | <street>6 Hamada</street> | |||
<!-- Reorder these if your country does things differently --> | ||||
<city>Yokneam</city> | <city>Yokneam</city> | |||
<code>2066721</code> | <code>2066721</code> | |||
<country>Israel</country> | <country>Israel</country> | |||
</postal> | </postal> | |||
<email>yilan@marvell.com</email> | <email>yilan@marvell.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="David Melman" initials="D." surname="Melman"> | ||||
<author fullname="David Melman" initials="D.M." surname="Melman"> | ||||
<organization>Marvell</organization> | <organization>Marvell</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>6 Hamada</street> | <street>6 Hamada</street> | |||
<!-- Reorder these if your country does things differently --> | ||||
<city>Yokneam</city> | <city>Yokneam</city> | |||
<code>2066721</code> | <code>2066721</code> | |||
<country>Israel</country> | <country>Israel</country> | |||
</postal> | </postal> | |||
<email>davidme@marvell.com</email> | <email>davidme@marvell.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Rory Browne" initials="R." surname="Browne"> | ||||
<author fullname="Rory Browne" initials="R.B." surname="Browne"> | ||||
<organization>Intel</organization> | <organization>Intel</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Dromore House</street> | <street>Dromore House</street> | |||
<city>Shannon</city> | ||||
<!-- Reorder these if your country does things differently --> | <region>Co. Clare</region> | |||
<city>Shannon, Co.Clare</city> | ||||
<country>Ireland</country> | <country>Ireland</country> | |||
</postal> | </postal> | |||
<email>rory.browne@intel.com</email> | <email>rory.browne@intel.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date year="2022" month="February" /> | ||||
<date year="2021"/> | ||||
<area>General</area> | <area>General</area> | |||
<workgroup>Network Working Group</workgroup> | <workgroup>Network Working Group</workgroup> | |||
<keyword>NSH</keyword> | ||||
<keyword>NSH, Context Header, timestamp</keyword> | <keyword>Context Header</keyword> | |||
<keyword>timestamp</keyword> | ||||
<abstract> | <abstract> | |||
<t>The Network Service Header (NSH) specification defines two possible | <t>The Network Service Header (NSH) specification defines two possible | |||
methods of including metadata (MD): MD Type 0x1 and MD Type 0x2. MD Type | methods of including metadata (MD): MD Type 0x1 and MD Type 0x2. MD Type | |||
0x1 uses a fixed-length Context Header. The allocation of this Context | 0x1 uses a fixed-length Context Header. The allocation of this Context | |||
Header, i.e., its structure and semantics, has not been standardized. | Header, i.e., its structure and semantics, has not been standardized. | |||
This memo presents an allocation for the fixed Context Headers of NSH, | This memo defines the Timestamp Context Header, which is an | |||
which incorporates the packet's timestamp, a sequence number, and a | NSH fixed-length Context Header that incorporates the packet's | |||
source interface identifier.</t> | timestamp, a sequence number, and a source interface identifier.</t> | |||
<t>Although the allocation that is presented in this document has not | <t>Although the definition of the Context Header presented | |||
been standardized by the IETF it has been implemented in silicon by | in this document has not been standardized by the IETF, it has been | |||
several manufacturers and is published here to allow other interoperable | implemented in silicon by several manufacturers and is published | |||
implementations and to facilitate debugging if it is seen in the | here to facilitate interoperability.</t> | |||
network.</t> | ||||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section title="Introduction"> | <section numbered="true" toc="default"> | |||
<t>The Network Service Header (NSH), defined in <xref | <name>Introduction</name> | |||
target="RFC8300"/>, is an encapsulation header that is used as the | <t>The Network Service Header (NSH), defined in <xref target="RFC8300" for | |||
service encapsulation in the Service Function Chains (SFC) architecture | mat="default"/>, | |||
<xref target="RFC7665"/>.</t> | is an encapsulation header that is used as the | |||
service encapsulation in the Service Function Chaining (SFC) architecture | ||||
<t>In order to share metadata along a service path, the NSH | <xref target="RFC7665" format="default"/>.</t> | |||
specification <xref target="RFC8300"/> supports two methods: a | <t>In order to share metadata (MD) along a service path, the NSH | |||
specification <xref target="RFC8300" format="default"/> supports two metho | ||||
ds: a | ||||
fixed-length Context Header (MD Type 0x1) and a variable-length Context | fixed-length Context Header (MD Type 0x1) and a variable-length Context | |||
Header (MD Type 0x2). When using MD Type 0x1 the NSH includes 16 octets | Header (MD Type 0x2). When using MD Type 0x1, the NSH includes 16 octets | |||
of Context Header fields.</t> | of Context Header fields.</t> | |||
<t>The NSH specification <xref target="RFC8300" format="default"/> has not | ||||
<t>The NSH specification <xref target="RFC8300"/> has not defined the | defined the | |||
semantics of the 16-octet Context Header, nor how it is used by | semantics of the 16-octet Context Header, nor does it specify how the Cont | |||
NSH-aware service functions, SFFs and proxies. Several context header | ext Header is used by | |||
formats are defined in <xref target="I-D.ietf-sfc-nsh-tlv"/>. | NSH-aware Service Functions (SFs), Service Function Forwarders (SFFs), and | |||
proxies. Several Context Header | ||||
formats are defined in <xref target="NSH-TLV" format="default"/>. | ||||
Furthermore, some allocation schemes were proposed in the past to | Furthermore, some allocation schemes were proposed in the past to | |||
acoommodate specific use cases, e.g., <xref | accommodate specific use cases, e.g., <xref target="NSH-DC-ALLOC"/>, | |||
target="I-D.ietf-sfc-nsh-dc-allocation"/>, <xref | <xref target="I-D.ietf-sfc-nsh-broadband-allocation" format="default"/>, | |||
target="I-D.ietf-sfc-nsh-broadband-allocation"/>, and <xref | and <xref target="RFC8592" format="default"/>.</t> | |||
target="RFC8592"/>.</t> | ||||
<t>This memo presents an allocation for the MD Type 0x1 Context Header, | <t>This memo presents an allocation for the MD Type 0x1 Context Header, | |||
which incorporates the timestamp of the packet, a sequence number, and a | which incorporates the timestamp of the packet, a sequence number, and a | |||
source interface identifier. It is noted that other MD Type 0x1 | source interface identifier. Note that other allocation schema for MD Type | |||
allocations might be specified in the future. Although MD Type 0x1 | 0x1 | |||
allocations are currently not being standardized by the SFC working | might be specified in the future. Although such schema are currently not | |||
group, a consistent format (allocation) should be used in an SFC-enabled | being | |||
domain in order to allow interoperability.</t> | standardized by the SFC Working Group, a consistent format (allocation sch | |||
ema) | ||||
should be used in an SFC-enabled domain in order to allow interoperability | ||||
.</t> | ||||
<t>In a nutshell, packets that enter the SFC-enabled domain are | <t>In a nutshell, packets that enter the SFC-enabled domain are | |||
timestamped by a Classifier <xref target="RFC7665"/>. Thus, the | timestamped by a classifier <xref target="RFC7665" format="default"/>. Thu | |||
timestamp, sequence number and source interface are incorporated in the | s, the | |||
NSH Context Header. As defined in <xref target="RFC8300"/>, if | timestamp, sequence number, and source interface are incorporated in the | |||
NSH Context Header. As discussed in <xref target="RFC8300" format="default | ||||
"/>, if | ||||
reclassification is used, it may result in an update to the NSH | reclassification is used, it may result in an update to the NSH | |||
metadata. Specifically, when the Timestamp Context Header is used, a | metadata. Specifically, when the Timestamp Context Header is used, a | |||
reclassifier may either leave it unchanged, or update the three fields: | reclassifier may either leave it unchanged or update the three fields: | |||
timestamp, sequence number and source interface.</t> | Timestamp, Sequence Number, and Source Interface.</t> | |||
<t>The Timestamp Context Header includes three fields that may be used | <t>The Timestamp Context Header includes three fields that may be used | |||
for various purposes. The timestamp field may be used for logging, | for various purposes. The Timestamp field may be used for logging, | |||
troubleshooting, delay measurement, packet marking for performance | troubleshooting, delay measurement, packet marking for performance | |||
monitoring, and timestamp-based policies. The source interface | monitoring, and timestamp-based policies. The source interface | |||
identifier indicates the interface through which the packet was received | identifier indicates the interface through which the packet was received | |||
at the classifier. This identifier may specify a physical or a virtual | at the classifier. This identifier may specify a physical interface or a v | |||
interface. The sequence numbers can be used by Service Functions (SFs) | irtual | |||
interface. The sequence numbers can be used by SFs | ||||
to detect out-of-order delivery or duplicate transmissions. Note that | to detect out-of-order delivery or duplicate transmissions. Note that | |||
out-of-order and duplicate packet detection is possible when packets are | out-of-order and duplicate packet detection is possible when packets are | |||
received by the same SF, but is not necessarily possible when there are | received by the same SF but is not necessarily possible when there are | |||
multiple instances of the same SF and multiple packets are spread across | multiple instances of the same SF and multiple packets are spread across | |||
different instances of the SF. The sequence number is maintained on a | different instances of the SF. The sequence number is maintained on a | |||
per-source-interface basis.</t> | per-source-interface basis.</t> | |||
<t>This document presents the Timestamp Context Header but does not | ||||
<t>This document presents the Timestamp Context Header, but does not | ||||
specify the functionality of the SFs that receive the Context Header. | specify the functionality of the SFs that receive the Context Header. | |||
Although a few possible use cases are described in the document, the SF | Although a few possible use cases are described in this document, the SF | |||
behavior and application are outside the scope of this document.</t> | behavior and application are outside the scope of this document.</t> | |||
<t>Key Performance Indicator (KPI) stamping <xref target="RFC8592" format= | ||||
<t>KPI-stamping <xref target="RFC8592"/> defines an NSH timestamping | "default"/> defines an NSH timestamping | |||
mechanism that uses the MD Type 0x2 format. The current memo defines a | mechanism that uses the MD Type 0x2 format. This memo defines a | |||
compact MD Type 0x1 Context Header that does not require the packet to | compact MD Type 0x1 Context Header that does not require the packet to | |||
be extended beyond the NSH header. Furthermore, the mechanisms of <xref | be extended beyond the NSH. Furthermore, the mechanisms described in | |||
target="RFC8592"/> and of this memo can be used in concert, as further | <xref target="RFC8592" format="default"/> and this memo can be used in con | |||
discussed in <xref target="SecAnalytics"/>.</t> | cert, as further | |||
discussed in <xref target="SecAnalytics" format="default"/>.</t> | ||||
<t>Although the allocation that is presented in this document has not | <t>Although the definition of the Context Header presented | |||
been standardized by the IETF it has been implemented in silicon by | in this document has not been standardized by the IETF, it has been | |||
several manufacturers and is published here to allow other interoperable | implemented in silicon by several manufacturers and is published | |||
implementations and to facilitate debugging if it is seen in the | here to facilitate interoperability.</t> | |||
network.</t> | ||||
</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>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", | |||
14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only | "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", | |||
when, they appear in all capitals, as shown here.</t> | "<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>The following abbreviations are used in this document: <list | <t>The following abbreviations are used in this document: </t> | |||
hangIndent="14" style="hanging"> | <dl newline="false" spacing="normal" indent="14"> | |||
<t hangText="KPI">Key Performance Indicators <xref | <dt>KPI</dt> | |||
target="RFC8592"/></t> | <dd>Key Performance Indicator <xref target="RFC8592" format="default"/ | |||
></dd> | ||||
<t hangText="NSH">Network Service Header <xref | <dt>MD</dt> | |||
target="RFC8300"/></t> | <dd>Metadata <xref target="RFC8300" format="default"/></dd> | |||
<dt>NSH</dt> | ||||
<t hangText="MD">Metadata <xref target="RFC8300"/></t> | <dd>Network Service Header <xref target="RFC8300" format="default"/></ | |||
dd> | ||||
<t hangText="SF">Service Function <xref target="RFC7665"/></t> | <dt>SF</dt> | |||
<dd>Service Function <xref target="RFC7665" format="default"/></dd> | ||||
<t hangText="SFC">Service Function Chaining <xref | <dt>SFC</dt> | |||
target="RFC7665"/></t> | <dd>Service Function Chaining <xref target="RFC7665" format="default"/ | |||
</list></t> | ></dd> | |||
<dt>SFF</dt> | ||||
<dd>Service Function Forwarder <xref target="RFC8300"/></dd> | ||||
</dl> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="allocation" numbered="true" toc="default"> | ||||
<section anchor="allocation" | <name>NSH Timestamp Context Header Allocation</name> | |||
title="NSH Timestamp Context Header Allocation"> | ||||
<t>This memo defines the following fixed-length Context Header | <t>This memo defines the following fixed-length Context Header | |||
allocation, as presented in <xref target="AllocationFormat"/>.</t> | allocation, as presented in <xref target="AllocationFormat" format="defaul | |||
t"/>.</t> | ||||
<figure align="center" anchor="AllocationFormat" | <figure anchor="AllocationFormat"> | |||
title="NSH Timestamp Allocation."> | <name>NSH Timestamp Allocation</name> | |||
<artwork align="left"><![CDATA[ | <artwork align="left" name="" type="" alt=""><![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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Sequence Number | | | Sequence Number | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Source Interface | | | Source Interface | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Timestamp | | | Timestamp | | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<!-- This PI places the pagebreak correctly (before the section title) in | <t>The NSH Timestamp allocation defined in this memo <bcp14>MUST</bcp14> | |||
the text output. --> | ||||
<?rfc needLines="8" ?> | ||||
<t>The NSH Timestamp Allocation that is defined in this memo MUST | ||||
include the following fields:</t> | include the following fields:</t> | |||
<dl spacing="normal"> | ||||
<t><list style="symbols"> | <dt>Sequence Number:</dt><dd>A 32-bit sequence number. The sequence numb | |||
<t>Sequence Number - a 32-bit sequence number. The sequence number | er | |||
is maintained on a per-source-interface basis. Sequence numbers can | is maintained on a per-source-interface basis. Sequence numbers can | |||
be used by SFs to detect out-of-order delivery, or duplicate | be used by SFs to detect out-of-order delivery or duplicate | |||
transmissions. The Classifier increments the sequence number by 1 | transmissions. The classifier increments the sequence number by 1 | |||
for each packet received through the source interface. This requires | for each packet received through the source interface. This requires | |||
the classifier to maintain a per-source-interface counter. The | the classifier to maintain a per-source-interface counter. The | |||
sequence number is initialized to a random number on startup. After | sequence number is initialized to a random number on startup. After | |||
it reaches its maximal value (2^32-1) the sequence number wraps | it reaches its maximal value (2<sup>32</sup>-1), the sequence number w | |||
around back to zero.</t> | raps | |||
around back to zero.</dd> | ||||
<t>Source Interface - a 32-bit source interface identifier that is | <dt>Source Interface:</dt><dd>A 32-bit source interface identifier that | |||
assigned by the Classifier. The combination of the source interface | is | |||
assigned by the classifier. The combination of the source interface | ||||
and the classifier identity is unique within the context of an | and the classifier identity is unique within the context of an | |||
SFC-enabled domain. Thus, in order for an SF to be able to use the | SFC-enabled domain. Thus, in order for an SF to be able to use the | |||
source interface as a unique identifier, the identity of the | source interface as a unique identifier, the identity of the | |||
classifier needs to be known for each packet. The source interface | classifier needs to be known for each packet. The source interface | |||
is unique in the context of the given classifier.</t> | is unique in the context of the given classifier.</dd> | |||
<dt>Timestamp:</dt><dd>A 64-bit field that specifies the time at | ||||
<t>Timestamp - this field is 64 bits long, and specifies the time at | which the packet was received by the classifier. Two possible | |||
which the packet was received by the Classifier. Two possible | ||||
timestamp formats can be used for this field: the two 64-bit | timestamp formats can be used for this field: the two 64-bit | |||
recommended formats specified in <xref target="RFC8877"/>. One of | recommended formats specified in <xref target="RFC8877" format="defaul | |||
the formats is based on the <xref target="IEEE1588"/> timestamp | t"/>. One of | |||
format, and the other is based on the <xref target="RFC5905"/> | the formats is based on the timestamp format defined in <xref target=" | |||
format.</t> | IEEE1588" format="default"/>, and | |||
</list></t> | the other is based on the format defined in <xref target="RFC5905" for | |||
mat="default"/>.</dd> | ||||
<t>The NSH specification <xref target="RFC8300"/> does not specify the | </dl> | |||
<t>The NSH specification <xref target="RFC8300" format="default"/> does no | ||||
t specify the | ||||
possible coexistence of multiple MD Type 0x1 Context Header formats in a | possible coexistence of multiple MD Type 0x1 Context Header formats in a | |||
single SFC-enabled domain. It is assumed that the Timestamp Context | single SFC-enabled domain. It is assumed that the Timestamp Context | |||
Header will be deployed in an SFC-enabled domain that uniquely uses this | Header will be deployed in an SFC-enabled domain that uniquely uses this | |||
Context Header format. Thus, operators SHOULD ensure that either a | Context Header format. Thus, operators <bcp14>SHOULD</bcp14> ensure that e | |||
consistent Context Header format is used in the SFC-enabled domain, or | ither a | |||
that there is a clear policy that allows SFs to know the Context Header | consistent Context Header format is used in the SFC-enabled domain or | |||
there is a clear policy that allows SFs to know the Context Header | ||||
format of each packet. Specifically, operators are expected to ensure | format of each packet. Specifically, operators are expected to ensure | |||
the consistent use of a timestamp format across the whole SFC-enabled | the consistent use of a timestamp format across the whole SFC-enabled | |||
domain.</t> | domain.</t> | |||
<t>The two timestamp formats that can be used in the Timestamp field | ||||
<t>The two timestamp formats that can be used in the timestamp field | are as follows:</t> | |||
are:</t> | <dl spacing="normal"> | |||
<dt>Truncated Timestamp Format <xref target="IEEE1588"/>:</dt><dd>This f | ||||
<t><list style="symbols"> | ormat is specified in | |||
<t>IEEE 1588 Truncated Timestamp Format: this format is specified in | <xref target="RFC8877" sectionFormat="of" section="4.3"/>. For the rea | |||
Section 4.3 of <xref target="RFC8877"/>. For the reader's | der's | |||
convenience this format is illustrated in <xref | convenience, this format is illustrated in <xref target="TimestampForm | |||
target="TimestampFormat"/>.</t> | at" format="default"/>.</dd> | |||
</list></t> | </dl> | |||
<figure anchor="TimestampFormat"> | ||||
<figure align="center" anchor="TimestampFormat" | <name>Truncated Timestamp Format (IEEE 1588)</name> | |||
title="IEEE 1588 Truncated Timestamp Format [IEEE1588]."> | <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 spacing="normal"> | ||||
<t><list style="symbols"> | <dt>NTP 64-bit Timestamp Format <xref target="RFC5905"/>:</dt><dd>This f | |||
<t>NTP <xref target="RFC5905"/> 64-bit Timestamp Format: this format | ormat | |||
is specified in Section 4.4 of <xref target="RFC8877"/>. For the | is specified in <xref target="RFC8877" sectionFormat="of" section="4.2 | |||
reader's convenience this format is illustrated in <xref | .1"/>. | |||
target="NTPFormat"/>.</t> | For the reader's convenience, this format is illustrated in | |||
</list></t> | <xref target="NTPFormat" format="default"/>.</dd> | |||
</dl> | ||||
<figure align="center" anchor="NTPFormat" | <figure anchor="NTPFormat"> | |||
title="NTP [RFC5905] 64-bit Timestamp Format"> | <name>NTP 64-Bit Timestamp Format (RFC 5905)</name> | |||
<artwork align="left"><![CDATA[ | <artwork align="left" name="" type="" alt=""><![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>Synchronization aspects of the timestamp format in the context of the | <t>Synchronization aspects of the timestamp format in the context of the | |||
NSH timestamp allocation are discussed in <xref target="Sync"/>.</t> | NSH Timestamp allocation are discussed in <xref target="Sync" format="defa ult"/>.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Timestamping Use Cases"> | <name>Timestamping Use Cases</name> | |||
<section anchor="SecAnalytics" title="Network Analytics"> | <section anchor="SecAnalytics" numbered="true" toc="default"> | |||
<t>Per-packet timestamping enables coarse-grained monitoring of the | <name>Network Analytics</name> | |||
network delay along the Service Function Chain. Once a potential | <t>Per-packet timestamping enables coarse-grained monitoring of | |||
problem or bottleneck is detected, for example when the delay exceeds | network delays along the Service Function Chain. Once a potential | |||
a certain policy, a highly-granular monitoring mechanism can be | problem or bottleneck is detected (for example, when the delay exceeds | |||
triggered, for example using the hop-by-hop measurement data of <xref | a certain policy), a highly granular monitoring mechanism can be | |||
target="RFC8592"/> or <xref target="I-D.ietf-ippm-ioam-data"/>, | triggered (for example, using the hop-by-hop measurement data defined in | |||
allowing to analyze and localize the problem.</t> | <xref target="RFC8592" format="default"/> or <xref target="IOAM-DATA" fo | |||
rmat="default"/>), | ||||
<t>Timestamping is also useful for logging, troubleshooting and for | allowing analysis and localization of the problem.</t> | |||
<t>Timestamping is also useful for logging, troubleshooting, and | ||||
flow analytics. It is often useful to maintain the timestamp of the | flow analytics. It is often useful to maintain the timestamp of the | |||
first and last packet of the flow. Furthermore, traffic mirroring and | first and last packet of the flow. Furthermore, traffic mirroring and | |||
sampling often requires a timestamp to be attached to analyzed | sampling often require a timestamp to be attached to analyzed | |||
packets. Attaching the timestamp to the NSH provides an in-band common | packets. Attaching the timestamp to the NSH provides an in-band common | |||
time reference that can be used for various network analytics | time reference that can be used for various network analytics | |||
applications.</t> | applications.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Alternate Marking"> | <name>Alternate Marking</name> | |||
<t>A possible approach for passive performance monitoring is to use an | <t>A possible approach for passive performance monitoring is to use an | |||
alternate marking method <xref target="RFC8321"/>. This method | Alternate-Marking Method <xref target="RFC8321" format="default"/>. This method | |||
requires data packets to carry a field that marks (colors) the | requires data packets to carry a field that marks (colors) the | |||
traffic, and enables passive measurement of packet loss, delay, and | traffic, and enables passive measurement of packet loss, delay, and | |||
delay variation. The value of this marking field is periodically | delay variation. The value of this marking field is periodically | |||
toggled between two values.</t> | toggled between two values.</t> | |||
<t>When the timestamp is incorporated in the NSH, it can intrinsically b | ||||
<t>When the timestamp is incorporated in the NSH, it can natively be | e | |||
used for alternate marking. For example, the least significant bit of | used for Alternate Marking. For example, the least significant bit of | |||
the timestamp Seconds field can be used for this purpose, since the | the timestamp Seconds field can be used for this purpose, since the | |||
value of this bit is inherently toggled every second.</t> | value of this bit is inherently toggled every second.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Consistent Updates"> | <name>Consistent Updates</name> | |||
<t>The timestamp can be used for taking policy decisions such as | <t>The timestamp can be used for making policy decisions, such as | |||
'Perform action A if timestamp>=T_0'. This can be used for | 'Perform action A if timestamp>=T_0'. This can be used for | |||
enforcing time-of-day policies or periodic policies in service | enforcing time-of-day policies or periodic policies in SFs. | |||
functions. Furthermore, timestamp-based policies can be used for | Furthermore, timestamp-based policies can be used for | |||
enforcing consistent network updates, as discussed in <xref | enforcing consistent network updates, as discussed in <xref target="DPT" | |||
target="DPT"/>. It should be noted that, as in the case of Alternate | format="default"/>. It should be noted that, as in the case of Alternate | |||
Marking, this use case alone does not require a full 64-bit timestamp, | Marking, this use case alone does not require a full 64-bit timestamp | |||
but could be implemented with a significantly smaller number of | but could be implemented with a significantly smaller number of | |||
bits.</t> | bits.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<!-- Possibly a 'Contributors' section ... --> | <section anchor="Sync" numbered="true" toc="default"> | |||
<name>Synchronization Considerations</name> | ||||
<section anchor="Sync" title="Synchronization Considerations"> | ||||
<t>Some of the applications that make use of the timestamp require the | <t>Some of the applications that make use of the timestamp require the | |||
Classifier and SFs to be synchronized to a common time reference, for | classifier and SFs to be synchronized to a common time reference -- for | |||
example using the Network Time Protocol <xref target="RFC5905"/> or the | example, using the Network Time Protocol <xref target="RFC5905" format="de | |||
Precision Time Protocol <xref target="IEEE1588"/>. Although it is not a | fault"/> or the | |||
Precision Time Protocol <xref target="IEEE1588" format="default"/>. Althou | ||||
gh it is not a | ||||
requirement to use a clock synchronization mechanism, it is expected | requirement to use a clock synchronization mechanism, it is expected | |||
that depending on the applications that use the timestamp, such | that, depending on the applications that use the timestamp, such | |||
synchronization mechanisms will be used in most deployments that use the | synchronization mechanisms will be used in most deployments that use the | |||
timestamp allocation.</t> | Timestamp allocation.</t> | |||
</section> | </section> | |||
<section anchor="IANA" numbered="true" toc="default"> | ||||
<section anchor="IANA" title="IANA Considerations"> | <name>IANA Considerations</name> | |||
<t>This memo includes no request to IANA.</t> | <t>This document has no IANA actions.</t> | |||
</section> | </section> | |||
<section anchor="Security" numbered="true" toc="default"> | ||||
<section anchor="Security" title="Security Considerations"> | <name>Security Considerations</name> | |||
<t>The security considerations of NSH in general are discussed in <xref | <t>The security considerations for the NSH in general are discussed in <xr | |||
target="RFC8300"/>. NSH is typically run within a confined trust domain. | ef target="RFC8300" format="default"/>. The NSH is typically run within a confin | |||
ed trust domain. | ||||
However, if a trust domain is not enough to provide the operator with | However, if a trust domain is not enough to provide the operator with | |||
the protection against the timestamp threats described below, then the | protection against the timestamp threats as described below, then the | |||
operator SHOULD use transport-level protection between SFC processing | operator <bcp14>SHOULD</bcp14> use transport-level protection between SFC | |||
nodes as described in <xref target="RFC8300"/>.</t> | processing | |||
nodes as described in <xref target="RFC8300" format="default"/>.</t> | ||||
<t>The security considerations of in-band timestamping in the context of | <t>The security considerations of in-band timestamping in the context of t | |||
NSH is discussed in <xref target="RFC8592"/>, and the current section is | he | |||
NSH are discussed in <xref target="RFC8592" format="default"/>; this secti | ||||
on is | ||||
based on that discussion.</t> | based on that discussion.</t> | |||
<t>In-band timestamping, as defined in this document and <xref target="RFC | ||||
<t>The use of in-band timestamping, as defined in this document, can be | 8592" format="default"/>, can be | |||
used as a means for network reconnaissance. By passively eavesdropping | used as a means for network reconnaissance. By passively eavesdropping | |||
to timestamped traffic, an attacker can gather information about network | on timestamped traffic, an attacker can gather information about network | |||
delays and performance bottlenecks. A man-in-the-middle attacker can | delays and performance bottlenecks. An on-path attacker can | |||
maliciously modify timestamps in order to attack applications that use | maliciously modify timestamps in order to attack applications that use | |||
the timestamp values, such as performance monitoring applications.</t> | the timestamp values, such as performance-monitoring applications.</t> | |||
<t>Since the timestamping mechanism relies on an underlying time | <t>Since the timestamping mechanism relies on an underlying time | |||
synchronization protocol, by attacking the time protocol an attack can | synchronization protocol, by attacking the time protocol an attack can | |||
potentially compromise the integrity of the NSH timestamp. A detailed | potentially compromise the integrity of the NSH Timestamp. A detailed | |||
discussion about the threats against time protocols and how to mitigate | discussion about the threats against time protocols and how to mitigate | |||
them is presented in <xref target="RFC7384"/>.</t> | them is presented in <xref target="RFC7384" format="default"/>.</t> | |||
</section> | ||||
<section anchor="Acknowledgments" title="Acknowledgments"> | ||||
<t>The authors thank Mohamed Boucadair and Greg Mirsky for their | ||||
thorough reviews and detailed comments.</t> | ||||
</section> | </section> | |||
</middle> | </middle> | |||
<!-- *****BACK MATTER ***** --> | ||||
<back> | <back> | |||
<references title="Normative References"> | ||||
<!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC. | ||||
2119.xml"?--> | ||||
&RFC2119; | ||||
<?rfc include='reference.RFC.8174'?> | ||||
<?rfc include='reference.RFC.8300'?> | ||||
<?rfc include='reference.RFC.8877'?> | ||||
<?rfc include='reference.RFC.7665'?> | ||||
</references> | ||||
<references title="Informative References"> | ||||
<!-- Here we use entities that we defined at the beginning. --> | ||||
<reference anchor="IEEE1588"> | ||||
<front> | ||||
<title>IEEE 1588 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="DPT"> | ||||
<front> | ||||
<title>The Case for Data Plane Timestamping in SDN</title> | ||||
<author> | ||||
<organization>Mizrahi, T., Moses, Y.</organization> | ||||
</author> | ||||
<date year="IEEE INFOCOM Workshop on Software-Driven Flexible and Agil | ||||
e Networking (SWFAN), 2016"/> | ||||
</front> | ||||
</reference> | ||||
<?rfc include='reference.RFC.7384'?> | <displayreference target="I-D.ietf-sfc-nsh-broadband-allocation" to="NSH-BROADB | |||
AND-ALLOC"/> | ||||
<?rfc include='reference.RFC.5905'?> | ||||
<?rfc include='reference.RFC.8321'?> | ||||
<?rfc include='reference.RFC.8592'?> | ||||
<?rfc include='reference.I-D.ietf-ippm-ioam-data'?> | ||||
<?rfc include='reference.I-D.ietf-sfc-nsh-dc-allocation'?> | <references> | |||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.2119.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8174.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8300.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8877.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7665.xml"/> | ||||
</references> | ||||
<?rfc include='reference.I-D.ietf-sfc-nsh-broadband-allocation'?> | <references> | |||
<name>Informative References</name> | ||||
<reference anchor="IEEE1588" target="https://standards.ieee.org/standard/1 | ||||
588-2008.html"> | ||||
<front> | ||||
<title>IEEE 1588-2008 - IEEE Standard for a Precision Clock Synchron | ||||
ization Protocol for Networked Measurement and Control Systems</title> | ||||
<author><organization>IEEE</organization></author> | ||||
<!-- <date year="2008"/> --> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="DPT" target="https://ieeexplore.ieee.org/abstract/docume | ||||
nt/7562197"> | ||||
<front> | ||||
<title>The Case for Data Plane Timestamping in SDN</title> | ||||
<author initials='T' surname='Mizrahi' fullname='Tal Mizrahi'></author> | ||||
<author initials='Y' surname='Moses' fullname='Yoram Moses'></author> | ||||
<date year="2016"/> | ||||
</front> | ||||
<refcontent>IEEE INFOCOM Workshop on Software-Driven Flexible and Agile N | ||||
etworking (SWFAN), DOI 10.1109/INFCOMW.2016.7562197</refcontent> | ||||
</reference> | ||||
<?rfc include='reference.I-D.ietf-sfc-nsh-tlv'?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
</references> | FC.7384.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5905.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8321.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8592.xml"/> | ||||
<!-- Change Log | <!-- draft-ietf-ippm-ioam-data (RFC-EDITOR) | |||
Have to do "long way"; all authors are editors --> | ||||
<reference anchor='IOAM-DATA'> | ||||
<front> | ||||
<title>Data Fields for In-situ OAM</title> | ||||
<author initials='F' surname='Brockners' fullname='Frank Brockners' role="editor | ||||
"> | ||||
<organization /> | ||||
</author> | ||||
<author initials='S' surname='Bhandari' fullname='Shwetha Bhandari' role="editor | ||||
"> | ||||
<organization /> | ||||
</author> | ||||
<author initials='T' surname='Mizrahi' fullname='Tal Mizrahi' role="editor"> | ||||
<organization /> | ||||
</author> | ||||
<date year='2021' month='December' day="13"/> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-ippm-ioam-data-17"/> | ||||
</reference> | ||||
v00 2016-08-02 TM Initial version | <!-- draft-ietf-sfc-nsh-dc-allocation (Expired) | |||
Have to do "long way"; one author is editor --> | ||||
<reference anchor="NSH-DC-ALLOC"> | ||||
<front> | ||||
<title>Network Service Header (NSH) MD Type 1: Context Header Allocation ( | ||||
Data Center)</title> | ||||
<author fullname="Jim Guichard" role="editor"></author> | ||||
<author fullname="Michael Smith"></author> | ||||
<author fullname="Surendra Kumar"></author> | ||||
<author fullname="Sumandra Majee"></author> | ||||
<author fullname="Tal Mizrahi"></author> | ||||
<date month="September" day="25" year="2018" /> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-sfc-nsh-dc-allocation-02" | ||||
/> | ||||
</reference> | ||||
v01 2016-08-10 TM Minor updates including: timestamp format change, added Flo | <!-- draft-ietf-sfc-nsh-broadband-allocation (Expired) --> | |||
w ID. | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | |||
.ietf-sfc-nsh-broadband-allocation.xml"/> | ||||
--> | <!-- draft-ietf-sfc-nsh-tlv (IESG Evaluation::AD Followup) | |||
Have to do "long way"; one author is editor --> | ||||
<reference anchor="NSH-TLV"> | ||||
<front> | ||||
<title>Network Service Header Metadata Type 2 Variable-Length Context Head | ||||
ers</title> | ||||
<author fullname="Yuehua Wei" role="editor"></author> | ||||
<author fullname="Uri Elzur"></author> | ||||
<author fullname="Sumandra Majee"></author> | ||||
<author fullname="Carlos Pignataro"></author> | ||||
<author fullname="Donald Eastlake"></author> | ||||
<date month="January" day="26" year="2022" /> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-sfc-nsh-tlv-13"/> | ||||
</reference> | ||||
</references> | ||||
</references> | ||||
<section anchor="Acknowledgments" numbered="false" toc="default"> | ||||
<name>Acknowledgments</name> | ||||
<t>The authors thank <contact fullname="Mohamed Boucadair"/> and <contact | ||||
fullname="Greg Mirsky"/> for their thorough reviews and detailed comments.</t> | ||||
</section> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 86 change blocks. | ||||
335 lines changed or deleted | 347 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/ |