<?xml version='1.0' encoding='utf-8'?>
<?xml-model href="rfc7991bis.rnc"?>
<!DOCTYPE rfc [
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC6707 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6707.xml">
<!ENTITY RFC7285 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7285.xml">
<!ENTITY RFC7336 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7336.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8006 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8006.xml">
<!ENTITY RFC8008 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8008.xml">
<!ENTITY RFC8805 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8805.xml">
<!ENTITY RFC9241 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9241.xml">
<!ENTITY RFC9388 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9388.xml">
]>
<rfc category="std" submissionType="IETF" docName="draft-ietf-cdni-named-footprints-02" updates='7336,8006,8008' ipr="trust200902">
   <?rfc strict="yes"?>
   <?rfc compact="yes"?>
   <?rfc subcompact="no"?>
   <?rfc symrefs="yes"?>
   <?rfc sortrefs="yes"?>
   <?rfc tocdepth="4"?>
   <?rfc text-list-symbols="o*+-"?>
   <?rfc toc="yes"?>

<front>
	<title abbrev="Content Delivery Network Interconnection (CDNI) Named Footprints">Content Delivery Network Interconnection (CDNI) Named Footprints</title>
	<author fullname="Alan Arolovitch" initials="A." surname="Arolovitch">
	<organization>Viasat</organization>
	<address>
		<postal>
			<street>1295 Beacon street, Unit 249</street>
			<city>Brookline</city>
			<region>MA</region>
			<code>02446</code> 
			<country>USA</country>
		</postal>
		<email>alan.arolovitch@gmail.com</email>
	</address>
	</author>
	
	<date/>
        <abstract>
        	<t>
		The document specifies an object-based semantics to CDNI footprint advertisement, that enables RESTful implementations of the FCI protocol.
		This approach enables multiple CDNI capabilities within the FCI to share common footprint definitions and allows footprint advertisement to be used in additional CDNI interfaces.
		This document further specifies operational enhancements to the CDNI footprint support.
		</t>

		<t>
		The document specifies an alternative, object-based approach to CDNI footprint advertisement, that enables RESTful implementations of the FCI protocol.
		This approach enables multiple CDNI capabilities within the FCI to share common footprint definitions and allows footprint advertisement to be used in additional CDNI interfaces.
		This document further specifies operational enhancements to the CDNI footprint support.
		</t>
		</abstract>
