rfc9439.original | rfc9439.txt | |||
---|---|---|---|---|
ALTO Working Group Q. Wu | Internet Engineering Task Force (IETF) Q. Wu | |||
Internet-Draft Huawei | Request for Comments: 9439 Huawei | |||
Intended status: Standards Track Y. Yang | Category: Standards Track Y. Yang | |||
Expires: 22 September 2022 Yale University | ISSN: 2070-1721 Yale University | |||
Y. Lee | Y. Lee | |||
Samsung | Samsung | |||
D. Dhody | D. Dhody | |||
Huawei | Huawei | |||
S. Randriamasy | S. Randriamasy | |||
Nokia Bell Labs | Nokia Networks France | |||
L. Contreras | L. Contreras | |||
Telefonica | Telefonica | |||
21 March 2022 | August 2023 | |||
ALTO Performance Cost Metrics | Application-Layer Traffic Optimization (ALTO) Performance Cost Metrics | |||
draft-ietf-alto-performance-metrics-28 | ||||
Abstract | Abstract | |||
The cost metric is a basic concept in Application-Layer Traffic | The cost metric is a basic concept in Application-Layer Traffic | |||
Optimization (ALTO), and different applications may use different | Optimization (ALTO), and different applications may use different | |||
types of cost metrics. Since the ALTO base protocol (RFC 7285) | types of cost metrics. Since the ALTO base protocol (RFC 7285) | |||
defines only a single cost metric (namely, the generic "routingcost" | defines only a single cost metric (namely, the generic "routingcost" | |||
metric), if an application wants to issue a cost map or an endpoint | metric), if an application wants to issue a cost map or an endpoint | |||
cost request in order to identify a resource provider that offers | cost request in order to identify a resource provider that offers | |||
better performance metrics (e.g., lower delay or loss rate), the base | better performance metrics (e.g., lower delay or loss rate), the base | |||
protocol does not define the cost metric to be used. | protocol does not define the cost metric to be used. | |||
This document addresses this issue by extending the specification to | This document addresses this issue by extending the specification to | |||
provide a variety of network performance metrics, including network | provide a variety of network performance metrics, including network | |||
delay, delay variation (a.k.a, jitter), packet loss rate, hop count, | delay, delay variation (a.k.a. jitter), packet loss rate, hop count, | |||
and bandwidth. | and bandwidth. | |||
There are multiple sources (e.g., estimation based on measurements or | There are multiple sources (e.g., estimations based on measurements | |||
service-level agreement) to derive a performance metric. This | or a Service Level Agreement) available for deriving a performance | |||
document introduces an additional "cost-context" field to the ALTO | metric. This document introduces an additional "cost-context" field | |||
"cost-type" field to convey the source of a performance metric. | to the ALTO "cost-type" field to convey the source of a performance | |||
metric. | ||||
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 22 September 2022. | 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/rfc9439. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2023 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
2. Requirements Language . . . . . . . . . . . . . . . . . . . . 6 | 2. Requirements Language | |||
3. Performance Metric Attributes . . . . . . . . . . . . . . . . 6 | 3. Performance Metric Attributes | |||
3.1. Performance Metric Context: "cost-context" . . . . . . . 7 | 3.1. Performance Metric Context: "cost-context" | |||
3.2. Performance Metric Statistics . . . . . . . . . . . . . . 9 | 3.2. Performance Metric Statistics | |||
4. Packet Performance Metrics . . . . . . . . . . . . . . . . . 11 | 4. Packet Performance Metrics | |||
4.1. Cost Metric: One-Way Delay (delay-ow) . . . . . . . . . . 11 | 4.1. Cost Metric: One-Way Delay (delay-ow) | |||
4.1.1. Base Identifier . . . . . . . . . . . . . . . . . . . 11 | 4.1.1. Base Identifier | |||
4.1.2. Value Representation . . . . . . . . . . . . . . . . 12 | 4.1.2. Value Representation | |||
4.1.3. Intended Semantics and Use . . . . . . . . . . . . . 12 | 4.1.3. Intended Semantics and Use | |||
4.1.4. Cost-Context Specification Considerations . . . . . . 14 | 4.1.4. Cost-Context Specification Considerations | |||
4.2. Cost Metric: Round-trip Delay (delay-rt) . . . . . . . . 16 | 4.2. Cost Metric: Round-Trip Delay (delay-rt) | |||
4.2.1. Base Identifier . . . . . . . . . . . . . . . . . . . 16 | 4.2.1. Base Identifier | |||
4.2.2. Value Representation . . . . . . . . . . . . . . . . 16 | 4.2.2. Value Representation | |||
4.2.3. Intended Semantics and Use . . . . . . . . . . . . . 16 | 4.2.3. Intended Semantics and Use | |||
4.2.4. Cost-Context Specification Considerations . . . . . . 17 | 4.2.4. Cost-Context Specification Considerations | |||
4.3. Cost Metric: Delay Variation (delay-variation) . . . . . 18 | 4.3. Cost Metric: Delay Variation (delay-variation) | |||
4.3.1. Base Identifier . . . . . . . . . . . . . . . . . . . 18 | 4.3.1. Base Identifier | |||
4.3.2. Value Representation . . . . . . . . . . . . . . . . 18 | 4.3.2. Value Representation | |||
4.3.3. Intended Semantics and Use . . . . . . . . . . . . . 18 | 4.3.3. Intended Semantics and Use | |||
4.3.4. Cost-Context Specification Considerations . . . . . . 19 | 4.3.4. Cost-Context Specification Considerations | |||
4.4. Cost Metric: Loss Rate (lossrate) . . . . . . . . . . . . 20 | 4.4. Cost Metric: Loss Rate (lossrate) | |||
4.4.1. Base Identifier . . . . . . . . . . . . . . . . . . . 20 | 4.4.1. Base Identifier | |||
4.4.2. Value Representation . . . . . . . . . . . . . . . . 20 | 4.4.2. Value Representation | |||
4.4.3. Intended Semantics and Use . . . . . . . . . . . . . 20 | 4.4.3. Intended Semantics and Use | |||
4.4.4. Cost-Context Specification Considerations . . . . . . 21 | 4.4.4. Cost-Context Specification Considerations | |||
4.5. Cost Metric: Hop Count (hopcount) . . . . . . . . . . . . 22 | 4.5. Cost Metric: Hop Count (hopcount) | |||
4.5.1. Base Identifier . . . . . . . . . . . . . . . . . . . 22 | 4.5.1. Base Identifier | |||
4.5.2. Value Representation . . . . . . . . . . . . . . . . 22 | 4.5.2. Value Representation | |||
4.5.3. Intended Semantics and Use . . . . . . . . . . . . . 22 | 4.5.3. Intended Semantics and Use | |||
4.5.4. Cost-Context Specification Considerations . . . . . . 23 | 4.5.4. Cost-Context Specification Considerations | |||
5. Throughput/Bandwidth Performance Metrics . . . . . . . . . . 24 | 5. Throughput/Bandwidth Performance Metrics | |||
5.1. Cost Metric: TCP Throughput (tput) . . . . . . . . . . . 24 | 5.1. Cost Metric: TCP Throughput (tput) | |||
5.1.1. Base Identifier . . . . . . . . . . . . . . . . . . . 24 | 5.1.1. Base Identifier | |||
5.1.2. Value Representation . . . . . . . . . . . . . . . . 24 | 5.1.2. Value Representation | |||
5.1.3. Intended Semantics and Use . . . . . . . . . . . . . 24 | 5.1.3. Intended Semantics and Use | |||
5.1.4. Cost-Context Specification Considerations . . . . . . 25 | 5.1.4. Cost-Context Specification Considerations | |||
5.2. Cost Metric: Residual Bandwidth (bw-residual) . . . . . . 26 | 5.2. Cost Metric: Residual Bandwidth (bw-residual) | |||
5.2.1. Base Identifier . . . . . . . . . . . . . . . . . . . 26 | 5.2.1. Base Identifier | |||
5.2.2. Value Representation . . . . . . . . . . . . . . . . 26 | 5.2.2. Value Representation | |||
5.2.3. Intended Semantics and Use . . . . . . . . . . . . . 26 | 5.2.3. Intended Semantics and Use | |||
5.2.4. Cost-Context Specification Considerations . . . . . . 28 | 5.2.4. Cost-Context Specification Considerations | |||
5.3. Cost Metric: Available Bandwidth (bw-available) . . . . . 28 | 5.3. Cost Metric: Available Bandwidth (bw-available) | |||
5.3.1. Base Identifier . . . . . . . . . . . . . . . . . . . 28 | 5.3.1. Base Identifier | |||
5.3.2. Value Representation . . . . . . . . . . . . . . . . 28 | 5.3.2. Value Representation | |||
5.3.3. Intended Semantics and Use . . . . . . . . . . . . . 29 | 5.3.3. Intended Semantics and Use | |||
5.3.4. Cost-Context Specification Considerations . . . . . . 30 | 5.3.4. Cost-Context Specification Considerations | |||
6. Operational Considerations . . . . . . . . . . . . . . . . . 30 | 6. Operational Considerations | |||
6.1. Source Considerations . . . . . . . . . . . . . . . . . . 31 | 6.1. Source Considerations | |||
6.2. Metric Timestamp Consideration . . . . . . . . . . . . . 31 | 6.2. Metric Timestamp Considerations | |||
6.3. Backward Compatibility Considerations . . . . . . . . . . 31 | 6.3. Backward-Compatibility Considerations | |||
6.4. Computation Considerations . . . . . . . . . . . . . . . 32 | 6.4. Computation Considerations | |||
6.4.1. Configuration Parameters Considerations . . . . . . . 32 | 6.4.1. Configuration Parameter Considerations | |||
6.4.2. Aggregation Computation Considerations . . . . . . . 32 | 6.4.2. Aggregation Computation Considerations | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 32 | 7. Security Considerations | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33 | 8. IANA Considerations | |||
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 35 | 8.1. ALTO Cost Metrics Registry | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 | 8.2. ALTO Cost Source Types Registry | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 35 | 9. References | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 37 | 9.1. Normative References | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 38 | 9.2. Informative References | |||
Acknowledgments | ||||
Authors' Addresses | ||||
1. Introduction | 1. Introduction | |||
Application-Layer Traffic Optimization (ALTO) provides a means for | Application-Layer Traffic Optimization (ALTO) provides a means for | |||
network applications to obtain network information so that the | network applications to obtain network information so that the | |||
applications can identify efficient application-layer traffic | applications can identify efficient application-layer traffic | |||
patterns using the networks. Cost metrics are used in both the ALTO | patterns using the networks. Cost metrics are used in both the ALTO | |||
cost map service and the ALTO endpoint cost service in the ALTO base | cost map service and the ALTO endpoint cost service in the ALTO base | |||
protocol [RFC7285]. | protocol [RFC7285]. | |||
Since different applications may use different cost metrics, the ALTO | Since different applications may use different cost metrics, the ALTO | |||
base protocol introduces an ALTO Cost Metric Registry (Section 14.2 | base protocol introduced the "ALTO Cost Metrics" registry | |||
of [RFC7285]) as a systematic mechanism to allow different metrics to | (Section 14.2 of [RFC7285]) as a systematic mechanism to allow | |||
be specified. For example, a delay-sensitive application may want to | different metrics to be specified. For example, a delay-sensitive | |||
use latency related metrics, and a bandwidth-sensitive application | application may want to use latency-related metrics, and a bandwidth- | |||
may want to use bandwidth related metrics. However, the ALTO base | sensitive application may want to use bandwidth-related metrics. | |||
protocol has registered only a single cost metric, i.e., the generic | However, the ALTO base protocol has registered only a single cost | |||
"routingcost" metric (Section 14.2 of [RFC7285]); no latency or | metric, i.e., the generic "routingcost" metric (Section 14.2 of | |||
bandwidth related metrics are defined in the base protocol. | [RFC7285]); no latency- or bandwidth-related metrics are defined in | |||
the base protocol. | ||||
This document registers a set of new cost metrics (Table 1) to allow | This document registers a set of new cost metrics (Table 1) to allow | |||
applications to determine "where" to connect based on network | applications to determine where to connect based on network | |||
performance criteria including delay and bandwidth related metrics. | performance criteria, including delay- and bandwidth-related metrics. | |||
+--------------------+-------------+--------------------------------+ | +============+===============+=====================================+ | |||
| Metric | Definition | Semantics Based On | | | Metric | Definition in | Semantics Based On | | |||
| | in this doc | | | | | This Document | | | |||
+--------------------+-------------+--------------------------------+ | +============+===============+=====================================+ | |||
| One-way Delay | Section 4.1 | Base: [RFC7471,8570,8571] | | | One-Way | Section 4.1 | Base: [RFC7471] [RFC8570] [RFC8571] | | |||
| | | sum Unidirectional Delay | | | Delay | | sum of Unidirectional Delay of | | |||
| Round-trip Delay | Section 4.2 | Base: Sum of two directions | | | | | links along the path | | |||
| | | from above | | +------------+---------------+-------------------------------------+ | |||
| Delay Variation | Section 4.3 | Base: [RFC7471,8570,8571] | | | Round-Trip | Section 4.2 | Base: Sum of two directions of | | |||
| | | sum of Unidirectional Delay | | | Delay | | Unidirectional Delay | | |||
| | | Variation | | +------------+---------------+-------------------------------------+ | |||
| Loss Rate | Section 4.4 | Base: [RFC7471,8570,8571] | | | Delay | Section 4.3 | Base: [RFC7471] [RFC8570] [RFC8571] | | |||
| | | aggr Unidirectional Link Loss | | | Variation | | Sum of Unidirectional Delay | | |||
| Residual Bandwidth | Section 5.2 | Base: [RFC7471,8570,8571] | | | | | Variation of links along the path | | |||
| | | min Unidirectional Residual BW| | +------------+---------------+-------------------------------------+ | |||
| Available Bandwidth| Section 5.3 | Base: [RFC7471,8570,8571] | | | Loss Rate | Section 4.4 | Base: [RFC7471] [RFC8570] [RFC8571] | | |||
| | | min Unidirectional Avail. BW | | | | | aggr Unidirectional Link Loss | | |||
| | | | | +------------+---------------+-------------------------------------+ | |||
| TCP Throughput | Section 5.1 | [I-D.ietf-tcpm-rfc8312bis] | | | Residual | Section 5.2 | Base: [RFC7471] [RFC8570] [RFC8571] | | |||
| | | | | | Bandwidth | | min Unidirectional Residual BW | | |||
| Hop Count | Section 4.5 | [RFC7285] | | +------------+---------------+-------------------------------------+ | |||
+--------------------+-------------+--------------------------------+ | | Available | Section 5.3 | Base: [RFC7471] [RFC8570] [RFC8571] | | |||
Table 1. Cost Metrics Defined in this Document. | | Bandwidth | | min Unidirectional Available BW | | |||
+------------+---------------+-------------------------------------+ | ||||
| TCP | Section 5.1 | [RFC9438] | | ||||
| Throughput | | | | ||||
+------------+---------------+-------------------------------------+ | ||||
| Hop Count | Section 4.5 | [RFC7285] | | ||||
+------------+---------------+-------------------------------------+ | ||||
The first 6 metrics listed in Table 1 (i.e., One-way Delay, Round- | Table 1: Cost Metrics Defined in This Document | |||
trip Delay, Delay Variation, Loss Rate, Residual Bandwidth, and | ||||
Available Bandwidth) are derived from the set of traffic engineering | ||||
performance metrics commonly defined in OSPF [RFC3630], [RFC7471]; | ||||
IS-IS [RFC5305], [RFC8570]; and BGP-LS [RFC8571]. Deriving ALTO cost | ||||
performance metrics from existing network-layer traffic engineering | ||||
performance metrics, to expose to application-layer traffic | ||||
optimization, can be a typical mechanism by network operators to | ||||
deploy ALTO [RFC7971], [FlowDirector]. This document defines the | ||||
base semantics of these metrics by extending them from link metrics | ||||
to end-to-end metrics for ALTO. The "Semantics Based On" column | ||||
specifies at a high level how the end-to-end metric is computed from | ||||
link metrics; the details will be specified in the following | ||||
sections. | ||||
The common metrics Min/Max Unidirectional Delay defined in | The first six metrics listed in Table 1 (i.e., one-way delay, round- | |||
[RFC8570][RFC8571] and Max Link Bandwidth defined in | trip delay, delay variation, loss rate, residual bandwidth, and | |||
[RFC3630,RFC5305] are not listed in Table 1 because they can be | available bandwidth) are derived from the set of Traffic Engineering | |||
handled by applying the statistical operators defined in this | (TE) performance metrics commonly defined in OSPF [RFC3630] | |||
document. The metrics related with utilized bandwidth and reservable | [RFC7471], IS-IS [RFC5305] [RFC8570], and BGP - Link State (BGP-LS) | |||
bandwidth (i.e., Max Reservable BW and Unreserved BW defined in | [RFC8571]. Deriving ALTO cost performance metrics from existing | |||
[RFC3630,RFC5305]) are outside the scope of this document. | network-layer TE performance metrics, and making it exposed to ALTO, | |||
can be a typical mechanism used by network operators to deploy ALTO | ||||
[RFC7971] [FlowDirector]. This document defines the base semantics | ||||
of these metrics by extending them from link metrics to end-to-end | ||||
metrics for ALTO. The "Semantics Based On" column specifies at a | ||||
high level how the end-to-end metrics are computed from link metrics; | ||||
details will be specified in the following sections. | ||||
The 7th metric (the estimated TCP-flow throughput metric) provides an | The Min/Max Unidirectional Link Delay metric as defined in [RFC8570] | |||
estimation of the bandwidth of a TCP flow, using TCP throughput | and [RFC8571], and Maximum (Link) Bandwidth as defined in [RFC3630] | |||
modeling, to support use cases of adaptive applications [Prophet], | and [RFC5305], are not listed in Table 1 because they can be handled | |||
[G2]. Note that other transport-specific metrics can be defined in | by applying the statistical operators defined in this document. The | |||
the future. For example, QUIC-related metrics [RFC9000] can be | metrics related to utilized bandwidth and reservable bandwidth (i.e., | |||
considered when the methodology to measure such metrics is more | Maximum Reservable (Link) Bandwidth and Unreserved Bandwidth as | |||
mature (e.g., [I-D.corre-quic-throughput-testing]). | defined in [RFC3630] and [RFC5305]) are outside the scope of this | |||
document. | ||||
The 8th metric (the hop count metric) in Table 1 is mentioned in the | The seventh metric in Table 1 (the estimated TCP-flow throughput | |||
ALTO base protocol [RFC7285], but not defined, and this document | metric) provides an estimation of the bandwidth of a TCP flow, using | |||
defines it to be complete. | TCP throughput modeling, to support use cases of adaptive | |||
applications [Prophet] [G2]. Note that other transport-specific | ||||
metrics can be defined in the future. For example, QUIC-related | ||||
metrics [RFC9000] can be considered when the methodology for | ||||
measuring such metrics is more mature (e.g., see | ||||
[QUIC-THROUGHPUT-TESTING]). | ||||
These 8 performance metrics can be classified into two categories: | The eighth metric in Table 1 (the hop count metric) is mentioned, but | |||
those derived from the performance of individual packets (i.e., One- | not defined, in the ALTO base protocol [RFC7285]; this document | |||
way Delay, Round-trip Delay, Delay Variation, Loss Rate, and Hop | provides a definition for it. | |||
Count), and those related to bandwidth/throughput (Residual | ||||
bandwidth, and Available Bandwidth, and TCP throughput). These two | These eight performance metrics can be classified into two | |||
categories are defined in Sections 4 and 5 respectively. Note that | categories: those derived from the performance of individual packets | |||
all metrics except Round-trip Delay are unidirectional. An ALTO | (i.e., one-way delay, round-trip delay, delay variation, loss rate, | |||
and hop count) and those related to bandwidth/throughput (residual | ||||
bandwidth, available bandwidth, and TCP throughput). These two | ||||
categories are defined in Sections 4 and 5, respectively. Note that | ||||
all metrics except round-trip delay are unidirectional. An ALTO | ||||
client will need to query both directions if needed. | client will need to query both directions if needed. | |||
The purpose of this document is to ensure proper usage of these 8 | The purpose of this document is to ensure proper usage of these eight | |||
performance metrics in the context of ALTO. This document follows | performance metrics in the context of ALTO. This document follows | |||
the guideline defined in Section 14.2 of the ALTO base protocol | the guidelines defined in Section 14.2 of [RFC7285] on registering | |||
[RFC7285] on registering ALTO cost metrics. Hence, it specifies the | ALTO cost metrics. Hence, it specifies the identifier, the intended | |||
identifier, the intended semantics, and the security considerations | semantics, and the security considerations of each one of the metrics | |||
of each one of the metrics specified in Table 1. | specified in Table 1. | |||
The definitions of the intended semantics of the metrics tend to be | The definitions of the intended semantics of the metrics tend to be | |||
coarse-grained, for guidance only, and they may work well for ALTO. | coarse grained and are for guidance only, and they may work well for | |||
On the other hand, a performance measurement framework, such as the | ALTO. On the other hand, a performance measurement framework, such | |||
IP Performance Measurement (IPPM) framework, may provide more details | as the IP Performance Metrics (IPPM) framework, may provide more | |||
in defining a performance metric. This document introduces a | details for defining a performance metric. This document introduces | |||
mechanism called "cost-context" to provide additional details, when | a mechanism called "cost-context" to provide additional details, when | |||
they are available; see Section 3. | they are available; see Section 3. | |||
Following the ALTO base protocol, this document uses JSON to specify | Following the ALTO base protocol, this document uses JSON to specify | |||
the value type of each defined metric. See [RFC8259] for JSON data | the value type of each defined metric. See [RFC8259] for JSON data | |||
type specification. In particular, [RFC7285] specifies that cost | type specifications. In particular, [RFC7285] specifies that cost | |||
values should be assumed by default as JSONNumber. When defining the | values should be assumed by default to be 'JSONNumber'. When | |||
value representation of each metric in Table 1, this document | defining the value representation of each metric in Table 1, this | |||
conforms to [RFC7285], but specifies additional, generic constraints | document conforms to [RFC7285] but specifies additional, generic | |||
on valid JSONNumbers for each metric. For example, each new metric | constraints on valid JSONNumbers for each metric. For example, each | |||
in Table 1 will be specified as non-negative (>= 0); Hop Count is | new metric in Table 1 will be specified as non-negative (>= 0); Hop | |||
specified to be an integer. | Count is specified to be an integer. | |||
An ALTO server may provide only a subset of the metrics described in | An ALTO server may provide only a subset of the metrics described in | |||
this document. For example, those that are subject to privacy | this document. For example, those that are subject to privacy | |||
concerns should not be provided to unauthorized ALTO clients. Hence, | concerns should not be provided to unauthorized ALTO clients. Hence, | |||
all cost metrics defined in this document are optional; not all of | all cost metrics defined in this document are optional; not all of | |||
them need to be exposed to a given application. When an ALTO server | them need to be exposed to a given application. When an ALTO server | |||
supports a cost metric defined in this document, it announces the | supports a cost metric defined in this document, it announces the | |||
metric in its information resource directory (IRD) as defined in | metric in its information resource directory (IRD) as defined in | |||
Section 9.2 of [RFC7285]. | Section 9.2 of [RFC7285]. | |||
An ALTO server introducing these metrics should consider related | An ALTO server introducing these metrics should consider related | |||
security issues. As a generic security consideration on the | security issues. As a generic security consideration regarding | |||
reliability and trust in the exposed metric values, applications | reliability and trust in the exposed metric values, applications | |||
SHOULD rapidly give up using ALTO-based guidance if they detect that | SHOULD promptly stop using ALTO-based guidance if they detect that | |||
the exposed information does not preserve their performance level or | the exposed information does not preserve their performance level or | |||
even degrades it. Section 7 discusses security considerations in | even degrades it. Section 7 discusses security considerations in | |||
more detail. | more detail. | |||
2. Requirements Language | 2. 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. | |||
3. Performance Metric Attributes | 3. Performance Metric Attributes | |||
The definitions of the metrics in this document are coarse-grained, | The definitions of the metrics in this document are coarse grained, | |||
based on network-layer traffic engineering performance metrics, for | based on network-layer TE performance metrics, and for guidance only. | |||
guidance only. A fine-grained framework specified in [RFC6390] | A fine-grained framework as specified in [RFC6390] requires that the | |||
requires that the fine-grained specification of a network performance | fine-grained specification of a network performance metric include | |||
metric include 6 components: (i) Metric Name, (ii) Metric | six components: (1) Metric Name, (2) Metric Description, (3) Method | |||
Description, (iii) Method of Measurement or Calculation, (iv) Units | of Measurement or Calculation, (4) Units of Measurement, (5) | |||
of Measurement, (v) Measurement Points, and (vi) Measurement Timing. | Measurement Points, and (6) Measurement Timing. Requiring that an | |||
Requiring that an ALTO server provides precise, fine-grained values | ALTO server provide precise, fine-grained values for all six | |||
for all 6 components for each metric that it exposes may not be | components for each metric that it exposes may not be feasible or | |||
feasible or necessary for all ALTO use cases. For example, an ALTO | necessary for all ALTO use cases. For example, an ALTO server | |||
server computing its metrics from network-layer traffic-engineering | computing its metrics from network-layer TE performance metrics may | |||
performance metrics may not have information about the method of | not have information about the method of measurement or calculation | |||
measurement or calculation (e.g., measured traffic patterns). | (e.g., measured traffic patterns). | |||
To address the issue and realize ALTO use cases, for metrics in | To address the issue and realize ALTO use cases for the metrics | |||
Table 1, this document defines performance metric identifiers which | listed in Table 1, this document defines performance metric | |||
can be used in the ALTO protocol with well-defined (i) Metric Name, | identifiers that can be used in the ALTO Protocol with the following | |||
(ii) Metric Description, (iv) Units of Measurement, and (v) | well-defined items: (1) Metric Name, (2) Metric Description, (3) | |||
Measurement Points, which are always specified by the specific ALTO | Units of Measurement, and (4) Measurement Points, which are always | |||
services; for example, endpoint cost service is between the two | specified by the specific ALTO services; for example, the endpoint | |||
endpoints. Hence, the ALTO performance metric identifiers provide | cost service is between the two endpoints. Hence, the ALTO | |||
basic metric attributes. | performance metric identifiers provide basic metric attributes. | |||
To allow the flexibility of allowing an ALTO server to provide fine- | To allow the flexibility of allowing an ALTO server to provide fine- | |||
grained information such as Method of Measurement or Calculation, | grained information such as Method of Measurement or Calculation | |||
according to its policy and use cases, this document introduces | according to its policy and use cases, this document introduces | |||
context information so that the server can provide these additional | context information so that the server can provide these additional | |||
details. | details. | |||
3.1. Performance Metric Context: "cost-context" | 3.1. Performance Metric Context: "cost-context" | |||
The core additional details of a performance metric specify "how" the | The core additional details of a performance metric specify how the | |||
metric is obtained. This is referred to as the source of the metric. | metric is obtained. This is referred to as the source of the metric. | |||
Specifically, this document defines three types of coarse-grained | Specifically, this document defines three types of coarse-grained | |||
metric information sources: "nominal", and "sla" (service level | metric information sources: "nominal", "sla", and "estimation". | |||
agreement), and "estimation". | ||||
For a given type of source, precise interpretation of a performance | For a given type of source, precise interpretation of a performance | |||
metric value can depend on specific measurement and computation | metric value can depend on specific measurement and computation | |||
parameters. | parameters. | |||
To make it possible to specify the source and the aforementioned | To make it possible to specify the source and the aforementioned | |||
parameters, this document introduces an optional "cost-context" field | parameters, this document introduces an optional "cost-context" field | |||
to the "cost-type" field defined by the ALTO base protocol | to the "cost-type" field defined by the ALTO base protocol | |||
(Section 10.7 of [RFC7285]) as the following: | (Section 10.7 of [RFC7285]) as follows: | |||
object { | object { | |||
CostMetric cost-metric; | CostMetric cost-metric; | |||
CostMode cost-mode; | CostMode cost-mode; | |||
[CostContext cost-context;] | [CostContext cost-context;] | |||
[JSONString description;] | [JSONString description;] | |||
} CostType; | } CostType; | |||
object { | object { | |||
JSONString cost-source; | JSONString cost-source; | |||
[JSONValue parameters;] | [JSONValue parameters;] | |||
} CostContext; | } CostContext; | |||
"cost-context" will not be used as a key to distinguish among | "cost-context" will not be used as a key to distinguish among | |||
performance metrics. Hence, an ALTO information resource MUST NOT | performance metrics. Hence, an ALTO information resource MUST NOT | |||
announce multiple CostType with the same "cost-metric", "cost-mode" | announce multiple CostType entries with the same "cost-metric", | |||
and "cost-context". They must be placed into different information | "cost-mode", and "cost-context". They must be placed into different | |||
resources. | information resources. | |||
The "cost-source" field of the "cost-context" field is defined as a | The "cost-source" field of the "cost-context" field is defined as a | |||
string consisting of only US-ASCII alphanumeric characters | string consisting of only ASCII alphanumeric characters | |||
(U+0030-U+0039, U+0041-U+005A, and U+0061-U+007A). The cost-source | (U+0030-U+0039, U+0041-U+005A, and U+0061-U+007A). The "cost-source" | |||
is used in this document to indicate a string of this format. | field is used in this document to indicate a string of this format. | |||
As mentioned above, this document defines three values for "cost- | As mentioned above, this document defines three values for "cost- | |||
source": "nominal", "sla", and "estimation". The "cost-source" field | source": "nominal", "sla", and "estimation". The "cost-source" field | |||
of the "cost-context" field MUST be one registered in "ALTO Cost | of the "cost-context" field MUST be one that is registered in the | |||
Source" registry (Section 8). | "ALTO Cost Source Types" registry (Section 8). | |||
The "nominal" category indicates that the metric value is statically | The "nominal" category indicates that the metric value is statically | |||
configured by the underlying devices. Not all metrics have | configured by the underlying devices. Not all metrics have | |||
reasonable "nominal" values. For example, throughput can have a | reasonable "nominal" values. For example, throughput can have a | |||
nominal value, which indicates the configured transmission rate of | nominal value, which indicates the configured transmission rate of | |||
the involved devices; latency typically does not have a nominal | the involved devices; latency typically does not have a nominal | |||
value. | value. | |||
The "sla" category indicates that the metric value is derived from | The "sla" category indicates that the metric value is derived from | |||
some commitment which this document refers to as service-level | some commitment, which this document refers to as a Service Level | |||
agreement (SLA). Some operators also use terms such as "target" or | Agreement (SLA). Some operators also use terms such as "target" or | |||
"committed" values. For an "sla" metric, it is RECOMMENDED that the | "committed" values. For an "sla" metric, it is RECOMMENDED that the | |||
"parameters" field provide a link to the SLA definition. | "parameters" field provide a link to the SLA definition. | |||
The "estimation" category indicates that the metric value is computed | The "estimation" category indicates that the metric value is computed | |||
through an estimation process. An ALTO server may compute | through an estimation process. An ALTO server may compute | |||
"estimation" values by retrieving and/or aggregating information from | "estimation" values by retrieving and/or aggregating information from | |||
routing protocols (e.g., [RFC7471], [RFC8570], [RFC8571]), traffic | routing protocols (e.g., see [RFC7471], [RFC8570], and [RFC8571]), | |||
measurement management tools (e.g., TWAMP [RFC5357]), and measurement | traffic measurement management tools (e.g., the Two-Way Active | |||
frameworks (e.g., IPPM), with corresponding operational issues. An | Measurement Protocol (TWAMP) [RFC5357]), and measurement frameworks | |||
illustration of potential information flows used for estimating these | (e.g., IPPM), with corresponding operational issues. An illustration | |||
metrics is shown in Figure 1. Section 6 discusses in more detail the | of potential information flows used for estimating these metrics is | |||
shown in Figure 1. Section 6 discusses in more detail the | ||||
operational issues and how a network may address them. | operational issues and how a network may address them. | |||
+--------+ +--------+ +--------+ | +--------+ +--------+ +--------+ | |||
| Client | | Client | | Client | | | Client | | Client | | Client | | |||
+----^---+ +---^----+ +---^----+ | +----^---+ +---^----+ +---^----+ | |||
| | | | | | | | |||
+-----------|-----------+ | +-----------|-----------+ | |||
North-Bound |ALTO protocol | |ALTO Protocol | |||
Interface (NBI)| | | | |||
| | | | |||
+--+-----+ retrieval +-----------+ | +--+-----+ retrieval +-----------+ | |||
| ALTO |<----------------| Routing | | | ALTO |<----------------| Routing | | |||
| Server | and aggregation| | | | Server | and aggregation| Protocols | | |||
| |<-------------+ | Protocols | | | |<-------------+ | | | |||
+--------+ | +-----------+ | +--------+ | +-----------+ | |||
| | | | |||
| +------------+ | | +------------+ | |||
| |Performance | | | |Performance | | |||
---| Monitoring | | ---| Monitoring | | |||
| Tools | | | Tools | | |||
+------------+ | +------------+ | |||
Figure 1. A framework to compute estimation to performance metrics | ||||
There can be multiple choices in deciding the cost-source category. | Figure 1: A Framework to Compute Estimation of Performance Metrics | |||
It is the operator of an ALTO server who chooses the category. If a | ||||
metric does not include a "cost-source" value, the application MUST | There can be multiple options available when choosing the "cost- | |||
assume that the value of "cost-source" is the most generic source, | source" category; the operator of an ALTO server will make that | |||
i.e., "estimation". | choice. If a metric does not include a "cost-source" value, the | |||
application MUST assume that the value of "cost-source" is the most | ||||
generic source, i.e., "estimation". | ||||
3.2. Performance Metric Statistics | 3.2. Performance Metric Statistics | |||
The measurement of a performance metric often yields a set of samples | The measurement of a performance metric often yields a set of samples | |||
from an observation distribution ([Prometheus]), instead of a single | from an observation distribution [Prometheus], instead of a single | |||
value. A statistical operator is applied to the samples to obtain a | value. A statistical operator is applied to the samples to obtain a | |||
value to be reported to the client. Multiple statistical operators | value to be reported to the client. Multiple statistical operators | |||
(e.g., min, median, and max) are commonly being used. | (e.g., min, median, and max) are commonly being used. | |||
Hence, this document extends the general US-ASCII alphanumeric cost | Hence, this document extends the general ASCII alphanumeric cost | |||
metric strings, formally specified as the CostMetric type defined in | metric strings, formally specified as the CostMetric type defined in | |||
Section 10.6 of [RFC7285], as follows: | Section 10.6 of [RFC7285], as follows: | |||
A cost metric string consists of a base metric identifier (or base | A cost metric string consists of a base metric identifier (or base | |||
identifier for short) string, followed by an optional statistical | identifier for short) string, followed by an optional statistical | |||
operator string, connected by the ASCII character colon (':', | operator string, connected by the ASCII colon character (':', | |||
U+003A), if the statistical operator string exists. The total | U+003A), if the statistical operator string exists. The total | |||
length of the cost metric string MUST NOT exceed 32, as required | length of the cost metric string MUST NOT exceed 32, as required | |||
by [RFC7285]. | by [RFC7285]. | |||
The statistical operator string MUST be one of the following: | The statistical operator string MUST be one of the following: | |||
cur: | cur: The instantaneous observation value of the metric from the most | |||
the instantaneous observation value of the metric from the most | ||||
recent sample (i.e., the current value). | recent sample (i.e., the current value). | |||
percentile, with letter 'p' followed by a number: | percentile, with the letter 'p' followed by a number: Gives the | |||
gives the percentile specified by the number following the letter | percentile specified by the number following the letter 'p'. The | |||
'p'. The number MUST be a non-negative JSON number in the range | number MUST be a non-negative JSON number in the range [0, 100] | |||
[0, 100] (i.e., greater than or equal to 0 and less than or equal | (i.e., greater than or equal to 0 and less than or equal to 100), | |||
to 100), followed by an optional decimal part, if a higher | followed by an optional decimal part, if higher precision is | |||
precision is needed. The decimal part should start with the '.' | needed. The decimal part should start with the '.' separator | |||
separator (U+002E), and followed by a sequence of one or more | (U+002E) and be followed by a sequence of one or more ASCII | |||
ASCII numbers between '0' and '9'. Assume this number is y and | numbers between '0' and '9'. Assume that this number is y, and | |||
consider the samples coming from a random variable X. Then the | consider the case where the samples are coming from a random | |||
metric returns x, such that the probability of X is less than or | variable X. The metric then returns x, such that the probability | |||
equal to x, i.e., Prob(X <= x), = y/100. For example, delay- | of X is less than or equal to x, i.e., Prob(X <= x), = y/100. For | |||
ow:p99 gives the 99% percentile of observed one-way delay; delay- | example, delay-ow:p99 gives the 99th percentile of observed one- | |||
ow:p99.9 gives the 99.9% percentile. Note that some systems use | way delay; delay-ow:p99.9 gives the 99.9th percentile. Note that | |||
quantile, which is in the range [0, 1]. When there is a more | some systems use quantile, which is in the range [0, 1]. When | |||
common form for a given percentile, it is RECOMMENDED that the | there is a more common form for a given percentile, it is | |||
common form be used; that is, instead of p0, use min; instead of | RECOMMENDED that the common form be used; that is, instead of p0, | |||
p50, use median; instead of p100, use max. | use min; instead of p50, use median; instead of p100, use max. | |||
min: | min: The minimal value of the observations. | |||
the minimal value of the observations. | ||||
max: | max: The maximal value of the observations. | |||
the maximal value of the observations. | ||||
median: | median: The midpoint (i.e., p50) of the observations. | |||
the mid-point (i.e., p50) of the observations. | ||||
mean: | mean: The arithmetic mean value of the observations. | |||
the arithmetic mean value of the observations. | ||||
stddev: | stddev: The standard deviation of the observations. | |||
the standard deviation of the observations. | ||||
stdvar: | stdvar: The standard variance of the observations. | |||
the standard variance of the observations. | ||||
Examples of cost metric strings then include "delay-ow", "delay- | Examples of cost metric strings then include "delay-ow", "delay- | |||
ow:min", "delay-ow:p99", where "delay-ow" is the base metric | ow:min", and "delay-ow:p99", where "delay-ow" is the base metric | |||
identifier string; "min" and "p99" are example statistical operator | identifier string; "min" and "p99" are example statistical operator | |||
strings. | strings. | |||
If a cost metric string does not have the optional statistical | If a cost metric string does not have the optional statistical | |||
operator string, the statistical operator SHOULD be interpreted as | operator string, the statistical operator SHOULD be interpreted as | |||
the default statistical operator in the definition of the base | the default statistical operator in the definition of the base | |||
metric. If the definition of the base metric does not provide a | metric. If the definition of the base metric does not provide a | |||
definition for the default statistical operator, the metric MUST be | definition for the default statistical operator, the metric MUST be | |||
considered as the median value. | considered the median value. | |||
Note that RFC 7258 limits the overall cost metric identifier to 32 | Note that [RFC7285] limits the overall cost metric identifier to 32 | |||
characters. The cost metric variants with statistical operator | characters. The cost metric variants with statistical operator | |||
suffixes defined by this document are also subject to the same | suffixes defined by this document are also subject to the same | |||
overall 32-character limit, so certain combinations of (long) base | overall 32-character limit, so certain combinations of (long) base | |||
metric identifier and statistical operator will not be representable. | metric identifiers and statistical operators will not be | |||
If such a situation arises, it could be addressed by defining a new | representable. If such a situation arises, it could be addressed by | |||
base metric identifier that is an "alias" of the desired base metric, | defining a new base metric identifier that is an "alias" of the | |||
with identical semantics and just a shorter name. | desired base metric, with identical semantics and just a shorter | |||
name. | ||||
4. Packet Performance Metrics | 4. Packet Performance Metrics | |||
This section introduces ALTO network performance metrics on one way | This section introduces ALTO network performance metrics on one-way | |||
delay, round-trip delay, delay variation, packet loss rate, and hop | delay, round-trip delay, delay variation, packet loss rate, and hop | |||
count. They measure the "quality of experience" of the stream of | count. They measure the "quality of experience" of the stream of | |||
packets sent from a resource provider to a resource consumer. The | packets sent from a resource provider to a resource consumer. The | |||
measures of each individual packet (pkt) can include the delay from | measurements of each individual packet (pkt) can include the delay | |||
the time when the packet enters the network to the time when the | from the time when the packet enters the network to the time when the | |||
packet leaves the network (pkt.delay); whether the packet is dropped | packet leaves the network (pkt.delay), whether the packet is dropped | |||
before reaching the destination (pkt.dropped); the number of network | before reaching the destination (pkt.dropped), and the number of | |||
hops that the packet traverses (pkt.hopcount). The semantics of the | network hops that the packet traverses (pkt.hopcount). The semantics | |||
performance metrics defined in this section are that they are | of the performance metrics defined in this section are that they are | |||
statistics computed from these measures; for example, the | statistics computed from these measurements; for example, the | |||
x-percentile of the one-way delay is the x-percentile of the set of | x-percentile of the one-way delay is the x-percentile of the set of | |||
delays {pkt.delay} for the packets in the stream. | delays {pkt.delay} for the packets in the stream. | |||
4.1. Cost Metric: One-Way Delay (delay-ow) | 4.1. Cost Metric: One-Way Delay (delay-ow) | |||
4.1.1. Base Identifier | 4.1.1. Base Identifier | |||
The base identifier for this performance metric is "delay-ow". | The base identifier for this performance metric is "delay-ow". | |||
4.1.2. Value Representation | 4.1.2. Value Representation | |||
The metric value type is a single 'JSONNumber' type value conforming | The metric value type is a single 'JSONNumber' type value conforming | |||
to the number specification of Section 6 of [RFC8259]. The unit is | to the number specifications provided in Section 6 of [RFC8259]. The | |||
expressed in microseconds. Hence, the number can be a floating point | unit is expressed in microseconds. Hence, the number can be a | |||
number to express delay that is smaller than microseconds. The | floating-point number to express delay that is smaller than | |||
number MUST be non-negative. | microseconds. The number MUST be non-negative. | |||
4.1.3. Intended Semantics and Use | 4.1.3. Intended Semantics and Use | |||
Intended Semantics: To specify the temporal and spatial aggregated | Intended Semantics: To specify the temporal and spatial aggregated | |||
delay of a stream of packets from the specified source to the | delay of a stream of packets from the specified source to the | |||
specified destination. The base semantics of the metric is the | specified destination. The base semantics of the metric is the | |||
Unidirectional Delay metric defined in [RFC8571,RFC8570,RFC7471], but | Unidirectional Delay metric as defined in [RFC8571], [RFC8570], | |||
instead of specifying the delay for a link, it is the (temporal) | and [RFC7471], but instead of specifying the delay for a link, it | |||
aggregation of the link delays from the source to the destination. A | is the (temporal) aggregation of the link delays from the source | |||
non-normative reference definition of end-to-end one-way delay is | to the destination. A non-normative reference definition of the | |||
[RFC7679]. The spatial aggregation level is specified in the query | end-to-end one-way delay metric is provided in [RFC7679]. The | |||
context, e.g., provider-defined identifier (PID) to PID, or endpoint | spatial aggregation level is specified in the query context, e.g., | |||
to endpoint, where PID is defined in Section 5.1 of [RFC7285]. | provider-defined identifier (PID) to PID, or endpoint to endpoint, | |||
where the PID is as defined in Section 5.1 of [RFC7285]. | ||||
Use: This metric could be used as a cost metric constraint attribute | ||||
or as a returned cost metric in the response. | ||||
Example 1: Delay value on source-destination endpoint pairs | Use: This metric could be used as a cost metric constraint attribute | |||
or as a returned cost metric in the response. | ||||
POST /endpointcost/lookup HTTP/1.1 | POST /endpointcost/lookup HTTP/1.1 | |||
Host: alto.example.com | Host: alto.example.com | |||
Content-Length: 239 | Content-Length: 239 | |||
Content-Type: application/alto-endpointcostparams+json | Content-Type: application/alto-endpointcostparams+json | |||
Accept: | Accept: | |||
application/alto-endpointcost+json,application/alto-error+json | application/alto-endpointcost+json,application/alto-error+json | |||
{ | { | |||
"cost-type": { | "cost-type": { | |||
skipping to change at page 13, line 4 ¶ | skipping to change at line 558 ¶ | |||
"endpoints": { | "endpoints": { | |||
"srcs": [ | "srcs": [ | |||
"ipv4:192.0.2.2" | "ipv4:192.0.2.2" | |||
], | ], | |||
"dsts": [ | "dsts": [ | |||
"ipv4:192.0.2.89", | "ipv4:192.0.2.89", | |||
"ipv4:198.51.100.34" | "ipv4:198.51.100.34" | |||
] | ] | |||
} | } | |||
} | } | |||
HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
Content-Length: 247 | Content-Length: 247 | |||
Content-Type: application/alto-endpointcost+json | Content-Type: application/alto-endpointcost+json | |||
{ | { | |||
"meta": { | "meta": { | |||
"cost-type": { | "cost-type": { | |||
"cost-mode": "numerical", | "cost-mode": "numerical", | |||
"cost-metric": "delay-ow" | "cost-metric": "delay-ow" | |||
} | } | |||
}, | }, | |||
"endpoint-cost-map": { | "endpoint-cost-map": { | |||
"ipv4:192.0.2.2": { | "ipv4:192.0.2.2": { | |||
"ipv4:192.0.2.89": 10, | "ipv4:192.0.2.89": 10, | |||
"ipv4:198.51.100.34": 20 | "ipv4:198.51.100.34": 20 | |||
} | } | |||
} | } | |||
} | } | |||
Figure 2: Delay Value on Source-Destination Endpoint Pairs | ||||
(Example 1) | ||||
Note that since the "cost-type" does not include the "cost-source" | Note that since the "cost-type" does not include the "cost-source" | |||
field, the values are based on "estimation". Since the identifier | field, the values are based on "estimation". Since the identifier | |||
does not include the statistical operator string component, the | does not include the statistical operator string component, the | |||
values will represent median values. | values will represent median values. | |||
Example 1a below shows an example that is similar to Example 1, but | Figure 3 shows an example that is similar to Example 1 (Figure 2), | |||
for IPv6. | but for IPv6. | |||
Example 1a: Delay value on source-destination endpoint pairs for IPv6 | ||||
POST /endpointcost/lookup HTTP/1.1 | POST /endpointcost/lookup HTTP/1.1 | |||
Host: alto.example.com | Host: alto.example.com | |||
Content-Length: 252 | Content-Length: 252 | |||
Content-Type: application/alto-endpointcostparams+json | Content-Type: application/alto-endpointcostparams+json | |||
Accept: | Accept: | |||
application/alto-endpointcost+json,application/alto-error+json | application/alto-endpointcost+json,application/alto-error+json | |||
{ | { | |||
"cost-type": { | "cost-type": { | |||
skipping to change at page 14, line 49 ¶ | skipping to change at line 631 ¶ | |||
} | } | |||
}, | }, | |||
"endpoint-cost-map": { | "endpoint-cost-map": { | |||
"ipv6:2001:db8:100::1": { | "ipv6:2001:db8:100::1": { | |||
"ipv6:2001:db8:100::2": 10, | "ipv6:2001:db8:100::2": 10, | |||
"ipv6:2001:db8:100::3": 20 | "ipv6:2001:db8:100::3": 20 | |||
} | } | |||
} | } | |||
} | } | |||
Figure 3: Delay Value on Source-Destination Endpoint Pairs for | ||||
IPv6 (Example 1a) | ||||
4.1.4. Cost-Context Specification Considerations | 4.1.4. Cost-Context Specification Considerations | |||
"nominal": Typically network one-way delay does not have a nominal | "nominal": Typically, network one-way delay does not have a nominal | |||
value. | value. | |||
"sla": Many networks provide delay-related parameters in their | "sla": Many networks provide delay-related parameters in their | |||
application-level SLAs. It is RECOMMENDED that the "parameters" | application-level SLAs. It is RECOMMENDED that the "parameters" | |||
field of an "sla" one-way delay metric include a link (i.e., a field | field of an "sla" one-way delay metric include a link (i.e., a | |||
named "link") providing an URI to the specification of SLA details, | field named "link") providing a URI for the specification of SLA | |||
if available. Such a specification can be either free text for | details, if available. Such a specification can be either | |||
possible presentation to the user, or a formal specification. The | (1) free text for possible presentation to the user or (2) a | |||
format of the specification is out of the scope of this document. | formal specification. The format of the specification is outside | |||
the scope of this document. | ||||
"estimation": The exact estimation method is out of the scope of this | "estimation": The exact estimation method is outside the scope of | |||
document. There can be multiple sources to estimate one-way delay. | this document. There can be multiple sources for estimating one- | |||
For example, the ALTO server may estimate the end-to-end delay by | way delay. For example, the ALTO server may estimate the end-to- | |||
aggregation of routing protocol link metrics; the server may also | end delay by aggregation of routing protocol link metrics; the | |||
estimate the delay using active, end-to-end measurements, for | server may also estimate the delay using active, end-to-end | |||
example, using the IPPM framework [RFC2330]. | measurements -- for example, using the IPPM framework [RFC2330]. | |||
If the estimation is computed by aggregation of routing protocol link | If the estimation is computed by aggregation of routing protocol link | |||
metrics (e.g., OSPF [RFC7471], IS-IS [RFC8570], or BGP-LS [RFC8571]) | metrics (e.g., Unidirectional Link Delay metrics for OSPF [RFC7471], | |||
Unidirectional Delay link metrics, it is RECOMMENDED that the | IS-IS [RFC8570], or BGP-LS [RFC8571]), it is RECOMMENDED that the | |||
"parameters" field of an "estimation" one-way delay metric include | "parameters" field of an "estimation" one-way delay metric include | |||
the following information: (1) the RFC defining the routing protocol | the following information: (1) the RFC defining the routing protocol | |||
metrics (e.g., https://www.rfc-editor.org/info/rfc7471 for RFC7471 | metrics (e.g., see [RFC7471] for derived metrics), (2) configurations | |||
derived metrics); (2) configurations of the routing link metrics such | of the routing link metrics such as configured intervals, and (3) the | |||
as configured intervals; and (3) the aggregation method from link | aggregation method from link metrics to end-to-end metrics. During | |||
metrics to end-to-end metrics. During aggregation from link metrics | aggregation from link metrics to end-to-end metrics, the server | |||
to the end-to-end metric, the server should be cognizant of potential | should be cognizant of potential issues when computing an end-to-end | |||
issues when computing an end-to-end summary statistic from link | summary statistic from link statistics. The default end-to-end | |||
statistics. The default end-to-end average one-way delay is the sum | average one-way delay is the sum of average link one-way delays. If | |||
of average link one-way delays. If an ALTO server provides the min | an ALTO server provides the min and max statistical operators for the | |||
and max statistical operators for the one-way delay metric, the | one-way delay metric, the values can be computed directly from the | |||
values can be computed directly from the routing link metrics, as | routing link metrics, as [RFC7471], [RFC8570], and [RFC8571] provide | |||
[RFC7471,RFC8570,RFC8571] provide Min/Max Unidirectional Link Delay. | Min/Max Unidirectional Link Delay. | |||
If the estimation is from the IPPM measurement framework, it is | If the estimation is from the IPPM measurement framework, it is | |||
RECOMMEDED that the "parameters" field of an "estimation" one-way | RECOMMENDED that the "parameters" field of an "estimation" one-way | |||
delay metric includes the following information: the URI to the URI | delay metric include the URI in the "URI" field of the IPPM metric | |||
field of the IPPM metric defined in the IPPM performance metric | defined in the IPPM "Performance Metrics" registry [IANA-IPPM] (e.g., | |||
[IANA-IPPM] registry (e.g., https://www.iana.org/assignments/ | <https://www.iana.org/assignments/performance-metrics/ | |||
performance-metrics/OWDelay_Active_IP-UDP-Poisson- | OWDelay_Active_IP-UDP-Poisson- | |||
Payload250B_RFC8912sec7_Seconds_95Percentile). The IPPM metric MUST | Payload250B_RFC8912sec7_Seconds_95Percentile>). The IPPM metric MUST | |||
be one-way delay (i.e., IPPM OWDelay* metrics). The statistical | be one-way delay (i.e., IPPM OWDelay* metrics). The statistical | |||
operator of the ALTO metric MUST be consistent with the IPPM | operator of the ALTO metric MUST be consistent with the IPPM | |||
statistical property (e.g., 95-th percentile). | statistical property (e.g., 95th percentile). | |||
4.2. Cost Metric: Round-trip Delay (delay-rt) | 4.2. Cost Metric: Round-Trip Delay (delay-rt) | |||
4.2.1. Base Identifier | 4.2.1. Base Identifier | |||
The base identifier for this performance metric is "delay-rt". | The base identifier for this performance metric is "delay-rt". | |||
4.2.2. Value Representation | 4.2.2. Value Representation | |||
The metric value type is a single 'JSONNumber' type value conforming | The metric value type is a single 'JSONNumber' type value conforming | |||
to the number specification of Section 6 of [RFC8259]. The number | to the number specifications provided in Section 6 of [RFC8259]. The | |||
MUST be non-negative. The unit is expressed in microseconds. | number MUST be non-negative. The unit is expressed in microseconds. | |||
4.2.3. Intended Semantics and Use | 4.2.3. Intended Semantics and Use | |||
Intended Semantics: To specify temporal and spatial aggregated round- | Intended Semantics: To specify temporal and spatial aggregated | |||
trip delay between the specified source and specified destination. | round-trip delay between the specified source and specified | |||
The base semantics is that it is the sum of one-way delay from the | destination. The base semantics is that it is the sum of the one- | |||
source to the destination and the one-way delay from the destination | way delay from the source to the destination and the one-way delay | |||
back to the source, where the one-way delay is defined in | from the destination back to the source, where the one-way delay | |||
Section 4.1. A non-normative reference definition of end-to-end | is as defined in Section 4.1. A non-normative reference | |||
round-trip delay is [RFC2681]. The spatial aggregation level is | definition of the end-to-end round-trip delay metric is provided | |||
specified in the query context (e.g., PID to PID, or endpoint to | in [RFC2681]. The spatial aggregation level is specified in the | |||
endpoint). | query context (e.g., PID to PID, or endpoint to endpoint). | |||
Note that it is possible for a client to query two one-way delays | ||||
(delay-ow) and then compute the round-trip delay. The server should | ||||
be cognizant of the consistency of values. | ||||
Use: This metric could be used either as a cost metric constraint | Note that it is possible for a client to query two one-way delay | |||
attribute or as a returned cost metric in the response. | (delay-ow) items and then compute the round-trip delay. The | |||
server should be cognizant of the consistency of values. | ||||
Example 2: Round-trip Delay of source-destination endpoint pairs | Use: This metric could be used as a cost metric constraint attribute | |||
or as a returned cost metric in the response. | ||||
POST /endpointcost/lookup HTTP/1.1 | POST /endpointcost/lookup HTTP/1.1 | |||
Host: alto.example.com | Host: alto.example.com | |||
Content-Length: 238 | Content-Length: 238 | |||
Content-Type: application/alto-endpointcostparams+json | Content-Type: application/alto-endpointcostparams+json | |||
Accept: | Accept: | |||
application/alto-endpointcost+json,application/alto-error+json | application/alto-endpointcost+json,application/alto-error+json | |||
{ | { | |||
"cost-type": { | "cost-type": { | |||
skipping to change at page 17, line 49 ¶ | skipping to change at line 756 ¶ | |||
} | } | |||
}, | }, | |||
"endpoint-cost-map": { | "endpoint-cost-map": { | |||
"ipv4:192.0.2.2": { | "ipv4:192.0.2.2": { | |||
"ipv4:192.0.2.89": 4, | "ipv4:192.0.2.89": 4, | |||
"ipv4:198.51.100.34": 3 | "ipv4:198.51.100.34": 3 | |||
} | } | |||
} | } | |||
} | } | |||
Figure 4: Round-Trip Delay of Source-Destination Endpoint Pairs | ||||
(Example 2) | ||||
4.2.4. Cost-Context Specification Considerations | 4.2.4. Cost-Context Specification Considerations | |||
"nominal": Typically network round-trip delay does not have a nominal | "nominal": Typically, network round-trip delay does not have a | |||
value. | nominal value. | |||
"sla": See the "sla" entry in Section 4.1.4. | "sla": See the "sla" entry in Section 4.1.4. | |||
"estimation": See the "estimation" entry in Section 4.1.4. For | "estimation": See the "estimation" entry in Section 4.1.4. For | |||
estimation by aggregation of routing protocol link metrics, the | estimation by aggregation of routing protocol link metrics, the | |||
aggregation should include all links from the source to the | aggregation should include all links from the source to the | |||
destination and then back to the source; for estimation using IPPM, | destination and then back to the source; for estimation using | |||
the IPPM metric MUST be round-trip delay (i.e., IPPM RTDelay* | IPPM, the IPPM metric MUST be round-trip delay (i.e., IPPM | |||
metrics). The statistical operator of the ALTO metric MUST be | RTDelay* metrics). The statistical operator of the ALTO metric | |||
consistent with the IPPM statistical property (e.g., 95-th | MUST be consistent with the IPPM statistical property (e.g., 95th | |||
percentile). | percentile). | |||
4.3. Cost Metric: Delay Variation (delay-variation) | 4.3. Cost Metric: Delay Variation (delay-variation) | |||
4.3.1. Base Identifier | 4.3.1. Base Identifier | |||
The base identifier for this performance metric is "delay-variation". | The base identifier for this performance metric is "delay-variation". | |||
4.3.2. Value Representation | 4.3.2. Value Representation | |||
The metric value type is a single 'JSONNumber' type value conforming | The metric value type is a single 'JSONNumber' type value conforming | |||
to the number specification of Section 6 of [RFC8259]. The number | to the number specifications provided in Section 6 of [RFC8259]. The | |||
MUST be non-negative. The unit is expressed in microseconds. | number MUST be non-negative. The unit is expressed in microseconds. | |||
4.3.3. Intended Semantics and Use | 4.3.3. Intended Semantics and Use | |||
Intended Semantics: To specify temporal and spatial aggregated delay | Intended Semantics: To specify temporal and spatial aggregated delay | |||
variation (also called delay jitter)) with respect to the minimum | variation (also called delay jitter) with respect to the minimum | |||
delay observed on the stream over the one-way delay from the | delay observed on the stream over the one-way delay from the | |||
specified source and destination, where the one-way delay is defined | specified source and destination, where the one-way delay is as | |||
in Section 4.1. A non-normative reference definition of end-to-end | defined in Section 4.1. A non-normative reference definition of | |||
one-way delay variation is [RFC3393]. Note that [RFC3393] allows the | the end-to-end one-way delay variation metric is provided in | |||
specification of a generic selection function F to unambiguously | [RFC3393]. Note that [RFC3393] allows the specification of a | |||
define the two packets selected to compute delay variations. This | generic selection function F to unambiguously define the two | |||
document defines the specific case that F selects as the "first" | packets selected to compute delay variations. This document | |||
packet the one with the smallest one-way delay. The spatial | defines the specific case where F selects the packet with the | |||
aggregation level is specified in the query context (e.g., PID to | smallest one-way delay as the "first" packet. The spatial | |||
PID, or endpoint to endpoint). | aggregation level is specified in the query context (e.g., PID to | |||
PID, or endpoint to endpoint). | ||||
Note that in statistics, variations are typically evaluated by the | ||||
distance from samples relative to the mean. In networking context, | ||||
it is more commonly defined from samples relative to the min. This | ||||
definition follows the networking convention. | ||||
Use: This metric could be used either as a cost metric constraint | Note that in statistics, variation is typically evaluated by the | |||
attribute or as a returned cost metric in the response. | distance from samples relative to the mean. In the context of | |||
networking, it is more commonly defined from samples relative to | ||||
the min. This definition follows the networking convention. | ||||
Example 3: Delay variation value on source-destination endpoint pairs | Use: This metric could be used as a cost metric constraint attribute | |||
or as a returned cost metric in the response. | ||||
POST /endpointcost/lookup HTTP/1.1 | POST /endpointcost/lookup HTTP/1.1 | |||
Host: alto.example.com | Host: alto.example.com | |||
Content-Length: 245 | Content-Length: 245 | |||
Content-Type: application/alto-endpointcostparams+json | Content-Type: application/alto-endpointcostparams+json | |||
Accept: | Accept: | |||
application/alto-endpointcost+json,application/alto-error+json | application/alto-endpointcost+json,application/alto-error+json | |||
{ | { | |||
"cost-type": { | "cost-type": { | |||
skipping to change at page 19, line 49 ¶ | skipping to change at line 853 ¶ | |||
} | } | |||
}, | }, | |||
"endpoint-cost-map": { | "endpoint-cost-map": { | |||
"ipv4:192.0.2.2": { | "ipv4:192.0.2.2": { | |||
"ipv4:192.0.2.89": 0, | "ipv4:192.0.2.89": 0, | |||
"ipv4:198.51.100.34": 1 | "ipv4:198.51.100.34": 1 | |||
} | } | |||
} | } | |||
} | } | |||
Figure 5: Delay Variation Value on Source-Destination Endpoint | ||||
Pairs (Example 3) | ||||
4.3.4. Cost-Context Specification Considerations | 4.3.4. Cost-Context Specification Considerations | |||
"nominal": Typically network delay variation does not have a nominal | "nominal": Typically, network delay variation does not have a | |||
value. | nominal value. | |||
"sla": See the "sla" entry in Section 4.1.4. | "sla": See the "sla" entry in Section 4.1.4. | |||
"estimation": See the "estimation" entry in Section 4.1.4. For | "estimation": See the "estimation" entry in Section 4.1.4. For | |||
estimation by aggregation of routing protocol link metrics, the | estimation by aggregation of routing protocol link metrics, the | |||
default aggregation of the average of delay variations is the sum of | default aggregation of the average of delay variations is the sum | |||
the link delay variations; for estimation using IPPM, the IPPM metric | of the link delay variations; for estimation using IPPM, the IPPM | |||
MUST be delay variation (i.e., IPPM OWPDV* metrics). The statistical | metric MUST be delay variation (i.e., IPPM OWPDV* metrics). The | |||
operator of the ALTO metric MUST be consistent with the IPPM | statistical operator of the ALTO metric MUST be consistent with | |||
statistical property (e.g., 95-th percentile). | the IPPM statistical property (e.g., 95th percentile). | |||
4.4. Cost Metric: Loss Rate (lossrate) | 4.4. Cost Metric: Loss Rate (lossrate) | |||
4.4.1. Base Identifier | 4.4.1. Base Identifier | |||
The base identifier for this performance metric is "lossrate". | The base identifier for this performance metric is "lossrate". | |||
4.4.2. Value Representation | 4.4.2. Value Representation | |||
The metric value type is a single 'JSONNumber' type value conforming | The metric value type is a single 'JSONNumber' type value conforming | |||
to the number specification of Section 6 of [RFC8259]. The number | to the number specifications provided in Section 6 of [RFC8259]. The | |||
MUST be non-negative. The value represents the percentage of packet | number MUST be non-negative. The value represents the percentage of | |||
losses. | packet losses. | |||
4.4.3. Intended Semantics and Use | 4.4.3. Intended Semantics and Use | |||
Intended Semantics: To specify temporal and spatial aggregated one- | Intended Semantics: To specify the temporal and spatial aggregated | |||
way packet loss rate from the specified source and the specified | one-way packet loss rate from the specified source and the | |||
destination. The base semantics of the metric is the Unidirectional | specified destination. The base semantics of the metric is the | |||
Link Loss metric defined in [RFC8571,RFC8570,RFC7471], but instead of | Unidirectional Link Loss metric as defined in [RFC8571], | |||
specifying the loss for a link, it is the aggregated loss of all | [RFC8570], and [RFC7471], but instead of specifying the loss for a | |||
links from the source to the destination. The spatial aggregation | link, it is the aggregated loss of all links from the source to | |||
level is specified in the query context (e.g., PID to PID, or | the destination. The spatial aggregation level is specified in | |||
endpoint to endpoint). | the query context (e.g., PID to PID, or endpoint to endpoint). | |||
Use: This metric could be used as a cost metric constraint attribute | ||||
or as a returned cost metric in the response. | ||||
Example 5: Loss rate value on source-destination endpoint pairs | Use: This metric could be used as a cost metric constraint attribute | |||
or as a returned cost metric in the response. | ||||
POST /endpointcost/lookup HTTP/1.1 | POST /endpointcost/lookup HTTP/1.1 | |||
Host: alto.example.com | Host: alto.example.com | |||
Content-Length: 238 | Content-Length: 238 | |||
Content-Type: application/alto-endpointcostparams+json | Content-Type: application/alto-endpointcostparams+json | |||
Accept: | Accept: | |||
application/alto-endpointcost+json,application/alto-error+json | application/alto-endpointcost+json,application/alto-error+json | |||
{ | { | |||
"cost-type": { | "cost-type": { | |||
skipping to change at page 21, line 49 ¶ | skipping to change at line 940 ¶ | |||
} | } | |||
}, | }, | |||
"endpoint-cost-map": { | "endpoint-cost-map": { | |||
"ipv4:192.0.2.2": { | "ipv4:192.0.2.2": { | |||
"ipv4:192.0.2.89": 0, | "ipv4:192.0.2.89": 0, | |||
"ipv4:198.51.100.34": 0.01 | "ipv4:198.51.100.34": 0.01 | |||
} | } | |||
} | } | |||
} | } | |||
Figure 6: Loss Rate Value on Source-Destination Endpoint Pairs | ||||
(Example 4) | ||||
4.4.4. Cost-Context Specification Considerations | 4.4.4. Cost-Context Specification Considerations | |||
"nominal": Typically packet loss rate does not have a nominal value, | "nominal": Typically, the packet loss rate does not have a nominal | |||
although some networks may specify zero losses. | value, although some networks may specify zero losses. | |||
"sla": See the "sla" entry in Section 4.1.4.. | "sla": See the "sla" entry in Section 4.1.4. | |||
"estimation": See the "estimation" entry in Section 4.1.4. For | "estimation": See the "estimation" entry in Section 4.1.4. For | |||
estimation by aggregation of routing protocol link metrics, the | estimation by aggregation of routing protocol link metrics, the | |||
default aggregation of the average of loss rate is the sum of the | default aggregation of the average loss rate is the sum of the | |||
link link loss rates. But this default aggregation is valid only if | link loss rates. But this default aggregation is valid only if | |||
two conditions are met: (1) it is valid only when link loss rates are | two conditions are met: (1) link loss rates are low and (2) one | |||
low, and (2) it assumes that each link's loss events are uncorrelated | assumes that each link's loss events are uncorrelated with every | |||
with every other link's loss events. When loss rates at the links | other link's loss events. When loss rates at the links are high | |||
are high but independent, the general formula for aggregating loss | but independent, the general formula for aggregating loss, | |||
assuming each link is independent is to compute end-to-end loss as | assuming that each link is independent, is to compute end-to-end | |||
one minus the product of the success rate for each link. Aggregation | loss as one minus the product of the success rate for each link. | |||
when losses at links are correlated can be more complex and the ALTO | Aggregation when losses at links are correlated can be more | |||
server should be cognizant of correlated loss rates. For estimation | complex, and the ALTO server should be cognizant of correlated | |||
using IPPM, the IPPM metric MUST be packet loss (i.e., IPPM OWLoss* | loss rates. For estimation using IPPM, the IPPM metric MUST be | |||
metrics). The statistical operator of the ALTO metric MUST be | packet loss (i.e., IPPM OWLoss* metrics). The statistical | |||
consistent with the IPPM statistical property (e.g., 95-th | operator of the ALTO metric MUST be consistent with the IPPM | |||
percentile). | statistical property (e.g., 95th percentile). | |||
4.5. Cost Metric: Hop Count (hopcount) | 4.5. Cost Metric: Hop Count (hopcount) | |||
The hopcount metric is mentioned in Section 9.2.3 of [RFC7285] as an | The hop count (hopcount) metric is mentioned in Section 9.2.3 of | |||
example. This section further clarifies its properties. | [RFC7285] as an example. This section further clarifies its | |||
properties. | ||||
4.5.1. Base Identifier | 4.5.1. Base Identifier | |||
The base identifier for this performance metric is "hopcount". | The base identifier for this performance metric is "hopcount". | |||
4.5.2. Value Representation | 4.5.2. Value Representation | |||
The metric value type is a single 'JSONNumber' type value conforming | The metric value type is a single 'JSONNumber' type value conforming | |||
to the number specification of Section 6 of [RFC8259]. The number | to the number specifications provided in Section 6 of [RFC8259]. The | |||
MUST be a non-negative integer (greater than or equal to 0). The | number MUST be a non-negative integer (greater than or equal to 0). | |||
value represents the number of hops. | The value represents the number of hops. | |||
4.5.3. Intended Semantics and Use | 4.5.3. Intended Semantics and Use | |||
Intended Semantics: To specify the number of hops in the path from | Intended Semantics: To specify the number of hops in the path from | |||
the specified source to the specified destination. The hop count is | the specified source to the specified destination. The hop count | |||
a basic measurement of distance in a network and can be exposed as | is a basic measurement of distance in a network and can be exposed | |||
the number of router hops computed from the routing protocols | as the number of router hops computed from the routing protocols | |||
originating this information. A hop, however, may represent other | originating this information. A hop, however, may represent other | |||
units. The spatial aggregation level is specified in the query | units. The spatial aggregation level is specified in the query | |||
context (e.g., PID to PID, or endpoint to endpoint). | context (e.g., PID to PID, or endpoint to endpoint). | |||
Use: This metric could be used as a cost metric constraint attribute | ||||
or as a returned cost metric in the response. | ||||
Example 4: hopcount value on source-destination endpoint pairs | Use: This metric could be used as a cost metric constraint attribute | |||
or as a returned cost metric in the response. | ||||
POST /endpointcost/lookup HTTP/1.1 | POST /endpointcost/lookup HTTP/1.1 | |||
Host: alto.example.com | Host: alto.example.com | |||
Content-Length: 238 | Content-Length: 238 | |||
Content-Type: application/alto-endpointcostparams+json | Content-Type: application/alto-endpointcostparams+json | |||
Accept: | Accept: | |||
application/alto-endpointcost+json,application/alto-error+json | application/alto-endpointcost+json,application/alto-error+json | |||
{ | { | |||
"cost-type": { | "cost-type": { | |||
skipping to change at page 23, line 49 ¶ | skipping to change at line 1039 ¶ | |||
} | } | |||
}, | }, | |||
"endpoint-cost-map": { | "endpoint-cost-map": { | |||
"ipv4:192.0.2.2": { | "ipv4:192.0.2.2": { | |||
"ipv4:192.0.2.89": 5, | "ipv4:192.0.2.89": 5, | |||
"ipv4:198.51.100.34": 3 | "ipv4:198.51.100.34": 3 | |||
} | } | |||
} | } | |||
} | } | |||
Figure 7: Hop Count Value on Source-Destination Endpoint Pairs | ||||
(Example 5) | ||||
4.5.4. Cost-Context Specification Considerations | 4.5.4. Cost-Context Specification Considerations | |||
"nominal": Typically hop count does not have a nominal value. | "nominal": Typically, the hop count does not have a nominal value. | |||
"sla": Typically hop count does not have an SLA value. | "sla": Typically, the hop count does not have an SLA value. | |||
"estimation": The exact estimation method is out of the scope of this | "estimation": The exact estimation method is outside the scope of | |||
document. An example of estimating hopcounts is by importing from | this document. An example of estimating hop count values is by | |||
IGP routing protocols. It is RECOMMENDED that the "parameters" field | importing from IGP routing protocols. It is RECOMMENDED that the | |||
of an "estimation" hop count define the meaning of a hop. | "parameters" field of an "estimation" hop count define the meaning | |||
of a hop. | ||||
5. Throughput/Bandwidth Performance Metrics | 5. Throughput/Bandwidth Performance Metrics | |||
This section introduces four throughput/bandwidth related metrics. | This section introduces three metrics related to throughput and | |||
Given a specified source to a specified destination, these metrics | bandwidth. Given a specified source and a specified destination, | |||
reflect the volume of traffic that the network can carry from the | these metrics reflect the volume of traffic that the network can | |||
source to the destination. | carry from the source to the destination. | |||
5.1. Cost Metric: TCP Throughput (tput) | 5.1. Cost Metric: TCP Throughput (tput) | |||
5.1.1. Base Identifier | 5.1.1. Base Identifier | |||
The base identifier for this performance metric is "tput". | The base identifier for this performance metric is "tput". | |||
5.1.2. Value Representation | 5.1.2. Value Representation | |||
The metric value type is a single 'JSONNumber' type value conforming | The metric value type is a single 'JSONNumber' type value conforming | |||
to the number specification of Section 6 of [RFC8259]. The number | to the number specifications provided in Section 6 of [RFC8259]. The | |||
MUST be non-negative. The unit is bytes per second. | number MUST be non-negative. The unit is bytes per second. | |||
5.1.3. Intended Semantics and Use | 5.1.3. Intended Semantics and Use | |||
Intended Semantics: To give the throughput of a TCP congestion- | Intended Semantics: To give the throughput of a congestion control | |||
control conforming flow from the specified source to the specified | conforming TCP flow from the specified source to the specified | |||
destination. The throughput SHOULD be interpreted as only an | destination. The throughput SHOULD be interpreted as only an | |||
estimation, and the estimation is designed only for bulk flows. | estimation, and the estimation is designed only for bulk flows. | |||
Use: This metric could be used as a cost metric constraint attribute | ||||
or as a returned cost metric in the response. | ||||
Example 5: TCP throughput value on source-destination endpoint pairs | Use: This metric could be used as a cost metric constraint attribute | |||
or as a returned cost metric in the response. | ||||
POST /endpointcost/lookup HTTP/1.1 | POST /endpointcost/lookup HTTP/1.1 | |||
Host: alto.example.com | Host: alto.example.com | |||
Content-Length: 234 | Content-Length: 234 | |||
Content-Type: application/alto-endpointcostparams+json | Content-Type: application/alto-endpointcostparams+json | |||
Accept: | Accept: | |||
application/alto-endpointcost+json,application/alto-error+json | application/alto-endpointcost+json,application/alto-error+json | |||
{ | { | |||
"cost-type": { | "cost-type": { | |||
skipping to change at page 25, line 49 ¶ | skipping to change at line 1125 ¶ | |||
} | } | |||
}, | }, | |||
"endpoint-cost-map": { | "endpoint-cost-map": { | |||
"ipv4:192.0.2.2": { | "ipv4:192.0.2.2": { | |||
"ipv4:192.0.2.89": 256000, | "ipv4:192.0.2.89": 256000, | |||
"ipv4:198.51.100.34": 128000 | "ipv4:198.51.100.34": 128000 | |||
} | } | |||
} | } | |||
} | } | |||
Figure 8: TCP Throughput Value on Source-Destination Endpoint | ||||
Pairs (Example 6) | ||||
5.1.4. Cost-Context Specification Considerations | 5.1.4. Cost-Context Specification Considerations | |||
"nominal": Typically TCP throughput does not have a nominal value, | "nominal": Typically, TCP throughput does not have a nominal value | |||
and SHOULD NOT be generated. | and SHOULD NOT be generated. | |||
"sla": Typically TCP throughput does not have an SLA value, and | "sla": Typically, TCP throughput does not have an SLA value and | |||
SHOULD NOT be generated. | SHOULD NOT be generated. | |||
"estimation": The exact estimation method is out of the scope of this | "estimation": The exact estimation method is outside the scope of | |||
document. It is RECOMMENDED that the "parameters" field of an | this document. It is RECOMMENDED that the "parameters" field of | |||
"estimation" TCP throughput metric include the following information: | an "estimation" TCP throughput metric include the following | |||
(1) the congestion-control algorithm; and (2) the estimation | information: (1) the congestion control algorithm and (2) the | |||
methodology. To specify (1), it is RECOMMENDED that the "parameters" | estimation methodology. To specify (1), it is RECOMMENDED that | |||
field (object) include a field named "congestion-control-algorithm", | the "parameters" field (object) include a field named "congestion- | |||
which provides a URI for the specification of the algorithm; for | control-algorithm", which provides a URI for the specification of | |||
example, for an ALTO server to provide estimation to the throughput | the algorithm; for example, for an ALTO server to provide | |||
of a Cubic Congestion control flow, its "parameters" includes a field | estimation of the throughput of a CUBIC congestion control flow, | |||
"congestion-control-algorithm", with value being set to | its "parameters" field includes the "congestion-control-algorithm" | |||
[I-D.ietf-tcpm-rfc8312bis]; for an ongoing congestion control | field, with value being set to the URI for [RFC9438]; for an | |||
algorithm such as BBR, a a link to its specification. To specify | ongoing congestion control algorithm such as BBR, a link to its | |||
(2), the "parameters" includes as many details as possible; for | specification can be added. To specify (2), the "parameters" | |||
example, for TCP Cubic throughout estimation, the "parameters" field | field includes as many details as possible; for example, for the | |||
specifies that the throughput is estimated by setting _C_ to 0.4, and | TCP Cubic throughout estimation, the "parameters" field specifies | |||
the Equation in Figure 8 of [I-D.ietf-tcpm-rfc8312bis] is applied; as | that the throughput is estimated by setting _C_ to 0.4, and the | |||
an alternative, the methodology may be based on the NUM model | equation in [RFC9438], Section 5.1, Figure 8 is applied; as an | |||
[Prophet], or the G2 model [G2]. The exact specification of the | alternative, the methodology may be based on the NUM model | |||
parameters field is out of the scope of this document. | [Prophet] or the model described in [G2]. The exact specification | |||
of the "parameters" field is outside the scope of this document. | ||||
5.2. Cost Metric: Residual Bandwidth (bw-residual) | 5.2. Cost Metric: Residual Bandwidth (bw-residual) | |||
5.2.1. Base Identifier | 5.2.1. Base Identifier | |||
The base identifier for this performance metric is "bw-residual". | The base identifier for this performance metric is "bw-residual". | |||
5.2.2. Value Representation | 5.2.2. Value Representation | |||
The metric value type is a single 'JSONNumber' type value that is | The metric value type is a single 'JSONNumber' type value that is | |||
non-negative. The unit of measurement is bytes per second. | non-negative. The unit of measurement is bytes per second. | |||
5.2.3. Intended Semantics and Use | 5.2.3. Intended Semantics and Use | |||
Intended Semantics: To specify temporal and spatial residual | Intended Semantics: To specify temporal and spatial residual | |||
bandwidth from the specified source and the specified destination. | bandwidth from the specified source to the specified destination. | |||
The base semantics of the metric is the Unidirectional Residual | The base semantics of the metric is the Unidirectional Residual | |||
Bandwidth metric defined in [RFC8571,RFC8570,RFC7471], but instead of | Bandwidth metric as defined in [RFC8571], [RFC8570], and | |||
specifying the residual bandwidth for a link, it is the residual | [RFC7471], but instead of specifying the residual bandwidth for a | |||
bandwidth of the path from the source to the destination. Hence, it | link, it is the residual bandwidth of the path from the source to | |||
is the minimal residual bandwidth among all links from the source to | the destination. Hence, it is the minimal residual bandwidth | |||
the destination. When the max statistical operator is defined for | among all links from the source to the destination. When the max | |||
the metric, it typically provides the minimum of the link capacities | statistical operator is defined for the metric, it typically | |||
along the path, as the default value of the residual bandwidth of a | provides the minimum of the link capacities along the path, as the | |||
link is its link capacity [RFC8571,8570,7471]. The spatial | default value of the residual bandwidth of a link is its link | |||
aggregation unit is specified in the query context (e.g., PID to PID, | capacity [RFC8571] [RFC8570] [RFC7471]. The spatial aggregation | |||
or endpoint to endpoint). | unit is specified in the query context (e.g., PID to PID, or | |||
endpoint to endpoint). | ||||
The default statistical operator for residual bandwidth is the | ||||
current instantaneous sample; that is, the default is assumed to be | ||||
"cur". | ||||
Use: This metric could be used either as a cost metric constraint | The default statistical operator for residual bandwidth is the | |||
attribute or as a returned cost metric in the response. | current instantaneous sample; that is, the default is assumed to | |||
be "cur". | ||||
Example 7: bw-residual value on source-destination endpoint pairs | Use: This metric could be used as a cost metric constraint attribute | |||
or as a returned cost metric in the response. | ||||
POST /endpointcost/lookup HTTP/1.1 | POST /endpointcost/lookup HTTP/1.1 | |||
Host: alto.example.com | Host: alto.example.com | |||
Content-Length: 241 | Content-Length: 241 | |||
Content-Type: application/alto-endpointcostparams+json | Content-Type: application/alto-endpointcostparams+json | |||
Accept: | Accept: | |||
application/alto-endpointcost+json,application/alto-error+json | application/alto-endpointcost+json,application/alto-error+json | |||
{ | { | |||
"cost-type": { | "cost-type": { | |||
skipping to change at page 28, line 4 ¶ | skipping to change at line 1214 ¶ | |||
"endpoints": { | "endpoints": { | |||
"srcs": [ | "srcs": [ | |||
"ipv4:192.0.2.2" | "ipv4:192.0.2.2" | |||
], | ], | |||
"dsts": [ | "dsts": [ | |||
"ipv4:192.0.2.89", | "ipv4:192.0.2.89", | |||
"ipv4:198.51.100.34" | "ipv4:198.51.100.34" | |||
] | ] | |||
} | } | |||
} | } | |||
HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
Content-Length: 255 | Content-Length: 255 | |||
Content-Type: application/alto-endpointcost+json | Content-Type: application/alto-endpointcost+json | |||
{ | { | |||
"meta": { | "meta": { | |||
"cost-type": { | "cost-type": { | |||
"cost-mode": "numerical", | "cost-mode": "numerical", | |||
"cost-metric": "bw-residual" | "cost-metric": "bw-residual" | |||
} | } | |||
}, | }, | |||
"endpoint-cost-map": { | "endpoint-cost-map": { | |||
"ipv4:192.0.2.2": { | "ipv4:192.0.2.2": { | |||
"ipv4:192.0.2.89": 0, | "ipv4:192.0.2.89": 0, | |||
"ipv4:198.51.100.34": 2000 | "ipv4:198.51.100.34": 2000 | |||
} | } | |||
} | } | |||
} | } | |||
Figure 9: Residual Bandwidth Value on Source-Destination Endpoint | ||||
Pairs (Example 7) | ||||
5.2.4. Cost-Context Specification Considerations | 5.2.4. Cost-Context Specification Considerations | |||
"nominal": Typically residual bandwidth does not have a nominal | "nominal": Typically, residual bandwidth does not have a nominal | |||
value. | value. | |||
"sla": Typically residual bandwidth does not have an "sla" value. | "sla": Typically, residual bandwidth does not have an SLA value. | |||
"estimation": See the "estimation" entry in Section 4.1.4 on | "estimation": See the "estimation" entry in Section 4.1.4. The | |||
aggregation of routing protocol link metrics. The current ("cur") | current ("cur") residual bandwidth of a path is the minimal | |||
residual bandwidth of a path is the minimal of the residual bandwidth | residual bandwidth of all links on the path. | |||
of all links on the path. | ||||
5.3. Cost Metric: Available Bandwidth (bw-available) | 5.3. Cost Metric: Available Bandwidth (bw-available) | |||
5.3.1. Base Identifier | 5.3.1. Base Identifier | |||
The base identifier for this performance metric is "bw-available". | The base identifier for this performance metric is "bw-available". | |||
5.3.2. Value Representation | 5.3.2. Value Representation | |||
The metric value type is a single 'JSONNumber' type value that is | The metric value type is a single 'JSONNumber' type value that is | |||
non-negative. The unit of measurement is bytes per second. | non-negative. The unit of measurement is bytes per second. | |||
5.3.3. Intended Semantics and Use | 5.3.3. Intended Semantics and Use | |||
Intended Semantics: To specify temporal and spatial available | Intended Semantics: To specify temporal and spatial available | |||
bandwidth from the specified source to the specified destination. | bandwidth from the specified source to the specified destination. | |||
The base semantics of the metric is the Unidirectional Available | The base semantics of the metric is the Unidirectional Available | |||
Bandwidth metric defined in [RFC8571,RFC8570,RFC7471], but instead of | Bandwidth metric as defined in [RFC8571], [RFC8570], and | |||
specifying the available bandwidth for a link, it is the available | [RFC7471], but instead of specifying the available bandwidth for a | |||
bandwidth of the path from the source to the destination. Hence, it | link, it is the available bandwidth of the path from the source to | |||
is the minimal available bandwidth among all links from the source to | the destination. Hence, it is the minimal available bandwidth | |||
the destination.The spatial aggregation unit is specified in the | among all links from the source to the destination. The spatial | |||
query context (e.g., PID to PID, or endpoint to endpoint). | aggregation unit is specified in the query context (e.g., PID to | |||
PID, or endpoint to endpoint). | ||||
The default statistical operator for available bandwidth is the | ||||
current instantaneous sample; that is, the default is assumed to be | ||||
"cur". | ||||
Use: This metric could be used either as a cost metric constraint | The default statistical operator for available bandwidth is the | |||
attribute or as a returned cost metric in the response. | current instantaneous sample; that is, the default is assumed to | |||
be "cur". | ||||
Example 8: bw-available value on source-destination endpoint pairs | Use: This metric could be used as a cost metric constraint attribute | |||
or as a returned cost metric in the response. | ||||
POST /endpointcost/lookup HTTP/1.1 | POST /endpointcost/lookup HTTP/1.1 | |||
Host: alto.example.com | Host: alto.example.com | |||
Content-Length: 244 | Content-Length: 244 | |||
Content-Type: application/alto-endpointcostparams+json | Content-Type: application/alto-endpointcostparams+json | |||
Accept: | Accept: | |||
application/alto-endpointcost+json,application/alto-error+json | application/alto-endpointcost+json,application/alto-error+json | |||
{ | { | |||
"cost-type": { | "cost-type": { | |||
skipping to change at page 30, line 4 ¶ | skipping to change at line 1301 ¶ | |||
"endpoints": { | "endpoints": { | |||
"srcs": [ | "srcs": [ | |||
"ipv4:192.0.2.2" | "ipv4:192.0.2.2" | |||
], | ], | |||
"dsts": [ | "dsts": [ | |||
"ipv4:192.0.2.89", | "ipv4:192.0.2.89", | |||
"ipv4:198.51.100.34" | "ipv4:198.51.100.34" | |||
] | ] | |||
} | } | |||
} | } | |||
HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
Content-Length: 255 | Content-Length: 255 | |||
Content-Type: application/alto-endpointcost+json | Content-Type: application/alto-endpointcost+json | |||
{ | { | |||
"meta": { | "meta": { | |||
"cost-type": { | "cost-type": { | |||
"cost-mode": "numerical", | "cost-mode": "numerical", | |||
"cost-metric": "bw-available" | "cost-metric": "bw-available" | |||
} | } | |||
}, | }, | |||
"endpoint-cost-map": { | "endpoint-cost-map": { | |||
"ipv4:192.0.2.2": { | "ipv4:192.0.2.2": { | |||
"ipv4:192.0.2.89": 0, | "ipv4:192.0.2.89": 0, | |||
"ipv4:198.51.100.34": 2000 | "ipv4:198.51.100.34": 2000 | |||
} | } | |||
} | } | |||
} | } | |||
Figure 10: Available Bandwidth Value on Source-Destination | ||||
Endpoint Pairs (Example 8) | ||||
5.3.4. Cost-Context Specification Considerations | 5.3.4. Cost-Context Specification Considerations | |||
"nominal": Typically available bandwidth does not have a nominal | "nominal": Typically, available bandwidth does not have a nominal | |||
value. | value. | |||
"sla": Typically available bandwidth does not have an "sla" value. | "sla": Typically, available bandwidth does not have an SLA value. | |||
"estimation": See the "estimation" entry in Section 4.1.4 on | "estimation": See the "estimation" entry in Section 4.1.4. The | |||
aggregation of routing protocol link metrics. The current ("cur") | current ("cur") available bandwidth of a path is the minimum of | |||
available bandwidth of a path is the minimum of the available | the available bandwidth of all links on the path. | |||
bandwidth of all links on the path. | ||||
6. Operational Considerations | 6. Operational Considerations | |||
The exact measurement infrastructure, measurement condition, and | The exact measurement infrastructure, measurement conditions, and | |||
computation algorithms can vary from different networks, and are | computation algorithms can vary between different networks and are | |||
outside the scope of this document. Both the ALTO server and the | outside the scope of this document. Both the ALTO server and the | |||
ALTO clients, however, need to be cognizant of the operational issues | ALTO clients, however, need to be cognizant of the operational issues | |||
discussed in the following sub-sections. | discussed in the following subsections. | |||
Also, the performance metrics specified in this document are similar, | Also, the performance metrics specified in this document are similar | |||
in that they may use similar data sources and have similar issues in | in that they may use similar data sources and have similar issues in | |||
their calculation. Hence, this document specifies common issues | their calculation. Hence, this document specifies issues that the | |||
unless one metric has its unique challenges. | performance metrics might have in common and also discusses | |||
challenges regarding the computation of ALTO performance metrics | ||||
(Section 6.4). | ||||
6.1. Source Considerations | 6.1. Source Considerations | |||
The addition of the "cost-source" field is to solve a key issue: An | The addition of the "cost-source" field solves a key issue: an ALTO | |||
ALTO server needs data sources to compute the cost metrics described | server needs data sources to compute the cost metrics described in | |||
in this document, and an ALTO client needs to know the data sources | this document, and an ALTO client needs to know the data sources to | |||
to better interpret the values. | better interpret the values. | |||
To avoid too fine-grained information, this document introduces | To avoid information that is too fine grained, this document | |||
"cost-source" to indicate only the high-level type of data sources: | introduces "cost-source" to indicate only the high-level types of | |||
"estimation", "nominal" or "lsa", where "estimation" is a type of | data sources: "estimation", "nominal", or "sla", where "estimation" | |||
measurement data source, "nominal" is a type of static configuration, | is a type of measurement data source, "nominal" is a type of static | |||
and "sla" is a type that is more based on policy. | configuration, and "sla" is a type that is based more on policy. | |||
For estimation, for example, the ALTO server may use log servers or | For example, for "estimation", the ALTO server may use log servers or | |||
the OAM system as its data source as recommended by [RFC7971]. In | the Operations, Administration, and Maintenance (OAM) system as its | |||
particular, the cost metrics defined in this document can be computed | data source, as recommended by [RFC7971]. In particular, the cost | |||
using routing systems as the data sources. | metrics defined in this document can be computed using routing | |||
systems as the data sources. | ||||
6.2. Metric Timestamp Consideration | 6.2. Metric Timestamp Considerations | |||
Despite the introduction of the additional cost-context information, | Despite the introduction of the additional "cost-context" | |||
the metrics do not have a field to indicate the timestamps of the | information, the metrics do not have a field to indicate the | |||
data used to compute the metrics. To indicate this attribute, the | timestamps of the data used to compute the metrics. To indicate this | |||
ALTO server SHOULD return HTTP "Last-Modified", to indicate the | attribute, the ALTO server SHOULD return an HTTP Last-Modified value | |||
freshness of the data used to compute the performance metrics. | to indicate the freshness of the data used to compute the performance | |||
metrics. | ||||
If the ALTO client obtains updates through an incremental update | If the ALTO client obtains updates through an incremental update | |||
mechanism [RFC8895], the client SHOULD assume that the metric is | mechanism [RFC8895], the client SHOULD assume that the metric is | |||
computed using a snapshot at the time that is approximated by the | computed using a snapshot at the time that is approximated by the | |||
receiving time. | receiving time. | |||
6.3. Backward Compatibility Considerations | 6.3. Backward-Compatibility Considerations | |||
One potential issue introduced by the optional "cost-source" field is | One potential issue introduced by the optional "cost-source" field is | |||
backward compatibility. Consider that an IRD which defines two cost- | backward compatibility. Consider the case where an IRD defines two | |||
types with the same "cost-mode" and "cost-metric", but one with | "cost-type" entries with the same "cost-mode" and "cost-metric", but | |||
"cost-source" being "estimation" and the other being "sla". Then an | one with "cost-source" being "estimation" and the other being "sla". | |||
ALTO client that is not aware of the extension will not be able to | In such a case, an ALTO client that is not aware of the extension | |||
distinguish between these two types. A similar issue can arise even | will not be able to distinguish between these two types. A similar | |||
with a single cost-type, whose "cost-source" is "sla": an ALTO client | issue can arise even with a single "cost-type" whose "cost-source" is | |||
that is not aware of this extension will ignore this field and | "sla": an ALTO client that is not aware of this extension will ignore | |||
consider the metric estimation. | this field and instead consider the metric estimation. | |||
To address the backward-compatibility issue, if a "cost-metric" is | To address the backward-compatibility issue, if a "cost-metric" is | |||
"routingcost" and the metric contains a "cost-context" field, then it | "routingcost" and the metric contains a "cost-context" field, then it | |||
MUST be "estimation"; if it is not, the client SHOULD reject the | MUST be "estimation"; if it is not, the client SHOULD reject the | |||
information as invalid. | information as invalid. | |||
6.4. Computation Considerations | 6.4. Computation Considerations | |||
The metric values exposed by an ALTO server may result from | The metric values exposed by an ALTO server may result from | |||
additional processing on measurements from data sources to compute | additional processing of measurements from data sources to compute | |||
exposed metrics. This may involve data processing tasks such as | exposed metrics. This may involve data processing tasks such as | |||
aggregating the results across multiple systems, removing outliers, | aggregating the results across multiple systems, removing outliers, | |||
and creating additional statistics. There are two challenges on the | and creating additional statistics. The computation of ALTO | |||
computation of ALTO performance metrics. | performance metrics can present two challenges. | |||
6.4.1. Configuration Parameters Considerations | 6.4.1. Configuration Parameter Considerations | |||
Performance metrics often depend on configuration parameters, and | Performance metrics often depend on configuration parameters, and | |||
exposing such configuration parameters can help an ALTO client to | exposing such configuration parameters can help an ALTO client to | |||
better understand the exposed metrics. In particular, an ALTO server | better understand the exposed metrics. In particular, an ALTO server | |||
may be configured to compute a TE metric (e.g., packet loss rate) in | may be configured to compute a TE metric (e.g., packet loss rate) at | |||
fixed intervals, say every T seconds. To expose this information, | fixed intervals, say every T seconds. To expose this information, | |||
the ALTO server may provide the client with two pieces of additional | the ALTO server may provide the client with two pieces of additional | |||
information: (1) when the metrics are last computed, and (2) when the | information: (1) when the metrics were last computed and (2) when the | |||
metrics will be updated (i.e., the validity period of the exposed | metrics will be updated (i.e., the validity period of the exposed | |||
metric values). The ALTO server can expose these two pieces of | metric values). The ALTO server can expose these two pieces of | |||
information by using the HTTP response headers Last-Modified and | information by using the HTTP response headers Last-Modified and | |||
Expires. | Expires. | |||
6.4.2. Aggregation Computation Considerations | 6.4.2. Aggregation Computation Considerations | |||
An ALTO server may not be able to measure the performance metrics to | An ALTO server may not be able to measure the performance metrics to | |||
be exposed. The basic issue is that the "source" information can | be exposed. The basic issue is that the "source" information can | |||
often be link level. For example, routing protocols often measure | often be link-level information. For example, routing protocols | |||
and report only per link loss, not end-to-end loss; similarly, | often measure and report only per-link loss and not end-to-end loss; | |||
routing protocols report link level available bandwidth, not end-to- | similarly, routing protocols report link-level available bandwidth | |||
end available bandwidth. The ALTO server then needs to aggregate | and not end-to-end available bandwidth. The ALTO server then needs | |||
these data to provide an abstract and unified view that can be more | to aggregate these data to provide an abstract and unified view that | |||
useful to applications. The server should consider that different | can be more useful to applications. The server should be aware that | |||
metrics may use different aggregation computation. For example, the | different metrics may use different aggregation computations. For | |||
end-to-end latency of a path is the sum of the latency of the links | example, the end-to-end latency of a path is the sum of the latencies | |||
on the path; the end-to-end available bandwidth of a path is the | of the links on the path; the end-to-end available bandwidth of a | |||
minimum of the available bandwidth of the links on the path; in | path is the minimum of the available bandwidth of the links on the | |||
contrast, aggregating loss values is complicated by the potential for | path; in contrast, aggregating loss values is complicated by the | |||
correlated loss events on different links in the path | potential for correlated loss events on different links in the path. | |||
7. Security Considerations | 7. Security Considerations | |||
The properties defined in this document present no security | The properties defined in this document present no security | |||
considerations beyond those in Section 15 of the base ALTO | considerations beyond those in Section 15 of the base ALTO | |||
specification [RFC7285]. | specification [RFC7285]. | |||
However, concerns addressed in Sections 15.1, 15.2, and 15.3 of | However, concerns addressed in Sections 15.1, 15.2, and 15.3 of | |||
[RFC7285] remain of utmost importance. Indeed, Traffic Engineering | [RFC7285] remain of utmost importance. Indeed, TE performance is | |||
(TE) performance is highly sensitive ISP information; therefore, | highly sensitive ISP information; therefore, sharing TE metric values | |||
sharing TE metric values in numerical mode requires full mutual | in numerical mode requires full mutual confidence between the | |||
confidence between the entities managing the ALTO server and the ALTO | entities managing the ALTO server and the ALTO client. ALTO servers | |||
client. ALTO servers will most likely distribute numerical TE | will most likely distribute numerical TE performance to ALTO clients | |||
performance to ALTO clients under strict and formal mutual trust | under strict and formal mutual trust agreements. On the other hand, | |||
agreements. On the other hand, ALTO clients must be cognizant on the | ALTO clients must be cognizant of the risks attached to such | |||
risks attached to such information that they would have acquired | information that they would have acquired outside formal conditions | |||
outside formal conditions of mutual trust. | of mutual trust. | |||
To mitigate confidentiality risks during information transport of TE | To mitigate confidentiality risks during information transport of TE | |||
performance metrics, the operator should address the risk of ALTO | performance metrics, the operator should address the risk of ALTO | |||
information being leaked to malicious Clients or third parties, | information being leaked to malicious clients or third parties | |||
through attacks such as the person-in-the-middle (PITM) attacks. As | through such attacks as person-in-the-middle (PITM) attacks. As | |||
specified in "Protection Strategies" (Section 15.3.2 of [RFC7285]), | specified in Section 15.3.2 ("Protection Strategies") of [RFC7285], | |||
the ALTO Server should authenticate ALTO Clients when transmitting an | the ALTO server should authenticate ALTO clients when transmitting an | |||
ALTO information resource containing sensitive TE performance | ALTO information resource containing sensitive TE performance | |||
metrics. "Authentication and Encryption" (Section 8.3.5 of | metrics. Section 8.3.5 ("Authentication and Encryption") of | |||
[RFC7285]) specifies that "ALTO Server implementations as well as | [RFC7285] specifies that ALTO server implementations as well as ALTO | |||
ALTO Client implementations MUST support the "https" URI scheme of | client implementations MUST support the "https" URI scheme [RFC9110] | |||
[RFC7230] and Transport Layer Security (TLS) of [RFC8446]". | and Transport Layer Security (TLS) [RFC8446]. | |||
8. IANA Considerations | 8. IANA Considerations | |||
IANA has created and now maintains the "ALTO Cost Metric" registry, | 8.1. ALTO Cost Metrics Registry | |||
listed in Section 14.2, Table 3 of [RFC7285]. This registry is | ||||
located at <https://www.iana.org/assignments/alto-protocol/alto- | ||||
protocol.xhtml#cost-metrics>. This document requests to add the | ||||
following entries to the "ALTO Cost Metric" registry. | ||||
+-----------------+----------------------------+ | IANA created and now maintains the "ALTO Cost Metrics" registry, as | |||
| Identifier | Intended Semantics | | listed in [RFC7285], Section 14.2, Table 3. This registry is located | |||
+-----------------+----------------------------+ | at <https://www.iana.org/assignments/alto-protocol/>. IANA has added | |||
| delay-ow | Section 4.1 of [RFCXXX] | | the following entries to the "ALTO Cost Metrics" registry. | |||
| delay-rt | Section 4.2 of [RFCXXX] | | ||||
| delay-variation | Section 4.3 of [RFCXXX] | | ||||
| lossrate | Section 4.4 of [RFCXXX] | | ||||
| hopcount | Section 4.5 of [RFCXXX] | | ||||
| tput | Section 5.1 of [RFCXXX] | | ||||
| bw-residual | Section 5.2 of [RFCXXX] | | ||||
| bw-available | Section 5.3 of [RFCXXX] | | ||||
+-----------------+----------------------------+ | ||||
* [Note to the RFC Editor]: Please replace RFCXXX with the RFC | +=================+====================+===========+ | |||
number assigned to this document. | | Identifier | Intended Semantics | Reference | | |||
+=================+====================+===========+ | ||||
| delay-ow | See Section 4.1 | RFC 9439 | | ||||
+-----------------+--------------------+-----------+ | ||||
| delay-rt | See Section 4.2 | RFC 9439 | | ||||
+-----------------+--------------------+-----------+ | ||||
| delay-variation | See Section 4.3 | RFC 9439 | | ||||
+-----------------+--------------------+-----------+ | ||||
| lossrate | See Section 4.4 | RFC 9439 | | ||||
+-----------------+--------------------+-----------+ | ||||
| hopcount | See Section 4.5 | RFC 9439 | | ||||
+-----------------+--------------------+-----------+ | ||||
| tput | See Section 5.1 | RFC 9439 | | ||||
+-----------------+--------------------+-----------+ | ||||
| bw-residual | See Section 5.2 | RFC 9439 | | ||||
+-----------------+--------------------+-----------+ | ||||
| bw-available | See Section 5.3 | RFC 9439 | | ||||
+-----------------+--------------------+-----------+ | ||||
This document requests the creation of the "ALTO Cost Source" | Table 2: ALTO Cost Metrics Registry | |||
registry. This registry serves two purposes. First, it ensures | ||||
uniqueness of identifiers referring to ALTO cost source types. | ||||
Second, it provides references to particular semantics of allocated | ||||
cost source types to be applied by both ALTO servers and applications | ||||
utilizing ALTO clients. | ||||
A new ALTO cost source can be added after IETF Review [RFC8126], to | 8.2. ALTO Cost Source Types Registry | |||
ensure that proper documentation regarding the new ALTO cost source | ||||
and its security considerations have been provided. The RFC(s) | IANA has created the "ALTO Cost Source Types" registry. This | |||
documenting the new cost source should be detailed enough to provide | registry serves two purposes. First, it ensures the uniqueness of | |||
guidance to both ALTO service providers and applications utilizing | identifiers referring to ALTO cost source types. Second, it provides | |||
ALTO clients as to how values of the registered ALTO cost source | references to particular semantics of allocated cost source types to | |||
should be interpreted. Updates and deletions of ALTO cost source | be applied by both ALTO servers and applications utilizing ALTO | |||
follow the same procedure. | clients. | |||
A new ALTO cost source type can be added after IETF Review [RFC8126], | ||||
to ensure that proper documentation regarding the new ALTO cost | ||||
source type and its security considerations has been provided. The | ||||
RFC(s) documenting the new cost source type should be detailed enough | ||||
to provide guidance to both ALTO service providers and applications | ||||
utilizing ALTO clients as to how values of the registered ALTO cost | ||||
source type should be interpreted. Updates and deletions of ALTO | ||||
cost source types follow the same procedure. | ||||
Registered ALTO address type identifiers MUST conform to the | Registered ALTO address type identifiers MUST conform to the | |||
syntactical requirements specified in Section 3.1. Identifiers are | syntactical requirements specified in Section 3.1. Identifiers are | |||
to be recorded and displayed as strings. | to be recorded and displayed as strings. | |||
Requests to add a new value to the registry MUST include the | Requests to add a new value to the registry MUST include the | |||
following information: | following information: | |||
* Identifier: The name of the desired ALTO cost source type. | Identifier: The name of the desired ALTO cost source type. | |||
* Intended Semantics: ALTO cost source type carry with them | Intended Semantics: ALTO cost source types carry with them semantics | |||
semantics to guide their usage by ALTO clients. Hence, a document | to guide their usage by ALTO clients. Hence, a document defining | |||
defining a new type should provide guidance to both ALTO service | a new type should provide guidance to both ALTO service providers | |||
providers and applications utilizing ALTO clients as to how values | and applications utilizing ALTO clients as to how values of the | |||
of the registered ALTO endpoint property should be interpreted. | registered ALTO endpoint property should be interpreted. | |||
* Security Considerations: ALTO cost source types expose information | Security Considerations: ALTO cost source types expose information | |||
to ALTO clients. ALTO service providers should be made aware of | to ALTO clients. ALTO service providers should be made aware of | |||
the security ramifications related to the exposure of a cost | the security ramifications related to the exposure of a cost | |||
source type. | source type. | |||
This specification requests registration of the identifiers | IANA has registered the identifiers "nominal", "sla", and | |||
"nominal", "sla", and "estimation" listed in the table below. | "estimation" as listed in the table below. | |||
Semantics for the these are documented in Section 3.1, and security | ||||
considerations are documented in Section 7. | ||||
+------------+----------------------------------+----------------+ | ||||
| Identifier | Intended Semantics | Security | | ||||
| | | Considerations | | ||||
+------------+----------------------------------+----------------+ | ||||
| nominal | Values in nominal cases; | Section 7 of | | ||||
| | Section 3.1 of [RFCXXX] | [RFCXXX] | | ||||
| sla | Values reflecting service level | Section 7 of | | ||||
| | agreement; Section 3.1 of | [RFCXXX] | | ||||
| | [RFCXXXX] | | | ||||
| estimation | Values by estimation; | Section 7 of | | ||||
| | Section 3.1 of [RFCXXX] | [RFCXXX] | | ||||
+------------+----------------------------------+----------------+ | ||||
9. Acknowledgments | ||||
The authors of this document would also like to thank Martin Duke for | +============+=========================+================+===========+ | |||
the highly informative, thorough AD reviews and comments. We thank | | Identifier | Intended | Security | Reference | | |||
Christian Amsuess, Elwyn Davies, Haizhou Du, Kai Gao, Geng Li, Lili | | | Semantics | Considerations | | | |||
Liu, Danny Alex Lachos Perez, and Brian Trammell for the reviews and | +============+=========================+================+===========+ | |||
comments. We thank Benjamin Kaduk, Eric Kline, Francesca Palombini, | | nominal | Values in nominal | Section 7 | RFC 9439 | | |||
Lars Eggert, Martin Vigoureux, Murrary Kucherawy, Roman Danyliw, | | | cases | | | | |||
Zaheduzzaman Sarker, Eric Vyncke for discussions and comments that | | | (Section 3.1) | | | | |||
improve this document. | +------------+-------------------------+----------------+-----------+ | |||
| sla | Values reflecting | Section 7 | RFC 9439 | | ||||
| | Service Level | | | | ||||
| | Agreement | | | | ||||
| | (Section 3.1) | | | | ||||
+------------+-------------------------+----------------+-----------+ | ||||
| estimation | Values by | Section 7 | RFC 9439 | | ||||
| | estimation | | | | ||||
| | (Section 3.1) | | | | ||||
+------------+-------------------------+----------------+-----------+ | ||||
10. References | Table 3: ALTO Cost Source Types Registry | |||
10.1. Normative References | 9. References | |||
[I-D.ietf-tcpm-rfc8312bis] | 9.1. Normative References | |||
Xu, L., Ha, S., Rhee, I., Goel, V., and L. Eggert, "CUBIC | ||||
for Fast and Long-Distance Networks", Work in Progress, | ||||
Internet-Draft, draft-ietf-tcpm-rfc8312bis-07, 4 March | ||||
2022, <https://www.ietf.org/archive/id/draft-ietf-tcpm- | ||||
rfc8312bis-07.txt>. | ||||
[IANA-IPPM] | [IANA-IPPM] | |||
IANA, "Performance Metrics Registry, | IANA, "Performance Metrics", | |||
https://www.iana.org/assignments/performance-metrics/ | <https://www.iana.org/assignments/performance-metrics/>. | |||
performance-metrics.xhtml". | ||||
[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>. | |||
[RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering | [RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering | |||
(TE) Extensions to OSPF Version 2", RFC 3630, | (TE) Extensions to OSPF Version 2", RFC 3630, | |||
DOI 10.17487/RFC3630, September 2003, | DOI 10.17487/RFC3630, September 2003, | |||
<https://www.rfc-editor.org/info/rfc3630>. | <https://www.rfc-editor.org/info/rfc3630>. | |||
[RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic | [RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic | |||
Engineering", RFC 5305, DOI 10.17487/RFC5305, October | Engineering", RFC 5305, DOI 10.17487/RFC5305, October | |||
2008, <https://www.rfc-editor.org/info/rfc5305>. | 2008, <https://www.rfc-editor.org/info/rfc5305>. | |||
[RFC6390] Clark, A. and B. Claise, "Guidelines for Considering New | [RFC6390] Clark, A. and B. Claise, "Guidelines for Considering New | |||
Performance Metric Development", BCP 170, RFC 6390, | Performance Metric Development", BCP 170, RFC 6390, | |||
DOI 10.17487/RFC6390, October 2011, | DOI 10.17487/RFC6390, October 2011, | |||
<https://www.rfc-editor.org/info/rfc6390>. | <https://www.rfc-editor.org/info/rfc6390>. | |||
[RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | ||||
Protocol (HTTP/1.1): Message Syntax and Routing", | ||||
RFC 7230, DOI 10.17487/RFC7230, June 2014, | ||||
<https://www.rfc-editor.org/info/rfc7230>. | ||||
[RFC7285] Alimi, R., Ed., Penno, R., Ed., Yang, Y., Ed., Kiesel, S., | [RFC7285] Alimi, R., Ed., Penno, R., Ed., Yang, Y., Ed., Kiesel, S., | |||
Previdi, S., Roome, W., Shalunov, S., and R. Woundy, | Previdi, S., Roome, W., Shalunov, S., and R. Woundy, | |||
"Application-Layer Traffic Optimization (ALTO) Protocol", | "Application-Layer Traffic Optimization (ALTO) Protocol", | |||
RFC 7285, DOI 10.17487/RFC7285, September 2014, | RFC 7285, DOI 10.17487/RFC7285, September 2014, | |||
<https://www.rfc-editor.org/info/rfc7285>. | <https://www.rfc-editor.org/info/rfc7285>. | |||
[RFC7471] Giacalone, S., Ward, D., Drake, J., Atlas, A., and S. | [RFC7471] Giacalone, S., Ward, D., Drake, J., Atlas, A., and S. | |||
Previdi, "OSPF Traffic Engineering (TE) Metric | Previdi, "OSPF Traffic Engineering (TE) Metric | |||
Extensions", RFC 7471, DOI 10.17487/RFC7471, March 2015, | Extensions", RFC 7471, DOI 10.17487/RFC7471, March 2015, | |||
<https://www.rfc-editor.org/info/rfc7471>. | <https://www.rfc-editor.org/info/rfc7471>. | |||
skipping to change at page 37, line 21 ¶ | skipping to change at line 1633 ¶ | |||
C. Filsfils, "BGP - Link State (BGP-LS) Advertisement of | C. Filsfils, "BGP - Link State (BGP-LS) Advertisement of | |||
IGP Traffic Engineering Performance Metric Extensions", | IGP Traffic Engineering Performance Metric Extensions", | |||
RFC 8571, DOI 10.17487/RFC8571, March 2019, | RFC 8571, DOI 10.17487/RFC8571, March 2019, | |||
<https://www.rfc-editor.org/info/rfc8571>. | <https://www.rfc-editor.org/info/rfc8571>. | |||
[RFC8895] Roome, W. and Y. Yang, "Application-Layer Traffic | [RFC8895] Roome, W. and Y. Yang, "Application-Layer Traffic | |||
Optimization (ALTO) Incremental Updates Using Server-Sent | Optimization (ALTO) Incremental Updates Using Server-Sent | |||
Events (SSE)", RFC 8895, DOI 10.17487/RFC8895, November | Events (SSE)", RFC 8895, DOI 10.17487/RFC8895, November | |||
2020, <https://www.rfc-editor.org/info/rfc8895>. | 2020, <https://www.rfc-editor.org/info/rfc8895>. | |||
10.2. Informative References | [RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
Ed., "HTTP Semantics", STD 97, RFC 9110, | ||||
DOI 10.17487/RFC9110, June 2022, | ||||
<https://www.rfc-editor.org/info/rfc9110>. | ||||
[RFC9438] Xu, L., Ha, S., Rhee, I., Goel, V., and L. Eggert, Ed., | ||||
"CUBIC for Fast and Long-Distance Networks", RFC 9438, | ||||
DOI 10.17487/RFC9438, August 2023, | ||||
<https://www.rfc-editor.org/info/rfc9438>. | ||||
9.2. Informative References | ||||
[FlowDirector] | [FlowDirector] | |||
Pujol, E., Poese, I., Zerwas, J., Smaragdakis, G., and A. | Pujol, E., Poese, I., Zerwas, J., Smaragdakis, G., and A. | |||
Feldmann, "Steering Hyper-Giants' Traffic at Scale", ACM | Feldmann, "Steering Hyper-Giants' Traffic at Scale", ACM | |||
CoNEXT 2020, 2020. | CoNEXT '19, December 2019. | |||
[G2] Ros-Giralt, J., Bohara, A., Yellamraju, S., and et. al., | ||||
"On the Bottleneck Structure of Congestion-Controlled | ||||
Networks", ACM SIGMETRICS 2019, 2020. | ||||
[I-D.corre-quic-throughput-testing] | [G2] Ros-Giralt, J., Bohara, A., Yellamraju, S., Harper | |||
Corre, K., "Framework for QUIC Throughput Testing", Work | Langston, M., Lethin, R., Jiang, Y., Tassiulas, L., Li, | |||
in Progress, Internet-Draft, draft-corre-quic-throughput- | J., Tan, Y., and M. Veeraraghavan, "On the Bottleneck | |||
testing-00, 17 September 2021, | Structure of Congestion-Controlled Networks", Proceedings | |||
<https://www.ietf.org/archive/id/draft-corre-quic- | of the ACM on Measurement and Analysis of Computing | |||
throughput-testing-00.txt>. | Systems, Vol. 3, No. 3, Article No. 59, pp. 1-31, | |||
DOI 10.1145/3366707, December 2019, | ||||
<https://dl.acm.org/doi/10.1145/3366707>. | ||||
[Prometheus] | [Prometheus] | |||
Volz, J. and B. Rabenstein, "Prometheus: A Next-Generation | Volz, J. and B. Rabenstein, "Prometheus: A Next-Generation | |||
Monitoring System", 2015. | Monitoring System (Talk)", SREcon15 Europe, May 2015. | |||
[Prophet] Gao, K., Zhang, J., and YR. Yang, "Prophet: Fast, Accurate | [Prophet] Zhang, J., Gao, K., Yang, YR., and J. Bi, "Prophet: Toward | |||
Throughput Prediction with Reactive Flows", ACM/IEEE | Fast, Error-Tolerant Model-Based Throughput Prediction for | |||
Transactions on Networking July, 2020. | Reactive Flows in DC Networks", IEEE/ACM Transactions on | |||
Networking, Volume 28, Issue 601, pp. 2475-2488, December | ||||
2020, <https://dl.acm.org/doi/10.1109/TNET.2020.3016838>. | ||||
[QUIC-THROUGHPUT-TESTING] | ||||
Corre, K., "Framework for QUIC Throughput Testing", Work | ||||
in Progress, Internet-Draft, draft-corre-quic-throughput- | ||||
testing-00, 17 September 2021, | ||||
<https://datatracker.ietf.org/doc/html/draft-corre-quic- | ||||
throughput-testing-00>. | ||||
[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>. | |||
[RFC2681] Almes, G., Kalidindi, S., and M. Zekauskas, "A Round-trip | [RFC2681] Almes, G., Kalidindi, S., and M. Zekauskas, "A Round-trip | |||
Delay Metric for IPPM", RFC 2681, DOI 10.17487/RFC2681, | Delay Metric for IPPM", RFC 2681, DOI 10.17487/RFC2681, | |||
September 1999, <https://www.rfc-editor.org/info/rfc2681>. | September 1999, <https://www.rfc-editor.org/info/rfc2681>. | |||
skipping to change at page 38, line 35 ¶ | skipping to change at line 1711 ¶ | |||
S. Previdi, "Application-Layer Traffic Optimization (ALTO) | S. Previdi, "Application-Layer Traffic Optimization (ALTO) | |||
Deployment Considerations", RFC 7971, | Deployment Considerations", RFC 7971, | |||
DOI 10.17487/RFC7971, October 2016, | DOI 10.17487/RFC7971, October 2016, | |||
<https://www.rfc-editor.org/info/rfc7971>. | <https://www.rfc-editor.org/info/rfc7971>. | |||
[RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | |||
Multiplexed and Secure Transport", RFC 9000, | Multiplexed and Secure Transport", RFC 9000, | |||
DOI 10.17487/RFC9000, May 2021, | DOI 10.17487/RFC9000, May 2021, | |||
<https://www.rfc-editor.org/info/rfc9000>. | <https://www.rfc-editor.org/info/rfc9000>. | |||
Acknowledgments | ||||
The authors of this document would like to thank Martin Duke for the | ||||
highly informative, thorough AD reviews and comments. We thank | ||||
Christian Amsüss, Elwyn Davies, Haizhou Du, Kai Gao, Geng Li, Lili | ||||
Liu, Danny Alex Lachos Perez, and Brian Trammell for their reviews | ||||
and comments. We thank Benjamin Kaduk, Erik Kline, Francesca | ||||
Palombini, Lars Eggert, Martin Vigoureux, Murray Kucherawy, Roman | ||||
Danyliw, Zaheduzzaman Sarker, and Éric Vyncke for discussions and | ||||
comments that improved this document. | ||||
Authors' Addresses | Authors' Addresses | |||
Qin Wu | Qin Wu | |||
Huawei | Huawei | |||
101 Software Avenue, Yuhua District | Yuhua District | |||
101 Software Avenue | ||||
Nanjing | Nanjing | |||
Jiangsu, 210012 | Jiangsu, 210012 | |||
China | China | |||
Email: bill.wu@huawei.com | Email: bill.wu@huawei.com | |||
Y. Richard Yang | Y. Richard Yang | |||
Yale University | Yale University | |||
51 Prospect St | 51 Prospect St. | |||
New Haven, CT 06520 | New Haven, CT 06520 | |||
United States of America | United States of America | |||
Email: yry@cs.yale.edu | Email: yry@cs.yale.edu | |||
Young Lee | Young Lee | |||
Samsung | Samsung | |||
Email: young.lee@gmail.com | Email: younglee.tx@gmail.com | |||
Dhruv Dhody | Dhruv Dhody | |||
Huawei | Huawei | |||
Leela Palace | ||||
Bangalore 560008 | ||||
Karnataka | ||||
India | India | |||
Email: dhruv.ietf@gmail.com | Email: dhruv.ietf@gmail.com | |||
Sabine Randriamasy | Sabine Randriamasy | |||
Nokia Bell Labs | Nokia Networks France | |||
Route de Villejust | ||||
91460 Nozay | ||||
France | France | |||
Email: sabine.randriamasy@nokia-bell-labs.com | Email: sabine.randriamasy@nokia-bell-labs.com | |||
Luis Miguel Contreras Murillo | Luis Miguel Contreras Murillo | |||
Telefonica | Telefonica | |||
Madrid | Madrid | |||
Spain | Spain | |||
Email: luismiguel.contrerasmurillo@telefonica.com | Email: luismiguel.contrerasmurillo@telefonica.com | |||
End of changes. 176 change blocks. | ||||
725 lines changed or deleted | 767 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |