RFC 7679
A One-Way Delay Metric for IP Performance Metrics (IPPM)
A One-Way Delay Metric for IP Performance Metrics (IPPM) ๐
Okay bestie, this is RFC 7679 ๐ It's an IETF Standards Track doc, filed under STD 81 (ISSN 2070-1721), and it came out in January 2016 ๐ It obsoletes RFC 2679, so that older doc is officially retired and this one is the new source of truth โจ
The authors are G. Almes (Texas A&M), S. Kalidindi (Ixia), M. Zekauskas (Internet2), and A. Morton, Ed. (AT&T Labs), with the "Ed." marking Morton as the editor ๐
Abstract
This memo defines a metric for one-way delay of packets across Internet paths. It builds on notions introduced and discussed in the IP Performance Metrics (IPPM) Framework document, RFC 2330, so the reader is assumed to already know that doc ๐ง This memo makes RFC 2679 obsolete.
Status of This Memo
This is an Internet Standards Track document.
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.
Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc7679.
Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the document authors. All rights reserved. ๐
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
Table of Contents ๐
1. Introduction ....................................................4
1.1. Motivation .................................................4
2. General Issues regarding Time ...................................6
3. A Singleton Definition for One-Way Delay ........................7
3.1. Metric Name ................................................7
3.2. Metric Parameters ..........................................7
3.3. Metric Units ...............................................7
3.4. Definition .................................................7
3.5. Discussion .................................................8
3.6. Methodologies ..............................................9
3.7. Errors and Uncertainties ..................................10
3.7.1. Errors or Uncertainties Related to Clocks ..........10
3.7.2. Errors or Uncertainties Related to Wire
Time vs. Host Time .................................11
3.7.3. Calibration of Errors and Uncertainties ............12
3.8. Reporting the Metric ......................................14
3.8.1. Type-P .............................................14
3.8.2. Loss Threshold .....................................15
3.8.3. Calibration Results ................................15
3.8.4. Path ...............................................15
4. A Definition for Samples of One-Way Delay ......................15
4.1. Metric Name ...............................................16
4.2. Metric Parameters .........................................16
4.3. Metric Units ..............................................16
4.4. Definition ................................................17
4.5. Discussion ................................................17
4.6. Methodologies .............................................18
4.7. Errors and Uncertainties ..................................18
4.8. Reporting the Metric ......................................18
5. Some Statistics Definitions for One-Way Delay ..................18
5.1. Type-P-One-way-Delay-Percentile ...........................19
5.2. Type-P-One-way-Delay-Median ...............................19
5.3. Type-P-One-way-Delay-Minimum ..............................20
5.4. Type-P-One-way-Delay-Inverse-Percentile ...................20
6. Security Considerations ........................................21
7. Changes from RFC 2679 ..........................................22
8. References .....................................................24
8.1. Normative References ......................................24
8.2. Informative References ....................................25
Acknowledgements ..................................................26
Authors' Addresses ................................................27
1. Introduction โจ
This memo defines a metric for one-way delay of packets across Internet paths. It builds on notions introduced and discussed in the IPPM Framework document, [RFC2330], so the reader is assumed to be familiar with that document and its recent update [RFC7312] ๐
This memo is intended to be parallel in structure to a companion document for Packet Loss ("A One-way Packet Loss Metric for IPPM") [RFC7680] ๐ซถ
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. Although [RFC2119] was written with protocols in mind, the key words are used in this document for similar reasons. They are used to ensure the results of measurements from two different implementations are comparable and to note instances when an implementation could perturb the network. Basically, these words are the rules of the game ๐ฎ
Whenever a technical term from the IPPM Framework document is first used in this memo, it will be tagged with a trailing asterisk. For example, "term*" indicates that "term" is defined in the Framework document. So if you see an asterisk on a word, that's the IPPM doc giving it its definition ๐
The structure of the memo is as follows:
- A
'singleton*'analytic metric, called Type-P-One-way-Delay, will be introduced to measure a single observation of one-way delay. - Using this singleton metric, a
'sample*'called Type-P-One-way-Delay-Poisson-Stream is introduced to measure a sequence of singleton delays sent at times taken from a Poisson process, defined in Section 11.1.1 of [RFC2330]. - Using this sample, several
'statistics*'of the sample will be defined and discussed. This progression from singleton to sample to statistics, with clear separation among them, is important. It's giving organized ๐
1.1. Motivation ๐ธ
Understanding one-way delay of a Type-P* packet from a source host* to a destination host is useful for several reasons:
- Some applications do not perform well (or at all) if end-to-end delay between hosts is large relative to some threshold value.
- Erratic variation in delay makes it difficult (or impossible) to support many real-time applications.
- The larger the value of delay, the more difficult it is for transport-layer protocols to sustain high bandwidths.
- The minimum value of this metric provides an indication of the delay due only to propagation and transmission delay.
- The minimum value of this metric provides an indication of the delay that will likely be experienced when the
path*traversed is lightly loaded. - Values of this metric above the minimum provide an indication of the congestion present in the path.
The measurement of one-way delay instead of round-trip delay is motivated by the following factors: ๐ฆ
- In today's Internet, the path from a source to a destination may be different than the path from the destination back to the source ("asymmetric paths"), such that different sequences of routers are used for the forward and reverse paths. Therefore, round-trip measurements actually measure the performance of two distinct paths together. Measuring each path independently highlights the performance difference between the two paths that may traverse different Internet service providers and even radically different types of networks (for example, research versus commodity networks, or networks with asymmetric link capacities, or wireless versus wireline access). It's a whole vibe ๐
- Even when the two paths are symmetric, they may have radically different performance characteristics due to asymmetric queuing.
- Performance of an application may depend mostly on the performance in one direction. For example, a TCP-based communication will experience reduced throughput if congestion occurs in one direction of its communication. Troubleshooting may be simplified if the congested direction of TCP transmission can be identified. Main character energy for the congested direction ๐ฏ
- In networks in which quality of service (QoS) is enabled, provisioning in one direction may be radically different than provisioning in the reverse direction and thus the QoS guarantees differ. Measuring the paths independently allows the verification of both guarantees. โจ
It is outside the scope of this document to say precisely how delay metrics would be applied to specific problems. Not our tea to decide, and honestly that's the right call ๐
(to be continued in part 2, bestie ๐)
2. General Issues regarding Time โจ
Comment: okay bestie, the terms in this section don't match the ITU-T docs (like G.810 "Definitions and terminology for synchronization networks" and I.356 "B-ISDN ATM layer cell transfer performance"), but they do match the IPPM Framework doc. The reason is background: ITU-T comes from telephony, and the authors of this doc (and the Framework doc) come from computer systems. None of these terms have a direct ITU-T equivalent, but after the definitions there's a rough mapping. One potential mix-up to watch for: our "clock" is the computer operating systems meaning, a time-of-day clock, while the ITU-T "clock" is a frequency reference. ๐ฐ๏ธ
Whenever a time (a moment in history) shows up here, it's measured in seconds (and fractions of a second) relative to UTC. โฑ๏ธ
As the Framework doc explains in more detail, there are four distinct but related notions of clock uncertainty. Let's go! ๐
synchronization
This measures how well two clocks agree on what time it is. For example, the clock on one host might be 5.4 msec ahead of the clock on a second host.
Comment: a rough ITU-T equivalent is "time error".
accuracy
This measures how well a given clock agrees with UTC. For example, the clock on a host might be 27.1 msec behind UTC.
Comment: a rough ITU-T equivalent is "time error from UTC".
resolution
This is the specification of the smallest unit by which the clock's time gets updated. It gives a lower bound on the clock's uncertainty. For example, the clock on an old Unix host might only tick once every 10 msec, so it has a resolution of just 10 msec. ๐ข
Comment: a very rough ITU-T equivalent is "sampling period".
skew
This measures how much accuracy, or synchronization, changes over time. For example, the clock on a given host might gain 1.3 msec per hour, so it's 27.1 msec behind UTC at one point and only 25.8 msec behind an hour later. In that case, the clock of the given host has a skew of 1.3 msec per hour relative to UTC, which threatens accuracy. We can also talk about the skew of one clock relative to another clock, which threatens synchronization. ๐
Comment: a rough ITU-T equivalent is "time drift".
3. A Singleton Definition for One-Way Delay ๐ฆ
3.1. Metric Name
Type-P-One-way-Delay ๐
3.2. Metric Parameters
Src, the IP address of a hostDst, the IP address of a hostT, a timeTmax, a loss threshold waiting time
3.3. Metric Units
The value of a Type-P-One-way-Delay is either a real number or an undefined (informally, infinite) number of seconds. ๐ข
3.4. Definition
For a real number dT, the Type-P-One-way-Delay from Src to Dst at T is dT means that Src sent the first bit of a Type-P packet to Dst at wire time T, and that Dst received the last bit of that packet at wire time T+dT. ๐ฆ
The Type-P-One-way-Delay from Src to Dst at T is undefined (informally, infinite) means that Src sent the first bit of a Type-P packet to Dst at wire time T, and that Dst did not receive that packet (within the loss threshold waiting time, Tmax). ๐ป
Suggestions for what to report, plus metric values, show up in Section 3.8, after we talk about the metric, the ways to measure it, and error analysis. ๐
3.5. Discussion
Type-P-One-way-Delay is a pretty simple analytic metric, and we believe it'll give us effective ways to measure things. โจ
These issues are likely to pop up in practice:
- Real delay values will be positive. So it doesn't make sense to report a negative value as a real delay. However, an individual zero or negative delay value might be useful as part of a stream when you're trying to figure out the distribution of a stream of delay values. ๐ค
- Since delay values are often as low as the 100 usec to 10 msec range, it's important for
SrcandDstto synchronize very closely. Global Positioning System (GPS) systems are one way to get synchronization within several tens of usec. Ordinary use of NTP might get synchronization within several msec, but that depends on how stable and symmetric the delay properties are among the NTP agents used, and that delay is exactly what we're trying to measure. ๐ A combo of some GPS-based NTP servers and a conservatively designed and deployed set of other NTP servers should yield good results. This was tested in [RFC6808], where a GPS measurement system's results compared well with a GPS-based NTP synchronized system for the same intercontinental path. ๐ - A given methodology will need a way to tell whether a delay value is infinite or just very large (and the packet hasn't arrived at
Dstyet). As Mahdavi and Paxson noted [RFC2678], simple upper bounds (like the 255 seconds theoretical upper bound on the lifetimes of IP packets [RFC791]) could be used. But good engineering, including an understanding of packet lifetimes, will be needed in practice. ๐ฐ๏ธ
Comment: for many uses of these metrics, the harm in treating a large delay as infinite might be zero or very small. A TCP data packet, for example, that arrives only after several multiples of the RTT may as well have been lost. See Section 4.1.1 of [RFC6703] for an examination of unusual packet delays and application performance estimation.
- If the packet is duplicated along the path (or paths) so that multiple non-corrupt copies arrive at the destination, then the packet counts as received, and the first copy to arrive determines the packet's one-way delay. ๐ฏ
- If the packet is fragmented and, for whatever reason, reassembly doesn't occur, then the packet will be deemed lost. ๐งฉ
- A given methodology will include a way to determine whether the packet is standard-formed, which uses the default criteria for all metric definitions in Section 15 of [RFC2330]. Otherwise, the packet will be deemed lost. Note: at this time, the definition of standard-formed packets only applies to IPv4, but also see [IPPM-UPDATES]. ๐
3.6. Methodologies
As with other Type-P-* metrics, the detailed methodology depends on the Type-P (e.g., protocol number, UDP/TCP port number, size, Differentiated Services (DS) Field [RFC2780]). ๐ฏ
Generally, for a given Type-P, the methodology goes like this:
- Arrange for
SrcandDstto be synchronized. That means they have clocks that are very closely synchronized with each other, and each one is fairly close to the actual time. โฐ - At the
Srchost, selectSrcandDstIP addresses, and form a test packet of Type-P with these addresses. Any 'padding' portion of the packet that's needed only to make the test packet a given size should be filled with randomized bits. That way, the measured delay isn't lower than it would otherwise be because of compression techniques along the path. Also, see Section 3.1.2 of [RFC7312]. ๐ฒ - At the
Dsthost, arrange to receive the packet. ๐ฌ - At the
Srchost, place a timestamp in the prepared Type-P packet, and send it towardDst(ideally minimizing the time before sending). ๐ - If the packet arrives within a reasonable period of time, take a timestamp as soon as possible upon receipt of the packet. Subtracting the two timestamps gives an estimate of one-way delay. Error analysis of a given implementation of the method must take into account how closely
SrcandDstare synchronized. If the delay betweenSrc's timestamp and the actual sending of the packet is known, then the estimate could be adjusted by subtracting this amount, and uncertainty in this value must be taken into account in error analysis. Similarly, if the delay between the actual receipt of the packet andDst's timestamp is known, then the estimate could be adjusted by subtracting this amount, and uncertainty in this value must be taken into account in error analysis. See "Errors and Uncertainties" (Section 3.7) for a more detailed discussion. ๐ - If the packet fails to arrive within a reasonable period of time,
Tmax, the one-way delay is taken to be undefined (informally, infinite). Note that the threshold of "reasonable" is a parameter of the metric. These points are examined in detail in [RFC6703], including analysis preferences to assign undefined delay to packets that fail to arrive (and the difficulties that come with the informal "infinite delay" assignment), plus an estimate of an upper bound on waiting time for packets in transit. Further, enforcing a specific constant waiting time on stored singletons of one-way delay is compliant with this specification, and it may let the results serve more than one reporting audience. ๐ฅน
Issues such as the packet format, the means by which Dst knows when to expect the test packet, and the means by which Src and Dst get synchronized are outside the scope of this document.
Comment: we plan to document the implementation techniques of our work in much more detail elsewhere, and we encourage others to do so too. ๐
3.7. Errors and Uncertainties
Any specific measurement method's description should include an accounting and analysis of the various sources of error or uncertainty. The Framework document gives general guidance on this, but here are the specifics for delay metrics: ๐
- Errors or uncertainties due to uncertainties in the clocks of the
SrcandDsthosts. - Errors or uncertainties due to the difference between 'wire time' and 'host time'.
On top of that, the loss threshold may affect the results. Each of these is discussed in more detail below, along with a section (Section 3.7.3) on accounting for these errors and uncertainties. ๐ซถ
3.7.1. Errors or Uncertainties Related to Clocks โฐ
okay so this is the clock section and it's giving drama ๐ญ๐ The uncertainty in a one-way delay measurement is partly tied to how off the clocks on the Src and Dst hosts are, bestie. ๐ซถ We call the clock that stamps when the packet leaves Src the source clock, and the clock that stamps when it shows up at Dst the destination clock. The observed time on the source clock is Tsource, and the observed time on the destination clock is Tdest. Remember the notions of synchronization, accuracy, resolution, and skew from the Introduction? They're back, and they're about to get a glow-up ๐
โจ
- Synchronization error ๐ธ Any error in syncing the source clock with the destination clock feeds right into your delay measurement. If the source clock is
Tsynchahead of the destination clock, the synch error isTsynch. So if you somehow knewTsynchexactly, you could fix things by addingTsynchto the rawTdest-Tsourcevalue. Main character correction energy ๐ - Accuracy ๐ฆ Accuracy only matters for figuring out when a delay was measured. It has zero effect on how accurate the delay measurement itself is. When we compute delays we only care about the differences between clock values, not the actual values. Literally just vibes, no stress ๐
- Resolution ๐ A clock's resolution adds uncertainty to any time it measures. So if the source clock has a resolution of 10 msec, that's 10 msec of uncertainty on every time value it gives you. We write the resolutions as
RsourceandRdest. ๐ - Skew ๐ Skew isn't really a separate problem, it's just the fact that
Tsynchchanges over time. So if you measure or boundTsynch, you have to keep doing it periodically. Over some stretches of time, this can be approximated as a linear function plus some higher order terms, and then you can use the linear part to correct the clock. After that correction, the leftoverTsynchis smaller but still uncertain, so you have to account for it. We useEsynch(t)as an upper bound on synchronization uncertainty, so|Tsynch(t)| <= Esynch(t). ๐ซถ
ngl, put it all together and the naive Tdest-Tsource is off by Tsynch(t) +/- (Rsource + Rdest). The total clock-related uncertainty is Esynch(t) + Rsource + Rdest, and this estimate should be included in the error/uncertainty analysis of any measurement implementation. Periodt ๐
๐ฅ
3.7.2. Errors or Uncertainties Related to Wire Time vs. Host Time ๐ฆ
So the dream is to measure the time between when the test packet leaves the network interface of Src and when it (completely) arrives at the network interface of Dst. We call these "wire times" ๐ง But if software on Src and Dst is doing the timing, that software can only directly measure the time between when Src grabs a timestamp right before sending the test packet and when Dst grabs one right after receiving it. These are called "host times" ๐ธ
Some systems do host time stamping on the network-interface hardware, trying to get closer to wire times. Iconic move ๐ฅ
If we know the difference between wire time and host time accurately, we can use that knowledge to correct the host time measurements, and then the corrected value is a better estimate of the metric we actually want (wire time). ๐ซถ
But if that difference is uncertain, that uncertainty has to be accounted for in the analysis of whatever measurement method you're using. We write Hsource as an upper bound on the uncertainty in the difference between wire time and host time on the Src host, and Hdest does the same job for the Dst host. These problems add up to a total uncertainty of Hsource+Hdest, and this estimate should be included in the error/uncertainty analysis of any measurement implementation. โจ
3.7.3. Calibration of Errors and Uncertainties ๐
Okay, the measured values can usually be broken down like this:
measured value = true value + systematic error + random error
If we can figure out the systematic error (the constant bias in the measured values), we can compensate for it in the reported results:
reported value = measured value - systematic error
So, therefore:
reported value = true value + random error
The goal of calibration is to figure out the systematic and random error that the hosts themselves generate, in as much detail as possible. ๐ At a minimum, we should find a bound ("e") so that the reported value lands in the range (true value - e) to (true value + e) at least 95% of the time. We call "e" the calibration error for the measurements. It tells you how repeatable the values from the measurement host are, like how closely an actual delay of 30 ms gets reported as 30 ms. ๐
{Comment: 95% was picked because (1) some confidence level is desirable so you can remove outliers, which show up when measuring any physical property; (2) a specific confidence level should be specified so results from independent implementations can be compared; and (3) even with a prototype user-level implementation, 95% was loose enough to exclude outliers. ๐ }
From the last two sections, the error in measurements could be bounded by figuring out each individual uncertainty and adding them all together:
Esynch(t) + Rsource + Rdest + Hsource + Hdest
But reasonable bounds on both the clock-related uncertainty (the first three terms) and the host-related uncertainty (the last two terms) should be doable with careful design and by calibrating the hosts on a known, isolated network in a lab. ๐งชโจ
For example, clock-related uncertainties get way smaller when you use a GPS time source. Esynch(t) + Rsource + Rdest stays small and stays bounded for the whole measurement because of that global time source. ๐ฐ๏ธ๐
The host-related uncertainties, Hsource + Hdest, could be bounded by connecting two hosts back-to-back with a high-speed serial link or an isolated LAN segment. In that setup, repeated measurements are all measuring the same one-way delay. ๐ซถ
If the test packets are small, that network connection has a minimal delay that can be approximated as zero. So the measured delay only contains systematic and random error from the measurement hosts. The "average value" of repeated measurements is the systematic error, and the variation is the random error. ๐
One way to get the systematic error and the random error at 95% confidence is to repeat the experiment many times, at least hundreds of tests. The systematic error is then the median. To find the random error, remove the systematic error from the measured values. The 95% confidence interval is the range from the 2.5th percentile to the 97.5th percentile of these deviations from the true value. Then the calibration error "e" is the largest absolute value of these two numbers, plus the clock-related uncertainty. ๐งฎ
{Comment: as described, this bound is pretty loose since the uncertainties get added together and the absolute value of the largest deviation is used. As long as the resulting value isn't a big fraction of the measured values, it's a reasonable bound. If it is a big fraction, you'll need more exact methods to compute the calibration error. ๐}
Heads up, random error depends on measurement load ๐จ If lots of paths get measured by one host, that can increase interrupts, process scheduling, and disk I/O (like recording the measurements), and all of that can bump up the random error in measured singletons. So on top of minimal-load measurements to find the systematic error, calibration measurements should be run with the same measurement load the hosts will see in the field. ๐ช
Quick reminder: this statistical stuff is about calibrating the host. It's how we "calibrate the meter stick" and check how well the meter stick matches reality. ๐โจ
On top of calibrating the hosts for finite one-way delay, two checks should be made to make sure packets reported as lost were really lost. ๐ค First, verify the loss threshold. Make sure the "reasonable" threshold is actually reasonable: it should be very unlikely that a packet arrives after the threshold value, so the number of packets lost over an interval isn't sensitive to the error bound on measurements. Second, consider the possibility that a packet arrives at the network interface but gets lost anyway, because of congestion on that interface or other resource exhaustion (e.g. buffers) in the host. ๐ธ
3.8. Reporting the Metric ๐ฃ
The calibration and context the metric was measured in MUST be carefully considered, and SHOULD always be reported along with the metric results. ๐ There are four things to think about: the Type-P of the test packets, the threshold of infinite delay (if there is one), error calibration, and the path the test packets took. This list isn't exhaustive, so any other info that could help people interpret applications of the metrics should be reported too (see [RFC6703] for extensive discussion of reporting considerations for different audiences). ๐
3.8.1. Type-P ๐ฆ
As noted in Section 13 of the Framework document [RFC2330], the value of the metric may depend on the type of IP packets used for the measurement, or "Type-P". The value of Type-P-One-way-Delay could change if the protocol (UDP or TCP), port number, size, or arrangement for special treatment (e.g., IP DS Field [RFC2780], Explicit Congestion Notification (ECN) [RFC3168], or RSVP) changes. ๐
Additional packet distinctions identified in future extensions of the Type-P definition will apply too. The exact Type-P used to make the measurements MUST be accurately reported. ๐
3.8.2. Loss Threshold ๐
In addition, the threshold (or methodology to tell apart) a large finite delay from loss MUST be reported. ๐
3.8.3. Calibration Results โจ
- If the systematic error can be determined, it SHOULD be removed from the measured values. ๐ซถ
- You SHOULD also report the calibration error, e, so that the true value is the reported value plus or minus e, with 95% confidence (see the last section.) ๐
- If possible, the conditions under which a test packet with finite delay gets reported as lost due to resource exhaustion on the measurement host SHOULD be reported. ๐
3.8.4. Path ๐ฃ๏ธ
Okay, last bit of this section! ๐ง The path the packet traveled SHOULD be reported, if possible. Ngl, knowing the exact path a packet takes through the network is basically impractical, so it's giving "who knows" ๐ The precise path can be known for certain for a Type-P on short or stable paths. If the Type-P includes the record route (or loose-source route) option in the IP header, the path is short enough, and every router* on it supports record (or loose-source) route, then the path gets recorded precisely. It's still impractical tho, because the route has to be short enough, lots of routers don't support record route (or aren't configured for it), and using the feature would often make the performance look worse than it really is by pulling the packet out of common-case processing ๐ญ Partial info is still valuable context though! ๐ For example, if a host can pick between two links* (and therefore two separate routes from Src to Dst), then the initial link used is super valuable context. {Comment: For example, with Merit's NetNow setup, a Src on one Network Access Point (NAP) can reach a Dst on another NAP by either of several different backbone networks.} ๐
4. A Definition for Samples of One-Way Delay ๐
Okay so now that we've got the singleton metric Type-P-One-way-Delay, we can define a specific sample of those singletons โจ The idea is to pick one binding of the parameters Src, Dst, and Type-P, then define a bunch of values of parameter T. To get those T values, you pick a beginning time T0, a final time Tf, and an average rate lambda, then define a pseudorandom Poisson process of rate lambda whose values fall between T0 and Tf ๐
The time between successive values of T will then average 1/lambda ๐ฆ
Note that Poisson sampling is only one way to define a sample ๐ธ Poisson has the advantage of limiting bias, but other sampling methods will fit different situations better. For example, a truncated Poisson distribution might be needed to avoid reactive network state changes during periods of inactivity, see Section 4.6 of [RFC7312]. Sometimes the goal is sampling with a known bias, and [RFC3432] describes a method for periodic sampling with random start times ๐
4.1. Metric Name ๐ท๏ธ
Type-P-One-way-Delay-Poisson-Stream
4.2. Metric Parameters ๐
- Src, the IP address of a host
- Dst, the IP address of a host
- T0, a time
- Tf, a time
- Tmax, a loss threshold waiting time
- lambda, a rate in reciprocal seconds (or parameters for another distribution)
4.3. Metric Units ๐
A sequence of pairs. The elements of each pair are:
- T, a time, and
- dT, either a real number or an undefined number of seconds.
The values of T in the sequence are monotonic increasing. Note that T would be a valid parameter to Type-P-One-way-Delay, and that dT would be a valid value of Type-P-One-way-Delay ๐ง โจ
4.4. Definition ๐ญ
Given T0, Tf, and lambda, we compute a pseudorandom Poisson process beginning at or before T0, with average arrival rate lambda, and ending at or after Tf. Those time values that are greater than or equal to T0 and less than or equal to Tf then get selected. At each of the selected times in this process, we get one value of Type-P-One-way-Delay. The value of the sample is the sequence made up of the resulting <time, delay> pairs. If there are no such pairs, the sequence has length zero and the sample is said to be empty ๐ซ
4.5. Discussion ๐ฃ๏ธ
The reader should be familiar with the in-depth discussion of Poisson sampling in the Framework document [RFC2330], which includes methods to compute and verify the pseudorandom Poisson process. Go read it, bestie ๐
We don't constrain the value of lambda, except to note the extremes ๐ If the rate is too large, the measurement traffic will perturb the network and itself cause congestion. If the rate is too small, you might not capture interesting network behavior. {Comment: We expect to document our experiences with, and suggestions for, lambda elsewhere, culminating in a "Best Current Practice" document.} ๐
Since a pseudorandom number sequence is used, the sequence of times, and therefore the value of the sample, is not fully specified. Pseudorandom number generators of good quality will be needed to achieve the desired qualities ๐ฒ
The sample is defined in terms of a Poisson process to avoid the effects of self-synchronization and to capture a sample that is statistically as unbiased as possible. {Comment: there is, of course, no claim that real Internet traffic arrives according to a Poisson arrival process.} The Poisson process is used to schedule the delay measurements. The test packets will generally not arrive at Dst according to a Poisson distribution, since they are influenced by the network ๐
All the singleton Type-P-One-way-Delay metrics in the sequence will have the same values of Src, Dst, and Type-P ๐
Also, given one sample that runs from T0 to Tf, and given new time values T0' and Tf' such that T0 <= T0' <= Tf' <= Tf, the subsequence of the given sample whose time values fall between T0' and Tf' is also a valid Type-P-One-way-Delay-Poisson-Stream sample ๐ซถ
4.6. Methodologies ๐ ๏ธ
The methodologies follow directly from:
- The selection of specific times using the specified Poisson arrival process, and
- The methodologies discussion already given for the singleton Type-P-One-way-Delay metric.
Care must be given to correctly handle out-of-order arrival of test packets. It's possible that the Src could send one test packet at TS[i], then send a second one (later) at TS[i+1], while the Dst could receive the second test packet at TR[i+1] and then receive the first one (later) at TR[i] ๐ Metrics for reordering may be found in [RFC4737] ๐
4.7. Errors and Uncertainties โ ๏ธ
In addition to the sources of errors and uncertainties tied to the methods used to measure the singleton values that make up the sample, care must be given to analyze the accuracy of the Poisson process with respect to the wire times of sending the test packets. Problems with this process could be caused by several things, including problems with the pseudorandom number techniques used to generate the Poisson arrival process, or with jitter in the value of Hsource (mentioned above as uncertainty in the singleton delay metric). The Framework document shows how to use the Anderson-Darling test to verify the accuracy of a Poisson process over small time frames. {Comment: The goal is to ensure that test packets are sent "close enough" to a Poisson schedule and avoid periodic behavior.} ๐ฏ
4.8. Reporting the Metric ๐
The calibration and context for the underlying singletons MUST be reported along with the stream. (See "Reporting the Metric" for Type-P-One-way-Delay in Section 3.8.) ๐ฅ
5. Some Statistics Definitions for One-Way Delay ๐
Given the sample metric Type-P-One-way-Delay-Poisson-Stream, we can now offer several statistics of that sample ๐ These are mostly here to illustrate what could be done. See [RFC6703] for more discussion of statistics that matter to different audiences ๐
5.1. Type-P-One-way-Delay-Percentile ๐ฏ
Given a Type-P-One-way-Delay-Poisson-Stream and a percent X between 0% and 100%, the Xth percentile of all the dT values in the stream. When computing this percentile, undefined values are treated as infinitely large. This means the percentile could be undefined (informally, infinite) ๐ซ Also, the Type-P-One-way-Delay-Percentile is undefined if the sample is empty.
For example, say we take a sample and the results are:
Stream1 = <
<T1, 100 msec>
<T2, 110 msec>
<T3, undefined>
<T4, 90 msec>
<T5, 500 msec>
>
Then the 50th percentile would be 110 msec, since 90 msec and 100 msec are smaller, and 500 msec and 'undefined' are larger ๐ง See Section 11.3 of [RFC2330] for computing percentiles.
Note that if the possibility that a packet with finite delay gets reported as lost is significant, then a high percentile (90th or 95th) might be reported as infinite instead of finite ๐ฌ
5.2. Type-P-One-way-Delay-Median ๐ญ
Given a Type-P-One-way-Delay-Poisson-Stream, the median of all the dT values in the stream. When computing the median, undefined values are treated as infinitely large. Just like with Type-P-One-way-Delay-Percentile, Type-P-One-way-Delay-Median is undefined if the sample is empty.
As noted in the Framework document, the median differs from the 50th percentile only when the sample has an even number of values, in which case the mean of the two central values is used โจ
For example, suppose we take a sample and the results are:
Stream2 = <
<T1, 100 msec>
<T2, 110 msec>
<T3, undefined>
<T4, 90 msec>
>
Then the median would be 105 msec, the mean of 100 msec and 110 msec, the two central values ๐
5.3. Type-P-One-way-Delay-Minimum ๐
Given a Type-P-One-way-Delay-Poisson-Stream, the minimum of all the dT values in the stream. When computing this, undefined values are treated as infinitely large. This means the minimum could be undefined (informally, infinite) if all the dT values are undefined. Also, the Type-P-One-way-Delay-Minimum is undefined if the sample is empty.
In the above example, the minimum would be 90 msec ๐
5.4. Type-P-One-way-Delay-Inverse-Percentile ๐ฅ
Note: This statistic is deprecated in this document because of lack of use.
Given a Type-P-One-way-Delay-Poisson-Stream and a time duration threshold, the fraction of all the dT values in the stream that are less than or equal to the threshold. The result could be as low as 0% (if all the dT values exceed the threshold) or as high as 100%. Type-P-One-way-Delay-Inverse-Percentile is undefined if the sample is empty.
In the above example, the Inverse-Percentile of 103 msec would be 50% ๐ซง
6. Security Considerations ๐
Okay bestie, security and privacy are a whole mood ๐ซถ. Conducting Internet measurements raises both security and privacy concerns ๐. This memo doesn't specify an implementation of the metrics, so it doesn't directly affect the security of the Internet or of the apps running on it โจ. However, implementations of these metrics must be mindful of security and privacy concerns ๐.
There are two types of security concerns: potential harm caused by the measurements, and potential harm to the measurements ๐ญ. The measurements could cause harm because they're active and inject packets into the network. The measurement parameters MUST be carefully selected so that the measurements inject trivial amounts of additional traffic into the networks they measure ๐. If they inject "too much" traffic, they can skew the results and, in extreme cases, cause congestion and denial of service ๐.
The measurements themselves could be harmed by routers giving measurement traffic a different priority than "normal" traffic, or by an attacker injecting fake measurement traffic ๐. If routers can recognize measurement traffic and treat it separately, the measurements won't reflect actual user traffic ๐ โโ๏ธ. Therefore, the measurement methodologies SHOULD include appropriate techniques to reduce the probability that measurement traffic can be distinguished from "normal" traffic ๐ฆ.
If an attacker injects packets that imitate traffic and get accepted as legit, the loss ratio or other measured values could be corrupted ๐ค. Authentication techniques, such as digital signatures, may be used where appropriate to guard against injected traffic attacks ๐.
When we think about privacy, both for the people involved in measurement and for the people whose traffic is being measured, the sensitive info available to potential observers is greatly reduced when you use active techniques within this scope of work ๐ง. Passive observation of user traffic for measurement purposes raises many privacy issues ๐ธ. We refer the reader to the privacy considerations in the Large Scale Measurement of Broadband Performance (LMAP) Framework [RFC7594], which covers both active and passive techniques ๐.
Collecting measurements, or using measurement results for reconnaissance to help with later system attacks, is quite common, sadly ๐. Access to measurement results, or control of the measurement systems to do reconnaissance, should be guarded against ๐ก๏ธ. See Section 7 of [RFC7594] (Security Considerations of the LMAP Framework) for system requirements that help avoid measurement system compromise ๐ซถ.
7. Changes from RFC 2679 โจ
The text above is a revision to RFC 2769, which is now an Internet Standard ๐. This section tracks the changes from [RFC2679] so you can see the glow-up ๐ .
[RFC6808] provides the test plan and results supporting [RFC2679] advancing along the Standards Track, according to the process in [RFC6576] ๐. The conclusions of [RFC6808] list four minor modifications:
- Section 6.2.3 of [RFC6808] asserts that the assumption of post-processing to enforce a constant waiting time threshold is compliant, and that the text of the RFC should be revised slightly to include this point. The applicability of post-processing was added in the last list item of Section 3.6.
- Section 6.5 of [RFC6808] indicates that the Type-P-One-way-Delay-Inverse-Percentile statistic has been ignored in both implementations, so it was a candidate for removal or deprecation in this document (this small discrepancy does not affect candidacy for advancement). This statistic was deprecated in Section 5.4 ๐ฅ.
- The IETF has reached consensus on guidance for reporting metrics in [RFC6703], and the memo is referenced in this document to incorporate recent experience where appropriate. This reference was added in the last list item of Section 3.6, Section 3.8, and in Section 5 ๐ค.
- There is currently one erratum with status "Held for Document Update" (EID 398) for [RFC2679], and this minor revision and additional text was incorporated in this document in Section 5.1 ๐ฉน.
A bunch of updates to the [RFC2679] text have been made in the text above ๐. They reference key IPPM RFCs that were approved after [RFC2679], and they address comments on the IPPM mailing list about current conditions and experience ๐ฌ.
- Near the end of Section 1.1, there's an update of a network example using ATM, a clarification of TCP's effect on queue occupation, and discussion of the importance of one-way delay measurement โ๏ธ.
- Explicit inclusion of the maximum waiting time input parameter in Sections 3.2 and 4.2, reflecting recognition of this parameter in more recent RFCs and ITU-T Recommendation Y.1540 โณ.
- Addition of a reference to RFC 6703 in the discussion of packet lifetime and application timeouts in Section 3.5 โฐ.
- Addition of a reference to the default requirement (that packets be standard-formed) from RFC 2330 as a new list item in Section 3.5 ๐ฆ.
- GPS-based NTP experience replaces "to be tested" in Section 3.5 ๐ฐ๏ธ.
- Replaced "precedence" with updated terminology (DS Field) in Sections 3.6 and 3.8.1 (with reference) ๐ท๏ธ.
- Added parenthetical guidance on minimizing the interval between timestamp placement and send time in Section 3.6 โฑ๏ธ.
- Section 3.7.2 notes that some current systems perform host time stamping on the network-interface hardware ๐ฅ๏ธ.
- "instrument" replaced by the defined term "host" in Section 3.7.3 and Section 3.8.3 ๐ซง.
- Added reference to RFC 3432 regarding periodic sampling alongside Poisson sampling in Section 4, and also noted that a truncated Poisson distribution may be needed with modern networks, as described in the IPPM Framework update [RFC7312] ๐ฒ.
- Added a reference to RFC 4737 regarding reordering metrics in the related discussion of "Methodologies" (Section 4.6) ๐.
- Modified the formatting of the example in Section 5.1 to match the original (issue with conversion to XML in this version) ๐งพ.
- Clarified the conclusions on two related points on harm to measurements (recognition of measurement traffic for unexpected priority treatment, and attacker traffic which emulates measurement) in "Security Considerations" (Section 6) ๐.
- Expanded and updated the material on Privacy, and added cautions on the use of measurements for reconnaissance in "Security Considerations" (Section 6) ๐.
Section 5.4.4 of [RFC6390] suggests a common template for performance metrics, partially derived from previous IPPM and Benchmarking Methodology Working Group (BMWG) RFCs, but it also contains some new items ๐งฉ. All of the normative parts of [RFC6390] are covered, though not quite in the same section names or orientation, and several of the informative parts are covered too ๐. Keeping the familiar outline of IPPM literature has both value and minimizes unnecessary differences between this revised RFC and current/future IPPM RFCs ๐ซถ.
The publication of [RFC6921] suggested an area where this memo might need updating ๐ธ. Packet transfer on Faster-Than-Light (FTL) networks could result in negative delays and packet reordering. However, both are covered as possibilities in the current text, so no revisions are deemed necessary ๐คทโโ๏ธ. (We also note that [RFC6921] is an April 1st RFC ๐.)
8. References ๐
8.1. Normative References ๐ง
[RFC791] Postel, J., "Internet Protocol", STD 5, RFC 791,
DOI 10.17487/RFC0791, September 1981,
<http://www.rfc-editor.org/info/rfc791>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>.
[RFC2330] Paxson, V., Almes, G., Mahdavi, J., and M. Mathis,
"Framework for IP Performance Metrics", RFC 2330,
DOI 10.17487/RFC2330, May 1998,
<http://www.rfc-editor.org/info/rfc2330>.
[RFC2678] Mahdavi, J. and V. Paxson, "IPPM Metrics for Measuring
Connectivity", RFC 2678, DOI 10.17487/RFC2678, September
1999, <http://www.rfc-editor.org/info/rfc2678>.
[RFC2679] Almes, G., Kalidindi, S., and M. Zekauskas, "A One-way
Delay Metric for IPPM", RFC 2679, DOI 10.17487/RFC2679,
September 1999, <http://www.rfc-editor.org/info/rfc2679>.
[RFC2780] Bradner, S. and V. Paxson, "IANA Allocation Guidelines For
Values In the Internet Protocol and Related Headers",
BCP 37, RFC 2780, DOI 10.17487/RFC2780, March 2000,
<http://www.rfc-editor.org/info/rfc2780>.
[RFC3432] Raisanen, V., Grotefeld, G., and A. Morton, "Network
performance measurement with periodic streams", RFC 3432,
DOI 10.17487/RFC3432, November 2002,
<http://www.rfc-editor.org/info/rfc3432>.
[RFC6576] Geib, R., Ed., Morton, A., Fardid, R., and A. Steinmitz,
"IP Performance Metrics (IPPM) Standard Advancement
Testing", BCP 176, RFC 6576, DOI 10.17487/RFC6576, March
2012, <http://www.rfc-editor.org/info/rfc6576>.
[RFC7312] Fabini, J. and A. Morton, "Advanced Stream and Sampling
Framework for IP Performance Metrics (IPPM)", RFC 7312,
DOI 10.17487/RFC7312, August 2014,
<http://www.rfc-editor.org/info/rfc7312>.
[RFC7680] Almes, G., Kalidini, S., Zekauskas, M., and A. Morton,
Ed., "A One-Way Loss Metric for IP Performance Metrics
(IPPM)", RFC 7680, DOI 10.17487/RFC7680, January 2016,
<http://www.rfc-editor.org/info/rfc7680>.
8.2. Informative References โจ
okay so this is the bit where the doc points at the extra reading, bestie ๐๐ the references are kept exactly as written, because citations need every detail to be useful ๐ซถ
[IPPM-UPDATES]
Morton, A., Fabini, J., Elkins, N., Ackermann, M., and V.
Hegde, "Updates for IPPM's Active Metric Framework:
Packets of Type-P and Standard-Formed Packets", Work in
Progress, draft-morton-ippm-2330-stdform-typep-02,
December 2015.
[RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition
of Explicit Congestion Notification (ECN) to IP",
RFC 3168, DOI 10.17487/RFC3168, September 2001,
<http://www.rfc-editor.org/info/rfc3168>.
[RFC4737] Morton, A., Ciavattone, L., Ramachandran, G., Shalunov,
S., and J. Perser, "Packet Reordering Metrics", RFC 4737,
DOI 10.17487/RFC4737, November 2006,
<http://www.rfc-editor.org/info/rfc4737>.
[RFC6390] Clark, A. and B. Claise, "Guidelines for Considering New
Performance Metric Development", BCP 170, RFC 6390,
DOI 10.17487/RFC6390, October 2011,
<http://www.rfc-editor.org/info/rfc6390>.
[RFC6703] Morton, A., Ramachandran, G., and G. Maguluri, "Reporting
IP Network Performance Metrics: Different Points of View",
RFC 6703, DOI 10.17487/RFC6703, August 2012,
<http://www.rfc-editor.org/info/rfc6703>.
[RFC6808] Ciavattone, L., Geib, R., Morton, A., and M. Wieser, "Test
Plan and Results Supporting Advancement of RFC 2679 on the
Standards Track", RFC 6808, DOI 10.17487/RFC6808, December
2012, <http://www.rfc-editor.org/info/rfc6808>.
[RFC6921] Hinden, R., "Design Considerations for Faster-Than-Light
(FTL) Communication", RFC 6921, DOI 10.17487/RFC6921,
April 2013, <http://www.rfc-editor.org/info/rfc6921>.
[RFC7594] Eardley, P., Morton, A., Bagnulo, M., Burbridge, T.,
Aitken, P., and A. Akhter, "A Framework for Large-Scale
Measurement of Broadband Performance (LMAP)", RFC 7594,
DOI 10.17487/RFC7594, September 2015,
<http://www.rfc-editor.org/info/rfc7594>.
Acknowledgements ๐
okay the thank-you bit, and it's so sweet ๐ฅน
For [RFC2679], special thanks are due to Vern Paxson of Lawrence Berkeley Labs, who gave super helpful comments on clock uncertainty and statistics ๐ง โจ Thanks also to Garry Couch, Will Leland, Andy Scherrer, Sean Shapira, and Roland Wittig for several useful suggestions ๐
For this document, thanks to Joachim Fabini, Ruediger Geib, Nalini Elkins, and Barry Constantine for sharing their measurement experience as part of their careful reviews ๐ซถ Brian Carpenter and Scott Bradner also gave useful feedback at IETF Last Call ๐ธ
Authors' Addresses ๐
the squad and where to find them ๐ฆ
Guy Almes
Texas A&M
Email: almes@acm.org
Sunil Kalidindi
Ixia
Email: skalidindi@ixiacom.com
Matt Zekauskas
Internet2
Email: matt@internet2.edu
Al Morton (editor)
AT&T Labs
200 Laurel Avenue South
Middletown, NJ 07748
United States
Phone: +1 732 420 1571
Fax: +1 732 368 1192
Email: acmorton@att.com
URI: http://home.comcast.net/~acmacm/
and that's a whole wrap on RFC 7679 ๐๐โจ
๐ฆ where this page comes from
- ietf: rfc7679 2016-01
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms