RFC 8912

Initial Performance Metrics Registry Entries

๐Ÿ“… published November 2021, from ietf

๐Ÿ“„ RFC 8912: Initial Performance Metrics Registry Entries ๐Ÿ’–

Okay bestie, this one is the intro part (part 1 of 13) and I am so ready ๐ŸŽ€โœจ Here's the title block. It's an IETF Standards Track doc from November 2021, written by A. Morton (AT&T Labs), M. Bagnulo (UC3M), P. Eardley (BT), and K. D'Souza (AT&T Labs). It doesn't obsolete or update anything else. It's the first batch of entries for the Performance Metrics Registry ๐Ÿฆ‹

Abstract ๐ŸŒธ

Okay so this memo sets up the starter pack of entries for the IANA Performance Metrics Registry ๐Ÿ’… The lineup: UDP Round-Trip Latency and Loss, Packet Delay Variation, DNS Response Latency and Loss, UDP Poisson One-Way Delay and Loss, UDP Periodic One-Way Delay and Loss, ICMP Round-Trip Latency and Loss, and TCP Round-Trip Delay and Loss. It's giving full performance glow-up ๐Ÿ”ฅ

Status of This Memo ๐Ÿงš

This is an Internet Standards Track document, so it's officially a real spec ๐Ÿ˜ญ

It's a product of the IETF, it reflects the consensus of the IETF community, it got public review, and the IESG approved it for publication. If you want to learn more about Internet Standards, check out Section 2 of RFC 7841 ๐Ÿ’œ

Info about the current status, errata, and how to send feedback lives at https://www.rfc-editor.org/info/rfc8912 ๐ŸŒˆ

Copyright (c) 2021 IETF Trust and the persons identified as the document authors. All rights reserved ๐Ÿ’…

This doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents, which you can find at https://trustee.ietf.org/license-info as of the publication date. Please actually read those, bestie, because they explain your rights and restrictions ๐Ÿ™ˆ

Code Components pulled out of this document must include Revised BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come without warranty, as described in the Revised BSD License. โš ๏ธ

Table of Contents ๐Ÿฆ‹

1.  Introduction
  1.1.  Requirements Language
2.  Scope
3.  Registry Categories and Columns
4.  UDP Round-Trip Latency and Loss Registry Entries
  4.1.  Summary
    4.1.1.  ID (Identifier)
    4.1.2.  Name
    4.1.3.  URI
    4.1.4.  Description
    4.1.5.  Change Controller
    4.1.6.  Version (of Registry Format)
  4.2.  Metric Definition
    4.2.1.  Reference Definition
    4.2.2.  Fixed Parameters
  4.3.  Method of Measurement
    4.3.1.  Reference Methods
    4.3.2.  Packet Stream Generation
    4.3.3.  Traffic Filtering (Observation) Details
    4.3.4.  Sampling Distribution
    4.3.5.  Runtime Parameters and Data Format
    4.3.6.  Roles
  4.4.  Output
    4.4.1.  Type
    4.4.2.  Reference Definition
    4.4.3.  Metric Units
    4.4.4.  Calibration
  4.5.  Administrative Items
    4.5.1.  Status
    4.5.2.  Requester
    4.5.3.  Revision
    4.5.4.  Revision Date
  4.6.  Comments and Remarks
5.  Packet Delay Variation Registry Entry
  5.1.  Summary
    5.1.1.  ID (Identifier)
    5.1.2.  Name
    5.1.3.  URI
    5.1.4.  Description
    5.1.5.  Change Controller
    5.1.6.  Version (of Registry Format)
  5.2.  Metric Definition
    5.2.1.  Reference Definition
    5.2.2.  Fixed Parameters
  5.3.  Method of Measurement
    5.3.1.  Reference Methods
    5.3.2.  Packet Stream Generation
    5.3.3.  Traffic Filtering (Observation) Details
    5.3.4.  Sampling Distribution
    5.3.5.  Runtime Parameters and Data Format
    5.3.6.  Roles
  5.4.  Output
    5.4.1.  Type
    5.4.2.  Reference Definition
    5.4.3.  Metric Units
    5.4.4.  Calibration
  5.5.  Administrative Items
    5.5.1.  Status
    5.5.2.  Requester
    5.5.3.  Revision
    5.5.4.  Revision Date
  5.6.  Comments and Remarks
6.  DNS Response Latency and Loss Registry Entries
  6.1.  Summary
    6.1.1.  ID (Identifier)
    6.1.2.  Name
    6.1.3.  URI
    6.1.4.  Description
    6.1.5.  Change Controller
    6.1.6.  Version (of Registry Format)
  6.2.  Metric Definition
    6.2.1.  Reference Definition
    6.2.2.  Fixed Parameters
  6.3.  Method of Measurement
    6.3.1.  Reference Methods
    6.3.2.  Packet Stream Generation
    6.3.3.  Traffic Filtering (Observation) Details
    6.3.4.  Sampling Distribution
    6.3.5.  Runtime Parameters and Data Format
    6.3.6.  Roles
  6.4.  Output
    6.4.1.  Type
    6.4.2.  Reference Definition
    6.4.3.  Metric Units
    6.4.4.  Calibration
  6.5.  Administrative Items
    6.5.1.  Status
    6.5.2.  Requester
    6.5.3.  Revision
    6.5.4.  Revision Date
  6.6.  Comments and Remarks
7.  UDP Poisson One-Way Delay and Loss Registry Entries
  7.1.  Summary
    7.1.1.  ID (Identifier)
    7.1.2.  Name
    7.1.3.  URI
    7.1.4.  Description
    7.1.5.  Change Controller
    7.1.6.  Version (of Registry Format)
  7.2.  Metric Definition
    7.2.1.  Reference Definition
    7.2.2.  Fixed Parameters
  7.3.  Method of Measurement
    7.3.1.  Reference Methods
    7.3.2.  Packet Stream Generation
    7.3.3.  Traffic Filtering (Observation) Details
    7.3.4.  Sampling Distribution
    7.3.5.  Runtime Parameters and Data Format
    7.3.6.  Roles
  7.4.  Output
    7.4.1.  Type
    7.4.2.  Reference Definition
    7.4.3.  Metric Units
    7.4.4.  Calibration
  7.5.  Administrative Items
    7.5.1.  Status
    7.5.2.  Requester
    7.5.3.  Revision
    7.5.4.  Revision Date
  7.6.  Comments and Remarks
8.  UDP Periodic One-Way Delay and Loss Registry Entries
  8.1.  Summary
    8.1.1.  ID (Identifier)
    8.1.2.  Name
    8.1.3.  URI
    8.1.4.  Description
    8.1.5.  Change Controller
    8.1.6.  Version (of Registry Format)
  8.2.  Metric Definition
    8.2.1.  Reference Definition
    8.2.2.  Fixed Parameters
  8.3.  Method of Measurement
    8.3.1.  Reference Methods
    8.3.2.  Packet Stream Generation
    8.3.3.  Traffic Filtering (Observation) Details
    8.3.4.  Sampling Distribution
    8.3.5.  Runtime Parameters and Data Format
    8.3.6.  Roles
  8.4.  Output
    8.4.1.  Type
    8.4.2.  Reference Definition
    8.4.3.  Metric Units
    8.4.4.  Calibration
  8.5.  Administrative Items
    8.5.1.  Status
    8.5.2.  Requester
    8.5.3.  Revision
    8.5.4.  Revision Date
  8.6.  Comments and Remarks
9.  ICMP Round-Trip Latency and Loss Registry Entries
  9.1.  Summary
    9.1.1.  ID (Identifier)
    9.1.2.  Name
    9.1.3.  URI
    9.1.4.  Description
    9.1.5.  Change Controller
    9.1.6.  Version (of Registry Format)
  9.2.  Metric Definition
    9.2.1.  Reference Definition
    9.2.2.  Fixed Parameters
  9.3.  Method of Measurement
    9.3.1.  Reference Methods
    9.3.2.  Packet Stream Generation
    9.3.3.  Traffic Filtering (Observation) Details
    9.3.4.  Sampling Distribution
    9.3.5.  Runtime Parameters and Data Format
    9.3.6.  Roles
  9.4.  Output
    9.4.1.  Type
    9.4.2.  Reference Definition
    9.4.3.  Metric Units
    9.4.4.  Calibration
  9.5.  Administrative Items
    9.5.1.  Status
    9.5.2.  Requester
    9.5.3.  Revision
    9.5.4.  Revision Date
  9.6.  Comments and Remarks
10. TCP Round-Trip Delay and Loss Registry Entries
  10.1.  Summary
    10.1.1.  ID (Identifier)
    10.1.2.  Name
    10.1.3.  URI
    10.1.4.  Description
    10.1.5.  Change Controller
    10.1.6.  Version (of Registry Format)
  10.2.  Metric Definition
    10.2.1.  Reference Definition
    10.2.2.  Fixed Parameters
  10.3.  Method of Measurement
    10.3.1.  Reference Methods
    10.3.2.  Packet Stream Generation
    10.3.3.  Traffic Filtering (Observation) Details
    10.3.4.  Sampling Distribution
    10.3.5.  Runtime Parameters and Data Format
    10.3.6.  Roles
  10.4.  Output
    10.4.1.  Type
    10.4.2.  Reference Definition
    10.4.3.  Metric Units
    10.4.4.  Calibration
  10.5.  Administrative Items
    10.5.1.  Status
    10.5.2.  Requester
    10.5.3.  Revision
    10.5.4.  Revision Date
  10.6.  Comments and Remarks
11. Security Considerations
12. IANA Considerations
13. References
  13.1.  Normative References
  13.2.  Informative References
Acknowledgments
Authors' Addresses

1. Introduction ๐ŸŒท

Okay so this memo sets up an initial batch of entries for the Performance Metrics Registry ๐Ÿ“Š It borrows terms and definitions from the IP Performance Metrics (IPPM) literature, mainly [RFC2330] ๐Ÿง 

Now, there are a bunch of standard templates for writing up performance metrics. [RFC7679] is the classic IPPM template, which is pretty much based on the Benchmarking Methodology Working Group's old-school template in [RFC1242], and [RFC6390] has a similar vibe. But none of them were built to be the columns of an IETF-wide Registry ๐Ÿ™ˆ Once people started looking at what needed registering, it became clear that none of the existing templates fully fit what a Registry needs ๐Ÿ’…

So [RFC8911] defines the overall format for a Performance Metrics Registry ๐ŸŽ€ Section 5 of [RFC8911] also has guidelines for people requesting registration of a Metric, meaning making one or more entries in the Performance Metrics Registry โœจ It says:

In essence, there needs to be evidence that (1) a candidate Registered Performance Metric has significant industry interest or has seen deployment and (2) there is agreement that the candidate Registered Performance Metric serves its intended purpose.

The process in [RFC8911] also says new entries have to be administered by IANA through the Specification Required policy [RFC8126], which makes sure the metrics are tightly defined ๐Ÿ”’

1.1. Requirements Language ๐Ÿฆ‹

Here's the key words bit, bestie ๐Ÿซถ 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. Scope ๐Ÿงš

Okay so this document defines a set of initial Performance Metrics Registry Entries ๐ŸŒˆ Most of them are Active Performance Metrics, which are based on RFCs from the IPPM Working Group of the IETF, following their framework [RFC2330] and its updates ๐Ÿ’–

Part 1 of 13 done! ๐ŸŽ€ Next up is Part 2, where we get into the registry categories and the UDP Round-Trip Latency and Loss entries ๐Ÿฆ‹

3. Registry Categories and Columns โœจ

okay so this section is basically the cheat sheet for the whole Registry ๐Ÿ“‹ It says this memo uses the terminology from [RFC8911], which is your glossary bestie ๐ŸŽ€ Each row (an entry) gives you a complete description of one Registered Metric, so nothing is missing ๐Ÿ’…

Here's how the Registry Categories and Columns are laid out:

    Category
    ------------------...
    Column |  Column |...

Summary
---------------------------------------------------------------
Identifier | Name | URI | Desc. | Reference | Change     | Ver |
           |      |     |       |           | Controller |

Metric Definition
-----------------------------------------
Reference Definition | Fixed Parameters |

Method of Measurement
---------------------------------------------------------------------
Reference | Packet     | Traffic | Sampling     | Runtime    | Role |
Method    | Stream     | Filter  | Distribution | Parameters |      |
          | Generation |
Output
-----------------------------------------
Type | Reference  | Units | Calibration |
     | Definition |       |             |

Administrative Information
-------------------------------------
Status |Requester | Rev | Rev. Date |

Comments and Remarks
--------------------

4. UDP Round-Trip Latency and Loss Registry Entries ๐Ÿฆ‹

this section is where the actual goodies live ๐Ÿฅน It specifies an initial Registry Entry for UDP Round-Trip Latency, plus another entry for the UDP Round-Trip Loss Ratio. Two metrics, one section, zero chill ๐Ÿ”ฅ

Note: Each Registry Entry only produces a "raw" output or a statistical summary. To describe both "raw" and one or more statistics efficiently, the Identifier, Name, and Output categories can be split, and a single section can specify two or more closely related metrics. For example, this section specifies two Registry Entries with many common columns. See Section 7 for an example specifying multiple Registry Entries with many common columns.

so basically, everything is the same between the two entries except for the ID, Name, Description, and Output Reference Method categories ๐Ÿ‘ฏโ€โ™€๏ธ That's why they get defined together. IANA also gave each of the two Named Metrics its own URL ๐ŸŒˆ

4.1. Summary

this category is your index ๐Ÿ“‡ It has the element ID and the Metric Name, so you can find any entry fast.

4.1.1. ID (Identifier)

IANA has allocated the numeric Identifiers 1 and 2 for the two Named Metric Entries in Section 4. See Section 4.1.2 for mapping to Names. ๐Ÿ”ข

4.1.2. Name

1:  RTDelay_Active_IP-UDP-Periodic_RFC8912sec4_Seconds_95Percentile

2:  RTLoss_Active_IP-UDP-Periodic_RFC8912sec4_Percent_LossRatio

4.1.3. URI

URL: https://www.iana.org/assignments/performance-metrics/
RTDelay_Active_IP-UDP-Periodic_RFC8912sec4_Seconds_95Percentile

URL: https://www.iana.org/assignments/performance-metrics/
RTLoss_Active_IP-UDP-Periodic_RFC8912sec4_Percent_LossRatio

4.1.4. Description

RTDelay: this metric checks the delay of a stream of packets exchanged between two hosts (which are the two measurement points) โฑ๏ธ The output is the round-trip delay for all successfully exchanged packets, expressed as the 95th percentile of their conditional delay distribution.

RTLoss: this one checks the loss ratio of a stream of packets exchanged between the same two hosts (the two measurement points) ๐Ÿ“‰ The output is the round-trip loss ratio for all transmitted packets, expressed as a percentage.

4.1.5. Change Controller

IETF ๐Ÿ›๏ธ

4.1.6. Version (of Registry Format)

1.0 ๐Ÿท๏ธ

4.2. Metric Definition

this category has the columns that make sure you enter every detail the metric definition needs ๐Ÿ“ That includes the RFC reference and the values of the input factors, which are called "Fixed Parameters".

4.2.1. Reference Definition

For delay:

Almes, G., Kalidindi, S., and M.  Zekauskas, "A Round-trip Delay
Metric for IPPM", RFC 2681, DOI 10.17487/RFC2681, September 1999,
<https://www.rfc-editor.org/info/rfc2681>.  [RFC2681]

Section 2.4 of [RFC2681] provides the reference definition of the singleton (single value) round-trip delay metric. Section 3.4 of [RFC2681] provides the reference definition expanded to cover a multi-singleton sample. Note that terms such as "singleton" and "sample" are defined in Section 11 of [RFC2330].

Note that although the definition of round-trip delay between the Source (Src) and the Destination (Dst) as provided in Section 2.4 of [RFC2681] is directionally ambiguous in the text, this metric tightens the definition further to recognize that the host in the Src Role will send the first packet to the host in the Dst Role and will ultimately receive the corresponding return packet from the Dst (when neither is lost). ๐Ÿงญ

Finally, note that the variable "dT" is used in [RFC2681] to refer to the value of round-trip delay in metric definitions and methods. The variable "dT" has been reused in other IPPM literature to refer to different quantities and cannot be used as a global variable name. ๐Ÿ™ƒ

For loss:

Morton, A., "Round-Trip Packet Loss Metrics", RFC 6673, DOI
10.17487/RFC6673, August 2012, <https://www.rfc-editor.org/info/
rfc6673>.  [RFC6673]

Both Delay and Loss metrics employ a maximum waiting time for received packets, so the count of lost packets to total packets sent is the basis for the loss ratio calculation as per Section 6.1 of [RFC6673]. ๐Ÿงฎ

4.2.2. Fixed Parameters

Type-P as defined in Section 13 of [RFC2330]:

   IPv4 header values:
      DSCP:  Set to 0
      TTL:  Set to 255
      Protocol:  Set to 17 (UDP)

   IPv6 header values:
      DSCP:  Set to 0
      Hop Count:  Set to 255
      Next Header:  Set to 17 (UDP)
      Flow Label:  Set to 0
      Extension Headers:  None

   UDP header values:
      Checksum:  The checksum MUST be calculated and the non-zero
         checksum included in the header

   UDP Payload:
      Total of 100 bytes

Other measurement Parameters:

   Tmax:  A loss threshold waiting time with value 3.0, expressed in
      units of seconds, as a positive value of type decimal64 with
      fraction digits = 4 (see Section 9.3 of [RFC6020]) and with a
      resolution of 0.0001 seconds (0.1 ms), with lossless conversion
      to/from the 32-bit NTP timestamp as per Section 6 of [RFC5905].

4.3. Method of Measurement

this category has the columns for references to the relevant sections of the RFC(s), plus any supplemental info needed so implementations can follow the method without guessing ๐Ÿงฉ

4.3.1. Reference Methods

The methodology for this metric (equivalent to Type-P-Round-trip-Delay and Type-P-Round-trip-Delay-Poisson-Stream) is defined as in Section 2.6 of [RFC2681] (for singletons) and Section 3.6 of [RFC2681] (for samples), using the Type-P and Tmax defined in the Fixed Parameters column. However, the Periodic stream will be generated according to [RFC3432]. ๐Ÿ”

The reference method tells long-delayed packets apart from lost packets by using a maximum waiting time for packet arrival. Tmax is the waiting time used as the threshold to declare a packet lost. Lost packets SHALL be designated as having undefined delay and counted for the RTLoss metric [RFC6673]. ๐Ÿšซ

The calculations on the delay (RTT) SHALL be performed on the conditional distribution, conditioned on successful packet arrival within Tmax. Also, when all packet delays are stored, the process that calculates the RTT value MUST enforce the Tmax threshold on stored values before calculations. See Section 4.1 of [RFC3393] for details on the conditional distribution to exclude undefined values of delay, and see Section 5 of [RFC6703] for background on this analysis choice. ๐Ÿง 

The reference method needs some way to tell different packets in a stream apart, so it can match each sending time to its receiving time for every packet that arrives successfully. Sequence numbers or other send-order identification MUST be retained at the Src or included with each packet, to disambiguate packet reordering if it occurs. ๐Ÿ”ข

If a standard measurement protocol is employed, then the measurement process will determine the sequence numbers or timestamps applied to test packets after the Fixed and Runtime Parameters are passed to that process. The chosen measurement protocol will dictate the format of sequence numbers and timestamps, if they are conveyed in the packet payload. ๐Ÿ“ฆ

Refer to Section 4.4 of [RFC6673] for an expanded discussion of the instruction to "send a Type-P packet back to the Src as quickly as possible" in Section 2.6 of [RFC2681]. Section 8 of [RFC6673] presents additional requirements that MUST be included in the Method of Measurement for this metric. โšก

4.3.2. Packet Stream Generation

This section gives the details on the packet traffic that the measurement is based on. In IPPM Metrics, this is called the "stream", and it can be described simply by listing the stream Parameters ๐ŸŒŠ

Section 3 of [RFC3432] prescribes the method for generating Periodic streams using the associated Parameters.

incT:  The nominal duration of the inter-packet interval, first bit
   to first bit, with value 0.0200, expressed in units of seconds, as
   a positive value of type decimal64 with fraction digits = 4 (see
   Section 9.3 of [RFC6020]) and with a resolution of 0.0001 seconds
   (0.1 ms).

dT:  The duration of the interval for allowed sample start times,
   with value 1.0, expressed in units of seconds, as a positive value
   of type decimal64 with fraction digits = 4 (see Section 9.3 of
   [RFC6020]) and with a resolution of 0.0001 seconds (0.1 ms).

   Note: An initiation process with a number of control exchanges
   resulting in unpredictable start times (within a time interval)
   may be sufficient to avoid synchronization of periodic streams and
   is a valid replacement for selecting a start time at random from a
   fixed interval.

The T0 Parameter will be reported as a measured Parameter. Parameters incT and dT are Fixed Parameters. ๐ŸŽฏ

4.3.3. Traffic Filtering (Observation) Details

N/A ๐Ÿซ 

4.3.4. Sampling Distribution

N/A ๐Ÿซ 

4.3.5. Runtime Parameters and Data Format โœจ

okay so Runtime Parameters are the input factors you HAVE to figure out, configure into your measurement system, and report alongside the results so the context is complete ๐Ÿ’… no skipping this bestie ๐Ÿซถ

Src: ๐Ÿ’– the IP address of the host in the Src Role (format ipv4-address-no-zone value for IPv4 or ipv6-address-no-zone value for IPv6; see Section 4 of [RFC6991]).

Dst: ๐ŸŽ€ the IP address of the host in the Dst Role (format ipv4-address-no-zone value for IPv4 or ipv6-address-no-zone value for IPv6; see Section 4 of [RFC6991]).

T0: ๐Ÿฆ‹ a time, the start of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330]. When T0 is "all-zeros", a start time is unspecified and Tf is to be interpreted as the duration of the measurement interval. The start time is controlled through other means. it's giving mystery energy ๐ŸŒˆ

Tf: ๐ŸŒธ a time, the end of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330]. When T0 is "all-zeros", an ending time and date is ignored and Tf is interpreted as the duration of the measurement interval. โญ

4.3.6. Roles ๐Ÿงš

Src: ๐Ÿ“ launches each packet and waits for return transmissions from the Dst.

Dst: ๐Ÿ’œ waits for each packet from the Src and sends a return packet to the Src.

4.4. Output ๐Ÿ”ฅ

this category specifies all the details of the output of measurements using the metric. no cap, outputs matter ๐Ÿ‘‘

4.4.1. Type ๐Ÿ’…

Percentile: for the conditional distribution of all packets with a valid value of round-trip delay (undefined delays are excluded), this is a single value corresponding to the 95th percentile, as follows:

See Section 4.1 of [RFC3393] for details on the conditional distribution to exclude undefined values of delay, and see Section 5 of [RFC6703] for background on this analysis choice.

The percentile = 95, meaning that the reported delay, "95Percentile", is the smallest value of round-trip delay for which the Empirical Distribution Function, EDF(95Percentile), is greater than or equal to 95% of the singleton round-trip delay values in the conditional distribution. See Section 11.3 of [RFC2330] for the definition of the percentile statistic using the EDF. ๐Ÿ™ˆ

For LossRatio, the count of lost packets to total packets sent is the basis for the loss ratio calculation as per Section 6.1 of [RFC6673]. ๐ŸŒธ

4.4.2. Reference Definition ๐Ÿฆ‹

For all outputs:

T0: ๐Ÿ’– the start of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330].

Tf: ๐ŸŽ€ the end of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330].

TotalPkts: ๐Ÿง the count of packets sent by the Src to the Dst during the measurement interval.

95Percentile: โœจ the time value of the result is expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with a resolution of 0.000000001 seconds (1.0 ns).

Percent_LossRatio: ๐ŸŒˆ the numeric value of the result is expressed in units of lost packets to total packets times 100%, as a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with a resolution of 0.0000000001.

4.4.3. Metric Units ๐Ÿ’œ

the 95th percentile of round-trip delay is expressed in seconds. โฑ๏ธ

the round-trip loss ratio is expressed as a percentage of lost packets to total packets sent.

4.4.4. Calibration ๐Ÿ”ฎ

Section 3.7.3 of [RFC7679] provides a means to quantify the systematic and random errors of a time measurement. Calibration in-situ could be enabled with an internal loopback at the Source host that includes as much of the measurement system as possible, performs address manipulation as needed, and provides some form of isolation (e.g., deterministic delay) to avoid send-receive interface contention. Some portion of the random and systematic error can be characterized in this way. ๐Ÿซถ

When a measurement controller requests a calibration measurement, the loopback is applied and the result is output in the same format as a normal measurement, with an additional indication that it is a calibration result.

Both internal loopback calibration and clock synchronization can be used to estimate the available accuracy of the Output Metric Units. For example, repeated loopback delay measurements will reveal the portion of the output result resolution that is the result of system noise and is thus inaccurate. ๐Ÿค“

4.5. Administrative Items ๐Ÿ“‹

4.5.1. Status ๐ŸŒท

Current

4.5.2. Requester ๐ŸŽ€

RFC 8912

4.5.3. Revision ๐Ÿฆ‹

1.0

4.5.4. Revision Date ๐Ÿ“…

2021-11-17

4.6. Comments and Remarks ๐Ÿ’ฌ

None

5. Packet Delay Variation Registry Entry ๐Ÿ’–

this section gives an initial Registry Entry for a Packet Delay Variation (PDV) metric. it's the main character of the whole registry tbh ๐Ÿ‘‘

5.1. Summary โœจ

this category includes multiple indexes to the Registry Entry: the element ID and Metric Name.

5.1.1. ID (Identifier) ๐Ÿ”ข

IANA has allocated the numeric Identifier 3 for the Named Metric Entry in Section 5. See Section 5.1.2 for mapping to Name.

5.1.2. Name ๐Ÿท๏ธ

3:  OWPDV_Active_IP-UDP-Periodic_RFC8912sec5_Seconds_95Percentile

5.1.3. URI ๐Ÿ”—

URL: https://www.iana.org/assignments/performance-metrics/
OWPDV_Active_IP-UDP-Periodic_RFC8912sec5_Seconds_95Percentile

5.1.4. Description ๐ŸŒธ

this metric assesses packet delay variation with respect to the minimum delay observed on the periodic stream. the output is expressed as the 95th percentile of the one-way packet delay variation distribution. ๐Ÿงš

5.1.5. Change Controller ๐ŸŽ€

IETF

5.1.6. Version (of Registry Format) ๐Ÿ“

1.0

5.2. Metric Definition ๐ŸŒˆ

this category includes columns to prompt the entry of all necessary details related to the metric definition, including the RFC reference and values of input factors, called "Fixed Parameters".

5.2.1. Reference Definition ๐Ÿ“š

Paxson, V., Almes, G., Mahdavi, J., and M. Mathis, "Framework for IP Performance Metrics", RFC 2330, DOI 10.17487/RFC2330, May 1998, <https://www.rfc-editor.org/info/rfc2330>. [RFC2330]

Demichelis, C. and P. Chimento, "IP Packet Delay Variation Metric for IP Performance Metrics (IPPM)", RFC 3393, DOI 10.17487/RFC3393, November 2002, <https://www.rfc-editor.org/info/rfc3393>. [RFC3393]

Morton, A. and B. Claise, "Packet Delay Variation Applicability Statement", RFC 5481, DOI 10.17487/RFC5481, March 2009, <https://www.rfc-editor.org/info/rfc5481>. [RFC5481]

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>. [RFC5905]

See Sections 2.4 and 3.4 of [RFC3393]. The measured singleton delay differences are referred to by the variable name "ddT" (applicable to all forms of delay variation). However, this Metric Entry specifies the PDV form defined in Section 4.2 of [RFC5481], where the singleton PDV for packet i is referred to by the variable name "PDV(i)". ๐Ÿซง

5.2.2. Fixed Parameters ๐Ÿ”’

IPv4 header values:
   DSCP:  Set to 0
   TTL:  Set to 255
   Protocol:  Set to 17 (UDP)

IPv6 header values:
   DSCP:  Set to 0
   Hop Count:  Set to 255
   Next Header:  Set to 17 (UDP)
   Flow Label:  Set to 0
   Extension Headers:  None

UDP header values:
   Checksum:  The checksum MUST be calculated and the non-zero
      checksum included in the header

UDP Payload:
   Total of 200 bytes

Other measurement Parameters:
   Tmax:  A loss threshold waiting time with value 3.0, expressed in
      units of seconds, as a positive value of type decimal64 with
      fraction digits = 4 (see Section 9.3 of [RFC6020]) and with a
      resolution of 0.0001 seconds (0.1 ms), with lossless conversion
      to/from the 32-bit NTP timestamp as per Section 6 of [RFC5905].

   F:  A selection function unambiguously defining the packets from
      the stream selected for the metric.  See Section 4.2 of
      [RFC5481] for the PDV form.

See the Packet Stream Generation section for two additional Fixed Parameters. ๐ŸŒŸ

5.3. Method of Measurement ๐Ÿ› ๏ธ

this category includes columns for references to relevant sections of the RFC(s) and any supplemental information needed to ensure an unambiguous method for implementations. ๐Ÿ’œ

5.3.1. Reference Methods ๐Ÿง 

See Sections 2.6 and 3.6 of [RFC3393] for general singleton element calculations. This Metric Entry requires implementation of the PDV form defined in Section 4.2 of [RFC5481]. Also see measurement considerations in Section 8 of [RFC5481].

The reference method distinguishes between long-delayed packets and lost packets by implementing a maximum waiting time for packet arrival. Tmax is the waiting time used as the threshold to declare a packet lost. Lost packets SHALL be designated as having undefined delay.

The calculations on the one-way delay SHALL be performed on the conditional distribution, conditioned on successful packet arrival within Tmax. Also, when all packet delays are stored, the process that calculates the one-way delay value MUST enforce the Tmax threshold on stored values before calculations. See Section 4.1 of [RFC3393] for details on the conditional distribution to exclude undefined values of delay, and see Section 5 of [RFC6703] for background on this analysis choice. ๐Ÿฅน

The reference method requires some way to distinguish between different packets in a stream to establish correspondence between sending times and receiving times for each successfully arriving packet. Sequence numbers or other send-order identification MUST be retained at the Src or included with each packet to disambiguate packet reordering if it occurs.

If a standard measurement protocol is employed, then the measurement process will determine the sequence numbers or timestamps applied to test packets after the Fixed and Runtime Parameters are passed to that process. The chosen measurement protocol will dictate the format of sequence numbers and timestamps, if they are conveyed in the packet payload. ๐ŸŒท

5.3.2. Packet Stream Generation โœจ

okay so this part is all about the packet traffic, because that's the basis for the whole measurement ๐Ÿงš. IPPM Metrics calls it the "stream", and you can describe it just by listing its stream Parameters ๐Ÿ’–.

Section 3 of [RFC3432] is where you find the method for generating Periodic streams using their associated Parameters ๐Ÿฆ‹.

  • incT: The nominal duration of the inter-packet interval, first bit to first bit, with value 0.0200, expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 4 (see Section 9.3 of [RFC6020]) and with a resolution of 0.0001 seconds (0.1 ms).
  • dT: The duration of the interval for allowed sample start times, with value 1.0, expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 4 (see Section 9.3 of [RFC6020]) and with a resolution of 0.0001 seconds (0.1 ms).
Note: An initiation process with a number of control exchanges resulting in unpredictable start times (within a time interval) may be sufficient to avoid synchronization of periodic streams and is a valid replacement for selecting a start time at random from a fixed interval.

The T0 Parameter will be reported as a measured Parameter. Parameters incT and dT are Fixed Parameters ๐ŸŽ€.

5.3.3. Traffic Filtering (Observation) Details

N/A

5.3.4. Sampling Distribution

N/A

