< draft-ietf-alto-cdni-request-routing-alto-04.txt   draft-ietf-alto-cdni-request-routing-alto-05.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: May 21, 2019 Tongji/Yale Expires: September 12, 2019 Tongji/Yale
K. Ma K. Ma
Ericsson Ericsson
J. Peterson J. Peterson
Neustar Neustar
X. Lin X. Lin
Tongji Tongji
November 17, 2018 March 11, 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-04 draft-ietf-alto-cdni-request-routing-alto-05
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 41 skipping to change at page 1, line 41
Traffic Optimization (ALTO) protocol. Traffic Optimization (ALTO) protocol.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). 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 http://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 May 21, 2019. This Internet-Draft will expire on September 12, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2018 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
(http://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
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
skipping to change at page 3, line 7 skipping to change at page 3, line 7
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Service . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.1. Representing Footprint Objects as Unified Property Map 6.1. Representing Footprint Objects as Unified Property Map
Entities . . . . . . . . . . . . . . . . . . . . . . . . 27 Entities . . . . . . . . . . . . . . . . . . . . . . . . 27
6.1.1. ASN Domain . . . . . . . . . . . . . . . . . . . . . 28 6.1.1. ASN Domain . . . . . . . . . . . . . . . . . . . . . 27
6.1.2. COUNTRYCODE Domain . . . . . . . . . . . . . . . . . 28 6.1.2. COUNTRYCODE Domain . . . . . . . . . . . . . . . . . 27
6.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . 29 6.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . 28
6.2.1. IRD Example . . . . . . . . . . . . . . . . . . . . . 29 6.2.1. IRD Example . . . . . . . . . . . . . . . . . . . . . 28
6.2.2. Property Map Example . . . . . . . . . . . . . . . . 29 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. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33 7. Design Decisions and Discussions . . . . . . . . . . . . . . 32
7.1. CDNI Metadata Footprint Type Registry . . . . . . . . . . 33 7.1. Table versus Map . . . . . . . . . . . . . . . . . . . . 32
7.2. ALTO Entity Domain Registry . . . . . . . . . . . . . . . 33 7.2. Filter-based Query versus Test-based Query . . . . . . . 33
7.3. ALTO CDNI FCI Property Type Registry . . . . . . . . . . 34 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33
8. Security Considerations . . . . . . . . . . . . . . . . . . . 34 8.1. CDNI Metadata Footprint Type Registry . . . . . . . . . . 33
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 35 8.2. ALTO Entity Domain Registry . . . . . . . . . . . . . . . 33
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 8.3. ALTO CDNI FCI Property Type Registry . . . . . . . . . . 34
10.1. Normative References . . . . . . . . . . . . . . . . . . 35 9. Security Considerations . . . . . . . . . . . . . . . . . . . 34
10.2. Informative References . . . . . . . . . . . . . . . . . 36 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 35
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 35
11.1. Normative References . . . . . . . . . . . . . . . . . . 36
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
interconnection of CDNs: (1) the CDNI Request Routing Interface; (2) interconnection of CDNs: (1) the CDNI Request Routing Interface; (2)
the CDNI Metadata Interface; (3) the CDNI Logging Interface; and (4) the CDNI Metadata Interface; (3) the CDNI Logging Interface; and (4)
skipping to change at page 4, line 38 skipping to change at page 4, line 40
realize CDNI FCI using ALTO. Section 4 demonstrates a key benefit of realize CDNI FCI using ALTO. Section 4 demonstrates a key benefit of
using ALTO: the ability to integrate CDNI FCI with ALTO network maps. using ALTO: the ability to integrate CDNI FCI with ALTO network maps.
Such integration provides a new granularity to describe footprints. Such integration provides a new granularity to describe footprints.
Section 5 builds on filtered ALTO maps to introduce filtered CDNI FCI Section 5 builds on filtered ALTO maps to introduce filtered CDNI FCI
maps using capabilities so that a uCDN can get footprints with given maps using capabilities so that a uCDN can get footprints with given
capabilities instead of getting the full map which can be huge. capabilities instead of getting the full map which can be huge.
Section 6 further shows a benefit of using ALTO: the ability to query Section 6 further shows a benefit of using ALTO: the ability to query
footprint properties using ALTO unified properties. In this way, a footprint properties using ALTO unified properties. In this way, a
uCDN can effectively fetch capabilities of some footprints in which uCDN can effectively fetch capabilities of some footprints in which
it is interested. IANA and security considerations are discussed in it is interested. IANA and security considerations are discussed in
Section 7 and Section 8 respectively. Section 8 and Section 9 respectively.
Throughout this document, we use the terminology for CDNI defined in Throughout this document, we use the terminology for CDNI defined in
[RFC6707], [RFC8006], [RFC8008] and we use the terminology for ALTO [RFC6707], [RFC8006], [RFC8008] and we use the terminology for ALTO
defined in [RFC7285], [I-D.ietf-alto-unified-props-new]. defined in [RFC7285], [I-D.ietf-alto-unified-props-new].
2. Background 2. Background
The design of CDNI FCI transport using ALTO depends on the The design of CDNI FCI transport using ALTO depends on the
understanding of both FCI semantics and ALTO. Hence, we start with a understanding of both FCI semantics and ALTO. Hence, we start with a
review of both. review of both.
skipping to change at page 7, line 14 skipping to change at page 7, line 14
Section 3) and then providing costs of surrogates in a dCDN by Section 3) and then providing costs of surrogates in a dCDN by
ALTO cost maps. ALTO cost maps.
o The semantics of an ALTO network map is an exact match for the o The semantics of an ALTO network map is an exact match for the
needed information to convey a footprint by a downstream CDN, in needed information to convey a footprint by a downstream CDN, in
particular if such a footprint is being expressed by IP-prefix particular if such a footprint is being expressed by IP-prefix
ranges. Please see Section 4. ranges. Please see Section 4.
o Security: Identifications between uCDNs and dCDNs are extremely o Security: Identifications between uCDNs and dCDNs are extremely
important. ALTO maps can be signed and hence provide inherent important. ALTO maps can be signed and hence provide inherent
integrity protection. Please see Section 8. integrity protection. Please see Section 9.
o RESTful-Design: The ALTO protocol has undergone extensive o RESTful-Design: The ALTO protocol has undergone extensive
revisions in order to provide a RESTful design regarding the revisions in order to provide a RESTful design regarding the
client-server interaction specified by the protocol. A CDNI FCI client-server interaction specified by the protocol. A CDNI FCI
interface based on ALTO would inherit this RESTful design. Please interface based on ALTO would inherit this RESTful design. Please
see Section 3. see Section 3.
o Error-handling: The ALTO protocol has undergone extensive o Error-handling: The ALTO protocol has undergone extensive
revisions in order to provide sophisticated error-handling, in revisions in order to provide sophisticated error-handling, in
particular regarding unexpected cases. A CDNI FCI interface based particular regarding unexpected cases. A CDNI FCI interface based
skipping to change at page 9, line 47 skipping to change at page 9, line 47
The data component of an ALTO CDNI FCI map response is named "cdni- The data component of an ALTO CDNI FCI map response is named "cdni-
fci-map", which is a JSON object of type CDNIFCIMapData: fci-map", which is a JSON object of type CDNIFCIMapData:
object { object {
CDNIFCIMapData cdni-fci-map; CDNIFCIMapData cdni-fci-map;
} InfoResourceCDNIFCIMap : ResponseEntityBase; } InfoResourceCDNIFCIMap : ResponseEntityBase;
object { object {
BaseAdvertisementObject capabilities<1..*>; BaseAdvertisementObject capabilities<1..*>;
} CDNIFCIMapData } CDNIFCIMapData;
Specifically, a CDNIFCIMapData object is a JSON object that includes Specifically, a CDNIFCIMapData 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].
skipping to change at page 10, line 24 skipping to change at page 10, line 24
object { object {
JSONString capability-type; JSONString capability-type;
JSONValue capability-value; JSONValue capability-value;
Footprint footprints<0..*>; Footprint footprints<0..*>;
} BaseAdvertisementObject; } BaseAdvertisementObject;
object { object {
JSONString footprint-type; JSONString footprint-type;
JSONString footprint-value<1..*>; JSONString footprint-value<1..*>;
} Footprint } Footprint;
For each BaseAdvertisementObject, the ALTO client MUST interpret For each BaseAdvertisementObject, the ALTO client MUST interpret
footprints appearing multiple times as if they appeared only once. footprints appearing multiple times as if they appeared only once.
If footprints in a BaseAdvertisementObject is null or empty or not If footprints in a BaseAdvertisementObject is null or empty or not
appearing, the ALTO client MUST understand that the capabilities in appearing, the ALTO client MUST understand that the capabilities in
this BaseAdvertisementObject have the "global" coverage. this BaseAdvertisementObject have the "global" coverage.
Note: Further optimization of BaseAdvertisement objects to Note: Further optimization of BaseAdvertisement objects to
effectively provide the advertisement of capabilities with footprint effectively provide the advertisement of capabilities with footprint
restrictions is certainly possible. For example, these two examples restrictions is certainly possible. For example, these two examples
below both describe that the dCDN can provide capabilities below both describe that the dCDN can provide capabilities
["http/1.1", "https/1.1"] for the same footprints. However, the ["http/1.1", "https/1.1"] for the same footprints. However, the
latter one is smaller in its size. latter one is smaller in its size.
EXAMPLE 1 EXAMPLE 1
{ {
"meta" : {...}, "meta" : {...},
"cdni-fci-map": { "cdni-fci-map": {
"capabilities": [ "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 11, line 23 skipping to change at page 11, line 23
}, },
"footprints": [ "footprints": [
<Footprint objects> <Footprint objects>
] ]
} }
] ]
} }
} }
EXAMPLE 2 EXAMPLE 2
{ {
"meta" : {...}, "meta" : {...},
"cdni-fci-map": { "cdni-fci-map": {
"capabilities": [ "capabilities": [
{ {
"capability-type": "FCI.DeliveryProtocol", "capability-type": "FCI.DeliveryProtocol",
"capability-value": { "capability-value": {
"delivery-protocols": [ "delivery-protocols": [
"https/1.1", "https/1.1",
"http/1.1" "http/1.1"
] ]
skipping to change at page 12, line 20 skipping to change at page 12, line 20
Specifically, the IRD announces two network maps, one CDNI FCI map Specifically, the IRD announces two network maps, one CDNI FCI map
without dependency, one CDNI FCI map depending on a network map, one without dependency, one CDNI FCI map depending on a network map, one
filtered CDNI FCI map to be defined in Section 5, one unified filtered CDNI FCI map to be defined in Section 5, one unified
property map including "cdni-fci-capabilities" as its entities' property map including "cdni-fci-capabilities" as its entities'
property, one filtered unified property map including "cdni-fci- property, one filtered unified property map including "cdni-fci-
capabilities" and "pid" as its entities' properties, and two update capabilities" and "pid" as its entities' properties, and two update
stream services (one for updating CDNI FCI maps, and the other for stream services (one for updating CDNI FCI maps, and the other for
updating property maps). 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-map": {
"uri" : "http://alto.example.com/cdnifcimap", "uri" : "http://alto.example.com/cdnifcimap",
"media-type": "application/alto-cdnifcimap+json" "media-type": "application/alto-cdnifcimap+json"
}, },
"my-filtered-cdnifci-map" : { "my-filtered-cdnifci-map" : {
"uri" : "http://alto.example.com/cdnifcimap/filtered", "uri" : "http://alto.example.com/cdnifcimap/filtered",
"media-type" : "application/alto-cdnifcimap+json", "media-type" : "application/alto-cdnifcimap+json",
"accepts" : "application/alto-cdnifcimapfilter+json", "accepts" : "application/alto-cdnifcimapfilter+json",
"uses" : [ "my-default-cdnifci-map" ] "uses" : [ "my-default-cdnifci-map" ]
}, },
"my-cdnifci-map-with-network-map-footprints": { "my-cdnifci-map-with-network-map-footprints": {
"uri" : "http://alto.example.com/networkcdnifcimap", "uri" : "http://alto.example.com/networkcdnifcimap",
"media-type" : "application/alto-cdnifcimap+json", "media-type" : "application/alto-cdnifcimap+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",
"capabilities" : { "capabilities" : {
"domain-types" : [ "ipv4", "ipv6", "coutrycode", "asn" ], "domain-types" : [ "ipv4", "ipv6", "coutrycode", "asn" ],
"prop-types" : [ "cdni-fci-capabilities" ] "prop-types" : [ "cdni-fci-capabilities" ]
}
},
"filtered-cdnifci-property-map" : {
"uri" : "http://alto.example.com/propmap/lookup/cdnifci-pid",
"media-type" : "application/alto-propmap+json",
"accepts" : "application/alto-propmapparams+json",
"capabilities" : {
"domain-types" : [ "ipv4", "ipv6", "coutrycode", "asn" ],
"prop-types" : [ "cdni-fci-capabilities", "pid" ]
} }
}, },
"update-my-cdni-fci-maps" : { "filtered-cdnifci-property-map" : {
"uri": "http:///alto.example.com/updates/cdnifcimaps", "uri" : "http://alto.example.com/propmap/lookup/cdnifci-pid",
"media-type" : "text/event-stream", "media-type" : "application/alto-propmap+json",
"accepts" : "application/alto-updatestreamparams+json", "accepts" : "application/alto-propmapparams+json",
"uses" : [ "capabilities" : {
"my-default-network-map", "domain-types" : [ "ipv4", "ipv6", "coutrycode", "asn" ],
"my-eu-netmap", "prop-types" : [ "cdni-fci-capabilities", "pid" ]
"my-default-cdnifci-map",
"my-filtered-cdnifci-map"
"my-cdnifci-map-with-network-map-footprints"
],
"capabilities" : {
"incremental-change-media-types" : {
"my-default-network-map" : "application/json-patch+json",
"my-eu-netmap" : "application/json-patch+json",
"my-default-cdnifci-map" :
"application/merge-patch+json,application/json-patch+json",
"my-filtered-cdnifci-map" :
"application/merge-patch+jso,application/json-patch+json",
"my-cdnifci-map-with-network-map-footprints" :
"application/merge-patch+json,application/json-patch+json"
}
}
},
"update-my-props": {
"uri" : "http://alto.example.com/updates/properties",
"media-type" : "text/event-stream",
"uses" : [
"cdnifci-property-map",
"filtered-cdnifci-property-map"
],
"capabilities" : {
"incremental-change-media-types": {
"cdnifci-property-map" :
"application/merge-patch+json,application/json-patch+json",
"filtered-cdnifci-property-map":
"application/merge-patch+json,application/json-patch+json"
} }
} },
} "update-my-cdni-fci-maps" : {
} "uri": "http:///alto.example.com/updates/cdnifcimaps",
} "media-type" : "text/event-stream",
"accepts" : "application/alto-updatestreamparams+json",
"uses" : [
"my-default-network-map",
"my-eu-netmap",
"my-default-cdnifci-map",
"my-filtered-cdnifci-map"
"my-cdnifci-map-with-network-map-footprints"
],
"capabilities" : {
"incremental-change-media-types" : {
"my-default-network-map" : "application/json-patch+json",
"my-eu-netmap" : "application/json-patch+json",
"my-default-cdnifci-map" :
"application/merge-patch+json,application/json-patch+json",
"my-filtered-cdnifci-map" :
"application/merge-patch+jso,application/json-patch+json",
"my-cdnifci-map-with-network-map-footprints" :
"application/merge-patch+json,application/json-patch+json"
}
}
},
"update-my-props": {
"uri" : "http://alto.example.com/updates/properties",
"media-type" : "text/event-stream",
"uses" : [
"cdnifci-property-map",
"filtered-cdnifci-property-map"
],
"capabilities" : {
"incremental-change-media-types": {
"cdnifci-property-map" :
"application/merge-patch+json,application/json-patch+json",
"filtered-cdnifci-property-map":
"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 map; this map does
not depend on other resources. There are three 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 /cdnifcimap HTTP/1.1
Host: alto.example.com Host: alto.example.com
Accept: application/alto-cdnifcimap+json,application/alto-error+json Accept: application/alto-cdnifcimap+json
Accept: 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-cdnifcimap+json
{ {
"meta" : { "meta" : {
"vtag": { "vtag": {
"resource-id": "my-default-cdnifci-map", "resource-id": "my-default-cdnifci-map",
"tag": "da65eca2eb7a10ce8b059740b0b2e3f8eb1d4785" "tag": "da65eca2eb7a10ce8b059740b0b2e3f8eb1d4785"
} }
}, },
"cdni-fci-map": { "cdni-fci-map": {
"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": [
<Footprint objects>
] ]
}, },
{ "footprints": [
"capability-type": "FCI.DeliveryProtocol", <Footprint objects>
"capability-value": { ]
"delivery-protocols": [ },
"https/1.1", {
"http/1.1" "capability-type": "FCI.DeliveryProtocol",
] "capability-value": {
}, "delivery-protocols": [
"footprints": [ "https/1.1",
<Footprint objects> "http/1.1"
] ]
}, },
{ "footprints": [
"capability-type": "FCI.AcquisitionProtocol", <Footprint objects>
"capability-value": { ]
"acquisition-protocols": [ },
"https/1.1" {
] "capability-type": "FCI.AcquisitionProtocol",
}, "capability-value": {
"footprints": [ "acquisition-protocols": [
<Footprint objects> "https/1.1"
] ]
} },
] "footprints": [
} <Footprint objects>
]
}
]
} }
}
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 the ALTO server updates for "my-
default-cdnifci-map", and the ALTO server returns the "control-uri" default-cdnifci-map", and the ALTO server returns the "control-uri"
skipping to change at page 18, line 4 skipping to change at page 18, line 4
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 map 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"
} }
] ]
}, },
"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 Network Map Footprints in CDNI FCI Map
In this example, we show a CDNI FCI map that depends on a network map In this example, we show a CDNI FCI map that depends on a network map
described in Section 4.2.2. described in Section 4.2.2.
GET /networkcdnifcimap HTTP/1.1 GET /networkcdnifcimap HTTP/1.1
Host: alto.example.com Host: alto.example.com
Accept: application/alto-cdnifcimap+json,application/alto-error+json Accept: application/alto-cdnifcimap+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-cdnifcimap+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-map": {
"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": [
"values": [ "https/1.1"
"https/1.1" ],
], "footprints": [
"footprints": [ { "footprint-type": "altonetworkmap",
{ "footprint-type": "altonetworkmap", "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-map-with-network-map-footprints". Considering two changes,
the first one is to change footprints of http/1.1 Delivery Protocol the first one is to change footprints of http/1.1 Delivery Protocol
capability, and the second one is to remove "south-france" from the capability, and the second one is to remove "south-france" from the
footprints of https/1.1 delivery protocol capability. footprints of https/1.1 delivery protocol capability.
POST /updates/cdnifcimaps HTTP/1.1 POST /updates/cdnifcimaps HTTP/1.1
skipping to change at page 24, line 5 skipping to change at page 23, line 48
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 map 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 /cdnifcimap/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-cdnifcimap+json
{
"cdni-fci-capabilities": [
{
"capability-type": "FCI.DeliveryProtocol",
"capability-value": {
"delivery-protocols": [
"http/1.1"
]
}
}
]
}
{ HTTP/1.1 200 OK
"cdni-fci-capabilities": [ Content-Length: XXX
{ Content-Type: application/alto-cdnifcimap+json
"capability-type": "FCI.DeliveryProtocol", {
"capability-value": { "meta" : {
"delivery-protocols": [ "vtag": {
"resource-id": "my-default-cdnifci-map",
"tag": "da65eca2eb7a10ce8b059740b0b2e3f8eb1d4785"
}
},
"cdni-fci-map": {
"capabilities": [
{
"capability-type": "FCI.DeliveryProtocol",
"capability-value": {
"delivery-protocols": [
"http/1.1" "http/1.1"
]
}
}
]
}
HTTP/1.1 200 OK
Content-Length: XXX
Content-Type: application/alto-cdnifcimap+json
{
"meta" : {
"vtag": {
"resource-id": "my-default-cdnifci-map",
"tag": "da65eca2eb7a10ce8b059740b0b2e3f8eb1d4785"
}
},
"cdni-fci-map": {
"capabilities": [
{
"capability-type": "FCI.DeliveryProtocol",
"capability-value": {
"delivery-protocols": [
"http/1.1"
]
},
"footprints": [
<Footprint objects>
] ]
}, },
{ "footprints": [
"capability-type": "FCI.DeliveryProtocol", <Footprint objects>
"capability-value": { ]
"delivery-protocols": [ },
"https/1.1", {
"http/1.1" "capability-type": "FCI.DeliveryProtocol",
] "capability-value": {
}, "delivery-protocols": [
"footprints": [ "https/1.1",
<Footprint objects> "http/1.1"
] ]
} },
] "footprints": [
} <Footprint objects>
]
}
]
} }
}
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/cdnifcimaps 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
skipping to change at page 28, line 5 skipping to change at page 27, line 18
value. A footprint-value is an array of footprint values conforming value. A footprint-value is an array of footprint values conforming
to the specification associated with the registered footprint type to the specification associated with the registered footprint type
("ipv4cidr", "ipv6cidr", "asn", and "countrycode"). Since each ("ipv4cidr", "ipv6cidr", "asn", and "countrycode"). Since each
unified property map entity has a unique address and each pair of unified property map entity has a unique address and each pair of
footprint-type and a footprint value determines a group of unique footprint-type and a footprint value determines a group of unique
addresses, a footprint object can be represented as a set of entities addresses, a footprint object can be represented as a set of entities
according to their different footprint-type and footprint values. according to their different footprint-type and footprint values.
However, [I-D.ietf-alto-unified-props-new] only defines IPv4 Domain However, [I-D.ietf-alto-unified-props-new] only defines IPv4 Domain
and IPv6 Domain which represent footprint-type "ipv4cidr" and and IPv6 Domain which represent footprint-type "ipv4cidr" and
"ipv6cidr" respectively. To represent footprint-type "asn" and "ipv6cidr" respectively. To represent footprint-type "asn" and
"countrycode", this document registers two new domains in Section 7. "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 domain in addition to the ones in
skipping to change at page 29, line 16 skipping to change at page 29, line 5
6.2.1. IRD Example 6.2.1. IRD Example
We use the same IRD example given by Section 3.7.1. We use the same IRD example given by Section 3.7.1.
6.2.2. Property Map Example 6.2.2. Property Map Example
This example shows a full unified property map in which entities are This example shows a full unified property map in which entities are
footprints and entities' property is "cdni-fci-capabilities". footprints and entities' property is "cdni-fci-capabilities".
GET /propmap/full/cdnifci HTTP/1.1 GET /propmap/full/cdnifci HTTP/1.1
HOST: alto.example.com HOST: alto.example.com
Accept: application/alto-propmap+json,application/alto-error+json Accept: application/alto-propmap+json,application/alto-error+json
HTTP/1.1 200 OK
Content-Length: ###
Content-Type: application/alto-propmap+json
{ HTTP/1.1 200 OK
"property-map": { Content-Length: ###
"meta": { Content-Type: application/alto-propmap+json
"dependent-vtags": [
{"resource-id": "my-default-cdnifci-map", {
"tag": "7915dc0290c2705481c491a2b4ffbec482b3cf62"} "property-map": {
] "meta": {
}, "dependent-vtags": [
"countrycode:us": { {"resource-id": "my-default-cdnifci-map",
"cdni-fci-capabilities": [{"capability-type":, "tag": "7915dc0290c2705481c491a2b4ffbec482b3cf62"}
"capability-value":}] ]
}, },
"ipv4:192.0.2.0/24": { "countrycode:us": {
"cdni-fci-capabilities": [{"capability-type":, "cdni-fci-capabilities": [
"capability-value":}] {"capability-type": "FCI.DeliveryProtocol",
}, "capability-value": {"delivery-protocols": ["http/1.1"]}}]
"ipv4:198.51.100.0/24": { },
"cdni-fci-capabilities": [{"capability-type":, "ipv4:192.0.2.0/24": {
"capability-value":}] "cdni-fci-capabilities": [
}, {"capability-type": "FCI.DeliveryProtocol",
"ipv6:2001:db8::/32": { "capability-value": {"delivery-protocols": ["http/1.1"]}}]
"cdni-fci-capabilities": [{"capability-type":, },
"capability-value":}] "ipv4:198.51.100.0/24": {
}, "cdni-fci-capabilities": [
"asn:as64496": { {"capability-type": "FCI.DeliveryProtocol",
"cdni-fci-capabilities": [{"capability-type":, "capability-value": {"delivery-protocols": ["http/1.1"]}}]
"capability-value":}] },
} "ipv6:2001:db8::/32": {
} "cdni-fci-capabilities": [
} {"capability-type": "FCI.DeliveryProtocol",
"capability-value": {"delivery-protocols": ["http/1.1"]}}]
},
"asn:as64496": {
"cdni-fci-capabilities": [
{"capability-type": "FCI.DeliveryProtocol",
"capability-value": {"delivery-protocols": ["http/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"
and "cdni-fci-capabilities" properties for two footprints and "cdni-fci-capabilities" properties for two footprints
"ipv4:192.0.2.0/24" and "ipv6:2001:db8::/32". "ipv4:192.0.2.0/24" and "ipv6:2001:db8::/32".
POST /propmap/lookup/cdnifci-pid HTTP/1.1 POST /propmap/lookup/cdnifci-pid HTTP/1.1
HOST: alto.example.com HOST: alto.example.com
Content-Type: application/alto-propmapparams+json Content-Type: application/alto-propmapparams+json
skipping to change at page 31, line 19 skipping to change at page 30, line 25
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": [ "cdni-fci-capabilities", "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-map",
"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": [{"capability-type":, "cdni-fci-capabilities": [
"capability-value":}], {"capability-type": "FCI.DeliveryProtocol",
"pid": "pid1" "capability-value": {"delivery-protocols": ["http/1.1"]}}],
}, "pid": "pid1"
"ipv6:2001:db8::/32": { },
"cdni-fci-capabilities": [{"capability-type":, "ipv6:2001:db8::/32": {
"capability-value":}], "cdni-fci-capabilities": [
"pid": "pid3" {"capability-type": "FCI.DeliveryProtocol",
} "capability-value": {"delivery-protocols": ["http/1.1"]}}],
"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 "ipv6:2001:db8::/32".
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
skipping to change at page 32, line 47 skipping to change at page 32, line 6
data: "meta": { data: "meta": {
data: "dependent-vtags": [ data: "dependent-vtags": [
data: {"resource-id": "my-default-cdnifci-map", data: {"resource-id": "my-default-cdnifci-map",
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: "cdni-fci-capabilities": [
data: [{"capability-type":,"capability-value":}] data: {"capability-type": "FCI.DeliveryProtocol",
data: "capability-value": {
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": "/property-map/ipv4:192.0.2.0/124/",
data: "value": "pid5" data: "value": "pid5"
skipping to change at page 33, line 18 skipping to change at page 32, line 28
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": "/property-map/ipv4:192.0.2.0/124/",
data: "value": "pid5" data: "value": "pid5"
data: } data: }
data: } data: }
data: ]} data: ]}
7. IANA Considerations 7. Design Decisions and Discussions
7.1. CDNI Metadata Footprint Type Registry 7.1. Table versus Map
A major design decision is if the Map service is suitable to provide
the CDNI FCI. Current ALTO protocol uses Map service to provide
network information, such as Network Maps, Cost Maps and Property
Maps. Their common idea is to use Map-like data structure to
represent information. It is different from the data structure of
the CDNI FCI designed in [RFC8008], which suggests to use a set of
BaseAdvertisementObjects to represent the CDNI FCI information, which
actually is Table-like data structure. Both Table and Map can be
represented as a set of data entries. But the difference of them is
whether there is a primary key to index each data entry.
The main advantage of Map-like data design is to simplify the filter-
based query. According to the discussion in [RFC8008] about benefits
and concerns of advertisement-based design and query-based design,
filter-based query can make the CDNI FCI scalable when the dCDN has
thousands or tens of thousands of FCI objects. To transfer Table-
like data to Map-like data, introducing the primary key is necessary.
This document already defines two different solution to introduce the
primary key: (1) set unique identifiers for CDNI capability objects;
(2) set unique identifiers for CDNI footprint objects.
But the major concern of the Map-like data design is the redundancy.
In Map-like data design, whatever we choose CDNI capability objects
or footprint objects as the key, each data entry can only represent
the 1-N relation. But there are lots of CDNI FCI objects have the
N-N relation.
7.2. Filter-based Query versus Test-based Query
Another design decision is the query approach. ALTO is a query-based
protocol. So using ALTO, uCDN should send a query request to the
dCDN to pull the CDNI FCI proactively. To make the query efficiently
instead of pulling the whole FCI data base every time, query approach
design is very important.
This document only defines the filter-based query. A uCDN can
specify a set of FCI capability objects or footprint objects to only
query the information including them. But there are two limitations:
(1) uCDN cannot filter both of them simultaneously; (2) cannot
specify complex filters.
One example is that uCDN wants to filter all CDNI FCI objects whose
capabilities are in range C1 and footprints are in range F1, or
capabilities are in range C2 and footprints are in range F2.
8. IANA Considerations
8.1. CDNI Metadata Footprint Type Registry
+-----------------+-----------------------+-----------------------+ +-----------------+-----------------------+-----------------------+
| Footprint Type | Description | Specification | | Footprint Type | Description | Specification |
+-----------------+-----------------------+-----------------------+ +-----------------+-----------------------+-----------------------+
| altonetworkmap | A list of PID-names | RFCthis | | altonetworkmap | A list of PID-names | RFCthis |
+-----------------+-----------------------+-----------------------+ +-----------------+-----------------------+-----------------------+
Table 1: CDNI Metadata Footprint Type Table 1: CDNI Metadata Footprint Type
[RFC Editor: Please replace RFCthis with the published RFC number for [RFC Editor: Please replace RFCthis with the published RFC number for
this document.] this document.]
7.2. ALTO Entity Domain Registry 8.2. ALTO Entity Domain Registry
As proposed in Section 9.2 of [I-D.ietf-alto-unified-props-new], As proposed in Section 9.2 of [I-D.ietf-alto-unified-props-new],
"ALTO Entity Domain Registry" is requested. Besides, two new domains "ALTO Entity Domain Registry" is requested. Besides, two new domains
are to be registered, listed in Table 2. are to be registered, listed in Table 2.
+--------------+-------------------------+--------------------------+ +--------------+-------------------------+--------------------------+
| Identifier | Entity Address Encoding | Hierarchy & Inheritance | | Identifier | Entity Address Encoding | Hierarchy & Inheritance |
+--------------+-------------------------+--------------------------+ +--------------+-------------------------+--------------------------+
| asn | See Section 6.1.1.2 | None | | asn | See Section 6.1.1.2 | None |
| countrycode | See Section 6.1.2.2 | None | | countrycode | See Section 6.1.2.2 | None |
+--------------+-------------------------+--------------------------+ +--------------+-------------------------+--------------------------+
Table 2: ALTO Entity Domain Table 2: ALTO Entity Domain
7.3. ALTO CDNI FCI Property Type Registry 8.3. ALTO CDNI FCI Property Type Registry
The "ALTO CDNI FCI Property Type Registry" is required by the ALTO The "ALTO CDNI FCI Property Type Registry" is required by the ALTO
Entity Domain "asn", "countrycode", "pid", "ipv4" and "ipv6", listed Entity Domain "asn", "countrycode", "pid", "ipv4" and "ipv6", listed
in Table 3. in Table 3.
+------------------------+------------------------------------------+ +------------------------+------------------------------------------+
| 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
8. Security Considerations 9. Security Considerations
Although CDNI FCI Map resource defined in this document is relatively Although CDNI FCI Map resource defined in this document is relatively
different from other existed resources defined in the base protocol, different from other existed resources defined in the base protocol,
the Security Considerations of the base protocol (Section 15 of the Security Considerations of the base protocol (Section 15 of
RFC7285) still apply. RFC7285) still apply.
For authenticity and Integrity of ALTO information, an attacker may For authenticity and Integrity of ALTO information, an attacker may
disguise itself as an ALTO server in a dCDN, and it may provide false disguise itself as an ALTO server in a dCDN, and it may provide false
capabilities and footprints to an ALTO client in a uCDN by the CDNI 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 FCI map. Such false information may lead a uCDN to select a wrong
skipping to change at page 35, line 21 skipping to change at page 35, line 31
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
company ID as well as their agreements. And it needs to avoid company ID as well as their agreements. And it needs to avoid
expoing all full/filtered CDNI FCI maps resources in one of its IRDs. expoing all full/filtered CDNI FCI maps resources in one of its IRDs.
9. Acknowledgments 10. Acknowledgments
The authors would like to thank Daryl Malas, Matt Caulfield for their The authors would like to thank Daryl Malas, Matt Caulfield for their
timely reviews and invaluable comments. timely reviews and invaluable comments.
Jan Seedorf is partially supported by the GreenICN project (GreenICN: Jan Seedorf is partially supported by the GreenICN project (GreenICN:
Architecture and Applications of Green Information Centric Architecture and Applications of Green Information Centric
Networking), a research project supported jointly by the European Networking), a research project supported jointly by the European
Commission under its 7th Framework Program (contract no. 608518) and Commission under its 7th Framework Program (contract no. 608518) and
the National Institute of Information and Communications Technology the National Institute of Information and Communications Technology
(NICT) in Japan (contract no. 167). The views and conclusions (NICT) in Japan (contract no. 167). The views and conclusions
contained herein are those of the authors and should not be contained herein are those of the authors and should not be
interpreted as necessarily representing the official policies or interpreted as necessarily representing the official policies or
endorsements, either expressed or implied, of the GreenICN project, endorsements, either expressed or implied, of the GreenICN project,
the European Commission, or NICT. the European Commission, or NICT.
10. References 11. References
11.1. Normative References
10.1. Normative References [ISO3166-1]
The International Organization for Standardization, "Codes
for the representation of names of countries and their
subdivisions -- Part 1: Country codes", ISO 3166-1:2013,
2013.
[RFC5693] Seedorf, J. and E. Burger, "Application-Layer Traffic [RFC5693] Seedorf, J. and E. Burger, "Application-Layer Traffic
Optimization (ALTO) Problem Statement", RFC 5693, Optimization (ALTO) Problem Statement", RFC 5693,
DOI 10.17487/RFC5693, October 2009, <https://www.rfc- DOI 10.17487/RFC5693, October 2009,
editor.org/info/rfc5693>. <https://www.rfc-editor.org/info/rfc5693>.
[RFC6707] Niven-Jenkins, B., Le Faucheur, F., and N. Bitar, "Content [RFC6707] Niven-Jenkins, B., Le Faucheur, F., and N. Bitar, "Content
Distribution Network Interconnection (CDNI) Problem Distribution Network Interconnection (CDNI) Problem
Statement", RFC 6707, DOI 10.17487/RFC6707, September Statement", RFC 6707, DOI 10.17487/RFC6707, September
2012, <https://www.rfc-editor.org/info/rfc6707>. 2012, <https://www.rfc-editor.org/info/rfc6707>.
[RFC6793] Vohra, Q. and E. Chen, "BGP Support for Four-Octet [RFC6793] Vohra, Q. and E. Chen, "BGP Support for Four-Octet
Autonomous System (AS) Number Space", RFC 6793, Autonomous System (AS) Number Space", RFC 6793,
DOI 10.17487/RFC6793, December 2012, <https://www.rfc- DOI 10.17487/RFC6793, December 2012,
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., [RFC7336] Peterson, L., Davie, B., and R. van Brandenburg, Ed.,
"Framework for Content Distribution Network "Framework for Content Distribution Network
Interconnection (CDNI)", RFC 7336, DOI 10.17487/RFC7336, Interconnection (CDNI)", RFC 7336, DOI 10.17487/RFC7336,
skipping to change at page 36, line 32 skipping to change at page 37, line 5
"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>.
[ISO3166-1] 11.2. Informative References
The International Organization for Standardization, "Codes
for the representation of names of countries and their
subdivisions -- Part 1: Country codes", ISO 3166-1:2013,
2013.
10.2. Informative References
[I-D.ietf-alto-path-vector]
Bernstein, G., Chen, S., Lee, Y., Roome, W., Scharf, M.,
Yang, Y., and J. Zhang, "ALTO Extension: Path Vector Cost
Type", draft-ietf-alto-path-vector-04 (work in progress),
July 2018.
[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-07 (work in progress), July 2017.
[I-D.jenkins-alto-cdn-use-cases] [I-D.ietf-alto-path-vector]
Niven-Jenkins, B., Watson, G., Bitar, N., Medved, J., and Bernstein, G., Chen, S., Gao, K., Lee, Y., Roome, W.,
S. Previdi, "Use Cases for ALTO within CDNs", draft- Scharf, M., Yang, Y., and J. Zhang, "ALTO Extension: Path
jenkins-alto-cdn-use-cases-03 (work in progress), June Vector Cost Type", draft-ietf-alto-path-vector-04 (work in
2012. 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. and Y. Yang, "Extensible Property Maps for the
ALTO Protocol", draft-ietf-alto-unified-props-new-00 (work ALTO Protocol", draft-ietf-alto-unified-props-new-00 (work
in progress), July 2017. in progress), July 2017.
[I-D.jenkins-alto-cdn-use-cases]
Niven-Jenkins, B., Watson, G., Bitar, N., Medved, J., and
S. Previdi, "Use Cases for ALTO within CDNs", draft-
jenkins-alto-cdn-use-cases-03 (work in progress), June
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
 End of changes. 57 change blocks. 
357 lines changed or deleted 421 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/