<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" consensus="true" docName="draft-ietf-alto-cdni-request-routing-alto-22" indexInclude="true" ipr="trust200902" number="9241" prepTime="2022-07-14T09:16:24" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-alto-cdni-request-routing-alto-22" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9241" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="CDNI FCI Using ALTO">Content Delivery Network Interconnection (CDNI) Footprint and Capabilities Advertisement Using Application-Layer Traffic Optimization (ALTO)</title>
    <seriesInfo name="RFC" value="9241" stream="IETF"/>
    <author initials="J." surname="Seedorf" fullname="Jan Seedorf">
      <organization abbrev="HFT Stuttgart" showOnFrontPage="true">HFT Stuttgart - Univ. of Applied Sciences</organization>
      <address>
        <postal>
          <street>Schellingstrasse 24</street>
          <city>Stuttgart</city>
          <code>70174</code>
          <country>Germany</country>
        </postal>
        <phone>+49-0711-8926-2801</phone>
        <email>jan.seedorf@hft-stuttgart.de</email>
      </address>
    </author>
    <author initials="Y." surname="Yang" fullname="Y. Richard Yang">
      <organization showOnFrontPage="true">Yale University</organization>
      <address>
        <postal>
          <street>51 Prospect Street</street>
          <city>New Haven</city>
          <region>CT</region>
          <code>06511</code>
          <country>USA</country>
        </postal>
        <phone>+1-203-432-6400</phone>
        <email>yry@cs.yale.edu</email>
        <uri>http://www.cs.yale.edu/~yry/</uri>
      </address>
    </author>
    <author initials="K." surname="Ma" fullname="Kevin J. Ma">
      <organization showOnFrontPage="true">Ericsson</organization>
      <address>
        <postal>
          <street>43 Nagog Park</street>
          <city>Acton</city>
          <region>MA</region>
          <code>01720</code>
          <country>USA</country>
        </postal>
        <phone>+1-978-844-5100</phone>
        <email>kevin.j.ma.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="J." surname="Peterson" fullname="Jon Peterson">
      <organization showOnFrontPage="true">NeuStar</organization>
      <address>
        <postal>
          <street>1800 Sutter St., Suite 570</street>
          <city>Concord</city>
          <region>CA</region>
          <code>94520</code>
          <country>USA</country>
        </postal>
        <email>jon.peterson@neustar.biz</email>
      </address>
    </author>
    <author initials="J." surname="Zhang" fullname="Jingxuan Jensen Zhang">
      <organization showOnFrontPage="true">Tongji University</organization>
      <address>
        <postal>
          <street>4800 Cao'an Hwy</street>
          <city>Shanghai</city>
          <code>201804</code>
          <country>China</country>
        </postal>
        <email>jingxuan.zhang@tongji.edu.cn</email>
      </address>
    </author>
    <date month="07" year="2022"/>
    <area>tsv</area>
    <workgroup>ALTO</workgroup>
    <keyword>ALTO</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">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
&amp; 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.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            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.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9241" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2022 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) 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.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology-and-background">Terminology and Background</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.2.2">
              <li pn="section-toc.1-1.2.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.1.1"><xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.2">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.2.1"><xref derivedContent="2.2" format="counter" sectionFormat="of" target="section-2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-semantics-of-fci-advertisem">Semantics of FCI Advertisement</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.3">
                <t indent="0" pn="section-toc.1-1.2.2.3.1"><xref derivedContent="2.3" format="counter" sectionFormat="of" target="section-2.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-alto-background-and-benefit">ALTO Background and Benefits</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-cdni-advertisement-service">CDNI Advertisement Service</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-media-type">Media Type</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-http-method">HTTP Method</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.3">
                <t indent="0" pn="section-toc.1-1.3.2.3.1"><xref derivedContent="3.3" format="counter" sectionFormat="of" target="section-3.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-accept-input-parameters">Accept Input Parameters</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.4">
                <t indent="0" pn="section-toc.1-1.3.2.4.1"><xref derivedContent="3.4" format="counter" sectionFormat="of" target="section-3.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-capabilities">Capabilities</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.5">
                <t indent="0" pn="section-toc.1-1.3.2.5.1"><xref derivedContent="3.5" format="counter" sectionFormat="of" target="section-3.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-uses">Uses</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.6">
                <t indent="0" pn="section-toc.1-1.3.2.6.1"><xref derivedContent="3.6" format="counter" sectionFormat="of" target="section-3.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-response">Response</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.7">
                <t indent="0" pn="section-toc.1-1.3.2.7.1"><xref derivedContent="3.7" format="counter" sectionFormat="of" target="section-3.7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-examples">Examples</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2.7.2">
                  <li pn="section-toc.1-1.3.2.7.2.1">
                    <t indent="0" pn="section-toc.1-1.3.2.7.2.1.1"><xref derivedContent="3.7.1" format="counter" sectionFormat="of" target="section-3.7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ird">IRD</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.7.2.2">
                    <t indent="0" pn="section-toc.1-1.3.2.7.2.2.1"><xref derivedContent="3.7.2" format="counter" sectionFormat="of" target="section-3.7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-a-basic-example">A Basic Example</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.7.2.3">
                    <t indent="0" pn="section-toc.1-1.3.2.7.2.3.1"><xref derivedContent="3.7.3" format="counter" sectionFormat="of" target="section-3.7.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-incremental-updates">Incremental Updates</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-cdni-advertisement-service-">CDNI Advertisement Service Using ALTO Network Map</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-network-map-footprint-type-">Network Map Footprint Type: altopid</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-examples-2">Examples</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2.2.2">
                  <li pn="section-toc.1-1.4.2.2.2.1">
                    <t indent="0" pn="section-toc.1-1.4.2.2.2.1.1"><xref derivedContent="4.2.1" format="counter" sectionFormat="of" target="section-4.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-alto-network-map-for-cdni-a">ALTO Network Map for CDNI Advertisements</xref></t>
                  </li>
                  <li pn="section-toc.1-1.4.2.2.2.2">
                    <t indent="0" pn="section-toc.1-1.4.2.2.2.2.1"><xref derivedContent="4.2.2" format="counter" sectionFormat="of" target="section-4.2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-alto-pid-footprints-in-cdni">ALTO PID Footprints in CDNI Advertisements</xref></t>
                  </li>
                  <li pn="section-toc.1-1.4.2.2.2.3">
                    <t indent="0" pn="section-toc.1-1.4.2.2.2.3.1"><xref derivedContent="4.2.3" format="counter" sectionFormat="of" target="section-4.2.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-incremental-updates-2">Incremental Updates</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-filtered-cdni-advertisement">Filtered CDNI Advertisement Using CDNI Capabilities</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-media-type-2">Media Type</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-http-method-2">HTTP Method</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.3">
                <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-accept-input-parameters-2">Accept Input Parameters</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.4">
                <t indent="0" pn="section-toc.1-1.5.2.4.1"><xref derivedContent="5.4" format="counter" sectionFormat="of" target="section-5.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-capabilities-2">Capabilities</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.5">
                <t indent="0" pn="section-toc.1-1.5.2.5.1"><xref derivedContent="5.5" format="counter" sectionFormat="of" target="section-5.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-uses-2">Uses</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.6">
                <t indent="0" pn="section-toc.1-1.5.2.6.1"><xref derivedContent="5.6" format="counter" sectionFormat="of" target="section-5.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-response-2">Response</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.7">
                <t indent="0" pn="section-toc.1-1.5.2.7.1"><xref derivedContent="5.7" format="counter" sectionFormat="of" target="section-5.7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-examples-3">Examples</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2.7.2">
                  <li pn="section-toc.1-1.5.2.7.2.1">
                    <t indent="0" pn="section-toc.1-1.5.2.7.2.1.1"><xref derivedContent="5.7.1" format="counter" sectionFormat="of" target="section-5.7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-a-basic-example-2">A Basic Example</xref></t>
                  </li>
                  <li pn="section-toc.1-1.5.2.7.2.2">
                    <t indent="0" pn="section-toc.1-1.5.2.7.2.2.1"><xref derivedContent="5.7.2" format="counter" sectionFormat="of" target="section-5.7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-incremental-updates-3">Incremental Updates</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-query-footprint-properties-">Query Footprint Properties Using ALTO Property Map Service</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-representing-footprint-obje">Representing Footprint Objects as Property Map Entities</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2.1.2">
                  <li pn="section-toc.1-1.6.2.1.2.1">
                    <t indent="0" pn="section-toc.1-1.6.2.1.2.1.1"><xref derivedContent="6.1.1" format="counter" sectionFormat="of" target="section-6.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-asn-domain">ASN Domain</xref></t>
                  </li>
                  <li pn="section-toc.1-1.6.2.1.2.2">
                    <t indent="0" pn="section-toc.1-1.6.2.1.2.2.1"><xref derivedContent="6.1.2" format="counter" sectionFormat="of" target="section-6.1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-countrycode-domain">COUNTRYCODE Domain</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-representing-cdni-capabilit">Representing CDNI Capabilities as Property Map Entity Properties</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2.2.2">
                  <li pn="section-toc.1-1.6.2.2.2.1">
                    <t indent="0" pn="section-toc.1-1.6.2.2.2.1.1"><xref derivedContent="6.2.1" format="counter" sectionFormat="of" target="section-6.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-defining-information-resour">Defining Information Resource Media Type for Property Type cdni-capabilities</xref></t>
                  </li>
                  <li pn="section-toc.1-1.6.2.2.2.2">
                    <t indent="0" pn="section-toc.1-1.6.2.2.2.2.1"><xref derivedContent="6.2.2" format="counter" sectionFormat="of" target="section-6.2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-intended-semantics-of-prope">Intended Semantics of Property Type cdni-capabilities</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.6.2.3">
                <t indent="0" pn="section-toc.1-1.6.2.3.1"><xref derivedContent="6.3" format="counter" sectionFormat="of" target="section-6.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-examples-4">Examples</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2.3.2">
                  <li pn="section-toc.1-1.6.2.3.2.1">
                    <t indent="0" pn="section-toc.1-1.6.2.3.2.1.1"><xref derivedContent="6.3.1" format="counter" sectionFormat="of" target="section-6.3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-property-map">Property Map</xref></t>
                  </li>
                  <li pn="section-toc.1-1.6.2.3.2.2">
                    <t indent="0" pn="section-toc.1-1.6.2.3.2.2.1"><xref derivedContent="6.3.2" format="counter" sectionFormat="of" target="section-6.3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-filtered-property-map">Filtered Property Map</xref></t>
                  </li>
                  <li pn="section-toc.1-1.6.2.3.2.3">
                    <t indent="0" pn="section-toc.1-1.6.2.3.2.3.1"><xref derivedContent="6.3.3" format="counter" sectionFormat="of" target="section-6.3.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-incremental-updates-4">Incremental Updates</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-application-alto-cdnijson-m">application/alto-cdni+json Media Type</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t indent="0" pn="section-toc.1-1.7.2.2.1"><xref derivedContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-application-alto-cdnifilter">application/alto-cdnifilter+json Media Type</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.3">
                <t indent="0" pn="section-toc.1-1.7.2.3.1"><xref derivedContent="7.3" format="counter" sectionFormat="of" target="section-7.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-cdni-metadata-footprint-typ">CDNI Metadata Footprint Types Registry</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.4">
                <t indent="0" pn="section-toc.1-1.7.2.4.1"><xref derivedContent="7.4" format="counter" sectionFormat="of" target="section-7.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-alto-entity-domain-types-re">ALTO Entity Domain Types Registry</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.5">
                <t indent="0" pn="section-toc.1-1.7.2.5.1"><xref derivedContent="7.5" format="counter" sectionFormat="of" target="section-7.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-alto-entity-property-types-">ALTO Entity Property Types Registry</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.9.2">
              <li pn="section-toc.1-1.9.2.1">
                <t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent="9.1" format="counter" sectionFormat="of" target="section-9.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.2">
                <t indent="0" pn="section-toc.1-1.9.2.2.1"><xref derivedContent="9.2" format="counter" sectionFormat="of" target="section-9.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgments</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-contributors">Contributors</xref></t>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="intro" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">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 <xref target="RFC6707" format="default" sectionFormat="of" derivedContent="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.</t>
      <t indent="0" pn="section-1-2">Among these four interfaces, the CDNI Request Routing Interface
