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

    <author fullname="Jakob Heitz" initials="J." surname="Heitz" role="editor">
        <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="Job Snijders" initials="J." surname="Snijders" role="editor">
        <organization abbrev="NTT">NTT Communications</organization>
        <address>
            <postal>
                <street>Theodorus Majofskistraat 100</street>
                <code>1065 SZ</code>
                <city>Amsterdam</city>
                <country>The Netherlands</country>
            </postal>
            <email>job@ntt.net</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="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>

    <author initials="N" surname="Hilliard" fullname="Nick Hilliard">
      <organization>INEX</organization>
      <address>
        <postal>
          <street>4027 Kingswood Road</street>
          <city>Dublin</city>
          <code>24</code>
          <country>IE</country>
        </postal>
        <email>nick@inex.ie</email>
      </address>
    </author>

    <date/>

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

    <abstract>
        <t>
            This document describes the Large BGP Communities attribute, an
            extension to BGP-4. This attribute provides a mechanism to
            signal opaque information within separate namespaces to aid in
            routing management. The attribute is suitable for use in four-octet
            ASNs.
        </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
              to control the distribution of routing information.  Network
              operators attach BGP communities to routes to identify intrinsic
              properties of these routes.  These properties may include
              information such as the route origin location, or specification
              of a routing policy action to be taken, or one that has been
              taken, and may apply to an individual route or to a group of
              routes. Because BGP communities are optional transitive BGP
              attributes, BGP communities may be acted upon or otherwise used
              by routing policies in other Autonomous Systems (ASes) on the
              Internet.
          </t>
          <t>
              <xref target="RFC1997"/> BGP Communities attributes are
              four-octet values split into two two-octet words. The most
              significant word is interpreted as an Autonomous System Number
              (ASN) and the least significant word is a locally defined value
              whose meaning is assigned by the operator of the Autonomous
              System in the most significant word.
          </t>
          <t>
              Since the adoption of four-octet ASNs <xref target="RFC6793"/>, the
              BGP Communities attribute can no longer accommodate the above
              encoding, as a two-octet word cannot fit a four-octet ASN.  The BGP
              Extended Communities attribute <xref target="RFC4360"/> is also
              unsuitable, as the protocol limit of six octets cannot
              accommodate both a four-octet Global Administrator value and a
              four-octet Local Administrator value, which precludes the common
              operational practice of encoding a target ASN in the Local
              Administrator field.
          </t>
          <t>
              To address these shortcomings, this document defines a Large
              BGP Communities attribute encoded as one or more twelve-octet values,
              each consisting of a four-octet ASN and two four-octet operator-defined
              values, each of which can be used to denote properties or actions
              significant to that ASN.
          </t>
    </section>

    <section title="Large BGP Communities Attribute">
        <t>
            This document creates the Large BGP Communities attribute
            as an optional transitive path attribute of variable length.  All
            routes with the Large BGP Communities attribute belong to the
            community specified in the attribute.
        </t>
        <t>
            The attribute consists of one or more twelve-octet values. Each
            twelve-octet Large BGP Communities value represents three four-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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Global Administrator                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Local Data Part 1                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Local Data Part 2                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>
        </t>
        <t>
            <list style="hanging">
                <t hangText="Global Administrator:">
                    A four-octet namespace identifier.  This SHOULD be an Autonomous
                    System Number.
                </t>
                <t hangText="Local Data Part 1:">A four-octet operator-defined value.</t>
                <t hangText="Local Data Part 2:">A four-octet operator-defined value.</t>
            </list>
        </t>
        <t>
            The Global Administrator field is intended to allow different
            Autonomous Systems to define Large BGP Communities without
            collision. Implementations MUST allow the operator to specify any
            value for the Global Administrator field.
        </t>
        <t>
            There is no significance to the order in which Large BGP
            Communities are encoded in the BGP path attribute payload. A BGP
            speaker can transmit them in any order.
        </t>
        <t>
            Duplicate Large BGP Communities SHOULD NOT be transmitted.  A
            receiving speaker SHOULD silently remove duplicate Large
            BGP Communities from a BGP UPDATE message.
        </t>
    </section>

    <section title="Aggregation">
        <t>
            If a range of routes is aggregated, then the resulting aggregate
            should have a Large BGP Communities attribute which contains all
            of the Large BGP Communities attributes from all of the
            aggregated routes.
        </t>
    </section>

	<section title="Canonical Representation">
        <t>
            Large BGP Communities MUST be represented as three separate
            unsigned integers in decimal notation, without leading zeros, in
            the following order: Global Administrator, Local Data 1, Local Data
            2. Numbers MUST not be omitted, even when zero.  For example:
            64496:4294967295:2 or 64496:0:0 or (64496, 111, 222).
        </t>
    </section>

    <section title="Reserved Large BGP Community values" anchor="reserved_vals">
        <t>
            The following Global Administrator values are reserved: 0 (the
            first ASN) <xref target="RFC7607"/>, 65535 (UINT16_MAX) and
            4294967295 (the last ASN) <xref target="RFC7300"/>.  Operators
            SHOULD NOT use these Global Administrator values.
        </t>
        <t>
            Although this document does not define any Special-Use Large BGP
            Communities, the Global Administrator values specified above could
            be used if there is a future need for them.
        </t>
    </section>

    <section title="Error Handling">
        <t>
            The error handling of Large BGP Communities is as follows:
        </t>
        <t>
            <list style="symbols">
                <t>
                    A Large BGP Communities attribute SHALL be considered
                    malformed if its length is not a non-zero multiple of 12.
                </t>
                <t>
                    A BGP UPDATE message with a malformed Large BGP Communities
                    attribute SHALL be handled using the approach of "treat-as-withdraw"
                    as described in <xref target="RFC7606">section 2</xref>.
                </t>
            </list>
        </t>
        <t>
            The Large BGP Communities Global Administrator field may contain
            any value, and a Large BGP Communities attribute MUST NOT be
            considered malformed if the Global Administrator field contains
            an unallocated, unassigned or reserved ASN or is set to one of
            the reserved Large BGP Community values defined in <xref
            target="reserved_vals" />.
        </t>
    </section>

    <section title="Security Considerations">
        <t>
            This extension to BGP has similar security implications as BGP
            Communities <xref target="RFC1997"/>.
        </t>
        <t>
            This document does not change any underlying security issues
            associated with any other BGP Communities mechanism.  Specifically,
            an AS relying on the Large BGP Communities attribute carried in BGP
            must have trust in every other AS in the path, as any intermediate
            Autonomous System in the path may have added, deleted or altered
            the Large BGP Communities attribute. Specifying the mechanism to
            provide such trust is beyond the scope of this document.
        </t>
        <t>
            Network administrators should note the recommendations in
            Section 11 of BGP Operations and Security <xref
            target="RFC7454"/>.
        </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 Communities:
           <list style="symbols">
               <t>Cisco IOS XR</t>
               <t>ExaBGP</t>
               <t>GoBGP</t>
               <t>BIRD</t>
               <t>OpenBGPD</t>
               <t>pmacct</t>
           </list>
       </t>
       <t>
           The latest implementation news is tracked at
           <eref target="http://largebgpcommunities.net">http://largebgpcommunities.net/</eref>.
       </t>
   </section>

    <section title="IANA Considerations">
        <t>
            IANA has made an Early Allocation of the value 32 (LARGE_COMMUNITY)
            in the "BGP Path Attributes" registry under the "Border Gateway
            Protocol (BGP) Parameters" group and is now asked to make that
            Permanent.
        </t>
    </section>

    <section title="Acknowledgments">
        <t>
            The authors would like to thank Ruediger Volk, Russ White, Acee
            Lindem, Shyam Sethuram, Jared Mauch, Joel M. Halpern, Jeffrey Haas,
            John Heasley, Gunter van de Velde, Marco Marzetti, Eduardo Ascenco
            Reis, Mark Schouten, Paul Hoogsteder, Martijn Schmidt, Greg
            Hankins, 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, Peter van Dijk, Julian
            Seifert, Tom Petch, Tom Scholl, Arjen Zonneveld, Remco van Mook,
            Adam Chappell, Jussi Peltola, Kristian Larsson, Markus Hauschild,
            Richard Steenbergen, and David Freedman 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.6793"?>
      <?rfc include="reference.RFC.7606"?>
    </references>
    <references title="Informative References">
      <?rfc include="reference.RFC.4360"?>
      <?rfc include="reference.RFC.7300"?>
      <?rfc include="reference.RFC.7607"?>
      <?rfc include="reference.RFC.7454"?>
      <?rfc include="reference.RFC.7942"?>
    </references>


  </back>
</rfc>
