<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no" ?>
<?rfc strict="no" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?rfc rfcedstyle="yes"?>
<rfc submissionType="IETF" category="std" consensus="yes" number="7286" 
    ipr="trust200902">
    <front>
        <title abbrev="ALTO Server Discovery">Application-Layer Traffic Optimization (ALTO) Server Discovery</title>
        
        <author fullname="Sebastian Kiesel" initials="S." surname="Kiesel">
            <organization abbrev="University of Stuttgart">
                University of Stuttgart Information Center
            </organization>
            <address>
                <postal>
                    <street>
                        Networks and Communication Systems Department
                    </street>
                    <street>Allmandring 30</street>
                    <city>Stuttgart</city>
                    <code>70550</code>
                    <country>Germany</country>
                </postal>
                <email>ietf-alto@skiesel.de</email>
                <uri>http://www.rus.uni-stuttgart.de/nks/</uri>
            </address>
        </author>
        
        <author fullname="Martin Stiemerling" initials="M." 
            surname="Stiemerling">
            <organization abbrev="NEC Europe Ltd.">
                NEC Laboratories Europe
            </organization>
            <address>
                <postal>
                    <street>Kurfuerstenanlage 36</street>
                    <code>69115</code>
                    <city>Heidelberg</city>
                    <country>Germany</country>
                </postal>
                <phone>+49 6221 4342 113</phone>
                <email>mls.ietf@gmail.com</email>
                <uri>http://ietf.stiemerling.org</uri>
            </address>
        </author>
        
        <author fullname="Nico Schwan" initials="N." surname="Schwan">
            <organization>Thales Deutschland</organization>
            <address>
                <postal>
                  <street>Thalesplatz 1</street>
                  <code>71254</code>
                  <city>Ditzingen</city>
                  <country>Germany</country>
                 </postal>
                <email>ietf@nico-schwan.de</email>
            </address>
        </author>
        
        <author fullname="Michael Scharf" initials="M." surname="Scharf">
            <organization>Alcatel-Lucent Bell Labs</organization>
            <address>
                <postal>
                    <street>Lorenzstrasse 10</street>
                    <code>70435</code>
                    <city>Stuttgart</city>
                    <country>Germany</country>
                </postal>
                <email>michael.scharf@alcatel-lucent.com</email>
            </address>
        </author>
        
        <author fullname="Haibin Song" initials="H." surname="Song">
            <organization>Huawei</organization>
            <address>
                <email>haibin.song@huawei.com</email>
            </address>
        </author>
        
        <date month="November" year="2014" />
        
        <area>TSV</area>
        
        <workgroup>ALTO</workgroup>
        <keyword>ALTO</keyword>
        <keyword>ALTO server discovery</keyword>

        
        <abstract>
            <t>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.
            </t>

            <t>This document specifies a procedure for resource-consumer-initiated ALTO server discovery, which can be used if the
                ALTO client is embedded in the resource consumer.
            </t>
        </abstract>

    </front>


    <middle>
        <section title="Introduction">
            <t>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 <xref target="RFC5693"/>.
                ALTO is realized by a client-server protocol; see
                requirement AR-1 in <xref target="RFC6708"/>. Before
                an ALTO client can ask for guidance it needs to discover one
                or more ALTO servers that can provide guidance to this
                specific client.
            </t>
            
            <t>This document specifies a procedure for resource-consumer-initiated ALTO server discovery, which can be used if the
                ALTO client is embedded in the resource consumer. In other
                words, this document meets requirement AR-32 in 
                <xref target="RFC6708"/> while AR-33 is out of scope.
                A different approach, which tries to meet requirement AR-33,
                i.e., third-party ALTO server discovery, is addressed in
                <xref target="DISC"/>.
            </t>
            
            <t>A more detailed discussion of various options on where to
                place the functional entities comprising the overall ALTO
                architecture can be found in 
                <xref target="ALTO-DEPLOY"/>.
            </t>
            
            <t>The ALTO protocol specification
                <xref target="RFC7285"/> is based on
                HTTP and expects the discovery procedure to yield the
                HTTP(S) URI of an ALTO server's Information Resource
                Directory (IRD). Therefore, this procedure is based on a
                combination of the Dynamic Host Configuration Protocol
                (DHCP) or local configuration and URI-enabled Naming Authority
                Pointer (U-NAPTR) resource records in the Domain Name System
                (DNS), in order to deliver such URIs.  
            </t>
       <section title="Terminology and Requirements Language">
            <t>This document makes use of the ALTO terminology defined in
                <xref target="RFC5693"/>.
            </t>
            
            <t>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 <xref target="RFC2119"> RFC 2119 </xref>.
            </t>
        </section>
            
        </section>
        
        
        <section anchor="overview" 
            title="ALTO Server Discovery Procedure Overview">
            <t>
                The ALTO protocol specification 
                <xref target="RFC7285"/> expects that the
                ALTO discovery procedure yields the HTTP(S) URI <xref target="RFC7230" /> of the ALTO
                server's Information Resource Directory (IRD), which gives
                further information about the capabilities and services
                provided by that ALTO server.
            </t>
            
            <t>On hosts with more than one interface or address family
                (IPv4/v6), the ALTO server discovery procedure has to be run
                for every interface and address family. For more details see
                <xref target="sec.multihoming"/>.
            </t>
            
            
            <t>The ALTO server discovery procedure is performed in two steps:
                <list style="numbers">
                    <t>One DNS domain name is retrieved for each
                        combination of interface and address family, either
                        by local configuration (e.g., manual input into a
                        menu or configuration file) or by means of DHCP.
                    </t>
                    <t>These DNS domain names are used for U-NAPTR lookups
                        yielding one or more URIs.  Further DNS lookups may
                        be necessary to determine the ALTO server's IP
                        address(es).
                    </t>
                </list>
            </t>
            
            <t>The primary means for retrieving the DNS domain name is
                DHCP. However, there may be situations where DHCP is not
                available or does not return a suitable value.  Furthermore,
                there might be situations in which the user wishes to
                override the value that could be retrieved from DHCP. In
                these situations, local configuration may be used. Consequently,
                the algorithm first checks for a locally configured override, 
                before it tries to retrieve a value from DHCP.
            </t>
            
            <t>Typically, but not necessarily, the DNS domain name is the
                domain name in which the client is located, i.e., a PTR
                lookup on the client's IP address (according to 
                <xref target="RFC1035"/>, Section 3.5 for IPv4 or 
                <xref target="RFC3596"/>, Section 2.5 for IPv6) would yield
                a similar name. However, due to the widespread use of
                Network Address Translation (NAT), trying to determine the
                DNS domain name through a PTR lookup on an interface's IP
                address is not recommended for resource consumer initiated
                ALTO server discovery (see also <xref target="RFC3424"/>).
            </t>
        </section>
        
        <section anchor="sec.UNAPTR_URL" 
            title="ALTO Server Discovery Procedure Specification">
            <t>
                As already outlined in <xref target="overview"/>, the
                ALTO server discovery procedure is performed for every
                address family on every interface the application considers
                for communicating with resource providers.
            </t>
            
            <t>First, the algorithm checks for a locally configured domain
                name, as specified in 
                <xref target="sec.dnsdomainname.opt1"/>. If no such
                name was configured, it tries to retrieve one from DHCP, as
                specified in <xref target="sec.dnsdomainname.opt2"/>.
                If still no domain name could be found, the procedure has
                failed and terminates with an appropriate error code.
            </t>
            
            <t>If one or more domain names were found, they will be used
                as U-NAPTR/DDDS (URI-Enabled NAPTR/Dynamic Delegation
                Discovery Service) <xref target="RFC4848"/> application-unique strings for a DNS lookup, as specified in 
                <xref target="sec.UNAPTR"/>.
            </t>
            
            <section anchor="sec.dnsdomainname" 
                title="Step 1: Retrieving the Domain Name">
                <section anchor="sec.dnsdomainname.opt1" 
                    title="Step 1, Option 1: Local Configuration">
                    <t>The preferred way to acquire a domain name related
                        to an interface's point of network attachment is the
                        use of DHCP
                        (see <xref target="sec.dnsdomainname.opt2"/>).
                        However, in some network deployment scenarios, there
                        is no DHCP server available. Furthermore, a user may
                        want to use an ALTO service instance provided by an
                        entity that is not the operator of the underlying IP
                        network.  Therefore, we allow the user to specify a
                        DNS domain name, for example, in a configuration file
                        option.  An example domain name is:
                        <list style="hanging">
                            <t>my-alternative-alto-provider.example.org</t>
                        </list>
                    </t>
                    
                    <t>Implementations MAY give the user the opportunity
                        (e.g., by means of configuration file options or
                        menu items) to specify an individual domain name for
                        every address family on every interface.
                        Implementations SHOULD allow the user to specify a
                        default name that is used if no more specific name
                        has been configured.
                    </t>
                    
                </section>
                
                <section anchor="sec.dnsdomainname.opt2" 
                    title="Step 1, Option 2: DHCP">
                    <t>Network operators may provide the domain name
                        to be used for service discovery within an access
                        network using DHCP.
                    </t>
                    
                    <t>
                        <xref target="RFC5986">RFC 5986</xref> defines DHCP
                        IPv4 and IPv6 access network domain name options to
                        identify a domain name that is suitable for service
                        discovery within the access network.
                        <xref target="RFC2132">RFC 2132</xref> defines the
                        DHCP IPv4 domain name option. While this option is
                        less suitable, it still may be useful if the 
                        RFC 5986 option is not available.
                    </t> 
                    
                    <t>For IPv6, the ALTO server discovery procedure MUST
                        try to retrieve DHCP option 
                        57 (OPTION_V6_ACCESS_DOMAIN).  If no such option can
                        be retrieved the procedure fails for this interface.
                        For IPv4, the ALTO server discovery procedure MUST
                        try to retrieve DHCP option 
                        213 (OPTION_V4_ACCESS_DOMAIN).  If no such option
                        can be retrieved, the procedure SHOULD try to
                        retrieve option 15 (Domain Name). If neither option
                        can be retrieved, the procedure fails for this
                        interface.  If a result can be retrieved, it will be
                        used as an input for the next step (U-NAPTR
                        resolution).  One example result could be:
                        <list style="hanging">
                            <t>example.net</t>
                        </list>
                    </t>
                </section>
            </section>


            <section anchor="sec.UNAPTR" title="Step 2: U-NAPTR Resolution">
                <t> The first step of the ALTO server discovery procedure 
                    (see <xref target="sec.dnsdomainname"/>) retrieved one
                    or -- in case of multiple interfaces and/or IPv4/v6 dual-stack operation -- several domain names, which will be
                    used as U-NAPTR/DDDS (URI-Enabled NAPTR/Dynamic
                    Delegation Discovery Service) <xref target="RFC4848"/>
                    application unique strings. An example is:
                    <list style="hanging">
                        <t>example.net</t>
                    </list>
                </t>
                
                <t>In the second step, the ALTO server discovery procedure
                    uses a U-NAPTR <xref target="RFC4848"/> lookup
                    with the "ALTO" Application Service Tag and either the
                    "http" or the "https" Application Protocol Tag to obtain
                    one or more URIs (indicating protocol, host, and possibly
                    path elements) for the ALTO server's Information
                    Resource Directory.  In this document, only the HTTP and
                    HTTPS URI schemes are defined, as the ALTO protocol
                    specification defines the access over both protocols,
                    but no other <xref target="RFC7285"/>.
                    Note that the result can be any valid HTTP(S) URI.
                </t>
                
                <t>The following two U-NAPTR resource records can be used
                    for mapping "example.net" to the HTTPS URIs 
                    "https://alto1.example.net/ird" and 
                    "https://alto2.example.net/ird", with the former being
                    preferred.
                    <figure>
                        <artwork><![CDATA[
    example.net.

    IN NAPTR 100  10   "u"    "ALTO:https"
         "!.*!https://alto1.example.net/ird!"  ""

    IN NAPTR 100  20   "u"    "ALTO:https"
         "!.*!https://alto2.example.net/ird!"  ""

]]></artwork>
                    </figure>
                </t>
                
                <t>If no ALTO-specific U-NAPTR records can be retrieved,
                    the discovery procedure fails for this domain name (and
                    the corresponding interface and IP protocol version).
                    If further domain names retrieved by Step 1 are known,
                    the discovery procedure may perform the corresponding
                    U-NAPTR lookups immediately.  However, before retrying a
                    lookup that has failed, a client MUST wait a time period
                    that is appropriate for the encountered error (NXDOMAIN,
                    timeout, etc.).
                </t>
            </section>
        </section>
        
        
        
        <section title="Deployment Considerations">
            
            <section title="Issues with Home Gateways">
                <t><xref target="sec.dnsdomainname.opt2"/> describes the
                    usage of a DHCP option that provides a means for the
                    network operator of the network in which the ALTO client
                    is located to provide a DNS domain name.  However, this
                    assumes that this particular DHCP option is correctly
                    passed from the DHCP server to the actual host with the
                    ALTO client, and that the particular host understands
                    this DHCP option. This memo assumes the client to be
                    able to understand the proposed DHCP option; otherwise,
                    there is no further use of the DHCP option, but the
                    client has to use the other proposed mechanisms.
                </t>
                
                <t>There are well-known issues with the handling of DHCP
                    options in home gateways. One issue is that unknown DHCP
                    options are not passed through some home gateways,
                    effectively eliminating the DHCP option. 
                </t>
                
                <t>Another well-known issue is the use of home-gateway-specific DNS domain names that "override" the DNS
                    domain name provided by the network operator. For
                    instance, a host behind a home gateway may receive a DNS
                    domain name ".local" instead of "example.net". In
                    general, this domain name is not usable for the server
                    discovery procedure, unless a DNS server in the home
                    gateway resolves the corresponding NAPTR lookup
                    correctly, e.g., by means of a DNS split horizon
                    approach.
                </t>
            </section>

            <section anchor="sec.multihoming" 
                title="Issues with Multihoming, Mobility, and Changing IP Addresses">
                
                
                <t>If the user decides to enter only one (default) DNS domain
                    name in the local configuration facility (see 
                    <xref target="sec.dnsdomainname.opt1"/>), only one set
                    of ALTO servers will be discovered, irrespectively of
                    multihoming and mobility. Particularly in mobile
                    scenarios, this can lead to undesirable results.
                </t>
                
                <t>The DHCP-based discovery method can discover different
                    sets of ALTO servers for each interface and address
                    family (i.e., IPv4/v6). In general, if a client wishes
                    to communicate using one of its interfaces and using a
                    specific IP address family, it SHOULD query the ALTO
                    server or servers that have been discovered for this specific
                    interface and address family.  How to select an
                    interface and IP address family as well as how to
                    compare results returned from different ALTO servers are
                    out of the scope of this document.
                </t>
                
                <t>A change of the IP address at an interface invalidates
                    the result of the ALTO server discovery procedure. For
                    instance, if the IP address assigned to a mobile host
                    changes due to host mobility, it is required to re-run
                    the ALTO server discovery procedure without relying on
                    earlier gained information.
                </t>
                
                <t>There are several challenges with DNS on hosts with
                    multiple interfaces <xref target="RFC6418"/>, which can
                    affect the ALTO server discovery. If the DNS resolution
                    is performed on the wrong interface, it can	return an
                    ALTO server that could provide suboptimal or wrong
                    guidance. Finding the best ALTO server for
                    multi-interfaced hosts is outside the scope of this
                    document.
                </t>
                
                <t>When using Virtual Private Network (VPN) connections,
                    there is usually no DHCP. The user has to enter the DNS
                    domain name in the local configuration facility. 
                    For good optimization results, a
                    DNS domain name corresponding to the VPN concentrator,
                    not corresponding to the user's current location, has to
                    be entered. Similar considerations apply for Mobile IP.
                </t>
                
            </section>
        </section>


        <section title="IANA Considerations">
            
            <t>IANA has registered the following U-NAPTR 
                <xref target="RFC4848"/> 
                application service tag for ALTO: 
                <list style="hanging">
                    <t hangText="Application Service Tag:">ALTO</t>
                    
                    <t hangText="Intended usage:">
                        see <xref target="RFC5693"/>  or:
                        "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."
                    </t>
                    
                    <t hangText="Defining Publication:">The specification
                        contained within this document
                    </t>
                    
                    <t hangText="Contact information:">The authors of this
                        document
                    </t>
                    
                    <t hangText="Author/Change controller:">The IESG</t>
                    
                    <t hangText="Interoperability considerations:">No 
                        interoperability issues are known or expected. This
                        tag is to be registered specifically for ALTO, which
                        is a new application without any legacy deployments.
                    </t>
                    <t hangText="Security considerations:"> see 
                        <xref target="seccons"/> of this document.
                    </t>
                    
                    <t hangText="Related publications:">This document
                        specifies a procedure for discovering an HTTP or
                       HTTPS URI of an ALTO server.  HTTP
                        and HTTPS are specified in
                        <xref target="RFC7230"/>.  The HTTP(S)-based ALTO
                         protocol is specified in 
                         <xref target="RFC7285"/>.
                    </t>
                    
                </list>
            </t>
            <t>
                  <vspace blankLines="3"/>
            </t>
            <t><list style="hanging">
                    
                    <t hangText="Application Protocol Tag:">
                        This document specifies how to use the application
                        service tag "ALTO" with the application protocol
                       tags "http" and "https", which have
                        already been registered in the relevant IANA
                        registry. Therefore, IANA is not requested by this
                        document to register any new application protocol
                        tag.
                    </t>
                </list>
            </t>
        </section>


        <section anchor="seccons" title="Security Considerations">
            
            <t>A high-level discussion of security issues related to ALTO
                is part of the ALTO problem statement 
                <xref target="RFC5693"/>.  A classification of unwanted
                information disclosure risks, as well as specific
                security-related requirements can be found in the ALTO
                requirements document <xref target="RFC6708"/>.
            </t>
            
            <t>The remainder of this section focuses on security threats
                and protection mechanisms for the ALTO server discovery
                procedure as such.  Once the ALTO server's URI has been
                discovered and the communication between the ALTO client and
                the ALTO server starts, the security threats and protection
                mechanisms discussed in the ALTO protocol specification 
                <xref target="RFC7285"/> apply.
            </t>
            
            <section anchor="sec.sec.integrity" 
                title="Integrity of the ALTO Server's URI">
                <t><list style="hanging">
                        <t hangText="Scenario Description">
                            <vspace blankLines="0" />
                            An attacker could compromise the ALTO server
                            discovery procedure or infrastructure in a way
                            that ALTO clients would discover a "wrong" ALTO
                            server URI.
                        </t>
                        <t hangText="Threat Discussion">
                            <vspace blankLines="0" />
                            This is probably the most serious security
                            concern related to ALTO server discovery. The
                            discovered "wrong" ALTO server might not be able
                            to give guidance to a given ALTO client at all,
                            or it might give suboptimal or forged
                            information. In the latter case, an attacker
                            could try to use ALTO to affect the traffic
                            distribution in the network or the performance
                            of applications (see also Section 15.1. of 
                            <xref target="RFC7285"/>).
                            Furthermore, a hostile ALTO server could
                            threaten user privacy (see also Section 5.2.1,
                            case (5a) in <xref target="RFC6708"/>).
                        </t>
                        <t>
                            However, it should also be noted that, if an
                            attacker was able to compromise DHCP and/or DNS
                            servers used for ALTO server discovery (see
                            below), (s)he could also launch significantly
                            more serious other attacks (e.g., redirecting
                            various application protocols).
                        </t>
                        <t hangText="Protection Strategies and Mechanisms">
                            <vspace blankLines="0" />
                            The ALTO server discovery procedure consists of
                            three building blocks (local configuration,
                            DHCP, and DNS) and each of them is a possible
                            attack vector.
                        </t>
                        <t>
                            The problem of users possibly following "bad
                            advice" that tricks them into manually
                            configuring unsuitable ALTO servers cannot be
                            solved by technical means and is out of the
                            scope of this document.
                        </t>
                        <t>
                            Due to the nature of the protocol, DHCP is
                            rather prone to attacks. As already mentioned,
                            an attacker that is able to inject forged DHCP
                            replies into the network may do significantly
                            more harm than only configuring a wrong ALTO
                            server. Best current practices for safely
                            operating DHCP should be followed.
                        </t>
                        <t>
                            A further threat is the possible alteration of
                            the DNS records used in U-NAPTR resolution.  If
                            an attacker was able to modify or spoof any of
                            the DNS records used in the DDDS resolution,
                            this URI could be replaced by a forged URI. The
                            application of DNS security (DNSSEC)
                            <xref target="RFC4033"/> provides a means to
                            limit attacks that rely on modification of the
                            DNS records used in U-NAPTR resolution.
                            Security considerations specific to U-NAPTR are
                            described in more detail in 
                            <xref target="RFC4848"/>.
                        </t>
                        <t>
                            A related risk is the impersonation of the ALTO
                            server (i.e., attacks after the correct URI has
                            been discovered).  

