RFC 8762

Simple Two-Way Active Measurement Protocol

๐Ÿ“… published March 2020, from ietf

Abstract ๐ŸŽ€

Okay bestie, this one is the whole intro in one bite. It's called the Simple Two-way Active Measurement Protocol (STAMP), and it lets you measure both one-way and round-trip performance metrics, like delay, delay variation, and packet loss. ๐Ÿฆ‹

Status of This Memo โœจ

This is an Internet Standards Track document. ๐Ÿ’…

It's a product of the Internet Engineering Task Force (IETF), so it represents the consensus of the IETF community. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG). If you want more on Internet Standards, check Section 2 of RFC 7841.

Info about the current status of this document, any errata, and how to give feedback lives at https://www.rfc-editor.org/info/rfc8762. ๐ŸŒธ

Copyright (c) 2020 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, because they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they are provided without warranty as described in the Simplified BSD License. ๐Ÿซถ

Table of Contents ๐Ÿงš

   1.  Introduction
   2.  Conventions Used in This Document
     2.1.  Terminology
     2.2.  Requirements Language
   3.  Operation and Management of Performance Measurement Based on
           STAMP
   4.  Theory of Operation
     4.1.  UDP Port Numbers in STAMP Testing
     4.2.  Session-Sender Behavior and Packet Format
       4.2.1.  Session-Sender Packet Format in Unauthenticated Mode
       4.2.2.  Session-Sender Packet Format in Authenticated Mode
     4.3.  Session-Reflector Behavior and Packet Format
       4.3.1.  Session-Reflector Packet Format in Unauthenticated Mode
       4.3.2.  Session-Reflector Packet Format in Authenticated Mode
     4.4.  Integrity Protection in STAMP
     4.5.  Confidentiality Protection in STAMP
     4.6.  Interoperability with TWAMP Light
   5.  Operational Considerations
   6.  IANA Considerations
   7.  Security Considerations
   8.  References
     8.1.  Normative References
     8.2.  Informative References
   Acknowledgments
   Authors' Addresses

1. Introduction โœจ

Okay so the Two-Way Active Measurement Protocol (TWAMP) [RFC5357] and its extensions, like [RFC6038] (which defines Symmetrical Size for TWAMP), gave everyone invaluable experience. Several independent implementations of both TWAMP and TWAMP Light exist, have been deployed, and provide important operational performance measurements. The whole ecosystem is giving real-world proof. ๐Ÿ‘‘

At the same time, people are super interested in a more straightforward mechanism for active performance monitoring. Ideally it gives deterministic behavior and keeps control (vendor-specific configuration or orchestration) fully separate from the test functions. ๐ŸŽ€

Here's the tea: the Broadband Forum's "Performance Measurement from IP Edge to Customer Equipment using TWAMP Light" [BBF.TR-390] shows that interoperability among TWAMP Light implementations is hard. Why? The composition and operation of TWAMP Light were not sufficiently specified in [RFC5357]. According to [RFC8545], TWAMP Light includes a subset of TWAMP-Test functions. So if you want a comprehensive tool to measure packet loss and delay, you need other applications to handle things like control and security. ๐Ÿ™ˆ

This document defines an active performance measurement test protocol, the Simple Two-way Active Measurement Protocol (STAMP). It measures both one-way and round-trip performance metrics, like delay, delay variation, and packet loss. Support for some optional TWAMP extensions, like [RFC7750], is discussed in [STAMP-OPTION]. ๐Ÿ’…

2. Conventions Used in This Document ๐ŸŒˆ

2.1. Terminology ๐Ÿ“

STAMP:      Simple Two-way Active Measurement Protocol

NTP:        Network Time Protocol

PTP:        Precision Time Protocol

HMAC:       Hashed Message Authentication Code

OWAMP:      One-Way Active Measurement Protocol

TWAMP:      Two-Way Active Measurement Protocol

MBZ:        Must be Zero

PDU:        Protocol Data Unit

2.2. 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. โญ

3. Operation and Management of Performance Measurement Based on STAMP ๐Ÿฆ‹

Figure 1 shows the Simple Two-way Active Measurement Protocol (STAMP) Session-Sender and Session-Reflector with a measurement session. In this doc, a measurement session (also called a "STAMP session") is the bidirectional packet flow between one specific Session-Sender and one particular Session-Reflector for a time duration.

Configuring and managing the STAMP Session-Sender, Session-Reflector, and sessions is outside the scope of this document, and it can be done in various ways. A few examples are Command Line Interface, telecommunication services' Operational Support System (OSS) / Business Support System (BSS), SNMP, and NETCONF/YANG-based Software-Defined Networking (SDN) controllers. ๐Ÿงš

         o----------------------------------------------------------o
         |                      Configuration and                   |
         |                         Management                       |
         o----------------------------------------------------------o
                ||                                          ||
                ||                                          ||
                ||                                          ||
     +----------------------+                +-------------------------+
     | STAMP Session-Sender | <--- STAMP---> | STAMP Session-Reflector |
     +----------------------+                +-------------------------+

                      Figure 1: STAMP Reference Model

4. Theory of Operation ๐Ÿ”ฅ

The STAMP Session-Sender sends test packets over UDP transport toward the STAMP Session-Reflector. The Session-Reflector gets the Session-Sender's packet and acts according to the configuration. There are two modes for the STAMP Session-Reflector, and they set the expected behavior and, therefore, which performance metrics you can measure:

  • Stateless: The STAMP Session-Reflector doesn't keep test state. It uses the value in the Sequence Number field of the received packet as the value for the Sequence Number field in the reflected packet. As a result, the Sequence Number and Session-Sender Sequence Number fields have the same values, and only round-trip packet loss can be calculated while the reflector is in stateless mode. ๐ŸŒธ
  • Stateful: The STAMP Session-Reflector keeps the test state. That lets the Session-Sender figure out the direction of loss, using the gaps it spots in the Session-Sender Sequence Number and Sequence Number fields. So both near-end (forward) and far-end (backward) packet loss can be computed. That means the STAMP Session-Reflector MUST maintain a state for each configured STAMP-Test session, which uniquely ties STAMP-Test packets to one session instance. It also enables adding a sequence number in the test reply that gets incremented by one on a per-session basis. ๐Ÿ“

STAMP supports two authentication modes: unauthenticated and authenticated. Unauthenticated STAMP-Test packets, defined in Sections 4.2.1 and 4.3.1, make sure STAMP and TWAMP Light can work together, as covered in Section 4.6 about packet formats. ๐Ÿซถ

By default, STAMP uses symmetrical packets. That means the packet the Session-Reflector sends is the same size as the packet it received. ๐Ÿ’…

4.1. UDP Port Numbers in STAMP Testing ๐Ÿฆ‹

A STAMP Session-Sender MUST use UDP port 862 (TWAMP-Test Receiver Port) as the default destination UDP port number. A STAMP implementation of the Session-Sender MUST be able to be used as the destination UDP port numbers from the User Ports (aka Registered Ports) and Dynamic Ports (aka Private or Ephemeral Ports) ranges defined in [RFC6335]. Before using numbers from the User Ports range, the possible impact on the network MUST be carefully studied and agreed on by all users of the network domain where the test has been planned. โš ๏ธ

By default, an implementation of the STAMP Session-Reflector MUST receive STAMP-Test packets on UDP port 862. An implementation of the Session-Reflector that supports this specification MUST be able to define the port number used to receive STAMP-Test packets from the User Ports and Dynamic Ports ranges, which are defined in [RFC6335]. STAMP defines two different test packet formats: one for packets sent by the STAMP Session-Sender and one for packets sent by the STAMP Session-Reflector. ๐ŸŒˆ

4.2. Session-Sender Behavior and Packet Format ๐ŸŽ€

