<?xml version="1.0" encoding="us-ascii"?>
<!DOCTYPE rfc PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/rfc2629.dtd"[
  <!ENTITY RFC1997 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1997.xml">
  <!ENTITY RFC2119 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
  <!ENTITY RFC2629 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
  <!ENTITY RFC3065 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3065.xml">
  <!ENTITY RFC3552 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3552.xml">
  <!ENTITY RFC3640 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3640.xml">
  <!ENTITY RFC4271 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4271.xml">
  <!ENTITY RFC4360 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4360.xml">
  <!ENTITY RFC7606 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7606.xml">
  <!ENTITY RFC8092 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8092.xml">
  <!ENTITY RFC8126 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8126.xml">
  <!ENTITY RFC8174 PUBLIC '' "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml">
  <!ENTITY I-D.ietf-idr-wide-bgp-communities SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-idr-wide-bgp-communities.xml">
  <!ENTITY I-D.hares-idr-fsv2-more-ip-actions SYSTEM "https://xml.resource.org/public/rfc/bibxml3/reference.I-D.hares-idr-fsv2-more-ip-actions.xml">  
]>
<?xml-stylesheet type='text/xsl'
href="http://greenbytes.de/tech/webdav/rfc2629xslt/rfc2629.xslt" ?>
<?rfc strict="no" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?rfc rfcedstyle="yes"?>
<rfc category="std"
     docName="draft-hares-idr-bgp-community-attribute-01"
     ipr="trust200902"
     obsoletes=""
     updates=""
     submissionType="IETF"
     xml:lang="en">
<front>

<title abbrev="BGP Community Container">
BGP Community Container Attribute
</title>

<author fullname='Susan Hares' initials='S' surname='Hares' role="editor">
    <organization>Huawei</organization>
    <address>
        <postal>
            <street></street>
            <city>Ann Arbor</city>
            <region>MI</region>
            <code>48176</code>
            <country>USA</country>
        </postal>
        <email>shares@ndzh.com</email>
    </address>
</author>

 <date year="2024" />
 <area>Routing Area</area>
 <workgroup>IDR Working Group</workgroup>
<keyword>I-D</keyword>
<keyword>Internet-Draft</keyword>
<keyword>IDR</keyword>
<keyword>BGP</keyword>

<abstract>
<t>Route tagging plays an important role in external
BGP (RFC4271) relations for communicating various 
routing policies between peers. It is also a common best 
practice among operators to propagate various additional 
information about routes intra-domain. The most common tool 
used today to attach various information about
routes is through the use of BGP communities 
(original, extended or large). 
</t>
<t>This document defines a new flexible Community encoding in 
a BGP Attribute that enhances what can be accomplished with BGP communities. 
Three initial use cases for this are flow specification version 2 (FSv2) actions, 
routing policy distribution (rpd) actions, and wide communities. 
</t>
</abstract>
</front>
<middle>
<section title="Introduction">

<t><xref target="RFC1997"></xref> defines the BGP Community Attribute for 
BGP <xref target="RFC4271"></xref>.  This attribute is used 
as a tool to carry additional information in BGP 
routes which may help to automate peering administration. The BGP 
Communities Attribute consists of a set of one or more four-octet 
values, where each specifies a different community. Except for
two reserved ranges, the encoding of community values mandates
that the first two octets are to contain the Autonomous System
number, with the next two octets containing some locally defined
opaque value.</t>

<t>Since the introduction of <xref target="RFC1997"/>, numerous additional
mechanisms have been introduced to provide BGP Community-like functionality.
Each of these mechanisms introduce a new syntax, typically covered by its
encoding with the BGP Path Attribute that defines it, and a semantic
space.</t>

<t>The definition of a new BGP Path Attribute, with the ability
to contain locally defined parameters enhances the current 
level of network policies, as well as simplify BGP policy 
management. The proposed encoding facilitates the delivery of 
new network services without a need to define a new BGP extension 
each time.</t>

<t>When defining any new type of tool there is always a
unique opportunity to specify a subset of well recognized
behaviors. Lists of the current most commonly used BGP communities,
as well as provision for a new registry for future definitions
will be contained in a separate document.</t>

<section title="Requirements Language">
    <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>

<section title="Protocol Summary">

<t>This specification defines a new BGP Path Attribute, the BGP Community
Container.  It carries a series of BGP Community Container types, each
prefaced with the BGP Community Container Common Header.</t>

<t> The original version of this memo was created as part of  
<xref target="I-D.ietf-idr-wide-bgp-communities"> </xref> for the 
BGP Community Container Common Header. This 
draft splits the BGP Community Container Common Header 
away from the Wide Communmity  header. 
</t> 

<section title="BGP Community Container Common Header">
   <t>The BGP Community Container Common Header permits Community-like
	attributes to be grouped under a single BGP Path Attribute.  This
	provides a hierarchy for future Community-like features.  It permits
	implementations without knowledge of a specific Community
	Container's format to address that Community Container by its code
	point.  It also permits common enforcement of the Community
	Container's transitivity across AS boundaries without need for the
	implementation to understand a specific Container's implementation.
	</t>

	<t>This document defines the Community common container and 
	proposes a registry for Common Container types. The following 
	Container initial values for the container type are defined: 
	<list>
	<t> Wide Community Container Type (0x01)
     (<xref target="I-D.ietf-idr-wide-bgp-communities"></xref>
	</t>
	<t>FSv2 Action Container type (0x02) 
	 (<xref target="I-D.hares-idr-fsv2-more-ip-actions"></xref>
    </t>
	</list>
	</t> 
</section> 
<section title="Propagation of BGP Community Containers">
	    <t>Propagation of BGP Community Containers is scoped to the administrative 
	    boundary. The definition of an administrative boundary consists of arbitrary set 
	    of connected ASes, possibly under control of a single entity. How such an 
	    administrative boundary is determined is out of scope of this document.</t>
</section>

</section>

<section title="BGP Community Container Attribute">

<t>This document defines a new BGP Path Attribute, the BGP Community
Container.  The attribute type code is TBD1 (suggest using 34, existing 
BGP Community Path Attribute).</t>

<t>The BGP Community Container attribute is an optional, transitive BGP
attribute, and may be present only once in the BGP UPDATE message.</t>

<t>The attribute contains a set of typed containers. Any given
container type may appear multiple times, unless that container
type's definition specifies otherwise. Each such container can have 
a unique propagation scope and can be subject to local filtering.</t>

<section title="BGP Community Container Attribute Common Header" 
anchor="container_header_def">

<figure anchor="container_header" title="Common container header">
<preamble>Containers always start with the following common header:
</preamble>

<artwork align='center'>
 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              |    Flags  |T|C|   Reserved    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
</figure>

<t>The BGP Community Container Common Header contains following encoding:

   <list style="hanging" hangIndent="4">
     <t hangText="Container Type:"><vspace/>
     2 octets with the type of community container.  The value 
	 zero is reserved. </t>
     <t hangText="Flags:"><vspace/> 
     Flags control common behavior including the transitivity of the
     Container. </t>
     <t hangText="Length:"><vspace/>
     Length of the Container header and content.
     </t>
   </list>
 </t>
	<t>This document defines the Community common container and 
	proposes a registry for Common Container types. The following 
	Container initial values for the container type are defined: 
	<list style="symbols">
	<t> Wide Community Container Type (0x00)
     (<xref target="I-D.ietf-idr-wide-bgp-communities"></xref>
	</t>
	<t>FSv2 Action Container type (0x01) 
	 (<xref target="I-D.hares-idr-fsv2-more-ip-actions"></xref>
    </t>
     <t>Routing Policy Type (0x02) {draft-ietf-idr-rpd)
    </t>
	</list>
	</t> 
<t> See the <xref target="iana_considerations"/> for information on additional type
registration policies.</t>

  <texttable title="Flags" anchor='bitdefs'>
    <ttcol align='center'>Bit</ttcol>
    <ttcol align='center'>Value</ttcol>
    <ttcol align='left'>Meaning</ttcol>
    	
	<c>T</c><c>0</c><c>Not Transitive across administrative boundary.</c>
	<c></c><c>1</c><c>Transitive across AS and administrative boundary.</c>
	<c>C</c><c>0</c><c>Not transitive across confederation boundaries.</c>
	<c></c><c>1</c><c>Transitive across confederation boundaries.</c>
	<c>3..7</c><c>-</c>
	<c>RESERVED - MUST be zero when originated and SHOULD be ignored
           upon receipt.</c>
		
    <postamble></postamble>
  </texttable>

<t>Flags are defined globally and apply to all container types.</t> 

<t>Bit 0 (T bit) Transitivity bit:

<list><t>
When not set (value 0), the community in the container is not transitive across
administrative boundary.</t>

<t>When set (value 1), the community in the container is transitive across all 
administrative boundaries.</t>
</list></t> 

<t>Bit 1 (C bit) BGP Confederation <xref target="RFC3065"/> bit:

<list><t>The confederation bit is used to manage the propagation scope of a given
container across Member-AS confederation boundary.</t>

<t>When not set (value 0) community is not transitive across confederation Member-AS 
boundary. When set (value of 1) indicates that community in a given container is 
transitive across Member-AS confederation boundary.</t>
</list></t> 

<t>The Reserved field MUST be set to zero when originated and SHOULD be ignored 
upon receipt.</t>

<t>The Length field represents the total length (in octets) of a given container 
including its header.</t>

</section>

</section>


<section title="Operational Considerations">

<t>Multiple mechanisms exist for an operator to propagate actions into the
network.  Besides BGP Wide Communities, an operator can use the BGP
Community Attribute <xref target="RFC1997"/>, the BGP Extended Communities Attribute
<xref target="RFC4360"/>, or the BGP Large Communities Attribute <xref target="RFC8092"/>
to achieve similar objectives.  Care should be taken when using more than one of
these tools.  The interaction between the different community attributes
is out of the scope of this document.</t>

</section>

<section title="Error Handling" anchor="error_handling">

<section title="General Error Handling for BGP Community Containers">
<t>The "treat as withdraw" behavior <xref target="RFC7606"/> MUST be executed
for any malformed Community Containers, including their contents or presence 
of the BGP Community Container Attribute or given community TLV more then 
once in the BGP Update Message.</t>

</section>
</section>

<section title="Security considerations ">
<t>The security considerations for <xref target="RFC1997">BGP
Communities</xref> or <xref target="RFC4360">BGP Extended
Communities</xref> apply to BGP Community Containers.</t>

<t>Transitive BGP Community Container communities could unintentionally
spread far from their origin. If a router receives many routes from multiple
sources on the Internet with different communities, it could cause
significant processing burden or memory usage. To prevent this, it is 
RECOMMENDED that routers should be configured to strip unexpected 
communities from received routes.</t>
</section>

<section title="IANA Considerations" anchor="iana_considerations">

<t>All Registration Policies contained in this document are based on 
<xref target="RFC8126"/>.</t>

<section title="BGP Community Container Attribute">

<t>This document defines a new BGP Path Attribute called BGP
Community Container Attribute. For this new type IANA is requested to
allocate a new value in the corresponding registry:</t>

<t>Registry Name: BGP Path Attributes </t>

<t>This document makes the following assignments for the optional,
transitive BGP Community Container Attribute:</t>
<t>
<figure>
<artwork>
  Name                                 value   reference 
  ----                                 ------  -------------
  BGP Community Container Attribute    TBD1    [this document]
</artwork>
</figure>
</t>
<t>Since the original community definition used Attribute value 
was assigned via the original work, this work should  
reuse this attribute value. 
</t>
</section>

<section title="BGP Community Container Values">

<t> This document requests IANA to define and maintain a new registry
named: "BGP Community Container Types".</t>

<t>The pool of: 0x0000..0xFFFF has been defined for its allocations.
</t>
<t>
<figure>
<preamble>Registration procedures:</preamble>
<artwork>
                   0x0000 : Reserved.
            0x0001-0x00FF : IETF Review.
            0x0100-0xFF00 : First Come First Served.
            0xFF01-0xFFFE : Experimental Use.
                   0xFFFF : Reserved.
</artwork></figure>
</t>
<t>
<figure>
<preamble>Values:</preamble>
<artwork>
	0x0001 : BGP FSv2 Actions     [this document]
	                              [draft-hares-ip-more-actions] 
								  
    0x0002 : BGP routing policy   [this document] 
	         distribution         [draft-ietf-idr-rpd] 	
			 
    0x0003 : BGP Wide Communities [this document] 
                                  [draft-ietf-idr-wide-bgp-communities] 	
</artwork>
</figure>
</t>
</section>
</section> 

<section title="Contributors">

<t>The following people contributed significantly to the
original Community attribute for the wide community. 
<figure>
<preamble></preamble>
<artwork>
Shintaro Kojima
OTEMACHI 1st. SQUARE EAST TOWER, 3F
1-5-1, Otemachi,
Chiyoda-ku, Tokyo 100-0004
Japan
Email: koji@mfeed.ad.jp
</artwork>
<postamble></postamble>
</figure>

<figure>
<preamble></preamble>
<artwork>
Juan Alcaide
Cisco Systems
Research Triangle Park, NC
United States
Email: jalcaide@cisco.com
</artwork>
<postamble></postamble>
</figure>

<figure>
<preamble></preamble>
<artwork>
Burjiz Pithawala
Cisco Systems
170 West Tasman Dr
San Jose, CA
United States
Email: bpithaw@cisco.com
</artwork>
<postamble></postamble>
</figure>

<figure>
<preamble></preamble>
<artwork>
Saku Ytti
TDC Oy
Mechelininkatu 1a
00094 TDC
Finland
Email: ytti@tdc.net
</artwork>
<postamble></postamble>
</figure>

<figure>
<preamble></preamble>
<artwork>
Shane Amante
Apple, Inc.
1 Infinite Loop
Cupertino, CA, 
95014
USA
amante@apple.com 
</artwork>
<postamble></postamble>
</figure>

<figure>
<preamble></preamble>
<artwork>
Shane Amante
Paul Jakma
Huawei Ireland Research Centre
Georges Court,Dublin 
D02 R156
Ireland
paul@jakma.org
</artwork>
<postamble></postamble>
</figure>

<figure>
<preamble></preamble>
<artwork>
Andrew Lange 
Nokia 
777 E. Middlefield Road 
Mountain View, CA
94043
USA 
andrew.lange@nokia.com
</artwork>
<postamble></postamble>
</figure>

<figure>
<preamble></preamble>
<artwork>
Bruno Decraene 
Orange 
bruno.decraene@orange.com
</artwork>
<postamble></postamble>
</figure>

<figure>
<preamble></preamble>
<artwork>
Robert Raszuk 
Arrcus 
2077 Gateway Place
San Jose, CA
95110
USA 
robert@raszuk.net
</artwork>
<postamble></postamble>
</figure>

<figure>
<preamble></preamble>
<artwork>
Jeffrey Haas 
Juniper Networks 
1194 N.Mathilda Ave 
Sunnyvale, CA 
94089 
USA  
jhaas@juniper.net 
</artwork>
<postamble></postamble>
</figure>
</t>
</section>

<section title="Acknowledgments">
<t>This document owes draft-lange-flexible-bgp-communities a debt
for the inspiration of many features contained herein.</t>
</section>

</middle>

<back>
<references title="Normative References">
&RFC2119;
&RFC4271;
&RFC7606;
&RFC8126;
&RFC8174;
</references>

<references title="Informative References">
&RFC1997;
&RFC3065;
&RFC4360;
&RFC8092;
&I-D.ietf-idr-wide-bgp-communities; 
&I-D.hares-idr-fsv2-more-ip-actions; 
</references>

</back>
</rfc>