This threat and protection
                            strategies are discussed in Section 15.1 of 
                            <xref target="RFC7285"/>.
                            Note that if Transport Layer Security (TLS) is used to protect ALTO, the
                            server certificate will contain the host name
                            (CN).  Consequently, only the host part of the
                            HTTPS URI will be authenticated, i.e., the
                            result of the ALTO server discovery procedure.
                            The U-NAPTR based mapping within the ALTO server
                            discovery procedure needs to be secured as
                            described above, e.g., by using DNSSEC.
                        </t>
                        <t>
                            In addition to active protection mechanisms,
                            users and network operators can monitor
                            application performance and network traffic
                            patterns for poor performance or
                            abnormalities.  If it turns out that relying on
                            the guidance of a specific ALTO server does not
                            result in better-than-random outcomes, the use


                            of the ALTO server may be discontinued (see also
                            Section 15.2 of
                            <xref target="RFC7285"/>).
                        </t>
                    </list>
                </t>
            </section>
            
            
            <section title="Availability of the ALTO Server Discovery Procedure">
                <t><list style="hanging">
                        <t hangText="Scenario Description">
                            <vspace blankLines="0" />
                            An attacker could compromise the ALTO server
                            discovery procedure or infrastructure in a way
                            that ALTO clients would not be able to discover
                            any ALTO server.
                        </t>
                        <t hangText="Threat Discussion">
                            <vspace blankLines="0" />
                            If no ALTO server can be discovered (although a
                            suitable one exists), applications have to make
                            their decisions without ALTO guidance. As ALTO
                            could be temporarily unavailable for many
                            reasons, applications must be prepared to do so.
                            However, the resulting application performance
                            and traffic distribution will correspond to a
                            deployment scenario without ALTO.
                        </t>
                        <t hangText="Protection Strategies and Mechanisms">
                            <vspace blankLines="0" />
                            Operators should follow best current practices
                            to secure their DHCP, DNS, and ALTO (see

                            Section 15.5 of 
                            <xref target="RFC7285"/>)
                            servers against Denial-of-Service (DoS) attacks.
                        </t>
                    </list>
                </t>
            </section>
            
            <section title="Confidentiality of the ALTO Server's URI">
                <t><list style="hanging">
                        <t hangText="Scenario Description">
                            <vspace blankLines="0"/>
                            An unauthorized party could invoke the ALTO
                            server discovery procedure, or intercept
                            discovery messages between an authorized ALTO
                            client and the DHCP and DNS servers, in order to
                            acquire knowledge of the ALTO server's URI.
                        </t>
                        <t hangText="Threat Discussion">
                            <vspace blankLines="0" />
                            In the ALTO use cases that have been described
                            in the ALTO problem statement 
                            <xref target="RFC5693"/> and/or discussed in the
                            ALTO working group, the ALTO server's URI as
                            such has always been considered as public
                            information that does not need protection of
                            confidentiality.
                        </t>
                        <t hangText="Protection Strategies and Mechanisms">
                            <vspace blankLines="0" />
                            No protection mechanisms for this scenario have
                            been provided, as it has not been identified as
                            a relevant threat. However, if a new use case is
                            identified that requires this kind of
                            protection, the suitability of this ALTO server
                            discovery procedure as well as possible security
                            extensions have to be re-evaluated thoroughly.
                        </t>
                    </list>
                </t>
            </section>
            
            
            <section title="Privacy for ALTO Clients">
                <t><list style="hanging">
                        <t hangText="Scenario Description">
                            <vspace blankLines="0"/>
                            An unauthorized party could intercept discovery
                            messages between an ALTO client and the DHCP and
                            DNS servers, and thereby find out the fact that
                            said ALTO client uses (or at least tries to use)
                            the ALTO service.
                        </t>
                        <t hangText="Threat Discussion">
                            <vspace blankLines="0" />
                            In the ALTO use cases that have been described
                            in the ALTO problem statement 
                            <xref target="RFC5693"/> and/or discussed in the
                            ALTO working group, this scenario has not been
                            identified as a relevant threat.
                        </t>
                        <t hangText="Protection Strategies and Mechanisms">
                            <vspace blankLines="0" />
                            No protection mechanisms for this scenario have
                            been provided, as it has not been identified as
                            a relevant threat. However, if a new use case is
                            identified that requires this kind of
                            protection, the suitability of this ALTO server
                            discovery procedure as well as possible security
                            extensions have to be re-evaluated thoroughly.
                        </t>
                    </list>
                </t>
            </section>
        </section>
        
    </middle>
    
    <back>
        <references title="Normative References">

 <!--           <?rfc include="reference.I-D.ietf-alto-protocol" ?>  -->
<reference anchor='RFC7285' target='http://www.rfc-editor.org/info/rfc7285'>
<front>
<title>Application-Layer Traffic Optimization (ALTO) Protocol</title>

<author initials='R' surname='Alimi' fullname='Richard Alimi'>
    <organization />
</author>

<author initials='R' surname='Penno' fullname='Reinaldo Penno'>
    <organization />
</author>

<author initials='Y' surname='Yang' fullname='Yang Yang'>
    <organization />
</author>

<author initials='S' surname='Kiesel' fullname='Sebastian Kiesel'>
    <organization />
</author>

<author initials='S' surname='Previdi' fullname='Stefano Previdi'>
    <organization />
</author>
<author initials='W' surname='Roome' fullname='Wendy Roome'>
    <organization />
</author>
<author initials='S' surname='Shalunov' fullname='Stanislav Shalunov'>
    <organization />
</author>
<author initials='R' surname='Woundy' fullname='Richard Woundy'>
    <organization />
</author>

<date month='September' year='2014' />

</front>

<seriesInfo name='RFC' value='7285' />

</reference>






<reference anchor='RFC2119' target='http://www.rfc-editor.org/info/rfc2119'>

<front>
<title abbrev='RFC Key Words'>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='Scott Bradner'>
<organization>Harvard University</organization>
<address>
<postal>
<street>1350 Mass. Ave.</street>
<street>Cambridge</street>
<street>MA 02138</street></postal>
<phone>- +1 617 495 3864</phone>
<email>sob@harvard.edu</email></address></author>
<date year='1997' month='March' />
<area>General</area>
<keyword>keyword</keyword>
<abstract>
<t>
   In many standards track documents several words are used to signify
   the requirements in the specification.  These words are often
   capitalized.  This document defines these words as they should be
   interpreted in IETF documents.  Authors who follow these guidelines
   should incorporate this phrase near the beginning of their document:

<list>
<t>
      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.
</t></list></t>
<t>
   Note that the force of these words is modified by the requirement
   level of the document in which they are used.
</t></abstract></front>

<seriesInfo name='BCP' value='14' />
<seriesInfo name='RFC' value='2119' />
<format type='TXT' octets='4723' target='http://www.rfc-editor.org/rfc/rfc2119.txt' />
<format type='HTML' octets='17970' target='http://xml.resource.org/public/rfc/html/rfc2119.html' />
<format type='XML' octets='5777' target='http://xml.resource.org/public/rfc/xml/rfc2119.xml' />
</reference>


<reference anchor='RFC2132' target='http://www.rfc-editor.org/info/rfc2132'>

<front>
<title abbrev='DHCP Options'>DHCP Options and BOOTP Vendor Extensions</title>
<author initials='S.' surname='Alexander' fullname='Steve Alexander'>
<organization>Silicon Graphics, Inc.</organization>
<address>
<postal>
<street>2011 N. Shoreline Boulevard</street>
<street>Mailstop 510</street>
<street>Mountain View</street>
<street>CA 94043-1389</street></postal>
<phone>(415) 933-6172</phone>
<email>sca@engr.sgi.com</email></address></author>
<author initials='R.' surname='Droms' fullname='Ralph Droms'>
<organization>Bucknell University</organization>
<address>
<postal>
<street>Lewisburg</street>
<street>PA 17837</street></postal>
<phone>(717) 524-1145</phone>
<email>droms@bucknell.edu</email></address></author>
<date year='1997' month='March' />
<keyword>bootstrap protocol</keyword>
<keyword>dynamic host configuration protocol</keyword>
<abstract>
<t>
   The Dynamic Host Configuration Protocol (DHCP)  provides a
   framework for passing configuration information to hosts on a TCP/IP
   network.  Configuration parameters and other control information are
   carried in tagged data items that are stored in the &apos;options&apos; field
   of the DHCP message.  The data items themselves are also called
   &quot;options.&quot;
</t>
<t>
   This document specifies the current set of DHCP options.  Future
   options will be specified in separate RFCs.  The current list of
   valid options is also available in ftp://ftp.isi.edu/in-
   notes/iana/assignments .
</t>
<t>
   All of the vendor information extensions defined in RFC 1497  may
   be used as DHCP options.  The definitions given in RFC 1497 are
   included in this document, which supersedes RFC 1497.  All of the
   DHCP options defined in this document, except for those specific to
   DHCP as defined in section 9, may be used as BOOTP vendor information
   extensions.
</t></abstract></front>

<seriesInfo name='RFC' value='2132' />
<format type='TXT' octets='63670' target='http://www.rfc-editor.org/rfc/rfc2132.txt' />
<format type='XML' octets='74818' target='http://xml.resource.org/public/rfc/xml/rfc2132.xml' />
</reference>



<reference anchor='RFC4848' target='http://www.rfc-editor.org/info/rfc4848'>

<front>
<title>Domain-Based Application Service Location Using URIs and the Dynamic Delegation Discovery Service (DDDS)</title>
<author initials='L.' surname='Daigle' fullname='L. Daigle'>
<organization /></author>
<date year='2007' month='April' />
<abstract>
<t>The purpose of this document is to define a new, straightforward Dynamic Delegation Discovery Service (DDDS) application to allow mapping of domain names to URIs for particular application services and protocols.  Although defined as a new DDDS application, dubbed U-NAPTR, this is effectively an extension of the Straightforward NAPTR (S-NAPTR) DDDS Application. [STANDARDS-TRACK]</t></abstract></front>

<seriesInfo name='RFC' value='4848' />
<format type='TXT' octets='19341' target='http://www.rfc-editor.org/rfc/rfc4848.txt' />
</reference>






<reference anchor='RFC5986' target='http://www.rfc-editor.org/info/rfc5986'>

<front>
<title>Discovering the Local Location Information Server (LIS)</title>
<author initials='M.' surname='Thomson' fullname='M. Thomson'>
<organization /></author>
<author initials='J.' surname='Winterbottom' fullname='J. Winterbottom'>
<organization /></author>
<date year='2010' month='September' />
<abstract>
<t>Discovery of the correct Location Information Server (LIS) in the local access network is necessary for Devices that wish to acquire location information from the network.  A method is described for the discovery of a LIS in the access network serving a Device.  Dynamic Host Configuration Protocol (DHCP) options for IP versions 4 and 6 are defined that specify a domain name.  This domain name is then used as input to a URI-enabled NAPTR (U-NAPTR) resolution process. [STANDARDS-TRACK]</t></abstract></front>

<seriesInfo name='RFC' value='5986' />
<format type='TXT' octets='34450' target='http://www.rfc-editor.org/rfc/rfc5986.txt' />
</reference>



        </references>
        
        <references title="Informative References">
  <!--          <?rfc include="reference.I-D.ietf-alto-deployments" ?>; ID Exists -->
<reference anchor='ALTO-DEPLOY'>
<front>
<title>ALTO Deployment Considerations</title>

<author initials='M' surname='Stiemerling' fullname='Martin Stiemerling'>
    <organization />
</author>

<author initials='S' surname='Kiesel' fullname='Sebastian Kiesel'>
    <organization />
</author>

<author initials='S' surname='Previdi' fullname='Stefano Previdi'>
    <organization />
</author>

<author initials='M' surname='Scharf' fullname='Michael Scharf'>
    <organization />
</author>

<date month='July' day='3' year='2014' />

<abstract><t>Many Internet applications are used to access resources such as pieces of information or server processes that are available in several equivalent replicas on different hosts.  This includes, but is not limited to, peer-to-peer file sharing applications.  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, which are able to provide a desired resource.  This memo discusses deployment related issues of ALTO.  It addresses different use cases of ALTO such as peer-to-peer file sharing and CDNs, security considerations, recommendations for network administrators, and also guidance for application designers using ALTO.</t></abstract>

</front>

<seriesInfo name='Work in Progress,' value='draft-ietf-alto-deployments-10' />

</reference>


  <!--          <?rfc include="reference.I-D.kist-alto-3pdisc" ?>; Expired -->
<reference anchor='DISC'>
<front>
<title>Third-Party ALTO Server Discovery (3pdisc)</title>

<author initials='S' surname='Kiesel' fullname='Sebastian Kiesel'>
    <organization />
</author>

<author initials='K' surname='Krause' fullname='Kilian Krause'>
    <organization />
</author>

<author initials='M' surname='Stiemerling' fullname='Martin Stiemerling'>
    <organization />
</author>

<date month='January' day='13' year='2014' />

<abstract><t>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.  This document specifies a procedure for third-party ALTO server discovery, which can be used if the ALTO client is not co-located with the actual resource consumer, but instead embedded in a third party such as a peer-to-peer tracker.  Technically, the algorithm specified in this document takes one IP address and a U-NAPTR Service Parameter (i.e., "ALTO:http" or "ALTO:https") as parameters.  It performs several DNS lookups (for U-NAPTR and SOA resource records) and returns one or more URI(s) of information resources related to that IP address.</t></abstract>

</front>

<seriesInfo name='Work in Progress,' value='draft-kist-alto-3pdisc-05' />

</reference>

      
<reference anchor='RFC1035' target='http://www.rfc-editor.org/info/rfc1035'>

<front>
<title abbrev='Domain Implementation and Specification'>Domain names - implementation and specification</title>
<author initials='P.' surname='Mockapetris' fullname='P. Mockapetris'>
<organization>USC/ISI</organization>
<address>
<postal>
<street>4676 Admiralty Way</street>
<city>Marina del Rey</city>
<region>CA</region>
<code>90291</code>
<country>US</country></postal>
<phone>+1 213 822 1511</phone></address></author>
<date year='1987' day='1' month='November' /></front>

<seriesInfo name='STD' value='13' />
<seriesInfo name='RFC' value='1035' />
<format type='TXT' octets='125626' target='http://www.rfc-editor.org/rfc/rfc1035.txt' />
</reference>





<reference anchor='RFC3424' target='http://www.rfc-editor.org/info/rfc3424'>

<front>
<title>IAB Considerations for UNilateral Self-Address Fixing (UNSAF) Across Network Address Translation</title>
<author initials='L.' surname='Daigle' fullname='L. Daigle'>
<organization /></author>
<author>
<organization>IAB</organization></author>
<date year='2002' month='November' />
<abstract>
<t>As a result of the nature of Network Address Translation (NAT) Middleboxes, communicating endpoints that are separated by one or more NATs do not know how to refer to themselves using addresses that are valid in the addressing realms of their (current and future) peers.  Various proposals have been made for "UNilateral Self-Address Fixing (UNSAF)" processes.  These are processes whereby some originating endpoint attempts to determine or fix the address (and port) by which it is known to another endpoint - e.g., to be able to use address data in the protocol exchange, or to advertise a public address from which it will receive connections.  This document outlines the reasons for which these proposals can be considered at best as short term fixes to specific problems and the specific issues to be carefully evaluated before creating an UNSAF proposal.  This memo provides information for the Internet community.</t></abstract></front>

<seriesInfo name='RFC' value='3424' />
<format type='TXT' octets='18165' target='http://www.rfc-editor.org/rfc/rfc3424.txt' />
</reference>






<reference anchor='RFC3596' target='http://www.rfc-editor.org/info/rfc3596'>

<front>
<title>DNS Extensions to Support IP Version 6</title>
<author initials='S.' surname='Thomson' fullname='S. Thomson'>
<organization /></author>
<author initials='C.' surname='Huitema' fullname='C. Huitema'>
<organization /></author>
<author initials='V.' surname='Ksinant' fullname='V. Ksinant'>
<organization /></author>
<author initials='M.' surname='Souissi' fullname='M. Souissi'>
<organization /></author>
<date year='2003' month='October' />
<abstract>
<t>This document defines the changes that need to be made to the Domain Name System (DNS) to support hosts running IP version 6 (IPv6).  The changes include a resource record type to store an IPv6 address, a domain to support lookups based on an IPv6 address, and updated definitions of existing query types that return Internet addresses as part of additional section processing.  The extensions are designed to be compatible with existing applications and, in particular, DNS implementations themselves. [STANDARDS-TRACK]</t></abstract></front>

<seriesInfo name='RFC' value='3596' />
<format type='TXT' octets='14093' target='http://www.rfc-editor.org/rfc/rfc3596.txt' />
</reference>


         



<reference anchor='RFC4033' target='http://www.rfc-editor.org/info/rfc4033'>

<front>
<title>DNS Security Introduction and Requirements</title>
<author initials='R.' surname='Arends' fullname='R. Arends'>
<organization /></author>
<author initials='R.' surname='Austein' fullname='R. Austein'>
<organization /></author>
<author initials='M.' surname='Larson' fullname='M. Larson'>
<organization /></author>
<author initials='D.' surname='Massey' fullname='D. Massey'>
<organization /></author>
<author initials='S.' surname='Rose' fullname='S. Rose'>
<organization /></author>
<date year='2005' month='March' />
<abstract>
<t>The Domain Name System Security Extensions (DNSSEC) add data origin authentication and data integrity to the Domain Name System.  This document introduces these extensions and describes their capabilities and limitations.  This document also discusses the services that the DNS security extensions do and do not provide.  Last, this document describes the interrelationships between the documents that collectively describe DNSSEC. [STANDARDS-TRACK]</t></abstract></front>

<seriesInfo name='RFC' value='4033' />
<format type='TXT' octets='52445' target='http://www.rfc-editor.org/rfc/rfc4033.txt' />
</reference>

<reference anchor='RFC5693' target='http://www.rfc-editor.org/info/rfc5693'>

