<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-ietf-idr-link-bandwidth-08"
     ipr="trust200902">
  <front>
    <title abbrev="BGP Link Bandwidth Extended Community">BGP Link Bandwidth
    Extended Community</title>

    <author fullname="Pradosh Mohapatra" initials="P." surname="Mohapatra">
      <organization>Sproute Networks</organization>

      <address>
        <email>pradosh@sproute.com</email>
      </address>
    </author>

    <author fullname="Rex Fernando" initials="R." surname="Fernando">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street>170 W. Tasman Drive</street>

          <city>San Jose</city>

          <region>CA</region>

          <code>95134</code>

          <country>US</country>
        </postal>

        <email>rex@cisco.com</email>
      </address>
    </author>

    <author fullname="Reshma Das" initials="R." role="editor" surname="Das">
      <organization>Juniper Networks, Inc.</organization>

      <address>
        <postal>
          <street>1133 Innovation Way,</street>

          <city>Sunnyvale</city>

          <region>CA</region>

          <code>94089</code>

          <country>US</country>
        </postal>

        <email>dreshma@juniper.net</email>
      </address>
    </author>

    <author fullname="Satya Mohanty" initials="S." role="editor"
            surname="Mohanty">
      <organization>Zscaler</organization>

      <address>
        <postal>
          <street>120 Holger Way,</street>

          <city>San Jose</city>

          <region>CA</region>

          <code>95134</code>

          <country>US</country>
        </postal>

        <email>smohanty@zscaler.com</email>
      </address>
    </author>

    <date day="28" month="08" year="2024"/>

    <abstract>
      <t>This document describes an application of BGP extended communities
      that allows a router to perform unequal cost load balancing.</t>
    </abstract>

    <note title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119"/>.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>When a BGP speaker receives multiple paths from its internal peers,
      it could select more than one path to send traffic to. In doing so, it
      might be useful to provide the speaker with information that would help
      it distribute the traffic based on the bandwidth of the external (DMZ)
      link. This document suggests that the external link bandwidth be carried
      in the network using a new extended community <xref target="RFC4360"/> -
      the link bandwidth extended community.</t>
    </section>

    <section title="Link Bandwidth Extended Community">
      <t>When a BGP speaker receives a route from an external neighbor and
      advertises this route (via IBGP) to internal neighbors, as part of this
      advertisement the router may carry the cost to reach the external
      neighbor. The cost can be either configured per neighbor or derived from
      the bandwidth of the link that connects the router to a directly
      connected external neighbor. This value is carried in the Link Bandwidth
      Extended Community. No more than one link bandwidth extended community
      SHALL be attached to a route. Additionally, if a route is received with
      link bandwidth extended community and the BGP speaker sets itself as
      next-hop while announcing that route to other peers, the link bandwidth
      extended community should be removed.</t>

      <t>The extended community is optional non-transitive. The value of the
      high-order octet of the extended Type Field is 0x40. The value of the
      low-order octet of the extended type field for this community is 0x04.
      The value of the Global Administrator subfield in the Value Field SHOULD
      represent the Autonomous System of the router that attaches the Link
      Bandwidth Community. If four octet AS numbering scheme is used <xref
      target="RFC6793"/>, AS_TRANS should be used in the Global Administrator
      subfield. The bandwidth of the link is expressed as 4 octets in IEEE
      floating point format, units being bytes (not bits!) per second. It is
      carried in the Local Administrator subfield of the Value Field.</t>
    </section>

    <section title="Deployment Considerations">
      <t>The usage of this community is restricted to the cases where BGP
      multipath can be safely deployed. If the path between the load sharing
      router and the exit point is not tunneled, then the IGP distance between
      the load balancing router and the exit points should be the same.</t>

      <t>If the path between the load sharing router and the exit point is
      tunneled, then the choice to use this community is a purely local matter
      to the load sharing router.</t>

      <t>In the context of BGP/MPLS VPNs <xref target="RFC4364"/>, link
      bandwidth community could be used to support inbound load balancing for
      multihomed sites, as follows. Consider a site that is connected to PE1
      and PE2. Both PE1 and PE2 would advertise VPN-IP routes associated with
      the destinations within the site. One way to enable other PEs to receive
      all these routes is to require the RD of the routes advertised by PE1 to
      be different from the RD of the routes advertised by PE2. The VPN-IP
      routes advertised by PE1 should carry the link bandwidth community;
      likewise for the VPN-IP routes advertised by PE2. The bandwidth value
      carried in the community could be locally determined by PE1 and PE2.
      Alternatively CEs of the site, when advertising IP routes to PE1 and
      PE2, could add the link bandwith community to these advertisements, in
      which case PE1 and PE2, when originating VPN-IP routes, would use the
      bandwidth value from the IP routes they received from the CEs to
      construct the link bandwidth community carried by these VPN-IP
      routes.</t>

      <t>An ingress PE, when sending traffic to destinations within the site,
      can use the bandwidth value carried in the community of the routes
      advertised by PE1 and PE2 to perform load sharing, where some of the
      traffic would go via PE1, while other traffic would go via PE2.</t>

      <t>If there are multiple paths to reach a destination and if only some
      of them have link bandwidth community, the load sharing router should
      not perform unequal cost load balancing based on link bandwidths.</t>
    </section>

    <section anchor="Acknowledgments" title="Acknowledgments">
      <t>The authors would like to thank Yakov Rekhter, Srihari Sangli and Dan
      Tappan for proposing unequal cost load balancing as one possible
      application of the extended community attribute.</t>

      <t>The authors would like to thank Bruno Decraene, Robert Raszuk, Joel
      Halpern, Aleksi Suhonen, Randy Bush, and John Scudder for their comments
      and contributions.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document defines a specific application of the two-octet AS
      specific extended community. IANA is requested to assign a sub- type
      value of 0x04 for the link bandwidth extended community.<figure>
          <artwork>    Name                                           Value
    ----                                           -----
    non-transitive Link Bandwidth Ext. Community  0x4004</artwork>
        </figure></t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>There are no additional security risks introduced by this design.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"?>

      <?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4360.xml"?>

      <?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4364.xml"?>

      <?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6793.xml"?>
    </references>
  </back>
</rfc>
