Internet-Draft STAMP for Reflecting Headers February 2024
Gandhi & Zhou Expires 9 August 2024 [Page]
Workgroup:
IPPM Working Group
Internet-Draft:
draft-gandhi-ippm-stamp-ext-hdr-00
Published:
Intended Status:
Standards Track
Expires:
Authors:
R. Gandhi, Ed.
Cisco Systems, Inc.
T. Zhou
Huawei

Simple Two-Way Active Measurement Protocol (STAMP) Extensions for Reflecting STAMP Packet Headers

Abstract

Simple Two-Way Active Measurement Protocol (STAMP) defined in RFC 8762 and its optional extensions defined in RFC 8972 can be used for Edge-To-Edge (E2E) active measurement. In Situ Operations, Administration, and Maintenance (IOAM) data fields defined in RFC 9197 can be used for recording and collecting Hop-By-Hop (HBH) and E2E operational and telemetry information. This document extends STAMP to reflect any IPv6 options and MPLS Network Action Sub-Stacks for hop-by-hop and edge-to-edge active measurements, including IOAM data fields.

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 9 August 2024.

Table of Contents

1. Introduction

The Simple Two-Way Active Measurement Protocol (STAMP) provides capabilities for the measurement of various performance metrics in IP networks [RFC8762] without the use of a control channel to pre-signal session parameters. [RFC8972] defines optional extensions, in the form of TLVs, for STAMP. The STAMP test packets are transmitted along a path between a Session-Sender and a Session-Reflector to measure Edge-To-Edge (E2E) performance delay and packet loss along that path.

In Situ Operations, Administration, and Maintenance (IOAM) is used for recording and collecting operational and telemetry information while the packet traverses a path between two points in the network. The IOAM data fields are defined in [RFC9197]. Currently, there is no adopted method defined to reflect the collected IOAM data fields back to the Sender where the Sender can use that information to support the hop-by-hop and edge-to-edge measurement use-cases.

IPv6 packets can carry IPv6 options of Hop-By-Hop (HBH) and Destination Types as defined in [RFC8200]. [RFC9486] defines types for HBH and destination options to carry IOAM data fields [RFC9197] for IPv6 data plane.

MPLS packets can carry MPLS Network Action (MNA) Sub-Stack as defined in [I-D.ietf-mpls-mna-hdr].

It may be desired to record and collect HBH and E2E operational and telemetry information using active measurement packets between two nodes in a network. This is achieved by augmenting STAMP [RFC8762] by using optional STAMP extensions defined in [RFC8972] to reflect IPv6 extension headers and MNA Sub-Stacks as specified in this document. The procedure defined in this document leverages the existing implementations on the midpoint nodes with IPv6 and MPLS data planes without any additional requirements.

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

AMM: Alternate Marking Method

ECMP: Equal Cost Multi-Path

E2E: Edge-To-Edge

HBH: Hop-By-Hop

IOAM: In Situ Operations, Administration, and Maintenance

MPLS: Multiprotocol Label Switching

MNA: MPLS Network Action

OAM: Operations, Administration, and Maintenance

STAMP: Simple Two-way Active Measurement Protocol

2.3. STAMP Reference Topology

In the "STAMP Reference Topology" shown in Figure 1, the STAMP Session-Sender S1 initiates a Session-Sender test packet and the STAMP Session-Reflector R1 transmits a reply Session-Reflector test packet. Node M1 is a midpoint node that does not perform any STAMP processing.

The T1 is a transmit timestamp, and T4 is a receive timestamp added by node S1. The T2 is a receive timestamp, and T3 is a transmit timestamp added by node R1.

          T1                                       T2
         /                                           \
+-------+    Test Packet  +-------+                   +-------+
|       | - - - - - - - - |       | - - - - - - - - ->|       |
|   S1  |=================|   M1  |===================|   R1  |
|       |<- - - - - - - - |       | - - - - - - - - - |       |
+-------+                 +-------+ Reply Test Packet +-------+
         \                                           /
          T4                                       T3

