rfc9097.original | rfc9097.txt | |||
---|---|---|---|---|
Network Working Group A. Morton | Internet Engineering Task Force (IETF) A. Morton | |||
Internet-Draft AT&T Labs | Request for Comments: 9097 AT&T Labs | |||
Intended status: Standards Track R. Geib | Category: Standards Track R. Geib | |||
Expires: December 11, 2021 Deutsche Telekom | ISSN: 2070-1721 Deutsche Telekom | |||
L. Ciavattone | L. Ciavattone | |||
AT&T Labs | AT&T Labs | |||
June 9, 2021 | November 2021 | |||
Metrics and Methods for One-way IP Capacity | Metrics and Methods for One-Way IP Capacity | |||
draft-ietf-ippm-capacity-metric-method-12 | ||||
Abstract | Abstract | |||
This memo revisits the problem of Network Capacity metrics first | This memo revisits the problem of Network Capacity Metrics first | |||
examined in RFC 5136. The memo specifies a more practical Maximum | examined in RFC 5136. This memo specifies a more practical Maximum | |||
IP-Layer Capacity metric definition catering for measurement | IP-Layer Capacity Metric definition catering to measurement and | |||
purposes, and outlines the corresponding methods of measurement. | outlines the corresponding Methods of Measurement. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
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 https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on December 11, 2021. | 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/rfc9097. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 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 | |||
(https://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 Revised BSD License text as described in Section 4.e of the | |||
the Trust Legal Provisions and are provided without warranty as | Trust Legal Provisions and are provided without warranty as described | |||
described in the Simplified BSD License. | in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 4 | 1.1. Requirements Language | |||
2. Scope, Goals, and Applicability . . . . . . . . . . . . . . . 4 | 2. Scope, Goals, and Applicability | |||
3. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Motivation | |||
4. General Parameters and Definitions . . . . . . . . . . . . . 6 | 4. General Parameters and Definitions | |||
5. IP-Layer Capacity Singleton Metric Definitions . . . . . . . 8 | 5. IP-Layer Capacity Singleton Metric Definitions | |||
5.1. Formal Name . . . . . . . . . . . . . . . . . . . . . . . 8 | 5.1. Formal Name | |||
5.2. Parameters . . . . . . . . . . . . . . . . . . . . . . . 8 | 5.2. Parameters | |||
5.3. Metric Definitions . . . . . . . . . . . . . . . . . . . 8 | 5.3. Metric Definitions | |||
5.4. Related Round-Trip Delay and One-way Loss Definitions . . 9 | 5.4. Related Round-Trip Delay and One-Way Loss Definitions | |||
5.5. Discussion . . . . . . . . . . . . . . . . . . . . . . . 10 | 5.5. Discussion | |||
5.6. Reporting the Metric . . . . . . . . . . . . . . . . . . 10 | 5.6. Reporting the Metric | |||
6. Maximum IP-Layer Capacity Metric Definitions (Statistic) . . 10 | 6. Maximum IP-Layer Capacity Metric Definitions (Statistics) | |||
6.1. Formal Name . . . . . . . . . . . . . . . . . . . . . . . 10 | 6.1. Formal Name | |||
6.2. Parameters . . . . . . . . . . . . . . . . . . . . . . . 11 | 6.2. Parameters | |||
6.3. Metric Definitions . . . . . . . . . . . . . . . . . . . 11 | 6.3. Metric Definitions | |||
6.4. Related Round-Trip Delay and One-way Loss Definitions . . 13 | 6.4. Related Round-Trip Delay and One-Way Loss Definitions | |||
6.5. Discussion . . . . . . . . . . . . . . . . . . . . . . . 13 | 6.5. Discussion | |||
6.6. Reporting the Metric . . . . . . . . . . . . . . . . . . 13 | 6.6. Reporting the Metric | |||
7. IP-Layer Sender Bit Rate Singleton Metric Definitions . . . . 14 | 7. IP-Layer Sender Bit Rate Singleton Metric Definitions | |||
7.1. Formal Name . . . . . . . . . . . . . . . . . . . . . . . 14 | 7.1. Formal Name | |||
7.2. Parameters . . . . . . . . . . . . . . . . . . . . . . . 14 | 7.2. Parameters | |||
7.3. Metric Definition . . . . . . . . . . . . . . . . . . . . 15 | 7.3. Metric Definition | |||
7.4. Discussion . . . . . . . . . . . . . . . . . . . . . . . 15 | 7.4. Discussion | |||
7.5. Reporting the Metric . . . . . . . . . . . . . . . . . . 15 | 7.5. Reporting the Metric | |||
8. Method of Measurement . . . . . . . . . . . . . . . . . . . . 15 | 8. Method of Measurement | |||
8.1. Load Rate Adjustment Algorithm . . . . . . . . . . . . . 16 | 8.1. Load Rate Adjustment Algorithm | |||
8.2. Measurement Qualification or Verification . . . . . . . . 21 | 8.2. Measurement Qualification or Verification | |||
8.3. Measurement Considerations . . . . . . . . . . . . . . . 22 | 8.3. Measurement Considerations | |||
8.4. Running Code . . . . . . . . . . . . . . . . . . . . . . 24 | 9. Reporting Formats | |||
9. Reporting Formats . . . . . . . . . . . . . . . . . . . . . . 25 | 9.1. Configuration and Reporting Data Formats | |||
9.1. Configuration and Reporting Data Formats . . . . . . . . 27 | 10. Security Considerations | |||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 27 | 11. IANA Considerations | |||
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 | 12. References | |||
12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 28 | 12.1. Normative References | |||
13. Appendix A - Load Rate Adjustment Pseudo Code . . . . . . . . 28 | 12.2. Informative References | |||
14. Appendix B - RFC 8085 UDP Guidelines Check . . . . . . . . . 29 | Appendix A. Load Rate Adjustment Pseudocode | |||
14.1. Assessment of Mandatory Requirements . . . . . . . . . . 29 | Appendix B. RFC 8085 UDP Guidelines Check | |||
14.2. Assessment of Recommendations . . . . . . . . . . . . . 31 | B.1. Assessment of Mandatory Requirements | |||
15. References . . . . . . . . . . . . . . . . . . . . . . . . . 34 | B.2. Assessment of Recommendations | |||
15.1. Normative References . . . . . . . . . . . . . . . . . . 34 | Acknowledgments | |||
15.2. Informative References . . . . . . . . . . . . . . . . . 35 | Authors' Addresses | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 37 | ||||
1. Introduction | 1. Introduction | |||
The IETF's efforts to define Network and Bulk Transport Capacity have | The IETF's efforts to define Network Capacity and Bulk Transport | |||
been chartered and progressed for over twenty years. Over that time, | Capacity (BTC) have been chartered and progressed for over twenty | |||
the performance community has seen development of Informative | years. Over that time, the performance community has seen the | |||
definitions in [RFC3148] for Framework for Bulk Transport Capacity | development of Informative definitions in [RFC3148] for the Framework | |||
(BTC), RFC 5136 for Network Capacity and Maximum IP-Layer Capacity, | for Bulk Transport Capacity, [RFC5136] for Network Capacity and | |||
and the Experimental metric definitions and methods in [RFC8337], | Maximum IP-Layer Capacity, and the Experimental metric definitions | |||
Model-Based Metrics for BTC. | and methods in "Model-Based Metrics for Bulk Transport Capacity" | |||
[RFC8337]. | ||||
This memo revisits the problem of Network Capacity metrics examined | This memo revisits the problem of Network Capacity Metrics examined | |||
first in [RFC3148] and later in [RFC5136]. Maximum IP-Layer Capacity | first in [RFC3148] and later in [RFC5136]. Maximum IP-Layer Capacity | |||
and [RFC3148] Bulk Transfer Capacity (goodput) are different metrics. | and Bulk Transfer Capacity [RFC3148] (goodput) are different metrics. | |||
Maximum IP-Layer Capacity is like the theoretical goal for goodput. | Maximum IP-Layer Capacity is like the theoretical goal for goodput. | |||
There are many metrics in [RFC5136], such as Available Capacity. | There are many metrics in [RFC5136], such as Available Capacity. | |||
Measurements depend on the network path under test and the use case. | Measurements depend on the network path under test and the use case. | |||
Here, the main use case is to assess the maximum capacity of one or | Here, the main use case is to assess the Maximum Capacity of one or | |||
more networks where the subscriber receives specific performance | more networks where the subscriber receives specific performance | |||
assurances, sometimes referred to as the Internet access, or where a | assurances, sometimes referred to as Internet access, or where a | |||
limit of the technology used on a path is being tested. For example, | limit of the technology used on a path is being tested. For example, | |||
when a user subscribes to a 1 Gbps service, then the user, the | when a user subscribes to a 1 Gbps service, then the user, the | |||
service provider, and possibly other parties want to assure that | Service Provider, and possibly other parties want to assure that the | |||
performance level is delivered. When a test confirms the subscribed | specified performance level is delivered. When a test confirms the | |||
performance level, then a tester can seek the location of a | subscribed performance level, a tester can seek the location of a | |||
bottleneck elsewhere. | bottleneck elsewhere. | |||
This memo recognizes the importance of a definition of a Maximum IP- | This memo recognizes the importance of a definition of a Maximum IP- | |||
Layer Capacity Metric at a time when Internet subscription speeds | Layer Capacity Metric at a time when Internet subscription speeds | |||
have increased dramatically; a definition that is both practical and | have increased dramatically -- a definition that is both practical | |||
effective for the performance community's needs, including Internet | and effective for the performance community's needs, including | |||
users. The metric definition is intended to use Active Methods of | Internet users. The metric definitions are intended to use Active | |||
Measurement [RFC7799], and a method of measurement is included. | Methods of Measurement [RFC7799], and a Method of Measurement is | |||
included for each metric. | ||||
The most direct active measurement of IP-Layer Capacity would use IP | The most direct Active Measurement of IP-Layer Capacity would use IP | |||
packets, but in practice a transport header is needed to traverse | packets, but in practice a transport header is needed to traverse | |||
address and port translators. UDP offers the most direct assessment | address and port translators. UDP offers the most direct assessment | |||
possibility, and in the [copycat] measurement study to investigate | possibility, and in the measurement study to investigate whether UDP | |||
whether UDP is viable as a general Internet transport protocol, the | is viable as a general Internet transport protocol [copycat], the | |||
authors found that a high percentage of paths tested support UDP | authors found that a high percentage of paths tested support UDP | |||
transport. A number of liaisons have been exchanged on this topic | transport. A number of liaison statements have been exchanged on | |||
[LS-SG12-A] [LS-SG12-B], discussing the laboratory and field tests | this topic [LS-SG12-A] [LS-SG12-B], discussing the laboratory and | |||
that support the UDP-based approach to IP-Layer Capacity measurement. | field tests that support the UDP-based approach to IP-Layer Capacity | |||
measurement. | ||||
This memo also recognizes the many updates to the IP Performance | This memo also recognizes the updates to the IP Performance Metrics | |||
Metrics Framework [RFC2330] published over twenty years, and makes | (IPPM) Framework [RFC2330] that have been published since 1998. In | |||
use of [RFC7312] for Advanced Stream and Sampling Framework, and | particular, it makes use of [RFC7312] for the Advanced Stream and | |||
[RFC8468] with IPv4, IPv6, and IPv4-IPv6 Coexistence Updates. | Sampling Framework and [RFC8468] for its IPv4, IPv6, and IPv4-IPv6 | |||
Coexistence Updates. | ||||
Appendix A describes the load rate adjustment algorithm in pseudo- | Appendix A describes the load rate adjustment algorithm, using | |||
code. Appendix B discusses the algorithm's compliance with | pseudocode. Appendix B discusses the algorithm's compliance with | |||
[RFC8085]. | [RFC8085]. | |||
1.1. Requirements Language | 1.1. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14[RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
2. Scope, Goals, and Applicability | 2. Scope, Goals, and Applicability | |||
The scope of this memo is to define Active Measurement metrics and | The scope of this memo is to define Active Measurement metrics and | |||
corresponding methods to unambiguously determine Maximum IP-Layer | corresponding methods to unambiguously determine Maximum IP-Layer | |||
Capacity and useful secondary metrics. | Capacity and useful secondary metrics. | |||
Another goal is to harmonize the specified metric and method across | Another goal is to harmonize the specified Metric and Method across | |||
the industry, and this memo is the vehicle that captures IETF | the industry, and this memo is the vehicle that captures IETF | |||
consensus, possibly resulting in changes to the specifications of | consensus, possibly resulting in changes to the specifications of | |||
other Standards Development Organizations (SDO) (through each SDO's | other Standards Development Organizations (SDOs) (through each SDO's | |||
normal contribution process, or through liaison exchange). | normal contribution process or through liaison exchange). | |||
Secondary goals are to add considerations for test procedures, and to | Secondary goals are to add considerations for test procedures and to | |||
provide interpretation of the Maximum IP-Layer Capacity results (to | provide interpretation of the Maximum IP-Layer Capacity results (to | |||
identify cases where more testing is warranted, possibly with | identify cases where more testing is warranted, possibly with | |||
alternate configurations). Fostering the development of protocol | alternate configurations). Fostering the development of protocol | |||
support for this metric and method of measurement is also a goal of | support for this Metric and Method of Measurement is also a goal of | |||
this memo (all active testing protocols currently defined by the IPPM | this memo (all active testing protocols currently defined by the IPPM | |||
WG are UDP-based, meeting a key requirement of these methods). The | WG are UDP based, meeting a key requirement of these methods). The | |||
supporting protocol development to measure this metric according to | supporting protocol development to measure this metric according to | |||
the specified method is a key future contribution to Internet | the specified method is a key future contribution to Internet | |||
measurement. | measurement. | |||
The load rate adjustment algorithm's scope is limited to helping | The load rate adjustment algorithm's scope is limited to helping | |||
determine the Maximum IP-Layer Capacity in the context of an | determine the Maximum IP-Layer Capacity in the context of an | |||
infrequent, diagnostic, short term measurement. It is RECOMMENDED to | infrequent, diagnostic, short-term measurement. It is RECOMMENDED to | |||
discontinue non-measurement traffic that shares a subscriber's | discontinue non-measurement traffic that shares a subscriber's | |||
dedicated resources while testing: measurements may not be accurate | dedicated resources while testing: measurements may not be accurate, | |||
and throughput of competing elastic traffic may be greatly reduced. | and throughput of competing elastic traffic may be greatly reduced. | |||
The primary application of the metric and method of measurement | The primary application of the Metrics and Methods of Measurement | |||
described here is the same as in Section 2 of [RFC7497] where: | described here is the same as what is described in Section 2 of | |||
[RFC7497], where: | ||||
o The access portion of the network is the focus of this problem | | The access portion of the network is the focus of this problem | |||
statement. The user typically subscribes to a service with | | statement. The user typically subscribes to a service with | |||
bidirectional Internet access partly described by rates in bits | | bidirectional [Internet] access partly described by rates in bits | |||
per second. | | per second. | |||
In addition, the use of the load rate adjustment algorithm described | In addition, the use of the load rate adjustment algorithm described | |||
in section 8.1 has the following additional applicability | in Section 8.1 has the following additional applicability | |||
limitations: | limitations: | |||
- MUST only be used in the application of diagnostic and operations | * It MUST only be used in the application of diagnostic and | |||
measurements as described in this memo | operations measurements as described in this memo. | |||
- MUST only be used in circumstances consistent with Section 10, | * It MUST only be used in circumstances consistent with Section 10 | |||
Security Considerations | ("Security Considerations"). | |||
- If a network operator is certain of the IP-layer capacity to be | * If a network operator is certain of the IP-Layer Capacity to be | |||
validated, then testing MAY start with a fixed rate test at the IP- | validated, then testing MAY start with a fixed-rate test at the | |||
layer capacity and avoid activating the load adjustment algorithm. | IP-Layer Capacity and avoid activating the load adjustment | |||
However, the stimulus for a diagnostic test (such as a subscriber | algorithm. However, the stimulus for a diagnostic test (such as a | |||
request) strongly implies that there is no certainty and the load | subscriber request) strongly implies that there is no certainty, | |||
adjustment algorithm is RECOMMENDED. | and the load adjustment algorithm is RECOMMENDED. | |||
Further, the metric and method of measurement are intended for use | Further, the Metrics and Methods of Measurement are intended for use | |||
where specific exact path information is unknown within a range of | where specific exact path information is unknown within a range of | |||
possible values: | possible values: | |||
- the subscriber's exact Maximum IP-Layer Capacity is unknown (which | * The subscriber's exact Maximum IP-Layer Capacity is unknown (which | |||
is sometimes the case; service rates can be increased due to upgrades | is sometimes the case; service rates can be increased due to | |||
without a subscriber's request, or to provide a surplus to compensate | upgrades without a subscriber's request or increased to provide a | |||
for possible underestimates of TCP-based testing). | surplus to compensate for possible underestimates of TCP-based | |||
testing). | ||||
- the size of the bottleneck buffer is unknown. | * The size of the bottleneck buffer is unknown. | |||
Finally, the measurement system's load rate adjustment algorithm | Finally, the measurement system's load rate adjustment algorithm | |||
SHALL NOT be provided with the exact capacity value to be validated a | SHALL NOT be provided with the exact capacity value to be validated | |||
priori. This restriction fosters a fair result, and removes an | a priori. This restriction fosters a fair result and removes an | |||
opportunity for bad actors to operate with knowledge of the "right | opportunity for nefarious operation enabled by knowledge of the | |||
answer". | correct answer. | |||
3. Motivation | 3. Motivation | |||
As with any problem that has been worked for many years in various | As with any problem that has been worked on for many years in various | |||
SDOs without any special attempts at coordination, various solutions | SDOs without any special attempts at coordination, various solutions | |||
for metrics and methods have emerged. | for Metrics and Methods have emerged. | |||
There are five factors that have changed (or begun to change) in the | There are five factors that have changed (or began to change) in the | |||
2013-2019 time frame, and the presence of any one of them on the path | 2013-2019 time frame, and the presence of any one of them on the path | |||
requires features in the measurement design to account for the | requires features in the measurement design to account for the | |||
changes: | changes: | |||
1. Internet access is no longer the bottleneck for many users (but | 1. Internet access is no longer the bottleneck for many users (but | |||
subscribers expect network providers to honor contracted | subscribers expect network providers to honor contracted | |||
performance). | performance). | |||
2. Both transfer rate and latency are important to user's | 2. Both transfer rate and latency are important to a user's | |||
satisfaction. | satisfaction. | |||
3. UDP's growing role in Transport, in areas where TCP once | 3. UDP's role in transport is growing in areas where TCP once | |||
dominated. | dominated. | |||
4. Content and applications are moving physically closer to users. | 4. Content and applications are moving physically closer to users. | |||
5. There is less emphasis on ISP gateway measurements, possibly due | 5. There is less emphasis on ISP gateway measurements, possibly due | |||
to less traffic crossing ISP gateways in the future. | to less traffic crossing ISP gateways in the future. | |||
4. General Parameters and Definitions | 4. General Parameters and Definitions | |||
This section lists the REQUIRED input factors to specify a Sender or | This section lists the REQUIRED input factors to specify a Sender or | |||
Receiver metric. | Receiver metric. | |||
o Src, one of the addresses of a host (such as a globally routable | Src: One of the addresses of a host (such as a globally routable IP | |||
IP address). | address). | |||
o Dst, one of the addresses of a host (such as a globally routable | Dst: One of the addresses of a host (such as a globally routable IP | |||
IP address). | address). | |||
o MaxHops, the limit on the number of Hops a specific packet may | MaxHops: The limit on the number of Hops a specific packet may visit | |||
visit as it traverses from the host at Src to the host at Dst | as it traverses from the host at Src to the host at Dst | |||
(implemented in the TTL or Hop Limit). | (implemented in the TTL or Hop Limit). | |||
o T0, the time at the start of measurement interval, when packets | T0: The time at the start of a measurement interval, when packets | |||
are first transmitted from the Source. | are first transmitted from the Source. | |||
o I, the nominal duration of a measurement interval at the | I: The nominal duration of a measurement interval at the Destination | |||
destination (default 10 sec) | (default 10 sec). | |||
o dt, the nominal duration of m equal sub-intervals in I at the | dt: The nominal duration of m equal sub-intervals in I at the | |||
destination (default 1 sec) | Destination (default 1 sec). | |||
o dtn, the beginning boundary of a specific sub-interval, n, one of | dtn: The beginning boundary of a specific sub-interval, n, one of m | |||
m sub-intervals in I | sub-intervals in I. | |||
o FT, the feedback time interval between status feedback messages | FT: The feedback time interval between status feedback messages | |||
communicating measurement results, sent from the receiver to | communicating measurement results, sent from the Receiver to | |||
control the sender. The results are evaluated throughout the test | control the Sender. The results are evaluated throughout the test | |||
to determine how to adjust the current offered load rate at the | to determine how to adjust the current offered load rate at the | |||
sender (default 50ms) | Sender (default 50 msec). | |||
o Tmax, a maximum waiting time for test packets to arrive at the | Tmax: A maximum waiting time for test packets to arrive at the | |||
destination, set sufficiently long to disambiguate packets with | Destination, set sufficiently long to disambiguate packets with | |||
long delays from packets that are discarded (lost), such that the | long delays from packets that are discarded (lost), such that the | |||
distribution of one-way delay is not truncated. | distribution of one-way delay is not truncated. | |||
o F, the number of different flows synthesized by the method | F: The number of different flows synthesized by the method (default | |||
(default 1 flow) | one flow). | |||
o flow, the stream of packets with the same n-tuple of designated | Flow: The stream of packets with the same n-tuple of designated | |||
header fields that (when held constant) result in identical | header fields that (when held constant) result in identical | |||
treatment in a multi-path decision (such as the decision taken in | treatment in a multipath decision (such as the decision taken in | |||
load balancing). Note: The IPv6 flow label SHOULD be included in | load balancing). Note: The IPv6 flow label SHOULD be included in | |||
the flow definition when routers have complied with [RFC6438] | the flow definition when routers have complied with the guidelines | |||
guidelines. | provided in [RFC6438]. | |||
o Type-P, the complete description of the test packets for which | Type-P: The complete description of the test packets for which this | |||
this assessment applies (including the flow-defining fields). | assessment applies (including the flow-defining fields). Note | |||
Note that the UDP transport layer is one requirement for test | that the UDP transport layer is one requirement for test packets | |||
packets specified below. Type-P is a parallel concept to | specified below. Type-P is a concept parallel to "population of | |||
"population of interest" defined in clause 6.1.1 of[Y.1540]. | interest" as defined in Clause 6.1.1 of [Y.1540]. | |||
o Payload Content, this IPPM Framework-conforming metric and method | Payload Content: An aspect of the Type-P Parameter that can help to | |||
includes packet payload content as an aspect of the Type-P | improve measurement determinism. Specifying packet payload | |||
parameter, which can help to improve measurement determinism. If | content helps to ensure IPPM Framework-conforming Metrics and | |||
there is payload compression in the path and tests intend to | Methods. If there is payload compression in the path and tests | |||
characterize a possible advantage due to compression, then payload | intend to characterize a possible advantage due to compression, | |||
content SHOULD be supplied by a pseudo-random sequence generator, | then payload content SHOULD be supplied by a pseudorandom sequence | |||
by using part of a compressed file, or by other means. See | generator, by using part of a compressed file, or by other means. | |||
Section 3.1.2 of [RFC7312]. | See Section 3.1.2 of [RFC7312]. | |||
o PM, a list of fundamental metrics, such as loss, delay, and | PM: A list of fundamental metrics, such as loss, delay, and | |||
reordering, and corresponding target performance threshold. At | reordering, and corresponding target performance threshold(s). At | |||
least one fundamental metric and target performance threshold MUST | least one fundamental metric and target performance threshold MUST | |||
be supplied (such as One-way IP Packet Loss [RFC7680] equal to | be supplied (such as one-way IP packet loss [RFC7680] equal to | |||
zero). | zero). | |||
A non-Parameter which is required for several metrics is defined | A non-Parameter that is required for several metrics is defined | |||
below: | below: | |||
o T, the host time of the *first* test packet's *arrival* as | T: The host time of the *first* test packet's *arrival* as measured | |||
measured at the destination Measurement Point, or MP(Dst). There | at the Destination Measurement Point, or MP(Dst). There may be | |||
may be other packets sent between Source and Destination hosts | other packets sent between Source and Destination hosts that are | |||
that are excluded, so this is the time of arrival of the first | excluded, so this is the time of arrival of the first packet used | |||
packet used for measurement of the metric. | for measurement of the metric. | |||
Note that time stamp format and resolution, sequence numbers, etc. | Note that timestamp format and resolution, sequence numbers, etc. | |||
will be established by the chosen test protocol standard or | will be established by the chosen test protocol standard or | |||
implementation. | implementation. | |||
5. IP-Layer Capacity Singleton Metric Definitions | 5. IP-Layer Capacity Singleton Metric Definitions | |||
This section sets requirements for the singleton metric that supports | This section sets requirements for the Singleton metric that supports | |||
the Maximum IP-Layer Capacity Metric definition in Section 6. | the Maximum IP-Layer Capacity Metric definitions in Section 6. | |||
5.1. Formal Name | 5.1. Formal Name | |||
Type-P-One-way-IP-Capacity, or informally called IP-Layer Capacity. | "Type-P-One-way-IP-Capacity" is the formal name; it is informally | |||
called "IP-Layer Capacity". | ||||
Note that Type-P depends on the chosen method. | Note that Type-P depends on the chosen method. | |||
5.2. Parameters | 5.2. Parameters | |||
This section lists the REQUIRED input factors to specify the metric, | This section lists the REQUIRED input factors to specify the metric, | |||
beyond those listed in Section 4. | beyond those listed in Section 4. | |||
No additional Parameters are needed. | No additional Parameters are needed. | |||
5.3. Metric Definitions | 5.3. Metric Definitions | |||
This section defines the REQUIRED aspects of the measurable IP-Layer | This section defines the REQUIRED aspects of the measurable IP-Layer | |||
Capacity metric (unless otherwise indicated) for measurements between | Capacity Metric (unless otherwise indicated) for measurements between | |||
specified Source and Destination hosts: | specified Source and Destination hosts: | |||
Define the IP-Layer Capacity, C(T,dt,PM), to be the number of IP- | Define the IP-Layer Capacity, C(T,dt,PM), to be the number of IP- | |||
Layer bits (including header and data fields) in packets that can be | Layer bits (including header and data fields) in packets that can be | |||
transmitted from the Src host and correctly received by the Dst host | transmitted from the Src host and correctly received by the Dst host | |||
during one contiguous sub-interval, dt in length. The IP-Layer | during one contiguous sub-interval, dt in length. The IP-Layer | |||
Capacity depends on the Src and Dst hosts, the host addresses, and | Capacity depends on the Src and Dst hosts, the host addresses, and | |||
the path between the hosts. | the path between the hosts. | |||
The number of these IP-Layer bits is designated n0[dtn,dtn+1] for a | The number of these IP-Layer bits is designated n0[dtn,dtn+1] for a | |||
specific dt. | specific dt. | |||
When the packet size is known and of fixed size, the packet count | When the packet size is known and of fixed size, the packet count | |||
during a single sub-interval dt multiplied by the total bits in IP | during a single sub-interval dt multiplied by the total bits in IP | |||
header and data fields is equal to n0[dtn,dtn+1]. | header and data fields is equal to n0[dtn,dtn+1]. | |||
Anticipating a Sample of Singletons, the number of sub-intervals with | Anticipating a Sample of Singletons, the number of sub-intervals with | |||
duration dt MUST be set to a natural number m, so that T+I = T + m*dt | duration dt MUST be set to a natural number m, so that T+I = T + m*dt | |||
with dtn+1 - dtn = dt for 1 <= n <= m. | with dtn+1 - dtn = dt for 1 <= n <= m. | |||
Parameter PM represents other performance metrics [see section 5.4 | Parameter PM represents other performance metrics (see Section 5.4 | |||
below]; their measurement results SHALL be collected during | below); their measurement results SHALL be collected during | |||
measurement of IP-Layer Capacity and associated with the | measurement of IP-Layer Capacity and associated with the | |||
corresponding dtn for further evaluation and reporting. Users SHALL | corresponding dtn for further evaluation and reporting. Users SHALL | |||
specify the parameter Tmax as required by each metric's reference | specify the Parameter Tmax as required by each metric's reference | |||
definition. | definition. | |||
Mathematically, this definition is represented as (for each n): | Mathematically, this definition is represented as (for each n): | |||
( n0[dtn,dtn+1] ) | ( n0[dtn,dtn+1] ) | |||
C(T,dt,PM) = ------------------------- | C(T,dt,PM) = ------------------------- | |||
dt | dt | |||
Equation for IP-Layer Capacity | Figure 1: Equation for IP-Layer Capacity | |||
and: | and: | |||
o n0 is the total number of IP-Layer header and payload bits that | * n0 is the total number of IP-Layer header and payload bits that | |||
can be transmitted in standard-formed packets [RFC8468] from the | can be transmitted in standard-formed packets [RFC8468] from the | |||
Src host and correctly received by the Dst host during one | Src host and correctly received by the Dst host during one | |||
contiguous sub-interval, dt in length, during the interval [T, | contiguous sub-interval, dt in length, during the interval | |||
T+I], | [T,T+I]. | |||
o C(T,dt,PM) the IP-Layer Capacity, corresponds to the value of n0 | * C(T,dt,PM), the IP-Layer Capacity, corresponds to the value of n0 | |||
measured in any sub-interval beginning at dtn, divided by the | measured in any sub-interval beginning at dtn, divided by the | |||
length of sub-interval, dt. | length of the sub-interval, dt. | |||
o PM represents other performance metrics [see section 5.4 below]; | * PM represents other performance metrics (see Section 5.4 below); | |||
their measurement results SHALL be collected during measurement of | their measurement results SHALL be collected during measurement of | |||
IP-Layer Capacity and associated with the corresponding dtn for | IP-Layer Capacity and associated with the corresponding dtn for | |||
further evaluation and reporting. | further evaluation and reporting. | |||
o all sub-intervals MUST be of equal duration. Choosing dt as non- | * All sub-intervals MUST be of equal duration. Choosing dt as non- | |||
overlapping consecutive time intervals allows for a simple | overlapping consecutive time intervals allows for a simple | |||
implementation. | implementation. | |||
o The bit rate of the physical interface of the measurement devices | * The bit rate of the physical interface of the measurement devices | |||
MUST be higher than the smallest of the links on the path whose | MUST be higher than the smallest of the links on the path whose | |||
C(T,I,PM) is to be measured (the bottleneck link). | C(T,I,PM) is to be measured (the bottleneck link). | |||
Measurements according to these definitions SHALL use the UDP | Measurements according to this definition SHALL use the UDP transport | |||
transport layer. Standard-formed packets are specified in Section 5 | layer. Standard-formed packets are specified in Section 5 of | |||
of [RFC8468]. The measurement SHOULD use a randomized Source port or | [RFC8468]. The measurement SHOULD use a randomized Source port or | |||
equivalent technique, and SHOULD send responses from the Source | equivalent technique, and SHOULD send responses from the Source | |||
address matching the test packet destination address. | address matching the test packet Destination address. | |||
Some compression affects on measurement are discussed in Section 6 of | Some effects of compression on measurement are discussed in Section 6 | |||
[RFC8468]. | of [RFC8468]. | |||
5.4. Related Round-Trip Delay and One-way Loss Definitions | 5.4. Related Round-Trip Delay and One-Way Loss Definitions | |||
RTD[dtn,dtn+1] is defined as a Sample of the [RFC2681] Round-trip | RTD[dtn,dtn+1] is defined as a Sample of the Round-Trip Delay | |||
Delay between the Src host and the Dst host over the interval [T,T+I] | [RFC2681] between the Src host and the Dst host during the interval | |||
(that contains equal non-overlapping intervals of dt). The | [T,T+I] (that contains equal non-overlapping intervals of dt). The | |||
"reasonable period of time" in [RFC2681] is the parameter Tmax in | "reasonable period of time" mentioned in [RFC2681] is the Parameter | |||
this memo. The statistics used to summarize RTD[dtn,dtn+1] MAY | Tmax in this memo. The statistics used to summarize RTD[dtn,dtn+1] | |||
include the minimum, maximum, median, and mean, and the range = | MAY include the minimum, maximum, median, mean, and the range = | |||
(maximum - minimum) is referred to below in Section 8.1 for load | (maximum - minimum). Some of these statistics are needed for load | |||
adjustment purposes. | adjustment purposes (Section 8.1), measurement qualification | |||
(Section 8.2), and reporting (Section 9). | ||||
OWL[dtn,dtn+1] is defined as a Sample of the [RFC7680] One-way Loss | OWL[dtn,dtn+1] is defined as a Sample of the One-Way Loss [RFC7680] | |||
between the Src host and the Dst host over the interval [T,T+I] (that | between the Src host and the Dst host during the interval [T,T+I] | |||
contains equal non-overlapping intervals of dt). The statistics used | (that contains equal non-overlapping intervals of dt). The | |||
to summarize OWL[dtn,dtn+1] MAY include the lost packet count and the | statistics used to summarize OWL[dtn,dtn+1] MAY include the count of | |||
lost packet ratio. | lost packets and the ratio of lost packets. | |||
Other metrics MAY be measured: one-way reordering, duplication, and | Other metrics MAY be measured: one-way reordering, duplication, and | |||
delay variation. | delay variation. | |||
5.5. Discussion | 5.5. Discussion | |||
See the corresponding section for Maximum IP-Layer Capacity. | See the corresponding section for Maximum IP-Layer Capacity | |||
(Section 6.5). | ||||
5.6. Reporting the Metric | 5.6. Reporting the Metric | |||
The IP-Layer Capacity SHOULD be reported with at least single Megabit | The IP-Layer Capacity SHOULD be reported with at least single-Megabit | |||
resolution, in units of Megabits per second (Mbps), (which is | resolution, in units of Megabits per second (Mbps) (which, to avoid | |||
1,000,000 bits per second to avoid any confusion). | any confusion, is 1,000,000 bits per second). | |||
The related One-way Loss metric and Round Trip Delay measurements for | The related One-Way Loss metric and Round-Trip Delay measurements for | |||
the same Singleton SHALL be reported, also with meaningful resolution | the same Singleton SHALL be reported, also with meaningful resolution | |||
for the values measured. | for the values measured. | |||
Individual Capacity measurements MAY be reported in a manner | Individual Capacity measurements MAY be reported in a manner | |||
consistent with the Maximum IP-Layer Capacity, see Section 9. | consistent with the Maximum IP-Layer Capacity; see Section 9. | |||
6. Maximum IP-Layer Capacity Metric Definitions (Statistic) | 6. Maximum IP-Layer Capacity Metric Definitions (Statistics) | |||
This section sets requirements for the following components to | This section sets requirements for the following components to | |||
support the Maximum IP-Layer Capacity Metric. | support the Maximum IP-Layer Capacity Metric. | |||
6.1. Formal Name | 6.1. Formal Name | |||
Type-P-One-way-Max-IP-Capacity, or informally called Maximum IP-Layer | "Type-P-One-way-Max-IP-Capacity" is the formal name; it is informally | |||
Capacity. | called "Maximum IP-Layer Capacity". | |||
Note that Type-P depends on the chosen method. | Note that Type-P depends on the chosen method. | |||
6.2. Parameters | 6.2. Parameters | |||
This section lists the REQUIRED input factors to specify the metric, | This section lists the REQUIRED input factors to specify the metric, | |||
beyond those listed in Section 4. | beyond those listed in Section 4. | |||
No additional Parameters or definitions are needed. | No additional Parameters or definitions are needed. | |||
6.3. Metric Definitions | 6.3. Metric Definitions | |||
This section defines the REQUIRED aspects of the Maximum IP-Layer | This section defines the REQUIRED aspects of the Maximum IP-Layer | |||
Capacity metric (unless otherwise indicated) for measurements between | Capacity Metric (unless otherwise indicated) for measurements between | |||
specified Source and Destination hosts: | specified Source and Destination hosts: | |||
Define the Maximum IP-Layer Capacity, Maximum_C(T,I,PM), to be the | Define the Maximum IP-Layer Capacity, Maximum_C(T,I,PM), to be the | |||
maximum number of IP-Layer bits n0[dtn,dtn+1] divided by dt that can | maximum number of IP-Layer bits n0[dtn,dtn+1] divided by dt that can | |||
be transmitted in packets from the Src host and correctly received by | be transmitted in packets from the Src host and correctly received by | |||
the Dst host, over all dt length intervals in [T, T+I], and meeting | the Dst host, over all dt-length intervals in [T,T+I] and meeting the | |||
the PM criteria. Equivalently the Maximum of a Sample of size m of | PM criteria. An equivalent definition would be the maximum of a | |||
C(T,I,PM) collected during the interval [T, T+I] and meeting the PM | Sample of size m of Singletons C(T,I,PM) collected during the | |||
criteria. | interval [T,T+I] and meeting the PM criteria. | |||
The number of sub-intervals with duration dt MUST be set to a natural | The number of sub-intervals with duration dt MUST be set to a natural | |||
number m, so that T+I = T + m*dt with dtn+1 - dtn = dt for 1 <= n <= | number m, so that T+I = T + m*dt with dtn+1 - dtn = dt for 1 <= n <= | |||
m. | m. | |||
Parameter PM represents the other performance metrics (see | Parameter PM represents the other performance metrics (see | |||
Section 6.4 below) and their measurement results for the Maximum IP- | Section 6.4 below) and their measurement results for the Maximum IP- | |||
Layer Capacity. At least one target performance threshold (PM | Layer Capacity. At least one target performance threshold (PM | |||
criterion) MUST be defined. If more than one metric and target | criterion) MUST be defined. If more than one metric and target | |||
performance threshold are defined, then the sub-interval with maximum | performance threshold is defined, then the sub-interval with the | |||
number of bits transmitted MUST meet all the target performance | maximum number of bits transmitted MUST meet all the target | |||
thresholds. Users SHALL specify the parameter Tmax as required by | performance thresholds. Users SHALL specify the Parameter Tmax as | |||
each metric's reference definition. | required by each metric's reference definition. | |||
Mathematically, this definition can be represented as: | Mathematically, this definition can be represented as: | |||
max ( n0[dtn,dtn+1] ) | max ( n0[dtn,dtn+1] ) | |||
[T,T+I] | [T,T+I] | |||
Maximum_C(T,I,PM) = ------------------------- | Maximum_C(T,I,PM) = ------------------------- | |||
dt | dt | |||
where: | ||||
where: | ||||
T T+I | T T+I | |||
_________________________________________ | _________________________________________ | |||
| | | | | | | | | | | | | | | | | | | | | | | | |||
dtn=1 2 3 4 5 6 7 8 9 10 n+1 | dtn=1 2 3 4 5 6 7 8 9 10 n+1 | |||
n=m | n=m | |||
Equation for Maximum Capacity | Figure 2: Equation for Maximum Capacity | |||
and: | and: | |||
o n0 is the total number of IP-Layer header and payload bits that | * n0 is the total number of IP-Layer header and payload bits that | |||
can be transmitted in standard-formed packets from the Src host | can be transmitted in standard-formed packets from the Src host | |||
and correctly received by the Dst host during one contiguous sub- | and correctly received by the Dst host during one contiguous sub- | |||
interval, dt in length, during the interval [T, T+I], | interval, dt in length, during the interval [T,T+I]. | |||
o Maximum_C(T,I,PM) the Maximum IP-Layer Capacity, corresponds to | * Maximum_C(T,I,PM), the Maximum IP-Layer Capacity, corresponds to | |||
the maximum value of n0 measured in any sub-interval beginning at | the maximum value of n0 measured in any sub-interval beginning at | |||
dtn, divided by the constant length of all sub-intervals, dt. | dtn, divided by the constant length of all sub-intervals, dt. | |||
o PM represents the other performance metrics (see Section 5.4) and | * PM represents the other performance metrics (see Section 6.4) and | |||
their measurement results for the Maximum IP-Layer Capacity. At | their measurement results for the Maximum IP-Layer Capacity. At | |||
least one target performance threshold (PM criterion) MUST be | least one target performance threshold (PM criterion) MUST be | |||
defined. | defined. | |||
o all sub-intervals MUST be of equal duration. Choosing dt as non- | * All sub-intervals MUST be of equal duration. Choosing dt as non- | |||
overlapping consecutive time intervals allows for a simple | overlapping consecutive time intervals allows for a simple | |||
implementation. | implementation. | |||
o The bit rate of the physical interface of the measurement systems | * The bit rate of the physical interface of the measurement systems | |||
MUST be higher than the smallest of the links on the path whose | MUST be higher than the smallest of the links on the path whose | |||
Maximum_C(T,I,PM) is to be measured (the bottleneck link). | Maximum_C(T,I,PM) is to be measured (the bottleneck link). | |||
In this definition, the m sub-intervals can be viewed as trials when | In this definition, the m sub-intervals can be viewed as trials when | |||
the Src host varies the transmitted packet rate, searching for the | the Src host varies the transmitted packet rate, searching for the | |||
maximum n0 that meets the PM criteria measured at the Dst host in a | maximum n0 that meets the PM criteria measured at the Dst host in a | |||
test of duration, I. When the transmitted packet rate is held | test of duration I. When the transmitted packet rate is held | |||
constant at the Src host, the m sub-intervals may also be viewed as | constant at the Src host, the m sub-intervals may also be viewed as | |||
trials to evaluate the stability of n0 and metric(s) in the PM list | trials to evaluate the stability of n0 and metric(s) in the PM list | |||
over all dt-length intervals in I. | over all dt-length intervals in I. | |||
Measurements according to these definitions SHALL use the UDP | Measurements according to these definitions SHALL use the UDP | |||
transport layer. | transport layer. | |||
6.4. Related Round-Trip Delay and One-way Loss Definitions | 6.4. Related Round-Trip Delay and One-Way Loss Definitions | |||
RTD[dtn,dtn+1] and OWL[dtn,dtn+1] are defined in Section 5.4. Here, | RTD[dtn,dtn+1] and OWL[dtn,dtn+1] are defined in Section 5.4. Here, | |||
the test intervals are increased to match the capacity Samples, | the test intervals are increased to match the capacity Samples, | |||
RTD[T,I] and OWL[T,I]. | RTD[T,I] and OWL[T,I]. | |||
The interval dtn,dtn+1 where Maximum_C[T,I,PM] occurs is the | The interval dtn,dtn+1 where Maximum_C(T,I,PM) occurs is the | |||
reporting sub-interval within RTD[T,I] and OWL[T,I]. | reporting sub-interval for RTD[dtn,dtn+1] and OWL[dtn,dtn+1] within | |||
RTD[T,I] and OWL[T,I]. | ||||
Other metrics MAY be measured: one-way reordering, duplication, and | Other metrics MAY be measured: one-way reordering, duplication, and | |||
delay variation. | delay variation. | |||
6.5. Discussion | 6.5. Discussion | |||
If traffic conditioning (e.g., shaping, policing) applies along a | If traffic conditioning (e.g., shaping, policing) applies along a | |||
path for which Maximum_C(T,I,PM) is to be determined, different | path for which Maximum_C(T,I,PM) is to be determined, different | |||
values for dt SHOULD be picked and measurements be executed during | values for dt SHOULD be picked and measurements executed during | |||
multiple intervals [T, T+I]. Each duration dt SHOULD be chosen so | multiple intervals [T,T+I]. Each duration dt SHOULD be chosen so | |||
that it is an integer multiple of increasing values k times | that it is an integer multiple of increasing values k times | |||
serialization delay of a path MTU at the physical interface speed | serialization delay of a Path MTU (PMTU) at the physical interface | |||
where traffic conditioning is expected. This should avoid taking | speed where traffic conditioning is expected. This should avoid | |||
configured burst tolerance singletons as a valid Maximum_C(T,I,PM) | taking configured burst tolerance Singletons as a valid | |||
result. | Maximum_C(T,I,PM) result. | |||
A Maximum_C(T,I,PM) without any indication of bottleneck congestion, | A Maximum_C(T,I,PM) without any indication of bottleneck congestion, | |||
be that an increasing latency, packet loss or ECN marks during a | be that increased latency, packet loss, or Explicit Congestion | |||
measurement interval I, is likely to underestimate Maximum_C(T,I,PM). | Notification (ECN) marks during a measurement interval, I, is likely | |||
an underestimate of Maximum_C(T,I,PM). | ||||
6.6. Reporting the Metric | 6.6. Reporting the Metric | |||
The IP-Layer Capacity SHOULD be reported with at least single Megabit | The IP-Layer Capacity SHOULD be reported with at least single-Megabit | |||
resolution, in units of Megabits per second (Mbps) (which is | resolution, in units of Megabits per second (Mbps) (which, to avoid | |||
1,000,000 bits per second to avoid any confusion). | any confusion, is 1,000,000 bits per second). | |||
The related One-way Loss metric and Round Trip Delay measurements for | The related One-Way Loss metric and Round-Trip Delay measurements for | |||
the same Singleton SHALL be reported, also with meaningful resolution | the same Singleton SHALL be reported, also with meaningful resolution | |||
for the values measured. | for the values measured. | |||
When there are demonstrated and repeatable Capacity modes in the | When there are demonstrated and repeatable Capacity modes in the | |||
Sample, then the Maximum IP-Layer Capacity SHALL be reported for each | Sample, the Maximum IP-Layer Capacity SHALL be reported for each | |||
mode, along with the relative time from the beginning of the stream | mode, along with the relative time from the beginning of the stream | |||
that the mode was observed to be present. Bimodal Maximum IP-Layer | that the mode was observed to be present. Bimodal Maximum IP-Layer | |||
Capacities have been observed with some services, sometimes called a | Capacities have been observed with some services, sometimes called a | |||
"turbo mode" intending to deliver short transfers more quickly, or | "turbo mode" intending to deliver short transfers more quickly or | |||
reduce the initial buffering time for some video streams. Note that | reduce the initial buffering time for some video streams. Note that | |||
modes lasting less than dt duration will not be detected. | modes lasting less than duration dt will not be detected. | |||
Some transmission technologies have multiple methods of operation | Some transmission technologies have multiple methods of operation | |||
that may be activated when channel conditions degrade or improve, and | that may be activated when channel conditions degrade or improve, and | |||
these transmission methods may determine the Maximum IP-Layer | these transmission methods may determine the Maximum IP-Layer | |||
Capacity. Examples include line-of-sight microwave modulator | Capacity. Examples include line-of-sight microwave modulator | |||
constellations, or cellular modem technologies where the changes may | constellations, or cellular modem technologies where the changes may | |||
be initiated by a user moving from one coverage area to another. | be initiated by a user moving from one coverage area to another. | |||
Operation in the different transmission methods may be observed over | Operation in the different transmission methods may be observed over | |||
time, but the modes of Maximum IP-Layer Capacity will not be | time, but the modes of Maximum IP-Layer Capacity will not be | |||
activated deterministically as with the "turbo mode" described in the | activated deterministically as with the "turbo mode" described in the | |||
paragraph above. | paragraph above. | |||
7. IP-Layer Sender Bit Rate Singleton Metric Definitions | 7. IP-Layer Sender Bit Rate Singleton Metric Definitions | |||
This section sets requirements for the following components to | This section sets requirements for the following components to | |||
support the IP-Layer Sender Bitrate Metric. This metric helps to | support the IP-Layer Sender Bit Rate Metric. This metric helps to | |||
check that the sender actually generated the desired rates during a | check that the Sender actually generated the desired rates during a | |||
test, and measurement takes place at the Src host to network path | test, and measurement takes place at the interface between the Src | |||
interface (or as close as practical within the Src host). It is not | host and the network path (or as close as practical within the Src | |||
a metric for path performance. | host). It is not a metric for path performance. | |||
7.1. Formal Name | 7.1. Formal Name | |||
Type-P-IP-Sender-Bit-Rate, or informally called IP-Layer Sender | "Type-P-IP-Sender-Bit-Rate" is the formal name; it is informally | |||
Bitrate. | called the "IP-Layer Sender Bit Rate". | |||
Note that Type-P depends on the chosen method. | Note that Type-P depends on the chosen method. | |||
7.2. Parameters | 7.2. Parameters | |||
This section lists the REQUIRED input factors to specify the metric, | This section lists the REQUIRED input factors to specify the metric, | |||
beyond those listed in Section 4. | beyond those listed in Section 4. | |||
o S, the duration of the measurement interval at the Source | S: The duration of the measurement interval at the Source. | |||
o st, the nominal duration of N sub-intervals in S (default st = | st: The nominal duration of N sub-intervals in S (default st = 0.05 | |||
0.05 seconds) | seconds). | |||
o stn, the beginning boundary of a specific sub-interval, n, one of | stn: The beginning boundary of a specific sub-interval, n, one of N | |||
N sub-intervals in S | sub-intervals in S. | |||
S SHALL be longer than I, primarily to account for on-demand | S SHALL be longer than I, primarily to account for on-demand | |||
activation of the path, or any preamble to testing required, and the | activation of the path, or any preamble to testing required, and the | |||
delay of the path. | delay of the path. | |||
st SHOULD be much smaller than the sub-interval dt and on the same | st SHOULD be much smaller than the sub-interval dt and on the same | |||
order as FT, otherwise the rate measurement will include many rate | order as FT; otherwise, the rate measurement will include many rate | |||
adjustments and include more time smoothing, thus missing the Maximum | adjustments and include more time smoothing, possibly smoothing the | |||
IP-Layer Capacity. The st parameter does not have relevance when the | interval that contains the Maximum IP-Layer Capacity (and therefore | |||
losing relevance). The st Parameter does not have relevance when the | ||||
Source is transmitting at a fixed rate throughout S. | Source is transmitting at a fixed rate throughout S. | |||
7.3. Metric Definition | 7.3. Metric Definition | |||
This section defines the REQUIRED aspects of the IP-Layer Sender | This section defines the REQUIRED aspects of the IP-Layer Sender Bit | |||
Bitrate metric (unless otherwise indicated) for measurements at the | Rate Metric (unless otherwise indicated) for measurements at the | |||
specified Source on packets addressed for the intended Destination | specified Source on packets addressed for the intended Destination | |||
host and matching the required Type-P: | host and matching the required Type-P: | |||
Define the IP-Layer Sender Bit Rate, B(S,st), to be the number of IP- | Define the IP-Layer Sender Bit Rate, B(S,st), to be the number of IP- | |||
Layer bits (including header and data fields) that are transmitted | Layer bits (including header and data fields) that are transmitted | |||
from the Source with address pair Src and Dst during one contiguous | from the Source with address pair Src and Dst during one contiguous | |||
sub-interval, st, during the test interval S (where S SHALL be longer | sub-interval, st, during the test interval S (where S SHALL be longer | |||
than I), and where the fixed-size packet count during that single | than I) and where the fixed-size packet count during that single sub- | |||
sub-interval st also provides the number of IP-Layer bits in any | interval st also provides the number of IP-Layer bits in any | |||
interval, [stn,stn+1]. | interval, [stn,stn+1]. | |||
Measurements according to these definitions SHALL use the UDP | Measurements according to this definition SHALL use the UDP transport | |||
transport layer. Any feedback from Dst host to Src host received by | layer. Any feedback from the Dst host to the Src host received by | |||
Src host during an interval [stn,stn+1] SHOULD NOT result in an | the Src host during an interval [stn,stn+1] SHOULD NOT result in an | |||
adaptation of the Src host traffic conditioning during this interval | adaptation of the Src host traffic conditioning during this interval | |||
(rate adjustment occurs on st interval boundaries). | (rate adjustment occurs on st interval boundaries). | |||
7.4. Discussion | 7.4. Discussion | |||
Both the Sender and Receiver or (Source and Destination) bit rates | Both the Sender and Receiver (or Source and Destination) bit rates | |||
SHOULD be assessed as part of an IP-Layer Capacity measurement. | SHOULD be assessed as part of an IP-Layer Capacity measurement. | |||
Otherwise, an unexpected sending rate limitation could produce an | Otherwise, an unexpected sending rate limitation could produce an | |||
erroneous Maximum IP-Layer Capacity measurement. | erroneous Maximum IP-Layer Capacity measurement. | |||
7.5. Reporting the Metric | 7.5. Reporting the Metric | |||
The IP-Layer Sender Bit Rate SHALL be reported with meaningful | The IP-Layer Sender Bit Rate SHALL be reported with meaningful | |||
resolution, in units of Megabits per second (which is 1,000,000 bits | resolution, in units of Megabits per second (which, to avoid any | |||
per second to avoid any confusion). | confusion, is 1,000,000 bits per second). | |||
Individual IP-Layer Sender Bit Rate measurements are discussed | Individual IP-Layer Sender Bit Rate measurements are discussed | |||
further in Section 9. | further in Section 9. | |||
8. Method of Measurement | 8. Method of Measurement | |||
The architecture of the method REQUIRES two cooperating hosts | It is REQUIRED per the architecture of the method that two | |||
operating in the roles of Src (test packet sender) and Dst | cooperating hosts operate in the roles of Src (test packet Sender) | |||
(receiver), with a measured path and return path between them. | and Dst (Receiver) with a measured path and return path between them. | |||
The duration of a test, parameter I, MUST be constrained in a | The duration of a test, Parameter I, MUST be constrained in a | |||
production network, since this is an active test method and it will | production network, since this is an active test method and it will | |||
likely cause congestion on the Src to Dst host path during a test. | likely cause congestion on the path from the Src host to the Dst host | |||
during a test. | ||||
8.1. Load Rate Adjustment Algorithm | 8.1. Load Rate Adjustment Algorithm | |||
The algorithm described in this section MUST NOT be used as a general | The algorithm described in this section MUST NOT be used as a general | |||
Congestion Control Algorithm (CCA). As stated in the Scope | Congestion Control Algorithm (CCA). As stated in Section 2 ("Scope, | |||
Section 2, the load rate adjustment algorithm's goal is to help | Goals, and Applicability"), the load rate adjustment algorithm's goal | |||
determine the Maximum IP-Layer Capacity in the context of an | is to help determine the Maximum IP-Layer Capacity in the context of | |||
infrequent, diagnostic, short term measurement. There is a tradeoff | an infrequent, diagnostic, short-term measurement. There is a trade- | |||
between test duration (also the test data volume) and algorithm | off between test duration (also the test data volume) and algorithm | |||
aggressiveness (speed of ramp-up and down to the Maximum IP-Layer | aggressiveness (speed of ramp-up and ramp-down to the Maximum IP- | |||
Capacity). The parameter values chosen below strike a well-tested | Layer Capacity). The Parameter values chosen below strike a well- | |||
balance among these factors. | tested balance among these factors. | |||
A table SHALL be pre-built (by the test initiator) defining all the | A table SHALL be pre-built (by the test administrator), defining all | |||
offered load rates that will be supported (R1 through Rn, in | the offered load rates that will be supported (R1 through Rn, in | |||
ascending order, corresponding to indexed rows in the table). It is | ascending order, corresponding to indexed rows in the table). It is | |||
RECOMMENDED that rates begin with 0.5 Mbps at index zero, use 1 Mbps | RECOMMENDED that rates begin with 0.5 Mbps at index zero, use 1 Mbps | |||
at index one, and then continue in 1 Mbps increments to 1 Gbps. | at index one, and then continue in 1 Mbps increments to 1 Gbps. | |||
Above 1 Gbps, and up to 10 Gbps, it is RECOMMENDED that 100 Mbps | Above 1 Gbps, and up to 10 Gbps, it is RECOMMENDED that 100 Mbps | |||
increments be used. Above 10 Gbps, increments of 1 Gbps are | increments be used. Above 10 Gbps, increments of 1 Gbps are | |||
RECOMMENDED. A higher initial IP-Layer Sender Bitrate might be | RECOMMENDED. A higher initial IP-Layer Sender Bit Rate might be | |||
configured when the test operator is certain that the Maximum IP- | configured when the test operator is certain that the Maximum IP- | |||
Layer Capacity is well-above the initial IP-Layer Sender Bitrate and | Layer Capacity is well above the initial IP-Layer Sender Bit Rate and | |||
factors such as test duration and total test traffic play an | factors such as test duration and total test traffic play an | |||
important role. The sending rate table SHOULD backet the maximum | important role. The sending rate table SHOULD bracket the Maximum | |||
capacity where it will make measurements, including constrained rates | Capacity where it will make measurements, including constrained rates | |||
less than 500kbps if applicable. | less than 500 kbps if applicable. | |||
Each rate is defined as datagrams of size ss, sent as a burst of | Each rate is defined as datagrams of size ss, sent as a burst of | |||
count cc, each time interval tt (default for tt is 1ms, a likely | count cc, each time interval tt (the default for tt is 100 microsec, | |||
system tick-interval). While it is advantageous to use datagrams of | a likely system tick interval). While it is advantageous to use | |||
as large a size as possible, it may be prudent to use a slightly | datagrams of as large a size as possible, it may be prudent to use a | |||
smaller maximum that allows for secondary protocol headers and/or | slightly smaller maximum that allows for secondary protocol headers | |||
tunneling without resulting in IP-Layer fragmentation. Selection of | and/or tunneling without resulting in IP-Layer fragmentation. | |||
a new rate is indicated by a calculation on the current row, Rx. For | Selection of a new rate is indicated by a calculation on the current | |||
example: | row, Rx. For example: | |||
"Rx+1": the sender uses the next higher rate in the table. | "Rx+1": The Sender uses the next-higher rate in the table. | |||
"Rx-10": the sender uses the rate 10 rows lower in the table. | "Rx-10": The Sender uses the rate 10 rows lower in the table. | |||
At the beginning of a test, the sender begins sending at rate R1 and | At the beginning of a test, the Sender begins sending at rate R1 and | |||
the receiver starts a feedback timer of duration FT (while awaiting | the Receiver starts a feedback timer of duration FT (while awaiting | |||
inbound datagrams). As datagrams are received they are checked for | inbound datagrams). As datagrams are received, they are checked for | |||
sequence number anomalies (loss, out-of-order, duplication, etc.) and | sequence number anomalies (loss, out-of-order, duplication, etc.) and | |||
the delay range is measured (one-way or round-trip). This | the delay range is measured (one-way or round-trip). This | |||
information is accumulated until the feedback timer FT expires and a | information is accumulated until the feedback timer FT expires and a | |||
status feedback message is sent from the receiver back to the sender, | status feedback message is sent from the Receiver back to the Sender, | |||
to communicate this information. The accumulated statistics are then | to communicate this information. The accumulated statistics are then | |||
reset by the receiver for the next feedback interval. As feedback | reset by the Receiver for the next feedback interval. As feedback | |||
messages are received back at the sender, they are evaluated to | messages are received back at the Sender, they are evaluated to | |||
determine how to adjust the current offered load rate (Rx). | determine how to adjust the current offered load rate (Rx). | |||
If the feedback indicates that no sequence number anomalies were | If the feedback indicates that no sequence number anomalies were | |||
detected AND the delay range was below the lower threshold, the | detected AND the delay range was below the lower threshold, the | |||
offered load rate is increased. If congestion has not been confirmed | offered load rate is increased. If congestion has not been confirmed | |||
up to this point (see below for the method to declare congestion), | up to this point (see below for the method for declaring congestion), | |||
the offered load rate is increased by more than one rate (e.g., | the offered load rate is increased by more than one rate setting | |||
Rx+10). This allows the offered load to quickly reach a near-maximum | (e.g., Rx+10). This allows the offered load to quickly reach a near- | |||
rate. Conversely, if congestion has been previously confirmed, the | maximum rate. Conversely, if congestion has been previously | |||
offered load rate is only increased by one (Rx+1). However, if a | confirmed, the offered load rate is only increased by one (Rx+1). | |||
rate threshold between high and very high sending rates (such as 1 | However, if a rate threshold above a high sending rate (such as 1 | |||
Gbps) is exceeded, the offered load rate is only increased by one | Gbps) is exceeded, the offered load rate is only increased by one | |||
(Rx+1) above the rate threshold in any congestion state. | (Rx+1) in any congestion state. | |||
If the feedback indicates that sequence number anomalies were | If the feedback indicates that sequence number anomalies were | |||
detected OR the delay range was above the upper threshold, the | detected OR the delay range was above the upper threshold, the | |||
offered load rate is decreased. The RECOMMENDED threshold values are | offered load rate is decreased. The RECOMMENDED threshold values are | |||
0 for sequence number gaps and 30 ms for lower and 90 ms for upper | 10 for sequence number gaps and 30 msec for lower and 90 msec for | |||
delay thresholds, respectively. Also, if congestion is now confirmed | upper delay thresholds, respectively. Also, if congestion is now | |||
for the first time by the current feedback message being processed, | confirmed for the first time by the current feedback message being | |||
then the offered load rate is decreased by more than one rate (e.g., | processed, then the offered load rate is decreased by more than one | |||
Rx-30). This one-time reduction is intended to compensate for the | rate setting (e.g., Rx-30). This one-time reduction is intended to | |||
fast initial ramp-up. In all other cases, the offered load rate is | compensate for the fast initial ramp-up. In all other cases, the | |||
only decreased by one (Rx-1). | offered load rate is only decreased by one (Rx-1). | |||
If the feedback indicates that there were no sequence number | If the feedback indicates that there were no sequence number | |||
anomalies AND the delay range was above the lower threshold, but | anomalies AND the delay range was above the lower threshold but below | |||
below the upper threshold, the offered load rate is not changed. | the upper threshold, the offered load rate is not changed. This | |||
This allows time for recent changes in the offered load rate to | allows time for recent changes in the offered load rate to stabilize | |||
stabilize, and the feedback to represent current conditions more | and for the feedback to represent current conditions more accurately. | |||
accurately. | ||||
Lastly, the method for inferring congestion is that there were | Lastly, the method for inferring congestion is that there were | |||
sequence number anomalies AND/OR the delay range was above the upper | sequence number anomalies AND/OR the delay range was above the upper | |||
threshold for two consecutive feedback intervals. The algorithm | threshold for three consecutive feedback intervals. The algorithm | |||
described above is also illustrated in ITU-T Rec. Y.1540, 2020 | described above is also illustrated in Annex B of ITU-T | |||
version[Y.1540], in Annex B, and implemented in the Appendix on Load | Recommendation Y.1540, 2020 version [Y.1540] and is implemented in | |||
Rate Adjustment Pseudo Code in this memo. | Appendix A ("Load Rate Adjustment Pseudocode") in this memo. | |||
The load rate adjustment algorithm MUST include timers that stop the | The load rate adjustment algorithm MUST include timers that stop the | |||
test when received packet streams cease unexpectedly. The timeout | test when received packet streams cease unexpectedly. The timeout | |||
thresholds are provided in the table below, along with values for all | thresholds are provided in Table 1, along with values for all other | |||
other parameters and variables described in this section. Operation | Parameters and variables described in this section. Operations of | |||
of non-obvious parameters appear below: | non-obvious Parameters appear below: | |||
load packet timeout Operation: The load packet timeout SHALL be | load packet timeout: | |||
reset to the configured value each time a load packet received. | The load packet timeout SHALL be reset to the configured value | |||
If the timeout expires, the receiver SHALL be closed and no | each time a load packet is received. If the timeout expires, the | |||
further feedback sent. | Receiver SHALL be closed and no further feedback sent. | |||
feedback message timeout Operation: The feedback message timeout | feedback message timeout: | |||
SHALL be reset to the configured value each time a feedback | The feedback message timeout SHALL be reset to the configured | |||
message is received. If the timeout expires, the sender SHALL be | value each time a feedback message is received. If the timeout | |||
closed and no further load packets sent. | expires, the Sender SHALL be closed and no further load packets | |||
sent. | ||||
+-------------+-------------+---------------+-----------------------+ | +=============+==========+===========+=========================+ | |||
| Parameter | Default | Tested Range | Expected Safe Range | | | Parameter | Default | Tested | Expected Safe Range | | |||
| | | or values | (not entirely tested, | | | | | Range or | (not entirely tested, | | |||
| | | | other | | | | | Values | other values NOT | | |||
| | | | values NOT | | | | | | RECOMMENDED) | | |||
| | | | RECOMMENDED) | | +=============+==========+===========+=========================+ | |||
+-------------+-------------+---------------+-----------------------+ | | FT, | 50 msec | 20 msec, | 20 msec <= FT <= 250 | | |||
| FT, | 50ms | 20ms, 50ms, | 20ms <= FT <= 250ms | | | feedback | | 50 msec, | msec; larger values may | | |||
| feedback | | 100ms | Larger values may | | | time | | 100 msec | slow the rate increase | | |||
| time | | | slow the rate | | | interval | | | and fail to find the | | |||
| interval | | | increase and fail to | | | | | | max | | |||
| | | | find the max | | +-------------+----------+-----------+-------------------------+ | |||
+-------------+-------------+---------------+-----------------------+ | | Feedback | L*FT, | L=100 | 0.5 sec <= L*FT <= 30 | | |||
| Feedback | L*FT, L=20 | L=100 with | 0.5sec <= L*FT <= | | | message | L=20 (1 | with | sec; upper limit for | | |||
| message | (1sec with | FT=50ms | 30sec Upper limit for | | | timeout | sec with | FT=50 | very unreliable test | | |||
| timeout | FT=50ms) | (5sec) | very unreliable | | | (stop test) | FT=50 | msec (5 | paths only | | |||
| (stop test) | | | test paths only | | | | msec) | sec) | | | |||
+-------------+-------------+---------------+-----------------------+ | +-------------+----------+-----------+-------------------------+ | |||
| load packet | 1sec | 5sec | 0.250sec - 30sec | | | Load packet | 1 sec | 5 sec | 0.250-30 sec; upper | | |||
| timeout | | | Upper limit for very | | | timeout | | | limit for very | | |||
| (stop test) | | | unreliable test paths | | | (stop test) | | | unreliable test paths | | |||
| | | | only | | | | | | only | | |||
+-------------+-------------+---------------+-----------------------+ | +-------------+----------+-----------+-------------------------+ | |||
| table index | 0.5Mbps | 0.5Mbps | when testing <=10Gbps | | | Table index | 0.5 Mbps | 0.5 Mbps | When testing <= 10 Gbps | | |||
| 0 | | | | | | 0 | | | | | |||
+-------------+-------------+---------------+-----------------------+ | +-------------+----------+-----------+-------------------------+ | |||
| table index | 1Mbps | 1Mbps | when testing <=10Gbps | | | Table index | 1 Mbps | 1 Mbps | When testing <= 10 Gbps | | |||
| 1 | | | | | | 1 | | | | | |||
+-------------+-------------+---------------+-----------------------+ | +-------------+----------+-----------+-------------------------+ | |||
| table index | 1Mbps | 1Mbps<=rate<= | same as tested | | | Table index | 1 Mbps | 1 Mbps <= | Same as tested | | |||
| (step) size | | 1Gbps | | | | (step) size | | rate <= 1 | | | |||
+-------------+-------------+---------------+-----------------------+ | | | | Gbps | | | |||
| table index | 100Mbps | 1Gbps<=rate<= | same as tested | | +-------------+----------+-----------+-------------------------+ | |||
| (step) | | 10Gbps | | | | Table index | 100 Mbps | 1 Gbps <= | Same as tested | | |||
| size, | | | | | | (step) | | rate <= | | | |||
| rate>1Gbps | | | | | | size, rate | | 10 Gbps | | | |||
+-------------+-------------+---------------+-----------------------+ | | > 1 Gbps | | | | | |||
| table index | 1Gbps | untested | >10Gbps | | +-------------+----------+-----------+-------------------------+ | |||
| (step) | | | | | | Table index | 1 Gbps | Untested | >10 Gbps | | |||
| size, | | | | | | (step) | | | | | |||
| rate>10Gbps | | | | | | size, rate | | | | | |||
+-------------+-------------+---------------+-----------------------+ | | > 10 Gbps | | | | | |||
| ss, UDP | none | <=1222 | Recommend max at | | +-------------+----------+-----------+-------------------------+ | |||
| payload | | | largest value that | | | ss, UDP | None | <=1222 | Recommend max at | | |||
| size, bytes | | | avoids fragmentation; | | | payload | | | largest value that | | |||
| | | | use of too- | | | size, bytes | | | avoids fragmentation; | | |||
| | | | small payload size | | | | | | using a payload size | | |||
| | | | might result in | | | | | | that is too small might | | |||
| | | | unexpected sender | | | | | | result in unexpected | | |||
| | | | limitations. | | | | | | Sender limitations | | |||
+-------------+-------------+---------------+-----------------------+ | +-------------+----------+-----------+-------------------------+ | |||
| cc, burst | none | 1<=cc<= 100 | same as tested. Vary | | | cc, burst | None | 1 <= cc | Same as tested. Vary | | |||
| count | | | cc as needed to | | | count | | <= 100 | cc as needed to create | | |||
| | | | create the desired | | | | | | the desired maximum | | |||
| | | | maximum | | | | | | sending rate. Sender | | |||
| | | | sending rate. Sender | | | | | | buffer size may limit | | |||
| | | | buffer size may limit | | | | | | cc in the | | |||
| | | | cc in implementation. | | | | | | implementation | | |||
+-------------+-------------+---------------+-----------------------+ | +-------------+----------+-----------+-------------------------+ | |||
| tt, burst | 100microsec | 100microsec, | available range of | | | tt, burst | 100 | 100 | Available range of | | |||
| interval | | 1msec | "tick" values (HZ | | | interval | microsec | microsec, | "tick" values (HZ | | |||
| | | | param) | | | | | 1 msec | param) | | |||
+-------------+-------------+---------------+-----------------------+ | +-------------+----------+-----------+-------------------------+ | |||
| low delay | 30ms | 5ms, 30ms | same as tested | | | Low delay | 30 msec | 5 msec, | Same as tested | | |||
| range | | | | | | range | | 30 msec | | | |||
| threshold | | | | | | threshold | | | | | |||
+-------------+-------------+---------------+-----------------------+ | +-------------+----------+-----------+-------------------------+ | |||
| high delay | 90ms | 10ms, 90ms | same as tested | | | High delay | 90 msec | 10 msec, | Same as tested | | |||
| range | | | | | | range | | 90 msec | | | |||
| threshold | | | | | | threshold | | | | | |||
+-------------+-------------+---------------+-----------------------+ | +-------------+----------+-----------+-------------------------+ | |||
| sequence | 0 | 0, 100 | same as tested | | | Sequence | 10 | 0, 1, 5, | Same as tested | | |||
| error | | | | | | error | | 10, 100 | | | |||
| threshold | | | | | | threshold | | | | | |||
+-------------+-------------+---------------+-----------------------+ | +-------------+----------+-----------+-------------------------+ | |||
| consecutive | 2 | 2 | Use values >1 to | | | Consecutive | 3 | 2, 3, 4, | Use values >1 to avoid | | |||
| errored | | | avoid misinterpreting | | | errored | | 5 | misinterpreting | | |||
| status | | | transient loss | | | status | | | transient loss | | |||
| report | | | | | | report | | | | | |||
| threshold | | | | | | threshold | | | | | |||
+-------------+-------------+---------------+-----------------------+ | +-------------+----------+-----------+-------------------------+ | |||
| Fast mode | 10 | 10 | 2 <= steps <= 30 | | | Fast mode | 10 | 10 | 2 <= steps <= 30 | | |||
| increase, | | | | | | increase, | | | | | |||
| in table | | | | | | in table | | | | | |||
| index steps | | | | | | index steps | | | | | |||
+-------------+-------------+---------------+-----------------------+ | +-------------+----------+-----------+-------------------------+ | |||
| Fast mode | 3 * Fast | 3 * Fast mode | same as tested | | | Fast mode | 3 * Fast | 3 * Fast | Same as tested | | |||
| decrease, | mode | increase | | | | decrease, | mode | mode | | | |||
| in table | increase | | | | | in table | increase | increase | | | |||
| index steps | | | | | | index steps | | | | | |||
+-------------+-------------+---------------+-----------------------+ | +-------------+----------+-----------+-------------------------+ | |||
Parameters for Load Rate Adjustment Algorithm | Table 1: Parameters for Load Rate Adjustment Algorithm | |||
As a consequence of default parameterization, the Number of table | As a consequence of default parameterization, the Number of table | |||
steps in total for rates <10Gbps is 2000 (excluding index 0). | steps in total for rates less than 10 Gbps is 1090 (excluding index | |||
0). | ||||
A related sender backoff response to network conditions occurs when | A related Sender backoff response to network conditions occurs when | |||
one or more status feedback messages fail to arrive at the sender. | one or more status feedback messages fail to arrive at the Sender. | |||
If no status feedback messages arrive at the sender for the interval | If no status feedback messages arrive at the Sender for the interval | |||
greater than the Lost Status Backoff timeout: | greater than the Lost Status Backoff timeout: | |||
UDRT + (2+w)*FT = Lost Status Backoff timeout | UDRT + (2+w)*FT = Lost Status Backoff timeout | |||
where: | where: | |||
UDRT = upper delay range threshold (default 90ms) | ||||
FT = feedback time interval (default 50ms) | UDRT = upper delay range threshold (default 90 msec) | |||
FT = feedback time interval (default 50 msec) | ||||
w = number of repeated timeouts (w=0 initially, w++ on each | w = number of repeated timeouts (w=0 initially, w++ on each | |||
timeout, and reset to 0 when a message is received) | timeout, and reset to 0 when a message is received) | |||
beginning when the last message (of any type) was successfully | Beginning when the last message (of any type) was successfully | |||
received at the sender: | received at the Sender: | |||
Then the offered load SHALL be decreased, following the same process | The offered load SHALL then be decreased, following the same process | |||
as when the feedback indicates presence of one or more sequence | as when the feedback indicates the presence of one or more sequence | |||
number anomalies OR the delay range was above the upper threshold (as | number anomalies OR the delay range was above the upper threshold (as | |||
described above), with the same load rate adjustment algorithm | described above), with the same load rate adjustment algorithm | |||
variables in their current state. This means that rate reduction and | variables in their current state. This means that lost status | |||
congestion confirmation can result from a three-way OR that includes | feedback messages OR sequence errors OR delay variation can result in | |||
lost status feedback messages, sequence errors, or delay variation. | rate reduction and congestion confirmation. | |||
The RECOMMENDED initial value for w is 0, taking Round Trip Time | The RECOMMENDED initial value for w is 0, taking a Round-Trip Time | |||
(RTT) less than FT into account. A test with RTT longer than FT is a | (RTT) of less than FT into account. A test with an RTT longer than | |||
valid reason to increase the initial value of w appropriately. | FT is a valid reason to increase the initial value of w | |||
Variable w SHALL be incremented by 1 whenever the Lost Status Backoff | appropriately. Variable w SHALL be incremented by one whenever the | |||
timeout is exceeded. So with FT = 50ms and UDRT = 90ms, a status | Lost Status Backoff timeout is exceeded. So, with FT = 50 msec and | |||
feedback message loss would be declared at 190ms following a | UDRT = 90 msec, a status feedback message loss would be declared at | |||
successful message, again at 50ms after that (240ms total), and so | 190 msec following a successful message, again at 50 msec after that | |||
on. | (240 msec total), and so on. | |||
Also, if congestion is now confirmed for the first time by a Lost | Also, if congestion is now confirmed for the first time by a Lost | |||
Status Backoff timeout, then the offered load rate is decreased by | Status Backoff timeout, then the offered load rate is decreased by | |||
more than one rate (e.g., Rx-30). This one-time reduction is | more than one rate setting (e.g., Rx-30). This one-time reduction is | |||
intended to compensate for the fast initial ramp-up. In all other | intended to compensate for the fast initial ramp-up. In all other | |||
cases, the offered load rate is only decreased by one (Rx-1). | cases, the offered load rate is only decreased by one (Rx-1). | |||
Appendix B discusses compliance with the applicable mandatory | Appendix B discusses compliance with the applicable mandatory | |||
requirements of [RFC8085], consistent with the goals of the IP-Layer | requirements of [RFC8085], consistent with the goals of the IP-Layer | |||
Capacity Metric and Method, including the load rate adjustment | Capacity Metric and Method, including the load rate adjustment | |||
algorithm described in this section. | algorithm described in this section. | |||
8.2. Measurement Qualification or Verification | 8.2. Measurement Qualification or Verification | |||
It is of course necessary to calibrate the equipment performing the | It is of course necessary to calibrate the equipment performing the | |||
IP-Layer Capacity measurement, to ensure that the expected capacity | IP-Layer Capacity measurement, to ensure that the expected capacity | |||
can be measured accurately, and that equipment choices (processing | can be measured accurately and that equipment choices (processing | |||
speed, interface bandwidth, etc.) are suitably matched to the | speed, interface bandwidth, etc.) are suitably matched to the | |||
measurement range. | measurement range. | |||
When assessing a Maximum rate as the metric specifies, artificially | When assessing a maximum rate as the metric specifies, artificially | |||
high (optimistic) values might be measured until some buffer on the | high (optimistic) values might be measured until some buffer on the | |||
path is filled. Other causes include bursts of back-to-back packets | path is filled. Other causes include bursts of back-to-back packets | |||
with idle intervals delivered by a path, while the measurement | with idle intervals delivered by a path, while the measurement | |||
interval (dt) is small and aligned with the bursts. The artificial | interval (dt) is small and aligned with the bursts. The artificial | |||
values might result in an un-sustainable Maximum Capacity observed | values might result in an unsustainable Maximum Capacity observed | |||
when the method of measurement is searching for the Maximum, and that | when the Method of Measurement is searching for the maximum, and that | |||
would not do. This situation is different from the bi-modal service | would not do. This situation is different from the bimodal service | |||
rates (discussed under Reporting), which are characterized by a | rates (discussed in "Reporting the Metric", Section 6.6), which are | |||
multi-second duration (much longer than the measured RTT) and | characterized by a multi-second duration (much longer than the | |||
repeatable behavior. | measured RTT) and repeatable behavior. | |||
There are many ways that the Method of Measurement could handle this | There are many ways that the Method of Measurement could handle this | |||
false-max issue. The default value for measurement of singletons (dt | false-max issue. The default value for measurement of Singletons (dt | |||
= 1 second) has proven to be of practical value during tests of this | = 1 second) has proven to be of practical value during tests of this | |||
method, allows the bimodal service rates to be characterized, and it | method, allows the bimodal service rates to be characterized, and has | |||
has an obvious alignment with the reporting units (Mbps). | an obvious alignment with the reporting units (Mbps). | |||
Another approach comes from Section 24 of [RFC2544] and its | Another approach comes from Section 24 of [RFC2544] and its | |||
discussion of Trial duration, where relatively short trials conducted | discussion of trial duration, where relatively short trials conducted | |||
as part of the search are followed by longer trials to make the final | as part of the search are followed by longer trials to make the final | |||
determination. In the production network, measurements of Singletons | determination. In the production network, measurements of Singletons | |||
and Samples (the terms for trials and tests of Lab Benchmarking) must | and Samples (the terms for trials and tests of Lab Benchmarking) must | |||
be limited in duration because they may be service-affecting. But | be limited in duration because they may affect service. But there is | |||
there is sufficient value in repeating a Sample with a fixed sending | sufficient value in repeating a Sample with a fixed sending rate | |||
rate determined by the previous search for the Maximum IP-Layer | determined by the previous search for the Maximum IP-Layer Capacity, | |||
Capacity, to qualify the result in terms of the other performance | to qualify the result in terms of the other performance metrics | |||
metrics measured at the same time. | measured at the same time. | |||
A qualification measurement for the search result is a subsequent | A Qualification measurement for the search result is a subsequent | |||
measurement, sending at a fixed 99.x % of the Maximum IP-Layer | measurement, sending at a fixed 99.x percent of the Maximum IP-Layer | |||
Capacity for I, or an indefinite period. The same Maximum Capacity | Capacity for I, or an indefinite period. The same Maximum Capacity | |||
Metric is applied, and the Qualification for the result is a Sample | Metric is applied, and the Qualification for the result is a Sample | |||
without packet loss or a growing minimum delay trend in subsequent | without supra-threshold packet losses or a growing minimum delay | |||
singletons (or each dt of the measurement interval, I). Samples | trend in subsequent Singletons (or each dt of the measurement | |||
exhibiting losses or increasing queue occupation require a repeated | interval, I). Samples exhibiting supra-threshold packet losses or | |||
search and/or test at reduced fixed sender rate for qualification. | increasing queue occupation require a repeated search and/or test at | |||
a reduced fixed Sender rate for Qualification. | ||||
Here, as with any Active Capacity test, the test duration must be | Here, as with any Active Capacity test, the test duration must be | |||
kept short. 10 second tests for each direction of transmission are | kept short. Ten-second tests for each direction of transmission are | |||
common today. The default measurement interval specified here is I = | common today. The default measurement interval specified here is I = | |||
10 seconds. The combination of a fast and congestion-aware search | 10 seconds. The combination of a fast and congestion-aware search | |||
method and user-network coordination make a unique contribution to | method and user-network coordination makes a unique contribution to | |||
production testing. The Maximum IP Capacity metric and method for | production testing. The Maximum IP Capacity Metric and Method for | |||
assessing performance is very different from classic [RFC2544] | assessing performance is very different from the classic Throughput | |||
Throughput metric and methods : it uses near-real-time load | Metric and Methods provided in [RFC2544]: it uses near-real-time load | |||
adjustments that are sensitive to loss and delay, similar to other | adjustments that are sensitive to loss and delay, similar to other | |||
congestion control algorithms used on the Internet every day, along | congestion control algorithms used on the Internet every day, along | |||
with limited duration. On the other hand, [RFC2544] Throughput | with limited duration. On the other hand, Throughput measurements | |||
measurements can produce sustained overload conditions for extended | [RFC2544] can produce sustained overload conditions for extended | |||
periods of time. Individual trials in a test governed by a binary | periods of time. Individual trials in a test governed by a binary | |||
search can last 60 seconds for each step, and the final confirmation | search can last 60 seconds for each step, and the final confirmation | |||
trial may be even longer. This is very different from "normal" | trial may be even longer. This is very different from "normal" | |||
traffic levels, but overload conditions are not a concern in the | traffic levels, but overload conditions are not a concern in the | |||
isolated test environment. The concerns raised in [RFC6815] were | isolated test environment. The concerns raised in [RFC6815] were | |||
that [RFC2544] methods would be let loose on production networks, and | that the methods discussed in [RFC2544] would be let loose on | |||
instead the authors challenged the standards community to develop | production networks, and instead the authors challenged the standards | |||
metrics and methods like those described in this memo. | community to develop Metrics and Methods like those described in this | |||
memo. | ||||
8.3. Measurement Considerations | 8.3. Measurement Considerations | |||
In general, the wide-spread measurements that this memo encourages | In general, the widespread measurements that this memo encourages | |||
will encounter wide-spread behaviors. The bimodal IP Capacity | will encounter widespread behaviors. The bimodal IP Capacity | |||
behaviors already discussed in Section 6.6 are good examples. | behaviors already discussed in Section 6.6 are good examples. | |||
In general, it is RECOMMENDED to locate test endpoints as close to | In general, it is RECOMMENDED to locate test endpoints as close to | |||
the intended measured link(s) as practical (this is not always | the intended measured link(s) as practical (for reasons of scale, | |||
possible for reasons of scale; there is a limit on number of test | this is not always possible; there is a limit on the number of test | |||
endpoints coming from many perspectives, management and measurement | endpoints coming from many perspectives -- for example, management | |||
traffic for example). The testing operator MUST set a value for the | and measurement traffic). The testing operator MUST set a value for | |||
MaxHops parameter, based on the expected path length. This parameter | the MaxHops Parameter, based on the expected path length. This | |||
can keep measurement traffic from straying too far beyond the | Parameter can keep measurement traffic from straying too far beyond | |||
intended path. | the intended path. | |||
The path measured may be stateful based on many factors, and the | The measured path may be stateful based on many factors, and the | |||
Parameter "Time of day" when a test starts may not be enough | Parameter "Time of day" when a test starts may not be enough | |||
information. Repeatable testing may require the time from the | information. Repeatable testing may require knowledge of the time | |||
beginning of a measured flow, and how the flow is constructed | from the beginning of a measured flow -- and how the flow is | |||
including how much traffic has already been sent on that flow when a | constructed, including how much traffic has already been sent on that | |||
state-change is observed, because the state-change may be based on | flow when a state change is observed -- because the state change may | |||
time or bytes sent or both. Both load packets and status feedback | be based on time, bytes sent, or both. Both load packets and status | |||
messages MUST contain sequence numbers, which helps with measurements | feedback messages MUST contain sequence numbers; this helps with | |||
based on those packets. | measurements based on those packets. | |||
Many different types of traffic shapers and on-demand communications | Many different types of traffic shapers and on-demand communications | |||
access technologies may be encountered, as anticipated in [RFC7312], | access technologies may be encountered, as anticipated in [RFC7312], | |||
and play a key role in measurement results. Methods MUST be prepared | and play a key role in measurement results. Methods MUST be prepared | |||
to provide a short preamble transmission to activate on-demand | to provide a short preamble transmission to activate on-demand | |||
communications access, and to discard the preamble from subsequent | communications access and to discard the preamble from subsequent | |||
test results. | test results. | |||
Conditions which might be encountered during measurement, where | The following conditions might be encountered during measurement, | |||
packet losses may occur independently of the measurement sending | where packet losses may occur independently of the measurement | |||
rate: | sending rate: | |||
1. Congestion of an interconnection or backbone interface may appear | 1. Congestion of an interconnection or backbone interface may appear | |||
as packet losses distributed over time in the test stream, due to | as packet losses distributed over time in the test stream, due to | |||
much higher rate interfaces in the backbone. | much-higher-rate interfaces in the backbone. | |||
2. Packet loss due to use of Random Early Detection (RED) or other | 2. Packet loss due to the use of Random Early Detection (RED) or | |||
active queue management may or may not affect the measurement | other active queue management may or may not affect the | |||
flow if competing background traffic (other flows) are | measurement flow if competing background traffic (other flows) is | |||
simultaneously present. | simultaneously present. | |||
3. There may be only small delay variation independent of sending | 3. There may be only a small delay variation independent of the | |||
rate under these conditions, too. | sending rate under these conditions as well. | |||
4. Persistent competing traffic on measurement paths that include | 4. Persistent competing traffic on measurement paths that include | |||
shared transmission media may cause random packet losses in the | shared transmission media may cause random packet losses in the | |||
test stream. | test stream. | |||
It is possible to mitigate these conditions using the flexibility of | It is possible to mitigate these conditions using the flexibility of | |||
the load-rate adjusting algorithm described in Section 8.1 above | the load rate adjustment algorithm described in Section 8.1 above | |||
(tuning specific parameters). | (tuning specific Parameters). | |||
If the measurement flow burst duration happens to be on the order of | If the measurement flow burst duration happens to be on the order of | |||
or smaller than the burst size of a shaper or a policer in the path, | or smaller than the burst size of a shaper or a policer in the path, | |||
then the line rate might be measured rather than the bandwidth limit | then the line rate might be measured rather than the bandwidth limit | |||
imposed by the shaper or policer. If this condition is suspected, | imposed by the shaper or policer. If this condition is suspected, | |||
alternate configurations SHOULD be used. | alternate configurations SHOULD be used. | |||
In general, results depend on the sending stream characteristics; the | In general, results depend on the sending stream's characteristics; | |||
measurement community has known this for a long time, and needs to | the measurement community has known this for a long time and needs to | |||
keep it front of mind. Although the default is a single flow (F=1) | keep it foremost in mind. Although the default is a single flow | |||
for testing, use of multiple flows may be advantageous for the | (F=1) for testing, the use of multiple flows may be advantageous for | |||
following reasons: | the following reasons: | |||
1. the test hosts may be able to create higher load than with a | 1. The test hosts may be able to create a higher load than with a | |||
single flow, or parallel test hosts may be used to generate 1 | single flow, or parallel test hosts may be used to generate one | |||
flow each. | flow each. | |||
2. there may be link aggregation present (flow-based load balancing) | 2. Link aggregation may be present (flow-based load balancing), and | |||
and multiple flows are needed to occupy each member of the | multiple flows are needed to occupy each member of the aggregate. | |||
aggregate. | ||||
3. Internet access policies may limit the IP-Layer Capacity | 3. Internet access policies may limit the IP-Layer Capacity | |||
depending on the Type-P of packets, possibly reserving capacity | depending on the Type-P of the packets, possibly reserving | |||
for various stream types. | capacity for various stream types. | |||
Each flow would be controlled using its own implementation of the | Each flow would be controlled using its own implementation of the | |||
load rate adjustment (search) algorithm. | load rate adjustment (search) algorithm. | |||
It is obviously counter-productive to run more than one independent | It is obviously counterproductive to run more than one independent | |||
and concurrent test (regardless of the number of flows in the test | and concurrent test (regardless of the number of flows in the test | |||
stream) attempting to measure the *maximum* capacity on a single | stream) attempting to measure the *maximum* capacity on a single | |||
path. The number of concurrent, independent tests of a path SHALL be | path. The number of concurrent, independent tests of a path SHALL be | |||
limited to one. | limited to one. | |||
Tests of a v4-v6 transition mechanism might well be the intended | Tests of a v4-v6 transition mechanism might well be the intended | |||
subject of a capacity test. As long as the IPv4 and IPv6 packets | subject of a capacity test. As long as both IPv4 packets and IPv6 | |||
sent/received are both standard-formed, this should be allowed (and | packets sent/received are standard-formed, this should be allowed | |||
the change in header size easily accounted for on a per-packet | (and the change in header size easily accounted for on a per-packet | |||
basis). | basis). | |||
As testing continues, implementers should expect some evolution in | As testing continues, implementers should expect the methods to | |||
the methods. The ITU-T has published a Supplement (60) to the | evolve. The ITU-T has published a supplement (Supplement 60) to the | |||
Y-series of Recommendations, "Interpreting ITU-T Y.1540 Maximum IP- | Y-series of ITU-T Recommendations, "Interpreting ITU-T Y.1540 maximum | |||
Layer Capacity measurements", [Y.Sup60], which is the result of | IP-layer capacity measurements" [Y.Sup60], which is the result of | |||
continued testing with the metric, and those results have improved | continued testing with the metric. Those results have improved the | |||
the method described here. | methods described here. | |||
8.4. Running Code | ||||
RFC Editor: This section is for the benefit of the Document | ||||
Shepherd's form, and will be deleted prior to publication. | ||||
Much of the development of the method and comparisons with existing | ||||
methods conducted at IETF Hackathons and elsewhere have been based on | ||||
the example udpst Linux measurement tool (which is a working | ||||
reference for further development) [udpst]. The current project: | ||||
o is a utility that can function as a client or server daemon | ||||
o requires a successful client-initiated setup handshake between | ||||
cooperating hosts and allows firewalls to control inbound | ||||
unsolicited UDP which either go to a control port [expected and w/ | ||||
authentication] or to ephemeral ports that are only created as | ||||
needed. Firewalls protecting each host can both continue to do | ||||
their job normally. This aspect is similar to many other test | ||||
utilities available. | ||||
o is written in C, and built with gcc (release 9.3) and its standard | ||||
run-time libraries | ||||
o allows configuration of most of the parameters described in | ||||
Sections 4 and 7. | ||||
o supports IPv4 and IPv6 address families. | ||||
o supports IP-Layer packet marking. | ||||
9. Reporting Formats | 9. Reporting Formats | |||
The singleton IP-Layer Capacity results SHOULD be accompanied by the | The Singleton IP-Layer Capacity results SHOULD be accompanied by the | |||
context under which they were measured. | context under which they were measured. | |||
o timestamp (especially the time when the maximum was observed in | * Timestamp (especially the time when the maximum was observed in | |||
dtn) | dtn). | |||
o Source and Destination (by IP or other meaningful ID) | * Source and Destination (by IP or other meaningful ID). | |||
o other inner parameters of the test case (Section 4) | * Other inner Parameters of the test case (Section 4). | |||
o outer parameters, such as "test conducted in motion" or other | * Outer Parameters, such as "test conducted in motion" or other | |||
factors belonging to the context of the measurement | factors belonging to the context of the measurement. | |||
o result validity (indicating cases where the process was somehow | * Result validity (indicating cases where the process was somehow | |||
interrupted or the attempt failed) | interrupted or the attempt failed). | |||
o a field where unusual circumstances could be documented, and | * A field where unusual circumstances could be documented, and | |||
another one for "ignore/mask out" purposes in further processing | another one for "ignore / mask out" purposes in further | |||
processing. | ||||
The Maximum IP-Layer Capacity results SHOULD be reported in the | The Maximum IP-Layer Capacity results SHOULD be reported in tabular | |||
format of a table with a row for each of the test Phases and Number | format. There SHOULD be a column that identifies the test Phase. | |||
of Flows. There SHOULD be columns for the phases with number of | There SHOULD be a column listing the number of flows used in that | |||
flows, and for the resultant Maximum IP-Layer Capacity results for | Phase. The remaining columns SHOULD report the following results for | |||
the aggregate and each flow tested. | the aggregate of all flows, including the Maximum IP-Layer Capacity, | |||
the Loss Ratio, the RTT minimum, RTT maximum, and other metrics | ||||
tested having similar relevance. | ||||
As mentioned in Section 6.6, bi-modal (or multi-modal) maxima SHALL | As mentioned in Section 6.6, bimodal (or multi-modal) maxima SHALL be | |||
be reported for each mode separately. | reported for each mode separately. | |||
+-------------+-------------------------+----------+----------------+ | +========+==========+==================+========+=========+=========+ | |||
| Phase, # | Maximum IP-Layer | Loss | RTT min, max, | | | Phase | Number | Maximum IP-Layer | Loss | RTT min | RTT | | |||
| Flows | Capacity, Mbps | Ratio | msec | | | | of Flows | Capacity (Mbps) | Ratio | (msec) | max | | |||
+-------------+-------------------------+----------+----------------+ | | | | | | | (msec) | | |||
| Search,1 | 967.31 | 0.0002 | 30, 58 | | +========+==========+==================+========+=========+=========+ | |||
+-------------+-------------------------+----------+----------------+ | | Search | 1 | 967.31 | 0.0002 | 30 | 58 | | |||
| Verify,1 | 966.00 | 0.0000 | 30, 38 | | +--------+----------+------------------+--------+---------+---------+ | |||
+-------------+-------------------------+----------+----------------+ | | Verify | 1 | 966.00 | 0.0000 | 30 | 38 | | |||
+--------+----------+------------------+--------+---------+---------+ | ||||
Maximum IP-layer Capacity Results | Table 2: Maximum IP-Layer Capacity Results | |||
Static and configuration parameters: | Static and configuration Parameters: | |||
The sub-interval time, dt, MUST accompany a report of Maximum IP- | The sub-interval time, dt, MUST accompany a report of Maximum IP- | |||
Layer Capacity results, and the remaining Parameters from Section 4, | Layer Capacity results, as well as the remaining Parameters from | |||
General Parameters. | Section 4 ("General Parameters and Definitions"). | |||
The PM list metrics corresponding to the sub-interval where the | The PM list metrics corresponding to the sub-interval where the | |||
Maximum Capacity occurred MUST accompany a report of Maximum IP-Layer | Maximum Capacity occurred MUST accompany a report of Maximum IP-Layer | |||
Capacity results, for each test phase. | Capacity results, for each test Phase. | |||
The IP-Layer Sender Bit rate results SHOULD be reported in the format | The IP-Layer Sender Bit Rate results SHOULD be reported in tabular | |||
of a table with a row for each of the test phases, sub-intervals (st) | format. There SHOULD be a column that identifies the test Phase. | |||
and number of flows. There SHOULD be columns for the phases with | There SHOULD be a column listing each individual (numbered) flow used | |||
number of flows, and for the resultant IP-Layer Sender Bit rate | in that Phase, or the aggregate of flows in that Phase. A | |||
results for the aggregate and each flow tested. | corresponding column SHOULD identify the specific sending rate sub- | |||
interval, stn, for each flow and aggregate. A final column SHOULD | ||||
report the IP-Layer Sender Bit Rate results for each flow used, or | ||||
the aggregate of all flows. | ||||
+--------------------------+-------------+----------------------+ | +========+==========================+===========+=============+ | |||
| Phase, Flow or Aggregate | st, sec | Sender Bitrate, Mbps | | | Phase | Flow Number or Aggregate | stn (sec) | Sender Bit | | |||
+--------------------------+-------------+----------------------+ | | | | | Rate (Mbps) | | |||
| Search,1 | 0.00 - 0.05 | 345 | | +========+==========================+===========+=============+ | |||
+--------------------------+-------------+----------------------+ | | Search | 1 | 0.00 | 345 | | |||
| Search,2 | 0.00 - 0.05 | 289 | | +--------+--------------------------+-----------+-------------+ | |||
+--------------------------+-------------+----------------------+ | | Search | 2 | 0.00 | 289 | | |||
| Search,Agg | 0.00 - 0.05 | 634 | | +--------+--------------------------+-----------+-------------+ | |||
+--------------------------+-------------+----------------------+ | | Search | Agg | 0.00 | 634 | | |||
+--------+--------------------------+-----------+-------------+ | ||||
| Search | 1 | 0.05 | 499 | | ||||
+--------+--------------------------+-----------+-------------+ | ||||
| Search | ... | 0.05 | ... | | ||||
+--------+--------------------------+-----------+-------------+ | ||||
IP-layer Sender Bit Rate Results | Table 3: IP-Layer Sender Bit Rate Results (Example with Two | |||
Flows and st = 0.05 (sec)) | ||||
Static and configuration parameters: | Static and configuration Parameters: | |||
The subinterval time, st, MUST accompany a report of Sender IP-Layer | The sub-interval duration, st, MUST accompany a report of Sender IP- | |||
Bit Rate results. | Layer Bit Rate results. | |||
Also, the values of the remaining Parameters from Section 4, General | Also, the values of the remaining Parameters from Section 4 ("General | |||
Parameters, MUST be reported. | Parameters and Definitions") MUST be reported. | |||
9.1. Configuration and Reporting Data Formats | 9.1. Configuration and Reporting Data Formats | |||
As a part of the multi-Standards Development Organization (SDO) | As a part of the multi-Standards Development Organization (SDO) | |||
harmonization of this metric and method of measurement, one of the | harmonization of this Metric and Method of Measurement, one of the | |||
areas where the Broadband Forum (BBF) contributed its expertise was | areas where the Broadband Forum (BBF) contributed its expertise was | |||
in the definition of an information model and data model for | in the definition of an information model and data model for | |||
configuration and reporting. These models are consistent with the | configuration and reporting. These models are consistent with the | |||
metric parameters and default values specified as lists is this memo. | metric Parameters and default values specified as lists in this memo. | |||
[TR-471] provides the Information model that was used to prepare a | [TR-471] provides the information model that was used to prepare a | |||
full data model in related BBF work. The BBF has also carefully | full data model in related BBF work. The BBF has also carefully | |||
considered topics within its purview, such as placement of | considered topics within its purview, such as the placement of | |||
measurement systems within the Internet access architecture. For | measurement systems within the Internet access architecture. For | |||
example, timestamp resolution requirements that influence the choice | example, timestamp resolution requirements that influence the choice | |||
of the test protocol are provided in Table 2 of [TR-471]. | of the test protocol are provided in Table 2 of [TR-471]. | |||
10. Security Considerations | 10. Security Considerations | |||
Active metrics and measurements have a long history of security | Active Metrics and Active Measurements have a long history of | |||
considerations. The security considerations that apply to any active | security considerations. The security considerations that apply to | |||
measurement of live paths are relevant here. See [RFC4656] and | any Active Measurement of live paths are relevant here. See | |||
[RFC5357]. | [RFC4656] and [RFC5357]. | |||
When considering privacy of those involved in measurement or those | When considering the privacy of those involved in measurement or | |||
whose traffic is measured, the sensitive information available to | those whose traffic is measured, the sensitive information available | |||
potential observers is greatly reduced when using active techniques | to potential observers is greatly reduced when using active | |||
which are within this scope of work. Passive observations of user | techniques that are within this scope of work. Passive observations | |||
traffic for measurement purposes raise many privacy issues. We refer | of user traffic for measurement purposes raise many privacy issues. | |||
the reader to the privacy considerations described in the Large Scale | We refer the reader to the privacy considerations described in the | |||
Measurement of Broadband Performance (LMAP) Framework [RFC7594], | Large-scale Measurement of Broadband Performance (LMAP) Framework | |||
which covers active and passive techniques. | [RFC7594], which covers active and passive techniques. | |||
There are some new considerations for Capacity measurement as | There are some new considerations for Capacity measurement as | |||
described in this memo. | described in this memo. | |||
1. Cooperating Source and Destination hosts and agreements to test | 1. Cooperating Source and Destination hosts and agreements to test | |||
the path between the hosts are REQUIRED. Hosts perform in either | the path between the hosts are REQUIRED. Hosts perform in either | |||
the Src or Dst roles. | the Src role or the Dst role. | |||
2. It is REQUIRED to have a user client-initiated setup handshake | 2. It is REQUIRED to have a user client-initiated setup handshake | |||
between cooperating hosts that allows firewalls to control | between cooperating hosts that allows firewalls to control | |||
inbound unsolicited UDP traffic which either goes to a control | inbound unsolicited UDP traffic that goes to either a control | |||
port [expected and w/authentication] or to ephemeral ports that | port (expected and with authentication) or ephemeral ports that | |||
are only created as needed. Firewalls protecting each host can | are only created as needed. Firewalls protecting each host can | |||
both continue to do their job normally. | both continue to do their job normally. | |||
3. Client-server authentication and integrity protection for | 3. Client-server authentication and integrity protection for | |||
feedback messages conveying measurements is RECOMMENDED. | feedback messages conveying measurements are RECOMMENDED. | |||
4. Hosts MUST limit the number of simultaneous tests to avoid | 4. Hosts MUST limit the number of simultaneous tests to avoid | |||
resource exhaustion and inaccurate results. | resource exhaustion and inaccurate results. | |||
5. Senders MUST be rate-limited. This can be accomplished using a | 5. Senders MUST be rate limited. This can be accomplished using a | |||
pre-built table defining all the offered load rates that will be | pre-built table defining all the offered load rates that will be | |||
supported (Section 8.1). The recommended load-control search | supported (Section 8.1). The recommended load control search | |||
algorithm results in "ramp-up" from the lowest rate in the table. | algorithm results in "ramp-up" from the lowest rate in the table. | |||
6. Service subscribers with limited data volumes who conduct | 6. Service subscribers with limited data volumes who conduct | |||
extensive capacity testing might experience the effects of | extensive capacity testing might experience the effects of | |||
Service Provider controls on their service. Testing with the | Service Provider controls on their service. Testing with the | |||
Service Provider's measurement hosts SHOULD be limited in | Service Provider's measurement hosts SHOULD be limited in | |||
frequency and/or overall volume of test traffic (for example, the | frequency and/or overall volume of test traffic (for example, the | |||
range of duration values, I, SHOULD be limited). | range of duration values, I, SHOULD be limited). | |||
The exact specification of these features is left for the future | The exact specification of these features is left for future protocol | |||
protocol development. | development. | |||
11. IANA Considerations | 11. IANA Considerations | |||
This memo makes no requests of IANA. | This document has no IANA actions. | |||
12. Acknowledgments | ||||
Thanks to Joachim Fabini, Matt Mathis, J.Ignacio Alvarez-Hamelin, | ||||
Wolfgang Balzer, Frank Brockners, Greg Mirsky, Martin Duke, Murray | ||||
Kucherawy, and Benjamin Kaduk for their extensive comments on the | ||||
memo and related topics. In a second round of reviews, we | ||||
acknowledge Magnus Westerlund, Lars Eggert, and Zahed Sarkar. | ||||
13. Appendix A - Load Rate Adjustment Pseudo Code | ||||
The following is a pseudo-code implementation of the algorithm | ||||
described in Section 8.1. | ||||
Rx = 0 # The current sending rate (equivalent to a row of the table) | ||||
seqErr = 0 # Measured count of any of Loss or Reordering impairments | ||||
delay = 0 # Measured Range of Round Trip Delay, RTD, ms | ||||
lowThresh = 30 # Low threshold on the Range of RTD, ms | ||||
upperThresh = 90 # Upper threshold on the Range of RTD, ms | ||||
hSpeedTresh = 1 Gbps # Threshold for transition between sending rate step | ||||
sizes (such as 1 Mbps and 100 Mbps) | ||||
slowAdjCount = 0 # Measured Number of consecutive status reports | ||||
indicating loss and/or delay variation above upperThresh | ||||
slowAdjThresh = 2 # Threshold on slowAdjCount used to infer congestion. | ||||
Use values >1 to avoid misinterpreting transient loss | ||||
highSpeedDelta = 10 # The number of rows to move in a single adjustment | ||||
when initially increasing offered load (to ramp-up quickly) | ||||
maxLoadRates = 2000 # Maximum table index (rows) | ||||
if ( seqErr == 0 && delay < lowThresh ) { | ||||
if ( Rx < hSpeedTresh && slowAdjCount < slowAdjThresh ) { | ||||
Rx += highSpeedDelta; | ||||
slowAdjCount = 0; | ||||
} else { | ||||
if ( Rx < maxLoadRates - 1 ) | ||||
Rx++; | ||||
} | ||||
} else if ( seqErr > 0 || delay > upperThresh ) { | ||||
slowAdjCount++; | ||||
if ( Rx < hSpeedTresh && slowAdjCount == slowAdjThresh ) { | ||||
if ( Rx > highSpeedDelta * 3 ) | ||||
Rx -= highSpeedDelta * 3; | ||||
else | ||||
Rx = 0; | ||||
} else { | ||||
if ( Rx > 0 ) | ||||
Rx--; | ||||
} | ||||
} | ||||
14. Appendix B - RFC 8085 UDP Guidelines Check | ||||
The BCP on UDP usage guidelines [RFC8085] focuses primarily on | ||||
congestion control in section 3.1. The Guidelines appear in | ||||
mandatory (MUST) and recommendation (SHOULD) categories. | ||||
14.1. Assessment of Mandatory Requirements | ||||
The mandatory requirements in Section 3 of [RFC8085] include: | ||||
Internet paths can have widely varying characteristics, ... | ||||
Consequently, applications that may be used on the Internet MUST | ||||
NOT make assumptions about specific path characteristics. They | ||||
MUST instead use mechanisms that let them operate safely under | ||||
very different path conditions. Typically, this requires | ||||
conservatively probing the current conditions of the Internet path | ||||
they communicate over to establish a transmission behavior that it | ||||
can sustain and that is reasonably fair to other traffic sharing | ||||
the path. | ||||
The purpose of the load rate adjustment algorithm in Section 8.1 is | ||||
to probe the network and enable Maximum IP-Layer Capacity | ||||
measurements with as few assumptions about the measured path as | ||||
possible, and within the range application described in Section 2. | ||||
The degree of probing conservatism is in tension with the need to | ||||
minimize both the traffic dedicated to testing (especially with | ||||
Gigabit rate measurements) and the duration of the test (which is one | ||||
contributing factor to the overall algorithm fairness). | ||||
The text of Section 3 of [RFC8085] goes on to recommend alternatives | ||||
to UDP to meet the mandatory requirements, but none are suitable for | ||||
the scope and purpose of the metrics and methods in this memo. In | ||||
fact, ad hoc TCP-based methods fail to achieve the measurement | ||||
accuracy repeatedly proven in comparison measurements with the | ||||
running code [LS-SG12-A] [LS-SG12-B] [Y.Sup60]. Also, the UDP aspect | ||||
of these methods is present primarily to support modern Internet | ||||
transmission where a transport protocol is required [copycat]; the | ||||
metric is based on the IP-Layer and UDP allows simple correlation to | ||||
the IP-Layer. | ||||
Section 3.1.1 of [RFC8085] discusses protocol timer guidelines: | ||||
Latency samples MUST NOT be derived from ambiguous transactions. | ||||
The canonical example is in a protocol that retransmits data, but | ||||
subsequently cannot determine which copy is being acknowledged. | ||||
Both load packets and status feedback messages MUST contain sequence | ||||
numbers, which helps with measurements based on those packets, and | ||||
there are no retransmissions needed. | ||||
When a latency estimate is used to arm a timer that provides loss | ||||
detection -- with or without retransmission -- expiry of the timer | ||||
MUST be interpreted as an indication of congestion in the network, | ||||
causing the sending rate to be adapted to a safe conservative | ||||
rate... | ||||
The method described in this memo uses timers for sending rate | ||||
backoff when status feedback messages are lost (Lost Status Backoff | ||||
timeout), and for stopping a test when connectivity is lost for a | ||||
longer interval (Feedback message or load packet timeouts). | ||||
There is no specific benefit foreseen by using Explicit Congestion | ||||
Notification (ECN) in this memo. | ||||
Section 3.2 of [RFC8085] discusses message size guidelines: | ||||
To determine an appropriate UDP payload size, applications MUST | ||||
subtract the size of the IP header (which includes any IPv4 | ||||
optional headers or IPv6 extension headers) as well as the length | ||||
of the UDP header (8 bytes) from the PMTU size. | ||||
The method uses a sending rate table with a maximum UDP payload size | ||||
that anticipates significant header overhead and avoids | ||||
fragmentation. | ||||
Section 3.3 of [RFC8085] provides reliability guidelines: | ||||
Applications that do require reliable message delivery MUST | ||||
implement an appropriate mechanism themselves. | ||||
The IP-Layer Capacity Metric and Method do not require reliable | ||||
delivery. | ||||
Applications that require ordered delivery MUST reestablish | ||||
datagram ordering themselves. | ||||
The IP-Layer Capacity Metric and Method does not need to reestablish | ||||
packet order; it is preferred to measure packet reordering if it | ||||
occurs [RFC4737]. | ||||
14.2. Assessment of Recommendations | ||||
The load rate adjustment algorithm's goal is to determine the Maximum | ||||
IP-Layer Capacity in the context of an infrequent, diagnostic, short | ||||
term measurement. This goal is a global exception to many [RFC8085] | ||||
SHOULD-level requirements, of which many are intended for long-lived | ||||
flows that must coexist with other traffic in more-or-less fair way. | ||||
However, the algorithm (as specified in Section 8.1 and Appendix A | ||||
above) reacts to indications of congestion in clearly defined ways. | ||||
A specific recommendation is provided as an example. Section 3.1.5 | ||||
of [RFC8085] on implications of RTT and Loss Measurements on | ||||
Congestion Control says: | ||||
A congestion control designed for UDP SHOULD respond as quickly as | ||||
possible when it experiences congestion, and it SHOULD take into | ||||
account both the loss rate and the response time when choosing a | ||||
new rate. | ||||
The load rate adjustment algorithm responds to loss and RTT | ||||
measurements with a clear and concise rate reduction when warranted, | ||||
and the response makes use of direct measurements (more exact than | ||||
can be inferred from TCP ACKs). | ||||
Section 3.1.5 of [RFC8085] goes on to specify: | ||||
The implemented congestion control scheme SHOULD result in | ||||
bandwidth (capacity) use that is comparable to that of TCP within | ||||
an order of magnitude, so that it does not starve other flows | ||||
sharing a common bottleneck. | ||||
This is a requirement for coexistent streams, and not for diagnostic | ||||
and infrequent measurements using short durations. The rate | ||||
oscillations during short tests allow other packets to pass, and | ||||
don't starve other flows. | ||||
Ironically, ad hoc TCP-based measurements of "Internet Speed" are | ||||
also designed to work around this SHOULD-level requirement, by | ||||
launching many flows (9, for example) to increase the outstanding | ||||
data dedicated to testing. | ||||
The load rate adjustment algorithm cannot become a TCP-like | ||||
congestion control, or it will have the same weaknesses of TCP when | ||||
trying to make a Maximum IP-Layer Capacity measurement, and will not | ||||
achieve the goal. The results of the referenced testing [LS-SG12-A] | ||||
[LS-SG12-B] [Y.Sup60] supported this statement hundreds of times, | ||||
with comparisons to multi-connection TCP-based measurements. | ||||
A brief review of some other SHOULD-level requirements follows (Yes | ||||
or Not applicable = NA) : | ||||
+--+---------------------------------------------------------+---------+ | ||||
|Y?| RFC 8085 Recommendation | Section | | ||||
+--+---------------------------------------------------------+---------+ | ||||
Yes| MUST tolerate a wide range of Internet path conditions | 3 | | ||||
NA | SHOULD use a full-featured transport (e.g., TCP) | | | ||||
| | | | ||||
Yes| SHOULD control rate of transmission | 3.1 | | ||||
NA | SHOULD perform congestion control over all traffic | | | ||||
| | | | ||||
| for bulk transfers, | 3.1.2 | | ||||
NA | SHOULD consider implementing TFRC | | | ||||
NA | else, SHOULD in other ways use bandwidth similar to TCP | | | ||||
| | | | ||||
| for non-bulk transfers, | 3.1.3 | | ||||
NA | SHOULD measure RTT and transmit max. 1 datagram/RTT | 3.1.1 | | ||||
NA | else, SHOULD send at most 1 datagram every 3 seconds | | | ||||
NA | SHOULD back-off retransmission timers following loss | | | ||||
| | | | ||||
Yes| SHOULD provide mechanisms to regulate the bursts of | 3.1.6 | | ||||
| transmission | | | ||||
| | | | ||||
NA | MAY implement ECN; a specific set of application | 3.1.7 | | ||||
| mechanisms are REQUIRED if ECN is used. | | | ||||
| | | | ||||
Yes| for DiffServ, SHOULD NOT rely on implementation of PHBs | 3.1.8 | | ||||
| | | | ||||
Yes| for QoS-enabled paths, MAY choose not to use CC | 3.1.9 | | ||||
| | | | ||||
Yes| SHOULD NOT rely solely on QoS for their capacity | 3.1.10 | | ||||
| non-CC controlled flows SHOULD implement a transport | | | ||||
| circuit breaker | | | ||||
| MAY implement a circuit breaker for other applications | | | ||||
| | | | ||||
| for tunnels carrying IP traffic, | 3.1.11 | | ||||
NA | SHOULD NOT perform congestion control | | | ||||
NA | MUST correctly process the IP ECN field | | | ||||
| | | | ||||
| for non-IP tunnels or rate not determined by traffic, | | | ||||
NA | SHOULD perform CC or use circuit breaker | 3.1.11 | | ||||
NA | SHOULD restrict types of traffic transported by the | | | ||||
| tunnel | | | ||||
| | | | ||||
Yes| SHOULD NOT send datagrams that exceed the PMTU, i.e., | 3.2 | | ||||
Yes| SHOULD discover PMTU or send datagrams < minimum PMTU; | | | ||||
NA | Specific application mechanisms are REQUIRED if PLPMTUD | | | ||||
| is used. | | | ||||
| | | | ||||
Yes| SHOULD handle datagram loss, duplication, reordering | 3.3 | | ||||
NA | SHOULD be robust to delivery delays up to 2 minutes | | | ||||
| | | | ||||
Yes| SHOULD enable IPv4 UDP checksum | 3.4 | | ||||
Yes| SHOULD enable IPv6 UDP checksum; Specific application | 3.4.1 | | ||||
| mechanisms are REQUIRED if a zero IPv6 UDP checksum is | | | ||||
| used. | | | ||||
| | | | ||||
NA | SHOULD provide protection from off-path attacks | 5.1 | | ||||
| else, MAY use UDP-Lite with suitable checksum coverage | 3.4.2 | | ||||
| | | | ||||
NA | SHOULD NOT always send middlebox keep-alive messages | 3.5 | | ||||
NA | MAY use keep-alives when needed (min. interval 15 sec) | | | ||||
| | | | ||||
Yes| Applications specified for use in limited use (or | 3.6 | | ||||
| controlled environments) SHOULD identify equivalent | | | ||||
| mechanisms and describe their use case. | | | ||||
| | | | ||||
NA | Bulk-multicast apps SHOULD implement congestion control | 4.1.1 | | ||||
| | | | ||||
NA | Low volume multicast apps SHOULD implement congestion | 4.1.2 | | ||||
| control | | | ||||
| | | | ||||
NA | Multicast apps SHOULD use a safe PMTU | 4.2 | | ||||
| | | | ||||
Yes| SHOULD avoid using multiple ports | 5.1.2 | | ||||
Yes| MUST check received IP source address | | | ||||
| | | | ||||
NA | SHOULD validate payload in ICMP messages | 5.2 | | ||||
| | | | ||||
Yes| SHOULD use a randomized source port or equivalent | 6 | | ||||
| technique, and, for client/server applications, SHOULD | | | ||||
| send responses from source address matching request | | | ||||
| 5.1 | | | ||||
NA | SHOULD use standard IETF security protocols when needed | 6 | | ||||
+---------------------------------------------------------+---------+ | ||||
15. References | 12. References | |||
15.1. Normative References | 12.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[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, | "Framework for IP Performance Metrics", RFC 2330, | |||
DOI 10.17487/RFC2330, May 1998, | DOI 10.17487/RFC2330, May 1998, | |||
<https://www.rfc-editor.org/info/rfc2330>. | <https://www.rfc-editor.org/info/rfc2330>. | |||
skipping to change at page 35, line 40 ¶ | skipping to change at line 1353 ¶ | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC8468] Morton, A., Fabini, J., Elkins, N., Ackermann, M., and V. | [RFC8468] Morton, A., Fabini, J., Elkins, N., Ackermann, M., and V. | |||
Hegde, "IPv4, IPv6, and IPv4-IPv6 Coexistence: Updates for | Hegde, "IPv4, IPv6, and IPv4-IPv6 Coexistence: Updates for | |||
the IP Performance Metrics (IPPM) Framework", RFC 8468, | the IP Performance Metrics (IPPM) Framework", RFC 8468, | |||
DOI 10.17487/RFC8468, November 2018, | DOI 10.17487/RFC8468, November 2018, | |||
<https://www.rfc-editor.org/info/rfc8468>. | <https://www.rfc-editor.org/info/rfc8468>. | |||
15.2. Informative References | 12.2. Informative References | |||
[copycat] Edleine, K., Kuhlewind, K., Trammell, B., and B. Donnet, | [copycat] Edeline, K., KΓΌhlewind, M., Trammell, B., and B. Donnet, | |||
"copycat: Testing Differential Treatment of New Transport | "copycat: Testing Differential Treatment of New Transport | |||
Protocols in the Wild (ANRW '17)", July 2017, | Protocols in the Wild", ANRW '17, | |||
DOI 10.1145/3106328.3106330, July 2017, | ||||
<https://irtf.org/anrw/2017/anrw17-final5.pdf>. | <https://irtf.org/anrw/2017/anrw17-final5.pdf>. | |||
[LS-SG12-A] | [LS-SG12-A] | |||
12, I. S., "LS - Harmonization of IP Capacity and Latency | "Liaison statement: LS - Harmonization of IP Capacity and | |||
Parameters: Revision of Draft Rec. Y.1540 on IP packet | Latency Parameters: Revision of Draft Rec. Y.1540 on IP | |||
transfer performance parameters and New Annex A with Lab | packet transfer performance parameters and New Annex A | |||
Evaluation Plan", May 2019, | with Lab Evaluation Plan", From ITU-T SG 12, March 2019, | |||
<https://datatracker.ietf.org/liaison/1632/>. | <https://datatracker.ietf.org/liaison/1632/>. | |||
[LS-SG12-B] | [LS-SG12-B] | |||
12, I. S., "LS on harmonization of IP Capacity and Latency | "Liaison statement: LS on harmonization of IP Capacity and | |||
Parameters: Consent of Draft Rec. Y.1540 on IP packet | Latency Parameters: Consent of Draft Rec. Y.1540 on IP | |||
transfer performance parameters and New Annex A with Lab & | packet transfer performance parameters and New Annex A | |||
Field Evaluation Plans", March 2019, | with Lab & Field Evaluation Plans", From ITU-T-SG-12, May | |||
<https://datatracker.ietf.org/liaison/1645/>. | 2019, <https://datatracker.ietf.org/liaison/1645/>. | |||
[RFC2544] Bradner, S. and J. McQuaid, "Benchmarking Methodology for | [RFC2544] Bradner, S. and J. McQuaid, "Benchmarking Methodology for | |||
Network Interconnect Devices", RFC 2544, | Network Interconnect Devices", RFC 2544, | |||
DOI 10.17487/RFC2544, March 1999, | DOI 10.17487/RFC2544, March 1999, | |||
<https://www.rfc-editor.org/info/rfc2544>. | <https://www.rfc-editor.org/info/rfc2544>. | |||
[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, | Empirical Bulk Transfer Capacity Metrics", RFC 3148, | |||
DOI 10.17487/RFC3148, July 2001, | DOI 10.17487/RFC3148, July 2001, | |||
<https://www.rfc-editor.org/info/rfc3148>. | <https://www.rfc-editor.org/info/rfc3148>. | |||
skipping to change at page 37, line 9 ¶ | skipping to change at line 1418 ¶ | |||
May 2016, <https://www.rfc-editor.org/info/rfc7799>. | May 2016, <https://www.rfc-editor.org/info/rfc7799>. | |||
[RFC8085] Eggert, L., Fairhurst, G., and G. Shepherd, "UDP Usage | [RFC8085] Eggert, L., Fairhurst, G., and G. Shepherd, "UDP Usage | |||
Guidelines", BCP 145, RFC 8085, DOI 10.17487/RFC8085, | Guidelines", BCP 145, RFC 8085, DOI 10.17487/RFC8085, | |||
March 2017, <https://www.rfc-editor.org/info/rfc8085>. | March 2017, <https://www.rfc-editor.org/info/rfc8085>. | |||
[RFC8337] Mathis, M. and A. Morton, "Model-Based Metrics for Bulk | [RFC8337] Mathis, M. and A. Morton, "Model-Based Metrics for Bulk | |||
Transport Capacity", RFC 8337, DOI 10.17487/RFC8337, March | Transport Capacity", RFC 8337, DOI 10.17487/RFC8337, March | |||
2018, <https://www.rfc-editor.org/info/rfc8337>. | 2018, <https://www.rfc-editor.org/info/rfc8337>. | |||
[TR-471] Morton, A., "Broadband Forum TR-471: IP Layer Capacity | [TR-471] Morton, A., "Maximum IP-Layer Capacity Metric, Related | |||
Metrics and Measurement", July 2020, | Metrics, and Measurements", Broadband Forum TR-471, July | |||
<https://www.broadband-forum.org/technical/download/TR- | 2020, <https://www.broadband-forum.org/technical/download/ | |||
471.pdf>. | TR-471.pdf>. | |||
[udpst] udpst Project Collaborators, "UDP Speed Test Open | ||||
Broadband project", December 2020, | ||||
<https://github.com/BroadbandForum/obudpst>. | ||||
[Y.1540] Y.1540, I. R., "Internet protocol data communication | [Y.1540] ITU-T, "Internet protocol data communication service - IP | |||
service - IP packet transfer and availability performance | packet transfer and availability performance parameters", | |||
parameters", December 2019, | ITU-T Recommendation Y.1540, December 2019, | |||
<https://www.itu.int/rec/T-REC-Y.1540-201912-I/en>. | <https://www.itu.int/rec/T-REC-Y.1540-201912-I/en>. | |||
[Y.Sup60] Morton, A., "Recommendation Y.Sup60, (09/20) Interpreting | [Y.Sup60] ITU-T, "Interpreting ITU-T Y.1540 maximum IP-layer | |||
ITU-T Y.1540 maximum IP-layer capacity measurements, and | capacity measurements", ITU-T Recommendation Y.Sup60, | |||
Errata", September 2020, | October 2021, <https://www.itu.int/rec/T-REC-Y.Sup60/en>. | |||
<https://www.itu.int/rec/T-REC-Y.Sup60/en>. | ||||
Appendix A. Load Rate Adjustment Pseudocode | ||||
This appendix provides a pseudocode implementation of the algorithm | ||||
described in Section 8.1. | ||||
Rx = 0 # The current sending rate (equivalent to a row | ||||
# of the table) | ||||
seqErr = 0 # Measured count that includes Loss or Reordering | ||||
# or Duplication impairments (all appear | ||||
# initially as errors in the packet sequence | ||||
# numbering) | ||||
seqErrThresh = 10 # Threshold on seqErr count that includes Loss or | ||||
# Reordering or Duplication impairments (all | ||||
# appear initially as errors in the packet | ||||
# sequence numbering) | ||||
delay = 0 # Measured Range of Round Trip Delay (RTD), msec | ||||
lowThresh = 30 # Low threshold on the Range of RTD, msec | ||||
upperThresh = 90 # Upper threshold on the Range of RTD, msec | ||||
hSpeedThresh = 1 # Threshold for transition between sending rate | ||||
# step sizes (such as 1 Mbps and 100 Mbps), Gbps | ||||
slowAdjCount = 0 # Measured Number of consecutive status reports | ||||
# indicating loss and/or delay variation above | ||||
# upperThresh | ||||
slowAdjThresh = 3 # Threshold on slowAdjCount used to infer | ||||
# congestion. Use values > 1 to avoid | ||||
# misinterpreting transient loss. | ||||
highSpeedDelta = 10 # The number of rows to move in a single | ||||
# adjustment when initially increasing offered | ||||
# load (to ramp up quickly) | ||||
maxLoadRates = 2000 # Maximum table index (rows) | ||||
if ( seqErr <= seqErrThresh && delay < lowThresh ) { | ||||
if ( Rx < hSpeedThresh && slowAdjCount < slowAdjThresh ) { | ||||
Rx += highSpeedDelta; | ||||
slowAdjCount = 0; | ||||
} else { | ||||
if ( Rx < maxLoadRates - 1 ) | ||||
Rx++; | ||||
} | ||||
} else if ( seqErr > seqErrThresh || delay > upperThresh ) { | ||||
slowAdjCount++; | ||||
if ( Rx < hSpeedThresh && slowAdjCount == slowAdjThresh ) { | ||||
if ( Rx > highSpeedDelta * 3 ) | ||||
Rx -= highSpeedDelta * 3; | ||||
else | ||||
Rx = 0; | ||||
} else { | ||||
if ( Rx > 0 ) | ||||
Rx--; | ||||
} | ||||
} | ||||
Appendix B. RFC 8085 UDP Guidelines Check | ||||
Section 3.1 of [RFC8085] (BCP 145), which provides UDP usage | ||||
guidelines, focuses primarily on congestion control. The guidelines | ||||
appear in mandatory (MUST) and recommendation (SHOULD) categories. | ||||
B.1. Assessment of Mandatory Requirements | ||||
The mandatory requirements in Section 3 of [RFC8085] include the | ||||
following: | ||||
| Internet paths can have widely varying characteristics, ... | ||||
| Consequently, applications that may be used on the Internet MUST | ||||
| NOT make assumptions about specific path characteristics. They | ||||
| MUST instead use mechanisms that let them operate safely under | ||||
| very different path conditions. Typically, this requires | ||||
| conservatively probing the current conditions of the Internet path | ||||
| they communicate over to establish a transmission behavior that it | ||||
| can sustain and that is reasonably fair to other traffic sharing | ||||
| the path. | ||||
The purpose of the load rate adjustment algorithm described in | ||||
Section 8.1 is to probe the network and enable Maximum IP-Layer | ||||
Capacity measurements with as few assumptions about the measured path | ||||
as possible and within the range of applications described in | ||||
Section 2. There is tension between the goals of probing | ||||
conservatism and minimization of both the traffic dedicated to | ||||
testing (especially with Gigabit rate measurements) and the duration | ||||
of the test (which is one contributing factor to the overall | ||||
algorithm fairness). | ||||
The text of Section 3 of [RFC8085] goes on to recommend alternatives | ||||
to UDP to meet the mandatory requirements, but none are suitable for | ||||
the scope and purpose of the Metrics and Methods in this memo. In | ||||
fact, ad hoc TCP-based methods fail to achieve the measurement | ||||
accuracy repeatedly proven in comparison measurements with the | ||||
running code [LS-SG12-A] [LS-SG12-B] [Y.Sup60]. Also, the UDP aspect | ||||
of these methods is present primarily to support modern Internet | ||||
transmission where a transport protocol is required [copycat]; the | ||||
metric is based on the IP Layer, and UDP allows simple correlation to | ||||
the IP Layer. | ||||
Section 3.1.1 of [RFC8085] discusses protocol timer guidelines: | ||||
| Latency samples MUST NOT be derived from ambiguous transactions. | ||||
| The canonical example is in a protocol that retransmits data, but | ||||
| subsequently cannot determine which copy is being acknowledged. | ||||
Both load packets and status feedback messages MUST contain sequence | ||||
numbers; this helps with measurements based on those packets, and | ||||
there are no retransmissions needed. | ||||
| When a latency estimate is used to arm a timer that provides loss | ||||
| detection -- with or without retransmission -- expiry of the timer | ||||
| MUST be interpreted as an indication of congestion in the network, | ||||
| causing the sending rate to be adapted to a safe conservative rate | ||||
| ... | ||||
The methods described in this memo use timers for sending rate | ||||
backoff when status feedback messages are lost (Lost Status Backoff | ||||
timeout) and for stopping a test when connectivity is lost for a | ||||
longer interval (feedback message or load packet timeouts). | ||||
This memo does not foresee any specific benefit of using Explicit | ||||
Congestion Notification (ECN). | ||||
Section 3.2 of [RFC8085] discusses message size guidelines: | ||||
| To determine an appropriate UDP payload size, applications MUST | ||||
| subtract the size of the IP header (which includes any IPv4 | ||||
| optional headers or IPv6 extension headers) as well as the length | ||||
| of the UDP header (8 bytes) from the PMTU size. | ||||
The method uses a sending rate table with a maximum UDP payload size | ||||
that anticipates significant header overhead and avoids | ||||
fragmentation. | ||||
Section 3.3 of [RFC8085] provides reliability guidelines: | ||||
| Applications that do require reliable message delivery MUST | ||||
| implement an appropriate mechanism themselves. | ||||
The IP-Layer Capacity Metrics and Methods do not require reliable | ||||
delivery. | ||||
| Applications that require ordered delivery MUST reestablish | ||||
| datagram ordering themselves. | ||||
The IP-Layer Capacity Metrics and Methods do not need to reestablish | ||||
packet order; it is preferable to measure packet reordering if it | ||||
occurs [RFC4737]. | ||||
B.2. Assessment of Recommendations | ||||
The load rate adjustment algorithm's goal is to determine the Maximum | ||||
IP-Layer Capacity in the context of an infrequent, diagnostic, short- | ||||
term measurement. This goal is a global exception to many SHOULD- | ||||
level requirements as listed in [RFC8085], of which many are intended | ||||
for long-lived flows that must coexist with other traffic in a more | ||||
or less fair way. However, the algorithm (as specified in | ||||
Section 8.1 and Appendix A above) reacts to indications of congestion | ||||
in clearly defined ways. | ||||
A specific recommendation is provided as an example. Section 3.1.5 | ||||
of [RFC8085] (regarding the implications of RTT and loss measurements | ||||
on congestion control) says: | ||||
| A congestion control [algorithm] designed for UDP SHOULD respond | ||||
| as quickly as possible when it experiences congestion, and it | ||||
| SHOULD take into account both the loss rate and the response time | ||||
| when choosing a new rate. | ||||
The load rate adjustment algorithm responds to loss and RTT | ||||
measurements with a clear and concise rate reduction when warranted, | ||||
and the response makes use of direct measurements (more exact than | ||||
can be inferred from TCP ACKs). | ||||
Section 3.1.5 of [RFC8085] goes on to specify the following: | ||||
| The implemented congestion control scheme SHOULD result in | ||||
| bandwidth (capacity) use that is comparable to that of TCP within | ||||
| an order of magnitude, so that it does not starve other flows | ||||
| sharing a common bottleneck. | ||||
This is a requirement for coexistent streams, and not for diagnostic | ||||
and infrequent measurements using short durations. The rate | ||||
oscillations during short tests allow other packets to pass and don't | ||||
starve other flows. | ||||
Ironically, ad hoc TCP-based measurements of "Internet Speed" are | ||||
also designed to work around this SHOULD-level requirement, by | ||||
launching many flows (9, for example) to increase the outstanding | ||||
data dedicated to testing. | ||||
The load rate adjustment algorithm cannot become a TCP-like | ||||
congestion control, or it will have the same weaknesses of TCP when | ||||
trying to make a Maximum IP-Layer Capacity measurement and will not | ||||
achieve the goal. The results of the referenced testing [LS-SG12-A] | ||||
[LS-SG12-B] [Y.Sup60] supported this statement hundreds of times, | ||||
with comparisons to multi-connection TCP-based measurements. | ||||
A brief review of requirements from [RFC8085] follows (marked "Yes" | ||||
when this memo is compliant, or "NA" (Not Applicable)): | ||||
+======+============================================+=========+ | ||||
| Yes? | Recommendation in RFC 8085 | Section | | ||||
+======+============================================+=========+ | ||||
| Yes | MUST tolerate a wide range of Internet | 3 | | ||||
| | path conditions | | | ||||
+------+--------------------------------------------+---------+ | ||||
| NA | SHOULD use a full-featured transport | | | ||||
| | (e.g., TCP) | | | ||||
+------+--------------------------------------------+---------+ | ||||
+------+--------------------------------------------+---------+ | ||||
| Yes | SHOULD control rate of transmission | 3.1 | | ||||
+------+--------------------------------------------+---------+ | ||||
| NA | SHOULD perform congestion control over all | | | ||||
| | traffic | | | ||||
+------+--------------------------------------------+---------+ | ||||
+======+============================================+=========+ | ||||
| | For bulk transfers, | 3.1.2 | | ||||
+======+============================================+=========+ | ||||
| NA | SHOULD consider implementing TFRC | | | ||||
+------+--------------------------------------------+---------+ | ||||
| NA | else, SHOULD in other ways use bandwidth | | | ||||
| | similar to TCP | | | ||||
+------+--------------------------------------------+---------+ | ||||
+======+============================================+=========+ | ||||
| | For non-bulk transfers, | 3.1.3 | | ||||
+======+============================================+=========+ | ||||
| NA | SHOULD measure RTT and transmit max. 1 | 3.1.1 | | ||||
| | datagram/RTT | | | ||||
+------+--------------------------------------------+---------+ | ||||
| NA | else, SHOULD send at most 1 datagram every | | | ||||
| | 3 seconds | | | ||||
+------+--------------------------------------------+---------+ | ||||
| NA | SHOULD back-off retransmission timers | | | ||||
| | following loss | | | ||||
+------+--------------------------------------------+---------+ | ||||
+------+--------------------------------------------+---------+ | ||||
| Yes | SHOULD provide mechanisms to regulate the | 3.1.6 | | ||||
| | bursts of transmission | | | ||||
+------+--------------------------------------------+---------+ | ||||
+------+--------------------------------------------+---------+ | ||||
| NA | MAY implement ECN; a specific set of | 3.1.7 | | ||||
| | application mechanisms are REQUIRED if ECN | | | ||||
| | is used | | | ||||
+------+--------------------------------------------+---------+ | ||||
+------+--------------------------------------------+---------+ | ||||
| Yes | For DiffServ, SHOULD NOT rely on | 3.1.8 | | ||||
| | implementation of PHBs | | | ||||
+------+--------------------------------------------+---------+ | ||||
+------+--------------------------------------------+---------+ | ||||
| Yes | For QoS-enabled paths, MAY choose not to | 3.1.9 | | ||||
| | use CC | | | ||||
+------+--------------------------------------------+---------+ | ||||
+------+--------------------------------------------+---------+ | ||||
| Yes | SHOULD NOT rely solely on QoS for their | 3.1.10 | | ||||
| | capacity | | | ||||
+------+--------------------------------------------+---------+ | ||||
| NA | non-CC controlled flows SHOULD implement a | | | ||||
| | transport circuit breaker | | | ||||
+------+--------------------------------------------+---------+ | ||||
| Yes | MAY implement a circuit breaker for other | | | ||||
| | applications | | | ||||
+------+--------------------------------------------+---------+ | ||||
+======+============================================+=========+ | ||||
| | For tunnels carrying IP traffic, | 3.1.11 | | ||||
+======+============================================+=========+ | ||||
| NA | SHOULD NOT perform congestion control | | | ||||
+------+--------------------------------------------+---------+ | ||||
| NA | MUST correctly process the IP ECN field | | | ||||
+------+--------------------------------------------+---------+ | ||||
+======+============================================+=========+ | ||||
| | For non-IP tunnels or rate not determined | 3.1.11 | | ||||
| | by traffic, | | | ||||
+======+============================================+=========+ | ||||
| NA | SHOULD perform CC or use circuit breaker | | | ||||
+------+--------------------------------------------+---------+ | ||||
| NA | SHOULD restrict types of traffic | | | ||||
| | transported by the tunnel | | | ||||
+------+--------------------------------------------+---------+ | ||||
+------+--------------------------------------------+---------+ | ||||
| Yes | SHOULD NOT send datagrams that exceed the | 3.2 | | ||||
| | PMTU, i.e., | | | ||||
+------+--------------------------------------------+---------+ | ||||
| Yes | SHOULD discover PMTU or send datagrams < | | | ||||
| | minimum PMTU | | | ||||
+------+--------------------------------------------+---------+ | ||||
| NA | Specific application mechanisms are | | | ||||
| | REQUIRED if PLPMTUD is used | | | ||||
+------+--------------------------------------------+---------+ | ||||
+------+--------------------------------------------+---------+ | ||||
| Yes | SHOULD handle datagram loss, duplication, | 3.3 | | ||||
| | reordering | | | ||||
+------+--------------------------------------------+---------+ | ||||
| NA | SHOULD be robust to delivery delays up to | | | ||||
| | 2 minutes | | | ||||
+------+--------------------------------------------+---------+ | ||||
+------+--------------------------------------------+---------+ | ||||
| Yes | SHOULD enable IPv4 UDP checksum | 3.4 | | ||||
+------+--------------------------------------------+---------+ | ||||
| Yes | SHOULD enable IPv6 UDP checksum; specific | 3.4.1 | | ||||
| | application mechanisms are REQUIRED if a | | | ||||
| | zero IPv6 UDP checksum is used | | | ||||
+------+--------------------------------------------+---------+ | ||||
+------+--------------------------------------------+---------+ | ||||
| NA | SHOULD provide protection from off-path | 5.1 | | ||||
| | attacks | | | ||||
+------+--------------------------------------------+---------+ | ||||
| | else, MAY use UDP-Lite with suitable | 3.4.2 | | ||||
| | checksum coverage | | | ||||
+------+--------------------------------------------+---------+ | ||||
+------+--------------------------------------------+---------+ | ||||
| NA | SHOULD NOT always send middlebox keep- | 3.5 | | ||||
| | alive messages | | | ||||
+------+--------------------------------------------+---------+ | ||||
| NA | MAY use keep-alives when needed (min. | | | ||||
| | interval 15 sec) | | | ||||
+------+--------------------------------------------+---------+ | ||||
+------+--------------------------------------------+---------+ | ||||
| Yes | Applications specified for use in limited | 3.6 | | ||||
| | use (or controlled environments) SHOULD | | | ||||
| | identify equivalent mechanisms and | | | ||||
| | describe their use case | | | ||||
+------+--------------------------------------------+---------+ | ||||
+------+--------------------------------------------+---------+ | ||||
| NA | Bulk-multicast apps SHOULD implement | 4.1.1 | | ||||
| | congestion control | | | ||||
+------+--------------------------------------------+---------+ | ||||
+------+--------------------------------------------+---------+ | ||||
| NA | Low volume multicast apps SHOULD implement | 4.1.2 | | ||||
| | congestion control | | | ||||
+------+--------------------------------------------+---------+ | ||||
+------+--------------------------------------------+---------+ | ||||
| NA | Multicast apps SHOULD use a safe PMTU | 4.2 | | ||||
+------+--------------------------------------------+---------+ | ||||
+------+--------------------------------------------+---------+ | ||||
| Yes | SHOULD avoid using multiple ports | 5.1.2 | | ||||
+------+--------------------------------------------+---------+ | ||||
| Yes | MUST check received IP source address | | | ||||
+------+--------------------------------------------+---------+ | ||||
+------+--------------------------------------------+---------+ | ||||
| NA | SHOULD validate payload in ICMP messages | 5.2 | | ||||
+------+--------------------------------------------+---------+ | ||||
+------+--------------------------------------------+---------+ | ||||
| Yes | SHOULD use a randomized Source port or | 6 | | ||||
| | equivalent technique, and, for client/ | | | ||||
| | server applications, SHOULD send responses | | | ||||
| | from source address matching request | | | ||||
+------+--------------------------------------------+---------+ | ||||
| NA | SHOULD use standard IETF security | 6 | | ||||
| | protocols when needed | | | ||||
+------+--------------------------------------------+---------+ | ||||
Table 4: Summary of Key Guidelines from RFC 8085 | ||||
Acknowledgments | ||||
Thanks to Joachim Fabini, Matt Mathis, J. Ignacio Alvarez-Hamelin, | ||||
Wolfgang Balzer, Frank Brockners, Greg Mirsky, Martin Duke, Murray | ||||
Kucherawy, and Benjamin Kaduk for their extensive comments on this | ||||
memo and related topics. In a second round of reviews, we | ||||
acknowledge Magnus Westerlund, Lars Eggert, and Zaheduzzaman Sarker. | ||||
Authors' Addresses | Authors' Addresses | |||
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 | |||
Fax: +1 732 368 1192 | ||||
Email: acm@research.att.com | Email: acm@research.att.com | |||
Ruediger Geib | RΓΌdiger Geib | |||
Deutsche Telekom | Deutsche Telekom | |||
Heinrich Hertz Str. 3-7 | Heinrich Hertz Str. 3-7 | |||
Darmstadt 64295 | 64295 Darmstadt | |||
Germany | Germany | |||
Phone: +49 6151 5812747 | Phone: +49 6151 5812747 | |||
Email: Ruediger.Geib@telekom.de | Email: Ruediger.Geib@telekom.de | |||
Len Ciavattone | Len Ciavattone | |||
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 1239 | ||||
Email: lencia@att.com | Email: lencia@att.com | |||
End of changes. 237 change blocks. | ||||
982 lines changed or deleted | 1068 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |