<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
    which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
    There has to be one entity for each item to be referenced.
    An alternate method (rfc include) is described in the references. -->

<!ENTITY RFC2119 SYSTEM
  "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2629 SYSTEM
  "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY RFC3552 SYSTEM
  "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3552.xml">
<!ENTITY RFC4271 SYSTEM
  "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4271.xml">
<!ENTITY RFC5065 SYSTEM
  "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5065.xml">
<!ENTITY RFC4486 SYSTEM
  "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4486.xml">
<!ENTITY RFC4724 SYSTEM
  "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4724.xml">
<!ENTITY RFC7606 SYSTEM
  "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7606.xml">  
  <!ENTITY RFC3392 SYSTEM
  "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3392.xml">
]>

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs),
    please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that
    most I-Ds might want to use.
    (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space
    (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std" docName="draft-ietf-idr-bgp-attribute-announcement-00.txt"
ipr="pre5378Trust200902">
  <!-- category values: std, bcp, info, exp, and historic
    ipr values: full3667, noModification3667, noDerivatives3667
    you can add the attributes updates="NNNN" and obsoletes="NNNN"
    they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>

    <title abbrev="Constrain Attribute announcement within BGP">
    Constrain Attribute announcement within BGP</title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Keyur Patel" initials="K"
            surname="Patel">

      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street>170 W. Tasman Drive</street>

          <city>San Jose</city>

          <region>CA</region>

          <code>95134</code>

          <country>USA</country>
        </postal>

        <email>keyupate@cisco.com</email>

      </address>
    </author>


    <author fullname="James Uttaro" initials="J"
            surname="Uttaro">

      <organization>ATT</organization>

      <address>
        <postal>
          <street>200 S. Laurel Ave</street>

          <city>Middletown</city>

          <region>NJ</region>

          <code>07748</code>

          <country>USA</country>
        </postal>

        <email>uttaro@att.com</email>

      </address>
    </author>

    <author fullname="Bruno Decraene" initials="B"
            surname="Decraene">

      <organization>Orange</organization>

      <address>
        <postal>
          <street></street>

          <city></city>

          <region></region>

          <code></code>

          <country></country>
        </postal>

        <email>bruno.decraene@orange.com</email>

      </address>
    </author>

    <author fullname="Wim Henderickx" initials="W"
            surname="Henderickx">

      <organization>Alcatel Lucent</organization>

      <address>
        <postal>
          <street>Copernicuslaan 50</street>

          <city>Antwerp</city>

          <region></region>

          <code>2018</code>

          <country>Belgium</country>
        </postal>

        <email>wim.henderickx@alcatel-lucent.com</email>

      </address>
    </author>

    <author fullname="Jeff Haas" initials="J"
            surname="Haas">

      <organization>Juniper Networks</organization>

      <address>
        <postal>
          <street>1194 N. Mathilda Ave.</street>

          <city>Sunnyvale</city>

          <region>CA</region>

          <code>94089</code>

          <country>USA</country>
        </postal>

        <email>jhaas@juniper.net</email>

      </address>
    </author>

    <date year="2016" />

    <!-- Meta-data Declarations -->

    <area>General</area>

    <workgroup>Network Working Group</workgroup>

    <keyword>IDR</keyword>

    <!-- Keywords will be incorporated into HTML output
        files in a meta tag but they have no effect on text or nroff
        output. If you submit your draft to the RFC Editor, the
        keywords will be used for the search engine. -->

<abstract>
<t>
[RFC4271] defines four different categories of BGP Path attributes. The different
Path attribute categories can be identified by the attribute flag values. These flags
help identify if an attribute is optional or well-known, Transitive or
non-Transitive, Partial, or of an Extended length type. BGP attribute
announcement depends on whether an attribute is a well-known or optional,
and whether an attribute is a transitive or non-transitive. BGP implementations
MUST recognize all well-known attributes. The well-known attributes are 
always Transitive. It is not required for BGP implementations to recognise all the
Optional attributes. The Optional attributes could be Transitive or Non-Transitive.
BGP implementations MUST store and forward any Unknown Optional Transitive attributes
and ignore and drop any Unknown Optional Non-Transitive attributes.
</t>

<t>
Currently, there is no way to confine the scope of Path attributes within
a given Autonomous System (AS) or a given BGP member-AS in Confederation. This draft 
defines attribute extensions that help confine the scope of Optional attributes
within a given AS or a given BGP member-AS in Confederation
</t>

</abstract>

  </front>

  <middle>

<section anchor="introduction" title="Introduction">
<t>
<xref target="RFC4271"/> defines four different categories of BGP Path attributes. 
The different Path attribute categories can be identified by the 
attribute flag values. These flags help identify if an attribute 
is optional or well-known, Transitive or non-Transitive, Partial, 
or of an Extended length type. BGP attribute
announcement depends on whether an attribute is a well-known or 
optional, and whether an attribute is a transitive or non-transitive. 
BGP implementations MUST recognize all well-known attributes. 
The well-known attributes are always Transitive. It is not required 
for BGP implementations to recognise all the Optional attributes. The 
Optional attributes could be Transitive or Non-Transitive.
BGP implementations MUST store and forward any Unknown Optional 
Transitive attributes and ignore and drop any Unknown Optional 
Non-Transitive attributes.
</t>

<t>
Optional Transitive attributes help
foster partial deployments of newer BGP features. Alternatively,
Optional Non-Transitive attributes are drop by BGP speakers that
do not recognise the attribute. The optional attributes in their
current definition  do not provide any automated attribute 
level filtering to control the scope of announcements within a given
AS or a BGP member-AS in Confederation. Scoped announcements of attributes may be
needed in certain scenarios. Announcing attributes beyond their intended 
scope MAY result in breakage of functionalities or leaking of any
undesired information. 
</t>

<t>
This draft defines new attribute extensions that help confine 
the scope of Path attributes; in particular Optional attributes 
within a given Autonomous System or a given BGP member-AS in confederation or
a given Administrative domain. Note that "BGP Member-AS in Confederation" and 
"Member-AS" are used entirely interchangeably thoughout this document.
</t>

<t>
As part of new attribute extensions, this draft defines a
new attribute format to incorporate the scoping information.
The new attribute format applies to all the new attribute types that
will be defined moving forward.
The newly defined attribute scoping is specifically for newer attributes
that explicitly state their use of such scoping bits. These newly defined
attributes would be either an Optional transitive attributes (recognized
and unrecognized) or any recognized optional non-transtitive attributes.
For any well-known attributes or unrecognized optional non-transtive
attributes, the standard rules mentioned in <xref target="RFC4271"></xref>  applies.


</t>

      <section 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">RFC 2119</xref>.</t>
      </section>
    </section> <!-- for Introductions section -->


<section title="Path Attribute Format">
<t>
  <xref target="RFC4271"></xref> defines path attribute format as a triple
  [attribute type, attribute length, attribute value] of a variable
  length. The attribute value field is of a variable length. This
  draft augments the path attribute value field and reserves first four bytes
  of path attribute value field as path attribute extended flags field. All
  the path attributes carrying extended flags field will have a minumum attribute
  length of 4 bytes. The augmented path attribute format applies to all 
  the current undefined attributes types  (30-39, 41-127, 129-254). Any attribute
  specific data follows the path attribute extended flags field.
</t>
</section>

<section title="Extended Path Attribute Flags">
<t>
<xref target="RFC4271"></xref> defines four type of BGP Path attributes
using the attribute Flags field as follows:
</t>
<t>
      <figure align="center">
        <artwork align="left"><![CDATA[
 Path Attribute flags:

             0 1 2 3 4 5 6 7
            +-+-+-+-+-+-+-+-+
            |O|T|P|E|   R   |   (R = MUST Be Zero)
            +-+-+-+-+-+-+-+-+

 
            O    Optional or a Well-known as defined in [RFC4271]

            T    Transitive or Non-Transtive as defined in [RFC4271]

            P    Partial as defined in [RFC4271]

            E    Extended Length type as defined in [RFC4271]

            ]]></artwork>
      </figure>
</t>

<t>
This draft introduces new Flags field known as Extended Path Attribute Flags. The
Extended Path Attribute Flags field is defined as first 4 bytes of the 
Path Attribute's value field. This draft introduces three new Extended 
Path Attributes flags as follows:
</t>
<t>
      <figure align="center">
        <artwork align="left"><![CDATA[
 Path Attribute flags:


      0               1               2               3
      0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        R                                  |C|A|
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     (R = MUST Be Zero)
  

 
            A    AS Wide Scope

            C    Member-AS in Confederation Scope

            M    Multi-AS Scope
            ]]></artwork>
      </figure>
</t>
<t>
The first least significant bit ("A") is defined as the AS Wide Scope bit, 
which is used to indicate that an optional attribute cannot be announced 
outside a given AS boundary. When set, the given optional attribute MUST be filtered by
the sending BGP speaker at
an AS boundary. If the "A" bit is set then the "O" bit defined in BGP Path
Attribute Flag field
MUST be set.
Otherwise a BGP speaker MUST consider an attribute as an error and malformed.
</t>

<t>
The second least significant bit ("C") is defined as the Member-AS Scope bit, 
which is used to indicate that an optional attribute cannot be announced
outside a given Member-AS boundary. When set, the given optional attribute MUST 
be filtered by the sending BGP speaker at a Member-AS boundary. 
If the "C" bit is set then the "O" bit defined in BGP Path Attribute Flag field
MUST be set. 
Otherwise a BGP speaker MUST consider an attribute as an error and malformed.
"C" bit SHOULD only be set when an Autonomous System is configured as a BGP
Confederation. A BGP speaker MUST not transmit an attribute with "C" bit set
to peers that are not members of the local confederation.
 Otherwise a BGP speaker MUST consider an attribute as an error
and malformed.
</t>

<t>
Both the first and the second most least significant bit together is defined as the
Multiple AS Scope within a Single Administration. When both the first and the second
bits are set, optional attribute can be traversed across multiple AS and filtered
by the sending BGP speaker at the Administration boundary.
</t>

<t>
The handling of malformed attributes SHOULD follow the procedures mentioned in
<xref target="RFC7606"/>.
For any malformed attribute that is handled by the "attribute discard" instead
of the "treat-as-withdraw" approach, it is critical to consider the potential
impact. In particular, if the attribute has an impact on the route selection
or installation process, then the presumption is that "attribute discard" is
unsafe and "treat-as-withdraw" procedure SHOULD be considered. Otherwise,
"attribute discard" procedure SHOULD be used.
</t>
</section>

<section anchor="Operation" title="Operation">
<t>
When originating a well-known Path attribute, a BGP speaker MUST set
both the AS Wide Scope and Member-AS Scope bit to 0.
When originating an optional Path attribute, a BGP speaker SHOULD use and set AS Wide Scope
bit if it wants to restrict the announcement within a AS. Similarly, when originating
an optional Path attribute, a BGP speaker SHOULD use and set Member-AS Scope bit
if it wants to restrict the announcement with a Member-AS. When originating an optional Path attribute, a BGP speaker SHOULD use and set both Member-AS Scope bit and AS Wide Scope bit if it wants to restrict the announcement within a single administration composed of multiple ASes. 
</t>

<t>
When a BGP speaker receives or originates a route that includes any well-known Path attribute with either
a AS Wide Scope bit set or a Member-AS Scope bit set then it SHOULD consider the attribute as malformed. The handling of
malformed attributes SHOULD follow the procedures mentioned in <xref target="RFC7606"/>.
</t>
<t>
When a BGP speaker receives or originates a route that includes an optional Path attribute with a AS Wide Scope bit set and a Member-AS Scope bit cleared,
it MUST remove that Path attribute when announcing the route to any of its EBGP speakers.
To deal with partial deployments it is suggested that a 
BGP speaker SHOULD quietly ignore and not pass along to other BGP peers
any Path attribute received from its EBGP peers with a AS Wide Scope bit set and
a Member-AS Scope bit cleared unless configured explicitly 
using a policy.
</t>

<t>
When a BGP speaker receives or originates a route that includes an optional Path attribute 
with a Member-AS Scope bit set and a AS Wide Scope bit cleared, it MUST remove that Path attribute when announcing 
the route to any of its BGP speakers outside its Member-AS.
To deal with partial deployments 
it is suggested that a BGP speaker SHOULD quietly ignore 
and not pass along to other BGP peers
any Path attribute received from its BGP peers with a Member-AS Scope bit set and
a AS Wide Scope bit cleared unless configured explicitly 
as a policy.
</t>

<t>
When a BGP speaker receives or originates a route with an optional path attribute that 
has both, the AS Wide Scope bit set and the 
Member-AS Scope bit set, it MUST announce it to all its EBGP peers within its
administrative domain. Such an attribute MUST be filtered when the attribute is announced
outside its admistrative domain. 
The BGP peering boundaries for an admistrative domain is a matter of a
policy and is set by the operators.
</t>
<t>
Any implementation that supports the extensions defined in this draft MUST support the
Enhanced Error handling defined in <xref target="RFC7606"/>. Enhanced
Error handling allows any error condition that MAY occur during the 
parsing and processing of
new attribute flags to be treated according to the procedures of 
<xref target="RFC7606"/>. Furthermore, it is assumed that the BGP
network is enabled with Enhanced Error Handling feature. This allows 
BGP speakers not implementing
the draft extensions to apply the procedures of <xref target="RFC7606"/>.
</t>
</section>


    <!-- Possibly a 'Contributors' section ... -->

    <section anchor="IANA" title="IANA Considerations">
<t>
  This draft define a new path attribute format for all undefined attribute types. 
  We request IANA to record the use of new path attribute format for the following
  undefined attribute types (30-39, 41-127, 129-254).
</t>

<t>
This draft defines two new Extended Path attribute flags. We request IANA
to create a new registry for BGP Extended Path Attribute Flags under BGP
Path attributes as follows:
</t>

<t>
Under "Border Gateway Protocol (BGP) Parameters" registry,
"BGP Extended Path Attributes Flags" Reference: draft-keyupate-idr-bgp-attribute-annoucement-01
Registration Procedures as follows:
</t>

<t>

      <figure align="center">
        <artwork align="left"><![CDATA[
Bit Value (LSB) Type                       Reference
      1         AS Wide Scope              Current Draft
      2         Member-AS in Confederation Current Draft
            ]]></artwork>
      </figure>
</t>
    </section>

    <section anchor="Security" title="Security Considerations">
<t>
This extension to BGP does not change the underlying security issues
inherent in the existing <xref target="RFC4724"/> and <xref
target="RFC4271"/>.
</t>

<section anchor="Acknowledgements" title="Acknowledgements">
<t>
The authors would like to thank John Scudder, Jakob Heitz, Shyam Seturam, Juan Alcaide
and Acee Lindem for the review and comments.
</t>
</section>


    </section>
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
    1. define an ENTITY at the top, and use "ampersand character"RFC2629;
        here (as shown)
    2. simply use a PI
        "less than character"?rfc include="reference.RFC.2119.xml"?> here
        (for I-Ds:
          include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

    Both are cited textually in the same manner: by using xref elements.
    If you use the PI option, xml2rfc will, by default, try to find included
    files in the same directory as the including file. You can also define
    the XML_LIBRARY environment variable
    with a value containing a set of directories to search.  These can be
    either in the local
    filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <references title="Normative References">
      <!--?rfc include=
      "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->
      &RFC2119;

      &RFC4271;

      &RFC7606;
    </references>

    <references title="Information References">
      &RFC3392;

      &RFC4486;

      &RFC4724;


    </references>

    <!-- Change Log

v00 2008-10-01  KP    Initial version
    -->
  </back>
</rfc>