STAMP Session-Sender                     STAMP Session-Reflector
Figure 1: STAMP Reference Topology

3. Overview

[RFC8972] defines optional extensions for STAMP. The optional extensions are added in base STAMP test packet defined in [RFC8762] in the form of TLVs. As specified in [RFC8972], both Session-Sender and Session-Reflector test packets are symmetric in size when including all optional TLVs. Session-Reflector reflects all received STAMP TLVs from the Session-Sender test packets.

3.1. IPv6 Data plane

This document defines a new TLV option for STAMP, called "Reflected IPv6 Option Data" (value TBA1). When a STAMP Session-Sender adds an IPv6 option in IPv6 header, it also adds "Reflected IPv6 Option Data" STAMP TLV in the Session-Sender test packet with size of the IPv6 option length including IPv6 option header bytes and the value field in the TLV initialized to zeros. When adding multiple IPv6 options in the Session-Sender test packet, multiple "Reflected IPv6 Option Data" TLVs MUST be added, each one with matching length with the IPv6 option and in the same order.

An example STAMP test packet for IPv6 data plane with IPv6 options in IPv6 header and reflected IPv6 options in STAMP TLVs is shown in Figure 2. Examples of IPv6 option-type are: IOAM data fields IPv6 option defined in [RFC9486], Performance and Diagnostic Metrics (PDM) IPv6 option defined in [RFC8250], Maximum Path MTU IPv6 option defined in [RFC9268], etc.

    +------------------------------------+
    | IPv6 Header                        |
    +------------------------------------+
    | IPv6 Option1 RFC 8200              |
    +------------------------------------+
    | IPv6 Option2 RFC 8200              |
    +------------------------------------+
    | IPv6 Option3 RFC 8200              |
    +------------------------------------+
    | UDP Header                         |
    +------------------------------------+
    | STAMP Packet RFC 8972              |
    +------------------------------------+
    | IPv6 Option1 Data STAMP TLV (TBA1) |
    +------------------------------------+
    | IPv6 Option2 Data STAMP TLV (TBA1) |
    +------------------------------------+
    | IPv6 Option3 Data STAMP TLV (TBA1) |
    +------------------------------------+
Figure 2: Example STAMP Test Packet with Reflected IPv6 Option Data

When Session-Reflector receives STAMP test packet with IPv6 option and STAMP TLV of "Reflected IPv6 Option Data", the Session-Reflector that supports this STAMP TLV, MUST copy the entire IPv6 option including the header into the STAMP "Reflected IPv6 Option Data" TLV in Session-Reflector payload. The Session-Reflector also MUST add the matching IPv6 option in the IPv6 header of the Session-Reflector test packet for the reverse direction for two-way measurement. When there are multiple IPv6 options in the Session-Sender test packet, all IPv6 options MUST be copied in the STAMP "Reflected IPv6 Option Data" TLVs and MUST add all IPv6 options in the IPv6 header of the Session-Reflector test packet and in the same order.

When Session-Reflector received STAMP test packet with IPv6 option but it does not carry STAMP TLV of "Reflected IPv6 Option Data", the Session-Reflector does not copy the IPv6 option into the Session-Reflector test packet.

When Session-Sender test packets carry an IPv6 option-type that it does not require Session-Reflector to reflect in the Session-Reflector test packet, it does not add the matching Reflected IPv6 option Data TLV in the STAMP test packet.

Note that the use-case where the IPv6 option length changes in the packet along the path is outside the scope of this document.

Note that use-case where IPv6 options are added or removed in the packet along the path is outside the scope of this document.

3.2. MPLS Data plane

This document also defines a new TLV option for STAMP, called "Reflected MNA Sub-Stack Data" (value TBA2). When a STAMP Session-Sender adds an MNA Sub-Stack in the test packet, it also adds "Reflected MNA Sub-Stack Data" STAMP TLV in the Session-Sender test packet with size of the MNA Sub-Stack length (NASL) including In-Stack Ancillary Data (ISD) and Post-Stack Ancillary Data (PSD) and MNA header and the value field in the TLV initialized to zeros. When adding multiple MNA Sub Stacks in the Session-Sender test packet, multiple "Reflected MNA Sub-Stack Data" TLVs MUST be added, each one with matching length with the MNA Sub-Stack and Ancillary Data and in the same order.

