draft-ietf-ippm-model-based-metrics-13.txt | rfc8337.txt | |||
---|---|---|---|---|
IP Performance Working Group M. Mathis | Internet Engineering Task Force (IETF) M. Mathis | |||
Internet-Draft Google, Inc | Request for Comments: 8337 Google, Inc | |||
Intended status: Experimental A. Morton | Category: Experimental A. Morton | |||
Expires: March 19, 2018 AT&T Labs | ISSN: 2070-1721 AT&T Labs | |||
September 15, 2017 | March 2018 | |||
Model Based Metrics for Bulk Transport Capacity | Model-Based Metrics for Bulk Transport Capacity | |||
draft-ietf-ippm-model-based-metrics-13.txt | ||||
Abstract | Abstract | |||
We introduce a new class of Model Based Metrics designed to assess if | This document introduces a new class of Model-Based Metrics designed | |||
a complete Internet path can be expected to meet a predefined Target | to assess if a complete Internet path can be expected to meet a | |||
Transport Performance by applying a suite of IP diagnostic tests to | predefined Target Transport Performance by applying a suite of IP | |||
successive subpaths. The subpath-at-a-time tests can be robustly | diagnostic tests to successive subpaths. The subpath-at-a-time tests | |||
applied to critical infrastructure, such as network interconnections | can be robustly applied to critical infrastructure, such as network | |||
or even individual devices, to accurately detect if any part of the | interconnections or even individual devices, to accurately detect if | |||
infrastructure will prevent paths traversing it from meeting the | any part of the infrastructure will prevent paths traversing it from | |||
Target Transport Performance. | meeting the Target Transport Performance. | |||
Model Based Metrics rely on mathematical models to specify a Targeted | Model-Based Metrics rely on mathematical models to specify a Targeted | |||
Suite of IP Diagnostic tests, designed to assess whether common | IP Diagnostic Suite, a set of IP diagnostic tests designed to assess | |||
transport protocols can be expected to meet a predetermined Target | whether common transport protocols can be expected to meet a | |||
Transport Performance over an Internet path. | predetermined Target Transport Performance over an Internet path. | |||
For Bulk Transport Capacity the IP diagnostics are built using test | For Bulk Transport Capacity, the IP diagnostics are built using test | |||
streams and statistical criteria for evaluating the packet transfer | streams and statistical criteria for evaluating the packet transfer | |||
that mimic TCP over the complete path. The temporal structure of the | that mimic TCP over the complete path. The temporal structure of the | |||
test stream (bursts, etc) mimic TCP or other transport protocol | test stream (e.g., bursts) mimics TCP or other transport protocols | |||
carrying bulk data over a long path. However they are constructed to | carrying bulk data over a long path. However, they are constructed | |||
be independent of the details of the subpath under test, end systems | to be independent of the details of the subpath under test, end | |||
or applications. Likewise the success criteria evaluates the packet | systems, or applications. Likewise, the success criteria evaluates | |||
transfer statistics of the subpath against criteria determined by | the packet transfer statistics of the subpath against criteria | |||
protocol performance models applied to the Target Transport | determined by protocol performance models applied to the Target | |||
Performance of the complete path. The success criteria also does not | Transport Performance of the complete path. The success criteria | |||
depend on the details of the subpath, end systems or application. | also does not depend on the details of the subpath, end systems, or | |||
applications. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This document is not an Internet Standards Track specification; it is | |||
provisions of BCP 78 and BCP 79. | published for examination, experimental implementation, and | |||
evaluation. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at http://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document defines an Experimental Protocol for the Internet | |||
and may be updated, replaced, or obsoleted by other documents at any | community. This document is a product of the Internet Engineering | |||
time. It is inappropriate to use Internet-Drafts as reference | Task Force (IETF). It represents the consensus of the IETF | |||
material or to cite them other than as "work in progress." | community. It has received public review and has been approved for | |||
publication by the Internet Engineering Steering Group (IESG). Not | ||||
all documents approved by the IESG are candidates for any level of | ||||
Internet Standard; see Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on March 19, 2018. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc8337. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2018 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction ....................................................4 | |||
1.1. Version Control . . . . . . . . . . . . . . . . . . . . . 5 | 2. Overview ........................................................5 | |||
2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3. Terminology .....................................................8 | |||
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 3.1. General Terminology ........................................8 | |||
4. Background . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 3.2. Terminology about Paths ...................................10 | |||
4.1. TCP properties . . . . . . . . . . . . . . . . . . . . . 18 | 3.3. Properties ................................................11 | |||
4.2. Diagnostic Approach . . . . . . . . . . . . . . . . . . . 20 | 3.4. Basic Parameters ..........................................12 | |||
4.3. New requirements relative to RFC 2330 . . . . . . . . . . 21 | 3.5. Ancillary Parameters ......................................13 | |||
5. Common Models and Parameters . . . . . . . . . . . . . . . . 22 | 3.6. Temporal Patterns for Test Streams ........................14 | |||
5.1. Target End-to-end parameters . . . . . . . . . . . . . . 22 | 3.7. Tests .....................................................15 | |||
5.2. Common Model Calculations . . . . . . . . . . . . . . . . 23 | 4. Background .....................................................16 | |||
5.3. Parameter Derating . . . . . . . . . . . . . . . . . . . 24 | 4.1. TCP Properties ............................................18 | |||
5.4. Test Preconditions . . . . . . . . . . . . . . . . . . . 24 | 4.2. Diagnostic Approach .......................................20 | |||
6. Generating test streams . . . . . . . . . . . . . . . . . . . 25 | 4.3. New Requirements Relative to RFC 2330 .....................21 | |||
6.1. Mimicking slowstart . . . . . . . . . . . . . . . . . . . 26 | 5. Common Models and Parameters ...................................22 | |||
6.2. Constant window pseudo CBR . . . . . . . . . . . . . . . 27 | 5.1. Target End-to-End Parameters ..............................22 | |||
6.3. Scanned window pseudo CBR . . . . . . . . . . . . . . . . 28 | 5.2. Common Model Calculations .................................22 | |||
6.4. Concurrent or channelized testing . . . . . . . . . . . . 29 | 5.3. Parameter Derating ........................................23 | |||
7. Interpreting the Results . . . . . . . . . . . . . . . . . . 30 | 5.4. Test Preconditions ........................................24 | |||
7.1. Test outcomes . . . . . . . . . . . . . . . . . . . . . . 30 | 6. Generating Test Streams ........................................24 | |||
7.2. Statistical criteria for estimating run_length . . . . . 31 | 6.1. Mimicking Slowstart .......................................25 | |||
7.3. Reordering Tolerance . . . . . . . . . . . . . . . . . . 34 | 6.2. Constant Window Pseudo CBR ................................27 | |||
8. IP Diagnostic Tests . . . . . . . . . . . . . . . . . . . . . 34 | 6.3. Scanned Window Pseudo CBR .................................28 | |||
8.1. Basic Data Rate and Packet Transfer Tests . . . . . . . . 35 | 6.4. Concurrent or Channelized Testing .........................28 | |||
8.1.1. Delivery Statistics at Paced Full Data Rate . . . . . 35 | 7. Interpreting the Results .......................................29 | |||
8.1.2. Delivery Statistics at Full Data Windowed Rate . . . 35 | 7.1. Test Outcomes .............................................29 | |||
8.1.3. Background Packet Transfer Statistics Tests . . . . . 35 | 7.2. Statistical Criteria for Estimating run_length ............31 | |||
8.2. Standing Queue Tests . . . . . . . . . . . . . . . . . . 36 | 7.3. Reordering Tolerance ......................................33 | |||
8.2.1. Congestion Avoidance . . . . . . . . . . . . . . . . 37 | 8. IP Diagnostic Tests ............................................34 | |||
8.2.2. Bufferbloat . . . . . . . . . . . . . . . . . . . . . 37 | 8.1. Basic Data Rate and Packet Transfer Tests .................34 | |||
8.2.3. Non excessive loss . . . . . . . . . . . . . . . . . 38 | 8.1.1. Delivery Statistics at Paced Full Data Rate ........35 | |||
8.2.4. Duplex Self Interference . . . . . . . . . . . . . . 38 | 8.1.2. Delivery Statistics at Full Data Windowed Rate .....35 | |||
8.3. Slowstart tests . . . . . . . . . . . . . . . . . . . . . 39 | 8.1.3. Background Packet Transfer Statistics Tests ........35 | |||
8.3.1. Full Window slowstart test . . . . . . . . . . . . . 39 | 8.2. Standing Queue Tests ......................................36 | |||
8.3.2. Slowstart AQM test . . . . . . . . . . . . . . . . . 39 | 8.2.1. Congestion Avoidance ...............................37 | |||
8.4. Sender Rate Burst tests . . . . . . . . . . . . . . . . . 40 | 8.2.2. Bufferbloat ........................................37 | |||
8.5. Combined and Implicit Tests . . . . . . . . . . . . . . . 41 | 8.2.3. Non-excessive Loss .................................38 | |||
8.5.1. Sustained Bursts Test . . . . . . . . . . . . . . . . 41 | 8.2.4. Duplex Self-Interference ...........................38 | |||
8.5.2. Passive Measurements . . . . . . . . . . . . . . . . 42 | 8.3. Slowstart Tests ...........................................39 | |||
9. An Example . . . . . . . . . . . . . . . . . . . . . . . . . 43 | 8.3.1. Full Window Slowstart Test .........................39 | |||
9.1. Observations about applicability . . . . . . . . . . . . 44 | 8.3.2. Slowstart AQM Test .................................39 | |||
10. Validation . . . . . . . . . . . . . . . . . . . . . . . . . 44 | 8.4. Sender Rate Burst Tests ...................................40 | |||
11. Security Considerations . . . . . . . . . . . . . . . . . . . 46 | 8.5. Combined and Implicit Tests ...............................41 | |||
12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 46 | 8.5.1. Sustained Full-Rate Bursts Test ....................41 | |||
13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 47 | 8.5.2. Passive Measurements ...............................42 | |||
14. Informative References . . . . . . . . . . . . . . . . . . . 47 | ||||
Appendix A. Model Derivations . . . . . . . . . . . . . . . . . 51 | 9. Example ........................................................43 | |||
A.1. Queueless Reno . . . . . . . . . . . . . . . . . . . . . 51 | 9.1. Observations about Applicability ..........................44 | |||
Appendix B. The effects of ACK scheduling . . . . . . . . . . . 52 | 10. Validation ....................................................45 | |||
Appendix C. Version Control . . . . . . . . . . . . . . . . . . 53 | 11. Security Considerations .......................................46 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 53 | 12. IANA Considerations ...........................................47 | |||
13. Informative References ........................................47 | ||||
Appendix A. Model Derivations ....................................52 | ||||
A.1. Queueless Reno ............................................52 | ||||
Appendix B. The Effects of ACK Scheduling ........................53 | ||||
Acknowledgments ...................................................55 | ||||
Authors' Addresses ................................................55 | ||||
1. Introduction | 1. Introduction | |||
Model Based Metrics (MBM) rely on peer-reviewed mathematical models | Model-Based Metrics (MBM) rely on peer-reviewed mathematical models | |||
to specify a Targeted Suite of IP Diagnostic tests, designed to | to specify a Targeted IP Diagnostic Suite (TIDS), a set of IP | |||
assess whether common transport protocols can be expected to meet a | diagnostic tests designed to assess whether common transport | |||
predetermined Target Transport Performance over an Internet path. | protocols can be expected to meet a predetermined Target Transport | |||
This note describes the modeling framework to derive the test | Performance over an Internet path. This document describes the | |||
parameters for assessing an Internet path's ability to support a | modeling framework to derive the test parameters for assessing an | |||
predetermined Bulk Transport Capacity. | Internet path's ability to support a predetermined Bulk Transport | |||
Capacity. | ||||
Each test in the Targeted IP Diagnostic Suite (TIDS) measures some | Each test in TIDS measures some aspect of IP packet transfer needed | |||
aspect of IP packet transfer needed to meet the Target Transport | to meet the Target Transport Performance. For Bulk Transport | |||
Performance. For Bulk Transport Capacity the TIDS includes IP | Capacity, the TIDS includes IP diagnostic tests to verify that there | |||
diagnostic tests to verify that there is: sufficient IP capacity | is sufficient IP capacity (data rate), sufficient queue space at | |||
(data rate); sufficient queue space at bottlenecks to absorb and | bottlenecks to absorb and deliver typical transport bursts, low | |||
deliver typical transport bursts; and that the background packet loss | enough background packet loss ratio to not interfere with congestion | |||
ratio is low enough not to interfere with congestion control; and | control, and other properties described below. Unlike typical IP | |||
other properties described below. Unlike typical IPPM metrics which | Performance Metrics (IPPM) that yield measures of network properties, | |||
yield measures of network properties, Model Based Metrics nominally | Model-Based Metrics nominally yield pass/fail evaluations of the | |||
yield pass/fail evaluations of the ability of standard transport | ability of standard transport protocols to meet the specific | |||
protocols to meet the specific performance objective over some | performance objective over some network path. | |||
network path. | ||||
In most cases, the IP diagnostic tests can be implemented by | In most cases, the IP diagnostic tests can be implemented by | |||
combining existing IPPM metrics with additional controls for | combining existing IPPM metrics with additional controls for | |||
generating test streams having a specified temporal structure (bursts | generating test streams having a specified temporal structure (bursts | |||
or standing queues caused by constant bit rate streams, etc.) and | or standing queues caused by constant bit rate streams, etc.) and | |||
statistical criteria for evaluating packet transfer. The temporal | statistical criteria for evaluating packet transfer. The temporal | |||
structure of the test streams mimic transport protocol behavior over | structure of the test streams mimics transport protocol behavior over | |||
the complete path; the statistical criteria models the transport | the complete path; the statistical criteria models the transport | |||
protocol's response to less than ideal IP packet transfer. In | protocol's response to less-than-ideal IP packet transfer. In | |||
control theory terms, the tests are "open loop". Note that running a | control theory terms, the tests are "open loop". Note that running a | |||
test requires the coordinated activity of sending and receiving | test requires the coordinated activity of sending and receiving | |||
measurement points. | measurement points. | |||
This note addresses Bulk Transport Capacity. It describes an | This document addresses Bulk Transport Capacity. It describes an | |||
alternative to the approach presented in "A Framework for Defining | alternative to the approach presented in "A Framework for Defining | |||
Empirical Bulk Transfer Capacity Metrics" [RFC3148]. Other Model | Empirical Bulk Transfer Capacity Metrics" [RFC3148]. Other Model- | |||
Based Metrics may cover other applications and transports, such as | Based Metrics may cover other applications and transports, such as | |||
VoIP over UDP and RTP, and new transport protocols. | Voice over IP (VoIP) over UDP, RTP, and new transport protocols. | |||
This note assumes a traditional Reno TCP style self clocked, window | This document assumes a traditional Reno TCP-style, self-clocked, | |||
controlled transport protocol that uses packet loss and ECN CE marks | window-controlled transport protocol that uses packet loss and | |||
for congestion feedback. There are currently some experimental | Explicit Congestion Notification (ECN) Congestion Experienced (CE) | |||
marks for congestion feedback. There are currently some experimental | ||||
protocols and congestion control algorithms that are rate based or | protocols and congestion control algorithms that are rate based or | |||
otherwise fall outside of these assumptions. In the future these new | otherwise fall outside of these assumptions. In the future, these | |||
protocols and algorithms may call for revised models. | new protocols and algorithms may call for revised models. | |||
The MBM approach, mapping Target Transport Performance to a Targeted | The MBM approach, i.e., mapping Target Transport Performance to a | |||
IP Diagnostic Suite (TIDS) of IP tests, solves some intrinsic | Targeted IP Diagnostic Suite (TIDS) of IP tests, solves some | |||
problems with using TCP or other throughput maximizing protocols for | intrinsic problems with using TCP or other throughput-maximizing | |||
measurement. In particular all throughput maximizing protocols (and | protocols for measurement. In particular, all throughput-maximizing | |||
TCP congestion control in particular) cause some level of congestion | protocols (especially TCP congestion control) cause some level of | |||
in order to detect when they have reached the available capacity | congestion in order to detect when they have reached the available | |||
limitation of the network. This self inflicted congestion obscures | capacity limitation of the network. This self-inflicted congestion | |||
the network properties of interest and introduces non-linear dynamic | obscures the network properties of interest and introduces non-linear | |||
equilibrium behaviors that make any resulting measurements useless as | dynamic equilibrium behaviors that make any resulting measurements | |||
metrics because they have no predictive value for conditions or paths | useless as metrics because they have no predictive value for | |||
different than that of the measurement itself. In order to prevent | conditions or paths different from that of the measurement itself. | |||
these effects it is necessary to avoid the effects of TCP congestion | In order to prevent these effects, it is necessary to avoid the | |||
control in the measurement method. These issues are discussed at | effects of TCP congestion control in the measurement method. These | |||
length in Section 4. Readers whom are unfamiliar with basic | issues are discussed at length in Section 4. Readers who are | |||
properties of TCP and TCP-like congestion control may find it easier | unfamiliar with basic properties of TCP and TCP-like congestion | |||
to start at Section 4 or Section 4.1. | control may find it easier to start at Section 4 or 4.1. | |||
A Targeted IP Diagnostic Suite does not have such difficulties. IP | A Targeted IP Diagnostic Suite does not have such difficulties. IP | |||
diagnostics can be constructed such that they make strong statistical | diagnostics can be constructed such that they make strong statistical | |||
statements about path properties that are independent of the | statements about path properties that are independent of measurement | |||
measurement details, such as vantage and choice of measurement | details, such as vantage and choice of measurement points. | |||
points. | ||||
1.1. Version Control | ||||
RFC Editor: Please remove this entire subsection prior to | ||||
publication. | ||||
REF Editor: The reference to draft-ietf-tcpm-rack is to attribute an | ||||
idea. This document should not block waiting for the completion of | ||||
that one. | ||||
Please send comments about this draft to ippm@ietf.org. See | ||||
http://goo.gl/02tkD for more information including: interim drafts, | ||||
an up to date todo list and information on contributing. | ||||
Formatted: Fri Sep 15 15:07:50 PDT 2017 | ||||
Changes since -11 draft: | ||||
o (From IESG review comments.) | ||||
o Ben Campbell: Shorten the Abstract. | ||||
o Mirja Kuhlewind: Reduced redundancy. (See message) | ||||
o MK: Mention open loop in the introduction. | ||||
o MK: Spelled out ECN and reference RFC3168. | ||||
o MK: Added a paragraph to the introduction about assuming a | ||||
traditional self clocked, window controlled transport protocol. | ||||
o MK: Added language about initial window to the list at about | ||||
bursts at the end of section 4.1. | ||||
o MK: Network power is defined in the terminology section. | ||||
o MK: The introduction mention coordinated activity of both | ||||
endpoints. | ||||
o MK: The security section restates that some of the tests are not | ||||
intended for frequent monitoring tests as the high load can impact | ||||
other traffic negatively. | ||||
o MK: Restored "Informative References" section name. | ||||
o And a few minor nits. | ||||
Changes since -10 draft: | ||||
o A few more nits from various sources. | ||||
o (From IETF LC review comments.) | ||||
o David Mandelberg: design metrics to prevent DDOS. | ||||
o From Robert Sparks: | ||||
* Remove all legacy 2119 language. | ||||
* Fixed Xr notation inconsistency. | ||||
* Adjusted abstract: tests are only partially specified. | ||||
* Avoid rather than suppress the effects of congestion control | ||||
* Removed the unnecessary, excessively abstract and unclear | ||||
thought about IP vs TCP measurements. | ||||
* Changed "thwarted" to "not fulfilled". | ||||
* Qualified language about burst models. | ||||
* Replaced "infinitesimal" with other language. | ||||
* Added citations for the reordering strawman. | ||||
* Pointed out that pseudo CBR tests depend on self clock. | ||||
* Fixed some run on sentences. | ||||
o Update language to reflect RFC7567, AQM recommendations. | ||||
o Suggestion from Merry Mou (MIT) | ||||
Changes since -09 draft: | ||||
o Five last minute editing nits. | ||||
Changes since -08 draft: | ||||
o Language, spelling and usage nits. | ||||
o Expanded the abstract describe the models. | ||||
o Remove superfluous standards like language | ||||
o Remove superfluous "future technology" language. | ||||
o Interconnects -> network interconnections. | ||||
o Added more labels to Figure 1. | ||||
o Defined Bulk Transport. | ||||
o Clarified "implied bottleneck IP capacity" | ||||
o Clarified the history of the BTC metrics. | ||||
o Clarified stochastic vs non-stochastic test traffic generation. | ||||
o Reworked Fig 2 and 6.1 "Mimicking slowstart" | ||||
o Described the unsynchronized parallel stream failure case. | ||||
o Discussed how to measure devices that use virtual queues. | ||||
o Changed section 8.5.2 (Streaming Media) to be Passive | ||||
Measurements. | ||||
Changes since -07 draft: | ||||
o Sharpened the use of "statistical criteria" | ||||
o Sharpened the definition of test_window, and removed related | ||||
redundant text in several places | ||||
o Clarified "equilibrium" as "dynamic equilibrium, similar to | ||||
processes observed in chemistry" | ||||
o Properly explained "Heisenberg" as "observer effect" | ||||
o Added the observation from RFC 6576 that HW and SW congestion | ||||
control implementations do not generally give the same results. | ||||
o Noted that IP and application metrics differ as to how overhead is | ||||
handled. MBM is explicit about how it handles overhead. | ||||
o Clarified the language and added a new reference about the | ||||
problems caused by token bucket policers. | ||||
o Added an subsection in the example that comments on some of issues | ||||
that need to be mentioned in a future usage or applicability doc. | ||||
o Updated ippm-2680-bis to RFC7680 | ||||
o Many terminology, punctuation and spelling nits. | ||||
Changes since -06 draft: | ||||
o More language nits: | ||||
* "Targeted IP Diagnostic Suite (TIDS)" replaces "Targeted | ||||
Diagnostic Suite (TDS)". | ||||
* "implied bottleneck IP capacity" replaces "implied bottleneck | ||||
IP rate". | ||||
* Updated to ECN CE Marks. | ||||
* Added "specified temporal structure" | ||||
* "test stream" replaces "test traffic" | ||||
* "packet transfer" replaces "packet delivery" | ||||
* Reworked discussion of slowstart, bursts and pacing. | ||||
* RFC 7567 replaces RFC 2309. | ||||
Changes since -05 draft: | ||||
o Wordsmithing on sections overhauled in -05 draft. | ||||
o Reorganized the document: | ||||
* Relocated subsection "Preconditions". | ||||
* Relocated subsection "New Requirements relative to RFC 2330". | ||||
o Addressed nits and not so nits by Ruediger Geib. (Thanks!) | ||||
o Substantially tightened the entire definitions section. | ||||
o Many terminology changes, to better conform to other docs : | ||||
* IP rate and IP capacity (following RFC 5136) replaces various | ||||
forms of link data rate. | ||||
* subpath replaces link. | ||||
* target_window_size replaces target_pipe_size. | ||||
* implied bottleneck IP rate replaces effective bottleneck link | ||||
rate. | ||||
* Packet delivery statistics replaces delivery statistics. | ||||
Changes since -04 draft: | ||||
o The introduction was heavily overhauled: split into a separate | ||||
introduction and overview. | ||||
o The new shorter introduction: | ||||
* Is a problem statement; | ||||
* This document provides a framework; | ||||
* That it replaces TCP measurement by IP tests; | ||||
* That the results are pass/fail. | ||||
o Added a diagram of the framework to the overview | ||||
o and introduces all of the elements of the framework. | ||||
o Renumbered sections, reducing the depth of some section numbers. | ||||
o Updated definitions to better agree with other documents: | ||||
* Reordered section 2 | ||||
* Bulk [data] performance -> Bulk Transport Capacity, everywhere | ||||
including the title. | ||||
* loss rate and loss probability -> packet loss ratio | ||||
* end-to-end path -> complete path | ||||
* [end-to-end][target] performance -> Target Transport | ||||
Performance | ||||
* load test -> capacity test | ||||
2. Overview | 2. Overview | |||
This document describes a modeling framework for deriving a Targeted | This document describes a modeling framework for deriving a Targeted | |||
IP Diagnostic Suite from a predetermined Target Transport | IP Diagnostic Suite from a predetermined Target Transport | |||
Performance. It is not a complete specification, and relies on other | Performance. It is not a complete specification and relies on other | |||
standards documents to define important details such as packet Type-P | standards documents to define important details such as packet type-P | |||
selection, sampling techniques, vantage selection, etc. We imagine | selection, sampling techniques, vantage selection, etc. Fully | |||
Fully Specified - Targeted IP Diagnostic Suites (FS-TIDS), that | Specified Targeted IP Diagnostic Suites (FSTIDSs) define all of these | |||
define all of these details. We use Targeted IP Diagnostic Suite | details. A Targeted IP Diagnostic Suite (TIDS) refers to the subset | |||
(TIDS) to refer to the subset of such a specification that is in | of such a specification that is in scope for this document. This | |||
scope for this document. This terminology is defined in Section 3. | terminology is further defined in Section 3. | |||
Section 4 describes some key aspects of TCP behavior and what they | Section 4 describes some key aspects of TCP behavior and what they | |||
imply about the requirements for IP packet transfer. Most of the IP | imply about the requirements for IP packet transfer. Most of the IP | |||
diagnostic tests needed to confirm that the path meets these | diagnostic tests needed to confirm that the path meets these | |||
properties can be built on existing IPPM metrics, with the addition | properties can be built on existing IPPM metrics, with the addition | |||
of statistical criteria for evaluating packet transfer and in a few | of statistical criteria for evaluating packet transfer and, in a few | |||
cases, new mechanisms to implement the required temporal structure. | cases, new mechanisms to implement the required temporal structure. | |||
(One group of tests, the standing queue tests described in | (One group of tests, the standing queue tests described in | |||
Section 8.2, don't correspond to existing IPPM metrics, but suitable | Section 8.2, don't correspond to existing IPPM metrics, but suitable | |||
new IPPM metrics can be patterned after the existing definitions.) | new IPPM metrics can be patterned after the existing definitions.) | |||
Figure 1 shows the MBM modeling and measurement framework. The | Figure 1 shows the MBM modeling and measurement framework. The | |||
Target Transport Performance, at the top of the figure, is determined | Target Transport Performance at the top of the figure is determined | |||
by the needs of the user or application, outside the scope of this | by the needs of the user or application, which are outside the scope | |||
document. For Bulk Transport Capacity, the main performance | of this document. For Bulk Transport Capacity, the main performance | |||
parameter of interest is the Target Data Rate. However, since TCP's | parameter of interest is the Target Data Rate. However, since TCP's | |||
ability to compensate for less than ideal network conditions is | ability to compensate for less-than-ideal network conditions is | |||
fundamentally affected by the Round Trip Time (RTT) and the Maximum | fundamentally affected by the Round-Trip Time (RTT) and the Maximum | |||
Transmission Unit (MTU) of the complete path, these parameters must | Transmission Unit (MTU) of the complete path, these parameters must | |||
also be specified in advance based on knowledge about the intended | also be specified in advance based on knowledge about the intended | |||
application setting. They may reflect a specific application over a | application setting. They may reflect a specific application over a | |||
real path through the Internet or an idealized application and | real path through the Internet or an idealized application and | |||
hypothetical path representing a typical user community. Section 5 | hypothetical path representing a typical user community. Section 5 | |||
describes the common parameters and models derived from the Target | describes the common parameters and models derived from the Target | |||
Transport Performance. | Transport Performance. | |||
Target Transport Performance | Target Transport Performance | |||
(Target Data Rate, Target RTT and Target MTU) | (Target Data Rate, Target RTT, and Target MTU) | |||
| | | | |||
________V_________ | ________V_________ | |||
| mathematical | | | mathematical | | |||
| models | | | models | | |||
| | | | | | |||
------------------ | ------------------ | |||
Traffic parameters | | Statistical criteria | Traffic parameters | | Statistical criteria | |||
| | | | | | |||
_______V____________V____Targeted_______ | _______V____________V____Targeted IP____ | |||
| | * * * | Diagnostic Suite | | | | * * * | Diagnostic Suite | | |||
_____|_______V____________V________________ | | _____|_______V____________V________________ | | |||
__|____________V____________V______________ | | | __|____________V____________V______________ | | | |||
| IP diagnostic tests | | | | | IP diagnostic tests | | | | |||
| | | | | | | | | | | | | | |||
| _____________V__ __V____________ | | | | | _____________V__ __V____________ | | | | |||
| | traffic | | Delivery | | | | | | | traffic | | Delivery | | | | | |||
| | pattern | | Evaluation | | | | | | | pattern | | Evaluation | | | | | |||
| | generation | | | | | | | | | generation | | | | | | | |||
| -------v-------- ------^-------- | | | | | -------v-------- ------^-------- | | | | |||
| | v test stream via ^ | | |-- | | | v test stream via ^ | | |-- | |||
| | -->======================>-- | | | | | | -->======================>-- | | | | |||
| | subpath under test | |- | | | subpath under test | |- | |||
----V----------------------------------V--- | | ----V----------------------------------V--- | | |||
| | | | | | | | | | | | | | |||
V V V V V V | V V V V V V | |||
fail/inconclusive pass/fail/inconclusive | fail/inconclusive pass/fail/inconclusive | |||
(traffic generation status) (test result) | (traffic generation status) (test result) | |||
Overall Modeling Framework | ||||
Figure 1 | Figure 1: Overall Modeling Framework | |||
Mathematical TCP models are used to determine Traffic parameters and | Mathematical TCP models are used to determine traffic parameters and | |||
subsequently to design traffic patterns that mimic TCP or other | subsequently to design traffic patterns that mimic TCP (which has | |||
transport protocol delivering bulk data and operating at the Target | burst characteristics at multiple time scales) or other transport | |||
Data Rate, MTU and RTT over a full range of conditions, including | protocols delivering bulk data and operating at the Target Data Rate, | |||
flows that are bursty at multiple time scales. The traffic patterns | MTU, and RTT over a full range of conditions. Using the techniques | |||
are generated based on the three Target parameters of complete path | described in Section 6, the traffic patterns are generated based on | |||
and independent of the properties of individual subpaths using the | the three Target parameters of the complete path (Target Data Rate, | |||
techniques described in Section 6. As much as possible the test | Target RTT, and Target MTU), independent of the properties of | |||
streams are generated deterministically (precomputed) to minimize the | individual subpaths. As much as possible, the test streams are | |||
extent to which test methodology, measurement points, measurement | generated deterministically (precomputed) to minimize the extent to | |||
vantage or path partitioning affect the details of the measurement | which test methodology, measurement points, measurement vantage, or | |||
traffic. | path partitioning affect the details of the measurement traffic. | |||
Section 7 describes packet transfer statistics and methods to test | Section 7 describes packet transfer statistics and methods to test | |||
them against the statistical criteria provided by the mathematical | against the statistical criteria provided by the mathematical models. | |||
models. Since the statistical criteria typically apply to the | Since the statistical criteria typically apply to the complete path | |||
complete path (a composition of subpaths) [RFC6049], in situ testing | (a composition of subpaths) [RFC6049], in situ testing requires that | |||
requires that the end-to-end statistical criteria be apportioned as | the end-to-end statistical criteria be apportioned as separate | |||
separate criteria for each subpath. Subpaths that are expected to be | criteria for each subpath. Subpaths that are expected to be | |||
bottlenecks would then be permitted to contribute a larger fraction | bottlenecks would then be permitted to contribute a larger fraction | |||
of the end-to-end packet loss budget. In compensation, subpaths that | of the end-to-end packet loss budget. In compensation, subpaths that | |||
are not expected to exhibit bottlenecks must be constrained to | are not expected to exhibit bottlenecks must be constrained to | |||
contribute less packet loss. Thus the statistical criteria for each | contribute less packet loss. Thus, the statistical criteria for each | |||
subpath in each test of a TIDS is an apportioned share of the end-to- | subpath in each test of a TIDS is an apportioned share of the end-to- | |||
end statistical criteria for the complete path which was determined | end statistical criteria for the complete path that was determined by | |||
by the mathematical model. | the mathematical model. | |||
Section 8 describes the suite of individual tests needed to verify | Section 8 describes the suite of individual tests needed to verify | |||
all of required IP delivery properties. A subpath passes if and only | all of the required IP delivery properties. A subpath passes if and | |||
if all of the individual IP diagnostic tests pass. Any subpath that | only if all of the individual IP diagnostic tests pass. Any subpath | |||
fails any test indicates that some users are likely to fail to attain | that fails any test indicates that some users are likely to fail to | |||
their Target Transport Performance under some conditions. In | attain their Target Transport Performance under some conditions. In | |||
addition to passing or failing, a test can be deemed to be | addition to passing or failing, a test can be deemed inconclusive for | |||
inconclusive for a number of reasons including: the precomputed | a number of reasons, including the following: the precomputed traffic | |||
traffic pattern was not accurately generated; the measurement results | pattern was not accurately generated, the measurement results were | |||
were not statistically significant; and others such as failing to | not statistically significant, the test failed to meet some required | |||
meet some required test preconditions. If all tests pass but some | test preconditions, etc. If all tests pass but some are | |||
are inconclusive, then the entire suite is deemed to be inconclusive. | inconclusive, then the entire suite is deemed to be inconclusive. | |||
In Section 9 we present an example TIDS that might be representative | In Section 9, we present an example TIDS that might be representative | |||
of High Definition (HD) video, and illustrate how Model Based Metrics | of High Definition (HD) video and illustrate how Model-Based Metrics | |||
can be used to address difficult measurement situations, such as | can be used to address difficult measurement situations, such as | |||
confirming that inter-carrier exchanges have sufficient performance | confirming that inter-carrier exchanges have sufficient performance | |||
and capacity to deliver HD video between ISPs. | and capacity to deliver HD video between ISPs. | |||
Since there is some uncertainty in the modeling process, Section 10 | Since there is some uncertainty in the modeling process, Section 10 | |||
describes a validation procedure to diagnose and minimize false | describes a validation procedure to diagnose and minimize false | |||
positive and false negative results. | positive and false negative results. | |||
3. Terminology | 3. Terminology | |||
Terms containing underscores (rather than spaces) appear in equations | Terms containing underscores (rather than spaces) appear in equations | |||
and typically have algorithmic definitions. | and typically have algorithmic definitions. | |||
General Terminology: | 3.1. General Terminology | |||
Target: A general term for any parameter specified by or derived | Target: A general term for any parameter specified by or derived | |||
from the user's application or transport performance requirements. | from the user's application or transport performance requirements. | |||
Target Transport Performance: Application or transport performance | Target Transport Performance: Application or transport performance | |||
target values for the complete path. For Bulk Transport Capacity | target values for the complete path. For Bulk Transport Capacity | |||
defined in this note the Target Transport Performance includes the | defined in this document, the Target Transport Performance | |||
Target Data Rate, Target RTT and Target MTU as described below. | includes the Target Data Rate, Target RTT, and Target MTU as | |||
described below. | ||||
Target Data Rate: The specified application data rate required for | Target Data Rate: The specified application data rate required for | |||
an application's proper operation. Conventional Bulk Transport | an application's proper operation. Conventional Bulk Transport | |||
Capacity (BTC) metrics are focused on the Target Data Rate, | Capacity (BTC) metrics are focused on the Target Data Rate; | |||
however these metrics had little or no predictive value because | however, these metrics have little or no predictive value because | |||
they do not consider the effects of the other two parameters of | they do not consider the effects of the other two parameters of | |||
the Target Transport Performance, the RTT and MTU of the complete | the Target Transport Performance -- the RTT and MTU of the | |||
paths. | complete paths. | |||
Target RTT (Round Trip Time): The specified baseline (minimum) RTT | ||||
Target RTT (Round-Trip Time): The specified baseline (minimum) RTT | ||||
of the longest complete path over which the user expects to be | of the longest complete path over which the user expects to be | |||
able to meet the target performance. TCP and other transport | able to meet the target performance. TCP and other transport | |||
protocol's ability to compensate for path problems is generally | protocol's ability to compensate for path problems is generally | |||
proportional to the number of round trips per second. The Target | proportional to the number of round trips per second. The Target | |||
RTT determines both key parameters of the traffic patterns (e.g. | RTT determines both key parameters of the traffic patterns (e.g., | |||
burst sizes) and the thresholds on acceptable IP packet transfer | burst sizes) and the thresholds on acceptable IP packet transfer | |||
statistics. The Target RTT must be specified considering | statistics. The Target RTT must be specified considering | |||
appropriate packets sizes: MTU sized packets on the forward path, | appropriate packets sizes: MTU-sized packets on the forward path | |||
ACK sized packets (typically header_overhead) on the return path. | and ACK-sized packets (typically, header_overhead) on the return | |||
Note that Target RTT is specified and not measured, MBM | path. Note that Target RTT is specified and not measured; MBM | |||
measurements derived for a given target_RTT will be applicable to | measurements derived for a given target_RTT will be applicable to | |||
any path with a smaller RTTs. | any path with a smaller RTT. | |||
Target MTU (Maximum Transmission Unit): The specified maximum MTU | Target MTU (Maximum Transmission Unit): The specified maximum MTU | |||
supported by the complete path the over which the application | supported by the complete path over which the application expects | |||
expects to meet the target performance. In this document assume a | to meet the target performance. In this document, we assume a | |||
1500 Byte MTU unless otherwise specified. If some subpath has a | 1500-byte MTU unless otherwise specified. If a subpath has a | |||
smaller MTU, then it becomes the Target MTU for the complete path, | smaller MTU, then it becomes the Target MTU for the complete path, | |||
and all model calculations and subpath tests must use the same | and all model calculations and subpath tests must use the same | |||
smaller MTU. | smaller MTU. | |||
Targeted IP Diagnostic Suite (TIDS): A set of IP diagnostic tests | Targeted IP Diagnostic Suite (TIDS): A set of IP diagnostic tests | |||
designed to determine if an otherwise ideal complete path | designed to determine if an otherwise ideal complete path | |||
containing the subpath under test can sustain flows at a specific | containing the subpath under test can sustain flows at a specific | |||
target_data_rate using target_MTU sized packets when the RTT of | target_data_rate using packets with a size of target_MTU when the | |||
the complete path is target_RTT. | RTT of the complete path is target_RTT. | |||
Fully Specified Targeted IP Diagnostic Suite (FS-TIDS): A TIDS | ||||
together with additional specification such as measurement packet | Fully Specified Targeted IP Diagnostic Suite (FSTIDS): A TIDS | |||
type ("type-p" [RFC2330]), etc. which are out of scope for this | together with additional specifications such as measurement packet | |||
document, but need to be drawn from other standards documents. | type ("type-p" [RFC2330]) that are out of scope for this document | |||
Bulk Transport Capacity: Bulk Transport Capacity Metrics evaluate an | and need to be drawn from other standards documents. | |||
Internet path's ability to carry bulk data, such as large files, | ||||
streaming (non-real time) video, and under some conditions, web | Bulk Transport Capacity (BTC): Bulk Transport Capacity metrics | |||
images and other content. Prior efforts to define BTC metrics | evaluate an Internet path's ability to carry bulk data, such as | |||
have been based on [RFC3148], which predates our understanding of | large files, streaming (non-real-time) video, and, under some | |||
TCP and the requirements described in Section 4. In general "Bulk | conditions, web images and other content. Prior efforts to define | |||
Transport" indicates that performance is determined by the | BTC metrics have been based on [RFC3148], which predates our | |||
interplay between the network, cross traffic and congestion | understanding of TCP and the requirements described in Section 4. | |||
control in the transport protocol. It excludes situations where | In general, "Bulk Transport" indicates that performance is | |||
performance is dominated by the RTT alone (e.g. transactions) or | determined by the interplay between the network, cross traffic, | |||
bottlenecks elsewhere, such as in the application itself. | and congestion control in the transport protocol. It excludes | |||
situations where performance is dominated by the RTT alone (e.g., | ||||
transactions) or bottlenecks elsewhere, such as in the application | ||||
itself. | ||||
IP diagnostic tests: Measurements or diagnostics to determine if | IP diagnostic tests: Measurements or diagnostics to determine if | |||
packet transfer statistics meet some precomputed target. | packet transfer statistics meet some precomputed target. | |||
traffic patterns: The temporal patterns or burstiness of traffic | traffic patterns: The temporal patterns or burstiness of traffic | |||
generated by applications over transport protocols such as TCP. | generated by applications over transport protocols such as TCP. | |||
There are several mechanisms that cause bursts at various time | There are several mechanisms that cause bursts at various | |||
scales as described in Section 4.1. Our goal here is to mimic the | timescales as described in Section 4.1. Our goal here is to mimic | |||
range of common patterns (burst sizes and rates, etc), without | the range of common patterns (burst sizes, rates, etc.), without | |||
tying our applicability to specific applications, implementations | tying our applicability to specific applications, implementations, | |||
or technologies, which are sure to become stale. | or technologies, which are sure to become stale. | |||
Explicit Congestion Notification (ECN): See [RFC3168]. | Explicit Congestion Notification (ECN): See [RFC3168]. | |||
packet transfer statistics: Raw, detailed or summary statistics | ||||
packet transfer statistics: Raw, detailed, or summary statistics | ||||
about packet transfer properties of the IP layer including packet | about packet transfer properties of the IP layer including packet | |||
losses, ECN Congestion Experienced (CE) marks, reordering, or any | losses, ECN Congestion Experienced (CE) marks, reordering, or any | |||
other properties that may be germane to transport performance. | other properties that may be germane to transport performance. | |||
packet loss ratio: As defined in [RFC7680]. | packet loss ratio: As defined in [RFC7680]. | |||
apportioned: To divide and allocate, for example budgeting packet | ||||
apportioned: To divide and allocate, for example, budgeting packet | ||||
loss across multiple subpaths such that the losses will accumulate | loss across multiple subpaths such that the losses will accumulate | |||
to less than a specified end-to-end loss ratio. Apportioning | to less than a specified end-to-end loss ratio. Apportioning | |||
metrics is essentially the inverse of the process described in | metrics is essentially the inverse of the process described in | |||
[RFC5835]. | [RFC5835]. | |||
open loop: A control theory term used to describe a class of | open loop: A control theory term used to describe a class of | |||
techniques where systems that naturally exhibit circular | techniques where systems that naturally exhibit circular | |||
dependencies can be analyzed by suppressing some of the | dependencies can be analyzed by suppressing some of the | |||
dependencies, such that the resulting dependency graph is acyclic. | dependencies, such that the resulting dependency graph is acyclic. | |||
Terminology about paths, etc. See [RFC2330] and [RFC7398] for | 3.2. Terminology about Paths | |||
existing terms and definitions. | ||||
See [RFC2330] and [RFC7398] for existing terms and definitions. | ||||
data sender: Host sending data and receiving ACKs. | data sender: Host sending data and receiving ACKs. | |||
data receiver: Host receiving data and sending ACKs. | data receiver: Host receiving data and sending ACKs. | |||
complete path: The end-to-end path from the data sender to the data | complete path: The end-to-end path from the data sender to the data | |||
receiver. | receiver. | |||
subpath: A portion of the complete path. Note that there is no | subpath: A portion of the complete path. Note that there is no | |||
requirement that subpaths be non-overlapping. A subpath can be a | requirement that subpaths be non-overlapping. A subpath can be as | |||
small as a single device, link or interface. | small as a single device, link, or interface. | |||
measurement point: Measurement points as described in [RFC7398]. | measurement point: Measurement points as described in [RFC7398]. | |||
test path: A path between two measurement points that includes a | test path: A path between two measurement points that includes a | |||
subpath of the complete path under test. If the measurement | subpath of the complete path under test. If the measurement | |||
points are off path, the test path may include "test leads" | points are off path, the test path may include "test leads" | |||
between the measurement points and the subpath. | between the measurement points and the subpath. | |||
dominant bottleneck: The bottleneck that generally determines most | dominant bottleneck: The bottleneck that generally determines most | |||
of packet transfer statistics for the entire path. It typically | packet transfer statistics for the entire path. It typically | |||
determines a flow's self clock timing, packet loss and ECN | determines a flow's self-clock timing, packet loss, and ECN CE | |||
Congestion Experienced (CE) marking rate, with other potential | marking rate, with other potential bottlenecks having less effect | |||
bottlenecks having less effect on the packet transfer statistics. | on the packet transfer statistics. See Section 4.1 on TCP | |||
See Section 4.1 on TCP properties. | properties. | |||
front path: The subpath from the data sender to the dominant | front path: The subpath from the data sender to the dominant | |||
bottleneck. | bottleneck. | |||
back path: The subpath from the dominant bottleneck to the receiver. | back path: The subpath from the dominant bottleneck to the receiver. | |||
return path: The path taken by the ACKs from the data receiver to | return path: The path taken by the ACKs from the data receiver to | |||
the data sender. | the data sender. | |||
cross traffic: Other, potentially interfering, traffic competing for | cross traffic: Other, potentially interfering, traffic competing for | |||
network resources (bandwidth and/or queue capacity). | network resources (such as bandwidth and/or queue capacity). | |||
Properties determined by the complete path and application. These | 3.3. Properties | |||
are described in more detail in Section 5.1. | ||||
The following properties are determined by the complete path and | ||||
application. These are described in more detail in Section 5.1. | ||||
Application Data Rate: General term for the data rate as seen by the | Application Data Rate: General term for the data rate as seen by the | |||
application above the transport layer in bytes per second. This | application above the transport layer in bytes per second. This | |||
is the payload data rate, and explicitly excludes transport and | is the payload data rate and explicitly excludes transport-level | |||
lower level headers (TCP/IP or other protocols), retransmissions | and lower-level headers (TCP/IP or other protocols), | |||
and other overhead that is not part to the total quantity of data | retransmissions, and other overhead that is not part of the total | |||
delivered to the application. | quantity of data delivered to the application. | |||
IP rate: The actual number of IP-layer bytes delivered through a | IP rate: The actual number of IP-layer bytes delivered through a | |||
subpath, per unit time, including TCP and IP headers, retransmits | subpath, per unit time, including TCP and IP headers, retransmits, | |||
and other TCP/IP overhead. Follows from IP-type-P Link Usage | and other TCP/IP overhead. This is the same as IP-type-P Link | |||
[RFC5136]. | Usage in [RFC5136]. | |||
IP capacity: The maximum number of IP-layer bytes that can be | IP capacity: The maximum number of IP-layer bytes that can be | |||
transmitted through a subpath, per unit time, including TCP and IP | transmitted through a subpath, per unit time, including TCP and IP | |||
headers, retransmits and other TCP/IP overhead. Follows from IP- | headers, retransmits, and other TCP/IP overhead. This is the same | |||
type-P Link Capacity [RFC5136]. | as IP-type-P Link Capacity in [RFC5136]. | |||
bottleneck IP capacity: The IP capacity of the dominant bottleneck | bottleneck IP capacity: The IP capacity of the dominant bottleneck | |||
in the forward path. All throughput maximizing protocols estimate | in the forward path. All throughput-maximizing protocols estimate | |||
this capacity by observing the IP rate delivered through the | this capacity by observing the IP rate delivered through the | |||
bottleneck. Most protocols derive their self clocks from the | bottleneck. Most protocols derive their self-clocks from the | |||
timing of this data. See Section 4.1 and Appendix B for more | timing of this data. See Section 4.1 and Appendix B for more | |||
details. | details. | |||
implied bottleneck IP capacity: This is the bottleneck IP capacity | ||||
implied by the ACKs returning from the receiver. It is determined | implied bottleneck IP capacity: The bottleneck IP capacity implied | |||
by looking at how much application data the ACK stream at the | by the ACKs returning from the receiver. It is determined by | |||
sender reports delivered to the data receiver per unit time at | looking at how much application data the ACK stream at the sender | |||
various time scales. If the return path is thinning, batching or | reports as delivered to the data receiver per unit time at various | |||
otherwise altering the ACK timing the implied bottleneck IP | timescales. If the return path is thinning, batching, or | |||
capacity over short time scales might be substantially larger than | otherwise altering the ACK timing, the implied bottleneck IP | |||
capacity over short timescales might be substantially larger than | ||||
the bottleneck IP capacity averaged over a full RTT. Since TCP | the bottleneck IP capacity averaged over a full RTT. Since TCP | |||
derives its clock from the data delivered through the bottleneck, | derives its clock from the data delivered through the bottleneck, | |||
the front path must have sufficient buffering to absorb any data | the front path must have sufficient buffering to absorb any data | |||
bursts at the dimensions (size and IP rate) implied by the ACK | bursts at the dimensions (size and IP rate) implied by the ACK | |||
stream, which are potentially doubled during slowstart. If the | stream, which are potentially doubled during slowstart. If the | |||
return path is not altering the ACK stream, then the implied | return path is not altering the ACK stream, then the implied | |||
bottleneck IP capacity will be the same as the bottleneck IP | bottleneck IP capacity will be the same as the bottleneck IP | |||
capacity. See Section 4.1 and Appendix B for more details. | capacity. See Section 4.1 and Appendix B for more details. | |||
sender interface rate: The IP rate which corresponds to the IP | sender interface rate: The IP rate that corresponds to the IP | |||
capacity of the data sender's interface. Due to sender efficiency | capacity of the data sender's interface. Due to sender efficiency | |||
algorithms including technologies such as TCP segmentation offload | algorithms, including technologies such as TCP segmentation | |||
(TSO), nearly all modern servers deliver data in bursts at full | offload (TSO), nearly all modern servers deliver data in bursts at | |||
interface link rate. Today 1 or 10 Gb/s are typical. | full interface link rate. Today, 1 or 10 Gb/s are typical. | |||
Header_overhead: The IP and TCP header sizes, which are the portion | ||||
header_overhead: The IP and TCP header sizes, which are the portion | ||||
of each MTU not available for carrying application payload. | of each MTU not available for carrying application payload. | |||
Without loss of generality this is assumed to be the size for | Without loss of generality, this is assumed to be the size for | |||
returning acknowledgments (ACKs). For TCP, the Maximum Segment | returning acknowledgments (ACKs). For TCP, the Maximum Segment | |||
Size (MSS) is the Target MTU minus the header_overhead. | Size (MSS) is the Target MTU minus the header_overhead. | |||
Basic parameters common to models and subpath tests are defined here | 3.4. Basic Parameters | |||
are described in more detail in Section 5.2. Note that these are | ||||
mixed between application transport performance (excludes headers) | Basic parameters common to models and subpath tests are defined here. | |||
and IP performance (which include TCP headers and retransmissions as | Formulas for target_window_size and target_run_length appear in | |||
part of the IP payload). | Section 5.2. Note that these are mixed between application transport | |||
performance (excludes headers) and IP performance (includes TCP | ||||
headers and retransmissions as part of the IP payload). | ||||
Network power: The observed data rate divided by the observed RTT. | Network power: The observed data rate divided by the observed RTT. | |||
Network power indicates how effectively a transport protocol is | Network power indicates how effectively a transport protocol is | |||
filling a network. | filling a network. | |||
Window [size]: The total quantity of data carried by packets in- | ||||
flight plus the data represented by ACKs circulating in the | Window [size]: The total quantity of data carried by packets | |||
in-flight plus the data represented by ACKs circulating in the | ||||
network is referred to as the window. See Section 4.1. Sometimes | network is referred to as the window. See Section 4.1. Sometimes | |||
used with other qualifiers (congestion window, cwnd or receiver | used with other qualifiers (congestion window (cwnd) or receiver | |||
window) to indicate which mechanism is controlling the window. | window) to indicate which mechanism is controlling the window. | |||
pipe size: A general term for number of packets needed in flight | ||||
(the window size) to exactly fill some network path or subpath. | pipe size: A general term for the number of packets needed in flight | |||
It corresponds to the window size which maximizes network power. | (the window size) to exactly fill a network path or subpath. It | |||
Often used with additional qualifiers to specify which path, or | corresponds to the window size, which maximizes network power. It | |||
is often used with additional qualifiers to specify which path, | ||||
under what conditions, etc. | under what conditions, etc. | |||
target_window_size: The average number of packets in flight (the | target_window_size: The average number of packets in flight (the | |||
window size) needed to meet the Target Data Rate, for the | window size) needed to meet the Target Data Rate for the specified | |||
specified Target RTT, and MTU. It implies the scale of the bursts | Target RTT and Target MTU. It implies the scale of the bursts | |||
that the network might experience. | that the network might experience. | |||
run length: A general term for the observed, measured, or specified | run length: A general term for the observed, measured, or specified | |||
number of packets that are (expected to be) delivered between | number of packets that are (expected to be) delivered between | |||
losses or ECN Congestion Experienced (CE) marks. Nominally one | losses or ECN CE marks. Nominally, it is one over the sum of the | |||
over the sum of the loss and ECN CE marking probabilities, if | loss and ECN CE marking probabilities, if they are independently | |||
there are independently and identically distributed. | and identically distributed. | |||
target_run_length: The target_run_length is an estimate of the | target_run_length: The target_run_length is an estimate of the | |||
minimum number of non-congestion marked packets needed between | minimum number of non-congestion marked packets needed between | |||
losses or ECN Congestion Experienced (CE) marks necessary to | losses or ECN CE marks necessary to attain the target_data_rate | |||
attain the target_data_rate over a path with the specified | over a path with the specified target_RTT and target_MTU, as | |||
target_RTT and target_MTU, as computed by a mathematical model of | computed by a mathematical model of TCP congestion control. A | |||
TCP congestion control. A reference calculation is shown in | reference calculation is shown in Section 5.2 and alternatives in | |||
Section 5.2 and alternatives in Appendix A | Appendix A. | |||
reference target_run_length: target_run_length computed precisely by | reference target_run_length: target_run_length computed precisely by | |||
the method in Section 5.2. This is likely to be slightly more | the method in Section 5.2. This is likely to be slightly more | |||
conservative than required by modern TCP implementations. | conservative than required by modern TCP implementations. | |||
Ancillary parameters used for some tests: | 3.5. Ancillary Parameters | |||
derating: Under some conditions the standard models are too | The following ancillary parameters are used for some tests: | |||
derating: Under some conditions, the standard models are too | ||||
conservative. The modeling framework permits some latitude in | conservative. The modeling framework permits some latitude in | |||
relaxing or "derating" some test parameters as described in | relaxing or "derating" some test parameters, as described in | |||
Section 5.3 in exchange for a more stringent TIDS validation | Section 5.3, in exchange for a more stringent TIDS validation | |||
procedures, described in Section 10. Models can be derated by | procedures, described in Section 10. Models can be derated by | |||
including a multiplicative derating factor to make tests less | including a multiplicative derating factor to make tests less | |||
stringent. | stringent. | |||
subpath_IP_capacity: The IP capacity of a specific subpath. | subpath_IP_capacity: The IP capacity of a specific subpath. | |||
test path: A subpath of a complete path under test. | test path: A subpath of a complete path under test. | |||
test_path_RTT: The RTT observed between two measurement points using | test_path_RTT: The RTT observed between two measurement points using | |||
packet sizes that are consistent with the transport protocol. | packet sizes that are consistent with the transport protocol. | |||
This is generally MTU sized packets of the forward path, | This is generally MTU-sized packets of the forward path and | |||
header_overhead sized packets on the return path. | packets with a size of header_overhead on the return path. | |||
test_path_pipe: The pipe size of a test path. Nominally the | ||||
test_path_pipe: The pipe size of a test path. Nominally, it is the | ||||
test_path_RTT times the test path IP_capacity. | test_path_RTT times the test path IP_capacity. | |||
test_window: The smallest window sufficient to meet or exceed the | test_window: The smallest window sufficient to meet or exceed the | |||
target_rate when operating with a pure self clock over a test | target_rate when operating with a pure self-clock over a test | |||
path. The test_window is typically given by | path. The test_window is typically calculated as follows (but see | |||
ceiling(target_data_rate*test_path_RTT/(target_MTU- | the discussion in Appendix B about the effects of channel | |||
header_overhead)) but see the discussion in Appendix B about the | scheduling on RTT): | |||
effects of channel scheduling on RTT. On some test paths the | ||||
test_window may need to be adjusted slightly to compensate for the | ceiling(target_data_rate * test_path_RTT / (target_MTU - | |||
RTT being inflated by the devices that schedule packets. | header_overhead)) | |||
On some test paths, the test_window may need to be adjusted | ||||
slightly to compensate for the RTT being inflated by the devices | ||||
that schedule packets. | ||||
3.6. Temporal Patterns for Test Streams | ||||
The terminology below is used to define temporal patterns for test | The terminology below is used to define temporal patterns for test | |||
stream. These patterns are designed to mimic TCP behavior, as | streams. These patterns are designed to mimic TCP behavior, as | |||
described in Section 4.1. | described in Section 4.1. | |||
packet headway: Time interval between packets, specified from the | packet headway: Time interval between packets, specified from the | |||
start of one to the start of the next. e.g. If packets are sent | start of one to the start of the next. For example, if packets | |||
with a 1 mS headway, there will be exactly 1000 packets per | are sent with a 1 ms headway, there will be exactly 1000 packets | |||
second. | per second. | |||
burst headway: Time interval between bursts, specified from the | burst headway: Time interval between bursts, specified from the | |||
start of the first packet one burst to the start of the first | start of the first packet of one burst to the start of the first | |||
packet of the next burst. e.g. If 4 packet bursts are sent with a | packet of the next burst. For example, if 4 packet bursts are | |||
1 mS burst headway, there will be exactly 4000 packets per second. | sent with a 1 ms burst headway, there will be exactly 4000 packets | |||
paced single packets: Send individual packets at the specified rate | per second. | |||
paced single packets: Individual packets sent at the specified rate | ||||
or packet headway. | or packet headway. | |||
paced bursts: Send bursts on a timer. Specify any 3 of: average | ||||
data rate, packet size, burst size (number of packets) and burst | paced bursts: Bursts on a timer. Specify any 3 of the following: | |||
headway (burst start to start). By default the bursts are assumed | average data rate, packet size, burst size (number of packets), | |||
to occur at full sender interface rate, such that the packet | and burst headway (burst start to start). By default, the bursts | |||
headway within each burst is the minimum supported by the sender's | are assumed to occur at full sender interface rate, such that the | |||
interface. Under some conditions it is useful to explicitly | packet headway within each burst is the minimum supported by the | |||
specify the packet headway within each burst. | sender's interface. Under some conditions, it is useful to | |||
slowstart rate: Mimic TCP slowstart by sending 4 packet paced bursts | explicitly specify the packet headway within each burst. | |||
at an average data rate equal to twice the implied bottleneck IP | ||||
capacity (but not more than the sender interface rate). This is a | slowstart rate: Paced bursts of four packets each at an average data | |||
two level burst pattern described in more detail in Section 6.1. | rate equal to twice the implied bottleneck IP capacity (but not | |||
If the implied bottleneck IP capacity is more than half of the | more than the sender interface rate). This mimics TCP slowstart. | |||
sender interface rate, slowstart rate becomes sender interface | This is a two-level burst pattern described in more detail in | |||
rate. | Section 6.1. If the implied bottleneck IP capacity is more than | |||
slowstart burst: Mimic one round of TCP slowstart by sending a | half of the sender interface rate, the slowstart rate becomes the | |||
specified number of packets packets in a two level burst pattern | sender interface rate. | |||
that resembles slowstart. | ||||
repeated slowstart bursts: Repeat Slowstart bursts once per | slowstart burst: A specified number of packets in a two-level burst | |||
target_RTT. For TCP each burst would be twice as large as the | pattern that resembles slowstart. This mimics one round of TCP | |||
slowstart. | ||||
repeated slowstart bursts: Slowstart bursts repeated once per | ||||
target_RTT. For TCP, each burst would be twice as large as the | ||||
prior burst, and the sequence would end at the first ECN CE mark | prior burst, and the sequence would end at the first ECN CE mark | |||
or lost packet. For measurement, all slowstart bursts would be | or lost packet. For measurement, all slowstart bursts would be | |||
the same size (nominally target_window_size but other sizes might | the same size (nominally, target_window_size but other sizes might | |||
be specified), and the ECN CE marks and lost packets are counted. | be specified), and the ECN CE marks and lost packets are counted. | |||
The tests described in this note can be grouped according to their | 3.7. Tests | |||
applicability. | ||||
The tests described in this document can be grouped according to | ||||
their applicability. | ||||
Capacity tests: Capacity tests determine if a network subpath has | Capacity tests: Capacity tests determine if a network subpath has | |||
sufficient capacity to deliver the Target Transport Performance. | sufficient capacity to deliver the Target Transport Performance. | |||
As long as the test stream is within the proper envelope for the | As long as the test stream is within the proper envelope for the | |||
Target Transport Performance, the average packet losses or ECN | Target Transport Performance, the average packet losses or ECN CE | |||
Congestion Experienced (CE) marks must be below the statistical | marks must be below the statistical criteria computed by the | |||
criteria computed by the model. As such, capacity tests reflect | model. As such, capacity tests reflect parameters that can | |||
parameters that can transition from passing to failing as a | transition from passing to failing as a consequence of cross | |||
consequence of cross traffic, additional presented load or the | traffic, additional presented load, or the actions of other | |||
actions of other network users. By definition, capacity tests | network users. By definition, capacity tests also consume | |||
also consume significant network resources (data capacity and/or | significant network resources (data capacity and/or queue buffer | |||
queue buffer space), and the test schedules must be balanced by | space), and the test schedules must be balanced by their cost. | |||
their cost. | ||||
Monitoring tests: Monitoring tests are designed to capture the most | Monitoring tests: Monitoring tests are designed to capture the most | |||
important aspects of a capacity test, but without presenting | important aspects of a capacity test without presenting excessive | |||
excessive ongoing load themselves. As such they may miss some | ongoing load themselves. As such, they may miss some details of | |||
details of the network's performance, but can serve as a useful | the network's performance but can serve as a useful reduced-cost | |||
reduced-cost proxy for a capacity test, for example to support | proxy for a capacity test, for example, to support continuous | |||
continuous production network monitoring. | production network monitoring. | |||
Engineering tests: Engineering tests evaluate how network algorithms | Engineering tests: Engineering tests evaluate how network algorithms | |||
(such as AQM and channel allocation) interact with TCP-style self | (such as Active Queue Management (AQM) and channel allocation) | |||
clocked protocols and adaptive congestion control based on packet | interact with TCP-style self-clocked protocols and adaptive | |||
loss and ECN Congestion Experienced (CE) marks. These tests are | congestion control based on packet loss and ECN CE marks. These | |||
likely to have complicated interactions with cross traffic and | tests are likely to have complicated interactions with cross | |||
under some conditions can be inversely sensitive to load. For | traffic and, under some conditions, can be inversely sensitive to | |||
example a test to verify that an AQM algorithm causes ECN CE marks | load. For example, a test to verify that an AQM algorithm causes | |||
or packet drops early enough to limit queue occupancy may | ECN CE marks or packet drops early enough to limit queue occupancy | |||
experience a false pass result in the presence of cross traffic. | may experience a false pass result in the presence of cross | |||
It is important that engineering tests be performed under a wide | traffic. It is important that engineering tests be performed | |||
range of conditions, including both in situ and bench testing, and | under a wide range of conditions, including both in situ and bench | |||
over a wide variety of load conditions. Ongoing monitoring is | testing, and over a wide variety of load conditions. Ongoing | |||
less likely to be useful for engineering tests, although sparse in | monitoring is less likely to be useful for engineering tests, | |||
situ testing might be appropriate. | although sparse in situ testing might be appropriate. | |||
4. Background | 4. Background | |||
At the time the "Framework for IP Performance Metrics" [RFC2330] was | When "Framework for IP Performance Metrics" [RFC2330] was published | |||
published (1998), sound Bulk Transport Capacity (BTC) measurement was | in 1998, sound Bulk Transport Capacity (BTC) measurement was known to | |||
known to be well beyond our capabilities. Even when Framework for | be well beyond our capabilities. Even when "A Framework for Defining | |||
Empirical BTC Metrics [RFC3148] was published, we knew that we didn't | Empirical Bulk Transfer Capacity Metrics" [RFC3148] was published, we | |||
really understand the problem. Now, by hindsight we understand why | knew that we didn't really understand the problem. Now, in | |||
assessing BTC is such a hard problem: | hindsight, we understand why assessing BTC is such a difficult | |||
problem: | ||||
o TCP is a control system with circular dependencies - everything | o TCP is a control system with circular dependencies -- everything | |||
affects performance, including components that are explicitly not | affects performance, including components that are explicitly not | |||
part of the test (for example, the host processing power is not | part of the test (for example, the host processing power is not | |||
in-scope of path performance tests). | in-scope of path performance tests). | |||
o Congestion control is a dynamic equilibrium process, similar to | o Congestion control is a dynamic equilibrium process, similar to | |||
processes observed in chemistry and other fields. The network and | processes observed in chemistry and other fields. The network and | |||
transport protocols find an operating point which balances between | transport protocols find an operating point that balances opposing | |||
opposing forces: the transport protocol pushing harder (raising | forces: the transport protocol pushing harder (raising the data | |||
the data rate and/or window) while the network pushes back | rate and/or window) while the network pushes back (raising packet | |||
(raising packet loss ratio, RTT and/or ECN CE marks). By design | loss ratio, RTT, and/or ECN CE marks). By design, TCP congestion | |||
TCP congestion control keeps raising the data rate until the | control keeps raising the data rate until the network gives some | |||
network gives some indication that its capacity has been exceeded | indication that its capacity has been exceeded by dropping packets | |||
by dropping packets or adding ECN CE marks. If a TCP sender | or adding ECN CE marks. If a TCP sender accurately fills a path | |||
accurately fills a path to its IP capacity, (e.g. the bottleneck | to its IP capacity (e.g., the bottleneck is 100% utilized), then | |||
is 100% utilized), then packet losses and ECN CE marks are mostly | packet losses and ECN CE marks are mostly determined by the TCP | |||
determined by the TCP sender and how aggressively it seeks | sender and how aggressively it seeks additional capacity; they are | |||
additional capacity, and not the network itself, since the network | not determined by the network itself, because the network must | |||
must send exactly the signals that TCP needs to set its rate. | send exactly the signals that TCP needs to set its rate. | |||
o TCP's ability to compensate for network impairments (such as loss, | o TCP's ability to compensate for network impairments (such as loss, | |||
delay and delay variation, outside of those caused by TCP itself) | delay, and delay variation, outside of those caused by TCP itself) | |||
is directly proportional to the number of send-ACK round trip | is directly proportional to the number of send-ACK round-trip | |||
exchanges per second (i.e. inversely proportional to the RTT). As | exchanges per second (i.e., inversely proportional to the RTT). | |||
a consequence an impaired subpath may pass a short RTT local test | As a consequence, an impaired subpath may pass a short RTT local | |||
even though it fails when the subpath is extended by an | test even though it fails when the subpath is extended by an | |||
effectively perfect network to some larger RTT. | effectively perfect network to some larger RTT. | |||
o TCP has an extreme form of the Observer Effect (colloquially know | ||||
as the Heisenberg effect). Measurement and cross traffic interact | o TCP has an extreme form of the Observer Effect (colloquially known | |||
in unknown and ill defined ways. The situation is actually worse | as the "Heisenberg Effect"). Measurement and cross traffic | |||
than the traditional physics problem where you can at least | interact in unknown and ill-defined ways. The situation is | |||
estimate bounds on the relative momentum of the measurement and | actually worse than the traditional physics problem where you can | |||
measured particles. For network measurement you can not in | at least estimate bounds on the relative momentum of the | |||
general determine even the order of magnitude of the effect. It | measurement and measured particles. In general, for network | |||
is possible to construct measurement scenarios where the | measurement, you cannot determine even the order of magnitude of | |||
measurement traffic starves real user traffic, yielding an overly | the effect. It is possible to construct measurement scenarios | |||
inflated measurement. The inverse is also possible: the user | where the measurement traffic starves real user traffic, yielding | |||
traffic can fill the network, such that the measurement traffic | an overly inflated measurement. The inverse is also possible: the | |||
detects only minimal available capacity. You can not in general | user traffic can fill the network, such that the measurement | |||
determine which scenario might be in effect, so you can not gauge | traffic detects only minimal available capacity. In general, you | |||
the relative magnitude of the uncertainty introduced by | cannot determine which scenario might be in effect, so you cannot | |||
gauge the relative magnitude of the uncertainty introduced by | ||||
interactions with other network traffic. | interactions with other network traffic. | |||
o As a consequence of the properties listed above it is difficult, | ||||
if not impossible, for two independent implementations (HW or SW) | o As a consequence of the properties listed above, it is difficult, | |||
of TCP congestion control to produce equivalent performance | if not impossible, for two independent implementations (hardware | |||
results [RFC6576] under the same network conditions, | or software) of TCP congestion control to produce equivalent | |||
performance results [RFC6576] under the same network conditions. | ||||
These properties are a consequence of the dynamic equilibrium | These properties are a consequence of the dynamic equilibrium | |||
behavior intrinsic to how all throughput maximizing protocols | behavior intrinsic to how all throughput-maximizing protocols | |||
interact with the Internet. These protocols rely on control systems | interact with the Internet. These protocols rely on control systems | |||
based on estimated network metrics to regulate the quantity of data | based on estimated network metrics to regulate the quantity of data | |||
to send into the network. The packet sending characteristics in turn | to send into the network. The packet-sending characteristics in turn | |||
alter the network properties estimated by the control system metrics, | alter the network properties estimated by the control system metrics, | |||
such that there are circular dependencies between every transmission | such that there are circular dependencies between every transmission | |||
characteristic and every estimated metric. Since some of these | characteristic and every estimated metric. Since some of these | |||
dependencies are nonlinear, the entire system is nonlinear, and any | dependencies are nonlinear, the entire system is nonlinear, and any | |||
change anywhere causes a difficult to predict response in network | change anywhere causes a difficult-to-predict response in network | |||
metrics. As a consequence Bulk Transport Capacity metrics have not | metrics. As a consequence, Bulk Transport Capacity metrics have not | |||
fulfilled the analytic framework envisioned in [RFC2330] | fulfilled the analytic framework envisioned in [RFC2330]. | |||
Model Based Metrics overcome these problems by making the measurement | Model-Based Metrics overcome these problems by making the measurement | |||
system open loop: the packet transfer statistics (akin to the network | system open loop: the packet transfer statistics (akin to the network | |||
estimators) do not affect the traffic or traffic patterns (bursts), | estimators) do not affect the traffic or traffic patterns (bursts), | |||
which are computed on the basis of the Target Transport Performance. | which are computed on the basis of the Target Transport Performance. | |||
A path or subpath meeting the Target Transfer Performance | A path or subpath meeting the Target Transfer Performance | |||
requirements would exhibit packet transfer statistics and estimated | requirements would exhibit packet transfer statistics and estimated | |||
metrics that would not cause the control system to slow the traffic | metrics that would not cause the control system to slow the traffic | |||
below the Target Data Rate. | below the Target Data Rate. | |||
4.1. TCP properties | 4.1. TCP Properties | |||
TCP and other self clocked protocols (e.g. SCTP) carry the vast | TCP and other self-clocked protocols (e.g., the Stream Control | |||
majority of all Internet data. Their dominant bulk data transport | Transmission Protocol (SCTP)) carry the vast majority of all Internet | |||
behavior is to have an approximately fixed quantity of data and | data. Their dominant bulk data transport behavior is to have an | |||
acknowledgments (ACKs) circulating in the network. The data receiver | approximately fixed quantity of data and acknowledgments (ACKs) | |||
reports arriving data by returning ACKs to the data sender, the data | circulating in the network. The data receiver reports arriving data | |||
sender typically responds by sending approximately the same quantity | by returning ACKs to the data sender, and the data sender typically | |||
of data back into the network. The total quantity of data plus the | responds by sending approximately the same quantity of data back into | |||
data represented by ACKs circulating in the network is referred to as | the network. The total quantity of data plus the data represented by | |||
the window. The mandatory congestion control algorithms | ACKs circulating in the network is referred to as the "window". The | |||
incrementally adjust the window by sending slightly more or less data | mandatory congestion control algorithms incrementally adjust the | |||
in response to each ACK. The fundamentally important property of | window by sending slightly more or less data in response to each ACK. | |||
this system is that it is self clocked: The data transmissions are a | The fundamentally important property of this system is that it is | |||
reflection of the ACKs that were delivered by the network, the ACKs | self-clocked: the data transmissions are a reflection of the ACKs | |||
are a reflection of the data arriving from the network. | that were delivered by the network, and the ACKs are a reflection of | |||
the data arriving from the network. | ||||
A number of protocol features cause bursts of data, even in idealized | A number of protocol features cause bursts of data, even in idealized | |||
networks that can be modeled as simple queuing systems. | networks that can be modeled as simple queuing systems. | |||
During slowstart the IP rate is doubled on each RTT by sending twice | During slowstart, the IP rate is doubled on each RTT by sending twice | |||
as much data as was delivered to the receiver during the prior RTT. | as much data as was delivered to the receiver during the prior RTT. | |||
Each returning ACK causes the sender to transmit twice the data the | Each returning ACK causes the sender to transmit twice the data the | |||
ACK reported arriving at the receiver. For slowstart to be able to | ACK reported arriving at the receiver. For slowstart to be able to | |||
fill the pipe, the network must be able to tolerate slowstart bursts | fill the pipe, the network must be able to tolerate slowstart bursts | |||
up to the full pipe size inflated by the anticipated window reduction | up to the full pipe size inflated by the anticipated window reduction | |||
on the first loss or ECN CE mark. For example, with classic Reno | on the first loss or ECN CE mark. For example, with classic Reno | |||
congestion control, an optimal slowstart has to end with a burst that | congestion control, an optimal slowstart has to end with a burst that | |||
is twice the bottleneck rate for one RTT in duration. This burst | is twice the bottleneck rate for one RTT in duration. This burst | |||
causes a queue which is equal to the pipe size (i.e. the window is | causes a queue that is equal to the pipe size (i.e., the window is | |||
twice the pipe size) so when the window is halved in response to the | twice the pipe size), so when the window is halved in response to the | |||
first packet loss, the new window will be the pipe size. | first packet loss, the new window will be the pipe size. | |||
Note that if the bottleneck IP rate is less that half of the capacity | Note that if the bottleneck IP rate is less than half of the capacity | |||
of the front path (which is almost always the case), the slowstart | of the front path (which is almost always the case), the slowstart | |||
bursts will not by themselves cause significant queues anywhere else | bursts will not by themselves cause significant queues anywhere else | |||
along the front path; they primarily exercise the queue at the | along the front path; they primarily exercise the queue at the | |||
dominant bottleneck. | dominant bottleneck. | |||
Several common efficiency algorithms also cause bursts. The self | Several common efficiency algorithms also cause bursts. The self- | |||
clock is typically applied to groups of packets: the receiver's | clock is typically applied to groups of packets: the receiver's | |||
delayed ACK algorithm generally sends only one ACK per two data | delayed ACK algorithm generally sends only one ACK per two data | |||
segments. Furthermore the modern senders use TCP segmentation | segments. Furthermore, modern senders use TCP segmentation offload | |||
offload (TSO) to reduce CPU overhead. The sender's software stack | (TSO) to reduce CPU overhead. The sender's software stack builds | |||
builds super sized TCP segments that the TSO hardware splits into MTU | super-sized TCP segments that the TSO hardware splits into MTU-sized | |||
sized segments on the wire. The net effect of TSO, delayed ACK and | segments on the wire. The net effect of TSO, delayed ACK, and other | |||
other efficiency algorithms is to send bursts of segments at full | efficiency algorithms is to send bursts of segments at full sender | |||
sender interface rate. | interface rate. | |||
Note that these efficiency algorithms are almost always in effect, | Note that these efficiency algorithms are almost always in effect, | |||
including during slowstart, such that slowstart typically has a two | including during slowstart, such that slowstart typically has a two- | |||
level burst structure. Section 6.1 describes slowstart in more | level burst structure. Section 6.1 describes slowstart in more | |||
detail. | detail. | |||
Additional sources of bursts include TCP's initial window [RFC6928], | Additional sources of bursts include TCP's initial window [RFC6928], | |||
application pauses, channel allocation mechanisms and network devices | application pauses, channel allocation mechanisms, and network | |||
that schedule ACKs. Appendix B describes these last two items. If | devices that schedule ACKs. Appendix B describes these last two | |||
the application pauses (stops reading or writing data) for some | items. If the application pauses (e.g., stops reading or writing | |||
fraction of an RTT, many TCP implementations catch up to their | data) for some fraction of an RTT, many TCP implementations catch up | |||
earlier window size by sending a burst of data at the full sender | to their earlier window size by sending a burst of data at the full | |||
interface rate. To fill a network with a realistic application, the | sender interface rate. To fill a network with a realistic | |||
network has to be able to tolerate sender interface rate bursts large | application, the network has to be able to tolerate sender interface | |||
enough to restore the prior window following application pauses. | rate bursts large enough to restore the prior window following | |||
application pauses. | ||||
Although the sender interface rate bursts are typically smaller than | Although the sender interface rate bursts are typically smaller than | |||
the last burst of a slowstart, they are at a higher IP rate so they | the last burst of a slowstart, they are at a higher IP rate so they | |||
potentially exercise queues at arbitrary points along the front path | potentially exercise queues at arbitrary points along the front path | |||
from the data sender up to and including the queue at the dominant | from the data sender up to and including the queue at the dominant | |||
bottleneck. It is known that these bursts can hurt network | bottleneck. It is known that these bursts can hurt network | |||
performance, especially in conjunction with other queue pressure, | performance, especially in conjunction with other queue pressure; | |||
however we are not aware of any models for how frequent sender rate | however, we are not aware of any models for estimating the impact or | |||
bursts the network should be able to tolerate at various burst sizes. | prescribing limits on the size or frequency of sender rate bursts. | |||
In conclusion, to verify that a path can meet a Target Transport | In conclusion, to verify that a path can meet a Target Transport | |||
Performance, it is necessary to independently confirm that the path | Performance, it is necessary to independently confirm that the path | |||
can tolerate bursts at the scales that can be caused by the above | can tolerate bursts at the scales that can be caused by the above | |||
mechanisms. Three cases are believed to be sufficient: | mechanisms. Three cases are believed to be sufficient: | |||
o Two level slowstart bursts sufficient to get connections started | o Two-level slowstart bursts sufficient to get connections started | |||
properly. | properly. | |||
o Ubiquitous sender interface rate bursts caused by efficiency | o Ubiquitous sender interface rate bursts caused by efficiency | |||
algorithms. We assume 4 packet bursts to be the most common case, | algorithms. We assume four packet bursts to be the most common | |||
since it matches the effects of delayed ACK during slowstart. | case, since it matches the effects of delayed ACK during | |||
These bursts should be assumed not to significantly affect packet | slowstart. These bursts should be assumed not to significantly | |||
transfer statistics. | affect packet transfer statistics. | |||
o Infrequent sender interface rate bursts that are the maximum of | o Infrequent sender interface rate bursts that are the maximum of | |||
the full target_window_size and the initial window size (10 | the full target_window_size and the initial window size (10 | |||
segments in [RFC6928]). The Target_run_length may be derated for | segments in [RFC6928]). The target_run_length may be derated for | |||
these large fast bursts. | these large fast bursts. | |||
If a subpath can meet the required packet loss ratio for bursts at | If a subpath can meet the required packet loss ratio for bursts at | |||
all of these scales then it has sufficient buffering at all potential | all of these scales, then it has sufficient buffering at all | |||
bottlenecks to tolerate any of the bursts that are likely introduced | potential bottlenecks to tolerate any of the bursts that are likely | |||
by TCP or other transport protocols. | introduced by TCP or other transport protocols. | |||
4.2. Diagnostic Approach | 4.2. Diagnostic Approach | |||
A complete path of a given RTT and MTU, which are equal to or smaller | A complete path is expected to be able to attain a specified Bulk | |||
than the Target RTT and equal to or larger than the Target MTU | Transport Capacity if the path's RTT is equal to or smaller than the | |||
respectively, is expected to be able to attain a specified Bulk | Target RTT, the path's MTU is equal to or larger than the Target MTU, | |||
Transport Capacity when all of the following conditions are met: | and all of the following conditions are met: | |||
1. The IP capacity is above the Target Data Rate by sufficient | 1. The IP capacity is above the Target Data Rate by a sufficient | |||
margin to cover all TCP/IP overheads. This can be confirmed by | margin to cover all TCP/IP overheads. This can be confirmed by | |||
the tests described in Section 8.1 or any number of IP capacity | the tests described in Section 8.1 or any number of IP capacity | |||
tests adapted to implement MBM. | tests adapted to implement MBM. | |||
2. The observed packet transfer statistics are better than required | 2. The observed packet transfer statistics are better than required | |||
by a suitable TCP performance model (e.g. fewer packet losses or | by a suitable TCP performance model (e.g., fewer packet losses or | |||
ECN CE marks). See Section 8.1 or any number of low or fixed | ECN CE marks). See Section 8.1 or any number of low- or fixed- | |||
rate packet loss tests outside of MBM. | rate packet loss tests outside of MBM. | |||
3. There is sufficient buffering at the dominant bottleneck to | 3. There is sufficient buffering at the dominant bottleneck to | |||
absorb a slowstart bursts large enough to get the flow out of | absorb a slowstart burst large enough to get the flow out of | |||
slowstart at a suitable window size. See Section 8.3. | slowstart at a suitable window size. See Section 8.3. | |||
4. There is sufficient buffering in the front path to absorb and | 4. There is sufficient buffering in the front path to absorb and | |||
smooth sender interface rate bursts at all scales that are likely | smooth sender interface rate bursts at all scales that are likely | |||
to be generated by the application, any channel arbitration in | to be generated by the application, any channel arbitration in | |||
the ACK path or any other mechanisms. See Section 8.4. | the ACK path, or any other mechanisms. See Section 8.4. | |||
5. When there is a slowly rising standing queue at the bottleneck | ||||
the onset of packet loss has to be at an appropriate point (time | 5. When there is a slowly rising standing queue at the bottleneck, | |||
or queue depth) and progressive [RFC7567]. See Section 8.2. | then the onset of packet loss has to be at an appropriate point | |||
(in time or in queue depth) and has to be progressive, for | ||||
example, by use of Active Queue Management [RFC7567]. See | ||||
Section 8.2. | ||||
6. When there is a standing queue at a bottleneck for a shared media | 6. When there is a standing queue at a bottleneck for a shared media | |||
subpath (e.g. half duplex), there must be a suitable bounds on | subpath (e.g., a half-duplex link), there must be a suitable | |||
the interaction between ACKs and data, for example due to the | bound on the interaction between ACKs and data, for example, due | |||
channel arbitration mechanism. See Section 8.2.4. | to the channel arbitration mechanism. See Section 8.2.4. | |||
Note that conditions 1 through 4 require capacity tests for | Note that conditions 1 through 4 require capacity tests for | |||
validation, and thus may need to be monitored on an ongoing basis. | validation and thus may need to be monitored on an ongoing basis. | |||
Conditions 5 and 6 require engineering tests, which are best | Conditions 5 and 6 require engineering tests, which are best | |||
performed in controlled environments such as a bench test. They | performed in controlled environments (e.g., bench tests). They won't | |||
won't generally fail due to load, but may fail in the field due to | generally fail due to load but may fail in the field (e.g., due to | |||
configuration errors, etc. and should be spot checked. | configuration errors, etc.) and thus should be spot checked. | |||
A tool that can perform many of the tests is available from | A tool that can perform many of the tests is available from | |||
[MBMSource]. | [MBMSource]. | |||
4.3. New requirements relative to RFC 2330 | 4.3. New Requirements Relative to RFC 2330 | |||
Model Based Metrics are designed to fulfill some additional | Model-Based Metrics are designed to fulfill some additional | |||
requirements that were not recognized at the time RFC 2330 was | requirements that were not recognized at the time RFC 2330 [RFC2330] | |||
written [RFC2330]. These missing requirements may have significantly | was published. These missing requirements may have significantly | |||
contributed to policy difficulties in the IP measurement space. Some | contributed to policy difficulties in the IP measurement space. Some | |||
additional requirements are: | additional requirements are: | |||
o IP metrics must be actionable by the ISP - they have to be | o IP metrics must be actionable by the ISP -- they have to be | |||
interpreted in terms of behaviors or properties at the IP or lower | interpreted in terms of behaviors or properties at the IP or lower | |||
layers, that an ISP can test, repair and verify. | layers that an ISP can test, repair, and verify. | |||
o Metrics should be spatially composable, such that measures of | o Metrics should be spatially composable, such that measures of | |||
concatenated paths should be predictable from subpaths. | concatenated paths should be predictable from subpaths. | |||
o Metrics must be vantage point invariant over a significant range | o Metrics must be vantage point invariant over a significant range | |||
of measurement point choices, including off path measurement | of measurement point choices, including off-path measurement | |||
points. The only requirements on MP selection should be that the | points. The only requirements for Measurement Point (MP) | |||
RTT between the MPs is below some reasonable bound, and that the | selection should be that the RTT between the MPs is below some | |||
effects of the "test leads" connecting MPs to the subpath under | reasonable bound and that the effects of the "test leads" | |||
test can be can be calibrated out of the measurements. The latter | connecting MPs to the subpath under test can be calibrated out of | |||
might be be accomplished if the test leads are effectively ideal | the measurements. The latter might be accomplished if the test | |||
or their properties can be deducted from the measurements between | leads are effectively ideal or their properties can be deducted | |||
the MPs. While many of tests require that the test leads have at | from the measurements between the MPs. While many tests require | |||
least as much IP capacity as the subpath under test, some do not, | that the test leads have at least as much IP capacity as the | |||
for example Background Packet Transfer Tests described in | subpath under test, some do not, for example, the Background | |||
Section 8.1.3. | Packet Transfer Statistics Tests described in Section 8.1.3. | |||
o Metric measurements should be repeatable by multiple parties with | o Metric measurements should be repeatable by multiple parties with | |||
no specialized access to MPs or diagnostic infrastructure. It | no specialized access to MPs or diagnostic infrastructure. It | |||
should be possible for different parties to make the same | should be possible for different parties to make the same | |||
measurement and observe the same results. In particular it is | measurement and observe the same results. In particular, it is | |||
specifically important that both a consumer (or their delegate) | important that both a consumer (or the consumer's delegate) and | |||
and ISP be able to perform the same measurement and get the same | ISP be able to perform the same measurement and get the same | |||
result. Note that vantage independence is key to meeting this | result. Note that vantage independence is key to meeting this | |||
requirement. | requirement. | |||
5. Common Models and Parameters | 5. Common Models and Parameters | |||
5.1. Target End-to-end parameters | 5.1. Target End-to-End Parameters | |||
The target end-to-end parameters are the Target Data Rate, Target RTT | The target end-to-end parameters are the Target Data Rate, Target | |||
and Target MTU as defined in Section 3. These parameters are | RTT, and Target MTU as defined in Section 3. These parameters are | |||
determined by the needs of the application or the ultimate end user | determined by the needs of the application or the ultimate end user | |||
and the complete Internet path over which the application is expected | and the complete Internet path over which the application is expected | |||
to operate. The target parameters are in units that make sense to | to operate. The target parameters are in units that make sense to | |||
upper layers: payload bytes delivered to the application, above TCP. | layers above the TCP layer: payload bytes delivered to the | |||
They exclude overheads associated with TCP and IP headers, | application. They exclude overheads associated with TCP and IP | |||
retransmits and other protocols (e.g. DNS). Note that IP-based | headers, retransmits and other protocols (e.g., DNS). Note that | |||
network services include TCP headers and retransmissions as part of | IP-based network services include TCP headers and retransmissions as | |||
delivered payload, and this difference is recognized in calculations | part of delivered payload; this difference (header_overhead) is | |||
below (header_overhead). | recognized in calculations below. | |||
Other end-to-end parameters defined in Section 3 include the | Other end-to-end parameters defined in Section 3 include the | |||
effective bottleneck data rate, the sender interface data rate and | effective bottleneck data rate, the sender interface data rate, and | |||
the TCP and IP header sizes. | the TCP and IP header sizes. | |||
The target_data_rate must be smaller than all subpath IP capacities | The target_data_rate must be smaller than all subpath IP capacities | |||
by enough headroom to carry the transport protocol overhead, | by enough headroom to carry the transport protocol overhead, | |||
explicitly including retransmissions and an allowance for | explicitly including retransmissions and an allowance for | |||
fluctuations in TCP's actual data rate. Specifying a | fluctuations in TCP's actual data rate. Specifying a | |||
target_data_rate with insufficient headroom is likely to result in | target_data_rate with insufficient headroom is likely to result in | |||
brittle measurements having little predictive value. | brittle measurements that have little predictive value. | |||
Note that the target parameters can be specified for a hypothetical | Note that the target parameters can be specified for a hypothetical | |||
path, for example to construct TIDS designed for bench testing in the | path (for example, to construct TIDS designed for bench testing in | |||
absence of a real application; or for a live in situ test of | the absence of a real application) or for a live in situ test of | |||
production infrastructure. | production infrastructure. | |||
The number of concurrent connections is explicitly not a parameter to | The number of concurrent connections is explicitly not a parameter in | |||
this model. If a subpath requires multiple connections in order to | this model. If a subpath requires multiple connections in order to | |||
meet the specified performance, that must be stated explicitly and | meet the specified performance, that must be stated explicitly, and | |||
the procedure described in Section 6.4 applies. | the procedure described in Section 6.4 applies. | |||
5.2. Common Model Calculations | 5.2. Common Model Calculations | |||
The Target Transport Performance is used to derive the | The Target Transport Performance is used to derive the | |||
target_window_size and the reference target_run_length. | target_window_size and the reference target_run_length. | |||
The target_window_size, is the average window size in packets needed | The target_window_size is the average window size in packets needed | |||
to meet the target_rate, for the specified target_RTT and target_MTU. | to meet the target_rate, for the specified target_RTT and target_MTU. | |||
It is given by: | To calculate target_window_size: | |||
target_window_size = ceiling( target_rate * target_RTT / ( target_MTU | ||||
- header_overhead ) ) | ||||
Target_run_length is an estimate of the minimum required number of | target_window_size = ceiling(target_rate * target_RTT / (target_MTU - | |||
unmarked packets that must be delivered between losses or ECN | header_overhead)) | |||
Congestion Experienced (CE) marks, as computed by a mathematical | The target_run_length is an estimate of the minimum required number | |||
model of TCP congestion control. The derivation here follows | of unmarked packets that must be delivered between losses or ECN CE | |||
[MSMO97], and by design is quite conservative. | marks, as computed by a mathematical model of TCP congestion control. | |||
The derivation here is parallel to the derivation in [MSMO97] and, by | ||||
design, is quite conservative. | ||||
Reference target_run_length is derived as follows: assume the | The reference target_run_length is derived as follows. Assume the | |||
subpath_IP_capacity is infinitesimally larger than the | subpath_IP_capacity is infinitesimally larger than the | |||
target_data_rate plus the required header_overhead. Then | target_data_rate plus the required header_overhead. Then, | |||
target_window_size also predicts the onset of queuing. A larger | target_window_size also predicts the onset of queuing. A larger | |||
window will cause a standing queue at the bottleneck. | window will cause a standing queue at the bottleneck. | |||
Assume the transport protocol is using standard Reno style Additive | Assume the transport protocol is using standard Reno-style Additive | |||
Increase, Multiplicative Decrease (AIMD) congestion control [RFC5681] | Increase Multiplicative Decrease (AIMD) congestion control [RFC5681] | |||
(but not Appropriate Byte Counting [RFC3465]) and the receiver is | (but not Appropriate Byte Counting [RFC3465]) and the receiver is | |||
using standard delayed ACKs. Reno increases the window by one packet | using standard delayed ACKs. Reno increases the window by one packet | |||
every pipe_size worth of ACKs. With delayed ACKs this takes 2 Round | every pipe size worth of ACKs. With delayed ACKs, this takes two | |||
Trip Times per increase. To exactly fill the pipe, the spacing of | RTTs per increase. To exactly fill the pipe, the spacing of losses | |||
losses must be no closer than when the peak of the AIMD sawtooth | must be no closer than when the peak of the AIMD sawtooth reached | |||
reached exactly twice the target_window_size. Otherwise, the | exactly twice the target_window_size. Otherwise, the multiplicative | |||
multiplicative window reduction triggered by the loss would cause the | window reduction triggered by the loss would cause the network to be | |||
network to be under-filled. Following [MSMO97] the number of packets | underfilled. Per [MSMO97] the number of packets between losses must | |||
between losses must be the area under the AIMD sawtooth. They must | be the area under the AIMD sawtooth. They must be no more frequent | |||
be no more frequent than every 1 in | than every 1 in ((3/2)*target_window_size)*(2*target_window_size) | |||
((3/2)*target_window_size)*(2*target_window_size) packets, which | packets, which simplifies to: | |||
simplifies to: | ||||
target_run_length = 3*(target_window_size^2) | target_run_length = 3*(target_window_size^2) | |||
Note that this calculation is very conservative and is based on a | Note that this calculation is very conservative and is based on a | |||
number of assumptions that may not apply. Appendix A discusses these | number of assumptions that may not apply. Appendix A discusses these | |||
assumptions and provides some alternative models. If a different | assumptions and provides some alternative models. If a different | |||
model is used, a FS-TIDS must document the actual method for | model is used, an FSTIDS must document the actual method for | |||
computing target_run_length and ratio between alternate | computing target_run_length and the ratio between alternate | |||
target_run_length and the reference target_run_length calculated | target_run_length and the reference target_run_length calculated | |||
above, along with a discussion of the rationale for the underlying | above, along with a discussion of the rationale for the underlying | |||
assumptions. | assumptions. | |||
These two parameters, target_window_size and target_run_length, | Most of the individual parameters for the tests in Section 8 are | |||
directly imply most of the individual parameters for the tests in | derived from target_window_size and target_run_length. | |||
Section 8. | ||||
5.3. Parameter Derating | 5.3. Parameter Derating | |||
Since some aspects of the models are very conservative, the MBM | Since some aspects of the models are very conservative, the MBM | |||
framework permits some latitude in derating test parameters. Rather | framework permits some latitude in derating test parameters. Rather | |||
than trying to formalize more complicated models we permit some test | than trying to formalize more complicated models, we permit some test | |||
parameters to be relaxed as long as they meet some additional | parameters to be relaxed as long as they meet some additional | |||
procedural constraints: | procedural constraints: | |||
o The FS-TIDS must document and justify the actual method used to | o The FSTIDS must document and justify the actual method used to | |||
compute the derated metric parameters. | compute the derated metric parameters. | |||
o The validation procedures described in Section 10 must be used to | o The validation procedures described in Section 10 must be used to | |||
demonstrate the feasibility of meeting the Target Transport | demonstrate the feasibility of meeting the Target Transport | |||
Performance with infrastructure that just barely passes the | Performance with infrastructure that just barely passes the | |||
derated tests. | derated tests. | |||
o The validation process for a FS-TIDS itself must be documented is | ||||
o The validation process for an FSTIDS itself must be documented in | ||||
such a way that other researchers can duplicate the validation | such a way that other researchers can duplicate the validation | |||
experiments. | experiments. | |||
Except as noted, all tests below assume no derating. Tests where | Except as noted, all tests below assume no derating. Tests for which | |||
there is not currently a well established model for the required | there is not currently a well-established model for the required | |||
parameters explicitly include derating as a way to indicate | parameters explicitly include derating as a way to indicate | |||
flexibility in the parameters. | flexibility in the parameters. | |||
5.4. Test Preconditions | 5.4. Test Preconditions | |||
Many tests have preconditions which are required to assure their | Many tests have preconditions that are required to assure their | |||
validity. Examples include: the presence or non-presence of cross | validity. Examples include the presence or non-presence of cross | |||
traffic on specific subpaths; negotiating ECN; and appropriate | traffic on specific subpaths; negotiating ECN; and a test stream | |||
preamble packet stream to testing to put reactive network elements | preamble of appropriate length to achieve stable access to network | |||
into the proper states [RFC7312]. If preconditions are not properly | resources in the presence of reactive network elements (as defined in | |||
Section 1.1 of [RFC7312]). If preconditions are not properly | ||||
satisfied for some reason, the tests should be considered to be | satisfied for some reason, the tests should be considered to be | |||
inconclusive. In general it is useful to preserve diagnostic | inconclusive. In general, it is useful to preserve diagnostic | |||
information as to why the preconditions were not met, and any test | information as to why the preconditions were not met and any test | |||
data that was collected even if it is not useful for the intended | data that was collected even if it is not useful for the intended | |||
test. Such diagnostic information and partial test data may be | test. Such diagnostic information and partial test data may be | |||
useful for improving the test or test procedures themselves. | useful for improving the test or test procedures themselves. | |||
It is important to preserve the record that a test was scheduled, | It is important to preserve the record that a test was scheduled; | |||
because otherwise precondition enforcement mechanisms can introduce | otherwise, precondition enforcement mechanisms can introduce sampling | |||
sampling bias. For example, canceling tests due to cross traffic on | bias. For example, canceling tests due to cross traffic on | |||
subscriber access links might introduce sampling bias in tests of the | subscriber access links might introduce sampling bias in tests of the | |||
rest of the network by reducing the number of tests during peak | rest of the network by reducing the number of tests during peak | |||
network load. | network load. | |||
Test preconditions and failure actions must be specified in a FS- | Test preconditions and failure actions must be specified in an | |||
TIDS. | FSTIDS. | |||
6. Generating test streams | 6. Generating Test Streams | |||
Many important properties of Model Based Metrics, such as vantage | Many important properties of Model-Based Metrics, such as vantage | |||
independence, are a consequence of using test streams that have | independence, are a consequence of using test streams that have | |||
temporal structures that mimic TCP or other transport protocols | temporal structures that mimic TCP or other transport protocols | |||
running over a complete path. As described in Section 4.1, self | running over a complete path. As described in Section 4.1, self- | |||
clocked protocols naturally have burst structures related to the RTT | clocked protocols naturally have burst structures related to the RTT | |||
and pipe size of the complete path. These bursts naturally get | and pipe size of the complete path. These bursts naturally get | |||
larger (contain more packets) as either the Target RTT or Target Data | larger (contain more packets) as either the Target RTT or Target Data | |||
Rate get larger, or the Target MTU gets smaller. An implication of | Rate get larger or the Target MTU gets smaller. An implication of | |||
these relationships is that test streams generated by running self | these relationships is that test streams generated by running self- | |||
clocked protocols over short subpaths may not adequately exercise the | clocked protocols over short subpaths may not adequately exercise the | |||
queuing at any bottleneck to determine if the subpath can support the | queuing at any bottleneck to determine if the subpath can support the | |||
full Target Transport Performance over the complete path. | full Target Transport Performance over the complete path. | |||
Failing to authentically mimic TCP's temporal structure is part of | Failing to authentically mimic TCP's temporal structure is part of | |||
the reason why simple performance tools such as iPerf, netperf, nc, | the reason why simple performance tools such as iPerf, netperf, nc, | |||
etc have the reputation of yielding false pass results over short | etc., have the reputation for yielding false pass results over short | |||
test paths, even when some subpath has a flaw. | test paths, even when a subpath has a flaw. | |||
The definitions in Section 3 are sufficient for most test streams. | The definitions in Section 3 are sufficient for most test streams. | |||
We describe the slowstart and standing queue test streams in more | We describe the slowstart and standing queue test streams in more | |||
detail. | detail. | |||
In conventional measurement practice stochastic processes are used to | In conventional measurement practice, stochastic processes are used | |||
eliminate many unintended correlations and sample biases. However | to eliminate many unintended correlations and sample biases. | |||
MBM tests are designed to explicitly mimic temporal correlations | However, MBM tests are designed to explicitly mimic temporal | |||
caused by network or protocol elements themselves. Some portions of | correlations caused by network or protocol elements themselves. Some | |||
these systems, such as traffic arrival (test scheduling) are | portions of these systems, such as traffic arrival (e.g., test | |||
naturally stochastic. Other behaviors, such as back-to-back packet | scheduling), are naturally stochastic. Other behaviors, such as | |||
transmissions, are dominated by implementation specific deterministic | back-to-back packet transmissions, are dominated by implementation- | |||
effects. Although these behaviors always contain non-deterministic | specific deterministic effects. Although these behaviors always | |||
elements and might be modeled stochastically, these details typically | contain non-deterministic elements and might be modeled | |||
do not contribute significantly to the overall system behavior. | stochastically, these details typically do not contribute | |||
Furthermore, it is known that real protocols are subject to failures | significantly to the overall system behavior. Furthermore, it is | |||
caused by network property estimators suffering from bias due to | known that real protocols are subject to failures caused by network | |||
correlation in their own traffic. For example TCP's RTT estimator | property estimators suffering from bias due to correlation in their | |||
used to determine the Retransmit Time Out (RTO), can be fooled by | own traffic. For example, TCP's RTT estimator used to determine the | |||
periodic cross traffic or start-stop applications. For these reasons | Retransmit Timeout (RTO), can be fooled by periodic cross traffic or | |||
many details of the test streams are specified deterministically. | start-stop applications. For these reasons, many details of the test | |||
streams are specified deterministically. | ||||
It may prove useful to introduce fine grained noise sources into the | It may prove useful to introduce fine-grained noise sources into the | |||
models used for generating test streams in an update of Model Based | models used for generating test streams in an update of Model-Based | |||
Metrics, but the complexity is not warranted at the time this | Metrics, but the complexity is not warranted at the time this | |||
document was written. | document was written. | |||
6.1. Mimicking slowstart | 6.1. Mimicking Slowstart | |||
TCP slowstart has a two level burst structure as shown in Figure 2. | TCP slowstart has a two-level burst structure as shown in Figure 2. | |||
The fine time structure is caused by efficiency algorithms that | The fine time structure is caused by efficiency algorithms that | |||
deliberately batch work (CPU, channel allocation, etc) to better | deliberately batch work (CPU, channel allocation, etc.) to better | |||
amortize certain network and host overheads. ACKs passing through | amortize certain network and host overheads. ACKs passing through | |||
the return path typically cause the sender to transmit small bursts | the return path typically cause the sender to transmit small bursts | |||
of data at full sender interface rate. For example TCP Segmentation | of data at the full sender interface rate. For example, TCP | |||
Offload (TSO) and Delayed Acknowledgment both contribute to this | Segmentation Offload (TSO) and Delayed Acknowledgment both contribute | |||
effect. During slowstart these bursts are at the same headway as the | to this effect. During slowstart, these bursts are at the same | |||
returning ACKs, but are typically twice as large (e.g. having twice | headway as the returning ACKs but are typically twice as large (e.g., | |||
as much data) as the ACK reported was delivered to the receiver. Due | have twice as much data) as the ACK reported was delivered to the | |||
to variations in delayed ACK and algorithms such as Appropriate Byte | receiver. Due to variations in delayed ACK and algorithms such as | |||
Counting [RFC3465], different pairs of senders and receivers produce | Appropriate Byte Counting [RFC3465], different pairs of senders and | |||
slightly different burst patterns. Without loss of generality, we | receivers produce slightly different burst patterns. Without loss of | |||
assume each ACK causes 4 packet sender interface rate bursts at an | generality, we assume each ACK causes four packet sender interface | |||
average headway equal to the ACK headway, and corresponding to | rate bursts at an average headway equal to the ACK headway; this | |||
sending at an average rate equal to twice the effective bottleneck IP | corresponds to sending at an average rate equal to twice the | |||
rate. Each slowstart burst consists of a series of 4 packet sender | effective bottleneck IP rate. Each slowstart burst consists of a | |||
interface rate bursts such that the total number of packets is the | series of four packet sender interface rate bursts such that the | |||
current window size (as of the last packet in the burst). | total number of packets is the current window size (as of the last | |||
packet in the burst). | ||||
The coarse time structure is due to each RTT being a reflection of | The coarse time structure is due to each RTT being a reflection of | |||
the prior RTT. For real transport protocols, each slowstart burst is | the prior RTT. For real transport protocols, each slowstart burst is | |||
twice as large (twice the window) as the previous burst but is spread | twice as large (twice the window) as the previous burst but is spread | |||
out in time by the network bottleneck, such that each successive RTT | out in time by the network bottleneck, such that each successive RTT | |||
exhibits the same effective bottleneck IP rate. The slowstart phase | exhibits the same effective bottleneck IP rate. The slowstart phase | |||
ends on the first lost packet or ECN mark, which is intended to | ends on the first lost packet or ECN mark, which is intended to | |||
happen after successive slowstart bursts merge in time: the next | happen after successive slowstart bursts merge in time: the next | |||
burst starts before the bottleneck queue is fully drained and the | burst starts before the bottleneck queue is fully drained and the | |||
prior burst is complete. | prior burst is complete. | |||
For diagnostic tests described below we preserve the fine time | For the diagnostic tests described below, we preserve the fine time | |||
structure but manipulate the coarse structure of the slowstart bursts | structure but manipulate the coarse structure of the slowstart bursts | |||
(burst size and headway) to measure the ability of the dominant | (burst size and headway) to measure the ability of the dominant | |||
bottleneck to absorb and smooth slowstart bursts. | bottleneck to absorb and smooth slowstart bursts. | |||
Note that a stream of repeated slowstart bursts has three different | Note that a stream of repeated slowstart bursts has three different | |||
average rates, depending on the averaging time interval. At the | average rates, depending on the averaging time interval. At the | |||
finest time scale (a few packet times at the sender interface) the | finest timescale (a few packet times at the sender interface), the | |||
peak of the average IP rate is the same as the sender interface rate; | peak of the average IP rate is the same as the sender interface rate; | |||
at a medium timescale (a few ACK times at the dominant bottleneck) | at a medium timescale (a few ACK times at the dominant bottleneck), | |||
the peak of the average IP rate is twice the implied bottleneck IP | the peak of the average IP rate is twice the implied bottleneck IP | |||
capacity; and at time scales longer than the target_RTT and when the | capacity; and at timescales longer than the target_RTT and when the | |||
burst size is equal to the target_window_size, the average rate is | burst size is equal to the target_window_size, the average rate is | |||
equal to the target_data_rate. This pattern corresponds to repeating | equal to the target_data_rate. This pattern corresponds to repeating | |||
the last RTT of TCP slowstart when delayed ACK and sender side byte | the last RTT of TCP slowstart when delayed ACK and sender-side byte | |||
counting are present but without the limits specified in Appropriate | counting are present but without the limits specified in Appropriate | |||
Byte Counting [RFC3465]. | Byte Counting [RFC3465]. | |||
time ==> ( - equals one packet) | time ==> ( - equals one packet) | |||
Fine time structure of the packet stream: | Fine time structure of the packet stream: | |||
---- ---- ---- ---- ---- | ---- ---- ---- ---- ---- | |||
|<>| sender interface rate bursts (typically 3 or 4 packets) | |<>| sender interface rate bursts (typically 3 or 4 packets) | |||
|<===>| burst headway (from the ACK headway) | |<===>| burst headway (from the ACK headway) | |||
\____repeating sender______/ | \____repeating sender______/ | |||
rate bursts | rate bursts | |||
Coarse (RTT level) time structure of the packet stream: | Coarse (RTT-level) time structure of the packet stream: | |||
---- ---- ---- ---- ---- ---- ---- ... | ---- ---- ---- ---- ---- ---- ---- ... | |||
|<========================>| slowstart burst size (from the window) | |<========================>| slowstart burst size (from the window) | |||
|<==============================================>| slowstart headway | |<==============================================>| slowstart headway | |||
(from the RTT) | (from the RTT) | |||
\__________________________/ \_________ ... | \__________________________/ \_________ ... | |||
one slowstart burst Repeated slowstart bursts | one slowstart burst Repeated slowstart bursts | |||
Multiple levels of Slowstart Bursts | Figure 2: Multiple Levels of Slowstart Bursts | |||
Figure 2 | ||||
6.2. Constant window pseudo CBR | 6.2. Constant Window Pseudo CBR | |||
Implement pseudo constant bit rate by running a standard self clocked | Pseudo constant bit rate (CBR) is implemented by running a standard | |||
protocol such as TCP with a fixed window size. If that window size | self-clocked protocol such as TCP with a fixed window size. If that | |||
is test_window, the data rate will be slightly above the target_rate. | window size is test_window, the data rate will be slightly above the | |||
target_rate. | ||||
Since the test_window is constrained to be an integer number of | Since the test_window is constrained to be an integer number of | |||
packets, for small RTTs or low data rates there may not be | packets, for small RTTs or low data rates, there may not be | |||
sufficiently precise control over the data rate. Rounding the | sufficiently precise control over the data rate. Rounding the | |||
test_window up (as defined above) is likely to result in data rates | test_window up (as defined above) is likely to result in data rates | |||
that are higher than the target rate, but reducing the window by one | that are higher than the target rate, but reducing the window by one | |||
packet may result in data rates that are too small. Also cross | packet may result in data rates that are too small. Also, cross | |||
traffic potentially raises the RTT, implicitly reducing the rate. | traffic potentially raises the RTT, implicitly reducing the rate. | |||
Cross traffic that raises the RTT nearly always makes the test more | Cross traffic that raises the RTT nearly always makes the test more | |||
strenuous (more demanding for the network path). | strenuous (i.e., more demanding for the network path). | |||
Note that Constant window pseudo CBR (and Scanned window pseudo CBR | Note that Constant Window Pseudo CBR (and Scanned Window Pseudo CBR | |||
in the next section) both rely on a self clock which is at least | in the next section) both rely on a self-clock that is at least | |||
partially derived from the properties of the subnet under test. This | partially derived from the properties of the subnet under test. This | |||
introduces the possibility that the subnet under test exhibits | introduces the possibility that the subnet under test exhibits | |||
behaviors such as extreme RTT fluctuations that prevent these | behaviors such as extreme RTT fluctuations that prevent these | |||
algorithms from accurately controlling data rates. | algorithms from accurately controlling data rates. | |||
A FS-TIDS specifying a constant window CBR test must explicitly | An FSTIDS specifying a Constant Window Pseudo CBR test must | |||
indicate under what conditions errors in the data rate cause tests to | explicitly indicate under what conditions errors in the data rate | |||
be inconclusive. Conventional paced measurement traffic may be more | cause tests to be inconclusive. Conventional paced measurement | |||
appropriate for these environments. | traffic may be more appropriate for these environments. | |||
6.3. Scanned window pseudo CBR | 6.3. Scanned Window Pseudo CBR | |||
Scanned window pseudo CBR is similar to the constant window CBR | Scanned Window Pseudo CBR is similar to the Constant Window Pseudo | |||
described above, except the window is scanned across a range of sizes | CBR described above, except the window is scanned across a range of | |||
designed to include two key events, the onset of queuing and the | sizes designed to include two key events: the onset of queuing and | |||
onset of packet loss or ECN CE marks. The window is scanned by | the onset of packet loss or ECN CE marks. The window is scanned by | |||
incrementing it by one packet every 2*target_window_size delivered | incrementing it by one packet every 2*target_window_size delivered | |||
packets. This mimics the additive increase phase of standard Reno | packets. This mimics the additive increase phase of standard Reno | |||
TCP congestion avoidance when delayed ACKs are in effect. Normally | TCP congestion avoidance when delayed ACKs are in effect. Normally, | |||
the window increases separated by intervals slightly longer than | the window increases are separated by intervals slightly longer than | |||
twice the target_RTT. | twice the target_RTT. | |||
There are two ways to implement this test: one built by applying a | There are two ways to implement this test: 1) applying a window clamp | |||
window clamp to standard congestion control in a standard protocol | to standard congestion control in a standard protocol such as TCP and | |||
such as TCP and the other built by stiffening a non-standard | 2) stiffening a non-standard transport protocol. When standard | |||
transport protocol. When standard congestion control is in effect, | congestion control is in effect, any losses or ECN CE marks cause the | |||
any losses or ECN CE marks cause the transport to revert to a window | transport to revert to a window smaller than the clamp, such that the | |||
smaller than the clamp such that the scanning clamp loses control the | scanning clamp loses control of the window size. The NPAD (Network | |||
window size. The NPAD pathdiag tool is an example of this class of | Path and Application Diagnostics) pathdiag tool is an example of this | |||
algorithms [Pathdiag]. | class of algorithms [Pathdiag]. | |||
Alternatively a non-standard congestion control algorithm can respond | Alternatively, a non-standard congestion control algorithm can | |||
to losses by transmitting extra data, such that it maintains the | respond to losses by transmitting extra data, such that it maintains | |||
specified window size independent of losses or ECN CE marks. Such a | the specified window size independent of losses or ECN CE marks. | |||
stiffened transport explicitly violates mandatory Internet congestion | Such a stiffened transport explicitly violates mandatory Internet | |||
control [RFC5681] and is not suitable for in situ testing. It is | congestion control [RFC5681] and is not suitable for in situ testing. | |||
only appropriate for engineering testing under laboratory conditions. | It is only appropriate for engineering testing under laboratory | |||
The Windowed Ping tool implements such a test [WPING]. The tool | conditions. The Windowed Ping tool implements such a test [WPING]. | |||
described in the paper has been updated.[mpingSource] | This tool has been updated (see [mpingSource]). | |||
The test procedures in Section 8.2 describe how to the partition the | The test procedures in Section 8.2 describe how to the partition the | |||
scans into regions and how to interpret the results. | scans into regions and how to interpret the results. | |||
6.4. Concurrent or channelized testing | 6.4. Concurrent or Channelized Testing | |||
The procedures described in this document are only directly | The procedures described in this document are only directly | |||
applicable to single stream measurement, e.g. one TCP connection or | applicable to single-stream measurement, e.g., one TCP connection or | |||
measurement stream. In an ideal world, we would disallow all | measurement stream. In an ideal world, we would disallow all | |||
performance claims based multiple concurrent streams, but this is not | performance claims based on multiple concurrent streams, but this is | |||
practical due to at least two issues. First, many very high rate | not practical due to at least two issues. First, many very high-rate | |||
link technologies are channelized and at last partially pin the flow | link technologies are channelized and at last partially pin the flow- | |||
to channel mapping to minimize packet reordering within flows. | to-channel mapping to minimize packet reordering within flows. | |||
Second, TCP itself has scaling limits. Although the former problem | Second, TCP itself has scaling limits. Although the former problem | |||
might be overcome through different design decisions, the later | might be overcome through different design decisions, the latter | |||
problem is more deeply rooted. | problem is more deeply rooted. | |||
All congestion control algorithms that are philosophically aligned | All congestion control algorithms that are philosophically aligned | |||
with the standard [RFC5681] (e.g. claim some level of TCP | with [RFC5681] (e.g., claim some level of TCP compatibility, | |||
compatibility, friendliness or fairness) have scaling limits, in the | friendliness, or fairness) have scaling limits; that is, as a long | |||
sense that as a long fast network (LFN) with a fixed RTT and MTU gets | fat network (LFN) with a fixed RTT and MTU gets faster, these | |||
faster, these congestion control algorithms get less accurate and as | congestion control algorithms get less accurate and, as a | |||
a consequence have difficulty filling the network [CCscaling]. These | consequence, have difficulty filling the network [CCscaling]. These | |||
properties are a consequence of the original Reno AIMD congestion | properties are a consequence of the original Reno AIMD congestion | |||
control design and the requirement in [RFC5681] that all transport | control design and the requirement in [RFC5681] that all transport | |||
protocols have similar responses to congestion. | protocols have similar responses to congestion. | |||
There are a number of reasons to want to specify performance in terms | There are a number of reasons to want to specify performance in terms | |||
of multiple concurrent flows, however this approach is not | of multiple concurrent flows; however, this approach is not | |||
recommended for data rates below several megabits per second, which | recommended for data rates below several megabits per second, which | |||
can be attained with run lengths under 10000 packets on many paths. | can be attained with run lengths under 10000 packets on many paths. | |||
Since the required run length goes as the square of the data rate, at | Since the required run length is proportional to the square of the | |||
higher rates the run lengths can be unreasonably large, and multiple | data rate, at higher rates, the run lengths can be unreasonably | |||
flows might be the only feasible approach. | large, and multiple flows might be the only feasible approach. | |||
If multiple flows are deemed necessary to meet aggregate performance | If multiple flows are deemed necessary to meet aggregate performance | |||
targets then this must be stated in both the design of the TIDS and | targets, then this must be stated both in the design of the TIDS and | |||
in any claims about network performance. The IP diagnostic tests | in any claims about network performance. The IP diagnostic tests | |||
must be performed concurrently with the specified number of | must be performed concurrently with the specified number of | |||
connections. For the tests that use bursty test streams, the bursts | connections. For the tests that use bursty test streams, the bursts | |||
should be synchronized across streams unless there is a priori | should be synchronized across streams unless there is a priori | |||
knowledge that the applications have some explicit mechanism to | knowledge that the applications have some explicit mechanism to | |||
stagger their own bursts. In the absences of an explicit mechanism | stagger their own bursts. In the absence of an explicit mechanism to | |||
to stagger bursts many network and application artifacts will | stagger bursts, many network and application artifacts will sometimes | |||
sometimes implicitly synchronize bursts. A test that does not | implicitly synchronize bursts. A test that does not control burst | |||
control burst synchronization may be prone to false pass results for | synchronization may be prone to false pass results for some | |||
some applications. | applications. | |||
7. Interpreting the Results | 7. Interpreting the Results | |||
7.1. Test outcomes | 7.1. Test Outcomes | |||
To perform an exhaustive test of a complete network path, each test | To perform an exhaustive test of a complete network path, each test | |||
of the TIDS is applied to each subpath of the complete path. If any | of the TIDS is applied to each subpath of the complete path. If any | |||
subpath fails any test then a standard transport protocol running | subpath fails any test, then a standard transport protocol running | |||
over the complete path can also be expected to fail to attain the | over the complete path can also be expected to fail to attain the | |||
Target Transport Performance under some conditions. | Target Transport Performance under some conditions. | |||
In addition to passing or failing, a test can be deemed to be | In addition to passing or failing, a test can be deemed to be | |||
inconclusive for a number of reasons. Proper instrumentation and | inconclusive for a number of reasons. Proper instrumentation and | |||
treatment of inconclusive outcomes is critical to the accuracy and | treatment of inconclusive outcomes is critical to the accuracy and | |||
robustness of Model Based Metrics. Tests can be inconclusive if the | robustness of Model-Based Metrics. Tests can be inconclusive if the | |||
precomputed traffic pattern or data rates were not accurately | precomputed traffic pattern or data rates were not accurately | |||
generated; the measurement results were not statistically | generated; the measurement results were not statistically | |||
significant; and others causes such as failing to meet some required | significant; the required preconditions for the test were not met; or | |||
preconditions for the test. See Section 5.4 | other causes. See Section 5.4. | |||
For example consider a test that implements Constant Window Pseudo | For example, consider a test that implements Constant Window Pseudo | |||
CBR (Section 6.2) by adding rate controls and detailed IP packet | CBR (Section 6.2) by adding rate controls and detailed IP packet | |||
transfer instrumentation to TCP (e.g. [RFC4898]). TCP includes | transfer instrumentation to TCP (e.g., using the extended performance | |||
built in control systems which might interfere with the sending data | statistics for TCP as described in [RFC4898]). TCP includes built-in | |||
rate. If such a test meets the required packet transfer statistics | control systems that might interfere with the sending data rate. If | |||
(e.g. run length) while failing to attain the specified data rate it | such a test meets the required packet transfer statistics (e.g., run | |||
must be treated as an inconclusive result, because we can not a | length) while failing to attain the specified data rate, it must be | |||
priori determine if the reduced data rate was caused by a TCP problem | treated as an inconclusive result, because we cannot a priori | |||
or a network problem, or if the reduced data rate had a material | determine if the reduced data rate was caused by a TCP problem or a | |||
effect on the observed packet transfer statistics. | network problem or if the reduced data rate had a material effect on | |||
the observed packet transfer statistics. | ||||
Note that for capacity tests, if the observed packet transfer | Note that for capacity tests, if the observed packet transfer | |||
statistics meet the statistical criteria for failing (accepting | statistics meet the statistical criteria for failing (based on | |||
hypnosis H1 in Section 7.2), the test can can be considered to have | acceptance of hypothesis H1 in Section 7.2), the test can be | |||
failed because it doesn't really matter that the test didn't attain | considered to have failed because it doesn't really matter that the | |||
the required data rate. | test didn't attain the required data rate. | |||
The really important new properties of MBM, such as vantage | The important new properties of MBM, such as vantage independence, | |||
independence, are a direct consequence of opening the control loops | are a direct consequence of opening the control loops in the | |||
in the protocols, such that the test stream does not depend on | protocols, such that the test stream does not depend on network | |||
network conditions or IP packets received. Any mechanism that | conditions or IP packets received. Any mechanism that introduces | |||
introduces feedback between the path's measurements and the test | feedback between the path's measurements and the test stream | |||
stream generation is at risk of introducing nonlinearities that spoil | generation is at risk of introducing nonlinearities that spoil these | |||
these properties. Any exceptional event that indicates that such | properties. Any exceptional event that indicates that such feedback | |||
feedback has happened should cause the test to be considered | has happened should cause the test to be considered inconclusive. | |||
inconclusive. | ||||
One way to view inconclusive tests is that they reflect situations | Inconclusive tests may be caused by situations in which a test | |||
where a test outcome is ambiguous between limitations of the network | outcome is ambiguous because of network limitations or an unknown | |||
and some unknown limitation of the IP diagnostic test itself, which | limitation on the IP diagnostic test itself, which may have been | |||
may have been caused by some uncontrolled feedback from the network. | caused by some uncontrolled feedback from the network. | |||
Note that procedures that attempt to search the target parameter | Note that procedures that attempt to search the target parameter | |||
space to find the limits on some parameter such as target_data_rate | space to find the limits on a parameter such as target_data_rate are | |||
are at risk of breaking the location independent properties of Model | at risk of breaking the location-independent properties of Model- | |||
Based Metrics, if any part of the boundary between passing and | Based Metrics if any part of the boundary between passing, | |||
inconclusive or failing results is sensitive to RTT (which is | inconclusive, or failing results is sensitive to RTT (which is | |||
normally the case). For example the maximum data rate for a marginal | normally the case). For example, the maximum data rate for a | |||
link (e.g. exhibiting excess errors) is likely to be sensitive to | marginal link (e.g., exhibiting excess errors) is likely to be | |||
the test_path_RTT. The maximum observed data rate over the test path | sensitive to the test_path_RTT. The maximum observed data rate over | |||
has very little value for predicting the maximum rate over a | the test path has very little value for predicting the maximum rate | |||
different path. | over a different path. | |||
One of the goals for evolving TIDS designs will be to keep sharpening | One of the goals for evolving TIDS designs will be to keep sharpening | |||
distinction between inconclusive, passing and failing tests. The | the distinctions between inconclusive, passing, and failing tests. | |||
criteria for for passing, failing and inconclusive tests must be | The criteria for inconclusive, passing, and failing tests must be | |||
explicitly stated for every test in the TIDS or FS-TIDS. | explicitly stated for every test in the TIDS or FSTIDS. | |||
One of the goals of evolving the testing process, procedures, tools | One of the goals for evolving the testing process, procedures, tools, | |||
and measurement point selection should be to minimize the number of | and measurement point selection should be to minimize the number of | |||
inconclusive tests. | inconclusive tests. | |||
It may be useful to keep raw packet transfer statistics and ancillary | It may be useful to keep raw packet transfer statistics and ancillary | |||
metrics [RFC3148] for deeper study of the behavior of the network | metrics [RFC3148] for deeper study of the behavior of the network | |||
path and to measure the tools themselves. Raw packet transfer | path and to measure the tools themselves. Raw packet transfer | |||
statistics can help to drive tool evolution. Under some conditions | statistics can help to drive tool evolution. Under some conditions, | |||
it might be possible to re-evaluate the raw data for satisfying | it might be possible to re-evaluate the raw data for satisfying | |||
alternate Target Transport Performance. However it is important to | alternate Target Transport Performance. However, it is important to | |||
guard against sampling bias and other implicit feedback which can | guard against sampling bias and other implicit feedback that can | |||
cause false results and exhibit measurement point vantage | cause false results and exhibit measurement point vantage | |||
sensitivity. Simply applying different delivery criteria based on a | sensitivity. Simply applying different delivery criteria based on a | |||
different Target Transport Performance is insufficient if the test | different Target Transport Performance is insufficient if the test | |||
traffic patterns (bursts, etc.) does not match the alternate Target | traffic patterns (bursts, etc.) do not match the alternate Target | |||
Transport Performance. | Transport Performance. | |||
7.2. Statistical criteria for estimating run_length | 7.2. Statistical Criteria for Estimating run_length | |||
When evaluating the observed run_length, we need to determine | When evaluating the observed run_length, we need to determine | |||
appropriate packet stream sizes and acceptable error levels for | appropriate packet stream sizes and acceptable error levels for | |||
efficient measurement. In practice, can we compare the empirically | efficient measurement. In practice, can we compare the empirically | |||
estimated packet loss and ECN Congestion Experienced (CE) marking | estimated packet loss and ECN CE marking ratios with the targets as | |||
ratios with the targets as the sample size grows? How large a sample | the sample size grows? How large a sample is needed to say that the | |||
is needed to say that the measurements of packet transfer indicate a | measurements of packet transfer indicate a particular run length is | |||
particular run length is present? | present? | |||
The generalized measurement can be described as recursive testing: | The generalized measurement can be described as recursive testing: | |||
send packets (individually or in patterns) and observe the packet | send packets (individually or in patterns) and observe the packet | |||
transfer performance (packet loss ratio or other metric, any marking | transfer performance (packet loss ratio, other metric, or any marking | |||
we define). | we define). | |||
As each packet is sent and measured, we have an ongoing estimate of | As each packet is sent and measured, we have an ongoing estimate of | |||
the performance in terms of the ratio of packet loss or ECN CE mark | the performance in terms of the ratio of packet loss or ECN CE marks | |||
to total packets (i.e. an empirical probability). We continue to | to total packets (i.e., an empirical probability). We continue to | |||
send until conditions support a conclusion or a maximum sending limit | send until conditions support a conclusion or a maximum sending limit | |||
has been reached. | has been reached. | |||
We have a target_mark_probability, 1 mark per target_run_length, | We have a target_mark_probability, one mark per target_run_length, | |||
where a "mark" is defined as a lost packet, a packet with ECN CE | where a "mark" is defined as a lost packet, a packet with ECN CE | |||
mark, or other signal. This constitutes the null Hypothesis: | mark, or other signal. This constitutes the null hypothesis: | |||
H0: no more than one mark in target_run_length = | H0: no more than one mark in target_run_length = | |||
3*(target_window_size)^2 packets | 3*(target_window_size)^2 packets | |||
and we can stop sending packets if on-going measurements support | We can stop sending packets if ongoing measurements support accepting | |||
accepting H0 with the specified Type I error = alpha (= 0.05 for | H0 with the specified Type I error = alpha (= 0.05, for example). | |||
example). | ||||
We also have an alternative Hypothesis to evaluate: if performance is | We also have an alternative hypothesis to evaluate: is performance | |||
significantly lower than the target_mark_probability. Based on | significantly lower than the target_mark_probability? Based on | |||
analysis of typical values and practical limits on measurement | analysis of typical values and practical limits on measurement | |||
duration, we choose four times the H0 probability: | duration, we choose four times the H0 probability: | |||
H1: one or more marks in (target_run_length/4) packets | H1: one or more marks in (target_run_length/4) packets | |||
and we can stop sending packets if measurements support rejecting H0 | and we can stop sending packets if measurements support rejecting H0 | |||
with the specified Type II error = beta (= 0.05 for example), thus | with the specified Type II error = beta (= 0.05, for example), thus | |||
preferring the alternate hypothesis H1. | preferring the alternate hypothesis H1. | |||
H0 and H1 constitute the Success and Failure outcomes described | H0 and H1 constitute the success and failure outcomes described | |||
elsewhere in the memo, and while the ongoing measurements do not | elsewhere in this document; while the ongoing measurements do not | |||
support either hypothesis the current status of measurements is | support either hypothesis, the current status of measurements is | |||
inconclusive. | inconclusive. | |||
The problem above is formulated to match the Sequential Probability | The problem above is formulated to match the Sequential Probability | |||
Ratio Test (SPRT) [Wald45] and [Montgomery90]. Note that as | Ratio Test (SPRT) [Wald45] [Montgomery90]. Note that as originally | |||
originally framed the events under consideration were all | framed, the events under consideration were all manufacturing | |||
manufacturing defects. In networking, ECN CE marks and lost packets | defects. In networking, ECN CE marks and lost packets are not | |||
are not defects but signals, indicating that the transport protocol | defects but signals, indicating that the transport protocol should | |||
should slow down. | slow down. | |||
The Sequential Probability Ratio Test also starts with a pair of | The Sequential Probability Ratio Test also starts with a pair of | |||
hypothesis specified as above: | hypotheses specified as above: | |||
H0: p0 = one defect in target_run_length | H0: p0 = one defect in target_run_length | |||
H1: p1 = one defect in target_run_length/4 | H1: p1 = one defect in target_run_length/4 | |||
As packets are sent and measurements collected, the tester evaluates | As packets are sent and measurements collected, the tester evaluates | |||
the cumulative defect count against two boundaries representing H0 | the cumulative defect count against two boundaries representing H0 | |||
Acceptance or Rejection (and acceptance of H1): | Acceptance or Rejection (and acceptance of H1): | |||
Acceptance line: Xa = -h1 + s*n | Acceptance line: Xa = -h1 + s*n | |||
Rejection line: Xr = h2 + s*n | Rejection line: Xr = h2 + s*n | |||
where n increases linearly for each packet sent and | where n increases linearly for each packet sent and | |||
h1 = { log((1-alpha)/beta) }/k | h1 = { log((1-alpha)/beta) }/k | |||
h2 = { log((1-beta)/alpha) }/k | h2 = { log((1-beta)/alpha) }/k | |||
k = log{ (p1(1-p0)) / (p0(1-p1)) } | k = log{ (p1(1-p0)) / (p0(1-p1)) } | |||
s = [ log{ (1-p0)/(1-p1) } ]/k | s = [ log{ (1-p0)/(1-p1) } ]/k | |||
for p0 and p1 as defined in the null and alternative Hypotheses | for p0 and p1 as defined in the null and alternative hypotheses | |||
statements above, and alpha and beta as the Type I and Type II | statements above, and alpha and beta as the Type I and Type II | |||
errors. | errors. | |||
The SPRT specifies simple stopping rules: | The SPRT specifies simple stopping rules: | |||
o Xa < defect_count(n) < Xr: continue testing | o Xa < defect_count(n) < Xr: continue testing | |||
o defect_count(n) <= Xa: Accept H0 | o defect_count(n) <= Xa: Accept H0 | |||
o defect_count(n) >= Xr: Accept H1 | o defect_count(n) >= Xr: Accept H1 | |||
The calculations above are implemented in the R-tool for Statistical | The calculations above are implemented in the R-tool for Statistical | |||
Analysis [Rtool] , in the add-on package for Cross-Validation via | Analysis [Rtool], in the add-on package for Cross-Validation via | |||
Sequential Testing (CVST) [CVST]. | Sequential Testing (CVST) [CVST]. | |||
Using the equations above, we can calculate the minimum number of | Using the equations above, we can calculate the minimum number of | |||
packets (n) needed to accept H0 when x defects are observed. For | packets (n) needed to accept H0 when x defects are observed. For | |||
example, when x = 0: | example, when x = 0: | |||
Xa = 0 = -h1 + s*n | Xa = 0 = -h1 + s*n | |||
and n = h1 / s | and n = h1 / s | |||
Note that the derivations in [Wald45] and [Montgomery90] differ. | Note that the derivations in [Wald45] and [Montgomery90] differ. | |||
Montgomery's simplified derivation of SPRT may assume a Bernoulli | Montgomery's simplified derivation of SPRT may assume a Bernoulli | |||
processes, where the packet loss probabilities are independent and | processes, where the packet loss probabilities are independent and | |||
identically distributed, making the SPRT more accessible. Wald's | identically distributed, making the SPRT more accessible. Wald's | |||
seminal paper showed that this assumption is not necessary. It helps | seminal paper showed that this assumption is not necessary. It helps | |||
to remember that the goal of SPRT is not to estimate the value of the | to remember that the goal of SPRT is not to estimate the value of the | |||
packet loss rate, but only whether or not the packet loss ratio is | packet loss rate but only whether or not the packet loss ratio is | |||
likely low enough (when we accept the H0 null hypothesis) yielding | likely (1) low enough (when we accept the H0 null hypothesis), | |||
success; or too high (when we accept the H1 alternate hypothesis) | yielding success or (2) too high (when we accept the H1 alternate | |||
yielding failure. | hypothesis), yielding failure. | |||
7.3. Reordering Tolerance | 7.3. Reordering Tolerance | |||
All tests must be instrumented for packet level reordering [RFC4737]. | All tests must be instrumented for packet-level reordering [RFC4737]. | |||
However, there is no consensus for how much reordering should be | However, there is no consensus for how much reordering should be | |||
acceptable. Over the last two decades the general trend has been to | acceptable. Over the last two decades, the general trend has been to | |||
make protocols and applications more tolerant to reordering (see for | make protocols and applications more tolerant to reordering (for | |||
example [RFC4015]), in response to the gradual increase in reordering | example, see [RFC5827]), in response to the gradual increase in | |||
in the network. This increase has been due to the deployment of | reordering in the network. This increase has been due to the | |||
technologies such as multithreaded routing lookups and Equal Cost | deployment of technologies such as multithreaded routing lookups and | |||
MultiPath (ECMP) routing. These techniques increase parallelism in | Equal-Cost Multipath (ECMP) routing. These techniques increase | |||
network and are critical to enabling overall Internet growth to | parallelism in the network and are critical to enabling overall | |||
exceed Moore's Law. | Internet growth to exceed Moore's Law. | |||
Note that transport retransmission strategies can trade off | With transport retransmission strategies, there are fundamental | |||
reordering tolerance vs how quickly they can repair losses vs | trade-offs among reordering tolerance, how quickly losses can be | |||
overhead from spurious retransmissions. In advance of new | repaired, and overhead from spurious retransmissions. In advance of | |||
retransmission strategies we propose the following strawman: | new retransmission strategies, we propose the following strawman: | |||
Transport protocols should be able to adapt to reordering as long as | transport protocols should be able to adapt to reordering as long as | |||
the reordering extent is not more than the maximum of one quarter | the reordering extent is not more than the maximum of one quarter | |||
window or 1 mS, whichever is larger. (These values come from | window or 1 ms, whichever is larger. (These values come from | |||
experience prototyping Early Retransmit [RFC5827] and related | experience prototyping Early Retransmit [RFC5827] and related | |||
algorithms. They agree with the values being proposed for "RACK: a | algorithms. They agree with the values being proposed for "RACK: a | |||
time-based fast loss detection algorithm" [I-D.ietf-tcpm-rack].) | time-based fast loss detection algorithm" [RACK].) Within this limit | |||
Within this limit on reorder extent, there should be no bound on | on reorder extent, there should be no bound on reordering density. | |||
reordering density. | ||||
By implication, recording which is less than these bounds should not | By implication, recording that is less than these bounds should not | |||
be treated as a network impairment. However [RFC4737] still applies: | be treated as a network impairment. However, [RFC4737] still | |||
reordering should be instrumented and the maximum reordering that can | applies: reordering should be instrumented, and the maximum | |||
be properly characterized by the test (because of the bound on | reordering that can be properly characterized by the test (because of | |||
history buffers) should be recorded with the measurement results. | the bound on history buffers) should be recorded with the measurement | |||
results. | ||||
Reordering tolerance and diagnostic limitations, such as the size of | Reordering tolerance and diagnostic limitations, such as the size of | |||
the history buffer used to diagnose packets that are way out-of- | the history buffer used to diagnose packets that are way out of | |||
order, must be specified in a FSTIDS. | order, must be specified in an FSTIDS. | |||
8. IP Diagnostic Tests | 8. IP Diagnostic Tests | |||
The IP diagnostic tests below are organized according to the | The IP diagnostic tests below are organized according to the | |||
technique used to generate the test stream as described in Section 6. | technique used to generate the test stream as described in Section 6. | |||
All of the results are evaluated in accordance with Section 7, | All of the results are evaluated in accordance with Section 7, | |||
possibly with additional test specific critera. | possibly with additional test-specific criteria. | |||
We also introduce some combined tests which are more efficient when | We also introduce some combined tests that are more efficient when | |||
networks are expected to pass, but conflate diagnostic signatures | networks are expected to pass but conflate diagnostic signatures when | |||
when they fail. | they fail. | |||
8.1. Basic Data Rate and Packet Transfer Tests | 8.1. Basic Data Rate and Packet Transfer Tests | |||
We propose several versions of the basic data rate and packet | We propose several versions of the basic data rate and packet | |||
transfer statistics test that differ in how the data rate is | transfer statistics test that differ in how the data rate is | |||
controlled. The data can be paced on a timer, or window controlled | controlled. The data can be paced on a timer or window controlled | |||
(and self clocked). The first two tests implicitly confirm that | (and self-clocked). The first two tests implicitly confirm that | |||
sub_path has sufficient raw capacity to carry the target_data_rate. | sub_path has sufficient raw capacity to carry the target_data_rate. | |||
They are recommended for relatively infrequent testing, such as an | They are recommended for relatively infrequent testing, such as an | |||
installation or periodic auditing process. The third, background | installation or periodic auditing process. The third test, | |||
packet transfer statistics, is a low rate test designed for ongoing | Background Packet Transfer Statistics, is a low-rate test designed | |||
monitoring for changes in subpath quality. | for ongoing monitoring for changes in subpath quality. | |||
8.1.1. Delivery Statistics at Paced Full Data Rate | 8.1.1. Delivery Statistics at Paced Full Data Rate | |||
Confirm that the observed run length is at least the | This test confirms that the observed run length is at least the | |||
target_run_length while relying on timer to send data at the | target_run_length while relying on timer to send data at the | |||
target_rate using the procedure described in in Section 6.1 with a | target_rate using the procedure described in Section 6.1 with a burst | |||
burst size of 1 (single packets) or 2 (packet pairs). | size of 1 (single packets) or 2 (packet pairs). | |||
The test is considered to be inconclusive if the packet transmission | The test is considered to be inconclusive if the packet transmission | |||
can not be accurately controlled for any reason. | cannot be accurately controlled for any reason. | |||
RFC 6673 [RFC6673] is appropriate for measuring packet transfer | RFC 6673 [RFC6673] is appropriate for measuring packet transfer | |||
statistics at full data rate. | statistics at full data rate. | |||
8.1.2. Delivery Statistics at Full Data Windowed Rate | 8.1.2. Delivery Statistics at Full Data Windowed Rate | |||
Confirm that the observed run length is at least the | This test confirms that the observed run length is at least the | |||
target_run_length while sending at an average rate approximately | target_run_length while sending at an average rate approximately | |||
equal to the target_data_rate, by controlling (or clamping) the | equal to the target_data_rate, by controlling (or clamping) the | |||
window size of a conventional transport protocol to test_window. | window size of a conventional transport protocol to test_window. | |||
Since losses and ECN CE marks cause transport protocols to reduce | Since losses and ECN CE marks cause transport protocols to reduce | |||
their data rates, this test is expected to be less precise about | their data rates, this test is expected to be less precise about | |||
controlling its data rate. It should not be considered inconclusive | controlling its data rate. It should not be considered inconclusive | |||
as long as at least some of the round trips reached the full | as long as at least some of the round trips reached the full | |||
target_data_rate without incurring losses or ECN CE marks. To pass | target_data_rate without incurring losses or ECN CE marks. To pass | |||
this test the network must deliver target_window_size packets in | this test, the network must deliver target_window_size packets in | |||
target_RTT time without any losses or ECN CE marks at least once per | target_RTT time without any losses or ECN CE marks at least once per | |||
two target_window_size round trips, in addition to meeting the run | two target_window_size round trips, in addition to meeting the run | |||
length statistical test. | length statistical test. | |||
8.1.3. Background Packet Transfer Statistics Tests | 8.1.3. Background Packet Transfer Statistics Tests | |||
The background run length is a low rate version of the target target | The Background Packet Transfer Statistics Test is a low-rate version | |||
rate test above, designed for ongoing lightweight monitoring for | of the target rate test above, designed for ongoing lightweight | |||
changes in the observed subpath run length without disrupting users. | monitoring for changes in the observed subpath run length without | |||
It should be used in conjunction with one of the above full rate | disrupting users. It should be used in conjunction with one of the | |||
tests because it does not confirm that the subpath can support raw | above full-rate tests because it does not confirm that the subpath | |||
data rate. | can support raw data rate. | |||
RFC 6673 [RFC6673] is appropriate for measuring background packet | RFC 6673 [RFC6673] is appropriate for measuring background packet | |||
transfer statistics. | transfer statistics. | |||
8.2. Standing Queue Tests | 8.2. Standing Queue Tests | |||
These engineering tests confirm that the bottleneck is well behaved | These engineering tests confirm that the bottleneck is well behaved | |||
across the onset of packet loss, which typically follows after the | across the onset of packet loss, which typically follows after the | |||
onset of queuing. Well behaved generally means lossless for | onset of queuing. Well behaved generally means lossless for | |||
transient queues, but once the queue has been sustained for a | transient queues, but once the queue has been sustained for a | |||
sufficient period of time (or reaches a sufficient queue depth) there | sufficient period of time (or reaches a sufficient queue depth), | |||
should be a small number of losses or ECN CE marks to signal to the | there should be a small number of losses or ECN CE marks to signal to | |||
transport protocol that it should reduce its window or data rate. | the transport protocol that it should reduce its window or data rate. | |||
Losses that are too early can prevent the transport from averaging at | Losses that are too early can prevent the transport from averaging at | |||
the target_data_rate. Losses that are too late indicate that the | the target_data_rate. Losses that are too late indicate that the | |||
queue might not have an appropriate AQM [RFC7567] and as a | queue might not have an appropriate AQM [RFC7567] and, as a | |||
consequence subject to bufferbloat [wikiBloat]. Queues without AQM | consequence, be subject to bufferbloat [wikiBloat]. Queues without | |||
have the potential to inflict excess delays on all flows sharing the | AQM have the potential to inflict excess delays on all flows sharing | |||
bottleneck. Excess losses (more than half of the window) at the | the bottleneck. Excess losses (more than half of the window) at the | |||
onset of loss make loss recovery problematic for the transport | onset of loss make loss recovery problematic for the transport | |||
protocol. Non-linear, erratic or excessive RTT increases suggest | protocol. Non-linear, erratic, or excessive RTT increases suggest | |||
poor interactions between the channel acquisition algorithms and the | poor interactions between the channel acquisition algorithms and the | |||
transport self clock. All of the tests in this section use the same | transport self-clock. All of the tests in this section use the same | |||
basic scanning algorithm, described here, but score the link or | basic scanning algorithm, described here, but score the link or | |||
subpath on the basis of how well it avoids each of these problems. | subpath on the basis of how well it avoids each of these problems. | |||
Some network technologies rely on virtual queues or other techniques | Some network technologies rely on virtual queues or other techniques | |||
to meter traffic without adding any queuing delay, in which case the | to meter traffic without adding any queuing delay, in which case the | |||
data rate will vary with the window size all the way up to the onset | data rate will vary with the window size all the way up to the onset | |||
of load induced packet loss or ECN CE marks. For these technologies, | of load-induced packet loss or ECN CE marks. For these technologies, | |||
the discussion of queuing in Section 6.3 does not apply, but it is | the discussion of queuing in Section 6.3 does not apply, but it is | |||
still necessary to confirm that the onset of losses or ECN CE marks | still necessary to confirm that the onset of losses or ECN CE marks | |||
be at an appropriate point and progressive. If the network | be at an appropriate point and progressive. If the network | |||
bottleneck does not introduce significant queuing delay, modify the | bottleneck does not introduce significant queuing delay, modify the | |||
procedure described in Section 6.3 to start the scan at a window | procedure described in Section 6.3 to start the scan at a window | |||
equal to or slightly smaller than the test_window. | equal to or slightly smaller than the test_window. | |||
Use the procedure in Section 6.3 to sweep the window across the onset | Use the procedure in Section 6.3 to sweep the window across the onset | |||
of queuing and the onset of loss. The tests below all assume that | of queuing and the onset of loss. The tests below all assume that | |||
the scan emulates standard additive increase and delayed ACK by | the scan emulates standard additive increase and delayed ACK by | |||
incrementing the window by one packet for every 2*target_window_size | incrementing the window by one packet for every 2*target_window_size | |||
packets delivered. A scan can typically be divided into three | packets delivered. A scan can typically be divided into three | |||
regions: below the onset of queuing, a standing queue, and at or | regions: below the onset of queuing, a standing queue, and at or | |||
beyond the onset of loss. | beyond the onset of loss. | |||
Below the onset of queuing the RTT is typically fairly constant, and | Below the onset of queuing, the RTT is typically fairly constant, and | |||
the data rate varies in proportion to the window size. Once the data | the data rate varies in proportion to the window size. Once the data | |||
rate reaches the subpath IP rate, the data rate becomes fairly | rate reaches the subpath IP rate, the data rate becomes fairly | |||
constant, and the RTT increases in proportion to the increase in | constant, and the RTT increases in proportion to the increase in | |||
window size. The precise transition across the start of queuing can | window size. The precise transition across the start of queuing can | |||
be identified by the maximum network power, defined to be the ratio | be identified by the maximum network power, defined to be the ratio | |||
data rate over the RTT. The network power can be computed at each | data rate over the RTT. The network power can be computed at each | |||
window size, and the window with the maximum is taken as the start of | window size, and the window with the maximum is taken as the start of | |||
the queuing region. | the queuing region. | |||
If there is random background loss (e.g. bit errors, etc), precise | If there is random background loss (e.g., bit errors), precise | |||
determination of the onset of queue induced packet loss may require | determination of the onset of queue-induced packet loss may require | |||
multiple scans. Above the onset of queuing loss, all transport | multiple scans. At window sizes large enough to cause loss in | |||
protocols are expected to experience periodic losses determined by | queues, all transport protocols are expected to experience periodic | |||
the interaction between the congestion control and AQM algorithms. | losses determined by the interaction between the congestion control | |||
For standard congestion control algorithms the periodic losses are | and AQM algorithms. For standard congestion control algorithms, the | |||
likely to be relatively widely spaced and the details are typically | periodic losses are likely to be relatively widely spaced, and the | |||
dominated by the behavior of the transport protocol itself. For the | details are typically dominated by the behavior of the transport | |||
stiffened transport protocols case (with non-standard, aggressive | protocol itself. For the case of stiffened transport protocols (with | |||
congestion control algorithms) the details of periodic losses will be | non-standard, aggressive congestion control algorithms), the details | |||
dominated by how the window increase function responds to loss. | of periodic losses will be dominated by how the window increase | |||
function responds to loss. | ||||
8.2.1. Congestion Avoidance | 8.2.1. Congestion Avoidance | |||
A subpath passes the congestion avoidance standing queue test if more | A subpath passes the congestion avoidance standing queue test if more | |||
than target_run_length packets are delivered between the onset of | than target_run_length packets are delivered between the onset of | |||
queuing (as determined by the window with the maximum network power | queuing (as determined by the window with the maximum network power | |||
as described above) and the first loss or ECN CE mark. If this test | as described above) and the first loss or ECN CE mark. If this test | |||
is implemented using a standard congestion control algorithm with a | is implemented using a standard congestion control algorithm with a | |||
clamp, it can be performed in situ in the production internet as a | clamp, it can be performed in situ in the production internet as a | |||
capacity test. For an example of such a test see [Pathdiag]. | capacity test. For an example of such a test, see [Pathdiag]. | |||
For technologies that do not have conventional queues, use the | For technologies that do not have conventional queues, use the | |||
test_window in place of the onset of queuing. i.e. A subpath passes | test_window in place of the onset of queuing. That is, a subpath | |||
the congestion avoidance standing queue test if more than | passes the congestion avoidance standing queue test if more than | |||
target_run_length packets are delivered between start of the scan at | target_run_length packets are delivered between the start of the scan | |||
test_window and the first loss or ECN CE mark. | at test_window and the first loss or ECN CE mark. | |||
8.2.2. Bufferbloat | 8.2.2. Bufferbloat | |||
This test confirms that there is some mechanism to limit buffer | This test confirms that there is some mechanism to limit buffer | |||
occupancy (e.g. that prevents bufferbloat). Note that this is not | occupancy (e.g., that prevents bufferbloat). Note that this is not | |||
strictly a requirement for single stream bulk transport capacity, | strictly a requirement for single-stream bulk transport capacity; | |||
however if there is no mechanism to limit buffer queue occupancy then | however, if there is no mechanism to limit buffer queue occupancy, | |||
a single stream with sufficient data to deliver is likely to cause | then a single stream with sufficient data to deliver is likely to | |||
the problems described in [RFC7567], and [wikiBloat]. This may cause | cause the problems described in [RFC7567] and [wikiBloat]. This may | |||
only minor symptoms for the dominant flow, but has the potential to | cause only minor symptoms for the dominant flow but has the potential | |||
make the subpath unusable for other flows and applications. | to make the subpath unusable for other flows and applications. | |||
Pass if the onset of loss occurs before a standing queue has | The test will pass if the onset of loss occurs before a standing | |||
introduced more delay than than twice target_RTT, or other well | queue has introduced delay greater than twice the target_RTT or | |||
defined and specified limit. Note that there is not yet a model for | another well-defined and specified limit. Note that there is not yet | |||
how much standing queue is acceptable. The factor of two chosen here | a model for how much standing queue is acceptable. The factor of two | |||
reflects a rule of thumb. In conjunction with the previous test, | chosen here reflects a rule of thumb. In conjunction with the | |||
this test implies that the first loss should occur at a queuing delay | previous test, this test implies that the first loss should occur at | |||
which is between one and two times the target_RTT. | a queuing delay that is between one and two times the target_RTT. | |||
Specified RTT limits that are larger than twice the target_RTT must | Specified RTT limits that are larger than twice the target_RTT must | |||
be fully justified in the FS-TIDS. | be fully justified in the FSTIDS. | |||
8.2.3. Non excessive loss | 8.2.3. Non-excessive Loss | |||
This test confirms that the onset of loss is not excessive. Pass if | This test confirms that the onset of loss is not excessive. The test | |||
losses are equal or less than the increase in the cross traffic plus | will pass if losses are equal to or less than the increase in the | |||
the test stream window increase since the previous RTT. This could | cross traffic plus the test stream window increase since the previous | |||
be restated as non-decreasing total throughput of the subpath at the | RTT. This could be restated as non-decreasing total throughput of | |||
onset of loss. (Note that when there is a transient drop in subpath | the subpath at the onset of loss. (Note that when there is a | |||
throughput and there is not already a standing queue, a subpath that | transient drop in subpath throughput and there is not already a | |||
passes other queue tests in this document will have sufficient queue | standing queue, a subpath that passes other queue tests in this | |||
space to hold one full RTT worth of data). | document will have sufficient queue space to hold one full RTT worth | |||
of data). | ||||
Note that token bucket policers will not pass this test, which is as | Note that token bucket policers will not pass this test, which is as | |||
intended. TCP often stumbles badly if more than a small fraction of | intended. TCP often stumbles badly if more than a small fraction of | |||
the packets are dropped in one RTT. Many TCP implementations will | the packets are dropped in one RTT. Many TCP implementations will | |||
require a timeout and slowstart to recover their self clock. Even if | require a timeout and slowstart to recover their self-clock. Even if | |||
they can recover from the massive losses the sudden change in | they can recover from the massive losses, the sudden change in | |||
available capacity at the bottleneck wastes serving and front path | available capacity at the bottleneck wastes serving and front-path | |||
capacity until TCP can adapt to the new rate [Policing]. | capacity until TCP can adapt to the new rate [Policing]. | |||
8.2.4. Duplex Self Interference | 8.2.4. Duplex Self-Interference | |||
This engineering test confirms a bound on the interactions between | This engineering test confirms a bound on the interactions between | |||
the forward data path and the ACK return path when they share a half | the forward data path and the ACK return path when they share a half- | |||
duplex link. | duplex link. | |||
Some historical half duplex technologies had the property that each | Some historical half-duplex technologies had the property that each | |||
direction held the channel until it completely drained its queue. | direction held the channel until it completely drained its queue. | |||
When a self clocked transport protocol, such as TCP, has data and | When a self-clocked transport protocol, such as TCP, has data and | |||
ACKs passing in opposite directions through such a link, the behavior | ACKs passing in opposite directions through such a link, the behavior | |||
often reverts to stop-and-wait. Each additional packet added to the | often reverts to stop-and-wait. Each additional packet added to the | |||
window raises the observed RTT by two packet times, once as the | window raises the observed RTT by two packet times, once as the | |||
additional packet passes through the data path, and once for the | additional packet passes through the data path and once for the | |||
additional delay incurred by the ACK waiting on the return path. | additional delay incurred by the ACK waiting on the return path. | |||
The duplex self interference test fails if the RTT rises by more than | The Duplex Self-Interference Test fails if the RTT rises by more than | |||
a fixed bound above the expected queuing time computed from the | a fixed bound above the expected queuing time computed from the | |||
excess window divided by the subpath IP Capacity. This bound must be | excess window divided by the subpath IP capacity. This bound must be | |||
smaller than target_RTT/2 to avoid reverting to stop and wait | smaller than target_RTT/2 to avoid reverting to stop-and-wait | |||
behavior. (e.g. Data packets and ACKs both have to be released at | behavior (e.g., data packets and ACKs both have to be released at | |||
least twice per RTT.) | least twice per RTT). | |||
8.3. Slowstart tests | 8.3. Slowstart Tests | |||
These tests mimic slowstart: data is sent at twice the effective | These tests mimic slowstart: data is sent at twice the effective | |||
bottleneck rate to exercise the queue at the dominant bottleneck. | bottleneck rate to exercise the queue at the dominant bottleneck. | |||
8.3.1. Full Window slowstart test | 8.3.1. Full Window Slowstart Test | |||
This is a capacity test to confirm that slowstart is not likely to | ||||
exit prematurely. Send slowstart bursts that are target_window_size | ||||
total packets. | ||||
Accumulate packet transfer statistics as described in Section 7.2 to | This capacity test confirms that slowstart is not likely to exit | |||
score the outcome. Pass if it is statistically significant that the | prematurely. To perform this test, send slowstart bursts that are | |||
observed number of good packets delivered between losses or ECN CE | target_window_size total packets and accumulate packet transfer | |||
marks is larger than the target_run_length. Fail if it is | statistics as described in Section 7.2 to score the outcome. The | |||
test will pass if it is statistically significant that the observed | ||||
number of good packets delivered between losses or ECN CE marks is | ||||
larger than the target_run_length. The test will fail if it is | ||||
statistically significant that the observed interval between losses | statistically significant that the observed interval between losses | |||
or ECN CE marks is smaller than the target_run_length. | or ECN CE marks is smaller than the target_run_length. | |||
It is deemed inconclusive if the elapsed time to send the data burst | The test is deemed inconclusive if the elapsed time to send the data | |||
is not less than half of the time to receive the ACKs. (i.e. It is | burst is not less than half of the time to receive the ACKs. (That | |||
acceptable to send data too fast, but sending it slower than twice | is, it is acceptable to send data too fast, but sending it slower | |||
the actual bottleneck rate as indicated by the ACKs is deemed | than twice the actual bottleneck rate as indicated by the ACKs is | |||
inconclusive). The headway for the slowstart bursts should be the | deemed inconclusive). The headway for the slowstart bursts should be | |||
target_RTT. | the target_RTT. | |||
Note that these are the same parameters as the Sender Full Window | Note that these are the same parameters that are used for the | |||
burst test, except the burst rate is at slowstart rate, rather than | Sustained Full-Rate Bursts Test, except the burst rate is at | |||
sender interface rate. | slowstart rate rather than sender interface rate. | |||
8.3.2. Slowstart AQM test | 8.3.2. Slowstart AQM Test | |||
Do a continuous slowstart (send data continuously at twice the | To perform this test, do a continuous slowstart (send data | |||
implied IP bottleneck capacity), until the first loss, stop, allow | continuously at twice the implied IP bottleneck capacity) until the | |||
the network to drain and repeat, gathering statistics on how many | first loss; stop and allow the network to drain and repeat; gather | |||
packets were delivered before the loss, the pattern of losses, | statistics on how many packets were delivered before the loss, the | |||
maximum observed RTT and window size. Justify the results. There is | pattern of losses, maximum observed RTT, and window size; and justify | |||
not currently sufficient theory justifying requiring any particular | the results. There is not currently sufficient theory to justify | |||
result, however design decisions that affect the outcome of this | requiring any particular result; however, design decisions that | |||
tests also affect how the network balances between long and short | affect the outcome of this tests also affect how the network balances | |||
flows (the "mice vs elephants" problem). The queue sojourn time for | between long and short flows (the "mice vs. elephants" problem). The | |||
the first packet delivered after the first loss should be at least | queue sojourn time for the first packet delivered after the first | |||
one half of the target_RTT. | loss should be at least one half of the target_RTT. | |||
This is an engineering test: It should be performed on a quiescent | This engineering test should be performed on a quiescent network or | |||
network or testbed, since cross traffic has the potential to change | testbed, since cross traffic has the potential to change the results | |||
the results in ill defined ways. | in ill-defined ways. | |||
8.4. Sender Rate Burst tests | 8.4. Sender Rate Burst Tests | |||
These tests determine how well the network can deliver bursts sent at | These tests determine how well the network can deliver bursts sent at | |||
sender's interface rate. Note that this test most heavily exercises | the sender's interface rate. Note that this test most heavily | |||
the front path, and is likely to include infrastructure may be out of | exercises the front path and is likely to include infrastructure that | |||
scope for an access ISP, even though the bursts might be caused by | may be out of scope for an access ISP, even though the bursts might | |||
ACK compression, thinning or channel arbitration in the access ISP. | be caused by ACK compression, thinning, or channel arbitration in the | |||
See Appendix B. | access ISP. See Appendix B. | |||
Also, there are a several details about sender interface rate bursts | Also, there are a several details about sender interface rate bursts | |||
that are not fully defined here. These details, such as the assumed | that are not fully defined here. These details, such as the assumed | |||
sender interface rate, should be explicitly stated is a FS-TIDS. | sender interface rate, should be explicitly stated in an FSTIDS. | |||
Current standards permit TCP to send full window bursts following an | Current standards permit TCP to send full window bursts following an | |||
application pause. (Congestion Window Validation [RFC2861] and | application pause. (Congestion Window Validation [RFC2861] and | |||
updates to support Rate-Limited Traffic [RFC7661], are not required). | updates to support Rate-Limited Traffic [RFC7661] are not required). | |||
Since full window bursts are consistent with standard behavior, it is | Since full window bursts are consistent with standard behavior, it is | |||
desirable that the network be able to deliver such bursts, otherwise | desirable that the network be able to deliver such bursts; otherwise, | |||
application pauses will cause unwarranted losses. Note that the AIMD | application pauses will cause unwarranted losses. Note that the AIMD | |||
sawtooth requires a peak window that is twice target_window_size, so | sawtooth requires a peak window that is twice target_window_size, so | |||
the worst case burst may be 2*target_window_size. | the worst-case burst may be 2*target_window_size. | |||
It is also understood in the application and serving community that | It is also understood in the application and serving community that | |||
interface rate bursts have a cost to the network that has to be | interface rate bursts have a cost to the network that has to be | |||
balanced against other costs in the servers themselves. For example | balanced against other costs in the servers themselves. For example, | |||
TCP Segmentation Offload (TSO) reduces server CPU in exchange for | TCP Segmentation Offload (TSO) reduces server CPU in exchange for | |||
larger network bursts, which increase the stress on network buffer | larger network bursts, which increase the stress on network buffer | |||
memory. Some newer TCP implementations can pace traffic at scale | memory. Some newer TCP implementations can pace traffic at scale | |||
[TSO_pacing][TSO_fq_pacing]. It remains to be determined if and how | [TSO_pacing] [TSO_fq_pacing]. It remains to be determined if and how | |||
quickly these changes will be deployed. | quickly these changes will be deployed. | |||
There is not yet theory to unify these costs or to provide a | There is not yet theory to unify these costs or to provide a | |||
framework for trying to optimize global efficiency. We do not yet | framework for trying to optimize global efficiency. We do not yet | |||
have a model for how much server rate bursts should be tolerated by | have a model for how many server rate bursts should be tolerated by | |||
the network. Some bursts must be tolerated by the network, but it is | the network. Some bursts must be tolerated by the network, but it is | |||
probably unreasonable to expect the network to be able to efficiently | probably unreasonable to expect the network to be able to efficiently | |||
deliver all data as a series of bursts. | deliver all data as a series of bursts. | |||
For this reason, this is the only test for which we encourage | For this reason, this is the only test for which we encourage | |||
derating. A TIDS could include a table of pairs of derating | derating. A TIDS could include a table containing pairs of derating | |||
parameters: burst sizes and how much each burst size is permitted to | parameters: burst sizes and how much each burst size is permitted to | |||
reduce the run length, relative to to the target_run_length. | reduce the run length, relative to the target_run_length. | |||
8.5. Combined and Implicit Tests | 8.5. Combined and Implicit Tests | |||
Combined tests efficiently confirm multiple network properties in a | Combined tests efficiently confirm multiple network properties in a | |||
single test, possibly as a side effect of normal content delivery. | single test, possibly as a side effect of normal content delivery. | |||
They require less measurement traffic than other testing strategies | They require less measurement traffic than other testing strategies | |||
at the cost of conflating diagnostic signatures when they fail. | at the cost of conflating diagnostic signatures when they fail. | |||
These are by far the most efficient for monitoring networks that are | These are by far the most efficient for monitoring networks that are | |||
nominally expected to pass all tests. | nominally expected to pass all tests. | |||
8.5.1. Sustained Bursts Test | 8.5.1. Sustained Full-Rate Bursts Test | |||
The sustained burst test implements a combined worst case version of | ||||
all of the capacity tests above. It is simply: | ||||
Send target_window_size bursts of packets at server interface rate | The Sustained Full-Rate Bursts Test implements a combined worst-case | |||
with target_RTT burst headway (burst start to next burst start). | version of all of the capacity tests above. To perform this test, | |||
Verify that the observed packet transfer statistics meets the | send target_window_size bursts of packets at server interface rate | |||
with target_RTT burst headway (burst start to next burst start), and | ||||
verify that the observed packet transfer statistics meets the | ||||
target_run_length. | target_run_length. | |||
Key observations: | Key observations: | |||
o The subpath under test is expected to go idle for some fraction of | o The subpath under test is expected to go idle for some fraction of | |||
the time, determined by the difference between the time to drain | the time, determined by the difference between the time to drain | |||
the queue at the subpath_IP_capacity, and the target_RTT. If the | the queue at the subpath_IP_capacity and the target_RTT. If the | |||
queue does not drain completely it may be an indication that the | queue does not drain completely, it may be an indication that the | |||
the subpath has insufficient IP capacity or that there is some | subpath has insufficient IP capacity or that there is some other | |||
other problem with the test (e.g. inconclusive). | problem with the test (e.g., it is inconclusive). | |||
o The burst sensitivity can be derated by sending smaller bursts | o The burst sensitivity can be derated by sending smaller bursts | |||
more frequently. E.g. send target_window_size*derate packet | more frequently (e.g., by sending target_window_size*derate packet | |||
bursts every target_RTT*derate, where "derate" is less than one. | bursts every target_RTT*derate, where "derate" is less than one). | |||
o When not derated, this test is the most strenuous capacity test. | o When not derated, this test is the most strenuous capacity test. | |||
o A subpath that passes this test is likely to be able to sustain | o A subpath that passes this test is likely to be able to sustain | |||
higher rates (close to subpath_IP_capacity) for paths with RTTs | higher rates (close to subpath_IP_capacity) for paths with RTTs | |||
significantly smaller than the target_RTT. | significantly smaller than the target_RTT. | |||
o This test can be implemented with instrumented TCP [RFC4898], | o This test can be implemented with instrumented TCP [RFC4898], | |||
using a specialized measurement application at one end [MBMSource] | using a specialized measurement application at one end (e.g., | |||
and a minimal service at the other end [RFC0863] [RFC0864]. | [MBMSource]) and a minimal service at the other end (e.g., | |||
[RFC863] and [RFC864]). | ||||
o This test is efficient to implement, since it does not require | o This test is efficient to implement, since it does not require | |||
per-packet timers, and can make use of TSO in modern NIC hardware. | per-packet timers, and can make use of TSO in modern network | |||
o If a subpath is known to pass the Standing Queue engineering tests | interfaces. | |||
o If a subpath is known to pass the standing queue engineering tests | ||||
(particularly that it has a progressive onset of loss at an | (particularly that it has a progressive onset of loss at an | |||
appropriate queue depth), then the Sustained Burst Test is | appropriate queue depth), then the Sustained Full-Rate Bursts Test | |||
sufficient to assure that the subpath under test will not impair | is sufficient to assure that the subpath under test will not | |||
Bulk Transport Capacity at the target performance under all | impair Bulk Transport Capacity at the target performance under all | |||
conditions. See Section 8.2 for a discussion of the standing | conditions. See Section 8.2 for a discussion of the standing | |||
queue tests. | queue tests. | |||
Note that this test is clearly independent of the subpath RTT, or | Note that this test is clearly independent of the subpath RTT or | |||
other details of the measurement infrastructure, as long as the | other details of the measurement infrastructure, as long as the | |||
measurement infrastructure can accurately and reliably deliver the | measurement infrastructure can accurately and reliably deliver the | |||
required bursts to the subpath under test. | required bursts to the subpath under test. | |||
8.5.2. Passive Measurements | 8.5.2. Passive Measurements | |||
Any non-throughput maximizing application, such as fixed rate | Any non-throughput-maximizing application, such as fixed-rate | |||
streaming media, can be used to implement passive or hybrid (defined | streaming media, can be used to implement passive or hybrid (defined | |||
in [RFC7799]) versions of Model Based Metrics with some additional | in [RFC7799]) versions of Model-Based Metrics with some additional | |||
instrumentation and possibly a traffic shaper or other controls in | instrumentation and possibly a traffic shaper or other controls in | |||
the servers. The essential requirement is that the data transmission | the servers. The essential requirement is that the data transmission | |||
be constrained such that even with arbitrary application pauses and | be constrained such that even with arbitrary application pauses and | |||
bursts, the data rate and burst sizes stay within the envelope | bursts, the data rate and burst sizes stay within the envelope | |||
defined by the individual tests described above. | defined by the individual tests described above. | |||
If the application's serving data rate can be constrained to be less | If the application's serving data rate can be constrained to be less | |||
than or equal to the target_data_rate and the serving_RTT (the RTT | than or equal to the target_data_rate and the serving_RTT (the RTT | |||
between the sender and client) is less than the target_RTT, this | between the sender and client) is less than the target_RTT, this | |||
constraint is most easily implemented by clamping the transport | constraint is most easily implemented by clamping the transport | |||
window size to serving_window_clamp, set to the test_window, computed | window size to serving_window_clamp (which is set to the test_window | |||
for the actual serving path. | and computed for the actual serving path). | |||
Under the above constraints the serving_window_clamp will limit the | Under the above constraints, the serving_window_clamp will limit both | |||
both the serving data rate and burst sizes to be no larger than the | the serving data rate and burst sizes to be no larger than the | |||
procedures in Section 8.1.2 and Section 8.4 or Section 8.5.1. Since | parameters specified by the procedures in Section 8.1.2, 8.4, or | |||
the serving RTT is smaller than the target_RTT, the worst case bursts | 8.5.1. Since the serving RTT is smaller than the target_RTT, the | |||
that might be generated under these conditions will be smaller than | worst-case bursts that might be generated under these conditions will | |||
called for by Section 8.4 and the sender rate burst sizes are | be smaller than called for by Section 8.4, and the sender rate burst | |||
implicitly derated by the serving_window_clamp divided by the | sizes are implicitly derated by the serving_window_clamp divided by | |||
target_window_size at the very least. (Depending on the application | the target_window_size at the very least. (Depending on the | |||
behavior, the data might be significantly smoother than specified by | application behavior, the data might be significantly smoother than | |||
any of the burst tests.) | specified by any of the burst tests.) | |||
In an alternative implementation the data rate and bursts might be | In an alternative implementation, the data rate and bursts might be | |||
explicitly controlled by a programmable traffic shaper or pacing at | explicitly controlled by a programmable traffic shaper or by pacing | |||
the sender. This would provide better control over transmissions but | at the sender. This would provide better control over transmissions | |||
is more complicated to implement, although the required technology is | but is more complicated to implement, although the required | |||
available [TSO_pacing][TSO_fq_pacing]. | technology is available [TSO_pacing] [TSO_fq_pacing]. | |||
Note that these techniques can be applied to any content delivery | Note that these techniques can be applied to any content delivery | |||
that can operated at a constrained data rate to inhibit TCP | that can be operated at a constrained data rate to inhibit TCP | |||
equilibrium behavior. | equilibrium behavior. | |||
Furthermore note that Dynamic Adaptive Streaming over HTTP (DASH) is | Furthermore, note that Dynamic Adaptive Streaming over HTTP (DASH) is | |||
generally in conflict with passive Model Based Metrics measurement, | generally in conflict with passive Model-Based Metrics measurement, | |||
because it is a rate maximizing protocol. It can still meet the | because it is a rate-maximizing protocol. It can still meet the | |||
requirement here if the rate can be capped, for example by knowing a | requirement here if the rate can be capped, for example, by knowing a | |||
priori the maximum rate needed to deliver a particular piece of | priori the maximum rate needed to deliver a particular piece of | |||
content. | content. | |||
9. An Example | 9. Example | |||
In this section we illustrate a TIDS designed to confirm that an | In this section, we illustrate a TIDS designed to confirm that an | |||
access ISP can reliably deliver HD video from multiple content | access ISP can reliably deliver HD video from multiple content | |||
providers to all of their customers. With modern codecs, minimal HD | providers to all of its customers. With modern codecs, minimal HD | |||
video (720p) generally fits in 2.5 Mb/s. Due to their geographical | video (720p) generally fits in 2.5 Mb/s. Due to the ISP's | |||
size, network topology and modem characteristics the ISP determines | geographical size, network topology, and modem characteristics, the | |||
that most content is within a 50 mS RTT of their users (This example | ISP determines that most content is within a 50 ms RTT of its users. | |||
RTT is a sufficient to cover the propagation delay to continental | (This example RTT is sufficient to cover the propagation delay to | |||
Europe or either US coast with low delay modems or somewhat smaller | continental Europe or to either coast of the United States with low- | |||
geographical regions if the modems require additional delay to | delay modems; it is sufficient to cover somewhat smaller geographical | |||
implement advanced compression and error recovery). | regions if the modems require additional delay to implement advanced | |||
compression and error recovery.) | ||||
2.5 Mb/s over a 50 ms path | ||||
+----------------------+-------+---------+ | +----------------------+-------+---------+ | |||
| End-to-End Parameter | value | units | | | End-to-End Parameter | value | units | | |||
+----------------------+-------+---------+ | +----------------------+-------+---------+ | |||
| target_rate | 2.5 | Mb/s | | | target_rate | 2.5 | Mb/s | | |||
| target_RTT | 50 | ms | | | target_RTT | 50 | ms | | |||
| target_MTU | 1500 | bytes | | | target_MTU | 1500 | bytes | | |||
| header_overhead | 64 | bytes | | | header_overhead | 64 | bytes | | |||
| | | | | | | | | | |||
| target_window_size | 11 | packets | | | target_window_size | 11 | packets | | |||
| target_run_length | 363 | packets | | | target_run_length | 363 | packets | | |||
+----------------------+-------+---------+ | +----------------------+-------+---------+ | |||
Table 1 | Table 1: 2.5 Mb/s over a 50 ms Path | |||
Table 1 shows the default TCP model with no derating, and as such is | Table 1 shows the default TCP model with no derating and, as such, is | |||
quite conservative. The simplest TIDS would be to use the sustained | quite conservative. The simplest TIDS would be to use the Sustained | |||
burst test, described in Section 8.5.1. Such a test would send 11 | Full-Rate Bursts Test, described in Section 8.5.1. Such a test would | |||
packet bursts every 50mS, and confirming that there was no more than | send 11 packet bursts every 50 ms and confirm that there was no more | |||
1 packet loss per 33 bursts (363 total packets in 1.650 seconds). | than 1 packet loss per 33 bursts (363 total packets in 1.650 | |||
seconds). | ||||
Since this number represents is the entire end-to-end loss budget, | Since this number represents the entire end-to-end loss budget, | |||
independent subpath tests could be implemented by apportioning the | independent subpath tests could be implemented by apportioning the | |||
packet loss ratio across subpaths. For example 50% of the losses | packet loss ratio across subpaths. For example, 50% of the losses | |||
might be allocated to the access or last mile link to the user, 40% | might be allocated to the access or last mile link to the user, 40% | |||
to the network interconnections with other ISPs and 1% to each | to the network interconnections with other ISPs, and 1% to each | |||
internal hop (assuming no more than 10 internal hops). Then all of | internal hop (assuming no more than 10 internal hops). Then, all of | |||
the subpaths can be tested independently, and the spatial composition | the subpaths can be tested independently, and the spatial composition | |||
of passing subpaths would be expected to be within the end-to-end | of passing subpaths would be expected to be within the end-to-end | |||
loss budget. | loss budget. | |||
9.1. Observations about applicability | 9.1. Observations about Applicability | |||
Guidance on deploying and using MBM belong in a future document. | Guidance on deploying and using MBM belong in a future document. | |||
However this example illustrates some the issues that may need to be | However, the example above illustrates some of the issues that may | |||
considered. | need to be considered. | |||
Note that another ISP, with different geographical coverage, topology | Note that another ISP, with different geographical coverage, | |||
or modem technology may need to assume a different target_RTT, and as | topology, or modem technology may need to assume a different | |||
a consequence different target_window_size and target_run_length, | target_RTT and, as a consequence, a different target_window_size and | |||
even for the same target_data rate. One of the implications of this | target_run_length, even for the same target_data rate. One of the | |||
is that infrastructure shared by multiple ISPs, such as inter- | implications of this is that infrastructure shared by multiple ISPs, | |||
exchange points (IXPs) and other interconnects may need to be | such as Internet Exchange Points (IXPs) and other interconnects may | |||
evaluated on the basis of the most stringent target_window_size and | need to be evaluated on the basis of the most stringent | |||
target_run_length of any participating ISP. One way to do this might | target_window_size and target_run_length of any participating ISP. | |||
be to choose target parameters for evaluating such shared | One way to do this might be to choose target parameters for | |||
infrastructure on the basis of a hypothetical reference path that | evaluating such shared infrastructure on the basis of a hypothetical | |||
does not necessarily match any actual paths. | reference path that does not necessarily match any actual paths. | |||
Testing interconnects has generally been problematic: conventional | Testing interconnects has generally been problematic: conventional | |||
performance tests run between measurement points adjacent to either | performance tests run between measurement points adjacent to either | |||
side of the interconnect are not generally useful. Unconstrained TCP | side of the interconnect are not generally useful. Unconstrained TCP | |||
tests, such as iPerf [iPerf] are usually overly aggressive due to the | tests, such as iPerf [iPerf], are usually overly aggressive due to | |||
small RTT (often less than 1 mS). With a short RTT these tools are | the small RTT (often less than 1 ms). With a short RTT, these tools | |||
likely to report inflated data rates because on a short RTT these | are likely to report inflated data rates because on a short RTT, | |||
tools can tolerate very high packet loss ratios and can push other | these tools can tolerate very high packet loss ratios and can push | |||
cross traffic off of the network. As a consequence these | other cross traffic off of the network. As a consequence, these | |||
measurements are useless for predicting actual user performance over | measurements are useless for predicting actual user performance over | |||
longer paths, and may themselves be quite disruptive. Model Based | longer paths and may themselves be quite disruptive. Model-Based | |||
Metrics solves this problem. The interconnect can be evaluated with | Metrics solves this problem. The interconnect can be evaluated with | |||
the same TIDS as other subpaths. Continuing our example, if the | the same TIDS as other subpaths. Continuing our example, if the | |||
interconnect is apportioned 40% of the losses, 11 packet bursts sent | interconnect is apportioned 40% of the losses, 11 packet bursts sent | |||
every 50mS should have fewer than one loss per 82 bursts (902 | every 50 ms should have fewer than one loss per 82 bursts (902 | |||
packets). | packets). | |||
10. Validation | 10. Validation | |||
Since some aspects of the models are likely to be too conservative, | Since some aspects of the models are likely to be too conservative, | |||
Section 5.2 permits alternate protocol models and Section 5.3 permits | Section 5.2 permits alternate protocol models, and Section 5.3 | |||
test parameter derating. If either of these techniques are used, we | permits test parameter derating. If either of these techniques is | |||
require demonstrations that such a TIDS can robustly detect subpaths | used, we require demonstrations that such a TIDS can robustly detect | |||
that will prevent authentic applications using state-of-the-art | subpaths that will prevent authentic applications using state-of-the- | |||
protocol implementations from meeting the specified Target Transport | art protocol implementations from meeting the specified Target | |||
Performance. This correctness criteria is potentially difficult to | Transport Performance. This correctness criteria is potentially | |||
prove, because it implicitly requires validating a TIDS against all | difficult to prove, because it implicitly requires validating a TIDS | |||
possible paths and subpaths. The procedures described here are still | against all possible paths and subpaths. The procedures described | |||
experimental. | here are still experimental. | |||
We suggest two approaches, both of which should be applied: first, | We suggest two approaches, both of which should be applied. First, | |||
publish a fully open description of the TIDS, including what | publish a fully open description of the TIDS, including what | |||
assumptions were used and and how it was derived, such that the | assumptions were used and how it was derived, such that the research | |||
research community can evaluate the design decisions, test them and | community can evaluate the design decisions, test them, and comment | |||
comment on their applicability; and second, demonstrate that | on their applicability. Second, demonstrate that applications do | |||
applications do meet the Target Transport Performance when running | meet the Target Transport Performance when running over a network | |||
over a network testbed which has the tightest possible constraints | testbed that has the tightest possible constraints that still allow | |||
that still allow the tests in the TIDS to pass. | the tests in the TIDS to pass. | |||
This procedure resembles an epsilon-delta proof in calculus. | This procedure resembles an epsilon-delta proof in calculus. | |||
Construct a test network such that all of the individual tests of the | Construct a test network such that all of the individual tests of the | |||
TIDS pass by only small (infinitesimal) margins, and demonstrate that | TIDS pass by only small (infinitesimal) margins, and demonstrate that | |||
a variety of authentic applications running over real TCP | a variety of authentic applications running over real TCP | |||
implementations (or other protocols as appropriate) meets the Target | implementations (or other protocols as appropriate) meets the Target | |||
Transport Performance over such a network. The workloads should | Transport Performance over such a network. The workloads should | |||
include multiple types of streaming media and transaction oriented | include multiple types of streaming media and transaction-oriented | |||
short flows (e.g. synthetic web traffic). | short flows (e.g., synthetic web traffic). | |||
For example, for the HD streaming video TIDS described in Section 9, | For example, for the HD streaming video TIDS described in Section 9, | |||
the IP capacity should be exactly the header_overhead above 2.5 Mb/s, | the IP capacity should be exactly the header_overhead above 2.5 Mb/s, | |||
the per packet random background loss ratio should be 1/363, for a | the per packet random background loss ratio should be 1/363 (for a | |||
run length of 363 packets, the bottleneck queue should be 11 packets | run length of 363 packets), the bottleneck queue should be 11 | |||
and the front path should have just enough buffering to withstand 11 | packets, and the front path should have just enough buffering to | |||
packet interface rate bursts. We want every one of the TIDS tests to | withstand 11 packet interface rate bursts. We want every one of the | |||
fail if we slightly increase the relevant test parameter, so for | TIDS tests to fail if we slightly increase the relevant test | |||
example sending a 12 packet burst should cause excess (possibly | parameter, so, for example, sending a 12-packet burst should cause | |||
deterministic) packet drops at the dominant queue at the bottleneck. | excess (possibly deterministic) packet drops at the dominant queue at | |||
This network has the tightest possible constraints that can be | the bottleneck. This network has the tightest possible constraints | |||
expected to pass the TIDS, yet it should be possible for a real | that can be expected to pass the TIDS, yet it should be possible for | |||
application using a stock TCP implementation in the vendor's default | a real application using a stock TCP implementation in the vendor's | |||
configuration to attain 2.5 Mb/s over an 50 mS path. | default configuration to attain 2.5 Mb/s over a 50 ms path. | |||
The most difficult part of setting up such a testbed is arranging for | The most difficult part of setting up such a testbed is arranging for | |||
it to have the tightest possible constraints that still allow it to | it to have the tightest possible constraints that still allow it to | |||
pass the individual tests. Two approaches are suggested: | pass the individual tests. Two approaches are suggested: | |||
constraining (configuring) the network devices not to use all | ||||
available resources (e.g. by limiting available buffer space or data | ||||
rate); and pre-loading subpaths with cross traffic. Note that is it | ||||
important that a single tightly constrained environment just barely | ||||
passes all tests, otherwise there is a chance that TCP can exploit | ||||
extra latitude in some parameters (such as data rate) to partially | ||||
compensate for constraints in other parameters (queue space, or vice- | ||||
versa). | ||||
To the extent that a TIDS is used to inform public dialog it should | o constraining (configuring) the network devices not to use all | |||
be fully publicly documented, including the details of the tests, | available resources (e.g., by limiting available buffer space or | |||
what assumptions were used and how it was derived. All of the | data rate) | |||
o pre-loading subpaths with cross traffic | ||||
Note that it is important that a single tightly constrained | ||||
environment just barely passes all tests; otherwise, there is a | ||||
chance that TCP can exploit extra latitude in some parameters (such | ||||
as data rate) to partially compensate for constraints in other | ||||
parameters (e.g., queue space). This effect is potentially | ||||
bidirectional: extra latitude in the queue space tests has the | ||||
potential to enable TCP to compensate for insufficient data-rate | ||||
headroom. | ||||
To the extent that a TIDS is used to inform public dialog, it should | ||||
be fully documented publicly, including the details of the tests, | ||||
what assumptions were used, and how it was derived. All of the | ||||
details of the validation experiment should also be published with | details of the validation experiment should also be published with | |||
sufficient detail for the experiments to be replicated by other | sufficient detail for the experiments to be replicated by other | |||
researchers. All components should either be open source of fully | researchers. All components should be either open source or fully | |||
described proprietary implementations that are available to the | described proprietary implementations that are available to the | |||
research community. | research community. | |||
11. Security Considerations | 11. Security Considerations | |||
Measurement is often used to inform business and policy decisions, | Measurement is often used to inform business and policy decisions | |||
and as a consequence is potentially subject to manipulation. Model | and, as a consequence, is potentially subject to manipulation. | |||
Based Metrics are expected to be a huge step forward because | Model-Based Metrics are expected to be a huge step forward because | |||
equivalent measurements can be performed from multiple vantage | equivalent measurements can be performed from multiple vantage | |||
points, such that performance claims can be independently validated | points, such that performance claims can be independently validated | |||
by multiple parties. | by multiple parties. | |||
Much of the acrimony in the Net Neutrality debate is due to the | Much of the acrimony in the Net Neutrality debate is due to the | |||
historical lack of any effective vantage independent tools to | historical lack of any effective vantage-independent tools to | |||
characterize network performance. Traditional methods for measuring | characterize network performance. Traditional methods for measuring | |||
Bulk Transport Capacity are sensitive to RTT and as a consequence | Bulk Transport Capacity are sensitive to RTT and as a consequence | |||
often yield very different results when run local to an ISP or | often yield very different results when run local to an ISP or | |||
interconnect and when run over a customer's complete path. Neither | interconnect and when run over a customer's complete path. Neither | |||
the ISP nor customer can repeat the others measurements, leading to | the ISP nor customer can repeat the other's measurements, leading to | |||
high levels of distrust and acrimony. Model Based Metrics are | high levels of distrust and acrimony. Model-Based Metrics are | |||
expected to greatly improve this situation. | expected to greatly improve this situation. | |||
Note that in situ measurements sometimes requires sending synthetic | Note that in situ measurements sometimes require sending synthetic | |||
measurement traffic between arbitrary locations in the network, and | measurement traffic between arbitrary locations in the network and, | |||
as such are potentially attractive platforms for launching DDOS | as such, are potentially attractive platforms for launching DDoS | |||
attacks. All active measurement tools and protocols must be designed | attacks. All active measurement tools and protocols must be designed | |||
to minimize the opportunities for these misuses. See the discussion | to minimize the opportunities for these misuses. See the discussion | |||
in section 7 of [RFC7594]. | in Section 7 of [RFC7594]. | |||
Some of the tests described in the note are not intended for frequent | ||||
network monitoring since they have the potential to cause high | ||||
network loads and might adversely affect other traffic. | ||||
This document only describes a framework for designing Fully | ||||
Specified Targeted IP Diagnostic Suite. Each FS-TIDS must include | ||||
its own security section. | ||||
12. Acknowledgments | ||||
Ganga Maguluri suggested the statistical test for measuring loss | ||||
probability in the target run length. Alex Gilgur and Merry Mou for | ||||
helping with the statistics. | ||||
Meredith Whittaker for improving the clarity of the communications. | ||||
Ruediger Geib provided feedback which greatly improved the document. | Some of the tests described in this document are not intended for | |||
frequent network monitoring since they have the potential to cause | ||||
high network loads and might adversely affect other traffic. | ||||
This work was inspired by Measurement Lab: open tools running on an | This document only describes a framework for designing a Fully | |||
open platform, using open tools to collect open data. See | Specified Targeted IP Diagnostic Suite. Each FSTIDS must include its | |||
http://www.measurementlab.net/ | own security section. | |||
13. IANA Considerations | 12. IANA Considerations | |||
This document has no actions for IANA. | This document has no IANA actions. | |||
14. Informative References | 13. Informative References | |||
[RFC0863] Postel, J., "Discard Protocol", STD 21, RFC 863, May 1983. | [RFC863] Postel, J., "Discard Protocol", STD 21, RFC 863, | |||
DOI 10.17487/RFC0863, May 1983, | ||||
<https://www.rfc-editor.org/info/rfc863>. | ||||
[RFC0864] Postel, J., "Character Generator Protocol", STD 22, | [RFC864] Postel, J., "Character Generator Protocol", STD 22, | |||
RFC 864, May 1983. | RFC 864, DOI 10.17487/RFC0864, May 1983, | |||
<https://www.rfc-editor.org/info/rfc864>. | ||||
[RFC2330] Paxson, V., Almes, G., Mahdavi, J., and M. Mathis, | [RFC2330] Paxson, V., Almes, G., Mahdavi, J., and M. Mathis, | |||
"Framework for IP Performance Metrics", RFC 2330, May | "Framework for IP Performance Metrics", RFC 2330, | |||
1998. | DOI 10.17487/RFC2330, May 1998, | |||
<https://www.rfc-editor.org/info/rfc2330>. | ||||
[RFC2861] Handley, M., Padhye, J., and S. Floyd, "TCP Congestion | [RFC2861] Handley, M., Padhye, J., and S. Floyd, "TCP Congestion | |||
Window Validation", RFC 2861, June 2000. | Window Validation", RFC 2861, DOI 10.17487/RFC2861, June | |||
2000, <https://www.rfc-editor.org/info/rfc2861>. | ||||
[RFC3148] Mathis, M. and M. Allman, "A Framework for Defining | [RFC3148] Mathis, M. and M. Allman, "A Framework for Defining | |||
Empirical Bulk Transfer Capacity Metrics", RFC 3148, July | Empirical Bulk Transfer Capacity Metrics", RFC 3148, | |||
2001. | DOI 10.17487/RFC3148, July 2001, | |||
<https://www.rfc-editor.org/info/rfc3148>. | ||||
[RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition | [RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition | |||
of Explicit Congestion Notification (ECN) to IP", | of Explicit Congestion Notification (ECN) to IP", | |||
RFC 3168, DOI 10.17487/RFC3168, September 2001, | RFC 3168, DOI 10.17487/RFC3168, September 2001, | |||
<http://www.rfc-editor.org/info/rfc3168>. | <https://www.rfc-editor.org/info/rfc3168>. | |||
[RFC3465] Allman, M., "TCP Congestion Control with Appropriate Byte | [RFC3465] Allman, M., "TCP Congestion Control with Appropriate Byte | |||
Counting (ABC)", RFC 3465, February 2003. | Counting (ABC)", RFC 3465, DOI 10.17487/RFC3465, February | |||
2003, <https://www.rfc-editor.org/info/rfc3465>. | ||||
[RFC4015] Ludwig, R. and A. Gurtov, "The Eifel Response Algorithm | ||||
for TCP", RFC 4015, February 2005. | ||||
[RFC4737] Morton, A., Ciavattone, L., Ramachandran, G., Shalunov, | [RFC4737] Morton, A., Ciavattone, L., Ramachandran, G., Shalunov, | |||
S., and J. Perser, "Packet Reordering Metrics", RFC 4737, | S., and J. Perser, "Packet Reordering Metrics", RFC 4737, | |||
November 2006. | DOI 10.17487/RFC4737, November 2006, | |||
<https://www.rfc-editor.org/info/rfc4737>. | ||||
[RFC4898] Mathis, M., Heffner, J., and R. Raghunarayan, "TCP | [RFC4898] Mathis, M., Heffner, J., and R. Raghunarayan, "TCP | |||
Extended Statistics MIB", RFC 4898, May 2007. | Extended Statistics MIB", RFC 4898, DOI 10.17487/RFC4898, | |||
May 2007, <https://www.rfc-editor.org/info/rfc4898>. | ||||
[RFC5136] Chimento, P. and J. Ishac, "Defining Network Capacity", | [RFC5136] Chimento, P. and J. Ishac, "Defining Network Capacity", | |||
RFC 5136, February 2008. | RFC 5136, DOI 10.17487/RFC5136, February 2008, | |||
<https://www.rfc-editor.org/info/rfc5136>. | ||||
[RFC5681] Allman, M., Paxson, V., and E. Blanton, "TCP Congestion | [RFC5681] Allman, M., Paxson, V., and E. Blanton, "TCP Congestion | |||
Control", RFC 5681, September 2009. | Control", RFC 5681, DOI 10.17487/RFC5681, September 2009, | |||
<https://www.rfc-editor.org/info/rfc5681>. | ||||
[RFC5827] Allman, M., Avrachenkov, K., Ayesta, U., Blanton, J., and | [RFC5827] Allman, M., Avrachenkov, K., Ayesta, U., Blanton, J., and | |||
P. Hurtig, "Early Retransmit for TCP and Stream Control | P. Hurtig, "Early Retransmit for TCP and Stream Control | |||
Transmission Protocol (SCTP)", RFC 5827, | Transmission Protocol (SCTP)", RFC 5827, | |||
DOI 10.17487/RFC5827, May 2010, | DOI 10.17487/RFC5827, May 2010, | |||
<http://www.rfc-editor.org/info/rfc5827>. | <https://www.rfc-editor.org/info/rfc5827>. | |||
[RFC5835] Morton, A. and S. Van den Berghe, "Framework for Metric | [RFC5835] Morton, A., Ed. and S. Van den Berghe, Ed., "Framework for | |||
Composition", RFC 5835, April 2010. | Metric Composition", RFC 5835, DOI 10.17487/RFC5835, April | |||
2010, <https://www.rfc-editor.org/info/rfc5835>. | ||||
[RFC6049] Morton, A. and E. Stephan, "Spatial Composition of | [RFC6049] Morton, A. and E. Stephan, "Spatial Composition of | |||
Metrics", RFC 6049, January 2011. | Metrics", RFC 6049, DOI 10.17487/RFC6049, January 2011, | |||
<https://www.rfc-editor.org/info/rfc6049>. | ||||
[RFC6576] Geib, R., Ed., Morton, A., Fardid, R., and A. Steinmitz, | [RFC6576] Geib, R., Ed., Morton, A., Fardid, R., and A. Steinmitz, | |||
"IP Performance Metrics (IPPM) Standard Advancement | "IP Performance Metrics (IPPM) Standard Advancement | |||
Testing", BCP 176, RFC 6576, DOI 10.17487/RFC6576, March | Testing", BCP 176, RFC 6576, DOI 10.17487/RFC6576, March | |||
2012, <http://www.rfc-editor.org/info/rfc6576>. | 2012, <https://www.rfc-editor.org/info/rfc6576>. | |||
[RFC6673] Morton, A., "Round-Trip Packet Loss Metrics", RFC 6673, | [RFC6673] Morton, A., "Round-Trip Packet Loss Metrics", RFC 6673, | |||
August 2012. | DOI 10.17487/RFC6673, August 2012, | |||
<https://www.rfc-editor.org/info/rfc6673>. | ||||
[RFC6928] Chu, J., Dukkipati, N., Cheng, Y., and M. Mathis, | [RFC6928] Chu, J., Dukkipati, N., Cheng, Y., and M. Mathis, | |||
"Increasing TCP's Initial Window", RFC 6928, | "Increasing TCP's Initial Window", RFC 6928, | |||
DOI 10.17487/RFC6928, April 2013, | DOI 10.17487/RFC6928, April 2013, | |||
<http://www.rfc-editor.org/info/rfc6928>. | <https://www.rfc-editor.org/info/rfc6928>. | |||
[RFC7312] Fabini, J. and A. Morton, "Advanced Stream and Sampling | [RFC7312] Fabini, J. and A. Morton, "Advanced Stream and Sampling | |||
Framework for IP Performance Metrics (IPPM)", RFC 7312, | Framework for IP Performance Metrics (IPPM)", RFC 7312, | |||
August 2014. | DOI 10.17487/RFC7312, August 2014, | |||
<https://www.rfc-editor.org/info/rfc7312>. | ||||
[RFC7398] Bagnulo, M., Burbridge, T., Crawford, S., Eardley, P., and | [RFC7398] Bagnulo, M., Burbridge, T., Crawford, S., Eardley, P., and | |||
A. Morton, "A Reference Path and Measurement Points for | A. Morton, "A Reference Path and Measurement Points for | |||
Large-Scale Measurement of Broadband Performance", | Large-Scale Measurement of Broadband Performance", | |||
RFC 7398, February 2015. | RFC 7398, DOI 10.17487/RFC7398, February 2015, | |||
<https://www.rfc-editor.org/info/rfc7398>. | ||||
[RFC7567] Baker, F., Ed. and G. Fairhurst, Ed., "IETF | [RFC7567] Baker, F., Ed. and G. Fairhurst, Ed., "IETF | |||
Recommendations Regarding Active Queue Management", | Recommendations Regarding Active Queue Management", | |||
BCP 197, RFC 7567, DOI 10.17487/RFC7567, July 2015, | BCP 197, RFC 7567, DOI 10.17487/RFC7567, July 2015, | |||
<http://www.rfc-editor.org/info/rfc7567>. | <https://www.rfc-editor.org/info/rfc7567>. | |||
[RFC7594] Eardley, P., Morton, A., Bagnulo, M., Burbridge, T., | [RFC7594] Eardley, P., Morton, A., Bagnulo, M., Burbridge, T., | |||
Aitken, P., and A. Akhter, "A Framework for Large-Scale | Aitken, P., and A. Akhter, "A Framework for Large-Scale | |||
Measurement of Broadband Performance (LMAP)", RFC 7594, | Measurement of Broadband Performance (LMAP)", RFC 7594, | |||
DOI 10.17487/RFC7594, September 2015, | DOI 10.17487/RFC7594, September 2015, | |||
<http://www.rfc-editor.org/info/rfc7594>. | <https://www.rfc-editor.org/info/rfc7594>. | |||
[RFC7661] Fairhurst, G., Sathiaseelan, A., and R. Secchi, "Updating | [RFC7661] Fairhurst, G., Sathiaseelan, A., and R. Secchi, "Updating | |||
TCP to Support Rate-Limited Traffic", RFC 7661, | TCP to Support Rate-Limited Traffic", RFC 7661, | |||
DOI 10.17487/RFC7661, October 2015, | DOI 10.17487/RFC7661, October 2015, | |||
<http://www.rfc-editor.org/info/rfc7661>. | <https://www.rfc-editor.org/info/rfc7661>. | |||
[RFC7680] Almes, G., Kalidindi, S., Zekauskas, M., and A. Morton, | [RFC7680] Almes, G., Kalidindi, S., Zekauskas, M., and A. Morton, | |||
Ed., "A One-Way Loss Metric for IP Performance Metrics | Ed., "A One-Way Loss Metric for IP Performance Metrics | |||
(IPPM)", STD 82, RFC 7680, DOI 10.17487/RFC7680, January | (IPPM)", STD 82, RFC 7680, DOI 10.17487/RFC7680, January | |||
2016, <http://www.rfc-editor.org/info/rfc7680>. | 2016, <https://www.rfc-editor.org/info/rfc7680>. | |||
[RFC7799] Morton, A., "Active and Passive Metrics and Methods (with | [RFC7799] Morton, A., "Active and Passive Metrics and Methods (with | |||
Hybrid Types In-Between)", RFC 7799, DOI 10.17487/RFC7799, | Hybrid Types In-Between)", RFC 7799, DOI 10.17487/RFC7799, | |||
May 2016, <http://www.rfc-editor.org/info/rfc7799>. | May 2016, <https://www.rfc-editor.org/info/rfc7799>. | |||
[I-D.ietf-tcpm-rack] | [AFD] Pan, R., Breslau, L., Prabhakar, B., and S. Shenker, | |||
Cheng, Y., Cardwell, N., and N. Dukkipati, "RACK: a time- | "Approximate fairness through differential dropping", ACM | |||
based fast loss detection algorithm for TCP", draft-ietf- | SIGCOMM Computer Communication Review, Volume 33, Issue 2, | |||
tcpm-rack-02 (work in progress), March 2017. | DOI 10.1145/956981.956985, April 2003. | |||
[MSMO97] Mathis, M., Semke, J., Mahdavi, J., and T. Ott, "The | [CCscaling] | |||
Macroscopic Behavior of the TCP Congestion Avoidance | Paganini, F., Doyle, J., and S. Low, "Scalable laws for | |||
Algorithm", Computer Communications Review volume 27, | stable network congestion control", Proceedings of IEEE | |||
number3, July 1997. | Conference on Decision and Control,, | |||
DOI 10.1109/CDC.2001.980095, December 2001. | ||||
[WPING] Mathis, M., "Windowed Ping: An IP Level Performance | [CVST] Krueger, T. and M. Braun, "R package: Fast Cross- | |||
Diagnostic", INET 94, June 1994. | Validation via Sequential Testing", version 0.1, 11 2012. | |||
[mpingSource] | [iPerf] Wikipedia, "iPerf", November 2017, | |||
Fan, X., Mathis, M., and D. Hamon, "Git Repository for | <https://en.wikipedia.org/w/ | |||
mping: An IP Level Performance Diagnostic", Sept 2013, | index.php?title=Iperf&oldid=810583885>. | |||
<https://github.com/m-lab/mping>. | ||||
[MBMSource] | [MBMSource] | |||
Hamon, D., Stuart, S., and H. Chen, "Git Repository for | "mbm", July 2016, <https://github.com/m-lab/MBM>. | |||
Model Based Metrics", Sept 2013, <https://github.com/m- | ||||
lab/MBM>. | ||||
[Pathdiag] | ||||
Mathis, M., Heffner, J., O'Neil, P., and P. Siemsen, | ||||
"Pathdiag: Automated TCP Diagnosis", Passive and Active | ||||
Measurement , June 2008. | ||||
[iPerf] Wikipedia Contributors, , "iPerf", Wikipedia, The Free | ||||
Encyclopedia , cited March 2015, | ||||
<http://en.wikipedia.org/w/ | ||||
index.php?title=Iperf&oldid=649720021>. | ||||
[Wald45] Wald, A., "Sequential Tests of Statistical Hypotheses", | ||||
The Annals of Mathematical Statistics, Vol. 16, No. 2, pp. | ||||
117-186, Published by: Institute of Mathematical | ||||
Statistics, Stable URL: | ||||
http://www.jstor.org/stable/2235829, June 1945. | ||||
[Montgomery90] | [Montgomery90] | |||
Montgomery, D., "Introduction to Statistical Quality | Montgomery, D., "Introduction to Statistical Quality | |||
Control - 2nd ed.", ISBN 0-471-51988-X, 1990. | Control", 2nd Edition, ISBN 0-471-51988-X, 1990. | |||
[Rtool] R Development Core Team, , "R: A language and environment | [mpingSource] | |||
for statistical computing. R Foundation for Statistical | "mping", July 2016, <https://github.com/m-lab/mping>. | |||
Computing, Vienna, Austria. ISBN 3-900051-07-0, URL | ||||
http://www.R-project.org/", , 2011. | ||||
[CVST] Krueger, T. and M. Braun, "R package: Fast Cross- | [MSMO97] Mathis, M., Semke, J., Mahdavi, J., and T. Ott, "The | |||
Validation via Sequential Testing", version 0.1, 11 2012. | Macroscopic Behavior of the TCP Congestion Avoidance | |||
Algorithm", Computer Communications Review, Volume 27, | ||||
Issue 3, DOI 10.1145/263932.264023, July 1997. | ||||
[AFD] Pan, R., Breslau, L., Prabhakar, B., and S. Shenker, | [Pathdiag] Mathis, M., Heffner, J., O'Neil, P., and P. Siemsen, | |||
"Approximate fairness through differential dropping", | "Pathdiag: Automated TCP Diagnosis", Passive and Active | |||
SIGCOMM Comput. Commun. Rev. 33, 2, April 2003. | Network Measurement, Lecture Notes in Computer Science, | |||
Volume 4979, DOI 10.1007/978-3-540-79232-1_16, 2008. | ||||
[wikiBloat] | [Policing] Flach, T., Papageorge, P., Terzis, A., Pedrosa, L., Cheng, | |||
Wikipedia, , "Bufferbloat", http://en.wikipedia.org/ | Y., Karim, T., Katz-Bassett, E., and R. Govindan, "An | |||
w/ index.php?title=Bufferbloat&oldid=608805474, March | Internet-Wide Analysis of Traffic Policing", Proceedings | |||
2015. | of ACM SIGCOMM, DOI 10.1145/2934872.2934873, August 2016. | |||
[CCscaling] | [RACK] Cheng, Y., Cardwell, N., Dukkipati, N., and P. Jha, "RACK: | |||
Fernando, F., Doyle, J., and S. Steven, "Scalable laws for | a time-based fast loss detection algorithm for TCP", Work | |||
stable network congestion control", Proceedings of | in Progress, draft-ietf-tcpm-rack-03, March 2018. | |||
Conference on Decision and | ||||
Control, http://www.ee.ucla.edu/~paganini, December 2001. | ||||
[TSO_pacing] | [Rtool] R Development Core Team, "R: A language and environment | |||
Corbet, J., "TSO sizing and the FQ scheduler", | for statistical computing", R Foundation for Statistical | |||
LWN.net https://lwn.net/Articles/564978/, Aug 2013. | Computing, Vienna, Austria, ISBN 3-900051-07-0, 2011, | |||
<http://www.R-project.org/>. | ||||
[TSO_fq_pacing] | [TSO_fq_pacing] | |||
Dumazet, E. and Y. Chen, "TSO, fair queuing, pacing: | Dumazet, E. and Y. Chen, "TSO, fair queuing, pacing: | |||
three's a charm", Proceedings of IETF 88, TCPM WG | three's a charm", Proceedings of IETF 88, TCPM WG, | |||
https://www.ietf.org/proceedings/88/slides/slides-88-tcpm- | November 2013, | |||
9.pdf, Nov 2013. | <https://www.ietf.org/proceedings/88/slides/ | |||
slides-88-tcpm-9.pdf>. | ||||
[Policing] | [TSO_pacing] | |||
Flach, T., Papageorge, P., Terzis, A., Pedrosa, L., Cheng, | Corbet, J., "TSO sizing and the FQ scheduler", August | |||
Y., Karim, T., Katz-Bassett, E., and R. Govindan, "An | 2013, <https://lwn.net/Articles/564978/>. | |||
Internet-Wide Analysis of Traffic Policing", ACM SIGCOMM , | ||||
August 2016. | [Wald45] Wald, A., "Sequential Tests of Statistical Hypotheses", | |||
The Annals of Mathematical Statistics, Volume 16, Number | ||||
2, pp. 117-186, June 1945, | ||||
<http://www.jstor.org/stable/2235829>. | ||||
[wikiBloat] | ||||
Wikipedia, "Bufferbloat", January 2018, | ||||
<https://en.wikipedia.org/w/ | ||||
index.php?title=Bufferbloat&oldid=819293377>. | ||||
[WPING] Mathis, M., "Windowed Ping: An IP Level Performance | ||||
Diagnostic", Computer Networks and ISDN Systems, Volume | ||||
27, Issue 3, DOI 10.1016/0169-7552(94)90119-8, June 1994. | ||||
Appendix A. Model Derivations | Appendix A. Model Derivations | |||
The reference target_run_length described in Section 5.2 is based on | The reference target_run_length described in Section 5.2 is based on | |||
very conservative assumptions: that all excess data in flight | very conservative assumptions: that all excess data in flight (i.e., | |||
(window) above the target_window_size contributes to a standing queue | the window size) above the target_window_size contributes to a | |||
that raises the RTT, and that classic Reno congestion control with | standing queue that raises the RTT and that classic Reno congestion | |||
delayed ACKs are in effect. In this section we provide two | control with delayed ACKs is in effect. In this section we provide | |||
alternative calculations using different assumptions. | two alternative calculations using different assumptions. | |||
It may seem out of place to allow such latitude in a measurement | It may seem out of place to allow such latitude in a measurement | |||
method, but this section provides offsetting requirements. | method, but this section provides offsetting requirements. | |||
The estimates provided by these models make the most sense if network | The estimates provided by these models make the most sense if network | |||
performance is viewed logarithmically. In the operational Internet, | performance is viewed logarithmically. In the operational Internet, | |||
data rates span more than 8 orders of magnitude, RTT spans more than | data rates span more than eight orders of magnitude, RTT spans more | |||
3 orders of magnitude, and packet loss ratio spans at least 8 orders | than three orders of magnitude, and packet loss ratio spans at least | |||
of magnitude if not more. When viewed logarithmically (as in | eight orders of magnitude if not more. When viewed logarithmically | |||
decibels), these correspond to 80 dB of dynamic range. On an 80 dB | (as in decibels), these correspond to 80 dB of dynamic range. On an | |||
scale, a 3 dB error is less than 4% of the scale, even though it | 80 dB scale, a 3 dB error is less than 4% of the scale, even though | |||
represents a factor of 2 in untransformed parameter. | it represents a factor of 2 in untransformed parameter. | |||
This document gives a lot of latitude for calculating | This document gives a lot of latitude for calculating | |||
target_run_length, however people designing a TIDS should consider | target_run_length; however, people designing a TIDS should consider | |||
the effect of their choices on the ongoing tussle about the relevance | the effect of their choices on the ongoing tussle about the relevance | |||
of "TCP friendliness" as an appropriate model for Internet capacity | of "TCP friendliness" as an appropriate model for Internet capacity | |||
allocation. Choosing a target_run_length that is substantially | allocation. Choosing a target_run_length that is substantially | |||
smaller than the reference target_run_length specified in Section 5.2 | smaller than the reference target_run_length specified in Section 5.2 | |||
strengthens the argument that it may be appropriate to abandon "TCP | strengthens the argument that it may be appropriate to abandon "TCP | |||
friendliness" as the Internet fairness model. This gives developers | friendliness" as the Internet fairness model. This gives developers | |||
incentive and permission to develop even more aggressive applications | incentive and permission to develop even more aggressive applications | |||
and protocols, for example by increasing the number of connections | and protocols, for example, by increasing the number of connections | |||
that they open concurrently. | that they open concurrently. | |||
A.1. Queueless Reno | A.1. Queueless Reno | |||
In Section 5.2 models were derived based on the assumption that the | In Section 5.2, models were derived based on the assumption that the | |||
subpath IP rate matches the target rate plus overhead, such that the | subpath IP rate matches the target rate plus overhead, such that the | |||
excess window needed for the AIMD sawtooth causes a fluctuating queue | excess window needed for the AIMD sawtooth causes a fluctuating queue | |||
at the bottleneck. | at the bottleneck. | |||
An alternate situation would be a bottleneck where there is no | An alternate situation would be a bottleneck where there is no | |||
significant queue and losses are caused by some mechanism that does | significant queue and losses are caused by some mechanism that does | |||
not involve extra delay, for example by the use of a virtual queue as | not involve extra delay, for example, by the use of a virtual queue | |||
done in Approximate Fair Dropping [AFD]. A flow controlled by such a | as done in Approximate Fair Dropping [AFD]. A flow controlled by | |||
bottleneck would have a constant RTT and a data rate that fluctuates | such a bottleneck would have a constant RTT and a data rate that | |||
in a sawtooth due to AIMD congestion control. Assume the losses are | fluctuates in a sawtooth due to AIMD congestion control. Assume the | |||
being controlled to make the average data rate meet some goal which | losses are being controlled to make the average data rate meet some | |||
is equal or greater than the target_rate. The necessary run length | goal that is equal to or greater than the target_rate. The necessary | |||
to meet the target_rate can be computed as follows: | run length to meet the target_rate can be computed as follows: | |||
For some value of Wmin, the window will sweep from Wmin packets to | For some value of Wmin, the window will sweep from Wmin packets to | |||
2*Wmin packets in 2*Wmin RTT (due to delayed ACK). Unlike the | 2*Wmin packets in 2*Wmin RTT (due to delayed ACK). Unlike the | |||
queuing case where Wmin = target_window_size, we want the average of | queuing case where Wmin = target_window_size, we want the average of | |||
Wmin and 2*Wmin to be the target_window_size, so the average data | Wmin and 2*Wmin to be the target_window_size, so the average data | |||
rate is the target rate. Thus we want Wmin = | rate is the target rate. Thus, we want Wmin = | |||
(2/3)*target_window_size. | (2/3)*target_window_size. | |||
Between losses each sawtooth delivers (1/2)(Wmin+2*Wmin)(2Wmin) | Between losses, each sawtooth delivers (1/2)(Wmin+2*Wmin)(2Wmin) | |||
packets in 2*Wmin round trip times. | packets in 2*Wmin RTTs. | |||
Substituting these together we get: | Substituting these together, we get: | |||
target_run_length = (4/3)(target_window_size^2) | target_run_length = (4/3)(target_window_size^2) | |||
Note that this is 44% of the reference_run_length computed earlier. | Note that this is 44% of the reference_run_length computed earlier. | |||
This makes sense because under the assumptions in Section 5.2 the | This makes sense because under the assumptions in Section 5.2, the | |||
AMID sawtooth caused a queue at the bottleneck, which raised the | AMID sawtooth caused a queue at the bottleneck, which raised the | |||
effective RTT by 50%. | effective RTT by 50%. | |||
Appendix B. The effects of ACK scheduling | Appendix B. The Effects of ACK Scheduling | |||
For many network technologies simple queuing models don't apply: the | For many network technologies, simple queuing models don't apply: the | |||
network schedules, thins or otherwise alters the timing of ACKs and | network schedules, thins, or otherwise alters the timing of ACKs and | |||
data, generally to raise the efficiency of the channel allocation | data, generally to raise the efficiency of the channel allocation | |||
algorithms when confronted with relatively widely spaced small ACKs. | algorithms when confronted with relatively widely spaced small ACKs. | |||
These efficiency strategies are ubiquitous for half duplex, wireless | These efficiency strategies are ubiquitous for half-duplex, wireless, | |||
and broadcast media. | and broadcast media. | |||
Altering the ACK stream by holding or thinning ACKs typically has two | Altering the ACK stream by holding or thinning ACKs typically has two | |||
consequences: it raises the implied bottleneck IP capacity, making | consequences: it raises the implied bottleneck IP capacity, making | |||
the fine grained slowstart bursts either faster or larger and it | the fine-grained slowstart bursts either faster or larger, and it | |||
raises the effective RTT by the average time that the ACKs and data | raises the effective RTT by the average time that the ACKs and data | |||
are delayed. The first effect can be partially mitigated by re- | are delayed. The first effect can be partially mitigated by | |||
clocking ACKs once they are beyond the bottleneck on the return path | re-clocking ACKs once they are beyond the bottleneck on the return | |||
to the sender, however this further raises the effective RTT. | path to the sender; however, this further raises the effective RTT. | |||
The most extreme example of this sort of behavior would be a half | The most extreme example of this sort of behavior would be a half- | |||
duplex channel that is not released as long as the endpoint currently | duplex channel that is not released as long as the endpoint currently | |||
holding the channel has more traffic (data or ACKs) to send. Such | holding the channel has more traffic (data or ACKs) to send. Such | |||
environments cause self clocked protocols under full load to revert | environments cause self-clocked protocols under full load to revert | |||
to extremely inefficient stop and wait behavior. The channel | to extremely inefficient stop-and-wait behavior. The channel | |||
constrains the protocol to send an entire window of data as a single | constrains the protocol to send an entire window of data as a single | |||
contiguous burst on the forward path, followed by the entire window | contiguous burst on the forward path, followed by the entire window | |||
of ACKs on the return path. | of ACKs on the return path. (A channel with this behavior would fail | |||
the Duplex Self-Interference Test described in Section 8.2.4). | ||||
If a particular return path contains a subpath or device that alters | If a particular return path contains a subpath or device that alters | |||
the timing of the ACK stream, then the entire front path from the | the timing of the ACK stream, then the entire front path from the | |||
sender up to the bottleneck must be tested at the burst parameters | sender up to the bottleneck must be tested at the burst parameters | |||
implied by the ACK scheduling algorithm. The most important | implied by the ACK scheduling algorithm. The most important | |||
parameter is the Implied Bottleneck IP Capacity, which is the average | parameter is the implied bottleneck IP capacity, which is the average | |||
rate at which the ACKs advance snd.una. Note that thinning the ACK | rate at which the ACKs advance snd.una. Note that thinning the ACK | |||
stream (relying on the cumulative nature of seg.ack to permit | stream (relying on the cumulative nature of seg.ack to permit | |||
discarding some ACKs) causes most TCP implementations to send | discarding some ACKs) causes most TCP implementations to send | |||
interface rate bursts to offset the longer times between ACKs in | interface rate bursts to offset the longer times between ACKs in | |||
order to maintain the average data rate. | order to maintain the average data rate. | |||
Note that due to ubiquitous self clocking in Internet protocols, ill | Note that due to ubiquitous self-clocking in Internet protocols, | |||
conceived channel allocation mechanisms are likely to increases the | ill-conceived channel allocation mechanisms are likely to increases | |||
queuing stress on the front path because they cause larger full | the queuing stress on the front path because they cause larger full | |||
sender rate data bursts. | sender rate data bursts. | |||
Holding data or ACKs for channel allocation or other reasons (such as | Holding data or ACKs for channel allocation or other reasons (such as | |||
forward error correction) always raises the effective RTT relative to | forward error correction) always raises the effective RTT relative to | |||
the minimum delay for the path. Therefore it may be necessary to | the minimum delay for the path. Therefore, it may be necessary to | |||
replace target_RTT in the calculation in Section 5.2 by an | replace target_RTT in the calculation in Section 5.2 by an | |||
effective_RTT, which includes the target_RTT plus a term to account | effective_RTT, which includes the target_RTT plus a term to account | |||
for the extra delays introduced by these mechanisms. | for the extra delays introduced by these mechanisms. | |||
Appendix C. Version Control | Acknowledgments | |||
This section to be removed prior to publication. | Ganga Maguluri suggested the statistical test for measuring loss | |||
probability in the target run length. Alex Gilgur and Merry Mou | ||||
helped with the statistics. | ||||
Formatted: Thu Apr 7 18:12:37 PDT 2016 | Meredith Whittaker improved the clarity of the communications. | |||
Ruediger Geib provided feedback that greatly improved the document. | ||||
This work was inspired by Measurement Lab: open tools running on an | ||||
open platform, using open tools to collect open data. See | ||||
<http://www.measurementlab.net/>. | ||||
Authors' Addresses | Authors' Addresses | |||
Matt Mathis | Matt Mathis | |||
Google, Inc | Google, Inc | |||
1600 Amphitheater Parkway | 1600 Amphitheatre Parkway | |||
Mountain View, California 94043 | Mountain View, CA 94043 | |||
USA | United States of America | |||
Email: mattmathis@google.com | Email: mattmathis@google.com | |||
Al Morton | Al Morton | |||
AT&T Labs | AT&T Labs | |||
200 Laurel Avenue South | 200 Laurel Avenue South | |||
Middletown, NJ 07748 | Middletown, NJ 07748 | |||
USA | United States of America | |||
Phone: +1 732 420 1571 | Phone: +1 732 420 1571 | |||
Email: acmorton@att.com | Email: acmorton@att.com | |||
End of changes. 422 change blocks. | ||||
1394 lines changed or deleted | 1349 lines changed or added | |||
This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |