RFC 7750

Differentiated Service Code Point and Explicit Congestion Notification Monitoring in the Two-Way Active Measurement Protocol (TWAMP)

πŸ“… published February 2016, from ietf

RFC 7750: Differentiated Service Code Point and Explicit Congestion Notification Monitoring in the Two-Way Active Measurement Protocol (TWAMP) ✨

  • Who wrote it: J. Hedin, G. Mirsky, and S. Baillargeon, all from Ericsson πŸ’–
  • Where it came from: the Internet Engineering Task Force (IETF) 🌐
  • Category: Standards Track πŸ”₯
  • Date: February 2016 🌸
  • ISSN: 2070-1721
  • Updates: RFC 5357 (this one extends TWAMP, so it's literally building on RFC 5357) πŸ™Œ

Abstract πŸ¦‹

okay so this doc describes an optional extension for the Two-Way Active Measurement Protocol (TWAMP) πŸ“‘ It lets you monitor the Differentiated Service Code Point (DSCP) and Explicit Congestion Notification (ECN) fields using the TWAMP-Test protocol. Main character energy πŸ’…

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, received public review, and was approved for publication by the Internet Engineering Steering Group (IESG). If you want more info about Internet Standards, check Section 2 of RFC 5741. πŸ“–

You can find the current status of this document, any errata, and a way to send feedback at http://www.rfc-editor.org/info/rfc7750. πŸ”—

Copyright (c) 2016 IETF Trust and the persons identified as the document authors. All rights reserved. ©️

This document is covered by BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info), as they stand on the publication date. Please actually read them, bestie, because they spell out your rights and restrictions for this document. 🫢 Any Code Components pulled out of this document must include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come without warranty, as described in the Simplified BSD License. βš–οΈ

Table of Contents πŸ“‘

1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
  1.1.  Conventions Used in This Document . . . . . . . . . . . .   3
    1.1.1.  Terminology . . . . . . . . . . . . . . . . . . . . .   3
    1.1.2.  Requirements Language . . . . . . . . . . . . . . . .   3
2.  TWAMP Extensions  . . . . . . . . . . . . . . . . . . . . . .   3
  2.1.  Setting Up Connection to Monitor DSCP and ECN . . . . . .   3
  2.2.  TWAMP-Test Extension  . . . . . . . . . . . . . . . . . .   4
    2.2.1.  Session-Reflector Packet Format for DSCP and ECN
            Monitoring  . . . . . . . . . . . . . . . . . . . . .   4
    2.2.2.  DSCP and ECN Monitoring with Extensions from RFC 6038   8
    2.2.3.  Consideration for TWAMP Light Mode  . . . . . . . . .   8
3.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   9
4.  Security Considerations . . . . . . . . . . . . . . . . . . .   9
5.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   9
  5.1.  Normative References  . . . . . . . . . . . . . . . . . .   9
  5.2.  Informative References  . . . . . . . . . . . . . . . . .  10
Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  10
Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  11

1. Introduction 🌸

okay, background time πŸ€“ The One-Way Active Measurement Protocol (OWAMP) [RFC4656] defines the Type-P Descriptor field and how its value gets negotiated in the OWAMP-Control protocol. TWAMP [RFC5357] says that the only thing the Type-P Descriptor can hold is a Differentiated Services Code Point (DSCP) value (see [RFC2474], [RFC3168], and [RFC3260]), and the negotiated value must be used by both the Session-Sender and the Session-Reflector. TWAMP also says that the same DSCP value (the one found in the Session-Sender packet) MUST be used in the test packet that the Session-Reflector reflects back. πŸ”

Here's the problem though 😭 The TWAMP-Test protocol has no way to figure out, or report, when the DSCP value has changed or doesn't match what was expected, in either the forward or the reverse direction. Re-marking the DSCP (changing its original value) is totally possible in IP networks, and it's usually done by a Differentiated Services policy configured on a single node along the IP path. In a lot of cases, a DSCP change means something went wrong, whether that's an accident or a bug πŸ’€ At best, the Session-Sender can spot a change in the reverse direction, assuming that change is actually detectable. πŸ•΅οΈβ€β™€οΈ

