Simple Two-Way Active Measurement Protocol (STAMP) Extensions for Segment Routing Networks
Extracted elements (29)
The Destination Node Address TLV is needed because in ECMP environments, STAMP test packets may use non-routable destination addresses (e.g., 127/8 for IPv4 or ::1/128 for IPv6) to influence path selection, causing packets to potentially reach an unintended node. The TLV carries the true intended Session-Reflector address to detect this error condition.
The Return Path TLV avoids the need for signaling and maintaining dynamic SR network state for STAMP sessions on the Session-Reflector, particularly for Stateless Session-Reflectors operating in promiscuous mode that require explicit indication of how to return the test packet (e.g., in ECMP environments).
This document introduces no additional interoperability considerations with TWAMP Light beyond those in RFC 8762 Section 4.6. If STAMP extensions defined here are used by a STAMP Session-Sender, a TWAMP Light Session-Reflector will treat them as the Packet Padding field.
A Return Path TLV MUST NOT contain both a Control Code Sub-TLV and a Return Address or Return Path Segment List Sub-TLV in a Session-Sender test packet.
A Return Path TLV MUST NOT contain more than one Control Code Sub-TLV, Return Address Sub-TLV, or Return Path Segment List Sub-TLV in a Session-Sender test packet.
A Session-Reflector that recognizes the Destination Node Address TLV MUST set the U flag to 1 if it determined it is not the intended destination; otherwise MUST set the U flag to 0.
A Session-Reflector that recognizes the Return Path TLV MUST set the U flag to 1 if it cannot use the Return Path to transmit the reply; otherwise MUST set the U flag to 0.
A Session-Reflector that supports the Return Path TLV MUST reply using the Return Path received in the Session-Sender test packet if no error was encountered while processing the TLV.
A Session-Sender MUST NOT insert more than one Return Path TLV in the STAMP test packet. A Session-Reflector that supports this TLV MUST only process the first Return Path TLV and ignore others if present.
If the Destination Node Address TLV is sent, the SSID MUST also be sent.
If the received Destination Node Address is one of the addresses of the Session-Reflector, it SHOULD be used as the Source Address in the IP header of the reply test packet.
The Session-Sender MUST only insert one Return Path Segment List Sub-TLV in the test packet, and the Segment List MUST contain at least one Segment. The Session-Reflector MUST only process the first Return Path Segment List Sub-TLV and ignore others.
Return Address Sub-TLVs (Type=2) carry a Return IPv4 Address (Length=4) or Return IPv6 Address (Length=16) to which the Session-Reflector sends the reply instead of the Source Address in the Session-Sender test packet.
Return Path Segment List Sub-TLVs carry either an SR-MPLS Label Stack (Type=3) or SRv6 Segment List (Type=4) specifying the return path. Segments MUST be in network order and the list MUST contain at least one segment.
The Destination Node Address TLV (Type=9) carries the IPv4 or IPv6 address of the intended Session-Reflector node. For IPv4, Length=4 octets; for IPv6, Length=16 octets. It is used when the STAMP packet Destination Address is not a routable address of the Session-Reflector.
The Return Path Control Code Sub-TLV (Type=1, Length=4) contains a 32-bit Control Code Flags field. Bit 31 (Reply Request Flag) set to 0x0 means no reply requested; set to 0x1 means reply requested on the same incoming link.
The Return Path TLV (Type=10) is carried in a Session-Sender test packet to request the Session-Reflector to transmit the reply test packet on a specific return path. It contains one or more Sub-TLVs encoding the Return Path Control Code, Return Address, or Return Path Segment List.
When Control Code Reply Request flag is 0x0, the Session-Reflector does not transmit a reply and terminates the test packet; only one-way measurement applies. When set to 0x1, the Session-Reflector transmits the reply on the same incoming link in reverse direction.
IANA allocated Type=9 (Destination Node IPv4 or IPv6 Address) and Type=10 (Return Path) in the 'STAMP TLV Types' registry from the IETF Review range, as defined in RFC 8972.
IANA created the 'Return Path Control Code Flags' registry with ranges: bits 31-12 (IETF Review), bits 11-8 (First Come First Served), bits 7-4 (Experimental Use), bits 3-0 (Private Use). Bit 31 allocated as the Reply Request flag.
IANA created the 'Return Path Sub-TLV Types' registry with ranges: 1-175 (IETF Review), 176-239 (First Come First Served), 240-251 (Experimental Use), 252-254 (Private Use). Initial allocations: 0=Reserved, 1=Return Path Control Code, 2=Return IPv4 or IPv6 Address, 3=SR-MPLS Label Stack, 4=SRv6 Segment List, 255=Reserved.
STAMP uses a well-known UDP port that could be targeted for denial of service (DoS) or used to aid on-path attacks. Security measures from RFC 8545 Section 6 apply. Timestamp validation (e.g., T2 is later than T1) can mitigate attacks, and minimal state limits disruption to a single test cycle.
The STAMP extensions are intended for deployment within a single network administrative domain. The operator is assumed to have verified the integrity of the Return Path and identity of the far-end Session-Reflector, and authenticated mode with HMAC message integrity protection (per RFC 8762 Section 4.4) applies.
The STAMP extensions may be used for potential address spoofing: a Session-Sender may specify a Return Path IP Address different from the Session-Sender address. The Session-Reflector MAY drop the test packet when it cannot determine whether the Return Path IP Address is local to the Session-Sender, and operators may provision the Return Path IP Address in an access control list.
The Control Code Sub-TLV has STAMP TLV Flags (1 octet), Type=1 (1 octet), Length=4 (2 octets), and a 32-bit Control Code Flags field with the Reply Request flag at bit 31 (least significant bit).
The Destination Node Address TLV has STAMP TLV Flags (1 octet), Type=9 (1 octet), Length (2 octets), and an Address field of 4 octets (IPv4) or 16 octets (IPv6).
The Return Path TLV has STAMP TLV Flags (1 octet), Type=10 (1 octet), Length (2 octets equal to the length of Return Path Sub-TLVs in octets), followed by the Return Path Sub-TLVs.
The SR-MPLS Label Stack Sub-TLV (Type=3) contains a list of 32-bit LSEs each with a 20-bit label, 8-bit TTL, 3-bit TC, and 1-bit S (end-of-stack) field. Sub-TLV length modulo 4 MUST be 0.
The SRv6 Segment List Sub-TLV (Type=4) contains a list of 128-bit IPv6 addresses representing SRv6 SIDs. Sub-TLV length modulo 16 MUST be 0.