Internet-Draft STAMP in MPLS Networks August 2026
Gandhi, et al. Expires 22 February 2027 [Page]
Workgroup:
MPLS Working Group
Internet-Draft:
draft-ietf-mpls-stamp-pw-08
Published:
Intended Status:
Standards Track
Expires:
Authors:
R. Gandhi, Ed.
Cisco Systems, Inc.
P. Brissette
Cisco Systems, Inc.
E. Leyton
Verizon Wireless
X. Min
ZTE Corp.

Encapsulation of Simple Two-Way Active Measurement Protocol for LSPs and Pseudowires in MPLS Networks

Abstract

This document describes the procedure for encapsulating the Simple Two-Way Active Measurement Protocol (STAMP), defined in RFC 8762, and its optional extensions defined in RFC 8972, in MPLS networks. Label Switched Paths (LSPs) and Pseudowires (PWs) are used in MPLS networks for various services, including Layer 2 and Layer 3 data packets, and may use the Control Word (CW). The procedure for encapsulating STAMP test packets with or without the CW and/or an IP/UDP header for LSPs and PWs is also described.

Status of This Memo

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 22 February 2027.

Table of Contents

1. Introduction

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 for STAMP.

Label Switched Paths (LSPs) are used in MPLS networks for various services, including 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 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, whereas 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 an 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".

A Generic Associated Channel (G-ACh) [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 being transported over the channel. Virtual Circuit Connectivity Verification (VCCV) is used as a Control Channel for PWs as described in [RFC5085]. A G-ACh can be used as a VCCV Control Channel as described in [RFC7708].

When using STAMP for MPLS and MPLS-TP for both LSPs and PWs, there are unique aspects that need to be considered concerning the use of CW, and these aspects are addressed in this document.

This document describes the procedure for the encapsulation of STAMP, defined in [RFC8762], and its optional extensions, defined in [RFC8972], for LSPs and PWs in MPLS networks. The procedure is also described for encapsulating STAMP test packets with or without the CW and/or an IP/UDP header for LSPs and PWs.

This document defines two new G-ACh types when using STAMP without an IP/UDP header. These types are independent of the PW demultiplexer type and are therefore applicable to both the PW label and the Layer 2 Tunneling Protocol version 3 (L2TPv3) PW demultiplexer. This document uses the existing G-ACh types for IPv4 and IPv6 when STAMP test packets are transmitted with an IP/UDP header for the LSPs and PWs that carry CW.

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.

1.1. Requirements

STAMP test packets need to be transmitted with the same label stack used by the LSPs and PWs to ensure proper validation of the underlay path taken by the actual data traffic. In addition, STAMP test packets need to follow the same Equal-Cost Multi-Path (ECMP) underlay path taken by the LSP and PW data traffic in the network. PW data traffic may be encapsulated using 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, the STAMP test packets are treated the same way as the data traffic forwarded over the LSP by the transit nodes along the path.

Data traffic over the L2-Specific Sublayer (L2SS), as used in L2TPv3 PWs, carries CW but does not carry an IP/UDP header. As such, STAMP test packets need to be transmitted over these L2TPv3 PWs using a G-ACh carrying only the STAMP payload without any IP/UDP header.

Private Line Emulation (PLE) [RFC9801] traffic is sent over a Packet Switched Network (PSN) as Virtual Private Wire Services (VPWS) using PWs. The data packets are encapsulated with 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, and avoid different ECMP behavior on intermediate nodes.

The G-ACh types allow for demultiplexing of the VCCV Control Channel for PWs [RFC7708]. The G-ACh types for STAMP test packets with or without IP/UDP headers are also used to demultiplex the VCCV Control Channel for PWs. Signaling extensions for the VCCV Control Channel for PWs for STAMP are outside the scope of this document.

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 (just like the delay and loss measurement packets defined in [RFC6374]). The G-ACh types for STAMP also allow for the demultiplexing of the OAM Control Channel for MPLS-TP.

The requirements for the encapsulation of the STAMP test packets for 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 CW.

  • Session-Sender test packets need to follow the same ECMP underlay path taken by the data traffic that uses CW and an Entropy Label defined in [RFC6790].

  • Session-Sender test packets need to follow the same ECMP underlay path taken by the data traffic that uses 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 ECMP underlay path taken by Session-Sender test packets.

1.2. Examples of MPLS Data Traffic Use Cases

Examples of MPLS data traffic use cases for STAMP test packets with IP/UDP headers are:

  1. MPLS PW Data Traffic (with CW and IP header)

  2. MPLS-TP PW Data Traffic (with CW and IP header)

  3. MPLS LSP Data Traffic (with IP header)

Examples of MPLS data traffic use cases for STAMP test packets without IP/UDP headers are:

  1. MPLS Ethernet PW Data Traffic [RFC4448]

  2. L2SS used in L2TPv3 PW Data Traffic [RFC3931]

  3. Private Line Emulation [RFC9801] PW Data Traffic

  4. TDM over IP [RFC5087] PW Data Traffic (with no IP header)

  5. MPLS-TP LSP Data Traffic

2. Conventions Used in This Document

2.1. Requirements Language

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.

2.2. Abbreviations

Table 1: Abbreviations
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]
GTSM Generalized TTL Security Mechanism [RFC5082]
HMAC Hash-based Message Authentication Code [RFC2104]
L2SS L2-Specific Sublayer [RFC3931]
L2TPv3 Layer 2 Tunneling Protocol version 3 [RFC3931]
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]
PLE Private Line Emulation [RFC9801]
PSN Packet Switched Network [RFC9801]
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]

