<?xml version="1.0" encoding="US-ASCII"?> encoding="UTF-8"?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="4"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?> [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>

<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 Software Avenue, 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 in the Application-Layer "Application-Layer Traffic Optimization (ALTO)
      Protocol
      Protocol" <xref target="RFC7285"></xref>. The base ALTO specification target="RFC7285"/>, which
      includes a provision for only two modes: <list style="hanging">
          <t hangText="&quot;numerical&quot;:">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="&quot;ordinal&quot;:">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., <xref target="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 (<xref
      target="anupdate"></xref>) target="anupdate"/>) and creates a new ALTO registry to track new
      cost modes (<xref target="IANA"></xref>).</t> target="IANA"/>).</t>
      <t>The mechanisms defined in <xref target="RFC7285"></xref> target="RFC7285"/> are used to
      advertise the support of new cost modes for specific cost metrics. Refer
      to <xref target="bc"></xref> target="bc"/> for more details.</t>
    </section>
    <section anchor="notation" title="Terminology">
      <t>The numbered="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 in BCP 14 BCP&nbsp;14 <xref target="RFC2119"/> <xref target="RFC2119"></xref><xref target="RFC8174"></xref> target="RFC8174"/>
    when, and only when, they appear in all capitals, as shown here.</t> here.
        </t>
      <t>This document makes use of the terms defined in <xref
      target="RFC7285"></xref>.</t> target="RFC7285"/>.</t>
    </section>
    <section anchor="anupdate" title="Updates numbered="true" toc="default">
      <name>Updates to RFC7285">
      <t></t>

      <section title="Updates RFC 7285</name>
      <t/>
      <section>
        <name>Updates to Section 6.1.2 of RFC7285"> RFC 7285</name>
        <t>This document updates Section 6.1.2 of <xref
        target="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 ordinal rankings.</t>

            <t>It rankings.</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 costs differently.</t>

            <t>Cost differently.</li>
          <li>Cost modes are indicated in protocol messages as strings.</t>
          </list></t>

        <t>NEW:<list style="empty">
            <t>The strings.</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
            the future.</t>

            <t>It future.</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 costs differently.</t>

            <t>Cost differently.</li>
          <li>Cost modes are indicated in protocol messages as strings.</t>

            <t>Future strings.</li>
          <li>For any future documents that define defines a new cost mode are strongly
            recommended to indicate mode, indicating
            whether that new cost mode applies to all
            or a subset of cost metrics. metrics is strongly recommended. This recommendation is meant to
            prevent non-deterministic nondeterministic 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
            implementations MUST <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="Updates numbered="true" toc="default">
        <name>Updates to Section 10.5 of RFC7285"> RFC 7285</name>
        <t>This document updates Section 10.5 of <xref
        target="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 string MUST <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 string MUST <bcp14>MUST</bcp14> be no more
            than 32 characters, and it MUST 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:" (<xref
            target="IANA"></xref>). target="IANA"/>). Otherwise, the cost mode MUST <bcp14>MUST</bcp14> have a value
            that is listed in the registry created in <xref
            target="IANA"></xref> target="IANA"/> of RFCXXXX.</t>
          </list></t>

        <t></t> [RFC9274].</li>
        </ul>
        <t/>
      </section>
    </section>
    <section anchor="bc" title="Backward numbered="true" toc="default">
      <name>Backward Compatibility Considerations"> Considerations</name>
      <t>ALTO servers that support new cost modes for specific cost metrics
      will use the mechanism specified in Section 9.2 of <xref
      target="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 in Section 9.2.3 of <xref
      target="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 per Section 8.5.2 of <xref
      target="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 <xref target="up2"></xref> target="up2"/> do not
      introduce any interoperability issue given that currently implemented
      cost modes adhere to these constrains (mainly, those in <xref
      target="RFC7285"></xref> target="RFC7285"/> and <xref
      target="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 a numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>IANA has created the new subregistry entitled "ALTO Cost Modes" under subregistry
      within the "Application-Layer Traffic Optimization
      (ALTO) Protocol" registry available at <xref target="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 following
      information:<list style="hanging">
          <t hangText="Identifier:">The
      information:</t>
      <dl newline="false" spacing="normal">
        <dt>Identifier:</dt>
        <dd>The name of the ALTO cost mode. Refer to
          <xref target="up2"></xref> target="up2"/> for more details on allowed encoding.</t>

          <t hangText="Description:">A encoding.</dd>
        <dt>Description:</dt>
        <dd>A short description of the requested ALTO
          cost mode.</t>

          <t hangText="Intended Semantics:">A mode.</dd>
        <dt>Intended Semantics:</dt>
        <dd>A reference to where the semantic
          of the requested cost mode is defined.</t>

          <t hangText="Reference:">A defined.</dd>
        <dt>Reference:</dt>
        <dd>A reference to the document that registers
          the requested cost mode.</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"/>).
      IANA to add has 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, <xref target="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 returned costs       | RFC7285    |           |
   +------------+-----------------------------+------------+-----------+
   | ordinal    | Indicates costs</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 |           |
   |            | represent ranking           | 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 in Section 15 of <xref target="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 to Benjamin Kaduk <contact fullname="Benjamin Kaduk"/> for spotting the
      issue during the review of <xref target="I-D.ietf-alto-path-vector"></xref>.</t> target="I-D.ietf-alto-path-vector"/>.</t>
      <t>Thanks to Adrian Farrel, Dhruv Dhody, Luis <contact fullname="Adrian Farrel"/>,
      <contact fullname="Dhruv Dhody"/>,
      <contact fullname="Luis Miguel Contreras Murillo,
      Sabine Randriamasy, Murillo"/>,
      <contact fullname="Sabine Randriamasy"/>, and Qiao Xiang
      <contact fullname="Qiao Xiang"/> for the review and comments.</t>
      <t>Special thanks to Kai Gao <contact fullname="Kai Gao"/> for Shepherding the document.</t>
      <t>Thanks to Martin Duke <contact fullname="Martin Duke"/> for the AD review.</t>
      <t>Thanks to Roni Even <contact fullname="Roni Even"/> for the gen-art review, Jaime Jimenez <contact fullname="Jaime Jimenez"/> for the
      artart review, and Stephen Farrell <contact fullname="Stephen Farrell"/> for the secdir review.</t>
      <t>Thanks to Robert 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"/>, and Murray 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>