An example STAMP test packet for MPLS data plane with MNA Sub-Stacks in MPLS header and reflected MNA Sub-Stacks in STAMP TLVs is shown in Figure 3.

    +--------------------------------------+
    | MPLS Header                          |
    +--------------------------------------+
    | MNA Sub-Stack1 I-D.ietf-mpls-mna-hdr |
    +--------------------------------------+
    | MNA Sub-Stack2 I-D.ietf-mpls-mna-hdr |
    +--------------------------------------+
    | MNA Sub-Stack3 I-D.ietf-mpls-mna-hdr |
    +--------------------------------------+
    | IP Header                            |
    +--------------------------------------+
    | UDP Header                           |
    +--------------------------------------+
    | STAMP Packet RFC 8972                |
    +--------------------------------------+
    | MNA Sub-Stack1 Data STAMP TLV (TBA2) |
    +--------------------------------------+
    | MNA Sub-Stack2 Data STAMP TLV (TBA2) |
    +--------------------------------------+
    | MNA Sub-Stack3 Data STAMP TLV (TBA2) |
    +--------------------------------------+
Figure 3: Example STAMP Test Packet with Reflected MNA Sub-Stack Data

When Session-Reflector receives STAMP test packet with MNA and STAMP TLV of "Reflected MNA Sub-Stack Data", the Session-Reflector that supports this STAMP TLV, MUST copy the entire MNA Sub-Stack, Ancillary Data including the header into the "Reflected MNA Sub-Stack Data" TLV in Session-Reflector payload. The Session-Reflector also MUST add the matching MNA Sub-Stacks and Ancillary Data in the MPLS header of the Session-Reflector test packet for the reverse direction for two-way measurement. When there are multiple MNA Sub-Stacks in the Session-Sender test packet, all MNA Sub-Stacks including Ancillary Data MUST be copied in the STAMP TLVs and MUST add all MNA Sub-Stacks including Ancillary Data in the Session-Reflector test packet and in the same order.

When Session-Reflector received STAMP test packet with MNA Sub-Stack but it does not carry STAMP TLV of "Reflected MNA Sub-Stack Data", the Session-Reflector does not copy the MNA Sub-Stack into the Session-Reflector test packet.

When Session-Sender test packets carry an MNA Sub-Stack that it does not require Session-Reflector to reflect in the Session-Reflector test packet, it does not add the matching Reflected MNA Sub-Stack Data TLV in the STAMP test packet.

Note that the use-case where the MNA Sub-Stack length changes in the packet along the path is outside the scope of this document.

Note that use-case where MNA Sub-Stacks are added or removed in the packet along the path is outside the scope of this document.

4. Example of Reflecting IOAM Data Fields

In Situ Operations, Administration, and Maintenance (IOAM) is used for recording and collecting operational and telemetry information while the packet traverses a path between two points in the network. The IOAM data fields are defined in [RFC9197]. Examples of data recorded by IOAM Trace Options includes per-hop information, e.g., node ID, timestamp, queue depth, interface ID, interface load, etc. The information collected can be used, for example, monitoring ECMP paths, proof-of-transit (POT) and troubleshooting failures in the network. The procedure and STAMP extensions defined in this document can be used to reflect the collected IOAM data fields back to the Sender where the Sender can use that information to support the hop-by-hop and edge-to-edge measurement use-cases.

4.1. IPv6 Data plane

