| rfc9275.original.xml | rfc9275.xml | |||
|---|---|---|---|---|
| <?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <!-- [CS] updated by Chris 06/15/22 --> | ||||
| <!-- [ST] formatted by Sarah 07/06/22 --> | ||||
| <!-- draft submitted in xml v3 --> | ||||
| <!DOCTYPE rfc [ | <!DOCTYPE rfc [ | |||
| <!ENTITY nbsp " "> | <!ENTITY nbsp " "> | |||
| <!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
| <!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
| <!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
| ]> | ]> | |||
| <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | ||||
| <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.6 --> | <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.6 --> | |||
| <?rfc strict="yes"?> | ||||
| <?rfc comments="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | |||
| <?rfc inline="yes"?> | -ietf-alto-path-vector-25" number="9275" submissionType="IETF" category="exp" co | |||
| <?rfc editing="no"?> | nsensus="true" obsoletes="" updates="" xml:lang="en" tocInclude="true" tocDepth= | |||
| <?rfc toc="yes"?> | "3" sortRefs="true" symRefs="true" version="3"> | |||
| <?rfc tocompact="yes"?> | ||||
| <?rfc tocdepth="3"?> | ||||
| <?rfc iprnotified="no"?> | ||||
| <?rfc sortrefs="yes"?> | ||||
| <?rfc symrefs="yes"?> | ||||
| <?rfc compact="yes"?> | ||||
| <?rfc subcompact="no"?> | ||||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | ||||
| -ietf-alto-path-vector-25" category="exp" obsoletes="" updates="" submissionType | ||||
| ="IETF" xml:lang="en" tocInclude="true" tocDepth="3" sortRefs="true" symRefs="tr | ||||
| ue" version="3"> | ||||
| <!-- xml2rfc v2v3 conversion 3.12.0 --> | <!-- xml2rfc v2v3 conversion 3.12.0 --> | |||
| <front> | <front> | |||
| <title abbrev="ALTO-PV">An ALTO Extension: Path Vector</title> | <title abbrev="ALTO-PV">An Extension for Application-Layer Traffic Optimizat | |||
| <seriesInfo name="Internet-Draft" value="draft-ietf-alto-path-vector-25"/> | ion (ALTO): Path Vector</title> | |||
| <seriesInfo name="RFC" value="9275"/> | ||||
| <author initials="K." surname="Gao" fullname="Kai Gao"> | <author initials="K." surname="Gao" fullname="Kai Gao"> | |||
| <organization>Sichuan University</organization> | <organization>Sichuan University</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>No.24 South Section 1, Yihuan Road</street> | <street>No.24 South Section 1, Yihuan Road</street> | |||
| <city>Chengdu</city> | <city>Chengdu</city> | |||
| <code>610000</code> | <code>610000</code> | |||
| <country>China</country> | <country>China</country> | |||
| </postal> | </postal> | |||
| <email>kaigao@scu.edu.cn</email> | <email>kaigao@scu.edu.cn</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="Y." surname="Lee" fullname="Young Lee"> | <author initials="Y." surname="Lee" fullname="Young Lee"> | |||
| <organization>Samsung</organization> | <organization>Samsung</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <country>South Korea</country> | <country>Republic of Korea</country> | |||
| </postal> | </postal> | |||
| <email>younglee.tx@gmail.com</email> | <email>younglee.tx@gmail.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="S." surname="Randriamasy" fullname="Sabine Randriamasy"> | <author initials="S." surname="Randriamasy" fullname="Sabine Randriamasy"> | |||
| <organization>Nokia Bell Labs</organization> | <organization>Nokia Bell Labs</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Route de Villejust</street> | <street>Route de Villejust</street> | |||
| <city>Nozay</city> | <city>Nozay</city> | |||
| <code>91460</code> | <code>91460</code> | |||
| <country>France</country> | <country>France</country> | |||
| </postal> | </postal> | |||
| <email>sabine.randriamasy@nokia-bell-labs.com</email> | <email>sabine.randriamasy@nokia-bell-labs.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="Y.R." surname="Yang" fullname="Yang Richard Yang"> | <author initials="Y." surname="Yang" fullname="Yang Richard Yang"> | |||
| <organization>Yale University</organization> | <organization>Yale University</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>51 Prospect Street</street> | <street>51 Prospect Street</street> | |||
| <city>New Haven</city> | <city>New Haven</city> | |||
| <code>CT</code> | <code>06511</code> | |||
| <country>USA</country> | <region>CT</region> | |||
| <country>United States of America</country> | ||||
| </postal> | </postal> | |||
| <email>yry@cs.yale.edu</email> | <email>yry@cs.yale.edu</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="J." surname="Zhang" fullname="Jingxuan Jensen Zhang"> | <author initials="J." surname="Zhang" fullname="Jingxuan Jensen Zhang"> | |||
| <organization>Tongji University</organization> | <organization>Tongji University</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>4800 Caoan Road</street> | <street>4800 Caoan Road</street> | |||
| <city>Shanghai</city> | <city>Shanghai</city> | |||
| <code>201804</code> | <code>201804</code> | |||
| <country>China</country> | <country>China</country> | |||
| </postal> | </postal> | |||
| <email>jingxuan.n.zhang@gmail.com</email> | <email>jingxuan.n.zhang@gmail.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date/> | ||||
| <area>Application</area> | <date year="2022" month="August" /> | |||
| <workgroup>ALTO</workgroup> | ||||
| <area>tsv</area> | ||||
| <workgroup>alto</workgroup> | ||||
| <keyword>network visibility</keyword> | ||||
| <keyword>abstract network element</keyword> | ||||
| <keyword>shared bottleneck</keyword> | ||||
| <abstract> | <abstract> | |||
| <t>This document is an extension to the base Application-Layer Traffic Opt imization | <t>This document is an extension to the base Application-Layer Traffic Opt imization | |||
| (ALTO) protocol. It extends the ALTO Cost Map and ALTO Property Map services so | (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 | that an application can decide to which endpoint(s) to connect based not only on | |||
| numerical/ordinal cost values but also fine-grained abstract information of the | numerical/ordinal cost values but also on fine-grained abstract information rega | |||
| rding the | ||||
| paths. This is useful for applications whose performance is impacted by | 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 | specific 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 | that several paths share common links and prevent traffic bottlenecks by | |||
| avoiding such paths. This extension introduces a new abstraction called Abstract | avoiding such paths. This extension introduces a new abstraction called the "Abs | |||
| Network Element (ANE) to represent these components and encodes a network path | tract | |||
| 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 | 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 | representation of the underlying network(s) for informed traffic optimization | |||
| among endpoints.</t> | among endpoints.</t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="introduction" numbered="true" toc="default"> | <section anchor="introduction" numbered="true" toc="default"> | |||
| <name>Introduction</name> | <name>Introduction</name> | |||
| <!-- ALTO can improve QoE of overlay applications. --> | <t>Network performance metrics are crucial for assessing the Quality of Experien | |||
| <t>Network performance metrics are crucial to assess the Quality of Experience | ce | |||
| (QoE) of applications. The ALTO protocol allows Internet Service Providers | (QoE) of applications. The Application-Layer Traffic Optimization (ALTO) protoco | |||
| (ISPs) to provide guidance, such as topological distance between different end | l allows Internet Service Providers | |||
| (ISPs) to provide guidance, such as topological distances between different end | ||||
| hosts, to overlay applications. Thus, the overlay applications can potentially | hosts, to overlay applications. Thus, the overlay applications can potentially | |||
| improve the perceived QoE by better orchestrating their traffic to utilize the | improve the perceived QoE by better orchestrating their traffic to utilize the | |||
| resources in the underlying network infrastructure.</t> | resources in the underlying network infrastructure.</t> | |||
| <!-- ALTO supports only cost information of end-to-end paths. --> | <t>The existing ALTO | |||
| <t>Existing ALTO | cost map (<xref target="RFC7285" sectionFormat="of" section= | |||
| Cost Map (Section 11.2.3 of <xref target="RFC7285" format="default"/>) and Endpo | "11.2.3"/>) and Endpoint Cost Service (<xref target="RFC7285" sectionFormat="of" | |||
| int Cost Service (Section 11.5 | section="11.5"/>) provide only cost information for an end-to-end path defined | |||
| of <xref target="RFC7285" format="default"/>) provide only cost information on a | by | |||
| n end-to-end path defined by | its <source, destination> endpoints: the base protocol <xref target="RFC72 | |||
| its <source, destination> endpoints: The base protocol <xref target="RFC72 | 85" format="default"/> allows the | |||
| 85" format="default"/> allows the | ||||
| services to expose the topological distances of end-to-end paths, while various | services to expose the topological distances of end-to-end paths, while various | |||
| extensions have been proposed to extend the capability of these services, e.g., | extensions have been proposed to extend the capability of these services, e.g., | |||
| to express other performance metrics <xref target="I-D.ietf-alto-performance-met | to express other performance metrics <xref target="ALTO-PERF-METRICS" format="de | |||
| rics" format="default"/>, to | fault"/>, to | |||
| query multiple costs simultaneously <xref target="RFC8189" format="default"/>, a | query multiple costs simultaneously <xref target="RFC8189" format="default"/>, a | |||
| nd to obtain the time-varying | nd to obtain time-varying | |||
| values <xref target="RFC8896" format="default"/>.</t> | values <xref target="RFC8896" format="default"/>.</t> | |||
| <!-- However, the QoE also depends on ANEs. --> | <t>While numerical/ordinal cost values for end-to-end paths provided by | |||
| <t>While the existing extensions are sufficient for many overlay applications, | the existing extensions are sufficient to optimize the QoE of many | |||
| the QoE of some overlay applications depends not only on the cost | overlay applications, the QoE of some overlay applications also | |||
| information of end-to-end paths, but also on particular components of a network | depends on the properties of particular components on the paths. For example, jo | |||
| on the paths and their properties. For example, job completion time, which is an | b completion time, which is an | |||
| important QoE metric for a large-scale data analytics application, is impacted | important QoE metric for a large-scale data analytics application, is impacted | |||
| by shared bottleneck links inside the carrier network as link capacity may | by shared bottleneck links inside the carrier network, as link capacity may | |||
| impact the rate of data input/output to the job. We refer to such components of | impact the rate of data input/output to the job. We refer to such components of | |||
| a network as Abstract Network Elements (ANE).</t> | a network as Abstract Network Elements (ANEs).</t> | |||
| <t>Predicting such information can be very complex without the help of ISP | <t>Predicting such information can be very complex without the help of ISP | |||
| s, for | s; for | |||
| example, <xref target="BOXOPT" format="default"/> has shown that finding the opt imal bandwidth reservation for | example, <xref target="BOXOPT" format="default"/> has shown that finding the opt imal bandwidth reservation for | |||
| multiple flows can be NP-hard without further information than whether a | multiple flows can be NP-hard without further information than whether a | |||
| reservation succeeds. With proper guidance from the ISP, an overlay application | reservation succeeds. With proper guidance from the ISP, an overlay application | |||
| may be able to schedule its traffic for better QoE. In the meantime, it may be | may be able to schedule its traffic for better QoE. In the meantime, it may be | |||
| helpful as well for ISPs if applications could avoid using bottlenecks or | helpful as well for ISPs if applications could avoid using bottlenecks or | |||
| challenging the network with poorly scheduled traffic.</t> | challenging the network with poorly scheduled traffic.</t> | |||
| <t>Despite the claimed benefits, ISPs are not likely to expose raw details | <t>Despite the claimed benefits, ISPs are not likely to expose raw details | |||
| on their | on their network paths: first because ISPs have requirements | |||
| network paths: first for the sake of topology hiding requirement, second because | to hide their network topologies, second because these details may | |||
| it may increase volume and computation overhead, and last because applications | increase volume and computation overhead, and last because applications | |||
| do not necessarily need all the network path details and are likely not able to | do not necessarily need all the network path details and are likely not | |||
| understand them.</t> | able to understand them.</t> | |||
| <t>Therefore, it is beneficial for both ISPs and applications if an ALTO s erver | <t>Therefore, it is beneficial for both ISPs and applications if an ALTO s erver | |||
| provides ALTO clients with an "abstract network state" that provides the | provides ALTO clients with an "abstract network state" that provides the | |||
| necessary information to applications, while hiding the network complexity and | necessary information to applications, while hiding network complexity and | |||
| confidential information. An "abstract network state" is a selected set of | confidential information. An "abstract network state" is a selected set of | |||
| abstract representations of Abstract Network Elements traversed by the paths | abstract representations of ANEs traversed by the paths | |||
| between <source, destination> pairs combined with properties of these Abst | between <source, destination> pairs combined with properties of these ANEs | |||
| ract | that are relevant to the overlay applications' QoE. Both an | |||
| Network Elements that are relevant to the overlay applications' QoE. Both an | ||||
| application via its ALTO client and the ISP via the ALTO server can achieve | application via its ALTO client and the ISP via the ALTO server can achieve | |||
| better confidentiality and resource utilization by appropriately abstracting | better confidentiality and resource utilization by appropriately abstracting | |||
| relevant Abstract Network Elements. Server scalability can also be improved by | relevant ANEs. Server scalability can also be improved by | |||
| combining Abstract Network Elements and their properties in a single response.</ | combining ANEs and their properties in a single response.</t> | |||
| t> | <t>This document extends the ALTO base protocol <xref target="RFC7285" for | |||
| <t>This document extends <xref target="RFC7285" format="default"/> to allo | mat="default"/> to allow an ALTO server to convey "abstract | |||
| w an ALTO server to convey "abstract | network state" for paths defined by their <source, destination> pairs. To | |||
| network state", for paths defined by their <source, destination> pairs. To | this | |||
| this | end, it introduces a new cost type called a "Path Vector", following the cost | |||
| end, it introduces a new cost type called "Path Vector" following the cost | ||||
| metric registration specified in <xref target="RFC7285" format="default"/> and t he updated cost mode | metric registration specified in <xref target="RFC7285" format="default"/> and t he updated cost mode | |||
| registration specified in <xref target="I-D.bw-alto-cost-mode" format="default"/ | registration specified in <xref target="RFC9274" format="default"/>. A Path Vect | |||
| >. A Path Vector is an array | or is an array | |||
| of identifiers that identifies an Abstract Network Element, which can be | of identifiers that identifies an ANE, which can be | |||
| associated with various properties. The associations between ANEs and their | associated with various properties. The associations between ANEs and their | |||
| properties are encoded in an ALTO information resource called Unified Property | properties are encoded in an ALTO information resource called the "entity proper | |||
| Map, which is specified in <xref target="I-D.ietf-alto-unified-props-new" format | ty | |||
| ="default"/>.</t> | map", which is specified in <xref target="RFC9240" format="default"/>.</t> | |||
| <t>For better confidentiality, this document aims to minimize information exposure | <t>For better confidentiality, this document aims to minimize information exposure | |||
| of an ALTO server when providing Path Vector service. In particular, this | of an ALTO server when providing Path Vector services. In particular, this | |||
| document enables and recommends that first ANEs are constructed on demand, and | document enables the capability, and also recommends that 1) ANEs be constructed | |||
| second an ANE is only associated with properties that are requested by an ALTO | on demand and | |||
| client. A Path Vector response involves two ALTO Maps: the Cost Map that | 2) an ANE only be associated with properties that are requested by an ALTO | |||
| contains the Path Vector results and the up-to-date Unified Property Map that | client. A Path Vector response involves two ALTO maps: the cost map, which | |||
| contains the Path Vector results; and the up-to-date entity property map, which | ||||
| contains the properties requested for these ANEs. To enforce consistency and | contains the properties requested for these ANEs. To enforce consistency and | |||
| improve server scalability, this document uses the "multipart/related" content | improve server scalability, this document uses the "multipart/related" content | |||
| type defined in <xref target="RFC2387" format="default"/> to return the two maps | type as defined in <xref target="RFC2387" format="default"/> to return the two m | |||
| in a single response.</t> | aps in a single response.</t> | |||
| <t>As a single ISP may not have the knowledge of the full Internet paths b | <t>As a single ISP may not have knowledge of the full Internet paths betwe | |||
| etween | en | |||
| arbitrary endpoints, this document is mainly applicable 1) when there is a | arbitrary endpoints, this document is mainly applicable when</t> | |||
| single ISP between the requested source and destination PIDs or endpoints, for | <ul spacing="normal"> | |||
| example, ISP-hosted CDN/edge, tenant interconnection in a single public cloud | <li>there is a | |||
| platform, etc.; or 2) when the Path Vectors are generated from end-to-end | single ISP between the requested source and destination Provider-defined Identif | |||
| measurement data.</t> | iers (PIDs) or endpoints -- for | |||
| example, ISP-hosted Content Delivery Network (CDN) / edge, tenant interconnectio | ||||
| n in a single public cloud | ||||
| platform, etc., or</li> | ||||
| <li>the Path Vectors are generated from end-to-end | ||||
| measurement data.</li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="requirements-languages" numbered="true" toc="default"> | <section anchor="requirements-languages" numbered="true" toc="default"> | |||
| <name>Requirements Languages</name> | <name>Requirements Language</name> | |||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SH | <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| OULD", | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", | |||
| "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this | "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", | |||
| document are to be interpreted as described in BCP 14 <xref target="RFC2119" for | "<bcp14>SHOULD NOT</bcp14>", | |||
| mat="default"/> <xref target="RFC8174" format="default"/> | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| when, and only when, they appear in all capitals, as shown here.</t> | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document | |||
| <t>When the words appear in lower case, they are to be interpreted with th | are to be interpreted as described in BCP 14 | |||
| eir | <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only | |||
| natural language meanings.</t> | when, they appear in all capitals, as shown here.</t> | |||
| </section> | </section> | |||
| <section anchor="term" numbered="true" toc="default"> | <section anchor="term" numbered="true" toc="default"> | |||
| <name>Terminology</name> | <name>Terminology</name> | |||
| <t>This document extends the ALTO base protocol <xref target="RFC7285" for | <t>This document extends the ALTO base protocol <xref target="RFC7285" for | |||
| mat="default"/> and the Unified | mat="default"/> and the entity | |||
| Property Map extension <xref target="I-D.ietf-alto-unified-props-new" format="de | property map extension <xref target="RFC9240" format="default"/>. In addition to | |||
| fault"/>. In addition to | the terms defined in those documents, this document also uses the following | |||
| the terms defined in these documents, this document also uses the following | terms:</t> | |||
| additional terms:</t> | ||||
| <dl> | <dl> | |||
| <dt> | <dt> | |||
| Abstract Network Element (ANE): </dt> | Abstract Network Element (ANE): </dt> | |||
| <dd> | <dd> | |||
| <t>An abstract representation for a component in a network that handle s data | <t>An abstract representation for a component in a network that handle s data | |||
| packets and whose properties can potentially have an impact on the end-to-end | packets and whose properties can potentially have an impact on the end-to-end | |||
| performance of traffic. An ANE can be a physical device such as a router, a | performance of traffic. An ANE can be a physical device such as a router, a | |||
| link or an interface, or an aggregation of devices such as a subnetwork or a | link, or an interface; or an aggregation of devices such as a subnetwork or a | |||
| data center. | data center. | |||
| </t> | </t> | |||
| <t>The definition of Abstract Network Element is similar to Network El | <t>The definition of an ANE is similar to that for a network element | |||
| ement | as defined in <xref target="RFC2216" format="default"/> in the sense that they b | |||
| defined in <xref target="RFC2216" format="default"/> in the sense that they both | oth provide an abstract | |||
| provide an abstract | ||||
| representation of specific components of a network. However, they have | representation of specific components of a network. However, they have | |||
| different criteria on how these particular components are selected. | different criteria on how these particular components are selected. | |||
| Specifically, a Network Element requires the components to be capable of | Specifically, a network element requires the components to be capable of | |||
| exercising QoS control, while Abstract Network Element only requires the | exercising QoS control, while an ANE only requires the | |||
| components to have an impact on the end-to-end performance.</t> | components to have an impact on end-to-end performance.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| ANE Name: </dt> | ANE name: </dt> | |||
| <dd> | <dd> | |||
| <t>A string that uniquely identifies an ANE in a specific scope. An AN E | <t>A string that uniquely identifies an ANE in a specific scope. An AN E | |||
| can be constructed either statically in advance or on demand based on the | can be constructed either statically in advance or on demand based on the | |||
| requested information. Thus, different ANEs may only be valid within a | requested information. Thus, different ANEs may only be valid within a | |||
| particular scope, either ephemeral or persistent. Within each scope, an ANE is | particular scope, either ephemeral or persistent. Within each scope, an ANE is | |||
| uniquely identified by an ANE Name, as defined in <xref target="ane-name-spec" f ormat="default"/>. Note that | uniquely identified by an ANE name, as defined in <xref target="ane-name-spec" f ormat="default"/>. Note that | |||
| an ALTO client must not assume ANEs in different scopes but with the same ANE | an ALTO client must not assume ANEs in different scopes but with the same ANE | |||
| Name refer to the same component(s) of the network.</t> | name refer to the same component(s) of the network.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Path Vector: </dt> | Path Vector (or ANE Path Vector): </dt> | |||
| <dd> | <dd> | |||
| <t>Path Vector, or ANE Path Vector, refers to a JSON array of ANE Name | <t>Refers to a JSON array of ANE names. It is a | |||
| s. It is a | generalization of a BGP path vector. While a standard BGP path vector (<xref tar | |||
| generalization of BGP path vector. While standard BGP path vector (Section | get="RFC4271" sectionFormat="of" section="5.1.2"/>) specifies a sequence of Auto | |||
| 5.1.2 of <xref target="RFC4271" format="default"/>) specifies a sequence of auto | nomous Systems (ASes) for a | |||
| nomous systems for a | ||||
| destination IP prefix, the Path Vector defined in this extension specifies a | destination IP prefix, the Path Vector defined in this extension specifies a | |||
| sequence of ANEs either for a source Provider-Defined Identifier (PID) and a | sequence of ANEs for either 1) a source PID and a | |||
| destination PID as in the CostMapData (11.2.3.6 in <xref target="RFC7285" format | destination PID, as in the CostMapData object (<xref target="RFC7285" sectionFor | |||
| ="default"/>), or for a | mat="of" section="11.2.3.6"/>) or 2) a | |||
| source endpoint and a destination endpoint as in the EndpointCostMapData | source endpoint and a destination endpoint, as in the EndpointCostMapData | |||
| object (Section 11.5.1.6 of <xref target="RFC7285" format="default"/>).</t> | object (<xref target="RFC7285" sectionFormat="of" section="11.5.1.6"/>).</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Path Vector resource: </dt> | Path Vector resource: </dt> | |||
| <dd> | <dd> | |||
| <t>An ALTO information resource (Section 8.1 of <xref target="RFC7285" format="default"/>) which supports the | <t>An ALTO information resource (<xref target="RFC7285" sectionFormat= "of" section="8.1"/>) that supports the | |||
| extension defined in this document.</t> | extension defined in this document.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Path Vector cost type: </dt> | Path Vector cost type: </dt> | |||
| <dd> | <dd> | |||
| <t>A special cost type, which is specified in <xref target="cost-type- spec" format="default"/>. When this cost | <t>A special cost type, which is specified in <xref target="cost-type- spec" format="default"/>. When this cost | |||
| type is present in an IRD entry, it indicates that the information resource is | type is present in an Information Resource Directory (IRD) entry, it indicates t | |||
| a Path Vector resource. When this cost type is present in a Filtered Cost Map | hat the information resource is | |||
| request or an Endpoint Cost Service request, it indicates each cost value must | a Path Vector resource. When this cost type is present in a filtered cost map | |||
| request or an Endpoint Cost Service request, it indicates that each cost value m | ||||
| ust | ||||
| be interpreted as a Path Vector.</t> | be interpreted as a Path Vector.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Path Vector request: </dt> | Path Vector request: </dt> | |||
| <dd> | <dd> | |||
| <t>The POST message sent to an ALTO Path Vector resource.</t> | <t>The POST message sent to an ALTO Path Vector resource.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Path Vector response: </dt> | Path Vector response: </dt> | |||
| <dd> | <dd> | |||
| <t>A Path Vector response refers to the multipart/related message retu rned by a | <t>Refers to the multipart/related message returned by a | |||
| Path Vector resource.</t> | Path Vector resource.</t> | |||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| </section> | </section> | |||
| <section anchor="probstat" numbered="true" toc="default"> | <section anchor="probstat" numbered="true" toc="default"> | |||
| <name>Requirements and Use Cases</name> | <name>Requirements and Use Cases</name> | |||
| <section anchor="design-requirements" numbered="true" toc="default"> | <section anchor="design-requirements" numbered="true" toc="default"> | |||
| <name>Design Requirements</name> | <name>Design Requirements</name> | |||
| <t>This section gives an illustrative example of how an overlay applicat ion can | <t>This section gives an illustrative example of how an overlay applicat ion can | |||
| benefit from the extension defined in this document.</t> | benefit from the extension defined in this document.</t> | |||
| <t>Assume that an application has control over a set of flows, which may go through | <t>Assume that an application has control over a set of flows, which may go through | |||
| shared links/nodes and share bottlenecks. The application seeks to schedule the | shared links/nodes and share bottlenecks. The application seeks to schedule the | |||
| traffic among multiple flows to get better performance. The constraints of | traffic among multiple flows to get better performance. The constraints of | |||
| feasible rate allocations of those flows will benefit the scheduling. However, | feasible rate allocations of those flows will benefit the scheduling. However, | |||
| Cost Maps as defined in <xref target="RFC7285" format="default"/> can not reveal | cost maps as defined in <xref target="RFC7285" format="default"/> cannot reveal | |||
| such information.</t> | such information.</t> | |||
| <t>Specifically, consider a network as shown in <xref target="fig-dumbbe | <t>Specifically, consider the example network shown in <xref target="fig | |||
| ll" format="default"/>. The network has 7 | -dumbbell" format="default"/>. The network has seven | |||
| switches (sw1 to sw7) forming a dumb-bell topology. Switches "sw1", "sw2", "sw3" | switches ("sw1" to "sw7") forming a dumbbell topology. Switches "sw1", "sw2", "s | |||
| and "sw4" are access switches, and sw5-sw7 form the backbone. End hosts eh1 to | w3", | |||
| eh4 are connected to access switches sw1 to sw4 respectively. Assume that the | and "sw4" are access switches, and "sw5-sw7" form the backbone. End hosts "eh1" | |||
| bandwidth of link eh1 -> sw1 and link sw1 -> sw5 is 150 Mbps, and the band | to | |||
| width | "eh4" are connected to access switches "sw1" to "sw4", respectively. Assume that | |||
| the | ||||
| bandwidth of link "eh1 -> sw1" and link "sw1 -> sw5" is 150 Mbps and the b | ||||
| andwidth | ||||
| of the other links is 100 Mbps.</t> | of the other links is 100 Mbps.</t> | |||
| <figure anchor="fig-dumbbell"> | <figure anchor="fig-dumbbell"> | |||
| <name>Raw Network Topology</name> | <name>Raw Network Topology</name> | |||
| <sourcecode type="drawing"><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| +-----+ | +-----+ | |||
| | | | | | | |||
| --+ sw6 +-- | --+ sw6 +-- | |||
| / | | \ | / | | \ | |||
| PID1 +-----+ / +-----+ \ +-----+ PID2 | PID1 +-----+ / +-----+ \ +-----+ PID2 | |||
| eh1__| |_ / \ ____| |__eh2 | eh1__| |_ / \ ____| |__eh2 | |||
| 192.0.2.2 | sw1 | \ +--|--+ +--|--+ / | sw2 | 192.0.2.3 | 192.0.2.2 | sw1 | \ +--|--+ +--|--+ / | sw2 | 192.0.2.3 | |||
| +-----+ \ | | | |/ +-----+ | +-----+ \ | | | |/ +-----+ | |||
| \_| sw5 +---------+ sw7 | | \_| sw5 +---------+ sw7 | | |||
| PID3 +-----+ / | | | |\ +-----+ PID4 | PID3 +-----+ / | | | |\ +-----+ PID4 | |||
| eh3__| |__/ +-----+ +-----+ \____| |__eh4 | eh3__| |__/ +-----+ +-----+ \____| |__eh4 | |||
| 192.0.2.4 | sw3 | | sw4 | 192.0.2.5 | 192.0.2.4 | sw3 | | sw4 | 192.0.2.5 | |||
| +-----+ +-----+ | +-----+ +-----+ | |||
| bw(eh1--sw1) = bw(sw1--sw5) = 150 Mbps | bw(eh1--sw1) = bw(sw1--sw5) = 150 Mbps | |||
| bw(eh2--sw2) = bw(eh3--sw3) = bw(eh4--sw4) = 100 Mbps | bw(eh2--sw2) = bw(eh3--sw3) = bw(eh4--sw4) = 100 Mbps | |||
| bw(sw1--sw5) = bw(sw3--sw5) = bw(sw2--sw7) = bw(sw4--sw7) = 100 Mbps | bw(sw1--sw5) = bw(sw3--sw5) = bw(sw2--sw7) = bw(sw4--sw7) = 100 Mbps | |||
| bw(sw5--sw6) = bw(sw5--sw7) = bw(sw6--sw7) = 100 Mbps | bw(sw5--sw6) = bw(sw5--sw7) = bw(sw6--sw7) = 100 Mbps | |||
| ]]></sourcecode> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t>The base ALTO topology abstraction of the network is shown in <xref t arget="fig-base" format="default"/>. | <t>The base ALTO topology abstraction of the network is shown in <xref t arget="fig-base" format="default"/>. | |||
| Assume the cost map returns an hypothetical cost type representing the available | Assume that the cost map returns a hypothetical cost type representing the avail | |||
| bandwidth between a source and a destination.</t> | able | |||
| bandwidth between a source and a destination.</t> | ||||
| <figure anchor="fig-base"> | <figure anchor="fig-base"> | |||
| <name>Base Topology Abstraction</name> | <name>Base Topology Abstraction</name> | |||
| <sourcecode type="drawing"><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| +----------------------+ | +----------------------+ | |||
| {eh1} | | {eh2} | {eh1} | | {eh2} | |||
| PID1 | | PID2 | PID1 | | PID2 | |||
| +------+ +------+ | +------+ +------+ | |||
| | | | | | | |||
| | | | | | | |||
| {eh3} | | {eh4} | {eh3} | | {eh4} | |||
| PID3 | | PID4 | PID3 | | PID4 | |||
| +------+ +------+ | +------+ +------+ | |||
| | | | | | | |||
| +----------------------+ | +----------------------+ | |||
| ]]></sourcecode> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t>Now assume the application wants to maximize the total rate of the tr | <t>Now, assume that the application wants to maximize the total rate of | |||
| affic among | the traffic among | |||
| a set of <source, destination> pairs, say "eh1 -> eh2" and "eh1 -> e | a set of <source, destination> pairs -- say, "eh1 -> eh2" and "eh1 -> | |||
| h4". Let "x" | ; eh4". Let "x" | |||
| denote the transmission rate of "eh1 -> eh2" and "y" denote the rate of "eh1 -> | denote the transmission rate of "eh1 -> eh2" and "y" denote the rate of "eh1 -> | |||
| eh4". The objective function is</t> | eh4". The objective function is</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| max(x + y). | max(x + y). | |||
| ]]></artwork> | ]]></artwork> | |||
| <t>With the ALTO Cost Map, the cost between PID1 and PID2 and between PI D1 and PID4 will | <t>With the ALTO cost map, the costs between PID1 and PID2 and between P ID1 and PID4 will | |||
| both be 100 Mbps. The client can get a capacity region of</t> | both be 100 Mbps. The client can get a capacity region of</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| x <= 100 Mbps, | x <= 100 Mbps | |||
| y <= 100 Mbps. | y <= 100 Mbps. | |||
| ]]></artwork> | ]]></artwork> | |||
| <t>With this information, the client may mistakenly think it can achieve a maximum | <t>With this information, the client may mistakenly think it can achieve a maximum | |||
| total rate of 200 Mbps. However, this rate is infeasible, as there are only two | total rate of 200 Mbps. However, this rate is infeasible, as there are only two | |||
| potential cases:</t> | potential cases:</t> | |||
| <ul spacing="normal"> | <dl spacing="normal"> | |||
| <li> | <dt>Case 1:</dt><dd><t>"eh1 -> eh2" and "eh1 -> eh4" take differ | |||
| <t>Case 1: "eh1 -> eh2" and "eh1 -> eh4" take different path s | ent path segments from "sw5" to "sw7". For | |||
| egments from "sw5" to "sw7". For | ||||
| example, if "eh1 -> eh2" uses path "eh1 -> sw1 -> sw5 -> sw6 -> s w7 -> sw2 -> eh2" | example, if "eh1 -> eh2" uses path "eh1 -> sw1 -> sw5 -> sw6 -> s w7 -> sw2 -> eh2" | |||
| and "eh1 -> eh4" uses path "eh1 -> sw1 -> sw5 -> sw7 -> sw4 -> eh4", then the shared | and "eh1 -> eh4" uses path "eh1 -> sw1 -> sw5 -> sw7 -> sw4 -> eh4", then the shared | |||
| bottleneck links are "eh1 -> sw1" and "sw1 -> sw5". In this case, the capa city | bottleneck links are "eh1 -> sw1" and "sw1 -> sw5". In this case, the capa city | |||
| region is: </t> | region is: </t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| x <= 100 Mbps | x <= 100 Mbps | |||
| y <= 100 Mbps | y <= 100 Mbps | |||
| x + y <= 150 Mbps | x + y <= 150 Mbps | |||
| ]]></artwork> | ]]></artwork> | |||
| <t> | <t> | |||
| and the real optimal total rate is 150 Mbps.</t> | and the real optimal total rate is 150 Mbps.</t> | |||
| </li> | </dd> | |||
| <li> | <dt>Case 2:</dt><dd><t>"eh1 -> eh2" and "eh1 -> eh4" take the | |||
| <t>Case 2: "eh1 -> eh2" and "eh1 -> eh4" take the same path se | same path segment from "sw5" to "sw7". | |||
| gment from "sw5" to "sw7". | ||||
| For example, if "eh1 -> eh2" uses path "eh1 -> sw1 -> sw5 -> sw7 -&g t; sw2 -> eh2" | For example, if "eh1 -> eh2" uses path "eh1 -> sw1 -> sw5 -> sw7 -&g t; sw2 -> eh2" | |||
| and "eh1 -> eh4" also uses path "eh1 -> sw1 -> sw5 -> sw7 -> sw4 -> eh4", then the | and "eh1 -> eh4" also uses path "eh1 -> sw1 -> sw5 -> sw7 -> sw4 -> eh4", then the | |||
| shared bottleneck link is "sw5 -> sw7". In this case, the capacity region is: </t> | shared bottleneck link is "sw5 -> sw7". In this case, the capacity region is: </t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| x <= 100 Mbps | x <= 100 Mbps | |||
| y <= 100 Mbps | y <= 100 Mbps | |||
| x + y <= 100 Mbps | x + y <= 100 Mbps | |||
| ]]></artwork> | ]]></artwork> | |||
| <t> | <t> | |||
| and the real optimal total rate is 100 Mbps.</t> | and the real optimal total rate is 100 Mbps.</t> | |||
| </li> | </dd> | |||
| </ul> | </dl> | |||
| <t>Clearly, with more accurate and fine-grained information, the applica tion can | <t>Clearly, with more accurate and fine-grained information, the applica tion can | |||
| gain a better prediction of its traffic and may orchestrate its resources | better predict its traffic and may orchestrate its resources | |||
| accordingly. However, to provide such information, the network needs to expose | accordingly. However, to provide such information, the network needs to expose | |||
| abstract information beyond the simple cost map abstraction. In particular:</t> | abstract information beyond the simple cost map abstraction. In particular:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li>The ALTO server must expose abstract information about the network paths that are | <li>The ALTO server must expose abstract information about the network paths that are | |||
| traversed by the traffic between a source and a destination beyond a simple | traversed by the traffic between a source and a destination beyond a simple | |||
| numerical value, which allows the overlay application to distinguish between | numerical value, which allows the overlay application to distinguish between | |||
| Cases 1 and 2 and to compute the optimal total rate accordingly.</li> | Cases 1 and 2 and to compute the optimal total rate accordingly.</li> | |||
| <li>The ALTO server must allow the client to distinguish the common AN E shared by | <li>The ALTO server must allow the client to distinguish the common AN E shared by | |||
| "eh1 -> eh2" and "eh1 -> eh4", e.g., "eh1 - sw1" and "sw1 - sw5" in Case 1 .</li> | "eh1 -> eh2" and "eh1 -> eh4", e.g., "eh1&nbhy;&nbhy;sw1" and "sw1&nbhy;&n bhy;sw5" in Case 1.</li> | |||
| <li>The ALTO server must expose abstract information on the properties of the | <li>The ALTO server must expose abstract information on the properties of the | |||
| ANEs used by "eh1 -> eh2" and "eh1 -> eh4". For example, an ALTO server ca n | ANEs used by "eh1 -> eh2" and "eh1 -> eh4". For example, an ALTO server ca n | |||
| either expose the available bandwidth between "eh1 - sw1", "sw1 - sw5", "sw5 - | either expose the available bandwidth between "eh1&nbhy;&nbhy;sw1", "sw1&nbhy;&n | |||
| sw7", "sw5 - sw6", "sw6 - sw7", "sw7 - sw2", "sw7 - sw4", "sw2 - eh2", "sw4 - | bhy;sw5", "sw5&nbhy;&nbhy;sw7", "sw5&nbhy;&nbhy;sw6", "sw6&nbhy;&nbhy;sw7", "sw7 | |||
| eh4" in Case 1, or expose 3 abstract elements "A", "B" and "C", which | &nbhy;&nbhy;sw2", "sw7&nbhy;&nbhy;sw4", "sw2&nbhy;&nbhy;eh2", "sw4&nbhy;&nbhy;eh | |||
| 4" in Case 1 or expose three abstract elements "A", "B", and "C", which | ||||
| represent the linear constraints that define the same capacity region in Case | represent the linear constraints that define the same capacity region in Case | |||
| 1.</li> | 1.</li> | |||
| </ul> | </ul> | |||
| <t>In general, we can conclude that to support the multiple flow schedul | <t>In general, we can conclude that to support the use case for multiple | |||
| ing | flow scheduling, the ALTO framework must be extended to satisfy the following | |||
| use case, the ALTO framework must be extended to satisfy the following | additional requirements (ARs):</t> | |||
| additional requirements:</t> | ||||
| <dl> | <dl> | |||
| <dt> | <dt> | |||
| AR1: </dt> | AR1: </dt> | |||
| <dd> | <dd> | |||
| <t>An ALTO server must provide the ANEs that are important to assess the QoE of | <t>An ALTO server must provide the ANEs that are important for asses sing the QoE of | |||
| the overlay application on the path of a <source, destination> pair.</t> | the overlay application on the path of a <source, destination> pair.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| AR2: </dt> | AR2: </dt> | |||
| <dd> | <dd> | |||
| <t>An ALTO server must provide information to identify how ANEs are shared on the | <t>An ALTO server must provide information to identify how ANEs are shared on the | |||
| paths of different <source, destination> pairs.</t> | paths of different <source, destination> pairs.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| AR3: </dt> | AR3: </dt> | |||
| <dd> | <dd> | |||
| <t>An ALTO server must provide information on the properties that ar e important | <t>An ALTO server must provide information on the properties that ar e important | |||
| to assess the QoE of the application for ANEs.</t> | for assessing the QoE of the application for ANEs.</t> | |||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| <t>The extension defined in this document specifies a solution to expose such | <t>The extension defined in this document specifies a solution to expose such | |||
| abstract information.</t> | abstract information.</t> | |||
| </section> | </section> | |||
| <section anchor="sample-use-cases" numbered="true" toc="default"> | <section anchor="sample-use-cases" numbered="true" toc="default"> | |||
| <name>Sample Use Cases</name> | <name>Sample Use Cases</name> | |||
| <t>While the multiple flow scheduling problem is used to help identify t he | <t>While the problem related to multiple flow scheduling is used to help identify the | |||
| additional requirements, the extension defined in this document can be applied | additional requirements, the extension defined in this document can be applied | |||
| to a wide range of applications. This section highlights some use cases that are | to a wide range of applications. This section highlights some of the reported us | |||
| reported.</t> | e cases.</t> | |||
| <section anchor="exposing-network-bottlenecks" numbered="true" toc="defa ult"> | <section anchor="exposing-network-bottlenecks" numbered="true" toc="defa ult"> | |||
| <name>Exposing Network Bottlenecks</name> | <name>Exposing Network Bottlenecks</name> | |||
| <t>An important use case of the Path Vector extension is to expose net | <t>One important use case for the Path Vector extension is to expose n | |||
| work | etwork | |||
| bottlenecks. Applications which need to perform large scale data transfers can | bottlenecks. Applications that need to perform large-scale data transfers can | |||
| benefit from being aware of the resource constraints exposed by this extension | benefit from being aware of the resource constraints exposed by this extension | |||
| even if they have different objectives. One such example is the Worldwide LHC | even if they have different objectives. One such example is the Worldwide LHC | |||
| Computing Grid (WLCG), the largest example of a distributed computation | Computing Grid (WLCG) (where "LHC" means "Large Hadron Collider"), which is the largest example of a distributed computation | |||
| collaboration in the research and education world.</t> | collaboration in the research and education world.</t> | |||
| <t><xref target="fig-da" format="default"/> illustrates an example of using ALTO Path Vector as an interface | <t><xref target="fig-da" format="default"/> illustrates an example of using an ALTO Path Vector as an interface | |||
| between the job optimizer for a data analytics system and the network manager. | between the job optimizer for a data analytics system and the network manager. | |||
| In particular, we assume the objective of the job optimizer is to minimize the | In particular, we assume that the objective of the job optimizer is to minimize the | |||
| job completion time.</t> | job completion time.</t> | |||
| <t>In such a setting, the network-aware job optimizer (e.g., <xref tar get="CLARINET" format="default"/>) takes a | <t>In such a setting, the network-aware job optimizer (e.g., <xref tar get="CLARINET" format="default"/>) takes a | |||
| query and generates multiple query execution plans (QEP). It can encode the QEPs | query and generates multiple query execution plans (QEPs). It can encode the QEP | |||
| as Path Vector requests that are send to an ALTO server. The ALTO server obtains | s | |||
| as Path Vector requests that are sent to an ALTO server. The ALTO server obtains | ||||
| the routing information for the flows in a QEP and finds links, routers, or | the routing information for the flows in a QEP and finds links, routers, or | |||
| middleboxes (e.g., a stateful firewall) that can potentially become bottlenecks | middleboxes (e.g., a stateful firewall) that can potentially become bottlenecks | |||
| of the QEP (e.g., see <xref target="NOVA" format="default"/> and <xref target="G 2" format="default"/> for mechanisms to identify bottleneck | for the QEP (e.g., see <xref target="NOVA" format="default"/> and <xref target=" G2" format="default"/> for mechanisms to identify bottleneck | |||
| links under different settings). The resource constraint information is encoded | links under different settings). The resource constraint information is encoded | |||
| in a Path Vector response and returned to the ALTO client.</t> | in a Path Vector response and returned to the ALTO client.</t> | |||
| <t>With the network resource constraints, the job optimizer may choose the QEP with | <t>With the network resource constraints, the job optimizer may choose the QEP with | |||
| the optimal job completion time to be executed. It must be noted that the ALTO | the optimal job completion time to be executed. It must be noted that the ALTO | |||
| framework itself does not offer the capability to control the traffic. However, | framework itself does not offer the capability to control the traffic. However, | |||
| certain network managers may offer ways to enforce resource guarantees, such as | certain network managers may offer ways to enforce resource guarantees, such as | |||
| on-demand tunnels (e.g., <xref target="SWAN" format="default"/>), demand vector | on-demand tunnels (e.g., <xref target="SWAN" format="default"/>), demand vectors | |||
| (e.g., <xref target="HUG" format="default"/>, <xref target="UNICORN" format="def | (e.g., <xref target="HUG" format="default"/>, <xref target="UNICORN" format="de | |||
| ault"/>), | fault"/>), | |||
| etc. The traffic control interfaces and mechanisms are out of the scope of this | etc. The traffic control interfaces and mechanisms are out of scope for this | |||
| document.</t> | document.</t> | |||
| <figure anchor="fig-da"> | <figure anchor="fig-da"> | |||
| <name>Example Use Case for Data Analytics</name> | <name>Example Use Case for Data Analytics</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| Data schema Queries | Data schema Queries | |||
| | | | | | | |||
| \ / | \ / | |||
| +-------------+ +-----------------+ | +-------------+ +-----------------+ | |||
| | ALTO Client | <===============> | Job Optimizer | | | ALTO Client | <===============> | Job Optimizer | | |||
| +-------------+ +-----------------+ | +-------------+ +-----------------+ | |||
| PV | ^ PV | | PV | ^ PV | | |||
| Request | | Response | | Request | | Response | | |||
| | | On-demand resource | | | | On-demand resource | | |||
| (Data | | (Network allocation, demand | | (Potential | | (Network allocation, demand | | |||
| Transfer | | Resource vector, etc. | | Data | | Resource vectors, etc. | | |||
| Intents) | | Constraints) (Non-ALTO interfaces)| | Transfers) | | Constraints) (Non-ALTO interfaces)| | |||
| v | v | v | v | |||
| +-------------+ +-----------------+ | +-------------+ +-----------------+ | |||
| | ALTO Server | <===============> | Network Manager | | | ALTO Server | <===============> | Network Manager | | |||
| +-------------+ +-----------------+ | +-------------+ +-----------------+ | |||
| / | \ | / | \ | |||
| | | | | | | | | |||
| WAN DC1 DC2 | WAN DC1 DC2 | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t>Another example is as illustrated in <xref target="fig-dts" format= "default"/>. Consider a network consisting | <t>Another example is illustrated in <xref target="fig-dts" format="de fault"/>. Consider a network consisting | |||
| of multiple sites and a non-blocking core network, i.e., the links in the core | of multiple sites and a non-blocking core network, i.e., the links in the core | |||
| network have sufficient bandwidth that they will not become the bottleneck of | network have sufficient bandwidth that they will not become a bottleneck for | |||
| the data transfers.</t> | the data transfers.</t> | |||
| <figure anchor="fig-dts"> | <figure anchor="fig-dts"> | |||
| <name>Example Use Case for Cross-site Bottleneck Discovery</name> | <name>Example Use Case for Cross-Site Bottleneck Discovery</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| On-going transfers New transfer requests | Ongoing transfers New transfer requests | |||
| \----\ | | \----\ | | |||
| | | | | | | |||
| v v | v v | |||
| +-------------+ +---------------+ | +-------------+ +---------------+ | |||
| | ALTO Client | <===========> | Data Transfer | | | ALTO Client | <===========> | Data Transfer | | |||
| +-------------+ | Scheduler | | +-------------+ | Scheduler | | |||
| ^ | ^ | PV request +---------------+ | ^ | ^ | PV Request +---------------+ | |||
| | | | \--------------\ | | | | \--------------\ | |||
| | | \--------------\ | | | | \--------------\ | | |||
| | v PV response | v | | v PV Response | v | |||
| +-------------+ +-------------+ | +-------------+ +-------------+ | |||
| | ALTO Server | | ALTO Server | | | ALTO Server | | ALTO Server | | |||
| +-------------+ +-------------+ | +-------------+ +-------------+ | |||
| || || | || || | |||
| +---------+ +---------+ | +---------+ +---------+ | |||
| | Network | | Network | | | Network | | Network | | |||
| | Manager | | Manager | | | Manager | | Manager | | |||
| +---------+ +---------+ | +---------+ +---------+ | |||
| . . | . . | |||
| . _~_ __ . . . | . _~_ __ . . . | |||
| . ( )( ) .___ | . ( )( ) .___ | |||
| ~v~v~ /--( )------------( ) | ~v~v~ /--( )------------( ) | |||
| ( )-----/ ( ) ( ) | ( )-----/ ( ) ( ) | |||
| ~w~w~ ~^~^~^~ ~v~v~ | ~w~w~ ~^~^~^~ ~v~v~ | |||
| Site 1 Non-blocking Core Site 2 | Site 1 Non-blocking Core Site 2 | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t>With the Path Vector extension, a site can reveal the bottlenecks i | ||||
| nside its own | ||||
| network with necessary information (such as link capacities) to the ALTO client, | ||||
| instead of providing the full topology and routing information, or no bottleneck | ||||
| information at all. The bottleneck information can be used to analyze the impact | ||||
| of adding/removing data transfer flows, e.g., using the framework defined in <xr | ||||
| ef target="G2" format="default"/>. For | ||||
| example, assume that hosts "a", "b", and "c" are in Site 1 and hosts "d", "e", a | ||||
| nd "f" are in | ||||
| Site 2, and there are three flows in two sites: "a -> b", "c -> d", and "e | ||||
| -> f" (<xref target="fig-sbot"/>).</t> | ||||
| <figure anchor="fig-sbot"> | <figure anchor="fig-sbot"> | |||
| <name>Example: Three Flows in Two Sites</name> | <name>Example: Three Flows in Two Sites</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| Site 1: | Site 1: | |||
| [c] | [c] | |||
| . | . | |||
| ........................................> [d] | ........................................> [d] | |||
| +---+ 10 Gbps +---+ 10 Gbps +----+ 50 Gbps | +---+ 10 Gbps +---+ 10 Gbps +----+ 50 Gbps | |||
| | A |---------| B |---------| GW |--------- Core | | A |---------| B |---------| GW |--------- Core | |||
| skipping to change at line 532 ¶ | skipping to change at line 543 ¶ | |||
| [d] <........................................ [c] | [d] <........................................ [c] | |||
| +---+ 5 Gbps +---+ 10 Gbps +----+ 20 Gbps | +---+ 5 Gbps +---+ 10 Gbps +----+ 20 Gbps | |||
| | X |--------| Y |---------| GW |--------- Core | | X |--------| Y |---------| GW |--------- Core | |||
| +---+ +---+ +----+ | +---+ +---+ +----+ | |||
| .................... | .................... | |||
| . . | . . | |||
| . v | . v | |||
| [e] [f] | [e] [f] | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t>With the Path Vector extension, a site can reveal the bottlenecks i | <t>For | |||
| nside its own | these flows, Site 1 returns:</t> | |||
| network with necessary information (such as link capacities) to the ALTO client, | ||||
| instead of providing the full topology and routing information, or no bottleneck | <sourcecode name="" type=""><![CDATA[ | |||
| information at all. The bottleneck information can be used to analyze the impact | ||||
| of adding/removing data transfer flows, e.g., using the <xref target="G2" format | ||||
| ="default"/> framework. For | ||||
| example, assume hosts "a", "b", "c" are in site 1 and hosts "d", "e", "f" are in | ||||
| site 2, and there are 3 flows in two sites: "a -> b", "c -> d", "e -> f | ||||
| ". For | ||||
| these flows, site 1 returns:</t> | ||||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| a: { b: [ane1] }, | a: { b: [ane1] }, | |||
| c: { d: [ane1, ane2, ane3] } | c: { d: [ane1, ane2, ane3] } | |||
| ane1: bw = 10 Gbps (link: A->B) | ane1: bw = 10 Gbps (link: A->B) | |||
| ane2: bw = 10 Gbps (link: B->GW) | ane2: bw = 10 Gbps (link: B->GW) | |||
| ane3: bw = 50 Gbps (link: GW->Core) | ane3: bw = 50 Gbps (link: GW->Core) | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t>and site 2 returns:</t> | <t>and Site 2 returns:</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type=""><![CDATA[ | |||
| c: { d: [anei, aneii, aneiii] } | c: { d: [anei, aneii, aneiii] } | |||
| e: { f: [aneiv] } | e: { f: [aneiv] } | |||
| anei: bw = 5 Gbps (link Y->X) | anei: bw = 5 Gbps (link Y->X) | |||
| aneii: bw = 10 Gbps (link GW->Y) | aneii: bw = 10 Gbps (link GW->Y) | |||
| aneiii: bw = 20 Gbps (link Core->GW) | aneiii: bw = 20 Gbps (link Core->GW) | |||
| aneiv: bw = 10 Gbps (link Y->GW) | aneiv: bw = 10 Gbps (link Y->GW) | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t>With the information, the data transfer scheduler can use algorithm | <t>With this information, the data transfer scheduler can use algorith | |||
| s such as the | ms such as the | |||
| theory on bottleneck structure <xref target="G2" format="default"/> to predict t he potential throughput of the | theory on bottleneck structure <xref target="G2" format="default"/> to predict t he potential throughput of the | |||
| flows.</t> | flows.</t> | |||
| </section> | </section> | |||
| <section anchor="resource-exposure-for-cdn-and-service-edge" numbered="t rue" toc="default"> | <section anchor="resource-exposure-for-cdn-and-service-edge" numbered="t rue" toc="default"> | |||
| <name>Resource Exposure for CDN and Service Edge</name> | <name>Resource Exposure for CDNs and Service Edges</name> | |||
| <t>A growing trend in today's applications (2021) is to bring storage | <t>At the time of this writing, a growing trend in today's application | |||
| and computation | s is to bring storage and computation | |||
| closer to the end users for better QoE, such as Content Delivery Network (CDN), | closer to the end users for better QoE, such as CDNs, | |||
| AR/VR, and cloud gaming, as reported in various documents (e.g., <xref target="S | augmented reality / virtual reality, and cloud gaming, as reported in various do | |||
| EREDGE" format="default"/> and | cuments (e.g., <xref target="SEREDGE" format="default"/> and | |||
| <xref target="MOWIE" format="default"/>). Internet Service Providers may deploy | <xref target="MOWIE" format="default"/>). ISPs may deploy multiple layers of CDN | |||
| multiple layers of CDN caches, | caches | |||
| or more generally service edges, with different latency and available resources | or, more generally, service edges, with different latencies and available resour | |||
| including number of CPU cores, memory, and storage.</t> | ces, | |||
| including the number of CPU cores, memory, and storage.</t> | ||||
| <t>For example, <xref target="fig-se" format="default"/> illustrates a typical edge-cloud scenario where memory | <t>For example, <xref target="fig-se" format="default"/> illustrates a typical edge-cloud scenario where memory | |||
| is measured in Gigabytes (G) and storage is measured in Terabytes (T). The | is measured in gigabytes (GB) and storage is measured in terabytes (TB). The | |||
| "on-premise" edge nodes are closest to the end hosts and have the smallest | "on-premise" edge nodes are closest to the end hosts and have the lowest | |||
| latency, and the site-radio edge node and access central office (CO) have larger | latency, and the site-radio edge node and access central office (CO) have higher | |||
| latency but more available resources.</t> | latencies but more available resources.</t> | |||
| <figure anchor="fig-se"> | <figure anchor="fig-se"> | |||
| <name>Example Use Case for Service Edge Exposure</name> | <name>Example Use Case for Service Edge Exposure</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| +-------------+ +----------------------+ | +-------------+ +----------------------+ | |||
| | ALTO Client | <==========> | Application Provider | | | ALTO Client | <==========> | Application Provider | | |||
| +-------------+ +----------------------+ | +-------------+ +----------------------+ | |||
| PV | ^ PV | | PV | ^ PV | | |||
| Request | | Response | Resource allocation, | Request | | Response | Resource allocation, | |||
| | | | service establishment, | | | | service establishment, | |||
| (End hosts | | (Edge nodes | etc. | (End hosts | | (Edge nodes | etc. | |||
| skipping to change at line 614 ¶ | skipping to change at line 620 ¶ | |||
| | / | | / | |||
| Site-radio /_\ / | Site-radio /_\ / | |||
| Edge Node 2(/\_/\)-----/ | Edge Node 2(/\_/\)-----/ | |||
| /(_____)\ | /(_____)\ | |||
| ___ / \ --- | ___ / \ --- | |||
| b--|_| -/ \--|_|--c | b--|_| -/ \--|_|--c | |||
| /---\ /---\ | /---\ /---\ | |||
| On premise On premise | On premise On premise | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t>With the extension defined in this document, an ALTO server can sel | ||||
| ectively | ||||
| reveal the CDNs and service edges that reside along the paths between different | ||||
| end hosts and/or the cloud servers, together with their properties | ||||
| (e.g., storage capabilities or Graphics Processing Unit (GPU) capabilities) and | ||||
| available Service Level Agreement (SLA) | ||||
| plans. See <xref target="fig-se-example" format="default"/> for an example where | ||||
| the query is made for sources | ||||
| [a, b] and destinations [b, c, DC]. Here, each ANE represents a service edge, an | ||||
| d | ||||
| the properties include access latency, available resources, etc. Note that the | ||||
| properties here are only used for illustration purposes and are not part of this | ||||
| extension.</t> | ||||
| <figure anchor="fig-se-example"> | <figure anchor="fig-se-example"> | |||
| <name>Example Service Edge Query Results</name> | <name>Example Service Edge Query Results</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type=""><![CDATA[ | |||
| a: { b: [ane1, ane2, ane3, ane4, ane5], | a: { b: [ane1, ane2, ane3, ane4, ane5], | |||
| c: [ane1, ane2, ane3, ane4, ane6], | c: [ane1, ane2, ane3, ane4, ane6], | |||
| DC: [ane1, ane2, ane3] } | DC: [ane1, ane2, ane3] } | |||
| b: { c: [ane5, ane4, ane6], DC: [ane5, ane4, ane3] } | b: { c: [ane5, ane4, ane6], DC: [ane5, ane4, ane3] } | |||
| ane1: latency=5ms cpu=2 memory=8G storage=10T | ane1: latency = 5 ms cpu = 2 memory = 8 GB storage = 10 TB | |||
| (on premise, a) | (On premise, a) | |||
| ane2: latency=20ms cpu=4 memory=8G storage=10T | ane2: latency = 20 ms cpu = 4 memory = 8 GB storage = 10 TB | |||
| (Site-radio Edge Node 1) | (Site-radio Edge Node 1) | |||
| ane3: latency=100ms cpu=8 memory=128G storage=100T | ane3: latency = 100 ms cpu = 8 memory = 128 GB storage = 100 TB | |||
| (Access CO) | (Access CO) | |||
| ane4: latency=20ms cpu=4 memory=8G storage=10T | ane4: latency = 20 ms cpu = 4 memory = 8 GB storage = 10 TB | |||
| (Site-radio Edge Node 2) | (Site-radio Edge Node 2) | |||
| ane5: latency=5ms cpu=2 memory=8G storage=10T | ane5: latency = 5 ms cpu = 2 memory = 8 GB storage = 10 TB | |||
| (on premise, b) | (On premise, b) | |||
| ane6: latency=5ms cpu=2 memory=8G storage=10T | ane6: latency = 5 ms cpu = 2 memory = 8 GB storage = 10 TB | |||
| (on premise, c) | (On premise, c) | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </figure> | |||
| <t>With the extension defined in this document, an ALTO server can sel | ||||
| ectively | ||||
| reveal the CDNs and service edges that reside along the paths between different | ||||
| end hosts and/or the cloud servers, together with their properties such as | ||||
| capabilities (e.g., storage, GPU) and available Service Level Agreement (SLA) | ||||
| plans. See <xref target="fig-se-example" format="default"/> for an example where | ||||
| the query is made for sources | ||||
| [a, b] and destinations [b, c, DC]. Here each ANE represents a service edge and | ||||
| the properties include access latency, available resources, etc. Note the | ||||
| properties here are only used for illustration purposes and are not part of this | ||||
| extension.</t> | ||||
| <t>With the service edge information, an ALTO client may better conduc t CDN request | <t>With the service edge information, an ALTO client may better conduc t CDN request | |||
| routing or offload functionalities from the user equipment to the service edge, | routing or offload functionalities from the user equipment to the service edge, | |||
| with considerations on customized quality of experience.</t> | with considerations in place for customized quality of experience.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="Overview" numbered="true" toc="default"> | <section anchor="Overview" numbered="true" toc="default"> | |||
| <name>Path Vector Extension: Overview</name> | <name>Path Vector Extension: Overview</name> | |||
| <t>This section provides a non-normative overview of the Path Vector exten sion | <t>This section provides a non-normative overview of the Path Vector exten sion | |||
| defined in this document. It is assumed that the readers are familiar with both | defined in this document. It is assumed that readers are familiar with both | |||
| the base protocol <xref target="RFC7285" format="default"/> and the Unified Prop | the base protocol <xref target="RFC7285" format="default"/> and the entity prope | |||
| erty Map extension | rty map extension | |||
| <xref target="I-D.ietf-alto-unified-props-new" format="default"/>.</t> | <xref target="RFC9240" format="default"/>.</t> | |||
| <t>To satisfy the additional requirements listed in Section 4.1, this exte | <t>To satisfy the additional requirements listed in <xref target="design-r | |||
| nsion:</t> | equirements"/>, this extension:</t> | |||
| <ol spacing="normal" type="1"><li>introduces the concept of Abstract Netwo | <ol spacing="normal" type="1"><li>introduces the concept of an ANE as the | |||
| rk Element (ANE) as the abstraction | abstraction | |||
| of components in a network whose properties may have an impact on the | of components in a network whose properties may have an impact on | |||
| end-to-end performance of the traffic handled by those components,</li> | end-to-end performance of the traffic handled by those components,</li> | |||
| <li>extends the Cost Map and Endpoint Cost Service to convey the ANEs tr aversed | <li>extends the cost map and Endpoint Cost Service to convey the ANEs tr aversed | |||
| by the path of a <source, destination> pair as Path Vectors, and</li> | by the path of a <source, destination> pair as Path Vectors, and</li> | |||
| <li>uses the Unified Property Map to convey the association between the | <li>uses the entity property map to convey the association between the | |||
| ANEs and their properties.</li> | ANEs and their properties.</li> | |||
| </ol> | </ol> | |||
| <t>Thus, an ALTO client can learn about the ANEs that are important to ass ess the | <t>Thus, an ALTO client can learn about the ANEs that are important for as sessing the | |||
| QoE of different <source, destination> pairs by investigating the correspo nding | QoE of different <source, destination> pairs by investigating the correspo nding | |||
| Path Vector value (AR1), identify common ANEs if an ANE appears in the Path | Path Vector value (AR1) and can also (1) identify common ANEs if an ANE app | |||
| Vectors of multiple <source, destination> pairs (AR2), and retrieve the | ears in the Path Vectors of multiple <source, destination> pairs (AR2) and | |||
| properties of the ANEs by searching the Unified Property Map (AR3).</t> | (2) retrieve the properties of the ANEs by searching the entity property ma | |||
| p (AR3).</t> | ||||
| <section anchor="ane-design" numbered="true" toc="default"> | <section anchor="ane-design" numbered="true" toc="default"> | |||
| <name>Abstract Network Element (ANE)</name> | <name>Abstract Network Element (ANE)</name> | |||
| <t>This extension introduces ANE as an indirect and network-agnostic way to specify | <t>This extension introduces the ANE as an indirect and network-agnostic way to specify | |||
| a component or an aggregation of components of a network whose properties have | a component or an aggregation of components of a network whose properties have | |||
| an impact on the end-to-end performance for application traffic between | an impact on end-to-end performance for application traffic between | |||
| endpoints.</t> | endpoints.</t> | |||
| <t>ANEs allow ALTO servers to focus on common properties of different ty pes of | <t>ANEs allow ALTO servers to focus on common properties of different ty pes of | |||
| network components. For example, the throughput of a flow can be constrained by | network components. For example, the throughput of a flow can be constrained by | |||
| different components in a network: the capacity of a physical link, the maximum | different components in a network: the capacity of a physical link, the maximum | |||
| throughput of a firewall, the reserved bandwidth of an MPLS tunnel, etc. See the | throughput of a firewall, the reserved bandwidth of an MPLS tunnel, etc. In the | |||
| example below, assume the throughput of the firewall is 100 Mbps and the | example below, assume that the throughput of the firewall is 100 Mbps and the | |||
| capacity for link (A, B) is also 100 Mbps, they result in the same constraint on | capacity for link (A, B) is also 100 Mbps; they result in the same constraint on | |||
| the total throughput of f1 and f2. Thus, they are identical when treated as an | the total throughput of f1 and f2. Thus, they are identical when treated as an | |||
| ANE.</t> | ANE.</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| f1 | ^ f1 | f1 | ^ f1 | |||
| | | -----------------> | | | -----------------> | |||
| +----------+ +---+ +---+ | +----------+ +---+ +---+ | |||
| | Firewall | | A |-----| B | | | Firewall | | A |-----| B | | |||
| +----------+ +---+ +---+ | +----------+ +---+ +---+ | |||
| | | -----------------> | | | -----------------> | |||
| v | f2 f2 | v | f2 f2 | |||
| ]]></artwork> | ]]></artwork> | |||
| <t>When an ANE is defined by an ALTO server, it is assigned an identifie r by the | <t>When an ANE is defined by an ALTO server, it is assigned an identifie r by the | |||
| ALTO server, i.e., a string of type ANEName as specified in <xref target="ane-na me-spec" format="default"/>, | ALTO server, i.e., a string of type ANEName as specified in <xref target="ane-na me-spec" format="default"/>, | |||
| and a set of associated properties.</t> | and a set of associated properties.</t> | |||
| <section anchor="ane-entity-domain" numbered="true" toc="default"> | <section anchor="ane-entity-domain" numbered="true" toc="default"> | |||
| <name>ANE Entity Domain</name> | <name>ANE Entity Domain</name> | |||
| <t>In this extension, the associations between ANE and the properties | <t>In this extension, the associations between ANEs and their properti | |||
| are conveyed | es are conveyed | |||
| in a Unified Property Map. Thus, ANEs must constitute an entity domain (Section | in an entity property map. Thus, ANEs must constitute an "entity domain" ( | |||
| 5.1 of <xref target="I-D.ietf-alto-unified-props-new" format="default"/>), and e | <xref target="RFC9240" sectionFormat="of" section="5.1"/>), and each ANE propert | |||
| ach ANE property must be an | y must be an | |||
| entity property (Section 5.2 of <xref target="I-D.ietf-alto-unified-props-new" f | entity property (<xref target="RFC9240" sectionFormat="of" section="5.2"/>).</t> | |||
| ormat="default"/>).</t> | ||||
| <t>Specifically, this document defines a new entity domain called "ane " as | <t>Specifically, this document defines a new entity domain called "ane " as | |||
| specified in <xref target="ane-domain-spec" format="default"/> and defines two i nitial properties for the ANE | specified in <xref target="ane-domain-spec" format="default"/>; <xref target="in itial-ane-property-types"/> defines two initial property types for the ANE | |||
| entity domain.</t> | entity domain.</t> | |||
| </section> | </section> | |||
| <section anchor="assoc" numbered="true" toc="default"> | <section anchor="assoc" numbered="true" toc="default"> | |||
| <name>Ephemeral and Persistent ANEs</name> | <name>Ephemeral and Persistent ANEs</name> | |||
| <t>By design, ANEs are ephemeral and not to be used in further request s to other | <t>By design, ANEs are ephemeral and not to be used in further request s to other | |||
| ALTO resources. More precisely, the corresponding ANE names are no longer valid | ALTO resources. More precisely, the corresponding ANE names are no longer valid | |||
| beyond the scope of a Path Vector response or the incremental update stream | beyond the scope of a Path Vector response or the incremental update stream | |||
| for a Path Vector request. Compared with globally unique ANE names, ephemeral | for a Path Vector request. Compared with globally unique ANE names, ephemeral | |||
| ANE has several benefits including better privacy of the ISP's internal | ANEs have several benefits, including better privacy for the ISP's internal | |||
| structure and more flexible ANE computation.</t> | structure and more flexible ANE computation.</t> | |||
| <t>For example, an ALTO server may define an ANE for each aggregated b ottleneck | <t>For example, an ALTO server may define an ANE for each aggregated b ottleneck | |||
| link between the sources and destinations specified in the request. For requests | link between the sources and destinations specified in the request. For requests | |||
| with different sources and destinations, the bottlenecks may be different but | with different sources and destinations, the bottlenecks may be different but | |||
| can safely reuse the same ANE names. The client can still adjust its traffic | can safely reuse the same ANE names. The client can still adjust its traffic | |||
| based on the information but is difficult to infer the underlying topology with | based on the information, but it is difficult to infer the underlying topology w ith | |||
| multiple queries.</t> | multiple queries.</t> | |||
| <t>However, sometimes an ISP may intend to selectively reveal some "pe rsistent" | <t>However, sometimes an ISP may intend to selectively reveal some "pe rsistent" | |||
| network components which, opposite to being ephemeral, have a longer life cycle. | network components that, as opposed to being ephemeral, have a longer life cycle . | |||
| For example, an ALTO server may define an ANE for each service edge cluster. | For example, an ALTO server may define an ANE for each service edge cluster. | |||
| Once a client chooses to use a service edge, e.g., by deploying some | Once a client chooses to use a service edge, e.g., by deploying some | |||
| user-defined functions, it may want to stick to the service edge to avoid the | user-defined functions, it may want to stick to the service edge to avoid the | |||
| complexity of state transition or synchronization, and continuously query the | complexity of state transition or synchronization, and continuously query the | |||
| properties of the edge cluster.</t> | properties of the edge cluster.</t> | |||
| <t>This document provides a mechanism to expose such network component s as | <t>This document provides a mechanism to expose such network component s as | |||
| persistent ANEs. A persistent ANE has a persistent ID that is registered in a | persistent ANEs. A persistent ANE has a persistent ID that is registered in a | |||
| Property Map, together with their properties. See <xref target="domain-defining" | property map, together with its properties. See Sections <xref target="doma | |||
| format="default"/> and | in-defining" format="counter"/> and | |||
| <xref target="persistent-entity-id" format="default"/> for more detailed instruc | <xref target="persistent-entity-id" format="counter"/> for more detailed instruc | |||
| tions on how to identify | tions on how to identify | |||
| ephemeral ANEs and persistent ANEs.</t> | ephemeral ANEs and persistent ANEs.</t> | |||
| </section> | </section> | |||
| <section anchor="property-filtering" numbered="true" toc="default"> | <section anchor="property-filtering" numbered="true" toc="default"> | |||
| <name>Property Filtering</name> | <name>Property Filtering</name> | |||
| <t>Resource-constrained ALTO clients (see Section 4.1.2 of <xref targe t="RFC7285" format="default"/>) may benefit | <t>Resource-constrained ALTO clients (see <xref target="RFC7285" secti onFormat="of" section="4.1.2"/>) may benefit | |||
| from the filtering of Path Vector query results at the ALTO server, as an ALTO | from the filtering of Path Vector query results at the ALTO server, as an ALTO | |||
| client may only require a subset of the available properties.</t> | client may only require a subset of the available properties.</t> | |||
| <t>Specifically, the available properties for a given resource are ann ounced in the | <t>Specifically, the available properties for a given resource are ann ounced in the | |||
| Information Resource Directory as a new capability called "ane-property-names". | Information Resource Directory (IRD) as a new filtering capability called "ane-p roperty-names". | |||
| The properties selected by a client as being of interest are specified in the | The properties selected by a client as being of interest are specified in the | |||
| subsequent Path Vector queries using the filter called 'ane-property-names'. The | subsequent Path Vector queries using the "ane-property-names" filter. The | |||
| response includes and only includes the selected properties for the ANEs in the | response only includes the selected properties for the ANEs.</t> | |||
| response.</t> | <t>The "ane-property-names" capability for the cost map and the Endpoi | |||
| <t>The "ane-property-names" capability for Cost Map and for Endpoint C | nt Cost Service | |||
| ost Service | is specified in Sections <xref target="pvcm-cap" format="counter"/> and <xr | |||
| is specified in <xref target="pvcm-cap" format="default"/> and <xref target="pve | ef target="pvecs-cap" format="counter"/>, respectively. The | |||
| cs-cap" format="default"/> respectively. The | "ane-property-names" filter for the cost map and the Endpoint Cost Service is sp | |||
| "ane-property-names" filter for Cost Map and Endpoint Cost Service is specified | ecified | |||
| in <xref target="pvcm-accept" format="default"/> and <xref target="pvecs-accept" | in Sections <xref target="pvcm-accept" format="counter"/> and <xref target= | |||
| format="default"/> accordingly.</t> | "pvecs-accept" format="counter"/> accordingly.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="path-vector-design" numbered="true" toc="default"> | <section anchor="path-vector-design" numbered="true" toc="default"> | |||
| <name>Path Vector Cost Type</name> | <name>Path Vector Cost Type</name> | |||
| <t>For an ALTO client to correctly interpret the Path Vector, this exten sion | <t>For an ALTO client to correctly interpret the Path Vector, this exten sion | |||
| specifies a new cost type called the Path Vector cost type.</t> | specifies a new cost type called the "Path Vector cost type".</t> | |||
| <t>The Path Vector cost type must convey both the interpretation and sem antics in | <t>The Path Vector cost type must convey both the interpretation and sem antics in | |||
| the "cost-mode" and "cost-metric" respectively. Unfortunately, a single | the "cost-mode" and "cost-metric" parameters, respectively. Unfortunately, a sin gle | |||
| "cost-mode" value cannot fully specify the interpretation of a Path Vector, | "cost-mode" value cannot fully specify the interpretation of a Path Vector, | |||
| which is a compound data type. For example, in programming languages such as C++ | which is a compound data type. For example, in programming languages such as C++ | |||
| where there existed a JSON array type named JSONArray, a Path Vector will have | , | |||
| if there existed a JSON array type named JSONArray, a Path Vector would have | ||||
| the type of <tt>JSONArray<ANEName></tt>.</t> | the type of <tt>JSONArray<ANEName></tt>.</t> | |||
| <t>Instead of extending the "type system" of ALTO, this document takes a simple | <t>Instead of extending the "type system" of ALTO, this document takes a simple | |||
| and backward compatible approach. Specifically, the "cost-mode" of the Path | and backward-compatible approach. Specifically, the "cost-mode" of the Path | |||
| Vector cost type is "array", which indicates the value is a JSON array. Then, an | Vector cost type is "array", which indicates that the value is a JSON array. The | |||
| ALTO client must check the value of the "cost-metric". If the value is | n, an | |||
| ALTO client must check the value of the "cost-metric" parameter. If the value is | ||||
| "ane-path", it means that the JSON array should be further interpreted as a path | "ane-path", it means that the JSON array should be further interpreted as a path | |||
| of ANENames.</t> | of ANENames.</t> | |||
| <t>The Path Vector cost type is specified in <xref target="cost-type-spe c" format="default"/>.</t> | <t>The Path Vector cost type is specified in <xref target="cost-type-spe c" format="default"/>.</t> | |||
| </section> | </section> | |||
| <section anchor="multipart-path-vector-response" numbered="true" toc="defa ult"> | <section anchor="multipart-path-vector-response" numbered="true" toc="defa ult"> | |||
| <name>Multipart Path Vector Response</name> | <name>Multipart Path Vector Response</name> | |||
| <t>For a basic ALTO information resource, a response contains only one t ype of | <t>For a basic ALTO information resource, a response contains only one t ype of | |||
| ALTO resources, e.g., Network Map, Cost Map, or Property Map. Thus, only one | ALTO resource, e.g., network map, cost map, or property map. Thus, only on | |||
| round of communication is required: An ALTO client sends a request to an ALTO | e | |||
| round of communication is required: an ALTO client sends a request to an ALTO | ||||
| server, and the ALTO server returns a response, as shown in <xref target="fig-al to" format="default"/>.</t> | server, and the ALTO server returns a response, as shown in <xref target="fig-al to" format="default"/>.</t> | |||
| <figure anchor="fig-alto"> | <figure anchor="fig-alto"> | |||
| <name>A Typical ALTO Request and Response</name> | <name>A Typical ALTO Request and Response</name> | |||
| <artwork type="drawing" align="center" name="" alt=""><![CDATA[ | <artwork type="" align="center" name="" alt=""><![CDATA[ | |||
| ALTO client ALTO server | ALTO client ALTO server | |||
| |-------------- Request ---------------->| | |-------------- Request ---------------->| | |||
| |<------------- Response ----------------| | |<------------- Response ----------------| | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t>The extension defined in this document, on the other hand, involves t wo types of | <t>The extension defined in this document, on the other hand, involves t wo types of | |||
| information resources: Path Vectors conveyed in an InfoResourceCostMap (defined | information resources: Path Vectors conveyed in an InfoResourceCostMap data comp | |||
| in Section 11.2.3.6 of <xref target="RFC7285" format="default"/>) or an InfoReso | onent (defined | |||
| urceEndpointCostMap (defined | in <xref target="RFC7285" sectionFormat="of" section="11.2.3.6"/>) or an InfoRes | |||
| in Section 11.5.1.6 of <xref target="RFC7285" format="default"/>), and ANE prope | ourceEndpointCostMap data component (defined | |||
| rties conveyed in an | in <xref target="RFC7285" sectionFormat="of" section="11.5.1.6"/>), and ANE prop | |||
| InfoResourceProperties (defined in Section 7.6 of <xref target="I-D.ietf-alto-un | erties conveyed in an | |||
| ified-props-new" format="default"/>).</t> | InfoResourceProperties data component (defined in <xref target="RFC9240" section | |||
| Format="of" section="7.6"/>).</t> | ||||
| <t>Instead of two consecutive message exchanges, the extension defined i n this | <t>Instead of two consecutive message exchanges, the extension defined i n this | |||
| document enforces one round of communication. Specifically, the ALTO client must | document enforces one round of communication. Specifically, the ALTO client must | |||
| include the source and destination pairs and the requested ANE properties in a | include the source and destination pairs and the requested ANE properties in a | |||
| single request, and the ALTO server must return a single response containing | single request, and the ALTO server must return a single response containing | |||
| both the Path Vectors and properties associated with the ANEs in the Path | both the Path Vectors and properties associated with the ANEs in the Path | |||
| Vectors, as shown in <xref target="fig-pv" format="default"/>. Since the two par ts are bundled together in one | Vectors, as shown in <xref target="fig-pv" format="default"/>. Since the two par ts are bundled together in one | |||
| response message, their orders are interchangeable. See <xref target="pvcm-resp" | response message, their orders are interchangeable. See Sections <xref targ | |||
| format="default"/> and | et="pvcm-resp" format="counter"/> and | |||
| <xref target="pvecs-resp" format="default"/> for details.</t> | <xref target="pvecs-resp" format="counter"/> for details.</t> | |||
| <figure anchor="fig-pv"> | <figure anchor="fig-pv"> | |||
| <name>The Path Vector Extension Request and Response</name> | <name>The Path Vector Extension Request and Response</name> | |||
| <artwork type="drawing" align="center" name="" alt=""><![CDATA[ | <artwork type="" align="center" name="" alt=""><![CDATA[ | |||
| ALTO client ALTO server | ALTO client ALTO server | |||
| |------------- PV Request -------------->| | |------------- PV Request -------------->| | |||
| |<----- PV Response (Cost Map Part) -----| | |<----- PV Response (Cost Map Part) -----| | |||
| |<--- PV Response (Property Map Part) ---| | |<--- PV Response (Property Map Part) ---| | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t>This design is based on the following considerations:</t> | <t>This design is based on the following considerations:</t> | |||
| <ol spacing="normal" type="1"><li>ANEs may be constructed on demand, and | <ol spacing="normal" type="1"><li>ANEs may be constructed on demand and, | |||
| potentially based on the | potentially, based on the | |||
| requested properties (See <xref target="ane-design" format="default"/> for more | requested properties (see <xref target="ane-design" format="default"/> for more | |||
| details). If sources and | details). If sources and | |||
| destinations are not in the same request as the properties, an ALTO server | destinations are not in the same request as the properties, an ALTO server | |||
| either cannot construct ANEs on-demand, or must wait until both requests are | either cannot construct ANEs on demand or must wait until both requests are | |||
| received.</li> | received.</li> | |||
| <li>As ANEs may be constructed on demand, mappings of each ANE to its underlying | <li>As ANEs may be constructed on demand, mappings of each ANE to its underlying | |||
| network devices and resources can be specific to the request. In order | network devices and resources can be specific to the request. In order | |||
| to respond to the Property Map request correctly, an ALTO server must store | to respond to the property map request correctly, an ALTO server must store | |||
| the mapping of each Path Vector request until the client fully retrieves the | the mapping of each Path Vector request until the client fully retrieves the | |||
| property information. The "stateful" behavior may substantially harm the | property information. This "stateful" behavior may substantially harm | |||
| server scalability and potentially lead to Denial-of-Service attacks.</li> | server scalability and potentially lead to denial-of-service attacks.</li> | |||
| </ol> | </ol> | |||
| <t>One approach to realize the one-round communication is to define a ne w media | <t>One approach for realizing the one-round communication is to define a new media | |||
| type to contain both objects, but this violates modular design. This document | type to contain both objects, but this violates modular design. This document | |||
| follows the standard-conforming usage of "multipart/related" media type defined | follows the standard-conforming usage of the "multipart/related" media type as d efined | |||
| in <xref target="RFC2387" format="default"/> to elegantly combine the objects. P ath Vectors are encoded in an | in <xref target="RFC2387" format="default"/> to elegantly combine the objects. P ath Vectors are encoded in an | |||
| InfoResourceCostMap or an InfoResourceEndpointCostMap, and the Property Map is | InfoResourceCostMap data component or InfoResourceEndpointCostMap data component | |||
| encoded in an InfoResourceProperties. They are encapsulated as parts of a | , and the property map is | |||
| multipart message. The modular composition allows ALTO servers and clients to | encoded in an InfoResourceProperties data component. They are encapsulated as pa | |||
| rts of a | ||||
| multipart message. This modular composition allows ALTO servers and clients to | ||||
| reuse the data models of the existing information resources. Specifically, this | reuse the data models of the existing information resources. Specifically, this | |||
| document addresses the following practical issues using "multipart/related".</t> | document addresses the following practical issues using "multipart/related".</t> | |||
| <section anchor="identifying-the-media-type-of-the-root-object" numbered ="true" toc="default"> | <section anchor="identifying-the-media-type-of-the-root-object" numbered ="true" toc="default"> | |||
| <name>Identifying the Media Type of the Root Object</name> | <name>Identifying the Media Type of the Object Root</name> | |||
| <t>ALTO uses media type to indicate the type of an entry in the Inform | <t>ALTO uses a media type to indicate the type of an entry in the IRD | |||
| ation | (e.g., "application/alto-costmap+json" for the cost map | |||
| Resource Directory (IRD) (e.g., "application/alto-costmap+json" for Cost Map | and "application/alto-endpointcost+json" for the Endpoint Cost Service). Simply | |||
| and "application/alto-endpointcost+json" for Endpoint Cost Service). Simply | using "multipart/related" as the media type, however, makes it impossible | |||
| putting "multipart/related" as the media type, however, makes it impossible | ||||
| for an ALTO client to identify the type of service provided by related | for an ALTO client to identify the type of service provided by related | |||
| entries.</t> | entries.</t> | |||
| <t>To address this issue, this document uses the "type" parameter to i ndicate the | <t>To address this issue, this document uses the "type" parameter to i ndicate the | |||
| root object of a multipart/related message. For a Cost Map resource, the | object root of a multipart/related message. For a cost map resource, the | |||
| "media-type" field in the IRD entry is "multipart/related" with the parameter | "media-type" field in the IRD entry is "multipart/related" with the parameter | |||
| "type=application/alto-costmap+json"; for an Endpoint Cost Service, the | "type=application/alto-costmap+json"; for an Endpoint Cost Service, the | |||
| parameter is "type=application/alto-endpointcost+json".</t> | parameter is "type=application/alto-endpointcost+json".</t> | |||
| </section> | </section> | |||
| <section anchor="ref-partmsg-design" numbered="true" toc="default"> | <section anchor="ref-partmsg-design" numbered="true" toc="default"> | |||
| <name>References to Part Messages</name> | <name>References to Part Messages</name> | |||
| <t>As the response of a Path Vector resource is a multipart message wi th two | <t>As the response of a Path Vector resource is a multipart message wi th two | |||
| different parts, it is important that each part can be uniquely identified. | different parts, it is important that each part can be uniquely identified. | |||
| Following the designs of <xref target="RFC8895" format="default"/>, this extensi | Following the design provided in <xref target="RFC8895" format="default"/>, this | |||
| on requires that an ALTO | extension requires that an ALTO | |||
| server assigns a unique identifier to each part of the multipart response | server assign a unique identifier to each part of the multipart response | |||
| message. This identifier, referred to as a Part Resource ID (See | message. This identifier, referred to as a Part Resource ID (see | |||
| <xref target="part-rid-spec" format="default"/> for details), is present in the part message's "Content-ID" | <xref target="part-rid-spec" format="default"/> for details), is present in the part message's "Content-ID" | |||
| header. By concatenating the Part Resource ID to the identifier of the Path | header field. By concatenating the Part Resource ID to the identifier of the Pat | |||
| Vector request, an ALTO server/client can uniquely identify the Path Vector Part | h | |||
| or the Property Map part.</t> | Vector request, an ALTO server/client can uniquely identify the Path Vector part | |||
| or the property map part.</t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="Basic" numbered="true" toc="default"> | <section anchor="Basic" numbered="true" toc="default"> | |||
| <name>Specification: Basic Data Types</name> | <name>Specification: Basic Data Types</name> | |||
| <section anchor="ane-name-spec" numbered="true" toc="default"> | <section anchor="ane-name-spec" numbered="true" toc="default"> | |||
| <name>ANE Name</name> | <name>ANE Name</name> | |||
| <t>An ANE Name is encoded as a JSON string with the same format as that | <t>An ANE name is encoded as a JSON string with the same format as that | |||
| of the type | of the type | |||
| PIDName (Section 10.1 of <xref target="RFC7285" format="default"/>).</t> | PIDName (<xref target="RFC7285" sectionFormat="of" section="10.1"/>).</t> | |||
| <t>The type ANEName is used in this document to indicate a string of thi s | <t>The type ANEName is used in this document to indicate a string of thi s | |||
| format.</t> | format.</t> | |||
| </section> | </section> | |||
| <section anchor="ane-domain-spec" numbered="true" toc="default"> | <section anchor="ane-domain-spec" numbered="true" toc="default"> | |||
| <name>ANE Entity Domain</name> | <name>ANE Entity Domain</name> | |||
| <t>The ANE entity domain associates property values with the Abstract Ne | <t>The ANE entity domain associates property values with the ANEs in a p | |||
| twork | roperty map. Accordingly, the ANE entity domain always depends on | |||
| Elements in a Property Map. Accordingly, the ANE entity domain always depends on | a property map.</t> | |||
| a Property Map.</t> | ||||
| <t>It must be noted that the term "domain" here does not refer to a netw ork domain. | <t>It must be noted that the term "domain" here does not refer to a netw ork domain. | |||
| Rather, it is inherited from the "entity domain" defined in Sec 3.2 in | Rather, it is inherited from the entity domain as defined in | |||
| <xref target="I-D.ietf-alto-unified-props-new" format="default"/> that represent | <xref target="RFC9240" sectionFormat="of" section="3.2"/>; the entity domain rep | |||
| s the set of valid entities | resents the set of valid entities | |||
| defined by an ALTO information resource (called the defining information | defined by an ALTO information resource (called the "defining information | |||
| resource).</t> | resource").</t> | |||
| <section anchor="domain-type" numbered="true" toc="default"> | <section anchor="domain-type" numbered="true" toc="default"> | |||
| <name>Entity Domain Type</name> | <name>Entity Domain Type</name> | |||
| <t>The Entity Domain Type is "ane".</t> | <t>The entity domain type is "ane".</t> | |||
| </section> | </section> | |||
| <section anchor="entity-address" numbered="true" toc="default"> | <section anchor="entity-address" numbered="true" toc="default"> | |||
| <name>Domain-Specific Entity Identifier</name> | <name>Domain-Specific Entity Identifier</name> | |||
| <t>The entity identifiers are the ANE Names in the associated Property Map.</t> | <t>The entity identifiers are the ANE names in the associated property map.</t> | |||
| </section> | </section> | |||
| <section anchor="hierarchy-and-inheritance" numbered="true" toc="default "> | <section anchor="hierarchy-and-inheritance" numbered="true" toc="default "> | |||
| <name>Hierarchy and Inheritance</name> | <name>Hierarchy and Inheritance</name> | |||
| <t>There is no hierarchy or inheritance for properties associated with ANEs.</t> | <t>There is no hierarchy or inheritance for properties associated with ANEs.</t> | |||
| </section> | </section> | |||
| <section anchor="domain-defining" numbered="true" toc="default"> | <section anchor="domain-defining" numbered="true" toc="default"> | |||
| <name>Media Type of Defining Resource</name> | <name>Media Type of Defining Resource</name> | |||
| <t>The defining resource for entity domain type "ane" MUST be a Proper ty Map, i.e., | <t>The defining resource for entity domain type "ane" <bcp14>MUST</bcp 14> be a property map, i.e., | |||
| the media type of defining resources is:</t> | the media type of defining resources is:</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| application/alto-propmap+json | application/alto-propmap+json | |||
| ]]></artwork> | ]]></artwork> | |||
| <t>Specifically, for ephemeral ANEs that appear in a Path Vector respo nse, their | <t>Specifically, for ephemeral ANEs that appear in a Path Vector respo nse, their | |||
| entity domain names MUST be exactly ".ane" and the defining resource of these | entity domain names <bcp14>MUST</bcp14> be exactly ".ane", and the defining reso | |||
| ANEs is the Property Map part of the multipart response. Meanwhile, for any | urce of these | |||
| persistent ANE whose defining resource is a Property Map resource, its entity | ANEs is the property map part of the multipart response. Meanwhile, for any | |||
| domain name MUST have the format of "PROPMAP.ane" where PROPMAP is the resource | persistent ANE whose defining resource is a property map resource, its entity | |||
| domain name <bcp14>MUST</bcp14> have the format of "PROPMAP.ane", where PROPMAP | ||||
| is the resource | ||||
| ID of the defining resource. Persistent entities are "persistent" because | ID of the defining resource. Persistent entities are "persistent" because | |||
| standalone queries can be made by an ALTO client to their defining resource(s) | standalone queries can be made by an ALTO client to their defining resource(s) | |||
| when the connection to the Path Vector service is closed.</t> | when the connection to the Path Vector service is closed.</t> | |||
| <t>For example, the defining resource of an ephemeral ANE whose entity identifier | <t>For example, the defining resource of an ephemeral ANE whose entity identifier | |||
| is ".ane:NET1" is the Property Map part that contains this identifier. The | is ".ane:NET1" is the property map part that contains this identifier. The | |||
| defining resource of a persistent ANE whose entity identifier is | defining resource of a persistent ANE whose entity identifier is | |||
| "dc-props.ane:DC1" is the Property Map with the resource ID "dc-props".</t> | "dc-props.ane:DC1" is the property map with the resource ID "dc-props".</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="ane-prop-name-spec" numbered="true" toc="default"> | <section anchor="ane-prop-name-spec" numbered="true" toc="default"> | |||
| <name>ANE Property Name</name> | <name>ANE Property Name</name> | |||
| <t>An ANE Property Name is encoded as a JSON string with the same format | <t>An ANE property name is encoded as a JSON string with the same format | |||
| as that of | as that of an | |||
| Entity Property Name (Section 5.2.2 of <xref target="I-D.ietf-alto-unified-props | entity property name (<xref target="RFC9240" sectionFormat="of" section="5.2.2"/ | |||
| -new" format="default"/>).</t> | >).</t> | |||
| </section> | </section> | |||
| <section anchor="initial-ane-property-types" numbered="true" toc="default" > | <section anchor="initial-ane-property-types" numbered="true" toc="default" > | |||
| <name>Initial ANE Property Types</name> | <name>Initial ANE Property Types</name> | |||
| <t>Two initial ANE property types are specified, "max-reservable-bandwid th" and | <t>Two initial ANE property types are specified: "max-reservable-bandwid th" and | |||
| "persistent-entity-id".</t> | "persistent-entity-id".</t> | |||
| <t>Note that these property types do not depend on any information resou | <t>Note that these property types do not depend on any information resou | |||
| rce. As | rces. As | |||
| such, the EntityPropertyName MUST only have the EntityPropertyType part.</t> | such, the "EntityPropertyName" parameter <bcp14>MUST</bcp14> only have the Entit | |||
| yPropertyType part.</t> | ||||
| <section anchor="maxresbw" numbered="true" toc="default"> | <section anchor="maxresbw" numbered="true" toc="default"> | |||
| <name>Maximum Reservable Bandwidth</name> | <name>Maximum Reservable Bandwidth</name> | |||
| <t>The maximum reservable bandwidth property ("max-reservable-bandwidt h") stands | <t>The maximum reservable bandwidth property ("max-reservable-bandwidt h") stands | |||
| for the maximum bandwidth that can be reserved for all the traffic that | for the maximum bandwidth that can be reserved for all the traffic that | |||
| traverses an ANE. The value MUST be encoded as a non-negative numerical cost | traverses an ANE. The value <bcp14>MUST</bcp14> be encoded as a non-negative num | |||
| value as defined in Section 6.1.2.1 of <xref target="RFC7285" format="default"/> | erical cost | |||
| and the unit is bit per | value as defined in | |||
| second (bps). If this property is requested by the ALTO client but not present | <xref target="RFC7285" sectionFormat="of" section="6.1.2.1"/>, and the unit is b | |||
| for an ANE in the server response, it MUST be interpreted as that the property | its per | |||
| second (bps). If this property is requested by the ALTO client but is not presen | ||||
| t | ||||
| for an ANE in the server response, it <bcp14>MUST</bcp14> be interpreted as mean | ||||
| ing that the property | ||||
| is not defined for the ANE.</t> | is not defined for the ANE.</t> | |||
| <t>This property can be offered in a setting where the ALTO server is part of a | <t>This property can be offered in a setting where the ALTO server is part of a | |||
| network system that provides on-demand resource allocation and the ALTO client | network system that provides on-demand resource allocation and the ALTO client | |||
| is part of a user application. One existing example is <xref target="NOVA" forma t="default"/>: the ALTO server | is part of a user application. One existing example is <xref target="NOVA" forma t="default"/>: the ALTO server | |||
| is part of an SDN controller and exposes a list of traversed network elements | is part of a Software-Defined Networking (SDN) controller and exposes a list of traversed network elements | |||
| and associated link bandwidth to the client. The encoding in <xref target="NOVA" format="default"/> differs | and associated link bandwidth to the client. The encoding in <xref target="NOVA" format="default"/> differs | |||
| from the Path Vector response defined in this document that the Path Vector part | from the Path Vector response defined in this document in that the Path Vector p | |||
| and Property Map part are put in the same JSON object.</t> | art | |||
| <t>In such a framework, the ALTO server exposes resource (e.g., reserv | and property map part are placed in the same JSON object.</t> | |||
| able bandwidth) | <t>In such a framework, the ALTO server exposes resource | |||
| availability information to the ALTO client. How the client makes resource | availability information (e.g., reservable bandwidth) to the ALTO client. How th | |||
| requests based on the information and how the resource allocation is achieved | e client makes resource | |||
| respectively depend on interfaces between the management system and the users or | requests based on the information, and how the resource allocation is achieved, | |||
| a higher-layer protocol (e.g., SDN network intents or MPLS tunnels), which are | respectively, depend on interfaces between the management system and the users o | |||
| out of the scope of this document.</t> | r | |||
| a higher-layer protocol (e.g., SDN network intents <xref target="INTENT-BASED-NE | ||||
| TWORKING"/> or MPLS tunnels), which are | ||||
| out of scope for this document.</t> | ||||
| </section> | </section> | |||
| <section anchor="persistent-entity-id" numbered="true" toc="default"> | <section anchor="persistent-entity-id" numbered="true" toc="default"> | |||
| <name>Persistent Entity ID</name> | <name>Persistent Entity ID</name> | |||
| <t>The persistent entity ID property is the entity identifier of the p | <t>This document enables the discovery of a persistent ANE by exposing | |||
| ersistent | its | |||
| ANE which an ephemeral ANE presents (See <xref target="assoc" format="default"/> | entity identifier as the persistent entity ID property of an ephemeral ANE in th | |||
| for details). The value of | e path | |||
| this property is encoded with the format EntityID defined in Section 5.1.3 of | vector response. The value of this property is encoded with the EntityID format | |||
| <xref target="I-D.ietf-alto-unified-props-new" format="default"/>.</t> | defined in <xref target="RFC9240" sectionFormat="of" section="5.1.3"/>.</t> | |||
| <t>In this format, the entity ID combines:</t> | <t>In this format, the entity ID combines:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li>a defining information resource for the ANE on which a | <li>a defining information resource for the ANE on which a | |||
| "persistent-entity-id" is queried, which is the Property Map resource | "persistent-entity-id" is queried, which is the property map resource | |||
| defining the ANE as a persistent entity, together with the properties;</li> | defining the ANE as a persistent entity, together with the properties.</li> | |||
| <li>the persistent name of the ANE in that Property Map.</li> | <li>the persistent name of the ANE in that property map.</li> | |||
| </ul> | </ul> | |||
| <t>With this format, the client has all the needed information for fur ther | <t>With this format, the client has all the needed information for fur ther | |||
| standalone query properties on the persistent ANE.</t> | standalone query properties on the persistent ANE.</t> | |||
| </section> | </section> | |||
| <section anchor="examples" numbered="true" toc="default"> | <section anchor="examples" numbered="true" toc="default"> | |||
| <name>Examples</name> | <name>Examples</name> | |||
| <t>To illustrate the use of "max-reservable-bandwidth", consider the f ollowing | <t>To illustrate the use of "max-reservable-bandwidth", consider the f ollowing | |||
| network with 5 nodes. Assume the client wants to query the maximum reservable | network with five nodes. Assume that the client wants to query the maximum reser vable | |||
| bandwidth from H1 to H2. An ALTO server may split the network into two ANEs: | bandwidth from H1 to H2. An ALTO server may split the network into two ANEs: | |||
| "ane1" that represents the subnetwork with routers A, B, and C, and "ane2" that | "ane1", which represents the subnetwork with routers A, B, and C; and "ane2", wh | |||
| represents the subnetwork with routers B, D and E. The maximum reservable | ich | |||
| bandwidth for "ane1" is 15 Mbps (using path A->C->B) and the maximum reser | represents the subnetwork with routers B, D, and E. The maximum reservable | |||
| vable | bandwidth for "ane1" is 15 Mbps (using path A->C->B), and the maximum rese | |||
| rvable | ||||
| bandwidth for "ane2" is 20 Mbps (using path B->D->E).</t> | bandwidth for "ane2" is 20 Mbps (using path B->D->E).</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| 20 Mbps 20 Mbps | 20 Mbps 20 Mbps | |||
| 10 Mbps +---+ +---+ +---+ | 10 Mbps +---+ +---+ +---+ | |||
| /----| B |---| D |----| E |---- H2 | /----| B |---| D |----| E |---- H2 | |||
| +---+/ +---+ +---+ +---+ | +---+/ +---+ +---+ +---+ | |||
| H1 ----| A | 15 Mbps| | H1 ----| A | 15 Mbps| | |||
| +---+\ +---+ | +---+\ +---+ | |||
| \----| C | | \----| C | | |||
| 15 Mbps +---+ | 15 Mbps +---+ | |||
| ]]></artwork> | ]]></artwork> | |||
| <t>To illustrate the use of "persistent-entity-id", consider the scena rio in | <t>To illustrate the use of "persistent-entity-id", consider the scena rio in | |||
| <xref target="fig-se" format="default"/>. As the life cycle of service edges are typically long, they may | <xref target="fig-se" format="default"/>. As the life cycles of service edges ar e typically long, the service edges may | |||
| contain information that is not specific to the query. Such information can be | contain information that is not specific to the query. Such information can be | |||
| stored in an individual unified property map and later be accessed by an ALTO | stored in an individual entity property map and can later be accessed by an ALTO | |||
| client.</t> | client.</t> | |||
| <t>For example, "ane1" in <xref target="fig-se-example" format="defaul t"/> represents the on-premise service edge | <t>For example, "ane1" in <xref target="fig-se-example" format="defaul t"/> represents the on-premise service edge | |||
| closest to host a. Assume the properties of the service edges are provided in | closest to host "a". Assume that the properties of the service edges are provide | |||
| a unified property map called "se-props" and the ID of the on-premise service | d in | |||
| edge is "9a0b55f7-7442-4d56-8a2c-b4cc6a8e3aa1", the "persistent-entity-id" of | an entity property map called "se-props" and the ID of the on-premise service | |||
| edge is "9a0b55f7-7442-4d56-8a2c-b4cc6a8e3aa1"; the "persistent-entity-id" setti | ||||
| ng for | ||||
| "ane1" will be "se-props.ane:9a0b55f7-7442-4d56-8a2c-b4cc6a8e3aa1". With this | "ane1" will be "se-props.ane:9a0b55f7-7442-4d56-8a2c-b4cc6a8e3aa1". With this | |||
| persistent entity ID, an ALTO client may send queries to the "se-props" resource | persistent entity ID, an ALTO client may send queries to the "se-props" resource | |||
| with the entity ID ".ane:9a0b55f7-7442-4d56-8a2c-b4cc6a8e3aa1".</t> | with the entity ID ".ane:9a0b55f7-7442-4d56-8a2c-b4cc6a8e3aa1".</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="cost-type-spec" numbered="true" toc="default"> | <section anchor="cost-type-spec" numbered="true" toc="default"> | |||
| <name>Path Vector Cost Type</name> | <name>Path Vector Cost Type</name> | |||
| <t>This document defines a new cost type, which is referred to as the Pa th Vector | <t>This document defines a new cost type, which is referred to as the Pa th Vector | |||
| cost type. An ALTO server MUST offer this cost type if it supports the extension | cost type. An ALTO server <bcp14>MUST</bcp14> offer this cost type if it support s the extension | |||
| defined in this document.</t> | defined in this document.</t> | |||
| <section anchor="metric-spec" numbered="true" toc="default"> | <section anchor="metric-spec" numbered="true" toc="default"> | |||
| <name>Cost Metric: ane-path</name> | <name>Cost Metric: "ane-path"</name> | |||
| <t>The cost metric "ane-path" indicates the value of such a cost type | <t>The cost metric "ane-path" indicates that the value of such a cost | |||
| conveys an | type conveys an | |||
| array of ANE names, where each ANE name uniquely represents an ANE traversed by | array of ANE names, where each ANE name uniquely represents an ANE traversed by | |||
| traffic from a source to a destination.</t> | traffic from a source to a destination.</t> | |||
| <t>An ALTO client MUST interpret the Path Vector as if the traffic bet ween a source | <t>An ALTO client <bcp14>MUST</bcp14> interpret the Path Vector as if the traffic between a source | |||
| and a destination logically traverses the ANEs in the same order as they appear | and a destination logically traverses the ANEs in the same order as they appear | |||
| in the Path Vector.</t> | in the Path Vector.</t> | |||
| <t>When the Path Vector procedures defined in this document are in use , an ALTO | <t>When the Path Vector procedures defined in this document are in use , an ALTO | |||
| server using the "ane-path" cost metric and the "array" cost mode (see | server using the "ane-path" cost metric and the "array" cost mode (see | |||
| <xref target="mode-spec" format="default"/>) MUST return as the cost value a JSO | <xref target="mode-spec" format="default"/>) <bcp14>MUST</bcp14> return as the c | |||
| N array of ANEName and the | ost value a JSON array of data type ANEName, and the | |||
| client MUST also check that each element contained in the array is an ANEName | client <bcp14>MUST</bcp14> also check that each element contained in the array i | |||
| (<xref target="ane-name-spec" format="default"/>). Otherwise, the client MUST di | s an ANEName | |||
| scard the response and SHOULD | (<xref target="ane-name-spec" format="default"/>). Otherwise, the client <bcp14> | |||
| follow the instructions in Section 8.3.4.3 of <xref target="RFC7285" format="def | MUST</bcp14> discard the response and <bcp14>SHOULD</bcp14> | |||
| ault"/> to handle the error.</t> | follow the guidance in <xref target="RFC7285" sectionFormat="of" section="8.3.4. | |||
| 3"/> to handle the error.</t> | ||||
| </section> | </section> | |||
| <section anchor="mode-spec" numbered="true" toc="default"> | <section anchor="mode-spec" numbered="true" toc="default"> | |||
| <name>Cost Mode: array</name> | <name>Cost Mode: "array"</name> | |||
| <t>The cost mode "array" indicates that every cost value in the respon se body of a | <t>The cost mode "array" indicates that every cost value in the respon se body of a | |||
| (Filtered) Cost Map or an Endpoint Cost Service MUST be interpreted as a JSON | (filtered) cost map or an Endpoint Cost Service <bcp14>MUST</bcp14> be interpret ed as a JSON | |||
| array object. While this cost mode can be applied to all cost metrics, | array object. While this cost mode can be applied to all cost metrics, | |||
| additional specifications will be needed to clarify the semantics of the array | additional specifications will be needed to clarify the semantics of the "array" | |||
| cost mode when combined with cost metrics other than 'ane-path'.</t> | cost mode when combined with cost metrics other than "ane-path".</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="part-rid-spec" numbered="true" toc="default"> | <section anchor="part-rid-spec" numbered="true" toc="default"> | |||
| <name>Part Resource ID and Part Content ID</name> | <name>Part Resource ID and Part Content ID</name> | |||
| <t>A Part Resource ID is encoded as a JSON string with the same format a s that of the | <t>A Part Resource ID is encoded as a JSON string with the same format a s that of the | |||
| type ResourceID (Section 10.2 of <xref target="RFC7285" format="default"/>).</t> | type ResourceID (<xref target="RFC7285" sectionFormat="of" section="10.2"/>).</t | |||
| <t>Even though the client-id assigned to a Path Vector request and the P | > | |||
| art | <t>Even though the "client-id" assigned to a Path Vector request and the | |||
| Resource ID MAY contain up to 64 characters by their own definition, their | Part | |||
| concatenation (see <xref target="ref-partmsg-design" format="default"/>) MUST al | Resource ID <bcp14>MAY</bcp14> contain up to 64 characters by their own definiti | |||
| so conform to the same length | on, their | |||
| concatenation (see <xref target="ref-partmsg-design" format="default"/>) <bcp14> | ||||
| MUST</bcp14> also conform to the same length | ||||
| constraint. The same requirement applies to the resource ID of the Path Vector | constraint. The same requirement applies to the resource ID of the Path Vector | |||
| resource, too. Thus, it is RECOMMENDED to limit the length of resource ID and | resource, too. Thus, it is <bcp14>RECOMMENDED</bcp14> to limit the length of the resource ID and | |||
| client ID related to a Path Vector resource to 31 characters.</t> | client ID related to a Path Vector resource to 31 characters.</t> | |||
| <t>A Part Content ID conforms to the format of msg-id as specified in | <t>A Part Content ID conforms to the format of "msg-id" as specified in | |||
| <xref target="RFC2387" format="default"/> and <xref target="RFC5322" format="def ault"/>. Specifically, it has the following format:</t> | <xref target="RFC2387" format="default"/> and <xref target="RFC5322" format="def ault"/>. Specifically, it has the following format:</t> | |||
| <t>"<" PART-RESOURCE-ID "@" DOMAIN-NAME ">"</t> | <t>"<" PART-RESOURCE-ID "@" DOMAIN-NAME ">"</t> | |||
| <dl> | <dl> | |||
| <dt> | <dt> | |||
| PART-RESOURCE-ID: </dt> | PART-RESOURCE-ID: </dt> | |||
| <dd> | <dd> | |||
| <t>PART-RESOURCE-ID has the same format as the Part Resource ID. It is used to | <t>PART-RESOURCE-ID has the same format as the Part Resource ID. It is used to | |||
| identify whether a part message is a Path Vector or a Property Map.</t> | identify whether a part message is a Path Vector or a property map.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| DOMAIN-NAME: </dt> | DOMAIN-NAME: </dt> | |||
| <dd> | <dd> | |||
| <t>DOMAIN-NAME has the same format as dot-atom-text specified in Sec | <t>DOMAIN-NAME has the same format as "dot-atom-text" as specified i | |||
| tion 3.2.3 of | n | |||
| <xref target="RFC5322" format="default"/>. It must be the domain name of the ALT | <xref target="RFC5322" sectionFormat="of" section="3.2.3"/>. It must be the doma | |||
| O server.</t> | in name of the ALTO server.</t> | |||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="Services" numbered="true" toc="default"> | <section anchor="Services" numbered="true" toc="default"> | |||
| <name>Specification: Service Extensions</name> | <name>Specification: Service Extensions</name> | |||
| <section anchor="notations" numbered="true" toc="default"> | <section anchor="notation" numbered="true" toc="default"> | |||
| <name>Notations</name> | <name>Notation</name> | |||
| <t>This document uses the same syntax and notations as introduced in Sec | <t>This document uses the same syntax and notation as those introduced i | |||
| tion 8.2 of | n <xref target="RFC7285" sectionFormat="of" section="8.2"/> to specify the exten | |||
| RFC 7285 <xref target="RFC7285" format="default"/> to specify the extensions to | sions to existing ALTO resources and | |||
| existing ALTO resources and | ||||
| services.</t> | services.</t> | |||
| </section> | </section> | |||
| <section anchor="pvcm-spec" numbered="true" toc="default"> | <section anchor="pvcm-spec" numbered="true" toc="default"> | |||
| <name>Multipart Filtered Cost Map for Path Vector</name> | <name>Multipart Filtered Cost Map for Path Vector</name> | |||
| <t>This document introduces a new ALTO resource called multipart Filtere | <t>This document introduces a new ALTO resource called the "multipart fi | |||
| d Cost Map | ltered cost map | |||
| resource, which allows an ALTO server to provide other ALTO resources associated | resource", which allows an ALTO server to provide other ALTO resources associate | |||
| with the Cost Map resource in the same response.</t> | d | |||
| with the cost map resource in the same response.</t> | ||||
| <section anchor="media-type" numbered="true" toc="default"> | <section anchor="media-type" numbered="true" toc="default"> | |||
| <name>Media Type</name> | <name>Media Type</name> | |||
| <t>The media type of the multipart Filtered Cost Map resource is | <t>The media type of the multipart filtered cost map resource is | |||
| "multipart/related" and the required "type" parameter MUST have | "multipart/related", and the required "type" parameter <bcp14>MUST</bcp14> have | |||
| a value of "application/alto-costmap+json".</t> | a value of "application/alto-costmap+json".</t> | |||
| </section> | </section> | |||
| <section anchor="http-method" numbered="true" toc="default"> | <section anchor="http-method" numbered="true" toc="default"> | |||
| <name>HTTP Method</name> | <name>HTTP Method</name> | |||
| <t>The multipart Filtered Cost Map is requested using the HTTP POST me thod.</t> | <t>The multipart filtered cost map is requested using the HTTP POST me thod.</t> | |||
| </section> | </section> | |||
| <section anchor="pvcm-accept" numbered="true" toc="default"> | <section anchor="pvcm-accept" numbered="true" toc="default"> | |||
| <name>Accept Input Parameters</name> | <name>Accept Input Parameters</name> | |||
| <t>The input parameters of the multipart Filtered Cost Map are supplie d in the body | <t>The input parameters of the multipart filtered cost map are supplie d in the body | |||
| of an HTTP POST request. This document extends the input parameters to a | of an HTTP POST request. This document extends the input parameters to a | |||
| Filtered Cost Map, which is defined as a JSON object of type | filtered cost map, which is defined as a JSON object of type | |||
| ReqFilteredCostMap in Section 4.1.2 of RFC 8189 <xref target="RFC8189" format="d | ReqFilteredCostMap in <xref target="RFC8189" sectionFormat="of" section="4.1.2"/ | |||
| efault"/>, with a data | >, with a data | |||
| format indicated by the media type "application/alto-costmapfilter+json", which | format indicated by the media type "application/alto-costmapfilter+json", which | |||
| is a JSON object of type PVReqFilteredCostMap:</t> | is a JSON object of type PVReqFilteredCostMap:</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| object { | object { | |||
| [EntityPropertyName ane-property-names<0..*>;] | [EntityPropertyName ane-property-names<0..*>;] | |||
| } PVReqFilteredCostMap : ReqFilteredCostMap; | } PVReqFilteredCostMap : ReqFilteredCostMap; | |||
| ]]></artwork> | ]]></artwork> | |||
| <t>with fields:</t> | <t>with field:</t> | |||
| <dl> | <dl> | |||
| <dt> | <dt> | |||
| ane-property-names: </dt> | ane-property-names: </dt> | |||
| <dd> | <dd> | |||
| <t>A list of selected ANE properties to be included in the respons | <t>This field provides a list of selected ANE properties to be inc | |||
| e. Each | luded in the response. Each | |||
| property in this list MUST match one of the supported ANE properties indicated | property in this list <bcp14>MUST</bcp14> match one of the supported ANE propert | |||
| ies indicated | ||||
| in the resource's "ane-property-names" capability (<xref target="pvcm-cap" forma t="default"/>). If the | in the resource's "ane-property-names" capability (<xref target="pvcm-cap" forma t="default"/>). If the | |||
| field is not present, it MUST be interpreted as an empty list.</t> | field is not present, it <bcp14>MUST</bcp14> be interpreted as an empty list.</t > | |||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| <t>Example: Consider the network in <xref target="fig-dumbbell" format ="default"/>. If an ALTO client wants to | <t>Example: Consider the network in <xref target="fig-dumbbell" format ="default"/>. If an ALTO client wants to | |||
| query the "max-reservable-bandwidth" between PID1 and PID2, it can submit the | query the "max-reservable-bandwidth" setting between PID1 and PID2, it can submi t the | |||
| following request.</t> | following request.</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="http-message"><![CDATA[ | |||
| POST /costmap/pv HTTP/1.1 | POST /costmap/pv HTTP/1.1 | |||
| Host: alto.example.com | Host: alto.example.com | |||
| Accept: multipart/related;type=application/alto-costmap+json, | Accept: multipart/related;type=application/alto-costmap+json, | |||
| application/alto-error+json | application/alto-error+json | |||
| Content-Length: 201 | Content-Length: 212 | |||
| Content-Type: application/alto-costmapfilter+json | Content-Type: application/alto-costmapfilter+json | |||
| { | { | |||
| "cost-type": { | "cost-type": { | |||
| "cost-mode": "array", | "cost-mode": "array", | |||
| "cost-metric": "ane-path" | "cost-metric": "ane-path" | |||
| }, | }, | |||
| "pids": { | "pids": { | |||
| "srcs": [ "PID1" ], | "srcs": [ "PID1" ], | |||
| "dsts": [ "PID2" ] | "dsts": [ "PID2" ] | |||
| }, | }, | |||
| "ane-property-names": [ "max-reservable-bandwidth" ] | "ane-property-names": [ "max-reservable-bandwidth" ] | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="pvcm-cap" numbered="true" toc="default"> | <section anchor="pvcm-cap" numbered="true" toc="default"> | |||
| <name>Capabilities</name> | <name>Capabilities</name> | |||
| <t>The multipart Filtered Cost Map resource extends the capabilities d | <t>The multipart filtered cost map resource extends the capabilities d | |||
| efined | efined | |||
| in Section 4.1.1 of <xref target="RFC8189" format="default"/>. The capabilities | in <xref target="RFC8189" sectionFormat="of" section="4.1.1"/>. The capabilities | |||
| are defined by a JSON | are defined by a JSON | |||
| object of type PVFilteredCostMapCapabilities:</t> | object of type PVFilteredCostMapCapabilities:</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| object { | object { | |||
| [EntityPropertyName ane-property-names<0..*>;] | [EntityPropertyName ane-property-names<0..*>;] | |||
| } PVFilteredCostMapCapabilities : FilteredCostMapCapabilities; | } PVFilteredCostMapCapabilities : FilteredCostMapCapabilities; | |||
| ]]></artwork> | ]]></artwork> | |||
| <t>with fields:</t> | <t>with field:</t> | |||
| <dl> | <dl> | |||
| <dt> | <dt> | |||
| ane-property-names: </dt> | ane-property-names: </dt> | |||
| <dd> | <dd> | |||
| <t>Defines a list of ANE properties that can be returned. If the f | <t>This field provides a list of ANE properties that can be return | |||
| ield is not | ed. If the field is not | |||
| present, it MUST be interpreted as an empty list, indicating the ALTO server | present, it <bcp14>MUST</bcp14> be interpreted as an empty list, indicating that | |||
| cannot provide any ANE property.</t> | the ALTO server | |||
| cannot provide any ANE properties.</t> | ||||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| <t>This extension also introduces additional restrictions for the foll owing fields:</t> | <t>This extension also introduces additional restrictions for the foll owing fields:</t> | |||
| <dl> | <dl> | |||
| <dt> | <dt> | |||
| cost-type-names: </dt> | cost-type-names: </dt> | |||
| <dd> | <dd> | |||
| <t>The "cost-type-names" field MUST include the Path Vector cost t ype, | <t>The "cost-type-names" field <bcp14>MUST</bcp14> include the Pat h Vector cost type, | |||
| unless explicitly documented by a future extension. This also implies that the | unless explicitly documented by a future extension. This also implies that the | |||
| Path Vector cost type MUST be defined in the "cost-types" of the Information | Path Vector cost type <bcp14>MUST</bcp14> be defined in the "cost-types" of the | |||
| Resource Directory's "meta" field.</t> | IRD's "meta" field.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| cost-constraints: </dt> | cost-constraints: </dt> | |||
| <dd> | <dd> | |||
| <t>If the "cost-type-names" field includes the Path Vector cost ty pe, | <t>If the "cost-type-names" field includes the Path Vector cost ty pe, | |||
| "cost-constraints" field MUST be "false" or not present unless specifically | the "cost-constraints" field <bcp14>MUST</bcp14> be either "false" or not presen | |||
| t, | ||||
| unless specifically | ||||
| instructed by a future document.</t> | instructed by a future document.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| testable-cost-type-names (Section 4.1.1 of <xref target="RFC8189" format="defaul t"/>): </dt> | testable-cost-type-names (<xref target="RFC8189" sectionFormat="of" section="4.1 .1"/>): </dt> | |||
| <dd> | <dd> | |||
| <t>If the "cost-type-names" field includes the Path Vector cost ty pe and the | <t>If the "cost-type-names" field includes the Path Vector cost ty pe and the | |||
| "testable-cost-type-names" field is present, the Path Vector cost type MUST | "testable-cost-type-names" field is present, the Path Vector cost type <bcp14>MU | |||
| NOT be included in the "testable-cost-type-names" field unless specifically | ST | |||
| NOT</bcp14> be included in the "testable-cost-type-names" field unless specifica | ||||
| lly | ||||
| instructed by a future document.</t> | instructed by a future document.</t> | |||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| </section> | </section> | |||
| <section anchor="uses" numbered="true" toc="default"> | <section anchor="uses" numbered="true" toc="default"> | |||
| <name>Uses</name> | <name>Uses</name> | |||
| <t>This member MUST include the resource ID of the network map based o | <t>This member <bcp14>MUST</bcp14> include the resource ID of the netw | |||
| n which the | ork map based on which the | |||
| PIDs are defined. If this resource supports "persistent-entity-id", it MUST also | PIDs are defined. If this resource supports "persistent-entity-id", it <bcp14>MU | |||
| ST</bcp14> also | ||||
| include the defining resources of persistent ANEs that may appear in the respons e.</t> | include the defining resources of persistent ANEs that may appear in the respons e.</t> | |||
| </section> | </section> | |||
| <section anchor="pvcm-resp" numbered="true" toc="default"> | <section anchor="pvcm-resp" numbered="true" toc="default"> | |||
| <name>Response</name> | <name>Response</name> | |||
| <t>The response MUST indicate an error, using ALTO protocol error hand | <t>The response <bcp14>MUST</bcp14> indicate an error, using ALTO Prot | |||
| ling, as | ocol error handling as | |||
| defined in Section 8.5 of <xref target="RFC7285" format="default"/>, if the requ | defined in <xref target="RFC7285" sectionFormat="of" section="8.5"/>, if the req | |||
| est is invalid.</t> | uest is invalid.</t> | |||
| <t>The "Content-Type" header of the response MUST be "multipart/relate | <t>The "Content-Type" header field of the response <bcp14>MUST</bcp14> | |||
| d" as defined | be "multipart/related" as defined | |||
| by <xref target="RFC2387" format="default"/> with the following parameters:</t> | by <xref target="RFC2387" format="default"/>, with the following parameters:</t> | |||
| <dl> | <dl> | |||
| <dt> | <dt> | |||
| type: </dt> | type: </dt> | |||
| <dd> | <dd> | |||
| <t>The type parameter is mandatory and MUST be "application/alto-c | <t>The "type" parameter is mandatory and <bcp14>MUST</bcp14> be "a | |||
| ostmap+json". Note | pplication/alto-costmap+json". Note | |||
| that <xref target="RFC2387" format="default"/> permits both parameters with and | that <xref target="RFC2387" format="default"/> permits parameters both with and | |||
| without the double quotes.</t> | without double quotes.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| start: </dt> | start: </dt> | |||
| <dd> | <dd> | |||
| <t>The start parameter is as defined in <xref target="RFC2387" for | <t>The "start" parameter is as defined in <xref target="RFC2387" f | |||
| mat="default"/> and is optional. | ormat="default"/> and is optional. | |||
| If present, it MUST have the same value as the "Content-ID" header of the Path | If present, it <bcp14>MUST</bcp14> have the same value as the "Content-ID" heade | |||
| r field of the Path | ||||
| Vector part.</t> | Vector part.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| boundary: </dt> | boundary: </dt> | |||
| <dd> | <dd> | |||
| <t>The boundary parameter is as defined in Section 5.1.1 of <xref target="RFC2046" format="default"/> and is mandatory.</t> | <t>The "boundary" parameter is as defined in <xref target="RFC2046 " sectionFormat="of" section="5.1.1"/> and is mandatory.</t> | |||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| <t>The body of the response MUST consist of two parts:</t> | <t>The body of the response <bcp14>MUST</bcp14> consist of two parts:< /t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>The Path Vector part MUST include "Content-ID" and "Content-Typ | <t>The Path Vector part <bcp14>MUST</bcp14> include "Content-ID" a | |||
| e" in its | nd "Content-Type" in its | |||
| header. The "Content-Type" MUST be "application/alto-costmap+json". | header. The "Content-Type" <bcp14>MUST</bcp14> be "application/alto-costmap+json | |||
| The value of "Content-ID" MUST have the same format as the Part Content ID as | ". | |||
| The value of "Content-ID" <bcp14>MUST</bcp14> have the same format as the Part C | ||||
| ontent ID as | ||||
| specified in <xref target="part-rid-spec" format="default"/>. </t> | specified in <xref target="part-rid-spec" format="default"/>. </t> | |||
| <t> | <t> | |||
| The body of the Path Vector part MUST be a JSON object with the same format as | The body of the Path Vector part <bcp14>MUST</bcp14> be a JSON object with the s | |||
| defined in Section 11.2.3.6 of <xref target="RFC7285" format="default"/> when th | ame format as that | |||
| e "cost-type" field is | defined in <xref target="RFC7285" sectionFormat="of" section="11.2.3.6"/> when t | |||
| present in the input parameters and MUST be a JSON object with the same format | he "cost-type" field is | |||
| as defined in Section 4.1.3 of <xref target="RFC8189" format="default"/> if the | present in the input parameters and <bcp14>MUST</bcp14> be a JSON object with th | |||
| "multi-cost-types" field is | e same format | |||
| present. The JSON object MUST include the | as that defined in <xref target="RFC8189" sectionFormat="of" section="4.1.3"/> i | |||
| f the "multi-cost-types" field is | ||||
| present. The JSON object <bcp14>MUST</bcp14> include the | ||||
| "vtag" field in the "meta" field, which provides the version tag of the | "vtag" field in the "meta" field, which provides the version tag of the | |||
| returned CostMapData. The resource ID of the version tag MUST follow the | returned CostMapData object. The resource ID of the version tag <bcp14>MUST</bcp 14> follow the | |||
| format of </t> | format of </t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="rbnf"><![CDATA[ | |||
| resource-id '.' part-resource-id | resource-id '.' part-resource-id | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t> | <t> | |||
| where "resource-id" is the resource Id of the Path Vector resource, and | where "resource-id" is the resource ID of the Path Vector resource and | |||
| "part-resource-id" has the same value as the PART-RESOURCE-ID in the | "part-resource-id" has the same value as the PART-RESOURCE-ID in the | |||
| "Content-ID" of the Path Vector part. | "Content-ID" of the Path Vector part. | |||
| The "meta" field MUST also include the "dependent-vtags" field, whose value is | The "meta" field <bcp14>MUST</bcp14> also include the "dependent-vtags" field, w hose value is | |||
| a single-element array to indicate the version tag of the network map used, | a single-element array to indicate the version tag of the network map used, | |||
| where the network map is specified in the "uses" attribute of the multipart | where the network map is specified in the "uses" attribute of the multipart | |||
| Filtered Cost Map resource in IRD.</t> | filtered cost map resource in the IRD.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The Unified Property Map part MUST also include "Content-ID" an | <t>The entity property map part <bcp14>MUST</bcp14> also include " | |||
| d | Content-ID" and | |||
| "Content-Type" in its header. The "Content-Type" MUST be | "Content-Type" in its header. The "Content-Type" <bcp14>MUST</bcp14> be | |||
| "application/alto-propmap+json". The value of "Content-ID" MUST have the same | "application/alto-propmap+json". The value of "Content-ID" <bcp14>MUST</bcp14> h | |||
| ave the same | ||||
| format as the Part Content ID as specified in <xref target="part-rid-spec" forma t="default"/>. </t> | format as the Part Content ID as specified in <xref target="part-rid-spec" forma t="default"/>. </t> | |||
| <t> | <t> | |||
| The body of the Unified Property Map part is a JSON object with the same | The body of the entity property map part is a JSON object with the same | |||
| format as defined in Section 7.6 of <xref target="I-D.ietf-alto-unified-props-ne | format as that defined in <xref target="RFC9240" sectionFormat="of" section="7.6 | |||
| w" format="default"/>. The | "/>. The | |||
| JSON object MUST include the "dependent-vtags" field in the "meta" field. The | JSON object <bcp14>MUST</bcp14> include the "dependent-vtags" field in the "meta | |||
| value of the "dependent-vtags" field MUST be an array of VersionTag objects as | " field. The | |||
| defined by Section 10.3 of <xref target="RFC7285" format="default"/>. The "vtag" | value of the "dependent-vtags" field <bcp14>MUST</bcp14> be an array of VersionT | |||
| of the Path Vector part MUST | ag objects as | |||
| be included in the "dependent-vtags". If "persistent-entity-id" is requested, th | defined by <xref target="RFC7285" sectionFormat="of" section="10.3"/>. The "vtag | |||
| e | " of the Path Vector part <bcp14>MUST</bcp14> | |||
| be included in the "dependent-vtags" field. If "persistent-entity-id" is request | ||||
| ed, the | ||||
| version tags of the dependent resources that may expose the entities in the | version tags of the dependent resources that may expose the entities in the | |||
| response MUST also be included. </t> | response <bcp14>MUST</bcp14> also be included. </t> | |||
| <t> | <t> | |||
| The PropertyMapData has one member for each ANEName that appears in the Path | The PropertyMapData object has one member for each ANEName that appears in the P ath | |||
| Vector part, which is an entity identifier belonging to the self-defined | Vector part, which is an entity identifier belonging to the self-defined | |||
| entity domain as defined in Section 5.1.2.3 of | entity domain as defined in | |||
| <xref target="I-D.ietf-alto-unified-props-new" format="default"/>. The EntityPro | <xref target="RFC9240" sectionFormat="of" section="5.1.2.3"/>. The EntityProps o | |||
| ps for each ANE has one | bject for each ANE has one | |||
| member for each property that is both 1) associated with the ANE, and 2) | member for each property that is both 1) associated with the ANE and 2) | |||
| specified in the "ane-property-names" in the request. If the Path Vector cost | specified in the "ane-property-names" field in the request. If the Path Vector c | |||
| ost | ||||
| type is not included in the "cost-type" field or the "multi-cost-type" field, | type is not included in the "cost-type" field or the "multi-cost-type" field, | |||
| the "property-map" field MUST be present and the value MUST be an empty object | the "property-map" field <bcp14>MUST</bcp14> be present and the value <bcp14>MUS T</bcp14> be an empty object | |||
| ({}).</t> | ({}).</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>A complete and valid response MUST include both the Path Vector par | <t>A complete and valid response <bcp14>MUST</bcp14> include both the | |||
| t and the | Path Vector part and the | |||
| Property Map part in the multipart message. If any part is NOT present, the | property map part in the multipart message. If any part is <strong>not</strong> | |||
| client MUST discard the received information and send another request if | present, the | |||
| client <bcp14>MUST</bcp14> discard the received information and send another req | ||||
| uest if | ||||
| necessary.</t> | necessary.</t> | |||
| <t>According to <xref target="RFC2387" format="default"/>, the Path Ve | <t>The Path Vector part, whose media type is the same as the "type" pa | |||
| ctor part, whose media type is | rameter of the multipart response message, is the root body part as defined in | |||
| the same as the "type" parameter of the multipart response message, is the root | <xref target="RFC2387" format="default"/>. Thus, it is the element that the appl | |||
| object. Thus, it is the element the application processes first. Even though the | ication processes first. Even though the | |||
| "start" parameter allows it to be placed anywhere in the part sequence, it is | "start" parameter allows it to be placed anywhere in the part sequence, it is | |||
| RECOMMENDED that the parts arrive in the same order as they are processed, i.e., | <bcp14>RECOMMENDED</bcp14> that the parts arrive in the same order as they are p | |||
| the Path Vector part is always put as the first part, followed by the Property | rocessed, i.e., | |||
| Map part. When doing so, an ALTO server MAY choose not to set the "start" | the Path Vector part is always placed as the first part, followed by the propert | |||
| parameter, which implies the first part is the root object.</t> | y | |||
| <t>Example: Consider the network in <xref target="fig-dumbbell" format | map part. When doing so, an ALTO server <bcp14>MAY</bcp14> choose not to set the | |||
| ="default"/>. The response of the example | "start" | |||
| parameter, which implies that the first part is the object root.</t> | ||||
| <t>Example: Consider the network in <xref target="fig-dumbbell" format | ||||
| ="default"/>. The response to the example | ||||
| request in <xref target="pvcm-accept" format="default"/> is as follows, where "A NE1" represents the | request in <xref target="pvcm-accept" format="default"/> is as follows, where "A NE1" represents the | |||
| aggregation of all the switches in the network.</t> | aggregation of all the switches in the network.</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="http-message"><![CDATA[ | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Content-Length: 859 | Content-Length: 911 | |||
| Content-Type: multipart/related; boundary=example-1; | Content-Type: multipart/related; boundary=example-1; | |||
| type=application/alto-costmap+json | type=application/alto-costmap+json | |||
| --example-1 | --example-1 | |||
| Content-ID: <costmap@alto.example.com> | Content-ID: <costmap@alto.example.com> | |||
| Content-Type: application/alto-costmap+json | Content-Type: application/alto-costmap+json | |||
| { | { | |||
| "meta": { | "meta": { | |||
| "vtag": { | "vtag": { | |||
| skipping to change at line 1297 ¶ | skipping to change at line 1296 ¶ | |||
| }, | }, | |||
| "dependent-vtags": [ | "dependent-vtags": [ | |||
| { | { | |||
| "resource-id": "my-default-networkmap", | "resource-id": "my-default-networkmap", | |||
| "tag": "75ed013b3cb58f896e839582504f6228" | "tag": "75ed013b3cb58f896e839582504f6228" | |||
| } | } | |||
| ], | ], | |||
| "cost-type": { "cost-mode": "array", "cost-metric": "ane-path" } | "cost-type": { "cost-mode": "array", "cost-metric": "ane-path" } | |||
| }, | }, | |||
| "cost-map": { | "cost-map": { | |||
| "PID1": { "PID2": ["ANE1"] } | "PID1": { "PID2": [ "ANE1" ] } | |||
| } | } | |||
| } | } | |||
| --example-1 | --example-1 | |||
| Content-ID: <propmap@alto.example.com> | Content-ID: <propmap@alto.example.com> | |||
| Content-Type: application/alto-propmap+json | Content-Type: application/alto-propmap+json | |||
| { | { | |||
| "meta": { | "meta": { | |||
| "dependent-vtags": [ | "dependent-vtags": [ | |||
| { | { | |||
| "resource-id": "filtered-cost-map-pv.costmap", | "resource-id": "filtered-cost-map-pv.costmap", | |||
| "tag": "fb20b76204814e9db37a51151faaaef2" | "tag": "fb20b76204814e9db37a51151faaaef2" | |||
| } | } | |||
| ] | ] | |||
| }, | }, | |||
| "property-map": { | "property-map": { | |||
| ".ane:ANE1": { "max-reservable-bandwidth": 100000000 } | ".ane:ANE1": { "max-reservable-bandwidth": 100000000 } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | --example-1 | |||
| <!-- TODO: Error Handling --> | ]]></sourcecode> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="pvecs-spec" numbered="true" toc="default"> | <section anchor="pvecs-spec" numbered="true" toc="default"> | |||
| <name>Multipart Endpoint Cost Service for Path Vector</name> | <name>Multipart Endpoint Cost Service for Path Vector</name> | |||
| <t>This document introduces a new ALTO resource called multipart Endpoin | <t>This document introduces a new ALTO resource called the "multipart En | |||
| t Cost | dpoint Cost | |||
| Service, which allows an ALTO server to provide other ALTO resources associated | Service", which allows an ALTO server to provide other ALTO resources associated | |||
| with the Endpoint Cost Service resource in the same response.</t> | with the Endpoint Cost Service resource in the same response.</t> | |||
| <section anchor="media-type-1" numbered="true" toc="default"> | <section anchor="media-type-1" numbered="true" toc="default"> | |||
| <name>Media Type</name> | <name>Media Type</name> | |||
| <t>The media type of the multipart Endpoint Cost Service resource is | <t>The media type of the multipart Endpoint Cost Service resource is | |||
| "multipart/related" and the required "type" parameter MUST have | "multipart/related", and the required "type" parameter <bcp14>MUST</bcp14> have | |||
| a value of "application/alto-endpointcost+json".</t> | a value of "application/alto-endpointcost+json".</t> | |||
| </section> | </section> | |||
| <section anchor="http-method-1" numbered="true" toc="default"> | <section anchor="http-method-1" numbered="true" toc="default"> | |||
| <name>HTTP Method</name> | <name>HTTP Method</name> | |||
| <t>The multipart Endpoint Cost Service resource is requested using the HTTP POST method.</t> | <t>The multipart Endpoint Cost Service resource is requested using the HTTP POST method.</t> | |||
| </section> | </section> | |||
| <section anchor="pvecs-accept" numbered="true" toc="default"> | <section anchor="pvecs-accept" numbered="true" toc="default"> | |||
| <name>Accept Input Parameters</name> | <name>Accept Input Parameters</name> | |||
| <t>The input parameters of the multipart Endpoint Cost Service resourc e are | <t>The input parameters of the multipart Endpoint Cost Service resourc e are | |||
| supplied in the body of an HTTP POST request. This document extends the input | supplied in the body of an HTTP POST request. This document extends the input | |||
| parameters to an Endpoint Cost Service, which is defined as a JSON object of | parameters to an Endpoint Cost Service, which is defined as a JSON object of | |||
| type ReqEndpointCost in Section 4.2.2 of <xref target="RFC8189" format="default" />, with a data | type ReqEndpointCostMap in <xref target="RFC8189" sectionFormat="of" section="4. 2.2"/>, with a data | |||
| format indicated by the media type "application/alto-endpointcostparams+json", | format indicated by the media type "application/alto-endpointcostparams+json", | |||
| which is a JSON object of type PVReqEndpointCost:</t> | which is a JSON object of type PVReqEndpointCostMap:</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| object { | object { | |||
| [EntityPropertyName ane-property-names<0..*>;] | [EntityPropertyName ane-property-names<0..*>;] | |||
| } PVReqEndpointcost : ReqEndpointcostMap; | } PVReqEndpointCostMap : ReqEndpointCostMap; | |||
| ]]></artwork> | ]]></artwork> | |||
| <t>with fields:</t> | <t>with field:</t> | |||
| <dl> | <dl> | |||
| <dt> | <dt> | |||
| ane-property-names: </dt> | ane-property-names: </dt> | |||
| <dd> | <dd> | |||
| <t>This document defines the "ane-property-names" in PVReqEndpoint cost as the | <t>This document defines the "ane-property-names" field in PVReqEn dpointCostMap as being the | |||
| same as in PVReqFilteredCostMap. See <xref target="pvcm-accept" format="default" />.</t> | same as in PVReqFilteredCostMap. See <xref target="pvcm-accept" format="default" />.</t> | |||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| <t>Example: Consider the network in <xref target="fig-dumbbell" format ="default"/>. If an ALTO client wants to | <t>Example: Consider the network in <xref target="fig-dumbbell" format ="default"/>. If an ALTO client wants to | |||
| query the "max-reservable-bandwidth" between eh1 and eh2, it can submit the | query the "max-reservable-bandwidth" setting between "eh1" and "eh2", it can sub mit the | |||
| following request.</t> | following request.</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="http-message"><![CDATA[ | |||
| POST /ecs/pv HTTP/1.1 | POST /ecs/pv HTTP/1.1 | |||
| Host: alto.example.com | Host: alto.example.com | |||
| Accept: multipart/related;type=application/alto-endpointcost+json, | Accept: multipart/related;type=application/alto-endpointcost+json, | |||
| application/alto-error+json | application/alto-error+json | |||
| Content-Length: 227 | Content-Length: 238 | |||
| Content-Type: application/alto-endpointcostparams+json | Content-Type: application/alto-endpointcostparams+json | |||
| { | { | |||
| "cost-type": { | "cost-type": { | |||
| "cost-mode": "array", | "cost-mode": "array", | |||
| "cost-metric": "ane-path" | "cost-metric": "ane-path" | |||
| }, | }, | |||
| "endpoints": { | "endpoints": { | |||
| "srcs": [ "ipv4:192.0.2.2" ], | "srcs": [ "ipv4:192.0.2.2" ], | |||
| "dsts": [ "ipv4:192.0.2.18" ] | "dsts": [ "ipv4:192.0.2.18" ] | |||
| }, | }, | |||
| "ane-property-names": [ "max-reservable-bandwidth" ] | "ane-property-names": [ "max-reservable-bandwidth" ] | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="pvecs-cap" numbered="true" toc="default"> | <section anchor="pvecs-cap" numbered="true" toc="default"> | |||
| <name>Capabilities</name> | <name>Capabilities</name> | |||
| <t>The capabilities of the multipart Endpoint Cost Service resource ar e defined by | <t>The capabilities of the multipart Endpoint Cost Service resource ar e defined by | |||
| a JSON object of type PVEndpointcostCapabilities, which is defined as the same | a JSON object of type PVEndpointCostCapabilities, which is defined as being the same | |||
| as PVFilteredCostMapCapabilities. See <xref target="pvcm-cap" format="default"/> .</t> | as PVFilteredCostMapCapabilities. See <xref target="pvcm-cap" format="default"/> .</t> | |||
| </section> | </section> | |||
| <section anchor="uses-1" numbered="true" toc="default"> | <section anchor="uses-1" numbered="true" toc="default"> | |||
| <name>Uses</name> | <name>Uses</name> | |||
| <t>If this resource supports "persistent-entity-id", it MUST also incl ude the | <t>If this resource supports "persistent-entity-id", it <bcp14>MUST</b cp14> also include the | |||
| defining resources of persistent ANEs that may appear in the response.</t> | defining resources of persistent ANEs that may appear in the response.</t> | |||
| </section> | </section> | |||
| <section anchor="pvecs-resp" numbered="true" toc="default"> | <section anchor="pvecs-resp" numbered="true" toc="default"> | |||
| <name>Response</name> | <name>Response</name> | |||
| <t>The response MUST indicate an error, using ALTO protocol error hand | <t>The response <bcp14>MUST</bcp14> indicate an error, using ALTO Prot | |||
| ling, as | ocol error handling as | |||
| defined in Section 8.5 of <xref target="RFC7285" format="default"/>, if the requ | defined in <xref target="RFC7285" sectionFormat="of" section="8.5"/>, if the req | |||
| est is invalid.</t> | uest is invalid.</t> | |||
| <t>The "Content-Type" header of the response MUST be "multipart/relate | <t>The "Content-Type" header field of the response <bcp14>MUST</bcp14> | |||
| d" as defined | be "multipart/related" as defined | |||
| by <xref target="RFC7285" format="default"/> with the following parameters:</t> | by <xref target="RFC2387" format="default"/>, with the following parameters:</t> | |||
| <dl> | <dl> | |||
| <dt> | <dt> | |||
| type: </dt> | type: </dt> | |||
| <dd> | <dd> | |||
| <t>The type parameter MUST be "application/alto-endpointcost+json" and is mandatory.</t> | <t>The "type" parameter <bcp14>MUST</bcp14> be "application/alto-e ndpointcost+json" and is mandatory.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| start: </dt> | start: </dt> | |||
| <dd> | <dd> | |||
| <t>The start parameter is as defined in <xref target="pvcm-resp" f ormat="default"/>.</t> | <t>The "start" parameter is as defined in <xref target="pvcm-resp" format="default"/>.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| boundary: </dt> | boundary: </dt> | |||
| <dd> | <dd> | |||
| <t>The boundary parameter is as defined in Section 5.1.1 of <xref target="RFC2046" format="default"/> and is mandatory.</t> | <t>The "boundary" parameter is as defined in <xref target="RFC2046 " sectionFormat="of" section="5.1.1"/> and is mandatory.</t> | |||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| <t>The body MUST consist of two parts:</t> | <t>The body of the response <bcp14>MUST</bcp14> consist of two parts:< /t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li> | <li> | |||
| <t>The Path Vector part MUST include "Content-ID" and "Content-Typ e" in its | <t>The Path Vector part <bcp14>MUST</bcp14> include "Content-ID" a nd "Content-Type" in its | |||
| header. | header. | |||
| The "Content-Type" MUST be "application/alto-endpointcost+json". | The "Content-Type" <bcp14>MUST</bcp14> be "application/alto-endpointcost+json". | |||
| The value of "Content-ID" MUST have the same format as the Part Content ID as | The value of "Content-ID" <bcp14>MUST</bcp14> have the same format as the Part C | |||
| ontent ID as | ||||
| specified in <xref target="part-rid-spec" format="default"/>. </t> | specified in <xref target="part-rid-spec" format="default"/>. </t> | |||
| <t> | <t> | |||
| The body of the Path Vector part MUST be a JSON object with the same format as | The body of the Path Vector part <bcp14>MUST</bcp14> be a JSON object with the s | |||
| defined in Section 11.5.1.6 of <xref target="RFC7285" format="default"/> when th | ame format as that | |||
| e "cost-type" field is | defined in <xref target="RFC7285" sectionFormat="of" section="11.5.1.6"/> when t | |||
| present in the input parameters and MUST be a JSON object with the same format | he "cost-type" field is | |||
| as defined in Section 4.2.3 of <xref target="RFC8189" format="default"/> if the | present in the input parameters and <bcp14>MUST</bcp14> be a JSON object with th | |||
| "multi-cost-types" field is | e same format | |||
| present. The JSON object MUST include the | as that defined in <xref target="RFC8189" sectionFormat="of" section="4.2.3"/> i | |||
| f the "multi-cost-types" field is | ||||
| present. The JSON object <bcp14>MUST</bcp14> include the | ||||
| "vtag" field in the "meta" field, which provides the version tag of the returned | "vtag" field in the "meta" field, which provides the version tag of the returned | |||
| EndpointCostMapData. The resource ID of the version tag MUST follow the format o | EndpointCostMapData object. The resource ID of the version tag <bcp14>MUST</bcp1 | |||
| f </t> | 4> follow the format of </t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="rbnf"><![CDATA[ | |||
| resource-id '.' part-resource-id | resource-id '.' part-resource-id | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t> | <t> | |||
| where "resource-id" is the resource Id of the Path Vector resource, and | where "resource-id" is the resource ID of the Path Vector resource and | |||
| "part-resource-id" has the same value as the PART-RESOURCE-ID in the "Content-ID " | "part-resource-id" has the same value as the PART-RESOURCE-ID in the "Content-ID " | |||
| of the Path Vector part.</t> | of the Path Vector part.</t> | |||
| </li> | </li> | |||
| <li> | <li> | |||
| <t>The Unified Property Map part MUST also include "Content-ID" an | <t>The entity property map part <bcp14>MUST</bcp14> also include " | |||
| d | Content-ID" and | |||
| "Content-Type" in its header. The "Content-Type" MUST be | "Content-Type" in its header. The "Content-Type" <bcp14>MUST</bcp14> be | |||
| "application/alto-propmap+json". | "application/alto-propmap+json". | |||
| The value of "Content-ID" MUST have the same format as the Part Content ID as | The value of "Content-ID" <bcp14>MUST</bcp14> have the same format as the Part C ontent ID as | |||
| specified in <xref target="part-rid-spec" format="default"/>. </t> | specified in <xref target="part-rid-spec" format="default"/>. </t> | |||
| <t> | <t> | |||
| The body of the Unified Property Map part MUST be a JSON object with the same | The body of the entity property map part <bcp14>MUST</bcp14> be a JSON object wi | |||
| format as defined in Section 7.6 of <xref target="I-D.ietf-alto-unified-props-ne | th the same | |||
| w" format="default"/>. The | format as that defined in <xref target="RFC9240" sectionFormat="of" section="7.6 | |||
| JSON object MUST include the "dependent-vtags" field in the "meta" field. The | "/>. The | |||
| value of the "dependent-vtags" field MUST be an array of VersionTag objects as | JSON object <bcp14>MUST</bcp14> include the "dependent-vtags" field in the "meta | |||
| defined by Section 10.3 of <xref target="RFC7285" format="default"/>. The "vtag" | " field. The | |||
| of the Path Vector part MUST | value of the "dependent-vtags" field <bcp14>MUST</bcp14> be an array of VersionT | |||
| be included in the "dependent-vtags". If "persistent-entity-id" is requested, th | ag objects as | |||
| e | defined by <xref target="RFC7285" sectionFormat="of" section="10.3"/>. The "vtag | |||
| " of the Path Vector part <bcp14>MUST</bcp14> | ||||
| be included in the "dependent-vtags" field. If "persistent-entity-id" is request | ||||
| ed, the | ||||
| version tags of the dependent resources that may expose the entities in the | version tags of the dependent resources that may expose the entities in the | |||
| response MUST also be included. </t> | response <bcp14>MUST</bcp14> also be included. </t> | |||
| <t> | <t> | |||
| The PropertyMapData has one member for each ANEName that appears in the Path | The PropertyMapData object has one member for each ANEName that appears in the P ath | |||
| Vector part, which is an entity identifier belonging to the self-defined | Vector part, which is an entity identifier belonging to the self-defined | |||
| entity domain as defined in Section 5.1.2.3 of | entity domain as defined in | |||
| <xref target="I-D.ietf-alto-unified-props-new" format="default"/>. The EntityPro | <xref target="RFC9240" sectionFormat="of" section="5.1.2.3"/>. The EntityProps o | |||
| ps for each ANE has one | bject for each ANE has one | |||
| member for each property that is both 1) associated with the ANE, and 2) | member for each property that is both 1) associated with the ANE and 2) | |||
| specified in the "ane-property-names" in the request. If the Path Vector cost | specified in the "ane-property-names" field in the request. If the Path Vector c | |||
| ost | ||||
| type is not included in the "cost-type" field or the "multi-cost-type" field, | type is not included in the "cost-type" field or the "multi-cost-type" field, | |||
| the "property-map" field MUST be present and the value MUST be an empty object | the "property-map" field <bcp14>MUST</bcp14> be present and the value <bcp14>MUS T</bcp14> be an empty object | |||
| ({}).</t> | ({}).</t> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| <t>A complete and valid response MUST include both the Path Vector par | <t>A complete and valid response <bcp14>MUST</bcp14> include both the | |||
| t and the | Path Vector part and the | |||
| Property Map part in the multipart message. If any part is NOT present, the | property map part in the multipart message. If any part is <strong>not</strong> | |||
| client MUST discard the received information and send another request if | present, the | |||
| client <bcp14>MUST</bcp14> discard the received information and send another req | ||||
| uest if | ||||
| necessary.</t> | necessary.</t> | |||
| <t>According to <xref target="RFC2387" format="default"/>, the Path Ve | <t>The Path Vector part, whose media type is the same as the "type" pa | |||
| ctor part, whose media type is | rameter of the multipart response message, is the root body part as defined in | |||
| the same as the "type" parameter of the multipart response message, is the root | <xref target="RFC2387" format="default"/>. Thus, it is the element that the appl | |||
| object. Thus, it is the element the application processes first. Even though the | ication processes first. Even though the | |||
| "start" parameter allows it to be placed anywhere in the part sequence, it is | "start" parameter allows it to be placed anywhere in the part sequence, it is | |||
| RECOMMENDED that the parts arrive in the same order as they are processed, i.e., | <bcp14>RECOMMENDED</bcp14> that the parts arrive in the same order as they are p | |||
| the Path Vector part is always put as the first part, followed by the Property | rocessed, i.e., | |||
| Map part. When doing so, an ALTO server MAY choose not to set the "start" | the Path Vector part is always placed as the first part, followed by the propert | |||
| parameter, which implies the first part is the root object.</t> | y | |||
| <t>Example: Consider the network in <xref target="fig-dumbbell" format | map part. When doing so, an ALTO server <bcp14>MAY</bcp14> choose not to set the | |||
| ="default"/>. The response of the example | "start" | |||
| parameter, which implies that the first part is the object root.</t> | ||||
| <t>Example: Consider the network in <xref target="fig-dumbbell" format | ||||
| ="default"/>. The response to the example | ||||
| request in <xref target="pvecs-accept" format="default"/> is as follows.</t> | request in <xref target="pvecs-accept" format="default"/> is as follows.</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="http-message"><![CDATA[ | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Content-Length: 845 | Content-Length: 899 | |||
| Content-Type: multipart/related; boundary=example-1; | Content-Type: multipart/related; boundary=example-1; | |||
| type=application/alto-endpointcost+json | type=application/alto-endpointcost+json | |||
| --example-1 | --example-1 | |||
| Content-ID: <ecs@alto.example.com> | Content-ID: <ecs@alto.example.com> | |||
| Content-Type: application/alto-endpointcost+json | Content-Type: application/alto-endpointcost+json | |||
| { | { | |||
| "meta": { | "meta": { | |||
| "vtag": { | "vtag": { | |||
| skipping to change at line 1507 ¶ | skipping to change at line 1504 ¶ | |||
| }, | }, | |||
| "dependent-vtags": [ | "dependent-vtags": [ | |||
| { | { | |||
| "resource-id": "my-default-networkmap", | "resource-id": "my-default-networkmap", | |||
| "tag": "677fe5f4066848d282ece213a84f9429" | "tag": "677fe5f4066848d282ece213a84f9429" | |||
| } | } | |||
| ], | ], | |||
| "cost-type": { "cost-mode": "array", "cost-metric": "ane-path" } | "cost-type": { "cost-mode": "array", "cost-metric": "ane-path" } | |||
| }, | }, | |||
| "cost-map": { | "cost-map": { | |||
| "ipv4:192.0.2.2": { "ipv4:192.0.2.18": ["ANE1"] } | "ipv4:192.0.2.2": { "ipv4:192.0.2.18": [ "ANE1" ] } | |||
| } | } | |||
| } | } | |||
| --example-1 | --example-1 | |||
| Content-ID: <propmap@alto.example.com> | Content-ID: <propmap@alto.example.com> | |||
| Content-Type: application/alto-propmap+json | Content-Type: application/alto-propmap+json | |||
| { | { | |||
| "meta": { | "meta": { | |||
| "dependent-vtags": [ | "dependent-vtags": [ | |||
| { | { | |||
| "resource-id": "ecs-pv.ecs", | "resource-id": "ecs-pv.ecs", | |||
| "tag": "ec137bb78118468c853d5b622ac003f1" | "tag": "ec137bb78118468c853d5b622ac003f1" | |||
| } | } | |||
| ] | ] | |||
| }, | }, | |||
| "property-map": { | "property-map": { | |||
| ".ane:ANE1": { "max-reservable-bandwidth": 100000000 } | ".ane:ANE1": { "max-reservable-bandwidth": 100000000 } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | --example-1 | |||
| ]]></sourcecode> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="Examples" numbered="true" toc="default"> | <section anchor="Examples" numbered="true" toc="default"> | |||
| <name>Examples</name> | <name>Examples</name> | |||
| <t>This section lists some examples of Path Vector queries and the corresp onding | <t>This section lists some examples of Path Vector queries and the corresp onding | |||
| responses. Some long lines are truncated for better readability.</t> | responses. Some long lines are truncated for better readability.</t> | |||
| <section anchor="sample-setup" numbered="true" toc="default"> | <section anchor="sample-setup" numbered="true" toc="default"> | |||
| <name>Sample Setup</name> | <name>Sample Setup</name> | |||
| <t><xref target="fig-pe" format="default"/> illustrates the network prop | ||||
| erties and thus the message contents. There | ||||
| are three subnetworks (NET1, NET2, and NET3) and two interconnection links (L1 a | ||||
| nd | ||||
| L2). It is assumed that each subnetwork has sufficiently large bandwidth to be | ||||
| reserved.</t> | ||||
| <figure anchor="fig-pe"> | <figure anchor="fig-pe"> | |||
| <name>Examples of ANE Properties</name> | <name>Examples of ANE Properties</name> | |||
| <artwork type="drawing" align="center" name="" alt=""><![CDATA[ | <artwork type="" align="center" name="" alt=""><![CDATA[ | |||
| ----- L1 | ----- L1 | |||
| / | / | |||
| PID1 +----------+ 10 Gbps +----------+ PID3 | PID1 +----------+ 10 Gbps +----------+ PID3 | |||
| 192.0.2.0/28+-+ +------+ +---------+ +--+192.0.2.32/28 | 192.0.2.0/28+-+ +------+ +---------+ +--+192.0.2.32/28 | |||
| | | MEC1 | | | | 2001:db8::3:0/16 | | | MEC1 | | | | 2001:db8::3:0/16 | |||
| | +------+ | +-----+ | | | +------+ | +-----+ | | |||
| PID2 | | | +----------+ | PID2 | | | +----------+ | |||
| 192.0.2.16/28+-+ | | NET3 | 192.0.2.16/28+-+ | | NET3 | |||
| | | | 15 Gbps | | | | 15 Gbps | |||
| | | | \ | | | | \ | |||
| +----------+ | -------- L2 | +----------+ | -------- L2 | |||
| NET1 | | NET1 | | |||
| +----------+ | +----------+ | |||
| | +------+ | PID4 | | +------+ | PID4 | |||
| | | MEC2 | +--+192.0.2.48/28 | | | MEC2 | +--+192.0.2.48/28 | |||
| | +------+ | 2001:db8::4:0/16 | | +------+ | 2001:db8::4:0/16 | |||
| +----------+ | +----------+ | |||
| NET2 | NET2 | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t>In this document, <xref target="fig-pe" format="default"/> is used to | ||||
| illustrate the message contents. There | ||||
| are 3 sub-networks (NET1, NET2 and NET3) and two interconnection links (L1 and | ||||
| L2). It is assumed that each sub-network has sufficiently large bandwidth to be | ||||
| reserved.</t> | ||||
| </section> | </section> | |||
| <section anchor="example-ird" numbered="true" toc="default"> | <section anchor="example-ird" numbered="true" toc="default"> | |||
| <name>Information Resource Directory</name> | <name>Information Resource Directory</name> | |||
| <t>To give a comprehensive example of the extension defined in this docu ment, we | <t>To give a comprehensive example of the extension defined in this docu ment, we | |||
| consider the network in <xref target="fig-pe" format="default"/>. Assume that th e ALTO server provides the | consider the network in <xref target="fig-pe" format="default"/>. Assume that th e ALTO server provides the | |||
| following information resources:</t> | following information resources:</t> | |||
| <ul spacing="normal"> | <dl spacing="normal"> | |||
| <li>"my-default-networkmap": A Network Map resource which contains the | <dt>"my-default-networkmap":</dt><dd>A network map resource that conta | |||
| PIDs in the | ins the PIDs in the | |||
| network.</li> | network.</dd> | |||
| <li>"filtered-cost-map-pv": A Multipart Filtered Cost Map resource for | <dt>"filtered-cost-map-pv":</dt><dd>A multipart filtered cost map reso | |||
| Path Vector, | urce for the Path Vector. Exposes the "max-reservable-bandwidth" property for t | |||
| which exposes the "max-reservable-bandwidth" property for the PIDs in | he PIDs in | |||
| "my-default-networkmap".</li> | "my-default-networkmap".</dd> | |||
| <li>"ane-props": A filtered Unified Property resource that exposes the | <dt>"ane-props":</dt><dd>A filtered entity property resource that expo | |||
| information for persistent ANEs in the network.</li> | ses the | |||
| <li>"endpoint-cost-pv": A Multipart Endpoint Cost Service for Path Vec | information for persistent ANEs in the network.</dd> | |||
| tor, which | <dt>"endpoint-cost-pv":</dt><dd>A multipart Endpoint Cost Service for | |||
| exposes the "max-reservable-bandwidth" and the "persistent-entity-id" properties | the Path Vector. Exposes the "max-reservable-bandwidth" and "persistent-entity- | |||
| .</li> | id" properties.</dd> | |||
| <li>"update-pv": An Update Stream service, which provides the incremen | <dt>"update-pv":</dt><dd>An update stream service that provides the in | |||
| tal update | cremental update | |||
| service for the "endpoint-cost-pv" service.</li> | service for the "endpoint-cost-pv" service.</dd> | |||
| <li>"multicost-pv": A Multipart Endpoint Cost Service with both Multi- | <dt>"multicost-pv":</dt><dd>A multipart Endpoint Cost Service with bot | |||
| Cost and | h the Multi-Cost extension and Path Vector extension enabled.</dd> | |||
| Path Vector.</li> | </dl> | |||
| </ul> | <t>Below is the IRD of the example ALTO server. To | |||
| <t>Below is the Information Resource Directory of the example ALTO serve | enable the extension defined in this document, the Path Vector cost type | |||
| r. To | (<xref target="cost-type-spec" format="default"/>), represented by "path-vector" | |||
| enable the extension defined in this document, the "path-vector" cost type | below, | |||
| (<xref target="cost-type-spec" format="default"/>) is defined in the "cost-types | is defined in the "cost-types" of the "meta" field and is | |||
| " of the "meta" field, and is | ||||
| included in the "cost-type-names" of resources "filtered-cost-map-pv" and | included in the "cost-type-names" of resources "filtered-cost-map-pv" and | |||
| "endpoint-cost-pv".</t> | "endpoint-cost-pv".</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
| { | { | |||
| "meta": { | "meta": { | |||
| "cost-types": { | "cost-types": { | |||
| "path-vector": { | "path-vector": { | |||
| "cost-mode": "array", | "cost-mode": "array", | |||
| "cost-metric": "ane-path" | "cost-metric": "ane-path" | |||
| }, | }, | |||
| "num-rc": { | "num-rc": { | |||
| "cost-mode": "numerical", | "cost-mode": "numerical", | |||
| "cost-metric": "routingcost" | "cost-metric": "routingcost" | |||
| skipping to change at line 1669 ¶ | skipping to change at line 1665 ¶ | |||
| "max-cost-types": 2, | "max-cost-types": 2, | |||
| "testable-cost-type-names": [ "num-rc" ], | "testable-cost-type-names": [ "num-rc" ], | |||
| "ane-property-names": [ | "ane-property-names": [ | |||
| "max-reservable-bandwidth", "persistent-entity-id" | "max-reservable-bandwidth", "persistent-entity-id" | |||
| ] | ] | |||
| }, | }, | |||
| "uses": [ "ane-props" ] | "uses": [ "ane-props" ] | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="multipart-filtered-cost-map" numbered="true" toc="default "> | <section anchor="multipart-filtered-cost-map" numbered="true" toc="default "> | |||
| <name>Multipart Filtered Cost Map</name> | <name>Multipart Filtered Cost Map</name> | |||
| <t>The following examples demonstrate the request to the "filtered-cost- map-pv" | <t>The following examples demonstrate the request to the "filtered-cost- map-pv" | |||
| resource and the corresponding response.</t> | resource and the corresponding response.</t> | |||
| <t>The request uses the "path-vector" cost type in the "cost-type" field . The | <t>The request uses the "path-vector" cost type in the "cost-type" field . The | |||
| "ane-property-names" field is missing, indicating that the client only requests | "ane-property-names" field is missing, indicating that the client only requests | |||
| for the Path Vector but not the ANE properties.</t> | the Path Vector and not the ANE properties.</t> | |||
| <t>The response consists of two parts. The first part returns the array | <t>The response consists of two parts:</t> | |||
| of ANEName | <ul spacing="normal"> | |||
| <li>The first part returns the array of data type ANEName | ||||
| for each source and destination pair. There are two ANEs, where "L1" represents | for each source and destination pair. There are two ANEs, where "L1" represents | |||
| the interconnection link L1, and "L2" represents the interconnection link L2.</t | interconnection link L1 and "L2" represents interconnection link L2.</li> | |||
| > | <li>The second part returns the property map. Note that the proper | |||
| <t>The second part returns an empty Property Map. Note that the ANE entr | ties of the ANE entries are equal to the literal string "{}" | |||
| ies are | (see <xref target="RFC9240" sectionFormat="of" section="8.3"/>).</li> | |||
| omitted since they have no properties (See Section 3.1 of | </ul> | |||
| <xref target="I-D.ietf-alto-unified-props-new" format="default"/>).</t> | <sourcecode name="" type="http-message"><![CDATA[ | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| POST /costmap/pv HTTP/1.1 | POST /costmap/pv HTTP/1.1 | |||
| Host: alto.example.com | Host: alto.example.com | |||
| Accept: multipart/related;type=application/alto-costmap+json, | Accept: multipart/related;type=application/alto-costmap+json, | |||
| application/alto-error+json | application/alto-error+json | |||
| Content-Length: 153 | Content-Length: 163 | |||
| Content-Type: application/alto-costmapfilter+json | Content-Type: application/alto-costmapfilter+json | |||
| { | { | |||
| "cost-type": { | "cost-type": { | |||
| "cost-mode": "array", | "cost-mode": "array", | |||
| "cost-metric": "ane-path" | "cost-metric": "ane-path" | |||
| }, | }, | |||
| "pids": { | "pids": { | |||
| "srcs": [ "PID1" ], | "srcs": [ "PID1" ], | |||
| "dsts": [ "PID3", "PID4" ] | "dsts": [ "PID3", "PID4" ] | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="http-message"><![CDATA[ | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Content-Length: 855 | Content-Length: 952 | |||
| Content-Type: multipart/related; boundary=example-1; | Content-Type: multipart/related; boundary=example-1; | |||
| type=application/alto-costmap+json | type=application/alto-costmap+json | |||
| --example-1 | --example-1 | |||
| Content-ID: <costmap@alto.example.com> | Content-ID: <costmap@alto.example.com> | |||
| Content-Type: application/alto-costmap+json | Content-Type: application/alto-costmap+json | |||
| { | { | |||
| "meta": { | "meta": { | |||
| "vtag": { | "vtag": { | |||
| skipping to change at line 1751 ¶ | skipping to change at line 1749 ¶ | |||
| { | { | |||
| "meta": { | "meta": { | |||
| "dependent-vtags": [ | "dependent-vtags": [ | |||
| { | { | |||
| "resource-id": "filtered-cost-map-pv.costmap", | "resource-id": "filtered-cost-map-pv.costmap", | |||
| "tag": "d827f484cb66ce6df6b5077cb8562b0a" | "tag": "d827f484cb66ce6df6b5077cb8562b0a" | |||
| } | } | |||
| ] | ] | |||
| }, | }, | |||
| "property-map": { | "property-map": { | |||
| ".ane:L1": {}, | ||||
| ".ane:L2": {} | ||||
| } | } | |||
| } | } | |||
| ]]></artwork> | --example-1 | |||
| ]]></sourcecode> | ||||
| </section> | </section> | |||
| <section anchor="example-ecspv" numbered="true" toc="default"> | <section anchor="example-ecspv" numbered="true" toc="default"> | |||
| <name>Multipart Endpoint Cost Service Resource</name> | <name>Multipart Endpoint Cost Service Resource</name> | |||
| <t>The following examples demonstrate the request to the "endpoint-cost- pv" | <t>The following examples demonstrate the request to the "endpoint-cost- pv" | |||
| resource and the corresponding response.</t> | resource and the corresponding response.</t> | |||
| <t>The request uses the Path Vector cost type in the "cost-type" field, | <t>The request uses the "path-vector" cost type in the "cost-type" field | |||
| and | and | |||
| queries the Maximum Reservable Bandwidth ANE property and the Persistent Entity | queries the maximum reservable bandwidth ANE property and the persistent entity | |||
| ID | ||||
| property for two IPv4 source and destination pairs (192.0.2.34 -> 192.0.2.2 a nd | property for two IPv4 source and destination pairs (192.0.2.34 -> 192.0.2.2 a nd | |||
| 192.0.2.34 -> 192.0.2.50) and one IPv6 source and destination pair | 192.0.2.34 -> 192.0.2.50) and one IPv6 source and destination pair | |||
| (2001:db8::3:1 -> 2001:db8::4:1).</t> | (2001:db8::3:1 -> 2001:db8::4:1).</t> | |||
| <t>The response consists of two parts. The first part returns the array | <t>The response consists of two parts:</t> | |||
| of ANEName | <ul spacing="normal"> | |||
| <li>The first part returns the array of data type ANEName | ||||
| for each valid source and destination pair. As one can see in <xref target="fig- pe" format="default"/>, flow | for each valid source and destination pair. As one can see in <xref target="fig- pe" format="default"/>, flow | |||
| 192.0.2.34 -> 192.0.2.2 traverses NET2, L1 and NET1, and flows 192.0.2.34 -&g | 192.0.2.34 -> 192.0.2.2 traverses NET3, L1, and NET1; and flows 192.0.2.34 -& | |||
| t; | gt; | |||
| 192.0.2.50 and 2001:db8::3:1 -> 2001:db8::4:1 traverse NET2, L2 and NET3.</t> | 192.0.2.50 and 2001:db8::3:1 -> 2001:db8::4:1 traverse NET2, L2, and NET3.</l | |||
| <t>The second part returns the requested properties of ANEs. Assume NET1 | i> | |||
| , NET2 and NET3 has | <li>The second part returns the requested properties of ANEs. Assume tha | |||
| t NET1, NET2, and NET3 have | ||||
| sufficient bandwidth and their "max-reservable-bandwidth" values are set to a su fficiently | sufficient bandwidth and their "max-reservable-bandwidth" values are set to a su fficiently | |||
| large number (50 Gbps in this case). On the other hand, assume there are no | large number (50 Gbps in this case). On the other hand, assume that there are no | |||
| prior reservation on L1 and L2, and their "max-reservable-bandwidth" values are | prior reservations on L1 and L2 and their "max-reservable-bandwidth" values are | |||
| the corresponding link capacity (10 Gbps for L1 and 15 Gbps for L2).</t> | the corresponding link capacity (10 Gbps for L1 and 15 Gbps for L2).</li> | |||
| </ul> | ||||
| <t>Both NET1 and NET2 have a mobile edge deployed, i.e., MEC1 in NET1 an d MEC2 in | <t>Both NET1 and NET2 have a mobile edge deployed, i.e., MEC1 in NET1 an d MEC2 in | |||
| NET2. Assume the ANEName for MEC1 and MEC2 are "MEC1" and "MEC2" and their | NET2. Assume that the ANEName values for MEC1 and MEC2 are "MEC1" and "MEC2" and | |||
| properties can be retrieved from the Property Map "ane-props". Thus, the | their | |||
| "persistent-entity-id" property of NET1 and NET3 are "ane-props.ane:MEC1" and | properties can be retrieved from the property map "ane-props". Thus, the | |||
| "ane-props.ane:MEC2" respectively.</t> | "persistent-entity-id" property values for NET1 and NET2 are "ane-props.ane:MEC1 | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | " and | |||
| "ane-props.ane:MEC2", respectively.</t> | ||||
| <sourcecode name="" type="http-message"><![CDATA[ | ||||
| POST /endpointcost/pv HTTP/1.1 | POST /endpointcost/pv HTTP/1.1 | |||
| Host: alto.example.com | Host: alto.example.com | |||
| Accept: multipart/related; | Accept: multipart/related; | |||
| type=application/alto-endpointcost+json, | type=application/alto-endpointcost+json, | |||
| application/alto-error+json | application/alto-error+json | |||
| Content-Length: 362 | Content-Length: 383 | |||
| Content-Type: application/alto-endpointcostparams+json | Content-Type: application/alto-endpointcostparams+json | |||
| { | { | |||
| "cost-type": { | "cost-type": { | |||
| "cost-mode": "array", | "cost-mode": "array", | |||
| "cost-metric": "ane-path" | "cost-metric": "ane-path" | |||
| }, | }, | |||
| "endpoints": { | "endpoints": { | |||
| "srcs": [ | "srcs": [ | |||
| "ipv4:192.0.2.34", | "ipv4:192.0.2.34", | |||
| skipping to change at line 1808 ¶ | skipping to change at line 1812 ¶ | |||
| "ipv4:192.0.2.2", | "ipv4:192.0.2.2", | |||
| "ipv4:192.0.2.50", | "ipv4:192.0.2.50", | |||
| "ipv6:2001:db8::4:1" | "ipv6:2001:db8::4:1" | |||
| ] | ] | |||
| }, | }, | |||
| "ane-property-names": [ | "ane-property-names": [ | |||
| "max-reservable-bandwidth", | "max-reservable-bandwidth", | |||
| "persistent-entity-id" | "persistent-entity-id" | |||
| ] | ] | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="http-message"><![CDATA[ | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Content-Length: 1432 | Content-Length: 1508 | |||
| Content-Type: multipart/related; boundary=example-2; | Content-Type: multipart/related; boundary=example-2; | |||
| type=application/alto-endpointcost+json | type=application/alto-endpointcost+json | |||
| --example-2 | --example-2 | |||
| Content-ID: <ecs@alto.example.com> | Content-ID: <ecs@alto.example.com> | |||
| Content-Type: application/alto-endpointcost+json | Content-Type: application/alto-endpointcost+json | |||
| { | { | |||
| "meta": { | "meta": { | |||
| "vtags": { | "vtags": { | |||
| skipping to change at line 1877 ¶ | skipping to change at line 1881 ¶ | |||
| "max-reservable-bandwidth": 50000000000 | "max-reservable-bandwidth": 50000000000 | |||
| }, | }, | |||
| ".ane:L1": { | ".ane:L1": { | |||
| "max-reservable-bandwidth": 10000000000 | "max-reservable-bandwidth": 10000000000 | |||
| }, | }, | |||
| ".ane:L2": { | ".ane:L2": { | |||
| "max-reservable-bandwidth": 15000000000 | "max-reservable-bandwidth": 15000000000 | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | --example-2 | |||
| <t>Under certain scenarios where the traversal order is not crucial, an | ]]></sourcecode> | |||
| ALTO server | <t>In certain scenarios where the traversal order is not crucial, an ALT | |||
| implementation may choose to not follow strictly the physical traversal order | O server | |||
| implementation may choose not to strictly follow the physical traversal order | ||||
| and may even obfuscate the order intentionally to preserve its own privacy or | and may even obfuscate the order intentionally to preserve its own privacy or | |||
| conform to its own policies. | conform to its own policies. | |||
| For example, an ALTO server may choose to aggregate NET1 and L1 as a new ANE | For example, an ALTO server may choose to aggregate NET1 and L1 as a new ANE | |||
| with ANE name "AGGR1", and aggregate NET2 and L2 as a new ANE with ANE name | with ANE name "AGGR1" and aggregate NET2 and L2 as a new ANE with ANE name | |||
| "AGGR2". The "max-reservable-bandwidth" of "AGGR1" takes the value of L1, which | "AGGR2". The "max-reservable-bandwidth" property of "AGGR1" takes the value of L | |||
| is smaller than that of NET1, and the "persistent-entity-id" of "AGGR1" takes | 1, which | |||
| the value of NET1. The properties of "AGGR2" are computed in a similar way and | is smaller than that of NET1, and the "persistent-entity-id" property of "AGGR1" | |||
| takes | ||||
| the value of NET1. The properties of "AGGR2" are computed in a similar way; | ||||
| the obfuscated response is as shown below. Note that the obfuscation of Path | the obfuscated response is as shown below. Note that the obfuscation of Path | |||
| Vector responses is implementation-specific and is out of the scope of this | Vector responses is implementation specific and is out of scope for this | |||
| document, and developers may refer to <xref target="Security" format="default"/> | document. Developers may refer to <xref target="Security" format="default"/> for | |||
| for further references.</t> | further references.</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="http-message"><![CDATA[ | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Content-Length: 1263 | Content-Length: 1333 | |||
| Content-Type: multipart/related; boundary=example-2; | Content-Type: multipart/related; boundary=example-2; | |||
| type=application/alto-endpointcost+json | type=application/alto-endpointcost+json | |||
| --example-2 | --example-2 | |||
| Content-ID: <ecs@alto.example.com> | Content-ID: <ecs@alto.example.com> | |||
| Content-Type: application/alto-endpointcost+json | Content-Type: application/alto-endpointcost+json | |||
| { | { | |||
| "meta": { | "meta": { | |||
| "vtags": { | "vtags": { | |||
| skipping to change at line 1952 ¶ | skipping to change at line 1957 ¶ | |||
| }, | }, | |||
| ".ane:AGGR2": { | ".ane:AGGR2": { | |||
| "max-reservable-bandwidth": 15000000000, | "max-reservable-bandwidth": 15000000000, | |||
| "persistent-entity-id": "ane-props.ane:MEC2" | "persistent-entity-id": "ane-props.ane:MEC2" | |||
| }, | }, | |||
| ".ane:NET3": { | ".ane:NET3": { | |||
| "max-reservable-bandwidth": 50000000000 | "max-reservable-bandwidth": 50000000000 | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | --example-2 | |||
| ]]></sourcecode> | ||||
| </section> | </section> | |||
| <section anchor="example-sse" numbered="true" toc="default"> | <section anchor="example-sse" numbered="true" toc="default"> | |||
| <name>Incremental Updates</name> | <name>Incremental Updates</name> | |||
| <t>In this example, an ALTO client subscribes to the incremental update for the | <t>In this example, an ALTO client subscribes to the incremental update for the | |||
| multipart Endpoint Cost Service resource "endpoint-cost-pv".</t> | multipart Endpoint Cost Service resource "endpoint-cost-pv".</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="http-message"><![CDATA[ | |||
| POST /updates/pv HTTP/1.1 | POST /updates/pv HTTP/1.1 | |||
| Host: alto.example.com | Host: alto.example.com | |||
| Accept: text/event-stream | Accept: text/event-stream | |||
| Content-Type: application/alto-updatestreamparams+json | Content-Type: application/alto-updatestreamparams+json | |||
| Content-Length: 112 | Content-Length: 120 | |||
| { | { | |||
| "add": { | "add": { | |||
| "ecspvsub1": { | "ecspvsub1": { | |||
| "resource-id": "endpoint-cost-pv", | "resource-id": "endpoint-cost-pv", | |||
| "input": <ecs-input> | "input": <ecs-input> | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t>Based on the server-side process defined in <xref target="RFC8895" fo rmat="default"/>, the ALTO server will | <t>Based on the server-side process defined in <xref target="RFC8895" fo rmat="default"/>, the ALTO server will | |||
| send the "control-uri" first using Server-Sent Event (SSE), followed by the full | send the "control-uri" first, using a Server-Sent Event (SSE) followed by the fu ll | |||
| response of the multipart message.</t> | response of the multipart message.</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="http-message"><![CDATA[ | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Connection: keep-alive | Connection: keep-alive | |||
| Content-Type: text/event-stream | Content-Type: text/event-stream | |||
| event: application/alto-updatestreamcontrol+json | event: application/alto-updatestreamcontrol+json | |||
| data: {"control-uri": "https://alto.example.com/updates/streams/123"} | data: {"control-uri": "https://alto.example.com/updates/streams/123"} | |||
| event: multipart/related;boundary=example-3; | event: multipart/related;boundary=example-3; | |||
| type=application/alto-endpointcost+json,ecspvsub1 | type=application/alto-endpointcost+json,ecspvsub1 | |||
| data: --example-3 | data: --example-3 | |||
| data: Content-ID: <ecsmap@alto.example.com> | data: Content-ID: <ecsmap@alto.example.com> | |||
| data: Content-Type: application/alto-endpointcost+json | data: Content-Type: application/alto-endpointcost+json | |||
| data: | data: | |||
| data: <endpoint-cost-map-entry> | data: <endpoint-cost-map-entry> | |||
| data: --example-3 | data: --example-3 | |||
| data: Content-ID: <propmap@alto.example.com> | data: Content-ID: <propmap@alto.example.com> | |||
| data: Content-Type: application/alto-propmap+json | data: Content-Type: application/alto-propmap+json | |||
| data: | data: | |||
| data: <property-map-entry> | data: <property-map-entry> | |||
| data: --example-3-- | data: --example-3-- | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t>When the contents change, the ALTO server will publish the updates fo r each node | <t>When the contents change, the ALTO server will publish the updates fo r each node | |||
| in this tree separately, based on Section 6.7.3 of <xref target="RFC8895" format | in this tree separately, based on <xref target="RFC8895" sectionFormat="of" sect | |||
| ="default"/>.</t> | ion="6.7.3"/>.</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="http-message"><![CDATA[ | |||
| event: application/merge-patch+json, ecspvsub1.ecsmap@alto.example.com | event: application/merge-patch+json, | |||
| ecspvsub1.ecsmap@alto.example.com | ||||
| data: <Merge patch for endpoint-cost-map-update> | data: <Merge patch for endpoint-cost-map-update> | |||
| event: application/merge-patch+json, ecspvsub1.propmap@alto.example.com | event: application/merge-patch+json, | |||
| ecspvsub1.propmap@alto.example.com | ||||
| data: <Merge patch for property-map-update> | data: <Merge patch for property-map-update> | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <!-- TODO: the remaining issue is where to specify the json-merge-patch | ||||
| capability for each node --> | ||||
| </section> | </section> | |||
| <section anchor="multi-cost" numbered="true" toc="default"> | <section anchor="multi-cost" numbered="true" toc="default"> | |||
| <name>Multi-cost</name> | <name>Multi-Cost</name> | |||
| <t>The following examples demonstrate the request to the "multicost-pv" resource | <t>The following examples demonstrate the request to the "multicost-pv" resource | |||
| and the corresponding response.</t> | and the corresponding response.</t> | |||
| <t>The request asks for two cost types: the first is the Path Vector cos t type, and | <t>The request asks for two cost types: the first is the Path Vector cos t type, and | |||
| the second is a numerical routing cost. It also queries the Maximum Reservable | the second is a numerical routing cost. It also queries the maximum reservable | |||
| Bandwidth ANE property and the Persistent Entity property for two IPv4 source an | bandwidth ANE property and the persistent entity ID property for two IPv4 source | |||
| d | and | |||
| destination pairs (192.0.2.34 -> 192.0.2.2 and 192.0.2.34 -> 192.0.2.50) a nd one | destination pairs (192.0.2.34 -> 192.0.2.2 and 192.0.2.34 -> 192.0.2.50) a nd one | |||
| IPv6 source and destination pair (2001:db8::3:1 -> 2001:db8::4:1).</t> | IPv6 source and destination pair (2001:db8::3:1 -> 2001:db8::4:1).</t> | |||
| <t>The response consists of two parts. The first part returns a JSONArra | <t>The response consists of two parts:</t> | |||
| y that | <ul spacing="normal"> | |||
| contains two JSONValue for each requested source and destination pair: the first | <li>The first part returns a JSONArray that | |||
| contains two JSONValue entries for each requested source and destination pair: t | ||||
| he first | ||||
| JSONValue is a JSONArray of ANENames, which is the value of the Path Vector cost | JSONValue is a JSONArray of ANENames, which is the value of the Path Vector cost | |||
| type, and the second JSONValue is a JSONNumber which is the value of the routing | type; and the second JSONValue is a JSONNumber, which is the value of the routin | |||
| cost. The second part contains a Property Map that maps the ANEs to their | g | |||
| requested properties.</t> | cost.</li> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <li>The second part contains a property map that maps the ANEs to their | |||
| requested properties.</li> | ||||
| </ul> | ||||
| <sourcecode name="" type="http-message"><![CDATA[ | ||||
| POST /endpointcost/mcpv HTTP/1.1 | POST /endpointcost/mcpv HTTP/1.1 | |||
| Host: alto.example.com | Host: alto.example.com | |||
| Accept: multipart/related; | Accept: multipart/related; | |||
| type=application/alto-endpointcost+json, | type=application/alto-endpointcost+json, | |||
| application/alto-error+json | application/alto-error+json | |||
| Content-Length: 433 | Content-Length: 454 | |||
| Content-Type: application/alto-endpointcostparams+json | Content-Type: application/alto-endpointcostparams+json | |||
| { | { | |||
| "multi-cost-types": [ | "multi-cost-types": [ | |||
| { "cost-mode": "array", "cost-metric": "ane-path" }, | { "cost-mode": "array", "cost-metric": "ane-path" }, | |||
| { "cost-mode": "numerical", "cost-metric": "routingcost" } | { "cost-mode": "numerical", "cost-metric": "routingcost" } | |||
| ], | ], | |||
| "endpoints": { | "endpoints": { | |||
| "srcs": [ | "srcs": [ | |||
| "ipv4:192.0.2.34", | "ipv4:192.0.2.34", | |||
| skipping to change at line 2056 ¶ | skipping to change at line 2067 ¶ | |||
| "ipv4:192.0.2.2", | "ipv4:192.0.2.2", | |||
| "ipv4:192.0.2.50", | "ipv4:192.0.2.50", | |||
| "ipv6:2001:db8::4:1" | "ipv6:2001:db8::4:1" | |||
| ] | ] | |||
| }, | }, | |||
| "ane-property-names": [ | "ane-property-names": [ | |||
| "max-reservable-bandwidth", | "max-reservable-bandwidth", | |||
| "persistent-entity-id" | "persistent-entity-id" | |||
| ] | ] | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode name="" type="http-message"><![CDATA[ | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Content-Length: 1350 | Content-Length: 1419 | |||
| Content-Type: multipart/related; boundary=example-4; | Content-Type: multipart/related; boundary=example-4; | |||
| type=application/alto-endpointcost+json | type=application/alto-endpointcost+json | |||
| --example-4 | --example-4 | |||
| Content-ID: <ecs@alto.example.com> | Content-ID: <ecs@alto.example.com> | |||
| Content-Type: application/alto-endpointcost+json | Content-Type: application/alto-endpointcost+json | |||
| { | { | |||
| "meta": { | "meta": { | |||
| "vtags": { | "vtags": { | |||
| skipping to change at line 2119 ¶ | skipping to change at line 2130 ¶ | |||
| }, | }, | |||
| ".ane:AGGR2": { | ".ane:AGGR2": { | |||
| "max-reservable-bandwidth": 15000000000, | "max-reservable-bandwidth": 15000000000, | |||
| "persistent-entity-id": "ane-props.ane:MEC2" | "persistent-entity-id": "ane-props.ane:MEC2" | |||
| }, | }, | |||
| ".ane:NET3": { | ".ane:NET3": { | |||
| "max-reservable-bandwidth": 50000000000 | "max-reservable-bandwidth": 50000000000 | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ]]></artwork> | --example-4 | |||
| ]]></sourcecode> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="Compatibility" numbered="true" toc="default"> | <section anchor="Compatibility" numbered="true" toc="default"> | |||
| <name>Compatibility with Other ALTO Extensions</name> | <name>Compatibility with Other ALTO Extensions</name> | |||
| <section anchor="compatibility-with-legacy-alto-clientsservers" numbered=" true" toc="default"> | <section anchor="compatibility-with-legacy-alto-clientsservers" numbered=" true" toc="default"> | |||
| <name>Compatibility with Legacy ALTO Clients/Servers</name> | <name>Compatibility with Legacy ALTO Clients/Servers</name> | |||
| <t>The multipart Filtered Cost Map resource and the multipart Endpoint C | <t>The multipart filtered cost map resource and the multipart Endpoint C | |||
| ost | ost | |||
| Service resource has no backward compatibility issue with legacy ALTO clients an | Service resource have no backward-compatibility issues with legacy ALTO clients | |||
| d | and | |||
| servers. Although these two types of resources reuse the media types defined in | servers. Although these two types of resources reuse the media types defined in | |||
| the base ALTO protocol for the accept input parameters, they have different | the base ALTO Protocol for the "Accept" input parameters, they have different | |||
| media types for responses. If the ALTO server provides these two types of | media types for responses. If the ALTO server provides these two types of | |||
| resources, but the ALTO client does not support them, the ALTO client will | resources but the ALTO client does not support them, the ALTO client will | |||
| ignore the resources without incurring any incompatibility problem.</t> | ignore the resources without incurring any incompatibility problems.</t> | |||
| <!-- | ||||
| The Path Vector extension on Filtered Cost Map and Endpoint Cost Service is | ||||
| backward compatible with the base ALTO protocol: | ||||
| - If the ALTO server provides extended capabilities "dependent-property-map" and | ||||
| "allow-compound-response" for Filtered Cost Map or Endpoint Cost Service, but | ||||
| the client only supports the base ALTO protocol, then the client will ignore | ||||
| those capabilities without conducting any incompatibility. | ||||
| - If the client sends a request with the input parameter "properties", but the | ||||
| server only supports the base ALTO protocol, the server will ignore this | ||||
| field. | ||||
| </section> | </section> | |||
| <section anchor="compatibility-with-multi-cost-extension" numbered="true" toc="default"> | <section anchor="compatibility-with-multi-cost-extension" numbered="true" toc="default"> | |||
| <name>Compatibility with Multi-Cost Extension</name> | <name>Compatibility with Multi-Cost Extension</name> | |||
| <!-- FIXME: path-vector cannot be used in multi-cost, also no reason --> | ||||
| <t>The extension defined in this document is compatible with the multi-cost | <t>The extension defined in this document is compatible with the multi-cost | |||
| extension <xref target="RFC8189" format="default"/>. Such a resource has a media type of either | extension <xref target="RFC8189" format="default"/>. Such a resource has a media type of either | |||
| "multipart/related; type=application/alto-costmap+json" or "multipart/related; | "multipart/related; type=application/alto-costmap+json" or "multipart/related; | |||
| type=application/alto-endpointcost+json". Its "cost-constraints" field must | type=application/alto-endpointcost+json". Its "cost-constraints" field must be | |||
| either be "false" or not present and the Path Vector cost type must be present | either "false" or not present, and the Path Vector cost type must be present | |||
| in the "cost-type-names" capability field but must not be present in the | in the "cost-type-names" capability field but must not be present in the | |||
| "testable-cost-type-names" field, as specified in <xref target="pvcm-cap" format | "testable-cost-type-names" field, as specified in Sections <xref target="pv | |||
| ="default"/> and <xref target="pvecs-cap" format="default"/>.</t> | cm-cap" format="counter"/> and <xref target="pvecs-cap" format="counter"/>.</t> | |||
| <!-- | ||||
| As [](#fcm-cap) mentions, the syntax and semantics of whether "constraints" or | ||||
| "or-constraints" field for the "array" cost mode is not specified in this | ||||
| document. So if an ALTO server provides a resource with the "array" cost mode | ||||
| and the capability "cost-constraints" or "testable-cost-types-names", the ALTO | ||||
| client MAY ignore the capability "cost-constraints" or | ||||
| "testable-cost-types-names" unless the implementation or future documents | ||||
| specify the behavior. | ||||
| <!-- | ||||
| Cost type path-vector is not a testable cost type. Any format of constraints | ||||
| SHOULD NOT be applied to cost type path-vector in order for multi-cost to | ||||
| support the path-vector extension. Specifically, | ||||
| - Cost type path-vector MUST NOT be included in "testable-cost-types-names" or | ||||
| "testable-cost-types". | ||||
| - When "testable-cost-types-names" is omitted in the "capabilities" and | ||||
| "testable-cost-types" is omitted in the input parameters, "constraints" or | ||||
| "or-constraints" SHOULD NOT add any format of constraints on cost type | ||||
| path-vector. | ||||
| </section> | </section> | |||
| <section anchor="compatibility-with-incremental-update" numbered="true" to c="default"> | <section anchor="compatibility-with-incremental-update" numbered="true" to c="default"> | |||
| <name>Compatibility with Incremental Update</name> | <name>Compatibility with Incremental Update Extension</name> | |||
| <!-- FIXME: using resource-id header in MIME part --> | ||||
| <t>This extension is compatible with the incremental update extension <xref targ et="RFC8895" format="default"/>. | <t>This extension is compatible with the incremental update extension <xref targ et="RFC8895" format="default"/>. | |||
| ALTO clients and servers MUST follow the specifications given in Sections 5.2 | ALTO clients and servers <bcp14>MUST</bcp14> follow the specifications given in | |||
| and 6.7.3 of <xref target="RFC8895" format="default"/> to support incremental up | Sections <xref target="RFC8895" section= | |||
| dates for a Path Vector | "5.2" sectionFormat="bare"/> and <xref target="RFC8895" section="6.7.3" sectionF | |||
| ormat="bare"/> of <xref target="RFC8895"/> to support incremental updates for a | ||||
| Path Vector | ||||
| resource.</t> | resource.</t> | |||
| </section> | </section> | |||
| <section anchor="compatibility-with-cost-calendar" numbered="true" toc="de fault"> | <section anchor="compatibility-with-cost-calendar" numbered="true" toc="de fault"> | |||
| <name>Compatibility with Cost Calendar</name> | <name>Compatibility with Cost Calendar Extension</name> | |||
| <t>The extension specified in this document is compatible with the Cost Calendar | <t>The extension specified in this document is compatible with the Cost Calendar | |||
| extension <xref target="RFC8896" format="default"/>. When used together with the Cost Calendar extension, the | extension <xref target="RFC8896" format="default"/>. When used together with the Cost Calendar extension, the | |||
| cost value between a source and a destination is an array of Path Vectors, where | cost value between a source and a destination is an array of Path Vectors, where | |||
| the k-th Path Vector refers to the abstract network paths traversed in the k-th | the k-th Path Vector refers to the abstract network paths traversed in the k-th | |||
| time interval by traffic from the source to the destination.</t> | time interval by traffic from the source to the destination.</t> | |||
| <t>When used with time-varying properties, e.g., maximum reservable band width, a | <t>When used with time-varying properties, e.g., maximum reservable band width, a | |||
| property of a single ANE may also have different values in different time | property of a single ANE may also have different values in different time | |||
| intervals. In this case, if such an ANE has different property values in two | intervals. In this case, if such an ANE has different property values in two | |||
| time intervals, it MUST be treated as two different ANEs, i.e., with different | time intervals, it <bcp14>MUST</bcp14> be treated as two different ANEs, i.e., w ith different | |||
| entity identifiers. However, if it has the same property values in two time | entity identifiers. However, if it has the same property values in two time | |||
| intervals, it MAY use the same identifier.</t> | intervals, it <bcp14>MAY</bcp14> use the same identifier.</t> | |||
| <t>This rule allows the Path Vector extension to represent both changes of ANEs and | <t>This rule allows the Path Vector extension to represent both changes of ANEs and | |||
| changes of the ANEs' properties in a uniform way. The Path Vector part is | changes of the ANEs' properties in a uniform way. The Path Vector part is | |||
| calendared in a compatible way, and the Property Map part is not affected by the | calendared in a compatible way, and the property map part is not affected by the | |||
| calendar extension.</t> | Cost Calendar extension.</t> | |||
| <t>The two extensions combined together can provide the historical netwo rk | <t>The two extensions combined together can provide the historical netwo rk | |||
| correlation information for a set of source and destination pairs. A network | correlation information for a set of source and destination pairs. A network | |||
| broker or client may use this information to derive other resource requirements | broker or client may use this information to derive other resource requirements | |||
| such as Time-Block-Maximum Bandwidth, Bandwidth-Sliding-Window, and | such as Time-Block-Maximum Bandwidth, Bandwidth-Sliding-Window, and | |||
| Time-Bandwidth-Product (TBP) (See <xref target="SENSE" format="default"/> for de tails).</t> | Time-Bandwidth-Product (TBP) (see <xref target="SENSE" format="default"/> for de tails).</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="SecDisc" numbered="true" toc="default"> | <section anchor="SecDisc" numbered="true" toc="default"> | |||
| <name>General Discussions</name> | <name>General Discussion</name> | |||
| <!-- | ||||
| Cost Calendar is proposed as a useful ALTO extension to provide the historical | ||||
| cost values for Filtered Cost Map Service and Endpoint Cost Service. Since path | ||||
| vector is an extension to these services, it SHOULD be compatible with Cost | ||||
| Calendar extension. | ||||
| However, the calendar of a path-vector (Endpoint) Cost Map is insufficient for | ||||
| the application which requires the historical data of routing state information. | ||||
| The (Endpoint) Cost Map can only provide the changes of the paths. But more | ||||
| useful information is the history of network element properties which are | ||||
| recorded in the dependent Network Element Property Map. | ||||
| Before the Unified Property Map is introduced as an ALTO extension, Filtered | ||||
| Cost Map Service and Endpoint Cost Service are the only resources which require | ||||
| the calendar supported. Because other resources don't have to be updated | ||||
| frequently. But Network Element Property Map as a use case of Unified Property | ||||
| Map will collect the real-time information of the network. It SHOULD be updated | ||||
| as soon as possible once the metrics of network elements change. | ||||
| So the requirement is to provide a general calendar extension which not only | ||||
| meets the Filtered Cost Map and Endpoint Cost Service but also applies to the | ||||
| Property Map Service. | ||||
| <section anchor="constraint-tests-for-general-cost-types" numbered="true" toc="d efault"> | <section anchor="constraint-tests-for-general-cost-types" numbered="true" toc="d efault"> | |||
| <name>Constraint Tests for General Cost Types</name> | <name>Constraint Tests for General Cost Types</name> | |||
| <t>The constraint test is a simple approach to query the data. It allows | <t>The constraint test is a simple approach for querying the data. It al | |||
| users to | lows users to | |||
| filter the query result by specifying some boolean tests. This approach is | filter query results by specifying some boolean tests. This approach is | |||
| already used in the ALTO protocol. <xref target="RFC7285" format="default"/> and | already used in the ALTO Protocol. ALTO clients are permitted to specify either | |||
| <xref target="RFC8189" format="default"/> allow ALTO | the "constraints" test <xref target="RFC7285" format="default"/> <xref target="R | |||
| clients to specify the "constraints" and "or-constraints" tests to better | FC8189" format="default"/> or the "or-constraints" test <xref target="RFC8189" | |||
| filter the result.</t> | format="default"/> to better | |||
| <t>However, the current syntax can only be used to test scalar cost type | filter the results.</t> | |||
| s, and | <t>However, the current syntax can only be used to test scalar cost type | |||
| s and | ||||
| cannot easily express constraints on complex cost types, e.g., the Path Vector | cannot easily express constraints on complex cost types, e.g., the Path Vector | |||
| cost type defined in this document.</t> | cost type defined in this document.</t> | |||
| <t>In practice, developing a bespoke language for general-purpose boolea n tests can | <t>In practice, developing a bespoke language for general-purpose boolea n tests can | |||
| be a complex undertaking, and it is conceivable that there are some existing | be a complex undertaking, and it is conceivable that such implementations alread | |||
| implementations already (the authors have not done an exhaustive search to | y exist | |||
| determine whether there are such implementations). One avenue to develop such a | (the authors have not done an exhaustive search to | |||
| determine whether such implementations exist). One avenue for developing such a | ||||
| language may be to explore extending current query languages like XQuery | language may be to explore extending current query languages like XQuery | |||
| <xref target="XQuery" format="default"/> or JSONiq <xref target="JSONiq" format= "default"/> and integrating these with ALTO.</t> | <xref target="XQuery" format="default"/> or JSONiq <xref target="JSONiq" format= "default"/> and integrating these with ALTO.</t> | |||
| <t>Filtering the Path Vector results or developing a more sophisticated filtering | <t>Filtering the Path Vector results or developing a more sophisticated filtering | |||
| mechanism is beyond the scope of this document.</t> | mechanism is beyond the scope of this document.</t> | |||
| </section> | </section> | |||
| <section anchor="general-multi-resource-query" numbered="true" toc="defaul t"> | <section anchor="general-multi-resource-query" numbered="true" toc="defaul t"> | |||
| <name>General Multi-Resource Query</name> | <name>General Multi-Resource Query</name> | |||
| <t>Querying multiple ALTO information resources continuously is a genera l | <t>Querying multiple ALTO information resources continuously is a genera l | |||
| requirement. Enabling such a capability, however, must address general | requirement. Enabling such a capability, however, must address general | |||
| issues like efficiency and consistency. The incremental update extension | issues like efficiency and consistency. The incremental update extension | |||
| <xref target="RFC8895" format="default"/> supports submitting multiple queries i n a single request, and allows | <xref target="RFC8895" format="default"/> supports submitting multiple queries i n a single request and allows | |||
| flexible control over the queries. However, it does not cover the case | flexible control over the queries. However, it does not cover the case | |||
| introduced in this document where multiple resources are needed for a single | introduced in this document where multiple resources are needed for a single | |||
| request.</t> | request.</t> | |||
| <t>This extension gives an example of using a multipart message to encod | <t>The extension specified in this document gives an example of using a | |||
| e the | multipart message to encode the | |||
| responses from two specific ALTO information resources: a Filtered Cost Map or | responses from two specific ALTO information resources: a filtered cost map or | |||
| an Endpoint Cost Service, and a Property Map. By packing multiple resources in a | an Endpoint Cost Service, and a property map. By packing multiple resource | |||
| s in a | ||||
| single response, the implication is that servers may proactively push related | single response, the implication is that servers may proactively push related | |||
| information resources to clients.</t> | information resources to clients.</t> | |||
| <t>Thus, it is worth looking into the direction of extending the SSE mec | <t>Thus, it is worth looking into extending the SSE mechanism as | |||
| hanism as | used in the incremental update extension <xref target="RFC8895" format="default" | |||
| used in the incremental update extension <xref target="RFC8895" format="default" | />; or upgrading to HTTP/2 | |||
| />, or upgrading to HTTP/2 | <xref target="RFC9113" format="default"/> and HTTP/3 <xref target="RFC9114" form | |||
| <xref target="I-D.ietf-httpbis-http2bis" format="default"/> and HTTP/3 <xref tar | at="default"/>, which | |||
| get="I-D.ietf-quic-http" format="default"/>, which | provides the ability to multiplex queries and to allow servers to proactively se | |||
| provides the ability to multiplex queries and to allow servers proactively send | nd | |||
| related information resources.</t> | related information resources.</t> | |||
| <t>Defining a general multi-resource query mechanism is out of the scope of this | <t>Defining a general multi-resource query mechanism is out of scope for this | |||
| document.</t> | document.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="Security" numbered="true" toc="default"> | <section anchor="Security" numbered="true" toc="default"> | |||
| <name>Security Considerations</name> | <name>Security Considerations</name> | |||
| <t>This document is an extension of the base ALTO protocol, so the Securit | <t>This document is an extension of the base ALTO Protocol, so the securit | |||
| y | y | |||
| Considerations <xref target="RFC7285" format="default"/> of the base ALTO protoc | considerations provided for the base ALTO Protocol <xref target="RFC7285" format | |||
| ol fully apply when this | ="default"/> fully apply when this | |||
| extension is provided by an ALTO server.</t> | extension is provided by an ALTO server.</t> | |||
| <!-- Additional security considerations --> | <t>The Path Vector extension requires additional scrutiny of three security | |||
| <!-- ## Privacy Concerns { #pricon } --> | ||||
| <t>The Path Vector extension requires additional scrutiny on three security | ||||
| considerations discussed in the base protocol: confidentiality of ALTO | considerations discussed in the base protocol: confidentiality of ALTO | |||
| information (Section 15.3 of <xref target="RFC7285" format="default"/>), potenti | information (<xref target="RFC7285" sectionFormat="of" section="15.3"/>), potent | |||
| al undesirable guidance from | ial undesirable guidance from | |||
| authenticated ALTO information (Section 15.2 of <xref target="RFC7285" format="d | authenticated ALTO information (<xref target="RFC7285" sectionFormat="of" sectio | |||
| efault"/>), and availability | n="15.2"/>), and availability | |||
| of ALTO service (Section 15.5 of <xref target="RFC7285" format="default"/>).</t> | of ALTO services (<xref target="RFC7285" sectionFormat="of" section="15.5"/>).</ | |||
| t> | ||||
| <t>For confidentiality of ALTO information, a network operator should be a ware that | <t>For confidentiality of ALTO information, a network operator should be a ware that | |||
| this extension may introduce a new risk: the Path Vector information, when used | this extension may introduce a new risk: the Path Vector information, when used | |||
| together with sensitive ANE properties such as capacities of bottleneck links, | together with sensitive ANE properties such as capacities of bottleneck links, | |||
| may make network attacks easier. For example, as the Path Vector information may | may make network attacks easier. For example, as the Path Vector information may | |||
| reveal more fine-grained internal network structures than the base protocol, an | reveal more fine-grained internal network structures than the base protocol, an | |||
| attacker may identify the bottleneck link and start a distributed | attacker may identify the bottleneck link or links and start a distributed | |||
| denial-of-service (DDoS) attack involving minimal flows to conduct the | denial-of-service (DDoS) attack involving minimal flows, triggering | |||
| in-network congestion. Given the potential risk of leaking sensitive | in-network congestion. Given the potential risk of leaking sensitive | |||
| information, the Path Vector extension is mainly applicable in scenarios where | information, the Path Vector extension is mainly applicable in scenarios where | |||
| 1) the ANE structures and ANE properties do not impose security risks to the | 1) the ANE structures and ANE properties do not impose security risks on the | |||
| ALTO service provider, e.g., not carrying sensitive information, or 2) the ALTO | ALTO service provider (e.g., they do not carry sensitive information) or 2) the | |||
| server and client have established a reliable trust relationship, for example, | ALTO | |||
| operated in the same administrative domain, or managed by business partners with | server and client have established a reliable trust relationship (e.g., | |||
| legal contracts.</t> | they operate in the same administrative domain or are managed by business partne | |||
| <t>Three risk types are identified in Section 15.3.1 of <xref target="RFC7 | rs with | |||
| 285" format="default"/>: (1) Excess | legal contracts).</t> | |||
| disclosure of the ALTO service provider's data to an unauthorized ALTO client; | <t>Three risk types are identified in <xref target="RFC7285" sectionFormat | |||
| (2) Disclosure of the ALTO service provider's data (e.g., network topology | ="of" section="15.3.1"/>:</t> | |||
| information or endpoint addresses) to an unauthorized third party; and (3) | ||||
| Excess retrieval of the ALTO service provider's data by collaborating ALTO | <ol spacing="normal" type="(%d)"> | |||
| clients. To mitigate these risks, an ALTO server MUST follow the guidelines in | <li>excess disclosure of the ALTO service provider's data to an unauthorized A | |||
| Section 15.3.2 of <xref target="RFC7285" format="default"/>. Furthermore, an ALT | LTO client,</li> | |||
| O server MUST follow the | <li>disclosure of the ALTO service provider's data (e.g., network topology | |||
| information or endpoint addresses) to an unauthorized third party, and</li> | ||||
| <li>excess retrieval of the ALTO service provider's data by collaborating ALTO | ||||
| clients.</li> | ||||
| </ol> | ||||
| <t>To mitigate these risks, an ALTO server <bcp14>MUST</bcp14> follow the guidel | ||||
| ines in <xref target="RFC7285" sectionFormat="of" section="15.3.2"/>. Furthermor | ||||
| e, an ALTO server <bcp14>MUST</bcp14> follow the | ||||
| following additional protections strategies for risk types (1) and (3).</t> | following additional protections strategies for risk types (1) and (3).</t> | |||
| <t>For risk type (1), an ALTO server MUST use the authentication methods s | <t>For risk type (1), an ALTO server <bcp14>MUST</bcp14> use the authentic | |||
| pecified | ation methods specified | |||
| in Section 15.3.2 of <xref target="RFC7285" format="default"/> to authenticate t | in <xref target="RFC7285" sectionFormat="of" section="15.3.2"/> to authenticate | |||
| he identify of an ALTO client, | the identity of an ALTO client | |||
| and apply access control techniques to restrict unprivileged ALTO clients from | and apply access control techniques to restrict the retrieval of sensitive Path | |||
| retrieving sensitive Path Vector information. For settings where the ALTO server | Vector information by unprivileged ALTO clients. For settings where the ALTO ser | |||
| ver | ||||
| and client are not in the same trust domain, the ALTO server should reach | and client are not in the same trust domain, the ALTO server should reach | |||
| agreements with the ALTO client on protecting the confidentiality before | agreements with the ALTO client regarding protection of confidentiality before | |||
| granting the access to Path Vector service with sensitive information. Such | granting access to Path Vector services with sensitive information. Such | |||
| agreements may include legal contracts or Digital Right Management (DRM) | agreements may include legal contracts or Digital Rights Management (DRM) | |||
| techniques. Otherwise, the ALTO server MUST NOT offer the Path Vector service | techniques. Otherwise, the ALTO server <bcp14>MUST NOT</bcp14> offer Path Vector | |||
| carrying sensitive information to the clients unless the potential risks are | services that | |||
| carry sensitive information to the clients, unless the potential risks are | ||||
| fully assessed and mitigated.</t> | fully assessed and mitigated.</t> | |||
| <t>For risk type (3), an ALTO service provider must be aware that persiste nt ANEs | <t>For risk type (3), an ALTO service provider must be aware that persiste nt ANEs | |||
| may be used as "landmarks" in collaborative inferences. Thus, they should only | may be used as "landmarks" in collaborative inferences. Thus, they should only | |||
| be used when exposing public service access points (e.g., API gateways, CDNi) | be used when exposing public service access points (e.g., API gateways, CDN Inte | |||
| and/or when the granularity is coarse-grained (e.g., when an ANE represents an | rconnections) | |||
| AS, a data center or a WAN). | and/or when the granularity is coarse grained (e.g., when an ANE represents an | |||
| Otherwise, an ALTO server MUST use dynamic mappings from ephemeral ANE names to | AS, a data center, or a WAN). | |||
| Otherwise, an ALTO server <bcp14>MUST</bcp14> use dynamic mappings from ephemera | ||||
| l ANE names to | ||||
| underlying physical entities. Specifically, for the same physical entity, an | underlying physical entities. Specifically, for the same physical entity, an | |||
| ALTO server SHOULD assign a different ephemeral ANE name when the entity appears | ALTO server <bcp14>SHOULD</bcp14> assign a different ephemeral ANE name when the | |||
| in the responses to different clients or even for different request from the | entity appears | |||
| same client. A RECOMMENDED assignment strategy is to generate ANE names from | in the responses to different clients or even for different requests from the | |||
| same client. A <bcp14>RECOMMENDED</bcp14> assignment strategy is to generate ANE | ||||
| names from | ||||
| random numbers.</t> | random numbers.</t> | |||
| <t>Further, to protect the network topology from graph reconstruction (e.g ., | <t>Further, to protect the network topology from graph reconstruction (e.g ., | |||
| through isomorphic graph identification <xref target="BONDY" format="default"/>) , the ALTO server SHOULD | through isomorphic graph identification <xref target="BONDY" format="default"/>) , the ALTO server <bcp14>SHOULD</bcp14> | |||
| consider protection mechanisms to reduce information exposure or obfuscate the | consider protection mechanisms to reduce information exposure or obfuscate the | |||
| real information. When doing so, the ALTO server must be aware that information | real information. When doing so, the ALTO server must be aware that information | |||
| reduction/obfuscation may lead to potential Undesirable Guidance from | reduction/obfuscation may lead to a potential risk of undesirable guidance from | |||
| Authenticated ALTO Information risk (Section 15.2 of <xref target="RFC7285" form | authenticated ALTO information (<xref target="RFC7285" sectionFormat="of" sectio | |||
| at="default"/>).</t> | n="15.2"/>).</t> | |||
| <t>Thus, implementations of ALTO servers involving reduction or obfuscatio n of the | <t>Thus, implementations of ALTO servers involving reduction or obfuscatio n of the | |||
| Path Vector information SHOULD consider reduction/obfuscation mechanisms that | Path Vector information <bcp14>SHOULD</bcp14> consider reduction/obfuscation mec | |||
| can preserve the integrity of ALTO information, for example, by using minimal | hanisms that | |||
| can preserve the integrity of ALTO information -- for example, by using minimal | ||||
| feasible region compression algorithms <xref target="NOVA" format="default"/> or obfuscation protocols | feasible region compression algorithms <xref target="NOVA" format="default"/> or obfuscation protocols | |||
| <xref target="RESA" format="default"/><xref target="MERCATOR" format="default"/> | <xref target="RESA" format="default"/> <xref target="MERCATOR" format="default"/ | |||
| . However, these obfuscation methods are experimental and | >. However, these obfuscation methods are experimental, and their | |||
| their practical applicability of these methods to the generic capability | practical applicability to the generic capability | |||
| provided by this extension is not fully assessed. The ALTO server MUST carefully | provided by this extension has not been fully assessed. The ALTO server <bcp14>M | |||
| UST</bcp14> carefully | ||||
| verify that the deployment scenario satisfies the security assumptions of these | verify that the deployment scenario satisfies the security assumptions of these | |||
| methods before applying them to protect Path Vector services with sensitive | methods before applying them to protect Path Vector services with sensitive | |||
| network information.</t> | network information.</t> | |||
| <t>For availability of ALTO service, an ALTO server should be cognizant th | <t>For availability of ALTO services, an ALTO server should be cognizant t | |||
| at using | hat using a | |||
| Path Vector extension might have a new risk: frequent requesting for Path | Path Vector extension might introduce a new risk: frequent requests for Path | |||
| Vectors might consume intolerable amounts of the server-side computation and | Vectors might consume intolerable amounts of server-side computation and | |||
| storage, which can break the ALTO server. For example, if an ALTO server | storage. This behavior can break the ALTO server. For example, if an ALTO serve | |||
| r | ||||
| implementation dynamically computes the Path Vectors for each request, the | implementation dynamically computes the Path Vectors for each request, the | |||
| service providing Path Vectors may become an entry point for denial-of-service | service that provides the Path Vectors may become an entry point for denial-of-s ervice | |||
| attacks on the availability of an ALTO server.</t> | attacks on the availability of an ALTO server.</t> | |||
| <t>To mitigate this risk, an ALTO server may consider using optimizations such as | <t>To mitigate this risk, an ALTO server may consider using such optimizat ions as | |||
| precomputation-and-projection mechanisms <xref target="MERCATOR" format="default "/> to reduce the overhead for | precomputation-and-projection mechanisms <xref target="MERCATOR" format="default "/> to reduce the overhead for | |||
| processing each query. Also, an ALTO server may also protect itself from | processing each query. An ALTO server may also protect itself from | |||
| malicious clients by monitoring the behaviors of clients and stopping serving | malicious clients by monitoring client behavior and stopping service to | |||
| clients with suspicious behaviors (e.g., sending requests at a high frequency).< | clients that exhibit suspicious behavior (e.g., sending requests at a high frequ | |||
| /t> | ency).</t> | |||
| <t>The ALTO service providers must be aware that providing incremental upd ates of | <t>The ALTO service providers must be aware that providing incremental upd ates of | |||
| the "max-reservable-bandwidth" may provide information about other consumers of | "max-reservable-bandwidth" may provide information about other consumers of | |||
| the network. For example, a change of the value may indicate one or more | the network. For example, a change in value may indicate that one or more | |||
| reservations has been made or changed. To mitigate this risk, an ALTO server | reservations have been made or changed. To mitigate this risk, an ALTO server | |||
| can batch the updates and/or add a random delay before publishing the updates.</ t> | can batch the updates and/or add a random delay before publishing the updates.</ t> | |||
| </section> | </section> | |||
| <section anchor="IANA" numbered="true" toc="default"> | <section anchor="IANA" numbered="true" toc="default"> | |||
| <name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
| <section anchor="alto-cost-metric-registry" numbered="true" toc="default"> | <section anchor="alto-cost-metrics-registry" numbered="true" toc="default" | |||
| <name>ALTO Cost Metric Registry</name> | > | |||
| <t>This document registers a new entry to the ALTO Cost Metric Registry, | <name>"ALTO Cost Metrics" Registry</name> | |||
| as | <t>This document registers a new entry in the "ALTO Cost Metrics" regist | |||
| instructed by Section 14.2 of <xref target="RFC7285" format="default"/>. The new | ry, per | |||
| entry | <xref target="RFC7285" sectionFormat="of" section="14.2"/>. The new entry | |||
| is as shown below in <xref target="tbl-cost-metric" format="default"/>.</t> | is as shown below in <xref target="tbl-cost-metric" format="default"/>.</t> | |||
| <table anchor="tbl-cost-metric" align="center"> | <table anchor="tbl-cost-metric" align="center"> | |||
| <name>ALTO Cost Metric Registry</name> | <name>"ALTO Cost Metrics" Registry</name> | |||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="left">Identifier</th> | <th align="left">Identifier</th> | |||
| <th align="left">Intended Semantics</th> | <th align="left">Intended Semantics</th> | |||
| <th align="left">Security Considerations</th> | <th align="left">Reference</th> | |||
| </tr> | </tr> | |||
| </thead> | </thead> | |||
| <tbody> | <tbody> | |||
| <tr> | <tr> | |||
| <td align="left">ane-path</td> | <td align="left">ane-path</td> | |||
| <td align="left">See <xref target="metric-spec" format="default"/> </td> | <td align="left">See <xref target="metric-spec" format="default"/> </td> | |||
| <td align="left">See <xref target="Security" format="default"/></t d> | <td align="left">RFC 9275</td> | |||
| </tr> | </tr> | |||
| </tbody> | </tbody> | |||
| </table> | </table> | |||
| </section> | </section> | |||
| <section anchor="alto-cost-mode-registry" numbered="true" toc="default"> | <section anchor="alto-cost-modes-registry" numbered="true" toc="default"> | |||
| <name>ALTO Cost Mode Registry</name> | <name>"ALTO Cost Modes" Registry</name> | |||
| <t>This document registers a new entry to the ALTO Cost Mode Registry, a | <t>This document registers a new entry in the "ALTO Cost Modes" registry | |||
| s | , per | |||
| instructed by Section 4 of <xref target="I-D.bw-alto-cost-mode" format="default" | <xref target="RFC9274" sectionFormat="of" section="5"/>. The new entry | |||
| />. The new entry | ||||
| is as shown below in <xref target="tbl-cost-mode" format="default"/>.</t> | is as shown below in <xref target="tbl-cost-mode" format="default"/>.</t> | |||
| <table anchor="tbl-cost-mode" align="center"> | <table anchor="tbl-cost-mode" align="center"> | |||
| <name>ALTO Cost Mode Registry</name> | <name>"ALTO Cost Modes" Registry</name> | |||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="left">Identifier</th> | <th align="left">Identifier</th> | |||
| <th align="left">Description</th> | ||||
| <th align="left">Intended Semantics</th> | <th align="left">Intended Semantics</th> | |||
| <th align="left">Reference</th> | ||||
| </tr> | </tr> | |||
| </thead> | </thead> | |||
| <tbody> | <tbody> | |||
| <tr> | <tr> | |||
| <td align="left">array</td> | <td align="left">array</td> | |||
| <td align="left">Indicates that the cost value is a JSON array</td > | ||||
| <td align="left">See <xref target="mode-spec" format="default"/></ td> | <td align="left">See <xref target="mode-spec" format="default"/></ td> | |||
| <td align="left">RFC 9275</td> | ||||
| </tr> | </tr> | |||
| </tbody> | </tbody> | |||
| </table> | </table> | |||
| </section> | </section> | |||
| <section anchor="alto-entity-domain-type-registry" numbered="true" toc="de | <section anchor="alto-entity-domain-types-registry" numbered="true" toc="d | |||
| fault"> | efault"> | |||
| <name>ALTO Entity Domain Type Registry</name> | <name>"ALTO Entity Domain Types" Registry</name> | |||
| <t>This document registers a new entry to the ALTO Domain Entity Type Re | <t>This document registers a new entry in the "ALTO Entity Domain Types" | |||
| gistry, as | registry, per | |||
| instructed by Section 12.2 of <xref target="I-D.ietf-alto-unified-props-new" for | <xref target="RFC9240" sectionFormat="of" section="12.3"/>. The new entry | |||
| mat="default"/>. The new entry | ||||
| is as shown below in <xref target="tbl-entity-domain" format="default"/>.</t> | is as shown below in <xref target="tbl-entity-domain" format="default"/>.</t> | |||
| <table anchor="tbl-entity-domain" align="center"> | <table anchor="tbl-entity-domain" align="center"> | |||
| <name>ALTO Entity Domain Type Registry</name> | <name>"ALTO Entity Domain Types" Registry</name> | |||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="left">Identifier</th> | <th align="left">Identifier</th> | |||
| <th align="left">Entity Identifier Encoding</th> | <th align="left">Entity Identifier Encoding</th> | |||
| <th align="left">Hierarchy & Inheritance</th> | <th align="left">Hierarchy and Inheritance</th> | |||
| <th align="left">Media Type of Defining Resoucrce</th> | <th align="left">Media Type of Defining Resource</th> | |||
| <th align="left">Mapping to ALTO Address Type</th> | <th align="left">Mapping to ALTO Address Type</th> | |||
| </tr> | </tr> | |||
| </thead> | </thead> | |||
| <tbody> | <tbody> | |||
| <tr> | <tr> | |||
| <td align="left">ane</td> | <td align="left">ane</td> | |||
| <td align="left">See <xref target="entity-address" format="default "/></td> | <td align="left">See <xref target="entity-address" format="default "/></td> | |||
| <td align="left">None</td> | <td align="left">None</td> | |||
| <td align="left">application/alto-propmap+json</td> | <td align="left">application/alto-propmap+json</td> | |||
| <td align="left">false</td> | <td align="left">false</td> | |||
| skipping to change at line 2476 ¶ | skipping to change at line 2426 ¶ | |||
| <t>None</t> | <t>None</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Media Type of Defining Resource: </dt> | Media Type of Defining Resource: </dt> | |||
| <dd> | <dd> | |||
| <t>See <xref target="domain-defining" format="default"/>.</t> | <t>See <xref target="domain-defining" format="default"/>.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Mapping to ALTO Address Type: </dt> | Mapping to ALTO Address Type: </dt> | |||
| <dd> | <dd> | |||
| <t>This entity type does not map to ALTO address type.</t> | <t>This entity type does not map to an ALTO address type.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Security Considerations: </dt> | Security Considerations: </dt> | |||
| <dd> | <dd> | |||
| <t>In some usage scenarios, ANE addresses carried in ALTO Protocol m essages may | <t>In some usage scenarios, ANE addresses carried in ALTO Protocol m essages may | |||
| reveal information about an ALTO client or an ALTO service provider. | reveal information about an ALTO client or an ALTO service provider. | |||
| Applications and ALTO service providers using addresses of ANEs will be made | If a naming schema is used to generate ANE names, either | |||
| aware of how (or if) the addressing scheme relates to private information and | used privately or standardized by a future extension, how | |||
| network proximity, in further iterations of this document.</t> | (or if) the naming schema relates to private information | |||
| and network proximity must be explained to ALTO implementers | ||||
| and service providers.</t> | ||||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| </section> | </section> | |||
| <section anchor="alto-entity-property-type-registry" numbered="true" toc=" | <section anchor="alto-entity-property-types-registry" numbered="true" toc= | |||
| default"> | "default"> | |||
| <name>ALTO Entity Property Type Registry</name> | <name>"ALTO Entity Property Types" Registry</name> | |||
| <t>Two initial entries "max-reservable-bandwidth" and "persistent-entity | <t>Two initial entries -- "max-reservable-bandwidth" and "persistent-ent | |||
| -id" are | ity-id" -- are | |||
| registered to the ALTO Domain "ane" in the "ALTO Entity Property Type Registry", | registered for the ALTO domain "ane" in the "ALTO Entity Property Types" registr | |||
| as instructed by Section 12.3 of <xref target="I-D.ietf-alto-unified-props-new" | y, | |||
| format="default"/>. The two | per <xref target="RFC9240" sectionFormat="of" section="12.4"/>. The two | |||
| new entries are shown below in <xref target="tbl-prop-type-reg" format="default" | new entries are shown below in <xref target="tbl-prop-type-reg" format="default" | |||
| /> and their details can be | />, and their details can be | |||
| found in <xref target="mrb-iana" format="default"/> and <xref target="pei-iana" | found in Sections <xref target="mrb-iana" format="counter"/> and <xref targ | |||
| format="default"/>.</t> | et="pei-iana" format="counter"/> of this document.</t> | |||
| <table anchor="tbl-prop-type-reg" align="center"> | <table anchor="tbl-prop-type-reg" align="center"> | |||
| <name>Initial Entries for ane Domain in the ALTO Entity Property Types Registry</name> | <name>Initial Entries for the "ane" Domain in the "ALTO Entity Property Types" Registry</name> | |||
| <thead> | <thead> | |||
| <tr> | <tr> | |||
| <th align="left">Identifier</th> | <th align="left">Identifier</th> | |||
| <th align="left">Intended Semantics</th> | <th align="left">Intended Semantics</th> | |||
| <th align="left">Media Type of Defining Resource</th> | <th align="left">Media Type of Defining Resource</th> | |||
| </tr> | </tr> | |||
| </thead> | </thead> | |||
| <tbody> | <tbody> | |||
| <tr> | <tr> | |||
| <td align="left">max-reservable-bandwidth</td> | <td align="left">max-reservable-bandwidth</td> | |||
| skipping to change at line 2539 ¶ | skipping to change at line 2491 ¶ | |||
| <t>See <xref target="maxresbw" format="default"/>.</t> | <t>See <xref target="maxresbw" format="default"/>.</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Media Type of Defining Resource: </dt> | Media Type of Defining Resource: </dt> | |||
| <dd> | <dd> | |||
| <t>application/alto-propmap+json</t> | <t>application/alto-propmap+json</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Security Considerations: </dt> | Security Considerations: </dt> | |||
| <dd> | <dd> | |||
| <t>This property is essential for applications such as large-scale | <t>To make better choices regarding bandwidth reservation, this pr | |||
| data | operty is essential for applications such as large-scale data | |||
| transfers or overlay network interconnection to make better choice of | transfers or an overlay network interconnection. It may reveal the bandwidth usa | |||
| bandwidth reservation. It may reveal the bandwidth usage of the underlying | ge of the underlying | |||
| network and can potentially be leveraged to reduce the cost of conducting | network and can potentially be leveraged to reduce the cost of conducting | |||
| denial-of-service attacks. Thus, the ALTO server MUST consider protection | denial-of-service attacks. Thus, the ALTO server <bcp14>MUST</bcp14> consider su | |||
| mechanisms including only providing the information to authorized clients, and | ch protection | |||
| information reduction and obfuscation as introduced in <xref target="Security" f | mechanisms as providing the information to authorized clients only and applying | |||
| ormat="default"/>.</t> | information reduction and obfuscation as discussed in <xref target="Security" fo | |||
| rmat="default"/>.</t> | ||||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| </section> | </section> | |||
| <section anchor="pei-iana" numbered="true" toc="default"> | <section anchor="pei-iana" numbered="true" toc="default"> | |||
| <name>New ANE Property Type: Persistent Entity ID</name> | <name>New ANE Property Type: Persistent Entity ID</name> | |||
| <dl> | <dl> | |||
| <dt> | <dt> | |||
| Identifier: </dt> | Identifier: </dt> | |||
| <dd> | <dd> | |||
| <t>"persistent-entity-id"</t> | <t>"persistent-entity-id"</t> | |||
| skipping to change at line 2572 ¶ | skipping to change at line 2523 ¶ | |||
| <dt> | <dt> | |||
| Media Type of Defining Resource: </dt> | Media Type of Defining Resource: </dt> | |||
| <dd> | <dd> | |||
| <t>application/alto-propmap+json</t> | <t>application/alto-propmap+json</t> | |||
| </dd> | </dd> | |||
| <dt> | <dt> | |||
| Security Considerations: </dt> | Security Considerations: </dt> | |||
| <dd> | <dd> | |||
| <t>This property is useful when an ALTO server wants to selectivel y expose | <t>This property is useful when an ALTO server wants to selectivel y expose | |||
| certain service points whose detailed properties can be further queried by | certain service points whose detailed properties can be further queried by | |||
| applications. The entity IDs may consider sensitive information about the | applications. As mentioned in <xref target="RFC9240" sectionFormat="of" | |||
| underlying network, and an ALTO server should follow the security | section="12.3.2"/>, the entity IDs may reveal sensitive information about the | |||
| considerations in Section 11 of <xref target="I-D.ietf-alto-unified-props-new" f | underlying network. An ALTO server should follow the security | |||
| ormat="default"/>.</t> | considerations provided in <xref target="RFC9240" sectionFormat="of" section="11 | |||
| "/>.</t> | ||||
| </dd> | </dd> | |||
| </dl> | </dl> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references> | <references> | |||
| <name>References</name> | <name>References</name> | |||
| <references> | <references> | |||
| <name>Normative References</name> | <name>Normative References</name> | |||
| <reference anchor="RFC2046"> | ||||
| <front> | ||||
| <title>Multipurpose Internet Mail Extensions (MIME) Part Two: Media | ||||
| Types</title> | ||||
| <author fullname="N. Freed" initials="N." surname="Freed"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="N. Borenstein" initials="N." surname="Borenstein"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="November" year="1996"/> | ||||
| <abstract> | ||||
| <t>This second document defines the general structure of the MIME | ||||
| media typing system and defines an initial set of media types. [STANDARDS-TRACK | ||||
| ]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="2046"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC2046"/> | ||||
| </reference> | ||||
| <reference anchor="RFC2119"> | ||||
| <front> | ||||
| <title>Key words for use in RFCs to Indicate Requirement Levels</tit | ||||
| le> | ||||
| <author fullname="S. Bradner" initials="S." surname="Bradner"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="March" year="1997"/> | ||||
| <abstract> | ||||
| <t>In many standards track documents several words are used to sig | ||||
| nify the requirements in the specification. These words are often capitalized. | ||||
| This document defines these words as they should be interpreted in IETF document | ||||
| s. 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="RFC7285"> | ||||
| <front> | ||||
| <title>Application-Layer Traffic Optimization (ALTO) Protocol</title | ||||
| > | ||||
| <author fullname="R. Alimi" initials="R." role="editor" surname="Ali | ||||
| mi"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="R. Penno" initials="R." role="editor" surname="Pen | ||||
| no"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="Y. Yang" initials="Y." role="editor" surname="Yang | ||||
| "> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="S. Kiesel" initials="S." surname="Kiesel"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="S. Previdi" initials="S." surname="Previdi"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="W. Roome" initials="W." surname="Roome"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="S. Shalunov" initials="S." surname="Shalunov"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="R. Woundy" initials="R." surname="Woundy"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="September" year="2014"/> | ||||
| <abstract> | ||||
| <t>Applications using the Internet already have access to some top | ||||
| ology information of Internet Service Provider (ISP) networks. For example, vie | ||||
| ws 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 wa | ||||
| y to distribute it.</t> | ||||
| <t>The Application-Layer Traffic Optimization (ALTO) services defi | ||||
| ned in this document provide network information (e.g., basic network location s | ||||
| tructure and preferences of network paths) with the goal of modifying network re | ||||
| source consumption patterns while maintaining or improving application performan | ||||
| ce. The basic information of ALTO is based on abstract maps of a network. Thes | ||||
| e maps provide a simplified view, yet enough information about a network for app | ||||
| lications to effectively utilize them. Additional services are built on top of | ||||
| the maps.</t> | ||||
| <t>This document describes a protocol implementing the ALTO servic | ||||
| es. Although the ALTO services would primarily be provided by ISPs, other entiti | ||||
| es, such as content service providers, could also provide ALTO services. Applic | ||||
| ations that could use the ALTO services are those that have a choice to which en | ||||
| d points to connect. Examples of such applications are peer-to-peer (P2P) and c | ||||
| ontent delivery networks.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7285"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7285"/> | ||||
| </reference> | ||||
| <reference anchor="RFC2387"> | ||||
| <front> | ||||
| <title>The MIME Multipart/Related Content-type</title> | ||||
| <author fullname="E. Levinson" initials="E." surname="Levinson"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="August" year="1998"/> | ||||
| <abstract> | ||||
| <t>This document defines the Multipart/Related content-type and pr | ||||
| ovides examples of its use. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="2387"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC2387"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5322"> | ||||
| <front> | ||||
| <title>Internet Message Format</title> | ||||
| <author fullname="P. Resnick" initials="P." role="editor" surname="R | ||||
| esnick"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="October" year="2008"/> | ||||
| <abstract> | ||||
| <t>This document specifies the Internet Message Format (IMF), a sy | ||||
| ntax for text messages that are sent between computer users, within the framewor | ||||
| k of "electronic mail" messages. This specification is a revision of Request Fo | ||||
| r Comments (RFC) 2822, which itself superseded Request For Comments (RFC) 822, " | ||||
| Standard for the Format of ARPA Internet Text Messages", updating it to reflect | ||||
| current practice and incorporating incremental changes that were specified in ot | ||||
| her RFCs. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5322"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5322"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8174"> | ||||
| <front> | ||||
| <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
| tle> | ||||
| <author fullname="B. Leiba" initials="B." surname="Leiba"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="May" year="2017"/> | ||||
| <abstract> | ||||
| <t>RFC 2119 specifies common key words that may be used in protoco | ||||
| l specifications. This document aims to reduce the ambiguity by clarifying tha | ||||
| t 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="RFC8189"> | ||||
| <front> | ||||
| <title>Multi-Cost Application-Layer Traffic Optimization (ALTO)</tit | ||||
| le> | ||||
| <author fullname="S. Randriamasy" initials="S." surname="Randriamasy | ||||
| "> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="W. Roome" initials="W." surname="Roome"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="N. Schwan" initials="N." surname="Schwan"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="October" year="2017"/> | ||||
| <abstract> | ||||
| <t>The Application-Layer Traffic Optimization (ALTO) protocol, spe | ||||
| cified in RFC 7285, defines several services that return various metrics describ | ||||
| ing the costs between network endpoints.</t> | ||||
| <t>This document defines a new service that allows an ALTO Client | ||||
| to retrieve several cost metrics in a single request for an ALTO filtered cost m | ||||
| ap and endpoint cost map. In addition, it extends the constraints to further fi | ||||
| lter those maps by allowing an ALTO Client to specify a logical combination of t | ||||
| ests on several cost metrics.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8189"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8189"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8895"> | ||||
| <front> | ||||
| <title>Application-Layer Traffic Optimization (ALTO) Incremental Upd | ||||
| ates Using Server-Sent Events (SSE)</title> | ||||
| <author fullname="W. Roome" initials="W." surname="Roome"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="Y. Yang" initials="Y." surname="Yang"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="November" year="2020"/> | ||||
| <abstract> | ||||
| <t>The Application-Layer Traffic Optimization (ALTO) protocol (RFC | ||||
| 7285) provides network-related information, called network information resource | ||||
| s, to client applications so that clients can make informed decisions in utilizi | ||||
| ng 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 inc | ||||
| remental, in that if only a small section of an information resource changes, th | ||||
| e ALTO server can send just the changes and (2) updates can be immediate, in tha | ||||
| t 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="RFC8896"> | ||||
| <front> | ||||
| <title>Application-Layer Traffic Optimization (ALTO) Cost Calendar</ | ||||
| title> | ||||
| <author fullname="S. Randriamasy" initials="S." surname="Randriamasy | ||||
| "> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="R. Yang" initials="R." surname="Yang"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="Q. Wu" initials="Q." surname="Wu"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="L. Deng" initials="L." surname="Deng"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="N. Schwan" initials="N." surname="Schwan"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="November" year="2020"/> | ||||
| <abstract> | ||||
| <t>This document is an extension to the base Application-Layer Tra | ||||
| ffic Optimization (ALTO) protocol. It extends the ALTO cost information service | ||||
| so that applications decide not only 'where' to connect but also 'when'. This | ||||
| is useful for applications that need to perform bulk data transfer and would lik | ||||
| e to schedule these transfers during an off-peak hour, for example. This extens | ||||
| ion introduces the ALTO Cost Calendar with which an ALTO Server exposes ALTO cos | ||||
| t values in JSON arrays where each value corresponds to a given time interval. | ||||
| The time intervals, as well as other Calendar attributes, are specified in the I | ||||
| nformation Resources Directory and ALTO Server responses.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8896"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8896"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-alto-unified-props-new"> | ||||
| <front> | ||||
| <title>An ALTO Extension: Entity Property Maps</title> | ||||
| <author fullname="Wendy Roome"> | ||||
| <organization>Nokia Bell Labs</organization> | ||||
| </author> | ||||
| <author fullname="Sabine Randriamasy"> | ||||
| <organization>Nokia Bell Labs</organization> | ||||
| </author> | ||||
| <author fullname="Y. Richard Yang"> | ||||
| <organization>Yale University</organization> | ||||
| </author> | ||||
| <author fullname="Jingxuan Jensen Zhang"> | ||||
| <organization>Tongji University</organization> | ||||
| </author> | ||||
| <author fullname="Kai Gao"> | ||||
| <organization>Sichuan University</organization> | ||||
| </author> | ||||
| <date day="28" month="February" year="2022"/> | ||||
| <abstract> | ||||
| <t> This document specifies an extension to the base Application | ||||
| -Layer | ||||
| Traffic Optimization (ALTO) protocol that generalizes the concept of | ||||
| "endpoint properties", which were so far tied to IP addresses, to | ||||
| entities defined by a wide set of objects. Further, these properties | ||||
| are presented as maps, similar to the network and cost maps in the | ||||
| base ALTO protocol. While supporting the endpoints and related | ||||
| endpoint property service defined in RFC7285, the ALTO protocol is | ||||
| extended in two major directions. First, from endpoints restricted | ||||
| to IP addresses to entities covering a wider and extensible set of | ||||
| objects; second, from properties on specific endpoints to entire | ||||
| entity property maps. These extensions introduce additional features | ||||
| allowing entities and property values to be specific to a given | ||||
| information resource. This is made possible by a generic and | ||||
| flexible design of entity and property types. | ||||
| </t> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2046. | |||
| </abstract> | xml"/> | |||
| </front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119. | |||
| <seriesInfo name="Internet-Draft" value="draft-ietf-alto-unified-props | xml"/> | |||
| -new-24"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7285. | |||
| </reference> | xml"/> | |||
| <reference anchor="I-D.bw-alto-cost-mode"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2387. | |||
| <front> | xml"/> | |||
| <title>A Cost Mode Registry for the Application-Layer Traffic Optimi | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5322. | |||
| zation (ALTO) Protocol</title> | xml"/> | |||
| <author fullname="Mohamed Boucadair"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174. | |||
| <organization>Orange</organization> | xml"/> | |||
| </author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8189. | |||
| <author fullname="Qin Wu"> | xml"/> | |||
| <organization>Huawei</organization> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8895. | |||
| </author> | xml"/> | |||
| <date day="4" month="March" year="2022"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8896. | |||
| <abstract> | xml"/> | |||
| <t> This document creates a new IANA registry for tracking cost | ||||
| modes | ||||
| supported by the Application-Layer Traffic Optimization (ALTO) | ||||
| protocol. Also, this document relaxes a constraint that was imposed | ||||
| by the ALTO specification on allowed cost mode values. | ||||
| This document updates RFC 7285. | <!-- draft-ietf-alto-unified-props-new (RFC 9240; published 7/14/2022) --> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9240. | ||||
| xml"/> | ||||
| <!-- draft-bw-alto-cost-mode (replaced by draft-ietf-alto-cost-mode) | ||||
| RFC 9274; published 7/26/2022) --> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9274. | ||||
| xml"/> | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-bw-alto-cost-mode-01"/> | ||||
| </reference> | ||||
| </references> | </references> | |||
| <references> | <references> | |||
| <name>Informative References</name> | <name>Informative References</name> | |||
| <reference anchor="RFC2216"> | ||||
| <front> | ||||
| <title>Network Element Service Specification Template</title> | ||||
| <author fullname="S. Shenker" initials="S." surname="Shenker"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="J. Wroclawski" initials="J." surname="Wroclawski"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="September" year="1997"/> | ||||
| <abstract> | ||||
| <t>This document defines a framework for specifying services provi | ||||
| ded by network elements, and available to applications, in an internetwork which | ||||
| offers multiple qualities of service. The document first provides some necessar | ||||
| y context -- including relevant definitions and suggested data formats -- and th | ||||
| en specifies a "template" which service specification documents should follow. | ||||
| This memo provides information for the Internet community. It does not specify | ||||
| an Internet standard of any kind.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="2216"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC2216"/> | ||||
| </reference> | ||||
| <reference anchor="RFC4271"> | ||||
| <front> | ||||
| <title>A Border Gateway Protocol 4 (BGP-4)</title> | ||||
| <author fullname="Y. Rekhter" initials="Y." role="editor" surname="R | ||||
| ekhter"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="T. Li" initials="T." role="editor" surname="Li"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="S. Hares" initials="S." role="editor" surname="Har | ||||
| es"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="January" year="2006"/> | ||||
| <abstract> | ||||
| <t>This document discusses the Border Gateway Protocol (BGP), whic | ||||
| h is an inter-Autonomous System routing protocol.</t> | ||||
| <t>The primary function of a BGP speaking system is to exchange ne | ||||
| twork reachability information with other BGP systems. This network reachabilit | ||||
| y information includes information on the list of Autonomous Systems (ASes) that | ||||
| reachability information traverses. This information is sufficient for construc | ||||
| ting a graph of AS connectivity for this reachability from which routing loops m | ||||
| ay be pruned, and, at the AS level, some policy decisions may be enforced.</t> | ||||
| <t>BGP-4 provides a set of mechanisms for supporting Classless Int | ||||
| er-Domain Routing (CIDR). These mechanisms include support for advertising a se | ||||
| t of destinations as an IP prefix, and eliminating the concept of network "class | ||||
| " within BGP. BGP-4 also introduces mechanisms that allow aggregation of routes | ||||
| , including aggregation of AS paths.</t> | ||||
| <t>This document obsoletes RFC 1771. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4271"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4271"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-httpbis-http2bis"> | ||||
| <front> | ||||
| <title>HTTP/2</title> | ||||
| <author fullname="Martin Thomson"> | ||||
| <organization>Mozilla</organization> | ||||
| </author> | ||||
| <author fullname="Cory Benfield"> | ||||
| <organization>Apple Inc.</organization> | ||||
| </author> | ||||
| <date day="24" month="January" year="2022"/> | ||||
| <abstract> | ||||
| <t> This specification describes an optimized expression of the | ||||
| semantics | ||||
| of the Hypertext Transfer Protocol (HTTP), referred to as HTTP | ||||
| version 2 (HTTP/2). HTTP/2 enables a more efficient use of network | ||||
| resources and a reduced latency by introducing field compression and | ||||
| allowing multiple concurrent exchanges on the same connection. | ||||
| This document obsoletes RFC 7540 and RFC 8740. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-http2bis-0 | ||||
| 7"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-quic-http"> | ||||
| <front> | ||||
| <title>Hypertext Transfer Protocol Version 3 (HTTP/3)</title> | ||||
| <author fullname="Mike Bishop"> | ||||
| <organization>Akamai</organization> | ||||
| </author> | ||||
| <date day="2" month="February" year="2021"/> | ||||
| <abstract> | ||||
| <t>The QUIC transport protocol has several features that are desir | ||||
| able | ||||
| in a transport for HTTP, such as stream multiplexing, per-stream flow | ||||
| control, and low-latency connection establishment. This document | ||||
| describes a mapping of HTTP semantics over QUIC. This document also | ||||
| identifies HTTP/2 features that are subsumed by QUIC, and describes | ||||
| how HTTP/2 extensions can be ported to HTTP/3. | ||||
| DO NOT DEPLOY THIS VERSION OF HTTP | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2216. | |||
| xml"/> | ||||
| DO NOT DEPLOY THIS VERSION OF HTTP/3 UNTIL IT IS IN AN RFC. This | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4271. | |||
| version is still a work in progress. For trial deployments, please | xml"/> | |||
| use earlier versions. | ||||
| Note to Readers | ||||
| Discussion of this draft takes place on the QUIC working group | <!-- draft-ietf-httpbis-http2bis (RFC 9113; published) --> | |||
| mailing list (quic@ietf.org), which is archived at | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9113. | |||
| https://mailarchive.ietf.org/arch/search/?email_list=quic. | xml"/> | |||
| Working Group information can be found at https://github.com/quicwg; | <!-- draft-ietf-quic-http (RFC 9114; published) --> | |||
| source code and issues list for this draft can be found at | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9114. | |||
| https://github.com/quicwg/base-drafts/labels/-http. | xml"/> | |||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-quic-http-34"/> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-alto-performance-metrics"> | ||||
| <front> | ||||
| <title>ALTO Performance Cost Metrics</title> | ||||
| <author fullname="Qin Wu"> | ||||
| <organization>Huawei</organization> | ||||
| </author> | ||||
| <author fullname="Y. Richard Yang"> | ||||
| <organization>Yale University</organization> | ||||
| </author> | ||||
| <author fullname="Young Lee"> | ||||
| <organization>Samsung</organization> | ||||
| </author> | ||||
| <author fullname="Dhruv Dhody"> | ||||
| <organization>Huawei</organization> | ||||
| </author> | ||||
| <author fullname="Sabine Randriamasy"> | ||||
| <organization>Nokia Bell Labs</organization> | ||||
| </author> | ||||
| <author fullname="Luis Miguel Contreras Murillo"> | ||||
| <organization>Telefonica</organization> | ||||
| </author> | ||||
| <date day="2" month="March" year="2022"/> | ||||
| <abstract> | ||||
| <t> The cost metric is a basic concept in Application-Layer Traf | ||||
| fic | ||||
| Optimization (ALTO), and different applications may use different | ||||
| types of cost metrics. Since the ALTO base protocol (RFC 7285) | ||||
| defines only a single cost metric (namely, the generic "routingcost" | ||||
| metric), if an application wants to issue a cost map or an endpoint | ||||
| cost request in order to identify a resource provider that offers | ||||
| better performance metrics (e.g., lower delay or loss rate), the base | ||||
| protocol does not define the cost metric to be used. | ||||
| This document addresses this issue by extending the specification to | <!-- draft-ietf-alto-performance-metrics (MISSREF) | |||
| provide a variety of network performance metrics, including network | Have to do "long way" for correct author initials. Also, | |||
| delay, delay variation (a.k.a, jitter), packet loss rate, hop count, | "Contreras" vice "Contreras Murillo", per published RFCs | |||
| and bandwidth. | 7028, 7161, 8432, 8568, 8597, and 9013. --> | |||
| <reference anchor="ALTO-PERF-METRICS"> | ||||
| <front> | ||||
| <title>ALTO Performance Cost Metrics</title> | ||||
| <author fullname="Qin Wu" initials="Q" surname="Wu"> | ||||
| <organization>Huawei</organization> | ||||
| </author> | ||||
| <author fullname="Y. Richard Yang" initials="Y" surname="Yang"> | ||||
| <organization>Yale University</organization> | ||||
| </author> | ||||
| <author fullname="Young Lee" initials="Y" surname="Lee"> | ||||
| <organization>Samsung</organization> | ||||
| </author> | ||||
| <author fullname="Dhruv Dhody" initials="D" surname="Dhody"> | ||||
| <organization>Huawei</organization> | ||||
| </author> | ||||
| <author fullname="Sabine Randriamasy" initials="S" surname="Randriamasy"> | ||||
| <organization>Nokia Bell Labs</organization> | ||||
| </author> | ||||
| <author fullname="Luis Miguel Contreras Murillo" initials="L" surname="Con | ||||
| treras"> | ||||
| <organization>Telefonica</organization> | ||||
| </author> | ||||
| <date month="March" day="21" year="2022" /> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-alto-performance-metrics- | ||||
| 28" /> | ||||
| </reference> | ||||
| There are multiple sources (e.g., estimation based on measurements or | <!-- draft-irtf-nmrg-ibn-concepts-definitions (RFC-EDITOR as of 8/23/2022; | |||
| service-level agreement) to derive a performance metric. This | keep an eye on how it progresses) | |||
| document introduces an additional "cost-context" field to the ALTO | (Had to do "long way" to get "L. Z. Granville") --> | |||
| "cost-type" field to convey the source of a performance metric. | <reference anchor="INTENT-BASED-NETWORKING"> | |||
| <front> | ||||
| <title>Intent-Based Networking - Concepts and Definitions</title> | ||||
| <author initials="A" surname="Clemm" fullname="Alexander Clemm"> | ||||
| <organization>Futurewei</organization> | ||||
| </author> | ||||
| <author initials="L" surname="Ciavaglia" fullname="Laurent Ciavaglia"> | ||||
| <organization>Rakuten Mobile</organization> | ||||
| </author> | ||||
| <author initials="L. Z." surname="Granville" fullname="Lisandro Zambenedet | ||||
| ti Granville"> | ||||
| <organization>Federal University of Rio Grande do Sul (UFRGS)</organizat | ||||
| ion> | ||||
| </author> | ||||
| <author initials="J" surname="Tantsura" fullname="Jeff Tantsura"> | ||||
| <organization>Microsoft</organization> | ||||
| </author> | ||||
| <date month="March" day="24" year="2022" /> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-irtf-nmrg-ibn-concepts-definit | ||||
| ions-09" /> | ||||
| </reference> | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-alto-performance-m | ||||
| etrics-26"/> | ||||
| </reference> | ||||
| <reference anchor="XQuery" target="https://www.w3.org/TR/xquery-31/"> | <reference anchor="XQuery" target="https://www.w3.org/TR/xquery-31/"> | |||
| <front> | <front> | |||
| <title>XQuery 3.1: An XML Query Language</title> | <title>XQuery 3.1: An XML Query Language</title> | |||
| <author> | <author initials="J." surname="Robie" fullname="Jonathan Robie" role ="editor"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date year="2017"/> | <author initials="M." surname="Dyck" fullname="Michael Dyck" role="e | |||
| ditor"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="J." surname="Spiegel" fullname="Josh Spiegel" role | ||||
| ="editor"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date year="2017" month="March"/> | ||||
| </front> | </front> | |||
| <refcontent>W3C Recommendation</refcontent> | ||||
| </reference> | </reference> | |||
| <reference anchor="SEREDGE" target="https://doi.org/10.1109/NOMS47738.20 | ||||
| 20.9110342"> | <reference anchor="SEREDGE" target="https://ieeexplore.ieee.org/document | |||
| /9110342"> | ||||
| <front> | <front> | |||
| <title>Computing at the Edge: But, what Edge?</title> | <title>Computing at the Edge: But, what Edge?</title> | |||
| <author initials="L." surname="Contreras" fullname="Luis M. Contrera s"> | <author initials="L." surname="Contreras" fullname="Luis M. Contrera s"> | |||
| <organization>Telefonica</organization> | <organization>Telefonica</organization> | |||
| </author> | </author> | |||
| <author initials="J." surname="Baliosian" fullname="Javier Baliosian "> | <author initials="J." surname="Baliosian" fullname="Javier Baliosian "> | |||
| <organization>Telefonica/Universidad de la República</organization > | <organization>Telefonica/Universidad de la República</organization > | |||
| </author> | </author> | |||
| <author initials="P." surname="Martı́nez-Julia" fullname="Pedro Mart | <author initials="P." surname="Martínez-Julia" fullname="Pedro | |||
| ı́nez-Julia"> | Martı́nez-Julia"> | |||
| <organization>National Institute of Information and Communications Technology, Japan</organization> | <organization>National Institute of Information and Communications Technology, Japan</organization> | |||
| </author> | </author> | |||
| <author initials="J." surname="Serrat" fullname="Joan Serrat"> | <author initials="J." surname="Serrat" fullname="Joan Serrat"> | |||
| <organization>Universitat Politcnica de Catalunya</organization> | <organization>Universitat Politcnica de Catalunya</organization> | |||
| </author> | </author> | |||
| <date year="2020"/> | <date year="2020" month="April"/> | |||
| </front> | </front> | |||
| <seriesInfo name="In proceedings of the NOMS 2020 - 2020 IEEE/IFIP Net | <refcontent>Proceedings of NOMS 2020 - 2020 IEEE/IFIP Network Operatio | |||
| work Operations and Management Symposium. pp. 1-9." value=""/> | ns and Management Symposium, pp. 1-9</refcontent> | |||
| <seriesInfo name="DOI" value="10.1109/NOMS47738.2020.9110342"/> | ||||
| </reference> | </reference> | |||
| <reference anchor="MOWIE" target="https://doi.org/10.1145/3405672.340948 | ||||
| 9"> | <reference anchor="MOWIE" target="https://dl.acm.org/doi/10.1145/3405672 | |||
| .3409489"> | ||||
| <front> | <front> | |||
| <title>MoWIE: Toward Systematic, Adaptive Network Information Exposu re as an Enabling Technique for Cloud-Based Applications over 5G and Beyond</tit le> | <title>MoWIE: Toward Systematic, Adaptive Network Information Exposu re as an Enabling Technique for Cloud-Based Applications over 5G and Beyond</tit le> | |||
| <author initials="Y." surname="Zhang" fullname="Yunfei Zhang"> | <author initials="Y." surname="Zhang" fullname="Yunfei Zhang"> | |||
| <organization>Tencent</organization> | <organization>Tencent</organization> | |||
| </author> | </author> | |||
| <author initials="G." surname="Li" fullname="Gang Li"> | <author initials="G." surname="Li" fullname="Gang Li"> | |||
| <organization>China Mobile</organization> | <organization>China Mobile</organization> | |||
| </author> | </author> | |||
| <author initials="C." surname="Xiong" fullname="Chunshan Xiong"> | <author initials="C." surname="Xiong" fullname="Chunshan Xiong"> | |||
| <organization>Tencent</organization> | <organization>Tencent</organization> | |||
| skipping to change at line 3032 ¶ | skipping to change at line 2692 ¶ | |||
| </author> | </author> | |||
| <author initials="A." surname="Walid" fullname="Anwar Walid"> | <author initials="A." surname="Walid" fullname="Anwar Walid"> | |||
| <organization>Nokia Bell Labs</organization> | <organization>Nokia Bell Labs</organization> | |||
| </author> | </author> | |||
| <author initials="Y.R." surname="Yang" fullname="Yang Richard Yang"> | <author initials="Y.R." surname="Yang" fullname="Yang Richard Yang"> | |||
| <organization>Yale University</organization> | <organization>Yale University</organization> | |||
| </author> | </author> | |||
| <author initials="Z." surname="Zhang" fullname="Zhi-Li Zhang"> | <author initials="Z." surname="Zhang" fullname="Zhi-Li Zhang"> | |||
| <organization>University of Minnesota</organization> | <organization>University of Minnesota</organization> | |||
| </author> | </author> | |||
| <date year="2020"/> | <date year="2020" month="August"/> | |||
| </front> | </front> | |||
| <seriesInfo name="In Proceedings of the Workshop on Network Applicatio | <refcontent>Proceedings of the Workshop on Network Application Integra | |||
| n Integration/CoDesign, ACM, Virtual Event USA, 20-27." value=""/> | tion/CoDesign (NAI '20), ACM, Virtual Event USA, pp. 20-27</refcontent> | |||
| <seriesInfo name="DOI" value="10.1145/3405672.3409489"/> | ||||
| </reference> | </reference> | |||
| <reference anchor="JSONiq" target="https://www.jsoniq.org/"> | <reference anchor="JSONiq" target="https://www.jsoniq.org/"> | |||
| <front> | <front> | |||
| <title>The JSON Query language</title> | <title>The JSON Query Language</title> | |||
| <author> | <author> | |||
| <organization/> | <organization>JSONiq</organization> | |||
| </author> | </author> | |||
| <date year="2020"/> | <date year="2022"/> | |||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor="MERCATOR" target="https://doi.org/10.1109/JSAC.2019.2 | ||||
| 927073"> | <reference anchor="MERCATOR" target="https://ieeexplore.ieee.org/documen | |||
| t/8756056"> | ||||
| <front> | <front> | |||
| <title>Toward Fine-Grained, Privacy-Preserving, Efficient Multi-Doma in Network Resource Discovery</title> | <title>Toward Fine-Grained, Privacy-Preserving, Efficient Multi-Doma in Network Resource Discovery</title> | |||
| <author initials="Q." surname="Xiang" fullname="Qiao Xiang"> | <author initials="Q." surname="Xiang" fullname="Qiao Xiang"> | |||
| <organization>Yale University</organization> | <organization>Yale University</organization> | |||
| </author> | </author> | |||
| <author initials="J." surname="Zhang" fullname="Jingxuan Zhang"> | <author initials="J." surname="Zhang" fullname="Jingxuan Zhang"> | |||
| <organization>Tongji University</organization> | <organization>Tongji University</organization> | |||
| </author> | </author> | |||
| <author initials="X." surname="Wang" fullname="Xin Wang"> | <author initials="X." surname="Wang" fullname="Xin Wang"> | |||
| <organization>Tongji University</organization> | <organization>Tongji University</organization> | |||
| skipping to change at line 3075 ¶ | skipping to change at line 2738 ¶ | |||
| </author> | </author> | |||
| <author initials="J." surname="MacAuley" fullname="John MacAuley"> | <author initials="J." surname="MacAuley" fullname="John MacAuley"> | |||
| <organization>ESNet</organization> | <organization>ESNet</organization> | |||
| </author> | </author> | |||
| <author initials="H." surname="Newman" fullname="Harvey Newman"> | <author initials="H." surname="Newman" fullname="Harvey Newman"> | |||
| <organization>Caltech</organization> | <organization>Caltech</organization> | |||
| </author> | </author> | |||
| <author initials="Y.R." surname="Yang" fullname="Yang Richard Yang"> | <author initials="Y.R." surname="Yang" fullname="Yang Richard Yang"> | |||
| <organization>Yale University</organization> | <organization>Yale University</organization> | |||
| </author> | </author> | |||
| <date year="2019"/> | <date year="2019" month="August"/> | |||
| </front> | </front> | |||
| <seriesInfo name="IEEE/ACM" value="IEEE Journal on Selected Areas of C | <refcontent>IEEE/ACM, IEEE Journal on Selected Areas in Communications | |||
| ommunication 37(8): 1924-1940"/> | , Volume 37, Issue 8, pp. 1924-1940</refcontent> | |||
| <seriesInfo name="DOI" value="10.1109/JSAC.2019.2927073"/> | ||||
| </reference> | </reference> | |||
| <reference anchor="NOVA" target="https://doi.org/10.1109/IWQoS.2017.7969 | ||||
| 117"> | <reference anchor="NOVA" target="https://doi.org/10.1109/TNET.2019.28999 | |||
| 05"> | ||||
| <front> | <front> | |||
| <title>An objective-driven on-demand network abstraction for adaptiv e applications</title> | <title>An Objective-Driven On-Demand Network Abstraction for Adaptiv e Applications</title> | |||
| <author initials="K." surname="Gao" fullname="Kai Gao"> | <author initials="K." surname="Gao" fullname="Kai Gao"> | |||
| <organization>Sichuan University</organization> | <organization>Sichuan University</organization> | |||
| </author> | </author> | |||
| <author initials="Q." surname="Xiang" fullname="Qiao Xiang"> | <author initials="Q." surname="Xiang" fullname="Qiao Xiang"> | |||
| <organization>Yale University</organization> | <organization>Yale University</organization> | |||
| </author> | </author> | |||
| <author initials="X." surname="Wang" fullname="Xin Wang"> | <author initials="X." surname="Wang" fullname="Xin Wang"> | |||
| <organization>Tongji University</organization> | <organization>Tongji University</organization> | |||
| </author> | </author> | |||
| <author initials="Y.R." surname="Yang" fullname="Yang Richard Yang"> | <author initials="Y.R." surname="Yang" fullname="Yang Richard Yang"> | |||
| <organization>Yale University</organization> | <organization>Yale University</organization> | |||
| </author> | </author> | |||
| <author initials="J." surname="Bi" fullname="Jun Bi"> | <author initials="J." surname="Bi" fullname="Jun Bi"> | |||
| <organization>Tsinghua University</organization> | <organization>Tsinghua University</organization> | |||
| </author> | </author> | |||
| <date year="2019"/> | <date month="April" year="2019"/> | |||
| </front> | </front> | |||
| <seriesInfo name="IEEE/ACM" value="Transactions on Networking (TON) Vo | <refcontent>IEEE/ACM Transactions on Networking (TON) Vol. 27, Issue 2 | |||
| l 27, no. 2 (2019): 805-818."/> | , pp. 805-818</refcontent> | |||
| <seriesInfo name="DOI" value="10.1109/TNET.2019.2899905"/> | ||||
| </reference> | </reference> | |||
| <reference anchor="RESA" target="https://doi.org/10.1109/SC.2018.00008"> | <reference anchor="RESA" target="https://ieeexplore.ieee.org/document/86 65783"> | |||
| <front> | <front> | |||
| <title>Fine-grained, multi-domain network resource abstraction as a fundamental primitive to enable high-performance, collaborative data sciences</t itle> | <title>Fine-Grained, Multi-Domain Network Resource Abstraction as a Fundamental Primitive to Enable High-Performance, Collaborative Data Sciences</t itle> | |||
| <author initials="Q." surname="Xiang" fullname="Qiao Xiang"> | <author initials="Q." surname="Xiang" fullname="Qiao Xiang"> | |||
| <organization>Yale University</organization> | <organization>Yale University</organization> | |||
| </author> | </author> | |||
| <author initials="J." surname="Zhang" fullname="Jingxuan Zhang"> | <author initials="J." surname="Zhang" fullname="Jingxuan Zhang"> | |||
| <organization>Tongji University</organization> | <organization>Tongji University</organization> | |||
| </author> | </author> | |||
| <author initials="X." surname="Wang" fullname="Xin Wang"> | <author initials="X." surname="Wang" fullname="Xin Wang"> | |||
| <organization>Tongji University</organization> | <organization>Tongji University</organization> | |||
| </author> | </author> | |||
| <author initials="Y." surname="Liu" fullname="Yang Liu"> | <author initials="Y." surname="Liu" fullname="Yang Liu"> | |||
| skipping to change at line 3131 ¶ | skipping to change at line 2797 ¶ | |||
| </author> | </author> | |||
| <author initials="J." surname="MacAuley" fullname="John MacAuley"> | <author initials="J." surname="MacAuley" fullname="John MacAuley"> | |||
| <organization>ESNet</organization> | <organization>ESNet</organization> | |||
| </author> | </author> | |||
| <author initials="H." surname="Newman" fullname="Harvey Newman"> | <author initials="H." surname="Newman" fullname="Harvey Newman"> | |||
| <organization>Caltech</organization> | <organization>Caltech</organization> | |||
| </author> | </author> | |||
| <author initials="Y.R." surname="Yang" fullname="Yang Richard Yang"> | <author initials="Y.R." surname="Yang" fullname="Yang Richard Yang"> | |||
| <organization>Yale University</organization> | <organization>Yale University</organization> | |||
| </author> | </author> | |||
| <date year="2019"/> | <date year="2018" month="November"/> | |||
| </front> | </front> | |||
| <seriesInfo name="Proceedings of the Super Computing 2018, 5:1-5:13" v | <refcontent>SC18: International Conference for High Performance Comput | |||
| alue=""/> | ing, Networking, Storage and Analysis, pp. 58-70</refcontent> | |||
| <seriesInfo name="DOI" value="10.1109/SC.2018.00008"/> | ||||
| </reference> | </reference> | |||
| <reference anchor="BOXOPT" target="https://doi.org/10.1609/aaai.v33i01.3 | ||||
| 3011674"> | <reference anchor="BOXOPT" target="https://ojs.aaai.org//index.php/AAAI/ | |||
| article/view/3984"> | ||||
| <front> | <front> | |||
| <title>Optimizing in the dark: Learning an optimal solution through a simple request interface</title> | <title>Optimizing in the Dark: Learning an Optimal Solution through a Simple Request Interface</title> | |||
| <author initials="Q." surname="Xiang" fullname="Qiao Xiang"> | <author initials="Q." surname="Xiang" fullname="Qiao Xiang"> | |||
| <organization>Yale University</organization> | <organization>Yale University</organization> | |||
| </author> | </author> | |||
| <author initials="H." surname="Yu" fullname="Haitao Yu"> | <author initials="H." surname="Yu" fullname="Haitao Yu"> | |||
| <organization>Tongji University</organization> | <organization>Tongji University</organization> | |||
| </author> | </author> | |||
| <author initials="J." surname="Aspnes" fullname="James Aspnes"> | <author initials="J." surname="Aspnes" fullname="James Aspnes"> | |||
| <organization>Yale University</organization> | <organization>Yale University</organization> | |||
| </author> | </author> | |||
| <author initials="F." surname="Le" fullname="Franck Le"> | <author initials="F." surname="Le" fullname="Franck Le"> | |||
| <organization>IBM T.J. Watson Research Center</organization> | <organization>IBM T.J. Watson Research Center</organization> | |||
| </author> | </author> | |||
| <author initials="L." surname="Kong" fullname="Linghe Kong"> | <author initials="L." surname="Kong" fullname="Linghe Kong"> | |||
| <organization>Shanghai Jiao Tong University</organization> | <organization>Shanghai Jiao Tong University</organization> | |||
| </author> | </author> | |||
| <author initials="Y.R." surname="Yang" fullname="Yang Richard Yang"> | <author initials="Y.R." surname="Yang" fullname="Yang Richard Yang"> | |||
| <organization>Yale University</organization> | <organization>Yale University</organization> | |||
| </author> | </author> | |||
| <date year="2019"/> | <date year="2019" month="July"/> | |||
| </front> | </front> | |||
| <seriesInfo name="Proceedings of the AAAI Conference on Artificial Int | <refcontent> Proceedings of the AAAI Conference on Artificial Intellig | |||
| elligence 33, 1674-1681" value=""/> | ence 33, 1674-1681</refcontent> | |||
| <seriesInfo name="DOI" value="10.1609/aaai.v33i01.33011674 "/> | ||||
| </reference> | </reference> | |||
| <reference anchor="SENSE" target="https://www.es.net/network-r-and-d/sen se/"> | <reference anchor="SENSE" target="https://www.es.net/network-r-and-d/sen se/"> | |||
| <front> | <front> | |||
| <title>Software Defined Networking (SDN) for End-to-End Networked Sc ience at the Exascale</title> | <title>Software Defined Networking (SDN) for End-to-End Networked Sc ience at the Exascale</title> | |||
| <author> | <author> | |||
| <organization/> | <organization>ESnet</organization> | |||
| </author> | </author> | |||
| <date year="2019"/> | <date year="2019"/> | |||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor="HUG" target="https://dl.acm.org/doi/10.5555/2930611.2 930638"> | <reference anchor="HUG" target="https://dl.acm.org/doi/10.5555/2930611.2 930638"> | |||
| <front> | <front> | |||
| <title>HUG: Multi-Resource Fairness for Correlated and Elastic Deman ds</title> | <title>HUG: multi-resource fairness for correlated and elastic deman ds</title> | |||
| <author initials="M." surname="Chowdhury" fullname="Mosharaf Chowdhu ry"> | <author initials="M." surname="Chowdhury" fullname="Mosharaf Chowdhu ry"> | |||
| <organization>University of Michigan</organization> | <organization>University of Michigan</organization> | |||
| </author> | </author> | |||
| <author initials="Z." surname="Liu" fullname="Zhenhua Liu"> | <author initials="Z." surname="Liu" fullname="Zhenhua Liu"> | |||
| <organization>Stony Brook University</organization> | <organization>Stony Brook University</organization> | |||
| </author> | </author> | |||
| <author initials="A." surname="Ghodsi" fullname="Ali Ghodsi"> | <author initials="A." surname="Ghodsi" fullname="Ali Ghodsi"> | |||
| <organization>UC Berkeley, Databricks Inc.</organization> | <organization>UC Berkeley, Databricks Inc.</organization> | |||
| </author> | </author> | |||
| <author initials="I." surname="Stoica" fullname="Ion Stoica"> | <author initials="I." surname="Stoica" fullname="Ion Stoica"> | |||
| <organization>UC Berkeley, Databricks Inc.</organization> | <organization>UC Berkeley, Databricks Inc.</organization> | |||
| </author> | </author> | |||
| <date year="2016"/> | <date year="2016" month="March"/> | |||
| </front> | </front> | |||
| <seriesInfo name="13th USENIX Symposium on Networked Systems Design an d Implementation (NSDI 16) (Santa Clara, CA, 2016), 407-424." value=""/> | <refcontent>Proceedings of the 13th USENIX Conference on Networked Sys tems Design and Implementation (NSDI'16), Santa Clara, CA, pp. 407-424</refconte nt> | |||
| </reference> | </reference> | |||
| <reference anchor="SWAN" target="http://doi.acm.org/10.1145/2486001.2486 | ||||
| 012"> | <reference anchor="SWAN" target="https://dl.acm.org/doi/10.1145/2486001. | |||
| 2486012"> | ||||
| <front> | <front> | |||
| <title>Achieving High Utilization with Software-driven WAN</title> | <title>Achieving high utilization with software-driven WAN</title> | |||
| <author initials="C." surname="Hong" fullname="Chi-Yao Hong"> | <author initials="C." surname="Hong" fullname="Chi-Yao Hong"> | |||
| <organization>Microsoft</organization> | <organization>Microsoft</organization> | |||
| </author> | </author> | |||
| <author initials="S." surname="Kandula" fullname="Srikanth Kandula"> | <author initials="S." surname="Kandula" fullname="Srikanth Kandula"> | |||
| <organization>Microsoft</organization> | <organization>Microsoft</organization> | |||
| </author> | </author> | |||
| <author initials="R." surname="Mahajan" fullname="Ratul Mahajan"> | <author initials="R." surname="Mahajan" fullname="Ratul Mahajan"> | |||
| <organization>Microsoft</organization> | <organization>Microsoft</organization> | |||
| </author> | </author> | |||
| <author initials="M." surname="Zhang" fullname="Ming Zhang"> | <author initials="M." surname="Zhang" fullname="Ming Zhang"> | |||
| skipping to change at line 3212 ¶ | skipping to change at line 2884 ¶ | |||
| </author> | </author> | |||
| <author initials="V." surname="Gill" fullname="Vijay Gill"> | <author initials="V." surname="Gill" fullname="Vijay Gill"> | |||
| <organization>Microsoft</organization> | <organization>Microsoft</organization> | |||
| </author> | </author> | |||
| <author initials="M." surname="Nanduri" fullname="Mohan Nanduri"> | <author initials="M." surname="Nanduri" fullname="Mohan Nanduri"> | |||
| <organization>Microsoft</organization> | <organization>Microsoft</organization> | |||
| </author> | </author> | |||
| <author initials="R." surname="Wattenhofer" fullname="Roger Wattenho fer"> | <author initials="R." surname="Wattenhofer" fullname="Roger Wattenho fer"> | |||
| <organization>ETH</organization> | <organization>ETH</organization> | |||
| </author> | </author> | |||
| <date year="2013"/> | <date year="2013" month="August"/> | |||
| </front> | </front> | |||
| <seriesInfo name="In Proceedings of the ACM SIGCOMM 2013 Conference on | <refcontent>Proceedings of the ACM SIGCOMM 2013 conference on SIGCOMM | |||
| SIGCOMM (SIGCOMM '13), ACM, New York, NY, USA, 15-26." value=""/> | (SIGCOMM '13), New York, NY, pp. 15-26</refcontent> | |||
| <seriesInfo name="DOI" value="10.1145/2486001.2486012"/> | ||||
| </reference> | </reference> | |||
| <reference anchor="CLARINET" target="https://dl.acm.org/doi/abs/10.5555/ 3026877.3026911"> | <reference anchor="CLARINET" target="https://dl.acm.org/doi/abs/10.5555/ 3026877.3026911"> | |||
| <front> | <front> | |||
| <title>CLARINET: WAN-Aware Optimization for Analytics Queries</title > | <title>CLARINET: WAN-aware optimization for analytics queries</title > | |||
| <author initials="R." surname="Viswanathan" fullname="Raajay Viswana than"> | <author initials="R." surname="Viswanathan" fullname="Raajay Viswana than"> | |||
| <organization>University of Wisconsin-Madison</organization> | <organization>University of Wisconsin-Madison</organization> | |||
| </author> | </author> | |||
| <author initials="G." surname="Ananthanarayanan" fullname="Ganesh An anthanarayanan"> | <author initials="G." surname="Ananthanarayanan" fullname="Ganesh An anthanarayanan"> | |||
| <organization>Microsoft</organization> | <organization>Microsoft</organization> | |||
| </author> | </author> | |||
| <author initials="A." surname="Akella" fullname="Aditya Akella"> | <author initials="A." surname="Akella" fullname="Aditya Akella"> | |||
| <organization>University of Wisconsin-Madison</organization> | <organization>University of Wisconsin-Madison</organization> | |||
| </author> | </author> | |||
| <date year="2016"/> | <date year="2016" month="November"/> | |||
| </front> | </front> | |||
| <seriesInfo name="In 12th USENIX Symposium on Operating Systems Design | <refcontent> | |||
| and Implementation (OSDI 16), USENIX Association, Savannah, GA, 435-450" value= | Proceedings of the 12th USENIX conference on Operating Systems Design and Implem | |||
| ""/> | entation (OSDI'16), Savannah, GA, pp. 435-450</refcontent> | |||
| </reference> | </reference> | |||
| <reference anchor="G2" target="https://dl.acm.org/doi/10.1145/3366707"> | <reference anchor="G2" target="https://dl.acm.org/doi/10.1145/3366707"> | |||
| <front> | <front> | |||
| <title>On the Bottleneck Structure of Congestion-Controlled Networks </title> | <title>On the Bottleneck Structure of Congestion-Controlled Networks </title> | |||
| <author initials="J." surname="Ros-Giralt" fullname="Jordi Ros-Giral t"> | <author initials="J." surname="Ros-Giralt" fullname="Jordi Ros-Giral t"> | |||
| <organization>Reservoir Labs</organization> | <organization>Reservoir Labs</organization> | |||
| </author> | </author> | |||
| <author initials="A." surname="Bohara" fullname="Atul Bohara"> | <author initials="A." surname="Bohara" fullname="Atul Bohara"> | |||
| <organization>Reservoir Labs</organization> | <organization>Reservoir Labs</organization> | |||
| </author> | </author> | |||
| <author initials="S." surname="Yellamraju" fullname="Sruthi Yellamra ju"> | <author initials="S." surname="Yellamraju" fullname="Sruthi Yellamra ju"> | |||
| skipping to change at line 3265 ¶ | skipping to change at line 2941 ¶ | |||
| </author> | </author> | |||
| <author initials="J." surname="Li" fullname="Josie Li"> | <author initials="J." surname="Li" fullname="Josie Li"> | |||
| <organization>University of Virginia</organization> | <organization>University of Virginia</organization> | |||
| </author> | </author> | |||
| <author initials="Y." surname="Tan" fullname="Yuanlong Tan"> | <author initials="Y." surname="Tan" fullname="Yuanlong Tan"> | |||
| <organization>University of Virginia</organization> | <organization>University of Virginia</organization> | |||
| </author> | </author> | |||
| <author initials="M." surname="Veeraraghavan" fullname="Malathi Veer araghavan"> | <author initials="M." surname="Veeraraghavan" fullname="Malathi Veer araghavan"> | |||
| <organization>University of Virginia</organization> | <organization>University of Virginia</organization> | |||
| </author> | </author> | |||
| <date year="2019"/> | <date year="2019" month="December"/> | |||
| </front> | </front> | |||
| <seriesInfo name="Proceedings of the ACM on Measurement and Analysis o | <refcontent>Proceedings of the ACM on Measurement and Analysis of Comp | |||
| f Computing Systems, Volume 3, Issue 3, pp 1-31" value=""/> | uting Systems, Volume 3, Issue 3, pp. 1-31</refcontent> | |||
| <seriesInfo name="DOI" value="10.1145/3366707"/> | ||||
| </reference> | </reference> | |||
| <reference anchor="BONDY" target="https://doi.org/10.1002/jgt.3190010306 | ||||
| "> | <reference anchor="BONDY" target="https://onlinelibrary.wiley.com/doi/10 | |||
| .1002/jgt.3190010306"> | ||||
| <front> | <front> | |||
| <title>Graph reconstruction—a survey</title> | <title>Graph reconstruction--a survey</title> | |||
| <author initials="J.A." surname="Bondy" fullname="John Adrian Bondy" > | <author initials="J.A." surname="Bondy" fullname="John Adrian Bondy" > | |||
| <organization>University of Waterloo</organization> | <organization>University of Waterloo</organization> | |||
| </author> | </author> | |||
| <author initials="R.L." surname="Hemminger" fullname="Robert Hemming er"> | <author initials="R.L." surname="Hemminger" fullname="Robert Hemming er"> | |||
| <organization>Vanderbilt University</organization> | <organization>Vanderbilt University</organization> | |||
| </author> | </author> | |||
| <date year="1977"/> | <date year="1977"/> | |||
| </front> | </front> | |||
| <seriesInfo name="Journal of Graph Theory, Volume 1, Issue 3, pp 227-2 | <refcontent>Journal of Graph Theory, Volume 1, Issue 3, pp. 227-268</r | |||
| 68" value=""/> | efcontent> | |||
| <seriesInfo name="DOI" value="10.1002/jgt.3190010306"/> | ||||
| </reference> | </reference> | |||
| <reference anchor="UNICORN" target="https://doi.org/10.1016/j.future.201 | ||||
| 8.09.048"> | <reference anchor="UNICORN" target="https://www.sciencedirect.com/scienc | |||
| e/article/abs/pii/S0167739X18302413?via%3Dihub"> | ||||
| <front> | <front> | |||
| <title>Unicorn: Unified Resource Orchestration for Multi-Domain, Geo -Distributed Data Analytics</title> | <title>Unicorn: Unified resource orchestration for multi-domain, geo -distributed data analytics</title> | |||
| <author initials="Q." surname="Xiang" fullname="Qiao Xiang"> | <author initials="Q." surname="Xiang" fullname="Qiao Xiang"> | |||
| <organization>Yale University</organization> | <organization>Yale University</organization> | |||
| </author> | </author> | |||
| <author initials="S." surname="Chen" fullname="Shenshen Chen"> | <author initials="T." surname="Wang" fullname="X. Tony Wang"> | |||
| <organization>Tongji University</organization> | <organization>Tongji University</organization> | |||
| </author> | </author> | |||
| <author initials="K." surname="Gao" fullname="Kai Gao"> | <author initials="J." surname="Zhang" fullname="Jingxuan Jensen Zhan g"> | |||
| <organization>Tsinghua University</organization> | <organization>Tsinghua University</organization> | |||
| </author> | </author> | |||
| <author initials="H." surname="Newman" fullname="Harvey Newman"> | <author initials="H." surname="Newman" fullname="Harvey Newman"> | |||
| <organization>California Institute of Technology</organization> | <organization>California Institute of Technology</organization> | |||
| </author> | </author> | |||
| <author initials="I." surname="Taylor" fullname="Ian Taylor"> | ||||
| <organization>Cardiff University</organization> | ||||
| </author> | ||||
| <author initials="J." surname="Zhang" fullname="Jingxuan Zhang"> | ||||
| <organization>Tongji University</organization> | ||||
| </author> | ||||
| <author initials="Y.R." surname="Yang" fullname="Yang Richard Yang"> | <author initials="Y.R." surname="Yang" fullname="Yang Richard Yang"> | |||
| <organization>Yale University</organization> | <organization>Yale University</organization> | |||
| </author> | </author> | |||
| <date year="2017"/> | <author initials="Y." surname="Liu" fullname="Yang Liu"> | |||
| <organization>Tongji University</organization> | ||||
| </author> | ||||
| <date year="2019" month="April"/> | ||||
| </front> | </front> | |||
| <seriesInfo name="2017 IEEE SmartWorld, Ubiquitous Intelligence Comput | <refcontent>Future Generation Computer Systems, Volume 93, pp. 188-197 | |||
| ing, Advanced Trusted Computed, Scalable Computing Communications, Cloud Big Dat | </refcontent> | |||
| a Computing, Internet of People and Smart City Innovation (SmartWorld/SCALCOM/UI | <seriesInfo name="DOI" value="10.1016/j.future.2018.09.048"/> | |||
| C/ATC/CBDCom/IOP/SCI) (Aug. 2017), 1-6." value=""/> | ||||
| </reference> | </reference> | |||
| </references> | </references> | |||
| </references> | </references> | |||
| <section anchor="acknowledgments" numbered="true" toc="default"> | <section anchor="acknowledgments" numbered="false" toc="default"> | |||
| <name>Acknowledgments</name> | <name>Acknowledgments</name> | |||
| <t>The authors would like to thank discussions with Andreas Voellmy, Erran | <t>The authors would like to thank <contact fullname="Andreas Voellmy"/>, | |||
| Li, | <contact fullname="Erran Li"/>, <contact fullname="Haibin Song"/>, <contact full | |||
| Haibin Song, Haizhou Du, Jiayuan Hu, Qiao Xiang, Tianyuan Liu, Xiao Shi, Xin | name="Haizhou Du"/>, <contact fullname="Jiayuan Hu"/>, <contact fullname="Tianyu | |||
| Wang, and Yan Luo. The authors thank Greg Bernstein, Dawn Chen, Wendy Roome, and | an Liu"/>, <contact | |||
| Michael Scharf for their contributions to earlier drafts.</t> | fullname="Xiao Shi"/>, <contact fullname="Xin Wang"/>, and <contact fullname="Ya | |||
| <t>The authors would also like to thank Tim Chown, Luis Contreras, Roman D | n Luo"/> for fruitful discussions. The authors thank <contact fullname="Greg Ber | |||
| anyliw, | nstein"/>, <contact fullname="Dawn Chen"/>, <contact fullname="Wendy Roome"/>, a | |||
| Benjamin Kaduk, Erik Kline, Suresh Krishnan, Murray Kucherawy, Warren Kumari, | nd | |||
| Danny Lachos, Francesca Palombini, Eric Vyncke, Samuel Weiler, and Qiao Xiang | <contact fullname="Michael Scharf"/> for their contributions to earlier draft ve | |||
| whose feedback and suggestions are invaluable to improve the practicability and | rsions of this document.</t> | |||
| conciseness of this document, and Mohamed Boucadair, Martin Duke, Vijay Gurbani, | <t>The authors would also like to thank <contact fullname="Tim Chown"/>, < | |||
| Jan Seedorf, and Qin Wu who provide great support and guidance.</t> | contact fullname="Luis Contreras"/>, <contact fullname="Roman Danyliw"/>, | |||
| </section> | <contact fullname="Benjamin Kaduk"/>, <contact fullname="Erik Kline"/>, <contact | |||
| <section anchor="revision-logs-to-be-removed-before-publication" numbered="t | fullname="Suresh Krishnan"/>, <contact fullname="Murray Kucherawy"/>, <contact | |||
| rue" toc="default"> | fullname="Warren Kumari"/>, <contact fullname="Danny Lachos"/>, <contact fullnam | |||
| <name>Revision Logs (To be removed before publication)</name> | e="Francesca Palombini"/>, <contact fullname="Éric Vyncke"/>, <contact fullname= | |||
| <section anchor="changes-since-20" numbered="true" toc="default"> | "Samuel Weiler"/>, and <contact fullname="Qiao Xiang"/>, | |||
| <name>Changes since -20</name> | whose feedback and suggestions were invaluable for improving the practicability | |||
| <t>Reivision -21</t> | and | |||
| <ul spacing="normal"> | conciseness of this document; and <contact fullname="Mohamed Boucadair"/>, <cont | |||
| <li>changes the normative requirement on protecting confidentiality of | act fullname="Martin Duke"/>, <contact fullname="Vijay Gurbani"/>, | |||
| PV | <contact fullname="Jan Seedorf"/>, and <contact fullname="Qin Wu"/>, who provide | |||
| information with softer language</li> | d great support and guidance.</t> | |||
| </ul> | ||||
| </section> | ||||
| <section anchor="changes-since-19" numbered="true" toc="default"> | ||||
| <name>Changes since -19</name> | ||||
| <t>Revision -20</t> | ||||
| <ul spacing="normal"> | ||||
| <li>changes the IANA registry information</li> | ||||
| <li>adopts the comments from IESG reviews</li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="changes-since-18" numbered="true" toc="default"> | ||||
| <name>Changes since -18</name> | ||||
| <t>Revision -19</t> | ||||
| <ul spacing="normal"> | ||||
| <li>adds detailed examples for use cases</li> | ||||
| <li>clarify terms with ambiguous meanings</li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="changes-since-17" numbered="true" toc="default"> | ||||
| <name>Changes since -17</name> | ||||
| <t>Revision -18</t> | ||||
| <ul spacing="normal"> | ||||
| <li>changes the specification for content-id to conform to <xref targe | ||||
| t="RFC2387" format="default"/> and <xref target="RFC5322" format="default"/></li | ||||
| > | ||||
| <li>adds IPv6 examples</li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="changes-since-16" numbered="true" toc="default"> | ||||
| <name>Changes since -16</name> | ||||
| <t>Revision -17</t> | ||||
| <ul spacing="normal"> | ||||
| <li>adds items for media type of defining resources in IANA considerat | ||||
| ions</li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="changes-since-15" numbered="true" toc="default"> | ||||
| <name>Changes since -15</name> | ||||
| <t>Revision -16</t> | ||||
| <ul spacing="normal"> | ||||
| <li>resolves the compatibility with the Multi-Cost extension (RFC 8189 | ||||
| )</li> | ||||
| <li>adds media types of defining resources for ANE property types (for | ||||
| IANA | ||||
| registration)</li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="changes-since-14" numbered="true" toc="default"> | ||||
| <name>Changes since -14</name> | ||||
| <t>Revision -15</t> | ||||
| <ul spacing="normal"> | ||||
| <li>fixes the IDNits warnings,</li> | ||||
| <li>fixes grammar issues,</li> | ||||
| <li>addresses the comments in the AD review.</li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="changes-since-13" numbered="true" toc="default"> | ||||
| <name>Changes since -13</name> | ||||
| <t>Revision -14</t> | ||||
| <ul spacing="normal"> | ||||
| <li>addresses the comments in the chair review,</li> | ||||
| <li>fixes most issues raised by IDNits.</li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="changes-since-12" numbered="true" toc="default"> | ||||
| <name>Changes since -12</name> | ||||
| <t>Revision -13</t> | ||||
| <ul spacing="normal"> | ||||
| <li>changes the abstract based on the chairs' reviews</li> | ||||
| <li>integrates Richard's responds to WGLC reviews</li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="changes-since-11" numbered="true" toc="default"> | ||||
| <name>Changes since -11</name> | ||||
| <t>Revision -12</t> | ||||
| <ul spacing="normal"> | ||||
| <li>clarifies the definition of ANEs in a similar way as how Network E | ||||
| lements is | ||||
| defined in <xref target="RFC2216" format="default"/></li> | ||||
| <li>restructures several paragraphs that are not clear (Sec 3, Path Ve | ||||
| ctor bullet, Sec 4.2, Sec 5.1.3, Sec 6.2.4, Sec 6.4.2, Sec 9.3)</li> | ||||
| <li>uses "ALTO Entity Domain Type Registry"</li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="changes-since-10" numbered="true" toc="default"> | ||||
| <name>Changes since -10</name> | ||||
| <t>Revision -11</t> | ||||
| <ul spacing="normal"> | ||||
| <li>replaces "part" with "components" in the abstract;</li> | ||||
| <li>identifies additional requirements (AR) derived from the flow sche | ||||
| duling | ||||
| example, and introduces how the extension addresses the additional | ||||
| requirements</li> | ||||
| <li>fixes the inconsistent use of "start" parameter in multipart respo | ||||
| nses;</li> | ||||
| <li>specifies explicitly how to handle "cost-constraints";</li> | ||||
| <li>uses the latest IANA registration mechanism defined in | ||||
| <xref target="I-D.ietf-alto-unified-props-new" format="default"/>;</li> | ||||
| <li>renames "persistent-entities" to "persistent-entity-id";</li> | ||||
| <li>makes "application/alto-propmap+json" as the media type of definin | ||||
| g resources | ||||
| for the "ane" domain;</li> | ||||
| <li>updates the examples;</li> | ||||
| <li>adds the discussion on ephemeral and persistent ANEs.</li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="changes-since-09" numbered="true" toc="default"> | ||||
| <name>Changes since -09</name> | ||||
| <t>Revision -10</t> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>revises the introduction which | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>extends the scope where the PV extension can be applied beyond | ||||
| the "path | ||||
| correlation" information</li> | ||||
| </ul> | ||||
| </li> | ||||
| <li>brings back the capacity region use case to better illustrate the | ||||
| problem</li> | ||||
| <li>revises the overview to explain and defend the concepts and decisi | ||||
| on choices</li> | ||||
| <li>fixes inconsistent terms, typos</li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="changes-since-08" numbered="true" toc="default"> | ||||
| <name>Changes since -08</name> | ||||
| <t>This revision</t> | ||||
| <ul spacing="normal"> | ||||
| <li>fixes a few spelling errors</li> | ||||
| <li>emphasizes that abstract network elements can be generated on dema | ||||
| nd in both | ||||
| introduction and motivating use cases</li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="changes-since-version-06" numbered="true" toc="default"> | ||||
| <name>Changes Since Version -06</name> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t>We emphasize the importance of the path vector extension in two a | ||||
| spects: </t> | ||||
| <ol spacing="normal" type="1"><li>It expands the problem space that | ||||
| can be solved by ALTO, from preferences | ||||
| of network paths to correlations of network paths.</li> | ||||
| <li>It is motivated by new usage scenarios from both application's | ||||
| and | ||||
| network's perspectives.</li> | ||||
| </ol> | ||||
| </li> | ||||
| <li>More use cases are included, in addition to the original capacity | ||||
| region use | ||||
| case.</li> | ||||
| <li>We add more discussions to fully explore the design space of the p | ||||
| ath vector | ||||
| extension and justify our design decisions, including the concept of abstract | ||||
| network element, cost type (reverted to -05), newer capabilities and the | ||||
| multipart message.</li> | ||||
| <li>Fix the incremental update process to be compatible with SSE -16 d | ||||
| raft, which | ||||
| uses client-id instead of resource-id to demultiplex updates.</li> | ||||
| <li>Register an additional ANE property (i.e., persistent-entities) to | ||||
| cover all | ||||
| use cases mentioned in the draft.</li> | ||||
| </ul> | ||||
| </section> | ||||
| </section> | </section> | |||
| </back> | </back> | |||
| <!-- ##markdown-source: | ||||
| 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 | ||||
| AA== | ||||
| </rfc> | </rfc> | |||
| End of changes. 420 change blocks. | ||||
| 2478 lines changed or deleted | 1298 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||