<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" docName="draft-ietf-idr-link-bandwidth-24" number="10005" consensus="true" updates="" obsoletes="" submissionType="IETF" ipr="trust200902" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" xml:lang="en" prepTime="2026-06-26T23:15:21" indexInclude="true" scripts="Common,Latin">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-idr-link-bandwidth-24" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc10005" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="BGP Link Bandwidth Extended Community">BGP Link Bandwidth Extended Community</title>
    <seriesInfo name="RFC" value="10005" stream="IETF"/>
    <author fullname="Pradosh Mohapatra" initials="P." surname="Mohapatra">
      <organization showOnFrontPage="true">Google LLC</organization>
      <address>
        <email>pradosh@gmail.com</email>
      </address>
    </author>
    <author fullname="Reshma Das" initials="R." role="editor" surname="Das">
      <organization showOnFrontPage="true">HPE</organization>
      <address>
        <postal>
          <street>1133 Innovation Way</street>
          <city>Sunnyvale</city>
          <region>CA</region>
          <code>94089</code>
          <country>United States of America</country>
        </postal>
        <email>reshma.das@hpe.com</email>
      </address>
    </author>
    <author fullname="Satya Mohanty" initials="S." role="editor" surname="Mohanty">
      <organization showOnFrontPage="true">Zscaler</organization>
      <address>
        <postal>
          <street>120 Holger Way</street>
          <city>San Jose</city>
          <region>CA</region>
          <code>95134</code>
          <country>United States of America</country>
        </postal>
        <email>smohanty@zscaler.com</email>
      </address>
    </author>
    <author fullname="Serge Krier" initials="S." surname="Krier">
      <organization showOnFrontPage="true">Cisco Systems</organization>
      <address>
        <postal>
          <street>Pegasus Parc, De Kleetlaan 6a</street>
          <country>Belgium</country>
        </postal>
        <email>sekrier@cisco.com</email>
      </address>
    </author>
    <author fullname="Rafal Jan Szarecki" initials="R.J." surname="Szarecki">
      <organization showOnFrontPage="true">Google LLC</organization>
      <address>
        <postal>
          <street>1160 N Mathilda Ave</street>
          <city>Sunnyvale</city>
          <region>CA</region>
          <code>94089</code>
          <country>United States of America</country>
        </postal>
        <email>rszarecki@gmail.com</email>
      </address>
    </author>
    <author fullname="Akshay Gattani" initials="A." surname="Gattani">
      <organization showOnFrontPage="true">Arista Networks</organization>
      <address>
        <postal>
          <street>5453 Great America Parkway</street>
          <city>Santa Clara</city>
          <region>CA</region>
          <code>95054</code>
          <country>United States of America</country>
        </postal>
        <email>akshay@arista.com</email>
      </address>
    </author>
    <date month="06" year="2026"/>
    <area>RTG</area>
    <workgroup>idr</workgroup>
    <keyword>example</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This document defines a BGP extended community, the Link Bandwidth
      Extended Community, which carries bandwidth information to enable
      weighted load-balancing in multipath scenarios. It specifies the format
      and processing rules for this extended community type.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc10005" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2026 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-link-bandwidth-extended-com">Link Bandwidth Extended Community</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-protocol-procedures">Protocol Procedures</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sender-originating-link-ban">Sender (Originating Link Bandwidth Extended Community)</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-receiver-receiving-link-ban">Receiver (Receiving Link Bandwidth Extended Community)</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.3">
                <t indent="0" pn="section-toc.1-1.3.2.3.1"><xref derivedContent="3.3" format="counter" sectionFormat="of" target="section-3.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-re-advertisement-procedures">Re-Advertisement Procedures</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2.3.2">
                  <li pn="section-toc.1-1.3.2.3.2.1">
                    <t indent="0" pn="section-toc.1-1.3.2.3.2.1.1"><xref derivedContent="3.3.1" format="counter" sectionFormat="of" target="section-3.3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-re-advertisement-with-next-">Re-Advertisement with Next Hop Change</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.3.2.2">
                    <t indent="0" pn="section-toc.1-1.3.2.3.2.2.1"><xref derivedContent="3.3.2" format="counter" sectionFormat="of" target="section-3.3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-re-advertisement-with-next-h">Re-Advertisement with Next Hop Unchanged</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.3.2.4">
                <t indent="0" pn="section-toc.1-1.3.2.4.1"><xref derivedContent="3.4" format="counter" sectionFormat="of" target="section-3.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-link-bandwidth-extended-commu">Link Bandwidth Extended Community Arithmetic and BGP Multipath</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-error-handling">Error Handling</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-operational-considerations">Operational Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-inconsistent-deployment">Inconsistent Deployment</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t indent="0" pn="section-toc.1-1.7.2.2.1"><xref derivedContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bandwidth-value">Bandwidth Value</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="8.2" format="counter" sectionFormat="of" target="section-8.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="Appendix A" format="default" sectionFormat="of" target="section-appendix.a"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-document-history">Document History</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgments</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent="" format="title" sectionFormat="of" target="name-contributors">Contributors</xref></t>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.d"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">Load-balancing is a critical aspect of network design, enabling
      efficient utilization of available bandwidth and improving overall
      network performance. Traditional equal load-balancing does not
      account for the varying capacities of different paths. This document
      suggests that the bandwidth be carried in the network using one of two
      new extended communities <xref target="RFC4360" format="default" sectionFormat="of" derivedContent="RFC4360"/>: the transitive and
      non-transitive Link Bandwidth Extended Community. The Link Bandwidth
      Extended Community carries the bandwidth information of a directly
      connected link or multi-hop/multipath next hop as advertised by a router.
      This mechanism facilitates maximizing utilization of network
      resources.</t>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-1.1">
        <name slugifiedName="name-requirements-language">Requirements Language</name>
        <t indent="0" pn="section-1.1-1">
    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" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they appear in all capitals, as
    shown here.
        </t>
      </section>
    </section>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-link-bandwidth-extended-com">Link Bandwidth Extended Community</name>
      <t indent="0" pn="section-2-1">The Link Bandwidth Extended Community is defined as a BGP extended
      community that carries the bandwidth information of a router
      (represented by BGP next hop) that is connecting to a remote network. This
      community can be used to inform other routers about the available
      bandwidth through a given route.</t>
      <t indent="0" pn="section-2-2">The Link Bandwidth Extended Community can be either transitive or
      non-transitive. Therefore, the value of the high-order octet of the
      extended Type field can be 0x00 or 0x40, respectively. The value of the
      low-order octet of the extended Type field for this community is
      0x04.</t>
      <t indent="0" pn="section-2-3">The Global Administrator sub-field in the Value field <bcp14>SHOULD</bcp14> be set
      to the Autonomous System Number (ASN) of the router attaching the Link
      Bandwidth Extended Community, but it <bcp14>MAY</bcp14> contain any 2-octet value. If
      the ASN cannot be represented in 2 octets,
      AS_TRANS <xref target="RFC6793" format="default" sectionFormat="of" derivedContent="RFC6793"/> <bcp14>SHOULD</bcp14> be used in the Global
      Administrator sub-field. The encoding of the full 4-octet ASNs is not
      supported by the Link Bandwidth Extended Community. Such a capability,
      should the operational need for it arise, may be provided by a new BGP
      extension. The value in the Global Administrator sub-field does not
      affect the use or semantics of the Link Bandwidth Extended Community.
      This approach maintains consistency with 2-octet community registries
      and remains operationally familiar.</t>
      <t indent="0" pn="section-2-4">The bandwidth value is expressed as 4 octets in the floating point format of <xref target="IEEE.754-2019" format="default" sectionFormat="of" derivedContent="IEEE.754-2019"/>, with units being bytes (not
      bits!) per second. It is carried in the Local Administrator sub-field of
      the Value field.</t>
      <figure anchor="LBWExtCom" align="left" suppress-title="false" pn="figure-1">
        <name slugifiedName="name-link-bandwidth-extended-comm">Link Bandwidth Extended Community</name>
        <artwork align="left" pn="section-2-5.1">
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Type=0x00/0x40 | SubType=0x04  |      Global Administrator     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Local Administrator                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
      </figure>
      <dl newline="false" spacing="normal" indent="3" pn="section-2-6">
        <dt pn="section-2-6.1">Type:</dt>
        <dd pn="section-2-6.2">A 1-octet field that <bcp14>MUST</bcp14> be set to
        0x00 or 0x40 to indicate transitive/non-transitive.</dd>
        <dt pn="section-2-6.3">SubType:</dt>
        <dd pn="section-2-6.4">A 1-octet field that <bcp14>MUST</bcp14> be set
        to 0x04 to indicate "link-bandwidth".</dd>
        <dt pn="section-2-6.5">Global Administrator sub-field:</dt>
        <dd pn="section-2-6.6">A 2-octet field that represents
          an operator-assigned 2-octet value. For example, this can be a
          16-bit ASN.</dd>
        <dt pn="section-2-6.7">Local Administrator sub-field:</dt>
        <dd pn="section-2-6.8">Bandwidth value (bytes per second)
          encoded as 4 octets in the 32-bit floating point format of <xref target="IEEE.754-2019" format="default" sectionFormat="of" derivedContent="IEEE.754-2019"/>.
        </dd>
      </dl>
    </section>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-protocol-procedures">Protocol Procedures</name>
      <t indent="0" pn="section-3-1">The procedures cover both the transitive and non-transitive variants
      of the Link Bandwidth Extended Community so that implementations can
      handle both variants, ensuring that implementations can interoperate
      correctly across all deployments. Please refer to <xref target="IANA" format="default" sectionFormat="of" derivedContent="Section 5"/>
      and <xref target="Appendix" format="default" sectionFormat="of" derivedContent="Appendix A"/> for more details.</t>
      <section anchor="Originator" numbered="true" removeInRFC="false" toc="include" pn="section-3.1">
        <name slugifiedName="name-sender-originating-link-ban">Sender (Originating Link Bandwidth Extended Community)</name>
        <t indent="0" pn="section-3.1-1">A BGP speaker that attaches a Link Bandwidth Extended Community
        <bcp14>SHOULD</bcp14> be able to advertise either a transitive or a non-transitive
        Link Bandwidth Extended Community. Implementations <bcp14>SHOULD</bcp14> provide the
        configuration to set the transitivity type of the Link Bandwidth
        Extended Community, as well as the Global Administrator and bandwidth
        values in the Local Administrator sub-field, by using local policy.
        Different implementations <bcp14>MAY</bcp14> use different default values for the
        transitivity type of the Link Bandwidth Extended Community. The
        provided configuration <bcp14>SHOULD</bcp14> allow operators to override the default
        transitivity value as needed. Likewise, implementations <bcp14>SHOULD</bcp14> expose
        their default value.</t>
        <t indent="0" pn="section-3.1-2">An implementation <bcp14>MAY</bcp14> advertise bandwidth value as zero. An
        operator may, for example, set the Link Bandwidth Extended Community
        to zero to indicate that the path should not attract traffic during
        maintenance. However, as per <xref target="Receiver" format="default" sectionFormat="of" derivedContent="Section 3.2"/>, it is up to
        the local policy of the receiver to decide how a link-bandwidth value
        of zero is handled.</t>
        <t indent="0" pn="section-3.1-3">Generally, a single Link Bandwidth Extended Community of the
        transitivity type desired in a deployment is attached to a route.
        However, during transition (refer <xref target="Operational_Condiderations" format="default" sectionFormat="of" derivedContent="Section 7"/> for details), a BGP speaker <bcp14>MAY</bcp14>
        attach one Link Bandwidth Extended Community per transitivity
        (transitive/non-transitive); the bandwidth value included in both
        communities <bcp14>SHOULD</bcp14> be the same.</t>
        <t indent="0" pn="section-3.1-4">A Link Bandwidth Extended Community <bcp14>MAY</bcp14> be attached or updated for
        a BGP route upon receipt during Adj-RIB-In processing. The Link
        Bandwidth Extended Community <bcp14>MAY</bcp14> be attached or updated for a BGP
        route's Adj-RIB-Out entry while being advertised to a neighboring BGP
        speaker. (Adj-RIB-In and Adj-RIB-Out are as defined in <xref target="RFC4271" format="default" sectionFormat="of" derivedContent="RFC4271"/>.)</t>
        <t indent="0" pn="section-3.1-5">Implementations <bcp14>MAY</bcp14> provide a configuration option to send
        non-transitive Link Bandwidth Extended Communities on external BGP
        sessions.</t>
      </section>
      <section anchor="Receiver" numbered="true" removeInRFC="false" toc="include" pn="section-3.2">
        <name slugifiedName="name-receiver-receiving-link-ban">Receiver (Receiving Link Bandwidth Extended Community)</name>
        <t indent="0" pn="section-3.2-1">A BGP receiver that supports the Link Bandwidth Extended Community
        <bcp14>MUST</bcp14> support processing of both the transitive and non-transitive
        types. The receiver <bcp14>MUST NOT</bcp14> flap or treat the route as malformed
        based on the transitivity of the Link Bandwidth Extended Community
        and/or BGP session type (internal versus external). </t>
        <t indent="0" pn="section-3.2-2">Implementations <bcp14>MAY</bcp14> provide configuration to accept non-transitive
        Link Bandwidth Extended Communities from external BGP sessions.</t>
        <t indent="0" pn="section-3.2-3">A BGP update with an attached Link Bandwidth Extended Community
        with a bandwidth value of zero is valid. When all contributing paths
        have a non-zero value in the Link Bandwidth Extended Community, the
        bandwidth values of those paths (or their ratio) can be utilized as
        weights to enable weighted load-balancing. Details of weighted
        load-balancing are outside the scope of this document. Refer to <xref target="I-D.ietf-bess-ebgp-dmz" format="default" sectionFormat="of" derivedContent="LINK-BW-USE-CASES"/>, which describes some of the
        weighted load-balancing aspects. However, in the case where the paths
        have a mix of zero and non-zero values, or all zero values, the
        behavior is determined by local policy. For example, implementations
        may exclude the paths with a zero value from weighted load-balancing
        formation as long as at least one path with a non-zero value exists, or
        they may fall back to equal load-balancing. The bandwidth value,
        however, <bcp14>SHOULD NOT</bcp14> be used as an input to the BGP best path selection
        process.</t>
        <t indent="0" pn="section-3.2-4">Between transitive and non-transitive types of Link Bandwidth
        Extended Communities that have the same bandwidth value, the
        transitivity does not matter for the purpose of computing weighted load-balancing or programming to the Forwarding Information Base (FIB).</t>
      </section>
      <section anchor="Re-Advertisement" numbered="true" removeInRFC="false" toc="include" pn="section-3.3">
        <name slugifiedName="name-re-advertisement-procedures">Re-Advertisement Procedures</name>
        <t indent="0" pn="section-3.3-1">This section describes the procedures to be followed when a BGP
        speaker receives a route with an attached Link Bandwidth Extended
        Community and subsequently re-advertises that route.</t>
        <section anchor="NextHopSelf" numbered="true" removeInRFC="false" toc="include" pn="section-3.3.1">
          <name slugifiedName="name-re-advertisement-with-next-">Re-Advertisement with Next Hop Change</name>
          <t indent="0" pn="section-3.3.1-1">When a BGP speaker re-advertises a route received with a Link
          Bandwidth Extended Community and sets the next hop to itself or to
          another address, it <bcp14>MAY</bcp14> do any one of the following as its default
          behavior: remove the Link Bandwidth Extended Community, re-advertise
          it unchanged, or regenerate it with an updated value.
          Implementations <bcp14>SHOULD</bcp14> provide a local configuration method to alter
          their default behavior to the other options with per-session
          granularity. Likewise, implementations <bcp14>SHOULD</bcp14> expose their default
          value.</t>
          <t indent="0" pn="section-3.3.1-2">When regenerating the Link Bandwidth Extended Community, the same
          procedures as outlined in <xref target="Originator" format="default" sectionFormat="of" derivedContent="Section 3.1"/> apply. Please
          also refer to <xref target="LinkBandwidthArithmetic" format="default" sectionFormat="of" derivedContent="Section 3.4"/> for use in a
          BGP multipath environment.</t>
        </section>
        <section anchor="NextHopUnchanged" numbered="true" removeInRFC="false" toc="include" pn="section-3.3.2">
          <name slugifiedName="name-re-advertisement-with-next-h">Re-Advertisement with Next Hop Unchanged</name>
          <t indent="0" pn="section-3.3.2-1">A BGP speaker that receives a route with a Link Bandwidth
          Extended Community and re-advertises or reflects the same without
          changing its next hop <bcp14>SHOULD NOT</bcp14> change the Link Bandwidth Extended
          Community in any way.</t>
        </section>
      </section>
      <section anchor="LinkBandwidthArithmetic" numbered="true" removeInRFC="false" toc="include" pn="section-3.4">
        <name slugifiedName="name-link-bandwidth-extended-commu">Link Bandwidth Extended Community Arithmetic and BGP Multipath</name>
        <t indent="0" pn="section-3.4-1">In a BGP multipath environment, the bandwidth value that is sent or
        re-advertised <bcp14>MAY</bcp14> be calculated based on the Link
        Bandwidth Extended Community associated with each constituent path
        contributing to multipath in the Local Routing Information Base
        (Local-RIB). This topic is beyond the scope of this document. Refer to
        <xref target="I-D.ietf-bess-ebgp-dmz" format="default" sectionFormat="of" derivedContent="LINK-BW-USE-CASES"/>, which describes how this
        could be done in specific scenarios.</t>
      </section>
    </section>
    <section anchor="Error" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-error-handling">Error Handling</name>
      <t indent="0" pn="section-4-1">If a BGP speaker receives a route with more than one Link Bandwidth
      Extended Community and uses the route to compute weighted load-balancing, it <bcp14>SHOULD</bcp14> use the extended community with the lowest
      bandwidth value (including zero), ignoring the transitivity.
      Implementations <bcp14>MAY</bcp14> provide configuration to change the above
      preference.</t>
      <t indent="0" pn="section-4-2">A negative value in a Link Bandwidth Extended Community <bcp14>SHOULD NOT</bcp14> be
      attached or originated by any BGP speaker. If a BGP receiver encounters
      a Link Bandwidth Extended Community that contains a negative
      link-bandwidth value, the Link Bandwidth Extended Community <bcp14>SHALL</bcp14> be
      ignored.</t>
      <t indent="0" pn="section-4-3">Link Bandwidth Extended Communities with a zero value <bcp14>MUST NOT</bcp14> be
      considered malformed.</t>
      <t indent="0" pn="section-4-4">If any of the paths lack a valid Link Bandwidth Extended Community,
      equal load-balancing <bcp14>SHOULD</bcp14> be used unless overridden by local
      configuration.</t>
    </section>
    <section anchor="IANA" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-5-1">In the "Transitive Two-Octet AS-Specific
      Extended Community Sub-Types" registry <xref target="IANA-TransExComm" format="default" sectionFormat="of" derivedContent="IANA-TransExComm"/>
      (Type 0x00), IANA has updated Sub-Type 0x04 to:</t>
      <dl indent="3" newline="false" spacing="normal" pn="section-5-2">
        <dt pn="section-5-2.1">Name:</dt>
        <dd pn="section-5-2.2">Link Bandwidth</dd>
      </dl>
      <t indent="0" pn="section-5-3">In the "Non-Transitive Two-Octet AS-Specific
      Extended Community Sub-Types" registry <xref target="IANA-Non-TransExComm" format="default" sectionFormat="of" derivedContent="IANA-Non-TransExComm"/> (Type 0x40), IANA has updated Sub-Type 0x04 to:</t>
      <dl indent="3" newline="false" spacing="normal" pn="section-5-4">
        <dt pn="section-5-4.1">Name:</dt>
        <dd pn="section-5-4.2">Link Bandwidth</dd>
      </dl>
      <t indent="0" pn="section-5-5">Both updates reference this document.</t>
    </section>
    <section anchor="Security" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-6-1">This extension to BGP has similar security implications as BGP
      extended communities <xref target="RFC4360" format="default" sectionFormat="of" derivedContent="RFC4360"/>.</t>
      <t indent="0" pn="section-6-2">The Link Bandwidth Extended Community conveys bandwidth and capacity
      information that may be sensitive. Exporting this community outside of
      an administrative domain can expose private network resource details.
      When propagating the routes with a Link Bandwidth Extended Community
      towards an untrusted network or outside of an administrative domain, it
      is recommended operators use policy to filter out this community.</t>
    </section>
    <section anchor="Operational_Condiderations" numbered="true" removeInRFC="false" toc="include" pn="section-7">
      <name slugifiedName="name-operational-considerations">Operational Considerations</name>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-7.1">
        <name slugifiedName="name-inconsistent-deployment">Inconsistent Deployment</name>
        <t indent="0" pn="section-7.1-1">Prior deployments of the feature specified in this document have
        involved implementations that only understood one of the two extended
        community transitivity types. As a result, such implementations would
        ignore the other transitivity type that they don't understand. The
        procedures in this document govern how multiple transitivity types for
        bandwidth should operate.</t>
        <t indent="0" pn="section-7.1-2">Inconsistent behavior could occur when networks have deployed a
	mixture of implementations supporting this document's procedures for
	both transitivity types, or have deployed older implementations that
	only understand one transitivity type.  A prime example is when a
	route received by a BGP speaker contains both a transitive and a
	non-transitive Link Bandwidth Extended Community, and that BGP speaker
	performs an operation that updates only one of the Link Bandwidth
	Extended Communities, so then the other community may have an
	inconsistent value.  As a result, downstream BGP speakers that may
	receive such routes may perform inappropriate weighted load-balancing.</t>
        <t indent="0" pn="section-7.1-3">To mitigate such issues, when operators are aware that older
        implementations are present in their networks, they may wish to take
        actions to address such inconsistencies. 
   One option would be to filter the unsupported transitivity type of the
   Link Bandwidth Extended Community at advertisement time on the older BGP
   speaker, if the implementation is capable of such filtering.
 Alternatively, a
        receiving BGP speaker, knowing that the sending speaker is incapable
        of doing such operations, could strip the Link Bandwidth Extended
        Community type that is unsupported by the sender.</t>
        <t indent="0" pn="section-7.1-4">Ideally, this operational consideration is short lived until all the
        routers in the network have been upgraded to implementations that
        consistently support the procedures in this document.</t>
      </section>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-7.2">
        <name slugifiedName="name-bandwidth-value">Bandwidth Value</name>
        <t indent="0" pn="section-7.2-1">How the bandwidth value is computed or determined is out of scope
        of this document. Refer to <xref target="I-D.ietf-bess-ebgp-dmz" format="default" sectionFormat="of" derivedContent="LINK-BW-USE-CASES"/>,
        which describes how this could be done in specific scenarios. It is
        recommended that implementations provide mechanisms to limit the churn
        caused by frequently changing bandwidth values, because rapid
        fluctuations could impact protocol stability and network
        operations.</t>
      </section>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-bess-ebgp-dmz" to="LINK-BW-USE-CASES"/>
    <references pn="section-8">
      <name slugifiedName="name-references">References</name>
      <references pn="section-8.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="IEEE.754-2019" target="https://ieeexplore.ieee.org/document/8766229" quoteTitle="true" derivedAnchor="IEEE.754-2019">
          <front>
            <title abbrev="IEEE-754-2019">IEEE Standard for Floating-Point Arithmetic</title>
            <author>
              <organization showOnFrontPage="true">IEEE</organization>
            </author>
            <date day="22" month="July" year="2019"/>
          </front>
          <seriesInfo name="IEEE Std" value="754-2019"/>
          <seriesInfo name="DOI" value="10.1109/IEEESTD.2019.8766229"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="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 indent="0">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="RFC4271" target="https://www.rfc-editor.org/info/rfc4271" quoteTitle="true" derivedAnchor="RFC4271">
          <front>
            <title>A Border Gateway Protocol 4 (BGP-4)</title>
            <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter"/>
            <author fullname="T. Li" initials="T." role="editor" surname="Li"/>
            <author fullname="S. Hares" initials="S." role="editor" surname="Hares"/>
            <date month="January" year="2006"/>
            <abstract>
              <t indent="0">This document discusses the Border Gateway Protocol (BGP), which is an inter-Autonomous System routing protocol.</t>
              <t indent="0">The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems. This network reachability information includes information on the list of Autonomous Systems (ASes) that reachability information traverses. This information is sufficient for constructing a graph of AS connectivity for this reachability from which routing loops may be pruned, and, at the AS level, some policy decisions may be enforced.</t>
              <t indent="0">BGP-4 provides a set of mechanisms for supporting Classless Inter-Domain Routing (CIDR). These mechanisms include support for advertising a set 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 indent="0">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="RFC4360" target="https://www.rfc-editor.org/info/rfc4360" quoteTitle="true" derivedAnchor="RFC4360">
          <front>
            <title>BGP Extended Communities Attribute</title>
            <author fullname="S. Sangli" initials="S." surname="Sangli"/>
            <author fullname="D. Tappan" initials="D." surname="Tappan"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <date month="February" year="2006"/>
            <abstract>
              <t indent="0">This document describes the "extended community" BGP-4 attribute. This attribute provides a mechanism for labeling information carried in BGP-4. These labels can be used to control the distribution of this information, or for other applications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4360"/>
          <seriesInfo name="DOI" value="10.17487/RFC4360"/>
        </reference>
        <reference anchor="RFC6793" target="https://www.rfc-editor.org/info/rfc6793" quoteTitle="true" derivedAnchor="RFC6793">
          <front>
            <title>BGP Support for Four-Octet Autonomous System (AS) Number Space</title>
            <author fullname="Q. Vohra" initials="Q." surname="Vohra"/>
            <author fullname="E. Chen" initials="E." surname="Chen"/>
            <date month="December" year="2012"/>
            <abstract>
              <t indent="0">The Autonomous System number is encoded as a two-octet entity in the base BGP specification. This document describes extensions to BGP to carry the Autonomous System numbers as four-octet entities. This document obsoletes RFC 4893 and updates RFC 4271. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6793"/>
          <seriesInfo name="DOI" value="10.17487/RFC6793"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="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 indent="0">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 pn="section-8.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="IANA-Non-TransExComm" target="https://www.iana.org/assignments/bgp-extended-communities" quoteTitle="true" derivedAnchor="IANA-Non-TransExComm">
          <front>
            <title>Non-Transitive Two-Octet AS-Specific Extended Community Sub-Types</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA-TransExComm" target="https://www.iana.org/assignments/bgp-extended-communities" quoteTitle="true" derivedAnchor="IANA-TransExComm">
          <front>
            <title>Transitive Two-Octet AS-Specific Extended Community Sub-Types</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="I-D.ietf-bess-ebgp-dmz" target="https://datatracker.ietf.org/doc/html/draft-ietf-bess-ebgp-dmz-10" quoteTitle="true" derivedAnchor="LINK-BW-USE-CASES">
          <front>
            <title>BGP link bandwidth extended community use cases</title>
            <author fullname="Stephane Litkowski" initials="S." surname="Litkowski" role="editor">
              <organization showOnFrontPage="true">Cisco</organization>
            </author>
            <author fullname="Satya Ranjan Mohanty" initials="S R." surname="Mohanty" role="editor">
              <organization showOnFrontPage="true">Zscaler</organization>
            </author>
            <author fullname="Arie Vayner" initials="A." surname="Vayner">
              <organization showOnFrontPage="true">Nvidia</organization>
            </author>
            <author fullname="Akshay Gattani" initials="A." surname="Gattani">
              <organization showOnFrontPage="true">Arista Networks</organization>
            </author>
            <author fullname="Ajay Kini" initials="A." surname="Kini">
              <organization showOnFrontPage="true">Arista Networks</organization>
            </author>
            <author fullname="Jeff Tantsura" initials="J." surname="Tantsura">
              <organization showOnFrontPage="true">Nvidia</organization>
            </author>
            <author fullname="Reshma Das" initials="R." surname="Das">
              <organization showOnFrontPage="true">HPE</organization>
            </author>
            <date day="8" month="April" year="2026"/>
            <abstract>
              <t indent="0">BGP link bandwidth extended community provides a way to signal a value along with a BGP path that can be used to perform weighted load-balancing in multipath scenarios. This document details various use cases of the BGP link bandwidth extended community. It also describes local mechanisms to dynamically adjust the BGP link bandwidth value or the multipath weights based on different considerations.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-bess-ebgp-dmz-10"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
      </references>
    </references>
    <section anchor="Appendix" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-document-history">Document History</name>
      <t indent="0" pn="section-appendix.a-1">The BGP Link Bandwidth Extended Community has evolved over several
      versions of the IETF draft. In the earlier versions up to
      draft-ietf-idr-link-bandwidth-08, only the non-transitive version of the
      Link Bandwidth Extended Community was supported. However, starting from
      draft-ietf-idr-link-bandwidth-09, both transitive and non-transitive
      versions of the Link Bandwidth Extended Community are supported.</t>
      <t indent="0" pn="section-appendix.a-2">A BGP speaker (sender or receiver) needs to be upgraded to support
      the procedures defined in this document to provide full interoperability
      for both transitive and non-transitive versions of the Link Bandwidth
      Extended Community. In order to simplify implementations, it is not a
      goal to provide interoperability by upgrading only the Route Reflector (RR).</t>
    </section>
    <section anchor="Acknowledgments" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-acknowledgments">Acknowledgments</name>
      <t indent="0" pn="section-appendix.b-1">The authors would like to thank <contact fullname="Yakov Rekhter"/>,
      <contact fullname="Srihari Sangli"/>, and <contact fullname="Dan       Tappan"/> for proposing unequal-cost load-balancing as one possible
      application of the extended community attribute. The authors would like
      to thank <contact fullname="Jeff Haas"/> for all the discussions and
      providing text for operational considerations.</t>
      <t indent="0" pn="section-appendix.b-2">The authors would like to thank <contact fullname="Bruno Decraene"/>,
      <contact fullname="Robert Raszuk"/>, <contact fullname="Joel Halpern"/>,
      <contact fullname="Aleksi Suhonen"/>, <contact fullname="Randy Bush"/>,
      <contact fullname="Stephane Litkowski"/>, <contact fullname="Mankamana       Mishra"/>, <contact fullname="Moshiko Nayman"/>, <contact fullname="Keon       Vafai"/>, <contact fullname="Ketan Talaulikar"/>, <contact fullname="Yingzhen Qu"/>, <contact fullname="Anoop Ghanwani"/>, <contact fullname="Dongjie (Jimmy)"/>, and <contact fullname="John Scudder"/> for
      their comments and contributions.</t>
    </section>
    <section anchor="Contributors" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.c">
      <name slugifiedName="name-contributors">Contributors</name>
      <contact fullname="Kaliraj Vairavakkalai" initials="K." surname="Vairavakkalai">
        <organization showOnFrontPage="true">HPE</organization>
        <address>
          <postal>
            <street>1133 Innovation Way</street>
            <city>Sunnyvale</city>
            <region>CA</region>
            <code>94089</code>
            <country>United States of America</country>
          </postal>
          <email>kaliraj.vairavakkalai@hpe.com</email>
        </address>
      </contact>
      <contact fullname="Natrajan Venkataraman" initials="N." surname="Venkataraman">
        <organization showOnFrontPage="true">HPE</organization>
        <address>
          <postal>
            <street>1133 Innovation Way</street>
            <city>Sunnyvale</city>
            <region>CA</region>
            <code>94089</code>
            <country>United States of America</country>
          </postal>
          <email>natrajan.venkataraman@hpe.com</email>
        </address>
      </contact>
      <contact fullname="Rex Fernando" initials="R." surname="Fernando">
        <organization showOnFrontPage="true">Cisco Systems</organization>
        <address>
          <postal>
            <street>170 W. Tasman Drive</street>
            <city>San Jose</city>
            <region>CA</region>
            <code>95134</code>
            <country>United States of America</country>
          </postal>
          <email>rex@cisco.com</email>
        </address>
      </contact>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.d">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Pradosh Mohapatra" initials="P." surname="Mohapatra">
        <organization showOnFrontPage="true">Google LLC</organization>
        <address>
          <email>pradosh@gmail.com</email>
        </address>
      </author>
      <author fullname="Reshma Das" initials="R." role="editor" surname="Das">
        <organization showOnFrontPage="true">HPE</organization>
        <address>
          <postal>
            <street>1133 Innovation Way</street>
            <city>Sunnyvale</city>
            <region>CA</region>
            <code>94089</code>
            <country>United States of America</country>
          </postal>
          <email>reshma.das@hpe.com</email>
        </address>
      </author>
      <author fullname="Satya Mohanty" initials="S." role="editor" surname="Mohanty">
        <organization showOnFrontPage="true">Zscaler</organization>
        <address>
          <postal>
            <street>120 Holger Way</street>
            <city>San Jose</city>
            <region>CA</region>
            <code>95134</code>
            <country>United States of America</country>
          </postal>
          <email>smohanty@zscaler.com</email>
        </address>
      </author>
      <author fullname="Serge Krier" initials="S." surname="Krier">
        <organization showOnFrontPage="true">Cisco Systems</organization>
        <address>
          <postal>
            <street>Pegasus Parc, De Kleetlaan 6a</street>
            <country>Belgium</country>
          </postal>
          <email>sekrier@cisco.com</email>
        </address>
      </author>
      <author fullname="Rafal Jan Szarecki" initials="R.J." surname="Szarecki">
        <organization showOnFrontPage="true">Google LLC</organization>
        <address>
          <postal>
            <street>1160 N Mathilda Ave</street>
            <city>Sunnyvale</city>
            <region>CA</region>
            <code>94089</code>
            <country>United States of America</country>
          </postal>
          <email>rszarecki@gmail.com</email>
        </address>
      </author>
      <author fullname="Akshay Gattani" initials="A." surname="Gattani">
        <organization showOnFrontPage="true">Arista Networks</organization>
        <address>
          <postal>
            <street>5453 Great America Parkway</street>
            <city>Santa Clara</city>
            <region>CA</region>
            <code>95054</code>
            <country>United States of America</country>
          </postal>
          <email>akshay@arista.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
