|
By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as “work in progress.”
The list of current Internet-Drafts can be accessed at 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 May 1, 2009.
The ALTO Information Export Service is a simple way to convey ISP routing policy preferences to applications. Applications that could use this service are those that have a choice in connection endpoints. Examples of such applications are peer-to-peer and content delivery networks.
Applications already have access to great amount of underlying topology information. For example, views of the Internet routing table are easily available at looking glass servers and entirely practical to download to every client. What is missing is the routing policy information -- what does the local ISP actually prefer?
This document describes a very simple mechanism that would allow to export such information to applications. While such service would primarily be provided by the network, i.e., the local ISP, third parties could also operate this service.
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 [RFC2119] (Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” March 1997.).
Each network region can choose to support the ALTO service. (A network region in this context is an Autonomous System, an ISP, or perhaps a smaller region -- the details depend on the mechanism of discovery.)
The service works as follows:
The part of the ISP MAY be implemented, to give a few examples that do not preclude other implementation options,
by running a script connecting to existing equipment, fetching routing information, and then generating and uploading the requisite file;
by running a database-backed application that is obtains routing information from existing equipment and generates the requisite file dynamically;
by modifying the software or hardware of existing equipment to support these functions; or
by using new equipment for the purpose of operating this network service.
Discovery per se is out of scope for this document and will be handled separately.
The necessary property of discovery is that a client, starting from nothing on today's Internet that does not yet universally support global-scope multicast and may include NATs, can find a URL that describes the location of the local ALTO service, as configured by the ISP.
Subsequent sections assume that this URL is found. So that maximum number of clients can use the ALTO service, the URL schema SHOULD be "http" or "https".
The URL discovered through the mechanism mentioned in Section 3 (Discovery) points to a resource that consists of a sequence of octets. The content MAY change with every request or depend on the source of the request, but it MAY also be fairly static and change, for example, monthly.
The sequence of octets is a text file in US-ASCII and consists of records. Records are lines, terminated by network newlines (carriage return, followed by linefeed). Each record consists of three parts, separated by colon characters:
The file MUST NOT contain any whitespace other than newlines. Any extraneous whitespace found MUST be ignored (with a warning if practical). The following is an example of a valid format:
cidr:10/8:10 asn:0:5 cidr:10.1/16:20 cidr:10.2/16:-10 cidr:[de:ad:be:ef:fe:ed]/48:20
(This example may contain leading whitespace on each of the lines. This whitespace, if present, is a typographic artifact caused by the way this document is rendered. Actual examples MUST NOT include any such whitespace.)
When the file is interpreted any line that is malformed or not understood MUST be discarded and ignored, but subsequent lines MUST still be paid attention to.
IP prefixes with positive priorities are more desirable than the default. IP prefixes with negative priorities are less desirable than the default. In general, greater values are more desirable. Zero priority is the default. IPs not covered by the file are treated as if they had priority zero.
The absolute value of the priorities does not matter. Only their relative order is meaningful. Higher values are more desirable. For example, multiplying all the priority values in a given file by the same positive integer constant does not change the semantics of the file.
Some ISPs already convey information such as "traffic in the local country is free" to their customers. These ISPs will find the ALTO service an excellent means of conveying similar information in a machine-readable form. Only one (positive) priority value is needed for such use.
It is up to the ISP deploying the file to choose how much information to publish in it.
The semantics of the information are intentionally flexible, because:
Different applications will necessarily use the information differently. For example, an application that connects to just one address is going to have a different algorithm for selecting it than an application that connects to many.
Given lack of Internet-scale experimentation with using the information, we don't yet know what the best ways are. We want to give different approaches a chance to compete.
However, it's important to provide at least a non-normative example of how such routing policy information could be used.
Consider a BitTorrent client that wishes to use the ALTO information. The client will have a list of perhaps up to 200 initial candidate peers, out of which it will select perhaps 50 peers to try to connect to. In an initial implementation, the client could:
Split the candidates into three sets: preferred (those with positive priorities), to-be-avoided (those with negative priorities), and default (0 or unspecified priority)
Select up to 25 candidates randomly from the preferred set. In particular, if there are fewer than 25 in the preferred set, select them all.
Fill remaining slots up to 50 with candidates from the default set.
If this didn't fill the slots (i.e., fewer than 50 of the candidates were in the union of preferred and default sets), fill the rest by candidates from the to-be-avoided set.
When establishing connections after the initial startup, continue using the policy of giving up to half the slots to preferred with the rest for default and to-be-avoided only as last resort.
When selecting a peer to optimistically unchoke, half the time select a preferred peer if there is one.
(The particular numbers could be different.) If the preferred peers perform better than default ones, they will dominate the transfers. To-be-avoided peers are largely not contacted, unless the prohibitive policy is broad enough or the swarm is small enough that it is necessary to contact them to fill the slots.
In addition, the application might use some form of randomized test to see if it performs better or worse when the ALTO service use is on.
DISCUSSION: Applications can already map IPs to ASNs using information from a BGP looking glass. To do so, they have to download a file of about 1.5MB when compressed (as of October 2008, with all information not needed for IP to ASN mapping removed) and periodically (perhaps monthly) refresh it.
Alternatively, the ALTO service as defined in this document could be expanded so that there is another file that expands every ASN mentioned in the policy file into a set of IP prefixes. In that case, the ASNs in the policy file, from a client's perspective, would be treated like macros. The mapping file provided by the ISP would be be both smaller and more authoritative.
For simplicity of implementation, it's highly desirable that clients only have to implement exactly one mechanism of mapping IPs to ASNs.
We're interested in perspectives of others on this.
The ISP publishing the ALTO policy information has to treat it as publishing to the entire world.
Applications using the information must be cognizant of the possibility that the information is malformed or incorrect. Even when it is correct, its use might harm the performance. When an application concludes that it would get better performance disregarding the ALTO information, the decision to discontinue the use of ALTO information is likely best left to the user.
The use of TLS (using the "https" URL schema) will make it easier for clients to verify the origin of ALTO information.
[RFC2119] | Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” BCP 14, RFC 2119, March 1997 (TXT, HTML, XML). |
Stanislav Shalunov | |
BitTorrent | |
Email: | shalunov@bittorrent.com |
URI: | http://shlang.com/ |
Reinaldo Penno | |
Juniper Networks | |
Email: | rpenno@juniper.net |
Richard Woundy | |
Comcast | |
Email: | Richard_Woundy@cable.comcast.com |
Copyright © The IETF Trust (2008).
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.
This document and the information contained herein are provided on an “AS IS” basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.