</front>
<middle>
	<section title="Introduction">
	<t>
		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.
		Through the FCI interface, CDNs advertise their capabilities, optionally scoping them with footprints that are published together with the capabilities.
                RFC 8008 defines the FCI semantics and provides guidelines on the FCI protocol, however the exact FCI protocol is not specified.
	</t>
	<t>
                RFC 9241 defines an implementation of the FCI protocol that uses network topology information encoded in the Application-Layer Traffic Optimization (ALTO) protocol format, as specified in RFC 7285, to describe CDNI footprints.
		It introduces a new "altopid" footprint type, in addition to the CDNI types introduced in RFC8006, enabling shared footprint definitions across CDNI capabilities.
	</t>
	<t>
		The document specifies an alternative, object-based approach to CDNI footprint advertisement, that enables RESTful implementations of the FCI protocol.
		This approach enables multiple CDNI capabilities within the FCI to share common footprint definitions and allows footprint advertisement to be used in additional CDNI interfaces.
		This document further specifies operational enhancements to the CDNI footprint support.
	</t>
	<t>
		The definition of footprint within existing CDNI literature remains ambiguous. Appendix B "Semantics for Footprint Advertisement" of RFC8006 <xref target="RFC8006" format="default" /> reads:
	</t>
	<t>
		Generally speaking, one can imagine two categories of footprints to be advertised by a dCDN:
		<list style="symbols">
		<t>	
			A footprint could be defined based on coverage/reachability, where "coverage/reachability" refers to a set of prefixes, a geographic
			region, or similar boundary.  The dCDN claims that it can cover/reach "end user requests coming from this footprint".
		</t>
		<t>
			A footprint could be defined based on resources, where "resources" refers to Surrogates a dCDN claims to have (e.g., the location of
			Surrogates/resources).  The dCDN claims that "from this footprint" it can serve incoming end user requests.
		</t>
		</list>
	</t>
	<t>
		The use of footprints in the CDN interconnection context revolves around upstream CDN (uCDN) handling an end user request.  Therefore this document is going to focus on the coverage 
		footprints - a collection of end users that dCDN is willing and able to serve while leaving the room for future use of footprints for management of dCDN cache resources. 
		The coverage footprint is defined through end-user IP address (IPv4 and/or IPv6 CIDRs), or attributes that can be derived from this address (BGP autonomous system number, country code, subdivision code).
	</t>
	<t>	
		Several types of CDN footprints may be defined:
		<list style="symbols">
			<t>
			Disaggregated - CDN spanning disparate coverage regions, which lie in different geographies and/or jurisdictions, 
			yet share common management.
			</t> 
			<t>
			Regional - Different coverage regions within contiguous coverage, that have distinct properties, 
			yet users within one region may be served from other CDN regions, for example in case of failure or overload.
			</t> 
			<t>
			Functional - CDN regions with different functional and capacity characteristics, e.g. highly distributed CDN 
			with limited storage capacity at each node.
			</t> 
		</list>
	</t>
	<t>
		Furthermore, dCDN may manage different footprint break-down for various traffic subsets it carries - by CDN tenant, type of traffic, hostname, service identifier, etc.
	</t>
	<t>
		Theses types of footprints represent consistent entities within a CDN, that have distinct operational and/or functional characteristics, 
		In some cases, CDN providers may want to operate CDN footprints as fully autonomous virtual CDNs, with their own configuration, management, and reporting as well as a distinct set of content provider tenants. 
		This capability is especially useful for CDN providers that manage disaggregated CDN footprints across different geographies.	

		Because of that multiplie capabilities advertised by the CDN are likely to be scoped within the same footprint and it is desirable to provide a consistent shared definition of such footprint.
		Additionally, once a dCDN advertises differentiated, footprint-scoped capabilities, it is desirable to allow uCDNs to use differentiated configuraiton and operations, that are scoped in accordance 
		to the capabiities advertised by the dCDN.
	</t>
	<section anchor="Terminology" title="Terminology">
	<t>
		This document reuses the terminology defined in <xref target="RFC6707"/> and uses "uCDN" and "dCDN" as shorthand for "upstream CDN" and "downstream CDN", respectively.
	</t>
   	<t>
      		The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as
      		described in BCP 14 <xref target="RFC2119"></xref><xref target="RFC8174"></xref> when, and only when, they appear in all capitals, as shown here.
	</t>
	</section>
	</section>

	<section anchor="use-cases" title="Use cases">
	<t>
		The following industry use cases have been identified requiring CDNI footprint support:
	</t>
		<section anchor="fci-objects-shared-footprints" title="Footprints shared by multiple FCI objects">
		<t>	
			Multiple FCI capability objects are likely to share footprint definitions. 
			Creating footprint resource definitions outside of individual capability objects, and referring the capability objects to such definition simplifies
			footprint management.
		</t>
		</section>
		<section anchor="multi-interface-footprints" title="Use of footprints in multiple CDNI interfaces">
		<t>
			Once differentiated capabilities are advertised by a dCDN, uCDN MAY want to scope its configuration and cache management operations accordingly.
			For example, when dCDN advertises logging capability object with a footprint scope, uCDN MAY configure logging characteristics differently for that footprint.
			Or in case of redirection mode capability object scoped by footprint, uCDN MAY want to scope CI/T triggers accordingly. 
			In these cases, common footprint definitions that are external to individual CDNI interfaces is required to assure consistency. 
		</t>
		</section>
		<section anchor="dynamic-footprints" title="Dynamic footprints">
		<t>
			Some types of footprints (e.g. distributed last-mile footprint) can be highly dynamic and large in volume. 
			Because of that, they would require high-frequency querying. 
			Because of this, it would be beneficial to allow separate querying and client-side caching of individual footprint resources separately from other, 
			more static footprints and capabilities objects. 
		</t>
		</section>
		<section anchor="complex-footprints" title="Complex footprints">
		<t>
			In some cases, footprints can be complex to define.
			For example, a footprint can include a large entity, e.g. country or autonomous system, but also be inclusive of additional IP ranges that have not been properly classified as belonging to that entity,
			and exclusive of specific IP ranges and/or autonomous systems.
			In this context, an ability to define footprints using an expression language with predicatle logic would be desirable.
		</t>
		</section>
		<section anchor="footprint-hierarchy" title="Footprint hieratchy">
		<t>
			Same CDN can use one or more types of footprints. 
			Thus, a CDN provider can operate across multiple disaggregated regions, e.g. Brazil and US, and then further sub-divide the regions by region and/or functionality.
			In this case it is desirable to scope some CDN capabilities, configuration and operations at the top-level footprint, while others would be scoped at more granular level.
		</t>
		</section>
		<section anchor="footprint-by-type-of-traffic" title="Footprint by type of traffic">
		<t>
			In some cases, dCDN MAY want to advertise different footprints by type of traffic.
			For example, a dCDN may handle live and VOD traffic from the same uCDN differently, even for the same user.
		</t>
		</section>
		<section anchor="footprint-definition-mismatch" title="Footprint definitions mismatch">
		<t>
			Unless explicit IP addressing is used, footprint definitions typically rely on third-party geolocation and IP routing data sources to create higher-level abstractions such as 
			"country" or "subcountrycode." However, these data sources can sometimes be outdated—particularly in access networks that support user mobility across geographic regions, such as satellite or mobile networks.
			To address this, it is desirable to allow the dCDN to publish its own geolocation data for use in uCDN-dCDN interactions, 
			and/or to provide a mechanism for the uCDN and dCDN to agree on the specific data source used to map IP addresses to non-IP-based footprint types.
		</t>
		</section>
	</section>

           
	<section anchor="requirements" title="Requirements">
		<section anchor="footprints-advertisement" title="Footprints Advertisement">
		<t>
			dCDN must advertise its footprints via FCI as named resources, separately from the capabilities advertised in the same interface. 
			dCDN is solely responsible for the footprints it advertises. This footprint advertisement will provide a source of truth as to what footprints are available 
			from dCDN and are referenceable from FCI capabilities and other open caching interfaces exposed by the same dCDN. 
		</t>
		<t>
			uCDNs must authenticate themselves when accessing the footprint advertising, subject to open caching authentication and authorization framework. 
			dCDN is at freedom to advertise different footprints to different uCDN tenants. 
			dCDN may change the content of footprint advertisements, including publishing footprints without any footprint values, however, it is not at liberty to 
			retire a footprint once advertised as long as there are resources associated with it.
		</t>
		<t>
			The footprints advertisement will provide mechanisms allowing uCDN to manage a local cached copy of advertising, and differentiated querying of individual, 
			more dynamic footprints, while at the same time allowing for the whole footprint advertisement to be captured.
			The footprint advertising is to support both "coverage" and "resource" footprints.
		</t>

		</section>
		<section anchor="hierarchy" title="Hierarchy">
		<t>
			The dCDN advertisement must support explicit hierarchy, in which footprints resources may include sub-footprints, e.g. specific subdivision code within a country, 
			list of IPv4 CIDRs within specific ISP defined by one or more ASN etc.  A footprint resource encompasses all of the footprint values and sub-footprints within it, 
			so interface resources (e.g. logging, configuration hostnames, cache management buckets) associated with a footprint apply to all of it, including sub-footprints. 
		</t>
		<t>
			In case of conflict between interface resources of lower-level footprint and higher-level footprint, the resources associated with the lower-level footprint take priority. 
			It is dCDN responsibility to make sure that sub-footprints are indeed included in their parent footprint scope. 
			When matching an IP address against footprint hierarchy, the lowest level footprint takes priority as well. 
		</t>
		</section>
		<section anchor="backward-compatbility" title="Backward compatibility">
		<t>
			The footprint definition must be backward compatible with MI Footprint encoding as specified in Section 4.2.2.2 of <xref target="RFC8006"/>, 
			as well as all registered footprint types "CDNI Metadata Footprint Types" sub-registry in the "Content Delivery Network Interconnection (CDNI) Parameters".
			To enhance computability, consistency and the business logic of footprint advertisement, the specification may introduce new footprint types as well as footprint properties, 
			in addition to footprint type and value. 
		</t>
		</section>
		<section anchor="explicit-logic" title="Explicit Logic">
		<t>
			In some cases, CDNs require complex footprints definitions, that include inclusion and exclusion of specific footprint values from footprint definitions (e.g. country code, 
			exclusive of some ISPs and that country but inclusive of some IPv4 or IPv6 CIDRs that are not included in the current country definition). 
			To support that, footprint definitions to support Metadata Expression Language expressions as defined ino <xref target="cdni-metadata-expression-language"/>
			The new footprint type "expr" is to be introduced to the "CDNI Metadata Footprint Types" registry.
		</t>
		<t>
			To accommodate footprint logic, the following MEL expression variables are hereby introduced
			<list style="symbols">
						<t>	
							ep.asn - Endpoint AS number
						</t>
						<t>	
							ep.ipv4addr - Endpoint IPv4 address
						</t>
						<t>	
							ep.ipv6addr - Endpoint IPv6 address
						</t>
						<t>	
							ep.country - Endpoint country code
						</t>
						<t>	
							ep.subdivision - Endpoint subdivision code
						</t>
					</list>
				</t>
				<t>
					Thus, the following MEL expressions can be used for footprint advertisement:
				</t>
				<figure><artwork>