So this document describes an OPTIONAL feature for TWAMP called DSCP and ECN Monitoring πŸŽ€ It lets the Session-Sender see the actual DSCP value that arrived at the Session-Reflector. It also tracks the ECN value (see [RFC2474], [RFC3168], and [RFC3260]) that arrived at the Session-Reflector. This helps you figure out whether ECN is really working, or whether an ECN-capable node has spotted congestion in the forward direction. It's giving detective πŸ”βœ¨

1.1. Conventions Used in This Document πŸ’…

1.1.1. Terminology πŸ“š

  • DSCP: Differentiated Services Code Point πŸ“
  • ECN: Explicit Congestion Notification 🌈
  • IPPM: IP Performance Metrics πŸ“Š
  • TWAMP: Two-Way Active Measurement Protocol πŸ“‘
  • OWAMP: One-Way Active Measurement Protocol πŸ¦‹

1.1.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 [RFC2119]. These are the official BCP 14 vibes, so read them carefully 🧐

2. TWAMP Extensions πŸ¦‹

TWAMP connection setup follows the procedure in Section 3.1 of [RFC4656] and Section 3.1 of [RFC5357], where the Modes field is used to identify and select specific communication capabilities. The Modes field is also recognized and used as an extension mechanism [RFC6038], which is kind of iconic of it πŸ‘‘ The new feature needs a new flag so that a Session-Reflector can announce that it's able to send back the received DSCP and ECN values to a Session-Sender, and so that it can support the new Session-Reflector packet format in the TWAMP-Test protocol. Check Section 3 for the details on the assigned bit position. 🧩

2.1. Setting Up Connection to Monitor DSCP and ECN πŸŽ€

The Server sets the DSCP and ECN Monitoring flag in the Modes field of the Server Greeting message to show that it can monitor them and is willing to do it. πŸ™‹β€β™€οΈ If the Control-Client agrees to monitor DSCP and ECN on some or all of the test sessions started on this control connection, it MUST set the DSCP and ECN Monitoring flag in the Modes field of the Setup Response message. no cap, this is the handshake that makes it happen ✨

2.2. TWAMP-Test Extension 🧚

Monitoring DSCP and ECN needs support from the Session-Reflector, and it changes the test packet format in all of the original modes (unauthenticated, authenticated, and encrypted). πŸ” Monitoring DSCP and ECN doesn't change the Session-Sender test packet format, but there are some things to keep in mind if this mode gets accepted together with Symmetrical Size mode [RFC6038]. Lowkey the most important thing to watch πŸ‘€

To be continued in part 2 🌸

2.2.1. Session-Reflector Packet Format for DSCP and ECN Monitoring

okay bestie, so when the Session-Reflector is doing DSCP and ECN Monitoring, it builds the Sender DSCP and ECN (S-DSCP-ECN) field for every test packet it sends back to the Session-Sender πŸ¦‹ here's the step by step:

  • the six (least-significant) bits of the Differentiated Service field MUST be copied from the received Session-Sender test packet into the Sender DSCP (S-DSCP) field;
  • the two bits of the ECN field MUST be copied from the received Session-Sender test packet into the Sender ECN (S-ECN) field.
  0   1   2   3   4   5   6   7
+---+---+---+---+---+---+---+---+
|         S-DSCP        | S-ECN |
+---+---+---+---+---+---+---+---+

            Figure 1: Sender DSCP and ECN Field Format

the test packet the Session-Reflector sends in unauthenticated, authenticated, and encrypted modes has its format defined in Section 4.2.1 of [RFC5357] πŸ“š and for the Session-Reflector that supports DSCP and ECN Monitoring, those formats are shown in Figures 2 and 3 πŸ’…