<front>
<title>Application-Layer Traffic Optimization (ALTO) Problem Statement</title>
<author initials='J.' surname='Seedorf' fullname='J. Seedorf'>
<organization /></author>
<author initials='E.' surname='Burger' fullname='E. Burger'>
<organization /></author>
<date year='2009' month='October' />
<abstract>
<t>Distributed applications -- such as file sharing, real-time communication, and live and on-demand media streaming -- prevalent on the Internet use a significant amount of network resources. Such applications often transfer large amounts of data through connections established between nodes distributed across the Internet with little knowledge of the underlying network topology. Some applications are so designed that they choose a random subset of peers from a larger set with which to exchange data. Absent any topology information guiding such choices, or acting on suboptimal or local information obtained from measurements and statistics, these applications often make less than desirable choices.&lt;/t>&lt;t> This document discusses issues related to an information-sharing service that enables applications to perform better-than-random peer selection. This memo provides information for the Internet community.</t></abstract></front>

<seriesInfo name='RFC' value='5693' />
<format type='TXT' octets='34234' target='http://www.rfc-editor.org/rfc/rfc5693.txt' />
</reference>





<reference anchor='RFC6418' target='http://www.rfc-editor.org/info/rfc6418'>

<front>
<title>Multiple Interfaces and Provisioning Domains Problem Statement</title>
<author initials='M.' surname='Blanchet' fullname='M. Blanchet'>
<organization /></author>
<author initials='P.' surname='Seite' fullname='P. Seite'>
<organization /></author>
<date year='2011' month='November' />
<abstract>
<t>This document describes issues encountered by a node attached to multiple provisioning domains.  This node receives configuration information from each of its provisioning domains, where some configuration objects are global to the node and others are local to the interface.  Issues such as selecting the wrong interface to send traffic happen when conflicting node-scoped configuration objects are received and inappropriately used.  Moreover, other issues are the result of simultaneous attachment to multiple networks, such as domain selection or addressing and naming space overlaps, regardless of the provisioning mechanism.  While multiple provisioning domains are typically seen on nodes with multiple interfaces, this document also discusses situations involving single-interface nodes.  This document is not an Internet Standards Track specification; it is published for informational purposes.</t></abstract></front>

<seriesInfo name='RFC' value='6418' />
<format type='TXT' octets='50537' target='http://www.rfc-editor.org/rfc/rfc6418.txt' />
</reference>





<reference anchor='RFC6708' target='http://www.rfc-editor.org/info/rfc6708'>

<front>
<title>Application-Layer Traffic Optimization (ALTO) Requirements</title>
<author initials='S.' surname='Kiesel' fullname='S. Kiesel'>
<organization /></author>
<author initials='S.' surname='Previdi' fullname='S. Previdi'>
<organization /></author>
<author initials='M.' surname='Stiemerling' fullname='M. Stiemerling'>
<organization /></author>
<author initials='R.' surname='Woundy' fullname='R. Woundy'>
<organization /></author>
<author initials='Y.' surname='Yang' fullname='Y. Yang'>
<organization /></author>
<date year='2012' month='September' />
<abstract>
<t>Many Internet applications are used to access resources, such as pieces of information or server processes that are available in several equivalent replicas on different hosts. This includes, but is not limited to, peer-to-peer file sharing applications. 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. This guidance shall be based on parameters that affect performance and efficiency of the data transmission between the hosts, e.g., the topological distance. The ultimate goal is to improve performance or Quality of Experience in the application while reducing the utilization of the underlying network infrastructure.&lt;/t>&lt;t> This document enumerates requirements for specifying, assessing, or comparing protocols and implementations. This document is not an Internet Standards Track specification; it is published for informational purposes.</t></abstract></front>

<seriesInfo name='RFC' value='6708' />
<format type='TXT' octets='47549' target='http://www.rfc-editor.org/rfc/rfc6708.txt' />
</reference>





<reference anchor='RFC7230' target='http://www.rfc-editor.org/info/rfc7230'>

<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding'>
<organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke'>
<organization /></author>
<date year='2014' month='June' />
<abstract>
<t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems.  This document provides an overview of HTTP architecture and its associated terminology, defines the "http" and "https" Uniform Resource Identifier (URI) schemes, defines the HTTP/1.1 message syntax and parsing requirements, and describes related security concerns for implementations.</t></abstract></front>

<seriesInfo name='RFC' value='7230' />
<format type='TXT' octets='205947' target='http://www.rfc-editor.org/rfc/rfc7230.txt' />
</reference>


        </references>
        
        <section title="Acknowledgments">
            <t>Olafur Gudmundsson provided an excellent DNS expert review
                on an earlier version of this document. Thanks to Tina Tsou
                for an accurate security review.
            </t>
            
            <t>Michael Scharf is supported by the German-Lab project
                &lt;http://www.german-lab.de&gt; funded by the German Federal
                Ministry of Education and Research (BMBF).
            </t>
            
            <t>Martin Stiemerling is partially supported by the CHANGE
                project &lt;http://www.change-project.eu&gt;, a research project
                supported by the European Commission under its 7th Framework
                Program (contract no.  257422). The views and conclusions
                contained herein are those of the authors and should not be
                interpreted as necessarily representing the official
                policies or endorsements, either expressed or implied, of
                the CHANGE project or the European Commission.
            </t>
        </section>


        <section title="Contributors">
            <t>The initial version of this document was coauthored by 
                Marco Tomsu.
            </t>
            
            <t>Hannes Tschofenig provided the initial input to the U-NAPTR
                solution part. Hannes and Martin Thomson provided excellent
                feedback and input to the server discovery.
            </t>
            
            <t>The authors would also like to thank the following persons
                for their contribution to this document or its predecessors:
                Richard Alimi,
                David Bryan,
                Roni Even,
                Gustavo Garcia,
                Jay Gu,
                Xingfeng Jiang,
                Enrico Marocco,
                Victor Pascual,
                Y. Richard Yang,
                Yu-Shun Wang,
                Yunfei Zhang,
                Ning Zong.
            </t>
        </section>
            
    </back>
</rfc>
