<?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' ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-abraitis-idr-maximum-paths-subcode-02" ipr="trust200902" consensus="true" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.8 -->
  <front>
    <title abbrev="Maximum Number of Paths Reached">Maximum Number of Paths Reached Notification for BGP</title>
    <seriesInfo name="Internet-Draft" value="draft-abraitis-idr-maximum-paths-subcode-02"/>
    <author fullname="Donatas Abraitis" surname="Abraitis">
      <organization>NetDef</organization>
      <address>
        <email>donatas.abraitis@gmail.com</email>
      </address>
    </author>
    <author fullname="Jeffrey Haas" surname="Haas">
      <organization>HPE</organization>
      <address>
        <email>jeffrey.haas@hpe.com</email>
      </address>
    </author>
    <date year="2026"/>
    <area>Routing</area>
    <workgroup>Inter-Domain Routing</workgroup>
    <keyword>BGP NOTIFICATION</keyword>
    <keyword>BGP Cease</keyword>
    <abstract>
      <t>
        This document defines a new BGP Cease NOTIFICATION message
        subcode, "Maximum Number of Paths Reached", used when a BGP
        speaker terminates a peering because the number of paths received
        from a neighbor, as permitted by BGP ADD-PATH, exceeds a locally
        configured upper bound.  That bound may be applied on a per-prefix
        basis or as an aggregate limit across an address family.
      </t>
    </abstract>
  </front>
  <middle>
    <section>
      <name>Introduction</name>
      <t>
        The BGP Cease NOTIFICATION message <xref target="RFC4271"/> is used
        when a BGP speaker terminates its peering with a neighbor.
        <xref target="RFC4486"/> defines subcodes for the Cease
        NOTIFICATION message to aid network operators in correlating
        network events and diagnosing BGP peering issues, including the
        "Maximum Number of Prefixes Reached" subcode.
      </t>
      <t>
        BGP ADD-PATH <xref target="RFC7911"/> permits a BGP speaker to
        advertise multiple paths for the same address prefix.  As a result,
        a BGP speaker may enforce a locally configured upper bound on the
        number of paths it accepts from a peer, distinct from any bound on
        the number of prefixes.  This bound may be applied per prefix, for
        example using the PATHS-LIMIT Capability
        <xref target="I-D.abraitis-idr-addpath-paths-limit"/>, or as an
        aggregate limit across an &lt;AFI, SAFI&gt;, for example through a
        local configuration knob that counts the additional paths toward a
        combined prefix-and-path limit.  No existing Cease subcode precisely
        describes the termination of a peering because such a bound was
        reached.
      </t>
      <t>
        This document defines the "Maximum Number of Paths Reached" Cease
        NOTIFICATION subcode for this purpose.
      </t>
    </section>
    <section anchor="simple_list">
      <name>Requirements Language</name>
      <t>
        The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
        "OPTIONAL" 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>
    </section>
    <section anchor="subcode">
      <name>Maximum Number of Paths Reached Subcode</name>
      <t>
        IANA has allocated the value TBD (see <xref target="IANA"/>) for
        the "Maximum Number of Paths Reached" Cease NOTIFICATION message
        subcode.  When a BGP speaker terminates
        a peering because the number of paths <xref target="RFC7911"/>
        received from the neighbor for one or more &lt;AFI, SAFI&gt; exceeds
        a locally configured upper bound, the BGP speaker SHOULD send a
        NOTIFICATION message with the error code "Cease" and the error
        subcode "Maximum Number of Paths Reached".
      </t>
      <t>
        Following the format defined in <xref target="RFC4486"/>,
        Section 4, the message MAY optionally include the Address Family
        information <xref target="RFC4760"/> and the upper bound in the
        "Data" field, as shown in <xref target="data_format"/>.
      </t>
      <figure anchor="data_format">
        <name>Maximum Number of Paths Reached Data Field</name>
        <artwork align="center"><![CDATA[
    +------------------------------------------------+
    | Address Family Identifier (2 octets)           |
    +------------------------------------------------+
    | Subsequent Address Family Identifier (1 octet) |
    +------------------------------------------------+
    | Paths upper bound (4 octets)                   |
    +------------------------------------------------+
            ]]></artwork>
      </figure>
      <t>
        The "Paths upper bound" field indicates the locally configured
        maximum number of paths, for the indicated &lt;AFI, SAFI&gt;, that
        triggered the termination.  If a BGP speaker terminates a peering
        because the bound was exceeded for more than one &lt;AFI, SAFI&gt;,
        it MAY include the Data field for any one of them.
      </t>
    </section>
    <section anchor="operational">
      <name>Operational Considerations</name>
      <t>
        This subcode is meaningful only when BGP ADD-PATH
        <xref target="RFC7911"/> has been negotiated for at least one
        &lt;AFI, SAFI&gt; with the peer.  A speaker that bounds only the
        number of prefixes continues to use the "Maximum Number of Prefixes
        Reached" subcode <xref target="RFC4486"/>.
      </t>
      <t>
        A receiver may bound the number of received paths in two distinct
        ways.  An aggregate bound limits the total number of paths a
        receiver will accept from the peer for an &lt;AFI, SAFI&gt;,
        primarily to protect against resource exhaustion; for example, an
        implementation might provide a configuration knob that counts the
        additional paths toward a combined prefix-and-path limit, such as
        "neighbor X maximum-prefix 10 include-additional-paths".  A
        per-prefix bound limits the number of paths accepted for a single
        prefix.  The PATHS-LIMIT Capability
        <xref target="I-D.abraitis-idr-addpath-paths-limit"/>, when
        supported by both peers, lets a receiver negotiate the per-prefix
        bound with the sender, so that the sender can avoid exceeding it in
        the first place.  This subcode is the complementary enforcement
        signal for either kind of bound: it indicates termination when the
        number of received paths exceeds the receiver's locally configured
        upper bound, regardless of whether the PATHS-LIMIT Capability was
        negotiated, for example because the sender ignored it, or sent
        more paths than indicated.
      </t>
      <t>
        Terminating the peering is the most disruptive response, because it
        discards all paths for all prefixes even when only a small number of
        prefixes exceed a per-prefix bound.  Where feasible, a receiver
        SHOULD prefer graceful handling that preserves the session, as
        recommended in
        <xref target="I-D.ietf-idr-add-paths-guidelines"/>, over
        termination.  For a per-prefix bound in particular, such handling
        includes treating the affected prefixes as withdrawn, or accepting
        only the permitted number of paths for those prefixes and discarding
        the excess, while logging the event for the operator.  A receiver
        SHOULD send this subcode only when its local policy does terminate
        the peering, for example when an aggregate bound is exceeded and
        preserving the session would risk resource exhaustion.
      </t>
      <t>
        When BGP Graceful Restart with NOTIFICATION support has been
        negotiated, a speaker that sends or receives this subcode follows
        the procedures of <xref target="RFC8538"/>.  A speaker whose local
        policy requires the immediate discard of the routes received from
        the peer uses the Hard Reset mechanism of <xref target="RFC8538"/>,
        carrying the "Cease" code and "Maximum Number of Paths Reached"
        subcode in the Data field of the Hard Reset message.
      </t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>
        This document defines a subcode for the BGP Cease NOTIFICATION
        message that provides information to aid network operators in
        correlating network events and diagnosing BGP peering issues.  This
        subcode is purely informational and has no impact on the BGP Finite
        State Machine beyond that already documented by
        <xref target="RFC4271"/>, Sections 6.6 and 6.7.
      </t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>
        IANA is requested to assign a value from the
        "BGP Cease NOTIFICATION message subcodes" registry, with the name
        "Maximum Number of Paths Reached" and a reference to this document.
      </t>
    </section>
    <section anchor="Acknowledgements" numbered="false">
      <name>Acknowledgements</name>
      <t>
        TBD
      </t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
      <name>Normative References</name>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.4271.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.4486.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.4760.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.7911.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8538.xml"/>
      </references>
      <references>
      <name>Informative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-idr-add-paths-guidelines.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.abraitis-idr-addpath-paths-limit.xml"/>
      </references>
    </references>
  </back>
</rfc>
