< draft-kiesel-alto-3pdisc-02.txt   draft-kiesel-alto-3pdisc-03.txt >
ALTO S. Kiesel ALTO S. Kiesel
Internet-Draft University of Stuttgart Internet-Draft University of Stuttgart
Intended status: Informational M. Tomsu Intended status: Informational M. Tomsu
Expires: September 9, 2010 N. Schwan Expires: January 10, 2011 N. Schwan
M. Scharf M. Scharf
Alcatel-Lucent Bell Labs Alcatel-Lucent Bell Labs
March 8, 2010 M. Stiemerling
NEC Europe Ltd.
July 9, 2010
Third-party ALTO server discovery Third-party ALTO server discovery
draft-kiesel-alto-3pdisc-02 draft-kiesel-alto-3pdisc-03
Abstract Abstract
The goal of Application-Layer Traffic Optimization (ALTO) is to The goal of Application-Layer Traffic Optimization (ALTO) is to
provide guidance to applications, which have to select one or several provide guidance to applications, which have to select one or several
hosts from a set of candidates that are able to provide a desired hosts from a set of candidates that are able to provide a desired
resource. resource.
This document describes why a third-party ALTO server discovery Entities seeking guidance need to discover and possibly select an
mechanism is required for an important class of applications, namely ALTO server to ask. This is called ALTO server discovery. This memo
tracker-based P2P applications. Several solution approaches are describes an ALTO server discovery mechanism based on DNS SRV
classified and evaluated. The conclusion is that further work is records.
required to standardize a protocol and procedures that follow one
specific approach.
Status of this Memo Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF). Note that other groups may also distribute
other groups may also distribute working documents as Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at This Internet-Draft will expire on January 10, 2011.
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on September 9, 2010.
Copyright Notice Copyright Notice
Copyright (c) 2010 IETF Trust and the persons identified as the Copyright (c) 2010 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Problem statement . . . . . . . . . . . . . . . . . . . . . . 4 2. DNS-based ALTO Server Discovery . . . . . . . . . . . . . . . 5
2.1. The need for third-party ALTO queries . . . . . . . . . . 4 2.1. DNS SRV record definition . . . . . . . . . . . . . . . . 5
2.2. The need for third-party ALTO server discovery . . . . . . 6 2.2. DNS SRV record lookup procedure . . . . . . . . . . . . . 6
3. Peer-to-peer application scenario . . . . . . . . . . . . . . 8 2.2.1. Step 1: Finding the IP address . . . . . . . . . . . . 6
4. Classification of solution approaches . . . . . . . . . . . . 10 2.2.2. Step 2: Determining the DNS suffix . . . . . . . . . . 6
4.1. Solutions that do not require an update of the 2.2.3. Step 3: Lookup SRV record . . . . . . . . . . . . . . 7
application protocol . . . . . . . . . . . . . . . . . . . 10 2.2.4. Step 4: Final lookup . . . . . . . . . . . . . . . . . 8
4.2. Solutions that do require an update of the application 3. Applicability . . . . . . . . . . . . . . . . . . . . . . . . 9
protocol . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.1. Applicability for third party server discovery . . . . . . 9
5. Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.2. Applicability for resource consumer server discovery . . . 9
5.1. Approach #1 . . . . . . . . . . . . . . . . . . . . . . . 16 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11
5.2. Approach #2 . . . . . . . . . . . . . . . . . . . . . . . 16 5. Security Considerations . . . . . . . . . . . . . . . . . . . 12
5.3. Approach #3 . . . . . . . . . . . . . . . . . . . . . . . 16 6. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.4. Approach #4 . . . . . . . . . . . . . . . . . . . . . . . 17 7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.5. Approach #5 . . . . . . . . . . . . . . . . . . . . . . . 17 7.1. Normative References . . . . . . . . . . . . . . . . . . . 14
5.6. Approach #6 . . . . . . . . . . . . . . . . . . . . . . . 17 7.2. Informative References . . . . . . . . . . . . . . . . . . 14
6. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . . 16
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 17
8. Security Considerations . . . . . . . . . . . . . . . . . . . 21
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . . 23
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 24
1. Introduction 1. Introduction
The goal of Application-Layer Traffic Optimization (ALTO) is to The goal of Application-Layer Traffic Optimization (ALTO) is to
provide guidance to applications, which have to select one or several provide guidance to applications, which have to select one or several
hosts from a set of candidates, that are able to provide a desired hosts from a set of candidates, that are able to provide a desired
resource. ALTO is realized by a client-server protocol. ALTO resource[RFC5693]. The requirements for ALTO are itemized in
clients send queries to ALTO servers, in order to solicit guidance. [I-D.ietf-alto-reqs]. ALTO is realized by a client-server protocol.
The ALTO client can be embedded in the resource consumer, which will ALTO clients send queries to ALTO servers, in order to solicit
eventually access the desired resource. As an alternative, the ALTO guidance.
client can be embedded in a resource directory, which assists
resource consumers in finding appropriate resource providers. In
some specific peer-to-peer application protocols these resource
directories are called "trackers". ALTO queries, which are issued by
a resource directory on behalf of a resource consumer, will be
referred to as third-party ALTO queries.
The challenge for third-party ALTO queries is that they have to be
answered by the "right" ALTO server, i.e., the ALTO server which has
the knowledge to give guidance to the resource consumer on behalf of
which the query is sent.
This document uses the terminology introduced in [RFC5693] and it
investigates solution approaches that fulfill the requirements for
ALTO server discovery documented in [I-D.ietf-alto-reqs].
Comments and discussions about this document should be directed to
the ALTO working group: alto@ietf.org.
2. Problem statement
2.1. The need for third-party ALTO queries
The scope of this document is the interaction of peer-to-peer
applications that use a centralized resource directory ("tracker"),
with the ALTO service. In this scenario, the resource consumer
("peer") asks the resource directory for a list of candidate resource
providers, which can provide the desired resource. Usually, only a
subset of all resource providers known to the resource directory will
eventually be contacted by the resource consumer for accessing the
resource. The purpose of ALTO is giving guidance on this peer
selection, which is supposed to yield better-than-random results.
Several ALTO client protocol proposals exist (e.g.,
[I-D.ietf-alto-protocol], [I-D.kiesel-alto-h12]), which specify how
an ALTO client can query an ALTO server for guiding information and
receive the corresponding replies. However, in the considered
scenario of a tracker-based P2P application, there are two
fundamentally different possibilities where to place the ALTO client:
1. ALTO client in the resource consumer ("peer")
2. ALTO client in the resource directory ("tracker")
In the following, both scenarios are compared in order to explain the
need for third-party ALTO queries.
In the first scenario (see Figure 1), the resource consumer queries
the resource directory for the desired resource (F1). The resource
directory returns a list of potential resource providers without
considering ALTO (F2). It is then the duty of the resource consumer
to invoke ALTO (F3/F4), in order to solicit guidance regarding this
list.
In the second scenario (see Figure 2), the resource directory has an
embedded ALTO client, which we will refer to as RDAC in this
document. After receiving a query for a given resource (F1) the
resource directory invokes the RDAC to evaluate all resource
providers it knows (F2/F3). Then it returns a, possibly shortened,
list containing the "best" resource providers to the resource
consumer (F4).
Peer w. ALTO cli. Tracker ALTO Server
--------+-------- --------+-------- --------+--------
| F1 Tracker query | |
|======================>| |
| F2 Tracker reply | |
|<======================| |
| F3 ALTO client protocol query |
|---------------------------------------------->|
| F4 ALTO client protocol reply |
|<----------------------------------------------|
| | |
==== Application protocol (i.e., tracker-based P2P app protocol)
---- ALTO client protocol
Figure 1: Basic message sequence chart for resource consumer-
initiated ALTO query
Peer Tracker w. RDAC ALTO Server
--------+-------- --------+-------- --------+--------
| F1 Tracker query | |
|======================>| |
| | F2 ALTO cli. p. query |
| |---------------------->|
| | F3 ALTO cli. p. reply |
| |<----------------------|
| F4 Tracker reply | |
|<======================| |
| | |
==== Application protocol (i.e., tracker-based P2P app protocol)
---- ALTO client protocol
Figure 2: Basic message sequence chart for third-party ALTO query
Note: the message sequences depicted in Figure 1 and Figure 2 may
occur both in the target-aware and the target-independent query mode
(c.f. [I-D.ietf-alto-reqs]). In the target-independent query mode
no message exchange with the ALTO server might be needed after the
tracker query, because the candidate resource providers could be
evaluated using a locally cached "map", which has been retrieved from
the ALTO server some time ago.
The problem with the first approach is, that while the resource
directory might know thousands of peers taking part in a swarm, the
list returned to the resource consumer is usually shortened for
efficiency reasons. Therefore, the "best" (in the sense of ALTO)
potential resource providers might not be contained in that list
anymore, even before ALTO can consider them.
For example, consider a swarm with 10,000 peers known to the tracker.
A new peer wants to join the swarm and therefore asks the tracker for
a list of peers. For simplicity, we assume that 100 peers would be
desirable neighbors for the new peer (in the sense of better-than-
random peer selection) while the other 9,900 are less favorable.
Assume that the tracker randomly selects 100 peers out of the 10,000
known peers and returns them to the new peer. With a probability of
approx. 36% this list does not contain a single favorable peer, and
with 99% probability there are only four or less of the favorable
peers on the list. Processing this list with the guiding ALTO
information will ensure that the few favorable peers are ranked to
the top of the list; however, the benefit is rather limited as the
number of favorable peers in the list is just too small. Much better
traffic optimization could be achieved if the tracker would evaluate
all 10,000 peers using ALTO, and return a list of 100 peers
afterwards. This list would then include a significantly higher
fraction of favorable peers. (Note, that if the tracker returned
favorable peers only, there would be a risk that the swarm might
disconnect and split into several partitions. However, finding the
right mix of ALTO-biased and random peer selection is out of the
scope of this document.)
Therefore, from an overall optimization perspective, the second
scenario with the ALTO client embedded in the resource directory is
advantageous, because it is ensured that the addresses of the "best"
resource providers are actually delivered to the resource consumer.
2.2. The need for third-party ALTO server discovery
The previous section has shown why it is advantageous that entities
such as resource directories can perform ALTO queries on behalf of
resource consumers. We will refer to this kind of ALTO query as
"third-party ALTO query". ALTO queries are sent to ALTO servers,
which have knowledge of network topology and other information on
which the ALTO guidance is based.
The challenge for third-party ALTO queries is that they have to be
answered by the "right" ALTO server, i.e., the ALTO server which has
the knowledge to give guidance to the resource consumer on behalf of
which the query is sent.
One potential deployment scenario for ALTO is to establish a group of
centralized ALTO servers which have complete knowledge and therefore
can evaluate any pair of resource consumers and providers,
respectively. Directing a third-party ALTO query to one of these
servers would be a rather simple task.
However, it is likely that there will be deployment scenarios with
many ALTO servers, each having only partial knowledge and therefore
being able to give guidance regarding only a defined group of
resource consumers (e.g., those in its topological vicinity, or those
connected to the same network operator). The reasons for
partitioning the overall knowledge include scalability and separate
administrative responsibilities. For the remainder of this document,
we assume that the second scenario has to be supported. The first
scenario can be seen as special case of it, i.e., a solution that
supports the second scenario will support the first scenario as well.
We will identify and assess several approaches for finding the
"right" ALTO server, which has the knowledge to give guidance to the
resource consumer on behalf of which a third-party ALTO query is to
be sent.
3. Peer-to-peer application scenario
For illustration purposes the following chapters provide several
examples, which all refer to the scenario presented in Figure 3.
However, the evaluations and conclusions presented in this document
do not only consider this scenario, but they are much more general.
+------+ +---------+ ALTO clients have to discover suitable ALTO servers. Therefore the
| ALTO |---+---| Tracker | ALTO discovery client tells the ALTO client which ALTO servers to
| Srv3 | | +---------+ send the queries to. The ALTO discovery client and the ALTO client
+------+ | can be embedded in the resource consumer, which will eventually
|RTR| ISP 3 access the desired resource. As an alternative, they can be embedded
| in a resource directory, which assists resource consumers in finding
**** | *********** appropriate resource providers. In some specific peer-to-peer
*** ********************** ******* application protocols these resource directories are called
* Internet Backbone Networks * "trackers". Finally the ALTO discovery client can be embedded in the
*************** ****************** resource consumer, whereas the ALTO client is embedded in the
| ****** ** | resource directory. ALTO queries, which are issued by a resource
|RTR| ISP 1 ****** |RTR| ISP 2 directory on behalf of a resource consumer, are referred to as third-
| | +------+ party ALTO queries. The various possibilities to place ALTO servers
+-------+ | +------+ +--------| ALTO | and the placement of ALTO clients is discussed in
|Peer 1a|----+---| ALTO | | | Srv2 | [I-D.stiemerling-alto-deployments].
+-------+ | | Srv1 | |NAT| +------+
| +------+ |
+-------+ | +-------+ | +---------+
|Peer 1b|----+ |Peer 2a|----+------|ConfigSrv|
+-------+ | +-------+ | +---------+
|RTR| |
+-------+ | +-------+ | +-------+
|Peer 1c|----+ |Peer 2b|----+-|RTR|--|Peer 2c|
+-------+ +-------+ +-------+
Figure 3: ALTO scenario No matter where ALTO server and client are located, clients have to
first find out if there is an ALTO server deployed that is in charge
for them and second to get the contact information of that server,
i.e., the IP address, port number, and probably transport protocol
(which defaults to TCP for [I-D.ietf-alto-protocol]).
Figure 3 shows three networks with connected end hosts, which are There exists a number of service location protocols, such as SLP
operated by different Internet Service Provides, identified as ISP1, [RFC2608] or DHCP [RFC2131][RFC3315], which could in principle be
ISP2, and ISP3, respectively. These networks are interconnected by used for ALTO discovery. However, SLP is not widely deployed or used
Internet backbone networks. within the Internet. DHCP is widely deployed but has several
limitations:
ISP1's network connects to (amongst others) three hosts that run the o Though widely deployed DHCP is not in use everywhere. For
peers of a P2P application, identified as peers 1a, 1b, and 1c, important scenarios, such as PPPoE based DSL access networks one
respectively. Peers 1a and 1b are in topological vicinity, while 1c would have to specify another mechanism.
is more distant from them, because of the additional router (RTR) in
between. ISP1 operates an ALTO server, identified as ALTO Srv1,
which can give guidance to resource consumers in ISP1's network,
i.e., to peers 1a, 1b, and 1c.
ISP2's network has a very similar structure as described above, and o A DHCP-based discovery mechanism will always yield the addresses
it contains peers 2a, 2b, and 2c, as well as ALTO Srv2. The main of the ALTO servers that are provided by the network operator.
difference to ISP1's network is that ISP2 uses a carrier grade NAT The user cannot influence the discovery and, e.g., select an
device, in order to masquerade peers 2a, 2b, and 2c "behind" one alternative ALTO service from an "independent" ALTO operator.
single "external" (globally unique) IPv4 address. ALTO server 2 is
assumed to have a globally unique IPv4 address, i.e., it can be
queried from other hosts in the Internet without any special NAT
traversal mechanisms.
ISP3's network contains a resource directory ("tracker") for a o There are problems with residential gateways or broadband routers
tracker-based P2P application. ISP3 operates ALTO Srv3, which is with NAT. If the network operator gives information about ALTO
populated with information that could be used for giving guidance to serves to the residential gateway via DHCP, the residential
resource consumers in ISP3's network. gateway would have to forward this information to the hosts with
the (P2P) applications within the local network. This is not
supported by any of the already deployed residential gateways.
We assume that the tracker already knows that peers 1b, 1c, 2b, and o DHCP poorly supports third-party ALTO server discovery, i.e., in
2c are taking part in a specific P2P overlay. If peer 1a wishes to scenarios where the ALTO client is co-located with a resource
join the overlay, it sends an application protocol specific message directory ("tracker"), which is located in a different
to the tracker, asking for other peer's addresses. Because of the administrative domain than the client which will eventually access
reasons outlined in Section 2.1 the tracker should ask ALTO for the ressource.
guidance prior to replying. More specifically, it should query ALTO
server 1, because this ALTO server can give guidance to peer 1a.
Analogical to that, if peer 2a sends a query to the tracker, the
tracker needs to ask ALTO server 2 for guidance. The procedures for
identifying this ALTO server and conveying the guiding information to
the tracker are the scope of this document.
4. Classification of solution approaches The goal of this memo is to propose a uniform mechanism for all types
of ALTO client deployments that is implementable and deployable at a
fast pace, i.e., without creating other deployment dependecies for
ALTO. One way of fulfilling the previous mentioned requirements is
using the Service Records (SRV) of the Domain Name System (DNS), as
described in [RFC2782]. DNS SRVs have been defined and are used for
a number of protocols, such as SIP and XMPP.
There are several approaches for directing a third-party ALTO query Comments and discussions about this memo should be directed to the
from the RDAC to the "right" ALTO server. The selection of the ALTO working group: alto@ietf.org.
"right" ALTO server needs to consider the resource consumer on behalf
of which the query will be performed. The set of available options
therefore depends on the available information about the resource
consumer,
The primary criterion in the following classification is whether ALTO 2. DNS-based ALTO Server Discovery
must work together with all existing (P2P) application protocols, or
whether we can assume that these protocols can be augmented with new
ALTO-specific information fields.
4.1. Solutions that do not require an update of the application 2.1. DNS SRV record definition
protocol
If we do not want to make specific assumptions on the (P2P) We define a new service record for ALTO servers according to
application protocol, we cannot assume that there are any other peer [RFC2782]. The general format of the SRV RR, whose DNS type code is
identifiers apart from IP addresses. Therefore, we assume that the 33, is
only information identifying the resource consumer is the source IP
address of messages sent from the resource consumer to the resource
directory. This address may be the (public) IP address of the
resource consumer, or it may be the external address of the last NAT
on the path between resource consumer and resource directory.
The RDAC that wants to perform the third-party ALTO query has two _Service._Proto.Name TTL Class SRV Priority Weight Port Target
options:
o Approach #1: The RDAC invokes a discovery mechanism external to Where for the ALTO server discovery, we define:
the ALTO client protocol, in order to map from the resource
consumer's IP address to the "right" ALTO server. The ALTO query
will then be sent there directly (see Figure 4).
o Approach #2: Independent of the resource consumer's identity, the Service alto
RDAC uses the ALTO client protocol to send the ALTO query to one
preconfigured ALTO server. The resource consumer's IP address is
included in the query message. Based on this IP address and using
mechanisms of the ALTO client protocol the first ALTO server
forwards (see Figure 5) or redirects (see Figure 6) the query to
the "right" ALTO server. This implies that ALTO servers must know
each other, based on some discovery mechanism or manual
configuration.
Peer 1a Tracker ALTO Srv1 DNS Proto tcp
----+---- ----+---- ----+---- ----+----
| | | |
| F1 Tracker Q | | |
|==============>| F2 ALTO disc. Q (peer1a) |
| |******************************>|
| | F3 ALTO disc. R: ALTO Srv1 |
| |<******************************|
| | F4 ALTO cp Q | |
| |-------------->| |
| | F5 ALTO cp R | |
| F6 Tracker R |<--------------| |
|<==============| | |
| | | |
==== Application protocol (i.e., tracker-based P2P app protocol) Name "The domain this RR refers to. The SRV RR is unique in that
---- ALTO client protocol the name one searches for is not this name; the example near the
**** ALTO discovery protocol (e.g., based on DNS queries) end shows this clearly."[RFC2782]
Figure 4: Message sequence chart for Approach 1 TTL Standard DNS meaning [RFC2782]
Peer 1a Tracker ALTO Srv1 ALTO Srv2 ALTO Srv3 Class Standard DNS meaning[RFC2782]
----+---- ----+---- ----+---- ----+---- ----+----
| | | F1/2 HELLO | |
| | |<###########>| F3/4 HELLO |
| | | F5/6 HELLO |<###########>|
| | |<#########################>|
| F7 Tracker Q | | | |
|==============>| | | |
| | F8 ALTO cp Q | | |
| |------------------------------------------>|
| | | F9 ALTO cp Q |
| | |<--------------------------|
| | | F10 ALTO cp R |
| | |-------------------------->|
| | F11 ALTO cp R | | |
| F12 Tracker R |<------------------------------------------|
|<==============| | | |
| | | | |
==== Application protocol (i.e., tracker-based P2P app protocol) Priority "The priority of this target host. A client MUST attempt
---- ALTO client protocol to contact the target host with the lowest-numbered priority it
#### Inter-ALTO server protocol can reach; target hosts with the same priority SHOULD be tried in
an order defined by the weight field. The range is 0-65535. This
is a 16 bit unsigned integer in network byte order." [RFC2782]
Figure 5: Message sequence chart for Approach 2 (query forwarding) Weight "A server selection mechanism. The weight field specifies a
Peer 1a Tracker ALTO Srv1 ALTO Srv2 ALTO Srv3 relative weight for entries with the same priority. Larger
----+---- ----+---- ----+---- ----+---- ----+---- weights SHOULD be given a proportionately higher probability of
| | | F1/2 HELLO | | being selected. The range of this number is 0-65535. This is a
| | |<###########>| F3/4 HELLO | 16 bit unsigned integer in network byte order. Domain
| | | F5/6 HELLO |<###########>| administrators SHOULD use Weight 0 when there isn't any server
| | |<#########################>| selection to do, to make the RR easier to read for humans (less
| F7 Tracker Q | | | | noisy). In the presence of records containing weights greater
|==============>| | | | than 0, records with weight 0 should have a very small chance of
| | F8 ALTO cp Q | | | being selected.[...]" [RFC2782]
| |------------------------------------------>|
| | F9 ALTO cp redirect | |
| |<------------------------------------------|
| | F10 ALTO cp Q | | |
| |-------------->| | |
| | F11 ALTO cp R | | |
| F12 Tracker R |<--------------| | |
|<==============| | | |
| | | | |
==== Application protocol (i.e., tracker-based P2P app protocol) Port "The port on this target host of this service. The range is 0-
---- ALTO client protocol 65535. This is a 16 bit unsigned integer in network byte order.
#### Inter-ALTO server protocol This is often as specified in Assigned Numbers but need not
be."[RFC2782] It will be set to 80, if the standard TCP port for
HTTP is used, but this also allows to run the service on any other
port.
Figure 6: Message sequence chart for Approach 2 (query redirection) Target "The domain name of the target host. There MUST be one or
more address records for this name, the name MUST NOT be an alias
(in the sense of RFC 1034 or RFC 2181). Implementors are urged,
but not required, to return the address record(s) in the
Additional Data section. Unless and until permitted by future
standards action, name compression is not to be used for this
field. A Target of "." means that the service is decidedly not
available at this domain. "[RFC2782]
4.2. Solutions that do require an update of the application protocol An example for querying for such an ALTO service record running in
the domain myisp.net:
If we assume that applications can be upgraded in order to support _alto._tcp.example.com IN SRV 1 0 80 alto-srv01.myisp.net
ALTO, the resource consumer can provide additional information to the
RDAC in order to assist the process of ALTO server discovery.
o Approach #3: Using the extended application protocol, the resource 2.2. DNS SRV record lookup procedure
consumer sends an additional peer-ID, which can be understood by
ALTO, to the resource directory. This peer-ID could be used to
uniquely identify resource consumers and providers located behind
NATs. The RDAC uses this peer-ID in addition to or instead of the
resource consumer's IP address (see Figure 7). In all other
aspects this approach is identical to approach #1.
o Approach #4: This approach is identical to approach #2, except This section describes the algorithm that is applied to discover the
that the peer-ID is used instead of the IP address, as described ALTO server. We differentiate between two use cases: In use case (a)
in approach #3. the user has no specific wish which ALTO service instance to use.
Here the ALTO service instance is provided by default by the user's
access network provider, thus the ALTO discovery client needs to
determine the correct domain name automatically. In case (b) the
user configures a specific ALTO service instance that he wants to
use. Here the ALTO discovery client already has the information
about which DNS suffix to use.
o Approach #5: The resource consumer discovers its ALTO server on 2.2.1. Step 1: Finding the IP address
its own (i.e., not a third-party discovery). Using the extended
application protocol it sends the ALTO server's address to the
RDAC. The RDAC can use it for sending third-party ALTO queries
there.
o Approach #6: The resource consumer retrieves guiding information The first step for the ALTO discovery client is to determine the IP
on its own, e.g., by discovering and querying an ALTO server or by address or IP addresses of the resource consumer. The resource
doing measurements. Using the extended application protocol it consumer may have private IP addresses and public IP addresses and
sends this information to the tracker, which can perform peer depending on the deployment it might be necessary to determine for
selection based on it. all IP addresses the ALTO server in charge of. To determine its
public IP address the resource consumer may need to use STUN[RFC5389]
or BEP24[bep24]. For the following example we assume that the IP
address of the resource consumer is a.b.c.d
Peer 2a ConfigSrv Tracker ALTO Srv2 DNS 2.2.2. Step 2: Determining the DNS suffix
----+---- ----+---- ----+---- ----+---- ----+---
| F1 Config Q | | | |
|;;;;;;;;;;;;;;>| | | |
| | | | |
| F2 Config R | | | |
| + LocalID LID | | | |
|<;;;;;;;;;;;;;;| | | |
| | | | |
| F3 Tracker Q (LID) | | |
|===========================>| F4 ALTO disc. Q (ext.IP+LID) |
| | |******************************>|
| | | F5 ALTO disc. R: ALTO Srv2 |
| | |<******************************|
| | | F6 ALTO cp Q | |
| | |-------------->| |
| | | F7 ALTO cp R | |
| F8 Tracker R | |<--------------| |
|<===========================| | |
| | | | |
;;;; Configuration protocol (e.g., DHCP) To get the DNS suffix in case (a) the ALTO discovery uses a DNS PTR
==== Application protocol (i.e., tracker-based P2P app protocol) query for the IP address of the resource consumer as determined in
---- ALTO client protocol step 1. The local DNS server resolves the IP address to the FQDN
**** ALTO discovery protocol (e.g., based on DNS queries) that also contains the DNS suffix for the respective IP address. A
possible answer for a PTR lookup for d.c.b.a.in-addr.apra might be,
for example:
Figure 7: Message sequence chart for Approach 3 d-c-b-a.dsl.westcoast.myisp.net
Peer 2a ConfigSrv Tracker ALTO Srv2 In case (b) The user specifies the DNS suffix on its own, for example
----+---- ----+---- ----+---- ----+---- in a config file option. Here the user wants to use an ALTO service
| F1 Config Q | | | instance which is operated by a third party as for example the
|;;;;;;;;;;;;;;>| | | tracker operator. A possible DNS suffix entered by the user may be:
| | | |
| F2 Config R | | |
| + Addr. of ALTO Srv2 | |
|<;;;;;;;;;;;;;;| | |
| | | |
| F3 Tracker Q (Addr. of ALTO Srv2) |
|==============================>| |
| | | F4 ALTO cp Q |
| | |-------------->|
| | | F5 ALTO cp R |
| F6 Tracker R | |<--------------|
|<==============================| |
| | | |
;;;; Configuration protocol (e.g., DHCP) myaltoprovider.org
==== Application protocol (i.e., tracker-based P2P app protocol)
---- ALTO client protocol
Figure 8: Message sequence chart for Approach 5 2.2.3. Step 3: Lookup SRV record
Peer 2a ConfigSrv Tracker ALTO Srv2 In step 3 the ALTO discovery client uses the information that has
----+---- ----+---- ----+---- ----+---- been determined in the previous steps to composes the domain name
| F1 Config Q | | | that is used for the SRV queries. As the suffix part in not obvious
|;;;;;;;;;;;;;;>| | | in all cases e.g., it can be for the above example
| | | | "westcoast.myisp.net" or "myisp.net", the ALTO discovery client might
| F2 Config R | | | need to perform multiple SRV lookups until it gets a PTR reply.
| + Addr. of ALTO Srv2 | |
|<;;;;;;;;;;;;;;| | |
| | | |
| F3 ALTO cp Q | | |
|---------------------------------------------->|
| F4 ALTO cp R | | |
|<----------------------------------------------|
optional: perform | | |
measurements | | |
| | | |
| F5 Tracker Q (Info from ALTO reply + meas'mt.)|
|==============================>| |
| F6 Tracker R | | |
|<==============================| |
| | | |
;;;; Configuration protocol (e.g., DHCP) In case (a) the ALTO discovery client composes the domain name as
==== Application protocol (i.e., tracker-based P2P app protocol) described in Section 2. If there is no response to the lookup the
---- ALTO client protocol DNS suffix is shortened by one part for the succeeding lookup. The
domain names used for the example as described above are:
Figure 9: Message sequence chart for Approach 6 _alto._tcp.d-c-b-a.dsl.westcoast.myisp.net.
5. Discussion _alto._tcp.dsl.westcoast.myisp.net.
This section assesses and compares the different approaches _alto._tcp.westcoast.myisp.net.
introduced above, regarding trust, scalability, integration into
existing ISP infrastructure and management processes, modification of
existing applications, and ongoing ALTO architecture specification
works.
5.1. Approach #1 _alto._tcp.myisp.net.
The existence of a mechanism according to approach #1 is assumed by For case (b) the ALTO discovery client extends the DNS suffix by the
[I-D.ietf-alto-protocol]. IP address of the resource consumer in reverse order to compose the
domain name. This is needed for the third party ALTO service
instance to direct the ALTO client to the ALTO server closest to the
client in case there are multiple ALTO servers deployed. The suffix
is then shortened as described before until a lookup is successful,
as for example
This approach does not require any changes of existing (P2P) _alto._tcp.d.c.b.a.myaltoprovider.org.
application protocols. However, the RDAC needs to implement an
additional protocol for performing third-party ALTO server discovery.
One possible way of implementing this approach would be based on DNS, _alto._tcp.c.b.a.myaltoprovider.org.
providing a mapping from the resource consumer's IP address to the IP
address of the corresponding "right" ALTO server. DNS is proven to
be scalable and has well-understood mechanisms for delegating
authority. Network operators are used to DNS management.
This approach does not support intra-domain traffic optimization for _alto._tcp.b.a.myaltoprovider.org.
large domains behind a NAT.
5.2. Approach #2 _alto._tcp.a.myaltoprovider.org.
This approach does not require any changes of existing (P2P) _alto._tcp.myaltoprovider.org.
application protocols.
Furthermore, the RDAC does not need to implement an additional 2.2.4. Step 4: Final lookup
protocol besides the ALTO client protocol. However, this approach
relocates the discovery problem from the RDAC to the first ALTO
server.
This first ALTO server, when preconfigured in the RDAC of a large After step 3 has been completed the ALTO discovery client processes
resource directory, would raise serious concerns about scalability the PTR records and performs the final DNS lookup on the A record.
and trust/security issues. It then forwards the contact information to the ALTO client, which
can now contact the ALTO server to perform ALTO queries.
This approach does not support intra-domain traffic optimization for 3. Applicability
large domains behind a NAT.
5.3. Approach #3 This section discusses the applicability of the proposed solution
with respect to the third party and the resource consumer server
discovery deployment scenarios. Each section discusses the proposed
steps that are needed to create the right domain name for the final
DNS lookup.
This approach requires changes to all existing (P2P) application 3.1. Applicability for third party server discovery
protocols that want to benefit from ALTO.
This approach supports intra-domain traffic optimization for large In case of the third party server discovery deployment scenario the
domains behind a NAT. ALTO discovery client is a different entity than the resource
consumer. Typically the resource consumer is a peer wehereas the
ALTO (discovery) client is a resource directory which seeks for ALTO
guidance on behalf of the peer. Another use case for the third party
discovery is an application that looks for ALTO guidance
transparently to the resource consumer, for example a CDN.
Except for the above mentioned statements, the same results as for Here the ALTO discovery client already knows the IP address of the
approach #1 apply. resource consumer which was used to establish the initial connection.
In general this IP address is a public address, either of the
resource consumer or of the last NAT on the path to the ALTO client.
This makes the IP address a good candidate for the next steps. In
case the resource consumer needs guidance for a different IP address,
for example one from a private network, we propose that the resource
consumer does the server discovery by itself and forwards the ALTO
server contact information directly to the ALTO client which in turn
can then do the third party ALTO query.
5.4. Approach #4 To determine the DNS suffix the ALTO discovery client uses a DNS PTR
query. As here the IP address is public we expect that the DNS query
will be successfully resolved to the FQDN of the domain where the
resource consumer is registered in.
This approach requires changes to all existing (P2P) application To compose the right domain name from the FQDN the ALTO discovery
protocols that want to benefit from ALTO. client follows the mechansims as described in Section 2.2.3.
Additionally the ALTO discovery client can cache domain names and
contact details of already discovered ALTO servers and compare them
with the FQDN by a longest suffix matching. If successful the client
can use the contact information and skip the final discovery step.
This approach supports intra-domain traffic optimization for large The fourth step of the procedure can be applied as described.
domains behind a NAT.
Except for the above mentioned statements, the same results as for 3.2. Applicability for resource consumer server discovery
approach #2 apply.
5.5. Approach #5 In this scenario the ALTO discovery client that performs the
discovery is also the resource consumer, for example a peer in a P2P
system. After the discovery the peer does the ALTO query on its own,
or it might share the ALTO server contact information with a third
party, for example a tracker, which then does the ALTO query on
behalf of the peer.
This approach requires changes to all existing (P2P) application DNS SRV records can be used for resource consumer discovery, too.
protocols that want to benefit from ALTO. Depending on the deployment scenario the resource consumer will have
multiple IP addresses which are possible candidates for a reverse
lookup to determine the FQDN in step 2. Usually the ALTO server is
responsible for a set of public IP addresses, thus in case the
resource consumer is behind a NAT or a residential gateway it needs
to determine the public IP address assigned to it. As discussed in
Section 2.2.1 this can be done by the use of STUN[RFC5389] or
BEP24[bep24].
This approach does not need a mechanism for third-party ALTO server In other deployment scenarios where internal guidance for a large
discovery, as the ALTO server is discovered by the resource consumer. private domain is desired the ALTO server might be inside the same
However, a mechanism for this kind of discovery is needed, see, e.g., private domain as the resource consumer. In this case the resource
[I-D.song-alto-server-discovery]. consumer can either use a private IP address or it needs to find a
STUN server that is also inside the private domain in order to find
the right IP address.
Unlike approaches #1 .. #4 this approach supports scenarios, in which To determine the DNS suffix for a public IP address the procedure is
there is not exactly one "right" ALTO server for any given resource as described in the respective section. In case of a private IP
consumer. Instead of sending the address of the ALTO server address it has to be ensured that the DNS server that is used by the
provisioned by the ISP, the resource consumer can also send the discovery client is a local one that is capable of resolving the
address of another ALTO server of its choice to the RDAC. private IP address.
5.6. Approach #6 The third and fourth step of the procedure can be applied as
described.
This approach requires changes to all existing (P2P) application 4. IANA Considerations
protocols that want to benefit from ALTO.
This approach does not need a mechanism for third-party ALTO server This document does not mandate any immediate IANA actions. However,
discovery, as the ALTO server is discovered by the resource consumer. such IANA considerations may arise from future ALTO discovery
However, a mechanism for this kind of discovery is needed, see, e.g., specification documents which try to meet the requirements given
[I-D.song-alto-server-discovery]. here.
Unlike approaches #1 .. #4 this approach supports scenarios, in which 5. Security Considerations
there is not exactly one "right" ALTO server for any given resource
consumer. Instead of querying the ALTO server provisioned by the ISP
and forwarding that information to the resource directory, the
resource consumer can also query any other ALTO server of its choice.
This approach allows the resource consumer to augment the ALTO This early version of this memo does not yet have any security
server's reply with local preferences (e.g., from measurements). It considerations, but they will be added in future revision.
is also possible not to query an ALTO server at all.
6. Conclusion 6. Conclusion
This document describes why a third-party ALTO server discovery This document describes a general DNS SRV queries based ALTO server
mechanism is required for an important class of applications, namely discovery mechanism and discusses how ALTO discovery clients can find
tracker-based P2P applications. Several solution approaches are the right domain name which has to be used for the query. In
classified and evaluated. Assuming that ALTO should work together addition this document discusses the applicability of the described
with already deployed application protocols, "Approach #1" seems to mechanism for the third party as well as the resource consumer
be most promising. In this approach, the resource directory invokes discovery.
a discovery mechanism external to the ALTO client protocol, in order
to map from the resource consumer's IP address to the "right" ALTO
server.
The existence of such a mechanism according to "Approach #1" is
assumed by [I-D.ietf-alto-protocol].
Further action is required to standardize a protocol and procedures 7. References
according to "Approach #1".
7. IANA Considerations 7.1. Normative References
This document does not mandate any immediate IANA actions. However, [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
such IANA considerations may arise from future ALTO discovery Requirement Levels", BCP 14, RFC 2119, March 1997.
specification documents which try to meet the requirements given
here.
8. Security Considerations [RFC2782] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for
specifying the location of services (DNS SRV)", RFC 2782,
February 2000.
This early version of this memo does not yet have any security [RFC5389] Rosenberg, J., Mahy, R., Matthews, P., and D. Wing,
considerations, but they will be added in future revision. "Session Traversal Utilities for NAT (STUN)", RFC 5389,
October 2008.
9. References 7.2. Informative References
[I-D.ietf-alto-protocol] [I-D.ietf-alto-protocol]
Alimi, R., Penno, R., and Y. Yang, "ALTO Protocol", Alimi, R., Penno, R., and Y. Yang, "ALTO Protocol",
draft-ietf-alto-protocol-02 (work in progress), draft-ietf-alto-protocol-04 (work in progress), May 2010.
March 2010.
[I-D.ietf-alto-reqs] [I-D.ietf-alto-reqs]
Kiesel, S., Popkin, L., Previdi, S., Woundy, R., and Y. Kiesel, S., Previdi, S., Stiemerling, M., Woundy, R., and
Yang, "Application-Layer Traffic Optimization (ALTO) Y. Yang, "Application-Layer Traffic Optimization (ALTO)
Requirements", draft-ietf-alto-reqs-03 (work in progress), Requirements", draft-ietf-alto-reqs-05 (work in progress),
February 2010. June 2010.
[I-D.kiesel-alto-h12] [I-D.kiesel-alto-3pdisc]
Kiesel, S. and M. Stiemerling, "ALTO H12", Kiesel, S., Tomsu, M., Schwan, N., and M. Scharf, "Third-
draft-kiesel-alto-h12-01 (work in progress), March 2010. party ALTO server discovery", draft-kiesel-alto-3pdisc-02
(work in progress), March 2010.
[I-D.song-alto-server-discovery] [I-D.stiemerling-alto-deployments]
Song, H., Tomsu, M., Garcia, G., Wang, Y., and V. Pascual, Stiemerling, M. and S. Kiesel, "ALTO Deployment
"ALTO Service Discovery", Considerations", draft-stiemerling-alto-deployments-03
draft-song-alto-server-discovery-01 (work in progress), (work in progress), June 2010.
July 2009.
[RFC2131] Droms, R., "Dynamic Host Configuration Protocol",
RFC 2131, March 1997.
[RFC2608] Guttman, E., Perkins, C., Veizades, J., and M. Day,
"Service Location Protocol, Version 2", RFC 2608,
June 1999.
[RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C.,
and M. Carney, "Dynamic Host Configuration Protocol for
IPv6 (DHCPv6)", RFC 3315, July 2003.
[RFC5693] Seedorf, J. and E. Burger, "Application-Layer Traffic [RFC5693] Seedorf, J. and E. Burger, "Application-Layer Traffic
Optimization (ALTO) Problem Statement", RFC 5693, Optimization (ALTO) Problem Statement", RFC 5693,
October 2009. October 2009.
[bep22] Harrison, D., Shalunov, S., and G. Greg Hazel, "BitTorrent
Local Tracker Discovery Protocol",
BEP http://bittorrent.org/beps/bep_0022.html.
[bep24] Harrison, D., "Tracker Returns External IP",
BEP http://bittorrent.org/beps/bep_0024.html.
Appendix A. Acknowledgments Appendix A. Acknowledgments
The authors would like to thank Haibin Song, Richard Alimi, and Roni The authors would like to thank Haibin Song, Richard Alimi, and Roni
Even for fruitful discussions during the 75th IETF meeting. Even for fruitful discussions during the 75th IETF meeting.
Marco Tomsu and Nico Schwan are partially supported by the ENVISION Marco Tomsu and Nico Schwan are partially supported by the ENVISION
project (http://www.envision-project.org), a research project project (http://www.envision-project.org), a research project
supported by the European Commission under its 7th Framework Program supported by the European Commission under its 7th Framework Program
(contract no. 248565). The views and conclusions contained herein (contract no. 248565). The views and conclusions contained herein
are those of the authors and should not be interpreted as necessarily are those of the authors and should not be interpreted as necessarily
representing the official policies or endorsements, either expressed representing the official policies or endorsements, either expressed
or implied, of the ENVISION project or the European Commission. or implied, of the ENVISION project or the European Commission.
Michael Scharf is supported by the German-Lab project Michael Scharf is supported by the German-Lab project
(http://www.german-lab.de) funded by the German Federal Ministry of (http://www.german-lab.de) funded by the German Federal Ministry of
Education and Research (BMBF). Education and Research (BMBF).
Martin Stiemerling is partially supported by the NAPA-WINE project
(Network-Aware P2P-TV Application over Wise Networks,
http://www.napa-wine.org), a research project supported by the
European Commission under its 7th Framework Program (contract no.
214412). 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 NAPA-WINE project or the European Commission.
Authors' Addresses Authors' Addresses
Sebastian Kiesel Sebastian Kiesel
University of Stuttgart Computing Center University of Stuttgart Computing Center
Allmandring 30 Allmandring 30
Stuttgart 70550 Stuttgart 70550
Germany Germany
Email: ietf-alto@skiesel.de Email: ietf-alto@skiesel.de
URI: http://www.rus.uni-stuttgart.de/nks/ URI: http://www.rus.uni-stuttgart.de/nks/
skipping to change at line 783 skipping to change at page 18, line 4
URI: www.alcatel-lucent.com/bell-labs URI: www.alcatel-lucent.com/bell-labs
Michael Scharf Michael Scharf
Alcatel-Lucent Bell Labs Alcatel-Lucent Bell Labs
Lorenzstrasse 10 Lorenzstrasse 10
Stuttgart 70435 Stuttgart 70435
Germany Germany
Email: michael.scharf@alcatel-lucent.com Email: michael.scharf@alcatel-lucent.com
URI: www.alcatel-lucent.com/bell-labs URI: www.alcatel-lucent.com/bell-labs
Martin Stiemerling
NEC Laboratories Europe/University of Goettingen
Kurfuerstenanlage 36
Heidelberg 69115
Germany
Phone: +49 6221 4342 113
Email: martin.stiemerling@neclab.eu
URI: http://ietf.stiemerling.org
 End of changes. 91 change blocks. 
588 lines changed or deleted 328 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/