One document matched: draft-marocco-alto-next-00.xml
<?xml version="1.0" encoding="US-ASCII"?> <!-- -*- fill-column: 120; -*- -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC5693 SYSTEM
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.5693.xml">
<!ENTITY I-D.ietf-alto-protocol SYSTEM
"http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-alto-protocol.xml">
<!ENTITY I-D.pbryan-json-patch SYSTEM
"http://xml.resource.org/public/rfc/bibxml3/reference.I-D.pbryan-json-patch.xml">
<!ENTITY I-D.jones-json-web-signature SYSTEM
"http://xml.resource.org/public/rfc/bibxml3/reference.I-D.jones-json-web-signature.xml">
<!ENTITY I-D.medved-alto-svr-apis SYSTEM
"http://xml.resource.org/public/rfc/bibxml3/reference.I-D.medved-alto-svr-apis.xml">
<!ENTITY I-D.dulinski-alto-inter-problem-statement SYSTEM
"http://xml.resource.org/public/rfc/bibxml3/reference.I-D.dulinski-alto-inter-problem-statement.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc category="info" docName="draft-marocco-alto-next-00" ipr="trust200902">
<front>
<title abbrev="Extending ALTO">Extending the Application-Layer Traffic Optimization (ALTO) Protocol</title>
<author fullname="Enrico Marocco" initials="E." surname="Marocco">
<organization>Telecom Italia</organization>
<address>
<postal>
<street>Via Reiss Romoli, 274</street>
<city>Torino</city>
<region></region>
<code>10148</code>
<country>Italy</country>
</postal>
<phone></phone>
<email>enrico.marocco@telecomitalia.it</email>
</address>
</author>
<author fullname="Vijay K. Gurbani" initials="V." surname="Gurbani">
<organization>Bell Laboratories, Alcatel-Lucent</organization>
<address>
<email>vkg@bell-labs.com</email>
</address>
</author>
<date month="January" year="2012" />
<area>Transport</area>
<workgroup>Internet Engineering Task Force</workgroup>
<keyword>alto</keyword>
<abstract>
<t>
The Application-Layer Traffic Optimization (ALTO) protocol is
designed to allow entities with knowledge about the network
infrastructure to export such information to applications that
need to choose one or more endpoints to connect to among large
sets of logically equivalent ones. The primary use case for the ALTO
protocol was peer-to-peer applications for file sharing, video
streaming and realtime communications, usually running on end-user
devices. However, a number of other applications executing in
more controlled environments may also benefit from the information
that can be exported through the ALTO protocol. The use cases that
have received significant attention include Content Delivery Networks
(CDNs), distributed applications running in large datacenters, as
well as systems made of inter-communicating ALTO servers.
</t>
<t>
To apply ALTO to these new use cases, this document aims to foster a
discussion to determine if, and how, the ALTO protocol could be
extended to provide a simple yet useful view of a computational
environment that goes beyond the static (or near static)
network topology and cost map information.
</t>
</abstract>
</front>
<middle>
<section title="Introduction">
<t>
The Application-Layer Traffic Optimization (ALTO) protocol is
designed to allow entities with knowledge about the network
infrastructure to export such information to applications that
need to choose one or more endpoints to connect to among large
sets of logically equivalent ones. The primary use case for the ALTO
protocol was peer-to-peer applications for file sharing, video
streaming and realtime communications, usually running on end-user
devices. However, a number of other applications executing in
more controlled environments may also benefit from the information
that can be exported through the ALTO protocol. The use cases that
have received significant attention include Content Delivery Networks
(CDNs), distributed applications running in large datacenters, as
well as systems made of inter-communicating ALTO servers.
</t>
<t>
Such applications require information about the underlying
infrastructure that goes beyond network topology and
associated costs. We believe that the ALTO protocol can be
easily extended to provide this information.
</t>
<t>
The basic idea is to use the ALTO protocol to present a
simplified view of a computational environment, aggregating with
some level of abstraction and approximation information that at
a fine-grained level may be conveyed by protocols like
OSPF, ISIS, BGP, SNMP, ECN, and ConEx.
</t>
<t>
To provide such kind of information the ALTO protocol need to be extended on several axes:
<list style="symbols">
<t>
a means for providing incremental updates to optimize for frequently changing information;
</t>
<t>
a means for providing integrity protection for the information provided by an ALTO server, in order to
enable information redistribution;
</t>
<t>
a server-initiated notification mechanism, for promptly informing applications of status changes;
</t>
<t>
different types of information, not only related to network costs, such as:
<list style="symbols">
<t>network link load;</t>
<t>server load;</t>
<t>availability of resources such as storage memory, content and installed applications.</t>
</list>
</t>
</list>
</t>
<t>
Detail-level and timescale of the additional information that can be provided are an open topic of
discussion. If on the one hand applications may not take any advantage of too coarse-grained infromation, on the
other hand ALTO protocol extensions cannot satisfy all the requirements of the mechanisms that today make full
use of such low level information and therefore must not be intended in any way as a replacement for them. The
goal of this document is to frame the discussion of what could be reasonable compromises for exporting
information of the underlying network and computational infrastructure to applications that need to make best
use of it.
</t>
<section title="Requirements Language">
<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="use-cases" title="Use Cases">
<section title="Content Delivery Networks (CDNs)">
<t>
CDNs consist of systems of caching servers that cooperate in the distribution of frequently requested
content. When a client wants to access some content, the request is directed by the CDN routing logic to the
most appropriate caching server. The criteria for selecting the most appropriate server can be arbitrary
complex and depend of information such as:
<list style="symbols">
<t>
network distance betwen the querying client and the caching server;
</t>
<t>
load of the caching server, e.g. in terms of number of concurrent requests or available serving capacity
measured over a recent timeframe;
</t>
<t>
content availability;
</t>
<t>
storage capacity availablity, for deciding whether to replicate some content on servers that do not have
it yet.
</t>
</list>
</t>
</section>
<section title="Virtualized Applications in Datacenters">
<t>
Applications running on virtual servers in large datacenters require dynamic allocation of resources such as
computation power, storage capacity and network bandwidth. Datacenter management logic allocate the resources
of physycal servers to such applications based on information such as:
<list style="symbols">
<t>
resource availability on the physycal servers;
</t>
<t>
application code and configurations availability on the physycal servers;
</t>
<t>
network connectivity quality (i.e. delay and expected throughput) between the physycal servers the
virtual server is already running on, and the new physycal servers the additional resources may be
allocated from.
</t>
</list>
</t>
</section>
<section title="ALTO Server-to-server Communications">
<t>
ALTO servers can improve the guidance they provide by aggregating
information distributed by other servers (see
<xref target="I-D.medved-alto-svr-apis"/> and
<xref target="I-D.dulinski-alto-inter-problem-statement"/>).
In such scenarios, for the model to be effective, at any
point in time all servers need to have a fresh version of the information distributed by the servers they are
communicating with, regardless of the type of information distributed. However, the frequency of changes
increases with the number of communicating servers, and the faster the information changes, the less the pull-based
approach of the <xref target="I-D.ietf-alto-protocol">base ALTO protocol</xref> is suitable for maintaining an
updated representation of the environment status.
</t>
</section>
</section>
<section title="New Protocol Features">
<t>
This section discusses some extensions to the ALTO protocol that can be used to cover the use cases described in
<xref target="use-cases"/>. Such extensions include:
<list style="symbols">
<t>
incremental updates for the network and cost maps defined in the <xref target="I-D.ietf-alto-protocol">base
ALTO protocol</xref>, for the CDN, datacenter and server-to-server use cases, to enable efficient
transmission of status changes;
</t>
<t>
integrity protection, for the server-to-server use case, to enable servers assert the authenticity of data
re-distributed by other servers;
</t>
<t>
a mechanism for server-initiated notifications, for the CDN, datacenters and server-to-server use cases, to
enable a fast propagation of the status changes;
</t>
<t>
new types of information for the ALTO protocol, for the CDN and datacenters use cases, to provide a
representation of the computational environment that goes beyond the network topology.
</t>
</list>
</t>
<t>
Incremental updates and integrity protection are easily defined on the
basis of existing (ongoing) work, namely
<xref target="I-D.pbryan-json-patch"/> and
<xref target="I-D.jones-json-web-signature"/>. The remainder
of this section discusses the other, perhaps more controversial
extensions.
</t>
<section title="Server-initiated Notifications">
<t>
The <xref target="I-D.ietf-alto-protocol">base ALTO protocol</xref> defines a JSON-based syntax to be conveyed
statelessly over HTTP. Such a lightweight approach has several advantages and is considered most appropriate
for the use case of peer-to-peer applications, where the information is likely to be retrieved and consumed by
huge numbers of clients. However, in more controlled environment, the same information, with the same or an
equivalent syntax, can also be conveyed by different protocols, such as XMPP, SIP, or by any protocol with
publish/subscribe capabilities that would allow servers to send updates to subscribed clients.
</t>
<t>
<list style="empty">
<t>
<figure>
<preamble>
As an example, if an ALTO service provider wanted to make cost maps available also through XMPP
(assuming some kind of specification for ALTO-over-XMPP exists), it could simply advertize the proper
URI in the information resource directory along with the basic HTTP one:
</preamble>
<artwork align="left">
<![CDATA[
{
"resources" : [
{
"uri" : "http://alto.example.com/serverinfo",
"media-types" : [ "application/alto-serverinfo+json" ]
}, {
"uri" : "http://alto.example.com/networkmap",
"media-types" : [ "application/alto-networkmap+json" ]
}, {
"uri" : "http://alto.example.com/costmap/num/routingcost",
"media-types" : [ "application/alto-costmap+json" ],
"additional-uris" : [ "xmpp:routingcost@alto.example.com" ],
"capabilities" : {
"cost-modes" : [ "numerical" ],
"cost-types" : [ "routingcost" ]
}
}, {
"uri" : "http://alto.example.com/costmap/num/hopcount",
"media-types" : [ "application/alto-costmap+json" ],
"additional-uris" : [ "xmpp:hopcount@alto.example.com" ],
"capabilities" : {
"cost-modes" : [ "numerical" ],
"cost-types" : [ "hopcount" ]
}
},
.
.
.
]
}
]]>
</artwork>
</figure>
</t>
</list>
</t>
</section>
<section title="ALTO Information Extensions">
<t>
The <xref target="I-D.ietf-alto-protocol">base ALTO protocol</xref> has been designed to be easily extended,
in terms of both endpoint properties and path cost types. The reminder of this section discusses the types of
information that are required by the use cases described in <xref target="use-cases"/> and that would allow an
ALTO servers to expose an abstract representation of a computational environment beyond the simple network
topology.
</t>
<section title="Bandwidth Availability Between Hosts">
<t>
Bandwidth availability is a kind of information that changes instantaneously and strictly depends on
applications behavior. For such (and other) reasons, conveying it for congestion control other than in-band
within the data flows may result useless at best, if not the cause of detrimental feedback loops.
</t>
<t>
However, some notion of link bandwidth availability averaged over a reasonabe timeframe may be effectively
used by CDN or datacenter applications to select well-connected pairs or groups of hosts that have to
perform bandwidth-demanding tasks.
</t>
<t>
Information about bandwidth availability can be defined for encoding in the ALTO protocol as a new path cost
type.
</t>
</section>
<section title="Resource Availability on Hosts">
<t>
Information about storage and computational capacity availability averaged over a reasonable timeframe may
be effectively used by CDN and datacenter applications as one of the criteria for selecting hosts for
serving content or performing tasks.
</t>
<t>
Information about resource availability can be defined for encoding in the ALTO protocol as a new endpoint
property.
</t>
</section>
<section title="Content Availability on Hosts">
<t>
Information about content availability can be expressed as lists of URIs (e.g. for identifying stored files
in CDN caching servers), URNs or other kinds of identifiers (e.g. for identifying installed applications on
physycal servers in a datacenter).
</t>
<t>
Information about content availability can be defined for encoding in the ALTO protocol as a new endpoint
property.
</t>
</section>
</section>
</section>
<section title="Security Considerations">
<t>
The information types discussed in this document are likely to be privacy critical in many environment and
therefore must be protected, restricting or controlling access to the servers that export them.
</t>
<t>
Server initiated notification requires more resources than the stateless retrivial model adopted by the <xref
target="I-D.ietf-alto-protocol">base ALTO protocol</xref> and is more thus more vulnerable to denial of service
attacks.
</t>
<t>
Access control mechanisms, including HTTP's, may be valid options for addressing the security issues related to
both privacy critical information types and resource-consuming server notifications.
</t>
</section>
</middle>
<back>
<references title="Normative References">
&RFC2119;
</references>
<references title="Informative References">
&RFC5693;
&I-D.ietf-alto-protocol;
&I-D.pbryan-json-patch;
&I-D.jones-json-web-signature;
&I-D.medved-alto-svr-apis;
&I-D.dulinski-alto-inter-problem-statement;
</references>
</back>
</rfc>
| PAFTECH AB 2003-2026 | 2026-04-24 02:59:14 |