A STAMP Session-Reflector supports the symmetrical size of test packets, as defined in Section 3 of [RFC6038], as its default behavior. A reflected base test packet includes information from the Session-Reflector, so it's bigger. To keep the base STAMP packets symmetrical, the base STAMP Session-Sender packet includes the Must-Be-Zero (MBZ) field, so it matches the size of a base reflected STAMP test packet. So the base STAMP Session-Sender packet has a minimum size of 44 octets in unauthenticated mode (see Figure 2) and 112 octets in authenticated mode (see Figure 4). Generating variable-length test packets in STAMP is defined in [STAMP-OPTION]. โœจ

4.2.1. Session-Sender Packet Format in Unauthenticated Mode โœจ

okay so this is the unauthenticated version of the Session-Sender packet, the basic one ๐Ÿ’– here's the layout, bestie:

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                        Sequence Number                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                          Timestamp                            |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |         Error Estimate        |                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
      |                                                               |
      |                                                               |
      |                        MBZ  (30 octets)                       |
      |                                                               |
      |                                                               |
      |                                                               |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

            Figure 2: STAMP Session-Sender Test Packet Format in
                            Unauthenticated Mode

here's what each field does ๐ŸŽ€

  • Sequence Number ๐Ÿ”ข: this one is four octets long. For each new session it starts at zero and goes up by one with every packet that gets sent.
  • Timestamp โฐ: this one is eight octets long. The STAMP node MUST support the NTP version 4 64-bit timestamp format [RFC5905], which is the format used in [RFC5357]. The STAMP node MAY also support the IEEE 1588v2 PTP truncated 64-bit timestamp format [IEEE.1588.2008], which is the format used in [RFC8186]. Whether you go with NTP or PTP is part of configuring the Session-Sender or the particular test session, so it's not a random pick ๐Ÿ’…
  • Error Estimate ๐Ÿ“: two octets long, laid out like this:
         0                   1
         0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |S|Z|   Scale   |   Multiplier  |
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                 Figure 3: Error Estimate Format

The S, Scale, and Multiplier fields are read the way they're defined in Section 4.1.2 of [RFC4656]. The Z field is read the way it's defined in Section 2.3 of [RFC8186]:

  • 0 means NTP 64-bit format of a timestamp ๐Ÿ•ฐ๏ธ
  • 1 means PTPv2 truncated format of a timestamp โŒš

The default is NTP 64-bit format (Z field value of 0). An operator using the configuration or management function MAY configure the Session-Sender and Session-Reflector to use the PTPv2 truncated format (Z field value of 1) instead ๐ŸŒธ Also, a Session-Sender implementation that supports this specification MAY be configured to use the PTPv2 format even if the Session-Reflector is set up for NTP format. Mixing and matching, iykyk ๐Ÿซถ

  • MBZ ๐Ÿซง: in the Session-Sender unauthenticated packet this is 30 octets long. It MUST be all zeroed on transmission and MUST be ignored on receipt. Zeros out, no drama ๐Ÿงš

4.2.2. Session-Sender Packet Format in Authenticated Mode ๐Ÿ”

now the authenticated one, which is giving security glow-up ๐Ÿ‘‘

     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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                      Sequence Number                          |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                      MBZ (12 octets)                          |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        Timestamp                              |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |        Error Estimate         |                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
    ~                                                               ~
    |                         MBZ (70 octets)                       |
    ~                                                               ~
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                       HMAC (16 octets)                        |
    |                                                               |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

            Figure 4: STAMP Session-Sender Test Packet Format in
                             Authenticated Mode

so the field definitions are the same as the unauthenticated mode, which you can find in Section 4.2.1 ๐Ÿง  The MBZ fields are there to make the packet length a multiple of 16 octets ๐Ÿ“ The value of the field MUST be zeroed on transmission and MUST be ignored on receipt. Note that both MBZ fields get used when calculating a keyed hash message authentication code (HMAC) [RFC2104] hash ๐Ÿ‘€ The packet also ends with an HMAC hash at the end of the PDU ๐Ÿ”’ The detailed use of the HMAC field is described in Section 4.4. ๐Ÿ’œ


4.3. Session-Reflector Behavior and Packet Format ๐Ÿชž

the Session-Reflector is the one that receives the STAMP-Test packet and checks it out โœ… If the base STAMP-Test packet passes validation, the Session-Reflector that supports this specification prepares and sends back the reflected test packet, mirroring the one it got from the Session-Sender. It copies the content that sits beyond the size of the base STAMP packet (see Section 4.2). Reflection era ๐Ÿฆ‹

4.3.1. Session-Reflector Packet Format in Unauthenticated Mode ๐ŸŒˆ

     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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        Sequence Number                        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                          Timestamp                            |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |         Error Estimate        |            MBZ                |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                          Receive Timestamp                    |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                 Session-Sender Sequence Number                |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                  Session-Sender Timestamp                     |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Session-Sender Error Estimate |            MBZ                |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |Ses-Sender TTL |                      MBZ                      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

          Figure 5: STAMP Session-Reflector Test Packet Format in
                            Unauthenticated Mode

here's the scoop on each field ๐Ÿ“

  • Sequence Number ๐Ÿ”ข: four octets long. Its value depends on the mode the STAMP Session-Reflector is in:
    • In the stateless mode, the Session-Reflector copies the value from the received STAMP-Test packet's Sequence Number field ๐Ÿชž
    • In the stateful mode, the Session-Reflector counts the STAMP-Test packets it transmits. It starts at zero and goes up by one for each subsequent packet, for each test session. It uses that counter to set the value of the Sequence Number field ๐Ÿงฎ
  • Timestamp and Receive Timestamp โฑ๏ธ: each one is eight octets long. The format, NTP or PTPv2, is indicated by the Z field of the Error Estimate field, as described in Section 4.2.1. Receive Timestamp is the time the test packet got received by the Session-Reflector. Timestamp is the time the Session-Reflector takes at the start of sending the test packet ๐Ÿ’ซ
  • Error Estimate ๐Ÿ“: same size and interpretation as in Section 4.2.1. It applies to both Timestamp and Receive Timestamp ๐Ÿซถ
  • Session-Sender Sequence Number, Session-Sender Timestamp, and Session-Sender Error Estimate ๐Ÿ“‹: these are copies of the matching fields from the STAMP-Test packet the Session-Sender sent ๐ŸŽ€
  • Session-Sender TTL ๐Ÿ›ธ: one octet long. Its value is a copy of the TTL field in IPv4 (or Hop Limit in IPv6) from the received STAMP-Test packet ๐ŸŒ
  • MBZ ๐Ÿซง: these fields line everything up on a four-octet boundary. The value of each MBZ field MUST be zeroed on transmission and MUST be ignored on receipt. Zeroes, always, periodt ๐Ÿ’…

4.3.2. Session-Reflector Packet Format in Authenticated Mode โœจ

Okay bestie, here's the authenticated Session-Reflector packet, and it's basically the unauthenticated one with a little glam upgrade ๐Ÿ’… Figure 6 shows the full layout ๐Ÿฆ‹

      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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                        Sequence Number                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                        MBZ (12 octets)                        |
      |                                                               |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                          Timestamp                            |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |         Error Estimate        |                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
      |                        MBZ (6 octets)                         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                        Receive Timestamp                      |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                        MBZ (8 octets)                         |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                 Session-Sender Sequence Number                |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                        MBZ (12 octets)                        |
      |                                                               |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                 Session-Sender Timestamp                      |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      | Session-Sender Error Estimate |                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
      |                        MBZ (6 octets)                         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |Ses-Sender TTL |                                               |
      +-+-+-+-+-+-+-+-+                                               +
      |                                                               |
      |                        MBZ (15 octets)                        |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                        HMAC (16 octets)                       |
      |                                                               |
      |                                                               |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

          Figure 6: STAMP Session-Reflector Test Packet Format in
                             Authenticated Mode

The field definitions are the same as in unauthenticated mode, so check out Section 4.3.1 for those ๐ŸŒธ The extra thing here is that the MBZ field is used to make the packet length a multiple of 16 octets ๐ŸŽ€ The value of the field MUST be zeroed on transmission and MUST be ignored on receipt. Also, the MBZ field gets used to calculate the HMAC hash value, which is so iconic ๐Ÿงš And the authenticated format ends with the HMAC [RFC2104] hash at the end of the PDU. The detailed use of the HMAC field is in Section 4.4 ๐Ÿ’œ

4.4. Integrity Protection in STAMP

Okay so authenticated mode is all about integrity protection ๐Ÿซถ Every STAMP message gets a Hashed Message Authentication Code (HMAC) tacked on. STAMP uses HMAC-SHA-256 truncated to 128 bits, similar to how IPsec does it in [RFC4868], which is why the HMAC field is 16 octets. In authenticated mode, HMAC covers the first six blocks (96 octets). HMAC gets its own key, and that key may be unique for each STAMP-Test session ๐Ÿ”‘ Key management and the mechanisms for distributing the HMAC key are outside the scope of this specification, so that's not our problem today ๐Ÿ™ˆ One example is using an orchestrator to configure the HMAC key based on the STAMP YANG data model [STAMP-YANG]. HMAC MUST be verified as early as possible to avoid using or propagating corrupted data. Bestie, this part is non-negotiable ๐Ÿ˜ค

Future specifications may define other, more advanced cryptographic algorithms, possibly with an update to the STAMP YANG data model [STAMP-YANG] ๐Ÿ”ฎ

4.5. Confidentiality Protection in STAMP

If confidentiality protection for STAMP is required, a STAMP-Test session MUST use a secured transport. For example, STAMP packets could go through a dedicated IPsec tunnel, or they could share the IPsec tunnel with the monitored flow. Also, Datagram Transport Layer Security would give you the confidentiality protection you're after ๐Ÿ”

4.6. Interoperability with TWAMP Light

Interworking with a TWAMP Light device is one of the essential requirements for STAMP, so this is a big deal ๐Ÿ‘‘ Since STAMP and TWAMP use different algorithms in authenticated mode (HMAC-SHA-256 versus HMAC-SHA-1), interoperability is only considered for unauthenticated mode. There are two possible combinations for this use case:

  • STAMP Session-Sender with TWAMP Light Session-Reflector
  • TWAMP Light Session-Sender with STAMP Session-Reflector

In the first case, the Session-Sender might not know that its Session-Reflector doesn't support STAMP ๐Ÿ™ƒ For example, a TWAMP Light Session-Reflector may not support UDP port 862, as specified in [RFC8545]. So Section 4 lets a STAMP Session-Sender use alternative ports. If any STAMP extensions are used, the TWAMP Light Session-Reflector will treat them as the Packet Padding field ๐Ÿงฉ

In the second scenario, if a TWAMP Light Session-Sender doesn't support UDP port 862, the test management system MUST set the STAMP Session-Reflector to use a UDP port number, as permitted by Section 4. The Session-Reflector MUST be set to use the default timestamp format, which is NTP ๐Ÿ•ฐ๏ธ

A STAMP Session-Reflector that supports this specification will transmit the base packet (Figure 5) if it receives a packet smaller than the STAMP base packet. If the packet from the TWAMP Session-Sender is larger than the STAMP base packet, the STAMP Session-Reflector that supports this specification will copy the rest of the received packet to transmit a reflected packet of symmetrical size ๐Ÿชž

5. Operational Considerations โœจ

