< draft-ietf-alto-protocol-09.txt   draft-ietf-alto-protocol-10.txt >
ALTO WG R. Alimi, Ed. ALTO WG R. Alimi, Ed.
Internet-Draft Google Internet-Draft Google
Intended status: Standards Track R. Penno, Ed. Intended status: Standards Track R. Penno, Ed.
Expires: December 29, 2011 Juniper Networks Expires: May 3, 2012 Juniper Networks
Y. Yang, Ed. Y. Yang, Ed.
Yale University Yale University
June 27, 2011 October 31, 2011
ALTO Protocol ALTO Protocol
draft-ietf-alto-protocol-09.txt draft-ietf-alto-protocol-10.txt
Abstract Abstract
Networking applications today already have access to a great amount Networking applications today already have access to a great amount
of Inter-Provider network topology information. For example, views of Inter-Provider network topology information. For example, views
of the Internet routing table are easily available at looking glass of the Internet routing table are easily available at looking glass
servers and entirely practical to be downloaded by clients. What is servers and entirely practical to be downloaded by clients. What is
missing is knowledge of the underlying network topology from the ISP missing is knowledge of the underlying network topology from the ISP
or Content Provider (henceforth referred as Provider) point of view. or Content Provider (henceforth referred as Provider) point of view.
In other words, what a Provider prefers in terms of traffic In other words, what a Provider prefers in terms of traffic
optimization -- and a way to distribute it. optimization -- and a way to distribute it.
The ALTO Service provides information such as preferences of network The ALTO Service provides network information (e.g., basic network
resources with the goal of modifying network resource consumption location structure, preferences of network paths) with the goal of
patterns while maintaining or improving application performance. modifying network resource consumption patterns while maintaining or
improving application performance. The basic information of ALTO is
based on abstract maps of a network. These maps provide simplified,
yet enough information of a network for applications to effectively
utilize. Additional services are built on top the maps.
This document describes a protocol implementing the ALTO Service. This document describes a protocol implementing the ALTO Service.
While such service would primarily be provided by the network (i.e., Although the ALTO service would primarily be provided by the network
the ISP), content providers and third parties could also operate this (i.e., the ISP), content providers and third parties could also
service. Applications that could use this service are those that operate this service. Applications that could use this service are
have a choice in connection endpoints. Examples of such applications those that have a choice in connection endpoints. Examples of such
are peer-to-peer (P2P) and content delivery networks. applications are peer-to-peer (P2P) and content delivery networks.
Requirements Language Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119]. document are to be interpreted as described in RFC 2119 [RFC2119].
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 to IETF in full conformance with the
skipping to change at page 2, line 16 skipping to change at page 2, line 21
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 The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on December 29, 2011. This Internet-Draft will expire on May 3, 2012.
Copyright Notice Copyright Notice
Copyright (c) 2011 IETF Trust and the persons identified as the Copyright (c) 2011 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
skipping to change at page 3, line 10 skipping to change at page 3, line 10
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 BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 6 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1. Background and Problem Statement . . . . . . . . . . . . . 6 1.1. Background and Problem Statement . . . . . . . . . . . . . 6
1.2. Design History and Merged Proposals . . . . . . . . . . . 6 1.2. Design History and Merged Proposals . . . . . . . . . . . 6
1.3. Solution Benefits . . . . . . . . . . . . . . . . . . . . 6 1.3. Solution Benefits . . . . . . . . . . . . . . . . . . . . 7
1.3.1. Service Providers . . . . . . . . . . . . . . . . . . 7 1.3.1. Service Providers . . . . . . . . . . . . . . . . . . 7
1.3.2. Applications . . . . . . . . . . . . . . . . . . . . . 7 1.3.2. Applications . . . . . . . . . . . . . . . . . . . . . 7
2. Architecture . . . . . . . . . . . . . . . . . . . . . . . . . 7 2. Architecture . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 7 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.1. Endpoint Address . . . . . . . . . . . . . . . . . . . 7 2.1.1. Endpoint Address . . . . . . . . . . . . . . . . . . . 8
2.1.2. ASN . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.1.2. ASN . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.3. Network Location . . . . . . . . . . . . . . . . . . . 8 2.1.3. Network Location . . . . . . . . . . . . . . . . . . . 8
2.1.4. ALTO Information . . . . . . . . . . . . . . . . . . . 8 2.1.4. ALTO Information . . . . . . . . . . . . . . . . . . . 8
2.1.5. ALTO Information Base . . . . . . . . . . . . . . . . 8 2.1.5. ALTO Information Base . . . . . . . . . . . . . . . . 8
2.2. ALTO Service and Protocol Scope . . . . . . . . . . . . . 8 2.2. ALTO Service and Protocol Scope . . . . . . . . . . . . . 8
3. Protocol Structure . . . . . . . . . . . . . . . . . . . . . . 10 3. Protocol Structure . . . . . . . . . . . . . . . . . . . . . . 10
3.1. Server Information Service . . . . . . . . . . . . . . . . 11 3.1. Server Information Service . . . . . . . . . . . . . . . . 11
3.2. ALTO Information Services . . . . . . . . . . . . . . . . 11 3.2. ALTO Information Services . . . . . . . . . . . . . . . . 11
3.2.1. Map Service . . . . . . . . . . . . . . . . . . . . . 11 3.2.1. Map Service . . . . . . . . . . . . . . . . . . . . . 12
3.2.2. Map Filtering Service . . . . . . . . . . . . . . . . 11 3.2.2. Map Filtering Service . . . . . . . . . . . . . . . . 12
3.2.3. Endpoint Property Service . . . . . . . . . . . . . . 11 3.2.3. Endpoint Property Service . . . . . . . . . . . . . . 12
3.2.4. Endpoint Cost Service . . . . . . . . . . . . . . . . 12 3.2.4. Endpoint Cost Service . . . . . . . . . . . . . . . . 12
4. Network Map . . . . . . . . . . . . . . . . . . . . . . . . . 12 4. Network Map . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.1. PID . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.1. PID . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2. Endpoint Addresses . . . . . . . . . . . . . . . . . . . . 13 4.2. Endpoint Addresses . . . . . . . . . . . . . . . . . . . . 13
4.2.1. IP Addresses . . . . . . . . . . . . . . . . . . . . . 13 4.2.1. IP Addresses . . . . . . . . . . . . . . . . . . . . . 14
4.3. Example Network Map . . . . . . . . . . . . . . . . . . . 13 4.3. Example Network Map . . . . . . . . . . . . . . . . . . . 14
5. Cost Map . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5. Cost Map . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.1. Cost Attributes . . . . . . . . . . . . . . . . . . . . . 14 5.1. Cost Attributes . . . . . . . . . . . . . . . . . . . . . 15
5.1.1. Cost Type . . . . . . . . . . . . . . . . . . . . . . 15 5.1.1. Cost Type . . . . . . . . . . . . . . . . . . . . . . 15
5.1.2. Cost Mode . . . . . . . . . . . . . . . . . . . . . . 15 5.1.2. Cost Mode . . . . . . . . . . . . . . . . . . . . . . 16
5.2. Cost Map Structure . . . . . . . . . . . . . . . . . . . . 16 5.2. Cost Map Structure . . . . . . . . . . . . . . . . . . . . 17
5.3. Network Map and Cost Map Dependency . . . . . . . . . . . 17 5.3. Network Map and Cost Map Dependency . . . . . . . . . . . 17
6. Protocol Design Overview . . . . . . . . . . . . . . . . . . . 17 6. Protocol Design Overview . . . . . . . . . . . . . . . . . . . 18
6.1. Benefits . . . . . . . . . . . . . . . . . . . . . . . . . 17 6.1. Benefits . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.1.1. Existing Infrastructure . . . . . . . . . . . . . . . 17 6.1.1. Existing Infrastructure . . . . . . . . . . . . . . . 18
6.1.2. ALTO Information Reuse and Redistribution . . . . . . 18 6.1.2. ALTO Information Reuse and Redistribution . . . . . . 18
6.2. Protocol Design . . . . . . . . . . . . . . . . . . . . . 18 6.2. Protocol Design . . . . . . . . . . . . . . . . . . . . . 19
7. Protocol Specification . . . . . . . . . . . . . . . . . . . . 18 7. Protocol Specification . . . . . . . . . . . . . . . . . . . . 19
7.1. Notation . . . . . . . . . . . . . . . . . . . . . . . . . 19 7.1. Notation . . . . . . . . . . . . . . . . . . . . . . . . . 19
7.2. Basic Operation . . . . . . . . . . . . . . . . . . . . . 19 7.2. Basic Operation . . . . . . . . . . . . . . . . . . . . . 19
7.2.1. Discovering Information Resources . . . . . . . . . . 19 7.2.1. Discovering Information Resources . . . . . . . . . . 20
7.2.2. Requesting Information Resources . . . . . . . . . . . 19 7.2.2. Requesting Information Resources . . . . . . . . . . . 20
7.2.3. Response . . . . . . . . . . . . . . . . . . . . . . . 20 7.2.3. Response . . . . . . . . . . . . . . . . . . . . . . . 20
7.2.4. Client Behavior . . . . . . . . . . . . . . . . . . . 20 7.2.4. Client Behavior . . . . . . . . . . . . . . . . . . . 21
7.2.5. Authentication and Encryption . . . . . . . . . . . . 21 7.2.5. Authentication and Encryption . . . . . . . . . . . . 21
7.2.6. HTTP Cookies . . . . . . . . . . . . . . . . . . . . . 21 7.2.6. HTTP Cookies . . . . . . . . . . . . . . . . . . . . . 21
7.2.7. Parsing . . . . . . . . . . . . . . . . . . . . . . . 21 7.2.7. Parsing . . . . . . . . . . . . . . . . . . . . . . . 21
7.3. Information Resource . . . . . . . . . . . . . . . . . . . 21 7.3. Information Resource . . . . . . . . . . . . . . . . . . . 22
7.3.1. Capabilities . . . . . . . . . . . . . . . . . . . . . 21 7.3.1. Capabilities . . . . . . . . . . . . . . . . . . . . . 22
7.3.2. Input Parameters Media Type . . . . . . . . . . . . . 21 7.3.2. Input Parameters Media Type . . . . . . . . . . . . . 22
7.3.3. Media Type . . . . . . . . . . . . . . . . . . . . . . 21 7.3.3. Media Type . . . . . . . . . . . . . . . . . . . . . . 22
7.3.4. Encoding . . . . . . . . . . . . . . . . . . . . . . . 22 7.3.4. Encoding . . . . . . . . . . . . . . . . . . . . . . . 22
7.4. ALTO Errors . . . . . . . . . . . . . . . . . . . . . . . 23 7.4. ALTO Errors . . . . . . . . . . . . . . . . . . . . . . . 24
7.4.1. Media Type . . . . . . . . . . . . . . . . . . . . . . 23 7.4.1. Media Type . . . . . . . . . . . . . . . . . . . . . . 24
7.4.2. Resource Format . . . . . . . . . . . . . . . . . . . 23 7.4.2. Resource Format . . . . . . . . . . . . . . . . . . . 24
7.4.3. Error Codes . . . . . . . . . . . . . . . . . . . . . 24 7.4.3. Error Codes . . . . . . . . . . . . . . . . . . . . . 25
7.5. ALTO Types . . . . . . . . . . . . . . . . . . . . . . . . 25 7.5. ALTO Types . . . . . . . . . . . . . . . . . . . . . . . . 25
7.5.1. PID Name . . . . . . . . . . . . . . . . . . . . . . . 25 7.5.1. PID Name . . . . . . . . . . . . . . . . . . . . . . . 26
7.5.2. Endpoints . . . . . . . . . . . . . . . . . . . . . . 25 7.5.2. Version Tag . . . . . . . . . . . . . . . . . . . . . 26
7.5.3. Cost Mode . . . . . . . . . . . . . . . . . . . . . . 27 7.5.3. Endpoints . . . . . . . . . . . . . . . . . . . . . . 26
7.5.4. Cost Type . . . . . . . . . . . . . . . . . . . . . . 28 7.5.4. Cost Mode . . . . . . . . . . . . . . . . . . . . . . 28
7.5.5. Endpoint Property . . . . . . . . . . . . . . . . . . 28 7.5.5. Cost Type . . . . . . . . . . . . . . . . . . . . . . 28
7.6. Information Resource Directory . . . . . . . . . . . . . . 28 7.5.6. Endpoint Property . . . . . . . . . . . . . . . . . . 29
7.6. Information Resource Directory . . . . . . . . . . . . . . 29
7.6.1. Media Type . . . . . . . . . . . . . . . . . . . . . . 29 7.6.1. Media Type . . . . . . . . . . . . . . . . . . . . . . 29
7.6.2. Encoding . . . . . . . . . . . . . . . . . . . . . . . 29 7.6.2. Encoding . . . . . . . . . . . . . . . . . . . . . . . 30
7.6.3. Example . . . . . . . . . . . . . . . . . . . . . . . 30 7.6.3. Example . . . . . . . . . . . . . . . . . . . . . . . 31
7.6.4. Usage Considerations . . . . . . . . . . . . . . . . . 33 7.6.4. Usage Considerations . . . . . . . . . . . . . . . . . 34
7.7. Information Resources . . . . . . . . . . . . . . . . . . 34 7.7. Information Resources . . . . . . . . . . . . . . . . . . 34
7.7.1. Server Information Service . . . . . . . . . . . . . . 34 7.7.1. Server Information Service . . . . . . . . . . . . . . 34
7.7.2. Map Service . . . . . . . . . . . . . . . . . . . . . 36 7.7.2. Map Service . . . . . . . . . . . . . . . . . . . . . 36
7.7.3. Map Filtering Service . . . . . . . . . . . . . . . . 41 7.7.3. Map Filtering Service . . . . . . . . . . . . . . . . 41
7.7.4. Endpoint Property Service . . . . . . . . . . . . . . 46 7.7.4. Endpoint Property Service . . . . . . . . . . . . . . 47
7.7.5. Endpoint Cost Service . . . . . . . . . . . . . . . . 49 7.7.5. Endpoint Cost Service . . . . . . . . . . . . . . . . 49
8. Redistributable Responses . . . . . . . . . . . . . . . . . . 53 8. Redistributable Responses . . . . . . . . . . . . . . . . . . 53
8.1. Concepts . . . . . . . . . . . . . . . . . . . . . . . . . 53 8.1. Concepts . . . . . . . . . . . . . . . . . . . . . . . . . 54
8.1.1. Service ID . . . . . . . . . . . . . . . . . . . . . . 53 8.1.1. Service ID . . . . . . . . . . . . . . . . . . . . . . 54
8.1.2. Expiration Time . . . . . . . . . . . . . . . . . . . 54 8.1.2. Expiration Time . . . . . . . . . . . . . . . . . . . 55
8.1.3. Signature . . . . . . . . . . . . . . . . . . . . . . 54 8.1.3. Signature . . . . . . . . . . . . . . . . . . . . . . 55
8.2. Protocol . . . . . . . . . . . . . . . . . . . . . . . . . 56 8.2. Protocol . . . . . . . . . . . . . . . . . . . . . . . . . 57
8.2.1. Response Redistribution Descriptor Fields . . . . . . 57 8.2.1. Response Redistribution Descriptor Fields . . . . . . 58
8.2.2. Signature . . . . . . . . . . . . . . . . . . . . . . 57 8.2.2. Signature . . . . . . . . . . . . . . . . . . . . . . 58
9. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 58 9. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 59
9.1. ALTO Client Embedded in P2P Tracker . . . . . . . . . . . 58 9.1. ALTO Client Embedded in P2P Tracker . . . . . . . . . . . 59
9.2. ALTO Client Embedded in P2P Client: Numerical Costs . . . 60 9.2. ALTO Client Embedded in P2P Client: Numerical Costs . . . 61
9.3. ALTO Client Embedded in P2P Client: Ranking . . . . . . . 61 9.3. ALTO Client Embedded in P2P Client: Ranking . . . . . . . 62
10. Discussions . . . . . . . . . . . . . . . . . . . . . . . . . 61 10. Discussions . . . . . . . . . . . . . . . . . . . . . . . . . 62
10.1. Discovery . . . . . . . . . . . . . . . . . . . . . . . . 62 10.1. Discovery . . . . . . . . . . . . . . . . . . . . . . . . 63
10.2. Hosts with Multiple Endpoint Addresses . . . . . . . . . . 62 10.2. Hosts with Multiple Endpoint Addresses . . . . . . . . . . 63
10.3. Network Address Translation Considerations . . . . . . . . 62 10.3. Network Address Translation Considerations . . . . . . . . 63
10.4. Mapping IPs to ASNs . . . . . . . . . . . . . . . . . . . 63 10.4. Mapping IPs to ASNs . . . . . . . . . . . . . . . . . . . 64
10.5. Endpoint and Path Properties . . . . . . . . . . . . . . . 63 10.5. Endpoint and Path Properties . . . . . . . . . . . . . . . 64
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 63 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 64
11.1. application/alto-* Media Types . . . . . . . . . . . . . . 63 11.1. application/alto-* Media Types . . . . . . . . . . . . . . 64
11.2. ALTO Cost Type Registry . . . . . . . . . . . . . . . . . 65 11.2. ALTO Cost Type Registry . . . . . . . . . . . . . . . . . 66
11.3. ALTO Endpoint Property Registry . . . . . . . . . . . . . 66 11.3. ALTO Endpoint Property Registry . . . . . . . . . . . . . 67
12. Security Considerations . . . . . . . . . . . . . . . . . . . 67 12. Security Considerations . . . . . . . . . . . . . . . . . . . 68
12.1. Privacy Considerations for ISPs . . . . . . . . . . . . . 67 12.1. Privacy Considerations for ISPs . . . . . . . . . . . . . 68
12.2. ALTO Clients . . . . . . . . . . . . . . . . . . . . . . . 68 12.2. ALTO Clients . . . . . . . . . . . . . . . . . . . . . . . 69
12.3. Authentication, Integrity Protection, and Encryption . . . 68 12.3. Authentication, Integrity Protection, and Encryption . . . 69
12.4. ALTO Information Redistribution . . . . . . . . . . . . . 69 12.4. ALTO Information Redistribution . . . . . . . . . . . . . 70
12.5. Denial of Service . . . . . . . . . . . . . . . . . . . . 69 12.5. Denial of Service . . . . . . . . . . . . . . . . . . . . 70
12.6. ALTO Server Access Control . . . . . . . . . . . . . . . . 70 12.6. ALTO Server Access Control . . . . . . . . . . . . . . . . 71
13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 70 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 71
13.1. Normative References . . . . . . . . . . . . . . . . . . . 70 13.1. Normative References . . . . . . . . . . . . . . . . . . . 71
13.2. Informative References . . . . . . . . . . . . . . . . . . 71 13.2. Informative References . . . . . . . . . . . . . . . . . . 72
Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . . 73 Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . . 74
Appendix B. Authors . . . . . . . . . . . . . . . . . . . . . . . 74 Appendix B. Authors . . . . . . . . . . . . . . . . . . . . . . . 75
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 74 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 75
1. Introduction 1. Introduction
1.1. Background and Problem Statement 1.1. Background and Problem Statement
Today, network information available to applications is mostly from Today, network information available to applications is mostly from
the view of endhosts. There is no clear mechanism to convey the view of endhosts. There is no clear mechanism to convey
information about the network's preferences to applications. By information about the network (e.g., preferences) to applications.
leveraging better network-provided information, applications have the On the other hand, modern network applications can be adaptive, with
potential to become more network-efficient (e.g., reduce network the potential to become more network-efficient (e.g., reduce network
resource consumption) and achieve better application performance resource consumption) and achieve better application performance
(e.g., accelerated download rate). The ALTO Service intends to (e.g., accelerated download rate), by leveraging better network-
provide a simple way to convey network information to applications. provided information.
The ALTO Service intends to provide a simple mechanism to convey
network information to applications. Its objective is to provide
basic, abstract but useful network information to applications. The
mechanism should include abstractions to achieve concise, flexible
network information expression.
The goal of this document is to specify a simple and unified protocol The goal of this document is to specify a simple and unified protocol
that meets the ALTO requirements [I-D.ietf-alto-reqs] while providing that meets the ALTO requirements [I-D.ietf-alto-reqs] while providing
a migration path for Internet Service Providers (ISP), Content a migration path for Internet Service Providers (ISP), Content
Providers, and clients that have deployed protocols with similar Providers, and clients that have deployed protocols with similar
intentions (see below). This document is a work in progress and will intentions (see below). This document is a work in progress and will
be updated with further developments. be updated with further developments.
1.2. Design History and Merged Proposals 1.2. Design History and Merged Proposals
skipping to change at page 9, line 7 skipping to change at page 9, line 11
Client uses ALTO Service Discovery to identify an appropriate ALTO Client uses ALTO Service Discovery to identify an appropriate ALTO
Server; and the ALTO Client requests available ALTO Information from Server; and the ALTO Client requests available ALTO Information from
the ALTO Server using the ALTO Protocol. the ALTO Server using the ALTO Protocol.
The ALTO Information provided by the ALTO Server can be updated The ALTO Information provided by the ALTO Server can be updated
dynamically based on network conditions, or can be seen as a policy dynamically based on network conditions, or can be seen as a policy
which is updated at a larger time-scale. which is updated at a larger time-scale.
More specifically, the ALTO Information provided by an ALTO Server More specifically, the ALTO Information provided by an ALTO Server
may be influenced (at the operator's discretion) by other systems. may be influenced (at the operator's discretion) by other systems.
Examples include (but are not limited to) static network The ALTO Server aggregates information from multiple systems to
configuration databases, dynamic network information, routing provide an abstract, unified, useful network view to applications.
Examples of other systems include (but are not limited to) static
network configuration databases, dynamic network information, routing
protocols, provisioning policies, and interfaces to outside parties. protocols, provisioning policies, and interfaces to outside parties.
These components are shown in the figure for completeness but outside These components are shown in the figure for completeness but outside
the scope of this specification. the scope of this specification.
Note that it may also be possible for ALTO Servers to exchange Note that it may also be possible for ALTO Servers to exchange
network information with other ALTO Servers (either within the same network information with other ALTO Servers (either within the same
administrative domain or another administrative domain with the administrative domain or another administrative domain with the
consent of both parties) in order to adjust exported ALTO consent of both parties) in order to adjust exported ALTO
Information. Such a protocol is also outside the scope of this Information. Such a protocol is also outside the scope of this
specification. specification.
skipping to change at page 15, line 43 skipping to change at page 16, line 17
5.1.2. Cost Mode 5.1.2. Cost Mode
The Mode attribute indicates how costs should be interpreted. The Mode attribute indicates how costs should be interpreted.
Specifically, the Mode attribute indicates whether returned costs Specifically, the Mode attribute indicates whether returned costs
should be interpreted as numerical values or ordinal rankings. should be interpreted as numerical values or ordinal rankings.
It is important to communicate such information to ALTO Clients, as It is important to communicate such information to ALTO Clients, as
certain operations may not be valid on certain costs returned by an certain operations may not be valid on certain costs returned by an
ALTO Server. For example, it is possible for an ALTO Server to ALTO Server. For example, it is possible for an ALTO Server to
return a set of IP addresses with costs indicating a ranking of the return a set of IP addresses with costs indicating a ranking of the
IP addresses. Arithmetic operations, such as summation, that would IP addresses. Arithmetic operations that would make sense for
make sense for numerical values, do not make sense for ordinal numerical values, do not make sense for ordinal rankings. ALTO
rankings. ALTO Clients may handle such costs differently. Clients may handle such costs differently.
Cost Modes are indicated in protocol messages as strings. Cost Modes are indicated in protocol messages as strings.
An ALTO Server MUST support at least one of 'numerical' and 'ordinal' An ALTO Server MUST support at least one of 'numerical' and 'ordinal'
costs. ALTO Clients SHOULD be cognizant of operations when a desired costs. ALTO Clients SHOULD be cognizant of operations when a desired
cost mode is not supported. For example, an ALTO Client desiring cost mode is not supported. For example, an ALTO Client desiring
numerical costs may adjust behavior if only the ordinal Cost Mode is numerical costs may adjust behavior if only the ordinal Cost Mode is
available. Alternatively, an ALTO Client desiring ordinal costs may available. Alternatively, an ALTO Client desiring ordinal costs may
construct ordinal costs given numerical values if only the numerical construct ordinal costs given numerical values if only the numerical
Cost Mode is available. Cost Mode is available.
5.1.2.1. Cost Mode: numerical 5.1.2.1. Cost Mode: numerical
This Cost Mode is indicated by the string 'numerical'. This mode This Cost Mode is indicated by the string 'numerical'. This mode
indicates that it is safe to perform numerical operations (e.g. indicates that it is safe to perform numerical operations (e.g.
summation) on the returned costs. normalization) on the returned costs.
5.1.2.2. Cost Mode: ordinal 5.1.2.2. Cost Mode: ordinal
This Cost Mode is indicated by the string 'ordinal'. This mode This Cost Mode is indicated by the string 'ordinal'. This mode
indicates that the costs values to a set of Destination Network indicates that the costs values to a set of Destination Network
Locations from a particular Source Network Location are a ranking, Locations from a particular Source Network Location are a ranking,
with lower values indicating a higher preference. The values are with lower values indicating a higher preference. The values are
non-negative integers. Ordinal cost values from a particular Source non-negative integers. Ordinal cost values from a particular Source
Network Location to a set of Destination Network Locations need not Network Location to a set of Destination Network Locations need not
be unique nor contiguous. In particular, from the perspective of a be unique nor contiguous. In particular, from the perspective of a
skipping to change at page 16, line 47 skipping to change at page 17, line 23
Locations. (Recall that a Network Location can be an endpoint Locations. (Recall that a Network Location can be an endpoint
address or a PID.) address or a PID.)
Specifically, assume that a query has a list of multiple Source Specifically, assume that a query has a list of multiple Source
Network Locations, say [Src_1, Src_2, ..., Src_m], and a list of Network Locations, say [Src_1, Src_2, ..., Src_m], and a list of
multiple Destination Network Locations, say [Dst_1, Dst_2, ..., multiple Destination Network Locations, say [Dst_1, Dst_2, ...,
Dst_n]. Dst_n].
The ALTO Server will return the Path Cost for each communicating pair The ALTO Server will return the Path Cost for each communicating pair
(i.e., Src_1 -> Dst_1, ..., Src_1 -> Dst_n, ..., Src_m -> Dst_1, ..., (i.e., Src_1 -> Dst_1, ..., Src_1 -> Dst_n, ..., Src_m -> Dst_1, ...,
Src_m -> Dst_n). We refer to this structure as a Cost Map. Src_m -> Dst_n). If the ALTO Server does not define a Path Cost for
a particular pair, it may be omitted. We refer to this structure as
a Cost Map.
If the Cost Mode is 'ordinal', the Path Cost of each communicating If the Cost Mode is 'ordinal', the Path Cost of each communicating
pair is relative to the m*n entries. pair is relative to the m*n entries.
5.3. Network Map and Cost Map Dependency 5.3. Network Map and Cost Map Dependency
If a Cost Map contains PIDs in the list of Source Network Locations If a Cost Map contains PIDs in the list of Source Network Locations
or the list of Destination Network Locations, the Path Costs are or the list of Destination Network Locations, the Path Costs are
generated based on a particular Network Map (which defines the PIDs). generated based on a particular Network Map (which defines the PIDs).
Version Tags are introduced to ensure that ALTO Clients are able to Version Tags are introduced to ensure that ALTO Clients are able to
skipping to change at page 25, line 17 skipping to change at page 26, line 8
Table 1: Defined ALTO Error Codes Table 1: Defined ALTO Error Codes
7.5. ALTO Types 7.5. ALTO Types
This section details the format for particular data values used in This section details the format for particular data values used in
the ALTO Protocol. the ALTO Protocol.
7.5.1. PID Name 7.5.1. PID Name
A PID Name is encoded as a US-ASCII string. The string MUST be no A PID Name is encoded as a US-ASCII string. The string MUST be no
more than 64 characters, and MUST NOT contain characters other than more than 64 characters, and MUST NOT contain any ASCII character
alphanumeric characters or the '.' separator. The '.' separator is below 0x21 or above 0x7E or the '.' separator. The '.' separator is
reserved for future use and MUST NOT be used unless specifically reserved for future use and MUST NOT be used unless specifically
indicated by a companion or extension document. indicated by a companion or extension document.
The type 'PIDName' is used in this document to indicate a string of The type 'PIDName' is used in this document to indicate a string of
this format. this format.
7.5.2. Endpoints 7.5.2. Version Tag
A Version Tag is encoded as a US-ASCII string. The string MUST be no
more than 64 characters, and MUST NOT contain any ASCII character
below 0x21 or above 0x7E.
The type 'VersionTag' is used in this document to indicate a string
of this type.
7.5.3. Endpoints
This section defines formats used to encode addresses for Endpoints. This section defines formats used to encode addresses for Endpoints.
In a case that multiple textual representations encode the same In a case that multiple textual representations encode the same
Endpoint address or prefix (within the guidelines outlined in this Endpoint address or prefix (within the guidelines outlined in this
document), the ALTO Protocol does not require ALTO Clients or ALTO document), the ALTO Protocol does not require ALTO Clients or ALTO
Servers to use a particular textual representation, nor does it Servers to use a particular textual representation, nor does it
require that ALTO Servers reply to requests using the same textual require that ALTO Servers reply to requests using the same textual
representation used by requesting ALTO Clients. ALTO Clients must be representation used by requesting ALTO Clients. ALTO Clients must be
cognizant of this. cognizant of this.
7.5.2.1. Address Type 7.5.3.1. Address Type
Address Types are encoded as US-ASCII strings consisting of only Address Types are encoded as US-ASCII strings consisting of only
alphanumeric characters. This document defines the address type alphanumeric characters. This document defines the address type
"ipv4" to refer to IPv4 addresses, and "ipv6" to refer to IPv6 "ipv4" to refer to IPv4 addresses, and "ipv6" to refer to IPv6
addresses. Extension documents may define additional Address Types. addresses. Extension documents may define additional Address Types.
The type 'AddressType' is used in this document to indicate a string The type 'AddressType' is used in this document to indicate a string
of this format. of this format.
7.5.2.2. Endpoint Address 7.5.3.2. Endpoint Address
Endpoint Addresses are encoded as US-ASCII strings. The exact Endpoint Addresses are encoded as US-ASCII strings. The exact
characters and format depend on the type of endpoint address. characters and format depend on the type of endpoint address.
The type 'EndpointAddr' is used in this document to indicate a string The type 'EndpointAddr' is used in this document to indicate a string
of this format. of this format.
7.5.2.2.1. IPv4 7.5.3.2.1. IPv4
IPv4 Endpoint Addresses are encoded as specified by the 'IPv4address' IPv4 Endpoint Addresses are encoded as specified by the 'IPv4address'
rule in Section 3.2.2 of [RFC3986]. rule in Section 3.2.2 of [RFC3986].
7.5.2.2.2. IPv6 7.5.3.2.2. IPv6
IPv6 Endpoint Addresses are encoded as specified in Section 4 of IPv6 Endpoint Addresses are encoded as specified in Section 4 of
[RFC5952]. [RFC5952].
7.5.2.2.3. Typed Endpoint Addresses 7.5.3.2.3. Typed Endpoint Addresses
When an Endpoint Address is used, an ALTO implementation must be able When an Endpoint Address is used, an ALTO implementation must be able
to determine its type. For this purpose, the ALTO Protocol allows to determine its type. For this purpose, the ALTO Protocol allows
endpoint addresses to also explicitly indicate their type. endpoint addresses to also explicitly indicate their type.
Typed Endpoint Addresses are encoded as US-ASCII strings of the Typed Endpoint Addresses are encoded as US-ASCII strings of the
format 'AddressType:EndpointAddr' (with the ':' character as a format 'AddressType:EndpointAddr' (with the ':' character as a
separator). The type 'TypedEndpointAddr' is used to indicate a separator). The type 'TypedEndpointAddr' is used to indicate a
string of this format. string of this format.
7.5.2.3. Endpoint Prefixes 7.5.3.3. Endpoint Prefixes
For efficiency, it is useful to denote a set of Endpoint Addresses For efficiency, it is useful to denote a set of Endpoint Addresses
using a special notation (if one exists). This specification makes using a special notation (if one exists). This specification makes
use of the prefix notations for both IPv4 and IPv6 for this purpose. use of the prefix notations for both IPv4 and IPv6 for this purpose.
Endpoint Prefixes are encoded as US-ASCII strings. The exact Endpoint Prefixes are encoded as US-ASCII strings. The exact
characters and format depend on the type of endpoint address. characters and format depend on the type of endpoint address.
The type 'EndpointPrefix' is used in this document to indicate a The type 'EndpointPrefix' is used in this document to indicate a
string of this format. string of this format.
7.5.2.3.1. IPv4 7.5.3.3.1. IPv4
IPv4 Endpoint Prefixes are encoded as specified in Section 3.1 of IPv4 Endpoint Prefixes are encoded as specified in Section 3.1 of
[RFC4632]. [RFC4632].
7.5.2.3.2. IPv6 7.5.3.3.2. IPv6
IPv6 Endpoint Prefixes are encoded as specified in Section 7 of IPv6 Endpoint Prefixes are encoded as specified in Section 7 of
[RFC5952]. [RFC5952].
7.5.2.4. Endpoint Address Group 7.5.3.4. Endpoint Address Group
The ALTO Protocol includes messages that specify potentially large The ALTO Protocol includes messages that specify potentially large
sets of endpoint addresses. Endpoint Address Groups provide a more sets of endpoint addresses. Endpoint Address Groups provide a more
efficient way to encode such sets, even when the set contains efficient way to encode such sets, even when the set contains
endpoint addresses of different types. endpoint addresses of different types.
An Endpoint Address Group is defined as: An Endpoint Address Group is defined as:
object { object {
EndpointPrefix [AddressType]<0..*>; EndpointPrefix [AddressType]<0..*>;
skipping to change at page 27, line 38 skipping to change at page 28, line 32
"ipv4": [ "ipv4": [
"192.0.2.0/24", "192.0.2.0/24",
"198.51.100.0/25" "198.51.100.0/25"
], ],
"ipv6": [ "ipv6": [
"2001:db8:0:1::/64", "2001:db8:0:1::/64",
"2001:db8:0:2::/64" "2001:db8:0:2::/64"
] ]
} }
7.5.3. Cost Mode 7.5.4. Cost Mode
A Cost Mode is encoded as a US-ASCII string. The string MUST either A Cost Mode is encoded as a US-ASCII string. The string MUST either
have the value 'numerical' or 'ordinal'. have the value 'numerical' or 'ordinal'.
The type 'CostMode' is used in this document to indicate a string of The type 'CostMode' is used in this document to indicate a string of
this format. this format.
7.5.4. Cost Type 7.5.5. Cost Type
A Cost Type is encoded as a US-ASCII string. The string MUST be no A Cost Type is encoded as a US-ASCII string. The string MUST be no
more than 32 characters, and MUST NOT contain characters other than more than 32 characters, and MUST NOT contain characters other than
alphanumeric characters, the hyphen ('-'), or the ':' separator. alphanumeric characters, the hyphen ('-'), or the ':' separator.
Identifiers prefixed with 'priv:' are reserved for Private Use Identifiers prefixed with 'priv:' are reserved for Private Use
[RFC5226]. Identifiers prefixed with 'exp:' are reserved for [RFC5226]. Identifiers prefixed with 'exp:' are reserved for
Experimental use. All other identifiers appearing in an HTTP request Experimental use. All other identifiers appearing in an HTTP request
or response with an 'application/alto-*' media type MUST be or response with an 'application/alto-*' media type MUST be
registered in the ALTO Cost Types registry Section 11.2. registered in the ALTO Cost Types registry Section 11.2.
The type 'CostType' is used in this document to indicate a string of The type 'CostType' is used in this document to indicate a string of
this format. this format.
7.5.5. Endpoint Property 7.5.6. Endpoint Property
An Endpoint Property is encoded as a US-ASCII string. The string An Endpoint Property is encoded as a US-ASCII string. The string
MUST be no more than 32 characters, and MUST NOT contain characters MUST be no more than 32 characters, and MUST NOT contain characters
other than alphanumeric characters, the hyphen ('-'), or the ':' other than alphanumeric characters, the hyphen ('-'), or the ':'
separator. separator.
Identifiers prefixed with 'priv:' are reserved for Private Use Identifiers prefixed with 'priv:' are reserved for Private Use
[RFC5226]. Identifiers prefixed with 'exp:' are reserved for [RFC5226]. Identifiers prefixed with 'exp:' are reserved for
Experimental use. All other identifiers appearing in an HTTP request Experimental use. All other identifiers appearing in an HTTP request
or response with an 'application/alto-*' media type MUST be or response with an 'application/alto-*' media type MUST be
skipping to change at page 29, line 37 skipping to change at page 30, line 31
object { object {
ResourceEntry resources<0..*>; ResourceEntry resources<0..*>;
} InfoResourceDirectory; } InfoResourceDirectory;
where the "resources" array indicates a list of Information Resources where the "resources" array indicates a list of Information Resources
provided by an ALTO Server. Note that the list of available provided by an ALTO Server. Note that the list of available
resources is enclosed in a JSON object for extensibility; future resources is enclosed in a JSON object for extensibility; future
protocol versions may specify additional members in the protocol versions may specify additional members in the
InfoResourceDirectory object. InfoResourceDirectory object.
Each entry MUST indicate a URI that either directly provides the Any URI endpoint indicated in an Information Resource Directory MAY
indicated Information Resource, or responds to a HTTP OPTIONS request provide a response to an OPTIONS request that is in the format of an
which provides an Information Resource Directory with entries of Information Resource Directory. This provides ALTO Clients a means
additional Information Resources. to discover resources and capabilities offered by that URI endpoint.
ALTO Servers that reply with an HTTP 300 status code ("Multiple
If an ALTO Client makes a GET or POST request to a URI that does not Choices") SHOULD use the Information Resource Directory format in the
directly provide an indicated Information Resource, the ALTO Server reply.
MUST either reply with an HTTP 300 status code ("Multiple Choices")
and an Information Resource Directory in the HTTP response's entity
body, or indicate an appropriate HTTP status code. Note that in
general, it is preferred that ALTO Clients use HTTP OPTIONS requests
to discover additional Information Resources.
A URI that directly provides an Information Resource MAY also respond
to HTTP OPTIONS requests, but it is not required to do so (in which
case, it MUST respond with HTTP 405 status code ("Method Not
Allowed"). This allows certain Information Resources to be
configured as static files with minimal configuration on some HTTP
servers.
Each entry in the directory specifies: Each entry in the directory specifies:
uri A URI at which the ALTO Server provides one or more Information uri A URI at which the ALTO Server provides one or more Information
Resources, or an Information Resource Directory indicating Resources, or an Information Resource Directory indicating
additional Information Resources. additional Information Resources.
media-types The list of all media types of Information Resources media-types The list of all media types of Information Resources
(see Section 7.3.3) available via GET or POST requests to the (see Section 7.3.3) available via GET or POST requests to the
corresponding URI or URIs discoverable via the URI. corresponding URI or URIs discoverable via the URI.
skipping to change at page 36, line 43 skipping to change at page 37, line 11
The returned InfoResourceEntity object "data" member of type The returned InfoResourceEntity object "data" member of type
InfoResourceNetworkMap: InfoResourceNetworkMap:
object { object {
EndpointAddrGroup [pidname]<0..*>; EndpointAddrGroup [pidname]<0..*>;
... ...
} NetworkMapData; } NetworkMapData;
object { object {
JSONString map-vtag; VersionTag map-vtag;
NetworkMapData map; NetworkMapData map;
} InfoResourceNetworkMap; } InfoResourceNetworkMap;
with members: with members:
map-vtag The Version Tag (Section 5.3) of the Network Map. map-vtag The Version Tag (Section 5.3) of the Network Map.
map The Network Map data itself. map The Network Map data itself.
NetworkMapData is a JSON object with each member representing a NetworkMapData is a JSON object with each member representing a
skipping to change at page 40, line 18 skipping to change at page 40, line 18
}; };
object { object {
DstCosts [PIDName]<0..*>; DstCosts [PIDName]<0..*>;
... ...
} CostMapData; } CostMapData;
object { object {
CostMode cost-mode; CostMode cost-mode;
CostType cost-type; CostType cost-type;
JSONString map-vtag; VersionTag map-vtag;
CostMapData map; CostMapData map;
} InfoResourceCostMap; } InfoResourceCostMap;
with members: with members:
cost-mode Cost Mode (Section 5.1.2) used in the Cost Map. cost-mode Cost Mode (Section 5.1.2) used in the Cost Map.
cost-type Cost Type (Section 5.1.1) used in the Cost Map. cost-type Cost Type (Section 5.1.1) used in the Cost Map.
map-vtag The Version Tag (Section 5.3) of the Network Map used to map-vtag The Version Tag (Section 5.3) of the Network Map used to
generate the Cost Map. generate the Cost Map.
map The Cost Map data itself. map The Cost Map data itself.
CostMapData is a JSON object with each member representing a single CostMapData is a JSON object with each member representing a single
Source PID; the name for a member is the PIDName string identifying Source PID; the name for a member is the PIDName string identifying
the corresponding Source PID. For each Source PID, a DstCosts object the corresponding Source PID. For each Source PID, a DstCosts object
denotes the associated cost to a set of destination PIDs ( denotes the associated cost to a set of destination PIDs (
Section 5.2); the name for each member in the object is the PIDName Section 5.2); the name for each member in the object is the PIDName
string identifying the corresponding Destination PID. DstCosts MUST string identifying the corresponding Destination PID.
have a single member for each Destination PID in the map.
The returned Cost Map MUST include Path Costs for each pair of Source The returned Cost Map MUST include the Path Cost for each (Source
PID and Destination PID known to the ALTO Server. PID, Destination PID) pair for which a Path Cost is defined. An ALTO
Server MAY omit entries for which a Path Cost is not defined (e.g.,
both the Source and Destination PIDs contain addresses outside of the
Network Provider's administrative domain).
7.7.2.2.6. Example 7.7.2.2.6. Example
GET /costmap/num/routingcost HTTP/1.1 GET /costmap/num/routingcost HTTP/1.1
Host: alto.example.com Host: alto.example.com
Accept: application/alto-costmap+json,application/alto-error+json Accept: application/alto-costmap+json,application/alto-error+json
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: [TODO] Content-Length: [TODO]
Content-Type: application/alto-costmap+json Content-Type: application/alto-costmap+json
{ {
"meta" : {}, "meta" : {},
"data" : { "data" : {
"cost-mode" : "numerical", "cost-mode" : "numerical",
"cost-type" : "routingcost", "cost-type" : "routingcost",
"map-vtag" : "1266506139", "map-vtag" : "1266506139",
"map" : { "map" : {
"PID1": { "PID1": 1, "PID2": 5, "PID3": 10 }, "PID1": { "PID1": 1, "PID2": 5, "PID3": 10 },
"PID2": { "PID1": 5, "PID2": 1, "PID3": 15 }, "PID2": { "PID1": 5, "PID2": 1, "PID3": 15 },
"PID3": { "PID1": 20, "PID2": 15, "PID3": 1 } "PID3": { "PID1": 20, "PID2": 15 }
} }
} }
} }
7.7.3. Map Filtering Service 7.7.3. Map Filtering Service
The Map Filtering Service allows ALTO Clients to specify filtering The Map Filtering Service allows ALTO Clients to specify filtering
criteria to return a subset of the full maps available in the Map criteria to return a subset of the full maps available in the Map
Service. Service.
skipping to change at page 42, line 7 skipping to change at page 42, line 7
7.7.3.1.3. Input Parameters 7.7.3.1.3. Input Parameters
Input parameters are supplied in the entity body of the POST request. Input parameters are supplied in the entity body of the POST request.
This document specifies the input parameters with a data format This document specifies the input parameters with a data format
indicated by the media type "application/alto-networkmapfilter+json", indicated by the media type "application/alto-networkmapfilter+json",
which is a JSON Object of type ReqFilteredNetworkMap, where: which is a JSON Object of type ReqFilteredNetworkMap, where:
object { object {
PIDName pids<0..*>; PIDName pids<0..*>;
AddressType address-types<0..*>;
} ReqFilteredNetworkMap; } ReqFilteredNetworkMap;
with members: with members:
pids Specifies list of PIDs to be included in the returned Filtered pids Specifies list of PIDs to be included in the returned Filtered
Network Map. If the list of PIDs is empty, the ALTO Server MUST Network Map. If the list of PIDs is empty, the ALTO Server MUST
interpret the list as if it contained a list of all currently- interpret the list as if it contained a list of all currently-
defined PIDs. The ALTO Server MUST interpret entries appearing defined PIDs. The ALTO Server MUST interpret entries appearing
multiple times as if they appeared only once. multiple times as if they appeared only once.
address-types Specifies list of address types to be included in the
returned Filtered Network Map. If the list of address types is
empty, the ALTO Server MUST interpret the list as if it contained
a list of all address types known to the ALTO Server. The ALTO
Server MUST interpret entries appearing multiple times as if they
appeared only once.
7.7.3.1.4. Capabilities 7.7.3.1.4. Capabilities
None. None.
7.7.3.1.5. Response 7.7.3.1.5. Response
See Section 7.7.2.1.5 for the format. See Section 7.7.2.1.5 for the format.
The ALTO Server MUST only include PIDs in the response that were The ALTO Server MUST only include PIDs in the response that were
specified (implicitly or explicitly) in the request. If the input specified (implicitly or explicitly) in the request. If the input
parameters contain a PID name that is not currently defined by the parameters contain a PID name that is not currently defined by the
ALTO Server, the ALTO Server MUST behave as if the PID did not appear ALTO Server, the ALTO Server MUST behave as if the PID did not appear
in the input parameters. in the input parameters. Similarly, the ALTO Server MUST only
enumerate addresses within each PID that have types which were
specified (implicitly or explicitly) in the request. If the input
parameters contain an address type that is not currently known to the
ALTO Server, the ALTO Server MUST behave as if the address type did
not appear in the input parameters.
7.7.3.1.6. Example 7.7.3.1.6. Example
POST /networkmap/filtered HTTP/1.1 POST /networkmap/filtered HTTP/1.1
Host: custom.alto.example.com Host: custom.alto.example.com
Content-Length: [TODO] Content-Length: [TODO]
Content-Type: application/alto-networkmapfilter+json Content-Type: application/alto-networkmapfilter+json
Accept: application/alto-networkmap+json,application/alto-error+json Accept: application/alto-networkmap+json,application/alto-error+json
{ {
skipping to change at page 46, line 6 skipping to change at page 46, line 6
7.7.3.2.5. Response 7.7.3.2.5. Response
See Section 7.7.2.2.5 for the format. See Section 7.7.2.2.5 for the format.
The returned Cost Map MUST NOT contain any source/destination pair The returned Cost Map MUST NOT contain any source/destination pair
that was not indicated (implicitly or explicitly) in the input that was not indicated (implicitly or explicitly) in the input
parameters. If the input parameters contain a PID name that is not parameters. If the input parameters contain a PID name that is not
currently defined by the ALTO Server, the ALTO Server MUST behave as currently defined by the ALTO Server, the ALTO Server MUST behave as
if the PID did not appear in the input parameters. if the PID did not appear in the input parameters.
If any constraints are specified, Source/Destination pairs that do If any constraints are specified, Source/Destination pairs for which
for which the Path Costs do not meet the constraints MUST NOT be the Path Costs do not meet the constraints MUST NOT be included in
included in the returned Cost Map. If no constraints were specified, the returned Cost Map. If no constraints were specified, then all
then all Path Costs are assumed to meet the constraints. Path Costs are assumed to meet the constraints.
Note that ALTO Clients should verify that the Version Tag included in
the response is consistent with the Version Tag of the Network Map
used to generate the request (if applicable). If it is not, the ALTO
Client may wish to request an updated Network Map, identify changes,
and consider requesting a new Filtered Cost Map.
7.7.3.2.6. Example 7.7.3.2.6. Example
POST /costmap/filtered HTTP/1.1 POST /costmap/filtered HTTP/1.1
Host: custom.alto.example.com Host: custom.alto.example.com
Content-Type: application/alto-costmapfilter+json Content-Type: application/alto-costmapfilter+json
Accept: application/alto-costmap+json,application/alto-error+json Accept: application/alto-costmap+json,application/alto-error+json
{ {
"cost-mode" : "numerical", "cost-mode" : "numerical",
skipping to change at page 48, line 26 skipping to change at page 48, line 33
The returned InfoResourceEntity object has "data" member of type The returned InfoResourceEntity object has "data" member of type
InfoResourceEndpointProperty, where: InfoResourceEndpointProperty, where:
object { object {
JSONString [EndpointProperty]; JSONString [EndpointProperty];
... ...
} EndpointProps; } EndpointProps;
object { object {
VersionTag map-vtag; [OPTIONAL]
EndpointProps [TypedEndpointAddr]<0..*>; EndpointProps [TypedEndpointAddr]<0..*>;
... ...
} InfoResourceEndpointProperty; } InfoResourceEndpointProperty;
InfoResourceEndpointProperty has one member for each endpoint InfoResourceEndpointProperty has one member for each endpoint
indicated in the input parameters (with the name being the endpoint indicated in the input parameters (with the name being the endpoint
encoded as a TypedEndpointAddr). The requested properties for each encoded as a TypedEndpointAddr). The requested properties for each
endpoint are encoded in a corresponding EndpointProps object, which endpoint are encoded in a corresponding EndpointProps object, which
encodes one name/value pair for each requested property, where the encodes one name/value pair for each requested property, where the
property names are encoded as strings of type EndpointProperty and property names are encoded as strings of type EndpointProperty and
the property values encoded as JSON Strings. the property values encoded as JSON Strings.
The ALTO Server returns the value for each of the requested endpoint The ALTO Server returns the value for each of the requested endpoint
properties for each of the endpoints listed in the input parameters. properties for each of the endpoints listed in the input parameters.
If the ALTO Server does not define a requested property for a If the ALTO Server does not define a requested property for a
particular endpoint, then it MUST omit it from the response for only particular endpoint, then it MUST omit it from the response for only
that endpoint. that endpoint.
The ALTO Server MAY include the Version Tag (Section 5.3) of the
Network Map used to generate the response (if desired and applicable)
as the 'map-vtag' member in the response. If the 'pid' property is
returned for any endpoints in the response, the 'map-vtag' member is
REQUIRED instead of OPTIONAL.
7.7.4.1.6. Example 7.7.4.1.6. Example
POST /endpointprop/lookup HTTP/1.1 POST /endpointprop/lookup HTTP/1.1
Host: alto.example.com Host: alto.example.com
Content-Length: [TODO] Content-Length: [TODO]
Content-Type: application/alto-endpointpropparams+json Content-Type: application/alto-endpointpropparams+json
Accept: application/alto-endpointprop+json,application/alto-error+json Accept: application/alto-endpointprop+json,application/alto-error+json
{ {
"properties" : [ "pid" ], "properties" : [ "pid" ],
skipping to change at page 49, line 42 skipping to change at page 50, line 8
The Endpoint Cost Service provides information about costs between The Endpoint Cost Service provides information about costs between
individual endpoints. individual endpoints.
In particular, this service allows lists of Endpoint prefixes (and In particular, this service allows lists of Endpoint prefixes (and
addresses, as a special case) to be ranked (ordered) by an ALTO addresses, as a special case) to be ranked (ordered) by an ALTO
Server. Server.
7.7.5.1. Endpoint Cost 7.7.5.1. Endpoint Cost
The Endpoint Cost resource provides information about costs between The Endpoint Cost resource provides information about costs between
individual endpoints. It MAY be provided by an ALTO Server. If it individual endpoints. It MAY be provided by an ALTO Server.
is provided.
It is important to note that although this resource allows an ALTO It is important to note that although this resource allows an ALTO
Server to reveal costs between individual endpoints, an ALTO Server Server to reveal costs between individual endpoints, an ALTO Server
is not required to do so. A simple alternative would be to compute is not required to do so. A simple alternative would be to compute
the cost between two endpoints as the cost between the PIDs the cost between two endpoints as the cost between the PIDs
corresponding to the endpoints. See Section 12.1 for additional corresponding to the endpoints. See Section 12.1 for additional
details. details.
7.7.5.1.1. Media Type 7.7.5.1.1. Media Type
skipping to change at page 52, line 4 skipping to change at page 52, line 18
map The Endpoint Cost Map data itself. map The Endpoint Cost Map data itself.
EndpointCostMapData is a JSON object with each member representing a EndpointCostMapData is a JSON object with each member representing a
single Source Endpoint specified in the input parameters; the name single Source Endpoint specified in the input parameters; the name
for a member is the TypedEndpointAddr string identifying the for a member is the TypedEndpointAddr string identifying the
corresponding Source Endpoint. For each Source Endpoint, a corresponding Source Endpoint. For each Source Endpoint, a
EndpointDstCosts object denotes the associated cost to each EndpointDstCosts object denotes the associated cost to each
Destination Endpoint specified in the input parameters; the name for Destination Endpoint specified in the input parameters; the name for
each member in the object is the TypedEndpointAddr string identifying each member in the object is the TypedEndpointAddr string identifying
the corresponding Destination Endpoint. the corresponding Destination Endpoint. If the ALTO Server does not
define a cost from a Source Endpoint to a particular Destination
Endpoint, it MAY be omitted from the response.
7.7.5.1.6. Example 7.7.5.1.6. Example
POST /endpointcost/lookup HTTP/1.1 POST /endpointcost/lookup HTTP/1.1
Host: alto.example.com Host: alto.example.com
Content-Length: [TODO] Content-Length: [TODO]
Content-Type: application/alto-endpointcostparams+json Content-Type: application/alto-endpointcostparams+json
Accept: application/alto-endpointcost+json,application/alto-error+json Accept: application/alto-endpointcost+json,application/alto-error+json
{ {
skipping to change at page 65, line 46 skipping to change at page 66, line 46
Expert Reviewer will generally consult the ALTO Working Group or its Expert Reviewer will generally consult the ALTO Working Group or its
successor. Expert Review is used to ensure that proper documentation successor. Expert Review is used to ensure that proper documentation
regarding ALTO Cost Type semantics and security considerations has regarding ALTO Cost Type semantics and security considerations has
been provided. The provided documentation should be detailed enough been provided. The provided documentation should be detailed enough
to provide guidance to both ALTO Service Providers and applications to provide guidance to both ALTO Service Providers and applications
utilizing ALTO Clients as to how values of the registered ALTO Cost utilizing ALTO Clients as to how values of the registered ALTO Cost
Type should be interpreted. Updates and deletions of ALTO Cost Types Type should be interpreted. Updates and deletions of ALTO Cost Types
follow the same procedure. follow the same procedure.
Registered ALTO Cost Type identifiers MUST conform to the syntatical Registered ALTO Cost Type identifiers MUST conform to the syntatical
requirements specified in Section 7.5.4. Identifiers are to be requirements specified in Section 7.5.5. Identifiers are to be
recorded and displayed as ASCII strings. recorded and displayed as ASCII strings.
Identifiers prefixed with 'priv:' are reserved for Private Use. Identifiers prefixed with 'priv:' are reserved for Private Use.
Identifiers prefixed with 'exp:' are reserved for Experimental use. Identifiers prefixed with 'exp:' are reserved for Experimental use.
Requests to add a new value to the registry MUST include the Requests to add a new value to the registry MUST include the
following information: following information:
o Identifier: The name of the desired ALTO Cost Type. o Identifier: The name of the desired ALTO Cost Type.
skipping to change at page 66, line 51 skipping to change at page 67, line 51
Working Group or its successor. Expert Review is used to ensure that Working Group or its successor. Expert Review is used to ensure that
proper documentation regarding ALTO Endpoint Property semantics and proper documentation regarding ALTO Endpoint Property semantics and
security considerations has been provided. The provided security considerations has been provided. The provided
documentation should be detailed enough to provide guidance to both documentation should be detailed enough to provide guidance to both
ALTO Service Providers and applications utilizing ALTO Clients as to ALTO Service Providers and applications utilizing ALTO Clients as to
how values of the registered ALTO Endpoint Properties should be how values of the registered ALTO Endpoint Properties should be
interpreted. Updates and deletions of ALTO Endpoint Properties interpreted. Updates and deletions of ALTO Endpoint Properties
follow the same procedure. follow the same procedure.
Registered ALTO Endpoint Property identifiers MUST conform to the Registered ALTO Endpoint Property identifiers MUST conform to the
syntatical requirements specified in Section 7.5.5. Identifiers are syntatical requirements specified in Section 7.5.6. Identifiers are
to be recorded and displayed as ASCII strings. to be recorded and displayed as ASCII strings.
Identifiers prefixed with 'priv:' are reserved for Private Use. Identifiers prefixed with 'priv:' are reserved for Private Use.
Identifiers prefixed with 'exp:' are reserved for Experimental use. Identifiers prefixed with 'exp:' are reserved for Experimental use.
Requests to add a new value to the registry MUST include the Requests to add a new value to the registry MUST include the
following information: following information:
o Identifier: The name of the desired ALTO Endpoint Property. o Identifier: The name of the desired ALTO Endpoint Property.
skipping to change at page 72, line 10 skipping to change at page 73, line 10
[I-D.ietf-alto-reqs] [I-D.ietf-alto-reqs]
Previdi, S., Stiemerling, M., Woundy, R., and Y. Yang, Previdi, S., Stiemerling, M., Woundy, R., and Y. Yang,
"Application-Layer Traffic Optimization (ALTO) "Application-Layer Traffic Optimization (ALTO)
Requirements", draft-ietf-alto-reqs-08 (work in progress), Requirements", draft-ietf-alto-reqs-08 (work in progress),
March 2011. March 2011.
[I-D.ietf-alto-server-discovery] [I-D.ietf-alto-server-discovery]
Kiesel, S., Stiemerling, M., Schwan, N., Scharf, M., and Kiesel, S., Stiemerling, M., Schwan, N., Scharf, M., and
S. Yongchao, "ALTO Server Discovery", S. Yongchao, "ALTO Server Discovery",
draft-ietf-alto-server-discovery-00 (work in progress), draft-ietf-alto-server-discovery-02 (work in progress),
May 2011. September 2011.
[I-D.jennings-sip-hashcash] [I-D.jennings-sip-hashcash]
Jennings, C., "Computational Puzzles for SPAM Reduction in Jennings, C., "Computational Puzzles for SPAM Reduction in
SIP", draft-jennings-sip-hashcash-06 (work in progress), SIP", draft-jennings-sip-hashcash-06 (work in progress),
July 2007. July 2007.
[I-D.mrw-nat66] [I-D.mrw-nat66]
Wasserman, M. and F. Baker, "IPv6-to-IPv6 Network Prefix Wasserman, M. and F. Baker, "IPv6-to-IPv6 Network Prefix
Translation", draft-mrw-nat66-16 (work in progress), Translation", draft-mrw-nat66-16 (work in progress),
April 2011. April 2011.
 End of changes. 59 change blocks. 
149 lines changed or deleted 191 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/