<?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-large-community-00" ipr="trust200902">
  <front>
    <title abbrev="Large BGP Communities">Large BGP Communities</title>

    <author fullname="Jakob Heitz" initials="J." surname="Heitz">
        <organization>Cisco</organization>
        <address>
            <postal>
                <street>170 West Tasman Drive</street>
                <city>San Jose</city>
                <region>CA</region>
                <code>95054</code>
                <country>USA</country>
            </postal>
            <email>jheitz@cisco.com</email>
        </address>
    </author>

    <author fullname="Keyur Patel" initials="K." surname="Patel">
        <organization abbrev="Arrcus">Arrcus, Inc</organization>
        <address>
            <email>keyur@arrcus.com</email>
        </address>
    </author>

    <author fullname="Job Snijders" initials="J." surname="Snijders">
        <organization abbrev="NTT">NTT Communications</organization>
        <address>
            <postal>
                <street>Theodorus Majofskistraat 100</street>
                <code>1065 SZ</code>
                <city>Amsterdam</city>
                <country>NL</country>
            </postal>
            <email>job@ntt.net</email>
        </address>
    </author>

    <author fullname="Ignas Bagdonas" initials="I." surname="Bagdonas">
        <organization>Equinix</organization>
        <address>
            <postal>
                <street></street>
                <city>London</city>
                <country>UK</country>
            </postal>
            <email>ibagdona.ietf@gmail.com</email>
        </address>
    </author>

    <author fullname="Adam Simpson" initials="A." surname="Simpson">
        <organization>Nokia</organization>
        <address>
            <postal>
                <street>600 March Road</street>
                <city>Ottawa</city>
                <code>Ontario K2K 2E6</code>
                <country>Canada</country>
            </postal>
            <email>adam.1.simpson@nokia.com</email>
        </address>
    </author>

    <date/>

    <area>Routing</area>
    <workgroup>IDR</workgroup>
    <keyword>BGP</keyword>
    <keyword>communities</keyword>

    <abstract>
        <t>
            The BGP Communities Attribute <xref target="RFC1997"/> is heavily
            used by operators, but is inadequate to represent large enough
            values, particularly Four-octet Autonomous System numbers
	    <xref target="RFC6793"/> plus additional values.
            This document describes an extension to BGP <xref target="RFC4271"/>
            to address this need with a new extended form of the BGP community
	    Attribute.
        </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>
              BGP implementations typically support a routing policy language
              (RPL) to control the distribution of routing information.
              Network operators add BGP communities to routes via the RPL to
              identify intrinsic differentia of a route such as its origin
              country or specify a RPL action to be taken, or one that has been
              taken, on an individual route or group of routes. Because BGP
              communities are optional transitive BGP attributes, these
              differentia and actions identified by the communities may be
              acted upon or otherwise utilized by the RPL in any Autonomous
              System (AS) in the Internet, often are and often the goal of
	      adding a community is to signal an AS one or more AS-hops away.
          </t>
          <t>
              BGP Communities Attributes are 4-octet values split into two
              2-octet values where the most significant word is an Autonomous
              System number (ASN) and the least significant word is a value
              whose meaning is defined by operators of that Autonomous System.
              This operator-defined value is the aforementioned differentia or
              RPL action.
          </t>
          <t>
              Since the adoption of Four-octet ASNs <xref target="RFC6793"/>,
              the BGP Communities Attribute can no longer accommodate this
              encoding because it is only large enough to hold the ASN.  Some
              operators have also expressed a need for more than 2-octets of
              operator-defined values. This has led operators to create obtuse
              mappings to fit within 2-octets, the use of which are tedious and
              error prone and still can not accommodate all use-cases.
          </t>
          <t>
              To address this, a Large Community BGP attribute is defined to
              encode one or more 12-octet values each consisting of a
              Four-octet Autonomous System Number and two 4 octet
              operator-defined values for differentia or actions defined by
              that Autonomous System.
          </t>
    </section>

    <section title="Large BGP Community Attribute">
        <t>
            This document creates the Large Communities BGP path attribute as
            an optional transitive attribute of variable length.  All routes
            with the Large Community attribute belong to the communities in the
            attribute.
        </t>
        <t>
            The Large COMMUNITIES attribute has Type Code TBD - RFC EDITOR
            fill-in IANA assigned value.
        </t>
        <t>
            The attribute consists of one or more 12-octet values. Each
            12-octet Large Community value represents three 4-octet values, as
            follows:
<figure align="center"><artwork><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Autonomous System Number                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Local Data Part 1                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Local Data Part 2                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure></t>

<t>
    <list style="hanging">
        <t hangText="Autonomous System Number:">The Four-octet ASN of the operator with whom definition of the final two 4-octet values lies.</t>
        <t hangText="Local Data part 1:">4-octet operator-defined value.</t>
        <t hangText="Local Data part 2:">4-octet operator-defined value.</t>
    </list>
</t>

    </section>

    <section title="Textual Representation">
        <t>
            The textual representation of BGP Communities <xref target="RFC1997"/>
            in RPLs and the networking community is known well as two 2-octet
            unsigned integers and is often represented as such, separated a
            colon. For example, 65000:12345 (ASN:differentia).
        </t>
        <t>
            Large Communities MUST be represented similarly, as three 4-octet
            unsigned integers with no leading zeros. An integer MUST NOT be
            omitted, even when zero. Implementations MUST represent Large
            Communities in RPL in a manner consistent with their representation
            of BGP Communities <xref target="RFC1997"/>. For example, 65000:1:2
            (ASN:Local Data Part 1:Local Data Part 2) or 65000:0:0.
        </t>
        <t>
