<?xml version="1.0"encoding="US-ASCII"?>encoding="utf-8"?> <!DOCTYPE rfc SYSTEM"rfc2629.dtd"> <?rfc toc="yes"?> <?rfc tocompact="yes"?> <?rfc tocdepth="3"?> <?rfc tocindent="yes"?> <?rfc symrefs="yes"?> <?rfc sortrefs="yes"?> <?rfc comments="yes"?> <?rfc inline="yes"?> <?rfc compact="yes"?> <?rfc subcompact="no"?>"rfc2629-xhtml.ent"> <rfccategory="std"xmlns:xi="http://www.w3.org/2001/XInclude" docName="draft-ietf-ippm-stamp-option-tlv-10" number="8972" ipr="trust200902"updates="8762"> <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>updates="8762" obsoletes="" submissionType="IETF" category="std" consensus="true" xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" version="3"> <front> <title abbrev="STAMP Extensions">SimpleTwo-wayTwo-Way Active Measurement Protocol Optional Extensions</title> <seriesInfo name="RFC" value="8972"/> <author fullname="Greg Mirsky" initials="G." surname="Mirsky"> <organization>ZTE Corp.</organization> <address> <postal> <street/> <city/> <code/> <country/> </postal> <email>gregimirsky@gmail.com</email> </address> </author> <author fullname="Xiao Min" initials="X." surname="Min"> <organization>ZTE Corp.</organization> <address> <postal> <street/> <city/> <code/> <country/> </postal> <email>xiao.min2@zte.com.cn</email> </address> </author><!-- <author fullname="Guo Jun" initials="G." surname="Jun"> <organization>ZTE Corporation</organization> <address> <postal> <street>68# Zijinghua Road</street> <city>Nanjing</city> <region>Jiangsu</region> <code>210012</code> <country>P.R.China</country> </postal> <phone>+86 18105183663</phone> <email>guo.jun2@zte.com.cn</email> </address> </author> --><author fullname="Henrik Nydell" initials="H." surname="Nydell"> <organization>Accedian Networks</organization> <address> <postal> <street/> <city/> <code/> <country/> </postal> <email>hnydell@accedian.com</email> </address> </author> <author initials="R." surname="Foote" fullname="Richard Foote"> <organization>Nokia</organization> <address> <email>footer.foote@nokia.com </email> </address> </author> <author initials="A." surname="Masputra" fullname="Adi Masputra"> <organization>Apple Inc.</organization> <address> <postal> <street>One Apple Park Way</street> <city>Cupertino</city> <region>CA</region> <code>95014</code><country>USA</country><country>United States of America</country> </postal> <email>adi@apple.com</email> </address> </author> <author fullname="Ernesto Ruffini" initials="E." surname="Ruffini"> <organization>OutSys</organization> <address> <postal> <street>via Caracciolo, 65</street><city>Milano</city><city>Milan</city> <code>20155</code> <country>Italy</country> </postal> <email>eruffini@outsys.org</email> </address> </author> <dateyear="2020"/>year="2021" month="January" /> <area>Transport</area> <workgroup>Network Working Group</workgroup><keyword>Internet-Draft</keyword><keyword>IPPM</keyword> <keyword>Performance Measurement </keyword> <abstract> <t> This document describes optional extensions to Simple Two-way Active Measurement Protocol (STAMP) that enable measurement of performance metrics. The document also defines a STAMP Test Session Identifier and thus updates RFC 8762. </t> </abstract> </front> <middle> <section anchor="intro"title="Introduction">numbered="true" toc="default"> <name>Introduction</name> <t> The Simple Two-way Active Measurement Protocol (STAMP) <xreftarget="RFC8762"/> definedtarget="RFC8762" format="default"/> defines the STAMP base functionalities. This document specifies the use of optional extensions that use Type-Length-Value (TLV) encoding. Such extensions enhance the STAMP base functions, such as measurement of one-way and round-trip delay, latency, packet loss, packet duplication, and out-of-order delivery of test packets. This specification defines optional STAMP extensions, their formats, and the theory of operation. Also, a STAMP Test Session Identifier is defined as an update of the base STAMP specification <xreftarget="RFC8762"/>.target="RFC8762" format="default"/>. </t> </section> <sectiontitle="Conventionsnumbered="true" toc="default"> <name>Conventions Used in ThisDocument">Document</name> <sectiontitle="Acronyms"> <t>BDS BeiDounumbered="true" toc="default"> <name>Acronyms</name> <dl newline="false" indent="12"> <dt>BDS</dt><dd>BeiDou Navigation SatelliteSystem</t> <t>BITS BuildingSystem</dd> <dt>BITS</dt><dd>Building Integrated TimingSupply </t> <t>CoS ClassSupply</dd> <dt>CoS</dt><dd>Class ofService</t> <t>DSCP DifferentiatedService</dd> <dt>DSCP</dt><dd>Differentiated Services CodePoint</t> <t>ECN ExplicitPoint</dd> <dt>ECN</dt><dd>Explicit CongestionNotification</t> <t>GLONASS GlobalNotification</dd> <dt>GLONASS</dt><dd>Global Orbiting Navigation SatelliteSystem</t> <t>GPS GlobalSystem</dd> <dt>GPS</dt><dd>Global Positioning System <xreftarget="GPS"/></t> <t>HMAC Hashedtarget="GPS" format="default"/></dd> <dt>HMAC</dt><dd>Hashed Message AuthenticationCode</t> <t>LORAN-C LongCode</dd> <dt>LORAN-C</dt><dd>Long Range Navigation System VersionC</t> <t>MBZ MustC</dd> <dt>MBZ</dt><dd>Must BeZero</t> <t>NTP NetworkZero</dd> <dt>NTP</dt><dd>Network Time Protocol <xreftarget="RFC5905"/></t> <t>PMF Performancetarget="RFC5905" format="default"/></dd> <dt>PMF</dt><dd>Performance MeasurementFunction</t> <t>PTP PrecisionFunction</dd> <dt>PTP</dt><dd>Precision Time Protocol <xreftarget="IEEE.1588.2008"/></t> <t>TLV Type-Length-Value</t> <t>SSID STAMPtarget="IEEE.1588.2008" format="default"/></dd> <dt>RP</dt><dd>Reverse Path</dd> <dt>SMI</dt><dd>Structure of Management Information</dd> <dt>SSID</dt><dd>STAMP SessionIdentifier</t> <t>SSU SynchronizationIdentifier</dd> <dt>SSU</dt><dd>Synchronization SupplyUnit</t> <t>STAMP SimpleUnit</dd> <dt>STAMP</dt><dd>Simple Two-way Active MeasurementProtocol</t>Protocol</dd> <dt>TLV</dt><dd>Type-Length-Value</dd> </dl> </section> <sectiontitle="Requirements Language">numbered="true" toc="default"> <name>Requirements Language</name> <t> The key words"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY","<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and"OPTIONAL""<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described inBCP 14BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here. </t> </section> </section> <section anchor="test-identifier-sec"title="STAMPnumbered="true" toc="default"> <name>STAMP Test SessionIdentifier">Identifier</name> <t> The STAMP Session-Sender transmits test packets to the STAMP Session-Reflector. The STAMP Session-Reflector receives the Session-Sender's packet and acts according to the configuration and optional control information communicated in the Session-Sender's test packet. STAMP defines two different test packetformats,formats: one for packets transmitted by the STAMP Session-Sender and one for packets transmitted by the STAMP Session-Reflector. STAMP supports two modes: unauthenticated and authenticated. Unauthenticated STAMP test packets are compatible on the wire with unauthenticated TWAMP-Test <xreftarget="RFC5357"/>target="RFC5357" format="default"/> packets. </t> <t> By default, STAMP uses symmetrical packets, i.e., the size of the packet transmitted by the Session-Reflector equals the size of the packet received by the Session-Reflector. </t> <t> A STAMP Session is identified by the 4-tuple (source and destination IP addresses, source and destination UDP port numbers). A STAMP Session-SenderMAY<bcp14>MAY</bcp14> generate a locally unique STAMP Session Identifier (SSID). The SSID is atwo-octet-longtwo-octet-long, non-zero unsigned integer. The SSID generation policy isimplementation-specific.implementation specific. <xreftarget="I-D.gont-numeric-ids-generation"/>target="I-D.irtf-pearg-numeric-ids-generation" format="default"/> thoroughly analyzes common algorithms for identifier generation and their vulnerabilities. For example, an implementation can use the algorithms described inSection 7.1 of<xreftarget="I-D.gont-numeric-ids-generation"/>.target="I-D.irtf-pearg-numeric-ids-generation" sectionFormat="of" section="7.1"/>. An implementationMUST NOT<bcp14>MUST NOT</bcp14> assign the same identifier to different STAMP test sessions. A Session-SenderMAY<bcp14>MAY</bcp14> use the SSID to identify a STAMP test session. If the SSID is used, itMUST<bcp14>MUST</bcp14> be present in each test packet of the given test session. In the unauthenticated mode, the SSID is located as displayed in <xreftarget="session-sender-unauthenticated-format"/>.target="session-sender-unauthenticated-format" format="default"/>. </t> <figurealign="left" anchor="session-sender-unauthenticated-format" title="The formatanchor="session-sender-unauthenticated-format"> <name>The Format of anextendedExtended STAMP Session-Sendertest packetTest Packet inunauthenticated mode"> <artwork><![CDATA[Unauthenticated Mode</name> <artwork name="" type="" align="left" alt=""><![CDATA[ 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Timestamp | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Error Estimate | SSID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | | MBZ (28 octets) | | | | | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ TLVs ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ]]></artwork> </figure> <t> An implementation of the STAMP Session-Reflector that supports this specificationMUST<bcp14>MUST</bcp14> identify a STAMP Session using the SSID in combination with elements of the usual 4-tuple for the session. Before a test session commences, a Session-ReflectorMUST<bcp14>MUST</bcp14> be provisioned with all the elements that identify the STAMP Session. A STAMP Session-ReflectorMUST<bcp14>MUST</bcp14> discard non-matching STAMP testpacket(s).packets. The means of provisioning the STAMP Session identification is outside the scope of this specification.<!-- If the Session-Reflector finds that the SSID and 4-tuple combination changes during a test session, then the Session-Reflector MUST discard the non-matching packet(s) and take no further action on them. -->A conforming implementation of a STAMP Session-ReflectorMUST<bcp14>MUST</bcp14> copy the SSID value from the received test packet and put it into the reflected packet, as displayed in <xreftarget="session-reflector-unauthenticated-format"/>.target="session-reflector-unauthenticated-format" format="default"/>. </t> <figurealign="left" anchor="session-reflector-unauthenticated-format" title="The formatanchor="session-reflector-unauthenticated-format"> <name>The Format of anextendedExtended STAMP Session-Reflectortest packetTest Packet inunauthenticated mode"> <artwork><![CDATA[Unauthenticated Mode</name> <artwork name="" type="" align="left" alt=""><![CDATA[ 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Timestamp | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Error Estimate | SSID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Receive Timestamp | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Session-Sender Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Session-Sender Timestamp | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Session-Sender Error Estimate | MBZ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Ses-Sender TTL | MBZ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ TLVs ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ]]></artwork> </figure></t><t> A STAMP Session-Reflector that does not support this specification will return the zeroed SSID field in the reflected STAMP test packet. The Session-SenderMAY<bcp14>MAY</bcp14> stop the session if it receives a zeroed SSID field. An implementation of a Session-SenderMUST<bcp14>MUST</bcp14> support control of its behavior in such a scenario. If the test session is not stopped, theSession-Sender,Session-Sender can, for example, send a base STAMP packet <xreftarget="RFC8762"/>target="RFC8762" format="default"/> or continue transmitting STAMP test packets with the SSID. </t> <t>LocationThe location of the SSID field in the authenticated mode is shown in Figures <xreftarget="session-sender-authenticated-format"/>target="session-sender-authenticated-format" format="counter"/> and <xreftarget="session-reflector-authenticated-format"/>.target="session-reflector-authenticated-format" format="counter"/>. </t> <figurealign="left" anchor="session-sender-authenticated-format" title="Baseanchor="session-sender-authenticated-format"> <name>The Format of an Extended STAMP Session-Sendertest packet formatTest Packet inauthenticated mode"> <artwork><![CDATA[Authenticated Mode</name> <artwork name="" type="" align="left" alt=""><![CDATA[ 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | MBZ (12 octets) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Timestamp | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Error Estimate | SSID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ ~ | MBZ (68 octets) | ~ ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | HMAC (16 octets) | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ TLVs ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork> </figure>]]></artwork></figure> <figurealign="left" anchor="session-reflector-authenticated-format" title="Baseanchor="session-reflector-authenticated-format"> <name>The Format of an Extended STAMP Session-Reflectortest packet formatTest Packet inauthenticated mode"> <artwork><![CDATA[Authenticated Mode</name> <artwork name="" type="" align="left" alt=""><![CDATA[ 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MBZ (12 octets) | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Timestamp | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Error Estimate | SSID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MBZ (4 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Receive Timestamp | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MBZ (8 octets) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Session-Sender Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MBZ (12 octets) | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Session-Sender Timestamp | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Session-Sender Error Estimate | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | MBZ (6 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Ses-Sender TTL | | +-+-+-+-+-+-+-+-+ + | | | MBZ (15 octets) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | HMAC (16 octets) | | | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ TLVs ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ]]></artwork> </figure></t></section> <section anchor="stamp-extension-section"title="TLVnumbered="true" toc="default"> <name>TLV Extensions toSTAMP">STAMP</name> <t> The Type-Length-Value (TLV) encoding scheme provides a flexible extension mechanism for optional informational elements. TLV is an optional field in the STAMP test packet. Multiple TLVsMAY<bcp14>MAY</bcp14> be placed in a STAMP test packet. Additional TLVs may be enclosed within a given TLV, subject to the semantics of the (outer) TLV in question. TLVs have a one-octet-long STAMP TLV Flags field, a one-octet-long Type field, and a two-octet-long Length field that is equal to the length of the Value field in octets. If a Type value for a TLV or sub-TLV is in the range forVendorPrivateUse,Use <xref target="RFC8126"/>, theLength MUSTlength <bcp14>MUST</bcp14> be at least 4, and the first four octetsMUST<bcp14>MUST</bcp14> be that vendor's Structure of Management Information (SMI) Private Enterprise Code, as recorded in IANA'sSMI"SMI Network Management Private EnterpriseCodes sub-registry,Codes" subregistry, in network octet order. The rest of the Value field is private to the vendor. The following sections describe the use of TLVs for STAMP that extend the STAMP capability beyond its base specification. </t> <figurealign="left" anchor="tlv-format" title="TLVanchor="tlv-format"> <name>TLV Format in a STAMP ExtendedPacket"> <artwork><![CDATA[Packet</name> <artwork name="" type="" align="left" alt=""><![CDATA[ 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |STAMP TLV Flags| Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Value ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ]]></artwork> </figure>where<t> The fields are defined asthe following: <list style="symbols"> <t>STAMPfollows: </t> <dl spacing="normal" newline="false"> <dt>STAMP TLVFlags -Flags:</dt><dd>An eight-bit-long field.DetailedThe detailed format and interpretation of flags defined in this specificationis below.</t> <t>Type -are below.</dd> <dt>Type:</dt><dd>A one-octet-long field that characterizes the interpretation of the Value field. It is allocated by IANA, as specified in <xreftarget="iana-stamp-tlv-registry"/>.</t> <t>Length -target="iana-stamp-tlv-registry" format="default"/>.</dd> <dt>Length:</dt><dd>A two-octet-long field equal to the length of the Value field inoctets.</t> <t>Value - aoctets.</dd> <dt>Value:</dt><dd>A variable-length field. Its interpretation and encodingisare determined by the value of the Typefield.</t> </list>field.</dd> </dl> <t> Allmultibytemulti-byte fields in TLVs defined in this specification are in network byte order. </t> <t> The format of the STAMP TLV Flags is displayed in <xreftarget="tlv-flags-format"/>target="tlv-flags-format" format="default"/>, and the location of flags isaccording todefined in <xreftarget="iana-tlv-flags-reg"/>.target="iana-tlv-flags-reg" format="default"/>. </t> <figurealign="left" anchor="tlv-flags-format" title="STAMPanchor="tlv-flags-format"> <name>STAMP TLV FlagsFormat"> <artwork><![CDATA[Format</name> <artwork name="" type="" align="left" alt=""><![CDATA[ 0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ |U|M|I|R|R|R|R|R| +-+-+-+-+-+-+-+-+ ]]></artwork> </figure>where<t> The fields are defined asthe following: <list style="symbols"> <t>U (Unrecognized) is afollows: </t> <dl newline="false" spacing="normal"> <dt>U (Unrecognized):</dt><dd>A one-bit flag. A Session-SenderMUST<bcp14>MUST</bcp14> set the U flag to 1 before transmitting an extended STAMP test packet. A Session-ReflectorMUST<bcp14>MUST</bcp14> set the U flag to 1 if the Session-Reflector has not understood the TLV. Otherwise, the Session-ReflectorMUST<bcp14>MUST</bcp14> set the U flag in the reflected packet to0.</t> <t>M (Malformed) is a0.</dd> <dt>M (Malformed):</dt><dd>A one-bit flag. A Session-SenderMUST<bcp14>MUST</bcp14> set the M flag to 0 before transmitting an extended STAMP test packet. A Session-ReflectorMUST<bcp14>MUST</bcp14> set the M flag to 1 if the Session-Reflector determined the TLV is malformed, i.e., the Length field value is not valid for the particular type, or the remaining length of the extended STAMP packet is less than the size of the TLV. Otherwise, the Session-ReflectorMUST<bcp14>MUST</bcp14> set the M flag in the reflected packet to 0.</t> <t>I (Integrity) is a</dd> <dt>I (Integrity):</dt><dd>A one-bit flag. A Session-SenderMUST<bcp14>MUST</bcp14> set the I flag to 0 before transmitting an extended STAMP test packet. A Session-ReflectorMUST<bcp14>MUST</bcp14> set the I flag to 1 if the STAMP extensions have failed HMAC verification (<xreftarget="hmac-sec"/>).target="hmac-sec" format="default"/>). Otherwise, the Session-ReflectorMUST<bcp14>MUST</bcp14> set the I flag in the reflected packet to0.</t> <t>R - reserved0.</dd> <dt>R:</dt><dd>Reserved flags for future use. These flagsMUST<bcp14>MUST</bcp14> be zeroed on transmit and ignored onreceipt.</t> </list> </t>receipt.</dd> </dl> <t> A STAMP node, whether Session-Sender or Session-Reflector, receiving a test packetMUST<bcp14>MUST</bcp14> determine whether the packet is a base STAMP packet or whether it includes one or more TLVs. The nodeMUST<bcp14>MUST</bcp14> compare the value in the Length field of the UDP header and the length of the base STAMP test packet in the mode, unauthenticated orauthenticatedauthenticated, based on the configuration of the particular STAMP test session. If the difference between the two values islargergreater than the length of the UDP header, then the test packet includes one or more STAMP TLVs that immediately follow the base STAMP test packet. A Session-Reflector that does not support STAMP extensions will not process but copy them into the reflected packet, as defined inSection 4.3<xreftarget="RFC8762"/>.target="RFC8762" sectionFormat="of" section="4.3"/>. A Session-Reflector that supports TLVs will indicate specific TLVs that it did not process by setting the U flag to 1 in those TLVs. </t> <t> A STAMP Session-Sender that has received a reflected STAMP test packet with extension TLVsMUST<bcp14>MUST</bcp14> validate each TLV:<list style="symbol"> <t></t> <ul spacing="normal"> <li> If the U flag is set, the STAMP systemMUST<bcp14>MUST</bcp14> skip the processing of the TLV.</t> <t></li> <li> If the M flag is set, the STAMP systemMUST<bcp14>MUST</bcp14> stop processing the remainder of the extended STAMP packet.</t> <t></li> <li> If the I flag is set, the STAMP systemMUST<bcp14>MUST</bcp14> discard all TLVs andMUST<bcp14>MUST</bcp14> stop processing the remainder of the extended STAMP packet.</t> <t></li> <li> If an implementation of a Session-Reflector does not recognize the Type field value, itMUST<bcp14>MUST</bcp14> include a copy of the TLVintoin the reflected STAMP packet. The Session-ReflectorMUST<bcp14>MUST</bcp14> set the U flag to 1. The Session-ReflectorMUST<bcp14>MUST</bcp14> skip the processing of the unrecognized TLV.</t> <t></li> <li> If a TLV is malformed, the processing of extension TLVsMUST<bcp14>MUST</bcp14> be stopped. The Session-ReflectorMUST<bcp14>MUST</bcp14> copy the remainder of the received extended STAMP packet into the reflected STAMP packet. The Session-ReflectorMUST<bcp14>MUST</bcp14> set the M flag to 1.</t> </list> <!-- An operator MUST be notified of the error. Detected error events MAY be logged. Note that the rate of logging MUST be controlled. --></li> </ul> <t> </t> <section anchor="padding-tlv-section"title="Extranumbered="true" toc="default"> <name>Extra PaddingTLV"> <t>TLV</name> <figurealign="left" anchor="padding-tlv-figuret" title="Extraanchor="padding-tlv-figuret"> <name>Extra PaddingTLV"> <artwork><![CDATA[TLV</name> <artwork name="" type="" align="left" alt=""><![CDATA[ 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |STAMP TLVFlags|Extra PadFlags| Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ~ Extra Padding ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ]]></artwork> </figure>where<t> The fields are defined asthe following: <list style="symbols"> <t>STAMPfollows: </t> <dl spacing="normal" newline="false"> <dt>STAMP TLVFlags - is anFlags:</dt><dd>An eight-bit-long field. Its format is presented in <xreftarget="tlv-flags-format"/>.</t> <t>Extra Padding Type - is atarget="tlv-flags-format" format="default"/>.</dd> <dt>Type:</dt><dd>A one-octet-longfield, value TBA1field. Value 1 has been allocated by IANA<xref target="iana-stamp-tlv-registry"/>.</t> <t>Length -(<xref target="iana-stamp-tlv-registry" format="default"/>).</dd> <dt>Length:</dt><dd>A two-octet-long field equal to the length of the Extra Padding field inoctets.</t> <t>Extra Padding - SHOULDoctets.</dd> <dt>Extra Padding:</dt><dd>This field <bcp14>SHOULD</bcp14> be filled by a sequence ofa pseudo-randompseudorandom numbers. The fieldMAY<bcp14>MAY</bcp14> be filled with all zeros. An implementationMUST<bcp14>MUST</bcp14> control thetype of fillingcontent of the Extra Paddingfield.</t> </list> </t>field.</dd> </dl> <t> The Extra Padding TLV is similar to the Packet Padding field in a TWAMP-Test packet <xreftarget="RFC5357"/>.target="RFC5357" format="default"/>. The use of the Extra Padding TLV isRECOMMENDED<bcp14>RECOMMENDED</bcp14> to perform a STAMP test using test packetsofthat are largersizethan the base STAMP packet <xreftarget="RFC8762"/>.target="RFC8762" format="default"/>. The length of the base STAMP packet is 44 octets in the unauthenticated mode or 112 octets in the authenticated mode. The Extra Padding TLVMAY<bcp14>MAY</bcp14> be present more than one time in an extended STAMP test packet. </t> </section> <section anchor="location-info-section"title="Location TLV">numbered="true" toc="default"> <name>Location TLV</name> <t> STAMP Session-SendersMAY<bcp14>MAY</bcp14> include the variable-size Location TLV to query location information from the Session-Reflector. The Session-SenderMUST NOT<bcp14>MUST NOT</bcp14> fill any information fields except for the STAMP TLV Flags, Type, andLength.Length fields. The Session-ReflectorMUST<bcp14>MUST</bcp14> verify that the TLV iswell-formed.well formed. If it is not, the Session-Reflector follows the procedure defined in <xreftarget="stamp-extension-section"/>target="stamp-extension-section" format="default"/> for a malformed TLV. </t> <figure anchor="location-tlv-figuret"> <name>Location TLV</name> <artwork name="" type="" align="left"anchor="location-tlv-figuret" title="Location TLV"> <artwork><![CDATA[alt=""><![CDATA[ 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |STAMP TLV Flags|LocationType | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Port | Source Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Sub-TLVs ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ]]></artwork> </figure>where<t> The fields are defined asthe following: <list style="symbols"> <t>STAMPfollows: </t> <dl spacing="normal" newline="false"> <dt>STAMP TLVFlags - is anFlags:</dt><dd>An eight-bit-long field. Its format is presented in <xreftarget="tlv-flags-format"/>.</t> <t>Location Type - is atarget="tlv-flags-format" format="default"/>.</dd> <dt>Type:</dt><dd>A one-octet-longfield, value TBA2field. Value 2 has been allocated by IANA<xref target="iana-stamp-tlv-registry"/>.</t> <t>Length -(<xref target="iana-stamp-tlv-registry" format="default"/>).</dd> <dt>Length:</dt><dd>A two-octet-long field equal to the length of the Value field inoctets.</t> <t>Destination Port -octets.</dd> <dt>Destination Port:</dt><dd>A two-octet-long UDP destination port number of the received STAMPpacket.</t> <t>Source Port -packet.</dd> <dt>Source Port:</dt><dd>A two-octet-long UDP source port number of the received STAMPpacket.</t> <t>Sub-TLVs - apacket.</dd> <dt>Sub-TLVs:</dt><dd>A sequence of sub-TLVs, as defined further in this section. The sub-TLVs are used by the Session-Sender to request location information with generic sub-TLV types, and the Session-Reflector responds with the corresponding more-specific sub-TLVs for the type of address (e.g., IPv4 or IPv6) used at theSession-Reflector.</t> </list> </t>Session-Reflector.</dd> </dl> <t>Note that all fields not filled by either a Session-Sender or Session-Reflector are transmitted with all bits set to zero.</t> <section anchor="location-sub-tlv-sec"title="Location Sub-TLVs">numbered="true" toc="default"> <name>Location Sub-TLVs</name> <t> A sub-TLV in the Location TLV uses the format displayed in <xreftarget="tlv-format"/>. <!-- A Session-Sender MUST set the U flag in a sub-TLV to 1 before transmitting the extended STAMP test packet. The Session-Reflector MUST set the sub-TLV's U flag in the reflected test packet to 0 if it supports that type of sub-TLV. If the Session-Reflector doesn't recognize the sub-TLV, it must copy it from the received packet into the reflected packet. A Session-Sender MUST set the M flag in a sub-TLV to 0 before transmitting the extended STAMP test packet. The Session-Reflector MUST set the M flag in the sub-TLV in the reflected packet to 1 if the sub-TLV is malformed. The Session-Reflector MUST stop processing the Location TLV and MUST copy the remaining part of the Location TLV into the reflected test packet. -->target="tlv-format" format="default"/>. Handling of the U and M flags in the sub-TLV is as defined in <xreftarget="stamp-extension-section"/>.target="stamp-extension-section" format="default"/>. The I flagMUST<bcp14>MUST</bcp14> be set by a Session-Sender and Session-Reflector to 0 before transmission and its value ignored on receipt. The following types ofsub-TLVsub-TLVs for the Location TLV are defined in this specification(type values are assigned according to <xref target="sub-tlv-type-tbl"/>): <list style="symbols"> <t> Source(<xref target="sub-tlv-type-tbl" format="default"/> lists the Type values): </t> <dl newline="false" spacing="normal"> <dt>Source MAC Addresssub-TLV - is asub-TLV:</dt><dd>A 12-octet-long sub-TLV. The Type value isTBA9.1. The value of the Length fieldMUST<bcp14>MUST</bcp14> be equal to 8. The Value field is an 8-octet-long MBZ field thatMUST<bcp14>MUST</bcp14> be zeroed on transmission and ignored on receipt.</t> <t></dd> <dt> Source EUI-48 Addresssub-TLV - is asub-TLV:</dt><dd><t>A 12-octet-long sub-TLV that includes the EUI-48 source MAC address. The Type value isTBA10.2. The value of the Length fieldMUST<bcp14>MUST</bcp14> be equal to8.8.</t> <figurealign="left" anchor="eui-48-tlv-figure" title="Theanchor="eui-48-tlv-figure"> <name>The Value Field of the Source EUI-48 Addresssub-TLV"> <artwork><![CDATA[Sub-TLV</name> <artwork name="" type="" align="left" alt=""><![CDATA[ 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | EUI-48 Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | MBZ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ]]></artwork> </figure> <t> The Value field consists of the following fields (<xreftarget="eui-48-tlv-figure"/>): <list> <t>The EUI-48 is atarget="eui-48-tlv-figure" format="default"/>): </t> <dl spacing="normal"> <dt>EUI-48 Address:</dt><dd>A six-octet-longfield.</t> <t>Two-octet-ling MBZ field MUSTfield.</dd> <dt>MBZ:</dt><dd>A two-octet-long field. It <bcp14>MUST</bcp14> be zeroed on transmission and ignored onreceipt.</t> </list> </t> <t> Sourcereceipt.</dd> </dl> </dd> <dt>Source EUI-64 Addresssub-TLV - is asub-TLV:</dt><dd>A 12-octet-long sub-TLV that includes the EUI-64 source MAC address. The Type value isTBA11.3. The value of the Length fieldMUST<bcp14>MUST</bcp14> be equal to 8. The Value field consists of an eight-octet-long EUI-64 field.</t> <t></dd> <dt> Destination IP Addresssub-TLV - is asub-TLV:</dt><dd>A 20-octet-long sub-TLV. The Type value isTBA12.4. The value of the Length fieldMUST<bcp14>MUST</bcp14> be equal to 16. The Value field consists of a 16-octet-long MBZ field thatMUST<bcp14>MUST</bcp14> be zeroed on transmit and ignored onreceipt </t> <t>receipt. </dd> <dt> Destination IPv4 Addresssub-TLV - is asub-TLV:</dt><dd><t>A 20-octet-long sub-TLV that includes the IPv4 destination address. The Type value isTBA13.5. The value of the Length fieldMUST<bcp14>MUST</bcp14> be equal to16.16.</t> <figurealign="left" anchor="ipv4-value-figure" title="IPv4anchor="ipv4-value-figure"> <name>IPv4 Address in a Sub-TLV's ValueField"> <artwork><![CDATA[Field</name> <artwork name="" type="" align="left" alt=""><![CDATA[ 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IPv4 Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ MBZ (12 octets) ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ]]></artwork> </figure> <t> The Value field consists of the following fields (<xreftarget="ipv4-value-figure"/>): <list> <t>The IPv4 Address is atarget="ipv4-value-figure" format="default"/>): </t> <dl spacing="normal"> <dt>IPv4 Address:</dt><dd>A four-octet-longfield.</t> <t>12-octet-long MBZ field MUSTfield.</dd> <dt>MBZ:</dt><dd>A 12-octet-long field. It <bcp14>MUST</bcp14> be zeroed on transmit and ignored onreceipt.</t> </list> </t> <t>receipt.</dd> </dl> </dd> <dt> Destination IPv6 Addresssub-TLV - is asub-TLV:</dt><dd>A 20-octet-long sub-TLV that includes the IPv6 destination address. The Type value isTBA14.6. The value of the Length fieldMUST<bcp14>MUST</bcp14> be equal to 16. The Value field is a 16-octet-longIP v6IPv6 Address field.</t> <t></dd> <dt> Source IP Addresssub-TLV - is asub-TLV:</dt><dd>A 20-octet-long sub-TLV. The Type value isTBA15.7. The value of the Length fieldMUST<bcp14>MUST</bcp14> be equal to 16. The Value field is a 16-octet-long MBZ field thatMUST<bcp14>MUST</bcp14> be zeroed on transmit and ignored onreceipt </t> <t>receipt. </dd> <dt> Source IPv4 Addresssub-TLV - is asub-TLV:</dt><dd><t>A 20-octet-long sub-TLV that includes the IPv4 source address. The Type value isTBA16.8. The value of the Length fieldMUST<bcp14>MUST</bcp14> be equal to 16. The Value field consists of the following fields (<xreftarget="ipv4-value-figure"/>): <list> <t>The IPv4 Address is atarget="ipv4-value-figure" format="default"/>):</t> <dl spacing="normal"> <dt>IPv4 Address:</dt><dd>A four-octet-longfield.</t> <t>12-octet-long MBZ field that MUSTfield.</dd> <dt>MBZ:</dt><dd>A 12-octet-long field. It <bcp14>MUST</bcp14> be zeroed on transmit and ignored onreceipt.</t> </list> </t> <t>receipt.</dd> </dl> </dd> <dt> Source IPv6 Addresssub-TLV - is asub-TLV:</dt><dd>A 20-octet-long sub-TLV that includes the IPv6 source address. The Type value isTBA17.9. The value of the Length fieldMUST<bcp14>MUST</bcp14> be equal to 16. The Value field is a 16-octet-long IPv6 Address field.</t> </list> </t></dd> </dl> </section> <section anchor="location-operation-sec"title="Theorynumbered="true" toc="default"> <name>Theory of Operation of LocationTLV">TLV</name> <t> The Session-Reflector that received an extended STAMP packet with the Location TLVMUST<bcp14>MUST</bcp14> include in the reflected packet the Location TLVof the sizewith a length equal to thesize ofLocation TLV length in the receivedpacket in the reflectedpacket. Based on the local policy, the Session-ReflectorMAY<bcp14>MAY</bcp14> leave some fields unreported by filling them with zeroes. An implementation of the stateful Session-ReflectorMUST<bcp14>MUST</bcp14> provide control for managing such policies. </t> <t> A Session-SenderMAY<bcp14>MAY</bcp14> include the Source MAC Address sub-TLV in the Location TLV. If the Session-Reflector receives the Location TLV that includes the Source MAC Address sub-TLV, itMUST<bcp14>MUST</bcp14> include the Source EUI-48 Address sub-TLV if the source MAC address of the received extended test packet is in EUI-48 format. And the Session-ReflectorMUST<bcp14>MUST</bcp14> copy the value of the source MAC address in the EUI-48 field. Otherwise, the Session-ReflectorMUST<bcp14>MUST</bcp14> use the Source EUI-64 Address sub-TLV andMUST<bcp14>MUST</bcp14> copy the value of the Source MACaddressAddress from the received packet into the EUI-64 field. If the received extended STAMP test packet does not have the Source MACaddress,Address, the Session-ReflectorMUST<bcp14>MUST</bcp14> zero the EUI-64 field before transmitting the reflected packet. </t> <t> A Session-SenderMAY<bcp14>MAY</bcp14> include the Destination IP Address sub-TLV in the Location TLV. If the Session-Reflector receives the Location TLV that includes the Destination IP Address sub-TLV, itMUST<bcp14>MUST</bcp14> include the Destination IPv4 Address sub-TLV if the source IP address of the received extended test packet is of the IPv4 address family. And the Session-ReflectorMUST<bcp14>MUST</bcp14> copy the value of the destination IP address in the IPv4 Address field. Otherwise, the Session-ReflectorMUST<bcp14>MUST</bcp14> use the Destination IPv6 Address sub-TLV andMUST<bcp14>MUST</bcp14> copy the value of the destination IP address from the received packet into the IPv6 Address field. </t> <t> A Session-SenderMAY<bcp14>MAY</bcp14> include the Source IP Address sub-TLV in the Location TLV. If the Session-Reflector receives the Location TLV that includes the Source IP Address sub-TLV, itMUST<bcp14>MUST</bcp14> include the Source IPv4 Address sub-TLV if the source IP address of the received extended test packet is of the IPv4 address family. And the Session-ReflectorMUST<bcp14>MUST</bcp14> copy the value of the source IP address in the IPv4 Address field. Otherwise, the Session-ReflectorMUST<bcp14>MUST</bcp14> use the Source IPv6 Address sub-TLV andMUST<bcp14>MUST</bcp14> copy the value of the source IP address from the received packet into the IPv6 Address field. </t> <t> The Location TLVMAY<bcp14>MAY</bcp14> be used to determine the last-hop IP addresses, ports, and last-hop MAC addressfor for STAMP packets. The MAC address can indicate a path switch on the last hop. The IP addresses and UDP ports will indicate if there is a NAT router on the path. It allows the Session-Sender to identify the IP address of the Session-Reflector behind theNAT,NAT and detect changes in the NAT mapping that couldcauseresult in sending the STAMP packets to the wrong Session-Reflector. </t> </section> </section> <section anchor="timestamp-info-section"title="Timestampnumbered="true" toc="default"> <name>Timestamp InformationTLV">TLV</name> <t> The STAMP Session-SenderMAY<bcp14>MAY</bcp14> include the Timestamp Information TLV to request information from the Session-Reflector. The Session-SenderMUST NOT<bcp14>MUST NOT</bcp14> fill any information fields except for STAMP TLV Flags, Type, and Length. All other fieldsMUST<bcp14>MUST</bcp14> be filled with zeroes. The Session-ReflectorMUST<bcp14>MUST</bcp14> validate the Length value of the TLV. If the value of the Length field is invalid, the Session-Reflector follows the procedure defined in <xreftarget="stamp-extension-section"/>target="stamp-extension-section" format="default"/> for a malformed TLV. </t> <figurealign="left" anchor="timestamp-tlv-figuret" title="Timestampanchor="timestamp-tlv-figuret"> <name>Timestamp InformationTLV"> <artwork><![CDATA[TLV</name> <artwork name="" type="" align="left" alt=""><![CDATA[ 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |STAMP TLVFlags|Times Info Type|Flags| Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Sync.Sync Src In | Timestamp In |Sync.Sync Src Out | Timestamp Out | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Optional sub-TLVs ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ]]></artwork> </figure>where<t> The fields are defined asthe following: <list style="symbols"> <t>STAMPfollows: </t> <dl spacing="normal"> <dt>STAMP TLVFlags - is anFlags:</dt><dd>An eight-bit-long field. Its format is presented in <xreftarget="tlv-flags-format"/>.</t> <t>Timestamp Information Type - is atarget="tlv-flags-format" format="default"/>.</dd> <dt>Type:</dt><dd>A one-octet-longfield, value TBA3field. Value 3 has been allocated by IANA<xref target="iana-stamp-tlv-registry"/>.</t> <t>Length -(<xref target="iana-stamp-tlv-registry" format="default"/>).</dd> <dt>Length:</dt><dd>A two-octet-long field, set equal to the length of the Value field in octets (<xreftarget="tlv-format"/>).</t> <t>Synctarget="tlv-format" format="default"/>).</dd> <dt>Sync SrcIn -In:</dt><dd>A one-octet-long field that characterizes the source of clock synchronization at the ingress of a Session-Reflector. There are several methodsto synchronizefor synchronizing the clock, e.g., the Network Time Protocol (NTP) <xreftarget="RFC5905"/>. The value is one of those listed intarget="RFC5905" format="default"/>. <xreftarget="ssync-source-new-tbl"/>.</t> <t>Timestamp In -target="ssync-source-new-tbl" format="default"/> lists the possible values.</dd> <dt>Timestamp In:</dt><dd>A one-octet-long field that characterizes the method by which the ingress of the Session-Reflector obtained the timestamp T2. A timestamp may be obtained with hardwareassistance,assistance via a software API from a local wallclock,clock or from a remote clock (the latter is referred to as a "control plane").The value is one of those listed in<xreftarget="timestamp-method-new-tbl"/>.</t> <t>Synctarget="timestamp-method-new-tbl" format="default"/> lists the possible values.</dd> <dt>Sync SrcOut -Out:</dt><dd>A one-octet-long field that characterizes the source of clock synchronization at the egress of the Session-Reflector.The value is one of those listed in<xreftarget="ssync-source-new-tbl"/>.</t> <t>Timestamp Out -target="ssync-source-new-tbl" format="default"/> lists the possible values.</dd> <dt>Timestamp Out:</dt><dd>A one-octet-long field that characterizes the method by which the egress of the Session-Reflector obtained the timestamp T3.The value is one of those listed in<xreftarget="timestamp-method-new-tbl"/>.</t> <t>Optional sub-TLVs -target="timestamp-method-new-tbl" format="default"/> lists the possible values.</dd> <dt>Optional sub-TLVs:</dt><dd>An optional variable-lengthfield.</t> </list> </t>field.</dd> </dl> </section> <section anchor="cos-info-section"title="Classnumbered="true" toc="default"> <name>Class of ServiceTLV">TLV</name> <t> The STAMP Session-SenderMAY<bcp14>MAY</bcp14> include a Class of Service (CoS) TLV in the STAMP test packet. The format of the CoS TLV is presented in <xreftarget="cos-tlv-figure"/>.target="cos-tlv-figure" format="default"/>. </t> <figurealign="left" anchor="cos-tlv-figure" title="Classanchor="cos-tlv-figure"> <name>Class of ServiceTLV"> <artwork><![CDATA[TLV</name> <artwork name="" type="" align="left" alt=""><![CDATA[ 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |STAMP TLV Flags|CoSType | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DSCP1 | DSCP2 |ECN| RP| Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ]]></artwork> </figure>where<t> The fields are defined asthe following: <list style="symbols"> <t>STAMPfollows: </t> <dl spacing="normal"> <dt>STAMP TLVFlags - is anFlags:</dt><dd>An eight-bit-long field. Its format is presented in <xreftarget="tlv-flags-format"/>.</t> <t>CoS (Class of Service) Type - is atarget="tlv-flags-format" format="default"/>.</dd> <dt>Type:</dt><dd>A one-octet-longfield, value TBA4field. Value 4 has been allocated by IANA<xref target="iana-stamp-tlv-registry"/>.</t> <t>Length -(<xref target="iana-stamp-tlv-registry" format="default"/>).</dd> <dt>Length:</dt><dd>A two-octet-long field, set equal to the value4.</t> <t>DSCP1 - The4.</dd> <dt>DSCP1:</dt><dd>The Differentiated Services Code Point (DSCP) intended by the Session-Sender to be used as the DSCP value of the reflected testpacket.</t> <t>DSCP2 - Thepacket.</dd> <dt>DSCP2:</dt><dd>The received value in the DSCP field at the ingress of theSession-Reflector.</t> <t>ECN - TheSession-Reflector.</dd> <dt>ECN:</dt><dd>The received value in the ECN field at the ingress of theSession-Reflector.</t> <t>RPSession-Reflector.</dd> <dt>RP (ReversePath) - is aPath):</dt><dd>A two-bit-long field. A Session-SenderMUST<bcp14>MUST</bcp14> set the value of the RP field to 0 ontransmission.</t> <t>Reserved -transmission.</dd> <dt>Reserved:</dt><dd>A 16-bit-longfield, MUSTfield that <bcp14>MUST</bcp14> be zeroed on transmission and ignored onreceipt.</t> </list> </t>receipt.</dd> </dl> <t> A STAMP Session-Reflector that receives a test packet with the CoS TLVMUST<bcp14>MUST</bcp14> include the CoS TLV in the reflected test packet. Also, the Session-ReflectorMUST<bcp14>MUST</bcp14> copy the value of the DSCP and ECN fields of the IP header of the received STAMP test packet into the DSCP2 field in the reflected test packet. Finally, the Session-ReflectorMUST<bcp14>MUST</bcp14> use the local policy to verify whether the CoS corresponding to the value of the DSCP1 field is permitted in the domain. If it is, theSession-Reflectorset MUSTSession-Reflector <bcp14>MUST</bcp14> set the DSCP field's value in the IP header of the reflected test packet equal to the value of the DSCP1 field of the received test packet. Otherwise, the Session-ReflectorMUST<bcp14>MUST</bcp14> use the DSCP value of the received STAMP packet and set the value of the RP field to 1. Upon receiving the reflected packet, if the value of the RP field is 0, the Session-Sender will save the DSCP and ECN values for analysis of the CoS in the reverse direction. If the value of the RP field in the received reflected packet is 1, only CoS in the forward direction can be analyzed. </t> <t> Re-mapping of CoS can be used to provide multiple services(e,g.,(e.g., 2G, 3G, LTE in mobile backhaul networks) over the samenetwork. network. But if it is misconfigured, then it is often difficult to diagnose the root cause of excessive packet drops of higher-level service while packet drops for lower service packets are at a normallevel. level. Using a CoS TLV in STAMP testing helps to troubleshoot the existing problem and also verify whether DiffServ policies are processing CoS as required by the configuration. </t> </section> <section anchor="direct-measurement-section"title="Directnumbered="true" toc="default"> <name>Direct MeasurementTLV">TLV</name> <t> The Direct Measurement TLV enables collection of the number of in-profile packets, i.e., packets that form a specific data flow, that had been transmitted and received by the Session-Sender and Session-Reflector, respectively. The definition of "in-profile packet" is outside the scope of this document and is left to the test operators to determine. </t> <figurealign="left" anchor="direct-tlv-figuret" title=" Directanchor="direct-tlv-figuret"> <name>Direct MeasurementTLV"> <artwork><![CDATA[TLV</name> <artwork name="" type="" align="left" alt=""><![CDATA[ 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |STAMP TLV Flags|DirectType | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Session-Sender Tx counter (S_TxC) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Session-Reflector Rx counter (R_RxC) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Session-Reflector Tx counter (R_TxC) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ]]></artwork> </figure>where<t> The fields are defined asthe following: <list style="symbols"> <t>STAMPfollows: </t> <dl spacing="normal" newline="false"> <dt>STAMP TLVFlags - is anFlags:</dt><dd>An eight-bit-long field. Its format is presented in <xreftarget="tlv-flags-format"/>.</t> <t>Direct (Measurement) Type - is atarget="tlv-flags-format" format="default"/>.</dd> <dt>Type:</dt><dd>A one-octet-longfield, value TBA5field. Value 5 has been allocated by IANA<xref target="iana-stamp-tlv-registry"/>.</t> <t>Length -(<xref target="iana-stamp-tlv-registry" format="default"/>).</dd> <dt>Length:</dt><dd>A two-octet-long fieldequalsequal to the length of the Value field in octets. The Length field valueMUST<bcp14>MUST</bcp14> equal 12octets.</t> <t>Session-Senderoctets.</dd> <dt>Session-Sender Tx counter(S_TxC) is a(S_TxC):</dt><dd>A four-octet-long field. The Session-SenderMUST<bcp14>MUST</bcp14> set its value equal to the number of the transmitted in-profilepackets.</t> <t>Session-Reflectorpackets.</dd> <dt>Session-Reflector Rx counter(R_RxC) is a(R_RxC):</dt><dd>A four-octet-long field.MUSTIt <bcp14>MUST</bcp14> be zeroed by the Session-Sender on transmit and ignored by the Session-Reflector on receipt. The Session-ReflectorMUST<bcp14>MUST</bcp14> fill it with the value of in-profile packetsreceived.</t> <t>Session-Reflectorreceived.</dd> <dt>Session-Reflector Tx counter(R_TxC) is a(R_TxC):</dt><dd>A four-octet-long field.MUSTIt <bcp14>MUST</bcp14> be zeroed by the Session-Sender and ignored by the Session-Reflector on receipt. The Session-ReflectorMUST<bcp14>MUST</bcp14> fill it with the value of the transmitted in-profilepackets.</t> </list> </t>packets.</dd> </dl> <t> A Session-SenderMAY<bcp14>MAY</bcp14> include the Direct Measurement TLV in a STAMP test packet. If the received STAMP test packet includes the Direct Measurement TLV, the Session-ReflectorMUST<bcp14>MUST</bcp14> include it in the reflected test packet. The Session-ReflectorMUST<bcp14>MUST</bcp14> copy the value from the S_TxC field of the received test packet into the same field of the reflected packet before its transmission. </t> </section> <section anchor="access-avail-sec"title="Accessnumbered="true" toc="default"> <name>Access ReportTLV">TLV</name> <t> A STAMP Session-SenderMAY<bcp14>MAY</bcp14> include an Access Report TLV (<xreftarget="access-tlv-fig"/>)target="access-tlv-fig" format="default"/>) to indicate changes to the access network status to the Session-Reflector. The definition of an access network is outside the scope of this document. </t><t><figurealign="left" anchor="access-tlv-fig" title="Accessanchor="access-tlv-fig"> <name>Access ReportTLV"> <artwork><![CDATA[TLV</name> <artwork name="" type="" align="left" alt=""><![CDATA[ 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |STAMP TLVFlags|Acc Report Type|Flags| Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ID | Resv | Return Code | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ]]></artwork> </figure>where<t> The fields are defined as follows:<list style="symbols"> <t>STAMP</t> <dl spacing="normal" newline="false"> <dt>STAMP TLVFlags - is anFlags:</dt><dd>An eight-bit-long field. Its format is presented in <xreftarget="tlv-flags-format"/>.</t> <t>Access Report Type - is atarget="tlv-flags-format" format="default"/>.</dd> <dt>Type:</dt><dd>A one-octet-longfield, value TBA6field. Value 6 has been allocated by IANA<xref target="iana-stamp-tlv-registry"/>.</t> <t>Length -(<xref target="iana-stamp-tlv-registry" format="default"/>).</dd> <dt>Length:</dt><dd>A two-octet-long field, set equal to the value4.</t> <t>ID4.</dd> <dt>ID (AccessID) -ID):</dt><dd><t>A four-bit-long field that identifies the access network, e.g., 3GPP (Radio Access Technologies specified by 3GPP) orNon-3GPPnon-3GPP (accesses that are not specified by 3GPP) <xreftarget="TS23501"/>.target="TS23501" format="default"/>. The value is one ofthose listed below: <list> <t>1 - 3GPP Network</t> <t>2 - Non-3GPP Network</t> </list>the following:</t> <dl spacing="normal" newline="false"> <dt>1:</dt><dd>3GPP Network</dd> <dt>2:</dt><dd>Non-3GPP Network</dd> </dl> <t> All other values areinvalid and theinvalid; a TLV that containsit MUSTvalues other than '1' or '2' <bcp14>MUST</bcp14> be discarded.</t><t>Resv -</dd> <dt>Resv:</dt><dd>A four-bit-longfield, MUSTfield that <bcp14>MUST</bcp14> be zeroed on transmission and ignored onreceipt.</t> <t>Return Code -receipt.</dd> <dt>Return Code:</dt><dd>A one-octet-long field that identifies the report signal, e.g., available or unavailable. The value is supplied to the STAMPend-pointendpoint through some mechanism that is outside the scope of this document.The value is one of those listed in<xreftarget="iana-return-code-reg"/>.</t> <t>Reserved -target="iana-return-code-reg" format="default"/> lists the possible values.</dd> <dt>Reserved:</dt><dd>A two-octet-longfield, MUSTfield that <bcp14>MUST</bcp14> be zeroed on transmission and ignored onreceipt.</t> </list> </t>receipt.</dd> </dl> <t> The STAMP Session-Sender that includes the Access Report TLV sets the value of the Access ID field according to the type of access network it reports on. Also, the Session-Sender sets the value of the Return Code field to reflect the operational state of the access network. The mechanism to determine the state of the access network is outside the scope of this specification. A STAMP Session-Reflector that received the test packet with the Access Report TLVMUST<bcp14>MUST</bcp14> include the Access Report TLV in the reflected test packet. TheSession- Reflector MUSTSession-Reflector <bcp14>MUST</bcp14> set the value of the Access ID and Return Code fields equal to the values of the corresponding fields from the test packet it has received. </t> <t> The Session-SenderMUST<bcp14>MUST</bcp14> also arm a retransmission timer after sending a test packet that includes the Access Report TLV. This timerMUST<bcp14>MUST</bcp14> be disarmed upon reception of the reflected STAMP test packet that includes the Access Report TLV. In the event the timer expires before such a packet is received, the Session-SenderMUST<bcp14>MUST</bcp14> retransmit the STAMP test packet that contains the Access Report TLV. This retransmissionSHOULD<bcp14>SHOULD</bcp14> be repeated up to four times before the procedure is aborted. Setting the value for the retransmission timer is based on local policies and the network environment. The default value of the retransmission timer for the Access Report TLVSHOULD<bcp14>SHOULD</bcp14> be three seconds. An implementationMUST<bcp14>MUST</bcp14> provide control of the retransmission timer value and the number of retransmissions. </t> <t> The Access Report TLV is used by the Performance Measurement Function (PMF) components of the Access Steering,SwitchingSwitching, and Splitting feature for 5G networks <xreftarget="TS23501"/>.target="TS23501" format="default"/>. The PMF component in the User Equipment acts as the STAMP Session-Sender, and the PMF component in the User Plane Function acts as the STAMP Session-Reflector. </t> </section> <section anchor="follow-up-tlv"title="Follow-upnumbered="true" toc="default"> <name>Follow-Up TelemetryTLV">TLV</name> <t> A Session-Reflector might be able to putin the Timestamp fieldonly an "SW Local" (see <xreftarget="timestamp-method-new-tbl"/>) timestamp.target="timestamp-method-new-tbl" format="default"/>) timestamp in the Follow-Up Timestamp field. But the hosting system might provide a timestamp closer to the start of the actual packet transmission even though it is not possible to deliver the information to the Session-Sender in time for the packet itself. This timestamp might nevertheless be important for the Session-Sender, as it improves the accuracy ofmeasuringnetwork delay measurement by minimizing the impact of egress queuing delays on the measurement. </t> <t> A STAMP Session-SenderMAY<bcp14>MAY</bcp14> include theFollow-upFollow-Up Telemetry TLV to request information from the Session-Reflector. The Session-SenderMUST<bcp14>MUST</bcp14> set theFollow-upFollow-Up Telemetry Type and Length fields to their appropriate values. The Sequence Number and Follow-Up Timestamp fieldsMUST<bcp14>MUST</bcp14> be zeroed on transmission by the Session-Sender and ignored by the Session-Reflector upon receipt of the STAMP test packet that includes theFollow-upFollow-Up Telemetry TLV. The Session-ReflectorMUST<bcp14>MUST</bcp14> validate the Length value of the STAMP test packet. If the value of the Length field is invalid, the Session-ReflectorMUST<bcp14>MUST</bcp14> zero the Sequence Number and Follow-Up Timestamp fields and set the M flag in the STAMP TLV Flags field in the reflected packet. If the Session-Reflector is in the stateless mode (defined inSection 4.2<xreftarget="RFC8762"/>),target="RFC8762" sectionFormat="of" section="4.2"/>), itMUST<bcp14>MUST</bcp14> zero the Sequence Number and Follow-Up Timestamp fields. </t><t><figurealign="left" anchor="follow-up-tlv-fig" title="Follow-upanchor="follow-up-tlv-fig"> <name>Follow-Up TelemetryTLV"> <artwork><![CDATA[TLV</name> <artwork name="" type="" align="left" alt=""><![CDATA[ 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |STAMP TLV Flags|Follow-up Type|Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Follow-upFollow-Up Timestamp | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Timestamp M | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ]]></artwork> </figure>where<t> The fields are defined as follows:<list style="symbols"> <t>STAMP</t> <dl spacing="normal"> <dt>STAMP TLVFlags - is anFlags:</dt><dd>An eight-bit-long field. Its format is presented in <xreftarget="tlv-flags-format"/>.</t> <t>Follow-up (Telemetry) Type - is atarget="tlv-flags-format" format="default"/>.</dd> <dt>Type:</dt><dd>A one-octet-longfield, value TBA7field. Value 7 has been allocated by IANA<xref target="iana-stamp-tlv-registry"/>.</t> <t>Length -(<xref target="iana-stamp-tlv-registry" format="default"/>).</dd> <dt>Length:</dt><dd>A two-octet-long field, set equal to the value 16octets.</t> <t>octets.</dd> <dt> SequenceNumber -Number:</dt><dd>A four-octet-long field indicating the sequence number of the last packet reflected in the sameSTAMP-testSTAMP test session. Since the Session-Reflector runs in the stateful mode (defined inSection 4.2<xreftarget="RFC8762"/>),target="RFC8762" sectionFormat="of" section="4.2"/>), it is theSession-Reflector’sSession-Reflector's Sequence Number of the previous reflected packet.</t> <t> Follow-up Timestamp -</dd> <dt> Follow-Up Timestamp:</dt><dd>An eight-octet-long field, with the format indicated by the Z flag of the Error Estimate field of the STAMP base packet, which is contained in this reflected test packet transmitted by a Session-Reflector, as described inSection 4.2.1<xreftarget="RFC8762"/>.target="RFC8762" sectionFormat="of" section="4.2.1"/>. It carries the timestamp when the reflected packet with the specified sequence number was sent.</t> <t></dd> <dt> TimestampM(ode) -M(ode):</dt><dd>A one-octet-long field that characterizes the method by which the entity that transmits a reflected STAMP packet obtained theFollow-upFollow-Up Timestamp.The value is one of those listed in<xreftarget="timestamp-method-new-tbl"/>. </t> <t> Reserved -target="timestamp-method-new-tbl" format="default"/> lists the possible values. </dd> <dt>Reserved:</dt><dd>A three-octet-long field. Its valueMUST<bcp14>MUST</bcp14> be zeroed on transmission and ignored onreceipt.</t> </list> </t>receipt.</dd> </dl> </section> <section anchor="hmac-sec"title="HMAC TLV">numbered="true" toc="default"> <name>HMAC TLV</name> <t> The STAMP authenticated mode protects the integrity of data collected in the STAMP base packet. STAMP extensions are designed to provide valuable information about the condition of a network, and protecting the integrity of that data is also essential. All authenticated STAMP base packets (perSection 4.2.2Sections <xref target="RFC8762" sectionFormat="bare" section="4.2.2"/> andSection 4.3.2<xreftarget="RFC8762"/>)target="RFC8762" sectionFormat="bare" section="4.3.2"/> of <xref target="RFC8762" format="default"/>) compatible with this specificationMUST<bcp14>MUST</bcp14> additionally authenticate theoptionoptional TLVs by including the keyed Hashed Message Authentication Code (HMAC) TLV, with the sole exception of when there is only one TLVpresent,present and it is the Extended Padding TLV. The HMAC TLVMUST<bcp14>MUST</bcp14> follow all TLVs included in a STAMP testpacket,packet except for the Extra Padding TLV. If the HMAC TLV appears in any other position in a STAMP extended test packet, then the situationMUST<bcp14>MUST</bcp14> be processed as HMAC verification failure, as defined below in thissection, further below.section. The HMAC TLVMAY<bcp14>MAY</bcp14> be used to protect the integrity of STAMP extensions in the STAMP unauthenticated mode. An implementation of STAMP extensionsMUST<bcp14>MUST</bcp14> provide controls to enable the integrity protection of STAMP extensions in the STAMP unauthenticated mode. </t> <t><!-- <figure align="left" anchor="hmac-tlv-fig" title="HMAC TLV"> <artwork><![CDATA[ 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | HMAC Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | HMAC Key ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ~ HMAC (Variable) ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ]]></artwork> --></t> <figure anchor="hmac-tlv-fig"> <name>HMAC TLV</name> <artwork name="" type="" align="left"anchor="hmac-tlv-fig" title="HMAC TLV"> <artwork><![CDATA[alt=""><![CDATA[ 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |STAMP TLV Flags|HMACType | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | HMAC | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ]]></artwork> </figure>where<t> The fields are defined as follows:<list style="symbols"> <t>STAMP</t> <dl spacing="normal"> <dt>STAMP TLVFlags - is anFlags:</dt><dd>An eight-bit-long field. Its format is presented in <xreftarget="tlv-flags-format"/>.</t> <t>HMAC Type - is atarget="tlv-flags-format" format="default"/>.</dd> <dt>Type:</dt><dd>A one-octet-longfield, value TBA8field. Value 8 has been allocated by IANA<xref target="iana-stamp-tlv-registry"/>.</t> <t>Length -(<xref target="iana-stamp-tlv-registry" format="default"/>).</dd> <dt>Length:</dt><dd>A two-octet-long field, set equal to the value 16octets.</t> <t>HMAC - is aoctets.</dd> <dt>HMAC:</dt><dd>A 16-octet-long field that carries the HMAC digest of the text of all precedingTLVs.</t> </list> </t>TLVs.</dd> </dl> <t> As defined in <xreftarget="RFC8762"/>,target="RFC8762" format="default"/>, STAMP uses HMAC-SHA-256 truncated to 128 bits(<xref target="RFC4868"/>).(see <xref target="RFC4868" format="default"/>). All considerations regarding using the key listed inSection 4.4 of<xreftarget="RFC8762"/>target="RFC8762" sectionFormat="of" section="4.4"/> are fully applicable to the use of the HMAC TLV. Key management and the mechanisms to distribute the HMAC key are outside the scope of this specification. The HMAC TLV is anticipated to track updates in the base STAMP protocol <xreftarget="RFC8762"/>,target="RFC8762" format="default"/>, including the use of more advanced cryptographic algorithms. HMAC is calculated as defined in <xreftarget="RFC2104"/>target="RFC2104" format="default"/> over text as the concatenation of the Sequence Number field of the base STAMP packet and all preceding TLVs. The digest thenMUST<bcp14>MUST</bcp14> be truncated to 128 bits and written into the HMAC field. If the HMAC TLV is present in the extended STAMP test packet, e.g., in the authenticated mode, HMACMUST<bcp14>MUST</bcp14> be verified before using any data in the included STAMP TLVs. If HMAC verification by the Session-Reflector fails, then the Session-ReflectorMUST<bcp14>MUST</bcp14> stop processing the received extended STAMP test packet. The Session-ReflectorMUST<bcp14>MUST</bcp14> copy the TLVs from the received STAMP test packet into the reflected packet. The Session-ReflectorMUST<bcp14>MUST</bcp14> set the I flag in each TLV copied over into the reflected packet to 1 before transmitting the reflected test packet. If the Session-Sender receives the extended STAMP test packet with I flag set to 1, then the Session-SenderMUST<bcp14>MUST</bcp14> stop processing TLVs in the reflected test packet. If HMAC verification by the Session-Sender fails, then the Session-SenderMUST<bcp14>MUST</bcp14> stop processing TLVs in the reflected extended STAMP packet.<!-- The Session-Sender MUST notify an operator of the failed HMAC verification. Also, both the Session-Sender and Session-Reflector MAY log the notification that HMAC verification of STAMP TLVs failed. Note that the system MUST control the rate of logging. --></t> </section> </section> <section anchor="iana-consider"title="IANA Considerations">numbered="true" toc="default"> <name>IANA Considerations</name> <t>IANA has created the following subregistries under the "Simple Two-way Active Measurement Protocol (STAMP) TLV Types" registry.</t> <section anchor="iana-stamp-tlv-registry"title="STAMPnumbered="true" toc="default"> <name>STAMP TLVRegistry">Types Subregistry</name> <t> IANAis requested to createhas created theSTAMP"STAMP TLVType registry. AllTypes" subregistry. The code points inthe range 1 through 175 inthis registryshall beare allocated according to the"IETF Review" procedure as specifiedregistration procedures <xref target="RFC8126" format="default"/> described in <xreftarget="RFC8126"/>. Code points in the range 176 through 239 in this registry shall be allocated according totarget="iana-stamp-type-tbl" format="default"/>. </t> <table anchor="iana-stamp-type-tbl" align="center"> <name>Registration Procedures for the"FirstSTAMP TLV Types Subregistry</name> <thead> <tr> <th align="left">Range</th> <th align="center">Registration Procedures</th> </tr> </thead> <tbody> <tr> <td align="left">1 - 175</td> <td align="center">IETF Review</td> </tr> <tr> <td align="left">176 - 239</td> <td align="center">First Come FirstServed" procedure as specified in <xref target="RFC8126"/>. The remaining code points areServed</td> </tr> <tr> <td align="left">240 - 251</td> <td align="center">Experimental Use</td> </tr> <tr> <td align="left">252 - 254</td> <td align="center">Private Use</td> </tr> </tbody> </table> <t>Per this document, IANA has allocatedaccording to <xref target="iana-stamp-type-tbl"/>: </t> <texttable anchor="iana-stamp-type-tbl" title="STAMP TLV Type Registry"> <ttcol align="left">Value</ttcol> <ttcol align="center">Description</ttcol> <ttcol align="left">Reference</ttcol> <c>0</c> <c>Reserved</c> <c>This document</c> <c>1- 175</c> <c>Unassigned</c> <c>This document</c> <c>176 - 239</c> <c>Unassigned</c> <c>This document</c> <c>240 - 251</c> <c>Experimental</c> <c>This document</c> <c>252 - 254</c> <c>Private Use</c> <c>This document</c> <c>255</c> <c>Reserved</c> <c>This document</c> </texttable> <t>This document definesthe followingnewvalues in theIETF Review range of the STAMP"STAMP TLVType registry:</t> <texttableTypes" subregistry: </t> <table anchor="stamp-new-type-tbl"title="STAMPalign="center"> <name>STAMP TLVTypes"> <ttcol align="left">Value</ttcol> <ttcol align="center">Description</ttcol> <ttcol align="left">Reference</ttcol> <c>TBA1</c> <c>Extra Padding</c> <c>This document</c> <c>TBA2</c> <c>Location</c> <c>This document</c> <c>TBA3</c> <c>Timestamp Information</c> <c>This document</c> <c>TBA4</c> <c>Class of Service</c> <c>This document</c> <c>TBA5</c> <c>Direct Measurement</c> <c>This document</c> <c>TBA6</c> <c>Access Report</c> <c>This document</c> <c>TBA7</c> <c>Follow-up Telemetry</c> <c>This document</c> <c>TBA8</c> <c>HMAC</c> <c>This document</c> </texttable>Types</name> <thead> <tr> <th align="left">Value</th> <th align="center">Description</th> <th align="left">Reference</th> </tr> </thead> <tbody> <tr> <td align="left">0</td> <td align="center">Reserved</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">1</td> <td align="center">Extra Padding</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">2</td> <td align="center">Location</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">3</td> <td align="center">Timestamp Information</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">4</td> <td align="center">Class of Service</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">5</td> <td align="center">Direct Measurement</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">6</td> <td align="center">Access Report</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">7</td> <td align="center">Follow-Up Telemetry</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">8</td> <td align="center">HMAC</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">255</td> <td align="center">Reserved</td> <td align="left">RFC 8972</td> </tr> </tbody> </table> </section> <section anchor="iana-tlv-flags-reg"title="STAMPnumbered="true" toc="default"> <name>STAMP TLV FlagsSub-registry">Subregistry</name> <t> IANAis requested to create the STAMP TLV Flags sub-registry as part ofhas created theSTAMP"STAMP TLVType registry.Flags" subregistry. The registration procedure is "IETF Review" <xreftarget="RFC8126"/>. Flagstarget="RFC8126" format="default"/>. The flags are 8 bits.This document definesPer this document, IANA has allocated the following bit positions in theSTAMP"STAMP TLVFlags sub-registry:Flags" subregistry. </t><texttable<table anchor="tlv-flags-new-tbl"title="STAMPalign="center"> <name>STAMP TLVFlags"> <ttcolFlags</name> <thead> <tr> <th align="center">Bitposition</ttcol> <ttcol align="center">Symbol</ttcol> <ttcol align="center">Description</ttcol> <ttcol align="center">Reference</ttcol> <c>0</c> <c>U</c> <c>Unrecognized TLV</c> <c>This document</c> <c>1</c> <c>M</c> <c>Malformed TLV</c> <c>This document</c> <c>2</c> <c>I</c> <c>Integrityposition</th> <th align="center">Symbol</th> <th align="center">Description</th> <th align="center">Reference</th> </tr> </thead> <tbody> <tr> <td align="center">0</td> <td align="center">U</td> <td align="center">Unrecognized TLV</td> <td align="center">RFC 8972</td> </tr> <tr> <td align="center">1</td> <td align="center">M</td> <td align="center">Malformed TLV</td> <td align="center">RFC 8972</td> </tr> <tr> <td align="center">2</td> <td align="center">I</td> <td align="center">Integrity checkfailed</c> <c>This document</c> </texttable>failed</td> <td align="center">RFC 8972</td> </tr> </tbody> </table> </section> <section anchor="iana-sub-tlv-registry"title="Sub-TLV Type Sub-registry">numbered="true" toc="default"> <name>STAMP Sub-TLV Types Subregistry</name> <t> IANAis requested to create the sub-TLV Type sub-registry as part ofhas created theSTAMP TLV Type registry. All"STAMP Sub-TLV Types" subregistry. The code points inthe range 1 through 175 inthis registryshall beare allocated according to the"IETF Review" procedure as specified inregistration procedures <xreftarget="RFC8126"/>. Code points in the range 176 through 239 in this registry shall be allocated according to the "First Come First Served" procedure as specifiedtarget="RFC8126" format="default"/> described in <xreftarget="RFC8126"/>. The remaining code points are allocated according to <xref target="iana-sub-type-tbl"/>:target="iana-sub-type-tbl" format="default"/>. </t><texttable<table anchor="iana-sub-type-tbl"title="Locationalign="center"> <name>Registration Procedures for the STAMP Sub-TLVType Sub-registry"> <ttcol align="left">Value</ttcol> <ttcol align="center">Description</ttcol> <ttcol align="left">Reference</ttcol> <c>0</c> <c>Reserved</c> <c>This document</c> <c>1- 175</c> <c>Unassigned</c> <c>This document</c> <c>176 - 239</c> <c>Unassigned</c> <c>This document</c> <c>240 - 251</c> <c>Experimental</c> <c>This document</c> <c>252 - 254</c> <c>Private Use</c> <c>This document</c> <c>255</c> <c>Reserved</c> <c>This document</c> </texttable> <t>This document definesTypes Subregistry</name> <thead> <tr> <th align="center">Range</th> <th align="center">Registration Procedures</th> </tr> </thead> <tbody> <tr> <td align="left">1 - 175</td> <td align="center">IETF Review</td> </tr> <tr> <td align="left">176 - 239</td> <td align="center">First Come First Served</td> </tr> <tr> <td align="left">240 - 251</td> <td align="center">Experimental Use</td> </tr> <tr> <td align="left">252 - 254</td> <td align="center">Private Use</td> </tr> </tbody> </table> <t>Per this document, IANA has allocated the followingnewvalues in theIETF Review range of the Location sub-TLV Type sub-registry:</t> <texttable"STAMP Sub-TLV Types" subregistry:</t> <table anchor="sub-tlv-type-tbl"title="STAMP sub-TLV Types"> <ttcol align="left">Value</ttcol> <ttcol align="center">Description</ttcol> <ttcolalign="center"> <name>STAMP Sub-TLV Types</name> <thead> <tr> <th align="center">Value</th> <th align="center">Description</th> <th align="left">TLVUsed</ttcol> <ttcol align="left">Reference</ttcol> <c>TBA9</c> <c>SourceUsed</th> <th align="left">Reference</th> </tr> </thead> <tbody> <tr> <td align="left">0</td> <td align="center">Reserved</td> <td></td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">1</td> <td align="center">Source MACAddress</c> <c>Location</c> <c>This document</c> <c>TBA10</c> <c>SourceAddress</td> <td align="left">Location</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">2</td> <td align="center">Source EUI-48Address</c> <c>Location</c> <c>This document</c> <c>TBA11</c> <c>SourceAddress</td> <td align="left">Location</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">3</td> <td align="center">Source EUI-64Address</c> <c>Location</c> <c>This document</c> <c>TBA12</c> <c>DestinationAddress</td> <td align="left">Location</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">4</td> <td align="center">Destination IPAddress</c> <c>Location</c> <c>This document</c> <c>TBA13</c> <c>DestinationAddress</td> <td align="left">Location</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">5</td> <td align="center">Destination IPv4Address</c> <c>Location</c> <c>This document</c> <c>TBA14</c> <c>DestinationAddress</td> <td align="left">Location</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">6</td> <td align="center">Destination IPv6Address</c> <c>Location</c> <c>This document</c> <c>TBA15</c> <c>Source IP Address</c> <c>Location</c> <c>This document</c> <c>TBA16</c> <c>Source IPv4 Address</c> <c>Location</c> <c>This document</c> <c>TBA17</c> <c>Source IPv6 Address</c> <c>Location</c> <c>This document</c> </texttable>Address</td> <td align="left">Location</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">7</td> <td align="center">Source IP Address</td> <td align="left">Location</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">8</td> <td align="center">Source IPv4 Address</td> <td align="left">Location</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">9</td> <td align="center">Source IPv6 Address</td> <td align="left">Location</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">255</td> <td align="center">Reserved</td> <td></td> <td align="left">RFC 8972</td> </tr> </tbody> </table> </section> <section anchor="iana-sync-source-reg"title="Synchronization Source Sub-registry">numbered="true" toc="default"> <name>STAMP Synchronization Sources Subregistry</name> <t> IANAis requested to createhas created the "STAMP SynchronizationSource sub-registry as part of the STAMP TLV Type registry. AllSources" subregistry. The code points inthe range 1 through 127 inthis registryshall beare allocated according to the"IETF Review" procedure as specified inregistration procedures <xreftarget="RFC8126"/>. Code points in the range 128 through 239target="RFC8126" format="default"/> described inthis registry shall be allocated according to<xref target="iana-sync-source-tbl" format="default"/>. </t> <table anchor="iana-sync-source-tbl" align="center"> <name>Registration Procedures for the"FirstSTAMP Synchronization Sources Subregistry</name> <thead> <tr> <th align="left">Range</th> <th align="center">Registration Procedures</th> </tr> </thead> <tbody> <tr> <td align="left">1 - 127</td> <td align="center">IETF Review</td> </tr> <tr> <td align="left">128 - 239</td> <td align="center">First Come FirstServed" procedure as specified in <xref target="RFC8126"/>. Remaining code points areServed</td> </tr> <tr> <td align="left">240 - 249</td> <td align="center">Experimental Use</td> </tr> <tr> <td align="left">250 - 254</td> <td align="center">Private Use</td> </tr> </tbody> </table> <t>Per this document, IANA has allocatedaccording to <xref target="iana-sync-source-tbl"/>: </t> <texttable anchor="iana-sync-source-tbl" title="Synchronization Source Sub-registry"> <ttcol align="left">Value</ttcol> <ttcol align="center">Description</ttcol> <ttcol align="left">Reference</ttcol> <c>0</c> <c>Reserved</c> <c>This document</c> <c>1- 127</c> <c>Unassigned</c> <c>This document</c> <c>128 - 239</c> <c>Unassigned</c> <c>This document</c> <c>240 - 249</c> <c>Experimental</c> <c>This document</c> <c>250 - 254</c> <c>Private Use</c> <c>This document</c> <c>255</c> <c>Reserved</c> <c>This document</c> </texttable> <t> This document definesthe followingnewvalues in the "STAMP SynchronizationSource sub-registry:</t> <texttableSources" subregistry: </t> <table anchor="ssync-source-new-tbl"title="Synchronization Sources"> <ttcol align="left">Value</ttcol> <ttcol align="center">Description</ttcol> <ttcol align="left">Reference</ttcol> <c>1</c> <c>NTP</c> <c>This document</c> <c>2</c> <c>PTP</c> <c>This document</c> <c>3</c> <c>SSU/BITS</c> <c>This document</c> <c>4</c> <c>GPS/GLONASS/LORAN-C/BDS/Galileo</c> <c>This document</c> <c>5</c> <c>Local free-running</c> <c>This document</c> </texttable>align="center"> <name>STAMP Synchronization Sources</name> <thead> <tr> <th align="left">Value</th> <th align="center">Description</th> <th align="left">Reference</th> </tr> </thead> <tbody> <tr> <td align="left">0</td> <td align="center">Reserved</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">1</td> <td align="center">NTP</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">2</td> <td align="center">PTP</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">3</td> <td align="center">SSU/BITS</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">4</td> <td align="center">GPS/GLONASS/LORAN-C/BDS/Galileo</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">5</td> <td align="center">Local free-running</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">255</td> <td align="center">Reserved</td> <td align="left">RFC 8972</td> </tr> </tbody> </table> </section> <section anchor="iana-tiemstamp-methog-reg"title="Timestamping Method Sub-registry"> <t> IANA is requested to create the Timestamping Method sub-registry as part of the STAMP TLV Type registry. All code points in the range 1 through 127 in this registry shall be allocated according to the "IETF Review" procedure as specified in <xref target="RFC8126"/>. Code points in the range 128 through 239 in this registry shall be allocated according to the "First Come First Served" procedure as specified in <xref target="RFC8126"/>. Remaining code points are allocated according to <xref target="iana-timestamp-method-tbl"/>: </t> <texttable anchor="iana-timestamp-method-tbl" title="Timestamping Method Sub-registry"> <ttcol align="left">Value</ttcol> <ttcol align="center">Description</ttcol> <ttcol align="left">Reference</ttcol> <c>0</c> <c>Reserved</c> <c>This document</c> <c>1- 127</c> <c>Unassigned</c> <c>This document</c> <c>128 - 239</c> <c>Unassigned</c> <c>This document</c> <c>240 - 249</c> <c>Experimental</c> <c>This document</c> <c>250 - 254</c> <c>Private Use</c> <c>This document</c> <c>255</c> <c>Reserved</c> <c>This document</c> </texttable> <t> This document defines the following new values in thenumbered="true" toc="default"> <name>STAMP Timestamping Methodssub-registry:</t> <texttable anchor="timestamp-method-new-tbl" title="Timestamping Methods"> <ttcol align="left">Value</ttcol> <ttcol align="center">Description</ttcol> <ttcol align="left">Reference</ttcol> <c>1</c> <c>HW Assist</c> <c>This document</c> <c>2</c> <c>SW local</c> <c>This document</c> <c>3</c> <c>Control plane</c> <c>This document</c> </texttable> </section> <!-- <section anchor="iana-access-report-reg" title="Access ID Sub-registry">Subregistry</name> <t> IANAis requested to create Access ID sub-registry as part of STAMP TLV Type registry. All code points in the range 1 through 127 in this registry shall be allocated according tohas created the"IETF Review" procedure as specified in <xref target="RFC8126"/>. Code"STAMP Timestamping Methods" subregistry. The code points inthe range 128 through 239 inthis registryshall beare allocated according to the"First Come First Served" procedure as specified inregistration procedures <xreftarget="RFC8126"/>. Remaining code points are allocated according totarget="RFC8126" format="default"/> described in <xreftarget="iana-access-id-tbl"/>:target="iana-timestamp-method-tbl" format="default"/>. </t><texttable anchor="iana-access-id-tbl" title="Access ID Sub-registry"> <ttcol align="left">Value</ttcol> <ttcol align="center">Description</ttcol> <ttcol align="left">Reference</ttcol> <c>0</c> <c>Reserved</c> <c>This document</c> <c>1- 127</c> <c>Unassigned</c> <c>IETF Review</c> <c>128 - 239</c> <c>Unassigned</c> <c>First<table anchor="iana-timestamp-method-tbl" align="center"> <name>Registration Procedures for the STAMP Timestamping Methods Subregistry</name> <thead> <tr> <th align="left">Range</th> <th align="center">Registration Procedures</th> </tr> </thead> <tbody> <tr> <td align="left">1 - 127</td> <td align="center">IETF Review</td> </tr> <tr> <td align="left">128 - 239</td> <td align="center">First Come FirstServed</c> <c>240 - 249</c> <c>Experimental</c> <c>This document</c> <c>250 - 254</c> <c>Private Use</c> <c>This document</c> <c>255</c> <c>Reserved</c> <c>This document</c> </texttable> <t> This document definesServed</td> </tr> <tr> <td align="left">240 - 249</td> <td align="center">Experimental Use</td> </tr> <tr> <td align="left">250 - 254</td> <td align="center">Private Use</td> </tr> </tbody> </table> <t>Per this document, IANA has allocated the followingnewvalues in theAccess ID sub-registry:</t> <texttable anchor="access-id-new-tbl" title="Access IDs"> <ttcol align="left">Value</ttcol> <ttcol align="center">Description</ttcol> <ttcol align="left">Reference</ttcol> <c>1</c> <c>3GPP </c> <c>This document</c> <c>2</c> <c>Non-3GPP</c> <c>This document</c> </texttable>"STAMP Timestamping Methods" subregistry:</t> <table anchor="timestamp-method-new-tbl" align="center"> <name>STAMP Timestamping Methods</name> <thead> <tr> <th align="left">Value</th> <th align="center">Description</th> <th align="left">Reference</th> </tr> </thead> <tbody> <tr> <td align="left">0</td> <td align="center">Reserved</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">1</td> <td align="center">HW Assist</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">2</td> <td align="center">SW Local</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">3</td> <td align="center">Control Plane</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">255</td> <td align="center">Reserved</td> <td align="left">RFC 8972</td> </tr> </tbody> </table> </section>--><section anchor="iana-return-code-reg"title="Return Code Sub-registry">numbered="true" toc="default"> <name>STAMP Return Codes Subregistry</name> <t> IANAis requested to createhas created the "STAMP ReturnCode sub-registry as part of the STAMP TLV Type registry. AllCodes" subregistry. The code points inthe range 1 through 127 inthis registryshall beare allocated according to the"IETF Review" procedure as specified inregistration procedures <xreftarget="RFC8126"/>. Code points in the range 128 through 239target="RFC8126" format="default"/> described inthis registry shall be allocated according to<xref target="iana-return-code-tbl" format="default"/>. </t> <table anchor="iana-return-code-tbl" align="center"> <name>Registration Procedures for the"FirstSTAMP Return Codes Subregistry</name> <thead> <tr> <th align="left">Range</th> <th align="center">Registration Procedures</th> </tr> </thead> <tbody> <tr> <td align="left">1 - 127</td> <td align="center">IETF Review</td> </tr> <tr> <td align="left">128 - 239</td> <td align="center">First Come FirstServed" procedure as specified in <xref target="RFC8126"/>. Remaining code points areServed</td> </tr> <tr> <td align="left">240 - 249</td> <td align="center">Experimental Use</td> </tr> <tr> <td align="left">250 - 254</td> <td align="center">Private Use</td> </tr> </tbody> </table> <t>Per this document, IANA has allocatedaccording to <xref target="iana-return-code-tbl"/>: </t> <texttable anchor="iana-return-code-tbl" title="Return Code Sub-registry"> <ttcol align="left">Value</ttcol> <ttcol align="center">Description</ttcol> <ttcol align="left">Reference</ttcol> <c>0</c> <c>Reserved</c> <c>This document</c> <c>1- 127</c> <c>Unassigned</c> <c>This document</c> <c>128 - 239</c> <c>Unassigned</c> <c>This document</c> <c>240 - 249</c> <c>Experimental</c> <c>This document</c> <c>250 - 254</c> <c>Private Use</c> <c>This document</c> <c>255</c> <c>Reserved</c> <c>This document</c> </texttable> <t> This document definesthe followingnewvalues in the "STAMP ReturnCode sub-registry:</t> <texttableCodes" subregistry:</t> <table anchor="return-code-new-tbl"title="Return Codes"> <ttcol align="left">Value</ttcol> <ttcol align="center">Description</ttcol> <ttcol align="left">Reference</ttcol> <c>1</c> <c>Network available</c> <c>This document</c> <c>2</c> <c>Network unavailable</c> <c>This document</c> </texttable>align="center"> <name>STAMP Return Codes</name> <thead> <tr> <th align="left">Value</th> <th align="center">Description</th> <th align="left">Reference</th> </tr> </thead> <tbody> <tr> <td align="left">0</td> <td align="center">Reserved</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">1</td> <td align="center">Network available</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">2</td> <td align="center">Network unavailable</td> <td align="left">RFC 8972</td> </tr> <tr> <td align="left">255</td> <td align="center">Reserved</td> <td align="left">RFC 8972</td> </tr> </tbody> </table> </section> </section> <section anchor="security"title="Security Considerations">numbered="true" toc="default"> <name>Security Considerations</name> <t> This document defines extensions to STAMP <xreftarget="RFC8762"/>target="RFC8762" format="default"/> and inherits all the security considerations applicable to the base protocol. Additionally, the HMAC TLV is defined in this document. Though the HMAC TLV protects the integrity of STAMPextensions;extensions, it does not protect against a replay attack. The use of the HMAC TLV is discussed in detail in <xreftarget="hmac-sec"/>.target="hmac-sec" format="default"/>. </t> <t> To protect against a malformedTLVTLV, an implementation of a Session-Sender and Session-ReflectorMUST: <list style="symbols"> <t>check<bcp14>MUST</bcp14>: </t> <ul spacing="normal"> <li>check the setting of the Mflag;</t> <t>validateflag and</li> <li>validate the Length fieldvalue.</t> </list> </t>value.</li> </ul> <t> As this specificationdefineddefines the mechanism to test DSCP mapping, this document inherits all the security considerations discussed in <xreftarget="RFC2474"/>.target="RFC2474" format="default"/>. Monitoring and optional control of DSCP using the CoS TLV may be used across the Internet so that the Session-Sender and the Session-Reflector are located in domains that use different CoS profiles. Thus, it is essential that an operatorverifiesverify the set of CoS values thatareis used in the Session-Reflector's domain. Also, an implementation of a Session-ReflectorSHOULD<bcp14>SHOULD</bcp14> support a local policy to confirm whether the value sent by the Session-Sender can be used as the value of the DSCP field. <xreftarget="cos-info-section"/>target="cos-info-section" format="default"/> defines the use of that local policy. </t> </section><section title="Acknowledgments"> <t> Authors much appreciate the thorough review and thoughtful comments received from Tianran Zhou, Rakesh Gandhi, Yuezhong Song and Yali Wang. The authors express their gratitude to Al Morton for his comments and the most valuable suggestions. The authors greatly appreciate comments and thoughtful suggestions received from Martin Duke. </t> </section> <section title="Contributors"> <t> The following people contributed text to this document: <figure align="left"> <artwork><![CDATA[ Guo Jun ZTE Corporation 68# Zijinghua Road Nanjing, Jiangsu 210012 P.R.China Phone: +86 18105183663 Email: guo.jun2@zte.com.cn ]]></artwork> </figure> </t> </section></middle> <back><references title="Normative References"> <?rfc include="reference.RFC.2119"?> <?rfc include="reference.RFC.8174"?> <?rfc include="reference.RFC.8126"?> <?rfc include="reference.RFC.8762"?> <?rfc include="reference.RFC.2104"?><displayreference target="I-D.irtf-pearg-numeric-ids-generation" to="NUM-IDS-GEN"/> <references> <name>References</name> <references> <name>Normative References</name> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8762.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2104.xml"/> </references><references title="Informative References"> <?rfc include="reference.RFC.5905"?> <?rfc include="reference.RFC.4868"?> <?rfc include="reference.RFC.2474"?> <?rfc include="reference.RFC.5357"?> <?rfc include="reference.I-D.gont-numeric-ids-generation"?><references> <name>Informative References</name> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5905.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4868.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2474.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5357.xml"/> <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.irtf-pearg-numeric-ids-generation-06.xml"/> <reference anchor="IEEE.1588.2008"> <front><title>Standard<title>IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems</title> <author> <organization/> </author> <datemonth="March"month="July" year="2008"/> </front> <seriesInfoname="IEEE" value="Standard 1588"/>name="IEEE Std." value="1588-2008"/> <seriesInfo name="DOI" value="10.1109/IEEESTD.2008.4579760"/> </reference> <reference anchor="TS23501"> <front> <title>Technical Specification Group Services and System Aspects; System Architecture for the 5GSystem;System (5GS); Stage 2 (Release 16)</title> <author><organization>3GPP (3rd Generation Partnership Project)</organization><organization>3GPP</organization> </author> <date year="2019"/> </front> <seriesInfoname="3GPP" value="TS23501"/>name="3GPP TS" value="23.501"/> </reference> <reference anchor="GPS"> <front> <title>Global Positioning System (GPS) Standard Positioning Service (SPS) Performance Standard</title> <author> <organization/> </author> <date month="April" year="2020"/> </front> <seriesInfo name="GPS SPS" value="5th Edition"/> </reference> </references> </references> <section numbered="false" toc="default"> <name>Acknowledgments</name> <t> The authors very much appreciate the thorough review and thoughtful comments received from <contact fullname="Tianran Zhou"/>, <contact fullname="Rakesh Gandhi"/>, <contact fullname="Yuezhong Song"/>, and <contact fullname="Yali Wang"/>. The authors express their gratitude to <contact fullname="Al Morton"/> for his comments and valuable suggestions. The authors greatly appreciate the comments and thoughtful suggestions received from <contact fullname="Martin Duke"/>. </t> </section> <section numbered="false" toc="default"> <name>Contributors</name> <t> The following individual contributed text to this document: </t> <contact fullname="Guo Jun"> <organization>ZTE Corporation</organization> <address> <postal> <street>68# Zijinghua Road</street> <city>Nanjing</city> <region>Jiangsu</region> <code>210012</code> <country>China</country> </postal> <phone>+86 18105183663</phone> <email>guo.jun2@zte.com.cn</email> </address> </contact> </section> </back> </rfc>