2.3. STAMP Reference Topology

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
Figure 1: STAMP Reference Topology using LSP and PW

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 both one-way and round-trip performance metrics, such as delay, delay variation, and packet loss [RFC8972].

3. Overview

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 base STAMP test packet payloads can be encapsulated using an IP/UDP header and destination UDP port 862 as the default destination port, as specified in Section 4.1 of [RFC8762]. When choosing a destination port from the User Ports range, the possible impact on the network needs to be carefully studied and agreed on by all users of the network domain where the test has been planned, as described in Section 4.1 of [RFC8762].

The source UDP port is chosen by the Session-Sender from the User Ports range, which MUST be different from 862 and MUST be able to distinguish between the received Session-Reflector test packets and the Session-Sender test packets from the reverse direction.

The STAMP Session Identifier (SSID) defined in [RFC8972] is used to identify the STAMP session and MUST be set to non-zero. The SSID MUST be carried in the STAMP test packets in both directions to be able to identify the STAMP sessions for MPLS LSPs and PWs.

The STAMP Session-Sender and Session-Reflector addresses for a STAMP session are provisioned on both endpoints of the MPLS LSP and PW.

3.1. Formats and G-ACh Types for STAMP

STAMP test packet payloads are encapsulated over G-ACh in two formats: Format-1 (with an IP/UDP header) and Format-2 (without an IP/UDP header).

  • Format-1: For encapsulating the STAMP test packet payloads over a G-ACh with IP/UDP headers, IPv4 and IPv6 channel types [RFC4385] are used for both Session-Sender and Session-Reflector test packets. The destination UDP port number in the Session-Sender and Session-Reflector test packets distinguishes the test packets.
  • Format-2: For encapsulating the STAMP test packet payloads over a G-ACh without adding IP/UDP headers, two new channel types are defined in this document: one for the Session-Sender test packets and one for the Session-Reflector test packets. The different channel types are required for the Session-Sender and Session-Reflector test packets as the STAMP test packets do not have a way to discriminate between them.

3.1.1. STAMP Session Identification

  • Format-1:

    • The Session-Reflector address that is the source address, destination UDP port, and the SSID in the received Session-Reflector test packets, along with the locally provisioned STAMP session parameters are used by the Session-Sender to identify a STAMP session.
    • The Session-Sender address that is the source address, destination UDP port, and the SSID in the received Session-Sender test packets, along with the locally provisioned STAMP session parameters are used by the Stateful Session-Reflector to identify a STAMP session.
  • Format-2:

    • The SSID along with the reverse direction LSP and PW context in the received Session-Reflector test packets, along with the locally provisioned STAMP session parameters are used by the Session-Sender to identify a STAMP session.
    • The SSID along with the LSP and PW context in the received Session-Sender test packets, along with the locally provisioned STAMP session parameters are used by the Stateful Session-Reflector to identify a STAMP session.

3.2. Using STAMP for LSPs and PWs

Following encapsulation use-cases provide the STAMP test packets with the same ECMP behaviour on the intermediate nodes as data traffic being measured:

  • The STAMP test packet payloads are encapsulated with an IP/UDP header without a G-ACh header, and with an MPLS header using the same label stack as the MPLS LSP and MPLS-TP LSP data traffic that contains an IP header but not the CW. The label stack may include the L2 or L3 VPN label for the service carried over the LSP.
  • The STAMP test packet payloads are encapsulated with an IP/UDP header with a G-ACh header (instead of the CW used by the data traffic), and with an MPLS header using the same label stack as the MPLS LSP and MPLS-TP LSP data traffic that contains an IP header and the CW. The label stack may include the L2 or L3 VPN label for the service carried over the LSP.
  • The STAMP test packet payloads are encapsulated with an MPLS header using the same label stack as the PW data traffic (including the PW label) and a G-ACh header (instead of the CW used by the data traffic). The encapsulation allows STAMP test packets to follow the same path as the PW data traffic.

When using an IP header, the IP version (IPv4 or IPv6) in the STAMP test packets MUST match the IP version used for 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.

3.2.1. VCCV Channel

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] defines mechanisms for the VCCV Control Channel to carry OAM messages for PWs.

  • The "In-band VCCV for Control Word with 0001b as first nibble (Type 1)" defined in Section 5.1.1 of [RFC5085] MUST be added when measuring PWs with CW to avoid different ECMP hashing behaviour.

  • The method for "TTL Expiry VCCV (Type 3)" defined in Section 5.1.3 of [RFC5085] allows the termination of OAM messages on the remote PE endpoint nodes. This method is applied to the STAMP test packets to force the test packets to be processed on Session-Sender and Session-Reflector control planes by adding the PW label with a TTL value of 1.

  • VCCV Type 2 is also referred to as the "MPLS Router Alert Label" [RFC5085] This method could result in a different ECMP hashing behaviour, and thus result in the STAMP test packets taking a path that differs from that of the actual data traffic under test [RFC5085] Hence, the use of VCCV Type 2 for STAMP when measuring PW traffic is not supported by the procedures defined in this document.

The procedure described to encapsulate STAMP test packets for PWs is equally applicable to MPLS LSPs and MPLS-TP LSPs using CW in the following scenarios:

  • For data traffic over MPLS LSPs using an IP header, STAMP test packets in Format-1 are transmitted.

  • For data traffic without an IP header over MPLS-TP LSPs, STAMP test packets in Format-2 are transmitted with a TTL value of 1 in the ultimate LSP label in the MPLS header.

3.2.2. TTL Processing

The IPv4 Time to Live (TTL), IPv6 Hop Limit, and Generalized TTL Security Mechanism (GTSM) procedures from [RFC5082] also apply to the encapsulation of STAMP test packets; hence, the IPv4 TTL, non-ultimate MPLS label TTL, and IPv6 Hop Limit MUST be set to 255. Note that the TTL in the ultimate PW label or LSP label is set separately to 1 when using the TTL Expiry method (VCCV Type 3) described above.

3.2.3. UDP Checksum Handling

When the local processor cannot recompute the UDP checksum after adding the timestamp or add a checksum complement [RFC7820], the following procedures apply:

  • For IPv4 STAMP test packets, the Session-Sender and Session-Reflector set the UDP checksum value to 0 [RFC8085].

  • For IPv6 STAMP test packets, the Session-Sender and Session-Reflector use the procedure defined in [RFC6936] for UDP ports used in STAMP sessions to set the UDP checksum value to 0 and this can be based on a local policy.

3.2.4. G-ACh Label (GAL)

The G-ACh label (GAL) defined in [RFC5586] also applies to the G-ACh types defined in this document for STAMP test packets without an IP/UDP header (Format-2). This use case is similar to the use case for MPLS-TP LSP performance measurement defined in [RFC6374]. As specified in Section 4.2 of [RFC5586], the GAL MUST NOT be used with PWs in MPLS-TP networks. Therefore, Format-2 encapsulation using GAL does not apply to MPLS-TP PWs.

