| Internet-Draft | STAMP in MPLS Networks | September 2026 |
| Gandhi, et al. | Expires 6 March 2027 | [Page] |
This document specifies encapsulations for the Simple Two-Way Active Measurement Protocol (STAMP), defined in RFC 8762, and its optional extensions, defined in RFC 8972, in MPLS networks. It specifies the encapsulation of STAMP test packets for point-to-point Label Switched Paths (LSPs) and point-to-point single-segment Pseudowires (PWs), with or without an IP/UDP header, so that the test packets experience the same forwarding and Equal-Cost Multi-Path (ECMP) behavior as the data traffic being measured. In addition, two new MPLS Generic Associated Channel (G-ACh) types are defined.¶
This document updates RFC 8762 for TTL and IPv6 Hop Limit processing and RFC 8972 for the STAMP Session Identifier for LSPs and PWs.¶
This document specifies the requirements for IPv6 STAMP in unauthenticated mode using UDP zero-checksum that deviates from the integrity requirement specified in RFC 6936.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 6 March 2027.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
The Simple Two-Way Active Measurement Protocol (STAMP) provides capabilities for measuring various metrics in IP networks [RFC8762] without the use of a control channel to pre-signal session parameters. [RFC8972] defines optional extensions to STAMP.¶
Label Switched Paths (LSPs) are used in MPLS networks for various services, including forwarding Layer 2 and Layer 3 data packets. LSPs can be point-to-point or point-to-multipoint. STAMP encapsulations for point-to-multipoint LSPs are outside the scope of this document. This document specifies STAMP encapsulations for point-to-point LSPs.¶
Pseudowires (PWs) are used in MPLS networks for various services, including forwarding Layer 2 and Layer 3 data packets [RFC6658]. PWs are bidirectional in nature. PWs may use the Control Word (CW) as defined in Section 3 of [RFC4385]. This document covers STAMP encapsulations for point-to-point PWs; point-to-multipoint PWs are outside the scope of this document. PWs can be single-segment PWs or multi-segment PWs. This document specifies STAMP encapsulations for single-segment PWs; multi-segment PWs are outside the scope of this document.¶
MPLS Transport Profile (MPLS-TP) [RFC5960] is designed to use the MPLS data plane without any changes. Therefore, when STAMP is specified over the MPLS data plane, it is equally applicable to MPLS-TP networks. As specified in Section 2 of [RFC5921], "OAM and protection mechanisms, and forwarding of data packets, must be able to operate without IP forwarding support." As described in Section 3.4.5 of [RFC5921], MPLS-TP LSPs and PWs may carry traffic from the attachment circuits that may be heterogeneous (e.g., any combination of SDH, PPP, Frame Relay, etc.). "¶
A Generic Associated Channel (G-ACh), as defined in [RFC5586], provides a mechanism for transporting Operations, Administration, and Maintenance (OAM) and other control messages over the MPLS data plane. The G-ACh types identify the various OAM messages that are transported over the channel. Virtual Circuit Connectivity Verification (VCCV) is used as a control channel for PWs as specified in [RFC5085]. A G-ACh label (GAL) can be used as a VCCV Control Channel as specified in [RFC7708].¶
This document specifies the encapsulation and termination procedures for STAMP and its optional extensions for LSPs and PWs in MPLS networks. This document also specifies the encapsulation and termination procedures for STAMP test packets with or without the CW and/or an IP/UDP header for LSPs and PWs.¶
When STAMP is used for MPLS and MPLS-TP on both LSPs and PWs, there are unique aspects, such as test packet encapsulation, test packet termination, and ECMP behavior, that need to be considered with respect to the use of the CW, and these aspects are addressed in this document.¶
This document uses the mechanisms defined in [RFC5085] and [RFC7708] to terminate STAMP test packets on the Session-Sender and the Session-Reflector for control-plane processing for both LSPs and PWs.¶
The mechanism applied to terminate the STAMP test packet for an LSP or a PW is locally provisioned on both ends of the STAMP session for the LSP or PW.¶
The signaling extensions for the VCCV Control Channel for STAMP on PWs are outside the scope of this document.¶
The VCCV Control Channel signaling has only been specified for PWs, not for LSPs; therefore, local provisioning of the mechanism for an LSP is the only viable option at present.¶
This document uses the existing G-ACh types "Associated Channel carries an IPv4 packet" and "Associated Channel carries an IPv6 packet" when STAMP test packets are transmitted with an IP/UDP header for LSPs and PWs. In addition, this document defines two new G-ACh types when STAMP test packets are transmitted without an IP/UDP header.¶
Additional considerations for encapsulating STAMP for performance measurement of Segment Routing LSPs over the MPLS data plane are described in [I-D.ietf-spring-stamp-srpm-mpls], and are outside the scope of this document.¶
This document updates [RFC8762] for TTL and IPv6 Hop Limit processing and [RFC8972] for the STAMP Session Identifier for LSPs and PWs.¶
This document specifies the requirements for IPv6 STAMP in unauthenticated mode using UDP zero-checksum that deviates from the integrity requirement specified in [RFC6936].¶
STAMP test packets need to be transmitted with the same label stack as the LSP and PW data traffic to ensure proper validation of the underlay path taken by the actual data traffic. In addition, STAMP test packets need to consider the underlay path taken by the LSP and PW data traffic in the network. PW data traffic may be encapsulated with the CW, as defined in Section 3 of [RFC4385], and an IP header. As such, STAMP test packets need to be transmitted over these PWs using a G-ACh and an IP/UDP header.¶
When a STAMP test packet is transmitted to the target IP address of a STAMP Session-Reflector, it is encapsulated for an MPLS LSP by the data plane based on the reachability of that IP address over the LSP. Hence, STAMP test packets are treated the same as the data traffic forwarded over the LSP by the transit nodes along the path.¶
Private Line Emulation (PLE) [RFC9801] traffic is sent over a Packet Switched Network (PSN) as a Virtual Private Wire Service (VPWS) using PWs. The data packets are encapsulated with the PLE CW, but they do not carry any IP header. As such, STAMP test packets need to be transmitted using the same label stack, including the VPWS PW label as the PLE traffic [RFC9801], and encapsulated using a G-ACh but without an IP/UDP header. This allows STAMP test packets to experience the same forwarding behavior, follow the same underlay path as the PLE traffic.¶
The G-ACh provides support for the OAM control channel associated with MPLS-TP [RFC5960] LSPs and PWs. The OAM control channel for MPLS-TP needs to be extended to encapsulate STAMP test packets using the G-ACh types. This extension is similar to the G-ACh types defined for delay and loss measurement packets in [RFC6374].¶
The encapsulation requirements for STAMP test packets transmitted on the LSPs and PWs in MPLS networks can be summarized as follows:¶
The G-ACh needs to support STAMP test packets with an IP/UDP header.¶
The G-ACh needs to support STAMP test packets without an IP/UDP header.¶
The G-ACh types need to support demultiplexing of the control channel for STAMP test packets.¶
Session-Sender test packets need to follow the underlay path taken by the data traffic that uses the CW.¶
Session-Sender test packets need to follow the same underlay path as the data traffic that uses the CW and an Entropy Label defined in [RFC6790].¶
Session-Sender test packets need to follow the same underlay path as the data traffic that uses the CW but does not use an Entropy Label defined in [RFC6790].¶
Session-Reflector test packets can follow the reverse underlay path taken by Session-Sender test packets.¶
Session-Reflector test packets can follow the same reverse underlay path as the Session-Sender test packets.¶
Examples of MPLS data traffic use cases for STAMP test packets with IP/UDP headers are:¶
MPLS PW Data Traffic (with CW and IP header)¶
MPLS-TP PW Data Traffic (with CW and IP header)¶
MPLS LSP Data Traffic (with IP header)¶
Examples of MPLS data traffic use cases for STAMP test packets without IP/UDP headers are:¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
| Abbreviation | Meaning | Reference |
|---|---|---|
| CE | Customer Edge | [RFC4026] |
| CW | Control Word | [RFC4385] |
| ECMP | Equal-Cost Multi-Path | [RFC6790] |
| G-ACh | Generic Associated Channel | [RFC5586] |
| GAL | Generic Associated Channel Label | [RFC5586] |
| HMAC | Hashed Message Authentication Code | [RFC8762] |
| HL | Hop Limit | [RFC8200] |
| L2VPN | Layer 2 Virtual Private Network | [RFC4026] |
| L3VPN | Layer 3 Virtual Private Network | [RFC4026] |
| LSP | Label Switched Path | [RFC3032] |
| MPLS | Multiprotocol Label Switching | [RFC3032] |
| MPLS-TP | MPLS Transport Profile | [RFC5960] |
| OAM | Operations, Administration, and Maintenance | [RFC5586] |
| PE | Provider Edge | [RFC4026] |
| PFN | Post-Stack First Nibble | [RFC9790] |
| PLE | Private Line Emulation | [RFC9801] |
| PSN | Packet Switched Network | [RFC9801] |
| RA | Router Alert | [RFC5085] |
| PW | Pseudowire | [RFC6658] |
| S bit | Bottom of Stack bit | [RFC3032] |
| SSID | STAMP Session Identifier | [RFC8972] |
| STAMP | Simple Two-Way Active Measurement Protocol | [RFC8762] |
| TC | Traffic Class | [RFC5462] |
| TDM | Time-Division Multiplexing | [RFC5087] |
| TTL | Time to Live | [RFC3032] |
| VCCV | Virtual Circuit Connectivity Verification | [RFC5085] |
| VPWS | Virtual Private Wire Service | [RFC9801] |
In the STAMP reference topology shown in Figure 1, there is an LSP or a PW to transport data between Provider Edge (PE) endpoints S1 and R1. The STAMP Session-Sender on PE node S1 initiates a Session-Sender test packet, and the STAMP Session-Reflector on PE node R1 transmits a reply Session-Reflector test packet. The Session-Reflector test packet may be transmitted to the STAMP Session-Sender node S1 on the same path (that is, the same set of links and nodes) in the reverse direction of the path taken toward the Session-Reflector node R1.¶
|<-------- Pseudowire ------->|
|<-------- LSP -------------->|
| |
| T1 T2 |
| / \ |
+-------+ Test Packet +-------+
| | - - - - - - - - - ->| |
| S1 |=====================| R1 |
| |<- - - - - - - - - - | |
+-------+ Reply Test Packet +-------+
\ /
T4 T3
STAMP Session-Sender STAMP Session-Reflector
Provider Edge Endpoint Provider Edge Endpoint
T1 is a transmit timestamp, and T4 is a receive timestamp added by node S1. T2 is a receive timestamp, and T3 is a transmit timestamp added by node R1.¶
The STAMP test packets are used for one-way and round-trip performance metrics, such as delay, delay variation, and packet loss [RFC8972].¶
The STAMP Session-Sender and Session-Reflector test packet payloads defined in [RFC8972] are encapsulated and transmitted over the LSPs and PWs in MPLS networks.¶
The STAMP Session Identifier (SSID) defined in [RFC8972] is used to identify the STAMP session and MUST be set to a nonzero value. The SSID MUST be carried in STAMP test packets in both directions so that the STAMP sessions for LSPs and PWs can be identified.¶
The IP/UDP header specified in this section is applicable to all STAMP sessions using an IP/UDP header and is not limited to STAMP sessions for LSPs and PWs.¶
The STAMP Session-Sender and Session-Reflector addresses for a STAMP session are provisioned on both ends of the LSP or PW.¶
The base STAMP test packet payloads can be transported using a UDP header and destination UDP port number 862 as the default destination port, as specified in Section 4.1 of [RFC8762].¶
The source port number is chosen as follows:¶
STAMP test packet payloads are encapsulated over a G-ACh in two formats: Format-1 (with an IP/UDP header) and Format-2 (without an IP/UDP header).¶
Format-1 (with IP/UDP Header):¶
Format-2 (without IP/UDP Header):¶
This document updates the procedures defined in [RFC8762] and [RFC8972] for Format-2 STAMP test packets because they do not carry IP/UDP headers.¶
Because no IP/UDP header is carried by those STAMP test packets, the IPv4, IPv6, and UDP header processing specified in [RFC8762] and [RFC8972] is not applicable and MUST be skipped. Examples include:¶
Section 3 of [RFC8972] defines the STAMP session identifier that is also applicable to [RFC8762] as follows:¶
This document updates the definition of the STAMP session identifier in Section 3 of [RFC8972] for LSPs and PWs for the following reasons:¶
STAMP sessions for LSPs and PWs on the Session-Sender and the Session-Reflector MUST be identified as follows. STAMP test packets that cannot identify the associated STAMP sessions MUST be discarded as specified in Section 3 of [RFC8972].¶
Format-1 (with IP/UDP Header):¶
Format-2 (without IP/UDP Header):¶
The following encapsulations are defined for STAMP test packets for the data traffic being measured for LSPs and PWs:¶
Use Case 1: STAMP for LSP data traffic with an IP header:¶
Use Case 2: STAMP for LSP data traffic with an IP header and the CW:¶
Use Case 3: STAMP for PW data traffic with the CW:¶
The STAMP test packet payloads are encapsulated with an MPLS header using the same label stack as the PW, including the PW label, and a G-ACh header.¶
Additional IP-version considerations:¶
When using an IP header, the IP version (IPv4 or IPv6) in the STAMP test packets MUST match the IP version of the data traffic carried by the LSPs and PWs being measured. When an LSP carries both IPv4 and IPv6 data traffic, the IP version used in the STAMP test packet MUST match the IP version of the specific data traffic flow being measured.¶
The OAM Control Channel traffic between two PE endpoints is not forwarded beyond the PE endpoints toward Customer Edge (CE) devices; instead, the OAM messages are intercepted at the PE endpoints for exception processing in the control plane.¶
[RFC5085] and [RFC7708] define mechanisms for the Control Channel to terminate OAM messages for PWs. These mechanisms are applied to STAMP test packets to terminate them on the Session-Reflector and the Session-Sender. The ECMP considerations for these mechanisms are specified in Section 7.1.¶
Type 1: "PWE3 Control Word with 0001b as first nibble (PW-ACH)", defined in Section 5.1.1 of [RFC5085] MUST be added when measuring PWs with the CW.¶
Type 2: "MPLS Router Alert Label" defined in Section 5.1.2 of [RFC5085] allows the termination of OAM messages on the remote PE endpoint nodes by adding the Router Alert (RA) Label [RFC3032] immediately above the PW label.¶
Type 3: "MPLS PW Label with TTL == 1" defined in Section 5.1.3 of [RFC5085] allows the termination of OAM messages on the remote PE endpoint nodes by forcing them to be terminated on the remote PE endpoints.¶
Type 4: "GAL" defined in [RFC7708] allows the termination of OAM messages on the remote PE endpoint nodes by adding the GAL at the bottom of the label stack.¶
As specified in Section 3 of [RFC7708], when the PW CW is not used, the Type 4 MAY be used.¶
As specified in Section 6 of [RFC7708], Type 1 and Type 4 are mutually exclusive for PWs.¶
As specified in Section 4.2 of [RFC5586], the GAL MUST NOT be used with PWs in MPLS-TP networks. Therefore, the GAL encapsulation for STAMP does not apply to MPLS-TP PWs.¶
In this document, the procedure specified to terminate the STAMP test packets transmitted on PWs on the Session-Reflector and the Session-Sender is applied to terminate STAMP test packets transmitted on MPLS LSPs and MPLS-TP LSPs.¶
The Control Channel types defined in [RFC5085] and [RFC7708] are applied to terminate STAMP test packets as shown in Table 2:¶
| Control Channel Type | Control Channel Name | STAMP Header Format | G-ACh Type |
|---|---|---|---|
| Type 1 ([RFC5085]) | PWE3 Control Word with 0001b as first nibble (PW-ACH) | Format-1 (IP/UDP Headers) | Associated Channel carries an IPv4 packet (0x0021) and Associated Channel carries an IPv6 packet (0x0057) |
| Type 1 ([RFC5085]) | PWE3 Control Word with 0001b as first nibble (PW-ACH) | Format-2 (No IP/UDP Headers) | STAMP G-ACh (TBA1 and TBA2) |
| Type 2 ([RFC5085]) | MPLS Router Alert Label | Format-1 (IP/UDP Headers) | Associated Channel carries an IPv4 packet (0x0021) and Associated Channel carries an IPv6 packet (0x0057) |
| Type 2 ([RFC5085]) | MPLS Router Alert Label | Format-2 (No IP/UDP Headers) | STAMP G-ACh (TBA1 and TBA2) |
| Type 3 ([RFC5085]) | MPLS PW Label with TTL == 1 | Format-1 (IP/UDP Headers) | Associated Channel carries an IPv4 packet (0x0021) and Associated Channel carries an IPv6 packet (0x0057) |
| Type 3 ([RFC5085]) | MPLS PW Label with TTL == 1 | Format-2 (No IP/UDP Headers) | STAMP G-ACh (TBA1 and TBA2) |
| Type 4 ([RFC7708]) | GAL | Format-1 (IP/UDP Headers) | Associated Channel carries an IPv4 packet (0x0021) and Associated Channel carries an IPv6 packet (0x0057) |
| Type 4 ([RFC7708]) | GAL | Format-2 (No IP/UDP Headers) | STAMP G-ACh (TBA1 and TBA2) |
The TTL and IPv6 Hop Limit processing for the Session-Reflector is specified in Section 4.3 of [RFC8762] as follows:¶
Both the Session-Sender and the Session-Reflector MUST NOT discard the received Session-Sender STAMP test packets when the TTL or IPv6 Hop Limit is not 255.¶
This document updates the TTL and IPv6 Hop Limit processing specified in [RFC8762] for received Session-Sender STAMP test packets as follows:¶
The following rules apply to the TTL and IPv6 Hop Limit fields in the STAMP test packets transmitted by both the Session-Sender and the Session-Reflector:¶
The UDP checksum handling specified in this section is applicable to all STAMP sessions using IPv4/UDP and IPv6/UDP and is not limited to STAMP sessions for LSPs and PWs.¶
As specified in [RFC8085], the UDP checksum provides a statistical guarantee that the payload was not corrupted in transit, truncated, or padded.¶
Following example limitations related to STAMP require exceptions to enable UDP zero-checksum for IPv4 and IPv6.¶
When the local processor cannot recompute the UDP checksum after adding the timestamp in the STAMP test packet.¶
When the local processor cannot add a checksum complement [RFC7820] after adding the timestamp in the STAMP test packet.¶
Use of the UDP checksum with IPv4 MUST be the default configuration for all implementations.¶
For IPv4, [RFC768] permits an option to disable UDP checksum processing by setting the checksum value to zero.¶
For IPv4 STAMP test packets, the Session-Sender and Session-Reflector can use this exception for the UDP ports specifically used in STAMP sessions to set the UDP checksum value to 0 with additional checks on the source and destination addresses in the STAMP test packets.¶
STAMP test packets are the innermost payload and are not a tunnel encapsulation; as noted in Section 8.1 of [RFC8200], the UDP checksum requirements apply directly to the STAMP payload rather than to a tunnel encapsulation carrying an inner packet.¶
For IPv6, any node implementing UDP zero-checksum mode MUST follow the requirements specified in [RFC6936] and [RFC8085] as described below with one deviation.¶
Requirement 5 of Section 5 of [RFC6936] cannot be satisfied because STAMP is not a tunnel protocol and does not include an inner packet with a CRC or other mechanism for checking packet integrity in unauthenticated mode.¶
This deviation from [RFC6936] requirement is limited to the IPv6 STAMP sessions in unauthenticated mode that MUST operate under the constraints listed below.¶
IPv6 UDP zero-checksum can be enabled only when the following requirements, recommendations, and constraints are satisfied and the residual risk due to STAMP test packet corruption is acceptable.¶
UDP zero-checksum is enabled only for the specific UDP port or port range used by a STAMP session, at both the Session-Sender and Session-Reflector.¶
This corresponds to requirement 1 in Section 5 of [RFC6936].¶
STAMP test packets in the authentication mode defined in Figures 3 and 4 of [RFC8972] are RECOMMENDED in networks where packet integrity is required.¶
This corresponds to requirement 2 in Section 5 of [RFC6936].¶
Requirement 3 in Section 5 of [RFC6936] does not apply to STAMP because STAMP packets are not tunnel payloads and do not rely on an inner packet integrity check.¶
UDP zero-checksum is handled in STAMP so that corruption of header information is detected in STAMP and does not result in accumulation of incorrect state for the protocol.¶
This corresponds to requirement 4 in Section 5 of [RFC6936].¶
Additional specific guidance from Section 3.4.1 of [RFC8085] applied to UDP zero-checksum IPv6 STAMP test packets is summarized below:¶
Use of the UDP checksum with IPv6 MUST be the default configuration for all implementations.¶
This corresponds to the first requirement in Section 3.4.1 of [RFC8085].¶
The receiving endpoint MUST verify a non-zero UDP checksum packet and MUST discard it if checksum verification fails; it MUST NOT treat the packet as a valid measurement result.¶
This corresponds to the second requirement in Section 3.4.1 of [RFC8085] and also applies to Section 4 and Section 5 of [RFC6936].¶
The receiving endpoint MUST only permit the UDP zero-checksum for IPv6 on a UDP destination port number that is specifically enabled for STAMP and MUST check that the source and destination IPv6 addresses are valid and discard any packet for which this check fails.¶
This corresponds to the third requirement in Section 3.4.1 of [RFC8085].¶
STAMP sessions are restricted to networks under a single administrative domain (see Section 7), where the operator is willing to take the risk of STAMP test packet corruption affecting measurements when using UDP zero-checksum.¶
This corresponds to the fourth requirement in Section 3.4.1 of [RFC8085].¶
STAMP sessions that choose to use a UDP zero-checksum MUST NOT make assumptions regarding the correctness of received test packets and MUST behave correctly when a UDP datagram is corrupted.¶
This corresponds to the fifth requirement in Section 3.4.1 of [RFC8085].¶
STAMP Session-Sender test packets are transmitted on an LSP or a PW using an MPLS header with an IP/UDP header in Format-1 or without an IP/UDP header in Format-2. Additionally:¶
For PWs, Session-Sender test packets are transmitted on the PW using the label stack of the PW, including the PW label and the G-ACh.¶
For LSPs, Session-Sender test packets are transmitted on the LSP using the label stack of the LSP with a G-ACh when the LSP carries the CW and without a G-ACh when the LSP does not carry the CW.¶
The content of an example STAMP Session-Sender test packet for an LSP or a PW encapsulated using a G-ACh and an IP/UDP header in Format-1 is shown in Figure 2.¶
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Label(1) | TC |0| TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PW Label or Ultimate LSP Label | TC |1| 1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0 0 0 1|Version| Reserved | Channel Type | . Associated Channel carries an IPv4 packet (0x0021) or . . Associated Channel carries an IPv6 packet (0x0057) . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IP Header | . Source IP Address . . = Session-Sender IPv4 or IPv6 Address . . Destination IP Address . . = Session-Reflector IPv4 or IPv6 Address . . IPv4 Protocol or IPv6 Next Header = UDP (17) . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | UDP Header | . Source Port = As chosen by Session-Sender . . Destination Port = User-configured Destination Port or 862 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Payload = Test Packet as specified in Section 3 of RFC 8972 | . in Figure 1 and Figure 3 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The destination address in the IP header of a STAMP test packet can be one of the following when adding an MPLS encapsulation for an LSP or a PW.¶
A routable IPv4 address¶
A routable IPv6 address¶
An IPv4 address from the 127/8 range¶
An IPv6 address from the Dummy IPv6 Prefix 100:0:0:1::/64 [RFC9780] [IANA-IPv6-REG]¶
In the case of an IPv6 address from the dummy prefix, as specified in Section 1 of [RFC9780], this source-only prefix is deliberately used as a destination to generate an exception.¶
Examples of implementations are:¶
An implementation using a routable IP address as the destination address during the initial forwarding step, before the STAMP test packet gets forwarded into the MPLS LSP or PW.¶
An implementation using a non-routable IP address as the destination address while adding both an IP header and an MPLS encapsulation in the same forwarding step.¶
When adding the G-ACh header [RFC5586] with the channel type "Associated Channel carries an IPv4 packet" or "Associated Channel carries an IPv6 packet", it MUST immediately follow the bottom of the label stack. The payload contains the STAMP Session-Sender test packet defined in [RFC8972].¶
The STAMP Session-Sender test packet G-ACh header contains the following fields:¶
The content of an example STAMP Session-Sender test packet for an LSP or a PW encapsulated using the GAL and a G-ACh without an IP/UDP header in Format-2 is shown in Figure 3.¶
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Label(1) | TC |0| TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PW Label or Ultimate LSP Label | TC |0| 1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GAL | TC |1| 1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0 0 0 1|Version| Reserved | STAMP Sender G-ACh (TBA1) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Payload = Test Packet as specified in Section 3 of RFC 8972 | . in Figure 1 and Figure 3 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
When adding the G-ACh header [RFC5586] with the new STAMP Session-Sender channel type (value TBA1), it MUST immediately follow the bottom of the label stack. The payload contains the STAMP Session-Sender test packet defined in [RFC8972].¶
The STAMP channel type allows the encapsulated STAMP payload to be identified.¶
The STAMP Session-Sender test packet G-ACh header contains the following fields:¶
STAMP Session-Reflector test packets are transmitted with an IP/UDP header in Format-1 or without an IP/UDP header in Format-2. The Session-Reflector processes and returns a received STAMP test packet in both cases as follows:¶
When a Session-Sender test packet is received with a G-ACh, the Session-Reflector MUST reflect the test packet to the Session-Sender using the same G-ACh in the reverse direction of the LSP or PW.¶
The Session-Reflector MUST transmit the reflected test packet on the same path in the reverse direction of the LSP or PW.¶
The Session-Reflector uses the PW label or ultimate LSP label in the received packet to find the reverse-direction LSP or PW context.¶
If the received packet context is a PW, the Session-Reflector MUST use the reverse-direction PW label stack and G-ACh to transmit the Session-Reflector test packet. The reverse-direction PW label stack can be determined through static configuration or the signaling protocol used to establish the PW.¶
If the received packet context is an LSP, the Session-Reflector MUST use the reverse-direction LSP label stack and G-ACh to transmit the Session-Reflector test packet.¶
If the Session-Reflector cannot find a reverse-direction LSP or PW context for the received test packet, it MUST discard the received packet and MUST NOT transmit a reply.¶
The reflected test packet MUST include an IP/UDP header (Format-1) if the received Session-Sender test packet includes an IP/UDP header (Format-1); otherwise, it MUST be sent without an IP/UDP header (Format-2).¶
In the absence of a G-ACh in the received Session-Sender test packet, the Session-Reflector MUST reflect the test packet using an IP/UDP header (Format-1) based on the information received in the IP/UDP header of the Session-Sender test packet (Format-1).¶
The content of an example STAMP Session-Reflector test packet for an LSP or a PW encapsulated using a G-ACh and an IP/UDP header in Format-1 is shown in Figure 4.¶
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Label(1) | TC |0| TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PW Label or Ultimate LSP Label | TC |1| 1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0 0 0 1|Version| Reserved | Channel Type | . Associated Channel carries an IPv4 packet (0x0021) or . . Associated Channel carries an IPv6 packet (0x0057) . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IP Header | . Source IP Address . . = Configured on Session-Reflector . . Destination IP Address . . = Source IP Address from Session-Sender Test Packet . . IPv4 Protocol or IPv6 Next Header = UDP (17) . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | UDP Header | . Source Port = As chosen by Session-Reflector . . Destination Port . . = Source Port from Session-Sender Test Packet . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Payload = Test Packet as specified in Section 3 of RFC 8972 | . in Figure 2 and Figure 4 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
When adding the G-ACh header [RFC5586] with the channel type "Associated Channel carries an IPv4 packet" or "Associated Channel carries an IPv6 packet", it MUST immediately follow the bottom of the label stack. The payload contains the STAMP Session-Reflector test packet defined in [RFC8972].¶
The STAMP Session-Reflector test packet MUST use the source address and the source UDP port from the received test packet as the destination address and the destination UDP port when an IP/UDP header is present in the received test packet.¶
The STAMP Session-Reflector test packet G-ACh header contains the following fields:¶
The content of an example STAMP Session-Reflector test packet for an LSP or a PW encapsulated using the GAL and a G-ACh without an IP/UDP header in Format-2 is shown in Figure 5.¶
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Label(1) | TC |0| TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PW Label or Ultimate LSP Label | TC |0| 1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GAL | TC |1| 1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0 0 0 1|Version| Reserved | STAMP Reflector G-ACh (TBA2) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Payload = Test Packet as specified in Section 3 of RFC 8972 | . in Figure 2 and Figure 4 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
When adding the G-ACh header [RFC5586] with the new STAMP Session-Reflector channel type (value TBA2), it MUST immediately follow the bottom of the label stack. The payload contains the STAMP Session-Reflector test packet defined in [RFC8972].¶
The STAMP channel type allows the encapsulated STAMP payload to be identified.¶
The STAMP Session-Reflector test packet G-ACh header contains the following fields:¶
The operational considerations specified in Section 5 of [RFC8762] also apply to the procedure specified in this document. Further, the operation and management of performance measurement based on STAMP specified in Section 3 of [RFC8762] also apply to the procedure specified in this document.¶
When using a destination UDP port number other than the default port number 862, the same network-impact study and agreement requirement specified in Section 3.1 applies.¶
Based on local policy, an operator may add the MPLS encapsulation only for STAMP test packets destined to addresses within the MPLS administrative domain.¶
The following considerations apply when encapsulating STAMP test packets to follow the same ECMP path as the data traffic being measured.¶
G-ACh encapsulation enables STAMP test packets in Format-1 and Format-2 to follow the ECMP path taken by data packets that use the CW when label-based ECMP is used, as defined in [RFC4928].¶
This assumes that the nodes on the packet path apply the same ECMP selection to STAMP test packets as to data packets with the CW.¶
Because STAMP test packets in Format-1 use IP addresses different from those used by the data packets, IP ECMP specified in [RFC4928] may result in different ECMP load-balancing decisions, as specified in Section 2.4.5.2 of [RFC7325].¶
As specified in Section 2.4.5.1 of [RFC7325], Special-purpose labels (label values 0-15) MUST NOT be used to make ECMP decisions. In particular, GAL and RA MUST NOT be used so that OAM traffic follows the same path as payload packets with the same label stack.¶
The RA Label could result in a different Equal-Cost Multi-Path (ECMP) hashing behavior than a pseudowire as specified in [RFC5085].¶
The presence of the GAL can alter ECMP selection on equipment that includes special-purpose labels in its load-balancing decisions as specified in Section 3 of [RFC7708].¶
When using the "MPLS PW Label with TTL == 1" mechanism, the TTL field SHOULD NOT be used to make ECMP decisions as specified in [RFC7325].¶
The STAMP session state change notifications specified in this section are applicable to all STAMP sessions and are not limited to STAMP sessions for LSPs and PWs.¶
The STAMP session state monitoring allows the Session-Sender to determine whether the STAMP test is idle, active, or failed. A STAMP implementation SHOULD generate notifications for the state change as follows:¶
Because STAMP test packets are transmitted over the LSP or PW being measured, a connectivity failure of that LSP or PW typically manifests as the continuous packet loss specified above, resulting in the STAMP session state being notified as failed.¶
The rate limiting considerations specified in this section are applicable to all STAMP sessions and are not limited to STAMP sessions for LSPs and PWs.¶
On both Session-Sender and Session-Reflector nodes, as each STAMP test packet is processed by the control plane and consumes CPU and memory resources, it is subject to rate limiting as a protection against denial-of-service attacks. Such rate limiting on the punt path is indistinguishable from the actual loss in the network and can therefore be reported as packet loss.¶
It is useful for an operator to know that rate limiting was applied to STAMP test packets (for example, based on the UDP ports used for STAMP), so that the alerting system can correlate STAMP packets being rate-limited with failure notifications.¶
This throttling or policing of incoming STAMP test packets SHOULD NOT be more stringent than the bandwidth allocated to the STAMP test packets to prevent invalid measurement results.¶
Additional guidance on configuring punt-path rate limiters can also be found in Section 9 of [RFC5085].¶
The rate at which STAMP test packets are transmitted needs to be configured and MUST be accounted for when provisioning bandwidth for LSPs and PWs. The configured test packet transmit rate needs to be appropriate for the bandwidth capacity in both directions. This applies to both Format-1 and Format-2 STAMP test packets and MUST include the MTU requirements specified in Section 7.5.¶
As specified in Section 7 of [RFC8762], the load of the STAMP-test packets offered to a network MUST be carefully estimated, and the possible impact on the existing services MUST be thoroughly analyzed before launching the test session.¶
Section 3.1.5 of [RFC8085] provides guidance on handling network load for a UDP-based protocol, and applies to the STAMP test packets in Format-1.¶
The congestion considerations in Section 9 of [RFC5085] apply to the STAMP test packets.¶
As specified in Section 9 of [RFC5085], the ICMP and MPLS LSP PING applications should be rate-limited to below 5% of the bit-rate of the associated PW. This rate limit also applies to the STAMP test packets.¶
STAMP test packets need to be forwarded by the nodes along the path to reach the LSP and PW endpoints. This adds the additional packet processing load on the nodes and MUST be included in the packet processing capacity of them.¶
Because the Session-Reflector responds to each received test packet, the following requirements apply when provisioning bandwidth:¶
The size of a STAMP test packet, including the encapsulation overhead, MUST fit within the LSP or PW MTU independently in both directions.¶
Forwarding STAMP test packets with an IP/UDP header on a broken LSP would cause the STAMP session to be down when all packets on the LSP are dropped. Otherwise, when the test packets are incorrectly forwarded by MPLS or IP to the egress node (hosting the STAMP Session-Reflector), it could lead to an invalid measurement of the LSP, for example, if the packets followed a different path than the LSP.¶
A non-routable IPv4/IPv6 destination address, specified in Section 5.1, avoids IP-forwarding Session-Sender test packets to the egress node on a different path than the LSP. However, there is a potential risk of receiving Session-Reflector test packets from an unintended STAMP Session-Reflector hosted on the node where the broken LSP terminates, since the STAMP Session-Reflector may not know that the test packets were received due to a broken LSP. In this case, network analytics would detect invalid measurements reported by STAMP over a broken LSP path.¶
Further, the destination IP address-based filtering SHOULD be provisioned on the edges of the MPLS administrative domain to prevent the IP-forwarded STAMP test packets for a broken LSP within the domain from leaking outside the domain. A non-routable IPv4/IPv6 destination address, specified in Section 5.1, MAY be used in STAMP test packets to help avoid this. Note that this edge filtering does not protect against the case where the Session-Sender and Session-Reflector both reside within the same administrative domain: a natively IP-routed STAMP test packet would still reach the Session-Reflector without ever crossing a domain edge. In this case, the non-routable destination address technique specified above remains the primary mitigation.¶
The considerations specified above also apply to the reverse direction. In particular, when the reverse LSP is broken, a Session-Reflector test packet with an IP/UDP header may be incorrectly forwarded by MPLS or IP to the ingress node (hosting the STAMP Session-Sender). This is because its destination address is the Session-Sender's source address, which is routable. The non-routable destination address technique specified above does not protect the reflected packet. Operators SHOULD therefore apply appropriate filtering policies at the edges of the MPLS administrative domain to prevent reflected STAMP test packets from leaking outside the domain.¶
As STAMP test packets in Format-2 are not IP-forwarded, the above considerations are not applicable. However, when the test packets are incorrectly MPLS forwarded to the egress node, it could lead to invalid measurements of the LSP.¶
The procedures defined in this document are intended for deployment in a single network administrative domain. As such, the Session-Sender address, the Session-Reflector address, and the IP and MPLS forward and return paths are provisioned by the operator for the STAMP session. It is assumed that the operator has verified the integrity of the IP and MPLS forward and return paths used to transmit STAMP test packets.¶
The security considerations specified in [RFC8762] and [RFC8972] also apply to the procedure specified in this document. Specifically, the message integrity protection using HMAC, as defined in Section 4.4 of [RFC8762], also applies to the procedure specified in this document. When an IP/UDP header is used, the measures specified in Section 7 of [RFC8762] to mitigate attacks using the registered UDP port number also apply.¶
Routers that support G-ACh are subject to the same security considerations as defined in [RFC4385] and [RFC5586].¶
The message throttling mechanisms specified in the security considerations in Section 10 of [RFC5085] to protect against potential (deliberate or unintentional) attacks also apply to the procedure specified in this document.¶
If desired, attacks can be mitigated by performing basic validation checks in Session-Reflector test packets received at the Session-Sender, such as verifying that timestamp T2 is later than timestamp T1 (when the Session-Sender and Session-Reflector clocks are synchronized) in the STAMP Reference Topology shown in Figure 1. The minimal state associated with this protocol also limits the extent of measurement disruption that can be caused by a corrupt or invalid test packet to a single test cycle.¶
An attacker can send a forged STAMP test packet to the ingress or egress node of an LSP, causing the STAMP session to be terminated prematurely. To mitigate these threats, operators SHOULD filter STAMP test packets at the edges of the MPLS administrative domain.¶
Off-path attack protection is provided through a combination of mechanisms. When source UDP ports are allocated using randomization as specified in [RFC6056], this provides the standard protection against off-path attacks as recommended in [RFC8085]. Additionally, STAMP test packets sent within an MPLS administrative domain benefit from the MPLS encapsulation itself, which makes it extremely difficult for off-path attackers to inject packets that follow the correct label stack and MPLS forwarding path. The requirement that Session-Reflector test packets MUST be transmitted on the reverse LSP or PW (see Section 6) further restricts the paths that valid STAMP test packets can traverse, providing defense against off-path attacks.¶
Furthermore, implementations SHOULD NOT assign SSIDs [RFC8972] predictably. To avoid predictability, implementations can leverage a Cryptographically Secure Pseudorandom Number Generator [NIST-CSPRNG].¶
The STAMP test packets received via a PW or an LSP are processed in the context of that PW or LSP, and the encapsulations defined in this document do not introduce a mechanism for cross-service OAM interactions.¶
IANA maintains the G-ACh Type Registry (see https://www.iana.org/assignments/g-ach-parameters/g-ach-parameters.xhtml). IANA is requested to allocate values for the G-ACh Types for STAMP from the "MPLS Generalized Associated Channel (G-ACh) Types (including Pseudowire Associated Channel Types)" registry.¶
| Value | Description | Reference |
|---|---|---|
| TBA1 | STAMP Session-Sender G-ACh Type | This document |
| TBA2 | STAMP Session-Reflector G-ACh Type | This document |
The authors would like to thank Bharath Vasudevan, Ali Sianati, and Parag Jain for the discussions regarding the method to punt STAMP test packets to the control plane for processing. The authors would also like to thank Greg Mirsky, Loa Andersson, Li Zhang, Richard Foote (Footer), and Stewart Bryant for reviewing this document and providing useful comments and suggestions. Thanks to Carlos Pignataro for the PerfMetrdir review, Russ White for the early Rtgdir review, Russ Housley for the Gen-ART review, Vidhi Goel for the telechat TSVART review, Giuseppe Fioccola for the Opsdir review, Jen Linkova for the telechat Intdir review, Yaron Sheffer for the early Secdir review, Roman Danyliw, Gorry Fairhurst, Mohamed Boucadair, Eric Vyncke, Gunter Van de Velde, and Mike Bishop for IESG review which helped improve this document.¶