RFC 6802

Ericsson Two-Way Active Measurement Protocol (TWAMP) Value-Added Octets

πŸ“… published November 2012, from ietf

RFC 6802 πŸŽ€ Ericsson TWAMP Value-Added Octets

Ericsson Two-Way Active Measurement Protocol (TWAMP) Value-Added Octets

Okay bestie, the header says this one is by S. Baillargeon, C. Flinta, and A. Johnsson, all from Ericsson πŸ¦‹. It's an Informational doc, so it's published for info and isn't a standards-track spec πŸ’…. The date is November 2012, and the ISSN is 2070-1721 ✨. It doesn't obsolete or update anything, since the header doesn't list any RFCs πŸ™ˆ

Abstract 🌸

This memo describes an extension to the Two-Way Active Measurement Protocol (TWAMP) πŸ’–. It levels up the TWAMP-Test protocol (the part that identifies and manages packet trains πŸš‚) so you can measure capacity metrics like available path capacity, tight section capacity, and UDP delivery rate, in both the forward and reverse path directions. Iconic πŸ‘‘

Status of This Memo ✨

This document is not an Internet Standards Track specification. It's published for informational purposes, so no pressure 🫢

It's a product of the Internet Engineering Task Force (IETF) and was approved for publication by the Internet Engineering Steering Group (IESG). Not every IESG-approved doc is a candidate for any level of Internet Standard, so check Section 2 of RFC 5741 for the details 🧚

Want the current status, any errata, or a way to send feedback? Head to http://www.rfc-editor.org/info/rfc6802 πŸ’…

Copyright (c) 2012 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 (http://trustee.ietf.org/license-info) in effect on the date of publication. Please read these carefully, because they spell out your rights and restrictions for 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 come without warranty as described in the Simplified BSD License ⭐

Table of Contents πŸ“

1. Introduction ....................................................2
   1.1. Requirements Language ......................................3
2. Purpose and Scope ...............................................3
3. Capacity Measurement Principles .................................4
4. TWAMP-Control Extensions ........................................5
   4.1. Additional Considerations ..................................6
5. Extended TWAMP-Test .............................................6
   5.1. Sender Behavior ............................................6
        5.1.1. Packet Timings ......................................7
        5.1.2. Session-Sender Packet Format ........................7
   5.2. Reflector Behavior ........................................12
        5.2.1. Session-Reflector Packet Format ....................13
   5.3. Additional Considerations .................................13
6. Experiments ....................................................14
7. Security Considerations ........................................14
8. Acknowledgements ...............................................14
9. References .....................................................15
   9.1. Normative References ......................................15
   9.2. Informative References ....................................15

1. Introduction πŸ¦‹

Putting a bunch of meaningful fields into the padding octets is already a proven move for carrying extra info inside the TWAMP-Test protocol between a Session-Sender and a Session-Reflector [RFC5357] [RFC6038] πŸ’–

This memo describes an optional extension to the Two-Way Active Measurement Protocol (TWAMP) [RFC5357]. It's called the Ericsson TWAMP Value-Added Octets feature, and this memo defines version 1 πŸŽ€

Here's the glow-up: this feature lets the controller host measure capacity metrics like the IP-type-P available path capacity (APC) [RFC5136], the IP-layer tight section capacity (TSC) [Y1540], and UDP delivery rate on both forward and reverse paths, all in a single TWAMP test session πŸ”₯ How you actually calculate APC, TSC, or UDP delivery rate from packet-level performance data is not covered in this memo, so that's a different story πŸ™ˆ

The Valued-Added Octets feature has new behaviors for the Session-Sender and Session-Reflector. It also has a set of value-added octets that the Session-Sender places at the beginning of the Packet Padding [RFC5357], or right after the Server Octets in the Packet Padding (to be reflected) [RFC6038]. The Session-Reflector then reflects or returns them 🧚 In version 1, those octets are 10 octets long πŸ’… The feature doesn't change the basic roles of the TWAMP hosts. They're still in charge of including timestamp(s) and sequence number(s) in the test packets πŸ’œ

1.1. Requirements Language πŸ“œ

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119] ✨

2. Purpose and Scope 🌷

The purpose of this memo is to describe the Ericsson TWAMP Valued-Added Octets feature (version 1) for TWAMP [RFC5357] πŸŽ€

The scope is limited to these enhancements:

  • The definition of a structure for embedding a sequence of value-added fields at the beginning of the Packet Padding [RFC5357] or Packet Padding (to be reflected) [RFC6038] in the TWAMP-Test packets
  • The definition of new Session-Sender and Session-Reflector behaviors

The motivation here is measuring capacity metrics on both the forward and reverse paths using a single TWAMP test session, which is so smart 🧠 You can also use multiple TWAMP test sessions between a controller and a responder, each with different Diffserv Code Points (DSCPs), to see how QoS affects the capacity metrics 🌈

This memo captures the prototype presented and demonstrated at IETF 80. It can be a reference for future work, or it can be used during benchmark analysis to compare the accuracy or performance of the available path capacity estimates under various conditions or use cases πŸ“

This memo does not extend the standard modes of operation by assigning a new value in the Modes field (see Section 3.1 of [RFC4656] for the format of the Server Greeting message). It also doesn't define a vendor-specific or experimental mode, because the Modes field as currently defined doesn't reserve a value or range of values for that purpose πŸ™ˆ

This memo assumes the TWAMP controller can send test packets with value-added padding octets, and that the TWAMP responder is configured to interpret the value-added padding octets embedded in each TWAMP-Test packet. How the responder gets set up for that is implementation specific 🧚 By default, the feature MUST be disabled on the TWAMP host πŸ”’ The Value-Added Octets feature MUST be deployed in an environment where the controller and responder are managed by the same administrative entity. That entity must also have an agreement to operate the feature between the pair of hosts, or between specific UDP endpoints on that pair of hosts πŸ’– See Sections 4 and 5.3 for additional considerations πŸ’…

The Value-Added Octets Version 1 feature is meant to work with any TWAMP modes. When the Server and Control-Client are configured for it or have agreed to use it, then the Control-Client, the Server, the Session-Sender, and the Session-Reflector must all conform to that feature's requirements, as listed below 🫢

3. Capacity Measurement Principles πŸš‚

Most capacity estimation methods for APC [RRBNC] [PDM] [ENHJMMB] [SBW], and for UDP delivery rate, need to send and receive packets in groups called "packet trains" (or just "trains") πŸš‚ Each train is sent at a specific transmission rate in a given direction. These trains have to be identified within each bidirectional test session stream πŸ’œ

The first measurement principle is to send multiple trains within a test session stream from one IP node to another, so you can estimate the APC, TSC, or UDP delivery rate in the forward direction ✨ Each train is a group of test packets separated from each other by a packet interval, like this πŸ‘‡

      tt                      tt                      tt
|<---------->|          |<---------->|          |<---------->|
|            |          |            |          |            |
+------------+          +------------+          +------------+
|  Packet 1  |          |  Packet 2  |          |  Packet 3  |
+------------+          +------------+          +------------+
|                       |                       |
|<--------------------->|<--------------------->|
    packet interval 1       packet interval 2

The packet interval is measured using either the first bit or the last bit of two consecutive packets 🧠

The test packet size and the interval between consecutive packets for each train sent by the Session-Sender and reflected by the Session-Reflector MUST be calculated and determined by the controller, or by an application or entity communicating with the controller πŸ’– The packet size and interval MAY vary within a train and/or between trains πŸ¦‹ How you determine the packet size and interval is implementation specific 🧚

The transmission time tt to send one packet (determined by the interface speed and the IP packet size) is also shown in the figure above. Observe that the packet interval MUST be larger than or equal to tt πŸ‘€

At the Session-Reflector, each received test packet within a forward train gets time stamped. That gives a second set of packet interval values πŸ•°οΈ The methods for measuring APC, TSC, and UDP delivery rate use the packet intervals from both endpoints in the estimation process πŸ’… The UDP delivery rate method may also need the rate of packet loss. The estimation process itself, along with any requirements on software or hardware, is implementation specific 🫢

The second measurement principle is "self-induced congestion" πŸ”₯ Under this principle, to measure APC, TSC, and UDP delivery rates, some trains MUST cause momentary congestion on the network path. Basically, some trains MUST be sent at a higher rate than what's available on the network path πŸ’€

To measure the APC, TSC, and UDP delivery rates in the reverse direction, the test packets at the Session-Reflector MUST be regrouped into trains and then sent back to the Session-Sender with a provided packet interval 🌈

Part 2 picks up at Section 4 πŸ’–

4. TWAMP-Control Extensions ✨