The GAL applies to Format-1 using the G-ACh channel type for IPv4 (0x0021) or IPv6 (0x0057) as described in [RFC5586].

3.3. Applicability of Control Channel Types to STAMP for LSPs and PWs

Control Channel Types defined in [RFC5085] are applicable to STAMP test packets for LSPs and PWs as shown in Table 2:

Table 2: Control Channel Types for LSPs and PWs
Control Channel Type Control Channel Name STAMP Header Format G-ACh Type
Type 1 In-band: Control Word with 0001b as first nibble Format-1 (IP/UDP Headers) IPv4 G-ACh (0x0021) and IPv6 G-ACh (0x0057)
Type 1 In-band: Control Word with 0001b as first nibble Format-2 (No IP/UDP Headers) STAMP G-ACh (TBA1 and TBA2)
Type 2 Out-of-band: MPLS Router Alert Label Not supported Not supported
Type 3 TTL Expiry: Label with TTL as 1 Format-1 (IP/UDP Headers) IPv4 G-ACh (0x0021) and IPv6 G-ACh (0x0057)
Type 3 TTL Expiry: Label with TTL as 1 Format-2 (No IP/UDP Headers) STAMP G-ACh (TBA1 and TBA2)

4. Session-Sender Test Packet

STAMP Session-Sender test packets are transmitted for an LSP or a PW using an MPLS header with or without an IP/UDP header. For PWs, Session-Sender test packets are transmitted using the label stack of the PW, including the PW label and the G-ACh. For LSPs, Session-Sender test packets are transmitted using the label stack of the LSP with or without a G-ACh.

