rfc-8686

Application-Layer Traffic Optimization (ALTO) Cross-Domain Server Discovery

S. Kiesel, M. Stiemerling
date2020-02 streamIETF areaops wgalto statusPROPOSED STANDARD pages34 canonicalhttps://www.rfc-editor.org/rfc/rfc8686 doi10.17487/RFC8686
The goal of Application-Layer Traffic Optimization (ALTO) is to provide guidance to applications that have to select one or several hosts from a set of candidates capable of providing a desired resource. ALTO is realized by a client-server protocol. Before an ALTO client can ask for guidance, it needs to discover one or more ALTO servers that can provide suitable guidance. In some deployment scenarios, in particular if the information about the network topology is partitioned and distributed over several ALTO servers, it may be necessary to discover an ALTO server outside of the ALTO client's own network domain, in order to get appropriate guidance. This document details applicable scenarios, itemizes requirements, and specifies a procedure for ALTO cross-domain server discovery. Technically, the procedure specified in this document takes one IP address or prefix and a U-NAPTR Service Parameter (typically, "ALTO:https") as parameters. It performs DNS lookups (for NAPTR resource records in the "in-addr.arpa." or "ip6.arpa." trees) and returns one or more URIs of information resources related to that IP address or prefix.

Extracted elements (26)

design-rationale §A.4

A DNS-based approach was chosen over using the ALTO protocol itself (ALTO4ALTO) for cross-domain server discovery because the latter would require establishing a new registration administration authority.

dns

design-rationale §4.4

For Endpoint Cost Service queries with multiple sources or destinations, all queries should be sent to a single ALTO server (discovered via the single source or destination address) to ensure cost values are comparable, since 'routingcost' lacks a well-defined base unit across servers.

design-rationale §5.2.1

The number of candidate domain names (up to 4 for IPv4, up to 6 for IPv6) is a deliberate compromise between deployment flexibility (fine-grained per-IP records) and avoiding excess DNS load. It is not a design goal to expose prefix delegation structure to clients.

dns

design-rationale §1

The procedure uses DNS reverse trees ('in-addr.arpa.' and 'ip6.arpa.') because those authoritative for a given IP address or prefix are typically controlled by the ISP or organization that operates ALTO servers with accurate routing information for that space.

dns

interoperability-note §5.1.1

Resource-consumer-initiated discovery (ALTO requirement AR-32) is a special case of cross-domain discovery, but requires the client to first determine its public IP address using a protocol like STUN due to widespread NAT deployment; DHCP-based discovery is an alternative specified in RFC 7286.

nat

interoperability-note §5.2.2

The procedure is compatible with BCP 20 (RFC 2317) classless in-addr.arpa delegation for IPv4 prefixes shorter than /24. ISPs may publish NAPTR records at the /24 level even when BCP 20 delegations or no delegations are in use.

dns, ip

interoperability-note §5.1.3

When a resource consumer is behind one or more NATs, the discovery procedure will use the public IP of the outermost NAT as the lookup parameter. Using a private RFC 1918 address as the parameter requires correct DNS split-horizon and DNSSEC trust anchors to yield usable results.

nat, dns

normative-requirement §3.5 MAY

After all domain names have been tried at least once, the procedure MAY retry those domain names that had caused temporary lookup errors.

dns

normative-requirement §6.1 MUST

All implementations of the Cross-Domain ALTO Server Discovery Procedure MUST support DNSSEC or be able to use such functionality provided by the underlying operating system.

dns, security, crypto

normative-requirement §3.2 MUST

For an IPv4 address with prefix length L < 8, the procedure MUST abort and indicate an 'unsupported prefix length' error. For IPv6 with L < 32, it similarly aborts.

dns, ip

normative-requirement §3.4 SHOULD

If no matching U-NAPTR records are found at the primary lookup domain, the procedure SHOULD try further lookups using the domain names from column 4 of the lookup table in the indicated order.

dns

normative-requirement §5.1.2 SHOULD

