< draft-ietf-alto-cdni-request-routing-alto-05.txt   draft-ietf-alto-cdni-request-routing-alto-06.txt >
CDNI J. Seedorf CDNI J. Seedorf
Internet-Draft HFT Stuttgart - Univ. of Applied Sciences Internet-Draft HFT Stuttgart - Univ. of Applied Sciences
Intended status: Standards Track Y. Yang Intended status: Standards Track Y. Yang
Expires: September 12, 2019 Tongji/Yale Expires: January 9, 2020 Tongji/Yale
K. Ma K. Ma
Ericsson Ericsson
J. Peterson J. Peterson
Neustar Neustar
X. Lin X. Lin
Tongji Tongji
March 11, 2019 July 8, 2019
Content Delivery Network Interconnection (CDNI) Request Routing: CDNI Content Delivery Network Interconnection (CDNI) Request Routing: CDNI
Footprint and Capabilities Advertisement using ALTO Footprint and Capabilities Advertisement using ALTO
draft-ietf-alto-cdni-request-routing-alto-05 draft-ietf-alto-cdni-request-routing-alto-06
Abstract Abstract
The Content Delivery Networks Interconnection (CDNI) framework The Content Delivery Networks Interconnection (CDNI) framework
[RFC6707] defines a set of protocols to interconnect CDNs, to achieve [RFC6707] defines a set of protocols to interconnect CDNs, to achieve
multiple goals such as extending the reach of a given CDN to areas multiple goals such as extending the reach of a given CDN to areas
that are not covered by that particular CDN. One component that is that are not covered by that particular CDN. One component that is
needed to achieve the goal of CDNI described in [RFC7336] is the CDNI needed to achieve the goal of CDNI described in [RFC7336] is the CDNI
Request Routing Footprint & Capabilities Advertisement interface Request Routing Footprint & Capabilities Advertisement interface
(FCI). [RFC8008] defines precisely the semantics of FCI and provides (FCI). [RFC8008] defines precisely the semantics of FCI and provides
skipping to change at page 1, line 48 skipping to change at page 1, line 48
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://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."
This Internet-Draft will expire on September 12, 2019. This Internet-Draft will expire on January 9, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 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
(https://trustee.ietf.org/license-info) in effect on the date of (https://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 2, line 28 skipping to change at page 2, line 28
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Background . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Background . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1. Semantics of FCI Advertisement . . . . . . . . . . . . . 5 2.1. Semantics of FCI Advertisement . . . . . . . . . . . . . 5
2.2. ALTO Background and Benefits . . . . . . . . . . . . . . 6 2.2. ALTO Background and Benefits . . . . . . . . . . . . . . 6
3. CDNI FCI Map . . . . . . . . . . . . . . . . . . . . . . . . 8 3. CDNI FCI Map . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1. Media Type . . . . . . . . . . . . . . . . . . . . . . . 8 3.1. Media Type . . . . . . . . . . . . . . . . . . . . . . . 8
3.2. HTTP Method . . . . . . . . . . . . . . . . . . . . . . . 9 3.2. HTTP Method . . . . . . . . . . . . . . . . . . . . . . . 8
3.3. Accept Input Parameters . . . . . . . . . . . . . . . . . 9 3.3. Accept Input Parameters . . . . . . . . . . . . . . . . . 9
3.4. Capabilities . . . . . . . . . . . . . . . . . . . . . . 9 3.4. Capabilities . . . . . . . . . . . . . . . . . . . . . . 9
3.5. Uses . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.5. Uses . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.6. Response . . . . . . . . . . . . . . . . . . . . . . . . 9 3.6. Response . . . . . . . . . . . . . . . . . . . . . . . . 9
3.7. Examples . . . . . . . . . . . . . . . . . . . . . . . . 11 3.7. Examples . . . . . . . . . . . . . . . . . . . . . . . . 11
3.7.1. IRD Example . . . . . . . . . . . . . . . . . . . . . 12 3.7.1. IRD Example . . . . . . . . . . . . . . . . . . . . . 11
3.7.2. Basic Example . . . . . . . . . . . . . . . . . . . . 14 3.7.2. Basic Example . . . . . . . . . . . . . . . . . . . . 14
3.7.3. Incremental Updates Example . . . . . . . . . . . . . 15 3.7.3. Incremental Updates Example . . . . . . . . . . . . . 15
4. CDNI FCI Map using ALTO Network Map . . . . . . . . . . . . . 17 4. CDNI FCI Map using ALTO Network Map . . . . . . . . . . . . . 17
4.1. Network Map Footprint Type: altonetworkmap . . . . . . . 17 4.1. Network Map Footprint Type: altonetworkmap . . . . . . . 17
4.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . 17 4.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2.1. IRD Example . . . . . . . . . . . . . . . . . . . . . 17 4.2.1. IRD Example . . . . . . . . . . . . . . . . . . . . . 17
4.2.2. ALTO Network Map for CDNI FCI Footprints Example . . 17 4.2.2. ALTO Network Map for CDNI FCI Footprints Example . . 17
4.2.3. ALTO Network Map Footprints in CDNI FCI Map . . . . . 18 4.2.3. ALTO PID Footprints in CDNI FCI . . . . . . . . . . . 18
4.2.4. Incremental Updates Example . . . . . . . . . . . . . 19 4.2.4. Incremental Updates Example . . . . . . . . . . . . . 19
5. Filtered CDNI FCI Map using Capabilities . . . . . . . . . . 21 5. Filtered CDNI FCI using Capabilities . . . . . . . . . . . . 21
5.1. Media Type . . . . . . . . . . . . . . . . . . . . . . . 21 5.1. Media Type . . . . . . . . . . . . . . . . . . . . . . . 21
5.2. HTTP Method . . . . . . . . . . . . . . . . . . . . . . . 21 5.2. HTTP Method . . . . . . . . . . . . . . . . . . . . . . . 21
5.3. Accept Input Parameters . . . . . . . . . . . . . . . . . 21 5.3. Accept Input Parameters . . . . . . . . . . . . . . . . . 21
5.4. Capabilities . . . . . . . . . . . . . . . . . . . . . . 22 5.4. Capabilities . . . . . . . . . . . . . . . . . . . . . . 22
5.5. Uses . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.5. Uses . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.6. Response . . . . . . . . . . . . . . . . . . . . . . . . 22 5.6. Response . . . . . . . . . . . . . . . . . . . . . . . . 22
5.7. Examples . . . . . . . . . . . . . . . . . . . . . . . . 23 5.7. Examples . . . . . . . . . . . . . . . . . . . . . . . . 23
5.7.1. IRD Example . . . . . . . . . . . . . . . . . . . . . 23 5.7.1. IRD Example . . . . . . . . . . . . . . . . . . . . . 23
5.7.2. Basic Example . . . . . . . . . . . . . . . . . . . . 23 5.7.2. Basic Example . . . . . . . . . . . . . . . . . . . . 23
5.7.3. Incremental Updates Example . . . . . . . . . . . . . 25 5.7.3. Incremental Updates Example . . . . . . . . . . . . . 25
6. Query Footprint Properties using ALTO Unified Property 6. Query Footprint Properties using ALTO Unified Property
Service . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Service . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.1. Representing Footprint Objects as Unified Property Map 6.1. Representing Footprint Objects as Unified Property Map
Entities . . . . . . . . . . . . . . . . . . . . . . . . 27 Entities . . . . . . . . . . . . . . . . . . . . . . . . 26
6.1.1. ASN Domain . . . . . . . . . . . . . . . . . . . . . 27 6.1.1. ASN Domain . . . . . . . . . . . . . . . . . . . . . 27
6.1.2. COUNTRYCODE Domain . . . . . . . . . . . . . . . . . 27 6.1.2. COUNTRYCODE Domain . . . . . . . . . . . . . . . . . 27
6.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . 28 6.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . 28
6.2.1. IRD Example . . . . . . . . . . . . . . . . . . . . . 28 6.2.1. IRD Example . . . . . . . . . . . . . . . . . . . . . 28
6.2.2. Property Map Example . . . . . . . . . . . . . . . . 28 6.2.2. Property Map Example . . . . . . . . . . . . . . . . 28
6.2.3. Filtered Property Map Example . . . . . . . . . . . . 30 6.2.3. Filtered Property Map Example . . . . . . . . . . . . 30
6.2.4. Incremental Updates Example . . . . . . . . . . . . . 31 6.2.4. Incremental Updates Example . . . . . . . . . . . . . 31
7. Design Decisions and Discussions . . . . . . . . . . . . . . 32 7. Design Decisions and Discussions . . . . . . . . . . . . . . 33
7.1. Table versus Map . . . . . . . . . . . . . . . . . . . . 32 7.1. Table versus Map . . . . . . . . . . . . . . . . . . . . 33
7.2. Filter-based Query versus Test-based Query . . . . . . . 33 7.2. Filter-based Query versus Test-based Query . . . . . . . 33
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34
8.1. CDNI Metadata Footprint Type Registry . . . . . . . . . . 33 8.1. CDNI Metadata Footprint Type Registry . . . . . . . . . . 34
8.2. ALTO Entity Domain Registry . . . . . . . . . . . . . . . 33 8.2. ALTO Entity Domain Registry . . . . . . . . . . . . . . . 34
8.3. ALTO CDNI FCI Property Type Registry . . . . . . . . . . 34 8.3. ALTO CDNI FCI Property Type Registry . . . . . . . . . . 34
9. Security Considerations . . . . . . . . . . . . . . . . . . . 34 9. Security Considerations . . . . . . . . . . . . . . . . . . . 35
10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 35 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 36
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 36
11.1. Normative References . . . . . . . . . . . . . . . . . . 36 11.1. Normative References . . . . . . . . . . . . . . . . . . 36
11.2. Informative References . . . . . . . . . . . . . . . . . 37 11.2. Informative References . . . . . . . . . . . . . . . . . 37
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 37 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 37
1. Introduction 1. Introduction
The ability to interconnect multiple content delivery networks (CDNs) The ability to interconnect multiple content delivery networks (CDNs)
has many benefits, including increased coverage, capability, and has many benefits, including increased coverage, capability, and
reliability. The Content Delivery Networks Interconnection (CDNI) reliability. The Content Delivery Networks Interconnection (CDNI)
framework [RFC6707] defines four interfaces to achieve framework [RFC6707] defines four interfaces to achieve
skipping to change at page 8, line 29 skipping to change at page 8, line 29
with ALTO. ALTO Path Vector Extension [I-D.ietf-alto-path-vector] with ALTO. ALTO Path Vector Extension [I-D.ietf-alto-path-vector]
is designed to allow ALTO clients to query information such as is designed to allow ALTO clients to query information such as
capacity regions for a given set of flows. capacity regions for a given set of flows.
3. CDNI FCI Map 3. CDNI FCI Map
The ALTO protocol is based on an ALTO Information Service Framework The ALTO protocol is based on an ALTO Information Service Framework
which consists of several services, where all ALTO services are which consists of several services, where all ALTO services are
"provided through a common transport protocol, messaging structure "provided through a common transport protocol, messaging structure
and encoding, and transaction model" [RFC7285]. The ALTO protocol and encoding, and transaction model" [RFC7285]. The ALTO protocol
specification [RFC7285] defines several such services, e.g. the ALTO specification [RFC7285] defines several such services, e.g., the ALTO
map service. map service.
This document defines a new ALTO Map Service called "CDNI FCI Map This document defines a new ALTO Service called "CDNI FCI Service"
Service" which conveys JSON objects of media type "application/alto- which conveys JSON objects of media type "application/alto-
cdnifcimap+json". These JSON objects are used to transport cdnifci+json". These JSON objects are used to transport
BaseAdvertisementObject objects defined in [RFC8008]; this document BaseAdvertisementObject objects defined in [RFC8008]; this document
specifies how to transport such BaseAdvertisementObject objects via specifies how to transport such BaseAdvertisementObject objects via
the ALTO protocol with the ALTO "CDNI FCI Map Service". Given that the ALTO protocol with the ALTO "CDNI FCI Service". Similar to other
the "CDNI FCI Map Service" is very similar in structure to the two ALTO services, this document defines the ALTO information resource
already defined map services (network maps and cost maps), the for the "CDNI FCI Service" as follows.
specification of CDNI FCI Map below uses the same specification
structure for Cost Map specification in Section 11.2.3 of [RFC7285]
when specifying cost maps.
3.1. Media Type 3.1. Media Type
The media type of the CDNI FCI Map is "application/alto- The media type of the CDNI FCI resource is "application/alto-
cdnifcimap+json". cdnifcimap+json".
3.2. HTTP Method 3.2. HTTP Method
A CDNI FCI map resource is requested using the HTTP GET method. A CDNI FCI resource is requested using the HTTP GET method.
3.3. Accept Input Parameters 3.3. Accept Input Parameters
None. None.
3.4. Capabilities 3.4. Capabilities
None. None.
3.5. Uses 3.5. Uses
The resource ID of the resource based on which the CDNI FCI map will The "uses" field SHOULD NOT appear unless the CDNI FCI resource
be defined. For example, if a CDNI FCI map depends on a network map, depends on some ALTO information resources. If the CDNI FCI resource
the resource ID of the network map MUST be included in "uses" field. has some dependent resources, the resource IDs of its dependent
Please see Section 4 for details. If the CDNI FCI map does not resources MUST be included into the "uses" field. This document only
depend on any other resources, "uses" field MUST NOT appear. defines one potential dependent resource for the CDNI FCI resource.
See Section 4 for details of when and how to use it. The future
documents may extend the CDNI FCI resource and allow other dependent
resources.
3.6. Response 3.6. Response
The "meta" field of a CDNI FCI map response MUST include the "vtag" The "meta" field of a CDNI FCI response MUST include the "vtag" field
field defined in Section 10.3 of [RFC7285]. This field provides the defined in Section 10.3 of [RFC7285]. This field provides the
version of the retrieved CDNI FCI map. version of the retrieved CDNI FCI map.
If a CDNI FCI map response depends on a resource such as a network If a CDNI FCI response depends on an ALTO information resource, it
map, it MUST include the "dependent-vtags" field, whose value is an MUST include the "dependent-vtags" field, whose value is an array to
array to indicate the version tags of the resources used, where each indicate the version tags of the resources used, where each resource
resource is specified in "uses" of the IRD. The current defined is specified in "uses" of its IRD entry.
dependent resource is only network map, and the usage of it is
described in Section 4.
The data component of an ALTO CDNI FCI map response is named "cdni- The data component of an ALTO CDNI FCI response is named "cdni-fci",
fci-map", which is a JSON object of type CDNIFCIMapData: which is a JSON object of type CDNIFCIData:
object { object {
CDNIFCIMapData cdni-fci-map; CDNIFCIData cdni-fci-map;
} InfoResourceCDNIFCIMap : ResponseEntityBase; } InfoResourceCDNIFCI : ResponseEntityBase;
object { object {
BaseAdvertisementObject capabilities<1..*>; BaseAdvertisementObject capabilities<1..*>;
} CDNIFCIMapData; } CDNIFCIData;
Specifically, a CDNIFCIMapData object is a JSON object that includes Specifically, a CDNIFCIData object is a JSON object that includes
only one property named "capabilities", whose value is an array of only one property named "capabilities", whose value is an array of
BaseAdvertisementObject objects. BaseAdvertisementObject objects.
The syntax and semantics of BaseAdvertisementObject are well defined The syntax and semantics of BaseAdvertisementObject are well defined
in Section 5.1 of [RFC8008]. A BaseAdvertisementObject object in Section 5.1 of [RFC8008]. A BaseAdvertisementObject object
includes multiple properties, including capability-type, capability- includes multiple properties, including capability-type, capability-
value and footprints, where footprints are defined in Section 4.2.2.2 value and footprints, where footprints are defined in Section 4.2.2.2
of [RFC8006]. of [RFC8006].
To be self-contained, we give a non-normative specification of To be self-contained, we give a non-normative specification of
skipping to change at page 11, line 43 skipping to change at page 11, line 39
] ]
}, },
"footprints": [ "footprints": [
<Footprint objects> <Footprint objects>
] ]
} }
] ]
} }
} }
Since such optimizations are not necessary for the basic Since such optimizations are not required for the basic
interconnection of CDNs, the specifics of such mechanisms are outside interconnection of CDNs, the specifics of such mechanisms are outside
the scope of this document. the scope of this document.
3.7. Examples 3.7. Examples
3.7.1. IRD Example 3.7.1. IRD Example
Below is the information resource directory (IRD) of a simple, Below is the information resource directory (IRD) of a simple,
example ALTO server. The server provides both base ALTO information example ALTO server. The server provides both base ALTO information
resources (e.g., network maps) and CDNI FCI information resources resources (e.g., network maps) and CDNI FCI related information
(e.g., CDNI FCI map), demonstrating a single, integrated environment. resources (e.g., CDNI FCI resource), demonstrating a single,
integrated environment.
Specifically, the IRD announces two network maps, one CDNI FCI map Specifically, the IRD announces two network maps, one CDNI FCI
without dependency, one CDNI FCI map depending on a network map, one resource without dependency, one CDNI FCI resource depending on a
filtered CDNI FCI map to be defined in Section 5, one unified network map, one filtered CDNI FCI resource to be defined in
property map including "cdni-fci-capabilities" as its entities' Section 5, one unified property map including "cdni-fci-capabilities"
property, one filtered unified property map including "cdni-fci- as its entity property, one filtered unified property map including
capabilities" and "pid" as its entities' properties, and two update "cdni-fci-capabilities" and "pid" as its entity properties, and two
stream services (one for updating CDNI FCI maps, and the other for update stream services (one for updating CDNI FCI resources, and the
updating property maps). other for updating property maps).
GET /directory HTTP/1.1 GET /directory HTTP/1.1
Host: alto.example.com Host: alto.example.com
Accept: application/alto-directory+json,application/alto-error+json Accept: application/alto-directory+json,application/alto-error+json
{ {
"meta" : { ... }, "meta" : { ... },
"resources": { "resources": {
"my-default-network-map": { "my-default-network-map": {
"uri" : "http://alto.example.com/networkmap", "uri" : "http://alto.example.com/networkmap",
"media-type" : "application/alto-networkmap+json" "media-type" : "application/alto-networkmap+json"
}, },
"my-eu-netmap" : { "my-eu-netmap" : {
"uri" : "http://alto.example.com/myeunetmap", "uri" : "http://alto.example.com/myeunetmap",
"media-type" : "application/alto-networkmap+json" "media-type" : "application/alto-networkmap+json"
}, },
"my-default-cdnifci-map": { "my-default-cdnifci": {
"uri" : "http://alto.example.com/cdnifcimap", "uri" : "http://alto.example.com/cdnifci",
"media-type": "application/alto-cdnifcimap+json" "media-type": "application/alto-cdnifci+json"
}, },
"my-filtered-cdnifci-map" : { "my-filtered-cdnifci" : {
"uri" : "http://alto.example.com/cdnifcimap/filtered", "uri" : "http://alto.example.com/cdnifci/filtered",
"media-type" : "application/alto-cdnifcimap+json", "media-type" : "application/alto-cdnifci+json",
"accepts" : "application/alto-cdnifcimapfilter+json", "accepts" : "application/alto-cdnifcifilter+json",
"uses" : [ "my-default-cdnifci-map" ] "uses" : [ "my-default-cdnifci" ]
}, },
"my-cdnifci-map-with-network-map-footprints": { "my-cdnifci-with-pid-footprints": {
"uri" : "http://alto.example.com/networkcdnifcimap", "uri" : "http://alto.example.com/networkcdnifci",
"media-type" : "application/alto-cdnifcimap+json", "media-type" : "application/alto-cdnifci+json",
"uses" : [ "my-eu-netmap" ] "uses" : [ "my-eu-netmap" ]
}, },
"cdnifci-property-map" : { "cdnifci-property-map" : {
"uri" : "http://alto.example.com/propmap/full/cdnifci", "uri" : "http://alto.example.com/propmap/full/cdnifci",
"media-type" : "application/alto-propmap+json", "media-type" : "application/alto-propmap+json",
"uses": [ "my-default-cdni" ],
"capabilities" : { "capabilities" : {
"domain-types" : [ "ipv4", "ipv6", "coutrycode", "asn" ], "mappings": {
"prop-types" : [ "cdni-fci-capabilities" ] "ipv4": [ "my-default-cdni.cdni-fci-capabilities" ],
"ipv6": [ "my-default-cdni.cdni-fci-capabilities" ],
"countrycode": [
"my-default-cdni.cdni-fci-capabilities" ],
"asn": [ "my-default-cdni.cdni-fci-capabilities" ],
}
} }
}, },
"filtered-cdnifci-property-map" : { "filtered-cdnifci-property-map" : {
"uri" : "http://alto.example.com/propmap/lookup/cdnifci-pid", "uri" : "http://alto.example.com/propmap/lookup/cdnifci-pid",
"media-type" : "application/alto-propmap+json", "media-type" : "application/alto-propmap+json",
"accepts" : "application/alto-propmapparams+json", "accepts" : "application/alto-propmapparams+json",
"uses": [ "my-default-cdni", "my-default-network-map" ],
"capabilities" : { "capabilities" : {
"domain-types" : [ "ipv4", "ipv6", "coutrycode", "asn" ], "mappings": {
"prop-types" : [ "cdni-fci-capabilities", "pid" ] "ipv4": [ "my-default-cdni.cdni-fci-capabilities",
} "my-default-network-map.pid" ],
"ipv6": [ "my-default-cdni.cdni-fci-capabilities",
"my-default-network-map.pid" ],
"countrycode": [
"my-default-cdni.cdni-fci-capabilities" ],
"asn": [ "my-default-cdni.cdni-fci-capabilities" ],
}
}
}, },
"update-my-cdni-fci-maps" : { "update-my-cdni-fci" : {
"uri": "http:///alto.example.com/updates/cdnifcimaps", "uri": "http:///alto.example.com/updates/cdnifci",
"media-type" : "text/event-stream", "media-type" : "text/event-stream",
"accepts" : "application/alto-updatestreamparams+json", "accepts" : "application/alto-updatestreamparams+json",
"uses" : [ "uses" : [
"my-default-network-map", "my-default-network-map",
"my-eu-netmap", "my-eu-netmap",
"my-default-cdnifci-map", "my-default-cdnifci",
"my-filtered-cdnifci-map" "my-filtered-cdnifci"
"my-cdnifci-map-with-network-map-footprints" "my-cdnifci-with-pid-footprints"
], ],
"capabilities" : { "capabilities" : {
"incremental-change-media-types" : { "incremental-change-media-types" : {
"my-default-network-map" : "application/json-patch+json", "my-default-network-map" : "application/json-patch+json",
"my-eu-netmap" : "application/json-patch+json", "my-eu-netmap" : "application/json-patch+json",
"my-default-cdnifci-map" : "my-default-cdnifci" :
"application/merge-patch+json,application/json-patch+json", "application/merge-patch+json,application/json-patch+json",
"my-filtered-cdnifci-map" : "my-filtered-cdnifci" :
"application/merge-patch+jso,application/json-patch+json", "application/merge-patch+jso,application/json-patch+json",
"my-cdnifci-map-with-network-map-footprints" : "my-cdnifci-with-pid-footprints" :
"application/merge-patch+json,application/json-patch+json" "application/merge-patch+json,application/json-patch+json"
} }
} }
}, },
"update-my-props": { "update-my-props": {
"uri" : "http://alto.example.com/updates/properties", "uri" : "http://alto.example.com/updates/properties",
"media-type" : "text/event-stream", "media-type" : "text/event-stream",
"uses" : [ "uses" : [
"cdnifci-property-map", "cdnifci-property-map",
"filtered-cdnifci-property-map" "filtered-cdnifci-property-map"
], ],
"capabilities" : { "capabilities" : {
"incremental-change-media-types": { "incremental-change-media-types": {
"cdnifci-property-map" : "cdnifci-property-map" :
"application/merge-patch+json,application/json-patch+json", "application/merge-patch+json,application/json-patch+json",
"filtered-cdnifci-property-map": "filtered-cdnifci-property-map":
"application/merge-patch+json,application/json-patch+json" "application/merge-patch+json,application/json-patch+json"
} }
} }
} }
} }
} }
3.7.2. Basic Example 3.7.2. Basic Example
In this example, we demonstrate a simple CDNI FCI map; this map does In this example, we demonstrate a simple CDNI FCI resource; this
not depend on other resources. There are three resource does not depend on other resources. There are three
BaseAdvertisementObjects in this map and these objects' capabilities BaseAdvertisementObjects in this map and these objects' capabilities
are http/1.1 delivery protocol, [http/1.1, https/1.1] delivery are http/1.1 delivery protocol, [http/1.1, https/1.1] delivery
protocol and https/1.1 acquisition protocol respectively. protocol and https/1.1 acquisition protocol respectively.
GET /cdnifcimap HTTP/1.1 GET /cdnifci HTTP/1.1
Host: alto.example.com Host: alto.example.com
Accept: application/alto-cdnifcimap+json Accept: application/alto-cdnifci+json,
Accept: application/alto-error+json application/alto-error+json
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: XXX Content-Length: XXX
Content-Type: application/alto-cdnifcimap+json Content-Type: application/alto-cdnifci+json
{ {
"meta" : { "meta" : {
"vtag": { "vtag": {
"resource-id": "my-default-cdnifci-map", "resource-id": "my-default-cdnifci",
"tag": "da65eca2eb7a10ce8b059740b0b2e3f8eb1d4785" "tag": "da65eca2eb7a10ce8b059740b0b2e3f8eb1d4785"
} }
}, },
"cdni-fci-map": { "cdni-fci": {
"capabilities": [ "capabilities": [
{ {
"capability-type": "FCI.DeliveryProtocol", "capability-type": "FCI.DeliveryProtocol",
"capability-value": { "capability-value": {
"delivery-protocols": [ "delivery-protocols": [
"http/1.1" "http/1.1"
] ]
}, },
"footprints": [ "footprints": [
<Footprint objects> <Footprint objects>
] ]
}, },
{ {
"capability-type": "FCI.DeliveryProtocol", "capability-type": "FCI.DeliveryProtocol",
"capability-value": { "capability-value": {
"delivery-protocols": [ "delivery-protocols": [
"https/1.1", "https/1.1",
skipping to change at page 15, line 36 skipping to change at page 15, line 44
} }
} }
3.7.3. Incremental Updates Example 3.7.3. Incremental Updates Example
A benefit of using ALTO to provide CDNI FCI maps is that such maps A benefit of using ALTO to provide CDNI FCI maps is that such maps
can be updated using ALTO incremental updates. Below is an example can be updated using ALTO incremental updates. Below is an example
that also shows the benefit of having both JSON merge patch and JSON that also shows the benefit of having both JSON merge patch and JSON
patch to encode updates. patch to encode updates.
At first, an ALTO client requests the ALTO server updates for "my- At first, an ALTO client requests updates for "my-default-cdnifci",
default-cdnifci-map", and the ALTO server returns the "control-uri" and the ALTO server returns the "control-uri" followed by the full
followed by the full CDNI FCI map. Then when there is a huge change CDNI FCI response. Then when there is a change in the delivery-
in footprint objects in delivery-protocol http/1.1, the ALTO server protocols in that `http/2` is removed (from http/1.1 and http/2 to
uses JSON merge patch to encode the change and sends it to the ALTO only http/1.1) due to maintenance of the http/2 clusters, the ALTO
client. Later on, the ALTO server notifies the ALTO client that server uses JSON merge patch to encode the change and pushes the
"ipv4:192.0.2.0/24" is added into the footprints in delivery-protocol change to the ALTO client. Later on, the ALTO server notifies the
http/1.1 by sending the change encoded by JSON patch to the ALTO ALTO client that "ipv4:192.0.2.0/24" is added into the footprint for
client. delivery-protocol http/1.1 by sending the change encoded by JSON
patch to the ALTO client.
POST /updates/cdnifcimaps HTTP/1.1 POST /updates/cdnifci HTTP/1.1
Host: alto.example.com Host: alto.example.com
Accept: text/event-stream,application/alto-error+json Accept: text/event-stream,application/alto-error+json
Content-Type: application/alto-updatestreamparams+json Content-Type: application/alto-updatestreamparams+json
Content-Length: ### Content-Length: ###
{ "add": { { "add": {
"my-cdnifci-stream": { "my-cdnifci-stream": {
"resource-id": "my-default-cdnifci-map" "resource-id": "my-default-cdnifci"
} }
} }
HTTP/1.1 200 OK HTTP/1.1 200 OK
Connection: keep-alive Connection: keep-alive
Content-Type: text/event-stream Content-Type: text/event-stream
event: application/alto-updatestreamcontrol+json event: application/alto-updatestreamcontrol+json
data: {"control-uri": data: {"control-uri":
data: "http://alto.example.com/updates/streams/3141592653589"} data: "http://alto.example.com/updates/streams/3141592653589"}
event: application/alto-cdnifcimap+json,my-default-cdnifci-map event: application/alto-cdnifci+json,my-default-cdnifci
data: { ... full CDNI FCI map ... } data: { ... full CDNI FCI map ... }
event: application/merge-patch+json,my-default-cdnifci-map event: application/merge-patch+json,my-default-cdnifci
data: { data: {
data: "meta": { data: "meta": {
data: "vtag": { data: "vtag": {
data: "tag": "dasdfa10ce8b059740bddsfasd8eb1d47853716" data: "tag": "dasdfa10ce8b059740bddsfasd8eb1d47853716"
data: } data: }
data: }, data: },
data: { data: "cdni-fci": {
data: "capability-type": "FCI.DeliveryProtocol", data: "capabilities": [
data: "capability-value": { data: {
data: "delivery-protocols": [ data: "capability-type": "FCI.DeliveryProtocol",
data: "http/1.1" data: "capability-value": {
data: ] data: "delivery-protocols": [
data: }, data: "http/1.1"
data: "footprints": [ data: ]
data: <Footprint objects that are different from data: },
data: footprint objects in delivery-protocols http/1.1> data: "footprints": [
data: <Footprint objects in only http/1.1>
data: ]
data: }
data: ] data: ]
data: } data: }
data: } data: }
event: application/json-patch+json,my-default-cdnifci-map event: application/json-patch+json,my-default-cdnifci
data: [ data: [
data: { data: {
data: "op": "replace", data: "op": "replace",
data: "path": "/meta/vtag/tag", data: "path": "/meta/vtag/tag",
data: "value": "a10ce8b059740b0b2e3f8eb1d4785acd42231bfe" data: "value": "a10ce8b059740b0b2e3f8eb1d4785acd42231bfe"
data: }, data: },
data: { "op": "add", data: { "op": "add",
data: "path": "/cdni-fci-map/capabilities/0/footprints/-", data: "path": "/cdni-fci/capabilities/0/footprints/-",
data: "value": "ipv4:192.0.2.0/24" data: "value": "ipv4:192.0.2.0/24"
data: } data: }
data: ] data: ]
4. CDNI FCI Map using ALTO Network Map 4. CDNI FCI Map using ALTO Network Map
4.1. Network Map Footprint Type: altonetworkmap 4.1. Network Map Footprint Type: altonetworkmap
In addition to the already defined CDNI footprint types (e.g., The ALTO protocol defines a concept called PID to represent a group
ipv4cidr, ipv6cidr, asn, countrycode), ALTO network maps can be a of IPv4 or IPv6 addresses which can be applied the same management
type of FCI footprint. policy. The PID is an alternative to the pre-defined CDNI footprint
types (i.e., ipv4cidr, ipv6cidr, asn, and countrycode).
Specifically, CDNI footprints using ALTO network maps should use a Specifically, a CDNI FCI resource can depend on an ALTO network map
new CDNI Footprint Type called "altonetworkmap". resource and use a new CDNI Footprint Type called "altopid" to
compress its CDNI Footprint Payload.
"altonetworkmap" footprint type indicates that the corresponding "altopid" footprint type indicates that the corresponding footprint
footprint value is a list of PIDNames as defined in [RFC7285]. These value is a list of PIDNames as defined in [RFC7285]. These PIDNames
PIDNames are references of PIDs in a network map resource. Hence a are references of PIDs in a network map resource. Hence a CDNI FCI
CDNI FCI map with "altonetworkmap" footprints depends on a network with "altopid" footprints depends on a network map. For such a CDNI
map. For such a CDNI FCI map, the "dependent-vtag" field with a FCI map, the resource id of its dependent network map MUST be
reference to a network map it depends on MUST be included in it (see included in the "uses" field of its IRD entry, and the "dependent-
the example in Section 4.2.3). vtag" field with a reference to this network map MUST be included in
its response (see the example in Section 4.2.3).
4.2. Examples 4.2. Examples
4.2.1. IRD Example 4.2.1. IRD Example
We use the same IRD example given in Section 3.7.1. We use the same IRD example given in Section 3.7.1.
4.2.2. ALTO Network Map for CDNI FCI Footprints Example 4.2.2. ALTO Network Map for CDNI FCI Footprints Example
Below is an example network map whose resource id is "my-eu-netmap", Below is an example network map whose resource id is "my-eu-netmap",
and this map is referenced by the CDNI FCI map example in and this map is referenced by the CDNI FCI example in Section 4.2.3.
Section 4.2.3.
GET /networkmap HTTP/1.1 GET /networkmap HTTP/1.1
Host: http://alto.example.com/myeunetmap Host: http://alto.example.com/myeunetmap
Accept: application/alto-networkmap+json,application/alto-error+json Accept: application/alto-networkmap+json,application/alto-error+json
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: XXX Content-Length: XXX
Content-Type: application/alto-networkmap+json Content-Type: application/alto-networkmap+json
{ {
"meta" : { "meta" : {
"vtag": [ "vtag": [
{"resource-id": "my-eu-netmap", {"resource-id": "my-eu-netmap",
"tag": "3ee2cb7e8d63d9fab71b9b34cbf764436315542e" "tag": "3ee2cb7e8d63d9fab71b9b34cbf764436315542e"
} }
skipping to change at page 18, line 26 skipping to change at page 18, line 31
"network-map" : { "network-map" : {
"south-france" : { "south-france" : {
"ipv4" : [ "192.0.2.0/24", "198.51.100.0/25" ] "ipv4" : [ "192.0.2.0/24", "198.51.100.0/25" ]
}, },
"germany" : { "germany" : {
"ipv4" : [ "192.0.3.0/24"] "ipv4" : [ "192.0.3.0/24"]
} }
} }
} }
4.2.3. ALTO Network Map Footprints in CDNI FCI Map 4.2.3. ALTO PID Footprints in CDNI FCI
In this example, we show a CDNI FCI map that depends on a network map In this example, we show a CDNI FCI resource that depends on a
described in Section 4.2.2. network map described in Section 4.2.2.
GET /networkcdnifcimap HTTP/1.1 GET /networkcdnifci HTTP/1.1
Host: alto.example.com Host: alto.example.com
Accept: application/alto-cdnifcimap+json,application/alto-error+json Accept: application/alto-cdnifci+json,application/alto-error+json
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: 618 Content-Length: 618
Content-Type: application/alto-cdnifcimap+json Content-Type: application/alto-cdnifci+json
{ {
"meta" : { "meta" : {
"dependent-vtags" : [ "dependent-vtags" : [
{ {
"resource-id": "my-eu-netmap", "resource-id": "my-eu-netmap",
"tag": "3ee2cb7e8d63d9fab71b9b34cbf764436315542e" "tag": "3ee2cb7e8d63d9fab71b9b34cbf764436315542e"
} }
] ]
}, },
"cdni-fci-map": { "cdni-fci": {
"capabilities": [ "capabilities": [
{ "capability-type": "FCI.DeliveryProtocol", { "capability-type": "FCI.DeliveryProtocol",
"capability-value": [ "capability-value": [
"http/1.1" "http/1.1"
] ]
}, },
{ "capability-type": "FCI.DeliveryProtocol", { "capability-type": "FCI.DeliveryProtocol",
"capability-value": [ "capability-value": [
"https/1.1" "https/1.1"
], ],
"footprints": [ "footprints": [
{ "footprint-type": "altonetworkmap", { "footprint-type": "altopid",
"footprint-value": [ "footprint-value": [
"germany", "germany",
"south-france" "south-france"
] ]
} }
] ]
} }
] ]
} }
} }
4.2.4. Incremental Updates Example 4.2.4. Incremental Updates Example
In this example, the ALTO client is interested in changes of "my- In this example, the ALTO client is interested in changes of "my-
cdnifci-map-with-network-map-footprints". Considering two changes, cdnifci-with-pid-footprints". Considering two changes, the first one
the first one is to change footprints of http/1.1 Delivery Protocol is to change footprints of http/1.1 Delivery Protocol capability, and
capability, and the second one is to remove "south-france" from the the second one is to remove "south-france" from the footprints of
footprints of https/1.1 delivery protocol capability. https/1.1 delivery protocol capability.
POST /updates/cdnifcimaps HTTP/1.1 POST /updates/cdnifci HTTP/1.1
Host: alto.example.com Host: alto.example.com
Accept: text/event-stream,application/alto-error+json Accept: text/event-stream,application/alto-error+json
Content-Type: application/alto-updatestreamparams+json Content-Type: application/alto-updatestreamparams+json
Content-Length: ### Content-Length: ###
{ "add": { { "add": {
"my-network-map-cdnifci-stream": { "my-network-map-cdnifci-stream": {
"resource-id": "my-cdnifci-map-with-network-map-footprints" "resource-id": "my-cdnifci-with-pid-footprints"
} }
} }
HTTP/1.1 200 OK HTTP/1.1 200 OK
Connection: keep-alive Connection: keep-alive
Content-Type: text/event-stream Content-Type: text/event-stream
event: application/alto-updatestreamcontrol+json event: application/alto-updatestreamcontrol+json
data: {"control-uri": data: {"control-uri":
data: "http://alto.example.com/updates/streams/3141592653590"} data: "http://alto.example.com/updates/streams/3141592653590"}
event: application/alto-cdnifcimap+json,my-fci-stream event: application/alto-cdnifci+json,my-fci-stream
data: { ... full CDNI FCI map ... } data: { ... full CDNI FCI map ... }
event: application/merge-patch+json,my-fci-stream event: application/merge-patch+json,my-fci-stream
data: { data: {
data: "meta": { data: "meta": {
data: "dependent-vtags" : [ data: "dependent-vtags" : [
data: { data: {
data: "resource-id": "my-eu-netmap", data: "resource-id": "my-eu-netmap",
data: "tag": "3ee2cb7e8d63d9fab71b9b34cbf764436315542e" data: "tag": "3ee2cb7e8d63d9fab71b9b34cbf764436315542e"
data: } data: }
skipping to change at page 20, line 45 skipping to change at page 20, line 45
data: } data: }
data: }, data: },
data: { data: {
data: "capability-type": "FCI.DeliveryProtocol", data: "capability-type": "FCI.DeliveryProtocol",
data: "capability-value": { data: "capability-value": {
data: "delivery-protocols": [ data: "delivery-protocols": [
data: "http/1.1" data: "http/1.1"
data: ] data: ]
data: }, data: },
data: "footprints": [ data: "footprints": [
data: <Footprint objects that are different from data: <All footprint objects in http/1.1>
data: footprint objects in delivery-protocols http/1.1>
data: ] data: ]
data: } data: }
data: } data: }
event: application/json-patch+json,my-fci-stream event: application/json-patch+json,my-fci-stream
data: [ data: [
data: { data: {
data: "op": "replace", data: "op": "replace",
data: "path": "/meta/vtag/tag", data: "path": "/meta/vtag/tag",
data: "value": "a10ce8b059740b0b2e3f8eb1d4785acd42231bfe" data: "value": "a10ce8b059740b0b2e3f8eb1d4785acd42231bfe"
data: }, data: },
data: { "op": "remove", data: { "op": "remove",
data: "path": "/cdni-fci-map/capabilities/2/footprints/0/ data: "path": "/cdni-fci/capabilities/2/footprints/0/
data: footprint-value/1", data: footprint-value/1",
data: } data: }
data: ] data: ]
5. Filtered CDNI FCI Map using Capabilities 5. Filtered CDNI FCI using Capabilities
Section 3 and Section 4 describe CDNI FCI Map Service which can be Section 3 and Section 4 describe CDNI FCI Service which can be used
used to enable a uCDN to get capabilities with footprints constrains to enable a uCDN to get capabilities with footprints constrains from
from dCDNs. However, always getting full CDNI FCI maps from dCDNs is dCDNs. However, always getting full CDNI FCI resources from dCDNs is
very inefficient, hence we introduce a new service named "Filtered very inefficient, hence we introduce a new service named "Filtered
CDNI FCI Map Service" to allow a client to filter a CDNI FCI map CDNI FCI Service" to allow a client to filter a CDNI FCI resource
using a client-given set of capabilities. For each entry of the CDNI using a client-given set of capabilities. For each entry of the CDNI
FCI map, only if the entry contains at least one of the client-given FCI response, only if the entry contains at least one of the client-
capabilities will it be returned to the client. The relationship given capabilities will it be returned to the client. The
between a filtered CDNI FCI map and a CDNI FCI map is similar to the relationship between a filtered CDNI FCI resource and a CDNI FCI
relationship between a filtered network/cost map and a network/cost resource is similar to the relationship between a filtered network/
map. cost map and a network/cost map.
5.1. Media Type 5.1. Media Type
Since a filtered CDNI FCI map is still a CDNI FCI map, it uses the A filtered CDNI FCI resource uses the same media type defined for the
media type defined for CDNI FCI maps in Section 3.1. CDNI FCI resource in Section 3.1.
5.2. HTTP Method 5.2. HTTP Method
A filtered CDNI FCI map is requested using the HTTP POST method. A filtered CDNI FCI resource is requested using the HTTP POST method.
5.3. Accept Input Parameters 5.3. Accept Input Parameters
The input parameters for a filtered CDNI FCI map are supplied in the The input parameters for a filtered CDNI FCI resource are supplied in
entity body of the POST request. This document specifies the input the entity body of the POST request. This document specifies the
parameters with a data format indicated by the media type input parameters with a data format indicated by the media type
"application/alto-cdnifcifilter+json" which is a JSON object of type "application/alto-cdnifcifilter+json" which is a JSON object of type
ReqFilteredCDNIFCIMap, where: ReqFilteredCDNIFCI, where:
object { object {
JSONString capability-type; JSONString capability-type;
JSONValue capability-value; JSONValue capability-value;
} CDNIFCICapability; } CDNIFCICapability;
object { object {
[CDNIFCICapability cdni-fci-capabilities<0..*>;] [CDNIFCICapability cdni-fci-capabilities<0..*>;]
} ReqFilteredCDNIFCIMap; } ReqFilteredCDNIFCI;
with fields: with fields:
capability-type: The same as Base Advertisement Object's capability- capability-type: The same as Base Advertisement Object's capability-
type defined in Section 5.1 of [RFC8008]. type defined in Section 5.1 of [RFC8008].
capability-value: The same as Base Advertisement Object's capability-value: The same as Base Advertisement Object's
capability-value defined in Section 5.1 of [RFC8008]. capability-value defined in Section 5.1 of [RFC8008].
cdni-fci-capabilities: A list of CDNI FCI capabilities defined in cdni-fci-capabilities: A list of CDNI FCI capabilities defined in
Section 5.1 of [RFC8008] for which footprints are to be returned. Section 5.1 of [RFC8008] for which footprints are to be returned.
If a list is empty or not appearing, the ALTO server MUST If a list is empty or not appearing, the ALTO server MUST
interpret it as a request for the full CDNI FCI Map. The ALTO interpret it as a request for the full CDNI FCI Map. The ALTO
server MUST interpret entries appearing in a list multiple times server MUST interpret entries appearing in a list multiple times
as if they appeared only once. If a "capability-type" or a as if they appeared only once.
"capability-value" is not defined, the ALTO server MUST ignore
this capability. If there is only one capability in the list and
its "capability-type" or "capability-value" is not defined, the
ALTO server MUST return nothing.
5.4. Capabilities 5.4. Capabilities
None. None.
5.5. Uses 5.5. Uses
The resource ID of the CDNI FCI map based on which the filtering is The resource ID of the CDNI FCI resource based on which the filtering
performed. is performed.
5.6. Response 5.6. Response
The response MUST indicate an error, using ALTO protocol error The response MUST indicate an error, using ALTO protocol error
handling specified in Section 8.5 of the ALTO protocol [RFC7285], if handling specified in Section 8.5 of the ALTO protocol [RFC7285], if
the request is invalid. the request is invalid.
Specifically, a filtered CDNI FCI map request can be invalid as Specifically, a filtered CDNI FCI request is invalid if:
follows:
o The value of "capability-type" is null; o the value of "capability-type" is null;
o The value of "capability-value" is null;
o The value of "capability-value" is inconsistent with "capability- o the value of "capability-value" is null;
o the value of "capability-value" is inconsistent with "capability-
type". type".
When the request is invalid, the ALTO server MUST return an When a request is invalid, the ALTO server MUST return an
"E_INVALID_FIELD_VALUE" error defined in Section 8.5.2 of [RFC7285], "E_INVALID_FIELD_VALUE" error defined in Section 8.5.2 of [RFC7285],
and the "value" field of the error message SHOULD indicate this CDNI and the "value" field of the error message SHOULD indicate this CDNI
FCI capability. FCI capability.
The ALTO server return a filtered CDNI FCI map for a valid request. The ALTO server returns a filtered CDNI FCI resource for a valid
The format of a filtered CDNI FCI map is the same as an unfiltered request. The format of a filtered CDNI FCI resource is the same as
CDNI FCI map. See Section 3.6 for the format. an full CDNI FCI resource (See Section 3.6.)
The returned CDNI FCI map MUST contain only BaseAdvertisementObject The returned CDNI FCI resource MUST contain only
objects whose CDNI capability object is the superset of one of CDNI BaseAdvertisementObject objects whose CDNI capability object is the
capability object in "cdni-fci-capabilities". Specifically, that a superset of one of CDNI capability object in "cdni-fci-capabilities".
CDNI capability object A is the superset of another CDNI capability Specifically, that a CDNI capability object A is the superset of
object B means that these two CDNI capability objects have the same another CDNI capability object B means that these two CDNI capability
capability type and mandatory properties in capability value of A objects have the same capability type and mandatory properties in
MUST include mandatory properties in capability value of B capability value of A MUST include mandatory properties in capability
semantically. See Section 5.7.2 for a concrete example. value of B semantically. See Section 5.7.2 for a concrete example.
The version tag included in the "vtag" field of the response MUST The version tag included in the "vtag" field of the response MUST
correspond to the full CDNI FCI map resource from which the filtered correspond to the full CDNI FCI resource from which the filtered CDNI
CDNI FCI map is provided. This ensures that a single, canonical FCI resource is provided. This ensures that a single, canonical
version tag is used independently of any filtering that is requested version tag is used independently of any filtering that is requested
by an ALTO client. by an ALTO client.
5.7. Examples 5.7. Examples
5.7.1. IRD Example 5.7.1. IRD Example
We use the same IRD example by Section 3.7.1. We use the same IRD example by Section 3.7.1.
5.7.2. Basic Example 5.7.2. Basic Example
This example filters the full CDNI FCI map in Section 3.7.2 by This example filters the full CDNI FCI resource in Section 3.7.2 by
selecting only http/1.1 delivery protocol capability. Only the first selecting only http/1.1 delivery protocol capability. Only the first
two BaseAdvertisementObjects in the full map will be returned because two BaseAdvertisementObjects in the full map will be returned because
the first object's capability is http/1.1 delivery protocol and the the first object's capability is http/1.1 delivery protocol and the
second object's capability is http/1.1 and https/1.1 delivery second object's capability is http/1.1 and https/1.1 delivery
protocols which is the superset of http/1.1 delivery protocol. protocols which is the superset of http/1.1 delivery protocol.
POST /cdnifcimap/filtered HTTP/1.1 POST /cdnifci/filtered HTTP/1.1
HOST: alto.example.com HOST: alto.example.com
Content-Type: application/cdnifilter+json Content-Type: application/cdnifilter+json
Accept: application/alto-cdnifcimap+json Accept: application/alto-cdnifci+json
{ {
"cdni-fci-capabilities": [ "cdni-fci-capabilities": [
{ {
"capability-type": "FCI.DeliveryProtocol", "capability-type": "FCI.DeliveryProtocol",
"capability-value": { "capability-value": {
"delivery-protocols": [ "delivery-protocols": [
"http/1.1" "http/1.1"
] ]
} }
} }
] ]
} }
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: XXX Content-Length: XXX
Content-Type: application/alto-cdnifcimap+json Content-Type: application/alto-cdnifci+json
{ {
"meta" : { "meta" : {
"vtag": { "vtag": {
"resource-id": "my-default-cdnifci-map", "resource-id": "my-default-cdnifci",
"tag": "da65eca2eb7a10ce8b059740b0b2e3f8eb1d4785" "tag": "da65eca2eb7a10ce8b059740b0b2e3f8eb1d4785"
} }
}, },
"cdni-fci-map": { "cdni-fci": {
"capabilities": [ "capabilities": [
{ {
"capability-type": "FCI.DeliveryProtocol", "capability-type": "FCI.DeliveryProtocol",
"capability-value": { "capability-value": {
"delivery-protocols": [ "delivery-protocols": [
"http/1.1" "http/1.1"
] ]
}, },
"footprints": [ "footprints": [
<Footprint objects> <Footprint objects>
skipping to change at page 25, line 15 skipping to change at page 25, line 11
] ]
} }
} }
5.7.3. Incremental Updates Example 5.7.3. Incremental Updates Example
In this example, the ALTO client only cares about the updates of one In this example, the ALTO client only cares about the updates of one
Delivery Protocol object whose value is "http/1.1". So it adds its Delivery Protocol object whose value is "http/1.1". So it adds its
limitation of capabilities in "input" field of the POST request. limitation of capabilities in "input" field of the POST request.
POST /updates/cdnifcimaps HTTP/1.1 POST /updates/cdnifci HTTP/1.1
Host: fcialtoupdate.example.com Host: fcialtoupdate.example.com
Accept: text/event-stream,application/alto-error+json Accept: text/event-stream,application/alto-error+json
Content-Type: application/alto-updatestreamparams+json Content-Type: application/alto-updatestreamparams+json
Content-Length: ### Content-Length: ###
{ "add": { { "add": {
"my-fci-stream": { "my-fci-stream": {
"resource-id": "my-filtered-cdnifci-map", "resource-id": "my-filtered-cdnifci",
"input": { "input": {
"cdni-fci-capabilities": [ "cdni-fci-capabilities": [
{ {
"capability-type": "FCI.DeliveryProtocol", "capability-type": "FCI.DeliveryProtocol",
"capability-value": { "capability-value": {
"delivery-protocols": [ "delivery-protocols": [
"http/1.1" "http/1.1"
] ]
} }
} }
skipping to change at page 25, line 48 skipping to change at page 25, line 44
} }
HTTP/1.1 200 OK HTTP/1.1 200 OK
Connection: keep-alive Connection: keep-alive
Content-Type: text/event-stream Content-Type: text/event-stream
event: application/alto-updatestreamcontrol+json event: application/alto-updatestreamcontrol+json
data: {"control-uri": data: {"control-uri":
data: "http://alto.example.com/updates/streams/3141592653590"} data: "http://alto.example.com/updates/streams/3141592653590"}
event: application/alto-cdnifcimap+json,my-fci-stream event: application/alto-cdnifci+json,my-fci-stream
data: { ... full filtered CDNI FCI map ... } data: { ... full filtered CDNI FCI map ... }
event: application/merge-patch+json,my-fci-stream event: application/merge-patch+json,my-fci-stream
data: { data: {
data: "meta": { data: "meta": {
data: "vtag": { data: "vtag": {
data: "tag": "dasdfa10ce8b059740bddsfasd8eb1d47853716" data: "tag": "dasdfa10ce8b059740bddsfasd8eb1d47853716"
data: } data: }
data: }, data: },
data: { data: {
data: "capability-type": "FCI.DeliveryProtocol", data: "capability-type": "FCI.DeliveryProtocol",
data: "capability-value": { data: "capability-value": {
data: "delivery-protocols": [ data: "delivery-protocols": [
data: "http/1.1" data: "http/1.1"
data: ] data: ]
data: }, data: },
data: "footprints": [ data: "footprints": [
data: <Footprint objects that are different from data: <All footprint objects in http/1.1>
data: footprint objects in delivery-protocols http/1.1>
data: ] data: ]
data: } data: }
data: } data: }
event: application/json-patch+json,my-fci-stream event: application/json-patch+json,my-fci-stream
data: [ data: [
data: { data: {
data: "op": "replace", data: "op": "replace",
data: "path": "/meta/vtag/tag", data: "path": "/meta/vtag/tag",
data: "value": "a10ce8b059740b0b2e3f8eb1d4785acd42231bfe" data: "value": "a10ce8b059740b0b2e3f8eb1d4785acd42231bfe"
data: }, data: },
data: { "op": "add", data: { "op": "add",
data: "path": "/cdni-fci-map/capabilities/0/footprints/-", data: "path": "/cdni-fci/capabilities/0/footprints/-",
data: "value": "ipv4:192.0.2.0/24" data: "value": "ipv4:192.0.2.0/24"
data: } data: }
data: ] data: ]
6. Query Footprint Properties using ALTO Unified Property Service 6. Query Footprint Properties using ALTO Unified Property Service
Above sections describe how a uCDN can get the whole capabilities and Above sections describe how a uCDN can get the whole capabilities and
footprints from dCDNs and how a uCDN can get the footprints of given footprints from dCDNs and how a uCDN can get the footprints of given
capabilities. But there is another important case which is how a capabilities. But there is another important case which is how a
uCDN can get properties (i.e., capabilities) of given footprints. uCDN can get properties (i.e., capabilities) of given footprints.
skipping to change at page 27, line 28 skipping to change at page 27, line 22
"countrycode", this document registers two new domains in Section 8. "countrycode", this document registers two new domains in Section 8.
Here gives an example of representing a footprint object as a set of Here gives an example of representing a footprint object as a set of
unified property map entities. unified property map entities.
{"footprint-type": "ipv4cidr", "footprint-value": ["192.0.2.0/24", {"footprint-type": "ipv4cidr", "footprint-value": ["192.0.2.0/24",
"198.51.100.0/24"]} --> "ipv4:192.168.2.0/24", "ipv4:198.51.100.0/24" "198.51.100.0/24"]} --> "ipv4:192.168.2.0/24", "ipv4:198.51.100.0/24"
6.1.1. ASN Domain 6.1.1. ASN Domain
This document specifies a new domain in addition to the ones in This document specifies a new entity domain type in addition to the
[I-D.ietf-alto-unified-props-new]. ASN is the abbreviation of ones in [I-D.ietf-alto-unified-props-new]. ASN is the abbreviation
Autonomous System Number. of Autonomous System Number.
6.1.1.1. Domain Name 6.1.1.1. Entity Domain Type
asn asn
6.1.1.2. Domain-Specific Entity Addresses 6.1.1.2. Domain-Specific Entity Addresses
The entity address of asn domain is encoded as a string consisting of The entity address of asn domain is encoded as a string consisting of
the characters "as" (in lowercase) followed by the ASN [RFC6793]. the characters "as" (in lowercase) followed by the ASN [RFC6793].
6.1.1.3. Hierarchy and Inheritance 6.1.1.3. Hierarchy and Inheritance
There is no hierarchy or inheritance for properties associated with There is no hierarchy or inheritance for properties associated with
ASN. ASN.
6.1.2. COUNTRYCODE Domain 6.1.2. COUNTRYCODE Domain
This document specifies a new domain in addition to the ones in This document specifies a new entity domain type in addition to the
[I-D.ietf-alto-unified-props-new]. ones in [I-D.ietf-alto-unified-props-new].
6.1.2.1. Domain Name 6.1.2.1. Entity Domain Type
countrycode countrycode
6.1.2.2. Domain-Specific Entity Addresses 6.1.2.2. Domain-Specific Entity Addresses
The entity address of countrycode domain is encoded as an ISO 3166-1 The entity address of countrycode domain is encoded as an ISO 3166-1
alpha-2 code [ISO3166-1] in lowercase. alpha-2 code [ISO3166-1] in lowercase.
6.1.2.3. Hierarchy and Inheritance 6.1.2.3. Hierarchy and Inheritance
skipping to change at page 29, line 17 skipping to change at page 29, line 17
Accept: application/alto-propmap+json,application/alto-error+json Accept: application/alto-propmap+json,application/alto-error+json
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: ### Content-Length: ###
Content-Type: application/alto-propmap+json Content-Type: application/alto-propmap+json
{ {
"property-map": { "property-map": {
"meta": { "meta": {
"dependent-vtags": [ "dependent-vtags": [
{"resource-id": "my-default-cdnifci-map", {"resource-id": "my-default-cdnifci",
"tag": "7915dc0290c2705481c491a2b4ffbec482b3cf62"} "tag": "7915dc0290c2705481c491a2b4ffbec482b3cf62"}
] ]
}, },
"countrycode:us": { "countrycode:us": {
"cdni-fci-capabilities": [ "my-default-cdnifci.cdni-fci-capabilities": [
{"capability-type": "FCI.DeliveryProtocol", {"capability-type": "FCI.DeliveryProtocol",
"capability-value": {"delivery-protocols": ["http/1.1"]}}] "capability-value": {"delivery-protocols": ["http/1.1"]}}]
}, },
"ipv4:192.0.2.0/24": { "ipv4:192.0.2.0/24": {
"cdni-fci-capabilities": [ "my-default-cdnifci.cdni-fci-capabilities": [
{"capability-type": "FCI.DeliveryProtocol", {"capability-type": "FCI.DeliveryProtocol",
"capability-value": {"delivery-protocols": ["http/1.1"]}}] "capability-value": {"delivery-protocols": ["http/1.1"]}}]
}, },
"ipv4:198.51.100.0/24": { "ipv4:198.51.100.0/24": {
"cdni-fci-capabilities": [ "my-default-cdnifci.cdni-fci-capabilities": [
{"capability-type": "FCI.DeliveryProtocol", {"capability-type": "FCI.DeliveryProtocol",
"capability-value": {"delivery-protocols": ["http/1.1"]}}] "capability-value": {"delivery-protocols": ["http/1.1"]}}]
}, },
"ipv6:2001:db8::/32": { "ipv6:2001:db8::/32": {
"cdni-fci-capabilities": [ "my-default-cdnifci.cdni-fci-capabilities": [
{"capability-type": "FCI.DeliveryProtocol", {"capability-type": "FCI.DeliveryProtocol",
"capability-value": {"delivery-protocols": ["http/1.1"]}}] "capability-value": {"delivery-protocols": ["http/1.1"]}}]
}, },
"asn:as64496": { "asn:as64496": {
"cdni-fci-capabilities": [ "my-default-cdnifci.cdni-fci-capabilities": [
{"capability-type": "FCI.DeliveryProtocol", {"capability-type": "FCI.DeliveryProtocol",
"capability-value": {"delivery-protocols": ["http/1.1", "capability-value": {"delivery-protocols": ["http/1.1",
"https/1.1"]}}] "https/1.1"]}}]
} }
} }
} }
6.2.3. Filtered Property Map Example 6.2.3. Filtered Property Map Example
In this example, we use filtered property map service to get "pid" In this example, we use filtered property map service to get "pid"
skipping to change at page 30, line 22 skipping to change at page 30, line 22
HOST: alto.example.com HOST: alto.example.com
Content-Type: application/alto-propmapparams+json Content-Type: application/alto-propmapparams+json
Accept: application/alto-propmap+json,application/alto-error+json Accept: application/alto-propmap+json,application/alto-error+json
Content-Length: Content-Length:
{ {
"entities": [ "entities": [
"ipv4:192.0.2.0/24", "ipv4:192.0.2.0/24",
"ipv6:2001:db8::/32" "ipv6:2001:db8::/32"
], ],
"properties": [ "cdni-fci-capabilities", "pid" ] "properties": [ "my-default-cdnifci.cdni-fci-capabilities",
"my-default-networkmap.pid" ]
} }
HTTP/1.1 200 OK HTTP/1.1 200 OK
Content-Length: ### Content-Length: ###
Content-Type: application/alto-propmap+json Content-Type: application/alto-propmap+json
{ {
"property-map": { "property-map": {
"meta": { "meta": {
"dependent-vtags": [ "dependent-vtags": [
{"resource-id": "my-default-cdnifci-map", {"resource-id": "my-default-cdnifci",
"tag": "7915dc0290c2705481c491a2b4ffbec482b3cf62"}, "tag": "7915dc0290c2705481c491a2b4ffbec482b3cf62"},
{"resource-id": "my-default-networkmap", {"resource-id": "my-default-networkmap",
"tag": "7915dc0290c2705481c491a2b4ffbec482b3cf63"} "tag": "7915dc0290c2705481c491a2b4ffbec482b3cf63"}
] ]
}, },
"ipv4:192.0.2.0/24": { "ipv4:192.0.2.0/24": {
"cdni-fci-capabilities": [ "my-default-cdnifci.cdni-fci-capabilities": [
{"capability-type": "FCI.DeliveryProtocol", {"capability-type": "FCI.DeliveryProtocol",
"capability-value": {"delivery-protocols": ["http/1.1"]}}], "capability-value": {"delivery-protocols": ["http/1.1"]}}],
"pid": "pid1" "my-default-networkmap.pid": "pid1"
}, },
"ipv6:2001:db8::/32": { "ipv6:2001:db8::/32": {
"cdni-fci-capabilities": [ "my-default-cdnifci.cdni-fci-capabilities": [
{"capability-type": "FCI.DeliveryProtocol", {"capability-type": "FCI.DeliveryProtocol",
"capability-value": {"delivery-protocols": ["http/1.1"]}}], "capability-value": {"delivery-protocols": ["http/1.1"]}}],
"pid": "pid3" "my-default-networkmap.pid": "pid3"
} }
} }
} }
6.2.4. Incremental Updates Example 6.2.4. Incremental Updates Example
In this example, here is a client want to request updates for the In this example, here is a client want to request updates for the
properties "cdni-fci-capabilities" and "pid" for two footprints properties "cdni-fci-capabilities" and "pid" for two footprints
"ipv4:192.0.2.0/24" and "ipv6:2001:db8::/32". "ipv4:192.0.2.0/24" and "countrycode:fr".
POST /updates/properties HTTP/1.1 POST /updates/properties HTTP/1.1
Host: alto.example.com Host: alto.example.com
Accept: text/event-stream,application/alto-error+json Accept: text/event-stream,application/alto-error+json
Content-Type: application/alto-updatestreamparams+json Content-Type: application/alto-updatestreamparams+json
Content-Length: ### Content-Length: ###
{ "add": { { "add": {
"property-map-including-capability-property": { "property-map-including-capability-property": {
"resource-id": "filtered-cdnifci-property-map", "resource-id": "filtered-cdnifci-property-map",
"input": { "input": {
"properties": ["cdni-fci-capabilities", "pid"], "properties": [ "my-default-cdnifci.cdni-fci-capabilities",
"entities": [ "my-default-networkmap.pid" ],
"ipv4:192.0.2.0/24", "entities": [
"ipv6:2001:db8::/32" "ipv4:192.0.2.0/24",
] "ipv6:2001:db8::/32"
} ]
} }
} }
}
HTTP/1.1 200 OK HTTP/1.1 200 OK
Connection: keep-alive Connection: keep-alive
Content-Type: text/event-stream Content-Type: text/event-stream
event: application/alto-updatestreamcontrol+json event: application/alto-updatestreamcontrol+json
data: {"control-uri": data: {"control-uri":
data: "http://alto.example.com/updates/streams/1414213562373"} data: "http://alto.example.com/updates/streams/1414213562373"}
event: application/alto-cdnifcimap+json,my-fci-stream event: application/alto-cdnifci+json,my-fci-stream
data: { ... full filtered unified property map ... } data: { ... full filtered unified property map ... }
event: application/merge-patch+json,my-fci-stream event: application/merge-patch+json,my-fci-stream
data: { data: {
data: "property-map": data: "property-map":
data: { data: {
data: "meta": { data: "meta": {
data: "dependent-vtags": [ data: "dependent-vtags": [
data: {"resource-id": "my-default-cdnifci-map", data: {"resource-id": "my-default-cdnifci",
data: "tag": "2beeac8ee23c3dd1e98a73fd30df80ece9fa5627"}, data: "tag": "2beeac8ee23c3dd1e98a73fd30df80ece9fa5627"},
data: {"resource-id": "my-default-networkmap", data: {"resource-id": "my-default-networkmap",
data: "tag": "7915dc0290c2705481c491a2b4ffbec482b3cf63"} data: "tag": "7915dc0290c2705481c491a2b4ffbec482b3cf63"}
data: ] data: ]
data: }, data: },
data: "ipv4:192.0.2.0/24": data: "ipv4:192.0.2.0/24":
data: { data: {
data: "cdni-fci-capabilities": [ data: "my-default-cdnifci.cdni-fci-capabilities": [
data: {"capability-type": "FCI.DeliveryProtocol", data: {"capability-type": "FCI.DeliveryProtocol",
data: "capability-value": { data: "capability-value": {
data: "delivery-protocols": ["http/1.1"]}}] data: "delivery-protocols": ["http/1.1"]}}]
data: } data: }
data: } data: }
data: } data: }
event: application/json-patch+json,my-fci-stream event: application/json-patch+json,my-fci-stream
data: {[ data: {[
data: { data: {
data: { "op": "replace", data: { "op": "replace",
data: "path": "/meta/dependent-vtags/0/tag", data: "path": "/meta/dependent-vtags/0/tag",
data: "value": "61b23185a50dc7b334577507e8f00ff8c3b409e4" data: "value": "61b23185a50dc7b334577507e8f00ff8c3b409e4"
data: }, data: },
data: { "op": "replace", data: { "op": "replace",
data: "path": "/property-map/ipv4:192.0.2.0/124/", data: "path":
data: "value": "pid5" data: "/property-map/countrycode:fr/my-default-networkmap.pid",
data: } data: "value": "pid5"
data: } data: }
data: ]} data: }
data: ]}
7. Design Decisions and Discussions 7. Design Decisions and Discussions
7.1. Table versus Map 7.1. Table versus Map
A major design decision is if the Map service is suitable to provide A major design decision is if the Map service is suitable to provide
the CDNI FCI. Current ALTO protocol uses Map service to provide the CDNI FCI. Current ALTO protocol uses Map service to provide
network information, such as Network Maps, Cost Maps and Property network information, such as Network Maps, Cost Maps and Property
Maps. Their common idea is to use Map-like data structure to Maps. Their common idea is to use Map-like data structure to
represent information. It is different from the data structure of represent information. It is different from the data structure of
skipping to change at page 34, line 30 skipping to change at page 35, line 15
+------------------------+------------------------------------------+ +------------------------+------------------------------------------+
| Identifier | Intended Semantics | | Identifier | Intended Semantics |
+------------------------+------------------------------------------+ +------------------------+------------------------------------------+
| cdni-fci-capabilities | An array of CDNI FCI capability objects | | cdni-fci-capabilities | An array of CDNI FCI capability objects |
+------------------------+------------------------------------------+ +------------------------+------------------------------------------+
Table 3: ALTO CDNI FCI Property Type Table 3: ALTO CDNI FCI Property Type
9. Security Considerations 9. Security Considerations
Although CDNI FCI Map resource defined in this document is relatively As an extension of the base ALTO protocol [RFC7285], this document
different from other existed resources defined in the base protocol, fits into the architecture of the base protocol, and hence the
the Security Considerations of the base protocol (Section 15 of Security Considerations (Section 15) of the base protocol fully apply
RFC7285) still apply. when this extension is provided by an ALTO server.
For authenticity and Integrity of ALTO information, an attacker may In the context of CDNI FCI, additional security considerations should
disguise itself as an ALTO server in a dCDN, and it may provide false be included as follows.
capabilities and footprints to an ALTO client in a uCDN by the CDNI
FCI map. Such false information may lead a uCDN to select a wrong For authenticity and integrity of ALTO information, an attacker may
dCDN to serve user requests or even block uCDNs utilizing some dCDNs disguise itself as an ALTO server for a dCDN, and provide false
in good condition. capabilities and footprints to a uCDN using the CDNI FCI map. Such
false information may lead a uCDN to (1) select an incorrect dCDN to
serve user requests or (2) skip uCDNs in good conditions.
For potential undesirable guidance from authenticated ALTO For potential undesirable guidance from authenticated ALTO
information, dCDNs can provide a uCDN with limited capabilities and information, dCDNs can provide a uCDN with limited capabilities and
smaller footprint coverage so that dCDNs can avoid transferring smaller footprint coverage so that dCDNs can avoid transferring
traffic for a uCDN which they should have to transfer. traffic for a uCDN which they should have to transfer.
For confidentiality of ALTO information, an attacker may infer the For confidentiality and privacy of ALTO information, footprint
whole and exact capabilities and footprints of a dCDN by means of properties integrated with ALTO unified property may expose network
pretending it is one of different uCDNs of a dCDN respectively, location identifiers (e.g., IP addresses or fine-grained PIDs).
getting different CDNI FCI maps from a dCDN and combining these maps
together.
For privacy for ALTO users, querying footprint properties using ALTO
unified property may expose network location identifiers (IP
addresses or fine-grained PIDs) to the ALTO server in a dCDN. In
such case, a dCDN may potentially monitor and analyze user behaviors
and communication patterns of uCDNs' customers.
For availability of ALTO services, an attacker may get the potential For availability of ALTO services, an attacker may get the potential
huge full CDNI FCI maps from an ALTO server in a dCDN continuously to huge full CDNI FCI maps from an ALTO server in a dCDN continuously to
run out of bandwidth resources of that ALTO server or may query run out of bandwidth resources of that ALTO server or may query
filtered CDNI FCI services with complex capabilities to run out of filtered CDNI FCI services with complex capabilities to run out of
computation resources of an ALTO server. computation resources of an ALTO server.
Protection Strategies described in RFC 7285 can solve problems Protection strategies described in RFC 7285 can solve problems
mentioned above well. However, the isolation of full/filtered CDNI mentioned above well. However, the isolation of full/filtered CDNI
FCI maps should also be considered. FCI maps should also be considered.
If a dCDN signs agreements with multiple uCDNs, it must isolate full/ If a dCDN signs agreements with multiple uCDNs, it must isolate full/
filtered CDNI FCI maps for different uCDNs in that uCDNs will not filtered CDNI FCI maps for different uCDNs in that uCDNs will not
redirect requests which should not have to served by this dCDN to redirect requests which should not have to served by this dCDN to
this dCDN and it may not disclose extra information to uCDNs. this dCDN and it may not disclose extra information to uCDNs.
To avoid this risk, a dCDN may consider generating URIs of different To avoid this risk, a dCDN may consider generating URIs of different
full/filtered CDNI FCI maps by hashing its company ID, a uCDN's full/filtered CDNI FCI maps by hashing its company ID, a uCDN's
skipping to change at page 36, line 33 skipping to change at page 37, line 11
Autonomous System (AS) Number Space", RFC 6793, Autonomous System (AS) Number Space", RFC 6793,
DOI 10.17487/RFC6793, December 2012, DOI 10.17487/RFC6793, December 2012,
<https://www.rfc-editor.org/info/rfc6793>. <https://www.rfc-editor.org/info/rfc6793>.
[RFC7285] Alimi, R., Ed., Penno, R., Ed., Yang, Y., Ed., Kiesel, S., [RFC7285] Alimi, R., Ed., Penno, R., Ed., Yang, Y., Ed., Kiesel, S.,
Previdi, S., Roome, W., Shalunov, S., and R. Woundy, Previdi, S., Roome, W., Shalunov, S., and R. Woundy,
"Application-Layer Traffic Optimization (ALTO) Protocol", "Application-Layer Traffic Optimization (ALTO) Protocol",
RFC 7285, DOI 10.17487/RFC7285, September 2014, RFC 7285, DOI 10.17487/RFC7285, September 2014,
<https://www.rfc-editor.org/info/rfc7285>. <https://www.rfc-editor.org/info/rfc7285>.
[RFC7336] Peterson, L., Davie, B., and R. van Brandenburg, Ed.,
"Framework for Content Distribution Network
Interconnection (CDNI)", RFC 7336, DOI 10.17487/RFC7336,
August 2014, <https://www.rfc-editor.org/info/rfc7336>.
[RFC8006] Niven-Jenkins, B., Murray, R., Caulfield, M., and K. Ma, [RFC8006] Niven-Jenkins, B., Murray, R., Caulfield, M., and K. Ma,
"Content Delivery Network Interconnection (CDNI) "Content Delivery Network Interconnection (CDNI)
Metadata", RFC 8006, DOI 10.17487/RFC8006, December 2016, Metadata", RFC 8006, DOI 10.17487/RFC8006, December 2016,
<https://www.rfc-editor.org/info/rfc8006>. <https://www.rfc-editor.org/info/rfc8006>.
[RFC8008] Seedorf, J., Peterson, J., Previdi, S., van Brandenburg, [RFC8008] Seedorf, J., Peterson, J., Previdi, S., van Brandenburg,
R., and K. Ma, "Content Delivery Network Interconnection R., and K. Ma, "Content Delivery Network Interconnection
(CDNI) Request Routing: Footprint and Capabilities (CDNI) Request Routing: Footprint and Capabilities
Semantics", RFC 8008, DOI 10.17487/RFC8008, December 2016, Semantics", RFC 8008, DOI 10.17487/RFC8008, December 2016,
<https://www.rfc-editor.org/info/rfc8008>. <https://www.rfc-editor.org/info/rfc8008>.
11.2. Informative References 11.2. Informative References
[I-D.ietf-alto-incr-update-sse] [I-D.ietf-alto-incr-update-sse]
Roome, W. and Y. Yang, "ALTO Incremental Updates Using Roome, W. and Y. Yang, "ALTO Incremental Updates Using
Server-Sent Events (SSE)", draft-ietf-alto-incr-update- Server-Sent Events (SSE)", draft-ietf-alto-incr-update-
sse-07 (work in progress), July 2017. sse-16 (work in progress), March 2019.
[I-D.ietf-alto-path-vector] [I-D.ietf-alto-path-vector]
Bernstein, G., Chen, S., Gao, K., Lee, Y., Roome, W., Gao, K., Lee, Y., Randriamasy, S., Yang, Y., and J. Zhang,
Scharf, M., Yang, Y., and J. Zhang, "ALTO Extension: Path "ALTO Extension: Path Vector Cost Type", draft-ietf-alto-
Vector Cost Type", draft-ietf-alto-path-vector-04 (work in path-vector-05 (work in progress), March 2019.
progress), July 2018.
[I-D.ietf-alto-unified-props-new] [I-D.ietf-alto-unified-props-new]
Roome, W. and Y. Yang, "Extensible Property Maps for the Roome, W., Randriamasy, S., Yang, Y., and J. Zhang,
ALTO Protocol", draft-ietf-alto-unified-props-new-00 (work "Unified Properties for the ALTO Protocol", draft-ietf-
in progress), July 2017. alto-unified-props-new-07 (work in progress), March 2019.
[I-D.jenkins-alto-cdn-use-cases] [I-D.jenkins-alto-cdn-use-cases]
Niven-Jenkins, B., Watson, G., Bitar, N., Medved, J., and Niven-Jenkins, B., Watson, G., Bitar, N., Medved, J., and
S. Previdi, "Use Cases for ALTO within CDNs", draft- S. Previdi, "Use Cases for ALTO within CDNs", draft-
jenkins-alto-cdn-use-cases-03 (work in progress), June jenkins-alto-cdn-use-cases-03 (work in progress), June
2012. 2012.
Authors' Addresses Authors' Addresses
Jan Seedorf Jan Seedorf
HFT Stuttgart - Univ. of Applied Sciences HFT Stuttgart - Univ. of Applied Sciences
Schellingstrasse 24 Schellingstrasse 24
Stuttgart 70174 Stuttgart 70174
Germany Germany
Phone: +49-0711-8926-2801 Phone: +49-0711-8926-2801
Email: jan.seedorf@hft-stuttgart.de Email: jan.seedorf@hft-stuttgart.de
Y.R. Yang Y.R. Yang
 End of changes. 135 change blocks. 
328 lines changed or deleted 336 lines changed or added

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