rfc-8189

Multi-Cost Application-Layer Traffic Optimization (ALTO)

S. Randriamasy, W. Roome, N. Schwan
date2017-10 streamIETF areaops wgalto statusPROPOSED STANDARD pages29 canonicalhttps://www.rfc-editor.org/rfc/rfc8189 doi10.17487/RFC8189
The Application-Layer Traffic Optimization (ALTO) protocol, specified in RFC 7285, defines several services that return various metrics describing the costs between network endpoints. This document defines a new service that allows an ALTO Client to retrieve several cost metrics in a single request for an ALTO filtered cost map and endpoint cost map. In addition, it extends the constraints to further filter those maps by allowing an ALTO Client to specify a logical combination of tests on several cost metrics.

Extracted elements (21)

design-rationale §3.5

Only the Filtered Cost Map and Endpoint Cost Map Services are extended (not the full cost map) because full cost map resources are GET-mode requests, and a legacy ALTO Client cannot interpret 'multi-cost-types' in 'meta' or array-valued cost entries.

http, json

design-rationale §3.2

The multi-cost extension restricts to Filtered Cost Map and Endpoint Cost Map Services only (not full cost maps) to ensure compatibility with legacy ALTO Clients, relying on the base protocol requirement that ALTO Clients MUST ignore unknown fields.

http, json

design-rationale §5.4

Using an integer index '[#]' in constraint predicates to refer to cost types was chosen to minimize expression length for constraints combining multiple OR and AND expressions, following the shortest path from the constraint design in RFC 7285.

http, json

interoperability-note §3.3

Legacy ALTO Clients will ignore the 'max-cost-types' capability and send single-cost requests using 'cost-type'; the Server will respond with a legacy single-valued cost map. Multi-cost-aware Clients detect 'max-cost-types' and use 'multi-cost-types' instead.

http, json

interoperability-note §3.6.5

'testable-cost-type-names' and 'cost-constraints' are mutually exclusive in the IRD capabilities to prevent legacy Clients from issuing constraint tests on cost types that are not actually testable.

http, json

normative-requirement §4.1.1 MUST

Each name in 'testable-cost-type-names' MUST also be in 'cost-type-names', and if 'testable-cost-type-names' is present the 'cost-constraints' capability MUST NOT be true.

http, json

normative-requirement §4.1.1 MUST

If 'cost-constraints' is true, the resource MUST accept constraint tests on any cost type in 'cost-type-names', and the 'testable-cost-type-names' capability MUST NOT be present.

http, json

normative-requirement §4.1.3 MUST

In multi-cost responses, if a cost type is not available for a particular source/destination pair, the ALTO Server MUST use the JSON 'null' value for that array element; if none of the cost types are available, the Server MAY omit the entry entirely.

http, json

normative-requirement §4.1.2 MUST NOT

The Client MUST NOT use 'multi-cost-types' unless the resource's 'max-cost-types' capability exists and has a value greater than 0, and this field MUST NOT have more than 'max-cost-types' cost types.

http, json

normative-requirement §4.1.2 MUST

The Client MUST specify either 'cost-type' or 'multi-cost-types' but MUST NOT specify both. When placing a single cost request as in RFC 7285, a Client MUST use 'cost-type'.

http, json

normative-requirement §4.1.2 MUST NOT

The 'or-constraints' parameter MAY only be specified if the resource's 'max-cost-types' capability has a value greater than 0 and the resource allows constraint tests; it MUST NOT be specified if 'constraints' is also specified.

http, json

protocol-element §3.1

A multi-cost map extends the standard ALTO cost map by using JSON arrays as cost values instead of single numbers, with the 'multi-cost-types' field in 'meta' mapping array positions to cost metrics (e.g., [routingcost, hopcount]).

http, json

protocol-element §4.1.2

Extended constraint predicates take the form '[#] op value', where '#' is an optional zero-based index into 'testable-cost-types' (or 'multi-cost-types' if 'testable-cost-types' is absent), defaulting to index 0, enabling per-metric constraint tests.

http, json

protocol-element §4.1.3

In a multi-cost response, the 'meta' field sets 'cost-type' to {} (for backwards compatibility) and adds 'multi-cost-types' with the same value as the request's 'multi-cost-types' parameter; cost values are JSONArrays ordered to match 'multi-cost-types'.

http, json

protocol-element §4.1.1

The 'max-cost-types' capability is added to FilteredCostMapCapabilities and EndpointCostService capabilities; its presence signals multi-cost extension support, and its value N indicates the maximum number of cost types returnable per request.

http, json

protocol-element §4.1.2

The 'or-constraints' field is a JSONArray of JSONArrays of extended constraint predicate strings, interpreted as the logical OR of ANDs; it MUST NOT be specified together with 'constraints', and MUST NOT contain any empty inner array.

http, json

protocol-element §4.1.2

The ReqFilteredCostMap object is extended with optional fields: 'multi-cost-types' (array of CostType), 'testable-cost-types' (array of CostType), and 'or-constraints' (array of arrays of constraint predicate strings), alongside the existing 'cost-type' and 'constraints' fields.

http, json

protocol-element §4.1.1

The 'testable-cost-type-names' capability, added to FilteredCostMapCapabilities, restricts constraint tests to a named subset of cost types and MUST be a subset of 'cost-type-names'. It is mutually exclusive with 'cost-constraints: true'.

http, json

protocol-element §4.1.2

The 'testable-cost-types' request parameter lists cost types used only for constraint tests; if omitted, it defaults to the cost types in 'multi-cost-types' or 'cost-type'. This allows filtering by a metric without returning its values.

http, json

security-consideration §7

Queries for multiple cost metrics represent a stronger fingerprinting signal than single-metric queries, potentially leaking more information about the ALTO Client; however, linking individual queries via source IP address may already be possible.

privacy, security

security-consideration §7

The multi-cost extension tends to reduce on-the-wire data volume compared to multiple single-cost ALTO transactions, and multi-cost constraints further filter Server responses, moderating the risk of massive multi-cost requests.

security