5.3.5. Runtime Parameters and Data Format ๐Ÿ’…

  • Src: The IP address of the host in the Src Role (format ipv4-address-no-zone value for IPv4 or ipv6-address-no-zone value for IPv6; see Section 4 of [RFC6991]).
  • Dst: The IP address of the host in the Dst Role (format ipv4-address-no-zone value for IPv4 or ipv6-address-no-zone value for IPv6; see Section 4 of [RFC6991]).
  • T0: A time, the start of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330]. When T0 is "all-zeros", a start time is unspecified and Tf is to be interpreted as the duration of the measurement interval. The start time is controlled through other means.
  • Tf: A time, the end of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330]. When T0 is "all-zeros", an ending time and date is ignored and Tf is interpreted as the duration of the measurement interval.

5.3.6. Roles ๐Ÿฆ‹

  • Src: Launches each packet and waits for return transmissions from the Dst.
  • Dst: Waits for each packet from the Src and sends a return packet to the Src (when required by the test protocol).

5.4. Output ๐ŸŽ€

This category specifies all details of the output of measurements using the metric.

5.4.1. Type

Percentile: For the conditional distribution of all packets with a valid value of one-way delay (undefined delays are excluded), this is a single value corresponding to the 95th percentile, as follows:

See Section 4.1 of [RFC3393] for details on the conditional distribution to exclude undefined values of delay, and see Section 5 of [RFC6703] for background on this analysis choice.

The percentile = 95, meaning that the reported delay, "95Percentile", is the smallest value of one-way PDV for which the Empirical Distribution Function, EDF(95Percentile), is greater than or equal to 95% of the singleton one-way PDV values in the conditional distribution. See Section 11.3 of [RFC2330] for the definition of the percentile statistic using the EDF.

5.4.2. Reference Definition

  • T0: The start of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330].
  • Tf: The end of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330].
  • 95Percentile: The time value of the result is expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with a resolution of 0.000000001 seconds (1.0 ns), and with lossless conversion to/from the 64-bit NTP timestamp as per Section 6 of [RFC5905].

5.4.3. Metric Units

The 95th percentile of one-way PDV is expressed in seconds.

5.4.4. Calibration ๐Ÿงช

Section 3.7.3 of [RFC7679] provides a means to quantify the systematic and random errors of a time measurement. Calibration in-situ could be enabled with an internal loopback that includes as much of the measurement system as possible, performs address manipulation as needed, and provides some form of isolation (e.g., deterministic delay) to avoid send-receive interface contention. Some portion of the random and systematic error can be characterized in this way.

For one-way delay measurements, the error calibration must include an assessment of the internal clock synchronization with its external reference (this internal clock is supplying timestamps for measurement). In practice, the time offsets [RFC5905] of clocks at both the Source and Destination are needed to estimate the systematic error due to imperfect clock synchronization (the time offsets are smoothed; thus, the random variation is not usually represented in the results).

  • time_offset: The time value of the result is expressed in units of seconds, as a signed value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with a resolution of 0.000000001 seconds (1.0 ns), and with lossless conversion to/from the 64-bit NTP timestamp as per Section 6 of [RFC5905].

When a measurement controller requests a calibration measurement, the loopback is applied and the result is output in the same format as a normal measurement, with an additional indication that it is a calibration result. In any measurement, the measurement function SHOULD report its current estimate of the time offset [RFC5905] as an indicator of the degree of synchronization.

Both internal loopback calibration and clock synchronization can be used to estimate the available accuracy of the Output Metric Units. For example, repeated loopback delay measurements will reveal the portion of the output result resolution that is the result of system noise and is thus inaccurate.


5.5. Administrative Items ๐Ÿ“‹

5.5.1. Status

Current

5.5.2. Requester

RFC 8912

5.5.3. Revision

1.0

5.5.4. Revision Date

2021-11-17

5.6. Comments and Remarks ๐Ÿ’ญ

Lost packets represent a challenge for delay variation metrics. See Section 4.1 of [RFC3393] and the delay variation applicability statement [RFC5481] for extensive analysis and comparison of PDV and an alternate metric, IPDV (Inter-Packet Delay Variation).


6. DNS Response Latency and Loss Registry Entries ๐ŸŒˆ

This section gives initial Registry Entries for DNS Response Latency and Loss from a network user's perspective, for a specific named resource. The metric can be measured repeatedly for different named resources. [RFC2681] defines a round-trip delay metric. We build on that metric by specifying several of the input Parameters to precisely define two metrics for measuring DNS latency and loss.

All column entries besides the ID, Name, Description, and Output Reference Method categories are the same; thus, this section defines two closely related Registry Entries. As a result, IANA has assigned corresponding URLs to each of the two Named Metrics ๐Ÿ“.

6.1. Summary

This category includes multiple indexes to the Registry Entries: the element ID and Metric Name.

6.1.1. ID (Identifier)

IANA has allocated the numeric Identifiers 4 and 5 for the two Named Metric Entries in Section 6. See Section 6.1.2 for mapping to Names.

6.1.2. Name

  • 4: RTDNS_Active_IP-UDP-Poisson_RFC8912sec6_Seconds_Raw
  • 5: RLDNS_Active_IP-UDP-Poisson_RFC8912sec6_Logical_Raw

6.1.3. URI

6.1.4. Description

This is a metric for DNS Response performance from a network user's perspective, for a specific named resource. The metric can be measured repeatedly using different resource names.

  • RTDNS: This metric assesses the response time, the interval from the query transmission to the response.
  • RLDNS: This metric indicates that the response was deemed lost. In other words, the response time exceeded the maximum waiting time.

6.1.5. Change Controller

IETF

6.1.6. Version (of Registry Format)

1.0

6.2. Metric Definition ๐Ÿ”

This category includes columns to prompt the entry of all necessary details related to the metric definition, including the RFC reference and values of input factors, called "Fixed Parameters".

6.2.1. Reference Definition

For Delay:

Mockapetris, P., "Domain names - implementation and
specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, November
1987, <https://www.rfc-editor.org/info/rfc1035> (and updates).
[RFC1035]

Almes, G., Kalidindi, S., and M.  Zekauskas, "A Round-trip Delay
Metric for IPPM", RFC 2681, DOI 10.17487/RFC2681, September 1999,
<https://www.rfc-editor.org/info/rfc2681>.  [RFC2681]

Section 2.4 of [RFC2681] provides the reference definition of the singleton (single value) round-trip delay metric. Section 3.4 of [RFC2681] provides the reference definition expanded to cover a multi-singleton sample. Note that terms such as "singleton" and "sample" are defined in Section 11 of [RFC2330].

For DNS Response Latency, the entities in [RFC1035] must be mapped to [RFC2681]. The Local Host with its User Program and Resolver take the Role of "Src", and the Foreign Name Server takes the Role of "Dst".

Note that although the definition of round-trip delay between the Source (Src) and the Destination (Dst) at T as provided in Section 2.4 of [RFC2681] is directionally ambiguous in the text, this metric tightens the definition further to recognize that the host in the Src Role will send the first packet to the host in the Dst Role and will ultimately receive the corresponding return packet from the Dst (when neither is lost).

For Loss:

Morton, A., "Round-Trip Packet Loss Metrics", RFC 6673, DOI
10.17487/RFC6673, August 2012, <https://www.rfc-editor.org/info/
rfc6673>.  [RFC6673]

For DNS Response Loss, the entities in [RFC1035] must be mapped to [RFC6673]. The Local Host with its User Program and Resolver take the Role of "Src", and the Foreign Name Server takes the Role of "Dst".

Both response time and Loss metrics employ a maximum waiting time for received responses, so the count of lost packets to total packets sent is the basis for the loss determination as per Section 4.3 of [RFC6673].

6.2.2. Fixed Parameters

Okay so this is the part where the RFC gets super specific about the exact packet we're sending, bestie ๐ŸŽ€ Every field is locked in. No vibes, just facts ๐Ÿ’…

Type-P as defined in Section 13 of [RFC2330]:

   IPv4 header values:
      DSCP:  Set to 0
      TTL:  Set to 255
      Protocol:  Set to 17 (UDP)

   IPv6 header values:
      DSCP:  Set to 0
      Hop Count:  Set to 255
      Next Header:  Set to 17 (UDP)
      Flow Label:  Set to 0
      Extension Headers:  None

   UDP header values:
      Source port:  53
      Destination port:  53
      Checksum:  The checksum MUST be calculated and the non-zero
         checksum included in the header

   Payload:
      The payload contains a DNS message as defined in [RFC1035] with
      the following values:

      The DNS header section contains:
         Identification (see the Runtime column)
         QR:  Set to 0 (Query)
         OPCODE:  Set to 0 (standard query)
         AA:  Not set
         TC:  Not set
         RD:  Set to 1 (recursion desired)
         RA:  Not set
         RCODE:  Not set
         QDCOUNT:  Set to 1 (only one entry)
         ANCOUNT:  Not set
         NSCOUNT:  Not set
         ARCOUNT:  Not set

      The Question section contains:
         QNAME:  The Fully Qualified Domain Name (FQDN) provided as
            input for the test; see the Runtime column

         QTYPE:  The query type provided as input for the test; see
            the Runtime column

         QCLASS:  Set to 1 for IN

      The other sections do not contain any Resource Records
      (RRs).

Other measurement Parameters:
   Tmax:  A loss threshold waiting time (and to help disambiguate
      queries).  The value is 5.0, expressed in units of seconds, as
      a positive value of type decimal64 with fraction digits = 4
      (see Section 9.3 of [RFC6020]) and with a resolution of 0.0001
      seconds (0.1 ms), with lossless conversion to/from the 32-bit
      NTP timestamp as per Section 6 of [RFC5905].

Observation:  Reply packets will contain a DNS Response and may
   contain RRs.

Tmax is basically the "how long do we wait before we give up and call it lost" timer โฐ It's set to 5.0 seconds, and it also helps tell identical queries apart ๐Ÿงš

6.3. Method of Measurement

This category is the spot for references to the relevant sections of the RFC(s) plus any extra info needed so every implementation does the exact same thing ๐Ÿฆ‹

6.3.1. Reference Methods

The methodology for this metric (equivalent to Type-P-Round-trip-Delay-Poisson-Stream) is defined as in Section 2.6 of [RFC2681] (for singletons) and Section 3.6 of [RFC2681] (for samples) using the Type-P and Timeout defined in the Fixed Parameters column.

The reference method tells long-delayed packets apart from lost ones by putting a max waiting time on packet arrival. Tmax is that waiting time, the threshold for declaring a response lost. Lost packets SHALL be marked as having undefined delay and counted for the RLDNS metric ๐Ÿ’€

The calculations on the delay (RTT) SHALL be performed on the conditional distribution, conditioned on successful packet arrival within Tmax. Also, when all packet delays are stored, the process that calculates the RTT value MUST enforce the Tmax threshold on stored values before calculations. See Section 4.1 of [RFC3393] for details on the conditional distribution to exclude undefined values of delay, and see Section 5 of [RFC6703] for background on this analysis choice.

The reference method needs some way to tell different packets in a stream apart, so it can match up sending times with receiving times for each reply that successfully arrives ๐Ÿซถ

DNS queries carry random ID Numbers in the Identification header field, so more than one query can be launched while a previous request is still outstanding when the ID Number is used. Therefore, the ID Number MUST be retained at the Src and included with each response packet to disambiguate packet reordering if it occurs.

If a DNS Response does not arrive within Tmax, the response time RTDNS is undefined, and RLDNS = 1. The Message ID SHALL be used to disambiguate the successive queries that are otherwise identical.

Since the ID Number field is only 16 bits long, it puts a limit on how many simultaneous outstanding DNS queries you can have during a stress test from a single Src address ๐Ÿ˜ญ

Refer to Section 4.4 of [RFC6673] for an expanded discussion of the instruction to "send a Type-P packet back to the Src as quickly as possible" in Section 2.6 of [RFC2681]. However, the DNS server is expected to do all the required work to prepare and send a response, so the response time includes processing time and network delay. Section 8 of [RFC6673] presents additional requirements that SHALL be included in the Method of Measurement for this metric ๐Ÿ‘‘

In addition to the operations described in [RFC2681], the Src MUST parse the DNS headers of the reply and prepare the query response information for later reporting as a measured result, along with the round-trip delay ๐ŸŒˆ

6.3.2. Packet Stream Generation

This section gives the details about the packet traffic that the measurement is based on. In IPPM Metrics this is called the "stream", and it can be described just by listing the stream Parameters ๐Ÿ“

Section 11.1.3 of [RFC2330] gives three methods for generating Poisson sampling intervals. The reciprocal of lambda is the average packet spacing, so the Runtime Parameter is Reciprocal_lambda = 1/lambda, in seconds.

Method 3 SHALL be used. Given a start time (Runtime Parameter), all the subsequent send times are computed before measurement by working out the pseudorandom distribution of inter-packet send times (truncating the distribution as specified in the Parameter Trunc), and the Src sends each packet at those computed times โœจ

Note that Trunc is the upper limit on inter-packet times in the Poisson distribution. A random value greater than Trunc is set equal to Trunc instead.

6.3.3. Traffic Filtering (Observation) Details

N/A

6.3.4. Sampling Distribution

N/A

6.3.5. Runtime Parameters and Data Format

Runtime Parameters are the input factors that must be determined, configured into the measurement system, and reported with the results so the context is complete ๐Ÿ“

Src: The IP address of the host in the Src Role (format ipv4-address-no-zone value for IPv4 or ipv6-address-no-zone value for IPv6; see Section 4 of [RFC6991]).

Dst: The IP address of the host in the Dst Role (format ipv4-address-no-zone value for IPv4 or ipv6-address-no-zone value for IPv6; see Section 4 of [RFC6991]).

T0: A time, the start of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330]. When T0 is "all-zeros", a start time is unspecified and Tf is to be interpreted as the duration of the measurement interval. The start time is controlled through other means.

Tf: A time, the end of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330]. When T0 is "all-zeros", an ending time and date is ignored and Tf is interpreted as the duration of the measurement interval.

Reciprocal_lambda: Average packet interval for Poisson streams, expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 4 (see Section 9.3 of [RFC6020]) with a resolution of 0.0001 seconds (0.1 ms), and with lossless conversion to/from the 32-bit NTP timestamp as per Section 6 of [RFC5905].

Trunc: Upper limit on Poisson distribution, expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 4 (see Section 9.3 of [RFC6020]) with a resolution of 0.0001 seconds (0.1 ms), and with lossless conversion to/from the 32-bit NTP timestamp as per Section 6 of [RFC5905] (values above this limit will be clipped and set to the limit value).

ID: The 16-bit Identifier assigned by the program that generates the query. The ID value must vary in successive queries (a list of IDs is needed); see Section 4.1.1 of [RFC1035]. This Identifier is copied into the corresponding reply and can be used by the requester (Src) to match replies with any outstanding queries.

QNAME: The domain name of the query, formatted as specified in Section 4 of [RFC6991].

QTYPE: The query type, which will correspond to the IP address family of the query (decimal 1 for IPv4 or 28 for IPv6), formatted as a uint16, as per Section 9.2 of [RFC6020].

6.3.6. Roles

Src: Launches each packet and waits for return transmissions from the Dst.

Dst: Waits for each packet from the Src and sends a return packet to the Src.

6.4. Output

This category specifies all the details of the output of measurements using the metric ๐Ÿ“Š

6.4.1. Type

Raw: For each DNS query packet sent, sets of values as defined in the next column, including the status of the response, only assigning delay values to successful query-response pairs.

6.4.2. Reference Definition

For all outputs:

T: The time the DNS query was sent during the measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330].

dT: The time value of the round-trip delay to receive the DNS Response, expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with a resolution of 0.000000001 seconds (1.0 ns), and with lossless conversion to/from the 64-bit NTP timestamp as per Section 6 of [RFC5905]. This value is undefined when the response packet is not received at the Src within a waiting time of Tmax seconds.

RCODE: The value of the RCODE field in the DNS Response header, expressed as a uint64 as specified in Section 9.2 of [RFC6020]. Non-zero values convey errors in the response, and such replies must be analyzed separately from successful requests.

Logical: The numeric value of the result is expressed as a Logical value, where 1 = Lost and 0 = Received, as a positive value of type uint8 (represents integer values between 0 and 255, inclusively (see Section 9.2 of [RFC6020]). Note that for queries with outcome 1 = Lost, dT and RCODE will be set to the maximum for decimal64 and uint64, respectively.

6.4.3. Metric Units

RTDNS: Round-trip delay, dT, is expressed in seconds.

RLDNS: The Logical value, where 1 = Lost and 0 = Received.

6.4.4. Calibration ๐Ÿ”โœจ

Okay so calibration is basically the "is my ruler even accurate??" check ๐Ÿ’… Section 3.7.3 of [RFC7679] gives us a way to quantify the systematic and random errors of a time measurement. In-situ calibration can be turned on with an internal loopback at the Source host, bestie. The loopback should include as much of the measurement system as possible, do address and payload manipulation as needed, and provide some kind of isolation (like deterministic delay) so the send and receive interfaces don't fight each other ๐Ÿซถ With that setup you can characterize some portion of the random and systematic error. Lowkey genius ๐Ÿง 

When a measurement controller asks for a calibration measurement, the loopback runs and the result comes out in the same format as a normal measurement, just with an extra indication that it's a calibration result ๐ŸŽ€

Both internal loopback calibration and clock synchronization can be used to estimate the available accuracy of the Output Metric Units ๐ŸŒˆ For example, repeated loopback delay measurements will show the part of the output result resolution that's just system noise, which means it's inaccurate ๐Ÿ™ˆ


6.5. Administrative Items ๐Ÿ“‹

6.5.1. Status

Current ๐Ÿ’–

6.5.2. Requester

RFC 8912 ๐Ÿฆ‹

6.5.3. Revision

1.0

6.5.4. Revision Date

2021-11-17


6.6. Comments and Remarks ๐Ÿ’ฌ

None ๐ŸŒธ


7. UDP Poisson One-Way Delay and Loss Registry Entries โœจ

This section specifies five initial Registry Entries for UDP Poisson One-Way Delay and one entry for UDP Poisson One-Way Loss ๐Ÿ‘‘

All column entries besides the ID, Name, Description, and Output Reference Method categories are the same, so this section defines six closely related Registry Entries. Iconic consistency ๐Ÿ’… IANA has assigned corresponding URLs to each of the Named Metrics too ๐Ÿ”—


7.1. Summary ๐Ÿ“

This category includes multiple indexes to the Registry Entries: the element ID and Metric Name ๐Ÿ“

7.1.1. ID (Identifier)

IANA has allocated the numeric Identifiers 6-11 for the six Named Metric Entries in Section 7. Check Section 7.1.2 for the mapping to Names ๐Ÿงš

7.1.2. Name

6: OWDelay_Active_IP-UDP-Poisson-Payload250B_RFC8912sec7_Seconds_95Percentile
7: OWDelay_Active_IP-UDP-Poisson-Payload250B_RFC8912sec7_Seconds_Mean
8: OWDelay_Active_IP-UDP-Poisson-Payload250B_RFC8912sec7_Seconds_Min
9: OWDelay_Active_IP-UDP-Poisson-Payload250B_RFC8912sec7_Seconds_Max
10: OWDelay_Active_IP-UDP-Poisson-Payload250B_RFC8912sec7_Seconds_StdDev
11: OWLoss_Active_IP-UDP-Poisson-Payload250B_RFC8912sec7_Percent_LossRatio

7.1.3. URI ๐Ÿ”—

URL: https://www.iana.org/assignments/performance-metrics/OWDelay_Active_IP-UDP-Poisson-Payload250B_RFC8912sec7_Seconds_95Percentile
URL: https://www.iana.org/assignments/performance-metrics/OWDelay_Active_IP-UDP-Poisson-Payload250B_RFC8912sec7_Seconds_Mean
URL: https://www.iana.org/assignments/performance-metrics/OWDelay_Active_IP-UDP-Poisson-Payload250B_RFC8912sec7_Seconds_Min
URL: https://www.iana.org/assignments/performance-metrics/OWDelay_Active_IP-UDP-Poisson-Payload250B_RFC8912sec7_Seconds_Max
URL: https://www.iana.org/assignments/performance-metrics/OWDelay_Active_IP-UDP-Poisson-Payload250B_RFC8912sec7_Seconds_StdDev
URL: https://www.iana.org/assignments/performance-metrics/OWLoss_Active_IP-UDP-Poisson-Payload250B_RFC8912sec7_Percent_LossRatio

7.1.4. Description ๐ŸŒŸ

OWDelay: this metric assesses the delay of a stream of packets exchanged between two hosts (or measurement points) and reports the <statistic> of one-way delay for all successfully exchanged packets, based on their conditional delay distribution. The <statistic> is one of:

  • 95Percentile
  • Mean
  • Min
  • Max
  • StdDev

OWLoss: this metric assesses the loss ratio of a stream of packets exchanged between two hosts (which are the two measurement points). The output is the one-way loss ratio for all transmitted packets, expressed as a percentage ๐Ÿ“‰

7.1.5. Change Controller

IETF ๐Ÿ›๏ธ

7.1.6. Version (of Registry Format)

1.0


7.2. Metric Definition ๐ŸŽฏ

This category includes columns that prompt you to enter all the necessary details about the metric definition, including the RFC reference and the values of input factors, which are called "Fixed Parameters" ๐Ÿฉท

7.2.1. Reference Definition ๐Ÿ“š

For delay:

Almes, G., Kalidindi, S., Zekauskas, M., and A. Morton, Ed., "A One-Way Delay Metric for IP Performance Metrics (IPPM)", STD 81, RFC 7679, DOI 10.17487/RFC7679, January 2016, <https://www.rfc-editor.org/info/rfc7679>. [RFC7679]

Morton, A. and E. Stephan, "Spatial Composition of Metrics", RFC 6049, DOI 10.17487/RFC6049, January 2011, <https://www.rfc-editor.org/info/rfc6049>. [RFC6049]

Section 3.4 of [RFC7679] gives the reference definition of the singleton (single value) one-way delay metric. Section 4.4 of [RFC7679] expands that to cover a multi-value sample. Terms like "singleton" and "sample" are defined in Section 11 of [RFC2330], so go check it if you're confused ๐Ÿค“

Only successful packet transfers with finite delay are included in the sample, as prescribed in Section 4.1.2 of [RFC6049] โœจ

For loss:

Almes, G., Kalidindi, S., Zekauskas, M., and A. Morton, Ed., "A One-Way Loss Metric for IP Performance Metrics (IPPM)", STD 82, RFC 7680, DOI 10.17487/RFC7680, January 2016, <https://www.rfc-editor.org/info/rfc7680>. [RFC7680]

Section 2.4 of [RFC7680] gives the reference definition of the singleton (single value) one-way Loss metric. Section 3.4 of [RFC7680] expands that to cover a multi-singleton sample. Same deal with "singleton" and "sample": they're defined in Section 11 of [RFC2330] ๐Ÿ“–

7.2.2. Fixed Parameters ๐Ÿ”’

Type-P:

  • IPv4 header values:
    • DSCP: set to 0
    • TTL: set to 255
    • Protocol: set to 17 (UDP)
  • IPv6 header values:
    • DSCP: set to 0
    • Hop Count: set to 255
    • Next Header: set to 17 (UDP)
    • Flow Label: set to 0
    • Extension Headers: None
  • UDP header values:
    • Checksum: The checksum MUST be calculated and the non-zero checksum included in the header ๐Ÿฉต
  • UDP Payload: TWAMP-Test packet formats (Section 4.1.2 of [RFC5357]) ๐ŸŽ€
    • Security features in use influence the number of Padding octets.
    • 250 octets total, including the TWAMP format type, which MUST be reported ๐Ÿ’œ

Other measurement Parameters:

  • Tmax: a loss threshold waiting time with value 3.0, expressed in units of seconds. It's a positive value of type decimal64 with fraction digits = 4 (see Section 9.3 of [RFC6020]) and a resolution of 0.0001 seconds (0.1 ms), with lossless conversion to/from the 32-bit NTP timestamp as per Section 6 of [RFC5905] โณ

See the Packet Stream Generation section for two additional Fixed Parameters ๐Ÿงšโ€โ™€๏ธ


7.3. Method of Measurement ๐Ÿงช

This category includes columns for references to relevant sections of the RFC(s) and any supplemental information needed to make sure the method is unambiguous for implementations ๐Ÿ’…

7.3.1. Reference Methods ๐Ÿ”Ž

The methodology for this metric (equivalent to Type-P-One-way-Delay-Poisson-Stream) is defined as in Section 3.6 of [RFC7679] (for singletons) and Section 4.6 of [RFC7679] (for samples), using the Type-P and Tmax defined in the Fixed Parameters column ๐ŸŒธ

The reference method tells long-delayed packets apart from lost packets by putting a maximum waiting time on packet arrival. Tmax is the waiting time used as the threshold for declaring a packet lost. Lost packets SHALL be designated as having undefined delay and counted for the OWLoss metric. ๐Ÿ’€

The calculations on the one-way delay SHALL be performed on the conditional distribution, conditioned on successful packet arrival within Tmax. Also, when all packet delays are stored, the process that calculates the one-way delay value MUST enforce the Tmax threshold on stored values before calculations. See Section 4.1 of [RFC3393] for details on the conditional distribution that excludes undefined values of delay, and see Section 5 of [RFC6703] for background on this analysis choice ๐Ÿ“Š

The reference method needs some way to distinguish between different packets in a stream, so it can match sending times to receiving times for each successfully arriving packet ๐Ÿฆ‹

Since a standard measurement protocol is employed [RFC5357], the measurement process will determine the sequence numbers or timestamps applied to test packets after the Fixed and Runtime Parameters are passed to that process. The measurement protocol dictates the format of sequence numbers and timestamps conveyed in the TWAMP-Test packet payload ๐ŸŽ€

7.3.2. Packet Stream Generation ๐ŸŒŠ

This section gives details about the packet traffic that's used as the basis for measurement. In IPPM Metrics, this is called the "stream", and it can easily be described by listing its stream Parameters ๐Ÿฉท

Section 11.1.3 of [RFC2330] provides three methods to generate Poisson sampling intervals. The reciprocal of lambda is the average packet spacing, so the Runtime Parameter is Reciprocal_lambda = 1/lambda, in seconds โฑ๏ธ

Method 3 SHALL be used. Given a start time (Runtime Parameter), the subsequent send times are all computed before measurement. This is done by computing the pseudorandom distribution of inter-packet send times (truncating the distribution as specified in the Parameter Trunc), and then the Src sends each packet at the computed times ๐ŸŒˆ

Note that Trunc is the upper limit on inter-packet times in the Poisson distribution. A random value greater than Trunc is set equal to Trunc instead โœ‚๏ธ

  • Reciprocal_lambda: average packet interval for Poisson streams, expressed in units of seconds. It's a positive value of type decimal64 with fraction digits = 4 (see Section 9.3 of [RFC6020]) and a resolution of 0.0001 seconds (0.1 ms). It has lossless conversion to/from the 32-bit NTP timestamp as per Section 6 of [RFC5905]. Reciprocal_lambda = 1 second ๐Ÿ“
  • Trunc: upper limit on the Poisson distribution, expressed in units of seconds. It's a positive value of type decimal64 with fraction digits = 4 (see Section 9.3 of [RFC6020]) and a resolution of 0.0001 seconds (0.1 ms). It has lossless conversion to/from the 32-bit NTP timestamp as per Section 6 of [RFC5905]. Values above this limit get clipped and set to the limit value. Trunc = 30.0000 seconds ๐Ÿ‘‘

7.3.3. Traffic Filtering (Observation) Details ๐Ÿ™…โ€โ™€๏ธ

N/A

7.3.4. Sampling Distribution ๐Ÿ™…โ€โ™€๏ธ

N/A

7.3.5. Runtime Parameters and Data Format ๐ŸŽ€

Okay so Runtime Parameters are the input factors that must be determined, configured into the measurement system, and reported with the results for the context to be complete. No cap, the context is incomplete without them ๐Ÿซถ

  • Src: The IP address of the host in the Src Role (format ipv4-address-no-zone value for IPv4 or ipv6-address-no-zone value for IPv6; see Section 4 of [RFC6991]). ๐Ÿ’–
  • Dst: The IP address of the host in the Dst Role (format ipv4-address-no-zone value for IPv4 or ipv6-address-no-zone value for IPv6; see Section 4 of [RFC6991]). ๐Ÿฆ‹
  • T0: A time, the start of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330]. When T0 is "all-zeros", a start time is unspecified and Tf is to be interpreted as the duration of the measurement interval. The start time is controlled through other means. โฐ
  • Tf: A time, the end of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330]. When T0 is "all-zeros", an ending time and date is ignored and Tf is interpreted as the duration of the measurement interval. ๐ŸŒˆ

7.3.6. Roles ๐Ÿ‘‘

  • Src: Launches each packet and waits for return transmissions from the Dst. An example is the TWAMP Session-Sender. ๐Ÿš€
  • Dst: Waits for each packet from the Src and sends a return packet to the Src. An example is the TWAMP Session-Reflector. ๐Ÿงš

7.4. Output ๐Ÿ’…

This category specifies all details of the output of measurements using the metric. Literally the whole vibe of the results, bestie ๐Ÿ“Š

7.4.1. Type โœจ

Types are discussed in the subsections below.

7.4.2. Reference Definition ๐Ÿ“

For all output types:

  • T0: The start of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330]. ๐Ÿ•
  • Tf: The end of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330]. ๐Ÿ•‘

For LossRatio, the count of lost packets to total packets sent is the basis for the loss ratio calculation as per Section 4.1 of [RFC7680]. The math is giving clean ๐Ÿ’€โœจ

For each <statistic> or Percent_LossRatio, one of the following subsections applies. Pick your fighter ๐ŸฅŠ

7.4.2.1. Percentile95 ๐ŸŒŸ

The 95th percentile SHALL be calculated using the conditional distribution of all packets with a finite value of one-way delay (undefined delays are excluded) -- a single value, as follows:

See Section 4.1 of [RFC3393] for details on the conditional distribution to exclude undefined values of delay, and see Section 5 of [RFC6703] for background on this analysis choice.

See Section 4.3 of [RFC3393] for details on the percentile statistic (where round-trip delay should be substituted for "ipdv").

The percentile = 95, meaning that the reported delay, 95Percentile, is the smallest value of one-way delay for which the Empirical Distribution Function, EDF(95Percentile), is greater than or equal to 95% of the singleton one-way delay values in the conditional distribution. See Section 11.3 of [RFC2330] for the definition of the percentile statistic using the EDF. ๐Ÿ“ˆ

95Percentile: The time value of the result is expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with a resolution of 0.000000001 seconds (1.0 ns), and with lossless conversion to/from the 64-bit NTP timestamp as per Section 6 of [RFC5905]. โฑ๏ธ

7.4.2.2. Mean ๐Ÿง

The mean SHALL be calculated using the conditional distribution of all packets with a finite value of one-way delay (undefined delays are excluded) -- a single value, as follows:

See Section 4.1 of [RFC3393] for details on the conditional distribution to exclude undefined values of delay, and see Section 5 of [RFC6703] for background on this analysis choice.

See Section 4.2.2 of [RFC6049] for details on calculating this statistic; see also Section 4.2.3 of [RFC6049].

Mean: The time value of the result is expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with a resolution of 0.000000001 seconds (1.0 ns), and with lossless conversion to/from the 64-bit NTP timestamp as per Section 6 of [RFC5905]. ๐ŸŒธ

7.4.2.3. Min ๐Ÿฃ

The minimum SHALL be calculated using the conditional distribution of all packets with a finite value of one-way delay (undefined delays are excluded) -- a single value, as follows:

See Section 4.1 of [RFC3393] for details on the conditional distribution to exclude undefined values of delay, and see Section 5 of [RFC6703] for background on this analysis choice.

See Section 4.3.2 of [RFC6049] for details on calculating this statistic; see also Section 4.3.3 of [RFC6049].

Min: The time value of the result is expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with a resolution of 0.000000001 seconds (1.0 ns), and with lossless conversion to/from the 64-bit NTP timestamp as per Section 6 of [RFC5905]. ๐Ÿซง

7.4.2.4. Max ๐Ÿš€

The maximum SHALL be calculated using the conditional distribution of all packets with a finite value of one-way delay (undefined delays are excluded) -- a single value, as follows:

See Section 4.1 of [RFC3393] for details on the conditional distribution to exclude undefined values of delay, and see Section 5 of [RFC6703] for background on this analysis choice.

See Section 4.3.2 of [RFC6049] for a closely related method for calculating this statistic; see also Section 4.3.3 of [RFC6049]. The formula is as follows:

   Max = (FiniteDelay[j])

   such that for some index, j, where 1 <= j <= N
   FiniteDelay[j] >= FiniteDelay[n] for all n

Max: The time value of the result is expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with a resolution of 0.000000001 seconds (1.0 ns), and with lossless conversion to/from the 64-bit NTP timestamp as per Section 6 of [RFC5905]. ๐Ÿ”ฅ

7.4.2.5. Std_Dev ๐Ÿ“

The standard deviation (Std_Dev) SHALL be calculated using the conditional distribution of all packets with a finite value of one-way delay (undefined delays are excluded) -- a single value, as follows:

See Section 4.1 of [RFC3393] for details on the conditional distribution to exclude undefined values of delay, and see Section 5 of [RFC6703] for background on this analysis choice.

See Section 6.1.4 of [RFC6049] for a closely related method for calculating this statistic. The formula is the classic calculation for the standard deviation of a population. Main character math ๐Ÿงฎ

Define Population Std_Dev_Delay as follows:

                     _                                       _
                    |            N                            |
                    |           ---                           |
                    |     1     \                          2  |
    Std_Dev = SQRT  |  -------   >   (Delay[n] - MeanDelay)   |
                    |    (N)    /                             |
                    |           ---                           |
                    |          n = 1                          |
                    |_                                       _|

where all packets n = 1 through N have a value for Delay[n], MeanDelay is calculated per Section 7.4.2.2, and SQRT[] is the Square Root function:

Std_Dev: The time value of the result is expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with a resolution of 0.000000001 seconds (1.0 ns), and with lossless conversion to/from the 64-bit NTP timestamp as per Section 6 of [RFC5905]. ๐Ÿ’œ

7.4.2.6. Percent_LossRatio ๐Ÿฆ‹

Percent_LossRatio: The numeric value of the result is expressed in units of lost packets to total packets times 100%, as a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with a resolution of 0.0000000001. ๐Ÿ’

7.4.3. Metric Units ๐ŸŒˆ

The <statistic> of one-way delay is expressed in seconds, where <statistic> is one of:

  • 95Percentile
  • Mean
  • Min
  • Max
  • StdDev

The one-way loss ratio is expressed as a percentage of lost packets to total packets sent. ๐Ÿ’ฏ

7.4.4. Calibration ๐Ÿงช

Section 3.7.3 of [RFC7679] provides a means to quantify the systematic and random errors of a time measurement. Calibration in-situ could be enabled with an internal loopback that includes as much of the measurement system as possible, performs address manipulation as needed, and provides some form of isolation (e.g., deterministic delay) to avoid send-receive interface contention. Some portion of the random and systematic error can be characterized in this way. ๐Ÿ”ฌ

For one-way delay measurements, the error calibration must include an assessment of the internal clock synchronization with its external reference (this internal clock is supplying timestamps for measurement). In practice, the time offsets [RFC5905] of clocks at both the Source and Destination are needed to estimate the systematic error due to imperfect clock synchronization (the time offsets [RFC5905] are smoothed; thus, the random variation is not usually represented in the results). โณ

time_offset: The time value of the result is expressed in units of seconds, as a signed value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with a resolution of 0.000000001 seconds (1.0 ns), and with lossless conversion to/from the 64-bit NTP timestamp as per Section 6 of [RFC5905]. ๐Ÿซถ

When a measurement controller requests a calibration measurement, the loopback is applied and the result is output in the same format as a normal measurement, with an additional indication that it is a calibration result. In any measurement, the measurement function SHOULD report its current estimate of the time offset [RFC5905] as an indicator of the degree of synchronization. Tbh this is the sync check everyone skips ๐Ÿ‘€

Both internal loopback calibration and clock synchronization can be used to estimate the available accuracy of the Output Metric Units. For example, repeated loopback delay measurements will reveal the portion of the output result resolution that is the result of system noise and is thus inaccurate. ๐Ÿ™ˆ

7.5. Administrative Items ๐Ÿ“‹

7.5.1. Status โœ…

Current

7.5.2. Requester ๐ŸŽ€

RFC 8912

7.5.3. Revision ๐Ÿ”ข

1.0

7.5.4. Revision Date ๐Ÿ“…

2021-11-17

7.6. Comments and Remarks ๐Ÿ’ฌ

None

8. UDP Periodic One-Way Delay and Loss Registry Entries ๐Ÿฆ‹

This section specifies five initial Registry Entries for UDP Periodic One-Way Delay and one entry for UDP Periodic One-Way Loss. Six entries, one section, zero stress ๐ŸŒธ

All column entries besides the ID, Name, Description, and Output Reference Method categories are the same; thus, this section defines six closely related Registry Entries. As a result, IANA has assigned corresponding URLs to each of the six Named Metrics. Iconic organisation, honestly ๐Ÿ‘‘

8.1. Summary ๐Ÿงš

This category includes multiple indexes to the Registry Entries: the element ID and Metric Name.

8.1.1. ID (Identifier) ๐ŸŽ€

okay so IANA gave out the numeric Identifiers 12 through 17 for the six Named Metric Entries in Section 8 ๐Ÿฆ‹ peep Section 8.1.2 to see which number goes with which name.

8.1.2. Name ๐Ÿ“

here are the six names, one per ID ๐Ÿ’–

12:
     OWDelay_Active_IP-UDP-Periodic20m-
     Payload142B_RFC8912sec8_Seconds_95Percentile

13:
     OWDelay_Active_IP-UDP-Periodic20m-
     Payload142B_RFC8912sec8_Seconds_Mean

14:
     OWDelay_Active_IP-UDP-Periodic20m-
     Payload142B_RFC8912sec8_Seconds_Min

15:
     OWDelay_Active_IP-UDP-Periodic20m-
     Payload142B_RFC8912sec8_Seconds_Max

16:
     OWDelay_Active_IP-UDP-Periodic20m-
     Payload142B_RFC8912sec8_Seconds_StdDev

17:
     OWLoss_Active_IP-UDP-Periodic20m-
     Payload142B_RFC8912sec8_Percent_LossRatio

8.1.3. URI ๐ŸŒˆ

these live on the IANA performance-metrics page, so here's where to find each one โœจ

URL: https://www.iana.org/assignments/performance-metrics/
     OWDelay_Active_IP-UDP-Periodic20m-
     Payload142B_RFC8912sec8_Seconds_95Percentile

URL: https://www.iana.org/assignments/performance-metrics/
     OWDelay_Active_IP-UDP-Periodic20m-
     Payload142B_RFC8912sec8_Seconds_Mean

URL: https://www.iana.org/assignments/performance-metrics/
     OWDelay_Active_IP-UDP-Periodic20m-Payload142B_RFC8912sec8_Seconds_Min

URL: https://www.iana.org/assignments/performance-metrics/
     OWDelay_Active_IP-UDP-Periodic20m-Payload142B_RFC8912sec8_Seconds_Max

URL: https://www.iana.org/assignments/performance-metrics/
     OWDelay_Active_IP-UDP-Periodic20m-
     Payload142B_RFC8912sec8_Seconds_StdDev

URL: https://www.iana.org/assignments/performance-metrics/
     OWLoss_Active_IP-UDP-Periodic20m-
     Payload142B_RFC8912sec8_Percent_LossRatio

8.1.4. Description ๐Ÿ’…

okay the vibe check on these two metrics ๐Ÿ˜ญ

OWDelay: this one measures the delay of a stream of packets swapped between two hosts (or measurement points). It reports the <statistic> of one-way delay for every packet that got through successfully, based on their conditional delay distribution. โœจ

where <statistic> is one of:

  • 95Percentile
  • Mean
  • Min
  • Max
  • StdDev

OWLoss: this one checks the loss ratio of a stream of packets swapped between two hosts (which are the two measurement points). The result is the one-way loss ratio for all transmitted packets, shown as a percentage. ๐Ÿ”ฅ

8.1.5. Change Controller ๐Ÿ‘‘

IETF ๐Ÿซถ

8.1.6. Version (of Registry Format) ๐Ÿงš

1.0 ๐Ÿ’œ

8.2. Metric Definition ๐Ÿ’œ

this category has the columns for all the necessary metric definition details, like the RFC reference and the values of the input factors, which are called "Fixed Parameters" ๐Ÿ“

8.2.1. Reference Definition ๐Ÿ“š

For delay:

Section 3.4 of [RFC7679] gives the reference definition for the singleton (single value) one-way delay metric. Section 4.4 of [RFC7679] expands that to cover a multi-value sample. Quick note: terms like "singleton" and "sample" are defined in Section 11 of [RFC2330] ๐Ÿง 

Only successful packet transfers with finite delay make it into the sample, as prescribed in Section 4.1.2 of [RFC6049] ๐Ÿ™ˆ

For loss:

Section 2.4 of [RFC7680] gives the reference definition for the singleton (single value) one-way Loss metric. Section 3.4 of [RFC7680] expands it to cover a multi-singleton sample. Again, "singleton" and "sample" are defined in Section 11 of [RFC2330] ๐Ÿฆ‹

8.2.2. Fixed Parameters ๐ŸŽ€

these are the locked-in values, no debate ๐Ÿ’…

Type-P:
   IPv4 header values:
      DSCP:  Set to 0
      TTL:  Set to 255
      Protocol:  Set to 17 (UDP)

   IPv6 header values:
      DSCP:  Set to 0
      Hop Count:  Set to 255
      Next Header:  Set to 17 (UDP)
      Flow Label:  Set to 0
      Extension Headers:  None

   UDP header values:
      Checksum:  The checksum MUST be calculated and the non-zero
         checksum included in the header

   UDP Payload:  TWAMP-Test packet formats (Section 4.1.2 of
      [RFC5357])

         Security features in use influence the number of Padding
         octets

         142 octets total, including the TWAMP format (and format
         type MUST be reported, if used)

Other measurement Parameters:
   Tmax:  A loss threshold waiting time with value 3.0, expressed in
      units of seconds, as a positive value of type decimal64 with
      fraction digits = 4 (see Section 9.3 of [RFC6020]) and with a
      resolution of 0.0001 seconds (0.1 ms), with lossless conversion
      to/from the 32-bit NTP timestamp as per Section 6 of [RFC5905].

ok so the big one is the UDP checksum: it's a MUST, so you calculate it and keep the non-zero checksum in the header ๐Ÿ˜ญ also the payload has to be 142 octets total, with the TWAMP format (and the format type MUST be reported if it's used) ๐Ÿซถ

for Tmax, the loss threshold waiting time is 3.0 seconds. It's a positive decimal64 with fraction digits = 4 (see Section 9.3 of [RFC6020]), with a resolution of 0.0001 seconds (0.1 ms). It converts losslessly to and from the 32-bit NTP timestamp as per Section 6 of [RFC5905] ๐Ÿงš

See the Packet Stream Generation section for three additional Fixed Parameters ๐Ÿ’–

8.3. Method of Measurement ๐Ÿฆ‹

this category has the columns for references to the relevant sections of the RFC(s), plus any extra info needed so implementations can do it the exact same way ๐ŸŒธ

8.3.1. Reference Methods ๐Ÿ”ฅ

this metric (basically the same as Type-P-One-way-Delay-Poisson-Stream) is defined in Section 3.6 of [RFC7679] for singletons and Section 4.6 of [RFC7679] for samples. It uses the Type-P and Tmax from the Fixed Parameters column. The difference is that a Periodic stream is used instead, as defined in [RFC3432] โœจ

the reference method tells long-delayed packets apart from lost packets by setting a maximum waiting time for arrivals. Tmax is the threshold for declaring a packet lost. Lost packets SHALL be designated as having undefined delay and counted for the OWLoss metric ๐Ÿ’€

the calculations on one-way delay SHALL be performed on the conditional distribution, which is conditioned on successful arrival within Tmax. Also, when all packet delays are stored, the process that calculates the one-way delay value MUST enforce the Tmax threshold on the stored values before doing any calculations. See Section 4.1 of [RFC3393] for details on the conditional distribution that excludes undefined delay values, and see Section 5 of [RFC6703] for background on this analysis choice ๐Ÿง 

the reference method needs some way to tell packets in a stream apart, so it can match sending times to receiving times for each packet that arrives successfully ๐Ÿซถ

since a standard measurement protocol is employed [RFC5357], the measurement process decides the sequence numbers or timestamps applied to test packets after the Fixed and Runtime Parameters get passed to it. The measurement protocol sets the format of the sequence numbers and timestamps carried in the TWAMP-Test packet payload ๐ŸŒˆ

8.3.2. Packet Stream Generation ๐Ÿ“

this section is all about the packet traffic, which is the basis for measurement. In IPPM Metrics it's called the "stream", and you can describe it by listing its stream Parameters ๐Ÿ’…

Section 3 of [RFC3432] prescribes the method for generating Periodic streams using the associated Parameters ๐Ÿฆ‹

  • incT: the nominal duration of the inter-packet interval, first bit to first bit, with value 0.0200, expressed in units of seconds. It's a positive decimal64 with fraction digits = 4 (see Section 9.3 of [RFC6020]), with a resolution of 0.0001 seconds (0.1 ms), and it converts losslessly to and from the 32-bit NTP timestamp as per Section 6 of [RFC5905] ๐Ÿ’–
  • dT: the duration of the interval for allowed sample start times, with value 1.0000, expressed in units of seconds. It's a positive decimal64 with fraction digits = 4 (see Section 9.3 of [RFC6020]), with a resolution of 0.0001 seconds (0.1 ms), and it converts losslessly to and from the 32-bit NTP timestamp as per Section 6 of [RFC5905] ๐ŸŒธ
  • T0: the actual start time of the periodic stream, determined from T0 and dT.
Note: an initiation process with a number of control exchanges that gives unpredictable start times (within a time interval) may be sufficient to avoid synchronization of periodic streams. It's a valid replacement for picking a start time at random from a fixed interval. ๐Ÿ™ˆ

These stream Parameters will be specified as Runtime Parameters โœจ

8.3.3. Traffic Filtering (Observation) Details ๐ŸŒธ

N/A ๐Ÿ’€

8.3.4. Sampling Distribution ๐ŸŒธ

N/A ๐Ÿ’€

8.3.5. Runtime Parameters and Data Format ๐Ÿงš

Runtime Parameters are the input factors that must be determined, configured into the measurement system, and reported with the results so the context is complete ๐Ÿซถ

  • Src: the IP address of the host in the Src Role (format ipv4-address-no-zone value for IPv4 or ipv6-address-no-zone value for IPv6; see Section 4 of [RFC6991]) ๐Ÿ’œ
  • Dst: the IP address of the host in the Dst Role (format ipv4-address-no-zone value for IPv4 or ipv6-address-no-zone value for IPv6; see Section 4 of [RFC6991]) ๐Ÿ’œ
  • T0: a time, the start of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330]. When T0 is "all-zeros", a start time is unspecified, and Tf is to be interpreted as the duration of the measurement interval. The start time is controlled through other means. โฐ
  • Tf: a time, the end of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330]. When T0 is "all-zeros", an ending time and date is ignored, and Tf is interpreted as the duration of the measurement interval. โฐ