[RFC9486] defines types for HBH and destination options and are used to carry the IOAM option-types defined in [RFC9197] for IPv6 data plane. The STAMP Session-Sender and Session-Reflector test packets carry the IPv6 options with IOAM option-types for recording and collecting HBH and E2E operational and telemetry information for active measurement as shown in Figure 4. The Session-Sender, midpoints, and Session-Reflector nodes process the IOAM data fields as defined in [RFC9486]. Note that using certain IOAM option-type (e.g., Incremental Trace Option-Type) can lead to increasing the packet size and can result in asymmetric size STAMP packets in two directions.

    +-------------------------------------+
    | IPv6 Header                         |
    +-------------------------------------+
    | HBH IOAM IPv6 Option RFC 9486       |
    +-------------------------------------+
    | UDP Header                          |
    +-------------------------------------+
    | STAMP Packet RFC 8972               |
    +-------------------------------------+
    | IPv6 Option Data STAMP TLV (TBA1)   |
    +-------------------------------------+
Figure 4: Example STAMP Test Packet with Reflected IPv6 Option Data TLV

4.2. MPLS Data plane

[I-D.ietf-mpls-mna-hdr] defines MNA Sub-Stack to carry various Network Actions with Ancillary data. The STAMP Session-Sender and Session-Reflector test packets carry the MNA Sub-Stack for recording and collecting HBH and E2E operational and telemetry information for active measurement as shown in Figure 5.

    +---------------------------------------+
    | MPLS Header                           |
    +---------------------------------------+
    | HBH IOAM MNA Sub-Stack RFC 9197       |
    +---------------------------------------+
    | IP Header                             |
    +---------------------------------------+
    | UDP Header                            |
    +---------------------------------------+
    | STAMP Packet RFC 8972                 |
    +---------------------------------------+
    | MNA Sub-Stack Data STAMP TLV (TBA2)   |
    +---------------------------------------+
Figure 5: Example STAMP Test Packet with Reflected MNA Sub-Stack Data TLV

5. STAMP Extensions

5.1. Reflected IPv6 Option Data STAMP TLV

The Reflected IPv6 Option Data STAMP TLV is carried by Session-Sender and Session-Reflector test packets. STAMP test packets may carry multiple TLVs of this type. The same Reflected IPv6 Option Data STAMP TLV is used for reflecting both HBH and Destination IPv6 options. The format of the Reflected IPv6 Option Data TLV is shown in Figure 6.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |STAMP TLV Flags|  Type=TBA1    |         Length                |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                    Reflected IPv6 Option Data                 |
 ~                                                               ~
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 6: Reflected IPv6 Option Data TLV

The TLV fields are defined as follows:

Type : Type (value TBA1)

STAMP TLV Flags : The STAMP TLV Flags follow the procedures described in [RFC8972].

Length : A two-octet field equal to the length of the Data in octets.

The Session-Reflector MUST return an error in STAMP TLV Flags when it determines that the length of the TLV does not match the length of the corresponding IPv6 option when processing in the same order as IPv6 options in the IPv6 header.

5.2. Reflected MNA Sub-Stack Data STAMP TLV

The Reflected MNA Sub-Stack Data STAMP TLV is carried by Session-Sender and Session-Reflector test packets. STAMP test packets may carry multiple TLVs of this type. The format of the Reflected MNA Sub-Stack Data TLV is shown in Figure 7.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |STAMP TLV Flags|  Type=TBA2    |         Length                |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                    Reflected MNA Sub-Stack Data               |
 ~                                                               ~
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 7: Reflected MNA Sub-Stack Data TLV

The TLV fields are defined as follows:

Type : Type (value TBA2)

STAMP TLV Flags : The STAMP TLV Flags follow the procedures described in [RFC8972].

Length : A two-octet field equal to the length of the Data in octets.

The Session-Reflector MUST return an error in STAMP TLV Flags when it determines that the length of the TLV does not match the length of the corresponding MNA Sub-Stack when processing in the same order as MNA Sub-Stacks in the MPLS header.

5.3. One-Way Measurement with Reflected Data STAMP TLV

The IPv6 options and MNA Sub-Stacks in Session-Sender test packets need to be reflected to the Session-Sender even in case of one-way measurement in Session-Sender to Session-Reflector direction.

In this document, new Sub-TLV "Extension Header Control" (Type TBA3) is defined for STAMP TLV Type "Reflected Test Packet Control TLV" (Type TBA4) defined in [I-D.mirsky-ippm-asymmetrical-pkts].

