<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="4"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<rfc category="std" docName="draft-ietf-cdni-named-footprints-01" updates='7336,8006,8008' ipr="trust200902">
	<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>
				Open Caching architecture is a use case of Content Delivery Networks Interconnection (CDNI) in which the
				commercial Content Delivery Network (CDN) is the upstream CDN (uCDN) and the ISP caching layer serves as the
				downstream CDN (dCDN). 
				This document extends the Footprint &amp; Capabilities Advertisement Interface (FCI) defined in RFC8008, to 
				allow advertising of named footprint objects, that can be referenced in a consistent manner from Metadata Interface (MI), 
				also defined in RFC8006, as well as from the FCI itself as well as additional interfaces in the Open Caching architecture.
				This document also supplements the CDNI Metadata Footprint Types defined in RFC8006 and 
				modifies the CDNI operation as described in RFC7336.
			</t>
		</abstract>
	</front>
	<middle>
		<section title="Introduction">
			<t>
				The Streaming Video Technology Alliance <xref target="SVTA" format="default" /> is a global association
				that works to solve streaming video challenges in an effort to improve end-user experience
				and adoption. The Open Caching Working Group <xref target="OCWG" format="default" /> of the
				Streaming Video Technology Alliance <xref target="SVTA" format="default" /> is focused on the delegation
				of video delivery requests from commercial CDNs to a caching layer at the ISP's network.
				Open Caching architecture is a specific use case of CDNI where the commercial CDN is the
				upstream CDN (uCDN) and the ISP caching layer is the downstream CDN (dCDN).
			</t>
			<t>
				For consistency with other CDNI documents this document follows the
				CDNI convention of uCDN (upstream CDN) and dCDN (downstream CDN) to represent the commercial CDN and ISP caching
				layer respectively.
			</t>

			<section anchor="what-is-footprint" title="What is a Footprint">
				<t>
					The definition of footprint within existing CDNi and open caching architecture 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>
					Within the open caching architecture the use of footprints revolves around 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>
			</section>

			<section anchor="types-of-footprint" title="Types of footprint">
				<t>	
					Several types of CDN footprints may be 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>
			</section>

			<section anchor="footprint-support-in-fci-today" title="Footprint support in FCI today">
				<t>
					The Footprint and Capabilities Interface (FCI), as specified in <xref target="RFC8006" /> provides an interface, 
					allowing uCDNs to query dCDN capabilities, published via object-based data model in compliance with <xref target="RFC8006" /> 
					and <xref target="RFC8008" />. 
					The dCDN capabilities objects published by FCI may optionally be associated with one or more footprint, 
					via the "footprints" property, which is an array of MI Footprint objects. 
				</t>
				<t>
					The MI Footprint objects are encoded in compliance with <xref target="RFC8006" /> and contain two properties: 
					"footprint-type" and "footprint-value". 
					They are declarative and are scoped within their parent capability object.
					The footprint types specified in <xref target="RFC8006" /> include IPv4 CIDR block ("ipv4cidr"), IPv6 CIDR block ("ipv6cidr"), 
					BGP autonomous system number ("asn") and country ("countrycode").  
					The footprint value property is an array of one or more footprint values of the same type.
				</t>
				<t>
					According to <xref target="RFC8008" />, combination of multiple footprint types is to be understood as additive or, in other words, 
					as an implicit boolean OR operation. 
				</t>
				<t>
					Neither <xref target="RFC8006"/> nor <xref target="RFC8008"/> provide instruction on how uCDN is to match end user requests with 
					higher-level footprint types like country.
				</t>
			</section>

			<section anchor="motivations" title="Motivations">
				<t>
					A need exists for dCDN to advertise footprints for use across multiple dCDN interfaces in a way that is consistent, 
					flexible and can support complex footprint structure in a computationally efficient way.
					Various motivations for having such capability include: 
				</t>

				<section anchor="interface-level-footprint-awareness" title="Interface-level footprint awareness">
					<t>	
						By creating addressable footprints resources, it becomes possible for all open caching interfaces to associate interface operations and 
						responses with specific footprints, including but not limited to: CDN configuration by footprint, request routing methods by footprint, 
						cache management operations by footprint, logging by footprint, capacity management and monitoring by footprint.
					</t>
				</section>
				<section anchor="cross-interface-consistency" title="Cross-interface consistency">
					<t>
						In several cases use of footprints may affect multiple interfaces. For example, differentiated CDN configuration may trigger 
						logging by footprint or affect footprint-specific cache management operations. 
						In these cases common footprint definition that is external to individual interfaces is required to assure consistency. 
					</t>
				</section>
				<section anchor="cdn-slicing" title="CDN slicing">
					<t>
						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 particularly useful for CDN providers that manage disaggregated CDN footprints across different geographies. 
						In the CDN slicing scenario, the footprints may optionally share some aspects of operation (i.e. have common tenants), 
						while differing in every other aspect, for operational reasons. 
						It is the duty of the uCDN  to consistently use the footprint across different interfaces, once advertised.
					</t>
				</section>
				<section anchor="management-of-complex-footprints" title="Management of complex 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 and benefit from caching support, unlike capabilities advertisement 
						which is relatively static in nature. 
						Because of this, it would be beneficial to allow querying of individual footprint resources separately from capabilities 
						advertisement, which tends to be mostly static. 
					</t>
				</section>
				<section anchor="computational-efficiency" title="Computational efficiency">
					<t>
						Some of the uses of footprint advertisements are tied to uCDN request handling, and should be as computationally efficient as possible. 
					</t>
				</section>

			</section>

			<section anchor="terminology" title="Terminology">
				<t>
					The following terms are used throughout this document:
					<list style="symbols">
						<t>CDN - Content Delivery Network</t>
						<t>CIDR - Classless Internet-Domain Routing</t>
					</list>
				</t>
				<t>
					Additionally, this document reuses the terminology defined in
					<xref target="RFC7337" />,
					<xref target="RFC8006" />, and
					<xref target="RFC8008" />.
					Specifically, we use the following CDNI acronyms:
					<list style="symbols">
						<t>uCDN, dCDN - Upstream CDN and Downstream CDN respectively (see <xref target="RFC7336" />)</t>
					</list>
				</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 be 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="backwards-compatbility" title="Backwards compatibility">
				<t>
					The footprint definition must be backwards 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 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 exressions as defined in Section 3 of <xref target="CDNI-Metadata-Model-Extensions"/>. 
					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-datasource" title="Consistent Datasource">
				<t>
					While IP-based footprint types like "ipv4cidr" and "ipv6cidr" are unambiguous, when using other footprint types like "country" or "asn", uCDN and dCDN need to use external 
					databases to lookup the footprint value using an IP address. 
					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 address. 
					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 datasources, dCDN should be able to indicate the origin and specific version of datasource(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>
					To allow such differentiated break-down in an open way, footprint namespaces are introduced, allowing dCDN to publish more than one footprint break-down 
					advertisement to each uCDN tenant.
					Matching of IP address to footprint is unique within each namespace.
				</t>
			</section>
			<section anchor="footprints-service-identifiers" title="Footprints and Service Identifiers">
				<t>
					Need exists to provide differentiated capabilities by traffic subset, e.g. type of traffic, hostname, service identiers or combination thereof, which may not be related to
					"coverage" footprint as defined above.
					It is to be determined whether this requirement is best addressed by scoping such capabilities in a footprint, which would be extended to refer to traffic subsets, or 
					through a new scoping object that defines named traffic classes in a manner similar 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-Model-Extensions"/>. 
						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-Model-Extensions"/>.
						</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 other CDNI Metadata objects as well as used within CDNI interfaces
						using CDNI Metadata Expression Language "<xref target="CDNI-Metadata-Model-Extensions"/>. 
						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 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-datasource"/>, resolution of complex footprint datatypes, relies on 3rd party datasources and maybe ambiguous.
					Additionally, it should be possible for dCDN to self-publish 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 array of MI FootprintSource objects, that enumerate 
					all footprint datasources that MUST be used when evaluating whether an IP address belongs to the footprint in question. 
					If no footprint source is provided, any datasource 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 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 defined a named footprint that can be explicitly referenced by the 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 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 of 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 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 datasource 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 datasrouce. Can be either "rfc8805" for geolocation feeds published by dCDN in accordance with <xref target="RFC8805"/> 
								or "private" for datasource 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 URI for access of the self-published feed. 
							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 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 capabiities 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 content request from a user agent.
						</t>
						<t>
							uCDN matches user agent IP address against the cached copy of footprint advertisement made by the dCDN and makes 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 require 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 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-Model-Extensions"/> 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">
			<?rfc include="reference.RFC.8006"?>
			<?rfc include="reference.RFC.8008"?>
			<?rfc include="reference.RFC.9388"?>
		</references>

		<references title="Informative References">
			<?rfc include="reference.RFC.7336"?>
			<?rfc include="reference.RFC.7337"?>
			<?rfc include="reference.RFC.8805"?>
			<reference anchor="SVTA" target="https://www.svta.org/">
				<front>
					<title>Streaming Video Technology Alliance Home Page</title>
					<author />
					<date />
				</front>
			</reference>
			<reference anchor="OCWG" target="https://opencaching.svta.org/">
				<front><title>Open Caching Home Page</title><author /><date /></front>
			</reference>
			<reference anchor="CDNI-Metadata-Model-Extensions" target="https://datatracker.ietf.org/doc/html/draft-goldstein-cdni-metadata-model-extensions-02">
				<front><title>CDNI Metadata Model Extensions - Metadata Expression Language</title><author /><date /></front>
			</reference>

		</references>
	</back>
</rfc>