8.3.6. Roles ๐Ÿ‘‘

  • Src: launches each packet and waits for return transmissions from the Dst. An example is the TWAMP Session-Sender. ๐Ÿš€
  • Dst: waits for each packet from the Src and sends a return packet to the Src. An example is the TWAMP Session-Reflector. ๐Ÿชž

8.4. Output ๐Ÿ‘‘

this category spells out all the details of the output of measurements using the metric ๐ŸŽ€

8.4.1. Type ๐ŸŒˆ

Latency and Loss Types are discussed in the subsections below ๐Ÿฆ‹

8.4.2. Reference Definition โœจ

For all output types:

  • T0: the start of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330]. ๐Ÿ’–
  • Tf: the end of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330]. ๐Ÿ’–

For LossRatio, the count of lost packets to total packets sent is the basis for the loss ratio calculation, as per Section 4.1 of [RFC7680] ๐Ÿ”ฅ

For each <statistic> or Percent_LossRatio, one of the following subsections applies ๐Ÿซถ

8.4.2.1. Percentile95 โœจ

The 95th percentile SHALL be calculated using the conditional distribution of all packets with a finite value of one-way delay (undefined delays are excluded), and it comes out as a single value. Here's how it works ๐Ÿ’–

For the conditional distribution that drops undefined delay values, check out Section 4.1 of [RFC3393]. For the background on why we analyze it this way, see Section 5 of [RFC6703]. It's giving careful stats ๐Ÿงฎ

For the percentile statistic itself, go to Section 4.3 of [RFC3393]. Just swap round-trip delay in wherever it says "ipdv" ๐Ÿ”

The percentile is 95. So the reported delay, 95Percentile, is the smallest one-way delay value where the Empirical Distribution Function, EDF(95Percentile), is greater than or equal to 95% of the singleton one-way delay values in the conditional distribution. For the EDF definition of the percentile statistic, see Section 11.3 of [RFC2330] ๐Ÿ“ˆ

95Percentile: The result is a time value in seconds. It's a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]), with a resolution of 0.000000001 seconds (1.0 ns). It converts losslessly to and from the 64-bit NTP timestamp, as described in Section 6 of [RFC5905] โฑ๏ธโœจ

8.4.2.2. Mean ๐ŸŒธ

The mean SHALL be calculated using the conditional distribution of all packets with a finite value of one-way delay (undefined delays are excluded), and it's a single value. Here's the rundown ๐Ÿซถ

For the conditional distribution that drops undefined delay values, see Section 4.1 of [RFC3393]. For the background on this analysis choice, see Section 5 of [RFC6703] ๐Ÿ’…

For the details on calculating this statistic, check Section 4.2.2 of [RFC6049]. You'll also want Section 4.2.3 of [RFC6049] ๐Ÿ“š

Mean: The result is a time value in seconds. It's a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]), with a resolution of 0.000000001 seconds (1.0 ns). It converts losslessly to and from the 64-bit NTP timestamp, as per Section 6 of [RFC5905] ๐ŸŽ€

8.4.2.3. Min ๐Ÿฆ‹

The minimum SHALL be calculated using the conditional distribution of all packets with a finite value of one-way delay (undefined delays are excluded), and it's also a single value ๐Ÿ’œ

For the conditional distribution that drops undefined delay values, see Section 4.1 of [RFC3393]. For the background, see Section 5 of [RFC6703] ๐Ÿ“

For the details on calculating this statistic, check Section 4.3.2 of [RFC6049]. You'll also want Section 4.3.3 of [RFC6049] ๐Ÿงš

Min: The result is a time value in seconds. It's a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]), with a resolution of 0.000000001 seconds (1.0 ns). It converts losslessly to and from the 64-bit NTP timestamp, as per Section 6 of [RFC5905] โญ

8.4.2.4. Max ๐Ÿ‘‘

The maximum SHALL be calculated using the conditional distribution of all packets with a finite value of one-way delay (undefined delays are excluded), and it's a single value, so no drama here ๐Ÿ™ˆ

For the conditional distribution that drops undefined delay values, see Section 4.1 of [RFC3393]. For the background on this analysis choice, see Section 5 of [RFC6703] ๐ŸŒˆ

For a closely related method of calculating this statistic, check Section 4.3.2 of [RFC6049]. You'll also want Section 4.3.3 of [RFC6049]. The formula goes like this ๐Ÿ”ฅ

      Max = (FiniteDelay[j])

      such that for some index, j, where 1 <= j <= N
      FiniteDelay[j] >= FiniteDelay[n] for all n

Max: The result is a time value in seconds. It's a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]), with a resolution of 0.000000001 seconds (1.0 ns). It converts losslessly to and from the 64-bit NTP timestamp, as per Section 6 of [RFC5905] ๐Ÿ’–

8.4.2.5. Std_Dev ๐ŸŒˆ

Std_Dev SHALL be calculated using the conditional distribution of all packets with a finite value of one-way delay (undefined delays are excluded), and it comes out as a single value. This one gets a little mathy, so bear with me ๐Ÿง 

For the conditional distribution that drops undefined delay values, see Section 4.1 of [RFC3393]. For the background on this analysis choice, see Section 5 of [RFC6703] โœจ

For a closely related method of calculating this statistic, check Section 6.1.4 of [RFC6049]. The formula is the classic calculation for the standard deviation of a population ๐Ÿ“Š

Define the population Std_Dev_Delay like this:

                     _                                       _
                    |            N                            |
                    |           ---                           |
                    |     1     \                          2  |
    Std_Dev = SQRT  |  -------   >   (Delay[n] - MeanDelay)   |
                    |    (N)    /                             |
                    |           ---                           |
                    |          n = 1                          |
                    |_                                       _|

Here, all packets n = 1 through N have a value for Delay[n]. MeanDelay is calculated per Section 8.4.2.2, and SQRT[] is the Square Root function ๐Ÿค“

Std_Dev: The result is a time value in seconds. It's a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]), with a resolution of 0.000000001 seconds (1.0 ns). It converts losslessly to and from the 64-bit NTP timestamp, as per Section 6 of [RFC5905] ๐ŸŽ€

8.4.2.6. Percent_LossRatio ๐Ÿ“

Percent_LossRatio: The numeric value of the result is expressed in units of lost packets to total packets times 100%. It's a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020] with a resolution of 0.0000000001 ๐Ÿ’œ

8.4.3. Metric Units ๐ŸŒธ

The <statistic> of one-way delay is expressed in seconds, where <statistic> is one of these:

  • 95Percentile
  • Mean
  • Min
  • Max
  • StdDev

The one-way loss ratio is expressed as a percentage of lost packets to total packets sent ๐Ÿ’…

8.4.4. Calibration ๐Ÿ”ง

Section 3.7.3 of [RFC7679] gives you a way to quantify the systematic and random errors of a time measurement. Calibration in-situ could be enabled with an internal loopback that includes as much of the measurement system as possible. It performs address manipulation as needed and provides some form of isolation (e.g., deterministic delay) to avoid send-receive interface contention. Some portion of the random and systematic error can be characterized this way ๐Ÿฆ‹

For one-way delay measurements, the error calibration must include an assessment of the internal clock synchronization with its external reference. That internal clock is what supplies the timestamps for the measurement. In practice, the time offsets [RFC5905] of clocks at both the Source and Destination are needed to estimate the systematic error due to imperfect clock synchronization. The time offsets [RFC5905] are smoothed, so the random variation is not usually represented in the results ๐Ÿ•ฐ๏ธ

time_offset: The result is a time value in seconds. It's a signed value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]), with a resolution of 0.000000001 seconds (1.0 ns). It converts losslessly to and from the 64-bit NTP timestamp, as per Section 6 of [RFC5905] โœจ

When a measurement controller requests a calibration measurement, the loopback is applied. The result comes out in the same format as a normal measurement, with an additional indication that it is a calibration result ๐ŸŽฏ

In any measurement, the measurement function SHOULD report its current estimate of the time offset [RFC5905] as an indicator of the degree of synchronization ๐Ÿซถ

Both internal loopback calibration and clock synchronization can be used to estimate the available accuracy of the Output Metric Units. For example, repeated loopback delay measurements will reveal the portion of the output result resolution that comes from system noise and is therefore inaccurate ๐Ÿ”

8.5. Administrative Items ๐Ÿ“‹

8.5.1. Status

Current โœ…

8.5.2. Requester

RFC 8912 ๐Ÿ™Œ

8.5.3. Revision

1.0

8.5.4. Revision Date

2021-11-17 ๐Ÿ“…

8.6. Comments and Remarks ๐Ÿ’ฌ

None

9. ICMP Round-Trip Latency and Loss Registry Entries ๐Ÿ“

This section specifies three initial Registry Entries for ICMP Round-Trip Latency, plus another entry for the ICMP Round-Trip Loss Ratio ๐Ÿ’œ

All column entries besides the ID, Name, Description, and Output Reference Method categories are the same. That means this section defines four closely related Registry Entries. Because of that, IANA has assigned corresponding URLs to each of the four Named Metrics ๐Ÿ”—

9.1. Summary ๐ŸŒŸ

This category includes multiple indexes to the Registry Entries: the element ID and the Metric Name ๐Ÿงš

9.1.1. ID (Identifier)

IANA has allocated the numeric Identifiers 18-21 for the four Named Metric Entries in Section 9. See Section 9.1.2 for the mapping to Names ๐Ÿ”ข

9.1.2. Name

18:  RTDelay_Active_IP-ICMP-SendOnRcv_RFC8912sec9_Seconds_Mean

19:  RTDelay_Active_IP-ICMP-SendOnRcv_RFC8912sec9_Seconds_Min

20:  RTDelay_Active_IP-ICMP-SendOnRcv_RFC8912sec9_Seconds_Max

21:  RTLoss_Active_IP-ICMP-SendOnRcv_RFC8912sec9_Percent_LossRatio

9.1.3. URI

URL: https://www.iana.org/assignments/performance-metrics/
RTDelay_Active_IP-ICMP-SendOnRcv_RFC8912sec9_Seconds_Mean

URL: https://www.iana.org/assignments/performance-metrics/
RTDelay_Active_IP-ICMP-SendOnRcv_RFC8912sec9_Seconds_Min

URL: https://www.iana.org/assignments/performance-metrics/
RTDelay_Active_IP-ICMP-SendOnRcv_RFC8912sec9_Seconds_Max

URL: https://www.iana.org/assignments/performance-metrics/
RTLoss_Active_IP-ICMP-SendOnRcv_RFC8912sec9_Percent_LossRatio

9.1.4. Description ๐ŸŽ€

RTDelay: This metric assesses the delay of a stream of ICMP packets exchanged between two hosts, which are the two measurement points. The output is the round-trip delay for all successfully exchanged packets, expressed as the <statistic> of their conditional delay distribution, where <statistic> is one of these:

  • Mean
  • Min
  • Max

RTLoss: This metric assesses the loss ratio of a stream of ICMP packets exchanged between two hosts, which are the two measurement points. The output is the round-trip loss ratio for all transmitted packets, expressed as a percentage ๐Ÿฆ‹

9.1.5. Change Controller

IETF

9.1.6. Version (of Registry Format)

1.0

9.2. Metric Definition ๐Ÿ“

This category includes columns that prompt you to enter all the necessary details for the metric definition. That covers the RFC reference and the values of the input factors, which are called "Fixed Parameters" ๐Ÿ’…

9.2.1. Reference Definition โœจ

okay so the delay reference is the big one, bestie ๐Ÿ’… ๐Ÿซถ

For delay:

Almes, G., Kalidindi, S., and M. Zekauskas, "A Round-trip Delay Metric for IPPM", RFC 2681, DOI 10.17487/RFC2681, September 1999, <https://www.rfc-editor.org/info/rfc2681>. [RFC2681]

Section 2.4 of [RFC2681] gives the reference definition of the singleton (single value) round-trip delay metric ๐ŸŽ€. Section 3.4 of [RFC2681] gives the reference definition expanded to cover a multi-singleton sample. Terms like "singleton" and "sample" are defined in Section 11 of [RFC2330], so go check that if you get confused ๐Ÿงš

Here's the lowkey plot twist: the round-trip delay definition in Section 2.4 of [RFC2681] is directionally ambiguous in the text. This metric tightens it up and says the host in the Src Role sends the first packet to the host in the Dst Role, and then ultimately receives the matching return packet from the Dst (when neither one gets lost) ๐Ÿ’œ

Also, the variable "dT" is used in [RFC2681] for the round-trip delay value in metric definitions and methods. It has been reused in other IPPM literature for different quantities, so it cannot be used as a global variable name ๐Ÿ™ˆ

For loss:

Morton, A., "Round-Trip Packet Loss Metrics", RFC 6673, DOI 10.17487/RFC6673, August 2012, <https://www.rfc-editor.org/info/rfc6673>. [RFC6673]

Both the Delay and Loss metrics use a maximum waiting time for received packets, so the loss ratio is the count of lost packets divided by total packets sent, as per Section 6.1 of [RFC6673] ๐Ÿฆ‹

9.2.2. Fixed Parameters ๐ŸŒธ

Here are the fixed parameters, copied exactly so nobody gets creative with them:

Type-P as defined in Section 13 of [RFC2330]:
   IPv4 header values:
      DSCP:  Set to 0
      TTL:  Set to 255
      Protocol:  Set to 01 (ICMP)

   IPv6 header values:
      DSCP:  Set to 0
      Hop Count:  Set to 255
      Next Header:  Set to 128 decimal (ICMP)
      Flow Label:  Set to 0
      Extension Headers:  None

   ICMP header values:
      Type:  8 (Echo Request)
      Code:  0
      Checksum:  The checksum MUST be calculated and the non-zero
         checksum included in the header
      (Identifier and sequence number set at runtime)

   ICMP Payload:
      Total of 32 bytes of random information, constant per test

Other measurement Parameters:
   Tmax:  A loss threshold waiting time with value 3.0, expressed in
      units of seconds, as a positive value of type decimal64 with
      fraction digits = 4 (see Section 9.3 of [RFC6020]) and with a
      resolution of 0.0001 seconds (0.1 ms), with lossless conversion
      to/from the 32-bit NTP timestamp as per Section 6 of [RFC5905].

9.3. Method of Measurement ๐Ÿฆ„

This category has columns for references to the relevant sections of the RFC(s), plus any extra info needed so implementations can follow the method without guessing ๐Ÿ“

9.3.1. Reference Methods ๐Ÿ’–

The methodology for this metric (equivalent to Type-P-Round-trip-Delay-Poisson-Stream) follows Section 2.6 of [RFC2681] for singletons and Section 3.6 of [RFC2681] for samples. It uses the Type-P and Tmax from the Fixed Parameters column ๐ŸŽ€

The reference method tells long-delayed packets apart from lost packets by setting a maximum waiting time for packet arrival. Tmax is that waiting time, and it's the threshold for declaring a packet lost. Lost packets SHALL be designated as having undefined delay and counted for the RTLoss metric ๐Ÿ’€

The calculations on the delay (RTD) SHALL be performed on the conditional distribution, meaning conditioned on successful packet arrival within Tmax. Also, when all packet delays are stored, the process that calculates the RTD value MUST enforce the Tmax threshold on the stored values before any calculations happen. See Section 4.1 of [RFC3393] for details on the conditional distribution that excludes undefined delay values, and see Section 5 of [RFC6703] for background on this analysis choice ๐Ÿง 

The reference method needs some way to tell packets apart in a stream, so it can match each sending time to the receiving time for every packet that arrives successfully. Sequence numbers or other send-order identification MUST be retained at the Src or included with each packet, so reordering can be sorted out if it happens ๐Ÿ”ฅ

The measurement process decides the sequence numbers applied to test packets after the Fixed and Runtime Parameters are passed to it. The ICMP measurement process and protocol dictate the format of sequence numbers and other Identifiers ๐Ÿ‘‘

For a deeper dive on the instruction to "send a Type-P packet back to the Src as quickly as possible" in Section 2.6 of [RFC2681], check out Section 4.4 of [RFC6673]. Section 8 of [RFC6673] has additional requirements that MUST be included in the Method of Measurement for this metric. Bestie, do not skip that one ๐Ÿ˜ญ