okay so connection setup for TWAMP just follows the same steps as Section 3.1 of [RFC4656] and Section 3.1 of [RFC5357] πŸŽ€ the TWAMP-Control protocol [RFC5357] uses the Modes field to figure out and pick which communication capabilities are in play πŸ’… now here's the tea: the Value-Added Octets feature needs one brand new bit position (and value) so the Server/Session-Reflector can tell it's able to read and act on the new fields in the value-added octets 🫢 but this memo doesn't define that bit position or value, bestie 😭 and how you bootstrap TWAMP Value-Added Octets Version 1 is implementation specific 🧚

Both the Reflect Octets mode and Symmetrical Size mode MAY be selected so the Session-Reflector reflects the value-added padding octets and sends symmetrical size TWAMP-Test packets in both the forward and reverse directions πŸ¦‹ it's giving flexibility πŸ’–

4.1. Additional Considerations

okay so in the TWAMP control setup, the TWAMP reflector (server) tells everyone which modes it wants to run, and then the TWAMP controller (control-client) picks the mode or modes the responder supports 🌸 this is designed so it stays backward compatible with the original TWAMP-Control and TWAMP-Test protocols πŸ™ˆ and if you're not into that, the user can go with the TWAMP Light architecture instead, which doesn't need the TWAMP-Control protocol at all ✨

how you figure out whether a TWAMP reflector supports Value-Added Octets is implementation specific πŸ’… but here's the important bit: if the reflector doesn't support the Value-Added Octets feature, the TWAMP controller MUST NOT select that feature and MUST NOT include any value-added octets in the test packets 🚫 bestie, that's a hard no 😭 now if the controller accidentally sends value-added octets anyway to a TWAMP responder that doesn't support it, the responder shall treat those octets as regular padding octets πŸŽ€ and send the test packets back to the Session-Sender as fast as it can, as defined in [RFC5357] πŸƒβ€β™€οΈπŸ’¨

5. Extended TWAMP-Test πŸ¦‹

so the forward and reverse APC, TSC, and UDP delivery rate measurements all depend on the size and the packet intervals of the test packets 🌈 this memo lets packet sizes and packet intervals vary between trains, and even between packets inside the same train πŸ’œ here's how that works, iykyk πŸ‘€

the TWAMP-Test protocol carrying the value-added padding octets is basically identical to TWAMP [RFC5357] πŸ’– the only difference is how the first 10 octets in the Packet Padding are defined, since those are what the Session-Sender expects to get reflected 🫢 those new octets hold the fields for Value-Added Octets Version, Flags, Last Sequence Number in Train, and Desired Reverse Packet Interval πŸ“ we'll go through each one in detail below ✨

the Session-Sender and Session-Reflector behaviors also get modified πŸ”₯

5.1. Sender Behavior

this section covers the extensions to how the TWAMP Session-Sender behaves πŸ’…

5.1.1. Packet Timings

the Send Schedule isn't used in TWAMP at all, and this memo doesn't change that πŸ™ˆβœ¨

5.1.2. Session-Sender Packet Format ✨

okay so this section is all about how the Session-Sender builds its packets πŸŽ€ The whole process follows the same procedure and guidelines as TWAMP [RFC5357] and the TWAMP Reflect Octets and Symmetrical Size Features [RFC6038], so if you already know those, you're basically set πŸ’…

The big idea is that the Session-Sender can use the first few octets of the TWAMP-Test Packet Padding to pack in some extra info πŸ¦‹ That info is the value-added padding version number, some flag bits, the sequence number of the last packet in a train, and the desired reverse packet interval (aka the per-packet waiting time) for the reverse direction 🧚 The whole vibe is "bonus data, right where the reflector can find it" 🌸

The Valued-Added Octets feature has to sit immediately after the TWAMP header, or immediately after any new field that might get added to the TWAMP header or to the start of the padding octets later on πŸ”₯ So where the first bit of the value-added octets lands depends on which mode(s) you pick πŸ‘‘

The very first thing in the value-added padding is a version number, followed by a run of flag bits πŸ’œ The version number tells you which version of the padding you're looking at, and what the flag bits and their fields mean 🌈 Each flag bit tells you whether a specific field is being used in the padding. Put together, the version number and flag bits make it super easy for the Session-Reflector and the Session-Sender to pull out the info they need ✨ This document defines version 1, with two flag bits: L and I 🫢

The packet format changes depending on the TWAMP modes, but the Value-Added Octets Version 1 feature is built to work with any TWAMP mode πŸ’–

When the Value-Added Octets Version 1 feature is selected together with the Unauthenticated mode, the Session-Sender SHALL use this TWAMP-Test packet format 😭

  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        |  Ver  |L|I|     Reserved      |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                      Last Seqno In Train                      |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                Desired Reverse Packet Interval                |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                   Additional Packet Padding                   |
 .                                                               .
 .                                                               .
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

When the Value-Added Octets Version 1 feature is selected together with the Unauthenticated mode, Symmetrical Size mode, and Reflect Octets mode, the Session-Sender SHALL use this format πŸ“

  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 (27 octets)                       |
 |                                                               |
 |                                                               |
 |                                                               |
 |               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |               |  Ver  |L|I|      Reserved     |    Last...    |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |               Seqno in Train                  |   Desired...  |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |         Reverse Packet Interval               | Additional... |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                       Packet Padding                          |
 .                                                               .
 .                                                               .
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

When the Value-Added Octets Version 1 feature is selected together with the Unauthenticated mode, Symmetrical Size mode, and Reflect Octets mode with a non-zero value in the Server Octets field, the Session-Sender SHALL use this format πŸ™ˆ

  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 (27 octets)                       |
 |                                                               |
 |                                                               |
 |                                                               |
 |               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |               |         Server Octets         |  Ver  |L|I|...|
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   Reserved    |               Last Seqno in...                |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   Train       |             Desired Reverse Packet...         |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   Interval    |         Additional Packet Padding             |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 .                                                               .
 .                                                               .
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

In the Reflect Octets mode shown above, the value-added padding octets are embedded in the Packet Padding, which is what gets reflected back πŸ¦‹

The Version (Ver) field MUST be encoded in the first 4 bits πŸŽ€ It tells you the version number of the value-added padding octets, plus what the flag bits and the matching fields mean. This memo defines version 1, with two flag bits: L and I πŸ’… When the Value-Added Octets Version 1 feature is selected, the Session-Sender MUST set the Ver field to 1 πŸ‘‘

The 2 bits right after the Version field are used for flags: L and I 🌸

The Last Seqno in Train bit (L) is the first flag 🧚 When the Value-Added Octets Version 1 feature is selected, the Session-Sender MAY set the L bit to 1 ✨

The Desired Reverse Packet Interval bit (I) is the second flag 🫢 When the Value-Added Octets Version 1 feature is selected, the Session-Sender MAY set the I bit to 1 πŸ’œ

The Reserved field is reserved for future use 🌈 All 10 bits of the Reserved field MUST be transmitted as zero by the Session-Sender πŸ”₯

If the L bit is set to 1, then the Last Seqno in Train field MUST contain an unsigned 32-bit integer generated by the Session-Sender ⭐ It MUST indicate the expected sequence number of the last packet in the train. It SHOULD be used by the Session-Sender and Session-Reflector to figure out which train a test packet belongs to πŸ¦‹ Packets belonging to a train are determined by looking at the test packet's Sequence Number in relation to the Last Seqno in Train 🌸 The Last Seqno in Train MUST be higher than or equal to the Sequence Number of the packet, and it must also be higher than the Last Seqno in Train for the previous train 😭 If the L bit is set to 0, the Session-Sender shall set all the bits in the Last Seqno in Train field to zero πŸ’–

If the I bit is set to 1, then the Desired Reverse Packet Interval field MUST contain an unsigned 32-bit integer generated by the Session-Sender πŸ“ It MUST indicate the desired packet interval (or waiting time) that the Session-Reflector SHOULD use when sending the reflected test packets back toward the Session-Sender 🧚 A value of 0 means the Session-Reflector SHOULD return the test packet to the Session-Sender as quickly as possible ⚑ The format of this field MUST be a fractional part of a second, as defined in the One-Way Active Measurement Protocol (OWAMP) [RFC4656] πŸ”₯ If the I bit is set to 0, the Session-Sender shall set all the bits in the Desired Reverse Packet Interval field to zero 🫢

The values for all of these fields are usually provided by a measurement method, tool, or algorithm. That measurement algorithm is outside the scope of this specification, so this doc isn't going to tell you how to get them πŸ™ˆ

5.2. Reflector Behavior πŸͺž

okay so the TWAMP Session-Reflector follows the procedures and guidelines in Section 4.2 of [RFC5357] πŸ’…, with some changes and extra functions on top ✨

When the Value-Added Octets Version 1 feature is selected, the behavior of the Session-Reflector SHALL be as follows πŸ‘‘

  • The Session-Reflector MUST read the Version field. If Ver = 1, the Session-Reflector MUST read the L and I flag bits πŸŽ€
  • If L=1 and I=1, the Session-Reflector MUST read and extract the information from the Last Seqno in Train field and the Desired Reverse Packet Interval field in the value-added padding octets 🫢
    • The Last Seqno in Train MUST be compared to Sequence Number in the same packet, so it can figure out when a complete train has been collected 🧚. The Session-Reflector SHOULD buffer the packets belonging to the current train (or store the packet-level performance data). After the last packet of the train has been received, the Session-Reflector SHOULD transmit the packets belonging to a reverse train, with a waiting time (packet interval) for each packet indicated in the Desired Reverse Packet Interval field. If the Desired Reverse Packet Interval field is set to zero, then the Session-Reflector SHOULD transmit the packet as quickly as possible ⚑. The last packet within a train has Sender Sequence Number = Last Seqno in Train πŸ“
    • The Last Seqno in Train of a packet MUST also be compared to the Last Seqno in Train of the previous packet, so the Session-Reflector can tell if a new train needs to be collected πŸ”. In case of packet loss, the Session-Reflector MUST transmit the incomplete train when it receives a packet with a Last Seqno in Train belonging to another train (e.g., next train) of the test session, or after a timeout πŸ’€. The timeout MAY be the REFWAIT timer specified in section 4.2 of [RFC5357] ⏰
    • Packets arriving out-of-order within a train MUST be buffered at the Session-Reflector if the train is not yet transmitted to the Session-Sender πŸ“¦. If the train is already transmitted, the test packet SHOULD be returned to the Session-Sender as quickly as possible. The Session-Reflector MUST NOT reorder the test packets if they happen to arrive out-of-sequence πŸ™…β€β™€οΈ
    • Duplicate packets within a train MUST be buffered at the Session-Reflector if the train is not yet transmitted to the Session-Sender πŸͺž. If the train is already transmitted, the duplicate test packet SHOULD be returned to the Session-Sender as quickly as possible. The Session-Reflector MUST NOT discard duplicate test packets πŸ™ˆ

For any other combinations of the Version field and the L and I flags, the Session-Reflector SHOULD return the test packet to the Session-Sender as quickly as possible πŸ¦‹

The Session-Reflector MUST implement the changes described above when the Value-Added Octets Version 1 feature is selected 🌈

5.2.1. Session-Reflector Packet Format πŸŽ€

The Session-Reflector packet format follows the same procedure and guidelines as defined in TWAMP [RFC5357] and TWAMP Reflect Octets and Symmetrical Size Features [RFC6038], with the following changes πŸ’–

  • The Session-Reflector MUST reuse (reflect) the value-added padding octets (10 octets) provided in the Sender's Packet Padding 🌸
  • The Session-Reflector MAY reuse the rest of the padding octets in the Sender's Packet Padding πŸ“

The truncation process [RFC5357] is recommended when the Symmetrical mode is not used. The Session-Reflector MUST truncate exactly 27 octets of padding in Unauthenticated mode, and exactly 56 octets in Authenticated and Encrypted modes βœ‚οΈ

5.3. Additional Considerations 🧠

The Session-Reflector supporting the Value-Added Octets feature should revert back to the standard Session-Reflector behavior if it cannot interpret the value-added padding octets in a given test packet πŸ”„. Section 5.2 also describes such behavior. For instance, the test packet is returned as quickly as possible to the Session-Sender when the Last Seqno in Train is not what is expected πŸƒβ€β™€οΈ

Capacity measurements bring an extra wrinkle when the test sessions operate in TWAMP Light 🫠. When the Session-Reflector does not have knowledge of the session state, the measurement system may be restricted to estimating or calculating the capacity metrics in the forward path direction of transmission only. Capacity measurements in the reverse path direction are best handled with a Session-Reflector that has knowledge of the session state and is capable of identifying the test packets belonging to a specific test session πŸ”. A method for creating a session state from the initial test packet may be implemented on the TWAMP Light Session-Reflector. This is outside the scope of this specification πŸ™‹β€β™€οΈ

6. Experiments πŸ§ͺ

