RFC 9503: Simple Two-Way Active Measurement Protocol (STAMP) Extensions for Segment Routing Networks
- R. Gandhi, Ed.,
- C. Filsfils,
- M. Chen,
- B. Janssens,
- R. Foote
Abstract
Segment Routing (SR) leverages the source routing paradigm. SR is applicable to both Multiprotocol Label Switching (SR-MPLS) and IPv6 (SRv6) forwarding planes. This document specifies Simple Two-Way Active Measurement Protocol (STAMP) extensions (as described in RFC 8762) for SR networks, for both the SR-MPLS and SRv6 forwarding planes, by augmenting the optional extensions defined in RFC 8972.¶
Status of This Memo
This is an Internet Standards Track document.¶
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.¶
Information about the current status of this document, any
errata, and how to provide feedback on it may be obtained at
https://
Copyright Notice
Copyright (c) 2023 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://
1. Introduction
Segment Routing (SR) leverages the source routing paradigm
for Software
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.
Note that the YANG data model defined in [IPPM-STAMP-YANG]
can be used to provision the STAMP Session-Sender and STAMP Session
STAMP test packets are transmitted along an IP path between a Session-Sender
and a Session
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.3. Reference Topology
In the reference topology shown below, the STAMP Session-Sender S1 initiates a
STAMP test packet and the STAMP Session
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 nodes S1 and R1 may be connected via a link or an SR path [RFC8402]. The link may be a physical interface, virtual link, Link Aggregation Group (LAG) [IEEE802.1AX], or LAG member. The SR path may be an SR Policy [RFC9256] on node S1 (called "head-end") with a destination to node R1 (called "tail-end").¶
3. Destination Node Address TLV
The Session-Sender may need to transmit test packets to the Session
[RFC8972] defines STAMP Session-Sender and Session
The TLV fields are defined as follows:¶
- STAMP TLV Flags:
- The STAMP TLV Flags follow the procedures described in [RFC8972] and this document.¶
- Type:
- Type (value 9) for the IPv4 Destination Node Address TLV or IPv6 Destination Node Address TLV.¶
- Length:
- A 2-octet field equal to the length of the Address field in octets. The length is 4 octets for an IPv4 address and 16 octets for an IPv6 address.¶
The Destination Node Address TLV indicates an address of the intended
Session
A Session
4. Return Path TLV
For end-to-end SR paths, the Session
There are two modes defined for the behaviors on the Session
For links, the Session
[RFC8972] defines STAMP test packets that can include one or more optional TLVs. In this document, the TLV Type (value 10) is defined for the Return Path TLV that carries the Return Path for the Session-Sender test packet. The format of the Return Path TLV is shown in Figure 3:¶
The TLV fields are defined as follows:¶
- STAMP TLV Flags:
- The STAMP TLV Flags follow the procedures described in [RFC8972] and this document.¶
- Type:
- Type (value 10) for the Return Path TLV.¶
- Length:
- A 2-octet field equal to the length of the Return Path Sub-TLVs field in octets.¶
- Return Path Sub-TLVs:
- As defined in Section 4.1.¶
A Session-Sender MUST NOT insert more than one Return Path TLV in the
STAMP test packet. A Session
A Session
4.1. Return Path Sub-TLVs
The Return Path TLV contains one or more Sub-TLVs to carry the information for the requested Return Path. A Return Path Sub-TLV can carry a Return Path Control Code, Return Path IP Address, or Return Path Segment List.¶
The STAMP Sub-TLV Flags are set using the procedures described in [RFC8972].¶
A Return Path TLV MUST NOT contain more than one Control Code Sub-TLV, Return Address Sub-TLV, or Return Path Segment List Sub-TLV in a Session-Sender test packet.¶
A Return Path TLV MUST NOT contain both a Control Code Sub-TLV and a Return Address or Return Path Segment List Sub-TLV in a Session-Sender test packet.¶
A Return Path TLV MAY contain both a Return Address and a Return Path Segment List Sub-TLV in a Session-Sender test packet.¶
4.1.1. Return Path Control Code Sub-TLV
The format of the Control Code Sub-TLV in the Return Path TLV is shown in Figure 4.¶
The TLV fields are defined as follows:¶
- Type:
- Type (value 1) for the Return Path Control Code.
The Session-Sender can request the Session
-Reflector to transmit the reply test packet based on the flags defined in the Control Code Flags field.¶ - STAMP TLV Flags:
- The STAMP TLV Flags follow the procedures described in [RFC8972] and this document.¶
- Length:
- A 2-octet field equal to the length of the Control Code flags, which is 4 octets.¶
- Control Code Flags (32 bits):
-
Reply Request Flag at bit 31 (least significant bit) is defined as follows.¶
All other bits are reserved and must be transmitted as 0 and ignored by the receiver.¶
When Control Code flag for Reply Request is set to 0x0 in the Session-Sender test packet,
the Session
When Control Code flag for Reply Request is set to 0x1 in the Session-Sender test packet,
the Session
4.1.2. Return Address Sub-TLVs
The STAMP reply test packet may be transmitted to the Session-Sender to the specified Return Address in the Return Address Sub-TLV instead of transmitting to the Source Address in the Session-Sender test packet.¶
The formats of the IPv4 and IPv6 Return Address Sub-TLVs in the Return Path TLV are shown in Figure 5.¶
The TLV fields are defined as follows:¶
- Type:
- Type (value 2) for the Return IPv4 Address or Return IPv6 Address.¶
The Return Address requests that the Session
4.1.3. Return Path Segment List Sub-TLVs
The format of the Segment List Sub-TLVs in the Return Path TLV is shown in Figures 6 and 7. The Segments carried in Segment List Sub-TLVs are described in [RFC8402]. The segment entries MUST be in network order.¶
The Session-Sender MUST only insert one Return Path Segment List Sub-TLV
in the test packet, and the Segment List MUST contain at least one Segment. The Session
The TLV fields are defined as follows:¶
- The Return Path Segment List Sub-TLV can be one of the following Types:
-
- STAMP TLV Flags:
- The STAMP TLV Flags follow the procedures described in [RFC8972] and this document.¶
- Length:
- A 2-octet field equal to the length of the Segment List field in octets. The length MUST NOT be 0.¶
4.1.3.1. Return Path SR-MPLS Label Stack Sub-TLV
The SR-MPLS Label Stack contains a list of 32-bit Label Stack Entries (LSEs) that includes a 20-bit label value, an 8-bit Time-To-Live (TTL) value, a 3-bit Traffic Class (TC) value, and a 1-bit End-of-Stack (S) field. The length of the Sub-TLV modulo 4 MUST be 0.¶
As an example, an SR-MPLS Label Stack Sub-TLV could carry only the Binding SID Label
[PCE
As another example, an SR-MPLS Label Stack Sub-TLV could include the Path Segment Identifier Label of the Return SR-MPLS Policy in the Segment List of the SR-MPLS Policy.¶
4.1.3.2. Return Path SRv6 Segment List Sub-TLV
The SRv6 Segment List contains a list of 128-bit IPv6 addresses representing the SRv6 SIDs. The length of the Sub-TLV modulo 16 MUST be 0.¶
As an example, a Return Path SRv6 Segment List Sub-TLV could carry only the SRv6 Binding SID
[PCE
As another example, a Return Path SRv6 Segment List Sub-TLV could include the SRv6 Path Segment Identifier of the Return SRv6 Policy in the Segment List of the SRv6 Policy.¶
5. Interoperability with TWAMP Light
This document does not introduce any additional considerations for interoperabilit
As described in [RFC8762], there are two possible
combinations for such an interoperabilit
If any of the STAMP extensions defined in this document are used by STAMP Session-Sender,
the TWAMP Light Session
6. Security Considerations
The security considerations specified in [RFC8762] and [RFC8972] also apply to the extensions defined in this document. Specifically, the authenticated mode and the message integrity protection using Hashed Message Authentication Code (HMAC), as defined in Section 4.4 of [RFC8762], also apply to the procedures described in this document.¶
STAMP uses the well-known UDP port number that could become a target of denial of service (DoS) or could be used to aid on-path attacks. Thus, the security considerations and measures to mitigate the risk of the attack documented in Section 6 of [RFC8545] equally apply to the STAMP extensions in this document.¶
If desired, attacks can be mitigated by performing basic validation checks of the timestamp fields (such as T2 is later than T1 in the reference topology in Section 2.3) in received reply test packets at the Session-Sender. The minimal state associated with these protocols also limit the extent of measurement disruption that can be caused by a corrupt or invalid test packet to a single test cycle.¶
The usage of STAMP extensions defined in this document is intended for deployment in a single network administrative domain.
As such, the Session-Sender address, Session
The STAMP extensions defined in this document may be used for
potential address spoofing. For example, a Session-Sender
may specify a Return Path IP Address that is different from the Session-Sender address.
The Session
7. IANA Considerations
IANA has allocated a value for the Destination Address TLV Type and a value for the Return Path TLV Type from the IETF Review TLV range in the "STAMP TLV Types" registry [RFC8972] as follows.¶
IANA has created the "Return Path Sub-TLV Types" registry. All code points in the range 1 through 175 in this registry shall be allocated according to the "IETF Review" procedure as specified in [RFC8126]. Code points in the range 176 through 239 shall be allocated according to the "First Come First Served" procedure as specified in [RFC8126]. Remaining code points shall be allocated according to Table 2:¶
IANA has allocated values for the following Sub-TLV Types in the "Return Path Sub-TLV Types" registry.¶
IANA has created the "Return Path Control Code Flags" registry for Return Path Control Code Sub-TLVs. All code points in the bit position 31 (counting from bit 31 as the least significant bit) through 12 in this registry shall be allocated according to the "IETF Review" procedure as specified in [RFC8126]. Code points in the bit position 11 through 8 shall be allocated according to the "First Come First Served" procedure as specified in [RFC8126]. Remaining code points shall be allocated according to Table 4:¶
IANA has allocated a value in the "Return Path Control Code Flags" registry as follows.¶
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 , , <https:///RFC2119 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 , , <https:///RFC8174 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 , , <https:///RFC8762 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 , , <https:///RFC8972 www >..rfc -editor .org /info /rfc8972
8.2. Informative References
- [IEEE802.1AX]
-
IEEE, "IEEE Standard for Local and metropolitan area networks -- Link Aggregation", IEEE Std 802.1AX-2014, DOI 10
.1109 , , <https:///IEEESTD .2014 .7055197 doi >..org /10 .1109 /IEEESTD .2014 .7055197 - [IPPM
-STAMP -YANG] -
Mirsky, G., Min, X., and W. S. Luo, "Simple Two-way Active Measurement Protocol (STAMP) Data Model", Work in Progress, Internet-Draft, draft
-ietf , , <https://-ippm -stamp -yang -11 datatracker >..ietf .org /doc /html /draft -ietf -ippm -stamp -yang -11 - [PCE
-BINDING -LABEL -SID] -
Sivabalan, S., Filsfils, C., Tantsura, J., Previdi, S., and C. Li, Ed., "Carrying Binding Label/Segment Identifier (SID) in PCE-based Networks.", Work in Progress, Internet-Draft, draft
-ietf , , <https://-pce -binding -label -sid -16 datatracker >..ietf .org /doc /html /draft -ietf -pce -binding -label -sid -16 - [RFC8126]
-
Cotton, M., Leiba, B., and T. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10
.17487 , , <https:///RFC8126 www >..rfc -editor .org /info /rfc8126 - [RFC8402]
-
Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing Architecture", RFC 8402, DOI 10
.17487 , , <https:///RFC8402 www >..rfc -editor .org /info /rfc8402 - [RFC8545]
-
Morton, A., Ed. and G. Mirsky, Ed., "Well-Known Port Assignments for the One-Way Active Measurement Protocol (OWAMP) and the Two-Way Active Measurement Protocol (TWAMP)", RFC 8545, DOI 10
.17487 , , <https:///RFC8545 www >..rfc -editor .org /info /rfc8545 - [RFC9256]
-
Filsfils, C., Talaulikar, K., Ed., Voyer, D., Bogdanov, A., and P. Mattes, "Segment Routing Policy Architecture", RFC 9256, DOI 10
.17487 , , <https:///RFC9256 www >..rfc -editor .org /info /rfc9256 - [STAMP-ON-LAG]
-
Li, Z., Zhou, T., Guo, J., Mirsky, G., and R. Gandhi, "Simple Two-Way Active Measurement Protocol Extensions for Performance Measurement on LAG", Work in Progress, Internet-Draft, draft
-ietf , , <https://-ippm -stamp -on -lag -05 datatracker >..ietf .org /doc /html /draft -ietf -ippm -stamp -on -lag -05
Appendix A. Destination Node Address TLV Use-Case Example
STAMP test packets can be encapsulated with 1) an SR-MPLS Label Stack and IPv4 header containing an IPv4 Destination Address from the 127/8 range or 2) an outer IPv6 header and a Segment Routing Header (SRH) with an inner IPv6 header containing an IPv6 Destination Address from the ::1/128 range.¶
In an ECMP environment, the hashing function in forwarding may decide the outgoing path using the Source Address, Destination Address, UDP ports, IPv6 flow-label, etc. from the packet. Hence, for IPv4, for example, different values of an IPv4 Destination Address from the 127/8 range may be used in the IPv4 header of the STAMP test packets to measure different ECMP paths. For IPv6, for example, different values of flow-label may be used in the IPv6 header of the STAMP test packets to measure different ECMP paths.¶
In those cases, the STAMP test packets may reach a node that is not the Session
Acknowledgments
The authors would like to thank Thierry Couture for the discussions on the use cases for Performance Measurement in Segment Routing. The authors would also like to thank Greg Mirsky, Mike Koldychev, Gyan Mishra, Tianran Zhou, Al Morton, Reshad Rahman, Zhenqiang Li, Frank Brockners, Henrik Nydell, and Cheng Li for providing comments and suggestions. Thank you to Joel Halpern for the Gen-ART review, Martin Duke for the AD review, and Kathleen Moriarty for the Security review. The authors would also like to thank Robert Wilton, Éric Vyncke, Paul Wouters, John Scudder, Roman Danyliw, Lars Eggert, Erik Kline, Warren Kumari, and Jim Guichard for the IESG review.¶
Contributors
The following person has contributed substantially to this document:¶