ALTO Working Group | Q. Wu |
Internet-Draft | Huawei |
Intended status: Standards Track | Y. Yang |
Expires: March 2, 2017 | Yale University |
Y. Lee | |
D. Dhody | |
Huawei | |
S. Randriamasy | |
Nokia Bell Labs | |
August 29, 2016 |
ALTO Performance Cost Metrics
draft-wu-alto-te-metrics-09
Cost Metric is a basic concept in Application-Layer Traffic Optimization (ALTO). It is used in both the Cost Map Service and the Endpoint Cost Service. Future extensions to ALTO may also use Cost Metric.
Different applications may benefit from different Cost Metrics. For example, a Resource Consumer may prefer Resource Providers that have low delay to the Resource Consumer. However the base ALTO protocol [ALTO] has documented only a single cost metric, i.e., the generic "routingcost" metric (Sec. 14.2 of ALTO base specification [ALTO]).
In this document, we proposes a set of Cost Metrics, derived and aggregated from routing protocols with different granularity and scope, such as BGP-LS,OSPF-TE and ISIS-TE, or from end to end traffic management tool. We currently document 11 new Performance Metric to measure network delay, jitter, packet loss, hop count, and bandwidth. The metrics documented in this document provide a relatively comprehensive set of Cost Metrics for ALTO and allow applications to determine "where" to connect based on end to end network performance criteria. Additional Cost Metrics such as financial cost metrics may be documented in other documents.
Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119].
This Internet-Draft is submitted in full conformance with the 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 http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on March 2, 2017.
Copyright (c) 2016 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
Cost Metric is a basic concept in Application-Layer Traffic Optimization (ALTO). It is used in both the Cost Map Service and the Endpoint Cost Service. In particular, applications may benefit from knowing network performance measured on several Cost Metrics. For example, a more delay sensitive application may focus on latency, and a more bandwidth-sensitive application may focus on available bandwidth.
The objective of this document is to introduce 11 new performance cost metrics, listed in Table 1, to support the aforementioned applications and allow applications to determine "where" to connect based on end to end network performance criteria. Hence, this document extends the base ALTO protocol [ALTO], which defines only a single cost metric, i.e., the generic "routingcost" metric (Sec. 14.2 of ALTO base specification [ALTO]).
+-----------+--------------+------------------------+ | Namespace | Property | Reference | +-----------+--------------+------------------------+ | | owdelay | [RFCxxxx], Section 3 | | | pdv | [RFCxxxx], Section 4 | | | pktloss | [RFCxxxx], Section 5 | | | hopcount | [RFCxxxx], Section 6 | | | bandwidth | [RFCxxxx], Section 7 | | | maxbw | [RFCxxxx], Section 8 | | | maxresbw | [RFCxxxx], Section 9 | | | rtt | [RFCxxxx], Section 10 | | | residbw | [RFCxxxx], Section 11 | | | availbw | [RFCxxxx], Section 12 | | | utilbw | [RFCxxxx], Section 13 | +-----------+--------------+------------------------+ Table 1.
+--------+ +--------+ +--------+ | Client | | Client | | Client | +----^---+ +---^----+ +---^----+ | | | +-----------|-----------+ NBI |ALTO protocol | | +--+-----+ retrieve +---------+ | ALTO |<----------------| Routing | | Server | and aggregation| | | |<-------------+ | Protocol| +--------+ | +---------+ | | +---------+ | |Management ---| | | Tool | +---------+ Figure 1.End to End Path Cost Metrics Exposing
An ALTO server may provide a subset of the cost metrics documented in this document. These cost metrics can be retrieved and aggregated from routing protocol or other traffic measurement management tool (See Figure 1). Note that these cost metrics are optional metrics and Not all these cost metrics need to be exposed to the application. If some of these cost metrics have privacy concern, the alto server should not provide them to the client.
When an ALTO server supports a cost metric defined in this document, the server SHOULD announce the metric in its IRD.
The definitions of a set of cost metrics can allow us to extend the ALTO base protocol (e.g., allowing output and constraints use different cost metrics), but such extensions are not in the scope of this document.
One challenge in describing the metrics is that performance metrics often depend on configuration parameters. For example, the value of packet loss rate depends on the measurement interval and varies over time. To handle this issue, ALTO server may collect data on time periods covering the past, present or only collect data on present time. The ALTO may further aggregate these data to provide an abstract and unified view that can be more useful to applications. To make the ALTO client understand whether the performance data is past data or present data, the ALTO server needs to expose to the client the validity period of each performance metric.
Following the ALTO base protocol, this document uses JSON to specify the value type of each defined metric. See [RFC4627] for JSON data type specification.
The cost metrics described in this document are similar, in that they may use similar data sources and have similar issues in their calculation. Hence, instead of specifying such issues for each metric individually, we specify the common issue in this section.
An ALTO server needs data sources to compute the cost metrics described in this document. This document does not define the exact data sources. For example, the ALTO server may use log servers or the OAM system as its data source [ALTO-DEPLOYMENT]. In particular, the cost metrics defined in this document can be computed using routing systems as the data sources. Mechanisms defined in [RFC3630], [RFC3784], [OSPF-TE], [ISIS-TE], [BGP-LS] and [BGP-PM] that allow an ALTO Server to retrieve and derive the necessary information to compute the metrics that we described in this document.
An ALTO server processes measurements from data sources to compute exposed metrics. It may need performance data processing tasks such as aggregating the results across multiple systems, removing outliers, and creating additional statistics.
One specific challenge in deriving the metrics in this document is that these performance metrics depend on some configuration parameters. For example, the value of packet loss rate depends on the measurement interval and varies over time. If the ALTO server uses aforementioned routing protocol based mechanisms as data sources, then the measurement interval may be preconfigured by the routing protocol. For example, Section 5 of [ISIS-TE] defines a default measurement interval of 30 seconds. This document uses the term Measurement Interval to refer to the measurement interval used by the data sources. In the [ISIS-TE] case, it is a measurement interval set by routing protocol. The Measurement Interval(s) of the data sources can be different from the interval that this document derives the metric, e.g., the interval used by this document is multiple of measurement interval of the data sources. Hence, an ALTO server needs to resolve the mismatch, when it happens.
Another issue of converting from data source measurements to ALTO exposed metric values is that the measurement results that the ALTO Server retrieves may be defined for only links, and hence, the server will need to compose the link metrics to obtain path metrics used in services such as the Cost Map Service. In this definition, we define the metrics to be independent of link or path, considering that future ALTO extensions may define link-based services, and hence the defined metrics should still be usable.
Example 1: Delay value on source-destination endpoint pairs POST /endpointcost/lookup HTTP/1.1 Host: alto.example.com Content-Length: TBA Content-Type: application/alto-endpointcostparams+json Accept: application/alto-endpointcost+json,application/alto-error+json { "cost-type": {"cost-mode" : "numerical", "cost-metric" : "delay"}, "endpoints" : { "srcs": [ "ipv4:192.0.2.2" ], "dsts": [ "ipv4:192.0.2.89", "ipv4:198.51.100.34", "ipv6:2000::1:2345:6789:abcd" ] } } HTTP/1.1 200 OK Content-Length: TBA Content-Type: application/alto-endpointcost+json { "meta" :{ "cost-type": {"cost-mode" : "numerical", "cost-metric" : "delay" } }, "endpoint-cost-map" : { "ipv4:192.0.2.2": { "ipv4:192.0.2.89" : 10, "ipv4:198.51.100.34" : 20, "ipv6:2000::1:2345:6789:abcd" : 30, } } }
Example 2: Delayjitter value on source-destination endpoint pairs POST /endpointcost/lookup HTTP/1.1 Host: alto.example.com Content-Length: TBA Content-Type: application/alto-endpointcostparams+json Accept: application/alto-endpointcost+json,application/alto-error+json { "cost-type": {"cost-mode" : "numerical", "cost-metric" : "delayjitter"}, "endpoints" : { "srcs": [ "ipv4:192.0.2.2" ], "dsts": [ "ipv4:192.0.2.89", "ipv4:198.51.100.34", "ipv6:2000::1:2345:6789:abcd" ] } } HTTP/1.1 200 OK Content-Length: TBA Content-Type: application/alto-endpointcost+json { "meta": { "cost type": { "cost-mode": "numerical", "cost-metric":"delayjitter" } }, "endpoint-cost-map": { "ipv4:192.0.2.2": { "ipv4:192.0.2.89" : 0 "ipv4:198.51.100.34" : 1 "ipv6:2000::1:2345:6789:abcd" : 5 } } }
Example 3: pktloss value on source-destination endpoint pairs POST /endpointcost/lookup HTTP/1.1 Host: alto.example.com Content-Length: TBA Content-Type: application/alto-endpointcostparams+json Accept: application/alto-endpointcost+json,application/alto-error+json { "cost-type": {"cost-mode" : "numerical", "cost-metric" : "pktloss"}, "endpoints" : { "srcs": [ "ipv4:192.0.2.2" ], "dsts": [ "ipv4:192.0.2.89", "ipv4:198.51.100.34", "ipv6:2000::1:2345:6789:abcd" ] } } HTTP/1.1 200 OK Content-Length: TBA Content-Type: application/alto-endpointcost+json { "meta": { "cost type": { "cost-mode": "numerical", "cost-metric":"pktloss"} } }, "endpoint-cost-map": { "ipv4:192.0.2.2": { "ipv4:192.0.2.89" : 0, "ipv4:198.51.100.34": 1, "ipv6:2000::1:2345:6789:abcd" : 2, } } }
The metric hopcount is mentioned in [ALTO] as an example. This section further clarifies its properties.
Example 4: hopcount value on source-destination endpoint pairs POST /endpointcost/lookup HTTP/1.1 Host: alto.example.com Content-Length: TBA 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", "ipv6:2000::1:2345:6789:abcd" ] } } HTTP/1.1 200 OK Content-Length: TBA 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, "ipv6:2000::1:2345:6789:abcd" : 2, } } }
Example 5: maxbw value on source-destination endpoint pairs POST/ endpointcost/lookup HTTP/1.1 Host: alto.example.com Content-Length: TBA Content-Type: application/alto-endpointcostparams+json Accept: application/alto-endpointcost+json,application/alto-error+json { "cost-type": { "cost-mode": "numerical", "cost-metric": "maxbw"}, "endpoints": { "srcs": [ "ipv4 : 192.0.2.2" ], "dsts": [ "ipv4:192.0.2.89", "ipv4:198.51.100.34", "ipv6:2000::1:2345:6789:abcd" ] } } HTTP/1.1 200 OK Content-Length: TBA Content-Type: application/alto-endpointcost+json { "meta": { "cost-type": { "cost-mode": "numerical", "cost-metric": "maxbw" } }, "endpoint-cost-map": { "ipv4:192.0.2.2": { "ipv4:192.0.2.89": 0, "ipv4:198.51.100.34" : 2000, "ipv6:2000::1:2345:6789:abcd": 5000, } } }
Example 6: maxresbw value on source-destination endpoint pairs POST/ endpointcost/lookup HTTP/1.1 Host: alto.example.com Content-Length: TBA Content-Type: application/alto-endpointcostparams+json Accept: application/alto-endpointcost+json,application/alto-error+json { "cost-type" { "cost-mode": "numerical", "cost-metric": "maxresbw"}, "endpoints": { "srcs": [ "ipv4 : 192.0.2.2" ], "dsts": [ "ipv4:192.0.2.89", "ipv4:198.51.100.34", "ipv6:2000::1:2345:6789:abcd" ] } } HTTP/1.1 200 OK Content-Length: TBA Content-Type: application/alto-endpointcost+json { "meta": { "cost-type": { "cost-mode": "numerical", "cost-metric": "maxresbw" } }, " endpoint-cost-map": { "ipv4:192.0.2.2" { "ipv4:192.0.2.89" : 0, "ipv4:198.51.100.34": 2000, "ipv6:2000::1:2345:6789:abcd": 5000, } } }
Example 7: Round Trip Delay value on source-destination endpoint pairs POST /endpointcost/lookup HTTP/1.1 Host: alto.example.com Content-Length: TBA Content-Type: application/alto-endpointcostparams+json Accept: application/alto-endpointcost+json,application/alto-error+json { "cost-type": {"cost-mode" : "numerical", "cost-metric" : "rtt"}, "endpoints" : { "srcs": [ "ipv4:192.0.2.2" ], "dsts": [ "ipv4:192.0.2.89", "ipv4:198.51.100.34", "ipv6:2000::1:2345:6789:abcd" ] } } HTTP/1.1 200 OK Content-Length: TBA Content-Type: application/alto-endpointcost+json { "meta" :{ "cost-type": {"cost-mode" : "numerical", "cost-metric" : "rtt" } }, "endpoint-cost-map" : { "ipv4:192.0.2.2": { "ipv4:192.0.2.89" : 4, "ipv4:198.51.100.34" : 3, "ipv6:2000::1:2345:6789:abcd" : 2, } } }
Example 8: residuebw value on source-destination endpoint pairs POST/ endpointcost/lookup HTTP/1.1 Host: alto.example.com Content-Length: TBA Content-Type: application/alto-endpointcostparams+json Accept: application/alto-endpointcost+json,application/alto-error+json { "cost-type": { "cost-mode": "numerical", "cost-metric": "residubw"}, "endpoints": { "srcs": [ "ipv4 : 192.0.2.2" ], "dsts": [ "ipv4:192.0.2.89", "ipv4:198.51.100.34", "ipv6:2000::1:2345:6789:abcd" ] } } HTTP/1.1 200 OK Content-Length: TBA Content-Type: application/alto-endpointcost+json { "meta": { "cost-type" { "cost-mode": "numerical", "cost-metric": "residubw" } }, "endpoint-cost-map" { "ipv4:192.0.2.2" { "ipv4:192.0.2.89" : 0, "ipv4:198.51.100.34": 2000, "ipv6:2000::1:2345:6789:abcd": 5000, } } }
Example 9: availbw value on source-destination endpoint pairs POST /endpointcost/lookup HTTP/1.1 Host: alto.example.com Content-Length: TBA Content-Type: application/alto-endpointcostparams+json Accept: application/alto-endpointcost+json,application/alto-error+json { "cost-type": { "cost-mode": "numeric", "cost-metric": "availbw"}, "endpoints": { "srcs": [ "ipv4 : 192.0.2.2" ], "dsts": [ "ipv4:192.0.2.89", "ipv4:198.51.100.34", "ipv6:2000::1:2345:6789:abcd" ] } } HTTP/1.1 200 OK Content-Length: TBA Content-Type: application/alto-endpointcost+json { "meta": { "cost-type": { "cost-mode": "numeric", "cost-metric": "availbw" } }, "endpoint-cost-map": { "ipv4:192.0.2.2" { "ipv4:192.0.2.89" : [6,5,7,8,4,10,7,6], "ipv4:198.51.100.34" : [7,4,6,8,5,9,6,7], "ipv6:2000::1:2345:6789:abcd" : [7,6,8,5,7,9,6,8], } } }
Example 10: utilbw value on source-destination endpoint pairs POST /endpointcost/lookup HTTP/1.1 Host: alto.example.com Content-Length: TBA Content-Type: application/alto-endpointcostparams+json Accept: application/alto-endpointcost+json,application/alto-error+json { "cost-type": {"cost-mode" : "numerical", "cost-metric" : "utilbw"}, "endpoints": { "srcs" : [ "ipv4 : 192.0.2.2" ], "dsts" : [ "ipv4:192.0.2.89", "ipv4:198.51.100.34", "ipv6:2000::1:2345:6789:abcd" ] } } HTTP/1.1 200 OK Content-Length: TBA Content-Type: application/alto-endpointcost+json { "meta": { "cost type": { "cost-mode": "numerical", "cost-metric": "utilbw" } }, "endpoint-cost-map": { "ipv4:192.0.2.2" { "ipv4:192.0.2.89" : 0, "ipv4:198.51.100.34" : 2000, "ipv6:2000::1:2345:6789:abcd" : 5000, } } }
The properties defined in this document present no security considerations beyond those in Section 15 of the base ALTO specification [ALTO].
However concerns addressed in Sections "15.1 Authenticity and Integrity of ALTO Information", "15.2 Potential Undesirable Guidance from Authenticated ALTO Information" and "15.3 Confidentiality of ALTO Information" remain of utmost importance. Indeed, TE performance is a highly sensitive ISP information and sharing TE metric values in numerical mode requires full mutual confidence between the entities managing the ALTO Server and Client. Numerical TE performance information will most likely be distributed by ALTO Servers to Clients under strict and formal mutual trust agreements. One the other hand, ALTO Clients must be cognizant on the risks attached to such information that they would have acquired outside formal conditions of mutual trust.
IANA has added the following entries to the ALTO cost map Properties registry, defined in Section 3 of [RFCXXX].
+-----------+--------------+------------------------+ | Namespace | Property | Reference | +-----------+--------------+------------------------+ | | owdelay | [RFCxxxx], Section 3 | | | pdv | [RFCxxxx], Section 4 | | | pktloss | [RFCxxxx], Section 5 | | | hopcount | [RFCxxxx], Section 6 | | | bandwidth | [RFCxxxx], Section 7 | | | maxbw | [RFCxxxx], Section 8 | | | maxresbw | [RFCxxxx] Section 9 | | | rtt | [RFCxxxx], Section 10 | | | residbw | [RFCxxxx], Section 11 | | | availbw | [RFCxxxx], Section 12 | | | utilbw | [RFCxxxx], Section 13 | +-----------+--------------+------------------------+
[I-D.ietf-alto-deployments] | Stiemerling, M., Kiesel, S., Scharf, M., Seidel, H. and S. Previdi, "ALTO Deployment Considerations", Internet-Draft draft-ietf-alto-deployments-16, July 2016. |
[RFC6390] | Clark, A. and B. Claise, "Framework for Performance Metric Development", RFC 6390, July 2011. |