summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc9241.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc9241.txt')
-rw-r--r--doc/rfc/rfc9241.txt2048
1 files changed, 2048 insertions, 0 deletions
diff --git a/doc/rfc/rfc9241.txt b/doc/rfc/rfc9241.txt
new file mode 100644
index 0000000..d672cf4
--- /dev/null
+++ b/doc/rfc/rfc9241.txt
@@ -0,0 +1,2048 @@
+
+
+
+
+Internet Engineering Task Force (IETF) J. Seedorf
+Request for Comments: 9241 HFT Stuttgart
+Category: Standards Track Y. Yang
+ISSN: 2070-1721 Yale University
+ K. Ma
+ Ericsson
+ J. Peterson
+ NeuStar
+ J. Zhang
+ Tongji University
+ July 2022
+
+
+ Content Delivery Network Interconnection (CDNI) Footprint and
+Capabilities Advertisement Using Application-Layer Traffic Optimization
+ (ALTO)
+
+Abstract
+
+ The Content Delivery Networks Interconnection (CDNI) framework in RFC
+ 6707 defines a set of protocols to interconnect CDNs to achieve
+ multiple goals, including extending the reach of a given CDN. A CDNI
+ Request Routing Footprint & Capabilities Advertisement interface
+ (FCI) is needed to achieve the goals of a CDNI. RFC 8008 defines the
+ FCI semantics and provides guidelines on the FCI protocol, but the
+ exact protocol is not specified. This document defines a new
+ Application-Layer Traffic Optimization (ALTO) service, called "CDNI
+ Advertisement Service", that provides an implementation of the FCI,
+ following the guidelines defined in RFC 8008.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc9241.
+
+Copyright Notice
+
+ Copyright (c) 2022 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Revised BSD License text as described in Section 4.e of the
+ Trust Legal Provisions and are provided without warranty as described
+ in the Revised BSD License.
+
+Table of Contents
+
+ 1. Introduction
+ 2. Terminology and Background
+ 2.1. Terminology
+ 2.2. Semantics of FCI Advertisement
+ 2.3. ALTO Background and Benefits
+ 3. CDNI Advertisement Service
+ 3.1. Media Type
+ 3.2. HTTP Method
+ 3.3. Accept Input Parameters
+ 3.4. Capabilities
+ 3.5. Uses
+ 3.6. Response
+ 3.7. Examples
+ 3.7.1. IRD
+ 3.7.2. A Basic Example
+ 3.7.3. Incremental Updates
+ 4. CDNI Advertisement Service Using ALTO Network Map
+ 4.1. Network Map Footprint Type: altopid
+ 4.2. Examples
+ 4.2.1. ALTO Network Map for CDNI Advertisements
+ 4.2.2. ALTO PID Footprints in CDNI Advertisements
+ 4.2.3. Incremental Updates
+ 5. Filtered CDNI Advertisement Using CDNI Capabilities
+ 5.1. Media Type
+ 5.2. HTTP Method
+ 5.3. Accept Input Parameters
+ 5.4. Capabilities
+ 5.5. Uses
+ 5.6. Response
+ 5.7. Examples
+ 5.7.1. A Basic Example
+ 5.7.2. Incremental Updates
+ 6. Query Footprint Properties Using ALTO Property Map Service
+ 6.1. Representing Footprint Objects as Property Map Entities
+ 6.1.1. ASN Domain
+ 6.1.2. COUNTRYCODE Domain
+ 6.2. Representing CDNI Capabilities as Property Map Entity
+ Properties
+ 6.2.1. Defining Information Resource Media Type for Property
+ Type cdni-capabilities
+ 6.2.2. Intended Semantics of Property Type cdni-capabilities
+ 6.3. Examples
+ 6.3.1. Property Map
+ 6.3.2. Filtered Property Map
+ 6.3.3. Incremental Updates
+ 7. IANA Considerations
+ 7.1. application/alto-cdni+json Media Type
+ 7.2. application/alto-cdnifilter+json Media Type
+ 7.3. CDNI Metadata Footprint Types Registry
+ 7.4. ALTO Entity Domain Types Registry
+ 7.5. ALTO Entity Property Types Registry
+ 8. Security Considerations
+ 9. References
+ 9.1. Normative References
+ 9.2. Informative References
+ Acknowledgments
+ Contributors
+ Authors' Addresses
+
+1. Introduction
+
+ The ability to interconnect multiple content delivery networks (CDNs)
+ has many benefits, including increased coverage, capability, and
+ reliability. The Content Delivery Networks Interconnection (CDNI)
+ framework [RFC6707] defines four interfaces to interconnect CDNs: (1)
+ the CDNI Request Routing Interface, (2) the CDNI Metadata Interface,
+ (3) the CDNI Logging Interface, and (4) the CDNI Control Interface.
+
+ Among these four interfaces, the CDNI Request Routing Interface
+ provides key functions, as specified in [RFC6707]:
+
+ | The CDNI Request Routing interface enables a Request Routing
+ | function in an Upstream CDN to query a Request Routing function in
+ | a Downstream CDN to determine if the Downstream CDN is able (and
+ | willing) to accept the delegated Content Request. It also allows
+ | the Downstream CDN to control what should be returned to the User
+ | Agent in the redirection message by the upstream Request Routing
+ | function.
+
+ At a high level, therefore, the scope of the CDNI Request Routing
+ Interface contains two main tasks: (1) determining if the dCDN
+ (downstream CDN) is willing to accept a delegated Content Request and
+ (2) redirecting the Content Request coming from a uCDN (upstream CDN)
+ to the proper entry point or entity in the dCDN.
+
+ Correspondingly, the Request Routing Interface is broadly divided
+ into two functionalities: (1) the CDNI Footprint & Capabilities
+ Advertisement interface (FCI) defined in [RFC8008] and (2) the CDNI
+ Request Routing Redirection interface (RI) defined in [RFC7975].
+ This document focuses on the first functionality (CDNI FCI).
+
+ Specifically, CDNI FCI allows both an Advertisement from a dCDN to a
+ uCDN (push) and a query from a uCDN to a dCDN (pull) so that the uCDN
+ knows whether it can redirect a particular user request to that dCDN.
+
+ A key component in defining the CDNI FCI is defining the objects that
+ describe the footprints and capabilities of a dCDN. Such objects are
+ already specified in Section 5 of [RFC8008]. However, no protocol is
+ defined to transport and update such objects between a uCDN and a
+ dCDN.
+
+ To define such a protocol, this document specifies an extension of
+ the Application-Layer Traffic Optimization (ALTO) Protocol [RFC7285]
+ by introducing a new ALTO service called "CDNI Advertisement
+ Service".
+
+ Section 2.3 discusses the benefits in using ALTO as a transport
+ protocol.
+
+2. Terminology and Background
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
+ "OPTIONAL" in this document are to be interpreted as described in
+ BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
+ capitals, as shown here.
+
+ The design of CDNI FCI transport using ALTO assumes an understanding
+ of both FCI semantics and ALTO. Hence, this document starts with a
+ non-normative review of both.
+
+2.1. Terminology
+
+ The document uses the CDNI terms defined in [RFC6707], [RFC8006], and
+ [RFC8008]. Also, the document uses the ALTO terms defined in
+ [RFC7285] and [RFC9240]. This document uses the following
+ abbreviations:
+
+ ALTO: Application-Layer Traffic Optimization
+
+ ASN: Autonomous System Number
+
+ CDN: Content Delivery Network
+
+ CDNI: CDN Interconnection
+
+ dCDN: Downstream CDN
+
+ FCI: CDNI FCI, CDNI Request Routing Footprint & Capabilities
+ Advertisement interface
+
+ IRD: Information Resource Directory in ALTO
+
+ PID: Provider-defined Identifier in ALTO
+
+ uCDN: Upstream CDN
+
+2.2. Semantics of FCI Advertisement
+
+ [RFC8008] defines the semantics of CDNI FCI, provides guidance on
+ what footprint and capabilities mean in a CDNI context, and specifies
+ the requirements on the CDNI FCI transport protocol. The definitions
+ in [RFC8008] depend on [RFC8006]. Below is a non-normative review of
+ key related points of [RFC8008] and [RFC8006]. For detailed
+ information and normative specification, the reader should refer to
+ these two RFCs.
+
+ * Multiple types of mandatory-to-implement footprints (i.e.,
+ "ipv4cidr", "ipv6cidr", "asn", and "countrycode") are defined in
+ [RFC8006]. A "set of IP prefixes" can contain both full IP
+ addresses (i.e., a /32 for IPv4 or a /128 for IPv6) and IP
+ prefixes with an arbitrary prefix length. There must also be
+ support for multiple IP address versions, i.e., IPv4 and IPv6, in
+ such a footprint.
+
+ * Multiple initial types of capabilities are defined in [RFC8008]
+ including (1) Delivery Protocol, (2) Acquisition Protocol, (3)
+ Redirection Mode, (4) capabilities related to CDNI Logging, and
+ (5) capabilities related to CDNI Metadata. They are required in
+ all cases and, therefore, considered as mandatory-to-implement
+ capabilities for all CDNI FCI implementations.
+
+ * Footprint and capabilities are defined together and cannot be
+ interpreted independently from each other. Specifically,
+ [RFC8008] integrates footprint and capabilities with an approach
+ of "capabilities with footprint restrictions", by expressing
+ capabilities on a per footprint basis.
+
+ * Specifically, for all mandatory-to-implement footprint types,
+ footprints can be viewed as constraints for delegating requests to
+ a dCDN: a dCDN footprint advertisement tells the uCDN the
+ limitations for delegating a request to the dCDN. For IP prefixes
+ or Autonomous System Numbers (ASNs), the footprint signals to the
+ uCDN that it should consider the dCDN a candidate only if the IP
+ address of the Request Routing source falls within the prefix set
+ or ASN, respectively. The CDNI specifications do not define how a
+ given uCDN determines what address ranges are in a particular ASN.
+ Similarly, for country codes, a uCDN should only consider the dCDN
+ a candidate if it covers the country of the Request Routing
+ source. The CDNI specifications do not define how a given uCDN
+ determines the country of the Request Routing source. Different
+ types of footprint constraints can be combined together to narrow
+ the dCDN candidacy, i.e., the uCDN should consider the dCDN a
+ candidate only if the request routing source satisfies all the
+ types of footprint constraints in the advertisement.
+
+ * Given that a large part of Footprint and Capabilities
+ Advertisement may happen in contractual agreements, the semantics
+ of CDNI Footprint and Capabilities Advertisement refers to
+ answering the following question: what exactly still needs to be
+ advertised by the CDNI FCI? For instance, updates about temporal
+ failures of part of a footprint can be useful information to
+ convey via the CDNI FCI. Such information would provide updates
+ on information previously agreed to in contracts between the
+ participating CDNs. In other words, the CDNI FCI is a means for a
+ dCDN to provide changes and updates regarding a footprint and/or
+ capabilities that it has previously agreed to serve in a contract
+ with a uCDN. Hence, server push and incremental encoding will be
+ necessary techniques.
+
+2.3. ALTO Background and Benefits
+
+ Application-Layer Traffic Optimization (ALTO) [RFC7285] defines an
+ approach for conveying network-layer (topology) information to
+ "guide" the resource provider selection process in distributed
+ applications that can choose among several candidate resources
+ providers to retrieve a given resource. Usually, it is assumed that
+ an ALTO server conveys information that these applications cannot
+ measure or have difficulty measuring themselves [RFC5693].
+
+ Originally, ALTO was motivated by optimizing cross-ISP traffic
+ generated by peer-to-peer applications [RFC5693]. However, ALTO can
+ also be used for improving the Request Routing in CDNs. In
+ particular, Section 5 of [RFC7971] explicitly mentions ALTO as a
+ candidate protocol to improve the selection of a CDN surrogate or
+ origin.
+
+ The following reasons make ALTO a suitable candidate protocol for
+ dCDN selection as part of CDNI Request Routing and, in particular,
+ for an FCI protocol:
+
+ * Application-Layer-oriented: ALTO is a protocol specifically
+ designed to improve application-layer traffic (and application-
+ layer connections among hosts on the Internet) by providing
+ additional information to applications that these applications
+ could not easily retrieve themselves. This matches the need of
+ CDNI, where a uCDN wants to improve application-layer CDN request
+ routing by using information (provided by a dCDN) that the uCDN
+ could not easily obtain otherwise. Hence, ALTO can help a uCDN to
+ select a proper dCDN by first providing dCDNs' capabilities as
+ well as footprints (see Section 3) and then providing costs of
+ surrogates in a dCDN by ALTO cost maps.
+
+ * Security: The identification between uCDNs and dCDNs is an
+ important requirement (see Section 8). ALTO maps can be signed
+ and hence provide inherent origin protection. Please see
+ Section 15.1.2 of [RFC7285] for detailed protection strategies.
+
+ * RESTful design: The ALTO Protocol has undergone extensive
+ revisions in order to provide a RESTful design regarding the
+ client-server interaction specified by the protocol. It is
+ flexible and extensible enough to handle existing and potential
+ future data formats defined by CDNI. It can provide the
+ consistent client-server interaction model for other existing CDNI
+ interfaces or potential future extensions and therefore reduce the
+ learning cost for both users and developers, although they are not
+ in the scope of this document. A CDNI FCI interface based on ALTO
+ would inherit this RESTful design. Please see Section 3.
+
+ * Error handling: The ALTO Protocol provides extensive error
+ handling in the whole request and response process (see
+ Section 8.5 of [RFC7285]). A CDNI FCI interface based on ALTO
+ would inherit this extensive error-handling framework. Please see
+ Section 5.
+
+ * Map Service: The semantics of an ALTO network map is an exact
+ match for the needed information to convey a footprint by a dCDN,
+ in particular, if such a footprint is being expressed by IP prefix
+ ranges. Please see Section 4.
+
+ * Filtered Map Service: The ALTO map filtering service would allow a
+ uCDN to query only for parts of an ALTO map. For example, the
+ ALTO filtered property Map Service can enable a uCDN to query
+ properties of a part of footprints efficiently. Please see
+ Section 6.
+
+ * Server-initiated notifications and incremental updates: When the
+ footprint or the capabilities of a dCDN change (i.e., unexpectedly
+ from the perspective of a uCDN), server-initiated notifications
+ would enable a dCDN to inform a uCDN about such changes directly.
+ Consider the case where -- due to failure -- part of the footprint
+ of the dCDN is not functioning, i.e., the CDN cannot serve content
+ to such clients with reasonable QoS. Without server-initiated
+ notifications, the uCDN might still use a recent network and cost
+ map from the dCDN and therefore redirect requests to the dCDN that
+ it cannot serve. Similarly, the possibility for incremental
+ updates would enable efficient conveyance of the aforementioned
+ (or similar) status changes by the dCDN to the uCDN. The newest
+ design of ALTO supports server-pushed incremental updates
+ [RFC8895].
+
+ * Content availability on hosts: A dCDN might want to express CDN
+ capabilities in terms of certain content types (e.g., codecs and/
+ or formats, or content from certain content providers). ALTO
+ Entity Property Map [RFC9240] would enable a dCDN to make such
+ information available to a uCDN. This would enable a uCDN to
+ assess whether a dCDN has the capabilities for a given type of
+ content requested.
+
+ * Resource availability on hosts or links: The capabilities on links
+ (e.g., maximum bandwidth) or caches (e.g., average load) might be
+ useful information for a uCDN for optimized dCDN selection. For
+ instance, if a uCDN receives a streaming request for content with
+ a certain bitrate, it needs to know if it is likely that a dCDN
+ can fulfill such stringent application-level requirements (i.e.,
+ can be expected to have enough consistent bandwidth) before it
+ redirects the request. In general, if ALTO could convey such
+ information via ALTO Entity Property Map [RFC9240], it would
+ enable more sophisticated means for dCDN selection with ALTO. The
+ ALTO Path Vector extension [ALTO-PATH-VECTOR] is designed to allow
+ ALTO clients to query information such as capacity regions for a
+ given set of flows.
+
+3. CDNI Advertisement Service
+
+ The ALTO Protocol relies upon the ALTO information service framework,
+ which consists of multiple services. All ALTO services are "provided
+ through a common transport protocol; messaging structure and
+ encoding; and transaction model" [RFC7285]. The ALTO Protocol
+ specification defines multiple initial services, e.g., the ALTO
+ Network Map Service and Cost Map Service.
+
+ This document defines a new ALTO service, called "CDNI Advertisement
+ Service", which conveys JSON [RFC8259] objects of media type
+ "application/alto-cdni+json". These JSON objects are used to
+ transport BaseAdvertisementObject objects defined in [RFC8008]. This
+ document specifies how to transport such BaseAdvertisementObject
+ objects via the ALTO Protocol with the ALTO CDNI Advertisement
+ Service. Similar to other ALTO services, this document defines the
+ ALTO information resource for the CDNI Advertisement Service as
+ follows.
+
+ Note that the encoding of BaseAdvertisementObject reuses the one
+ defined in [RFC8008] and therefore also follows the recommendations
+ of I-JSON (Internet JSON) [RFC7493], which is required by [RFC8008].
+
+3.1. Media Type
+
+ The media type of the CDNI Advertisement resource is "application/
+ alto-cdni+json" (see Section 7).
+
+3.2. HTTP Method
+
+ A CDNI Advertisement resource is requested using the HTTP GET method.
+
+3.3. Accept Input Parameters
+
+ There are no applicable Accept Input parameters.
+
+3.4. Capabilities
+
+ There are no applicable capabilities.
+
+3.5. Uses
+
+ The "uses" field MUST NOT appear unless the CDNI Advertisement
+ resource depends on other ALTO information resources. If the CDNI
+ Advertisement resource has dependent resources, the resource IDs of
+ its dependent resources MUST be included into the "uses" field. This
+ document only defines one potential dependent resource for the CDNI
+ Advertisement resource. See Section 4 for details of when and how to
+ use it. Future documents may extend the CDNI Advertisement resource
+ and allow other dependent resources.
+
+3.6. Response
+
+ The "meta" field of a CDNI Advertisement response MUST include the
+ "vtag" field defined in Section 10.3 of [RFC7285]. This field
+ provides the version of the retrieved CDNI FCI resource.
+
+ If a CDNI Advertisement response depends on other ALTO information
+ resources, it MUST include the "dependent-vtags" field, whose value
+ is an array to indicate the version tags of the resources used, where
+ each resource is specified in "uses" of its Information Resource
+ Directory (IRD) entry.
+
+ The data component of an ALTO CDNI Advertisement response is named
+ "cdni-advertisement", which is a JSON object of type
+ CDNIAdvertisementData:
+
+ object {
+ CDNIAdvertisementData cdni-advertisement;
+ } InfoResourceCDNIAdvertisement : ResponseEntityBase;
+
+ object {
+ BaseAdvertisementObject capabilities-with-footprints<0..*>;
+ } CDNIAdvertisementData;
+
+ Specifically, a CDNIAdvertisementData object is a JSON object that
+ includes only one property named "capabilities-with-footprints",
+ whose value is an array of BaseAdvertisementObject objects. It
+ provides capabilities with footprint restrictions for the uCDN to
+ decide the dCDN selection. If the value of this property is an empty
+ array, it means the corresponding dCDN cannot provide any mandatory-
+ to-implement CDNI capabilities for any footprints.
+
+ The syntax and semantics of BaseAdvertisementObject are well defined
+ in Section 5.1 of [RFC8008]. A BaseAdvertisementObject object
+ includes multiple properties, including "capability-type",
+ "capability-value", and "footprints", where "footprints" are defined
+ in Section 4.2.2.2 of [RFC8006].
+
+ An equivalent specification in the ALTO-style notation (see
+ Section 8.2 of [RFC7285]) creates a self-contained description of the
+ BaseAdvertisementObject. As mentioned above, the normative
+ specification of BaseAdvertisementObject is in [RFC8008].
+
+ object {
+ JSONString capability-type;
+ JSONValue capability-value;
+ Footprint footprints<0..*>;
+ } BaseAdvertisementObject;
+
+ object {
+ JSONString footprint-type;
+ JSONString footprint-value<1..*>;
+ } Footprint;
+
+ For each BaseAdvertisementObject, the ALTO client MUST interpret
+ "footprints" appearing multiple times as if they appeared only once.
+ If "footprints" in a BaseAdvertisementObject is null or empty or does
+ not appear, the ALTO client MUST understand that the capabilities in
+ this BaseAdvertisementObject have the "global" coverage, i.e., the
+ corresponding dCDN can provide them for any Request Routing source.
+
+ Note: Further optimization of BaseAdvertisementObjects to effectively
+ provide the advertisement of capabilities with footprint restrictions
+ is certainly possible. For example, these two examples below both
+ describe that the dCDN can provide capabilities ["http/1.1",
+ "https/1.1"] for the same footprints. However, the latter one is
+ smaller in its size.
+
+ EXAMPLE 1
+ {
+ "meta": {...},
+ "cdni-advertisement": {
+ "capabilities-with-footprints": [
+ {
+ "capability-type": "FCI.DeliveryProtocol",
+ "capability-value": {
+ "delivery-protocols": [
+ "http/1.1"
+ ]
+ },
+ "footprints": [
+ <Footprint objects>
+ ]
+ },
+ {
+
+ "capability-type": "FCI.DeliveryProtocol",
+ "capability-value": {
+ "delivery-protocols": [
+ "https/1.1"
+ ]
+ },
+ "footprints": [
+ <Footprint objects>
+ ]
+ }
+ ]
+ }
+ }
+
+ EXAMPLE 2
+ {
+ "meta": {...},
+ "cdni-advertisement": {
+ "capabilities-with-footprints": [
+ {
+ "capability-type": "FCI.DeliveryProtocol",
+ "capability-value": {
+ "delivery-protocols": [
+ "https/1.1",
+ "http/1.1"
+ ]
+ },
+ "footprints": [
+ <Footprint objects>
+ ]
+ }
+ ]
+ }
+ }
+
+ Since such optimizations are not required for the basic
+ interconnection of CDNs, the specifics of such mechanisms are outside
+ the scope of this document.
+
+ This document only requires the ALTO server to provide the initial
+ FCI-specific CDNI Payload Types defined in [RFC8008] as the
+ mandatory-to-implement CDNI capabilities.
+
+3.7. Examples
+
+3.7.1. IRD
+
+ Below is the IRD of a simple, example ALTO server. The server
+ provides both base ALTO information resources (e.g., network maps)
+ and CDNI FCI-related information resources (e.g., CDNI Advertisement
+ resources), demonstrating a single, integrated environment.
+
+ Specifically, the IRD announces nine information resources as
+ follows:
+
+ * two network maps,
+
+ * one CDNI Advertisement resource without dependency,
+
+ * one CDNI Advertisement resource depending on a network map,
+
+ * one filtered CDNI Advertisement resource to be defined in
+ Section 5,
+
+ * one property map including "cdni-capabilities" as its entity
+ property,
+
+ * one filtered property map including "cdni-capabilities" and "pid"
+ as its entity properties, and
+
+ * two update stream services:
+
+ - one for updating CDNI Advertisement resources,
+
+ - one for updating property maps
+
+ GET /directory HTTP/1.1
+ Host: alto.example.com
+ Accept: application/alto-directory+json,application/alto-error+json
+
+ HTTP/1.1 200 OK
+ Content-Length: 3531
+ Content-Type: application/alto-directory+json
+
+ {
+ "meta": {
+ "default-alto-network-map": "my-default-network-map"
+ },
+ "resources": {
+ "my-default-network-map": {
+ "uri": "https://alto.example.com/networkmap",
+ "media-type": "application/alto-networkmap+json"
+ },
+ "my-eu-netmap": {
+ "uri": "https://alto.example.com/myeunetmap",
+ "media-type": "application/alto-networkmap+json"
+ },
+ "my-default-cdnifci": {
+ "uri": "https://alto.example.com/cdnifci",
+ "media-type": "application/alto-cdni+json"
+ },
+ "my-cdnifci-with-pid-footprints": {
+ "uri": "https://alto.example.com/networkcdnifci",
+ "media-type": "application/alto-cdni+json",
+ "uses": [ "my-eu-netmap" ]
+ },
+ "my-filtered-cdnifci": {
+ "uri": "https://alto.example.com/cdnifci/filtered",
+ "media-type": "application/alto-cdni+json",
+ "accepts": "application/alto-cdnifilter+json"
+ },
+ "cdnifci-property-map": {
+ "uri": "https://alto.example.com/propmap/full/cdnifci",
+ "media-type": "application/alto-propmap+json",
+ "uses": [ "my-default-cdni" ],
+ "capabilities": {
+ "mappings": {
+ "ipv4": [ "my-default-cdni.cdni-capabilities" ],
+ "ipv6": [ "my-default-cdni.cdni-capabilities" ],
+ "countrycode": [
+ "my-default-cdni.cdni-capabilities" ],
+ "asn": [ "my-default-cdni.cdni-capabilities" ]
+ }
+ }
+ },
+ "filtered-cdnifci-property-map": {
+ "uri": "https://alto.example.com/propmap/lookup/cdnifci-pid",
+ "media-type": "application/alto-propmap+json",
+ "accepts": "application/alto-propmapparams+json",
+ "uses": [ "my-default-cdni", "my-default-network-map" ],
+ "capabilities": {
+ "mappings": {
+ "ipv4": [ "my-default-cdni.cdni-capabilities",
+ "my-default-network-map.pid" ],
+ "ipv6": [ "my-default-cdni.cdni-capabilities",
+ "my-default-network-map.pid" ],
+ "countrycode": [
+ "my-default-cdni.cdni-capabilities" ],
+ "asn": [ "my-default-cdni.cdni-capabilities" ]
+ }
+ }
+ },
+ "update-my-cdni-fci": {
+ "uri": "https://alto.example.com/updates/cdnifci",
+ "media-type": "text/event-stream",
+ "accepts": "application/alto-updatestreamparams+json",
+ "uses": [
+ "my-default-network-map",
+ "my-eu-netmap",
+ "my-default-cdnifci",
+ "my-filtered-cdnifci",
+ "my-cdnifci-with-pid-footprints"
+ ],
+ "capabilities": {
+ "incremental-change-media-types": {
+ "my-default-network-map": "application/json-patch+json",
+ "my-eu-netmap": "application/json-patch+json",
+ "my-default-cdnifci":
+ "application/merge-patch+json,application/json-patch+json",
+ "my-filtered-cdnifci":
+ "application/merge-patch+json,application/json-patch+json",
+ "my-cdnifci-with-pid-footprints":
+ "application/merge-patch+json,application/json-patch+json"
+ }
+ }
+ },
+ "update-my-props": {
+ "uri": "https://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. A Basic Example
+
+ This basic example demonstrates a simple CDNI Advertisement resource,
+ which does not depend on other resources. There are three
+ BaseAdvertisementObjects in this resource and these objects'
+ capabilities are "http/1.1" delivery protocol, ["http/1.1",
+ "https/1.1"] delivery protocol, and "https/1.1" acquisition protocol,
+ respectively.
+
+ GET /cdnifci HTTP/1.1
+ Host: alto.example.com
+ Accept: application/alto-cdni+json,application/alto-error+json
+
+ HTTP/1.1 200 OK
+ Content-Length: 1411
+ Content-Type: application/alto-cdni+json
+
+ {
+ "meta": {
+ "vtag": {
+ "resource-id": "my-default-cdnifci",
+ "tag": "da65eca2eb7a10ce8b059740b0b2e3f8eb1d4785"
+ }
+ },
+ "cdni-advertisement": {
+ "capabilities-with-footprints": [
+ {
+ "capability-type": "FCI.DeliveryProtocol",
+ "capability-value": {
+ "delivery-protocols": [
+ "http/1.1"
+ ]
+ },
+ "footprints": [
+ {
+ "footprint-type": "ipv4cidr",
+ "footprint-value": [ "192.0.2.0/24" ]
+ },
+ {
+ "footprint-type": "ipv6cidr",
+ "footprint-value": [ "2001:db8::/32" ]
+ }
+ ]
+ },
+ {
+ "capability-type": "FCI.DeliveryProtocol",
+ "capability-value": {
+ "delivery-protocols": [
+ "https/1.1",
+ "http/1.1"
+ ]
+ },
+ "footprints": [
+ {
+ "footprint-type": "ipv4cidr",
+ "footprint-value": [ "198.51.100.0/24" ]
+ }
+ ]
+ },
+ {
+ "capability-type": "FCI.AcquisitionProtocol",
+ "capability-value": {
+ "acquisition-protocols": [
+ "https/1.1"
+ ]
+ },
+ "footprints": [
+ {
+ "footprint-type": "ipv4cidr",
+ "footprint-value": [ "203.0.113.0/24" ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+
+3.7.3. Incremental Updates
+
+ A benefit of using ALTO to provide CDNI Advertisement resources is
+ that such resources can be updated using ALTO incremental updates
+ [RFC8895]. Below is an example that also shows the benefit of having
+ both JSON merge patch and JSON patch to encode updates.
+
+ At first, an ALTO client requests updates for "my-default-cdnifci",
+ and the ALTO server returns the "control-uri" followed by the full
+ CDNI Advertisement response. Then when there is a change in the
+ "delivery-protocols" in that "http/1.1" is removed (from ["http/1.1",
+ "https/1.1"] to only "https/1.1") due to maintenance of the
+ "http/1.1" clusters, the ALTO server regenerates the new CDNI
+ Advertisement resource and pushes the full replacement to the ALTO
+ client. Later on, the ALTO server notifies the ALTO client that
+ "192.0.2.0/24" is added into the "ipv4" footprint object for delivery
+ protocol "https/1.1" by sending the change encoded by JSON patch to
+ the ALTO client.
+
+ POST /updates/cdnifci HTTP/1.1
+ Host: alto.example.com
+ Accept: text/event-stream,application/alto-error+json
+ Content-Type: application/alto-updatestreamparams+json
+ Content-Length: 94
+
+ {
+ "add": {
+ "my-cdnifci-stream": {
+ "resource-id": "my-default-cdnifci"
+ }
+ }
+ }
+
+ HTTP/1.1 200 OK
+ Connection: keep-alive
+ Content-Type: text/event-stream
+
+ event: application/alto-updatestreamcontrol+json
+ data: {"control-uri":
+ data: "https://alto.example.com/updates/streams/3141592653589"}
+
+ event: application/alto-cdni+json,my-cdnifci-stream
+ data: { ... full CDNI Advertisement resource ... }
+
+ event: application/alto-cdni+json,my-cdnifci-stream
+ data: {
+ data: "meta": {
+ data: "vtag": {
+ data: "tag": "dasdfa10ce8b059740bddsfasd8eb1d47853716"
+ data: }
+ data: },
+ data: "cdni-advertisement": {
+ data: "capabilities-with-footprints": [
+ data: {
+ data: "capability-type": "FCI.DeliveryProtocol",
+ data: "capability-value": {
+ data: "delivery-protocols": [
+ data: "https/1.1"
+ data: ]
+ data: },
+ data: "footprints": [
+ data: { "footprint-type": "ipv4cidr",
+ data: "footprint-value": [ "203.0.113.0/24" ]
+ data: }
+ data: ]
+ data: },
+ data: { ... other CDNI advertisement object ... }
+ data: ]
+ data: }
+ data: }
+
+ event: application/json-patch+json,my-cdnifci-stream
+ data: [
+ data: { "op": "replace",
+ data: "path": "/meta/vtag/tag",
+ data: "value": "a10ce8b059740b0b2e3f8eb1d4785acd42231bfe"
+ data: },
+ data: { "op": "add",
+ data: "path": "/cdni-advertisement/capabilities-with-footprints
+ /0/footprints/0/footprint-value/-",
+ data: "value": "192.0.2.0/24"
+ data: }
+ data: ]
+
+4. CDNI Advertisement Service Using ALTO Network Map
+
+4.1. Network Map Footprint Type: altopid
+
+ The ALTO Protocol defines a concept called Provider-defined
+ Identifier (PID) to represent a group of IPv4 or IPv6 addresses to
+ which can be applied the same management policy. The PID is an
+ alternative to the predefined CDNI footprint types (i.e., "ipv4cidr",
+ "ipv6cidr", "asn", and "countrycode").
+
+ To leverage this concept, this document defines a new CDNI Footprint
+ Type called "altopid". A CDNI Advertisement resource can depend on
+ an ALTO network map resource and use "altopid" footprints to compress
+ its CDNI Footprint Payload.
+
+ Specifically, the "altopid" footprint type indicates that the
+ corresponding footprint value is a list of PIDNames as defined in
+ [RFC7285]. These PIDNames are references of PIDs in a network map
+ resource. Hence a CDNI Advertisement resource using "altopid"
+ footprints depends on a network map. For such a CDNI Advertisement
+ resource, the resource ID of its dependent network map MUST be
+ included in the "uses" field of its IRD entry, and the "dependent-
+ vtags" field with a reference to this network map MUST be included in
+ its response (see the example in Section 4.2.2).
+
+4.2. Examples
+
+ The following examples use the same IRD given in Section 3.7.1.
+
+4.2.1. ALTO Network Map for CDNI Advertisements
+
+ Below provides a sample network map whose resource ID is "my-eu-
+ netmap". This map is referenced by the CDNI Advertisement example in
+ Section 4.2.2.
+
+ GET /myeunetmap HTTP/1.1
+ Host: alto.example.com
+ Accept: application/alto-networkmap+json,application/alto-error+json
+
+ HTTP/1.1 200 OK
+ Content-Length: 344
+ Content-Type: application/alto-networkmap+json
+
+ {
+ "meta": {
+ "vtag": [
+ { "resource-id": "my-eu-netmap",
+ "tag": "3ee2cb7e8d63d9fab71b9b34cbf764436315542e"
+ }
+ ]
+ },
+ "network-map": {
+ "south-france" : {
+ "ipv4": [ "192.0.2.0/24", "198.51.100.0/25" ],
+ "ipv6": [ "2001:db8::/32" ]
+ },
+ "germany": {
+ "ipv4": [ "203.0.113.0/24" ]
+ }
+ }
+ }
+
+4.2.2. ALTO PID Footprints in CDNI Advertisements
+
+ This example shows a CDNI Advertisement resource that depends on a
+ network map described in Section 4.2.1.
+
+ GET /networkcdnifci HTTP/1.1
+ Host: alto.example.com
+ Accept: application/alto-cdni+json,application/alto-error+json
+
+ HTTP/1.1 200 OK
+ Content-Length: 736
+ Content-Type: application/alto-cdni+json
+
+ {
+ "meta": {
+ "dependent-vtags": [
+ {
+ "resource-id": "my-eu-netmap",
+ "tag": "3ee2cb7e8d63d9fab71b9b34cbf764436315542e"
+ }
+ ]
+ },
+ "cdni-advertisement": {
+ "capabilities-with-footprints": [
+ { "capability-type": "FCI.DeliveryProtocol",
+ "capability-value": [ "https/1.1" ],
+ "footprints": [
+ { "footprint-type": "altopid",
+ "footprint-value": [ "south-france" ]
+ }
+ ]
+ },
+ { "capability-type": "FCI.AcquisitionProtocol",
+ "capability-value": [ "https/1.1" ],
+ "footprints": [
+ { "footprint-type": "altopid",
+ "footprint-value": [ "germany", "south-france" ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+
+4.2.3. Incremental Updates
+
+ In this example, the ALTO client is interested in changes of "my-
+ cdnifci-with-pid-footprints" and its dependent network map "my-eu-
+ netmap". Considering two changes, the first one is to change
+ footprints of the "https/1.1" delivery protocol capability, and the
+ second one is to remove the "south-france" PID from the footprints of
+ the "https/1.1" acquisition protocol capability.
+
+ POST /updates/cdnifci HTTP/1.1
+ Host: alto.example.com
+ Accept: text/event-stream,application/alto-error+json
+ Content-Type: application/alto-updatestreamparams+json
+ Content-Length: 185
+
+ {
+ "add": {
+ "my-eu-netmap-stream": {
+ "resource-id": "my-eu-netmap"
+ },
+ "my-netmap-cdnifci-stream": {
+ "resource-id": "my-cdnifci-with-pid-footprints"
+ }
+ }
+ }
+
+ HTTP/1.1 200 OK
+ Connection: keep-alive
+ Content-Type: text/event-stream
+
+ event: application/alto-updatestreamcontrol+json
+ data: {"control-uri":
+ data: "https://alto.example.com/updates/streams/3141592653590"}
+
+ event: application/alto-networkmap+json,my-eu-netmap-stream
+ data: { ... full Network Map of my-eu-netmap ... }
+
+ event: application/alto-cdnifci+json,my-netmap-cdnifci-stream
+ data: { ... full CDNI Advertisement resource ... }
+
+ event: application/json-patch+json,my-netmap-cdnifci-stream
+ data: [
+ data: { "op": "replace",
+ data: "path": "/meta/vtag/tag",
+ data: "value": "dasdfa10ce8b059740bddsfasd8eb1d47853716"
+ data: },
+ data: { "op": "add",
+ data: "path":
+ data: "/cdni-advertisement/capabilities-with-footprints
+ /0/footprints/0/footprint-value/-",
+ data: "value": "germany"
+ data: }
+ data: ]
+
+ event: application/json-patch+json,my-netmap-cdnifci-stream
+ data: [
+ data: { "op": "replace",
+ data: "path": "/meta/vtag/tag",
+ data: "value": "a10ce8b059740b0b2e3f8eb1d4785acd42231bfe"
+ data: },
+ data: { "op": "remove",
+ data: "path":
+ data: "/cdni-advertisement/capabilities-with-footprints
+ /1/footprints/0/footprint-value/1"
+ data: }
+ data: ]
+
+5. Filtered CDNI Advertisement Using CDNI Capabilities
+
+ Sections 3 and 4 describe the CDNI Advertisement Service that can be
+ used to enable a uCDN to get capabilities with footprint restrictions
+ from dCDNs. However, since always getting full CDNI Advertisement
+ resources from dCDNs is inefficient, this document introduces a new
+ service named "Filtered CDNI Advertisement Service" to allow a client
+ to filter a CDNI Advertisement resource using a client-given set of
+ CDNI capabilities. For each entry of the CDNI Advertisement
+ response, an entry will only be returned to the client if it contains
+ at least one of the client-given CDNI capabilities. The relationship
+ between a filtered CDNI Advertisement resource and a CDNI
+ Advertisement resource is similar to the relationship between a
+ filtered network/cost map and a network/cost map.
+
+5.1. Media Type
+
+ A filtered CDNI Advertisement resource uses the same media type
+ defined for the CDNI Advertisement resource in Section 3.1:
+ "application/alto-cdni+json".
+
+5.2. HTTP Method
+
+ A filtered CDNI Advertisement resource is requested using the HTTP
+ POST method.
+
+5.3. Accept Input Parameters
+
+ The input parameters for a filtered CDNI Advertisement resource are
+ supplied in the entity body of the POST request. This document
+ specifies the input parameters with a data format indicated by the
+ media type "application/alto-cdnifilter+json", which is a JSON object
+ of type ReqFilteredCDNIAdvertisement where:
+
+ object {
+ JSONString capability-type;
+ JSONValue capability-value;
+ } CDNICapability;
+
+ object {
+ CDNICapability cdni-capabilities<0..*>;
+ } ReqFilteredCDNIAdvertisement;
+
+ with fields:
+
+ capability-type: The same as Base Advertisement Object's
+ "capability-type" defined in Section 5.1 of [RFC8008].
+
+ capability-value: The same as Base Advertisement Object's
+ "capability-value" defined in Section 5.1 of [RFC8008].
+
+ cdni-capabilities: A list of CDNI capabilities defined in
+ Section 5.1 of [RFC8008] for which footprints are to be returned.
+ If this list is empty, the ALTO server MUST interpret it as a
+ request for the full CDNI Advertisement resource. The ALTO server
+ MUST interpret entries appearing in this list multiple times as if
+ they appeared only once. If the ALTO server does not define any
+ footprints for a CDNI capability, it MUST omit this capability
+ from the response.
+
+5.4. Capabilities
+
+ There are no applicable capabilities.
+
+5.5. Uses
+
+ The same rules as for the "uses" field of the CDNI Advertisement
+ resource apply (see Section 3.5).
+
+5.6. Response
+
+ If the request is invalid, the response MUST indicate an error using
+ ALTO Protocol error handling specified in Section 8.5 of [RFC7285].
+
+ Specifically, a filtered CDNI Advertisement request is invalid if:
+
+ * the value of "capability-type" is null;
+
+ * the value of "capability-value" is null; or
+
+ * the value of "capability-value" is inconsistent with "capability-
+ type".
+
+ When a request is invalid, the ALTO server MUST return an
+ "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
+ capability.
+
+ The ALTO server returns a filtered CDNI Advertisement resource for a
+ valid request. The format of a filtered CDNI Advertisement resource
+ is the same as a full CDNI Advertisement resource (see Section 3.6).
+
+ The returned filtered CDNI Advertisement resource MUST contain all
+ the BaseAdvertisementObject objects satisfying the following
+ condition: the CDNI capability object of each included
+ BaseAdvertisementObject object MUST follow two constraints:
+
+ * The "cdni-capabilities" field of the input includes a CDNI
+ capability object X having the same "capability-type" as it.
+
+ * All the mandatory properties in its "capability-value" is a
+ superset of mandatory properties in "capability-value" of X
+ semantically.
+
+ See Section 5.7.1 for a concrete example.
+
+ The version tag included in the "vtag" field of the response MUST
+ correspond to the full CDNI Advertisement resource from which the
+ filtered CDNI Advertisement resource is provided. This ensures that
+ a single, canonical version tag is used independently of any
+ filtering that is requested by an ALTO client.
+
+5.7. Examples
+
+ The following examples use the same IRD example as in Section 3.7.1.
+
+5.7.1. A Basic Example
+
+ This example filters the full CDNI Advertisement resource in
+ Section 3.7.2 by selecting only the "http/1.1" delivery protocol
+ capability. Only the second BaseAdvertisementObject in the full
+ resource will be returned because the second object's capability is
+ "http/1.1" and "https/1.1" delivery protocols, which is the superset
+ of "https/1.1" delivery protocol.
+
+ POST /cdnifci/filtered HTTP/1.1
+ Host: alto.example.com
+ Accept: application/alto-cdni+json
+ Content-Type: application/cdnifilter+json
+ Content-Length: 176
+
+ {
+ "cdni-capabilities": [
+ {
+ "capability-type": "FCI.DeliveryProtocol",
+ "capability-value": {
+ "delivery-protocols": [ "https/1.1" ]
+ }
+ }
+ ]
+ }
+
+ HTTP/1.1 200 OK
+ Content-Length: 570
+ Content-Type: application/alto-cdni+json
+
+ {
+ "meta": {
+ "vtag": {
+ "resource-id": "my-filtered-cdnifci",
+ "tag": "da65eca2eb7a10ce8b059740b0b2e3f8eb1d4785"
+ }
+ },
+ "cdni-advertisement": {
+ "capabilities-with-footprints": [
+ {
+ "capability-type": "FCI.DeliveryProtocol",
+ "capability-value": {
+ "delivery-protocols": [
+ "https/1.1",
+ "http/1.1"
+ ]
+ },
+ "footprints": [
+ {
+ "footprint-type": "ipv4cidr",
+ "footprint-value": [ "198.51.100.0/24" ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+
+5.7.2. Incremental Updates
+
+ In this example, the ALTO client only cares about the updates of one
+ advertisement object for delivery protocol capability whose value
+ includes "https/1.1". Thus, it adds its limitation of capabilities
+ in "input" field of the POST request.
+
+ POST /updates/cdnifci HTTP/1.1
+ Host: fcialtoupdate.example.com
+ Accept: text/event-stream,application/alto-error+json
+ Content-Type: application/alto-updatestreamparams+json
+ Content-Length: 346
+
+ {
+ "add": {
+ "my-filtered-fci-stream": {
+ "resource-id": "my-filtered-cdnifci",
+ "input": {
+ "cdni-capabilities": [
+ {
+ "capability-type": "FCI.DeliveryProtocol",
+ "capability-value": {
+ "delivery-protocols": [ "https/1.1" ]
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+
+ HTTP/1.1 200 OK
+ Connection: keep-alive
+ Content-Type: text/event-stream
+
+ event: application/alto-updatestreamcontrol+json
+ data: {"control-uri":
+ data: "https://alto.example.com/updates/streams/3141592653590"}
+
+ event: application/alto-cdni+json,my-filtered-fci-stream
+ data: { ... filtered CDNI Advertisement resource ... }
+
+ event: application/json-patch+json,my-filtered-fci-stream
+ data: [
+ data: {
+ data: "op": "replace",
+ data: "path": "/meta/vtag/tag",
+ data: "value": "a10ce8b059740b0b2e3f8eb1d4785acd42231bfe"
+ data: },
+ data: { "op": "add",
+ data: "path":
+ data: "/cdni-advertisement/capabilities-with-footprints
+ /0/footprints/0/footprint-value/-",
+ data: "value": "192.0.2.0/24"
+ data: }
+ data: ]
+
+6. Query Footprint Properties Using ALTO Property Map Service
+
+ Besides the requirement of retrieving footprints of given
+ capabilities, another common requirement for uCDN is to query CDNI
+ capabilities of given footprints.
+
+ Considering each footprint as an entity with properties including
+ CDNI capabilities, a natural way to satisfy this requirement is to
+ use the ALTO property map as defined in [RFC9240]. This section
+ describes how ALTO clients look up properties for individual
+ footprints. First, it describes how to represent footprint objects
+ as entities in the ALTO property map. Then it describes how to
+ represent footprint capabilities as entity properties in the ALTO
+ property map. Finally, it provides examples of the full property map
+ and the filtered property map supporting CDNI capabilities, and their
+ incremental updates.
+
+6.1. Representing Footprint Objects as Property Map Entities
+
+ A footprint object has two properties: "footprint-type" and
+ "footprint-value". A "footprint-value" is an array of footprint
+ values conforming to the specification associated with the registered
+ footprint type ("ipv4cidr", "ipv6cidr", "asn", "countrycode", and
+ "altopid"). Considering each ALTO entity defined in [RFC9240] also
+ has two properties: entity domain type and domain-specific
+ identifier, a straightforward approach to represent a footprint as an
+ ALTO entity is to represent its "footprint-type" as an entity domain
+ type, and its footprint value as a domain-specific identifier.
+
+ Each existing footprint type can be represented as an entity domain
+ type as follows:
+
+ * According to [RFC9240], "ipv4" and "ipv6" are two predefined
+ entity domain types, which can be used to represent "ipv4cidr" and
+ "ipv6cidr" footprints respectively. Note that both "ipv4" and
+ "ipv6" domains can include not only hierarchical addresses but
+ also individual addresses. Therefore, a "ipv4cidr" or "ipv6cidr"
+ footprint with the longest prefix can also be represented by an
+ individual address entity. When the uCDN receives a property map
+ with individual addresses in an "ipv4" or "ipv6" domain, it can
+ translate them as corresponding "ipv4cidr" or "ipv6cidr"
+ footprints with the longest prefix.
+
+ * "pid" is also a predefined entity domain type, which can be used
+ to represent "altopid" footprints. Note that "pid" is a resource-
+ specific entity domain. To represent an "altopid" footprint, the
+ specifying information resource of the corresponding "pid" entity
+ domain MUST be the dependent network map used by the CDNI
+ Advertisement resource providing this "altopid" footprint.
+
+ * However, no existing entity domain type can represent "asn" and
+ "countrycode" footprints. To represent footprint-type "asn" and
+ "countrycode", this document registers two new entity domains in
+ Section 7 in addition to the ones in [RFC9240].
+
+ Here is an example of representing a footprint object of "ipv4cidr"
+ type as a set of "ipv4" entities in the ALTO property map. The
+ representation of the footprint object of "ipv6cidr" type is similar.
+
+ { "footprint-type": "ipv4cidr",
+ "footprint-value": ["192.0.2.0/24", "198.51.100.0/24"]
+ } --> "ipv4:192.0.2.0/24", "ipv4:198.51.100.0/24"
+
+ And here is an example of the corresponding footprint object of
+ "ipv4cidr" type represented by an individual address in an "ipv4"
+ domain in the ALTO property map. The translation of the entities in
+ an "ipv6" domain is similar.
+
+ "ipv4:203.0.113.100" --> {
+ "footprint-type": "ipv4cidr",
+ "footprint-value": ["203.0.113.100/32"]
+ }
+
+6.1.1. ASN Domain
+
+ The ASN domain associates property values with Autonomous Systems in
+ the Internet.
+
+6.1.1.1. Entity Domain Type
+
+ The entity domain type of the ASN domain is "asn" (in lowercase).
+
+6.1.1.2. Domain-Specific Entity Identifiers
+
+ The entity identifier of an entity in an ASN domain MUST be encoded
+ as a string consisting of the characters "as" (in lowercase) followed
+ by the ASN [RFC6793] as a decimal number without leading zeros.
+
+6.1.1.3. Hierarchy and Inheritance
+
+ There is no hierarchy or inheritance for properties associated with
+ ASN.
+
+6.1.2. COUNTRYCODE Domain
+
+ The COUNTRYCODE domain associates property values with countries.
+
+6.1.2.1. Entity Domain Type
+
+ The entity domain type of the COUNTRYCODE domain is "countrycode" (in
+ lowercase).
+
+6.1.2.2. Domain-Specific Entity Identifiers
+
+ The entity identifier of an entity in a COUNTRYCODE domain is encoded
+ as an ISO 3166-1 alpha-2 code [ISO3166-1] in lowercase.
+
+6.1.2.3. Hierarchy and Inheritance
+
+ There is no hierarchy or inheritance for properties associated with
+ country codes.
+
+6.2. Representing CDNI Capabilities as Property Map Entity Properties
+
+ This document defines a new entity property type called "cdni-
+ capabilities". An ALTO server can provide a property map resource
+ mapping the "cdni-capabilities" entity property type for a CDNI
+ Advertisement resource that it provides to an "ipv4", "ipv6", "asn",
+ or "countrycode" entity domain.
+
+6.2.1. Defining Information Resource Media Type for Property Type cdni-
+ capabilities
+
+ The entity property type "cdni-capabilities" allows defining
+ resource-specific entity properties. When resource-specific entity
+ properties are defined with entity property type "cdni-capabilities",
+ the defining information resource for a "cdni-capabilities" property
+ MUST be a CDNI Advertisement resource provided by the ALTO server.
+ The media type of the defining information resource for a "cdni-
+ capabilities" property is therefore:
+
+ application/alto-cdni+json
+
+6.2.2. Intended Semantics of Property Type cdni-capabilities
+
+ The purpose of a "cdni-capabilities" property for an entity is to
+ indicate all the CDNI capabilities that a corresponding CDNI
+ Advertisement resource provides for the footprint represented by this
+ entity. Thus, the value of a "cdni-capabilities" property MUST be a
+ JSON array. Each element in a "cdni-capabilities" property MUST be a
+ JSON object in the format of CDNICapability (see Section 5.3). The
+ value of a "cdni-capabilities" property for an "ipv4", "ipv6", "asn",
+ "countrycode", or "altopid" entity MUST include all the
+ CDNICapability objects satisfying the following conditions: (1) they
+ are provided by the defining CDNI Advertisement resource, and (2) the
+ represented footprint object of this entity is in their footprint
+ restrictions.
+
+6.3. Examples
+
+ The following examples use the same IRD example given by
+ Section 3.7.1.
+
+6.3.1. Property Map
+
+ This example shows a full property map in which entities are
+ footprints and entities' property is "cdni-capabilities".
+
+ GET /propmap/full/cdnifci HTTP/1.1
+ Host: alto.example.com
+ Accept: application/alto-propmap+json,application/alto-error+json
+
+ HTTP/1.1 200 OK
+ Content-Length: 1522
+ Content-Type: application/alto-propmap+json
+
+ {
+ "property-map": {
+ "meta": {
+ "dependent-vtags": [
+ { "resource-id": "my-default-cdnifci",
+ "tag": "7915dc0290c2705481c491a2b4ffbec482b3cf62"}
+ ]
+ },
+ "countrycode:us": {
+ "my-default-cdnifci.cdni-capabilities": [
+ { "capability-type": "FCI.DeliveryProtocol",
+ "capability-value": {
+ "delivery-protocols": ["http/1.1"]}}]
+ },
+ "ipv4:192.0.2.0/24": {
+ "my-default-cdnifci.cdni-capabilities": [
+ { "capability-type": "FCI.DeliveryProtocol",
+ "capability-value": {
+ "delivery-protocols": ["http/1.1"]}}]
+ },
+ "ipv4:198.51.100.0/24": {
+ "my-default-cdnifci.cdni-capabilities": [
+ { "capability-type": "FCI.DeliveryProtocol",
+ "capability-value": {
+ "delivery-protocols": ["https/1.1", "http/1.1"]}}]
+ },
+ "ipv4:203.0.113.0/24": {
+ "my-default-cdnifci.cdni-capabilities": [
+ { "capability-type": "FCI.AcquisitionProtocol",
+ "capability-value": {
+ "acquisition-protocols": ["http/1.1"]}}]
+ },
+ "ipv6:2001:db8::/32": {
+ "my-default-cdnifci.cdni-capabilities": [
+ { "capability-type": "FCI.DeliveryProtocol",
+ "capability-value": {
+ "delivery-protocols": ["http/1.1"]}}]
+ },
+ "asn:as64496": {
+ "my-default-cdnifci.cdni-capabilities": [
+ { "capability-type": "FCI.DeliveryProtocol",
+ "capability-value": {
+ "delivery-protocols": ["https/1.1", "http/1.1"]}}]
+ }
+ }
+ }
+
+6.3.2. Filtered Property Map
+
+ This example uses the filtered property Map Service to get "pid" and
+ "cdni-capabilities" properties for two footprints "ipv4:192.0.2.0/24"
+ and "ipv6:2001:db8::/32".
+
+ POST /propmap/lookup/cdnifci-pid HTTP/1.1
+ Host: alto.example.com
+ Content-Type: application/alto-propmapparams+json
+ Accept: application/alto-propmap+json,application/alto-error+json
+ Content-Length: 181
+
+ {
+ "entities": [
+ "ipv4:192.0.2.0/24",
+ "ipv6:2001:db8::/32"
+ ],
+ "properties": [ "my-default-cdnifci.cdni-capabilities",
+ "my-default-networkmap.pid" ]
+ }
+
+ HTTP/1.1 200 OK
+ Content-Length: 796
+ Content-Type: application/alto-propmap+json
+
+ {
+ "property-map": {
+ "meta": {
+ "dependent-vtags": [
+ {"resource-id": "my-default-cdnifci",
+ "tag": "7915dc0290c2705481c491a2b4ffbec482b3cf62"},
+ {"resource-id": "my-default-networkmap",
+ "tag": "7915dc0290c2705481c491a2b4ffbec482b3cf63"}
+ ]
+ },
+ "ipv4:192.0.2.0/24": {
+ "my-default-cdnifci.cdni-capabilities": [
+ {"capability-type": "FCI.DeliveryProtocol",
+ "capability-value": {"delivery-protocols": ["http/1.1"]}}],
+ "my-default-networkmap.pid": "pid1"
+ },
+ "ipv6:2001:db8::/32": {
+ "my-default-cdnifci.cdni-capabilities": [
+ {"capability-type": "FCI.DeliveryProtocol",
+ "capability-value": {"delivery-protocols": ["http/1.1"]}}],
+ "my-default-networkmap.pid": "pid3"
+ }
+ }
+ }
+
+6.3.3. Incremental Updates
+
+ In this example, the ALTO client is interested in updates for the
+ properties "cdni-capabilities" and "pid" of two footprints
+ "ipv4:192.0.2.0/24" and "countrycode:fr".
+
+ POST /updates/properties HTTP/1.1
+ Host: alto.example.com
+ Accept: text/event-stream,application/alto-error+json
+ Content-Type: application/alto-updatestreamparams+json
+ Content-Length: 339
+
+ {
+ "add": {
+ "fci-propmap-stream": {
+ "resource-id": "filtered-cdnifci-property-map",
+ "input": {
+ "properties": [ "my-default-cdnifci.cdni-capabilities",
+ "my-default-networkmap.pid" ],
+ "entities": [ "ipv4:192.0.2.0/24",
+ "ipv6:2001:db8::/32" ]
+ }
+ }
+ }
+ }
+
+ HTTP/1.1 200 OK
+ Connection: keep-alive
+ Content-Type: text/event-stream
+
+ event: application/alto-updatestreamcontrol+json
+ data: {"control-uri":
+ data: "https://alto.example.com/updates/streams/1414213562373"}
+
+ event: application/alto-cdni+json,fci-propmap-stream
+ data: { ... filtered property map ... }
+
+ event: application/merge-patch+json,fci-propmap-stream
+ data: {
+ data: "property-map": {
+ data: "meta": {
+ data: "dependent-vtags": [
+ data: { "resource-id": "my-default-cdnifci",
+ data: "tag": "2beeac8ee23c3dd1e98a73fd30df80ece9fa5627"},
+ data: { "resource-id": "my-default-networkmap",
+ data: "tag": "7915dc0290c2705481c491a2b4ffbec482b3cf63"}
+ data: ]
+ data: },
+ data: "ipv4:192.0.2.0/24": {
+ data: "my-default-cdnifci.cdni-capabilities": [
+ data: { "capability-type": "FCI.DeliveryProtocol",
+ data: "capability-value": {
+ data: "delivery-protocols": ["http/1.1", "https/1.1"]}}]
+ data: }
+ data: }
+ data: }
+
+ event: application/json-patch+json,fci-propmap-stream
+ data: [
+ data: { "op": "replace",
+ data: "path": "/meta/dependent-vtags/0/tag",
+ data: "value": "61b23185a50dc7b334577507e8f00ff8c3b409e4"
+ data: },
+ data: { "op": "replace",
+ data: "path":
+ data: "/property-map/countrycode:fr/my-default-networkmap.pid",
+ data: "value": "pid5"
+ data: }
+ data: ]
+
+7. IANA Considerations
+
+ This document defines two new media types: "application/alto-
+ cdni+json", as described in Section 7.1, and "application/
+ cdnifilter+json", as described in Section 7.2. It also defines a new
+ CDNI Metadata Footprint Type (Section 7.3), two new ALTO entity
+ domain types (Section 7.4), and a new ALTO entity property type
+ (Section 7.5).
+
+7.1. application/alto-cdni+json Media Type
+
+ Type name:
+ application
+
+ Subtype name:
+ alto-cdni+json
+
+ Required parameters:
+ N/A
+
+ Optional parameters:
+ N/A
+
+ Encoding considerations:
+ Encoding considerations are identical to those specified for the
+ "application/json" media type. See [RFC8259].
+
+ Security considerations:
+ Security considerations related to the generation and consumption
+ of ALTO Protocol messages are discussed in Section 15 of
+ [RFC7285].
+
+ Interoperability considerations:
+ N/A
+
+ Published specification:
+ Section 3 of RFC 9241
+
+ Applications that use this media type:
+ ALTO servers and ALTO clients [RFC7285] either stand alone or are
+ embedded within other applications that provide CDNI interfaces
+ for uCDNs or dCDNs.
+
+ Fragment identifier considerations:
+ N/A
+
+ Additional information:
+ Magic number(s): N/A
+
+ File extension(s): N/A
+
+ Macintosh file type code(s): N/A
+
+ Person & email address to contact for further information:
+ See Authors' Addresses section.
+
+ Intended usage:
+ COMMON
+
+ Restrictions on usage:
+ N/A
+
+ Author:
+ See Authors' Addresses section.
+
+ Change controller:
+ Internet Engineering Task Force (iesg@ietf.org)
+
+7.2. application/alto-cdnifilter+json Media Type
+
+ Type name:
+ application
+
+ Subtype name:
+ alto-cdnifilter+json
+
+ Required parameters:
+ N/A
+
+ Optional parameters:
+ N/A
+
+ Encoding considerations:
+ Encoding considerations are identical to those specified for the
+ "application/json" media type. See [RFC8259].
+
+ Security considerations:
+ Security considerations related to the generation and consumption
+ of ALTO Protocol messages are discussed in Section 15 of
+ [RFC7285].
+
+ Interoperability considerations:
+ N/A
+
+ Published specification:
+ Section 5 of RFC 9241
+
+ Applications that use this media type:
+ ALTO servers and ALTO clients [RFC7285] either stand alone or are
+ embedded within other applications that provide CDNI interfaces
+ for uCDNs or dCDNs and supports CDNI capability-based filtering.
+
+ Fragment identifier considerations:
+ N/A
+
+ Additional information:
+ Magic number(s): N/A
+
+ File extension(s): N/A
+
+ Macintosh file type code(s): N/A
+
+ Person & email address to contact for further information:
+ See Authors' Addresses section.
+
+ Intended usage:
+ COMMON
+
+ Restrictions on usage:
+ N/A
+
+ Author:
+ See Authors' Addresses section.
+
+ Change controller:
+ Internet Engineering Task Force (iesg@ietf.org)
+
+7.3. CDNI Metadata Footprint Types Registry
+
+ This document updates the "CDNI Metadata Footprint Types" registry
+ created by Section 7.2 of [RFC8006]. A new footprint type, which is
+ listed in Table 1, has been registered.
+
+ +================+=====================+=====================+
+ | Footprint Type | Description | Reference |
+ +================+=====================+=====================+
+ | altopid | A list of PID names | RFC 9241, Section 4 |
+ +----------------+---------------------+---------------------+
+
+ Table 1: CDNI Metadata Footprint Type
+
+7.4. ALTO Entity Domain Types Registry
+
+ This document updates the "ALTO Entity Domain Types" registry created
+ by Section 11.2 of [RFC9240]. Two new entity domain types, which are
+ listed in Table 2, have been registered.
+
+ +=============+============+=============+=============+=========+
+ | Identifier | Entity | Hierarchy | Media Type | Mapping |
+ | | Identifier | and | of Defining | to ALTO |
+ | | Encoding | Inheritance | Resource | Address |
+ | | | | | Type |
+ +=============+============+=============+=============+=========+
+ | asn | See RFC | None | None | false |
+ | | 9241, | | | |
+ | | Section | | | |
+ | | 6.1.1.2 | | | |
+ +-------------+------------+-------------+-------------+---------+
+ | countrycode | See RFC | None | None | false |
+ | | 9241, | | | |
+ | | Section | | | |
+ | | 6.1.2.2 | | | |
+ +-------------+------------+-------------+-------------+---------+
+
+ Table 2: Additional ALTO Entity Domain Types
+
+7.5. ALTO Entity Property Types Registry
+
+ This document updates the "ALTO Entity Property Types" registry
+ created by Section 11.3 of [RFC9240]. A new entity property type,
+ which is listed in Table 3, has been registered.
+
+ +===================+====================+===================+
+ | Identifier | Intended Semantics | Media Type of |
+ | | | Defining Resource |
+ +===================+====================+===================+
+ | cdni-capabilities | See RFC 9241, | application/alto- |
+ | | Section 6.2 | cdni+json |
+ +-------------------+--------------------+-------------------+
+
+ Table 3: Additional ALTO Entity Property Type
+
+8. Security Considerations
+
+ As an extension of the base ALTO Protocol [RFC7285], this document
+ fits into the architecture of the base protocol, and hence Security
+ Considerations of the base protocol (Section 15 of [RFC7285]) fully
+ apply when this extension is provided by an ALTO server.
+
+ In the context of CDNI Advertisement, the following security risk
+ scenarios should be considered:
+
+ * Authenticity and integrity of ALTO information: an attacker may
+ disguise itself as an ALTO server for a dCDN (e.g., by starting a
+ on-path attack) and provide false capabilities and footprints to a
+ uCDN using the CDNI Advertisement Service. Such false information
+ may lead a uCDN to (1) select an incorrect dCDN to serve user
+ requests or (2) skip uCDNs in good conditions. To address this
+ risk, protection strategies in Section 15.1.2 of [RFC7285] can be
+ applied.
+
+ * Potential undesirable guidance from authenticated ALTO
+ information: a dCDN can provide a uCDN with limited capabilities
+ and smaller footprint coverage so that the dCDN can avoid
+ transferring traffic for a uCDN that they should have to transfer.
+ To reduce this risk, the protection strategies in Section 15.2.2
+ of [RFC7285] can be considered.
+
+ * Confidentiality and privacy of ALTO information: footprint
+ properties integrated with ALTO property maps may expose network
+ location identifiers (e.g., IP addresses or fine-grained PIDs).
+ To address this risk, the protection strategy for risk types (1)
+ and (3) as described in Section 15.3 of [RFC7285] can be
+ considered.
+
+ * For availability of ALTO services, an attacker may conduct
+ service-degradation attacks using services defined in this
+ document to disable ALTO services of a network. It may request
+ potentially large, full CDNI Advertisement resources from an ALTO
+ server in a dCDN continuously in order to consume the bandwidth
+ resources of that ALTO server. It may also query filtered
+ property Map Services with many smaller individual footprints in
+ order to consume the computation resources of the ALTO server. To
+ mitigate these risks, the protection strategies in Section 15.5.2
+ of [RFC7285] can be applied.
+
+ Although protection strategies as described in Section 15 of
+ [RFC7285] should be applied to address aforementioned security and
+ privacy considerations, two special cases need to be included as
+ follows:
+
+ * As required by Section 7 of [RFC8008],
+
+ | All protocols that implement these capabilities and footprint
+ | advertisement objects are REQUIRED to provide integrity and
+ | authentication services.
+
+ Therefore, the uCDN (ALTO Client) MUST be authenticated to the
+ dCDN (ALTO Server). And the dCDN (ALTO Server) MUST support HTTP
+ Digest Authentication [RFC7616] and MAY also support TLS mutual
+ authentication [RFC8446]. The authentication method will need to
+ be negotiated out of band and is out of scope for this document,
+ as is the approach for provisioning and managing these
+ credentials.
+
+ * One specific information leakage risk introduced by this document
+ cannot be addressed by these strategies. In particular, if a dCDN
+ A signs agreements with multiple uCDNs without any isolation, dCDN
+ A may disclose extra information of one uCDN to another one. In
+ that case, one uCDN may redirect requests that should not have to
+ be served by dCDN A to dCDN A.
+
+ To reduce the risk, a dCDN SHOULD isolate full and/or filtered
+ CDNI Advertisement resources for different uCDNs. It could
+ consider generating URIs of different full and/or filtered CDNI
+ Advertisement resources by hashing its company ID, a uCDN's
+ company ID as well as their agreements. A dCDN SHOULD avoid
+ exposing all full and/or filtered CDNI Advertisement resources in
+ one of its IRDs.
+
+9. References
+
+9.1. Normative References
+
+ [ISO3166-1]
+ International Organization for Standardization, "Codes for
+ the representation of names of countries and their
+ subdivisions -- Part 1: Country codes", ISO 3166-1:2020,
+ August 2020.
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC6793] Vohra, Q. and E. Chen, "BGP Support for Four-Octet
+ Autonomous System (AS) Number Space", RFC 6793,
+ DOI 10.17487/RFC6793, December 2012,
+ <https://www.rfc-editor.org/info/rfc6793>.
+
+ [RFC7285] Alimi, R., Ed., Penno, R., Ed., Yang, Y., Ed., Kiesel, S.,
+ Previdi, S., Roome, W., Shalunov, S., and R. Woundy,
+ "Application-Layer Traffic Optimization (ALTO) Protocol",
+ RFC 7285, DOI 10.17487/RFC7285, September 2014,
+ <https://www.rfc-editor.org/info/rfc7285>.
+
+ [RFC7493] Bray, T., Ed., "The I-JSON Message Format", RFC 7493,
+ DOI 10.17487/RFC7493, March 2015,
+ <https://www.rfc-editor.org/info/rfc7493>.
+
+ [RFC7616] Shekh-Yusef, R., Ed., Ahrens, D., and S. Bremer, "HTTP
+ Digest Access Authentication", RFC 7616,
+ DOI 10.17487/RFC7616, September 2015,
+ <https://www.rfc-editor.org/info/rfc7616>.
+
+ [RFC8006] Niven-Jenkins, B., Murray, R., Caulfield, M., and K. Ma,
+ "Content Delivery Network Interconnection (CDNI)
+ Metadata", RFC 8006, DOI 10.17487/RFC8006, December 2016,
+ <https://www.rfc-editor.org/info/rfc8006>.
+
+ [RFC8008] Seedorf, J., Peterson, J., Previdi, S., van Brandenburg,
+ R., and K. Ma, "Content Delivery Network Interconnection
+ (CDNI) Request Routing: Footprint and Capabilities
+ Semantics", RFC 8008, DOI 10.17487/RFC8008, December 2016,
+ <https://www.rfc-editor.org/info/rfc8008>.
+
+ [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
+ 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
+ May 2017, <https://www.rfc-editor.org/info/rfc8174>.
+
+ [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data
+ Interchange Format", STD 90, RFC 8259,
+ DOI 10.17487/RFC8259, December 2017,
+ <https://www.rfc-editor.org/info/rfc8259>.
+
+ [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
+ Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
+ <https://www.rfc-editor.org/info/rfc8446>.
+
+ [RFC8895] Roome, W. and Y. Yang, "Application-Layer Traffic
+ Optimization (ALTO) Incremental Updates Using Server-Sent
+ Events (SSE)", RFC 8895, DOI 10.17487/RFC8895, November
+ 2020, <https://www.rfc-editor.org/info/rfc8895>.
+
+ [RFC9240] Roome, W., Randriamasy, S., Yang, Y., Zhang, J., and K.
+ Gao, "An Extension for Application-Layer Traffic
+ Optimization (ALTO): Entity Property Maps", RFC 9240,
+ DOI 10.17487/RFC9240, July 2022,
+ <https://www.rfc-editor.org/info/rfc9240>.
+
+9.2. Informative References
+
+ [ALTO-PATH-VECTOR]
+ Gao, K., Lee, Y., Randriamasy, S., Yang, Y. R., and J. J.
+ Zhang, "An ALTO Extension: Path Vector", Work in Progress,
+ Internet-Draft, draft-ietf-alto-path-vector-25, 20 March
+ 2022, <https://datatracker.ietf.org/doc/html/draft-ietf-
+ alto-path-vector-25>.
+
+ [RFC5693] Seedorf, J. and E. Burger, "Application-Layer Traffic
+ Optimization (ALTO) Problem Statement", RFC 5693,
+ DOI 10.17487/RFC5693, October 2009,
+ <https://www.rfc-editor.org/info/rfc5693>.
+
+ [RFC6707] Niven-Jenkins, B., Le Faucheur, F., and N. Bitar, "Content
+ Distribution Network Interconnection (CDNI) Problem
+ Statement", RFC 6707, DOI 10.17487/RFC6707, September
+ 2012, <https://www.rfc-editor.org/info/rfc6707>.
+
+ [RFC7971] Stiemerling, M., Kiesel, S., Scharf, M., Seidel, H., and
+ S. Previdi, "Application-Layer Traffic Optimization (ALTO)
+ Deployment Considerations", RFC 7971,
+ DOI 10.17487/RFC7971, October 2016,
+ <https://www.rfc-editor.org/info/rfc7971>.
+
+ [RFC7975] Niven-Jenkins, B., Ed. and R. van Brandenburg, Ed.,
+ "Request Routing Redirection Interface for Content
+ Delivery Network (CDN) Interconnection", RFC 7975,
+ DOI 10.17487/RFC7975, October 2016,
+ <https://www.rfc-editor.org/info/rfc7975>.
+
+Acknowledgments
+
+ The authors thank Matt Caulfield, Danny Alex Lachos Perez, Daryl
+ Malas, and Sanjay Mishra for their timely reviews and invaluable
+ comments. Big thanks also to the ALTO WG Chairs (Qin Wu and Vijay
+ Gurbani), all the directorate reviewers, and the IESG reviewers
+ (Martin Duke, Erik Kline, Martin Vigoureux, Murray Kucherawy, Roman
+ Danyliw, Zaheduzzaman Sarker, Éric Vyncke, and Francesca Palombini),
+ for their thorough reviews, discussions, guidance, and shepherding,
+ which further improve this document.
+
+ Jan Seedorf has been partially supported by the GreenICN project
+ (GreenICN: Architecture and Applications of Green Information Centric
+ Networking), a research project supported jointly by the European
+ Commission under its 7th Framework Program (contract no. 608518) and
+ the National Institute of Information and Communications Technology
+ (NICT) in Japan (contract no. 167). The views and conclusions
+ contained herein are those of the authors and should not be
+ interpreted as necessarily representing the official policies or
+ endorsements, either expressed or implied, of the GreenICN project,
+ the European Commission, or NICT.
+
+ This document has also been supported by the Coordination Support
+ Action entitled 'Supporting European Experts Presence in
+ International Standardisation Activities in ICT' (StandICT.eu
+ <https://www.standict.eu/>) funded by the European Commission under
+ the Horizon 2020 Programme with Grant Agreement no. 780439. The
+ views and conclusions contained herein are those of the authors and
+ should not be interpreted as necessarily representing the official
+ policies or endorsements, either expressed or implied, of the
+ European Commission.
+
+Contributors
+
+ Xiao Shawn Lin
+ Huawei
+ 2222 Newjinqiao Rd
+ Shanghai
+ 200125
+ China
+ Phone: +86-15316812351
+ Email: x.shawn.lin@gmail.com
+
+
+Authors' Addresses
+
+ Jan Seedorf
+ HFT Stuttgart - Univ. of Applied Sciences
+ Schellingstrasse 24
+ 70174 Stuttgart
+ Germany
+ Phone: +49-0711-8926-2801
+ Email: jan.seedorf@hft-stuttgart.de
+
+
+ Y. Richard Yang
+ Yale University
+ 51 Prospect Street
+ New Haven, CT 06511
+ United States of America
+ Phone: +1-203-432-6400
+ Email: yry@cs.yale.edu
+ URI: http://www.cs.yale.edu/~yry/
+
+
+ Kevin J. Ma
+ Ericsson
+ 43 Nagog Park
+ Acton, MA 01720
+ United States of America
+ Phone: +1-978-844-5100
+ Email: kevin.j.ma.ietf@gmail.com
+
+
+ Jon Peterson
+ NeuStar
+ 1800 Sutter St., Suite 570
+ Concord, CA 94520
+ United States of America
+ Email: jon.peterson@neustar.biz
+
+
+ Jingxuan Jensen Zhang
+ Tongji University
+ 4800 Cao'an Hwy
+ Shanghai
+ 201804
+ China
+ Email: jingxuan.zhang@tongji.edu.cn