The following Large BGP Communities textual specification uses the Augmented
Backus-Naur Form (ABNF) notation as specified in <xref target="RFC5234"/>.
<figure align="center">
<artwork><![CDATA[
        positive-digit  = "1" / "2" / "3" /
                          "4" / "5" / "6" /
                          "7" / "8" / "9"

        digit           = "0" / positive-digit

        non-zero-int    = positive-digit *9digit

        part            = "0" / non-zero-int ; max value is 4294967295

        large-community = part ":" part ":" part
]]></artwork>
</figure>
</t>
        <t>
            Vendors MAY provide other textual representations.
        </t>

    </section>

    <section title="Error Handling">
        <t>
            The error handling of Large Community is as follows:
        </t>
        <t>
            <list style="symbols">
                <t>
                    A Large Community BGP Path Attribute with a length of zero
                    MUST be ignored upon receipt and removed when sending.
                </t>
                <t>
                    A Large Community attribute SHALL be considered malformed
                    if its length is not a non-zero multiple of 12 bytes.
                </t>
                <t>
                    A BGP UPDATE message with a malformed Large Community
                    attribute SHALL be handled using the approach of
		    "treat-as-withdraw" as described in
		    <xref target="RFC7606">section 2</xref>.
                </t>
            </list>
        </t>
    </section>

    <section title="Security Considerations">
        <t>
            This extension to BGP has similar security implications as BGP
            Communities <xref target="RFC1997"/>.
        </t>
        <t>
            underlying security issues. Specifically, an AS relying on the
	    BGP attributes carried in BGP must have trust in every AS in the
	    path to the source of the route, as any AS in the path may have
	    altered or deleted attributes or added false attributes.
            Specifying the mechanism(s) to provide such trust is beyond the
	    scope of this document.
        </t>
   </section>
   
   <section title="Implementation status - RFC EDITOR: REMOVE BEFORE PUBLICATION">
       <t>
           This section records the status of known implementations of the
           protocol defined by this specification at the time of posting of
           this Internet-Draft, and is based on a proposal described in
           <xref target="RFC7942" />. The description of implementations in this
           section is intended to assist the IETF in its decision processes in
           progressing drafts to RFCs.  Please note that the listing of any
           individual implementation here does not imply endorsement by the
           IETF.  Furthermore, no effort has been spent to verify the
           information presented here that was supplied by IETF contributors.
           This is not intended as, and must not be construed to be, a catalog
           of available implementations or their features.  Readers are advised
           to note that other implementations may exist.
       </t>
       <t>
           As of today these vendors have produced an implementation of Large
           BGP Community:
           <list style="symbols">
               <t>Cisco IOS XR</t>
               <t>ExaBGP</t>
               <t>GoBGP</t>
            </list>
       </t>
       <t>
           The latest implementation news is tracked at
           <eref target="https://largebgpcommunities.net">http://largebgpcommunities.net/</eref>.
       </t>
   </section>

    <section title="IANA Considerations">
        <t>
            IANA is requested to assign a BGP path attribute value for the
            Large Community attribute.
        </t>
    </section>

    <section title="Acknowledgements">
        <t>
            The authors would like to thank Ruediger Volk, Russ White, Acee
            Lindem, Shyam Sethuram, Jared Mauch, Joel M. Halpern, Nick
            Hilliard, Jeffrey Haas, John Heasley, Gunter van de Velde, Marco
            Marzetti, Eduardo Ascenco Reis, Mark Schouten, Paul Hoogsteder,
            Martijn Schmidt, Greg Hankins, Acee Lindem, Bertrand Duvivier,
            Barry O'Donovan, Grzegorz Janoszka, Linda Dunbar, Marco Davids,
            Gaurab Raj Upadhaya, Jeff Tantsura, Teun Vink, Adam Davenport,
            Theodore Baschak, Pier Carlo Chiodi, Nabeel Cocker, Ian Dickinson,
            Jan Baggen, Duncan Lockwood, David Farmer, Randy Bush, Wim
            Henderickx, Stefan Plug, Kay Rechthien, Rob Shakir, Warren Kumari,
            Gert Doering, Thomas King, Mikael Abrahamsson, Wesley Steehouwer,
            Sander Steffann, Brad Dreisbach, Martin Millnert, Christopher
            Morrow, Jay Borkenhagen, Arnold Nipper, Joe Provo, Niels Bakker,
            Bill Fenner, Tom Daly, Ben Maddison, Alexander Azimov, Brian
            Dickson and Peter van Dijk for their support, insightful review and
            comments.
        </t>
    </section>

  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.1997"?>
      <?rfc include="reference.RFC.2119"?>
      <?rfc include="reference.RFC.4271"?>
      <?rfc include="reference.RFC.6793"?>
      <?rfc include="reference.RFC.7606"?>
    </references>
    <references title="Informative References">
      <?rfc include="reference.RFC.5234"?>
      <?rfc include="reference.RFC.7942"?>
    </references>


  </back>
</rfc>