For 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                         |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  Sender Sequence Number                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Sender Timestamp                          |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Sender Error Estimate      |             MBZ               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sender TTL    |  S-DSCP-ECN   |             MBZ               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                        Packet Padding                         ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  Figure 2: Session-Reflector Test Packet Format with DSCP and ECN
                 Monitoring in Unauthenticated Mode

the DSCP and ECN values (part of the Type-P Descriptor [RFC4656]) can be provisioned through TWAMP-Control or by other means (command-line interface (CLI) or Central Controller) πŸŽ€ and honestly, current TWAMP implementations often just copy the DSCP and ECN values into reflected test packets even without the TWAMP-Control protocol, which is so relatable 😭 with the DSCP and ECN Monitoring extension, the Session-Reflector handles the DSCP like this:

  • the Session-Reflector MUST extract the DSCP and ECN values from the received packet and MUST use them to populate the S-DSCP-ECN field of the corresponding reflected packet;
  • the Session-Reflector MUST transmit each reflected test packet with the DSCP set to the provisioned value;
  • if the provisioned DSCP value is not known (e.g., TWAMP Light), the choice of the DSCP is implementation specific. For instance, the Session-Reflector MAY copy the DSCP value from the received test packet and set it as the DSCP in a reflected packet. Alternatively, the Session-Reflector MAY set the DSCP value to CS0 (zero) [RFC2474] ✨
  • if the provisioned ECN value is not known, ECN SHOULD be set to Not-ECT codepoint value [RFC3168]. Otherwise, the provisioned ECN value for the session SHALL be used. 🫢
A Session-Reflector in the DSCP and ECN Monitoring mode does not analyze nor act on the ECN value of the received TWAMP test packet, so it ignores congestion indications from the network. It is expected that sending rates are low enough, as TWAMP deployment experience had demonstrated since TWAMP base (RFC 5357) was published in 2008, that ignoring these congestion indications will not significantly contribute to network congestion. 🌈

For authenticated and encrypted modes:

 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)                          |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   Sender Sequence Number                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                      MBZ (12 octets)                          |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Sender Timestamp                         |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Sender Error Estimate      |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
|                         MBZ (6 octets)                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sender TTL    |  S-DSCP-ECN   |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
|                                                               |
|                         MBZ (14 octets)                       |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                        HMAC (16 octets)                       |
|                                                               |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                       Packet Padding                          ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  Figure 3: Session-Reflector Test Packet Format with DSCP and ECN
           Monitoring in Authenticated or Encrypted Modes

2.2.2. DSCP and ECN Monitoring with Extensions from RFC 6038

[RFC6038] defined two extensions to TWAMP πŸ’œ first, so the Session-Sender and Session-Reflector exchange TWAMP-Test packets of equal size, and second, to specify the number of octets to be reflected by the Session-Reflector. If DSCP and ECN Monitoring and Symmetrical Size and/or Reflects Octets modes are being negotiated between Server and Control-Client in Unauthenticated mode, then, because Sender DSCP and Sender ECN increase the size of the unauthenticated Session-Reflector packet by 4 octets, the Padding Length value SHOULD be greater than or equal to 28 octets to allow for the truncation process that TWAMP recommends in Section 4.2.1 of [RFC5357] πŸ“

 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 (28 octets)                       |
|                                                               |
+                             +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             |                                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                                 +
|                                                               |
.                                                               .
.                        Packet Padding                         .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    Figure 4: Session-Sender Test Packet Format with DSCP and ECN
   Monitoring and Symmetrical Test Packet in Unauthenticated Mode

2.2.3. Consideration for TWAMP Light Mode

