<?xml version="1.0"encoding="US-ASCII"?>encoding="UTF-8"?> <!DOCTYPE rfcSYSTEM "rfc2629.dtd"> <?rfc toc="yes"?> <?rfc tocompact="yes"?> <?rfc tocdepth="4"?> <?rfc tocindent="yes"?> <?rfc symrefs="yes"?> <?rfc sortrefs="yes"?> <?rfc comments="yes"?> <?rfc inline="yes"?> <?rfc compact="yes"?> <?rfc subcompact="no"?>[ <!ENTITY nbsp " "> <!ENTITY zwsp "​"> <!ENTITY nbhy "‑"> <!ENTITY wj "⁠"> ]> <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category="std" consensus="true" docName="draft-ietf-alto-cost-mode-05" number="9274" ipr="trust200902"updates="7285">updates="7285" obsoletes="" tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" xml:lang="en" version="3"> <front> <title abbrev="ALTO Cost Mode">A Cost Mode Registry for the Application-Layer Traffic Optimization (ALTO) Protocol</title> <seriesInfo name="RFC" value="9274"/> <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair"> <organization>Orange</organization> <address> <postal><street></street><street/> <city>Rennes</city><region></region><region/> <code>35000</code> <country>France</country> </postal> <email>mohamed.boucadair@orange.com</email> </address> </author> <author fullname="Qin Wu" initials="Q." surname="Wu"> <organization>Huawei</organization> <address> <postal> <extaddr>Yuhua District</extaddr> <street>101 SoftwareAvenue, Yuhua District</street>Avenue</street> <city>Nanjing</city> <region>Jiangsu</region> <code>210012</code> <country>China</country> </postal> <email>bill.wu@huawei.com</email> </address> </author> <date year="2022" month="July" /> <area>tsv</area> <workgroup>alto</workgroup> <keyword>Optimization</keyword> <keyword>service performance</keyword> <keyword>cost metric</keyword> <keyword>routing</keyword> <keyword>computation</keyword> <keyword>networks</keyword> <keyword>service-network interaction</keyword> <keyword>network programming</keyword> <abstract> <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.</t> <t>This document updates RFC 7285.</t> </abstract><note title="Editorial Note (To be removed by RFC Editor)"> <t>Please update RFC XXXX statements within the document with the RFC number to be assigned to this document.</t> </note></front> <middle> <section anchor="introduction"title="Introduction">numbered="true" toc="default"> <name>Introduction</name> <t>The cost mode attribute indicates how costs should be interpreted when communicated as described inthe Application-Layer"Application-Layer Traffic Optimization (ALTO)ProtocolProtocol" <xreftarget="RFC7285"></xref>. The base ALTO specificationtarget="RFC7285"/>, which includes a provision for only two modes:<list style="hanging"> <t hangText=""numerical":">Indicates</t> <dl newline="false" spacing="normal"> <dt>"numerical":</dt> <dd>Indicates that numerical operations can be performed (e.g., normalization) on the returned costs(Section 6.1.2.1 of <xref target="RFC7285"></xref>).</t> <t hangText=""ordinal":">Indicates(<xref target="RFC7285" sectionFormat="of" section="6.1.2.1"/>).</dd> <dt>"ordinal":</dt> <dd>Indicates that the cost values in a cost map represent ranking (relative to all other values in a cost map), not actual costs(Section 6.1.2.2 of <xref target="RFC7285"></xref>).</t> </list></t>(<xref target="RFC7285" sectionFormat="of" section="6.1.2.2"/>).</dd> </dl> <t>Additional cost modes are required for specific ALTO deployment cases (e.g., <xreftarget="I-D.ietf-alto-path-vector"></xref>).target="I-D.ietf-alto-path-vector"/>). In order to allow for such use cases, this document relaxes the constraint imposed by the base ALTO specification on allowed cost modes (<xreftarget="anupdate"></xref>)target="anupdate"/>) and creates a new ALTO registry to track new cost modes (<xreftarget="IANA"></xref>).</t>target="IANA"/>).</t> <t>The mechanisms defined in <xreftarget="RFC7285"></xref>target="RFC7285"/> are used to advertise the support of new cost modes for specific cost metrics. Refer to <xreftarget="bc"></xref>target="bc"/> for more details.</t> </section> <section anchor="notation"title="Terminology"> <t>Thenumbered="true" toc="default"> <name>Terminology</name> <t> The key words"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY","<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and"OPTIONAL""<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described inBCP 14BCP 14 <xref target="RFC2119"/> <xreftarget="RFC2119"></xref><xref target="RFC8174"></xref>target="RFC8174"/> when, and only when, they appear in all capitals, as shownhere.</t>here. </t> <t>This document makes use of the terms defined in <xreftarget="RFC7285"></xref>.</t>target="RFC7285"/>.</t> </section> <section anchor="anupdate"title="Updatesnumbered="true" toc="default"> <name>Updates toRFC7285"> <t></t> <section title="UpdatesRFC 7285</name> <t/> <section> <name>Updates to Section 6.1.2 ofRFC7285">RFC 7285</name> <t>This document updatesSection 6.1.2 of<xreftarget="RFC7285"></xref>target="RFC7285" sectionFormat="of" section="6.1.2"/> as follows:</t><t>OLD:<list style="empty"> <t>The<t>OLD:</t> <ul empty="true" spacing="normal"> <li>The cost mode attribute indicates how costs should be interpreted. Specifically, the cost mode attribute indicates whether returned costs should be interpreted as numerical values or ordinalrankings.</t> <t>Itrankings.</li> <li>It is important to communicate such information to ALTO clients, as certain operations may not be valid on certain costs returned by an ALTO server. For example, it is possible for an ALTO server to return a set of IP addresses with costs indicating a ranking of the IP addresses. Arithmetic operations that would make sense for numerical values, do not make sense for ordinal rankings. ALTO clients may handle such costsdifferently.</t> <t>Costdifferently.</li> <li>Cost modes are indicated in protocol messages asstrings.</t> </list></t> <t>NEW:<list style="empty"> <t>Thestrings.</li> </ul> <t>NEW:</t> <ul empty="true" spacing="normal"> <li>The cost mode attribute indicates how costs should be interpreted. Two cost modes (numerical values and ordinal rankings) are defined, but additional cost modes can be defined in thefuture.</t> <t>Itfuture.</li> <li>It is important to communicate such information to ALTO clients, as certain operations may not be valid on certain costs returned by an ALTO server. For example, it is possible for an ALTO server to return a set of IP addresses with costs indicating a ranking of the IP addresses. Arithmetic operations that would make sense for numerical values, do not make sense for ordinal rankings. ALTO clients may handle such costsdifferently.</t> <t>Costdifferently.</li> <li>Cost modes are indicated in protocol messages asstrings.</t> <t>Futurestrings.</li> <li>For any future documents thatdefinedefines a new costmode are strongly recommended to indicatemode, indicating whether that new cost mode applies to all or a subset of costmetrics.metrics is strongly recommended. This recommendation is meant to preventnon-deterministicnondeterministic behaviors that may result in presenting a cost mode with a specific metric, while such an association does not make sense or can't be unambiguously interpreted by ALTO implementations.</t> <t>If</li> <li>If the definition of a cost mode does not indicate whether that cost mode applies to a subset of cost metrics, ALTO implementationsMUST<bcp14>MUST</bcp14> be prepared to accept that cost mode for any cost metric.</t> </list></t> <t></t></li> </ul> <t/> </section> <section anchor="up2"title="Updatesnumbered="true" toc="default"> <name>Updates to Section 10.5 ofRFC7285">RFC 7285</name> <t>This document updatesSection 10.5 of<xreftarget="RFC7285"></xref>target="RFC7285" sectionFormat="of" section="10.5"/> as follows:</t><t>OLD:<list style="empty"> <t>A<t>OLD:</t> <ul empty="true" spacing="normal"> <li>A cost mode is encoded as a string. The stringMUST<bcp14>MUST</bcp14> have a value of either "numerical" or"ordinal".</t> </list></t> <t>NEW:<list style="empty"> <t>A"ordinal".</li> </ul> <t>NEW:</t> <ul empty="true" spacing="normal"> <li>A cost mode is encoded as a string. The stringMUST<bcp14>MUST</bcp14> be no more than 32 characters, and itMUST NOT<bcp14>MUST NOT</bcp14> contain characters other than US-ASCII alphanumeric characters (U+0030-U+0039, U+0041-U+005A, and U+0061-U+007A), the hyphen-minus ('-', U+002D), the colon (':', U+003A), or the low line ('_', U+005F). Cost modes reserved for Private Use are prefixed with "priv:" (<xreftarget="IANA"></xref>).target="IANA"/>). Otherwise, the cost modeMUST<bcp14>MUST</bcp14> have a value that is listed in the registry created in <xreftarget="IANA"></xref>target="IANA"/> ofRFCXXXX.</t> </list></t> <t></t>[RFC9274].</li> </ul> <t/> </section> </section> <section anchor="bc"title="Backwardnumbered="true" toc="default"> <name>Backward CompatibilityConsiderations">Considerations</name> <t>ALTO servers that support new cost modes for specific cost metrics will use the mechanism specified inSection 9.2 of<xreftarget="RFC7285"></xref>target="RFC7285" sectionFormat="of" section="9.2"/> to advertise their capabilities. ALTO clients (including legacy) will use that information to specify cost constraints in their requests (e.g., indicate a cost metric and a cost mode). An example of such a behavior is depicted inSection 9.2.3 of<xreftarget="RFC7285"></xref>.</t>target="RFC7285" sectionFormat="of" section="9.2.3"/>.</t> <t>If an ALTO client includes a cost mode that is not supported by an ALTO server, the server indicates such an error with the error code E_INVALID_FIELD_VALUE as perSection 8.5.2 of<xreftarget="RFC7285"></xref>.target="RFC7285" sectionFormat="of" section="8.5.2"/>. In practice, legacy ALTO servers will reply with the error code E_INVALID_FIELD_VALUE to requests that include a cost type other than "numerical" or "ordinal" for the "routingcost" cost metric.</t> <t>The encoding constraints in <xreftarget="up2"></xref>target="up2"/> do not introduce any interoperability issue given that currently implemented cost modes adhere to these constrains (mainly, those in <xreftarget="RFC7285"></xref>target="RFC7285"/> and <xreftarget="I-D.ietf-alto-path-vector"></xref>).</t>target="I-D.ietf-alto-path-vector"/>).</t> </section> <section anchor="IANA"title="IANA Considerations"> <t>This document requests IANA to create anumbered="true" toc="default"> <name>IANA Considerations</name> <t>IANA has created the newsubregistry entitled"ALTO Cost Modes"undersubregistry within the "Application-Layer Traffic Optimization (ALTO) Protocol" registry available at <xreftarget="ALTO"></xref>.</t>target="ALTO"/>.</t> <t>The assignment policy for this subregistry is "IETF Review"(Section 4.8 of <xref target="RFC8126"></xref>).</t>(<xref target="RFC8126" sectionFormat="of" section="4.8"/>).</t> <t>Requests to register a new ALTO cost mode must include the followinginformation:<list style="hanging"> <t hangText="Identifier:">Theinformation:</t> <dl newline="false" spacing="normal"> <dt>Identifier:</dt> <dd>The name of the ALTO cost mode. Refer to <xreftarget="up2"></xref>target="up2"/> for more details on allowedencoding.</t> <t hangText="Description:">Aencoding.</dd> <dt>Description:</dt> <dd>A short description of the requested ALTO costmode.</t> <t hangText="Intended Semantics:">Amode.</dd> <dt>Intended Semantics:</dt> <dd>A reference to where the semantic of the requested cost mode isdefined.</t> <t hangText="Reference:">Adefined.</dd> <dt>Reference:</dt> <dd>A reference to the document that registers the requested costmode.</t> </list></t>mode.</dd> </dl> <t>Cost modes prefixed with "priv:" are reserved for Private Use(Section 4.1 of <xref target="RFC8126"></xref>). This document requests(<xref target="RFC8126" sectionFormat="of" section="4.1"/>). IANAto addhas added the following note to the new subregistry:</t><t><list style="hanging"> <t hangText="Note:">Identifiers<blockquote> Identifiers prefixed with'priv:'"priv:" are reserved for Private Use(see [RFCXXXX],(RFC 9274, <xreftarget="IANA"></xref>).</t> </list></t> <t></t>target="IANA"/>).</blockquote> <t>The subregistry is initially populated with the following values:</t><t><figure> <artwork><![CDATA[ +============+=============================+============+===========+ | Identifier | Description | Intended | Reference | | | | Semantics | | +============+=============================+============+===========+ | numerical | Indicates<table anchor="subregistry" align="center"> <name>ALTO Cost Modes</name> <thead> <tr> <th rowspan="1" colspan="1">Identifier</th> <th rowspan="1" colspan="1">Description</th> <th rowspan="1" colspan="1">Intended Semantics</th> <th rowspan="1" colspan="1">Reference</th> </tr> </thead> <tbody> <tr> <td>numerical</td> <td>Indicates that numerical| Section | RFCXXXX | | |operations can be performed| 6.1.2.1 of | | | |on the returnedcosts | RFC7285 | | +------------+-----------------------------+------------+-----------+ | ordinal | Indicatescosts</td> <td><xref target="RFC7285" sectionFormat="of" section="6.1.2.1"/></td> <td>RFC 9274</td> </tr> <tr> <td>ordinal</td> <td>Indicates that the cost| Section | RFCXXXX | | |values in a cost map| 6.1.2.2 of | | | |representranking | RFC7285 | | +------------+-----------------------------+------------+-----------+]]></artwork> </figure></t>ranking</td> <td><xref target="RFC7285" sectionFormat="of" section="6.1.2.2"/></td> <td>RFC 9274</td> </tr> </tbody> </table> </section> <section anchor="security"title="Security Considerations">numbered="true" toc="default"> <name>Security Considerations</name> <t>This document does not introduce new concerns other than those already discussed inSection 15 of<xreftarget="RFC7285"></xref>.</t>target="RFC7285" sectionFormat="of" section="15"/>.</t> </section> </middle> <back> <displayreference target="I-D.ietf-alto-path-vector" to="ALTO-PV"/> <references> <name>References</name> <references> <name>Normative References</name> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7285.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/> </references> <references> <name>Informative References</name> <!-- [I-D.ietf-alto-path-vector] companion document in queue--> <xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-alto-path-vector.xml"/> <!-- <reference anchor='RFCYYY1' target="https://www.rfc-editor.org/info/rfcYYY1"> <front> <title>An Extension for Application-Layer Traffic Optimization (ALTO): Path Vector</title> <author initials='K' surname='Gao' fullname='Kai Gao'> <organization /> </author> <author initials='Y' surname='Lee' fullname='Young Lee'> <organization /> </author> <author initials='S' surname='Randriamasy' fullname='Sabine Randriamasy'> <organization /> </author> <author initials='Y' surname='Yang' fullname='Y. Yang'> <organization /> </author> <author initials='J' surname='Zhang' fullname='Jingxuan Zhang'> <organization /> </author> <date year='2021' month='February' day='22' /> </front> <seriesInfo name="RFC" value="YYY1"/> <seriesInfo name="DOI" value="10.17487/RFCYYY1"/> </reference> --> <reference anchor="ALTO" target="https://www.iana.org/assignments/alto-protocol/"> <front> <title>Application-Layer Traffic Optimization (ALTO) Protocol</title> <author> <organization>IANA</organization> </author> </front> </reference> </references> </references> <!-- [rfced] Please review the "Inclusive Language" portion of the online Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language> and let us know if any changes are needed. Note that our script did not flag any words or phrases. --> <section anchor="ack"title="Acknowledgements">numbered="false" toc="default"> <name>Acknowledgements</name> <t>Many thanks toBenjamin Kaduk<contact fullname="Benjamin Kaduk"/> for spotting the issue during the review of <xreftarget="I-D.ietf-alto-path-vector"></xref>.</t>target="I-D.ietf-alto-path-vector"/>.</t> <t>Thanks toAdrian Farrel, Dhruv Dhody, Luis<contact fullname="Adrian Farrel"/>, <contact fullname="Dhruv Dhody"/>, <contact fullname="Luis Miguel ContrerasMurillo, Sabine Randriamasy,Murillo"/>, <contact fullname="Sabine Randriamasy"/>, andQiao Xiang<contact fullname="Qiao Xiang"/> for the review and comments.</t> <t>Special thanks toKai Gao<contact fullname="Kai Gao"/> for Shepherding the document.</t> <t>Thanks toMartin Duke<contact fullname="Martin Duke"/> for the AD review.</t> <t>Thanks toRoni Even<contact fullname="Roni Even"/> for the gen-art review,Jaime Jimenez<contact fullname="Jaime Jimenez"/> for the artart review, andStephen Farrell<contact fullname="Stephen Farrell"/> for the secdir review.</t> <t>Thanks toRobert Wilton, Lars Eggert, Francesca Palombini, Roman Danyliw, Paul Wouters,<contact fullname="Robert Wilton"/>, <contact fullname="Lars Eggert"/>, <contact fullname="Francesca Palombini"/>, <contact fullname="Roman Danyliw"/>, <contact fullname="Paul Wouters"/>, andMurray Kucherawy<contact fullname="Murray Kucherawy"/> for the IESG review.</t> </section></middle> <back> <references title="Normative References"> <?rfc include='reference.RFC.2119'?> <?rfc include='reference.RFC.8174'?> <?rfc include='reference.RFC.7285'?> <?rfc include='reference.RFC.8126'?> </references> <references title="Informative References"> <?rfc include='reference.I-D.ietf-alto-path-vector'?> <reference anchor="ALTO" target="https://www.iana.org/assignments/alto-protocol/alto-protocol.xhtml"> <front> <title>Application-Layer Traffic Optimization (ALTO) Protocol</title> <author> <organization></organization> </author> <date day="02" month="March" year="2022" /> </front> </reference> </references></back> </rfc>