diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc9439.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc9439.txt')
-rw-r--r-- | doc/rfc/rfc9439.txt | 1767 |
1 files changed, 1767 insertions, 0 deletions
diff --git a/doc/rfc/rfc9439.txt b/doc/rfc/rfc9439.txt new file mode 100644 index 0000000..da9edb8 --- /dev/null +++ b/doc/rfc/rfc9439.txt @@ -0,0 +1,1767 @@ + + + + +Internet Engineering Task Force (IETF) Q. Wu +Request for Comments: 9439 Huawei +Category: Standards Track Y. Yang +ISSN: 2070-1721 Yale University + Y. Lee + Samsung + D. Dhody + Huawei + S. Randriamasy + Nokia Networks France + L. Contreras + Telefonica + August 2023 + + + Application-Layer Traffic Optimization (ALTO) Performance Cost Metrics + +Abstract + + The cost metric is a basic concept in Application-Layer Traffic + Optimization (ALTO), and different applications may use different + types of cost metrics. Since the ALTO base protocol (RFC 7285) + defines only a single cost metric (namely, the generic "routingcost" + metric), if an application wants to issue a cost map or an endpoint + cost request in order to identify a resource provider that offers + better performance metrics (e.g., lower delay or loss rate), the base + protocol does not define the cost metric to be used. + + This document addresses this issue by extending the specification to + provide a variety of network performance metrics, including network + delay, delay variation (a.k.a. jitter), packet loss rate, hop count, + and bandwidth. + + There are multiple sources (e.g., estimations based on measurements + or a Service Level Agreement) available for deriving a performance + metric. This document introduces an additional "cost-context" field + to the ALTO "cost-type" field to convey the source of a performance + metric. + +Status of This Memo + + This is an Internet Standards Track document. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Further information on + Internet Standards is available in Section 2 of RFC 7841. + + 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 (c) 2023 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (https://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Revised BSD License text as described in Section 4.e of the + Trust Legal Provisions and are provided without warranty as described + in the Revised BSD License. + +Table of Contents + + 1. Introduction + 2. Requirements Language + 3. Performance Metric Attributes + 3.1. Performance Metric Context: "cost-context" + 3.2. Performance Metric Statistics + 4. Packet Performance Metrics + 4.1. Cost Metric: One-Way Delay (delay-ow) + 4.1.1. Base Identifier + 4.1.2. Value Representation + 4.1.3. Intended Semantics and Use + 4.1.4. Cost-Context Specification Considerations + 4.2. Cost Metric: Round-Trip Delay (delay-rt) + 4.2.1. Base Identifier + 4.2.2. Value Representation + 4.2.3. Intended Semantics and Use + 4.2.4. Cost-Context Specification Considerations + 4.3. Cost Metric: Delay Variation (delay-variation) + 4.3.1. Base Identifier + 4.3.2. Value Representation + 4.3.3. Intended Semantics and Use + 4.3.4. Cost-Context Specification Considerations + 4.4. Cost Metric: Loss Rate (lossrate) + 4.4.1. Base Identifier + 4.4.2. Value Representation + 4.4.3. Intended Semantics and Use + 4.4.4. Cost-Context Specification Considerations + 4.5. Cost Metric: Hop Count (hopcount) + 4.5.1. Base Identifier + 4.5.2. Value Representation + 4.5.3. Intended Semantics and Use + 4.5.4. Cost-Context Specification Considerations + 5. Throughput/Bandwidth Performance Metrics + 5.1. Cost Metric: TCP Throughput (tput) + 5.1.1. Base Identifier + 5.1.2. Value Representation + 5.1.3. Intended Semantics and Use + 5.1.4. Cost-Context Specification Considerations + 5.2. Cost Metric: Residual Bandwidth (bw-residual) + 5.2.1. Base Identifier + 5.2.2. Value Representation + 5.2.3. Intended Semantics and Use + 5.2.4. Cost-Context Specification Considerations + 5.3. Cost Metric: Available Bandwidth (bw-available) + 5.3.1. Base Identifier + 5.3.2. Value Representation + 5.3.3. Intended Semantics and Use + 5.3.4. Cost-Context Specification Considerations + 6. Operational Considerations + 6.1. Source Considerations + 6.2. Metric Timestamp Considerations + 6.3. Backward-Compatibility Considerations + 6.4. Computation Considerations + 6.4.1. Configuration Parameter Considerations + 6.4.2. Aggregation Computation Considerations + 7. Security Considerations + 8. IANA Considerations + 8.1. ALTO Cost Metrics Registry + 8.2. ALTO Cost Source Types Registry + 9. References + 9.1. Normative References + 9.2. Informative References + Acknowledgments + Authors' Addresses + +1. Introduction + + Application-Layer Traffic Optimization (ALTO) provides a means for + network applications to obtain network information so that the + applications can identify efficient application-layer traffic + 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 + protocol [RFC7285]. + + Since different applications may use different cost metrics, the ALTO + base protocol introduced the "ALTO Cost Metrics" registry + (Section 14.2 of [RFC7285]) as a systematic mechanism to allow + different metrics to be specified. For example, a delay-sensitive + application may want to use latency-related metrics, and a bandwidth- + sensitive application may want to use bandwidth-related metrics. + However, the ALTO base protocol has registered only a single cost + metric, i.e., the generic "routingcost" metric (Section 14.2 of + [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 + applications to determine where to connect based on network + performance criteria, including delay- and bandwidth-related metrics. + + +============+===============+=====================================+ + | Metric | Definition in | Semantics Based On | + | | This Document | | + +============+===============+=====================================+ + | One-Way | Section 4.1 | Base: [RFC7471] [RFC8570] [RFC8571] | + | Delay | | sum of Unidirectional Delay of | + | | | links along the path | + +------------+---------------+-------------------------------------+ + | Round-Trip | Section 4.2 | Base: Sum of two directions of | + | Delay | | Unidirectional Delay | + +------------+---------------+-------------------------------------+ + | Delay | Section 4.3 | Base: [RFC7471] [RFC8570] [RFC8571] | + | Variation | | Sum of Unidirectional Delay | + | | | Variation of links along the path | + +------------+---------------+-------------------------------------+ + | Loss Rate | Section 4.4 | Base: [RFC7471] [RFC8570] [RFC8571] | + | | | aggr Unidirectional Link Loss | + +------------+---------------+-------------------------------------+ + | Residual | Section 5.2 | Base: [RFC7471] [RFC8570] [RFC8571] | + | Bandwidth | | min Unidirectional Residual BW | + +------------+---------------+-------------------------------------+ + | Available | Section 5.3 | Base: [RFC7471] [RFC8570] [RFC8571] | + | Bandwidth | | min Unidirectional Available BW | + +------------+---------------+-------------------------------------+ + | TCP | Section 5.1 | [RFC9438] | + | Throughput | | | + +------------+---------------+-------------------------------------+ + | Hop Count | Section 4.5 | [RFC7285] | + +------------+---------------+-------------------------------------+ + + Table 1: Cost Metrics Defined in This Document + + The first six metrics listed in Table 1 (i.e., one-way delay, round- + trip delay, delay variation, loss rate, residual bandwidth, and + available bandwidth) are derived from the set of Traffic Engineering + (TE) performance metrics commonly defined in OSPF [RFC3630] + [RFC7471], IS-IS [RFC5305] [RFC8570], and BGP - Link State (BGP-LS) + [RFC8571]. Deriving ALTO cost performance metrics from existing + 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 Min/Max Unidirectional Link Delay metric as defined in [RFC8570] + and [RFC8571], and Maximum (Link) Bandwidth as defined in [RFC3630] + and [RFC5305], are not listed in Table 1 because they can be handled + by applying the statistical operators defined in this document. The + metrics related to utilized bandwidth and reservable bandwidth (i.e., + Maximum Reservable (Link) Bandwidth and Unreserved Bandwidth as + defined in [RFC3630] and [RFC5305]) are outside the scope of this + document. + + The seventh metric in Table 1 (the estimated TCP-flow throughput + metric) provides an estimation of the bandwidth of a TCP flow, using + 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]). + + The eighth metric in Table 1 (the hop count metric) is mentioned, but + not defined, in the ALTO base protocol [RFC7285]; this document + provides a definition for it. + + These eight performance metrics can be classified into two + categories: those derived from the performance of individual packets + (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. + + The purpose of this document is to ensure proper usage of these eight + performance metrics in the context of ALTO. This document follows + the guidelines defined in Section 14.2 of [RFC7285] on registering + ALTO cost metrics. Hence, it specifies the identifier, the intended + semantics, and the security considerations of each one of the metrics + specified in Table 1. + + The definitions of the intended semantics of the metrics tend to be + coarse grained and are for guidance only, and they may work well for + ALTO. On the other hand, a performance measurement framework, such + as the IP Performance Metrics (IPPM) framework, may provide more + details for defining a performance metric. This document introduces + a mechanism called "cost-context" to provide additional details, when + they are available; see Section 3. + + Following the ALTO base protocol, this document uses JSON to specify + the value type of each defined metric. See [RFC8259] for JSON data + type specifications. In particular, [RFC7285] specifies that cost + values should be assumed by default to be 'JSONNumber'. When + defining the value representation of each metric in Table 1, this + document conforms to [RFC7285] but specifies additional, generic + constraints on valid JSONNumbers for each metric. For example, each + new metric in Table 1 will be specified as non-negative (>= 0); Hop + Count is specified to be an integer. + + An ALTO server may provide only a subset of the metrics described in + this document. For example, those that are subject to privacy + concerns should not be provided to unauthorized ALTO clients. Hence, + 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 + supports a cost metric defined in this document, it announces the + metric in its information resource directory (IRD) as defined in + Section 9.2 of [RFC7285]. + + An ALTO server introducing these metrics should consider related + security issues. As a generic security consideration regarding + reliability and trust in the exposed metric values, applications + SHOULD promptly stop using ALTO-based guidance if they detect that + the exposed information does not preserve their performance level or + even degrades it. Section 7 discusses security considerations in + more detail. + +2. Requirements Language + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and + "OPTIONAL" in this document are to be interpreted as described in + BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all + capitals, as shown here. + +3. Performance Metric Attributes + + The definitions of the metrics in this document are coarse grained, + based on network-layer TE performance metrics, and for guidance only. + A fine-grained framework as specified in [RFC6390] requires that the + fine-grained specification of a network performance metric include + six components: (1) Metric Name, (2) Metric Description, (3) Method + of Measurement or Calculation, (4) Units of Measurement, (5) + Measurement Points, and (6) Measurement Timing. Requiring that an + ALTO server provide precise, fine-grained values for all six + components for each metric that it exposes may not be feasible or + necessary for all ALTO use cases. For example, an ALTO server + computing its metrics from network-layer TE performance metrics may + not have information about the method of measurement or calculation + (e.g., measured traffic patterns). + + To address the issue and realize ALTO use cases for the metrics + listed in Table 1, this document defines performance metric + identifiers that can be used in the ALTO Protocol with the following + well-defined items: (1) Metric Name, (2) Metric Description, (3) + Units of Measurement, and (4) Measurement Points, which are always + specified by the specific ALTO services; for example, the endpoint + cost service is between the two endpoints. Hence, the ALTO + performance metric identifiers provide basic metric attributes. + + To allow the flexibility of allowing an ALTO server to provide fine- + grained information such as Method of Measurement or Calculation + according to its policy and use cases, this document introduces + context information so that the server can provide these additional + details. + +3.1. Performance Metric Context: "cost-context" + + The core additional details of a performance metric specify how the + metric is obtained. This is referred to as the source of the metric. + Specifically, this document defines three types of coarse-grained + metric information sources: "nominal", "sla", and "estimation". + + For a given type of source, precise interpretation of a performance + metric value can depend on specific measurement and computation + parameters. + + To make it possible to specify the source and the aforementioned + parameters, this document introduces an optional "cost-context" field + to the "cost-type" field defined by the ALTO base protocol + (Section 10.7 of [RFC7285]) as follows: + + object { + CostMetric cost-metric; + CostMode cost-mode; + [CostContext cost-context;] + [JSONString description;] + } CostType; + + object { + JSONString cost-source; + [JSONValue parameters;] + } CostContext; + + "cost-context" will not be used as a key to distinguish among + performance metrics. Hence, an ALTO information resource MUST NOT + announce multiple CostType entries with the same "cost-metric", + "cost-mode", and "cost-context". They must be placed into different + information resources. + + The "cost-source" field of the "cost-context" field is defined as a + string consisting of only ASCII alphanumeric characters + (U+0030-U+0039, U+0041-U+005A, and U+0061-U+007A). The "cost-source" + field is used in this document to indicate a string of this format. + + As mentioned above, this document defines three values for "cost- + source": "nominal", "sla", and "estimation". The "cost-source" field + of the "cost-context" field MUST be one that is registered in the + "ALTO Cost Source Types" registry (Section 8). + + The "nominal" category indicates that the metric value is statically + configured by the underlying devices. Not all metrics have + reasonable "nominal" values. For example, throughput can have a + nominal value, which indicates the configured transmission rate of + the involved devices; latency typically does not have a nominal + value. + + The "sla" category indicates that the metric value is derived from + some commitment, which this document refers to as a Service Level + Agreement (SLA). Some operators also use terms such as "target" or + "committed" values. For an "sla" metric, it is RECOMMENDED that the + "parameters" field provide a link to the SLA definition. + + The "estimation" category indicates that the metric value is computed + through an estimation process. An ALTO server may compute + "estimation" values by retrieving and/or aggregating information from + routing protocols (e.g., see [RFC7471], [RFC8570], and [RFC8571]), + traffic measurement management tools (e.g., the Two-Way Active + Measurement Protocol (TWAMP) [RFC5357]), and measurement frameworks + (e.g., IPPM), with corresponding operational issues. An illustration + 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. + + +--------+ +--------+ +--------+ + | Client | | Client | | Client | + +----^---+ +---^----+ +---^----+ + | | | + +-----------|-----------+ + |ALTO Protocol + | + | + +--+-----+ retrieval +-----------+ + | ALTO |<----------------| Routing | + | Server | and aggregation| Protocols | + | |<-------------+ | | + +--------+ | +-----------+ + | + | +------------+ + | |Performance | + ---| Monitoring | + | Tools | + +------------+ + + Figure 1: A Framework to Compute Estimation of Performance Metrics + + There can be multiple options available when choosing the "cost- + source" category; the operator of an ALTO server will make that + 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 + + The measurement of a performance metric often yields a set of samples + from an observation distribution [Prometheus], instead of a single + value. A statistical operator is applied to the samples to obtain a + value to be reported to the client. Multiple statistical operators + (e.g., min, median, and max) are commonly being used. + + Hence, this document extends the general ASCII alphanumeric cost + metric strings, formally specified as the CostMetric type defined in + Section 10.6 of [RFC7285], as follows: + + A cost metric string consists of a base metric identifier (or base + identifier for short) string, followed by an optional statistical + operator string, connected by the ASCII colon character (':', + U+003A), if the statistical operator string exists. The total + length of the cost metric string MUST NOT exceed 32, as required + by [RFC7285]. + + The statistical operator string MUST be one of the following: + + cur: The instantaneous observation value of the metric from the most + recent sample (i.e., the current value). + + percentile, with the letter 'p' followed by a number: Gives the + percentile specified by the number following the letter 'p'. The + number MUST be a non-negative JSON number in the range [0, 100] + (i.e., greater than or equal to 0 and less than or equal to 100), + followed by an optional decimal part, if higher precision is + needed. The decimal part should start with the '.' separator + (U+002E) and be followed by a sequence of one or more ASCII + numbers between '0' and '9'. Assume that this number is y, and + consider the case where the samples are coming from a random + variable X. The metric then returns x, such that the probability + of X is less than or equal to x, i.e., Prob(X <= x), = y/100. For + example, delay-ow:p99 gives the 99th percentile of observed one- + way delay; delay-ow:p99.9 gives the 99.9th percentile. Note that + some systems use quantile, which is in the range [0, 1]. When + there is a more common form for a given percentile, it is + RECOMMENDED that the common form be used; that is, instead of p0, + use min; instead of p50, use median; instead of p100, use max. + + min: The minimal value of the observations. + + max: The maximal value of the observations. + + median: The midpoint (i.e., p50) of the observations. + + mean: The arithmetic mean value of the observations. + + stddev: The standard deviation of the observations. + + stdvar: The standard variance of the observations. + + Examples of cost metric strings then include "delay-ow", "delay- + ow:min", and "delay-ow:p99", where "delay-ow" is the base metric + identifier string; "min" and "p99" are example statistical operator + strings. + + If a cost metric string does not have the optional statistical + operator string, the statistical operator SHOULD be interpreted as + the default statistical operator in the definition of the base + metric. If the definition of the base metric does not provide a + definition for the default statistical operator, the metric MUST be + considered the median value. + + Note that [RFC7285] limits the overall cost metric identifier to 32 + characters. The cost metric variants with statistical operator + suffixes defined by this document are also subject to the same + overall 32-character limit, so certain combinations of (long) base + metric identifiers and statistical operators will not be + representable. If such a situation arises, it could be addressed by + defining a new base metric identifier that is an "alias" of the + desired base metric, with identical semantics and just a shorter + name. + +4. Packet Performance Metrics + + This section introduces ALTO network performance metrics on one-way + delay, round-trip delay, delay variation, packet loss rate, and hop + count. They measure the "quality of experience" of the stream of + packets sent from a resource provider to a resource consumer. The + measurements of each individual packet (pkt) can include the delay + 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 + before reaching the destination (pkt.dropped), and the number of + network hops that the packet traverses (pkt.hopcount). The semantics + of the performance metrics defined in this section are that they are + statistics computed from these measurements; for example, the + x-percentile of the one-way delay is the x-percentile of the set of + delays {pkt.delay} for the packets in the stream. + +4.1. Cost Metric: One-Way Delay (delay-ow) + +4.1.1. Base Identifier + + The base identifier for this performance metric is "delay-ow". + +4.1.2. Value Representation + + The metric value type is a single 'JSONNumber' type value conforming + to the number specifications provided in Section 6 of [RFC8259]. The + unit is expressed in microseconds. Hence, the number can be a + floating-point number to express delay that is smaller than + microseconds. The number MUST be non-negative. + +4.1.3. Intended Semantics and Use + + Intended Semantics: To specify the temporal and spatial aggregated + delay of a stream of packets from the specified source to the + specified destination. The base semantics of the metric is the + Unidirectional Delay metric as defined in [RFC8571], [RFC8570], + and [RFC7471], but instead of specifying the delay for a link, it + is the (temporal) aggregation of the link delays from the source + to the destination. A non-normative reference definition of the + end-to-end one-way delay metric is provided in [RFC7679]. The + spatial aggregation level is specified in the query context, e.g., + 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. + + POST /endpointcost/lookup HTTP/1.1 + Host: alto.example.com + Content-Length: 239 + Content-Type: application/alto-endpointcostparams+json + Accept: + application/alto-endpointcost+json,application/alto-error+json + + { + "cost-type": { + "cost-mode": "numerical", + "cost-metric": "delay-ow" + }, + "endpoints": { + "srcs": [ + "ipv4:192.0.2.2" + ], + "dsts": [ + "ipv4:192.0.2.89", + "ipv4:198.51.100.34" + ] + } + } + + HTTP/1.1 200 OK + Content-Length: 247 + Content-Type: application/alto-endpointcost+json + + { + "meta": { + "cost-type": { + "cost-mode": "numerical", + "cost-metric": "delay-ow" + } + }, + "endpoint-cost-map": { + "ipv4:192.0.2.2": { + "ipv4:192.0.2.89": 10, + "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" + field, the values are based on "estimation". Since the identifier + does not include the statistical operator string component, the + values will represent median values. + + Figure 3 shows an example that is similar to Example 1 (Figure 2), + but for IPv6. + + POST /endpointcost/lookup HTTP/1.1 + Host: alto.example.com + Content-Length: 252 + Content-Type: application/alto-endpointcostparams+json + Accept: + application/alto-endpointcost+json,application/alto-error+json + + { + "cost-type": { + "cost-mode": "numerical", + "cost-metric": "delay-ow" + }, + "endpoints": { + "srcs": [ + "ipv6:2001:db8:100::1" + ], + "dsts": [ + "ipv6:2001:db8:100::2", + "ipv6:2001:db8:100::3" + ] + } + } + + HTTP/1.1 200 OK + Content-Length: 257 + Content-Type: application/alto-endpointcost+json + + { + "meta": { + "cost-type": { + "cost-mode": "numerical", + "cost-metric": "delay-ow" + } + }, + "endpoint-cost-map": { + "ipv6:2001:db8:100::1": { + "ipv6:2001:db8:100::2": 10, + "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 + + "nominal": Typically, network one-way delay does not have a nominal + value. + + "sla": Many networks provide delay-related parameters in their + application-level SLAs. It is RECOMMENDED that the "parameters" + field of an "sla" one-way delay metric include a link (i.e., a + field named "link") providing a URI for the specification of SLA + details, if available. Such a specification can be either + (1) free text for possible presentation to the user or (2) a + formal specification. The format of the specification is outside + the scope of this document. + + "estimation": The exact estimation method is outside the scope of + this document. There can be multiple sources for estimating one- + way delay. For example, the ALTO server may estimate the end-to- + end delay by aggregation of routing protocol link metrics; the + server may also estimate the delay using active, end-to-end + measurements -- for example, using the IPPM framework [RFC2330]. + + If the estimation is computed by aggregation of routing protocol link + metrics (e.g., Unidirectional Link Delay metrics for OSPF [RFC7471], + IS-IS [RFC8570], or BGP-LS [RFC8571]), it is RECOMMENDED that the + "parameters" field of an "estimation" one-way delay metric include + the following information: (1) the RFC defining the routing protocol + metrics (e.g., see [RFC7471] for derived metrics), (2) configurations + of the routing link metrics such as configured intervals, and (3) the + aggregation method from link metrics to end-to-end metrics. During + aggregation from link metrics to end-to-end metrics, the server + should be cognizant of potential issues when computing an end-to-end + summary statistic from link statistics. The default end-to-end + average one-way delay is the sum of average link one-way delays. If + an ALTO server provides the min and max statistical operators for the + one-way delay metric, the values can be computed directly from the + routing link metrics, as [RFC7471], [RFC8570], and [RFC8571] provide + Min/Max Unidirectional Link Delay. + + If the estimation is from the IPPM measurement framework, it is + RECOMMENDED that the "parameters" field of an "estimation" one-way + delay metric include the URI in the "URI" field of the IPPM metric + defined in the IPPM "Performance Metrics" registry [IANA-IPPM] (e.g., + <https://www.iana.org/assignments/performance-metrics/ + OWDelay_Active_IP-UDP-Poisson- + Payload250B_RFC8912sec7_Seconds_95Percentile>). The IPPM metric MUST + be one-way delay (i.e., IPPM OWDelay* metrics). The statistical + operator of the ALTO metric MUST be consistent with the IPPM + statistical property (e.g., 95th percentile). + +4.2. Cost Metric: Round-Trip Delay (delay-rt) + +4.2.1. Base Identifier + + The base identifier for this performance metric is "delay-rt". + +4.2.2. Value Representation + + The metric value type is a single 'JSONNumber' type value conforming + to the number specifications provided in Section 6 of [RFC8259]. The + number MUST be non-negative. The unit is expressed in microseconds. + +4.2.3. Intended Semantics and Use + + Intended Semantics: To specify temporal and spatial aggregated + round-trip delay between the specified source and specified + destination. The base semantics is that it is the sum of the one- + way delay from the source to the destination and the one-way delay + from the destination back to the source, where the one-way delay + is as defined in Section 4.1. A non-normative reference + definition of the end-to-end round-trip delay metric is provided + in [RFC2681]. The spatial aggregation level is specified in the + query context (e.g., PID to PID, or endpoint to endpoint). + + Note that it is possible for a client to query two one-way delay + (delay-ow) items and then compute the round-trip delay. The + server should be cognizant of the consistency of values. + + 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 + Host: alto.example.com + Content-Length: 238 + Content-Type: application/alto-endpointcostparams+json + Accept: + application/alto-endpointcost+json,application/alto-error+json + + { + "cost-type": { + "cost-mode": "numerical", + "cost-metric": "delay-rt" + }, + "endpoints": { + "srcs": [ + "ipv4:192.0.2.2" + ], + "dsts": [ + "ipv4:192.0.2.89", + "ipv4:198.51.100.34" + ] + } + } + + HTTP/1.1 200 OK + Content-Length: 245 + Content-Type: application/alto-endpointcost+json + + { + "meta": { + "cost-type": { + "cost-mode": "numerical", + "cost-metric": "delay-rt" + } + }, + "endpoint-cost-map": { + "ipv4:192.0.2.2": { + "ipv4:192.0.2.89": 4, + "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 + + "nominal": Typically, network round-trip delay does not have a + nominal value. + + "sla": See the "sla" entry in Section 4.1.4. + + "estimation": See the "estimation" entry in Section 4.1.4. For + estimation by aggregation of routing protocol link metrics, the + aggregation should include all links from the source to the + destination and then back to the source; for estimation using + IPPM, the IPPM metric MUST be round-trip delay (i.e., IPPM + RTDelay* metrics). The statistical operator of the ALTO metric + MUST be consistent with the IPPM statistical property (e.g., 95th + percentile). + +4.3. Cost Metric: Delay Variation (delay-variation) + +4.3.1. Base Identifier + + The base identifier for this performance metric is "delay-variation". + +4.3.2. Value Representation + + The metric value type is a single 'JSONNumber' type value conforming + to the number specifications provided in Section 6 of [RFC8259]. The + number MUST be non-negative. The unit is expressed in microseconds. + +4.3.3. Intended Semantics and Use + + Intended Semantics: To specify temporal and spatial aggregated delay + variation (also called delay jitter) with respect to the minimum + delay observed on the stream over the one-way delay from the + specified source and destination, where the one-way delay is as + defined in Section 4.1. A non-normative reference definition of + the end-to-end one-way delay variation metric is provided in + [RFC3393]. Note that [RFC3393] allows the specification of a + generic selection function F to unambiguously define the two + packets selected to compute delay variations. This document + defines the specific case where F selects the packet with the + smallest one-way delay as the "first" packet. The spatial + aggregation level is specified in the query context (e.g., PID to + PID, or endpoint to endpoint). + + Note that in statistics, variation is typically evaluated by the + 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. + + 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 + Host: alto.example.com + Content-Length: 245 + Content-Type: application/alto-endpointcostparams+json + Accept: + application/alto-endpointcost+json,application/alto-error+json + + { + "cost-type": { + "cost-mode": "numerical", + "cost-metric": "delay-variation" + }, + "endpoints": { + "srcs": [ + "ipv4:192.0.2.2" + ], + "dsts": [ + "ipv4:192.0.2.89", + "ipv4:198.51.100.34" + ] + } + } + + HTTP/1.1 200 OK + Content-Length: 252 + Content-Type: application/alto-endpointcost+json + + { + "meta": { + "cost-type": { + "cost-mode": "numerical", + "cost-metric": "delay-variation" + } + }, + "endpoint-cost-map": { + "ipv4:192.0.2.2": { + "ipv4:192.0.2.89": 0, + "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 + + "nominal": Typically, network delay variation does not have a + nominal value. + + "sla": See the "sla" entry in Section 4.1.4. + + "estimation": See the "estimation" entry in Section 4.1.4. For + estimation by aggregation of routing protocol link metrics, the + default aggregation of the average of delay variations is the sum + of the link delay variations; for estimation using IPPM, the IPPM + metric MUST be delay variation (i.e., IPPM OWPDV* metrics). The + statistical operator of the ALTO metric MUST be consistent with + the IPPM statistical property (e.g., 95th percentile). + +4.4. Cost Metric: Loss Rate (lossrate) + +4.4.1. Base Identifier + + The base identifier for this performance metric is "lossrate". + +4.4.2. Value Representation + + The metric value type is a single 'JSONNumber' type value conforming + to the number specifications provided in Section 6 of [RFC8259]. The + number MUST be non-negative. The value represents the percentage of + packet losses. + +4.4.3. Intended Semantics and Use + + Intended Semantics: To specify the temporal and spatial aggregated + one-way packet loss rate from the specified source and the + specified destination. The base semantics of the metric is the + Unidirectional Link Loss metric as defined in [RFC8571], + [RFC8570], and [RFC7471], but instead of specifying the loss for a + link, it is the aggregated loss of all links from the source to + the destination. The spatial aggregation level is specified in + 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. + + POST /endpointcost/lookup HTTP/1.1 + Host: alto.example.com + Content-Length: 238 + Content-Type: application/alto-endpointcostparams+json + Accept: + application/alto-endpointcost+json,application/alto-error+json + + { + "cost-type": { + "cost-mode": "numerical", + "cost-metric": "lossrate" + }, + "endpoints": { + "srcs": [ + "ipv4:192.0.2.2" + ], + "dsts": [ + "ipv4:192.0.2.89", + "ipv4:198.51.100.34" + ] + } + } + + HTTP/1.1 200 OK + Content-Length: 248 + Content-Type: application/alto-endpointcost+json + + { + "meta": { + "cost-type": { + "cost-mode": "numerical", + "cost-metric": "lossrate" + } + }, + "endpoint-cost-map": { + "ipv4:192.0.2.2": { + "ipv4:192.0.2.89": 0, + "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 + + "nominal": Typically, the packet loss rate does not have a nominal + value, although some networks may specify zero losses. + + "sla": See the "sla" entry in Section 4.1.4. + + "estimation": See the "estimation" entry in Section 4.1.4. For + estimation by aggregation of routing protocol link metrics, the + default aggregation of the average loss rate is the sum of the + link loss rates. But this default aggregation is valid only if + two conditions are met: (1) link loss rates are low and (2) one + assumes that each link's loss events are uncorrelated with every + other link's loss events. When loss rates at the links are high + but independent, the general formula for aggregating loss, + assuming that each link is independent, is to compute end-to-end + loss as one minus the product of the success rate for each link. + Aggregation when losses at links are correlated can be more + complex, and the ALTO server should be cognizant of correlated + loss rates. For estimation using IPPM, the IPPM metric MUST be + packet loss (i.e., IPPM OWLoss* metrics). The statistical + operator of the ALTO metric MUST be consistent with the IPPM + statistical property (e.g., 95th percentile). + +4.5. Cost Metric: Hop Count (hopcount) + + The hop count (hopcount) metric is mentioned in Section 9.2.3 of + [RFC7285] as an example. This section further clarifies its + properties. + +4.5.1. Base Identifier + + The base identifier for this performance metric is "hopcount". + +4.5.2. Value Representation + + The metric value type is a single 'JSONNumber' type value conforming + to the number specifications provided in Section 6 of [RFC8259]. The + number MUST be a non-negative integer (greater than or equal to 0). + The value represents the number of hops. + +4.5.3. Intended Semantics and Use + + Intended Semantics: To specify the number of hops in the path from + the specified source to the specified destination. The hop count + is a basic measurement of distance in a network and can be exposed + as the number of router hops computed from the routing protocols + originating this information. A hop, however, may represent other + units. The spatial aggregation level is specified in 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. + + POST /endpointcost/lookup HTTP/1.1 + Host: alto.example.com + Content-Length: 238 + Content-Type: application/alto-endpointcostparams+json + Accept: + application/alto-endpointcost+json,application/alto-error+json + + { + "cost-type": { + "cost-mode": "numerical", + "cost-metric": "hopcount" + }, + "endpoints": { + "srcs": [ + "ipv4:192.0.2.2" + ], + "dsts": [ + "ipv4:192.0.2.89", + "ipv4:198.51.100.34" + ] + } + } + + HTTP/1.1 200 OK + Content-Length: 245 + Content-Type: application/alto-endpointcost+json + + { + "meta": { + "cost-type": { + "cost-mode": "numerical", + "cost-metric": "hopcount" + } + }, + "endpoint-cost-map": { + "ipv4:192.0.2.2": { + "ipv4:192.0.2.89": 5, + "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 + + "nominal": Typically, the hop count does not have a nominal value. + + "sla": Typically, the hop count does not have an SLA value. + + "estimation": The exact estimation method is outside the scope of + this document. An example of estimating hop count values is by + importing from IGP routing protocols. It is RECOMMENDED that the + "parameters" field of an "estimation" hop count define the meaning + of a hop. + +5. Throughput/Bandwidth Performance Metrics + + This section introduces three metrics related to throughput and + bandwidth. Given a specified source and a specified destination, + these metrics reflect the volume of traffic that the network can + carry from the source to the destination. + +5.1. Cost Metric: TCP Throughput (tput) + +5.1.1. Base Identifier + + The base identifier for this performance metric is "tput". + +5.1.2. Value Representation + + The metric value type is a single 'JSONNumber' type value conforming + to the number specifications provided in Section 6 of [RFC8259]. The + number MUST be non-negative. The unit is bytes per second. + +5.1.3. Intended Semantics and Use + + Intended Semantics: To give the throughput of a congestion control + conforming TCP flow from the specified source to the specified + destination. The throughput SHOULD be interpreted as only an + 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. + + POST /endpointcost/lookup HTTP/1.1 + Host: alto.example.com + Content-Length: 234 + Content-Type: application/alto-endpointcostparams+json + Accept: + application/alto-endpointcost+json,application/alto-error+json + + { + "cost-type": { + "cost-mode": "numerical", + "cost-metric": "tput" + }, + "endpoints": { + "srcs": [ + "ipv4:192.0.2.2" + ], + "dsts": [ + "ipv4:192.0.2.89", + "ipv4:198.51.100.34" + ] + } + } + + HTTP/1.1 200 OK + Content-Length: 251 + Content-Type: application/alto-endpointcost+json + + { + "meta": { + "cost-type": { + "cost-mode": "numerical", + "cost-metric": "tput" + } + }, + "endpoint-cost-map": { + "ipv4:192.0.2.2": { + "ipv4:192.0.2.89": 256000, + "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 + + "nominal": Typically, TCP throughput does not have a nominal value + and SHOULD NOT be generated. + + "sla": Typically, TCP throughput does not have an SLA value and + SHOULD NOT be generated. + + "estimation": The exact estimation method is outside the scope of + this document. It is RECOMMENDED that the "parameters" field of + an "estimation" TCP throughput metric include the following + information: (1) the congestion control algorithm and (2) the + estimation methodology. To specify (1), it is RECOMMENDED that + the "parameters" field (object) include a field named "congestion- + control-algorithm", which provides a URI for the specification of + the algorithm; for example, for an ALTO server to provide + estimation of the throughput of a CUBIC congestion control flow, + its "parameters" field includes the "congestion-control-algorithm" + field, with value being set to the URI for [RFC9438]; for an + ongoing congestion control algorithm such as BBR, a link to its + specification can be added. To specify (2), the "parameters" + field includes as many details as possible; for example, for the + TCP Cubic throughout estimation, the "parameters" field specifies + that the throughput is estimated by setting _C_ to 0.4, and the + equation in [RFC9438], Section 5.1, Figure 8 is applied; as an + alternative, the methodology may be based on the NUM model + [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.1. Base Identifier + + The base identifier for this performance metric is "bw-residual". + +5.2.2. Value Representation + + The metric value type is a single 'JSONNumber' type value that is + non-negative. The unit of measurement is bytes per second. + +5.2.3. Intended Semantics and Use + + Intended Semantics: To specify temporal and spatial residual + bandwidth from the specified source to the specified destination. + The base semantics of the metric is the Unidirectional Residual + Bandwidth metric as defined in [RFC8571], [RFC8570], and + [RFC7471], but instead of specifying the residual bandwidth for a + link, it is the residual bandwidth of the path from the source to + the destination. Hence, it is the minimal residual bandwidth + among all links from the source to the destination. When the max + statistical operator is defined for the metric, it typically + provides the minimum of the link capacities along the path, as the + default value of the residual bandwidth of a link is its link + capacity [RFC8571] [RFC8570] [RFC7471]. The spatial aggregation + 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 as a cost metric constraint attribute + or as a returned cost metric in the response. + + POST /endpointcost/lookup HTTP/1.1 + Host: alto.example.com + Content-Length: 241 + Content-Type: application/alto-endpointcostparams+json + Accept: + application/alto-endpointcost+json,application/alto-error+json + + { + "cost-type": { + "cost-mode": "numerical", + "cost-metric": "bw-residual" + }, + "endpoints": { + "srcs": [ + "ipv4:192.0.2.2" + ], + "dsts": [ + "ipv4:192.0.2.89", + "ipv4:198.51.100.34" + ] + } + } + + HTTP/1.1 200 OK + Content-Length: 255 + Content-Type: application/alto-endpointcost+json + + { + "meta": { + "cost-type": { + "cost-mode": "numerical", + "cost-metric": "bw-residual" + } + }, + "endpoint-cost-map": { + "ipv4:192.0.2.2": { + "ipv4:192.0.2.89": 0, + "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 + + "nominal": Typically, residual bandwidth does not have a nominal + value. + + "sla": Typically, residual bandwidth does not have an SLA value. + + "estimation": See the "estimation" entry in Section 4.1.4. The + current ("cur") residual bandwidth of a path is the minimal + residual bandwidth of all links on the path. + +5.3. Cost Metric: Available Bandwidth (bw-available) + +5.3.1. Base Identifier + + The base identifier for this performance metric is "bw-available". + +5.3.2. Value Representation + + The metric value type is a single 'JSONNumber' type value that is + non-negative. The unit of measurement is bytes per second. + +5.3.3. Intended Semantics and Use + + Intended Semantics: To specify temporal and spatial available + bandwidth from the specified source to the specified destination. + The base semantics of the metric is the Unidirectional Available + Bandwidth metric as defined in [RFC8571], [RFC8570], and + [RFC7471], but instead of specifying the available bandwidth for a + link, it is the available bandwidth of the path from the source to + the destination. Hence, it is the minimal available bandwidth + among all links from the source to the destination. The spatial + 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 as a cost metric constraint attribute + or as a returned cost metric in the response. + + POST /endpointcost/lookup HTTP/1.1 + Host: alto.example.com + Content-Length: 244 + Content-Type: application/alto-endpointcostparams+json + Accept: + application/alto-endpointcost+json,application/alto-error+json + + { + "cost-type": { + "cost-mode": "numerical", + "cost-metric": "bw-available" + }, + "endpoints": { + "srcs": [ + "ipv4:192.0.2.2" + ], + "dsts": [ + "ipv4:192.0.2.89", + "ipv4:198.51.100.34" + ] + } + } + + HTTP/1.1 200 OK + Content-Length: 255 + Content-Type: application/alto-endpointcost+json + + { + "meta": { + "cost-type": { + "cost-mode": "numerical", + "cost-metric": "bw-available" + } + }, + "endpoint-cost-map": { + "ipv4:192.0.2.2": { + "ipv4:192.0.2.89": 0, + "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 + + "nominal": Typically, available bandwidth does not have a nominal + value. + + "sla": Typically, available bandwidth does not have an SLA value. + + "estimation": See the "estimation" entry in Section 4.1.4. The + current ("cur") available bandwidth of a path is the minimum of + the available bandwidth of all links on the path. + +6. Operational Considerations + + The exact measurement infrastructure, measurement conditions, and + computation algorithms can vary between different networks and are + outside the scope of this document. Both the ALTO server and the + ALTO clients, however, need to be cognizant of the operational issues + discussed in the following subsections. + + Also, the performance metrics specified in this document are similar + in that they may use similar data sources and have similar issues in + their calculation. Hence, this document specifies issues that the + performance metrics might have in common and also discusses + challenges regarding the computation of ALTO performance metrics + (Section 6.4). + +6.1. Source Considerations + + The addition of the "cost-source" field solves a key issue: an ALTO + server needs data sources to compute the cost metrics described in + this document, and an ALTO client needs to know the data sources to + better interpret the values. + + To avoid information that is too fine grained, this document + introduces "cost-source" to indicate only the high-level types of + data sources: "estimation", "nominal", or "sla", where "estimation" + is a type of measurement data source, "nominal" is a type of static + configuration, and "sla" is a type that is based more on policy. + + For example, for "estimation", the ALTO server may use log servers or + the Operations, Administration, and Maintenance (OAM) system as its + data source, as recommended by [RFC7971]. In particular, the cost + metrics defined in this document can be computed using routing + systems as the data sources. + +6.2. Metric Timestamp Considerations + + Despite the introduction of the additional "cost-context" + information, the metrics do not have a field to indicate the + timestamps of the data used to compute the metrics. To indicate this + attribute, the ALTO server SHOULD return an HTTP Last-Modified value + to indicate the freshness of the data used to compute the performance + metrics. + + If the ALTO client obtains updates through an incremental update + mechanism [RFC8895], the client SHOULD assume that the metric is + computed using a snapshot at the time that is approximated by the + receiving time. + +6.3. Backward-Compatibility Considerations + + One potential issue introduced by the optional "cost-source" field is + backward compatibility. Consider the case where an IRD defines two + "cost-type" entries with the same "cost-mode" and "cost-metric", but + one with "cost-source" being "estimation" and the other being "sla". + In such a case, an ALTO client that is not aware of the extension + will not be able to distinguish between these two types. A similar + issue can arise even with a single "cost-type" whose "cost-source" is + "sla": an ALTO client that is not aware of this extension will ignore + this field and instead consider the metric estimation. + + To address the backward-compatibility issue, if a "cost-metric" is + "routingcost" and the metric contains a "cost-context" field, then it + MUST be "estimation"; if it is not, the client SHOULD reject the + information as invalid. + +6.4. Computation Considerations + + The metric values exposed by an ALTO server may result from + additional processing of measurements from data sources to compute + exposed metrics. This may involve data processing tasks such as + aggregating the results across multiple systems, removing outliers, + and creating additional statistics. The computation of ALTO + performance metrics can present two challenges. + +6.4.1. Configuration Parameter Considerations + + Performance metrics often depend on configuration parameters, and + exposing such configuration parameters can help an ALTO client to + better understand the exposed metrics. In particular, an ALTO server + may be configured to compute a TE metric (e.g., packet loss rate) at + fixed intervals, say every T seconds. To expose this information, + the ALTO server may provide the client with two pieces of additional + information: (1) when the metrics were last computed and (2) when the + metrics will be updated (i.e., the validity period of the exposed + metric values). The ALTO server can expose these two pieces of + information by using the HTTP response headers Last-Modified and + Expires. + +6.4.2. Aggregation Computation Considerations + + An ALTO server may not be able to measure the performance metrics to + be exposed. The basic issue is that the "source" information can + often be link-level information. For example, routing protocols + often measure and report only per-link loss and not end-to-end loss; + similarly, routing protocols report link-level available bandwidth + and not end-to-end available bandwidth. The ALTO server then needs + to aggregate these data to provide an abstract and unified view that + can be more useful to applications. The server should be aware that + different metrics may use different aggregation computations. For + example, the end-to-end latency of a path is the sum of the latencies + of the links on the path; the end-to-end available bandwidth of a + path is the minimum of the available bandwidth of the links on the + path; in contrast, aggregating loss values is complicated by the + potential for correlated loss events on different links in the path. + +7. Security Considerations + + The properties defined in this document present no security + considerations beyond those in Section 15 of the base ALTO + specification [RFC7285]. + + However, concerns addressed in Sections 15.1, 15.2, and 15.3 of + [RFC7285] remain of utmost importance. Indeed, TE performance is + highly sensitive ISP information; therefore, sharing TE metric values + in numerical mode requires full mutual confidence between the + entities managing the ALTO server and the ALTO client. ALTO servers + will most likely distribute numerical TE performance to ALTO clients + under strict and formal mutual trust agreements. On the other hand, + ALTO clients must be cognizant of the risks attached to such + information that they would have acquired outside formal conditions + of mutual trust. + + To mitigate confidentiality risks during information transport of TE + performance metrics, the operator should address the risk of ALTO + information being leaked to malicious clients or third parties + through such attacks as person-in-the-middle (PITM) attacks. As + specified in Section 15.3.2 ("Protection Strategies") of [RFC7285], + the ALTO server should authenticate ALTO clients when transmitting an + ALTO information resource containing sensitive TE performance + metrics. Section 8.3.5 ("Authentication and Encryption") of + [RFC7285] specifies that ALTO server implementations as well as ALTO + client implementations MUST support the "https" URI scheme [RFC9110] + and Transport Layer Security (TLS) [RFC8446]. + +8. IANA Considerations + +8.1. ALTO Cost Metrics Registry + + IANA created and now maintains the "ALTO Cost Metrics" registry, as + listed in [RFC7285], Section 14.2, Table 3. This registry is located + at <https://www.iana.org/assignments/alto-protocol/>. IANA has added + the following entries to the "ALTO Cost Metrics" registry. + + +=================+====================+===========+ + | 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 | + +-----------------+--------------------+-----------+ + + Table 2: ALTO Cost Metrics Registry + +8.2. ALTO Cost Source Types Registry + + IANA has created the "ALTO Cost Source Types" registry. This + registry serves two purposes. First, it ensures the 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 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 + syntactical requirements specified in Section 3.1. Identifiers are + to be recorded and displayed as strings. + + Requests to add a new value to the registry MUST include the + following information: + + Identifier: The name of the desired ALTO cost source type. + + Intended Semantics: ALTO cost source types carry with them semantics + to guide their usage by ALTO clients. Hence, a document defining + a new type should provide guidance to both ALTO service providers + and applications utilizing ALTO clients as to how values of the + registered ALTO endpoint property should be interpreted. + + Security Considerations: ALTO cost source types expose information + to ALTO clients. ALTO service providers should be made aware of + the security ramifications related to the exposure of a cost + source type. + + IANA has registered the identifiers "nominal", "sla", and + "estimation" as listed in the table below. + + +============+=========================+================+===========+ + | Identifier | Intended | Security | Reference | + | | Semantics | Considerations | | + +============+=========================+================+===========+ + | nominal | Values in nominal | Section 7 | RFC 9439 | + | | cases | | | + | | (Section 3.1) | | | + +------------+-------------------------+----------------+-----------+ + | sla | Values reflecting | Section 7 | RFC 9439 | + | | Service Level | | | + | | Agreement | | | + | | (Section 3.1) | | | + +------------+-------------------------+----------------+-----------+ + | estimation | Values by | Section 7 | RFC 9439 | + | | estimation | | | + | | (Section 3.1) | | | + +------------+-------------------------+----------------+-----------+ + + Table 3: ALTO Cost Source Types Registry + +9. References + +9.1. Normative References + + [IANA-IPPM] + IANA, "Performance Metrics", + <https://www.iana.org/assignments/performance-metrics/>. + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, + DOI 10.17487/RFC2119, March 1997, + <https://www.rfc-editor.org/info/rfc2119>. + + [RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering + (TE) Extensions to OSPF Version 2", RFC 3630, + DOI 10.17487/RFC3630, September 2003, + <https://www.rfc-editor.org/info/rfc3630>. + + [RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic + Engineering", RFC 5305, DOI 10.17487/RFC5305, October + 2008, <https://www.rfc-editor.org/info/rfc5305>. + + [RFC6390] Clark, A. and B. Claise, "Guidelines for Considering New + Performance Metric Development", BCP 170, RFC 6390, + DOI 10.17487/RFC6390, October 2011, + <https://www.rfc-editor.org/info/rfc6390>. + + [RFC7285] Alimi, R., Ed., Penno, R., Ed., Yang, Y., Ed., Kiesel, S., + Previdi, S., Roome, W., Shalunov, S., and R. Woundy, + "Application-Layer Traffic Optimization (ALTO) Protocol", + RFC 7285, DOI 10.17487/RFC7285, September 2014, + <https://www.rfc-editor.org/info/rfc7285>. + + [RFC7471] Giacalone, S., Ward, D., Drake, J., Atlas, A., and S. + Previdi, "OSPF Traffic Engineering (TE) Metric + Extensions", RFC 7471, DOI 10.17487/RFC7471, March 2015, + <https://www.rfc-editor.org/info/rfc7471>. + + [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for + Writing an IANA Considerations Section in RFCs", BCP 26, + RFC 8126, DOI 10.17487/RFC8126, June 2017, + <https://www.rfc-editor.org/info/rfc8126>. + + [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC + 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, + May 2017, <https://www.rfc-editor.org/info/rfc8174>. + + [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data + Interchange Format", STD 90, RFC 8259, + DOI 10.17487/RFC8259, December 2017, + <https://www.rfc-editor.org/info/rfc8259>. + + [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol + Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, + <https://www.rfc-editor.org/info/rfc8446>. + + [RFC8570] Ginsberg, L., Ed., Previdi, S., Ed., Giacalone, S., Ward, + D., Drake, J., and Q. Wu, "IS-IS Traffic Engineering (TE) + Metric Extensions", RFC 8570, DOI 10.17487/RFC8570, March + 2019, <https://www.rfc-editor.org/info/rfc8570>. + + [RFC8571] Ginsberg, L., Ed., Previdi, S., Wu, Q., Tantsura, J., and + C. Filsfils, "BGP - Link State (BGP-LS) Advertisement of + IGP Traffic Engineering Performance Metric Extensions", + RFC 8571, DOI 10.17487/RFC8571, March 2019, + <https://www.rfc-editor.org/info/rfc8571>. + + [RFC8895] Roome, W. and Y. Yang, "Application-Layer Traffic + Optimization (ALTO) Incremental Updates Using Server-Sent + Events (SSE)", RFC 8895, DOI 10.17487/RFC8895, November + 2020, <https://www.rfc-editor.org/info/rfc8895>. + + [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] + Pujol, E., Poese, I., Zerwas, J., Smaragdakis, G., and A. + Feldmann, "Steering Hyper-Giants' Traffic at Scale", ACM + CoNEXT '19, December 2019. + + [G2] Ros-Giralt, J., Bohara, A., Yellamraju, S., Harper + Langston, M., Lethin, R., Jiang, Y., Tassiulas, L., Li, + J., Tan, Y., and M. Veeraraghavan, "On the Bottleneck + Structure of Congestion-Controlled Networks", Proceedings + of the ACM on Measurement and Analysis of Computing + 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] + Volz, J. and B. Rabenstein, "Prometheus: A Next-Generation + Monitoring System (Talk)", SREcon15 Europe, May 2015. + + [Prophet] Zhang, J., Gao, K., Yang, YR., and J. Bi, "Prophet: Toward + Fast, Error-Tolerant Model-Based Throughput Prediction for + 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, + "Framework for IP Performance Metrics", RFC 2330, + DOI 10.17487/RFC2330, May 1998, + <https://www.rfc-editor.org/info/rfc2330>. + + [RFC2681] Almes, G., Kalidindi, S., and M. Zekauskas, "A Round-trip + Delay Metric for IPPM", RFC 2681, DOI 10.17487/RFC2681, + September 1999, <https://www.rfc-editor.org/info/rfc2681>. + + [RFC3393] Demichelis, C. and P. Chimento, "IP Packet Delay Variation + Metric for IP Performance Metrics (IPPM)", RFC 3393, + DOI 10.17487/RFC3393, November 2002, + <https://www.rfc-editor.org/info/rfc3393>. + + [RFC5357] Hedayat, K., Krzanowski, R., Morton, A., Yum, K., and J. + Babiarz, "A Two-Way Active Measurement Protocol (TWAMP)", + RFC 5357, DOI 10.17487/RFC5357, October 2008, + <https://www.rfc-editor.org/info/rfc5357>. + + [RFC7679] Almes, G., Kalidindi, S., Zekauskas, M., and A. Morton, + Ed., "A One-Way Delay Metric for IP Performance Metrics + (IPPM)", STD 81, RFC 7679, DOI 10.17487/RFC7679, January + 2016, <https://www.rfc-editor.org/info/rfc7679>. + + [RFC7971] Stiemerling, M., Kiesel, S., Scharf, M., Seidel, H., and + S. Previdi, "Application-Layer Traffic Optimization (ALTO) + Deployment Considerations", RFC 7971, + DOI 10.17487/RFC7971, October 2016, + <https://www.rfc-editor.org/info/rfc7971>. + + [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based + Multiplexed and Secure Transport", RFC 9000, + DOI 10.17487/RFC9000, May 2021, + <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 + + Qin Wu + Huawei + Yuhua District + 101 Software Avenue + Nanjing + Jiangsu, 210012 + China + Email: bill.wu@huawei.com + + + Y. Richard Yang + Yale University + 51 Prospect St. + New Haven, CT 06520 + United States of America + Email: yry@cs.yale.edu + + + Young Lee + Samsung + Email: younglee.tx@gmail.com + + + Dhruv Dhody + Huawei + India + Email: dhruv.ietf@gmail.com + + + Sabine Randriamasy + Nokia Networks France + France + Email: sabine.randriamasy@nokia-bell-labs.com + + + Luis Miguel Contreras Murillo + Telefonica + Madrid + Spain + Email: luismiguel.contrerasmurillo@telefonica.com |