provides key functions, as specified in <xref target="RFC6707" format="default" sectionFormat="of" derivedContent="RFC6707"/>:</t>
      <blockquote pn="section-1-3">
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.</blockquote>
      <t indent="0" pn="section-1-4">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.</t>
      <t indent="0" pn="section-1-5">Correspondingly, the Request Routing Interface is broadly divided
into two functionalities: (1) the CDNI Footprint &amp; Capabilities
Advertisement interface (FCI) defined in <xref target="RFC8008" format="default" sectionFormat="of" derivedContent="RFC8008"/>
and (2) the CDNI Request Routing Redirection interface (RI) defined
in <xref target="RFC7975" format="default" sectionFormat="of" derivedContent="RFC7975"/>. This document focuses on the
first functionality (CDNI FCI).</t>
      <t indent="0" pn="section-1-6">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.</t>
      <t indent="0" pn="section-1-7">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
<xref target="RFC8008" section="5" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8008#section-5" derivedContent="RFC8008"/>. However, no protocol is defined to transport and
update such objects between a uCDN and a dCDN.</t>
      <t indent="0" pn="section-1-8">To define such a protocol, this document specifies an extension of the
Application-Layer Traffic Optimization (ALTO) Protocol <xref target="RFC7285" format="default" sectionFormat="of" derivedContent="RFC7285"/> by
introducing a new ALTO service called "CDNI Advertisement Service".</t>
      <t indent="0" pn="section-1-9"><xref target="bgALTO" format="default" sectionFormat="of" derivedContent="Section 2.3"/> discusses the benefits in using ALTO as a transport protocol.</t>
    </section>
    <section anchor="background" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-terminology-and-background">Terminology and Background</name>
      <t indent="0" pn="section-2-1">The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", 
"<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", 
"<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 
in this document are to be interpreted as described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/>
        <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
      <t indent="0" pn="section-2-2">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.</t>
      <section anchor="term" numbered="true" toc="include" removeInRFC="false" pn="section-2.1">
        <name slugifiedName="name-terminology">Terminology</name>
        <t indent="0" pn="section-2.1-1">The document uses the CDNI terms defined in <xref target="RFC6707" format="default" sectionFormat="of" derivedContent="RFC6707"/>, <xref target="RFC8006" format="default" sectionFormat="of" derivedContent="RFC8006"/>, and
<xref target="RFC8008" format="default" sectionFormat="of" derivedContent="RFC8008"/>. Also, the document uses the ALTO terms defined in <xref target="RFC7285" format="default" sectionFormat="of" derivedContent="RFC7285"/> and
<xref target="RFC9240" format="default" sectionFormat="of" derivedContent="RFC9240"/>. This document uses the following
abbreviations:</t>
        <dl spacing="normal" indent="8" newline="false" pn="section-2.1-2">
          <dt pn="section-2.1-2.1">ALTO:</dt>
          <dd pn="section-2.1-2.2">Application-Layer Traffic Optimization</dd>
          <dt pn="section-2.1-2.3">ASN:</dt>
          <dd pn="section-2.1-2.4">Autonomous System Number</dd>
          <dt pn="section-2.1-2.5">CDN:</dt>
          <dd pn="section-2.1-2.6">Content Delivery Network</dd>
          <dt pn="section-2.1-2.7">CDNI:</dt>
          <dd pn="section-2.1-2.8">CDN Interconnection</dd>
          <dt pn="section-2.1-2.9">dCDN:</dt>
          <dd pn="section-2.1-2.10">Downstream CDN</dd>
          <dt pn="section-2.1-2.11">FCI:</dt>
          <dd pn="section-2.1-2.12">CDNI FCI, CDNI Request Routing Footprint &amp; Capabilities Advertisement interface</dd>
          <dt pn="section-2.1-2.13">IRD:</dt>
          <dd pn="section-2.1-2.14">Information Resource Directory in ALTO</dd>
          <dt pn="section-2.1-2.15">PID:</dt>
          <dd pn="section-2.1-2.16">Provider-defined Identifier in ALTO</dd>
          <dt pn="section-2.1-2.17">uCDN:</dt>
          <dd pn="section-2.1-2.18">Upstream CDN</dd>
        </dl>
      </section>
      <section anchor="bgSemantics" numbered="true" toc="include" removeInRFC="false" pn="section-2.2">
        <name slugifiedName="name-semantics-of-fci-advertisem">Semantics of FCI Advertisement</name>
        <t indent="0" pn="section-2.2-1"><xref target="RFC8008" format="default" sectionFormat="of" derivedContent="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 <xref target="RFC8008" format="default" sectionFormat="of" derivedContent="RFC8008"/> depend on <xref target="RFC8006" format="default" sectionFormat="of" derivedContent="RFC8006"/>. Below is a non-normative
review of key related points of <xref target="RFC8008" format="default" sectionFormat="of" derivedContent="RFC8008"/> and <xref target="RFC8006" format="default" sectionFormat="of" derivedContent="RFC8006"/>. For detailed
information and normative specification, the reader should refer to these two
RFCs.</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2.2-2">
          <li pn="section-2.2-2.1">Multiple types of mandatory-to-implement footprints (i.e., "ipv4cidr", "ipv6cidr", "asn",
and "countrycode") are defined in <xref target="RFC8006" format="default" sectionFormat="of" derivedContent="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.</li>
          <li pn="section-2.2-2.2">Multiple initial types of capabilities are defined in <xref target="RFC8008" format="default" sectionFormat="of" derivedContent="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.</li>
          <li pn="section-2.2-2.3">Footprint and capabilities are defined together and cannot be interpreted
independently from each other. Specifically, <xref target="RFC8008" format="default" sectionFormat="of" derivedContent="RFC8008"/> integrates footprint
and capabilities with an approach of "capabilities with footprint
restrictions", by expressing capabilities on a per footprint basis.</li>
          <li pn="section-2.2-2.4">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.</li>
          <li pn="section-2.2-2.5">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.</li>
        </ul>
      </section>
      <section anchor="bgALTO" numbered="true" toc="include" removeInRFC="false" pn="section-2.3">
        <name slugifiedName="name-alto-background-and-benefit">ALTO Background and Benefits</name>
        <t indent="0" pn="section-2.3-1">Application-Layer Traffic Optimization (ALTO) <xref target="RFC7285" format="default" sectionFormat="of" derivedContent="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 <xref target="RFC5693" format="default" sectionFormat="of" derivedContent="RFC5693"/>.</t>
        <t indent="0" pn="section-2.3-2">Originally, ALTO was motivated by optimizing cross-ISP traffic generated by peer-to-peer 
applications <xref target="RFC5693" format="default" sectionFormat="of" derivedContent="RFC5693"/>. However, ALTO can also be used for improving the
Request Routing in CDNs. In particular, <xref target="RFC7971" section="5" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7971#section-5" derivedContent="RFC7971"/>
explicitly mentions ALTO as a candidate protocol to improve the selection of a
CDN surrogate or origin.</t>
        <t indent="0" pn="section-2.3-3">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:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2.3-4">
          <li pn="section-2.3-4.1">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 <xref target="cdnifci" format="default" sectionFormat="of" derivedContent="Section 3"/>) and
then providing costs of surrogates in a dCDN by ALTO cost maps.</li>
          <li pn="section-2.3-4.2">Security: The identification between uCDNs and dCDNs is an important
requirement (see <xref target="security" format="default" sectionFormat="of" derivedContent="Section 8"/>). ALTO maps can be signed and hence provide
inherent origin protection. Please see <xref target="RFC7285" section="15.1.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7285#section-15.1.2" derivedContent="RFC7285"/> for
detailed protection strategies.</li>
          <li pn="section-2.3-4.3">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 <xref target="cdnifci" format="default" sectionFormat="of" derivedContent="Section 3"/>.</li>
          <li pn="section-2.3-4.4">Error handling: The ALTO Protocol provides extensive error handling in the
whole request and response process (see <xref target="RFC7285" section="8.5" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7285#section-8.5" derivedContent="RFC7285"/>). A CDNI
FCI interface based on ALTO would inherit this extensive error-handling
framework. Please see <xref target="filteredcdnifci" format="default" sectionFormat="of" derivedContent="Section 5"/>.</li>
          <li pn="section-2.3-4.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 <xref target="cdnifcinetworkmap" format="default" sectionFormat="of" derivedContent="Section 4"/>.</li>
          <li pn="section-2.3-4.6">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 <xref target="unifiedpropertymap" format="default" sectionFormat="of" derivedContent="Section 6"/>.</li>
          <li pn="section-2.3-4.7">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
<xref target="RFC8895" format="default" sectionFormat="of" derivedContent="RFC8895"/>.</li>
          <li pn="section-2.3-4.8">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
<xref target="RFC9240" format="default" sectionFormat="of" derivedContent="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.</li>
          <li pn="section-2.3-4.9">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 <xref target="RFC9240" format="default" sectionFormat="of" derivedContent="RFC9240"/>,
it would enable more sophisticated means for dCDN selection with ALTO. The ALTO
Path Vector extension <xref target="I-D.ietf-alto-path-vector" format="default" sectionFormat="of" derivedContent="ALTO-PATH-VECTOR"/> is designed to allow ALTO
clients to query information such as capacity regions for a given set of
flows.
          </li>
        </ul>
      </section>
    </section>
    <section anchor="cdnifci" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-cdni-advertisement-service">CDNI Advertisement Service</name>
      <t indent="0" pn="section-3-1">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" <xref target="RFC7285" format="default" sectionFormat="of" derivedContent="RFC7285"/>. The ALTO Protocol specification defines multiple
initial services, e.g., the ALTO Network Map Service and Cost Map Service.</t>
      <t indent="0" pn="section-3-2">This document defines a new ALTO service, called "CDNI Advertisement Service",
which conveys JSON <xref target="RFC8259" format="default" sectionFormat="of" derivedContent="RFC8259"/> objects of media type "application/alto-cdni+json". These
JSON objects are used to transport BaseAdvertisementObject objects defined in
<xref target="RFC8008" format="default" sectionFormat="of" derivedContent="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.</t>
      <t indent="0" pn="section-3-3">Note that the encoding of BaseAdvertisementObject reuses the one
defined in <xref target="RFC8008" format="default" sectionFormat="of" derivedContent="RFC8008"/> and therefore also follows the recommendations of I-JSON
(Internet JSON) <xref target="RFC7493" format="default" sectionFormat="of" derivedContent="RFC7493"/>, which is required by <xref target="RFC8008" format="default" sectionFormat="of" derivedContent="RFC8008"/>.</t>
      <section anchor="cdnifcimediatype" numbered="true" toc="include" removeInRFC="false" pn="section-3.1">
        <name slugifiedName="name-media-type">Media Type</name>
        <t indent="0" pn="section-3.1-1">The media type of the CDNI Advertisement resource is
"application/alto-cdni+json" (see <xref target="iana" format="default" sectionFormat="of" derivedContent="Section 7"/>).</t>
      </section>
      <section anchor="cdnifcimethod" numbered="true" toc="include" removeInRFC="false" pn="section-3.2">
        <name slugifiedName="name-http-method">HTTP Method</name>
        <t indent="0" pn="section-3.2-1">A CDNI Advertisement resource is requested using the HTTP GET method.</t>
      </section>
      <section anchor="cdnifciinput" numbered="true" toc="include" removeInRFC="false" pn="section-3.3">
        <name slugifiedName="name-accept-input-parameters">Accept Input Parameters</name>
        <t indent="0" pn="section-3.3-1">There are no applicable Accept Input parameters.</t>
      </section>
      <section anchor="cdnifcicap" numbered="true" toc="include" removeInRFC="false" pn="section-3.4">
        <name slugifiedName="name-capabilities">Capabilities</name>
        <t indent="0" pn="section-3.4-1">There are no applicable capabilities.</t>
      </section>
      <section anchor="cdnifciuses" numbered="true" toc="include" removeInRFC="false" pn="section-3.5">
        <name slugifiedName="name-uses">Uses</name>
        <t indent="0" pn="section-3.5-1">The "uses" field <bcp14>MUST NOT</bcp14> 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 <bcp14>MUST</bcp14> be included into the "uses" field. This
document only defines one potential dependent resource for the CDNI
Advertisement resource. See <xref target="cdnifcinetworkmap" format="default" sectionFormat="of" derivedContent="Section 4"/> for details
of when and how to use it. Future documents may extend the CDNI Advertisement
resource and allow other dependent resources.</t>
      </section>
      <section anchor="cdnifciencoding" numbered="true" toc="include" removeInRFC="false" pn="section-3.6">
        <name slugifiedName="name-response">Response</name>
        <t indent="0" pn="section-3.6-1">The "meta" field of a CDNI Advertisement response <bcp14>MUST</bcp14> include the "vtag"
field defined in <xref target="RFC7285" section="10.3" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7285#section-10.3" derivedContent="RFC7285"/>. This
field provides the version of the retrieved CDNI FCI resource.</t>
        <t indent="0" pn="section-3.6-2">If a CDNI Advertisement response depends on other ALTO information resources, it
<bcp14>MUST</bcp14> 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.</t>
        <t indent="0" pn="section-3.6-3">The data component of an ALTO CDNI Advertisement response is named
"cdni-advertisement", which is a JSON object of type CDNIAdvertisementData:</t>
        <sourcecode type="json" markers="false" pn="section-3.6-4">
    object {
      CDNIAdvertisementData cdni-advertisement;
    } InfoResourceCDNIAdvertisement : ResponseEntityBase;

    object {
      BaseAdvertisementObject capabilities-with-footprints&lt;0..*&gt;;
    } CDNIAdvertisementData;
</sourcecode>
        <t indent="0" pn="section-3.6-5">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.</t>
        <t indent="0" pn="section-3.6-6">The syntax and semantics of BaseAdvertisementObject are well defined in 
<xref target="RFC8008" section="5.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8008#section-5.1" derivedContent="RFC8008"/>. A BaseAdvertisementObject object includes multiple
properties, including "capability-type", "capability-value", and "footprints", where
"footprints" are defined in <xref target="RFC8006" section="4.2.2.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8006#section-4.2.2.2" derivedContent="RFC8006"/>.</t>
        <t indent="0" pn="section-3.6-7">
   An equivalent specification in the ALTO-style notation (see
   <xref target="RFC7285" section="8.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7285#section-8.2" derivedContent="RFC7285"/>)
   creates a self-contained description of the BaseAdvertisementObject.  
   As mentioned above, the normative specification of
BaseAdvertisementObject is in <xref target="RFC8008" format="default" sectionFormat="of" derivedContent="RFC8008"/>.</t>
        <sourcecode type="json" markers="false" pn="section-3.6-8">
    object {
      JSONString capability-type;
      JSONValue capability-value;
      Footprint footprints&lt;0..*&gt;;
    } BaseAdvertisementObject;

    object {
      JSONString footprint-type;
      JSONString footprint-value&lt;1..*&gt;;
    } Footprint;
</sourcecode>
        <t indent="0" pn="section-3.6-9">For each BaseAdvertisementObject, the ALTO client <bcp14>MUST</bcp14> 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 <bcp14>MUST</bcp14>
understand that the capabilities in this BaseAdvertisementObject have the
"global" coverage, i.e., the corresponding dCDN can provide them for any
Request Routing source.</t>
        <t indent="0" pn="section-3.6-10">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.</t>
        <artwork name="" type="" align="left" alt="" pn="section-3.6-11">
EXAMPLE 1
    {
      "meta": {...},
      "cdni-advertisement": {
        "capabilities-with-footprints": [
          {
            "capability-type": "FCI.DeliveryProtocol",
            "capability-value": {
              "delivery-protocols": [
                "http/1.1"
              ]
            },
            "footprints": [
              &lt;Footprint objects&gt;
            ]
          },
          {

            "capability-type": "FCI.DeliveryProtocol",
            "capability-value": {
              "delivery-protocols": [
                "https/1.1"
              ]
            },
            "footprints": [
              &lt;Footprint objects&gt;
            ]
          }
        ]
      }
    }
</artwork>
        <artwork name="" type="" align="left" alt="" pn="section-3.6-12">
EXAMPLE 2
    {
      "meta": {...},
      "cdni-advertisement": {
        "capabilities-with-footprints": [
          {
            "capability-type": "FCI.DeliveryProtocol",
            "capability-value": {
              "delivery-protocols": [
                "https/1.1",
                "http/1.1"
              ]
            },
            "footprints": [
              &lt;Footprint objects&gt;
            ]
          }
        ]
      }
    }
</artwork>
        <t indent="0" pn="section-3.6-13">Since such optimizations are not required for the basic interconnection of CDNs,
the specifics of such mechanisms are outside the scope of this document.</t>
        <t indent="0" pn="section-3.6-14">This document only requires the ALTO server to provide the initial FCI-specific
CDNI Payload Types defined in <xref target="RFC8008" format="default" sectionFormat="of" derivedContent="RFC8008"/> as the mandatory-to-implement CDNI
capabilities.</t>
      </section>
      <section anchor="cdnifciexamples" numbered="true" toc="include" removeInRFC="false" pn="section-3.7">
        <name slugifiedName="name-examples">Examples</name>
        <section anchor="IRDexample" numbered="true" toc="include" removeInRFC="false" pn="section-3.7.1">
          <name slugifiedName="name-ird">IRD</name>
          <t indent="0" pn="section-3.7.1-1">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.</t>
          <t indent="0" pn="section-3.7.1-2">Specifically, the IRD announces nine information resources as follows:</t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.7.1-3">
            <li pn="section-3.7.1-3.1">two network maps,</li>
            <li pn="section-3.7.1-3.2">one CDNI Advertisement resource without dependency,</li>
            <li pn="section-3.7.1-3.3">one CDNI Advertisement resource depending on a network map,</li>
            <li pn="section-3.7.1-3.4">one filtered CDNI Advertisement resource to be defined in <xref target="filteredcdnifci" format="default" sectionFormat="of" derivedContent="Section 5"/>,</li>
            <li pn="section-3.7.1-3.5">one property map including "cdni-capabilities" as its entity property,</li>
            <li pn="section-3.7.1-3.6">one filtered property map including "cdni-capabilities" and "pid" as its entity properties, and</li>
            <li pn="section-3.7.1-3.7">
              <t indent="0" pn="section-3.7.1-3.7.1">two update stream services:
              </t>
              <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.7.1-3.7.2">
                <li pn="section-3.7.1-3.7.2.1">one for updating CDNI Advertisement resources,</li>
                <li pn="section-3.7.1-3.7.2.2">one for updating property maps</li>
              </ul>
            </li>
          </ul>
          <artwork name="" type="" align="left" alt="" pn="section-3.7.1-4">
 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"
         }
       }
     }
   }
 }
</artwork>
        </section>
        <section anchor="fullcdnifciexample" numbered="true" toc="include" removeInRFC="false" pn="section-3.7.2">
          <name slugifiedName="name-a-basic-example">A Basic Example</name>
          <t indent="0" pn="section-3.7.2-1">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.</t>
          <artwork name="" type="" align="left" alt="" pn="section-3.7.2-2">
  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" ]
            }
          ]
        }
      ]
    }
  }
</artwork>
        </section>
        <section anchor="incremental-updates" numbered="true" toc="include" removeInRFC="false" pn="section-3.7.3">
          <name slugifiedName="name-incremental-updates">Incremental Updates</name>
          <t indent="0" pn="section-3.7.3-1">A benefit of using ALTO to provide CDNI Advertisement resources is that such
resources can be updated using ALTO incremental updates <xref target="RFC8895" format="default" sectionFormat="of" derivedContent="RFC8895"/>. Below is
an example that also shows the benefit of having both JSON merge patch and JSON
patch to encode updates.</t>
          <t indent="0" pn="section-3.7.3-2">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.</t>
          <artwork name="" type="" align="left" alt="" pn="section-3.7.3-3">
 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: ]
</artwork>
        </section>
      </section>
    </section>
    <section anchor="cdnifcinetworkmap" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-cdni-advertisement-service-">CDNI Advertisement Service Using ALTO Network Map</name>
      <section anchor="network-map-footprint-type-altopid" numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-network-map-footprint-type-">Network Map Footprint Type: altopid</name>
        <t indent="0" pn="section-4.1-1">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").</t>
        <t indent="0" pn="section-4.1-2">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.</t>
        <t indent="0" pn="section-4.1-3">Specifically, the "altopid" footprint type indicates that the corresponding
footprint value is a list of PIDNames as defined in <xref target="RFC7285" format="default" sectionFormat="of" derivedContent="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
<bcp14>MUST</bcp14> be included in the "uses" field of its IRD entry, and the "dependent-vtags"
field with a reference to this network map <bcp14>MUST</bcp14> be included in its response (see
the example in <xref target="networkmapfootprint" format="default" sectionFormat="of" derivedContent="Section 4.2.2"/>).</t>
      </section>
      <section anchor="examples" numbered="true" toc="include" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-examples-2">Examples</name>
        <t indent="0" pn="section-4.2-1">The following examples use the same IRD given in <xref target="IRDexample" format="default" sectionFormat="of" derivedContent="Section 3.7.1"/>.</t>
        <section anchor="networkmapexample" numbered="true" toc="include" removeInRFC="false" pn="section-4.2.1">
          <name slugifiedName="name-alto-network-map-for-cdni-a">ALTO Network Map for CDNI Advertisements</name>
          <t indent="0" pn="section-4.2.1-1">Below provides a sample network map whose resource ID is "my-eu-netmap". This
map is referenced by the CDNI Advertisement example in <xref target="networkmapfootprint" format="default" sectionFormat="of" derivedContent="Section 4.2.2"/>.</t>
          <artwork name="" type="" align="left" alt="" pn="section-4.2.1-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" ]
     }
   }
 }
</artwork>
        </section>
        <section anchor="networkmapfootprint" numbered="true" toc="include" removeInRFC="false" pn="section-4.2.2">
          <name slugifiedName="name-alto-pid-footprints-in-cdni">ALTO PID Footprints in CDNI Advertisements</name>
          <t indent="0" pn="section-4.2.2-1">This example shows a CDNI Advertisement resource that depends on a network map
described in <xref target="networkmapexample" format="default" sectionFormat="of" derivedContent="Section 4.2.1"/>.</t>
          <artwork name="" type="" align="left" alt="" pn="section-4.2.2-2">
 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" ]
           }
         ]
       }
     ]
   }
 }
</artwork>
        </section>
        <section anchor="incremental-updates-1" numbered="true" toc="include" removeInRFC="false" pn="section-4.2.3">
          <name slugifiedName="name-incremental-updates-2">Incremental Updates</name>
          <t indent="0" pn="section-4.2.3-1">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.</t>
          <artwork name="" type="" align="left" alt="" pn="section-4.2.3-2">
  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: ]
</artwork>
        </section>
      </section>
    </section>
    <section anchor="filteredcdnifci" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-filtered-cdni-advertisement">Filtered CDNI Advertisement Using CDNI Capabilities</name>
      <t indent="0" pn="section-5-1">Sections <xref target="cdnifci" format="counter" sectionFormat="of" derivedContent="3"/> and <xref target="cdnifcinetworkmap" format="counter" sectionFormat="of" derivedContent="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.</t>
      <section anchor="media-type" numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
        <name slugifiedName="name-media-type-2">Media Type</name>
        <t indent="0" pn="section-5.1-1">A filtered CDNI Advertisement resource uses the same media type defined for the
CDNI Advertisement resource in <xref target="cdnifcimediatype" format="default" sectionFormat="of" derivedContent="Section 3.1"/>: "application/alto-cdni+json".</t>
      </section>
      <section anchor="http-method" numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
        <name slugifiedName="name-http-method-2">HTTP Method</name>
        <t indent="0" pn="section-5.2-1">A filtered CDNI Advertisement resource is requested using the HTTP POST method.</t>
      </section>
      <section anchor="filteredcdnifciinputs" numbered="true" toc="include" removeInRFC="false" pn="section-5.3">
        <name slugifiedName="name-accept-input-parameters-2">Accept Input Parameters</name>
        <t indent="0" pn="section-5.3-1">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:</t>
        <sourcecode type="json" markers="false" pn="section-5.3-2">
   object {
       JSONString capability-type;
       JSONValue capability-value;
   } CDNICapability;

   object {
       CDNICapability cdni-capabilities&lt;0..*&gt;;
   } ReqFilteredCDNIAdvertisement;
</sourcecode>
        <t indent="0" pn="section-5.3-3">with fields:</t>
        <dl indent="3" newline="false" spacing="normal" pn="section-5.3-4">
          <dt pn="section-5.3-4.1">
capability-type:  </dt>
          <dd pn="section-5.3-4.2">
            <t indent="0" pn="section-5.3-4.2.1">The same as Base Advertisement Object's "capability-type" defined in 
<xref target="RFC8008" section="5.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8008#section-5.1" derivedContent="RFC8008"/>.</t>
          </dd>
          <dt pn="section-5.3-4.3">
capability-value:  </dt>
          <dd pn="section-5.3-4.4">
            <t indent="0" pn="section-5.3-4.4.1">The same as Base Advertisement Object's "capability-value" defined in
<xref target="RFC8008" section="5.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8008#section-5.1" derivedContent="RFC8008"/>.</t>
          </dd>
          <dt pn="section-5.3-4.5">
cdni-capabilities:  </dt>
          <dd pn="section-5.3-4.6">
            <t indent="0" pn="section-5.3-4.6.1">A list of CDNI capabilities defined in <xref target="RFC8008" section="5.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8008#section-5.1" derivedContent="RFC8008"/> for which
footprints are to be returned. If this list is empty, the ALTO
server <bcp14>MUST</bcp14> interpret it as a request for the full CDNI Advertisement
resource. The ALTO server <bcp14>MUST</bcp14> 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 <bcp14>MUST</bcp14> omit this capability from the
response.</t>
          </dd>
        </dl>
      </section>
      <section anchor="capabilities" numbered="true" toc="include" removeInRFC="false" pn="section-5.4">
        <name slugifiedName="name-capabilities-2">Capabilities</name>
        <t indent="0" pn="section-5.4-1">There are no applicable capabilities.</t>
      </section>
      <section anchor="uses" numbered="true" toc="include" removeInRFC="false" pn="section-5.5">
        <name slugifiedName="name-uses-2">Uses</name>
        <t indent="0" pn="section-5.5-1">
	  The same rules as for the "uses" field of the CDNI Advertisement 
	resource apply (see <xref target="cdnifciuses" format="default" sectionFormat="of" derivedContent="Section 3.5"/>).</t>
      </section>
      <section anchor="response" numbered="true" toc="include" removeInRFC="false" pn="section-5.6">
        <name slugifiedName="name-response-2">Response</name>
        <t indent="0" pn="section-5.6-1">If the request is invalid, the response <bcp14>MUST</bcp14> indicate an error using ALTO
Protocol error handling specified in <xref target="RFC7285" section="8.5" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7285#section-8.5" derivedContent="RFC7285"/>.</t>
        <t indent="0" pn="section-5.6-2">Specifically, a filtered CDNI Advertisement request is invalid if:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-5.6-3">
          <li pn="section-5.6-3.1">the value of "capability-type" is null;</li>
          <li pn="section-5.6-3.2">the value of "capability-value" is null; or</li>
          <li pn="section-5.6-3.3">the value of "capability-value" is inconsistent with "capability-type".</li>
        </ul>
        <t indent="0" pn="section-5.6-4">When a request is invalid, the ALTO server <bcp14>MUST</bcp14> return an
"E_INVALID_FIELD_VALUE" error defined in <xref target="RFC7285" section="8.5.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7285#section-8.5.2" derivedContent="RFC7285"/>, and the
"value" field of the error message <bcp14>SHOULD</bcp14> indicate this CDNI capability.</t>
        <t indent="0" pn="section-5.6-5">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 <xref target="cdnifciencoding" format="default" sectionFormat="of" derivedContent="Section 3.6"/>).</t>
        <t indent="0" pn="section-5.6-6">The returned filtered CDNI Advertisement resource <bcp14>MUST</bcp14> contain all the
BaseAdvertisementObject objects satisfying the following condition: the CDNI
capability object of each included BaseAdvertisementObject object <bcp14>MUST</bcp14> follow
two constraints:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-5.6-7">
          <li pn="section-5.6-7.1">The "cdni-capabilities" field of the input includes a CDNI capability object
X having the same "capability-type" as it.</li>
          <li pn="section-5.6-7.2">All the mandatory properties in its "capability-value" is a superset of
mandatory properties in "capability-value" of X semantically.</li>
        </ul>
        <t indent="0" pn="section-5.6-8">See <xref target="filteredcdnifciexample" format="default" sectionFormat="of" derivedContent="Section 5.7.1"/> for a concrete example.</t>
        <t indent="0" pn="section-5.6-9">The version tag included in the "vtag" field of the response <bcp14>MUST</bcp14> 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.</t>
      </section>
      <section anchor="examples-1" numbered="true" toc="include" removeInRFC="false" pn="section-5.7">
        <name slugifiedName="name-examples-3">Examples</name>
        <t indent="0" pn="section-5.7-1">The following examples use the same IRD example as in <xref target="IRDexample" format="default" sectionFormat="of" derivedContent="Section 3.7.1"/>.</t>
        <section anchor="filteredcdnifciexample" numbered="true" toc="include" removeInRFC="false" pn="section-5.7.1">
          <name slugifiedName="name-a-basic-example-2">A Basic Example</name>
          <t indent="0" pn="section-5.7.1-1">This example filters the full CDNI Advertisement resource in
<xref target="fullcdnifciexample" format="default" sectionFormat="of" derivedContent="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.</t>
          <artwork name="" type="" align="left" alt="" pn="section-5.7.1-2">
  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" ]
            }
          ]
        }
      ]
    }
  }
</artwork>
        </section>
        <section anchor="incremental-updates-2" numbered="true" toc="include" removeInRFC="false" pn="section-5.7.2">
          <name slugifiedName="name-incremental-updates-3">Incremental Updates</name>
          <t indent="0" pn="section-5.7.2-1">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.</t>
          <artwork name="" type="" align="left" alt="" pn="section-5.7.2-2">
  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: ]
</artwork>
        </section>
      </section>
    </section>
    <section anchor="unifiedpropertymap" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-query-footprint-properties-">Query Footprint Properties Using ALTO Property Map Service</name>
      <t indent="0" pn="section-6-1">Besides the requirement of retrieving footprints of given capabilities, another
common requirement for uCDN is to query CDNI capabilities of given footprints.</t>
      <t indent="0" pn="section-6-2">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 <xref target="RFC9240" format="default" sectionFormat="of" derivedContent="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.</t>
      <section anchor="footprinttoentities" numbered="true" toc="include" removeInRFC="false" pn="section-6.1">
        <name slugifiedName="name-representing-footprint-obje">Representing Footprint Objects as Property Map Entities</name>
        <t indent="0" pn="section-6.1-1">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
<xref target="RFC9240" format="default" sectionFormat="of" derivedContent="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.</t>
        <t indent="0" pn="section-6.1-2">Each existing footprint type can be represented as an entity domain type as
follows:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6.1-3">
          <li pn="section-6.1-3.1">According to <xref target="RFC9240" format="default" sectionFormat="of" derivedContent="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.</li>
          <li pn="section-6.1-3.2">"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 <bcp14>MUST</bcp14> be the dependent network map used by
the CDNI Advertisement resource providing this "altopid" footprint.</li>
          <li pn="section-6.1-3.3">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 <xref target="iana" format="default" sectionFormat="of" derivedContent="Section 7"/> in addition to the ones in
<xref target="RFC9240" format="default" sectionFormat="of" derivedContent="RFC9240"/>.</li>
        </ul>
        <t indent="0" pn="section-6.1-4">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.</t>
        <artwork name="" type="" align="left" alt="" pn="section-6.1-5">
{ "footprint-type": "ipv4cidr",
  "footprint-value": ["192.0.2.0/24", "198.51.100.0/24"]
} --&gt; "ipv4:192.0.2.0/24", "ipv4:198.51.100.0/24"
</artwork>
        <t indent="0" pn="section-6.1-6">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.</t>
        <artwork name="" type="" align="left" alt="" pn="section-6.1-7">