9.3.2. Packet Stream Generation ๐Ÿงšโ€โ™€๏ธ

This section covers the packet traffic that the measurement is based on. In IPPM Metrics, this traffic is called the "stream", and you can describe it by listing its stream Parameters ๐ŸŒˆ

The ICMP metrics use a sending discipline called "SendOnRcv", or Send On Receive. It's a modification of Section 3 of [RFC3432], which describes how to generate Periodic streams with the Parameters defined below:

  • incT: The nominal duration of the inter-packet interval, first bit to first bit.
  • dT: The duration of the interval for allowed sample start times.

The incT stream Parameter will be specified as a Runtime Parameter, and dT is not used in SendOnRcv ๐Ÿ’…

Here's how SendOnRcv works. A SendOnRcv sender acts exactly like a Periodic stream generator while all reply packets arrive with RTD < incT, and the inter-packet interval stays constant โœจ

If a reply packet arrives with RTD >= incT, the inter-packet interval for the next sending time is nominally RTD ๐ŸŒธ

If a reply packet fails to arrive within Tmax, the inter-packet interval for the next sending time is nominally Tmax ๐Ÿ™ˆ

Want an immediate Send On Reply arrival instead? Then set incT = 0 ๐ŸŽ€

9.3.3. Traffic Filtering (Observation) Details ๐ŸŒท

N/A

9.3.4. Sampling Distribution ๐ŸŒท

N/A

9.3.5. Runtime Parameters and Data Format ๐Ÿ“Š

Runtime Parameters are input factors that must be determined, configured into the measurement system, and reported with the results so the context is complete ๐Ÿซถ

  • Src: The IP address of the host in the Src Role (format ipv4-address-no-zone value for IPv4 or ipv6-address-no-zone value for IPv6; see Section 4 of [RFC6991]).
  • Dst: The IP address of the host in the Dst Role (format ipv4-address-no-zone value for IPv4 or ipv6-address-no-zone value for IPv6; see Section 4 of [RFC6991]).
  • incT: The nominal duration of the inter-packet interval, first bit to first bit, expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 4 (see Section 9.3 of [RFC6020]) and with a resolution of 0.0001 seconds (0.1 ms).
  • T0: A time, the start of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330]. When T0 is "all-zeros", a start time is unspecified and Tf is to be interpreted as the duration of the measurement interval. The start time is controlled through other means โฐ
  • Count: The total count of ICMP Echo Requests to send, formatted as a uint16, as per Section 9.2 of [RFC6020].

See the Packet Stream Generation section for additional Runtime Parameters ๐Ÿงƒ

9.3.6. Roles ๐ŸŽญ

  • Src: Launches each packet and waits for return transmissions from the Dst.
  • Dst: Waits for each packet from the Src and sends a return packet to the Src (ICMP Echo Reply, Type 0).

9.4. Output ๐ŸŽ

This category specifies all the details of the output of measurements using the metric ๐Ÿ’œ

9.4.1. Type ๐Ÿท๏ธ

Latency and Loss Types are discussed in the subsections below ๐ŸŒˆ

9.4.2. Reference Definition ๐Ÿ“–

For all output types:

  • T0: The start of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330].
  • Tf: The end of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330].
  • TotalCount: The count of packets actually sent by the Src to the Dst during the measurement interval.

For each <statistic> or Percent_LossRatio, one of the following subsections applies ๐Ÿฆ‹

9.4.2.1. Mean ๐ŸŒŸ

The mean SHALL be calculated using the conditional distribution of all packets with a finite value of round-trip delay (undefined delays are excluded), as a single value. Here's how:

See Section 4.1 of [RFC3393] for details on the conditional distribution that excludes undefined delay values, and see Section 5 of [RFC6703] for background on this analysis choice.

See Section 4.2.2 of [RFC6049] for details on calculating this statistic; see also Section 4.2.3 of [RFC6049].

  • Mean: The time value of the result is expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with a resolution of 0.000000001 seconds (1.0 ns), and with lossless conversion to/from the 64-bit NTP timestamp as per Section 6 of [RFC5905].

9.4.2.2. Min ๐ŸŒ™

The minimum SHALL be calculated using the conditional distribution of all packets with a finite value of round-trip delay (undefined delays are excluded), as a single value. Here's how:

See Section 4.1 of [RFC3393] for details on the conditional distribution that excludes undefined delay values, and see Section 5 of [RFC6703] for background on this analysis choice.

See Section 4.3.2 of [RFC6049] for details on calculating this statistic; see also Section 4.3.3 of [RFC6049].

  • Min: The time value of the result is expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with a resolution of 0.000000001 seconds (1.0 ns), and with lossless conversion to/from the 64-bit NTP timestamp as per Section 6 of [RFC5905].

9.4.2.3. Max ๐Ÿš€

The maximum SHALL be calculated using the conditional distribution of all packets with a finite value of round-trip delay (undefined delays are excluded), as a single value. Here's how:

See Section 4.1 of [RFC3393] for details on the conditional distribution that excludes undefined delay values, and see Section 5 of [RFC6703] for background on this analysis choice.

See Section 4.3.2 of [RFC6049] for a closely related method for calculating this statistic; see also Section 4.3.3 of [RFC6049]. The formula is as follows:

Max = (FiniteDelay[j])

such that for some index, j, where 1 <= j <= N
FiniteDelay[j] >= FiniteDelay[n] for all n
  • Max: The time value of the result is expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with a resolution of 0.000000001 seconds (1.0 ns), and with lossless conversion to/from the 64-bit NTP timestamp as per Section 6 of [RFC5905].

9.4.2.4. Percent_LossRatio ๐Ÿ’…โœจ

okay so for LossRatio, the count of lost packets to total packets sent is the basis for the loss ratio calculation, as per Section 4.1 of [RFC7680]. bestie, that's the whole recipe ๐Ÿ“

Percent_LossRatio: The numeric value of the result is expressed in units of lost packets to total packets times 100%, as a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with a resolution of 0.0000000001. ๐ŸŽ€๐Ÿ’–

9.4.3. Metric Units ๐ŸŒธ

The <statistic> of round-trip delay is expressed in seconds, where <statistic> is one of:

  • Mean
  • Min
  • Max

The round-trip loss ratio is expressed as a percentage of lost packets to total packets sent. ๐Ÿฆ‹

9.4.4. Calibration ๐Ÿงš

Section 3.7.3 of [RFC7679] provides a means to quantify the systematic and random errors of a time measurement. ngl this is the part where we check how wrong our clock is ๐Ÿ™ˆ

Calibration in-situ could be enabled with an internal loopback at the Source host that includes as much of the measurement system as possible, performs address manipulation as needed, and provides some form of isolation (e.g., deterministic delay) to avoid send-receive interface contention. Some portion of the random and systematic error can be characterized in this way. It's giving "test it against yourself first" ๐Ÿ’œ

When a measurement controller requests a calibration measurement, the loopback is applied and the result is output in the same format as a normal measurement, with an additional indication that it is a calibration result. โœจ

Both internal loopback calibration and clock synchronization can be used to estimate the available accuracy of the Output Metric Units. For example, repeated loopback delay measurements will reveal the portion of the output result resolution that is the result of system noise and is thus inaccurate. Iconic behaviour, honestly ๐Ÿ‘‘๐ŸŒˆ

9.5. Administrative Items ๐ŸŽ€

9.5.1. Status ๐Ÿฆ‹

Current

9.5.2. Requester ๐Ÿ’…

RFC 8912

9.5.3. Revision ๐ŸŒธ

1.0

9.5.4. Revision Date โญ

2021-11-17

9.6. Comments and Remarks ๐Ÿ’–

None

  1. TCP Round-Trip Delay and Loss Registry Entries ๐Ÿฆ‹๐ŸŒˆ

This section specifies four initial Registry Entries for the Passive assessment of TCP Round-Trip Delay (RTD) and another entry for the TCP Round-Trip Loss Count. ๐Ÿ’œ

All column entries besides the ID, Name, Description, and Output Reference Method categories are the same; thus, this section defines four closely related Registry Entries. As a result, IANA has assigned corresponding URLs to each of the four Named Metrics. It's literally the same vibe across the whole set ๐Ÿซถ

10.1. Summary ๐Ÿงš

This category includes multiple indexes to the Registry Entries: the element ID and Metric Name. ๐Ÿ“

10.1.1. ID (Identifier) ๐ŸŒธ

IANA has allocated the numeric Identifiers 22-26 for the five Named Metric Entries in Section 10. See Section 10.1.2 for mapping to Names. ๐Ÿ”ฅ

10.1.2. Name ๐Ÿ’–

22:  RTDelay_Passive_IP-TCP_RFC8912sec10_Seconds_Mean

23:  RTDelay_Passive_IP-TCP_RFC8912sec10_Seconds_Min

24:  RTDelay_Passive_IP-TCP_RFC8912sec10_Seconds_Max

25:  RTDelay_Passive_IP-TCP-HS_RFC8912sec10_Seconds_Singleton

26:  RTLoss_Passive_IP-TCP_RFC8912sec10_Packet_Count
Note that a midpoint observer only has the opportunity to compose a single RTDelay on the TCP handshake. ๐Ÿ™ˆ

10.1.3. URI ๐Ÿฆ‹

URL: https://www.iana.org/assignments/performance-metrics/
RTDelay_Passive_IP-TCP_RFC8912sec10_Seconds_Mean

URL: https://www.iana.org/assignments/performance-metrics/
RTDelay_Passive_IP-TCP_RFC8912sec10_Seconds_Min

URL: https://www.iana.org/assignments/performance-metrics/
RTDelay_Passive_IP-TCP_RFC8912sec10_Seconds_Max

URL: https://www.iana.org/assignments/performance-metrics/
RTDelay_Passive_IP-TCP-HS_RFC8912sec10_Seconds_Singleton

URL: https://www.iana.org/assignments/performance-metrics/
RTLoss_Passive_IP-TCP_RFC8912sec10_Packet_Count

10.1.4. Description ๐ŸŒˆ

RTDelay: This metric assesses the round-trip delay of TCP packets constituting a single connection, exchanged between two hosts. We consider the measurement of round-trip delay based on a single Observation Point (OP) [RFC7011] somewhere in the network. The output is the round-trip delay for all successfully exchanged packets expressed as the <statistic> of their conditional delay distribution, where <statistic> is one of:

  • Mean
  • Min
  • Max

RTDelay Singleton: This metric assesses the round-trip delay of TCP packets initiating a single connection (or 3-way handshake), exchanged between two hosts. We consider the measurement of round-trip delay based on a single Observation Point (OP) [RFC7011] somewhere in the network. The output is the single measurement of Round-trip delay, or Singleton. โœจ

RTLoss: This metric assesses the estimated loss count for TCP packets constituting a single connection, exchanged between two hosts. We consider the measurement of round-trip delay based on a single OP [RFC7011] somewhere in the network. The output is the estimated loss count for the measurement interval. ๐Ÿ’…

10.1.5. Change Controller ๐Ÿ‘‘

IETF

10.1.6. Version (of Registry Format) ๐ŸŽ€

1.0

10.2. Metric Definition ๐Ÿงš

This category includes columns to prompt the entry of all necessary details related to the metric definition, including the RFC reference and values of input factors, called "Fixed Parameters". ๐Ÿ’œ

10.2.1. Reference Definition ๐ŸŒธ

Almes, G., Kalidindi, S., and M.  Zekauskas, "A Round-trip Delay
Metric for IPPM", RFC 2681, DOI 10.17487/RFC2681, September 1999,
<https://www.rfc-editor.org/info/rfc2681>.  [RFC2681]

Although there is no RFC that describes Passive Measurement of round-trip delay, the parallel definition for Active Measurement is provided in [RFC2681]. bestie the active version is the blueprint ๐Ÿ“๐Ÿฆ‹

This metric definition uses the term "wire time" as defined in Section 10.2 of [RFC2330], and the terms "singleton" and "sample" as defined in Section 11 of [RFC2330]. (Section 2.4 of [RFC2681] provides the reference definition of the singleton (single value) round-trip delay metric. Section 3.4 of [RFC2681] provides the reference definition expanded to cover a multi-singleton sample.) ๐Ÿ“

With the OP [RFC7011] typically located between the hosts participating in the TCP connection, the round-trip delay metric requires two individual measurements between the OP and each host, such that the Spatial Composition [RFC6049] of the measurements yields a round-trip delay singleton (we are extending the composition of one-way subpath delays to subpath round-trip delay). ๐ŸŒˆ

Using the direction of TCP SYN transmission to anchor the nomenclature, host A sends the SYN, and host B replies with SYN-ACK during connection establishment. The direction of SYN transfer is considered the Forward direction of transmission, from A through the OP to B (the Reverse direction is B through the OP to A). ๐Ÿงš

Traffic Filters reduce the packet streams at the OP to a Qualified bidirectional flow of packets. โœจ

In the definitions below, Corresponding Packets are transferred in different directions and convey a common value in a TCP header field that establishes correspondence (to the extent possible). Examples may be found in the TCP timestamp fields. ๐Ÿ’–

For a real number, RTD_fwd, >> the round-trip delay in the Forward direction from the OP to host B at time T' is RTD_fwd << it is REQUIRED that the OP observed a Qualified Packet to host B at wire time T', that host B received that packet and sent a Corresponding Packet back to host A, and the OP observed the Corresponding Packet at wire time T' + RTD_fwd. ๐Ÿ”ฅ

For a real number, RTD_rev, >> the round-trip delay in the Reverse direction from the OP to host A at time T'' is RTD_rev << it is REQUIRED that the OP observed a Qualified Packet to host A at wire time T'', that host A received that packet and sent a Corresponding Packet back to host B, and that the OP observed the Corresponding Packet at wire time T'' + RTD_rev. ๐Ÿ’…

Ideally, the packet sent from host B to host A in both definitions above SHOULD be the same packet (or, when measuring RTD_rev first, the packet from host A to host B in both definitions should be the same). ๐Ÿซถ

