<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.1 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wh-rtgwg-adaptive-routing-arn-00" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.1 -->
  <front>
    <title abbrev="ARN">Notification for Adaptive Routing</title>
    <seriesInfo name="Internet-Draft" value="draft-wh-rtgwg-adaptive-routing-arn-00"/>
    <author initials="H." surname="Wang" fullname="Haibo Wang">
      <organization>Huawei</organization>
      <address>
        <email>rainsword.wang@huawei.com</email>
      </address>
    </author>
    <author initials="H." surname="Huang" fullname="Hongyi  Huang">
      <organization>Huawei</organization>
      <address>
        <email>hongyi.huang@huawei.com</email>
      </address>
    </author>
    <date year="2023" month="October" day="23"/>
    <area>General</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>keyword1</keyword>
    <keyword>keyword2</keyword>
    <keyword>keyword3</keyword>
    <abstract>
      <?line 42?>

<t>Large-scale supercomputing and AI data centers utilize multipath to implement load balancing and improve link reliability. Adaptive routing (AR), which is widely used in direct topology such as dragonfly, can dynamically adjust routing policies based on path congestion and failures. 
When congestion or failure occurs, in addition for the local node to apply AR, the congestion/failure information also needs to be sent to other nodes in a timely and accurate manner, so as to enforce AR in other nodes to avoid exacerbating congestion on the path. 
This document specifies Adaptive Routing Notification (ARN) for disseminating congestion detection and congestion elimination proactively.</t>
    </abstract>
  </front>
  <middle>
    <?line 50?>

<section anchor="intro">
      <name>Introduction</name>
      <t>Large-scale supercomputing centers require interconnection of large-scale computing nodes. However, the scaling-out of clusters increases network latency and deployment costs, which cannot meet computing power and deployment requirements. 
Directly connected network topology  (such as Dragonfly<xref target="I-D.draft-agt-rtgwg-dragonfly-routing"/>) shows the advantages of scalability with small network diameter, which is widely adopted in HPC and supercomputing systems networks.</t>
      <t>In the network that adopts the directly connected topology, there are multiple but non-equivalent paths to the destination node. 
In most cases, the shortest path is preferred to be selected for forwarding traffic. 
However, traffic congestion or link failures may occur on the shortest path. 
To this end, adaptive routing is widely used for nodes to make dynamic routing decisions based on dynamics of network topology (e.g., link failure) as well as variations of traffic (e.g., link congestion).</t>
      <t>By proactively detecting link congestion status, the network node could forward packets along a shorter but non-congested path, improving overall throughput and resilience as well as reducing the latency. 
When the link is non-congested, packets are forwarded over the shortest path. 
When congestion occurs on the shortest path, the local node that detects it applies adaptive routing immediately and, at the same time, explicitly advertises congestion signals to other remote nodes.<br/>
In this way, the network selects another non-congested but non-shortest path to forward packets temporarily until congestion elimination signal is received. 
Adaptive routing enables the network to mitigate traffic collisions and make use of idle links to improve bandwidth utilization.</t>
      <t>This document proposes a proactive congestion notification mechanism for adaptive routing, and describes the conditions when to trigger the dissemination, as well as what information to carry in ARN. 
Adaptive Routing Notifications (ARNs) are not only applicable to directly connected topologies such as Dragonfly, but to any topologies that aim to apply dynamic multipath optimization. ARN is also useful for advertising failures of link or interface, in which case traffic is desired to bypass the failed path.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>AR: Adaptive Routing</t>
        <t>ARN: Adaptive Routing Notification</t>
        <t>BPT: Best Path Table</t>
      </section>
      <section anchor="requirements-language">
        <name>Requirements Language</name>
        <t>The key words "<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 "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="arn-mechanism">
      <name>ARN Mechanism</name>
      <t>ARN can be triggered whenever local congestion is detected to appear or disappear. Congestion signal is sent by the detected node to other nodes of interests.</t>
      <figure anchor="topology">
        <name>Topology Example</name>
        <artwork><![CDATA[
            +----------------+            +----------------+
            |                |            |                |
            |     Group 2    | -----------|     Group 3    |
            |                |            |                |
            +----------------+            +----------------+
                     |                             |
                     |                             |
                     |                             |
  +------------------|-------------------+         |
  |                  *                   |         |
  |      @@     +----*---+     @@        |         |
  |     +-------+  Node1 +--------+      |         |
  |     |       +----+---+        |      |         |
  |     |            |            |      |         |
  | +---v----+       |       +----v---+  |         |
  | | Node2  |       |@      |  Node4 +------------+
  | +--------+       |@      +--------+  |
  |                  |                   |
  |             +----v---+               |
  |             |  Node3 |               |
  |             +--------+               |   **: congestion
  |  Group 1                             |   @@: ARN
  +--------------------------------------+
]]></artwork>
      </figure>
      <t><xref target="topology"/> depicts a simplified dragonfly topology (only relevant links are drawn). The nodes in each Group are directly connected to each other. The groups are all connected with direct links. As shown in <xref target="topology"/>, Node1 has a direct link connecting Group1 and Group2. When the direct link (Node1 &lt;-&gt; Group2) is congested, all nodes of Group1 should be notified and immediately update the path selection policy. For example, partial or all flows originating from group1 to group2 may choose Group3 as transmit instead of using direct link (Node1 &lt;-&gt; Group2) until congestion elimination.</t>
      <section anchor="triggering-arn">
        <name>Triggering ARN</name>
        <t>The local node could determine whether congestion occurs by monitoring interface status, such as bandwidth utilization and queue depth of the interface.</t>
        <t>When the monitored value exceeds the preset threshold, the state is determined to be in congestion and congestion notification is triggered.
When the monitored value falls back below the preset threshold, the state is determined to be in non-congestion and a notification of congestion elimination is triggered.</t>
        <t>When the local node detects any change in congestion status, it can send the corresponding ARN continuously to other network nodes in the same group. 
The notifications can be sent to multiple nodes using multicast technology provided by the network.
ARN packets <bcp14>SHOULD</bcp14> be set as high priority to ensure that they can be processed in a timely manner.
The congestion level is <bcp14>RECOMMENDED</bcp14> to be present in ARN in order for fine-grained control of adaptive routing.</t>
      </section>
      <section anchor="arn-for-congestion-detection">
        <name>ARN for Congestion Detection</name>
        <t>An ARN packet for congestion detection <bcp14>SHOULD</bcp14> include the <tt>Severity</tt> information which is used to indicate the level of congestion or the type of failure.</t>
        <t>Whenever a network node receives an ARN packet indicating congestion detection, if the optimal forwarding path in the local best path table (BPT) should pass through the relevant interface, the network node deletes the path from the BPT and choose other sub-optimal paths. How to organize and maintain BPT is out of scope in this document.</t>
        <t>An ARN packet for congestion detection <bcp14>MUST</bcp14> include neccesary information (e.g., ID of peer group connected by the compromised link) to locate susceptible paths in BPT.</t>
      </section>
      <section anchor="arn-for-congestion-elimination">
        <name>ARN for Congestion Elimination</name>
        <t>When the network node receives the ARN that represents congestion elimination, it checks that whether the Cost value of the forwarding path through the relevant interface (P1) is less than the forwarding path stored in the current BPT (P2), the forwarding path (P1) is stored in the BPT and replaces the current path (P1) in the table. How to organize and maintain BPT is out of scope in this document.</t>
        <t>An ARN packet for congestion elimination <bcp14>MUST</bcp14> include neccesary information (e.g., ID of peer group connected by the compromised link) to locate susceptible paths in BPT.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TBD.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TBD.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. 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="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that 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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.draft-agt-rtgwg-dragonfly-routing">
          <front>
            <title>Routing in Dragonfly+ Topologies</title>
            <author fullname="Dmitry Afanasiev" initials="D." surname="Afanasiev">
         </author>
            <author fullname="Roman" initials="" surname="Roman">
              <organization>Yandex</organization>
            </author>
            <author fullname="Jeff Tantsura" initials="J." surname="Tantsura">
              <organization>Nvidia</organization>
            </author>
            <date day="10" month="July" year="2023"/>
            <abstract>
              <t>   This document provides an overview of Dragonfly+ network topology and
   describes routing implementation for IP networks with Dragonfly+
   topology with support for non-minimal routing.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-agt-rtgwg-dragonfly-routing-00"/>
        </reference>
      </references>
    </references>
    <?line 188?>

<section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
    </section>
    <section numbered="false" anchor="contributors">
      <name>Contributors</name>
    </section>
  </back>
  <!-- ##markdown-source:
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
sd2qNiIAAA==

-->

</rfc>