4.1. Session-Sender Test Packet with IP/UDP Header

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 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   | IPv4 (0x0021) or IPv6 (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                            .
 .                                                               .
 +---------------------------------------------------------------+
Figure 2: Example Session-Sender Test Packet with G-ACh and IP/UDP Header

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 IPv6 address from the dummy prefix, as described 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.

The G-ACh header [RFC5586] with the channel type for IPv4 or IPv6 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:

  • Version: The Version field is set to 0, as defined in [RFC4385].

  • Reserved: Reserved bits MUST be set to zero upon transmission and ignored upon receipt.

  • Channel Type: G-ACh type for IPv4 header (0x0021) or IPv6 header (0x0057) [RFC4385].

4.2. Session-Sender Test Packet without IP/UDP Header

The content of an example STAMP Session-Sender test packet for an LSP or a PW encapsulated using GAL and a G-ACh without an IP/UDP header 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                            .
 .                                                               .
 +---------------------------------------------------------------+
Figure 3: Example Session-Sender Test Packet with GAL and G-ACh without IP/UDP Header

The G-ACh header [RFC5586] with the new STAMP Session-Sender channel type (value TBA1) 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 identification of the encapsulated STAMP payload when demultiplexing G-ACh.

The STAMP Session-Sender test packet G-ACh header contains the following fields:

  • Version: The Version field is set to 0, as defined in [RFC4385].

  • Reserved: Reserved bits MUST be set to zero upon transmission and ignored upon receipt.

  • Channel Type: G-ACh type for STAMP Session-Sender packet (TBA1).

5. Session-Reflector Test Packet

The Session-Reflector processes and returns a received STAMP test packet as follows:

5.1. Session-Reflector Test Packet with IP/UDP Header

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 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   | IPv4 (0x0021) or IPv6 (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                            .
 .                                                               .
 +---------------------------------------------------------------+
Figure 4: Example Session-Reflector Test Packet with G-ACh and IP/UDP Header

The G-ACh header [RFC5586] with the channel type IPv4 or IPv6 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 IP/UDP information from the received test packet 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:

  • Version: The Version field is set to 0, as defined in [RFC4385].

  • Reserved: Reserved bits MUST be set to zero upon transmission and ignored upon receipt.

  • Channel Type: G-ACh type for IPv4 header (0x0021) or IPv6 header (0x0057) [RFC4385].

5.2. Session-Reflector Test Packet without IP/UDP Header

The content of an example STAMP Session-Reflector test packet for an LSP or a PW encapsulated using GAL and a G-ACh without an IP/UDP header 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                            .
 .                                                               .
 +---------------------------------------------------------------+
Figure 5: Example Session-Reflector Test Packet with GAL and G-ACh without IP/UDP Header

The G-ACh header [RFC5586] with the new STAMP Session-Reflector channel type (value TBA2) 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 identification of the encapsulated STAMP payload when demultiplexing G-ACh.

The STAMP Session-Reflector test packet G-ACh header contains the following fields:

  • Version: The Version field is set to 0, as defined in [RFC4385].

  • Reserved: Reserved bits MUST be set to zero upon transmission and ignored upon receipt.

  • Channel Type: G-ACh type for STAMP Session-Reflector packet (TBA2).

6. Operational Considerations

The operational considerations specified in Section 5 of [RFC8762] also apply to the procedure described 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 described in this document.

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 encapsulation procedure defined in this document uses a G-ACh for STAMP test packets to follow the path of the data packets with CW. This assumes that intermediate nodes apply the same ECMP hashing behaviour to STAMP test packets with G-ACh as to data packets with CW when using the same label stack.

6.1. Rate Limiting

On both Session-Sender and Session-Reflector nodes, each STAMP test packet is punted to the control plane and is subject to rate limiting. Such policing on the punt path is indistinguishable from the actual loss in the network and can therefore be reported as packet loss. Operators should account for this when configuring punt-path rate limiters, as discussed in Section 9 of [RFC5085] and Section 5 of [RFC9780].

6.2. Bandwidth Rate

The rate at which STAMP test packets are transmitted needs to be configured and accounted for when provisioning the bandwidth of the LSP or PW. This applies to both Format-1 and Format-2 test packets, including the encapsulation overhead. The congestion and bandwidth usage considerations for VCCV applications in Section 9 of [RFC5085] apply to STAMP test packets carried over PWs, including Format-2 packets that do not contain UDP. Operators should also consider the additional traffic generated by the Session-Reflector and the rate of control packets passed to the control plane, as described in Section 6 of [RFC9780].

Because the Session-Reflector responds to each received test packet, the following considerations apply when provisioning bandwidth:

  • The reflected direction can generate a comparable test packet rate and needs to be considered independently when provisioning the reverse-direction LSP or PW.

  • The configured test rate needs to be appropriate for the capacity of both directions.

  • The configured rate needs to account for cases where the reverse direction has less capacity than the forward direction.

  • Any rate limit or bound applied to the Session-Sender rate needs to prevent the corresponding reflected traffic from exceeding the reverse-direction capacity.

6.3. MTU Handling

The size of a STAMP test packet, including the encapsulation overhead, needs to fit within the LSP or PW MTU independently in both directions. Further, the padding defined in [RFC8972] needs to be considered when selecting the test packet size.

A test packet with G-ACh encapsulation that exceeds the LSP or PW MTU is dropped rather than fragmented and can therefore appear as packet loss. Format-1 test packets should be sized to avoid IP fragmentation.

6.4. Considerations for Broken LSPs

Forwarding STAMP test packets on a broken LSP would cause the STAMP session to be down when all packets on the LSP are dropped. Otherwise, when the 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, described in Section 4.1, avoids IP forwarding of the 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, described in Section 4.1, MAY be used in STAMP test packets to help avoid this.

The considerations described 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 described 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.

7. Security Considerations

The procedures defined in this document are intended for deployment in a single network administrative domain. As such, the Session-Sender address, Session-Reflector address, and 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 described in this document. Specifically, the message integrity protection using HMAC, as defined in Section 4.4 of [RFC8762], also applies to the procedure described in this document. 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 described in the security considerations in Section 10 of [RFC5085] to protect against potential (deliberate or unintentional) attacks also apply to the procedure described in this document.

If desired, attacks can be mitigated by performing basic validation checks (such as whether timestamp T2 is later than timestamp T1 in the STAMP Reference Topology shown in Figure 1, when the Session-Sender and Session-Reflector clocks are synchronized) in Session-Reflector test packets received at the Session-Sender. 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.

Furthermore, implementations SHOULD NOT assign SSIDs [RFC8972] in a predictable manner. 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.

8. IANA Considerations

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.

Table 3: STAMP G-ACh Types
Value Description Reference
TBA1 STAMP Session-Sender G-ACh Type This document
TBA2 STAMP Session-Reflector G-ACh Type This document

9. References

9.1. Normative References

[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
[RFC3032]
Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack Encoding", RFC 3032, DOI 10.17487/RFC3032, , <https://www.rfc-editor.org/info/rfc3032>.
[RFC4385]
Bryant, S., Swallow, G., Martini, L., and D. McPherson, "Pseudowire Emulation Edge-to-Edge (PWE3) Control Word for Use over an MPLS PSN", RFC 4385, DOI 10.17487/RFC4385, , <https://www.rfc-editor.org/info/rfc4385>.
[RFC5082]
Gill, V., Heasley, J., Meyer, D., Savola, P., Ed., and C. Pignataro, "The Generalized TTL Security Mechanism (GTSM)", RFC 5082, DOI 10.17487/RFC5082, , <https://www.rfc-editor.org/info/rfc5082>.
[RFC5085]
Nadeau, T., Ed. and C. Pignataro, Ed., "Pseudowire Virtual Circuit Connectivity Verification (VCCV): A Control Channel for Pseudowires", RFC 5085, DOI 10.17487/RFC5085, , <https://www.rfc-editor.org/info/rfc5085>.
[RFC5586]
Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed., "MPLS Generic Associated Channel", RFC 5586, DOI 10.17487/RFC5586, , <https://www.rfc-editor.org/info/rfc5586>.
[RFC6790]
Kompella, K., Drake, J., Amante, S., Henderickx, W., and L. Yong, "The Use of Entropy Labels in MPLS Forwarding", RFC 6790, DOI 10.17487/RFC6790, , <https://www.rfc-editor.org/info/rfc6790>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/info/rfc8174>.
[RFC8762]
Mirsky, G., Jun, G., Nydell, H., and R. Foote, "Simple Two-Way Active Measurement Protocol", RFC 8762, DOI 10.17487/RFC8762, , <https://www.rfc-editor.org/info/rfc8762>.
[RFC8972]
Mirsky, G., Min, X., Nydell, H., Foote, R., Masputra, A., and E. Ruffini, "Simple Two-Way Active Measurement Protocol Optional Extensions", RFC 8972, DOI 10.17487/RFC8972, , <https://www.rfc-editor.org/info/rfc8972>.
[RFC9780]
Mirsky, G., Mishra, G., and D. Eastlake 3rd, "Bidirectional Forwarding Detection (BFD) for Multipoint Networks over Point-to-Multipoint MPLS Label Switched Paths (LSPs)", RFC 9780, DOI 10.17487/RFC9780, , <https://www.rfc-editor.org/info/rfc9780>.

9.2. Informative References

[RFC2104]
Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-Hashing for Message Authentication", RFC 2104, DOI 10.17487/RFC2104, , <https://www.rfc-editor.org/info/rfc2104>.
[RFC3931]
Lau, J., Ed., Townsley, M., Ed., and I. Goyret, Ed., "Layer Two Tunneling Protocol - Version 3 (L2TPv3)", RFC 3931, DOI 10.17487/RFC3931, , <https://www.rfc-editor.org/info/rfc3931>.
[RFC4026]
Andersson, L. and T. Madsen, "Provider Provisioned Virtual Private Network (VPN) Terminology", RFC 4026, DOI 10.17487/RFC4026, , <https://www.rfc-editor.org/info/rfc4026>.
[RFC4448]
Martini, L., Ed., Rosen, E., El-Aawar, N., and G. Heron, "Encapsulation Methods for Transport of Ethernet over MPLS Networks", RFC 4448, DOI 10.17487/RFC4448, , <https://www.rfc-editor.org/info/rfc4448>.
[RFC5087]
Stein, Y., Shashoua, R., Insler, R., and M. Anavi, "Time Division Multiplexing over IP (TDMoIP)", RFC 5087, DOI 10.17487/RFC5087, , <https://www.rfc-editor.org/info/rfc5087>.
[RFC5462]
Andersson, L. and R. Asati, "Multiprotocol Label Switching (MPLS) Label Stack Entry: "EXP" Field Renamed to "Traffic Class" Field", RFC 5462, DOI 10.17487/RFC5462, , <https://www.rfc-editor.org/info/rfc5462>.
[RFC5921]
Bocci, M., Ed., Bryant, S., Ed., Frost, D., Ed., Levrau, L., and L. Berger, "A Framework for MPLS in Transport Networks", RFC 5921, DOI 10.17487/RFC5921, , <https://www.rfc-editor.org/info/rfc5921>.
[RFC5960]
Frost, D., Ed., Bryant, S., Ed., and M. Bocci, Ed., "MPLS Transport Profile Data Plane Architecture", RFC 5960, DOI 10.17487/RFC5960, , <https://www.rfc-editor.org/info/rfc5960>.
[RFC6374]
Frost, D. and S. Bryant, "Packet Loss and Delay Measurement for MPLS Networks", RFC 6374, DOI 10.17487/RFC6374, , <https://www.rfc-editor.org/info/rfc6374>.
[RFC6658]
Bryant, S., Ed., Martini, L., Swallow, G., and A. Malis, "Packet Pseudowire Encapsulation over an MPLS PSN", RFC 6658, DOI 10.17487/RFC6658, , <https://www.rfc-editor.org/info/rfc6658>.
[RFC7708]
Nadeau, T., Martini, L., and S. Bryant, "Using a Generic Associated Channel Label as a Virtual Circuit Connectivity Verification Channel Indicator", RFC 7708, DOI 10.17487/RFC7708, , <https://www.rfc-editor.org/info/rfc7708>.
[RFC7820]
Mizrahi, T., "UDP Checksum Complement in the One-Way Active Measurement Protocol (OWAMP) and Two-Way Active Measurement Protocol (TWAMP)", RFC 7820, DOI 10.17487/RFC7820, , <https://www.rfc-editor.org/info/rfc7820>.
[RFC6936]
Fairhurst, G. and M. Westerlund, "Applicability Statement for the Use of IPv6 UDP Datagrams with Zero Checksums", RFC 6936, DOI 10.17487/RFC6936, , <https://www.rfc-editor.org/info/rfc6936>.
[RFC8085]
Eggert, L., Fairhurst, G., and G. Shepherd, "UDP Usage Guidelines", BCP 145, RFC 8085, DOI 10.17487/RFC8085, , <https://www.rfc-editor.org/info/rfc8085>.
[RFC9801]
Gringeri, S., Whittaker, J., Leymann, N., Schmutzer, C., Ed., and C. Brown, "Private Line Emulation over Packet Switched Networks", RFC 9801, DOI 10.17487/RFC9801, , <https://www.rfc-editor.org/info/rfc9801>.
[I-D.ietf-spring-stamp-srpm-mpls]
Gandhi, R., Filsfils, C., Janssens, B., Chen, M., and R. F. Foote, "Performance Measurement Using Simple Two-Way Active Measurement Protocol (STAMP) for Segment Routing over the MPLS Data Plane", Work in Progress, Internet-Draft, draft-ietf-spring-stamp-srpm-mpls-06, , <https://datatracker.ietf.org/doc/html/draft-ietf-spring-stamp-srpm-mpls-06>.
[NIST-CSPRNG]
NIST Special Publication 800-90A Revision 1, "Recommendation for Random Number Generation Using Deterministic Random Bit Generators, Revision 1", .
[IANA-IPv6-REG]
IANA, "IANA IPv6 Special-Purpose Address Registry", <https://www.iana.org/assignments/iana-ipv6-special-registry>.

Acknowledgments

The authors would like to thank Bharath Vasudevan, Ali Sianati, and Parag Jain for the discussions on 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 TSVART review, Giuseppe Fioccola for the Opsdir review, and Yaron Sheffer for the early Secdir review which helped improve this document.

Authors' Addresses

Rakesh Gandhi (editor)
Cisco Systems, Inc.
Canada
Patrice Brissette
Cisco Systems, Inc.
Canada
Edward Leyton
Verizon Wireless
Xiao Min
ZTE Corp.
Nanjing
China