The REQUIRED Composition Function for a singleton of round-trip delay at time T (where T is the earliest of T' and T'' above) is:

RTDelay = RTD_fwd + RTD_rev

Note that when the OP is located at host A or host B, one of the terms composing RTDelay will be zero or negligible. ๐Ÿ™ˆ

Using the abbreviation HS to refer to the TCP handshake: when the Qualified and Corresponding Packets are a TCP-SYN and a TCP-SYN-ACK, RTD_fwd == RTD_HS_fwd. ๐ŸŒธ

When the Qualified and Corresponding Packets are a TCP-SYN-ACK and a TCP-ACK, RTD_rev == RTD_HS_rev. ๐Ÿฆ‹

The REQUIRED Composition Function for a singleton of round-trip delay for the connection handshake is:

RTDelay_HS = RTD_HS_fwd + RTD_HS_rev

The definition of round-trip loss count uses the nomenclature developed above, based on observation of the TCP header sequence numbers and storing the sequence number gaps observed. Packet losses can be inferred from: ๐Ÿงš

Out-of-order segments: TCP segments are transmitted with monotonically increasing sequence numbers, but these segments may be received out of order. Section 3 of [RFC4737] describes the notion of "next expected" sequence numbers, which can be adapted to TCP segments (for the purpose of detecting reordered packets). Observation of out-of-order segments indicates loss on the path prior to the OP and creates a gap. ๐ŸŒˆ

Duplicate segments: Section 2 of [RFC5560] defines identical packets and is suitable for evaluation of TCP packets to detect duplication. Observation of a segment duplicates a segment previously observed (and thus no corresponding observed segment gap) indicates loss on the path following the OP (e.g., the segment overlaps part of the octet stream already observed at the OP). ๐Ÿ’œ

Each observation of an out-of-order or duplicate segment infers a singleton of loss, but the composition of round-trip loss counts will be conducted over a measurement interval that is synonymous with a single TCP connection. โœจ

With the above observations in the Forward direction over a measurement interval, the count of out-of-order and duplicate segments is defined as RTL_fwd. Comparable observations in the Reverse direction are defined as RTL_rev. ๐Ÿ“

For a measurement interval (corresponding to a single TCP connection) T0 to Tf, the REQUIRED Composition Function for the two single-direction counts of inferred loss is:

RTLoss = RTL_fwd + RTL_rev

10.2.2. Fixed Parameters ๐ŸŽ€

Traffic Filters:
   IPv4 header values:
      DSCP:  Set to 0
      Protocol:  Set to 06 (TCP)

   IPv6 header values:
      DSCP:  Set to 0
      Hop Count:  Set to 255
      Next Header:  Set to 6 (TCP)
      Flow Label:  Set to 0
      Extension Headers:  None

   TCP header values:
      Flags:  ACK, SYN, FIN, set as required
      Timestamps Option (TSopt):  Set.  See Section 3.2 of [RFC7323]

10.3. Method of Measurement ๐ŸŒˆ

This category includes columns for references to relevant sections of the RFC(s) and any supplemental information needed to ensure an unambiguous method for implementations. ๐Ÿ’…

10.3.1. Reference Methods โœจ

okay so the foundational methodology for this metric comes from Section 4 of [RFC7323] ๐Ÿ’… It uses the Timestamps option, with modifications that let it work at a mid-path OP [RFC7011]. The extra details and the useful heuristics were borrowed from [Strowes] and [Trammell-14] ๐Ÿงš

The Traffic Filter at the OP is set up to watch a single TCP connection. When the SYN/SYN-ACK/ACK handshake happens, it gives us the very first chance to measure both RTD_fwd (on the SYN to SYN-ACK pair) and RTD_rev (on the SYN-ACK to ACK pair) ๐Ÿฆ‹ We call this singleton of RTDelay RTDelay_HS, composed using the Forward and Reverse measurement pair. RTDelay_HS SHALL be treated separately from other RTDelays on data-bearing packets and their ACKs. The RTDelay_HS value MAY be used as a consistency check on the composed values of RTDelay for payload-bearing packets. iykyk ๐Ÿซถ

For payload-bearing packets, the OP measures the time between seeing a packet with sequence number "s" and seeing the matching ACK with that same sequence number โฑ๏ธ When the payload goes from host A to host B, that observed interval is RTD_fwd.

For payload-bearing packets, every out-of-order or duplicate segment we spot infers a loss count. The round-trip loss counts get composed over a measurement interval that is synonymous with a single TCP connection ๐ŸŒˆ

Here's the tricky bit: lots of data transfers only go one way (say, Forward from host A to host B). So we need pure ACK packets with a Timestamp (TSval) and packets carrying the Timestamp value echo to measure RTD_rev ๐Ÿ‘‘ The time between observing the ACK from B to A and observing the Corresponding Packet with a Timestamp Echo Reply (TSecr) field [RFC7323] is the RTD_rev. It's giving precision ๐Ÿ’–

Delay Measurement Filtering Heuristics:

  • If data payloads were transferred in both Forward and Reverse directions, then the Round-Trip Time Measurement rule in Section 4.1 of [RFC7323] could be applied. Honestly this rule is a total queen ๐Ÿ‘‘ It basically excludes any measurement using a packet unless that packet makes progress in the transfer (advances the left edge of the send window, consistent with [Strowes]).
  • A different heuristic from [Trammell-14] is to exclude any RTD_rev that is larger than previously observed values. This tends to exclude Reverse measurements taken when the application has no data ready to send, because a lot of time could get added to RTD_rev from that source of error ๐Ÿ™ˆ
  • Note that the above heuristic assumes that host A is sending data. If host A is expecting a download, this heuristic should be applied to RTD_fwd instead ๐Ÿ“
  • The statistic calculations to summarize the delay (RTDelay) SHALL be performed on the conditional distribution, conditioned on successful Forward and Reverse measurements that follow the heuristics. ๐Ÿ’…

Method for Inferring Loss:

  • The OP tracks sequence numbers and stores gaps for each direction of transmission, as well as the next expected sequence number, as discussed in [Trammell-14] and [RFC4737]. Loss is inferred from out-of-order segments and duplicate segments. ๐Ÿ”

Loss Measurement Filtering Heuristics:

  • [Trammell-14] adds a window of evaluation based on the RTDelay. โญ
  • Distinguish reordered packets from out-of-order segments due to loss, because the sequence number gap gets filled during the same RTDelay window. Segments detected as reordered according to [RFC4737] MUST reduce the loss count inferred from out-of-order segments. Plot twist, but it makes sense ๐Ÿฆ‹
  • Spurious (unneeded) retransmissions, observed as duplicates, can also be reduced in this way, as described in [Trammell-14]. ๐ŸŒธ

Sources of Error:

  • The principal source of RTDelay error is the host processing time needed to return the packet that defines the end of a time interval. The heuristics above are designed to mitigate these errors by excluding measurements where host processing time is a significant part of RTD_fwd or RTD_rev. ๐Ÿงš
  • A key source of RTLoss error is observation loss, as described in Section 3 of [Trammell-14]. Not great, not terrible ๐Ÿ’€

10.3.2. Packet Stream Generation ๐ŸŒธ

N/A

10.3.3. Traffic Filtering (Observation) Details โœจ

The Fixed Parameters above give a portion of the Traffic Filter. The other aspects get supplied as Runtime Parameters (below) ๐Ÿ’œ

10.3.4. Sampling Distribution ๐ŸŽ€

This metric requires a complete sample of all packets that qualify according to the Traffic Filter criteria. No skipping, bestie ๐Ÿ˜ญ

10.3.5. Runtime Parameters and Data Format ๐Ÿฆ‹

Runtime Parameters are input factors that must be determined, configured into the measurement system, and reported with the results for the context to be complete. Context is everything, fr fr ๐Ÿ’…

  • Src: The IP address of the host in the host A Role (format ipv4-address-no-zone value for IPv4 or ipv6-address-no-zone value for IPv6; see Section 4 of [RFC6991]).
  • Dst: The IP address of the host in the host B Role (format ipv4-address-no-zone value for IPv4 or ipv6-address-no-zone value for IPv6; see Section 4 of [RFC6991]).
  • T0: A time, the start of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330]. When T0 is "all-zeros", a start time is unspecified and Tf is to be interpreted as the duration of the measurement interval. The start time is controlled through other means. ๐Ÿ•ฐ๏ธ
  • Tf: Optionally, the end of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]), or the duration (see T0). The UTC Time Zone is required by Section 6.1 of [RFC2330]. Alternatively, the end of the measurement interval MAY be controlled by the measured connection, where the second pair of FIN and ACK packets exchanged between host A and host B effectively ends the interval. ๐Ÿ
  • TTL or Hop Limit: Set at desired value. ๐ŸŒˆ

10.3.6. Roles ๐Ÿ‘‘

  • host A: Launches the SYN packet to open the connection. The Role of "host A" is synonymous with the IP address used at host A. ๐Ÿš€
  • host B: Replies with the SYN-ACK packet to open the connection. The Role of "host B" is synonymous with the IP address used at host B. ๐Ÿซถ

10.4. Output ๐Ÿ’–

This category specifies all details of the output of measurements using the metric. Every detail, bestie ๐Ÿงพ

10.4.1. Type ๐ŸŒธ

RTDelay Types are discussed in the subsections below.

For RTLoss: The count of lost packets. ๐Ÿ’€

10.4.2. Reference Definition โœจ

For all output types:

  • T0: The start of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330]. ๐Ÿ•ฐ๏ธ
  • Tf: The end of a measurement interval (format "date-time" as specified in Section 5.6 of [RFC3339]; see also "date-and-time" in Section 3 of [RFC6991]). The UTC Time Zone is required by Section 6.1 of [RFC2330]. The end of the measurement interval MAY be controlled by the measured connection, where the second pair of FIN and ACK packets exchanged between host A and host B effectively ends the interval. ๐Ÿ
  • RTDelay_Passive_IP-TCP-HS: The round-trip delay of the handshake is a Singleton. ๐Ÿฆ‹
  • RTLoss: The count of lost packets. ๐Ÿ“

For each <statistic>, Singleton, or Loss Count, one of the following subsections applies. Pick your fighter ๐ŸฅŠ

10.4.2.1. Mean ๐ŸŒˆ

The mean SHALL be calculated using the conditional distribution of all packets with a finite value of round-trip delay (undefined delays are excluded) -- a single value, as follows:

See Section 4.1 of [RFC3393] for details on the conditional distribution to exclude undefined values of delay, and see Section 5 of [RFC6703] for background on this analysis choice.

See Section 4.2.2 of [RFC6049] for details on calculating this statistic; see also Section 4.2.3 of [RFC6049].

  • Mean: The time value of the result is expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with a resolution of 0.000000001 seconds (1.0 ns), and with lossless conversion to/from the 64-bit NTP timestamp as per Section 6 of [RFC5905]. โฑ๏ธ

10.4.2.2. Min ๐Ÿ“

The minimum SHALL be calculated using the conditional distribution of all packets with a finite value of round-trip delay (undefined delays are excluded) -- a single value, as follows:

See Section 4.1 of [RFC3393] for details on the conditional distribution to exclude undefined values of delay, and see Section 5 of [RFC6703] for background on this analysis choice.

See Section 4.3.2 of [RFC6049] for details on calculating this statistic; see also Section 4.3.3 of [RFC6049].

  • Min: The time value of the result is expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with a resolution of 0.000000001 seconds (1.0 ns), and with lossless conversion to/from the 64-bit NTP timestamp as per Section 6 of [RFC5905]. ๐Ÿ’…

10.4.2.3. Max ๐Ÿ‘‘

The maximum SHALL be calculated using the conditional distribution of all packets with a finite value of round-trip delay (undefined delays are excluded) -- a single value, as follows:

See Section 4.1 of [RFC3393] for details on the conditional distribution to exclude undefined values of delay, and see Section 5 of [RFC6703] for background on this analysis choice.

See Section 4.3.2 of [RFC6049] for a closely related method for calculating this statistic; see also Section 4.3.3 of [RFC6049]. The formula is as follows:

Max = (FiniteDelay[j])

such that for some index, j, where 1 <= j <= N
FiniteDelay[j] >= FiniteDelay[n] for all n
  • Max: The time value of the result is expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with a resolution of 0.000000001 seconds (1.0 ns), and with lossless conversion to/from the 64-bit NTP timestamp as per Section 6 of [RFC5905]. ๐Ÿ”ฅ

10.4.2.4. Singleton ๐Ÿงš

The singleton SHALL be calculated using the successful RTD_fwd (on the SYN to SYN-ACK pair) and RTD_rev (on the SYN-ACK to ACK pair), see Section 10.3.1.

The singleton time value of the result is expressed in units of seconds, as a positive value of type decimal64 with fraction digits = 9 (see Section 9.3 of [RFC6020]) with resolution of 0.000000001 seconds (1.0 ns), and with lossless conversion to/from the 64-bit NTP timestamp as per Section 6 of [RFC5905]. ๐Ÿฆ‹

10.4.2.5. Loss Counts ๐ŸŒธ

RTLoss_Passive_IP-TCP_RFC8912sec10_Packet_Count: The count of lost packets.

Observation of an out-of-order segment or duplicate segment infers a loss count, after application of the Definitions of Section 10.2.1 and the Loss Measurement Filtering Heuristics of Section 10.3.1. The composition of round-trip loss counts will be conducted over a measurement interval that is synonymous with a single TCP connection. ๐Ÿ”

For a measurement interval (corresponding to a single TCP connection) T0 to Tf, the REQUIRED Composition Function for the two single-direction counts of inferred loss is:

RTLoss = RTL_fwd + RTL_rev
  • Packet count: The numeric value of the result is expressed in units of lost packets, as a positive value of type uint64 (represents integer values between 0 and 18446744073709551615, inclusively (see Section 9.2 of [RFC6020]). ๐ŸŽ€

10.4.3. Metric Units ๐Ÿ“

okay so round-trip delay gets reported in seconds ๐Ÿ•’, where the <statistic> placeholder is one of these three:

  • Mean
  • Min
  • Max

The round-trip delay of the TCP handshake singleton is in seconds too โฑ๏ธ, and the round-trip loss count is a number of packets ๐Ÿ“ฆ ๐Ÿซถ

10.4.4. Calibration ๐ŸŽฏ

bestie, Passive Measurements taken at an OP could get calibrated against an Active Measurement (with loss emulation) running at host A or host B, and that Active Measurement is the ground truth ๐Ÿ‘‘โœจ so it's the one you trust.

10.5. Administrative Items ๐Ÿ“‹

10.5.1. Status โœ…

The status is Current ๐Ÿ’–

10.5.2. Requester ๐Ÿ™‹โ€โ™€๏ธ

The requester is RFC 8912 ๐ŸŽ€

10.5.3. Revision ๐Ÿ”–

The revision is 1.0 ๐ŸŒธ

10.5.4. Revision Date ๐Ÿ“…

The revision date is 2021-11-17 ๐Ÿฆ‹

10.6. Comments and Remarks ๐Ÿ’ฌ

There are None ๐Ÿ™ˆ

11. Security Considerations ๐Ÿ”

ngl this section is serious, but it's giving responsible. These Registry Entries have no known implications for Internet security ๐Ÿ›ก๏ธ With the exception of [RFC1035], every RFC referenced above has its own Security Considerations section ๐Ÿ“– Also, the Large-scale Measurement of Broadband Performance (LMAP) framework [RFC7594] covers both security and privacy considerations for measurements ๐Ÿ”

โš ๏ธ Privacy is a real concern here, especially for observed traffic. That's particularly true for Passive Metrics, which Section 10 talks about. An attacker that knows its TCP connection is being measured can change how it behaves and skew the measurement results. Not cute. Be careful, bestie ๐Ÿ’€

12. IANA Considerations ๐Ÿงพ

IANA has populated the Performance Metrics Registry defined in [RFC8911] with the values defined in Sections 4 through 10 ๐ŸŒˆ For more info, check the IANA Considerations section of [RFC8911] too ๐Ÿ’œ

13. References ๐Ÿ“š

13.1. Normative References

13.2. Informative References

Acknowledgments ๐Ÿ™

The authors thank Brian Trammell ๐Ÿ’œ for suggesting the term "Runtime Parameters", which led to the distinction between Runtime and Fixed Parameters in this memo. He also pointed out the IP Flow Information Export (IPFIX) metric with Flow Key as an example, suggested the Passive TCP RTD Metric and its supporting references, and made many other productive suggestions. Big thanks to Peter Koch ๐ŸŒท too, who offered several useful ideas for telling apart successive DNS queries in the DNS Response time metric.

The authors also acknowledge the constructive reviews and helpful suggestions from Barbara Stark, Juergen Schoenwaelder, Tim Carey, Yaakov Stein, and participants in the LMAP Working Group ๐Ÿซถ Thanks to Michelle Cotton for her early IANA reviews, and to Amanda Baber for answering questions about how the Registry is presented and how to reach the complete template by URL ๐Ÿฆ‹

Authors' Addresses ๐Ÿ“ฎ

Al Morton โœจ

Al Morton
AT&T Labs
200 Laurel Avenue South
Middletown, NJ 07748
United States of America

Phone: +1 732 420 1571
Email: acmorton@att.com

Marcelo Bagnulo ๐ŸŒ

Marcelo Bagnulo
Universidad Carlos III de Madrid
Av. Universidad 30
28911 Leganes Madrid
Spain

Phone: 34 91 6249500
Email: marcelo@it.uc3m.es
URI:   http://www.it.uc3m.es

Philip Eardley ๐Ÿ‡ฌ๐Ÿ‡ง

Philip Eardley
BT
Adastral Park, Martlesham Heath
Ipswich
United Kingdom

Email: philip.eardley@bt.com

Kevin D'Souza ๐Ÿ’…

Kevin D'Souza
AT&T Labs
200 Laurel Avenue South
Middletown, NJ 07748
United States of America

Phone: +1 732 420 2514
Email: kld@att.com
๐Ÿ“ฆ where this page comes from