STAMP is meant for production networks so operators can check service level agreements based on packet delay, delay variation, and loss ๐Ÿ“Š When you use STAMP over the Internet, especially when STAMP-Test packets go to a destination UDP port from the User Ports range, you MUST thoroughly analyze the possible impact of those STAMP-Test packets ๐Ÿ˜ฌ Everyone using the nodes that host the Session-Sender and Session-Reflector MUST agree to the use of STAMP for each case before the STAMP-Test session starts.

Also, using the well-known port number as the destination UDP port in STAMP-Test packets sent by a Session-Sender won't stop you from measuring performance in an Equal-Cost Multipath environment, and the analysis in Section 5.3 of [RFC8545] fully applies to STAMP ๐ŸŒˆ

6. IANA Considerations ๐ŸŽ€

This document has no IANA actions. Nothing to register, nothing to update, we're chilling ๐ŸŒธ

7. Security Considerations ๐Ÿ”’

[RFC5357] doesn't identify security considerations specific to TWAMP-Test, but it points to the security considerations for OWAMP in [RFC4656]. Since both OWAMP and TWAMP have control-plane and data-plane components, only the OWAMP-Test security considerations in Sections 6.2 and 6.3 of [RFC4656] apply to STAMP ๐Ÿ˜ค

STAMP uses the well-known UDP port number allocated for the OWAMP-Test/TWAMP-Test Receiver Port. So the security considerations and mitigation measures for attacks using that registered port number, documented in Section 6 of [RFC8545], apply equally to STAMP ๐Ÿšจ Because control and management of a STAMP-Test are outside the scope of this specification, only the more general requirement is set:

To mitigate the possible attack vector, the control and management of a STAMP-Test session MUST use the secured transport.
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 UDP-based protocols. While the characteristics of test traffic depend on the test objective, it is highly recommended to stay within the limits provided in [RFC8085] ๐Ÿ“‰

Use of HMAC-SHA-256 in authenticated mode protects the data integrity of the STAMP-Test packets ๐Ÿ’–

8. References ๐Ÿ“š

The reference entries come next, bestie ๐Ÿ’…

8.1. Normative References ๐Ÿ“š

okay bestie, these are the normative references, the ones the main text leans on ๐Ÿซถ

[IEEE.1588.2008]
           IEEE, "IEEE Standard for a Precision Clock Synchronization
           Protocol for Networked Measurement and Control Systems",
           IEEE Standard 1588, July 2008.

[RFC2104]  Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-
           Hashing for Message Authentication", RFC 2104,
           DOI 10.17487/RFC2104, February 1997,
           <https://www.rfc-editor.org/info/rfc2104>.

[RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
           Requirement Levels", BCP 14, RFC 2119,
           DOI 10.17487/RFC2119, March 1997,
           <https://www.rfc-editor.org/info/rfc2119>.

[RFC4656]  Shalunov, S., Teitelbaum, B., Karp, A., Boote, J., and M.
           Zekauskas, "A One-way Active Measurement Protocol
           (OWAMP)", RFC 4656, DOI 10.17487/RFC4656, September 2006,
           <https://www.rfc-editor.org/info/rfc4656>.

[RFC5357]  Hedayat, K., Krzanowski, R., Morton, A., Yum, K., and J.
           Babiarz, "A Two-Way Active Measurement Protocol (TWAMP)",
           RFC 5357, DOI 10.17487/RFC5357, October 2008,
           <https://www.rfc-editor.org/info/rfc5357>.

[RFC5905]  Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch,
           "Network Time Protocol Version 4: Protocol and Algorithms
           Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010,
           <https://www.rfc-editor.org/info/rfc5905>.

[RFC6038]  Morton, A. and L. Ciavattone, "Two-Way Active Measurement
           Protocol (TWAMP) Reflect Octets and Symmetrical Size
           Features", RFC 6038, DOI 10.17487/RFC6038, October 2010,
           <https://www.rfc-editor.org/info/rfc6038>.

[RFC6335]  Cotton, M., Eggert, L., Touch, J., Westerlund, M., and S.
           Cheshire, "Internet Assigned Numbers Authority (IANA)
           Procedures for the Management of the Service Name and
           Transport Protocol Port Number Registry", BCP 165,
           RFC 6335, DOI 10.17487/RFC6335, August 2011,
           <https://www.rfc-editor.org/info/rfc6335>.

[RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
           2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
           May 2017, <https://www.rfc-editor.org/info/rfc8174>.

[RFC8186]  Mirsky, G. and I. Meilik, "Support of the IEEE 1588
           Timestamp Format in a Two-Way Active Measurement Protocol
           (TWAMP)", RFC 8186, DOI 10.17487/RFC8186, June 2017,
           <https://www.rfc-editor.org/info/rfc8186>.

[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/RFC8545, March 2019,
           <https://www.rfc-editor.org/info/rfc8545>.

8.2. Informative References ๐ŸŒธ

these ones are the extra reading: background, related work, and the drafts that were still in progress when this was written โœจ

[BBF.TR-390]
           Broadband Forum, "Performance Measurement from IP Edge to
           Customer Equipment using TWAMP Light", TR-390 Issue 1, May
           2017.

[RFC4868]  Kelly, S. and S. Frankel, "Using HMAC-SHA-256, HMAC-SHA-
           384, and HMAC-SHA-512 with IPsec", RFC 4868,
           DOI 10.17487/RFC4868, May 2007,
           <https://www.rfc-editor.org/info/rfc4868>.

[RFC7750]  Hedin, J., Mirsky, G., and S. Baillargeon, "Differentiated
           Service Code Point and Explicit Congestion Notification
           Monitoring in the Two-Way Active Measurement Protocol
           (TWAMP)", RFC 7750, DOI 10.17487/RFC7750, February 2016,
           <https://www.rfc-editor.org/info/rfc7750>.

[RFC8085]  Eggert, L., Fairhurst, G., and G. Shepherd, "UDP Usage
           Guidelines", BCP 145, RFC 8085, DOI 10.17487/RFC8085,
           March 2017, <https://www.rfc-editor.org/info/rfc8085>.

[STAMP-OPTION]
           Mirsky, G., Xiao, M., Nydell, H., Foote, R., Masputra, A.,
           and E. Ruffini, "Simple Two-way Active Measurement
           Protocol Optional Extensions", Work in Progress, Internet-
           Draft, draft-ietf-ippm-stamp-option-tlv-03, 21 February
           2020, <https://tools.ietf.org/html/draft-ietf-ippm-stamp-
           option-tlv-03>.

[STAMP-YANG]
           Mirsky, G., Xiao, M., and W. Luo, "Simple Two-way Active
           Measurement Protocol (STAMP) Data Model", Work in
           Progress, Internet-Draft, draft-ietf-ippm-stamp-yang-05,
           25 October 2019, <https://tools.ietf.org/html/draft-ietf-
           ippm-stamp-yang-05>.

Acknowledgments ๐Ÿ’–

the authors gave a huge shoutout to Jose Ignacio Alvarez-Hamelin and Brian Weis for their amazing insights into security and identity protection, plus super helpful and practical suggestions ๐Ÿซถ and a big thank you to David Ball, Rakesh Gandhi, and Xiao Min for their thorough reviews and helpful comments ๐ŸŽ€ literally the MVPs โœจ


Authors' Addresses ๐Ÿฆ‹

here are the people behind the spec, with their contact info exactly as written ๐Ÿ’…

Greg Mirsky
ZTE Corp.

Email: gregimirsky@gmail.com


Guo Jun
ZTE Corp.
68# Zijinghua Road
Nanjing
Jiangsu, 210012
China

Phone: +86 18105183663
Email: guo.jun2@zte.com.cn


Henrik Nydell
Accedian Networks

Email: hnydell@accedian.com


Richard Foote
Nokia

Email: footer.foote@nokia.com
๐Ÿ“ฆ where this page comes from