Mobile resource consumers SHOULD query the resource directory again after a change of IP address, to get an optimized candidate list for the new IP address.

mobility

normative-requirement §6.1 SHOULD

Network operators that publish U-NAPTR resource records for the Cross-Domain ALTO Server Discovery Procedure SHOULD use DNSSEC to protect their subdomains of 'in-addr.arpa.' and/or 'ip6.arpa.'.

dns, security

normative-requirement §3.1 MUST

The ALTO Cross-Domain Server Discovery Procedure MUST support being called with any valid U-NAPTR Service Parameter, not just 'ALTO:https', to support future extensions.

dns, registry

normative-requirement §3.5 SHOULD

The ALTO Cross-Domain Server Discovery Procedure SHOULD inform its caller when DNS queries have failed due to temporary errors, noting that retrying later might yield better results.

dns

normative-requirement §3.4 MUST

The domain name from column 3 of the lookup table and the U-NAPTR Service Parameter SP MUST be used for a U-NAPTR lookup to obtain one or more ALTO IRD URIs.

dns

normative-requirement §3.5 SHOULD

When DNS lookups fail (including temporary errors), and further domain names remain to be tried, the procedure SHOULD immediately try the next domain name without waiting for retries.

dns

privacy-consideration §6.4

DNS queries during cross-domain ALTO server discovery can reveal to eavesdroppers that a client is using ALTO and which IP address it is optimizing traffic for. DNS over TLS (RFC 7858) and DNS over HTTPS (RFC 8484) can protect confidentiality of these queries.

privacy, dns, tls

protocol-element §3.2

Step 1 constructs a reverse DNS domain name from the input IP address: IPv4 addresses use the 'IN-ADDR.ARPA.' tree per RFC 1035 Section 3.5, IPv6 addresses use the 'IP6.ARPA.' tree per RFC 3596 Section 2.5.

dns, ip

protocol-element §3.3

Step 2 generates shortened domain names by progressively removing leading labels (octets for IPv4, nibbles for IPv6), producing up to four names (R32/R24/R16/R8) for IPv4 and up to six names (R128/R64/R56/R48/R40/R32) for IPv6.

dns, ip

protocol-element §3.1

The ALTO Cross-Domain Server Discovery Procedure takes two parameters: X (an IPv4 or IPv6 address or prefix in CIDR notation) and SP (a U-NAPTR Service Parameter, typically 'ALTO:https'). It returns one or more ALTO IRD URIs with order and preference values.

dns

security-consideration §6.2

An attacker could cause a denial-of-service against the ALTO discovery procedure or underlying DNS, preventing clients from discovering any ALTO server. Applications must be prepared to operate without ALTO guidance; operators should follow best practices to secure DNS and ALTO infrastructure.

security, dns

security-consideration §6.1

DNS record modification or spoofing could redirect ALTO clients to a wrong ALTO server, which may provide suboptimal or forged guidance, affect traffic distribution, or threaten user privacy. DNSSEC must be supported by all implementations and should be deployed by network operators to mitigate this threat.

dns, security, crypto

security-consideration §6.1

HTTPS-based transport (TLS) protects ALTO client-server communication after discovery, but TLS certificate validation cannot detect attacks against the U-NAPTR DNS lookups used during the discovery procedure itself; those records must be secured via DNSSEC.

tls, dns, security

state-machine §3.4

The discovery procedure sequentially performs DNS U-NAPTR lookups starting from the most-specific domain name (longest prefix) and falling back to shorter prefixes. It terminates successfully on first match, or unsuccessfully after exhausting all candidates from columns 3 and 4 of the lookup table.

dns

wire-format §3.4

U-NAPTR resource records in the 'in-addr.arpa.' or 'ip6.arpa.' trees carry the service parameter 'ALTO:https' and a regexp field mapping the domain name to an ALTO IRD URI, e.g., '!.*!https://alto1.example.net/ird!'. Order and preference fields indicate relative priority.

dns