When Session-Sender test packet is received with "Extension Header Control" Sub-TLV, Session-Reflector does not add the received IPv6 option in the IPv6 header or MNA Sub-stack in the MPLS header of the Session-Reflector STAMP test packet.

Session-Reflector copies the IPv6 options and MNA Sub-Stacks from the Session-Sender test packet into the corresponding Session-Reflector test packet Reflected Data STAMP TLVs (Type TBA1 and TBA2) (if they were received in the Session-Sender test packet). In this case, symmetric STAMP test packet payload size is maintained in both directions, however, the symmetric header size of the STAMP test packets is not maintained.

6. Security Considerations

The security considerations specified in [RFC8762], [RFC8972], [RFC8200], [RFC9197], and [I-D.ietf-mpls-mna-hdr] also apply to the procedure and extensions defined in this document.

7. IANA Considerations

IANA has created the "STAMP TLV Types" registry for [RFC8972]. IANA is requested to allocate a value for the "Reflected IPv6 Option Data" TLV Type and a value for the "Reflected MNA Sub-Stack Data" TLV Type from the IETF Review TLV range of the same registry.

Table 1: STAMP TLV Types
Value Description Reference
TBA1 Reflected IPv6 Option Data This document
TBA2 Reflected MNA Sub-Stack Data This document

IANA is requested to allocate a value for Sub-TLV Type "Extension Header Control" (Type TBA3) for STAMP TLV Type "Reflected Test Packet Control TLV" (Type TBA4) defined in [I-D.mirsky-ippm-asymmetrical-pkts].

8. References

8.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>.
[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>.
[I-D.mirsky-ippm-asymmetrical-pkts]
Mirsky, G., Ruffini, E., Nydell, H., and R. Foote, "Performance Measurement with Asymmetrical Packets in STAMP", Work in Progress, Internet-Draft, draft-mirsky-ippm-asymmetrical-pkts-03, , <https://datatracker.ietf.org/api/v1/doc/document/draft-mirsky-ippm-asymmetrical-pkts/>.

8.2. Informative References

[RFC8200]
Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", STD 86, RFC 8200, DOI 10.17487/RFC8200, , <https://www.rfc-editor.org/info/rfc8200>.
[RFC9197]
Brockners, F., Ed., Bhandari, S., Ed., and T. Mizrahi, Ed., "Data Fields for In Situ Operations, Administration, and Maintenance (IOAM)", RFC 9197, DOI 10.17487/RFC9197, , <https://www.rfc-editor.org/info/rfc9197>.
[RFC9486]
Bhandari, S., Ed. and F. Brockners, Ed., "IPv6 Options for In Situ Operations, Administration, and Maintenance (IOAM)", RFC 9486, DOI 10.17487/RFC9486, , <https://www.rfc-editor.org/info/rfc9486>.
[RFC8250]
Elkins, N., Hamilton, R., and M. Ackermann, "IPv6 Performance and Diagnostic Metrics (PDM) Destination Option", RFC 8250, DOI 10.17487/RFC8250, , <https://www.rfc-editor.org/info/rfc8250>.
[RFC9268]
Hinden, R. and G. Fairhurst, "IPv6 Minimum Path MTU Hop-by-Hop Option", RFC 9268, DOI 10.17487/RFC9268, , <https://www.rfc-editor.org/info/rfc9268>.
[I-D.ietf-mpls-mna-hdr]
Rajamanickam, J., Gandhi, R., Zigler, R., Song, H., and K. Kompella, "MPLS Network Action (MNA) Sub-Stack Solution", Work in Progress, Internet-Draft, draft-ietf-mpls-mna-hdr-04, , <https://datatracker.ietf.org/doc/html/draft-ietf-mpls-mna-hdr-04>.

Acknowledgments

The authors would like to thank Greg Mirsky and Xiao Min for reviewing this document and providing useful comments and suggestions.

Authors' Addresses

Rakesh Gandhi (editor)
Cisco Systems, Inc.
Canada
Tianran Zhou
Huawei
China