Appendix I of [RFC5357] doesn't explicitly say how the value of the Type-P Descriptor gets synchronized between the Session-Sender and Session-Reflector, or whether different values count as error conditions that should be reported πŸ€” so we're assuming that by some means, the Session-Sender and the Session-Reflector of the given TWAMP-Test session have been told to use the same DSCP value. The same means (like configuration) could tell the Session-Reflector to support the DSCP and ECN Monitoring mode by copying data from received TWAMP test packets 🧚 then the Session-Sender may be told to use the Sender DSCP and ECN field in the reflected TWAMP test packet. ✨

3. IANA Considerations ✨

okay so IANA gets a new little spot in the TWAMP-Modes registry, which is defined in [RFC5618] πŸ’… they reserved a brand new DSCP and ECN Monitoring Capability for it, and it lives at bit position 8 πŸ¦‹ the defining section is Section 2 and the reference is RFC 7750. here's the table, bestie:

+-----+---------------------------+---------------------+-----------+
| Bit | Description               | Semantics           | Reference |
| Pos |                           | Definition          |           |
+-----+---------------------------+---------------------+-----------+
| 8   | DSCP and ECN Monitoring   | Section 2           | RFC 7750  |
|     | Capability                |                     |           |
+-----+---------------------------+---------------------+-----------+

Table 1: New Type-P Descriptor Monitoring Capability

4. Security Considerations πŸ”

okay the security part is actually chill, lowkey 🫢 monitoring DSCP and ECN doesn't appear to add any extra security threat for hosts talking over TWAMP as defined in [RFC5357] and the existing extensions in [RFC6038]. no cap, but if you're going deep, sections such as 3.2, 4, 4.1.2, 4.2, and 4.2.1 of [RFC5357] cover unauthenticated, authenticated, and encrypted modes in different levels of detail, so go read those πŸ“š

the security considerations for any active measurement of live networks also apply here, bestie. for the full picture, check the Security Considerations sections in [RFC4656] and [RFC5357] πŸ’œ

⚠️ Active measurement sends traffic into live networks, so every security consideration that comes with that still applies. Don't skip the reading! πŸ™ˆ

5. References πŸ“–

5.1. Normative References

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

[RFC2474]  Nichols, K., Blake, S., Baker, F., and D. Black,
           "Definition of the Differentiated Services Field (DS
           Field) in the IPv4 and IPv6 Headers", RFC 2474,
           DOI 10.17487/RFC2474, December 1998,
           <http://www.rfc-editor.org/info/rfc2474>.

[RFC3168]  Ramakrishnan, K., Floyd, S., and D. Black, "The Addition
           of Explicit Congestion Notification (ECN) to IP",
           RFC 3168, DOI 10.17487/RFC3168, September 2001,
           <http://www.rfc-editor.org/info/rfc3168>.

[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,
           <http://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,
           <http://www.rfc-editor.org/info/rfc5357>.

[RFC5618]  Morton, A. and K. Hedayat, "Mixed Security Mode for the
           Two-Way Active Measurement Protocol (TWAMP)", RFC 5618,
           DOI 10.17487/RFC5618, August 2009,
           <http://www.rfc-editor.org/info/rfc5618>.

[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,
           <http://www.rfc-editor.org/info/rfc6038>.

5.2. Informative References

[RFC3260]  Grossman, D., "New Terminology and Clarifications for
           Diffserv", RFC 3260, DOI 10.17487/RFC3260, April 2002,
           <http://www.rfc-editor.org/info/rfc3260>.

Acknowledgements 🌸

the authors gave a huge shoutout πŸ™Œ to Bill Cerveny, Christofer Flinta, and Samita Chakrabarti for their thorough review and thoughtful comments. iconic behaviour, honestly πŸ‘‘

Authors' Addresses πŸ’Œ

Jonas Hedin
Ericsson

Email: jonas.hedin@ericsson.com


Greg Mirsky
Ericsson

Email: gregory.mirsky@ericsson.com


Steve  Baillargeon
Ericsson

Email: steve.baillargeon@ericsson.com

πŸ“¦ where this page comes from