<![CDATA[
    { 
      "footprint-type": "expr", 
      "footprint-value": [ " ( $ep.country == "us" ) and 
        not $ep.ipv4addr ipmatch ( "10.1.1/24" or "10.1.2.0/24" )" ]
    }

    {
       "footprint-type": "expr", 
       "footprint-value": [ "( $ep.asn = 1234 ) or 
        ( $ep.ipv4addr ipmatch "192.168.1/24" ) or 
        ( $ep.ipv6addr ipmatch "2001:db8:3333:4444/48" )" ]
    }

    {
      "footprint-type": "expr", 
      "footprint-value": [ "( $ep.country == "us" ) and 
         not ( $ep.subdivision=="us-ny" )" ]
    }
]]>
				</artwork></figure>

		
			</section>
			<section anchor="consistent-data source" title="Consistent Datasource">
				<t>
					Footprint types based on IP addresses, such as "ipv4cidr" and "ipv6cidr", are straightforward. 
					However, when using types like "country" or "asn", the uCDN and dCDN must consult external databases to resolve footprint values from IP addresses.
					Multiple databases for IP address intelligence are in use in the industry today, which may be at odds with each other over how to map particular IP addresses. 
					Often the ISP provider operating downstream CDN is the source of authoritative mapping of IP addresses under its management. 
					Thus dCDN should be able to publish IP address mapping information in its network for use by uCDN. 
					When publishing footprint values that rely on 3rd party data sources, dCDN should be able to indicate the origin and specific version of data source(s) used. 
				</t>
			</section>
			<section anchor="footprint-namespaces" title="Footprint Namespaces">
				<t>
					dCDN may utilize different footprint break-down for different uCDN traffic subsets it carries. There are multiple ways that dCDN may identify such traffic, 
					including hostname, type of traffic, service identifiers, etc.
					Additionally, there is a need to accommodate both "resource" and "coverage" footprints. 
				</t>
				<t>
					Footprint namespaces are introduced to allow open and flexible differentiation of footprint breakdowns. 
					This enables a dCDN to advertise multiple breakdowns to the same uCDN tenant, with IP address matching being uniquely scoped within each namespace.
				</t>
			</section>
			<section anchor="footprints-service-identifiers" title="Footprints and Service Identifiers">
				<t>
					A need exists to provide differentiated capabilities by traffic subset, e.g. type of traffic, hostname, service identifiers or combination thereof, which may not be related to
					the "coverage" footprint as defined above.
					It remains to be determined whether this requirement is best met by extending footprints to scope capabilities to specific traffic subsets, 
					or by introducing a new scoping object that defines named traffic classes in a manner analogous to named footprints.
				</t>
			</section>
		</section>
		<section anchor="cdni-metadata-changes" title="Changes to CDNI Metadata">
			<section anchor="cdni-metadata-extra-footprint-types" title="CDNI Metadata Additional Footprint Types">
				<t>
					Section 5 of <xref target="RFC8008" /> describes the FCI Capability Advertisement Object, which
					includes an array of CDNI Footprint Objects. Each such object has a footprint-type and
					a footprint-value, as described in section 4.2.2.2 of <xref target="RFC8006" />.
					This document defines additional footprint types, beyond those mentioned in CDNI metadata
					<xref target="RFC8006" />.
				</t>
				<section anchor="expression-footprint-type" title="Expression Footprint Type">
					<t>
						The "expr" footprint type specified in <xref target="expr-footprint-type-description"/> describes a footprint 
						using CDNI Metadata Expression Language as defined in Section 3 of <xref target="cdni-metadata-expression-language"/>. 
						The data type is added to the list of data types described in section 4.3 of <xref target="RFC8006"/>.
						This data type may supersede the "footprintunion" datatype defined in <xref target="RFC9388"/>
					</t>
					<section anchor="expr-footprint-type-description" title="Expression Footprint Type Description">
						<t>
							The footprint value is a CDNI Metadata Expression Language expression, 
							as defined in Section 3 of <xref target="cdni-metadata-expression-language"/>.
						</t>
						<list style="empty">
							<t>Type: String</t>
							<t>Examples:</t>
							<t>( $ep.country == "us" ) and </t>
							<t>not $ep.ipv4addr ipmatch ( "10.1.1/24" or "10.1.2.0/24" )"</t>
							<t>( $ep.asn = 1234 ) or ( $ep.ipv4addr ipmatch "192.168.1/24" ) or </t>
							<t>( $ep.ipv6addr ipmatch "2001:db8:3333:4444/48" )</t>
						</list>
					</section>
				</section>
				<section anchor="named-footprint-type" title="Named Footprint Type">
					<t>
						The "named" footprint type specified in <xref target="named-footprint-type-description"/> describes an addressable footprint, 
						that can be referenced by CDNI Metadata objects and used in CDNI interfaces using CDNI Metadata Expression Language "<xref target="cdni-metadata-expression-language"/>. 
						The data type is added to the list of data types described in section 4.3 of <xref target="RFC8006"/>.
					</t>
					<section anchor="named-footprint-type-description" title="Named Footprint Type Description">
						<t>
							The footprint value is the URI of the named footprint advertised via the FCI footprint advertised as described in <xref target="fci-advertisement"/>
						</t>
						<list style="empty">
							<t>Type: String</t>
							<t>Example:</t>
							<t>"https://oc.dcdn.com/FCI/footprints/live/us"</t>
						</list>
					</section>
				</section>
			</section>
			<section anchor="cdni-metadata-changes-footprint-types" title="Changes to Existing CDNI Metadata Footprint Types">
				<t>
					As indicated in <xref target="consistent-data source"/>, the resolution of complex footprint datatypes relies on 3rd party data sources and may be ambiguous.
					Furthermore, it should be possible for the dCDN to independently publish its own IP address information.
					Such footprint types include "asn" and "country" defined in Section 4.2.2.2 of <xref target="RFC8006"/>, as well as "subdivisioncode" footprint type, 
					defined in <xref target="RFC9388"/>
				</t>
				<t>
					It is hereby proposed to add an optional attribute "footprint-source" to the footprint object, typed as an array of MI FootprintSource objects, that enumerate 
					all footprint data sources that MUST be used when evaluating whether an IP address belongs to the footprint in question. 
					If no footprint source is provided, any data source can be used for this purpose.
				</t>
			</section>
			<section anchor="new-cdni-metadata-objects" title="Changes to CDNI Metadata">
				<t>
					This section details proposed changes to the CDNI Metadata model, as defined in Section 4 of <xref target="RFC8006"/>.
					The changes are limited to the introduction of new objects and thus backward compatibility with <xref target="RFC8006"/> is preserved
				</t>
				<section anchor="named-footprint" title="MI NamedFootprint">
					<t>
						NamedFootprint is a new GenericMetadata object that defines a named footprint, which can be explicitly referenced by CDNI Metadata objects.
					</t>
					<list style="empty">
						<t>- Property: footprint-def</t>
						<t>Description: Footprint definition</t>
						<t>Type: JSON-encoded MI Footprint object as defined in Section 4.2.2.2 of <xref target="RFC8006"/></t>
						<t>Mandatory: Yes</t>
						<t>- Property: subfootprints</t>
						<t>Description: List of descendant footprints in the footprint hierarchy</t>
						<t>Type: Array of MI NamedFootprint objects as defined in <xref target="named-footprint"/></t>
						<t>Mandatory: No</t>
						<t>- Property: footprint-name</t>
						<t>Description: Footprint name, must be unique in the same footprint namespace</t>
						<t>Type: String</t>
						<t>Mandatory: Yes</t>
						<t>- Property: footprint-uri</t>
						<t>Description: URI pointing to the footprint definition. Can be queried by uCDN separately</t>
						<t>Type: String</t>
						<t>Mandatory: Yes</t>
						<t>- Property: footprint-expires</t>
						<t>Description: Timestamp for footprint definition expiration, should be used for caching and refreshing the footprint definition.</t>
						<t>Type: Date-time</t>
						<t>Mandatory: Yes</t>
					</list>
						
				</section>
				<section anchor="named-footprint-namespace" title="MI NamedFootprintNamespace">
					<t>
						NamedFootprintName is a new GenericMetadata object that defines a namespace containing footprints. 
						Footprints should have a unique name within each namespace.
						dCDN should advertise footprints so that each endpoint resolves unambiguously to a footprint within each namespace.
					</t>
					<list style="empty">
						<t>- Property: footprint-namespace</t>
						<t>Description: Footprint namespace name</t>
						<t>Type: String</t>
						<t>Mandatory: Yes</t>
						<t>- Property: footprint-type</t>
						<t>Description: Definition of footprint type advertised in the namespace as defined in Appendix B of <xref target="RFC8006"/></t>
						<t>Type: One of "coverage" or "resource"</t>
						<t>Mandatory: Yes</t>
						<t>- Property: footprints</t>
						<t>Description: List of root footprints included in the namespace</t>
						<t>Type: Array of MI NamedFootprint objects as defined in <xref target="named-footprint"/></t>
						<t>Mandatory: Yes</t>
					</list>
				</section>
				<section anchor="footprint-source" title="MI FootprintSource">
					<t>
						FootprintSource is a new GenericMetadata object that defines a data source that MUST be used when matching IP addresses with a footprint.
					</t>

					<list style="empty">
						<t>- Property: footprint-source-type</t>
						<t>Description: Type of data source. Can be either "rfc8805" for geolocation feeds published by dCDN in accordance with <xref target="RFC8805"/> 
								or "private" for data source utilizing proprietary data formats and/or APIs </t>
						<t>Type: String</t>
						<t>Mandatory: Yes</t>

						<t>- Property: footprint-source-uri</t>
						<t>Description: Footprint source URI. For "rfc8805" footprint sources should be the self-published feed URI.
							For other footprint sources, the URI should identify the footprint source in a unique way.</t> 
						<t>Type: String</t>
						<t>Mandatory: Yes</t>

						<t>- Property: footprint-source-footprint-type</t>
						<t>Description: Footprint type(s) supported by this footprint source</t>
						<t>Type: Array of Strings, can take values of "country", "asn" or "subdivisioncode"</t>
						<t>Mandatory: Yes</t>
					</list>
					<t>
						The example of a named footprint advertisement is as follows:
						<figure>
							<artwork>
								<![CDATA[

{
	"footprint-source-type": "rfc8805",
	"footprint-source-uri": "http://noc.ietf.org/geo/google.csv"
	"footprint-source-footprint-type": [ "country", "subdivisioncode" ]
}

	
{
	"footprint-source-type": "private",
	"footprint-source-uri": "https://www.maxmind.com",
	"footprint-source-footprint-type": [ "country", "subdivisioncode" ]
}

{
	"footprint-source-type": "private",
	"footprint-source-uri": "https://tools.iplocation.net/ip-to-asn",
	"footprint-source-footprint-type": [ "asn" ]
}									
]]>
							</artwork>
						</figure>
					</t>	
				</section>
			</section>
		</section>
		<section anchor="cdni-operation-changes" title="Changes to CDNI Operation">
			<section anchor="cdni-operation" title="CDNI Operation Overview">
				<t>
					The CDNI framework presumes that uCDN consumes dCDN capabilities with footprint restrictions at the outset of uCDN delegating traffic to dCDN.
					The capabilities discovered in this way are subsequently used for metadata-driven configuration of dCDN and request routing.
					As an option, uCDN and dCDN may refresh the capabilities information via the FCI interface on periodic basis.
					This process is outlined in Section 3 of <xref target="RFC7336"/>.
				</t>
				<t>
					This document proposes the following change to the CDNI operation:
					<list style="numbers">
						<t>
							dCDN advertises the capabilities and footprints via the FCI interface. The footprint advertisement consists of MI NamedFootprint objects, 
							as defined in <xref target="named-footprint"/>, in one or more namespaces.
							The footprint advertisement contains expiration information and URIs  for every named footprint.
							The capabilities advertised may be scoped to the named footprints advertised.
						</t>
						<t>
							uCDN retrieves the dCDN advertised capabilities via FCI.
						</t>
						<t>
							uCDN retrieves and caches the dCDN advertised footprints via FCI.
						</t>
						<t>
							uCDN configures dCDN using CDNI Metadata over MI interface. 
							The metadata may optionally reference the footprints advertised by dCDN.
						</t>
						<t>
							uCDN receives a content request from a user agent.
						</t>
						<t>
							uCDN matches thethe  user agent IP address against the cached copy of footprint advertisement made by the dCDN and makes a decision to delegate the request to the dCDN
						</t>
						<t>
							uCDN redirects the request to the dCDN by sending a response to the user agent (either DNS or HTTP).
						</t>
						<t>
							At any time following the initial retrieval of the footprint advertisement, 
							uCDN may refresh all or part of the cached footprint advertisement, subject to the expiration information provided with every footprint.
						</t>
					</list>
				</t>
				<t>
					The FCI footprint advertisement allows for some footprints to be updated more frequently than others.
					uCDN will be required to query the frequently changing footprint definitions only in case these footprints affect uCDN handling of the user agent requests.
					Thus, it is expected that the dCDN will not advertise high-level footprints with low time-to-live (TTL).
				</t>

			</section>
			<section anchor="fci-advertisement" title="FCI Advertisement">
				<t>
					The example of a named footprint advertisement is as follows:
					<figure>
						<artwork>
							<![CDATA[
[ 
  {
  "footprint-namespace": "default",
  "footprint-type": "coverage",
  "footprints": [{ 
    "footprint-name": "default/us",
    "footprint-expires": "2023-02-09T17:32:28Z",
    "footprint-uri": 
      "https://oc.dcdn.com/FCI/footprints/default/us",
    "footprint-def": { 
      "footprint-type": "asn", 
      "footprint-value": [ "1234:1" ]
    }
    "footprints": [ 
      { 
        "footprint-name": "default:us/us-edge",
        "footprint-expires": "2023-02-09T17:32:28Z",
        "footprint-uri": 
          "https://oc.dcdn.com/FCI/footprints/default/us/us-edge",
        "footprint-def": { 
          "footprint-type": "expr",
	  "footprint-value": [ "$ep.asn = 1234:1 and 
	     ( $ep.ipv4addr ipmatch "192.168.1/24" 
	       or $ep.ipv6addr ipmatch "2001:db8:3333:4444/48" ) "]
        }
       ]
     },
     {
       "footprint-name": "default/brasil",
       "footprint-expires": "2023-02-09T17:32:28Z",
       "footprint-uri": 
       "https://oc.dcdn.com/FCI/footprints/default/brasil",
       "footprint-def": { 
         "footprint-type": "asn",
	"footprint-value": [ "1234:2" ]
        }
      }
    ]
  }, 
  {
    "footprint-namespace": "live",
    "footprint-type": "coverage",
    "footprints": [ 
      { 
        "footprint-name": "live/us",
        "footprint-expires": "2023-02-09T17:32:28Z",
	"footprint-uri": 
	  "https://oc.dcdn.com/FCI/footprints/live/us",
        "footprint-def": { 
	   "footprint-type": "asn", 
	   "footprint-value": [ "1234:1" ]
	   }
      },
      {
         "footprint-name": "live/brasil",
         "footprint-expires": "2023-02-09T17:32:28Z",
	 "footprint-uri": 
	   "https://oc.dcdn.com/FCI/footprints/live/brasil",
	 "footprint-def": { 
	   "footprint-type": "asn",
	   "footprint-value": [ "1234:2" ]
	 }
      }
    ]
  }
]
]]>
						</artwork>
					</figure>
				</t>	
			</section>
			<section anchor="named-footprint-uses" title="Use of Named Footprints">
				<t>
					The named footprints can be used in both FCI and MI footprints in the places where CDNI Metadata objects are scoped by footprint.
					Thus, the MI PrivateFeature object described in Section 2.5.2.1 of <xref target="cdni-metadata-expression-language"/> would use the named footprint advertisement as follows:
					<figure>
						<artwork>
							<![CDATA[
{							
      "generic-metadata-type": "MI.PrivateFeatureList",
      "generic-metadata-value": {
        "feature": {
          "feature-oid": "Broadpeak",
          "feature-type": "S4Streaming",
          "feature-value": {
            "footprint": {
            	"footprint-type": "named",
	    	"footprint-value": [ "https://oc.dcdn.com/FCI/footprints/live/us" ]
	    }
            "activation": "ON",
            "mode": "transparent",
            "policy": "bandwidth-max"
          }
        }
      }
}
]]>
						</artwork>
					</figure>
				</t>

			</section>
		</section>


		<section anchor="IANA" title="IANA Considerations">
			<section anchor="IANA.cdni.metadata.footprint.types" title="CDNI Metadata Footprint Types">
				<t>
					Section 7.2 of <xref target="RFC8006" /> creates
					the "CDNI Metadata Footprint Types" subregistry
					within the "Content Delivery Network Interconnection (CDNI) Parameters" registry.
				</t>
				<t>
					This document requests the registration of the two additional Footprint Types: "expr" and "named"
				</t>
			</section>
		</section>
		<section anchor="Security" title="Security Considerations">
			<t>
				TBD
			</t>
		</section>	

	</middle>
<back>
   <references title="Normative References">
   &RFC2119;
   &RFC8006;
   &RFC8008;
   &RFC8174;
   &RFC9388;
   
   </references>
   <references title="Informative References">
   &RFC6707;
   &RFC7336;
   &RFC8805; 
   	<reference anchor="cdni-metadata-expression-language" target="https://datatracker.ietf.org/doc/draft-power-metadata-expression-language/">
   		<front><title>CDNI Metadata Expression Language</title><author /><date /></front>
   	</reference>
   </references>
</back>
</rfc>