"ipv4:203.0.113.100" --&gt; {
  "footprint-type": "ipv4cidr",
  "footprint-value": ["203.0.113.100/32"]
}
</artwork>
        <section anchor="asn-domain" numbered="true" toc="include" removeInRFC="false" pn="section-6.1.1">
          <name slugifiedName="name-asn-domain">ASN Domain</name>
          <t indent="0" pn="section-6.1.1-1">The ASN domain associates property values with Autonomous Systems in the
Internet.</t>
          <section anchor="entity-domain-type" numbered="true" toc="exclude" removeInRFC="false" pn="section-6.1.1.1">
            <name slugifiedName="name-entity-domain-type">Entity Domain Type</name>
            <t indent="0" pn="section-6.1.1.1-1">The entity domain type of the ASN domain is "asn" (in lowercase).</t>
          </section>
          <section anchor="asn-entity-id" numbered="true" toc="exclude" removeInRFC="false" pn="section-6.1.1.2">
            <name slugifiedName="name-domain-specific-entity-iden">Domain-Specific Entity Identifiers</name>
            <t indent="0" pn="section-6.1.1.2-1">The entity identifier of an entity in an ASN domain <bcp14>MUST</bcp14> be encoded as a string
consisting of the characters "as" (in lowercase) followed by the ASN
<xref target="RFC6793" format="default" sectionFormat="of" derivedContent="RFC6793"/> as a decimal number without leading zeros.</t>
          </section>
          <section anchor="hierarchy-and-inheritance" numbered="true" toc="exclude" removeInRFC="false" pn="section-6.1.1.3">
            <name slugifiedName="name-hierarchy-and-inheritance">Hierarchy and Inheritance</name>
            <t indent="0" pn="section-6.1.1.3-1">There is no hierarchy or inheritance for properties associated with ASN.</t>
          </section>
        </section>
        <section anchor="countrycode-domain" numbered="true" toc="include" removeInRFC="false" pn="section-6.1.2">
          <name slugifiedName="name-countrycode-domain">COUNTRYCODE Domain</name>
          <t indent="0" pn="section-6.1.2-1">The COUNTRYCODE domain associates property values with countries.</t>
          <section anchor="entity-domain-type-1" numbered="true" toc="exclude" removeInRFC="false" pn="section-6.1.2.1">
            <name slugifiedName="name-entity-domain-type-2">Entity Domain Type</name>
            <t indent="0" pn="section-6.1.2.1-1">The entity domain type of the COUNTRYCODE domain is "countrycode" (in lowercase).</t>
          </section>
          <section anchor="countrycode-entity-id" numbered="true" toc="exclude" removeInRFC="false" pn="section-6.1.2.2">
            <name slugifiedName="name-domain-specific-entity-ident">Domain-Specific Entity Identifiers</name>
            <t indent="0" pn="section-6.1.2.2-1">The entity identifier of an entity in a COUNTRYCODE domain is encoded as an ISO
3166-1 alpha-2 code <xref target="ISO3166-1" format="default" sectionFormat="of" derivedContent="ISO3166-1"/> in lowercase.</t>
          </section>
          <section anchor="hierarchy-and-inheritance-1" numbered="true" toc="exclude" removeInRFC="false" pn="section-6.1.2.3">
            <name slugifiedName="name-hierarchy-and-inheritance-2">Hierarchy and Inheritance</name>
            <t indent="0" pn="section-6.1.2.3-1">There is no hierarchy or inheritance for properties associated with country
codes.</t>
          </section>
        </section>
      </section>
      <section anchor="capabilitytoproperties" numbered="true" toc="include" removeInRFC="false" pn="section-6.2">
        <name slugifiedName="name-representing-cdni-capabilit">Representing CDNI Capabilities as Property Map Entity Properties</name>
        <t indent="0" pn="section-6.2-1">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.</t>
        <section anchor="defining-information-resource-media-type-for-property-type-cdni-capabilities" numbered="true" toc="include" removeInRFC="false" pn="section-6.2.1">
          <name slugifiedName="name-defining-information-resour">Defining Information Resource Media Type for Property Type cdni-capabilities</name>
          <t indent="0" pn="section-6.2.1-1">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 <bcp14>MUST</bcp14> 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:</t>
          <t indent="0" pn="section-6.2.1-2">application/alto-cdni+json</t>
        </section>
        <section anchor="intended-semantics-of-property-type-cdni-capabilities" numbered="true" toc="include" removeInRFC="false" pn="section-6.2.2">
          <name slugifiedName="name-intended-semantics-of-prope">Intended Semantics of Property Type cdni-capabilities</name>
          <t indent="0" pn="section-6.2.2-1">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 <bcp14>MUST</bcp14> be a JSON array. Each element in a "cdni-capabilities" property
<bcp14>MUST</bcp14> be a JSON object in the format of CDNICapability (see
<xref target="filteredcdnifciinputs" format="default" sectionFormat="of" derivedContent="Section 5.3"/>). The value of a "cdni-capabilities" property for an
"ipv4", "ipv6", "asn", "countrycode", or "altopid" entity <bcp14>MUST</bcp14> 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.</t>
        </section>
      </section>
      <section anchor="examples-2" numbered="true" toc="include" removeInRFC="false" pn="section-6.3">
        <name slugifiedName="name-examples-4">Examples</name>
        <t indent="0" pn="section-6.3-1">The following examples use the same IRD example given by <xref target="IRDexample" format="default" sectionFormat="of" derivedContent="Section 3.7.1"/>.</t>
        <section anchor="property-map" numbered="true" toc="include" removeInRFC="false" pn="section-6.3.1">
          <name slugifiedName="name-property-map">Property Map</name>
          <t indent="0" pn="section-6.3.1-1">This example shows a full property map in which entities are footprints and
entities' property is "cdni-capabilities".</t>
          <artwork name="" type="" align="left" alt="" pn="section-6.3.1-2">
 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"]}}]
     }
   }
 }
</artwork>
        </section>
        <section anchor="filtered-property-map" numbered="true" toc="include" removeInRFC="false" pn="section-6.3.2">
          <name slugifiedName="name-filtered-property-map">Filtered Property Map</name>
          <t indent="0" pn="section-6.3.2-1">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".</t>
          <artwork name="" type="" align="left" alt="" pn="section-6.3.2-2">
   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"
     }
   }
 }
</artwork>
        </section>
        <section anchor="incremental-updates-3" numbered="true" toc="include" removeInRFC="false" pn="section-6.3.3">
          <name slugifiedName="name-incremental-updates-4">Incremental Updates</name>
          <t indent="0" pn="section-6.3.3-1">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".</t>
          <artwork name="" type="" align="left" alt="" pn="section-6.3.3-2">
  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: ]
</artwork>
        </section>
      </section>
    </section>
    <section anchor="iana" numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-7-1">This document defines two new media types: "application/alto-cdni+json", as
described in <xref target="iana-cdni" format="default" sectionFormat="of" derivedContent="Section 7.1"/>, and "application/cdnifilter+json", as described in
<xref target="iana-cdnifilter" format="default" sectionFormat="of" derivedContent="Section 7.2"/>. It also defines a new CDNI Metadata Footprint Type
(<xref target="iana-footprint-type" format="default" sectionFormat="of" derivedContent="Section 7.3"/>), two new ALTO entity domain types
(<xref target="iana-entity-domain-type" format="default" sectionFormat="of" derivedContent="Section 7.4"/>), and a new ALTO entity property type
(<xref target="iana-entity-prop-type" format="default" sectionFormat="of" derivedContent="Section 7.5"/>).</t>
      <section anchor="iana-cdni" numbered="true" toc="include" removeInRFC="false" pn="section-7.1">
        <name slugifiedName="name-application-alto-cdnijson-m">application/alto-cdni+json Media Type</name>
        <dl newline="true" indent="3" spacing="normal" pn="section-7.1-1">
          <dt pn="section-7.1-1.1">
Type name:  </dt>
          <dd pn="section-7.1-1.2">
            <t indent="0" pn="section-7.1-1.2.1">application</t>
          </dd>
          <dt pn="section-7.1-1.3">
Subtype name:  </dt>
          <dd pn="section-7.1-1.4">
            <t indent="0" pn="section-7.1-1.4.1">alto-cdni+json</t>
          </dd>
          <dt pn="section-7.1-1.5">
Required parameters:  </dt>
          <dd pn="section-7.1-1.6">
            <t indent="0" pn="section-7.1-1.6.1">N/A</t>
          </dd>
          <dt pn="section-7.1-1.7">
Optional parameters:  </dt>
          <dd pn="section-7.1-1.8">
            <t indent="0" pn="section-7.1-1.8.1">N/A</t>
          </dd>
          <dt pn="section-7.1-1.9">
Encoding considerations:  </dt>
          <dd pn="section-7.1-1.10">
            <t indent="0" pn="section-7.1-1.10.1">Encoding considerations are identical to those specified for the
"application/json" media type. See <xref target="RFC8259" format="default" sectionFormat="of" derivedContent="RFC8259"/>.</t>
          </dd>
          <dt pn="section-7.1-1.11">
Security considerations:  </dt>
          <dd pn="section-7.1-1.12">
            <t indent="0" pn="section-7.1-1.12.1">Security considerations related to the generation and consumption of ALTO
Protocol messages are discussed in <xref target="RFC7285" section="15" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7285#section-15" derivedContent="RFC7285"/>.</t>
          </dd>
          <dt pn="section-7.1-1.13">
Interoperability considerations:  </dt>
          <dd pn="section-7.1-1.14">
            <t indent="0" pn="section-7.1-1.14.1">N/A</t>
          </dd>
          <dt pn="section-7.1-1.15">
Published specification:  </dt>
          <dd pn="section-7.1-1.16">
            <t indent="0" pn="section-7.1-1.16.1"><xref target="cdnifci" format="default" sectionFormat="of" derivedContent="Section 3"/> of RFC 9241</t>
          </dd>
          <dt pn="section-7.1-1.17">
Applications that use this media type:  </dt>
          <dd pn="section-7.1-1.18">
            <t indent="0" pn="section-7.1-1.18.1">ALTO servers and ALTO clients <xref target="RFC7285" format="default" sectionFormat="of" derivedContent="RFC7285"/> either stand alone or are embedded within other
applications that provide CDNI interfaces for uCDNs or dCDNs.</t>
          </dd>
          <dt pn="section-7.1-1.19">
Fragment identifier considerations:  </dt>
          <dd pn="section-7.1-1.20">
            <t indent="0" pn="section-7.1-1.20.1">N/A</t>
          </dd>
          <dt pn="section-7.1-1.21">
Additional information:  </dt>
          <dd pn="section-7.1-1.22">
            <dl indent="3" newline="false" spacing="normal" pn="section-7.1-1.22.1">
              <dt pn="section-7.1-1.22.1.1">
Magic number(s):      </dt>
              <dd pn="section-7.1-1.22.1.2">
                <t indent="0" pn="section-7.1-1.22.1.2.1">N/A</t>
              </dd>
              <dt pn="section-7.1-1.22.1.3">
File extension(s):      </dt>
              <dd pn="section-7.1-1.22.1.4">
                <t indent="0" pn="section-7.1-1.22.1.4.1">N/A</t>
              </dd>
              <dt pn="section-7.1-1.22.1.5">
Macintosh file type code(s):      </dt>
              <dd pn="section-7.1-1.22.1.6">
                <t indent="0" pn="section-7.1-1.22.1.6.1">N/A</t>
              </dd>
            </dl>
          </dd>
          <dt pn="section-7.1-1.23">
Person &amp; email address to contact for further information:  </dt>
          <dd pn="section-7.1-1.24">
            <t indent="0" pn="section-7.1-1.24.1">See Authors' Addresses section.</t>
          </dd>
          <dt pn="section-7.1-1.25">
Intended usage:  </dt>
          <dd pn="section-7.1-1.26">
            <t indent="0" pn="section-7.1-1.26.1">COMMON</t>
          </dd>
          <dt pn="section-7.1-1.27">
Restrictions on usage:  </dt>
          <dd pn="section-7.1-1.28">
            <t indent="0" pn="section-7.1-1.28.1">N/A</t>
          </dd>
          <dt pn="section-7.1-1.29">
Author:  </dt>
          <dd pn="section-7.1-1.30">
            <t indent="0" pn="section-7.1-1.30.1">See Authors' Addresses section.</t>
          </dd>
          <dt pn="section-7.1-1.31">
Change controller:  </dt>
          <dd pn="section-7.1-1.32">
            <t indent="0" pn="section-7.1-1.32.1">Internet Engineering Task Force (iesg@ietf.org)</t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-cdnifilter" numbered="true" toc="include" removeInRFC="false" pn="section-7.2">
        <name slugifiedName="name-application-alto-cdnifilter">application/alto-cdnifilter+json Media Type</name>
        <dl newline="true" indent="3" spacing="normal" pn="section-7.2-1">
          <dt pn="section-7.2-1.1">
Type name:  </dt>
          <dd pn="section-7.2-1.2">
            <t indent="0" pn="section-7.2-1.2.1">application</t>
          </dd>
          <dt pn="section-7.2-1.3">
Subtype name:  </dt>
          <dd pn="section-7.2-1.4">
            <t indent="0" pn="section-7.2-1.4.1">alto-cdnifilter+json</t>
          </dd>
          <dt pn="section-7.2-1.5">
Required parameters:  </dt>
          <dd pn="section-7.2-1.6">
            <t indent="0" pn="section-7.2-1.6.1">N/A</t>
          </dd>
          <dt pn="section-7.2-1.7">
Optional parameters:  </dt>
          <dd pn="section-7.2-1.8">
            <t indent="0" pn="section-7.2-1.8.1">N/A</t>
          </dd>
          <dt pn="section-7.2-1.9">
Encoding considerations:  </dt>
          <dd pn="section-7.2-1.10">
            <t indent="0" pn="section-7.2-1.10.1">Encoding considerations are identical to those specified for the
"application/json" media type. See <xref target="RFC8259" format="default" sectionFormat="of" derivedContent="RFC8259"/>.</t>
          </dd>
          <dt pn="section-7.2-1.11">
Security considerations:  </dt>
          <dd pn="section-7.2-1.12">
            <t indent="0" pn="section-7.2-1.12.1">Security considerations related to the generation and consumption of ALTO
Protocol messages are discussed in <xref target="RFC7285" section="15" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7285#section-15" derivedContent="RFC7285"/>.</t>
          </dd>
          <dt pn="section-7.2-1.13">
Interoperability considerations:  </dt>
          <dd pn="section-7.2-1.14">
            <t indent="0" pn="section-7.2-1.14.1">N/A</t>
          </dd>
          <dt pn="section-7.2-1.15">
Published specification:  </dt>
          <dd pn="section-7.2-1.16">
            <t indent="0" pn="section-7.2-1.16.1"><xref target="filteredcdnifci" format="default" sectionFormat="of" derivedContent="Section 5"/> of RFC 9241</t>
          </dd>
          <dt pn="section-7.2-1.17">
Applications that use this media type:  </dt>
          <dd pn="section-7.2-1.18">
            <t indent="0" pn="section-7.2-1.18.1">ALTO servers and ALTO clients <xref target="RFC7285" format="default" sectionFormat="of" derivedContent="RFC7285"/> either stand alone or are embedded
within other applications that provide CDNI interfaces for uCDNs or dCDNs
and supports CDNI capability-based filtering.</t>
          </dd>
          <dt pn="section-7.2-1.19">
Fragment identifier considerations:  </dt>
          <dd pn="section-7.2-1.20">
            <t indent="0" pn="section-7.2-1.20.1">N/A</t>
          </dd>
          <dt pn="section-7.2-1.21">
Additional information:  </dt>
          <dd pn="section-7.2-1.22">
            <dl indent="3" newline="false" spacing="normal" pn="section-7.2-1.22.1">
              <dt pn="section-7.2-1.22.1.1">
Magic number(s):      </dt>
              <dd pn="section-7.2-1.22.1.2">
                <t indent="0" pn="section-7.2-1.22.1.2.1">N/A</t>
              </dd>
              <dt pn="section-7.2-1.22.1.3">
File extension(s):      </dt>
              <dd pn="section-7.2-1.22.1.4">
                <t indent="0" pn="section-7.2-1.22.1.4.1">N/A</t>
              </dd>
              <dt pn="section-7.2-1.22.1.5">
Macintosh file type code(s):      </dt>
              <dd pn="section-7.2-1.22.1.6">
                <t indent="0" pn="section-7.2-1.22.1.6.1">N/A</t>
              </dd>
            </dl>
          </dd>
          <dt pn="section-7.2-1.23">
Person &amp; email address to contact for further information:  </dt>
          <dd pn="section-7.2-1.24">
            <t indent="0" pn="section-7.2-1.24.1">See Authors' Addresses section.</t>
          </dd>
          <dt pn="section-7.2-1.25">
Intended usage:  </dt>
          <dd pn="section-7.2-1.26">
            <t indent="0" pn="section-7.2-1.26.1">COMMON</t>
          </dd>
          <dt pn="section-7.2-1.27">
Restrictions on usage:  </dt>
          <dd pn="section-7.2-1.28">
            <t indent="0" pn="section-7.2-1.28.1">N/A</t>
          </dd>
          <dt pn="section-7.2-1.29">
Author:  </dt>
          <dd pn="section-7.2-1.30">
            <t indent="0" pn="section-7.2-1.30.1">See Authors' Addresses section.</t>
          </dd>
          <dt pn="section-7.2-1.31">
Change controller:  </dt>
          <dd pn="section-7.2-1.32">
            <t indent="0" pn="section-7.2-1.32.1">Internet Engineering Task Force (iesg@ietf.org)</t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-footprint-type" numbered="true" toc="include" removeInRFC="false" pn="section-7.3">
        <name slugifiedName="name-cdni-metadata-footprint-typ">CDNI Metadata Footprint Types Registry</name>
        <t indent="0" pn="section-7.3-1">This document updates the "CDNI Metadata Footprint Types" registry created by
<xref target="RFC8006" section="7.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8006#section-7.2" derivedContent="RFC8006"/>. A new footprint type, which is listed in
<xref target="tbl_footprint-type" format="default" sectionFormat="of" derivedContent="Table 1"/>, has been registered.</t>
        <table anchor="tbl_footprint-type" align="center" pn="table-1">
          <name slugifiedName="name-cdni-metadata-footprint-type">CDNI Metadata Footprint Type</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Footprint Type</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
              <th align="left" colspan="1" rowspan="1">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">altopid</td>
              <td align="left" colspan="1" rowspan="1">A list of PID names</td>
              <td align="left" colspan="1" rowspan="1">
                RFC 9241, <xref target="cdnifcinetworkmap" format="default" sectionFormat="of" derivedContent="Section 4"/></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="iana-entity-domain-type" numbered="true" toc="include" removeInRFC="false" pn="section-7.4">
        <name slugifiedName="name-alto-entity-domain-types-re">ALTO Entity Domain Types Registry</name>
        <t indent="0" pn="section-7.4-1">This document updates the "ALTO Entity Domain Types" registry created by 
<xref target="RFC9240" section="11.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9240#section-11.2" derivedContent="RFC9240"/>. Two new entity domain types, 
which are listed in <xref target="tbl_entity-domain" format="default" sectionFormat="of" derivedContent="Table 2"/>, have been registered.</t>
        <table anchor="tbl_entity-domain" align="center" pn="table-2">
          <name slugifiedName="name-additional-alto-entity-doma">Additional ALTO Entity Domain Types</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Identifier</th>
              <th align="left" colspan="1" rowspan="1">Entity Identifier Encoding</th>
              <th align="left" colspan="1" rowspan="1">Hierarchy and Inheritance</th>
              <th align="left" colspan="1" rowspan="1">Media Type of Defining Resource</th>
              <th align="left" colspan="1" rowspan="1">Mapping to ALTO Address Type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">asn</td>
              <td align="left" colspan="1" rowspan="1">See RFC 9241, <xref target="asn-entity-id" format="default" sectionFormat="of" derivedContent="Section 6.1.1.2"/></td>
              <td align="left" colspan="1" rowspan="1">None</td>
              <td align="left" colspan="1" rowspan="1">None</td>
              <td align="left" colspan="1" rowspan="1">false</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">countrycode</td>
              <td align="left" colspan="1" rowspan="1">See RFC 9241, <xref target="countrycode-entity-id" format="default" sectionFormat="of" derivedContent="Section 6.1.2.2"/></td>
              <td align="left" colspan="1" rowspan="1">None</td>
              <td align="left" colspan="1" rowspan="1">None</td>
              <td align="left" colspan="1" rowspan="1">false</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="iana-entity-prop-type" numbered="true" toc="include" removeInRFC="false" pn="section-7.5">
        <name slugifiedName="name-alto-entity-property-types-">ALTO Entity Property Types Registry</name>
        <t indent="0" pn="section-7.5-1">This document updates the "ALTO Entity Property Types" registry created by 
<xref target="RFC9240" section="11.3" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9240#section-11.3" derivedContent="RFC9240"/>. A new entity property type,
which is listed in <xref target="tbl_prop-type-register" format="default" sectionFormat="of" derivedContent="Table 3"/>, has been registered.</t>
        <table anchor="tbl_prop-type-register" align="center" pn="table-3">
          <name slugifiedName="name-additional-alto-entity-prop">Additional ALTO Entity Property Type</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Identifier</th>
              <th align="left" colspan="1" rowspan="1">Intended Semantics</th>
              <th align="left" colspan="1" rowspan="1">Media Type of Defining Resource</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">cdni-capabilities</td>
              <td align="left" colspan="1" rowspan="1">
                See RFC 9241, <xref target="capabilitytoproperties" format="default" sectionFormat="of" derivedContent="Section 6.2"/></td>
              <td align="left" colspan="1" rowspan="1">application/alto-cdni+json</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="security" numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-8-1">As an extension of the base ALTO Protocol <xref target="RFC7285" format="default" sectionFormat="of" derivedContent="RFC7285"/>, this document fits into
the architecture of the base protocol, and hence Security Considerations of the
base protocol (<xref target="RFC7285" section="15" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7285#section-15" derivedContent="RFC7285"/>) fully apply when this extension is
provided by an ALTO server.</t>
      <t indent="0" pn="section-8-2">In the context of CDNI Advertisement, the following security risk scenarios
should be considered:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-8-3">
        <li pn="section-8-3.1">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 
<xref target="RFC7285" section="15.1.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7285#section-15.1.2" derivedContent="RFC7285"/> can be applied.</li>
        <li pn="section-8-3.2">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
<xref target="RFC7285" section="15.2.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7285#section-15.2.2" derivedContent="RFC7285"/> can be considered.</li>
        <li pn="section-8-3.3">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 
<xref target="RFC7285" section="15.3" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7285#section-15.3" derivedContent="RFC7285"/> can be considered.</li>
        <li pn="section-8-3.4">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
<xref target="RFC7285" section="15.5.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7285#section-15.5.2" derivedContent="RFC7285"/> can be applied.</li>
      </ul>
      <t indent="0" pn="section-8-4">Although protection strategies as described in <xref target="RFC7285" section="15" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7285#section-15" derivedContent="RFC7285"/> should
be applied to address aforementioned security and privacy considerations,
two special cases need to be included as follows:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-8-5">
        <li pn="section-8-5.1">
          <t indent="0" pn="section-8-5.1.1">As required by <xref target="RFC8008" section="7" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8008#section-7" derivedContent="RFC8008"/>,  </t>
          <blockquote pn="section-8-5.1.2">
All protocols that implement these capabilities and footprint
advertisement objects are <bcp14>REQUIRED</bcp14> to provide integrity and
authentication services.
</blockquote>
          <t indent="0" pn="section-8-5.1.3">
Therefore, the uCDN (ALTO Client)
<bcp14>MUST</bcp14> be authenticated to the dCDN (ALTO Server). And the dCDN (ALTO Server)
<bcp14>MUST</bcp14> support HTTP Digest Authentication <xref target="RFC7616" format="default" sectionFormat="of" derivedContent="RFC7616"/> and <bcp14>MAY</bcp14> also support TLS mutual
authentication <xref target="RFC8446" format="default" sectionFormat="of" derivedContent="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.</t>
        </li>
        <li pn="section-8-5.2">
          <t indent="0" pn="section-8-5.2.1">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.</t>
          <t indent="0" pn="section-8-5.2.2">
To reduce the risk, a dCDN <bcp14>SHOULD</bcp14> 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 <bcp14>SHOULD</bcp14> avoid exposing
all full and/or filtered CDNI Advertisement resources in one of its IRDs.</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-alto-path-vector" to="ALTO-PATH-VECTOR"/>
    <references pn="section-9">
      <name slugifiedName="name-references">References</name>
      <references pn="section-9.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="ISO3166-1" quoteTitle="true" derivedAnchor="ISO3166-1">
          <front>
            <title>Codes for the representation of names of countries and their subdivisions -- Part 1: Country codes</title>
            <author>
              <organization showOnFrontPage="true">International Organization for Standardization</organization>
            </author>
            <date year="2020" month="August"/>
          </front>
          <seriesInfo name="ISO" value="3166-1:2020"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC6793" target="https://www.rfc-editor.org/info/rfc6793" quoteTitle="true" derivedAnchor="RFC6793">
          <front>
            <title>BGP Support for Four-Octet Autonomous System (AS) Number Space</title>
            <author initials="Q." surname="Vohra" fullname="Q. Vohra">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Chen" fullname="E. Chen">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2012" month="December"/>
            <abstract>
              <t indent="0">The Autonomous System number is encoded as a two-octet entity in the base BGP specification.  This document describes extensions to BGP to carry the Autonomous System numbers as four-octet entities.  This document obsoletes RFC 4893 and updates RFC 4271.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6793"/>
          <seriesInfo name="DOI" value="10.17487/RFC6793"/>
        </reference>
        <reference anchor="RFC7285" target="https://www.rfc-editor.org/info/rfc7285" quoteTitle="true" derivedAnchor="RFC7285">
          <front>
            <title>Application-Layer Traffic Optimization (ALTO) Protocol</title>
            <author initials="R." surname="Alimi" fullname="R. Alimi" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Penno" fullname="R. Penno" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="Y." surname="Yang" fullname="Y. Yang" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Kiesel" fullname="S. Kiesel">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Previdi" fullname="S. Previdi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="W." surname="Roome" fullname="W. Roome">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Shalunov" fullname="S. Shalunov">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Woundy" fullname="R. Woundy">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2014" month="September"/>
            <abstract>
              <t indent="0">Applications using the Internet already have access to some topology information of Internet Service Provider (ISP) networks.  For example, views to Internet routing tables at Looking Glass servers are available and can be practically downloaded to many network application clients.  What is missing is knowledge of the underlying network topologies from the point of view of ISPs.  In other words, what an ISP prefers in terms of traffic optimization -- and a way to distribute it.</t>
              <t indent="0">The Application-Layer Traffic Optimization (ALTO) services defined in this document provide network information (e.g., basic network location structure and preferences of network paths) with the goal of modifying network resource consumption patterns while maintaining or improving application performance.  The basic information of ALTO is based on abstract maps of a network.  These maps provide a simplified view, yet enough information about a network for applications to effectively utilize them.  Additional services are built on top of the maps.</t>
              <t indent="0">This document describes a protocol implementing the ALTO services. Although the ALTO services would primarily be provided by ISPs, other entities, such as content service providers, could also provide ALTO services.  Applications that could use the ALTO services are those that have a choice to which end points to connect.  Examples of such applications are peer-to-peer (P2P) and content delivery networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7285"/>
          <seriesInfo name="DOI" value="10.17487/RFC7285"/>
        </reference>
        <reference anchor="RFC7493" target="https://www.rfc-editor.org/info/rfc7493" quoteTitle="true" derivedAnchor="RFC7493">
          <front>
            <title>The I-JSON Message Format</title>
            <author initials="T." surname="Bray" fullname="T. Bray" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="March"/>
            <abstract>
              <t indent="0">I-JSON (short for "Internet JSON") is a restricted profile of JSON designed to maximize interoperability and increase confidence that software can process it successfully with predictable results.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7493"/>
          <seriesInfo name="DOI" value="10.17487/RFC7493"/>
        </reference>
        <reference anchor="RFC7616" target="https://www.rfc-editor.org/info/rfc7616" quoteTitle="true" derivedAnchor="RFC7616">
          <front>
            <title>HTTP Digest Access Authentication</title>
            <author initials="R." surname="Shekh-Yusef" fullname="R. Shekh-Yusef" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Ahrens" fullname="D. Ahrens">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Bremer" fullname="S. Bremer">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="September"/>
            <abstract>
              <t indent="0">The Hypertext Transfer Protocol (HTTP) provides a simple challenge- response authentication mechanism that may be used by a server to challenge a client request and by a client to provide authentication information.  This document defines the HTTP Digest Authentication scheme that can be used with the HTTP authentication mechanism.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7616"/>
          <seriesInfo name="DOI" value="10.17487/RFC7616"/>
        </reference>
        <reference anchor="RFC8006" target="https://www.rfc-editor.org/info/rfc8006" quoteTitle="true" derivedAnchor="RFC8006">
          <front>
            <title>Content Delivery Network Interconnection (CDNI) Metadata</title>
            <author initials="B." surname="Niven-Jenkins" fullname="B. Niven-Jenkins">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Murray" fullname="R. Murray">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Caulfield" fullname="M. Caulfield">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K." surname="Ma" fullname="K. Ma">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="December"/>
            <abstract>
              <t indent="0">The Content Delivery Network Interconnection (CDNI) Metadata interface enables interconnected Content Delivery Networks (CDNs) to exchange content distribution metadata in order to enable content acquisition and delivery.  The CDNI Metadata associated with a piece of content provides a downstream CDN with sufficient information for the downstream CDN to service content requests on behalf of an upstream CDN.  This document describes both a base set of CDNI Metadata and the protocol for exchanging that metadata.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8006"/>
          <seriesInfo name="DOI" value="10.17487/RFC8006"/>
        </reference>
        <reference anchor="RFC8008" target="https://www.rfc-editor.org/info/rfc8008" quoteTitle="true" derivedAnchor="RFC8008">
          <front>
            <title>Content Delivery Network Interconnection (CDNI) Request Routing: Footprint and Capabilities Semantics</title>
            <author initials="J." surname="Seedorf" fullname="J. Seedorf">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Peterson" fullname="J. Peterson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Previdi" fullname="S. Previdi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="van Brandenburg" fullname="R. van Brandenburg">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K." surname="Ma" fullname="K. Ma">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="December"/>
            <abstract>
              <t indent="0">This document captures the semantics of the "Footprint and                          Capabilities Advertisement" part of the Content Delivery Network Interconnection (CDNI) Request Routing interface, i.e., the desired meaning of "Footprint" and "Capabilities" in the CDNI context and what the "Footprint &amp; Capabilities Advertisement interface (FCI)" offers within CDNI.  The document also provides guidelines for the CDNI FCI protocol.  It further defines a Base Advertisement Object, the necessary registries for capabilities and footprints, and guidelines on how these registries can be extended in the future.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8008"/>
          <seriesInfo name="DOI" value="10.17487/RFC8008"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8259" target="https://www.rfc-editor.org/info/rfc8259" quoteTitle="true" derivedAnchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author initials="T." surname="Bray" fullname="T. Bray" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="December"/>
            <abstract>
              <t indent="0">JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format.  It was derived from the ECMAScript Programming Language Standard.  JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t indent="0">This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" quoteTitle="true" derivedAnchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="August"/>
            <abstract>
              <t indent="0">This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t indent="0">This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8895" target="https://www.rfc-editor.org/info/rfc8895" quoteTitle="true" derivedAnchor="RFC8895">
          <front>
            <title>Application-Layer Traffic Optimization (ALTO) Incremental Updates Using Server-Sent Events (SSE)</title>
            <author initials="W." surname="Roome" fullname="W. Roome">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="Y." surname="Yang" fullname="Y. Yang">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2020" month="November"/>
            <abstract>
              <t indent="0">The Application-Layer Traffic Optimization (ALTO) protocol (RFC 7285) provides network-related information, called network information resources, to client applications so that clients can make informed decisions in utilizing network resources. This document presents a mechanism to allow an ALTO server to push updates to ALTO clients to achieve two benefits: (1) updates can be incremental, in that if only a small section of an information resource changes, the ALTO server can send just the changes and (2) updates can be immediate, in that the ALTO server can send updates as soon as they are available.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8895"/>
          <seriesInfo name="DOI" value="10.17487/RFC8895"/>
        </reference>
        <reference anchor="RFC9240" target="https://www.rfc-editor.org/info/rfc9240" quoteTitle="true" derivedAnchor="RFC9240">
          <front>
            <title>An Extension for Application-Layer Traffic Optimization (ALTO): Entity Property Maps</title>
            <author initials="W" surname="Roome" fullname="Wendy Roome">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S" surname="Randriamasy" fullname="Sabine Randriamasy">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="Y" surname="Yang" fullname="Y. Yang">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J" surname="Zhang" fullname="Jingxuan Zhang">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K" surname="Gao" fullname="Kai Gao">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2022" month="July"/>
          </front>
          <seriesInfo name="RFC" value="9240"/>
          <seriesInfo name="DOI" value="10.17487/RFC9240"/>
        </reference>
      </references>
      <references pn="section-9.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="I-D.ietf-alto-path-vector" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-ietf-alto-path-vector-25" derivedAnchor="ALTO-PATH-VECTOR">
          <front>
            <title>An ALTO Extension: Path Vector</title>
            <author fullname="Kai Gao">
              <organization showOnFrontPage="true">Sichuan University</organization>
            </author>
            <author fullname="Young Lee">
              <organization showOnFrontPage="true">Samsung</organization>
            </author>
            <author fullname="Sabine Randriamasy">
              <organization showOnFrontPage="true">Nokia Bell Labs</organization>
            </author>
            <author fullname="Yang Richard Yang">
              <organization showOnFrontPage="true">Yale University</organization>
            </author>
            <author fullname="Jingxuan Jensen Zhang">
              <organization showOnFrontPage="true">Tongji University</organization>
            </author>
            <date month="March" day="20" year="2022"/>
            <abstract>
              <t indent="0">   This document is an extension to the base Application-Layer Traffic
   Optimization (ALTO) protocol.  It extends the ALTO Cost Map and ALTO
   Property Map services so that an application can decide which
   endpoint(s) to connect based on not only numerical/ordinal cost
   values but also fine-grained abstract information of the paths.  This
   is useful for applications whose performance is impacted by specified
   components of a network on the end-to-end paths, e.g., they may infer
   that several paths share common links and prevent traffic bottlenecks
   by avoiding such paths.  This extension introduces a new abstraction
   called Abstract Network Element (ANE) to represent these components
   and encodes a network path as a vector of ANEs.  Thus, it provides a
   more complete but still abstract graph representation of the
   underlying network(s) for informed traffic optimization among
   endpoints.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-alto-path-vector-25"/>
          <format type="TXT" target="https://www.ietf.org/archive/id/draft-ietf-alto-path-vector-25.txt"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="RFC5693" target="https://www.rfc-editor.org/info/rfc5693" quoteTitle="true" derivedAnchor="RFC5693">
          <front>
            <title>Application-Layer Traffic Optimization (ALTO) Problem Statement</title>
            <author initials="J." surname="Seedorf" fullname="J. Seedorf">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Burger" fullname="E. Burger">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2009" month="October"/>
            <abstract>
              <t indent="0">Distributed applications -- such as file sharing, real-time communication, and live and on-demand media streaming -- prevalent on the Internet use a significant amount of network resources.  Such applications often transfer large amounts of data through connections established between nodes distributed across the Internet with little knowledge of the underlying network topology.  Some applications are so designed that they choose a random subset of peers from a larger set with which to exchange data.  Absent any topology information guiding such choices, or acting on suboptimal or local information obtained from measurements and statistics, these applications often make less than desirable choices.</t>
              <t indent="0">This document discusses issues related to an information-sharing service that enables applications to perform better-than-random peer selection.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5693"/>
          <seriesInfo name="DOI" value="10.17487/RFC5693"/>
        </reference>
        <reference anchor="RFC6707" target="https://www.rfc-editor.org/info/rfc6707" quoteTitle="true" derivedAnchor="RFC6707">
          <front>
            <title>Content Distribution Network Interconnection (CDNI) Problem Statement</title>
            <author initials="B." surname="Niven-Jenkins" fullname="B. Niven-Jenkins">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="F." surname="Le Faucheur" fullname="F. Le Faucheur">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="N." surname="Bitar" fullname="N. Bitar">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2012" month="September"/>
            <abstract>
              <t indent="0">Content Delivery Networks (CDNs) provide numerous benefits for cacheable content: reduced delivery cost, improved quality of experience for End Users, and increased robustness of delivery.  For these reasons, they are frequently used for large-scale content delivery.  As a result, existing CDN Providers are scaling up their infrastructure, and many Network Service Providers (NSPs) are deploying their own CDNs.  It is generally desirable that a given content item can be delivered to an End User regardless of that End User's location or attachment network.  This is the motivation for interconnecting standalone CDNs so they can interoperate as an open content delivery infrastructure for the end-to-end delivery of content from Content Service Providers (CSPs) to End Users.  However, no standards or open specifications currently exist to facilitate such CDN Interconnection.</t>
              <t indent="0">The goal of this document is to outline the problem area of CDN Interconnection for the IETF CDNI (CDN Interconnection) working group.  This document is not an Internet Standards Track specification;  it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6707"/>
          <seriesInfo name="DOI" value="10.17487/RFC6707"/>
        </reference>
        <reference anchor="RFC7971" target="https://www.rfc-editor.org/info/rfc7971" quoteTitle="true" derivedAnchor="RFC7971">
          <front>
            <title>Application-Layer Traffic Optimization (ALTO) Deployment Considerations</title>
            <author initials="M." surname="Stiemerling" fullname="M. Stiemerling">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Kiesel" fullname="S. Kiesel">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Scharf" fullname="M. Scharf">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="H." surname="Seidel" fullname="H. Seidel">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Previdi" fullname="S. Previdi">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="October"/>
            <abstract>
              <t indent="0">Many Internet applications are used to access resources such as pieces of information or server processes that are available in several equivalent replicas on different hosts.  This includes, but is not limited to, peer-to-peer file sharing applications.  The goal of Application-Layer Traffic Optimization (ALTO) is to provide guidance to applications that have to select one or several hosts from a set of candidates capable of providing a desired resource. This memo discusses deployment-related issues of ALTO.  It addresses different use cases of ALTO such as peer-to-peer file sharing and Content Delivery Networks (CDNs) and presents corresponding examples. The document also includes recommendations for network administrators and application designers planning to deploy ALTO, such as recommendations on how to generate ALTO map information.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7971"/>
          <seriesInfo name="DOI" value="10.17487/RFC7971"/>
        </reference>
        <reference anchor="RFC7975" target="https://www.rfc-editor.org/info/rfc7975" quoteTitle="true" derivedAnchor="RFC7975">
          <front>
            <title>Request Routing Redirection Interface for Content Delivery Network (CDN) Interconnection</title>
            <author initials="B." surname="Niven-Jenkins" fullname="B. Niven-Jenkins" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="van Brandenburg" fullname="R. van Brandenburg" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="October"/>
            <abstract>
              <t indent="0">The Request Routing interface comprises (1) the asynchronous advertisement of footprint and capabilities by a downstream Content Delivery Network (CDN) that allows an upstream CDN to decide whether to redirect particular user requests to that downstream CDN; and (2) the synchronous operation of an upstream CDN requesting whether a downstream CDN is prepared to accept a user request and of a downstream CDN responding with how to actually redirect the user request.  This document describes an interface for the latter part, i.e., the CDNI Request Routing Redirection interface.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7975"/>
          <seriesInfo name="DOI" value="10.17487/RFC7975"/>
        </reference>
      </references>
    </references>
    <section anchor="ack" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgments">Acknowledgments</name>
      <t indent="0" pn="section-appendix.a-1">The authors thank <contact fullname="Matt Caulfield"/>, <contact fullname="Danny Alex Lachos Perez"/>, 
<contact fullname="Daryl Malas"/>, and
<contact fullname="Sanjay Mishra"/> for their timely reviews and invaluable comments. Big thanks also
to the ALTO WG Chairs (<contact fullname="Qin Wu"/> and <contact fullname="Vijay Gurbani"/>), all the directorate reviewers,
and the IESG reviewers (<contact fullname="Martin Duke"/>, <contact fullname="Erik Kline"/>, 
<contact fullname="Martin Vigoureux"/>, <contact fullname="Murray Kucherawy"/>, 
<contact fullname="Roman Danyliw"/>, <contact fullname="Zaheduzzaman Sarker"/>, 
<contact fullname="Éric Vyncke"/>, and <contact fullname="Francesca Palombini"/>), 
for their thorough reviews, discussions, guidance, and shepherding,
which further improve this document.</t>
      <t indent="0" pn="section-appendix.a-2"><contact fullname="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.</t>
      <t indent="0" pn="section-appendix.a-3">This document has also been supported by the Coordination Support Action
entitled 'Supporting European Experts Presence in International Standardisation
Activities in ICT' (<eref target="https://www.standict.eu/" brackets="angle">StandICT.eu</eref>) 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.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.b">
      <name slugifiedName="name-contributors">Contributors</name>
      <contact initials="X." surname="Lin" fullname="Xiao Shawn Lin">
        <organization showOnFrontPage="true">Huawei</organization>
        <address>
          <postal>
            <street>2222 Newjinqiao Rd</street>
            <city>Shanghai</city>
            <code>200125</code>
            <country>China</country>
          </postal>
          <phone>+86-15316812351</phone>
          <email>x.shawn.lin@gmail.com</email>
        </address>
      </contact>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.c">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="J." surname="Seedorf" fullname="Jan Seedorf">
        <organization abbrev="HFT Stuttgart" showOnFrontPage="true">HFT Stuttgart - Univ. of Applied Sciences</organization>
        <address>
          <postal>
            <street>Schellingstrasse 24</street>
            <city>Stuttgart</city>
            <code>70174</code>
            <country>Germany</country>
          </postal>
          <phone>+49-0711-8926-2801</phone>
          <email>jan.seedorf@hft-stuttgart.de</email>
        </address>
      </author>
      <author initials="Y." surname="Yang" fullname="Y. Richard Yang">
        <organization showOnFrontPage="true">Yale University</organization>
        <address>
          <postal>
            <street>51 Prospect Street</street>
            <city>New Haven</city>
            <region>CT</region>
            <code>06511</code>
            <country>USA</country>
          </postal>
          <phone>+1-203-432-6400</phone>
          <email>yry@cs.yale.edu</email>
          <uri>http://www.cs.yale.edu/~yry/</uri>
        </address>
      </author>
      <author initials="K." surname="Ma" fullname="Kevin J. Ma">
        <organization showOnFrontPage="true">Ericsson</organization>
        <address>
          <postal>
            <street>43 Nagog Park</street>
            <city>Acton</city>
            <region>MA</region>
            <code>01720</code>
            <country>USA</country>
          </postal>
          <phone>+1-978-844-5100</phone>
          <email>kevin.j.ma.ietf@gmail.com</email>
        </address>
      </author>
      <author initials="J." surname="Peterson" fullname="Jon Peterson">
        <organization showOnFrontPage="true">NeuStar</organization>
        <address>
          <postal>
            <street>1800 Sutter St., Suite 570</street>
            <city>Concord</city>
            <region>CA</region>
            <code>94520</code>
            <country>USA</country>
          </postal>
          <email>jon.peterson@neustar.biz</email>
        </address>
      </author>
      <author initials="J." surname="Zhang" fullname="Jingxuan Jensen Zhang">
        <organization showOnFrontPage="true">Tongji University</organization>
        <address>
          <postal>
            <street>4800 Cao'an Hwy</street>
            <city>Shanghai</city>
            <code>201804</code>
            <country>China</country>
          </postal>
          <email>jingxuan.zhang@tongji.edu.cn</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