This memo describes the protocol used in the current working prototype implementation of the Value-Added Octets feature in the Ericsson lab 🏠. The prototype has been tested in real network environments, and the conclusion is that the Value-Added Octets feature is able to enable estimation of capacity metrics such as available path capacity in both the forward and reverse directions of the network path πŸŽ‰

During the experiments with the protocol described in this memo, the authors identified a need for the controller and responder to use the same maximum train length πŸ€”. The reflector must be able to buffer the whole train received from the controller. To reduce the risk for buffer overrun, the maximum train length should be negotiated. This can be resolved through configuration, introduction of a new field in the value-added octets, or a new maximum train length field in the Request-TW-Session message 🧩

The Sender Discriminator (SD) field, which was proposed in an early draft of this document, was removed because of complications with different Session-Reflector implementations. A Session-Reflector may not be able to easily identify the SD field or associate it with a specific Session-Sender, which may skew the test results πŸ™ƒ

The flags defined in the value-added octets now indicate the usage of fields and not the presence of fields. This change was needed to simplify the responder implementation in the working prototype πŸ› οΈ

7. Security Considerations 🚨

The value-added padding octets permit DoS attacks on the responder host communicating with core TWAMP [RFC5357]. For instance, a DoS condition could arise when the Last Seqno in Train is too large to handle, potentially causing undesirable processing delay or discard of the TWAMP-Test packets. The responder host MUST provide a mechanism to protect or limit the use of its local memory, buffer space, or maximum transmission time for a train. πŸ’€

The security considerations that apply to any active measurement of live networks are relevant here as well. See [RFC4656] and [RFC5357] πŸ”

8. Acknowledgements 🫢

The authors thank Svante Ekelin for providing direction and comments on this document πŸ’œ

9. References πŸ“š

9.1. Normative References

[RFC2119]   Bradner, S., "Key words for use in RFCs to Indicate
            Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC4656]   Shalunov, S., Teitelbaum, B., Karp, A., Boote, J., and M.
            Zekauskas, "A One-way Active Measurement Protocol
            (OWAMP)", RFC 4656, September 2006.

[RFC5136]   Chimento, P. and J. Ishac, "Defining Network Capacity",
            RFC 5136, February 2008.

[RFC5357]   Hedayat, K., Krzanowski, R., Morton, A., Yum, K., and J.
            Babiarz, "A Two-Way Active Measurement Protocol (TWAMP)",
            RFC 5357, October 2008.

[RFC6038]   Morton, A. and L. Ciavattone, "Two-Way Active Measurement
            Protocol (TWAMP) Reflect Octets and Symmetrical Size
            Features", RFC 6038, October 2010.

9.2. Informative References

[ENHJMMB]   Ekelin, S., Nilsson, M., Hartikainen, E., Johnsson, A.,
            Mangs, J., Melander, B., and M. Bjorkman, "Real-Time
            Measurement of End-to-End Available Bandwidth Using
            Kalman Filtering", Proceedings to the IEEE/IFIP Network
            Operations and Management Symposium, 2006.

[PDM]       Dovrolis, C., Ramanathan, P., and D. Moore, "Packet-
            Dispersion Techniques and a Capacity-Estimation
            Methodology", IEEE/ACM Transactions on Networking,
            December 2004.

[RRBNC]     Ribeiro, V., Riedi, R., Baraniuk, R., Navratil, J., and
            L. Cottrel, "pathChirp: Efficient Available Bandwidth
            Estimation for Network Paths", Passive and Active
            Monitoring Workshop, 2003.

[SBW]       Sommers, J., Barford, P., and W. Willinger, "Laboratory-
            based Calibration of Available Bandwidth Estimation
            Tools", Microprocessors and Microsystems, 2007.

[Y1540]     International Telecommunications Union, "Internet
            protocol data communication service - IP packet transfer
            and availability performance parameters", ITU-T
            Recommendation Y.1540, 2011.

Authors' Addresses πŸ’Œ

Steve Baillargeon
Ericsson
3500 Carling Avenue
Ottawa, Ontario K2H 8E9
Canada

EMail: steve.baillargeon@ericsson.com


Christofer Flinta
Ericsson
Farogatan 6
Stockholm, 164 80
Sweden

EMail: christofer.flinta@ericsson.com


Andreas Johnsson
Ericsson
Farogatan 6
Stockholm, 164 80
Sweden

EMail: andreas.a.johnsson@ericsson.com
πŸ“¦ where this page comes from