<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.3) -->
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-idr-bgp4-rfc4271bis-05" category="std" consensus="true" submissionType="IETF" obsoletes="4271, 4486, 6286, 6608, 8212, 9072, 9687" updates="7606, 7607, 9774" tocDepth="4" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <front>
    <title abbrev="BGP-4">A Border Gateway Protocol 4 (BGP-4)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-idr-bgp4-rfc4271bis-05"/>
    <author initials="Y." surname="Rekhter" fullname="Yakov Rekhter">
      <organization>Retired</organization>
      <address>
        <email>yakov@juniper.net</email>
      </address>
    </author>
    <author initials="T." surname="Li" fullname="Tony Li">
      <organization>HPE</organization>
      <address>
        <email>tony.li@tony.li</email>
      </address>
    </author>
    <author initials="S." surname="Hares" fullname="Susan Hares">
      <organization>Huawei</organization>
      <address>
        <email>skh@ndzh.com</email>
      </address>
    </author>
    <author initials="J." surname="Scudder" fullname="John Scudder" role="editor">
      <organization>HPE</organization>
      <address>
        <email>jgs@hpe.com</email>
      </address>
    </author>
    <date year="2026"/>
    <area>rtg</area>
    <workgroup>idr</workgroup>
    <keyword>BGP-4</keyword>
    <keyword>routing</keyword>
    <abstract>
      <?line 109?>
<t>This document discusses the Border Gateway Protocol (BGP), which is
an inter-Autonomous System routing protocol.</t>
      <t>The primary function of a BGP-speaking system is to exchange network
reachability information with other BGP systems.  This network
reachability information includes information on the list of
Autonomous Systems (ASes) that reachability information traverses.
This information is sufficient for constructing a graph of AS
connectivity for this reachability from which routing loops may be
pruned, and, at the AS level, some policy decisions may be enforced.</t>
      <t>BGP-4 provides a set of mechanisms for supporting Classless Inter-
Domain Routing (CIDR).  These mechanisms include support for
advertising a set of destinations as an IP prefix, and eliminating
the concept of network "class" within BGP.  BGP-4 also introduces
mechanisms that allow aggregation of routes, including aggregation of
AS paths.</t>
      <t>This document obsoletes RFC 4271 and many other RFCs. It updates
RFC 7606, RFC 7607 and RFC 9774 by subsuming their functionality as 
relates to RFC 4271.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-idr-bgp4-rfc4271bis/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        IDR Working Group mailing list (<eref target="mailto:idr@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/idr/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/idr/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-idr/RFC4271bis"/>.</t>
    </note>
  </front>
  <middle>
    <?line 132?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Border Gateway Protocol (BGP) is an inter-Autonomous System
routing protocol. This version of BGP, BGP-4, was first documented
in <xref target="RFC1771"/>, which was superceded by <xref target="RFC4271"/>, which in 
turn is obsoleted by this document.</t>
      <t>The primary function of a BGP-speaking system is to exchange network
reachability information with other BGP systems.  This network
reachability information includes information on the list of
Autonomous Systems (ASes) that reachability information traverses.
This information is sufficient for constructing a graph of AS
connectivity for this reachability, from which routing loops may be
pruned and, at the AS level, some policy decisions may be enforced.</t>
      <t>BGP-4 provides a set of mechanisms for supporting Classless Inter-
Domain Routing (CIDR) <xref target="RFC1518"/> <xref target="RFC1519"/>.  These mechanisms include
support for advertising a set of destinations as an IP prefix and
eliminating the concept of network "class" within BGP.  BGP-4 also
introduces mechanisms that allow aggregation of routes, including
aggregation of AS paths.</t>
      <t>Routing information exchanged via the procedures documented here supports
only the destination-based forwarding paradigm, which assumes that a router
forwards a packet based solely on the destination address carried in the IP
header of the packet.  This, in turn, reflects the set of policy decisions
that can (and cannot) be enforced using BGP.  BGP can support only those
policies conforming to the destination-based forwarding paradigm.</t>
      <t>Since its first publication, BGP-4 has been extended by many other
specifications. Notable extensions include <xref target="RFC4760"/>, which generalizes
BGP-4 to allow support for advertising routing information of address
families beyond IP Version 4 as documented in the present specification, and
IP Version 6 in particular.</t>
      <section anchor="definitions">
        <name>Definition of Commonly Used Terms</name>
        <t>This section provides definitions for terms that have a specific
meaning to the BGP protocol and that are used throughout the text.</t>
        <dl>
          <dt>Adj-RIB-In:</dt>
          <dd>
            <t>The Adj-RIBs-In contain unprocessed routing information that 
has been advertised to the local BGP speaker by its peers.</t>
          </dd>
          <dt>Adj-RIB-Out:</dt>
          <dd>
            <t>The Adj-RIBs-Out contain the routes for advertisement to specific 
peers by means of the local speaker's UPDATE messages.</t>
          </dd>
          <dt>AFI:</dt>
          <dd>
            <t>Address Family Identifier, as defined in <xref target="RFC4760"/>. Often used
in conjunction with SAFI (q.v.) as "AFI/SAFI", which collectively
are, in effect, the type code that defines an NLRI encoding in 
RFC 4760.</t>
          </dd>
          <dt>Autonomous System (AS):</dt>
          <dd>
            <t>The classic definition of an Autonomous System is a set of routers
under a single technical administration, using an interior gateway
protocol (IGP) and common metrics to determine how to route
packets within the AS, and using an inter-AS routing protocol to
determine how to route packets to other ASes.  Since this classic
definition was developed, it has become common for a single AS to
use several IGPs and, sometimes, several sets of metrics within an
AS.  The use of the term Autonomous System stresses the fact that,
even when multiple IGPs and metrics are used, the administration
of an AS appears to other ASes to have a single coherent interior
routing plan, and presents a consistent picture of the
destinations that are reachable through it.</t>
          </dd>
          <dt>BGP Identifier:</dt>
          <dd>
            <t>A 4-octet, unsigned, non-zero integer that should be unique within 
an AS.  The value of the BGP Identifier for a BGP speaker is
determined on startup and is the same for every local interface and
every BGP peer.</t>
          </dd>
          <dt>BGP speaker:</dt>
          <dd>
            <t>A router that implements BGP.</t>
          </dd>
          <dt>EBGP:</dt>
          <dd>
            <t>External BGP (BGP connection between external peers).</t>
          </dd>
          <dt>Export Policy:</dt>
          <dd>
            <t>A local policy to be applied in selecting the information contained
in the Adj-RIBs-Out. As described in <xref target="rib"/>, the Adj-RIBs-Out
contain information that has been selected for advertisement to other
BGP speakers.</t>
          </dd>
          <dt>External peer:</dt>
          <dd>
            <t>Peer that is in a different Autonomous System than the local
system.</t>
          </dd>
          <dt>Feasible route:</dt>
          <dd>
            <t>An advertised route that is available for use by the recipient.</t>
          </dd>
          <dt>IBGP:</dt>
          <dd>
            <t>Internal BGP (BGP connection between internal peers).</t>
          </dd>
          <dt>Internal peer:</dt>
          <dd>
            <t>Peer that is in the same Autonomous System as the local system.</t>
          </dd>
          <dt>IGP:</dt>
          <dd>
            <t>Interior Gateway Protocol - a routing protocol used to exchange
routing information among routers within a single Autonomous
System.</t>
          </dd>
          <dt>Import Policy:</dt>
          <dd>
            <t>A local policy to be applied to the information contained in the
Adj-RIBs-In. As described in <xref target="rib"/>, the Adj-RIBs-In contain
information learned from other BGP speakers, and the application of
the Import Policy results in the routes that will be considered in
the Decision Process by the local BGP speaker.</t>
          </dd>
          <dt>Legacy IPv4 Encoding:</dt>
          <dd>
            <t>Although this protocol can encode information about many different
address families, IPv4 (uniquely among all address families) has two
encodings available. The encoding specified in this document, which
places IPv4 prefixes in the Withdrawn Routes or Network Layer 
Reachability Information fields of the UPDATE message, is referred
to as the "legacy IPv4 encoding". Its use is discouraged; 
the preferred encoding is that specified in <xref target="RFC4760"/>.</t>
          </dd>
          <dt>Loc-RIB:</dt>
          <dd>
            <t>The Loc-RIB contains the routes that have been selected by the
local BGP speaker's Decision Process.</t>
          </dd>
          <dt>MP_REACH_NLRI:</dt>
          <dd>
            <t/>
          </dd>
          <dt>MP_UNREACH_NLRI:</dt>
          <dd>
            <t>Path attributes defined in <xref target="RFC4760"/> to allow NLRI of any 
AFI/SAFI (q.v.) to be announced and withdrawn, as well as 
next hops of any AFI/SAFI.</t>
          </dd>
          <dt>NLRI:</dt>
          <dd>
            <t>Network Layer Reachability Information. When used without 
modification, one of the IP address prefixes carried in the NLRI 
field of an UPDATE message. When the NLRI field itself is intended, 
it is written as such.</t>
          </dd>
          <dt>Recognized:</dt>
          <dd>
            <t>A path attribute, or other message type or part identified by a type
code, is said to be "recognized" if the local implementation
contains support for processing it according to its type code.</t>
          </dd>
          <dt>Route:</dt>
          <dd>
            <t>A unit of information that pairs a set of destinations with the
attributes of a path to those destinations.  The set of
destinations are systems whose IP addresses are contained in one
IP address prefix carried in the Network Layer Reachability
Information (NLRI) field of an UPDATE message.  The path is the 
information reported in the path attributes field of the same
UPDATE message.</t>
          </dd>
          <dt>RIB:</dt>
          <dd>
            <t>Routing Information Base.</t>
          </dd>
          <dt>SAFI:</dt>
          <dd>
            <t>Subsequent Address Family Identifier, as defined in <xref target="RFC4760"/>. 
Often used in conjunction with AFI (q.v.) as "AFI/SAFI", which
collectively are, in effect, the type code that defines an NLRI
encoding in RFC 4760.</t>
          </dd>
          <dt>Unfeasible route:</dt>
          <dd>
            <t>A previously advertised feasible route that is no longer available
for use.</t>
          </dd>
          <dt>Unrecognized:</dt>
          <dd>
            <t>See Recognized.</t>
          </dd>
        </dl>
      </section>
      <section anchor="specification-of-requirements">
        <name>Specification of Requirements</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
        <?line -18?>

</section>
    </section>
    <section anchor="roadmap">
      <name>Roadmap</name>
      <t>TODO: This section is a work in progress. It's intended to become the
roadmap mentioned in GitHub issue #58.</t>
      <t>This document is the keystone in the Internet Standard TBD_STD_NUMBER,
but that Internet Standard includes other documents as well. The reader
should consider all documents that are part of that standard to be
required parts of a useful BGP implementation.</t>
      <t>Beyond that, the BGP protocol is made up of both this base
specification, and a multitude of other specifications that extend and
modify it. In the nature of things, the set of documents the reader
needs to consult to have a complete picture of the protocol will change
over time, but at time of writing the documents mentioned here were 
important to be aware of.</t>
      <t>The reader should also consult the "updated by" metadata, available at
time of writing at this document's IETF Datatracker page.</t>
      <section anchor="core-extensions">
        <name>Core Extensions</name>
        <t>Extensions listed in this section form part of the base BGP protocol at time
of writing. Because the document set that is considered core will change over
time, readers should consult TBD_STD_NUMBER for the current list of those 
documents that form part of the standard.</t>
        <dl>
          <dt><xref target="RFC4760"/>:</dt>
          <dd>
            <t>This document extends BGP to provide multiprotocol support.
The original BGP protocol, documented in the present specification,
supports only IPv4 routing. Support for RFC 4760 is required in
order to support IPv6 routing, and other useful features as well.
Even though RFC 4760 remains a separate document, AFI, SAFI, and
the MP_REACH_NLRI and MP_UNREACH_NLRI attributes are discussed 
herein because they are integral to the error handling procedures
in <xref target="errorhandling"/>.</t>
          </dd>
          <dt><xref target="RFC6793"/>:</dt>
          <dd>
            <t>This document extends BGP to provide support for four octet 
autonomous system numbers. The present specification documents
only the original two octet format, but references RFC 6793 
where relevant. Implementors should be aware that four octet
support is considered the preferred mode of operation, while the
two octet mode documented here is for backward compatibility.</t>
          </dd>
        </dl>
        <!-- Editor's note: This section is here because I moved the Acknowledgements to
the end, which is the more normal place - but that results in all the
sections being renumbered, and I would prefer that Section 9 remain Section
9, it's stuck in my head that way. Perhaps we can put something up front
here that's relevant, like a short discussion of what's changed since 4271
(not a changelog though... an overview?) and/or a discussion of why it
should be an Internet Standard. -->

</section>
      <section anchor="other-extensions">
        <name>Other Extensions</name>
        <t>Many other extensions have been standardized. Some are referenced from 
this document, where they interact with this specification in ways that
the reader should be alerted of. This is not a complete listing of BGP
extensions even at time of writing.</t>
        <dl>
          <dt><xref target="RFC8654"/>:</dt>
          <dd>
            <t>This document extends BGP to provides message sizes of up to
65,535 bytes, increased from the 4,096 bytes specified here. 
Although it is considered optional for purposes of the core 
protocol, some other extensions either strongly advise, or require,
its use.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="summary-of-operation">
      <name>Summary of Operation</name>
      <t>The Border Gateway Protocol (BGP) is an inter-Autonomous System
routing protocol.  It is built on experience gained with EGP (as
defined in <xref target="RFC904"/>) and EGP usage in the NSFNET Backbone (as
described in <xref target="RFC1092"/> and <xref target="RFC1093"/>).  For more BGP-related
information, see <xref target="RFC1772"/>, <xref target="RFC1930"/>, <xref target="RFC1997"/>, and <xref target="RFC2858"/>.</t>
      <t>The primary function of a BGP-speaking system is to exchange network
reachability information with other BGP systems.  This network
reachability information includes information on the list of
Autonomous Systems (ASes) that reachability information traverses.
This information is sufficient for constructing a graph of AS
connectivity, from which routing loops may be pruned, and, at the AS
level, some policy decisions may be enforced.</t>
      <t>In the context of this document, we assume that a BGP speaker
advertises to its peers only those routes that it uses itself (in
this context, a BGP speaker is said to "use" a BGP route if it is the
most-preferred BGP route and is used in forwarding).  All other cases
are outside the scope of this document.</t>
      <t>In the context of this document, the term "IP address" refers to an
IP Version 4 address <xref target="RFC791"/>.</t>
      <t>The functionality documented in this specification supports the
destination-based forwarding paradigm, which assumes that a router forwards
a packet based solely on the destination address carried in the IP header of
the packet. BGP as documented herein can support any policy conforming to
the destination-based forwarding paradigm. Some policies cannot be supported
by the destination-based forwarding paradigm, and thus require techniques
such as source routing (aka explicit routing) to be enforced. Many
extensions to BGP exist, which may enable such policies. These extensions
are beyond the scope of this document.</t>
      <t>BGP-4 provides a set of mechanisms for supporting Classless
Inter-Domain Routing (CIDR) <xref target="RFC1518"/> <xref target="RFC1519"/>.  These mechanisms
include support for advertising a set of destinations as an IP prefix
and eliminating the concept of a network "class" within BGP.  BGP-4
also includes mechanisms that allow aggregation of routes.</t>
      <t>This document uses the term 'Autonomous System' (AS) throughout.  The
classic definition of an Autonomous System is a set of routers under
a single technical administration, using an interior gateway protocol
(IGP) and common metrics to determine how to route packets within the
AS, and using an inter-AS routing protocol to determine how to route
packets to other ASes.  Since this classic definition was developed,
it has become common for a single AS to use several IGPs and,
sometimes, several sets of metrics within an AS.  The use of the term
Autonomous System stresses the fact that, even when multiple IGPs and
metrics are used, the administration of an AS appears to other ASes
to have a single coherent interior routing plan and presents a
consistent picture of the destinations that are reachable through it.</t>
      <t>BGP uses TCP <xref target="RFC793"/> as its transport protocol.  This eliminates the
need to implement explicit update fragmentation, retransmission,
acknowledgement, and sequencing.  BGP listens on TCP port 179.  The
error notification mechanism used in BGP assumes that TCP supports a
"graceful" close (i.e., that all outstanding data will be delivered
before the connection is closed).</t>
      <t>A TCP connection is formed between two systems.  They exchange
messages to open and confirm the connection parameters.</t>
      <t>The initial data flow (sometimes called "initial convergence") 
is the portion of the BGP routing table that is
allowed by the export policy, called the Adj-Ribs-Out (see <xref target="rib"/>).
Incremental updates are sent as the routing tables change.  BGP does
not require a periodic refresh of the routing table.  To allow local
policy changes to have the correct effect without resetting any BGP
connections, a BGP speaker <bcp14>SHOULD</bcp14> either (a) retain the current
version of the routes advertised to it by all of its peers for the
duration of the connection, or (b) make use of the Route Refresh
extension <xref target="RFC2918"/>.</t>
      <t>KEEPALIVE messages are normally sent periodically to ensure that the
connection is live.  NOTIFICATION messages are sent in response to fatal
errors or special conditions.  If a connection encounters a fatal error
condition, a NOTIFICATION message is sent, and the connection is closed.
For error conditions classified as non-fatal, less extreme mitigations
are applied.</t>
      <t>A peer in a different AS is referred to as an external peer, while a
peer in the same AS is referred to as an internal peer.  Internal BGP
and external BGP are commonly abbreviated as IBGP and EBGP.</t>
      <t>If a particular AS has multiple BGP speakers and is providing transit
service for other ASes, then care must be taken to ensure a
consistent view of routing within the AS.  A consistent view of the
interior routes of the AS is provided by the IGP used within the AS.
For the purpose of this document, it is assumed that a consistent
view of the routes exterior to the AS is provided by having all BGP
speakers within the AS maintain IBGP with each other.</t>
      <t>This document specifies the base behavior of the BGP protocol.  This
behavior can be, and is, modified by extension specifications.  When
the protocol is extended, the new behavior is fully documented in the
extension specifications.</t>
      <section anchor="routes_adv_store">
        <name>Routes: Advertisement and Storage</name>
        <t>For the purpose of this protocol, a route is defined as a unit of
information that pairs a set of destinations with the attributes of a
path to those destinations.  The set of destinations are systems
whose IP addresses are contained in one IP address prefix that is
carried in the Network Layer Reachability Information (NLRI) field of
an UPDATE message, and the path is the information reported in the
path attributes field of the same UPDATE message.</t>
        <t>Routes are advertised between BGP speakers in UPDATE messages.
Multiple routes that have the same path attributes can be advertised
in a single UPDATE message by including multiple prefixes in the NLRI
field of the UPDATE message.</t>
        <t>Routes are stored in the Routing Information Bases (RIBs): namely,
the Adj-RIBs-In, the Loc-RIB, and the Adj-RIBs-Out, as described in
<xref target="rib"/>.</t>
        <t>If a BGP speaker chooses to advertise a previously received route, it
may add to, or modify, the path attributes of the route before
advertising it to a peer. In some cases, such operations are required.</t>
        <t>BGP provides mechanisms by which a BGP speaker can inform its peers
that a previously advertised route is no longer available for use.
There are three methods by which a given BGP speaker can indicate
that a route has been withdrawn from service:</t>
        <ol spacing="normal" type="%c)"><li>
            <t>the IP prefix that expresses the destination for a previously
 advertised route can be advertised in the Withdrawn Routes
 field in the UPDATE message, thus marking the associated route
 as being no longer available for use,</t>
          </li>
          <li>
            <t>a replacement route with the same NLRI can be advertised, or</t>
          </li>
          <li>
            <t>the BGP speaker connection can be closed, which implicitly
 removes all routes the pair of speakers had advertised to each
 other from service.</t>
          </li>
        </ol>
        <t>Changing the attribute(s) of a route is accomplished by advertising a
replacement route.  The replacement route carries new (changed)
attributes and has the same address prefix as the original route.</t>
      </section>
      <section anchor="rib">
        <name>Routing Information Base</name>
        <t>The Routing Information Base (RIB) within a BGP speaker consists of
three distinct parts:</t>
        <ol group="ribparts" spacing="normal" type="%c)"><li>
            <t>Adj-RIBs-In: 
 The Adj-RIBs-In store routing information learned
 from inbound UPDATE messages that were received from other BGP
 speakers.  Their contents represent routes that are available
 as input to the Decision Process.</t>
          </li>
          <li>
            <t>Loc-RIB: 
 The Loc-RIB contains the local routing information the
 BGP speaker selected by applying its local policies to the
 routing information contained in its Adj-RIBs-In.  These are
 the routes that will be used by the local BGP speaker.  The
 next hop for each of these routes must be resolvable via the
 local BGP speaker's Routing Table.</t>
          </li>
          <li>
            <t>Adj-RIBs-Out: 
 The Adj-RIBs-Out store information the local BGP
 speaker selected for advertisement to its peers.  The routing
 information stored in the Adj-RIBs-Out will be carried in the
 local BGP speaker's UPDATE messages and advertised to its
 peers.</t>
          </li>
        </ol>
        <t>In summary, the Adj-RIBs-In contain unprocessed routing information
that has been advertised to the local BGP speaker by its peers; the
Loc-RIB contains the routes that have been selected by the local BGP
speaker's Decision Process; and the Adj-RIBs-Out organize the routes
for advertisement to specific peers (by means of the local speaker's
UPDATE messages).</t>
        <t>Although the conceptual model distinguishes between Adj-RIBs-In,
Loc-RIB, and Adj-RIBs-Out, this neither implies nor requires that an
implementation must maintain three separate copies of the routing
information.  The choice of implementation (for example, 3 copies of
the information vs 1 copy with pointers) is not constrained by the
protocol.</t>
        <t>Routing information that the BGP speaker uses to forward packets (or
to construct the forwarding table used for packet forwarding) is
maintained in the Routing Table.  The Routing Table accumulates
routes to directly connected networks, static routes, routes learned
from the IGP protocols, and routes learned from BGP.  Whether a
specific BGP route should be installed in the Routing Table, and
whether a BGP route should override a route to the same destination
installed by another source, is a local policy decision, and is not
specified in this document.  In addition to actual packet forwarding,
the Routing Table is used for resolution of the next-hop addresses
specified in BGP updates (see <xref target="nexthop"/>).</t>
      </section>
    </section>
    <section anchor="invariants">
      <name>Protocol Invariants</name>
      <t>The following requirements apply throughout this specification.</t>
      <section anchor="own-asn">
        <name>Autonomous System Numbers</name>
        <t>Each BGP speaker belongs to an Autonomous System (AS) and <bcp14>SHALL</bcp14> be
configured with an Autonomous System number.
<!-- xxx this is probably a place to mention AS transition 
mechanisms where the speaker has more than one AS -->
        </t>
        <t>The configured Autonomous System number <bcp14>MUST NOT</bcp14> be 0.
 
Unless explicitly specified otherwise, any occurrence of an Autonomous
System number (or any of its synonyms) in this specification refers to
an Autonomous System number other than 0.</t>
        <!-- other candidates:

 "its IP address"
 version number
 max message size
 bgp identifier
-->

</section>
    </section>
    <section anchor="msgformat">
      <name>Message Formats</name>
      <t>This section describes message formats used by BGP.</t>
      <t>BGP messages are sent over TCP connections.  A message is processed only
after it is entirely received.  The maximum message size is 4096 octets
(although <xref target="RFC8654"/>, if used, modifies the maximum for message types
other than OPEN and KEEPALIVE).  All implementations are required to
support this maximum message size.  The smallest message that may be
sent consists of a BGP header without a data portion (19 octets).</t>
      <t>All multi-octet fields are in network byte order.</t>
      <section anchor="message-header-format">
        <name>Message Header Format</name>
        <t>Each message has a fixed-size header.  There may or may not be a data
portion following the header, depending on the message type.  The
layout of the fields is shown below:</t>
        <figure>
          <name>Message Header Format</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="240" width="528" viewBox="0 0 528 240" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,64 L 8,224" fill="none" stroke="black"/>
                <path d="M 264,192 L 264,224" fill="none" stroke="black"/>
                <path d="M 392,192 L 392,224" fill="none" stroke="black"/>
                <path d="M 520,64 L 520,192" fill="none" stroke="black"/>
                <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                <path d="M 8,192 L 520,192" fill="none" stroke="black"/>
                <path d="M 8,224 L 392,224" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="496" y="36">3</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="400" y="52">4</text>
                  <text x="416" y="52">5</text>
                  <text x="432" y="52">6</text>
                  <text x="448" y="52">7</text>
                  <text x="464" y="52">8</text>
                  <text x="480" y="52">9</text>
                  <text x="496" y="52">0</text>
                  <text x="512" y="52">1</text>
                  <text x="252" y="148">Marker</text>
                  <text x="116" y="212">Length</text>
                  <text x="332" y="212">Type</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                           Marker                              |
+                                                               +
|                                                               |
+-------------------------------+---------------+---------------+
|          Length               |      Type     |
+-------------------------------+---------------+
]]></artwork>
          </artset>
        </figure>
        <dl>
          <dt>Marker:</dt>
          <dd>
            <t>This 16-octet field is included for compatibility; it <bcp14>MUST</bcp14> be
set to all ones.</t>
          </dd>
          <dt>Length:</dt>
          <dd>
            <t>This 2-octet unsigned integer indicates the total length of the
message, including the header in octets.  Thus, it allows one
to locate the (Marker field of the) next message in the TCP
stream.  The value of the Length field <bcp14>MUST</bcp14> always be at least
19 and no greater than 4096, and <bcp14>MAY</bcp14> be further constrained,
depending on the message type.  "padding" of extra data after
the message is not allowed.  Therefore, the Length field <bcp14>MUST</bcp14>
have the smallest value required, given the rest of the
message. (<xref target="RFC8654"/>, if used, modifies the maximum for 
message types other than OPEN and KEEPALIVE.)</t>
          </dd>
          <dt>Type:</dt>
          <dd>
            <t>This 1-octet unsigned integer indicates the type code of the
message.  This document defines the following type codes:</t>
          </dd>
          <dt/>
          <dd>
            <ol spacing="normal" type="1"><li>
                <t>OPEN</t>
              </li>
              <li>
                <t>UPDATE</t>
              </li>
              <li>
                <t>NOTIFICATION</t>
              </li>
              <li>
                <t>KEEPALIVE</t>
              </li>
            </ol>
          </dd>
          <dt/>
          <dd>
            <t><xref target="RFC2918"/> defines one more type code.</t>
          </dd>
        </dl>
      </section>
      <section anchor="openfmt">
        <name>OPEN Message Format</name>
        <t>After a TCP connection is established, the first message sent by each
side is an OPEN message.  If the OPEN message is acceptable, a
KEEPALIVE message confirming the OPEN is sent back.</t>
        <t>In addition to the fixed-size BGP header, the OPEN message contains
the following fields:</t>
        <figure>
          <name>OPEN Message Format (non-extended variant)</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="304" width="528" viewBox="0 0 528 304" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,64 L 8,288" fill="none" stroke="black"/>
                <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                <path d="M 136,192 L 136,224" fill="none" stroke="black"/>
                <path d="M 264,96 L 264,160" fill="none" stroke="black"/>
                <path d="M 520,160 L 520,192" fill="none" stroke="black"/>
                <path d="M 520,224 L 520,288" fill="none" stroke="black"/>
                <path d="M 8,64 L 136,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 264,96" fill="none" stroke="black"/>
                <path d="M 8,128 L 264,128" fill="none" stroke="black"/>
                <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
                <path d="M 8,192 L 520,192" fill="none" stroke="black"/>
                <path d="M 8,224 L 520,224" fill="none" stroke="black"/>
                <path d="M 8,288 L 520,288" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="496" y="36">3</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="400" y="52">4</text>
                  <text x="416" y="52">5</text>
                  <text x="432" y="52">6</text>
                  <text x="448" y="52">7</text>
                  <text x="464" y="52">8</text>
                  <text x="480" y="52">9</text>
                  <text x="496" y="52">0</text>
                  <text x="512" y="52">1</text>
                  <text x="72" y="84">Version</text>
                  <text x="60" y="116">My</text>
                  <text x="116" y="116">Autonomous</text>
                  <text x="188" y="116">System</text>
                  <text x="116" y="148">Hold</text>
                  <text x="156" y="148">Time</text>
                  <text x="224" y="180">BGP</text>
                  <text x="284" y="180">Identifier</text>
                  <text x="32" y="212">Opt</text>
                  <text x="68" y="212">Parm</text>
                  <text x="104" y="212">Len</text>
                  <text x="148" y="260">Optional</text>
                  <text x="228" y="260">Parameters</text>
                  <text x="316" y="260">(variable)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![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
+-+-+-+-+-+-+-+-+
|    Version    |
+---------------+-+-+-+-+-+-+-+-+
|     My Autonomous System      |
+-------------------------------+
|           Hold Time           |
+-------------------------------+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         BGP Identifier                        |
+---------------+-----------------------------------------------+
| Opt Parm Len  |
+---------------+-----------------------------------------------+
|                                                               |
|             Optional Parameters (variable)                    |
|                                                               |
+---------------------------------------------------------------+
]]></artwork>
          </artset>
        </figure>
        <dl>
          <dt>Version:</dt>
          <dd>
            <t>This 1-octet unsigned integer indicates the protocol version
number of the message.  The current BGP version number is 4.</t>
          </dd>
          <dt>My Autonomous System:</dt>
          <dd>
            <t>This 2-octet unsigned integer indicates the Autonomous System
number of the sender. (This is modified by <xref target="RFC6793"/>.) The
value <bcp14>MUST NOT</bcp14> be 0.</t>
          </dd>
          <dt>Hold Time:</dt>
          <dd>
            <t>This 2-octet unsigned integer indicates the number of seconds
the sender proposes for the value of the Hold Timer.  Upon
receipt of an OPEN message, a BGP speaker <bcp14>MUST</bcp14> calculate the
value of the Hold Timer by using the smaller of its configured
Hold Time and the Hold Time received in the OPEN message.  The
Hold Time <bcp14>MUST</bcp14> be either zero or at least three seconds.  An
implementation <bcp14>MAY</bcp14> reject connections on the basis of the Hold
Time.  The calculated value indicates the maximum number of
seconds that may elapse between the receipt of successive
KEEPALIVE and/or UPDATE messages from the sender.</t>
          </dd>
          <dt>BGP Identifier:</dt>
          <dd>
            <t>This 4-octet unsigned integer indicates the BGP Identifier of
the sender.  A given BGP speaker sets the value of its BGP
Identifier to a valid BGP Identifier. The value of the BGP
Identifier is determined upon startup and is the same for every
local interface and BGP peer.</t>
          </dd>
          <dt>Optional Parameters Length:</dt>
          <dd>
            <t>This 1-octet unsigned integer indicates the total length of the
Optional Parameters field in octets.  If the value of this
field is zero, no Optional Parameters are present. If the 
length of the parameters to be encoded exceeds 255 octets, the 
extended variant (<xref target="openfmt-ext"/>) is used instead.</t>
          </dd>
          <dt>Optional Parameters:</dt>
          <dd>
            <t>This field contains a list of optional parameters, in which
each parameter is encoded as a &lt;Parameter Type, Parameter
Length, Parameter Value&gt; triplet. If the length of the 
parameters to be encoded exceeds 255 octets, the extended
variant (<xref target="openfmt-ext"/>) is used instead.</t>
          </dd>
        </dl>
        <figure>
          <name>Optional Parameters (non-extended variant)</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="496" viewBox="0 0 496 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,64 L 8,96" fill="none" stroke="black"/>
                <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
                <path d="M 8,64 L 328,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 328,96" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="340" y="68">..</text>
                  <text x="48" y="84">Parm.</text>
                  <text x="92" y="84">Type</text>
                  <text x="168" y="84">Parm.</text>
                  <text x="220" y="84">Length</text>
                  <text x="320" y="84">Parameter</text>
                  <text x="384" y="84">Value</text>
                  <text x="452" y="84">(variable)</text>
                  <text x="340" y="100">..</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
     0                   1
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...
    |  Parm. Type   | Parm. Length  |  Parameter Value (variable)
    +---------------+---------------+-------...
]]></artwork>
          </artset>
        </figure>
        <ul empty="true">
          <li>
            <t>Parameter Type is a one octet field that unambiguously identifies 
  individual parameters.  Parameter Length is a one octet field that
  contains the length of the Parameter Value field in octets.  Parameter
  Value is a variable length field that is interpreted according to the
  value of the Parameter Type field. If the length of the parameters to
  be encoded exceeds 255 octets, the extended variant (<xref target="openfmt-ext"/>) is
  used instead.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t><xref target="RFC3392"/> defines the Capabilities Optional Parameter.</t>
          </li>
        </ul>
        <t>The minimum length of the OPEN message is 29 octets (including the
message header).</t>
        <section anchor="openfmt-ext">
          <name>OPEN Message Format (Extended Variant)</name>
          <t>This version of the OPEN message is identical to that defined above,
except for its encoding of the optional parameters. To preserve backward
compatibility, the non-extended format (<xref target="openfmt"/>) <bcp14>SHOULD</bcp14> be used except
when the length of the parameters to be encoded exceeds 255 octets, when
this format <bcp14>MUST</bcp14> be used. Configuration <bcp14>MAY</bcp14> override this to force the
extended format to be used in all cases; this might be used, for
example, to test that a peer supports this specification. In any case,
an implementation <bcp14>MUST</bcp14> accept an OPEN message that uses the encoding of
this section even if the length of the Optional Parameters is 255
or less.</t>
          <t>This encoding permits transmission of larger sets of Optional
Parameters, including Capabilities <xref target="RFC4760"/>, than can be represented
using the non-extended OPEN message encoding.</t>
          <figure anchor="ext-open">
            <name>OPEN Message Format (extended variant)</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="304" width="528" viewBox="0 0 528 304" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,64 L 8,288" fill="none" stroke="black"/>
                  <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                  <path d="M 136,192 L 136,224" fill="none" stroke="black"/>
                  <path d="M 264,96 L 264,160" fill="none" stroke="black"/>
                  <path d="M 264,192 L 264,224" fill="none" stroke="black"/>
                  <path d="M 520,160 L 520,288" fill="none" stroke="black"/>
                  <path d="M 8,64 L 136,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 264,96" fill="none" stroke="black"/>
                  <path d="M 8,128 L 264,128" fill="none" stroke="black"/>
                  <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
                  <path d="M 8,192 L 520,192" fill="none" stroke="black"/>
                  <path d="M 8,224 L 520,224" fill="none" stroke="black"/>
                  <path d="M 8,288 L 520,288" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="16" y="36">0</text>
                    <text x="176" y="36">1</text>
                    <text x="336" y="36">2</text>
                    <text x="496" y="36">3</text>
                    <text x="16" y="52">0</text>
                    <text x="32" y="52">1</text>
                    <text x="48" y="52">2</text>
                    <text x="64" y="52">3</text>
                    <text x="80" y="52">4</text>
                    <text x="96" y="52">5</text>
                    <text x="112" y="52">6</text>
                    <text x="128" y="52">7</text>
                    <text x="144" y="52">8</text>
                    <text x="160" y="52">9</text>
                    <text x="176" y="52">0</text>
                    <text x="192" y="52">1</text>
                    <text x="208" y="52">2</text>
                    <text x="224" y="52">3</text>
                    <text x="240" y="52">4</text>
                    <text x="256" y="52">5</text>
                    <text x="272" y="52">6</text>
                    <text x="288" y="52">7</text>
                    <text x="304" y="52">8</text>
                    <text x="320" y="52">9</text>
                    <text x="336" y="52">0</text>
                    <text x="352" y="52">1</text>
                    <text x="368" y="52">2</text>
                    <text x="384" y="52">3</text>
                    <text x="400" y="52">4</text>
                    <text x="416" y="52">5</text>
                    <text x="432" y="52">6</text>
                    <text x="448" y="52">7</text>
                    <text x="464" y="52">8</text>
                    <text x="480" y="52">9</text>
                    <text x="496" y="52">0</text>
                    <text x="512" y="52">1</text>
                    <text x="72" y="84">Version</text>
                    <text x="60" y="116">My</text>
                    <text x="116" y="116">Autonomous</text>
                    <text x="188" y="116">System</text>
                    <text x="116" y="148">Hold</text>
                    <text x="156" y="148">Time</text>
                    <text x="224" y="180">BGP</text>
                    <text x="284" y="180">Identifier</text>
                    <text x="40" y="212">Non-Ext</text>
                    <text x="84" y="212">OP</text>
                    <text x="116" y="212">Len.</text>
                    <text x="168" y="212">Non-Ext</text>
                    <text x="212" y="212">OP</text>
                    <text x="244" y="212">Type</text>
                    <text x="316" y="212">Extended</text>
                    <text x="372" y="212">Opt.</text>
                    <text x="416" y="212">Parm.</text>
                    <text x="468" y="212">Length</text>
                    <text x="148" y="260">Optional</text>
                    <text x="228" y="260">Parameters</text>
                    <text x="316" y="260">(variable)</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![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
+-+-+-+-+-+-+-+-+
|    Version    |
+---------------+-+-+-+-+-+-+-+-+
|     My Autonomous System      |
+-------------------------------+
|           Hold Time           |
+-------------------------------+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         BGP Identifier                        |
+---------------+---------------+-------------------------------+
|Non-Ext OP Len.|Non-Ext OP Type|  Extended Opt. Parm. Length   |
+---------------+---------------+-------------------------------+
|                                                               |
|             Optional Parameters (variable)                    |
|                                                               |
+---------------------------------------------------------------+
]]></artwork>
            </artset>
          </figure>
          <t>Only the fields that differ from those of the non-extended variant
are defined below.</t>
          <dl>
            <dt>Non-Extended Optional Parameters Length ("Non-Ext OP Len"):</dt>
            <dd>
              <t>This 1-octet unsigned integer <bcp14>MUST</bcp14> be set to 255. Its value 
<bcp14>MUST</bcp14> be ignored on receipt once the use of the extended format 
is determined positively by inspection of the Non-Extended 
Optional Parameters Type (Non-Ext OP Type) field.</t>
            </dd>
            <dt>Non-Extended Optional Parameters Type ("Non-Ext OP Type"):</dt>
            <dd>
              <t>The 1-octet field following the Non-Ext OP Len (which would 
be the first Optional Parameter Type field in the non-extended
format and is called "Non-Ext OP Type" in the figure above) <bcp14>MUST</bcp14> be
set to 255 on transmission. On receipt, a value of 255 for this
field is the indication that the extended format is in use.</t>
            </dd>
            <dt>Extended Optional Parameters Length ("Extended Opt. Parm. Length"):</dt>
            <dd>
              <t>This 2-octet unsigned integer indicates the total length of 
the Optional Parameters field in octets. If the value of this field
is zero, no Optional Parameters are present.</t>
            </dd>
            <dt>Optional Parameters:</dt>
            <dd>
              <t>This field contains a list of optional parameters, in which
each parameter is encoded as a &lt;Parameter Type, Parameter
Length, Parameter Value&gt; triplet. The rules for encoding Optional 
Parameters are unchanged with respect to those above, except that 
the Parameter Length field is extended to be a two-octet 
unsigned integer.</t>
            </dd>
          </dl>
          <figure>
            <name>Optional Parameters (extended variant)</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="192" width="408" viewBox="0 0 408 192" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,64 L 8,160" fill="none" stroke="black"/>
                  <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                  <path d="M 392,64 L 392,160" fill="none" stroke="black"/>
                  <path d="M 8,64 L 392,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 392,96" fill="none" stroke="black"/>
                  <path d="M 8,160 L 392,160" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="16" y="36">0</text>
                    <text x="176" y="36">1</text>
                    <text x="336" y="36">2</text>
                    <text x="16" y="52">0</text>
                    <text x="32" y="52">1</text>
                    <text x="48" y="52">2</text>
                    <text x="64" y="52">3</text>
                    <text x="80" y="52">4</text>
                    <text x="96" y="52">5</text>
                    <text x="112" y="52">6</text>
                    <text x="128" y="52">7</text>
                    <text x="144" y="52">8</text>
                    <text x="160" y="52">9</text>
                    <text x="176" y="52">0</text>
                    <text x="192" y="52">1</text>
                    <text x="208" y="52">2</text>
                    <text x="224" y="52">3</text>
                    <text x="240" y="52">4</text>
                    <text x="256" y="52">5</text>
                    <text x="272" y="52">6</text>
                    <text x="288" y="52">7</text>
                    <text x="304" y="52">8</text>
                    <text x="320" y="52">9</text>
                    <text x="336" y="52">0</text>
                    <text x="352" y="52">1</text>
                    <text x="368" y="52">2</text>
                    <text x="384" y="52">3</text>
                    <text x="400" y="52">4</text>
                    <text x="48" y="84">Parm.</text>
                    <text x="92" y="84">Type</text>
                    <text x="240" y="84">Parameter</text>
                    <text x="308" y="84">Length</text>
                    <text x="144" y="132">Parameter</text>
                    <text x="208" y="132">Value</text>
                    <text x="276" y="132">(variable)</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
     0                   1                   2
     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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  Parm. Type   |        Parameter Length       |
    +---------------+-------------------------------+
    |                                               |
    |            Parameter Value (variable)         |
    |                                               |
    +-----------------------------------------------+
]]></artwork>
            </artset>
          </figure>
          <t>In parsing an OPEN message, if the one-octet Optional Parameters Length
field (labeled "Non-Ext OP Len." in <xref target="ext-open"/>) is non-zero, a BGP
speaker <bcp14>MUST</bcp14> use the value of the octet following the one-octet Optional
Parameters Length field (labeled "Non-Ext OP Type" in <xref target="ext-open"/>) to
determine both the encoding of the Optional Parameters length and the
size of the Parameter Length field of individual Optional Parameters. If
the value of the "Non-Ext OP Type" field is 255, then the encoding
described in this subsection is used for the Optional Parameters length.
Otherwise, the encoding defined in <xref target="openfmt"/> is used.</t>
        </section>
      </section>
      <section anchor="updatefmt">
        <name>UPDATE Message Format</name>
        <t>UPDATE messages are used to transfer routing information between BGP
peers.  The information in the UPDATE message can be used to
construct a graph that describes the relationships of the various
Autonomous Systems.  By applying rules discussed below, routing
information loops and some other anomalies may be detected and
removed from inter-AS routing.</t>
        <t>An UPDATE message is used to advertise feasible routes that share common
path attributes to a peer, or to withdraw multiple unfeasible routes
from service (see <xref target="routes_adv_store"/>).  An UPDATE message <bcp14>MUST NOT</bcp14>
simultaneously advertise a feasible route and withdraw unfeasible routes
from service.  However, in order to preserve backward compatibility, an
implementation <bcp14>SHOULD</bcp14> still be prepared to receive an UPDATE message
that simultaneously advertises and withdraws routes. (<xref target="RFC4760"/>
specifies an alternate encoding to advertise and withdraw routes, and
can be used to support address families other than IP Version 4.)</t>
        <t>The UPDATE message always includes the fixed-size BGP
header, and also includes the other fields, as shown below (note,
some of the shown fields may not be present in every UPDATE message):</t>
        <figure>
          <name>UPDATE message format</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="448" viewBox="0 0 448 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,192" fill="none" stroke="black"/>
                <path d="M 440,32 L 440,192" fill="none" stroke="black"/>
                <path d="M 8,32 L 440,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 440,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 440,96" fill="none" stroke="black"/>
                <path d="M 8,128 L 440,128" fill="none" stroke="black"/>
                <path d="M 8,160 L 440,160" fill="none" stroke="black"/>
                <path d="M 8,192 L 440,192" fill="none" stroke="black"/>
                <g class="text">
                  <text x="72" y="52">Withdrawn</text>
                  <text x="140" y="52">Routes</text>
                  <text x="196" y="52">Length</text>
                  <text x="236" y="52">(2</text>
                  <text x="280" y="52">octets)</text>
                  <text x="72" y="84">Withdrawn</text>
                  <text x="140" y="84">Routes</text>
                  <text x="212" y="84">(variable)</text>
                  <text x="56" y="116">Total</text>
                  <text x="100" y="116">Path</text>
                  <text x="160" y="116">Attribute</text>
                  <text x="228" y="116">Length</text>
                  <text x="268" y="116">(2</text>
                  <text x="312" y="116">octets)</text>
                  <text x="52" y="148">Path</text>
                  <text x="116" y="148">Attributes</text>
                  <text x="204" y="148">(variable)</text>
                  <text x="64" y="180">Network</text>
                  <text x="120" y="180">Layer</text>
                  <text x="196" y="180">Reachability</text>
                  <text x="296" y="180">Information</text>
                  <text x="388" y="180">(variable)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+-----------------------------------------------------+
|   Withdrawn Routes Length (2 octets)                |
+-----------------------------------------------------+
|   Withdrawn Routes (variable)                       |
+-----------------------------------------------------+
|   Total Path Attribute Length (2 octets)            |
+-----------------------------------------------------+
|   Path Attributes (variable)                        |
+-----------------------------------------------------+
|   Network Layer Reachability Information (variable) |
+-----------------------------------------------------+
]]></artwork>
          </artset>
        </figure>
        <dl>
          <dt>Withdrawn Routes Length:</dt>
          <dd>
            <t>This 2-octets unsigned integer indicates the total length of
   the Withdrawn Routes field in octets.  Its value allows the
   length of the Network Layer Reachability Information field to
   be determined, as specified below.</t>
          </dd>
          <dt/>
          <dd>
            <t>A value of 0 indicates that no routes are being withdrawn from
   service, and that the Withdrawn Routes field is not present in
   this UPDATE message.</t>
          </dd>
          <dt>Withdrawn Routes:</dt>
          <dd>
            <t>This is a variable-length field that contains a list of IP
   address prefixes for the routes that are being withdrawn from
   service.  Each IP address prefix is encoded as a 2-tuple of the
   form &lt;length, prefix&gt;, whose fields are described below:</t>
          </dd>
        </dl>
        <figure anchor="ipaddressprefix">
          <name>IP Address Prefix</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="240" viewBox="0 0 240 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
                <path d="M 232,32 L 232,96" fill="none" stroke="black"/>
                <path d="M 8,32 L 232,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 232,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 232,96" fill="none" stroke="black"/>
                <g class="text">
                  <text x="60" y="52">Length</text>
                  <text x="100" y="52">(1</text>
                  <text x="140" y="52">octet)</text>
                  <text x="60" y="84">Prefix</text>
                  <text x="132" y="84">(variable)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
    +---------------------------+
    |   Length (1 octet)        |
    +---------------------------+
    |   Prefix (variable)       |
    +---------------------------+
]]></artwork>
          </artset>
        </figure>
        <t>The use and the meaning of these fields are as follows:</t>
        <ol spacing="normal" type="%c)"><li>
            <t>Length:
 The Length field indicates the length in bits of the IP
 address prefix.  A length of zero indicates a prefix that
 matches all IP addresses (with prefix, itself, of zero
 octets).</t>
          </li>
          <li>
            <t>Prefix:
 The Prefix field contains an IP address prefix, followed by
 the minimum number of trailing bits needed to make the end
 of the field fall on an octet boundary.  Note that the value
 of trailing bits is irrelevant. Trailing bits <bcp14>MUST</bcp14> be set
 to zero on transmission and <bcp14>MUST</bcp14> be disregarded on receipt.</t>
          </li>
        </ol>
        <dl>
          <dt>Total Path Attribute Length:</dt>
          <dd>
            <t>This 2-octet unsigned integer indicates the total length of the
   Path Attributes field in octets.  Its value allows the length
   of the Network Layer Reachability field to be determined as
   specified below.</t>
          </dd>
          <dt/>
          <dd>
            <t>A value of 0 indicates that neither the Network Layer
   Reachability Information field nor the Path Attribute field is
   present in this UPDATE message.</t>
          </dd>
          <dt>Path Attributes:</dt>
          <dd>
            <t>A variable-length sequence of path attributes is present in
   every UPDATE message, except for an UPDATE message that carries
   only withdrawn routes.  Each path attribute is a triple
   &lt;attribute type, attribute length, attribute value&gt; of variable
   length.</t>
          </dd>
          <dt/>
          <dd>
            <t>Attribute Type is a two-octet field that consists of the
   Attribute Flags octet, followed by the Attribute Type Code
   octet.</t>
          </dd>
        </dl>
        <figure>
          <name>Attribute Type</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="272" viewBox="0 0 272 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,64 L 8,96" fill="none" stroke="black"/>
                <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
                <path d="M 8,64 L 264,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 264,96" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="48" y="84">Attr.</text>
                  <text x="96" y="84">Flags</text>
                  <text x="160" y="84">Attr.</text>
                  <text x="204" y="84">Type</text>
                  <text x="244" y="84">Code</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
     0                   1
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  Attr. Flags  |Attr. Type Code|
    +---------------+---------------+
]]></artwork>
          </artset>
        </figure>
        <!-- [rfced] this text should be indented under path attributes -->

<ul empty="true">
          <li>
            <t>The high-order bit (bit 0) of the Attribute Flags octet is the
Optional bit.  The attributes ORIGIN, AS_PATH, NEXT_HOP, LOCAL_PREF, 
and ATOMIC_AGGREGATE have their Optional bit set to 0. (The reasons
for this choice are historical; the bit setting must be carried 
forward to preserve backward compatibility.)</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>The second high-order bit (bit 1) of the Attribute Flags octet
is the Transitive bit.  It defines whether an optional
attribute is transitive (if set to 1) or non-transitive (if set
to 0).</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>The third high-order bit (bit 2) of the Attribute Flags octet
is the Partial bit.  It defines whether the information
contained in the optional transitive attribute is partial (if
set to 1) or complete (if set to 0).  For the attributes
ORIGIN, AS_PATH, NEXT_HOP, LOCAL_PREF, and ATOMIC_AGGREGATE,
and for optional non-transitive attributes, the Partial bit
<bcp14>MUST</bcp14> be set to 0.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>The fourth high-order bit (bit 3) of the Attribute Flags octet
is the Extended Length bit.  It defines whether the Attribute
Length is one octet (if set to 0) or two octets (if set to 1).</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>The lower-order four bits of the Attribute Flags octet are
unused.  They <bcp14>MUST</bcp14> be zero when sent and <bcp14>MUST</bcp14> be ignored when
received.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>The Attribute Type Code octet contains the Attribute Type Code.
Currently defined Attribute Type Codes are discussed in <xref target="pathattributes"/>.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>If the Extended Length bit of the Attribute Flags octet is set
to 0, the third octet of the Path Attribute contains the length
of the attribute data in octets.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>If the Extended Length bit of the Attribute Flags octet is set
to 1, the third and fourth octets of the path attribute contain
the length of the attribute data in octets.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>The remaining octets of the Path Attribute represent the
attribute value and are interpreted according to the Attribute
Flags and the Attribute Type Code.  The supported Attribute
Type Codes, and their attribute values and uses are as follows:</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <dl>
              <dt>a) ORIGIN (Type Code 1):</dt>
              <dd>
                <t>ORIGIN is an attribute whose Optional bit is set to 0, whose
Transitive bit is set to 1, and whose Partial bit is set to 0. It
defines the origin of the path information.  The data octet can
assume the following values:</t>
              </dd>
            </dl>
          </li>
        </ul>
        <table anchor="origin_values">
          <name>ORIGIN Values</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">IGP - Network Layer Reachability Information is interior to the originating AS</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">EGP - Network Layer Reachability Information learned via the EGP protocol <xref target="RFC904"/></td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">INCOMPLETE - Network Layer Reachability Information learned by some other means</td>
            </tr>
            <tr>
              <td align="left">3-255</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14> be sent</td>
            </tr>
          </tbody>
        </table>
        <ul empty="true">
          <li>
            <t>Usage of this attribute is defined in <xref target="origin"/>.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <dl>
              <dt>b) AS_PATH (Type Code 2):</dt>
              <dd>
                <t>AS_PATH is an attribute whose Optional bit is set to 0, whose
Transitive bit is set to 1, and whose Partial bit is set to 0. It is
composed of a sequence of AS path segments.  Each AS path segment is
represented by a triple &lt;path segment type, path segment length, path
segment value&gt;.</t>
              </dd>
            </dl>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>The path segment type is a 1-octet length field with the
following values defined:</t>
          </li>
        </ul>
        <table anchor="aspath_segtypes">
          <name>AS_PATH Segment Type Values</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Segment Type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1 (deprecated)</td>
              <td align="left">AS_SET: deprecated</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">AS_SEQUENCE: ordered set of ASes a route in the UPDATE message has traversed</td>
            </tr>
          </tbody>
        </table>
        <ul empty="true">
          <li>
            <t>The path segment length is a 1-octet length field,
  containing the number of ASes (not the number of octets) in
  the path segment value field.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>The path segment value field contains one or more AS
  numbers, each encoded as a 2-octet length field. 
  (This is modified by <xref target="RFC6793"/>.)</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>Usage of this attribute is defined in <xref target="aspath"/>.</t>
          </li>
        </ul>
        <dl>
          <dt>c) NEXT_HOP (Type Code 3):</dt>
          <dd>
            <t>NEXT_HOP is an attribute whose Optional bit is set to 0, whose
Transitive bit is set to 1, and whose Partial bit is set to 0. It
defines the (unicast) IP address of the router that <bcp14>SHOULD</bcp14> be used as
the next hop to the destinations listed in the Network Layer
Reachability Information field of the UPDATE message.</t>
          </dd>
          <dt/>
          <dd>
            <t>Usage of this attribute is defined in <xref target="nexthop"/>.</t>
          </dd>
          <dt>d) MULTI_EXIT_DISC (Type Code 4):</dt>
          <dd>
            <t>This is an optional non-transitive attribute that is a
four-octet unsigned integer.  The value of this attribute
<bcp14>MAY</bcp14> be used by a BGP speaker's Decision Process to
discriminate among multiple entry points to a neighboring
autonomous system.</t>
          </dd>
          <dt/>
          <dd>
            <t>Considerations for the deployment of this attribute are 
given in <xref target="RFC7964"/>.</t>
          </dd>
          <dt/>
          <dd>
            <t>Usage of this attribute is defined in <xref target="med"/>.</t>
          </dd>
          <dt>e) LOCAL_PREF (Type Code 5):</dt>
          <dd>
            <t>LOCAL_PREF is an attribute whose Optional bit is set to 0, whose
Transitive bit is set to 1, and whose Partial bit is set to 0. It is a
four-octet unsigned integer.  A BGP speaker uses it to inform its other
internal peers of the advertising speaker's degree of preference for an
advertised route.</t>
          </dd>
          <dt/>
          <dd>
            <t>Usage of this attribute is defined in <xref target="localpref"/>.</t>
          </dd>
          <dt>f) ATOMIC_AGGREGATE (Type Code 6):</dt>
          <dd>
            <t>ATOMIC_AGGREGATE is an attribute whose Optional bit is set to 0,
   whose Transitive bit is set to 1, and whose Partial bit is set to 0.
   It is of length 0.</t>
          </dd>
          <dt/>
          <dd>
            <t>Usage of this attribute is defined in <xref target="atomic"/>.</t>
          </dd>
          <dt>g) AGGREGATOR (Type Code 7):</dt>
          <dd>
            <t>AGGREGATOR is an optional transitive attribute of length 6.
   The attribute contains the last AS number that formed the
   aggregate route (encoded as 2 octets), followed by the BGP
   Identifier of the BGP speaker that formed the aggregate route
   (encoded as 4 octets). (This is modified by <xref target="RFC6793"/>.)</t>
          </dd>
          <dt/>
          <dd>
            <t>Usage of this attribute is defined in <xref target="aggregator"/>.</t>
          </dd>
          <dt>Network Layer Reachability Information:</dt>
          <dd>
            <t>This variable length field contains a list of IP address
   prefixes.  The length, in octets, of the Network Layer
   Reachability Information is not encoded explicitly, but can be
   calculated as:</t>
          </dd>
        </dl>
        <figure>
          <name>NLRI Length Calculation</name>
          <artwork><![CDATA[
   UPDATE message Length - 23 - Total Path Attributes Length
   - Withdrawn Routes Length
]]></artwork>
        </figure>
        <ul empty="true">
          <li>
            <t>where UPDATE message Length is the value encoded in the fixed-size
BGP header, Total Path Attribute Length, and Withdrawn
Routes Length are the values encoded in the variable part of
the UPDATE message, and 23 is a combined length of the fixed-size
BGP header, the Total Path Attribute Length field, and the
Withdrawn Routes Length field.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>Reachability information is encoded as a list of IP
address prefixes for the routes that are being made available for
service.  Each IP address prefix is encoded as described above
under <xref target="ipaddressprefix"/>.
<!-- not really the right xref but there isn't a standalone subsection-->
            </t>
          </li>
        </ul>
        <t>The minimum length of the UPDATE message is 23 octets -- 19 octets
for the fixed header + 2 octets for the Withdrawn Routes Length + 2
octets for the Total Path Attribute Length (the value of Withdrawn
Routes Length is 0 and the value of Total Path Attribute Length is
0).</t>
        <t>An UPDATE message can advertise, at most, one set of path attributes,
but multiple destinations, provided that the destinations share these
attributes.  All path attributes contained in a given UPDATE message
apply to all destinations carried in the NLRI field of the UPDATE
message.</t>
        <t>An UPDATE message can list multiple routes that are to be withdrawn
from service.  Each such route is identified by its destination
(expressed as an IP prefix), which unambiguously identifies the route
in the context of the BGP speaker - BGP speaker connection to which
it has been previously advertised.</t>
        <t>When an UPDATE message advertises only routes that are to be
withdrawn from service, the message will not include path attributes or
Network Layer Reachability Information. Conversely, when an UPDATE
message advertises only a feasible route, the Withdrawn Routes field
will not be present (Withdrawn Routes Length will be equal to 0).</t>
        <t>For backward compatibility, a BGP speaker <bcp14>MUST</bcp14> be able to process UPDATE
messages that include the same address prefix in the Withdrawn Routes
and Network Layer Reachability Information fields.  A BGP speaker <bcp14>MUST</bcp14>
treat an UPDATE message of this form as though the Withdrawn Routes do
not contain the address prefix.</t>
      </section>
      <section anchor="keepalivefmt">
        <name>KEEPALIVE Message Format</name>
        <t>BGP does not use any TCP-based, keep-alive mechanism to determine if
peers are reachable.  Instead, KEEPALIVE messages are exchanged
between peers often enough not to cause the Hold Timer to expire.  A
reasonable maximum time between KEEPALIVE messages would be one third
of the Hold Time interval.  KEEPALIVE messages <bcp14>MUST NOT</bcp14> be sent more
frequently than one per second.  An implementation <bcp14>MAY</bcp14> adjust the
rate at which it sends KEEPALIVE messages as a function of the Hold
Time interval.</t>
        <t>If the negotiated Hold Time interval is zero, then periodic KEEPALIVE
messages <bcp14>MUST NOT</bcp14> be sent.</t>
        <t>A KEEPALIVE message consists of only the message header and has a
length of 19 octets.</t>
      </section>
      <section anchor="notifyfmt">
        <name>NOTIFICATION Message Format</name>
        <t>A NOTIFICATION message is sent when a fatal error condition is detected.
The BGP connection is closed immediately after it is sent.</t>
        <t>In addition to the fixed-size BGP header, the NOTIFICATION message
contains the following fields:</t>
        <figure>
          <name>NOTIFICATION Message Format</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="112" width="528" viewBox="0 0 528 112" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,64 L 8,96" fill="none" stroke="black"/>
                <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
                <path d="M 520,64 L 520,96" fill="none" stroke="black"/>
                <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="496" y="36">3</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="400" y="52">4</text>
                  <text x="416" y="52">5</text>
                  <text x="432" y="52">6</text>
                  <text x="448" y="52">7</text>
                  <text x="464" y="52">8</text>
                  <text x="480" y="52">9</text>
                  <text x="496" y="52">0</text>
                  <text x="512" y="52">1</text>
                  <text x="40" y="84">Error</text>
                  <text x="84" y="84">code</text>
                  <text x="168" y="84">Error</text>
                  <text x="224" y="84">subcode</text>
                  <text x="324" y="84">Data</text>
                  <text x="384" y="84">(variable</text>
                  <text x="432" y="84">)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Error code    | Error subcode |     Data (variable )          |
+---------------+---------------+-------------------------------+
]]></artwork>
          </artset>
        </figure>
        <!-- the extra space before the close paren above is to keep aasvg from rendering a spurious line -->

<dl>
          <dt>Error Code:</dt>
          <dd>
            <t>This 1-octet unsigned integer indicates the type of
   NOTIFICATION.  The following Error Codes are defined 
   by this document. The authoritative list is maintained
   by IANA, see <xref target="iana"/>:</t>
          </dd>
        </dl>
        <table>
          <name>NOTIFICATION Error Codes</name>
          <thead>
            <tr>
              <th align="left">Error Code</th>
              <th align="left">Symbolic Name</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">Message Header Error</td>
              <td align="left">
                <xref target="msgheadererr"/></td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">OPEN Message Error</td>
              <td align="left">
                <xref target="openmsgerr"/></td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">UPDATE Message Error</td>
              <td align="left">
                <xref target="updatemsgerr"/></td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">Hold Timer Expired</td>
              <td align="left">
                <xref target="holdtimerexperr"/></td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">Finite State Machine Error</td>
              <td align="left">
                <xref target="fsmerr"/></td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">Cease</td>
              <td align="left">
                <xref target="ceaseerr"/></td>
            </tr>
          </tbody>
        </table>
        <dl>
          <dt>Error subcode:</dt>
          <dd>
            <t>This 1-octet unsigned integer provides more specific
   information about the nature of the reported error.  Each Error
   Code may have one or more Error Subcodes associated with it.
   If no appropriate Error Subcode is defined, then a zero
   (Unspecific) value is used for the Error Subcode field.
   The following subcodes are defined by this document. The authoritative
   list is maintained by IANA, see <xref target="iana"/>:</t>
          </dd>
        </dl>
        <t>Message Header Error subcodes:</t>
        <table>
          <name>Message Header Error subcodes</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Name</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">Unspecific</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">Connection Not Synchronized</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">Bad Message Length</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">Bad Message Type</td>
            </tr>
          </tbody>
        </table>
        <!-- XXX maybe adding the title makes the above titletext redundant -->

<t>OPEN Message Error subcodes:</t>
        <table>
          <name>OPEN Message Error subcodes</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Name</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">Unspecific</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">Unsupported Version Number</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">Bad Peer AS</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">Bad BGP Identifier</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">Unsupported Optional Parameter</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">[Deprecated - see <xref target="RFC4271"/> Appendix A]</td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">Unacceptable Hold Time</td>
            </tr>
          </tbody>
        </table>
        <t>UPDATE Message Error subcodes:</t>
        <table>
          <name>UPDATE Message Error subcodes</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Name</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">Unspecific</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">Malformed Attribute List</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">Unrecognized Well-known Attribute (deprecated)</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">Missing Well-known Attribute (deprecated)</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">Attribute Flags Error (deprecated)</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">Attribute Length Error (deprecated)</td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">Invalid ORIGIN Attribute (deprecated)</td>
            </tr>
            <tr>
              <td align="left">7</td>
              <td align="left">[Deprecated - see <xref target="RFC4271"/> Appendix A]</td>
            </tr>
            <tr>
              <td align="left">8</td>
              <td align="left">Invalid NEXT_HOP Attribute (deprecated)</td>
            </tr>
            <tr>
              <td align="left">9</td>
              <td align="left">Optional Attribute Error (deprecated)</td>
            </tr>
            <tr>
              <td align="left">10</td>
              <td align="left">Invalid Network Field</td>
            </tr>
            <tr>
              <td align="left">11</td>
              <td align="left">Malformed AS_PATH (deprecated)</td>
            </tr>
          </tbody>
        </table>
        <t>Subcodes 2-6, 8, 9, and 11 were defined by RFC 4271 but are no longer
generated by the error handling procedures specified in this document.</t>
        <t>Finite State Machine Error Subcodes:</t>
        <table>
          <name>Finite State Machine Error Subcodes</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Name</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">Unspecified Error</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">Receive Unexpected Message in OpenSent State</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">Receive Unexpected Message in OpenConfirm State</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">Receive Unexpected Message in Established State</td>
            </tr>
          </tbody>
        </table>
        <t>Cease Error Subcodes:</t>
        <table>
          <name>Cease Error Subcodes</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Name</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">Maximum Number of Prefixes Reached</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">Administrative Shutdown</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">Peer De-configured</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">Administrative Reset</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">Connection Rejected</td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">Other Configuration Change</td>
            </tr>
            <tr>
              <td align="left">7</td>
              <td align="left">Connection Collision Resolution</td>
            </tr>
            <tr>
              <td align="left">8</td>
              <td align="left">Out of Resources</td>
            </tr>
          </tbody>
        </table>
        <dl>
          <dt>Data:</dt>
          <dd>
            <t>This variable-length field is used to diagnose the reason for
   the NOTIFICATION.  The contents of the Data field depend upon
   the Error Code and Error Subcode.  See <xref target="errorhandling"/> for more
   details.</t>
          </dd>
          <dt/>
          <dd>
            <t>Note that the length of the Data field can be determined from
   the message Length field by the formula:</t>
            <artwork><![CDATA[
    Message Length = 21 + Data Length
]]></artwork>
          </dd>
        </dl>
        <t>The minimum length of the NOTIFICATION message is 21 octets
(including message header).</t>
      </section>
    </section>
    <section anchor="pathattributes">
      <name>Path Attributes</name>
      <t>This section discusses the path attributes of the UPDATE message.</t>
      <t>BGP implementations <bcp14>MUST</bcp14> recognize ORIGIN, AS_PATH, NEXT_HOP, 
LOCAL_PREF, and ATOMIC_AGGREGATE.</t>
      <t>In addition to these, whose use is described below, each path <bcp14>MAY</bcp14> also
contain one or more optional attributes.  It is not required or expected
that all BGP implementations support all optional attributes.  The
handling of an unrecognized optional attribute is determined by the
setting of the Transitive bit in the attribute flags octet.  Paths with
unrecognized optional transitive attributes <bcp14>SHOULD</bcp14> be accepted.  If a
path with an unrecognized optional transitive attribute is accepted and
passed to other BGP peers, then the unrecognized optional transitive
attribute of that path <bcp14>MUST</bcp14> be passed, along with the path, to other BGP
peers with the Partial bit in the Attribute Flags octet set to 1.  If a
path with a recognized, optional transitive attribute is accepted and
passed along to other BGP peers and the Partial bit in the Attribute
Flags octet is set to 1 by some previous AS, it <bcp14>MUST NOT</bcp14> be set back to
0 by the current AS.  Unrecognized optional non-transitive attributes
<bcp14>MUST</bcp14> be quietly ignored and not passed along to other BGP peers.</t>
      <t>Optional transitive attributes <bcp14>MAY</bcp14> be attached to the path by
the originator or by any other BGP speaker in the path.  The rules 
for attaching optional non-transitive attributes will depend on the
nature of the specific attribute.  The documentation of each
optional non-transitive attribute will be expected to include such rules
(the description of the MULTI_EXIT_DISC attribute gives an example). 
All optional attributes (both transitive and non-transitive), <bcp14>MAY</bcp14> be
updated (if appropriate) by BGP speakers in the path.</t>
      <t>The sender of an UPDATE message <bcp14>SHOULD</bcp14> order path attributes within
the UPDATE message in ascending order of attribute type.  The
receiver of an UPDATE message <bcp14>MUST</bcp14> be prepared to handle path
attributes within UPDATE messages that are out of order.</t>
      <t>The same attribute (attribute with the same type) cannot appear more
than once within the Path Attributes field of a particular UPDATE
message. <!-- xxx possibly make the weak 'cannot' into a MUST NOT -->
      </t>
      <section anchor="path-attribute-usage">
        <name>Path Attribute Usage</name>
        <t>The usage of each BGP path attribute is described in the following
clauses. Refer to <xref target="paerrs"/> for details regarding error handling
when processing path attributes.</t>
        <section anchor="origin">
          <name>ORIGIN</name>
          <t>ORIGIN <bcp14>MUST</bcp14> be included with every update.  The ORIGIN attribute is
generated by the speaker that originates the associated routing
information.  Its value <bcp14>SHOULD NOT</bcp14> be changed by any other speaker.</t>
          <t>An ORIGIN value not equal to one of the defined values of (0, 1, or 2)
(listed in <xref target="origin_values"/>) <bcp14>MUST NOT</bcp14> be sent.</t>
        </section>
        <section anchor="aspath">
          <name>AS_PATH</name>
          <t>AS_PATH <bcp14>MUST</bcp14> be included with every update.  This attribute
identifies the autonomous systems through which routing information
carried in this UPDATE message has passed.  The components of this
list can be AS_SETs or AS_SEQUENCEs. (Other segments and behaviors 
are added by <xref target="RFC5065"/>, if used.)</t>
          <t>When a BGP speaker propagates a route it learned from another BGP
speaker's UPDATE message, it modifies the route's AS_PATH attribute
based on the location of the BGP speaker to which the route will be
sent:</t>
          <ol spacing="normal" type="%c)"><li>
              <t>When a given BGP speaker advertises the route to an internal peer, the advertising speaker <bcp14>SHALL NOT</bcp14> modify the AS_PATH attribute associated with the route.</t>
            </li>
            <li>
              <t>When a given BGP speaker advertises the route to an external peer, the advertising speaker updates the AS_PATH attribute as follows:  </t>
              <ol spacing="normal" type="1"><li>
                  <t>if the first path segment of the AS_PATH is of type
 AS_SEQUENCE, the local system prepends its own AS number as
 the last element of the sequence (put it in the leftmost
 position with respect to the position of octets in the
 protocol message).  If the act of prepending will cause an
 overflow in the AS_PATH segment (i.e., more than 255 ASes),
 it <bcp14>MUST</bcp14> prepend a new segment of type AS_SEQUENCE and
 prepend its own AS number to this new segment.</t>
                </li>
                <li>
                  <t>if the first path segment of the AS_PATH is of type AS_SET,
 the local system prepends a new path segment of type
 AS_SEQUENCE to the AS_PATH, including its own AS number in
 that segment.</t>
                </li>
                <li>
                  <t>if the AS_PATH is empty, the local system creates a path
 segment of type AS_SEQUENCE, places its own AS into that
 segment, and places that segment into the AS_PATH.</t>
                </li>
              </ol>
            </li>
          </ol>
          <t>When a BGP speaker originates a route then:</t>
          <ol spacing="normal" type="%c)"><li>
              <t>the originating speaker includes its own AS number in a path
 segment, of type AS_SEQUENCE, in the AS_PATH attribute of any
 UPDATE message sent to an external peer.  In this case, the AS
 number of the originating speaker's autonomous system will be
 the only entry in the path segment, and this path segment will be
 the only segment in the AS_PATH attribute.</t>
            </li>
            <li>
              <t>the originating speaker includes an empty AS_PATH attribute in
 any UPDATE message sent to an internal peer.  (An empty AS_PATH
 attribute is one whose length field contains the value zero).</t>
            </li>
          </ol>
          <t>Whenever the modification of the AS_PATH attribute calls for
including or prepending the AS number of the local system, the local
system <bcp14>MAY</bcp14> include/prepend more than one instance of its own AS
number in the AS_PATH attribute.  This is controlled via local
configuration.</t>
          <t>The AS number 0 <bcp14>MUST NOT</bcp14> be added to the AS_PATH; see <xref target="own-asn"/>. The
advertised AS_PATH <bcp14>MUST NOT</bcp14> contain an AS_SET unless AS_SET propagation 
has been enabled by local configuration.</t>
        </section>
        <section anchor="nexthop">
          <name>NEXT_HOP</name>
          <t>The NEXT_HOP <bcp14>MUST</bcp14> be included with every update, unless the encoding of
<xref target="RFC4760"/> is in use. It defines the IP address of the router that
<bcp14>SHOULD</bcp14> be used as the next hop to the destinations listed in the UPDATE
message.  The NEXT_HOP attribute is calculated as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>When sending a message to an internal peer, if the route is not
locally originated, the BGP speaker <bcp14>SHOULD NOT</bcp14> modify the
NEXT_HOP attribute unless it has been explicitly configured to
announce its own IP address as the NEXT_HOP.  When announcing a
locally-originated route to an internal peer, the BGP speaker
<bcp14>SHOULD</bcp14> use the interface address of the router through which
the announced network is reachable for the speaker as the
NEXT_HOP.  If the route is directly connected to the speaker,
or if the interface address of the router through which the
announced network is reachable for the speaker is the internal
peer's address, then the BGP speaker <bcp14>SHOULD</bcp14> use its own IP
address for the NEXT_HOP attribute (the address of the
interface that is used to reach the peer).</t>
            </li>
            <li>
              <t>When sending a message to an external peer, X, and the peer is
one IP hop away from the speaker:  </t>
              <ul spacing="normal">
                <li>
                  <t>If the route being announced was learned from an internal
peer or is locally originated, the BGP speaker can use an
interface address of the internal peer router (or the
internal router) through which the announced network is
reachable for the speaker for the NEXT_HOP attribute,
provided that peer X shares a common subnet with this
address.  This is a form of "third party" NEXT_HOP attribute.</t>
                </li>
                <li>
                  <t>Otherwise, if the route being announced was learned from an
external peer, the speaker can use an IP address of any
adjacent router (known from the received NEXT_HOP attribute)
that the speaker itself uses for local route calculation in
the NEXT_HOP attribute, provided that peer X shares a common
subnet with this address.  This is a second form of "third
party" NEXT_HOP attribute.</t>
                </li>
                <li>
                  <t>Otherwise, if the external peer to which the route is being
advertised shares a common subnet with one of the interfaces
of the announcing BGP speaker, the speaker <bcp14>MAY</bcp14> use the IP
address associated with such an interface in the NEXT_HOP
attribute.  This is known as a "first party" NEXT_HOP
attribute.</t>
                </li>
                <li>
                  <t>By default (if none of the above conditions apply), the BGP
speaker <bcp14>SHOULD</bcp14> use the IP address of the interface that the
speaker uses to establish the BGP connection to peer X in the
NEXT_HOP attribute.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>When sending a message to an external peer X, and the peer is
multiple IP hops away from the speaker (aka "multihop EBGP"):  </t>
              <ul spacing="normal">
                <li>
                  <t>The speaker <bcp14>MAY</bcp14> be configured to propagate the NEXT_HOP
attribute.  In this case, when advertising a route that the
speaker learned from one of its peers, the NEXT_HOP attribute
of the advertised route is exactly the same as the NEXT_HOP
attribute of the learned route (the speaker does not modify
the NEXT_HOP attribute).</t>
                </li>
                <li>
                  <t>By default, the BGP speaker <bcp14>SHOULD</bcp14> use the IP address of the
interface that the speaker uses to establish the BGP connection
to peer X in the NEXT_HOP attribute.</t>
                </li>
              </ul>
            </li>
          </ol>
          <t>Normally, the NEXT_HOP attribute is chosen such that the shortest
available path will be taken.  A BGP speaker <bcp14>MUST</bcp14> be able to support
disabling the advertisement of third party NEXT_HOP attributes in
order to handle imperfectly bridged media.</t>
          <t>A route originated by a BGP speaker <bcp14>SHALL NOT</bcp14> be advertised to a peer
using an address of that peer as NEXT_HOP.  A BGP speaker <bcp14>SHALL NOT</bcp14>
install a route with itself as the next hop.</t>
          <t>The NEXT_HOP attribute is used by the BGP speaker to determine the
actual outbound interface and immediate next-hop address 
used to forward transit packets to the associated destinations.</t>
          <t>The immediate next-hop address is determined by performing a
recursive route lookup operation for the IP address in the NEXT_HOP
attribute, using the contents of the Routing Table, selecting one
entry if multiple entries of equal cost exist.  The Routing Table
entry that resolves the IP address in the NEXT_HOP attribute will
always specify the outbound interface.  If the entry specifies an
attached subnet, but does not specify a next-hop address, then the
address in the NEXT_HOP attribute <bcp14>SHOULD</bcp14> be used as the immediate
next-hop address.  If the entry also specifies the next-hop address,
this address <bcp14>SHOULD</bcp14> be used as the immediate next-hop address for
packet forwarding.</t>
        </section>
        <section anchor="med">
          <name>MULTI_EXIT_DISC</name>
          <t>The MULTI_EXIT_DISC is an optional non-transitive attribute that is
intended to be used on external (inter-AS) links to discriminate
among multiple exit points to reach the same neighboring AS.  The
value of the MULTI_EXIT_DISC attribute is a four-octet unsigned
number, called a metric.  All other factors being equal, the exit
point with the lower metric is preferred.  If received over
EBGP, the MULTI_EXIT_DISC attribute <bcp14>MAY</bcp14> be propagated over IBGP to
other BGP speakers within the same AS (see also <xref target="phase2tiebreak"/>).  The
MULTI_EXIT_DISC attribute received from a neighboring AS <bcp14>MUST NOT</bcp14> be
propagated to other neighboring ASes.</t>
          <t>A BGP speaker <bcp14>MUST</bcp14> implement a mechanism (based on local
configuration) that allows the MULTI_EXIT_DISC attribute to be
removed from a route.  If a BGP speaker is configured to remove the
MULTI_EXIT_DISC attribute from a route, then this removal <bcp14>MUST</bcp14> be
done prior to determining the degree of preference of the route and
prior to performing route selection (Decision Process phases 1 and
2).</t>
          <t>An implementation <bcp14>MAY</bcp14> also (based on local configuration) alter the
value of the MULTI_EXIT_DISC attribute received over EBGP.  If a BGP
speaker is configured to alter the value of the MULTI_EXIT_DISC
attribute received over EBGP, then altering the value <bcp14>MUST</bcp14> be done
prior to determining the degree of preference of the route and prior
to performing route selection (Decision Process phases 1 and 2).  See
<xref target="phase2tiebreak"/> for necessary restrictions on this.</t>
        </section>
        <section anchor="localpref">
          <name>LOCAL_PREF</name>
          <t>LOCAL_PREF <bcp14>SHALL</bcp14> be included in all UPDATE messages that a given BGP
speaker sends to other internal peers.  A BGP speaker <bcp14>SHALL</bcp14> calculate
the degree of preference for each external route based on the
locally-configured policy, and include the degree of preference when
advertising a route to its internal peers.  The higher degree of
preference <bcp14>MUST</bcp14> be preferred. A BGP speaker uses the degree of
preference learned via LOCAL_PREF in its Decision Process (see
<xref target="phase1"/>).</t>
          <t>A BGP speaker <bcp14>MUST NOT</bcp14> include this attribute in UPDATE messages it
sends to external peers, except in the case of BGP Confederations
<xref target="RFC5065"/>.</t>
        </section>
        <section anchor="atomic">
          <name>ATOMIC_AGGREGATE</name>
          <!-- xxx Aggregation behavior is currently specified both here and
in "Aggregating Routing Information". Consider restructuring so
that normative aggregation requirements appear in only one place. -->

<t>When a BGP speaker aggregates several routes for the purpose of
advertisement to a particular peer, the AS_PATH of the aggregated route
might exclude some of the AS numbers present in the constituent routes.</t>
          <t>If an aggregate excludes at least some of the AS numbers present in the
AS_PATH of the routes that are aggregated, the aggregated route, when
advertised to the peer, <bcp14>SHOULD</bcp14> <!-- consider upgrading to MUST -->
include the ATOMIC_AGGREGATE attribute.</t>
          <t>A BGP speaker that receives a route with the ATOMIC_AGGREGATE
attribute <bcp14>SHOULD NOT</bcp14> remove the attribute when propagating the route
to other speakers. <!-- same here -->
          </t>
          <t>A BGP speaker that receives a route with the ATOMIC_AGGREGATE
attribute <bcp14>MUST NOT</bcp14> make any NLRI of that route more specific (as
defined in <xref target="overlap"/>) when advertising this route to other BGP speakers.</t>
          <t>A BGP speaker that receives a route with the ATOMIC_AGGREGATE
attribute needs to be aware of the fact that the actual path to
destinations, as specified in the NLRI of the route, while having the
loop-free property, may not be the path specified in the AS_PATH
attribute of the route.</t>
        </section>
        <section anchor="aggregator">
          <name>AGGREGATOR</name>
          <t>AGGREGATOR is an optional transitive attribute, which <bcp14>MAY</bcp14> be included in
updates that are formed by aggregation (see <xref target="aggregating"/>).  A BGP
speaker that performs route aggregation <bcp14>MAY</bcp14> add the AGGREGATOR
attribute, which <bcp14>SHALL</bcp14> contain its own AS number and BGP Identifier.</t>
          <t><xref target="RFC6793"/> modifies the format of the AGGREGATOR attribute 
to support four-octet AS numbers.</t>
        </section>
      </section>
    </section>
    <section anchor="errorhandling">
      <name>BGP Error Handling</name>
      <t>This section describes actions to be taken when errors are detected
while processing BGP messages. In states other than Established,
any error is treated as fatal. In Established state, some errors 
are treated as non-fatal; this is discussed in more detail in
<xref target="updatemsgerr"/>.</t>
      <section anchor="fatalerrors">
        <name>Fatal Error Handling</name>
        <t>When any of the conditions described here are detected, for any
Message Header error, or an error in any message type other than the 
UPDATE message, a
NOTIFICATION message, with the indicated Error Code, Error Subcode,
and Data fields, is sent, and the BGP connection is closed (unless it
is explicitly stated that no NOTIFICATION message is to be sent and
the BGP connection is not to be closed).  If no Error Subcode is
specified, then a zero <bcp14>MUST</bcp14> be used. For errors affecting the UPDATE
message, see further details in <xref target="updatemsgerr"/>.</t>
        <t>The phrase "the BGP connection is closed" means the TCP connection
has been closed, the associated Adj-RIB-In has been cleared, and all
resources for that BGP connection have been deallocated.  Entries in
the Loc-RIB associated with the remote peer are marked as invalid.
The local system recalculates its best routes for the destinations of
the routes marked as invalid.  Before the invalid routes are deleted
from the system, it advertises, to its peers, either withdraws for
the routes marked as invalid, or the new best routes.</t>
        <t>Unless specified explicitly, the Data field of the NOTIFICATION
message that is sent to indicate an error is empty.</t>
      </section>
      <section anchor="msgheadererr">
        <name>Message Header Error Handling</name>
        <t>All errors detected while processing the Message Header <bcp14>MUST</bcp14> be
indicated by sending the NOTIFICATION message with the Error Code
Message Header Error.  The Error Subcode elaborates on the specific
nature of the error.</t>
        <t>The expected value of the Marker field of the message header is all
ones.  If the Marker field of the message header is not as expected,
then a synchronization error has occurred and the Error Subcode <bcp14>MUST</bcp14>
be set to Connection Not Synchronized.</t>
        <t>If at least one of the following is true:</t>
        <ul spacing="normal">
          <li>
            <t>if the Length field of the message header is less than 19 or
greater than 4096 (the upper limit is modified by <xref target="RFC8654"/>, if
used), or</t>
          </li>
          <li>
            <t>if the Length field of an OPEN message is less than the minimum
length of the OPEN message, or</t>
          </li>
          <li>
            <t>if the Length field of an UPDATE message is less than the
minimum length of the UPDATE message, or</t>
          </li>
          <li>
            <t>if the Length field of a KEEPALIVE message is not equal to 19,
or</t>
          </li>
          <li>
            <t>if the Length field of a NOTIFICATION message is less than the
minimum length of the NOTIFICATION message,</t>
          </li>
        </ul>
        <t>then the Error Subcode <bcp14>MUST</bcp14> be set to Bad Message Length.  The Data
field <bcp14>MUST</bcp14> contain the erroneous Length field.</t>
        <t>If the Type field of the message header is not recognized, then the
Error Subcode <bcp14>MUST</bcp14> be set to Bad Message Type.  The Data field <bcp14>MUST</bcp14>
contain the erroneous Type field.</t>
      </section>
      <section anchor="openmsgerr">
        <name>OPEN Message Error Handling</name>
        <t>All errors detected while processing the OPEN message <bcp14>MUST</bcp14> be
indicated by sending the NOTIFICATION message with the Error Code
OPEN Message Error.  The Error Subcode elaborates on the specific
nature of the error.</t>
        <t>If the version number in the Version field of the received OPEN
message is not supported, then the Error Subcode <bcp14>MUST</bcp14> be set to
Unsupported Version Number.  The Data field is a 2-octet unsigned
integer, which indicates the largest, locally-supported version
number less than the version the remote BGP peer bid (as indicated in
the received OPEN message), or if the smallest, locally-supported
version number is greater than the version the remote BGP peer bid,
then the smallest, locally-supported version number.</t>
        <t>If the Autonomous System field of the OPEN message is unacceptable, then
the Error Subcode <bcp14>MUST</bcp14> be set to Bad Peer AS.  Autonomous System number
0 is unacceptable. Beyond this requirement, the determination of
acceptable Autonomous System numbers is outside the scope of this
protocol.</t>
        <t>If the Hold Time field of the OPEN message is unacceptable, then the
Error Subcode <bcp14>MUST</bcp14> be set to Unacceptable Hold Time.  An
implementation <bcp14>MUST</bcp14> reject Hold Time values of one or two seconds.
An implementation <bcp14>MAY</bcp14> reject any proposed Hold Time.  An
implementation that accepts a Hold Time <bcp14>MUST</bcp14> use the negotiated value
for the Hold Time.</t>
        <t>If the BGP Identifier field of the OPEN message is zero, or if it
is the same as the BGP Identifier of the local BGP speaker and the
message is from an internal peer, then the Error Subcode is set to
"Bad BGP Identifier".</t>
        <t>If one of the Optional Parameters in the OPEN message is not
recognized, then the Error Subcode <bcp14>MUST</bcp14> be set to Unsupported
Optional Parameters. Note that a peer that does not support the
extended OPEN format defined in this specification (<xref target="openfmt-ext"/>) would
send such an error in response to receipt of an OPEN message that uses
the extended format.</t>
        <t>If an Optional Parameter with type code 255 is encountered in any
position other than that depicted as "Non-Ext OP Type" in <xref target="ext-open"/>
it <bcp14>MUST</bcp14> be treated as an unrecognized Optional Parameter and handled per
the above paragraph.</t>
        <t>If one of the Optional Parameters in the OPEN message is recognized,
but is malformed, then the Error Subcode <bcp14>MUST</bcp14> be set to 0
(Unspecific).</t>
      </section>
      <section anchor="updatemsgerr">
        <name>UPDATE Message Error Handling</name>
        <t>Because resets of sessions that have reached Established state and
exchanged many routes can be costly to recover from and have far-reaching
impact, other error-handling approaches are used when feasible; these are
detailed below.</t>
        <t>An implementation <bcp14>MAY</bcp14> offer a configuration option to disable this more
lenient error-handling and revert to the reset behavior that was
specified in <xref target="RFC4271"/>. If such a configuration option is offered, it
<bcp14>MUST</bcp14> be disabled by default (i.e. the behavior specified below must be
enabled by default). Furthermore, if offered, it is suggested that its
scope be limited (for example, to a given AFI/SAFI or a given session)
by default.</t>
        <t>In the procedures below, reference is made to AFI, SAFI, MP_REACH_NLRI,
and MP_UNREACH_NLRI. These are specified in <xref target="RFC4760"/>; additionally,
brief definitions can be found in <xref target="definitions"/>. Although they are
defined outside this specification, they are discussed here because 
they are integral to the procedures defined in this section.</t>
        <section anchor="errapproaches">
          <name>Error-Handling Approaches</name>
          <t>In this document, we refer to four different approaches to handle path
attribute errors.  They are as follows (listed in order, from the one with
the "strongest" action to the one with the "weakest" action). Actions
other than "session reset" apply only to errors found in an UPDATE
message.</t>
          <ul spacing="normal">
            <li>
              <t>Session reset: A fatal error. A NOTIFICATION is sent and the session
terminated, as described in <xref target="fatalerrors"/>.</t>
            </li>
            <li>
              <t>AFI/SAFI disable: Section 7 of <xref target="RFC4760"/> allows a BGP speaker that
detects an error in a message for a given AFI/SAFI to optionally "ignore
all the subsequent routes with that AFI/SAFI received over that
session".  We refer to this as "disabling a particular AFI/SAFI" or
"AFI/SAFI disable".
 <!-- XXX but we haven't introduced the concept of afi/safi -->
 <!-- XXX revise this -->
              </t>
            </li>
            <li>
              <t>Treat-as-withdraw: In this approach, the UPDATE message containing the
path attribute in question <bcp14>MUST</bcp14> be treated as though all contained
routes had been withdrawn just as if they had been listed in the
Withdrawn Routes field (or in the MP_UNREACH_NLRI attribute if
appropriate) of the UPDATE message, thus causing them to be removed from
the Adj-RIB-In according to the procedures of <xref target="updatemsg"/>. For this
approach to be used, the NLRI need to be successfully parsed; this is
discussed in more detail in <xref target="nlrisyntax"/>.</t>
            </li>
            <li>
              <t>Attribute discard: In this approach, the malformed path attribute <bcp14>MUST</bcp14>
be discarded and the UPDATE message continues to be processed. This
approach <bcp14>MUST NOT</bcp14> be used except in the case of an attribute that has no
effect on route selection or installation.</t>
            </li>
          </ul>
        </section>
        <section anchor="path-attribute-length-fields">
          <name>Path Attribute Length Fields</name>
          <t>There are two error cases in which the Total Attribute Length value can
conflict with the enclosed path attributes, which themselves carry
length values:</t>
          <ul spacing="normal">
            <li>
              <t>In the first case, the length of the last encountered path attribute
would cause the Total Attribute Length to be exceeded when parsing the
enclosed path attributes.</t>
            </li>
            <li>
              <t>In the second case, fewer than three octets remain (or fewer than four
octets, if the Attribute Flags field has the Extended Length bit set)
when beginning to parse the attribute.  That is, this case exists if
there remains unconsumed data in the path attributes but yet
insufficient data to encode a single minimum- sized path attribute.</t>
            </li>
          </ul>
          <t>In either of these cases, an error condition exists and the "treat-
as-withdraw" approach <bcp14>MUST</bcp14> be used (unless some other, more severe error
is encountered dictating a stronger approach), and the Total Attribute
Length <bcp14>MUST</bcp14> be relied upon to enable the beginning of the NLRI field to
be located.</t>
          <t>For all path attributes other than those specified as having an
attribute length that may be zero, it <bcp14>SHALL</bcp14> be considered a syntax error <!-- xxx is this needed? as clear as possible? -->
for the attribute to have a length of zero.  Of the path attributes
considered in this specification, only AS_PATH and ATOMIC_AGGREGATE can
validly have an attribute length of zero.</t>
        </section>
        <section anchor="nlrisyntax">
          <name>Parsing of Network Layer Reachability Information (NLRI) Fields</name>
          <section anchor="encoding-nlri">
            <name>Encoding NLRI</name>
            <t>To facilitate the determination of the NLRI field in an UPDATE message
with a malformed attribute:</t>
            <ul spacing="normal">
              <li>
                <t>The MP_REACH_NLRI or MP_UNREACH_NLRI attribute (if present) <bcp14>SHALL</bcp14> be
encoded as the very first path attribute in an UPDATE message.</t>
              </li>
              <li>
                <t>An UPDATE message <bcp14>MUST NOT</bcp14> contain more than one of the following:
non-empty Withdrawn Routes field, non-empty Network Layer Reachability
Information field, MP_REACH_NLRI attribute, and MP_UNREACH_NLRI
attribute. <!-- xxx make sure that the field restrictions are reflected
in the relevant field definitions. -->
                </t>
              </li>
            </ul>
            <t>Since older BGP speakers might not implement these restrictions, an
implementation <bcp14>MUST</bcp14> still be prepared to receive these fields in any
position or combination.</t>
            <t>If the legacy IPv4 encoding is used, the NLRI field for the IPv4
unicast address family is carried immediately following all the
attributes in an UPDATE message.  When such an UPDATE message is
received, the location of the NLRI field can be determined using the
Message Length, Withdrawn Route Length, and Total Attribute Length (when
they are consistent) carried in the message instead of relying on the
length of individual attributes in the message.</t>
          </section>
          <section anchor="missing-nlri">
            <name>Missing NLRI</name>
            <t><xref target="RFC4724"/> specifies an End-of-RIB message (EoR) that can be encoded as
an UPDATE message that contains only an MP_UNREACH_NLRI attribute that
encodes no NLRI (it can also be a completely empty UPDATE message in the
case of the legacy IPv4 encoding).  In all other well-specified cases, an
UPDATE message either carries only withdrawn routes (either in the
Withdrawn Routes field or the MP_UNREACH_NLRI attribute) or it
advertises reachable routes (either in the Network Layer Reachability
Information field or the MP_REACH_NLRI attribute).</t>
            <t>Thus, if an UPDATE message is encountered that does contain path
attributes other than MP_UNREACH_NLRI and doesn't encode any reachable
NLRI, we cannot be confident that the NLRI have been successfully
parsed. For this reason, if any path attribute errors are encountered in
such an UPDATE message and if any encountered error specifies an
error-handling approach other than "attribute discard", then the
"session reset" approach <bcp14>MUST</bcp14> be used.</t>
          </section>
          <section anchor="syntactic-correctness-of-nlri-fields">
            <name>Syntactic Correctness of NLRI Fields</name>
            <t>The NLRI field or Withdrawn Routes field <bcp14>SHALL</bcp14> be considered
"syntactically incorrect" if either of the following is true:</t>
            <ul spacing="normal">
              <li>
                <t>The length of any of the included NLRI is greater than 32.</t>
              </li>
              <li>
                <t>When parsing NLRI contained in the field, the length of the last NLRI
found exceeds the amount of unconsumed data remaining in the field.</t>
              </li>
            </ul>
            <t>Similarly, an MP_REACH_NLRI or MP_UNREACH_NLRI attribute 
<bcp14>SHALL</bcp14> be considered to be incorrect if any of the following are true:</t>
            <ul spacing="normal">
              <li>
                <t>The length of any of the included NLRI is inconsistent with the given
AFI/SAFI (for example, if an IPv4 NLRI has a length greater than 32 or
an IPv6 NLRI has a length greater than 128).</t>
              </li>
              <li>
                <t>When parsing NLRI contained in the attribute, the length of the last
NLRI found exceeds the amount of unconsumed data remaining in the
attribute.</t>
              </li>
              <li>
                <t>The attribute flags of the attribute are inconsistent with those
specified in <xref target="RFC4760"/>.</t>
              </li>
              <li>
                <t>The length of the MP_UNREACH_NLRI attribute is less than 3, or the
length of the MP_REACH_NLRI attribute is less than 5.</t>
              </li>
            </ul>
          </section>
          <section anchor="typed-nlri">
            <name>Typed NLRI</name>
            <t>Certain address families, for example, MCAST-VPN <xref target="RFC6514"/>, MCAST-VPLS
<xref target="RFC7117"/>, and EVPN <xref target="RFC7432"/> have NLRI that are typed.  Since
supported type values within the address family are not expressed in the
Multiprotocol BGP (MP-BGP) capability <xref target="RFC4760"/>, it is possible for a
BGP speaker to advertise support for the given address family and
subaddress family while still not supporting a particular type of NLRI
within that AFI/SAFI.</t>
            <t>A BGP speaker advertising support for such a typed address family <bcp14>MUST</bcp14>
handle routes with unrecognized NLRI types within that address family by
discarding them, unless the relevant specification for that address
family specifies otherwise.</t>
          </section>
        </section>
        <section anchor="rules-for-processing-update-messages">
          <name>Rules for Processing UPDATE Messages</name>
          <t>An error for which a session reset is specified <bcp14>MUST</bcp14> be indicated by
sending the NOTIFICATION message with the Error Code UPDATE Message
Error.  The error subcode elaborates on the specific nature of the
error.</t>
          <t>Error checking of an UPDATE message begins by examining the path
attributes.  If the Withdrawn Routes Length or Total Attribute Length
is too large (i.e., if Withdrawn Routes Length + Total Attribute
Length + 23 exceeds the message Length), the "session reset" approach
is used. The Error Subcode <bcp14>MUST</bcp14> be set to Malformed Attribute List.</t>
          <t>If the value of either the Optional or Transitive bits in the Attribute
Flags conflicts with their specified values, then the attribute <bcp14>MUST</bcp14> be
treated as malformed and the "treat-as-withdraw" approach used, unless
the specification for the attribute mandates different handling for
incorrect Attribute Flags.</t>
          <t>If any attribute is received with its Optional bit clear, but is not 
recognized, the "treat-as-withdraw" approach <bcp14>MUST</bcp14> be used.</t>
          <t>Type-specific error handling procedures for attributes specified in this
document are given in <xref target="paerrs"/>. If an optional attribute is
recognized, then the error handling specified for that attribute must be
performed.</t>
          <t>If the MP_REACH_NLRI attribute or the MP_UNREACH_NLRI <xref target="RFC4760"/>
attribute appears more than once in the UPDATE message, then a
NOTIFICATION message <bcp14>MUST</bcp14> be sent with the Error Subcode "Malformed
Attribute List".  If any other attribute (whether recognized or
unrecognized) appears more than once in an UPDATE message, then all the
occurrences of the attribute other than the first one <bcp14>SHALL</bcp14> be discarded
and the UPDATE message will continue to be processed.</t>
          <t>The NLRI and Withdrawn Routes fields in the UPDATE message are checked
for syntactic validity per <xref target="nlrisyntax"/>.  If either field is syntactically
incorrect, then a NOTIFICATION message <bcp14>MUST</bcp14> be sent with the Error
Subcode Invalid Network Field.  <!-- could cover MP_ _NLRI here too -->
          </t>
          <t>If a prefix in the NLRI field is semantically incorrect (e.g., an
unexpected multicast IP address), an error <bcp14>SHOULD</bcp14> be logged locally,
and the prefix <bcp14>SHOULD</bcp14> be ignored. <!-- this is ok as written because it's the *prefix* that's 
being ignored, so it could never have been accepted to begin with, so
there's nothing to t-a-w -->
          </t>
          <t>An UPDATE message that contains correct path attributes, but no NLRI,
<bcp14>SHALL</bcp14> be treated as a valid UPDATE message.</t>
        </section>
        <section anchor="paerrs">
          <name>Error-Handling Procedures for Path Attributes</name>
          <t>The following subsections elaborate on the conditions for error-checking
various path attributes and specify what approach(es) should be used to
handle malformations.  It is possible that implementations may apply
other error checks not contemplated here. If so, the error handling
approach given here should generally be applied.</t>
          <section anchor="origin-error-handling">
            <name>ORIGIN Error Handling</name>
            <!-- I wanted to just call this subsection "ORIGIN", similarly for
 the following subsections. But that appeared to give the tooling 
 fits; apparently it doesn't like duplicate section titles? It's OK
 to leave it as it is now, but it would be nicer (IMO) if there were
 a way to revert to the terser title. It's contextualized by the 
 parent section, after all. -->

<t>The attribute is considered malformed if its length is not 1 or if it
has an undefined value.</t>
            <t>An UPDATE message with a malformed ORIGIN attribute, or with a missing
ORIGIN attribute, <bcp14>SHALL</bcp14> be handled using the approach of
"treat-as-withdraw".</t>
          </section>
          <section anchor="aspath-error-handling">
            <name>AS_PATH Error Handling</name>
            <t>An AS_PATH is considered malformed if it contains AS 0 in any position.
It is considered malformed if it contains an AS_SET unless acceptance
of AS_SETS has been enabled by local configuration. It is also
considered malformed if an unrecognized segment type is encountered or
if it contains a malformed segment.  A segment is considered malformed
if any of the following are true:</t>
            <ul spacing="normal">
              <li>
                <t>There is an overrun where the Path Segment Length field of the last
segment encountered would cause the Attribute Length to be exceeded.</t>
              </li>
              <li>
                <t>There is an underrun where after the last successfully parsed segment
there is only a single octet remaining (that is, there is not enough
unconsumed data to provide even an empty segment header).</t>
              </li>
              <li>
                <t>It has a Path Segment Length field of zero.</t>
              </li>
            </ul>
            <t>An UPDATE message with a malformed AS_PATH attribute, or with a missing
AS_PATH attribute, <bcp14>SHALL</bcp14> be handled using the approach of 
"treat-as-withdraw". <!-- but bgpsec changes this -->
            </t>
            <t>If the UPDATE message is received from an external peer, the local
system <bcp14>MAY</bcp14> check whether the leftmost (with respect to the position of
octets in the protocol message) AS in the AS_PATH attribute is equal to
the autonomous system number of the peer that sent the message.  If the
check determines this is not the case, the attribute <bcp14>MUST</bcp14> be treated as
malformed and the "treat-as-withdraw" approach used (unless this default
is overridden by configuration).  This is a case of semantic, not
syntactic, invalidity.</t>
          </section>
          <section anchor="nexthop-error-handling">
            <name>NEXT_HOP Error Handling</name>
            <t>The attribute is considered malformed if its length is not 4.</t>
            <t>If the NEXT_HOP attribute field is syntactically incorrect (does not
represent a valid IP host address), the attribute <bcp14>MUST</bcp14> be treated as
malformed.</t>
            <t>An UPDATE message with a malformed NEXT_HOP attribute <bcp14>SHALL</bcp14> be handled
using the approach of "treat-as-withdraw". If the NEXT_HOP attribute
is missing, and if the UPDATE message uses the IPv4 legacy encoding, then
the update <bcp14>SHALL</bcp14> use the "treat-as-withdraw" approach.</t>
            <t>The IP address in the NEXT_HOP <bcp14>MUST</bcp14> meet the following criteria to be
considered semantically correct:</t>
            <ol spacing="normal" type="%c)"><li>
                <t>It <bcp14>MUST NOT</bcp14> be the IP address of the receiving speaker.</t>
              </li>
              <li>
                <t>In the case of EBGP, where the sender and receiver are one
 IP hop away from each other, either the IP address in the
 NEXT_HOP <bcp14>MUST</bcp14> be the sender's IP address that is used to
 establish the BGP connection, or the interface associated with
 the NEXT_HOP IP address <bcp14>MUST</bcp14> share a common subnet with the
 receiving BGP speaker.</t>
              </li>
            </ol>
            <t>If the NEXT_HOP attribute is semantically incorrect, the error <bcp14>SHOULD</bcp14> be
logged, and the "treat-as-withdraw" approach used.</t>
          </section>
          <section anchor="multiexitdisc-error-handling">
            <name>MULTI_EXIT_DISC Error Handling</name>
            <t>The attribute is considered malformed if its length is not 4.</t>
            <t>An UPDATE message with a malformed MULTI_EXIT_DISC attribute <bcp14>SHALL</bcp14> be
handled using the approach of "treat-as-withdraw".</t>
          </section>
          <section anchor="localpref-error-handling">
            <name>LOCAL_PREF Error Handling</name>
            <t>If the attribute is received from an external neighbor, it <bcp14>SHALL</bcp14> be
discarded using the approach of "attribute discard".</t>
            <t>If the attribute is received from an internal neighbor, it <bcp14>SHALL</bcp14> be
considered malformed if its length is not equal to 4.  If malformed, the
UPDATE message <bcp14>SHALL</bcp14> be handled using the approach of "treat-as-
withdraw".</t>
          </section>
          <section anchor="atomicaggregate-error-handling">
            <name>ATOMIC_AGGREGATE Error Handling</name>
            <t>The attribute <bcp14>SHALL</bcp14> be considered malformed if its length is not 0.</t>
            <t>An UPDATE message with a malformed ATOMIC_AGGREGATE attribute <bcp14>SHALL</bcp14> be
handled using the approach of "attribute discard".</t>
          </section>
          <section anchor="aggregator-error-handling">
            <name>AGGREGATOR Error Handling</name>
            <t>The AGGREGATOR attribute <bcp14>SHALL</bcp14> be considered malformed if any of the
following applies:</t>
            <ul spacing="normal">
              <li>
                <t>Its length is not 6 (when the 4-octet AS number capability is not
advertised to or not received from the peer <xref target="RFC6793"/>).</t>
              </li>
              <li>
                <t>Its length is not 8 (when the 4-octet AS number capability is both
advertised to and received from the peer).</t>
              </li>
              <li>
                <t>The AS number it conveys is equal to 0.</t>
              </li>
            </ul>
            <t>An UPDATE message with a malformed AGGREGATOR attribute <bcp14>SHALL</bcp14> be handled
using the approach of "attribute discard".</t>
          </section>
        </section>
      </section>
      <section anchor="notification-message-error-handling">
        <name>NOTIFICATION Message Error Handling</name>
        <t>If a peer sends a NOTIFICATION message, and the receiver of the
message detects an error in that message, the receiver cannot use a
NOTIFICATION message to report this error back to the peer.  Any such
error (e.g., an unrecognized Error Code or Error Subcode) <bcp14>SHOULD</bcp14> be
noticed, logged locally, and brought to the attention of the
administration of the peer.  The means to do this, however, lies
outside the scope of this document.</t>
      </section>
      <section anchor="holdtimerexperr">
        <name>Hold Timer Expired Error Handling</name>
        <t>If a system does not receive successive KEEPALIVE, UPDATE, and/or
NOTIFICATION messages within the period specified in the Hold Time
field of the OPEN message, then the NOTIFICATION message with the
Hold Timer Expired Error Code is sent and the BGP connection is
closed.</t>
      </section>
      <section anchor="sendholdtimerexperr">
        <name>Send Hold Timer Expired Error Handling</name>
        <t>If the SendHoldTimer expires, then a NOTIFICATION message with the 
"Send Hold Timer Expired" Error Code <bcp14>MAY</bcp14> be sent and the BGP 
connection <bcp14>MUST</bcp14> be closed. Additionally, an error <bcp14>MUST</bcp14> be logged
in the local system, indicating the "Send Hold Timer Expired" Error 
Code.</t>
        <t>The subcode for NOTIFICATION message "Send Hold Timer Expired" is set
to 0 and is not used; no additional data is to be appended to the end
of a "Send Hold Timer Expired" NOTIFICATION message.</t>
      </section>
      <section anchor="fsmerr">
        <name>Finite State Machine Error Handling</name>
        <!-- need a variable for AS_SET support -->

<t>If a BGP speaker receives an unexpected message (e.g., 
KEEPALIVE/UPDATE/ROUTE-REFRESH message) on a session in OpenSent state,
it <bcp14>MUST</bcp14> send to the neighbor a NOTIFICATION message with the Error Code
Finite State Machine Error and the Error Subcode "Receive Unexpected
Message in OpenSent State".  The Data field is a 1-octet, unsigned
integer that indicates the type of the unexpected message.</t>
        <t>If a BGP speaker receives an unexpected message (e.g., 
OPEN/UPDATE/ROUTE-REFRESH message) on a session in OpenConfirm state, it
<bcp14>MUST</bcp14> send a NOTIFICATION message with the Error Code Finite State
Machine Error and the Error Subcode "Receive Unexpected Message in
OpenConfirm State" to the neighbor.  The Data field is a 1-octet,
unsigned integer that indicates the type of the unexpected message.</t>
        <t>If a BGP speaker receives an unexpected message (e.g., OPEN message)
on a session in Established State, it <bcp14>MUST</bcp14> send to the neighbor a
NOTIFICATION message with the Error Code Finite State Machine Error
and the Error Subcode "Receive Unexpected Message in Established
State".  The Data field is a 1-octet, unsigned integer that indicates
the type of the unexpected message.</t>
        <t>Any other error detected by the BGP Finite State Machine (e.g., receipt of
an unexpected event) is indicated by sending the NOTIFICATION message
with the Error Code Finite State Machine Error and the Error Subcode 
"Unspecified Error".</t>
      </section>
      <section anchor="ceaseerr">
        <name>Cease</name>
        <section anchor="sending-a-cease">
          <name>Sending a Cease</name>
          <t>In the absence of any of the conditions that are indicated in this
section, a BGP peer <bcp14>MAY</bcp14> choose, at any given time, to close its BGP
connection by sending the NOTIFICATION message with the Error Code Cease
and no subcode.  However, if a condition indicated by this section does
exist, the relevant subcode <bcp14>SHOULD</bcp14> be used.</t>
          <t>A BGP speaker <bcp14>MAY</bcp14> support the ability to impose a locally-configured,
upper bound on the number of address prefixes the speaker is willing to
accept from a neighbor.  When the upper bound is reached, the speaker,
under control of local configuration, either (a) discards new address
prefixes from the neighbor (while maintaining the BGP connection with
the neighbor), or (b) terminates the BGP connection with the neighbor.
If the BGP speaker decides to terminate its BGP connection with a
neighbor because the number of address prefixes received from the
neighbor exceeds the locally-configured, upper bound, then the speaker
<bcp14>MUST</bcp14> send the neighbor a NOTIFICATION message with the Error Code Cease
and the Error Subcode "Maximum Number of Prefixes Reached".  The speaker
<bcp14>MAY</bcp14> log this locally.  The message <bcp14>MAY</bcp14> include the Address Family
information <xref target="RFC4760"/> and the upper bound in the "Data" field, as
shown in <xref target="maxprefix"/>, where the meaning and use of the &lt;AFI, SAFI&gt;
tuple is the same as defined in <xref target="RFC4760"/>, Section 7.</t>
          <figure anchor="maxprefix">
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="160" width="272" viewBox="0 0 272 160" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,32 L 8,128" fill="none" stroke="black"/>
                  <path d="M 264,32 L 264,128" fill="none" stroke="black"/>
                  <path d="M 8,32 L 264,32" fill="none" stroke="black"/>
                  <path d="M 8,64 L 264,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 264,96" fill="none" stroke="black"/>
                  <path d="M 8,128 L 264,128" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="32" y="52">AFI</text>
                    <text x="60" y="52">(2</text>
                    <text x="104" y="52">octets)</text>
                    <text x="36" y="84">SAFI</text>
                    <text x="68" y="84">(1</text>
                    <text x="108" y="84">octet)</text>
                    <text x="44" y="116">Prefix</text>
                    <text x="96" y="116">upper</text>
                    <text x="144" y="116">bound</text>
                    <text x="180" y="116">(4</text>
                    <text x="224" y="116">octets)</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
    +-------------------------------+
    | AFI (2 octets)                |
    +-------------------------------+
    | SAFI (1 octet)                |
    +-------------------------------+
    | Prefix upper bound (4 octets) |
    +-------------------------------+
]]></artwork>
            </artset>
          </figure>
          <t>If a BGP speaker decides to administratively shut down its peering with
a neighbor, then the speaker <bcp14>SHOULD</bcp14> send a NOTIFICATION message with the
Error Code Cease and the Error Subcode "Administrative Shutdown". If used,
<xref target="RFC9003"/> specifies additional information in the Data field.</t>
          <t>If a BGP speaker decides to de-configure a peer, then the speaker <bcp14>SHOULD</bcp14>
send a NOTIFICATION message with the Error Code Cease and the Error
Subcode "Peer De-configured".</t>
          <t>If a BGP speaker decides to administratively reset the peering with a
neighbor, then the speaker <bcp14>SHOULD</bcp14> send a NOTIFICATION message with the
Error Code Cease and the Error Subcode "Administrative Reset". If used,
<xref target="RFC9003"/> specifies additional information in the Data field.</t>
          <t>If a BGP speaker decides to disallow a BGP connection (e.g., the peer is
not configured locally) after the speaker accepts a transport protocol
connection, then the BGP speaker <bcp14>SHOULD</bcp14> send a NOTIFICATION message with
the Error Code Cease and the Error Subcode "Connection Rejected".</t>
          <t>If a BGP speaker decides to administratively reset the peering with a
neighbor due to a configuration change other than the ones described
above, then the speaker <bcp14>SHOULD</bcp14> send a NOTIFICATION message with the
Error Code Cease and the Error Subcode "Other Configuration Change".</t>
          <t>If a BGP speaker decides to send a NOTIFICATION message with the Error
Code Cease as a result of the collision resolution procedure (as
described in <xref target="collision"/>), then the subcode <bcp14>SHOULD</bcp14> be set to
"Connection Collision Resolution".</t>
          <t>If a BGP speaker runs out of resources (e.g., memory) and decides to
reset a session, then the speaker <bcp14>MAY</bcp14> send a NOTIFICATION message with
the Error Code Cease and the Error Subcode "Out of Resources".</t>
        </section>
        <section anchor="receiving-a-cease">
          <name>Receiving a Cease</name>
          <t>It is <bcp14>RECOMMENDED</bcp14> that a BGP speaker behave as though the
DampPeerOscillations attribute (<xref target="fsm"/>) were true for this peer when
re-trying a BGP connection after the speaker receives a Cease
NOTIFICATION message with a subcode of "Administrative Shutdown",
"Peer De-configured", "Connection Rejected", or "Out of Resources".
An implementation <bcp14>SHOULD</bcp14> impose an upper bound on the number of
consecutive automatic retries.  Once this bound is reached, the
implementation would stop re-trying any BGP connections until some
administrative intervention, i.e., set the AllowAutomaticStart
attribute (<xref target="fsm"/>) to FALSE.</t>
        </section>
      </section>
      <section anchor="collision">
        <name>BGP Connection Collision Detection</name>
        <t>If a pair of BGP speakers try to establish a BGP connection with each
other simultaneously, then two parallel connections will be formed.
If the source IP address used by one of these connections is the same
as the destination IP address used by the other, and the destination
IP address used by the first connection is the same as the source IP
address used by the other, a connection collision has occurred.  In the
event of connection collision, one of the connections <bcp14>MUST</bcp14> be closed.</t>
        <t>Based on the value of the BGP Identifier, a convention is established
for detecting which BGP connection is to be preserved when a
collision occurs.  The convention is to compare the BGP Identifiers
of the peers involved in the collision and to retain only the
connection initiated by the BGP speaker with the higher-valued BGP
Identifier.</t>
        <t>Upon receipt of an OPEN message, the local system <bcp14>MUST</bcp14> examine all of
its connections that are in the OpenConfirm state.  A BGP speaker <bcp14>MAY</bcp14>
also examine connections in an OpenSent state if it knows the BGP
Identifier of the peer by means outside of the protocol.  If, among
these connections, there is a connection to a remote BGP speaker
whose BGP Identifier equals the one in the OPEN message, and this
connection collides with the connection over which the OPEN message
is received, then the local system performs the following collision
resolution procedure:</t>
        <ol spacing="normal" type="1"><li>
            <t>The BGP Identifier of the local system is compared to the BGP
Identifier of the remote system (as specified in the OPEN
message).  Comparing BGP Identifiers is done by converting them
to host byte order and treating them as 4-octet unsigned
integers.</t>
          </li>
          <li>
            <t>If the value of the local BGP Identifier is less than the
remote one, the local system closes the BGP connection that
already exists (the one that is already in the OpenConfirm
state), and accepts the BGP connection initiated by the remote
system.</t>
          </li>
          <li>
            <t>In the case of an external BGP connection, if the BGP Identifiers 
of the peers involved in the connection collision are identical, 
then the connection initiated by the BGP speaker with the larger 
AS number is preserved. (If <xref target="RFC5065"/> is in use, a session 
between one member autonomous system and another member autonomous
system is not considered "external" for this purpose.)</t>
          </li>
          <li>
            <t>Otherwise, the local system closes the newly created BGP
connection (the one associated with the newly received OPEN
message), and continues to use the existing one (the one that
is already in the OpenConfirm state).</t>
          </li>
        </ol>
        <t>Unless allowed via configuration, a connection collision with an
existing BGP connection that is in the Established state causes
closing of the newly created connection.</t>
        <t>Note that a connection collision cannot be detected with connections
that are in Idle, Connect, or Active states.</t>
        <t>Closing the BGP connection (that results from the collision
resolution procedure) is accomplished by sending the NOTIFICATION
message with the Error Code Cease.</t>
      </section>
    </section>
    <section anchor="bgp-version-negotiation">
      <name>BGP Version Negotiation</name>
      <t>BGP speakers <bcp14>MAY</bcp14> negotiate the version of the protocol by making
multiple attempts at opening a BGP connection, starting with the
highest version number each BGP speaker supports.  If an open attempt
fails with an Error Code, OPEN Message Error, and an Error Subcode,
Unsupported Version Number, then the BGP speaker has available the
version number it tried, the version number its peer tried, the
version number passed by its peer in the NOTIFICATION message, and
the version numbers it supports.  If the two peers do support one or
more common versions, then this will allow them to rapidly determine
the highest common version.  In order to support BGP version
negotiation, future versions of BGP <bcp14>MUST</bcp14> retain the format of the
OPEN and NOTIFICATION messages.</t>
    </section>
    <section anchor="fsm">
      <name>BGP Finite State Machine (FSM)</name>
      <t>The data structures and FSM described in this document are conceptual
and do not have to be implemented precisely as described here, as
long as the implementations support the described functionality and
they exhibit the same externally visible behavior.</t>
      <t>This section specifies the BGP operation in terms of a Finite State
Machine (FSM).  The section falls into two parts:</t>
      <ol spacing="normal" type="1"><li>
          <t>Description of Events for the State machine (<xref target="fsmevents"/>)</t>
        </li>
        <li>
          <t>Description of the FSM (<xref target="fsmdescr"/>)</t>
        </li>
      </ol>
      <t>Session attributes required (mandatory) for each connection are:</t>
      <ol spacing="normal" type="1"><li>
          <t>State</t>
        </li>
        <li>
          <t>ConnectRetryCounter</t>
        </li>
        <li>
          <t>ConnectRetryTimer</t>
        </li>
        <li>
          <t>ConnectRetryTime</t>
        </li>
        <li>
          <t>HoldTimer</t>
        </li>
        <li>
          <t>HoldTime</t>
        </li>
        <li>
          <t>KeepaliveTimer</t>
        </li>
        <li>
          <t>KeepaliveTime</t>
        </li>
      </ol>
      <t>The state session attribute indicates the current state of the BGP
FSM.  The ConnectRetryCounter indicates the number of times a BGP
peer has tried to establish a peer session.</t>
      <t>The mandatory session attributes related to timers are described in <xref target="timers"/>
Each timer has a "timer" and a "time" (the initial value).</t>
      <t>The optional Session attributes are listed below.  These optional session attributes may be supported, either per connection or per local system:</t>
      <ol spacing="normal" type="1"><li>
          <t>AcceptConnectionsUnconfiguredPeers</t>
        </li>
        <li>
          <t>AllowAutomaticStart</t>
        </li>
        <li>
          <t>AllowAutomaticStop</t>
        </li>
        <li>
          <t>CollisionDetectEstablishedState</t>
        </li>
        <li>
          <t>DampPeerOscillations</t>
        </li>
        <li>
          <t>DelayOpen</t>
        </li>
        <li>
          <t>DelayOpenTime</t>
        </li>
        <li>
          <t>DelayOpenTimer</t>
        </li>
        <li>
          <t>IdleHoldTime</t>
        </li>
        <li>
          <t>IdleHoldTimer</t>
        </li>
        <li>
          <t>PassiveTcpEstablishment</t>
        </li>
        <li>
          <t>SendNOTIFICATIONwithoutOPEN</t>
        </li>
        <li>
          <t>TrackTcpState</t>
        </li>
        <li>
          <t>SendHoldTimer</t>
        </li>
        <li>
          <t>SendHoldTime</t>
        </li>
      </ol>
      <t>The optional session attributes support different features of the BGP functionality that have implications for the BGP FSM state transitions.  Two groups of the session attributes which relate to timers are:</t>
      <ul empty="true">
        <li>
          <t>group 1: DelayOpen, DelayOpenTime, DelayOpenTimer</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>group 2: DampPeerOscillations, IdleHoldTime, IdleHoldTimer</t>
        </li>
      </ul>
      <t>The first parameter (DelayOpen, DampPeerOscillations) is an optional
session attribute that indicates that the Timer function is active.  The
"Time" value specifies the initial value for the "Timer"
(DelayOpenTime, IdleHoldTime).  The "Timer" specifies the actual
timer.</t>
      <t>Please refer to <xref target="optionalevents"/> for an explanation of the interaction
between these optional session attributes and the events signaled to the
state machine.  <xref target="optsessattrs"/> also provides a short overview of the
different types of optional session attributes (flags or timers).</t>
      <section anchor="fsmevents">
        <name>Events for the BGP FSM</name>
        <section anchor="optionalevents">
          <name>Optional Events Linked to Optional Session Attributes</name>
          <t>The Inputs to the BGP FSM are events.  Events can either be mandatory
or optional.  Some optional events are linked to optional session
attributes.  Optional session attributes enable several groups of FSM
functionality.</t>
          <t>The linkage between FSM functionality, events, and the optional
session attributes are described below.</t>
          <section anchor="group-1-automatic-administrative-events-startstop">
            <name>Group 1: Automatic Administrative Events (Start/Stop)</name>
            <dl>
              <dt>Optional Session Attributes:</dt>
              <dd>
                <t>AllowAutomaticStart,
AllowAutomaticStop,
DampPeerOscillations,
IdleHoldTime, IdleHoldTimer</t>
              </dd>
            </dl>
            <t>Option 1:    AllowAutomaticStart</t>
            <dl>
              <dt>Description:</dt>
              <dd>
                <t>A BGP peer connection can be started and stopped
   by administrative control.  This administrative
   control can either be manual, based on operator
   intervention, or under the control of logic that
   is specific to a BGP implementation.  The term
   "automatic" refers to a start being issued to the
   BGP peer connection FSM when such logic determines
   that the BGP peer connection should be restarted.
   The AllowAutomaticStart session attribute specifies that
   this BGP connection supports automatic starting of
   the BGP connection.</t>
              </dd>
              <dt/>
              <dd>
                <t>If the BGP implementation supports
   AllowAutomaticStart, the peer may be repeatedly
   restarted.  Three other options control the rate
   at which the automatic restart occurs:
   DampPeerOscillations, IdleHoldTime, and the
   IdleHoldTimer.</t>
              </dd>
              <dt/>
              <dd>
                <t>The DampPeerOscillations option specifies that the
   implementation engages additional logic to damp
   the oscillations of BGP peers in the face of
   sequences of automatic start and automatic stop.
   IdleHoldTime specifies the length of time the BGP
   peer is held in the Idle state prior to allowing
   the next automatic restart.  The IdleHoldTimer is
   the timer that holds the peer in Idle state.</t>
              </dd>
              <dt/>
              <dd>
                <t>An example of DampPeerOscillations logic is an
   increase of the IdleHoldTime value if a BGP peer
   oscillates connectivity (connected/disconnected)
   repeatedly within a time period.  To engage this
   logic, a peer could connect and disconnect 10
   times within 5 minutes.  The IdleHoldTime value
   would be reset from 0 to 120 seconds.</t>
              </dd>
            </dl>
            <t>Values:      TRUE or FALSE</t>
            <t>Option 2:    AllowAutomaticStop</t>
            <dl>
              <dt>Description:</dt>
              <dd>
                <t>This BGP peer session optional session attribute indicates
    that the BGP connection allows "automatic"
    stopping of the BGP connection.  An "automatic"
    stop is defined as a stop under the control of
    implementation-specific logic.  The
    implementation-specific logic is outside the scope
    of this specification.</t>
              </dd>
            </dl>
            <t>Values:      TRUE or FALSE</t>
            <t>Option 3:    DampPeerOscillations</t>
            <dl>
              <dt>Description:</dt>
              <dd>
                <t>The DampPeerOscillations optional session
    attribute indicates that the BGP connection is
    using logic that damps BGP peer oscillations in
    the Idle State.</t>
              </dd>
            </dl>
            <t>Value:       TRUE or FALSE</t>
            <t>Option 4:    IdleHoldTime</t>
            <dl>
              <dt>Description:</dt>
              <dd>
                <t>The IdleHoldTime is the value that is set in the
IdleHoldTimer.</t>
              </dd>
            </dl>
            <t>Values:      Time in seconds</t>
            <t>Option 5:    IdleHoldTimer</t>
            <dl>
              <dt>Description:</dt>
              <dd>
                <t>The IdleHoldTimer aids in controlling BGP peer
oscillation.  The IdleHoldTimer is used to keep
the BGP peer in Idle for a particular duration.
The IdleHoldTimer_Expires event is described in
<xref target="timerevents"/>.</t>
              </dd>
            </dl>
            <t>Values:      Time in seconds</t>
          </section>
          <section anchor="group-2-unconfigured-peers">
            <name>Group 2: Unconfigured Peers</name>
            <dl>
              <dt>Optional Session Attributes:</dt>
              <dd>
                <t>AcceptConnectionsUnconfiguredPeers</t>
              </dd>
            </dl>
            <t>Option 1:    AcceptConnectionsUnconfiguredPeers</t>
            <dl>
              <dt>Description:</dt>
              <dd>
                <t>The BGP FSM optionally allows the acceptance of
BGP peer connections from neighbors that are not
pre-configured.  The
"AcceptConnectionsUnconfiguredPeers" optional
session attribute allows the FSM to support the
state transitions that allow the implementation to
accept or reject these unconfigured peers.</t>
              </dd>
              <dt/>
              <dd>
                <t>The AcceptConnectionsUnconfiguredPeers has
security implications.  Please refer to the BGP
Vulnerabilities document <xref target="RFC4272"/> for details.</t>
              </dd>
            </dl>
            <t>Value:       True or False</t>
          </section>
          <section anchor="group-3-tcp-processing">
            <name>Group 3: TCP processing</name>
            <dl>
              <dt>Optional Session Attributes:</dt>
              <dd>
                <t>PassiveTcpEstablishment, TrackTcpState</t>
              </dd>
            </dl>
            <t>Option 1:    PassiveTcpEstablishment</t>
            <dl>
              <dt>Description:</dt>
              <dd>
                <t>This option indicates that the BGP FSM will
passively wait for the remote BGP peer to
establish the BGP TCP connection.</t>
              </dd>
            </dl>
            <t>value:       TRUE or FALSE</t>
            <t>Option 2:    TrackTcpState</t>
            <dl>
              <dt>Description:</dt>
              <dd>
                <t>The BGP FSM normally tracks the end result of a
   TCP connection attempt rather than individual TCP
   messages.  Optionally, the BGP FSM can support
   additional interaction with the TCP connection
   negotiation.  The interaction with the TCP events
   may increase the amount of logging the BGP peer
   connection requires and the number of BGP FSM
   changes.</t>
              </dd>
            </dl>
            <t>Value:       TRUE or FALSE</t>
          </section>
          <section anchor="group-4-bgp-message-processing">
            <name>Group 4:  BGP Message Processing</name>
            <dl>
              <dt>Optional Session Attributes:</dt>
              <dd>
                <t>DelayOpen, DelayOpenTime,
   DelayOpenTimer,
   SendNOTIFICATIONwithoutOPEN,
   CollisionDetectEstablishedState</t>
              </dd>
            </dl>
            <t>Option 1:     DelayOpen</t>
            <dl>
              <dt>Description:</dt>
              <dd>
                <t>The DelayOpen optional session attribute allows
  implementations to be configured to delay sending
  an OPEN message for a specific time period
  (DelayOpenTime).  The delay allows the remote BGP
  Peer time to send the first OPEN message.</t>
              </dd>
            </dl>
            <t>Value:       TRUE or FALSE</t>
            <t>Option 2:    DelayOpenTime</t>
            <dl>
              <dt>Description:</dt>
              <dd>
                <t>The DelayOpenTime is the initial value set in the DelayOpenTimer.</t>
              </dd>
            </dl>
            <t>Value:       Time in seconds</t>
            <t>Option 3:    DelayOpenTimer</t>
            <dl>
              <dt>Description:</dt>
              <dd>
                <t>The DelayOpenTimer optional session attribute is
   used to delay the sending of an OPEN message on a
   connection.  The DelayOpenTimer_Expires event
   (Event 12) is described in <xref target="timerevents"/>.</t>
              </dd>
            </dl>
            <t>Value:       Time in seconds</t>
            <t>Option 4:    SendNOTIFICATIONwithoutOPEN</t>
            <dl>
              <dt>Description:</dt>
              <dd>
                <t>The SendNOTIFICATIONwithoutOPEN allows a peer to
   send a NOTIFICATION without first sending an OPEN
   message.  Without this optional session attribute,
   the BGP connection assumes that an OPEN message
   must be sent by a peer prior to the peer sending a
   NOTIFICATION message.</t>
              </dd>
            </dl>
            <t>Value:       True or False</t>
            <t>Option 5:    CollisionDetectEstablishedState</t>
            <dl>
              <dt>Description:</dt>
              <dd>
                <t>Normally, a Detect Collision (see <xref target="collision"/>)
   will be ignored in the Established state.  This
   optional session attribute indicates that this BGP
   connection processes collisions in the Established
   state.</t>
              </dd>
            </dl>
            <t>Value:       True or False</t>
            <t>Note: The optional session attributes clarify the BGP FSM
description for existing features of BGP implementations.
The optional session attributes may be pre-defined for an
implementation and not readable via management interfaces
for existing correct implementations.  As newer BGP MIBs
(version 2 and beyond) are supported, these fields will be
accessible via a management interface.</t>
          </section>
        </section>
        <section anchor="administrative-events">
          <name>Administrative Events</name>
          <t>An administrative event is an event in which the operator interface
and BGP Policy engine signal the BGP-finite state machine to start or
stop the BGP state machine.  The basic start and stop indications are
augmented by optional session attributes that signal a certain
type of start or stop mechanism to the BGP FSM.  An example of this
combination is Event 5, AutomaticStart_with_PassiveTcpEstablishment.
With this event, the BGP implementation signals to the BGP FSM that
the implementation is using an Automatic Start with the option to use
a Passive TCP Establishment.  The Passive TCP establishment signals
that this BGP FSM will wait for the remote side to start the TCP
establishment.</t>
          <t>Note that only Event 1 (ManualStart) and Event 2 (ManualStop) are
mandatory administrative events.  All other administrative events are
optional (Events 3-8).  Each event below has a name, definition, status
(mandatory or optional), and an "Optional Session Attribute Status"
field that lists the optional session attributes required to be set for
that event to occur.  When generating Event 1 through Event 8 for the
BGP FSM, an implementation <bcp14>MUST</bcp14> verify the conditions listed in that
event's Optional Session Attribute Status field before generating the
event.  If any of these conditions are not satisfied, then the local
system should log an FSM error.</t>
          <t>The settings of optional session attributes may be implicit in some
implementations, and therefore may not be set explicitly by an
external operator action.  <xref target="fsmimpldep"/> describes these implicit
settings of the optional session attributes.  The administrative
states described below may also be implicit in some implementations
and not directly configurable by an external operator.</t>
          <section anchor="event-1-manualstart">
            <name>Event 1: ManualStart</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>Local system administrator manually starts the peer
   connection.</t>
              </dd>
            </dl>
            <t>Status:     Mandatory</t>
            <dl>
              <dt>Optional Session Attribute Status:</dt>
              <dd>
                <t>The PassiveTcpEstablishment session attribute <bcp14>SHOULD</bcp14> be set to FALSE.</t>
              </dd>
            </dl>
          </section>
          <section anchor="event-2-manualstop">
            <name>Event 2: ManualStop</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>Local system administrator manually stops the peer connection.</t>
              </dd>
            </dl>
            <t>Status:     Mandatory</t>
            <dl>
              <dt>Optional Session Attribute Status:</dt>
              <dd>
                <t>No interaction with any optional session attributes.</t>
              </dd>
            </dl>
          </section>
          <section anchor="event-3-automaticstart">
            <name>Event 3: AutomaticStart</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>Local system automatically starts the BGP connection.</t>
              </dd>
            </dl>
            <t>Status:     Optional, depending on local system</t>
            <dl>
              <dt>Optional Session Attribute Status:</dt>
              <dd>
                <ol spacing="normal" type="1"><li>
                    <t>The AllowAutomaticStart session attribute <bcp14>SHOULD</bcp14> be set to TRUE if this event occurs.</t>
                  </li>
                  <li>
                    <t>If the PassiveTcpEstablishment optional session attribute is supported, it <bcp14>SHOULD</bcp14> be set to FALSE.</t>
                  </li>
                  <li>
                    <t>If the DampPeerOscillations is supported, it <bcp14>SHOULD</bcp14> be set to FALSE when this event occurs.</t>
                  </li>
                </ol>
              </dd>
            </dl>
          </section>
          <section anchor="event-4-manualstartwithpassivetcpestablishment">
            <name>Event 4: ManualStart_with_PassiveTcpEstablishment</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>Local system administrator manually starts the peer
    connection, but has PassiveTcpEstablishment
    enabled.  The PassiveTcpEstablishment optional session 
    attribute indicates that the peer will listen prior
    to establishing the connection.</t>
              </dd>
            </dl>
            <t>Status:     Optional, depending on local system</t>
            <dl>
              <dt>Optional Session Attribute Status:</dt>
              <dd>
                <ol spacing="normal" type="1"><li>
                    <t>The PassiveTcpEstablishment session attribute <bcp14>SHOULD</bcp14> be
set to TRUE if this event occurs.</t>
                  </li>
                  <li>
                    <t>The DampPeerOscillations session attribute <bcp14>SHOULD</bcp14> be set
to FALSE when this event occurs.</t>
                  </li>
                </ol>
              </dd>
            </dl>
          </section>
          <section anchor="event-5-automaticstartwithpassivetcpestablishment">
            <name>Event 5: AutomaticStart_with_PassiveTcpEstablishment</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>Local system automatically starts the BGP
    connection with the PassiveTcpEstablishment
    enabled.  The PassiveTcpEstablishment optional session
    attribute indicates that the peer will listen prior
    to establishing a connection.</t>
              </dd>
            </dl>
            <t>Status:     Optional, depending on local system</t>
            <dl>
              <dt>Optional Session Attribute Status:</dt>
              <dd>
                <ol spacing="normal" type="1"><li>
                    <t>The AllowAutomaticStart session attribute <bcp14>SHOULD</bcp14> be set
 to TRUE.</t>
                  </li>
                  <li>
                    <t>The PassiveTcpEstablishment session attribute <bcp14>SHOULD</bcp14> be
 set to TRUE.</t>
                  </li>
                  <li>
                    <t>If the DampPeerOscillations session attribute is
 supported, the DampPeerOscillations <bcp14>SHOULD</bcp14> be
 set to FALSE.</t>
                  </li>
                </ol>
              </dd>
            </dl>
          </section>
          <section anchor="event-6-automaticstartwithdamppeeroscillations">
            <name>Event 6: AutomaticStart_with_DampPeerOscillations</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>Local system automatically starts the BGP peer
    connection with peer oscillation damping enabled.
    The exact method of damping persistent peer
    oscillations is determined by the implementation
    and is outside the scope of this document.</t>
              </dd>
            </dl>
            <t>Status:     Optional, depending on local system.</t>
            <dl>
              <dt>Optional Session Attribute Status:</dt>
              <dd>
                <ol spacing="normal" type="1"><li>
                    <t>The AllowAutomaticStart session attribute <bcp14>SHOULD</bcp14> be set
 to TRUE.</t>
                  </li>
                  <li>
                    <t>The DampPeerOscillations session attribute <bcp14>SHOULD</bcp14> be set
 to TRUE.</t>
                  </li>
                  <li>
                    <t>The PassiveTcpEstablishment session attribute <bcp14>SHOULD</bcp14> be
 set to FALSE.</t>
                  </li>
                </ol>
              </dd>
            </dl>
          </section>
          <section anchor="event-7-automaticstartwithdamppeeroscillationsandpassivetcpestablishment">
            <name>Event 7: AutomaticStart_with_DampPeerOscillations_and_PassiveTcpEstablishment</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>Local system automatically starts the BGP peer
    connection with peer oscillation damping enabled
    and PassiveTcpEstablishment enabled.  The exact
    method of damping persistent peer oscillations is
    determined by the implementation and is outside the
    scope of this document.</t>
              </dd>
            </dl>
            <t>Status:     Optional, depending on local system</t>
            <dl>
              <dt>Optional Session Attributes Status:</dt>
              <dd>
                <ol spacing="normal" type="1"><li>
                    <t>The AllowAutomaticStart session attribute <bcp14>SHOULD</bcp14> be set
 to TRUE.</t>
                  </li>
                  <li>
                    <t>The DampPeerOscillations session attribute <bcp14>SHOULD</bcp14> be set
 to TRUE.</t>
                  </li>
                  <li>
                    <t>The PassiveTcpEstablishment session attribute <bcp14>SHOULD</bcp14> be
 set to TRUE.</t>
                  </li>
                </ol>
              </dd>
            </dl>
          </section>
          <section anchor="event-8-automaticstop">
            <name>Event 8: AutomaticStop</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>Local system automatically stops the BGP connection.</t>
              </dd>
              <dt/>
              <dd>
                <t>An example of an automatic stop event is exceeding
    the number of prefixes for a given peer and the
    local system automatically disconnecting the peer.</t>
              </dd>
            </dl>
            <t>Status:     Optional, depending on local system</t>
            <dl>
              <dt>Optional Session Attribute Status:</dt>
              <dd>
                <ol spacing="normal" type="1"><li>
                    <t>The AllowAutomaticStop session attribute <bcp14>SHOULD</bcp14> be TRUE.</t>
                  </li>
                </ol>
              </dd>
            </dl>
          </section>
        </section>
        <section anchor="timerevents">
          <name>Timer Events</name>
          <section anchor="event-9-connectretrytimerexpires">
            <name>Event 9: ConnectRetryTimer_Expires</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>An event generated when the ConnectRetryTimer expires.</t>
              </dd>
            </dl>
            <t>Status:     Mandatory</t>
          </section>
          <section anchor="event-10-holdtimerexpires">
            <name>Event 10: HoldTimer_Expires</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>An event generated when the HoldTimer expires.</t>
              </dd>
            </dl>
            <t>Status:     Mandatory</t>
          </section>
          <section anchor="event-11-keepalivetimerexpires">
            <name>Event 11: KeepaliveTimer_Expires</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>An event generated when the KeepaliveTimer expires.</t>
              </dd>
            </dl>
            <t>Status:     Mandatory</t>
          </section>
          <section anchor="event-12-delayopentimerexpires">
            <name>Event 12: DelayOpenTimer_Expires</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>An event generated when the DelayOpenTimer expires.</t>
              </dd>
            </dl>
            <t>Status:     Optional</t>
            <dl>
              <dt>Optional Session Attribute Status:</dt>
              <dd>
                <t>If this event occurs,</t>
              </dd>
              <dt/>
              <dd>
                <ol spacing="normal" type="1"><li>
                    <t>DelayOpen session attribute <bcp14>SHOULD</bcp14> be set to TRUE,</t>
                  </li>
                  <li>
                    <t>DelayOpenTime session attribute <bcp14>SHOULD</bcp14> be supported,</t>
                  </li>
                  <li>
                    <t>DelayOpenTimer <bcp14>SHOULD</bcp14> be supported.</t>
                  </li>
                </ol>
              </dd>
            </dl>
          </section>
          <section anchor="event-13-idleholdtimerexpires">
            <name>Event 13: IdleHoldTimer_Expires</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>An event generated when the IdleHoldTimer expires,
    indicating that the BGP connection has completed
    waiting for the back-off period to prevent BGP peer
    oscillation.</t>
              </dd>
              <dt/>
              <dd>
                <t>The IdleHoldTimer is only used when the persistent
    peer oscillation damping function is enabled by
    setting the DampPeerOscillations optional session attribute
    to TRUE.</t>
              </dd>
              <dt/>
              <dd>
                <t>Implementations not implementing the persistent
    peer oscillation damping function may not have the
    IdleHoldTimer.</t>
              </dd>
            </dl>
            <t>Status:     Optional</t>
            <dl>
              <dt>Optional Session Attribute Status:</dt>
              <dd>
                <t>If this event occurs:</t>
              </dd>
              <dt/>
              <dd>
                <ol spacing="normal" type="1"><li>
                    <t>DampPeerOscillations session attribute <bcp14>SHOULD</bcp14> be set to
  TRUE.</t>
                  </li>
                  <li>
                    <t>IdleHoldTimer <bcp14>SHOULD</bcp14> have just expired.</t>
                  </li>
                </ol>
              </dd>
            </dl>
          </section>
        </section>
        <section anchor="tcp-connection-based-events">
          <name>TCP Connection-Based Events</name>
          <section anchor="event-14-tcpconnectionvalid">
            <name>Event 14: TcpConnection_Valid</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>Event indicating the local system reception of a
    TCP connection request with a valid source IP
    address, TCP port, destination IP address, and TCP
    Port.  The definition of invalid source and invalid
    destination IP address is determined by the
    implementation.</t>
              </dd>
              <dt/>
              <dd>
                <t>BGP's destination port <bcp14>SHOULD</bcp14> be port 179, as
    defined by IANA.</t>
              </dd>
              <dt/>
              <dd>
                <t>TCP connection request is denoted by the local
    system receiving a TCP SYN.</t>
              </dd>
            </dl>
            <t>Status:     Optional</t>
            <dl>
              <dt>Optional Session Attribute Status:</dt>
              <dd>
                <ol spacing="normal" type="1"><li>
                    <t>The TrackTcpState session attribute <bcp14>SHOULD</bcp14> be set to
  TRUE if this event occurs.</t>
                  </li>
                </ol>
              </dd>
            </dl>
          </section>
          <section anchor="event-15-tcpcrinvalid">
            <name>Event 15: Tcp_CR_Invalid</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>Event indicating the local system reception of a
    TCP connection request with either an invalid
    source address or port number, or an invalid
    destination address or port number.</t>
              </dd>
              <dt/>
              <dd>
                <t>BGP destination port number <bcp14>SHOULD</bcp14> be 179, as
    defined by IANA.</t>
              </dd>
              <dt/>
              <dd>
                <t>A TCP connection request occurs when the local
    system receives a TCP SYN.</t>
              </dd>
            </dl>
            <t>Status:     Optional</t>
            <dl>
              <dt>Optional Session Attribute Status:</dt>
              <dd>
                <ol spacing="normal" type="1"><li>
                    <t>The TrackTcpState session attribute should be set to
  TRUE if this event occurs.</t>
                  </li>
                </ol>
              </dd>
            </dl>
          </section>
          <section anchor="event-16-tcpcracked">
            <name>Event 16: Tcp_CR_Acked</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>Event indicating the local system's request to
    establish a TCP connection to the remote peer.</t>
              </dd>
              <dt/>
              <dd>
                <t>The local system's TCP connection sent a TCP SYN,
    received a TCP SYN/ACK message, and sent a TCP ACK.</t>
              </dd>
            </dl>
            <t>Status:     Mandatory</t>
          </section>
          <section anchor="event-17-tcpconnectionconfirmed">
            <name>Event 17: TcpConnectionConfirmed</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>Event indicating that the local system has received
    a confirmation that the TCP connection has been
    established by the remote site.</t>
              </dd>
              <dt/>
              <dd>
                <t>The remote peer's TCP engine sent a TCP SYN.  The
    local peer's TCP engine sent a SYN, ACK message and
    now has received a final ACK.</t>
              </dd>
            </dl>
            <t>Status:     Mandatory</t>
          </section>
          <section anchor="event-18-tcpconnectionfails">
            <name>Event 18: TcpConnectionFails</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>Event indicating that the local system has received
    a TCP connection failure notice.</t>
              </dd>
              <dt/>
              <dd>
                <t>The remote BGP peer's TCP machine could have sent a
    FIN.  The local peer would respond with a FIN-ACK.
    Another possibility is that the local peer
    indicated a timeout in the TCP connection and
    downed the connection.</t>
              </dd>
            </dl>
            <t>Status:     Mandatory</t>
          </section>
        </section>
        <section anchor="bgp-message-based-events">
          <name>BGP Message-Based Events</name>
          <section anchor="event-19-bgpopen">
            <name>Event 19: BGPOpen</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>An event is generated when a valid OPEN message has been received.</t>
              </dd>
            </dl>
            <t>Status:     Mandatory</t>
            <dl>
              <dt>Optional Session Attribute Status:</dt>
              <dd>
                <ol spacing="normal" type="1"><li>
                    <t>The DelayOpen optional session attribute <bcp14>SHOULD</bcp14> be set
  to FALSE.</t>
                  </li>
                  <li>
                    <t>The DelayOpenTimer <bcp14>SHOULD NOT</bcp14> be running.</t>
                  </li>
                </ol>
              </dd>
            </dl>
          </section>
          <section anchor="event-20-bgpopen-with-delayopentimer-running">
            <name>Event 20: BGPOpen with DelayOpenTimer running</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>An event is generated when a valid OPEN message has
    been received for a peer that has a successfully
    established transport connection and is currently
    delaying the sending of a BGP open message.</t>
              </dd>
            </dl>
            <t>Status:     Optional</t>
            <dl>
              <dt>Optional Session Attribute Status:</dt>
              <dd>
                <ol spacing="normal" type="1"><li>
                    <t>The DelayOpen session attribute <bcp14>SHOULD</bcp14> be set to TRUE.</t>
                  </li>
                  <li>
                    <t>The DelayOpenTimer <bcp14>SHOULD</bcp14> be running.</t>
                  </li>
                </ol>
              </dd>
            </dl>
          </section>
          <section anchor="event-21-bgpheadererr">
            <name>Event 21: BGPHeaderErr</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>An event is generated when a received BGP message
    header is not valid.</t>
              </dd>
            </dl>
            <t>Status:     Mandatory</t>
          </section>
          <section anchor="event-22-bgpopenmsgerr">
            <name>Event 22: BGPOpenMsgErr</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>An event is generated when an OPEN message has been
    received with errors.</t>
              </dd>
            </dl>
            <t>Status:     Mandatory</t>
          </section>
          <section anchor="event-23-opencollisiondump">
            <name>Event 23: OpenCollisionDump</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>An event generated administratively when a
    connection collision has been detected while
    processing an incoming OPEN message and this
    connection has been selected to be disconnected.
    See <xref target="collision"/> for more information on collision
    detection.</t>
              </dd>
              <dt/>
              <dd>
                <t>Event 23 is an administrative action generated by
    implementation logic that determines whether this
    connection needs to be dropped per the rules in
    <xref target="collision"/>.  This event may occur if the FSM is
    implemented as two linked state machines.</t>
              </dd>
            </dl>
            <t>Status:     Optional</t>
            <dl>
              <dt>Optional Session Attribute Status:</dt>
              <dd>
                <t>If the state machine is to process this event in
    the Established state,</t>
              </dd>
              <dt/>
              <dd>
                <ol spacing="normal" type="1"><li>
                    <t>CollisionDetectEstablishedState optional session 
  attribute <bcp14>SHOULD</bcp14> be set to TRUE.</t>
                  </li>
                </ol>
              </dd>
              <dt/>
              <dd>
                <t>Please note: The OpenCollisionDump event can occur
    in Idle, Connect, Active, OpenSent, and OpenConfirm
    without any optional session attributes being set.</t>
              </dd>
            </dl>
          </section>
          <section anchor="event-24-notifmsgvererr">
            <name>Event 24: NotifMsgVerErr</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>An event is generated when a NOTIFICATION message
    with "version error" is received.</t>
              </dd>
            </dl>
            <t>Status:     Mandatory</t>
          </section>
          <section anchor="event-25-notifmsg">
            <name>Event 25: NotifMsg</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>An event is generated when a NOTIFICATION message
    is received and the error code is anything but
    "version error".</t>
              </dd>
            </dl>
            <t>Status:     Mandatory</t>
          </section>
          <section anchor="event-26-keepalivemsg">
            <name>Event 26: KeepAliveMsg</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>An event is generated when a KEEPALIVE message is
    received.</t>
              </dd>
            </dl>
            <t>Status:     Mandatory</t>
          </section>
          <section anchor="event-27-updatemsg">
            <name>Event 27: UpdateMsg</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>An event is generated when a valid UPDATE message
    is received.</t>
              </dd>
            </dl>
            <t>Status:     Mandatory</t>
          </section>
          <section anchor="event-28-updatemsgerr">
            <name>Event 28: UpdateMsgErr</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>An event is generated when an invalid UPDATE
message is received.</t>
              </dd>
            </dl>
            <t>Status:     Mandatory</t>
          </section>
          <section anchor="event-29-sendholdtimerexpires">
            <name>Event 29: SendHoldTimer_Expires</name>
            <dl>
              <dt>Definition:</dt>
              <dd>
                <t>An event generated when the SendHoldTimer
expires.</t>
              </dd>
            </dl>
            <t>Status: Optional</t>
          </section>
        </section>
      </section>
      <section anchor="fsmdescr">
        <name>Description of FSM</name>
        <section anchor="fsm-definition">
          <name>FSM Definition</name>
          <t>BGP <bcp14>MUST</bcp14> maintain a separate FSM for each configured peer.  Each BGP
peer paired in a potential connection will attempt to connect to the
other, unless configured to remain in the idle state, or configured
to remain passive.  For the purpose of this discussion, the active or
connecting side of the TCP connection (the side of a TCP connection
sending the first TCP SYN packet) is called outgoing.  The passive or
listening side (the sender of the first SYN/ACK) is called an
incoming connection.  (See <xref target="activepassive"/> for information on the
terms active and passive used below.)</t>
          <t>A BGP implementation <bcp14>MUST</bcp14> connect to and listen on TCP port 179 for
incoming connections in addition to trying to connect to peers.  For
each incoming connection, a state machine <bcp14>MUST</bcp14> be instantiated.
There exists a period in which the identity of the peer on the other
end of an incoming connection is known, but the BGP identifier is not
known.  During this time, both an incoming and outgoing connection
may exist for the same configured peering.  This is referred to as a
connection collision (see <xref target="collision"/>).</t>
          <t>A BGP implementation will have, at most, one FSM for each configured
peering, plus one FSM for each incoming TCP connection for which the
peer has not yet been identified.  Each FSM corresponds to exactly
one TCP connection.</t>
          <t>There may be more than one connection between a pair of peers if the
connections are configured to use a different pair of IP addresses.
This is referred to as multiple "configured peerings" to the same
peer.</t>
          <section anchor="activepassive">
            <name>Terms "active" and "passive"</name>
            <t>The terms active and passive have been in the Internet operator's
vocabulary for almost a decade and have proven useful.  The words
active and passive have slightly different meanings when applied to a
TCP connection or a peer.  There is only one active side and one
passive side to any one TCP connection, per the definition above and
the state machine below.  When a BGP speaker is configured as active,
it may end up on either the active or passive side of the connection
that eventually gets established.  Once the TCP connection is
completed, it doesn't matter which end was active and which was
passive.  The only difference is in which side of the TCP connection
has port number 179.</t>
          </section>
          <section anchor="fsm-and-collision-detection">
            <name>FSM and Collision Detection</name>
            <t>There is one FSM per BGP connection.  When the connection collision
occurs prior to determining what peer a connection is associated
with, there may be two connections for one peer.  After the
connection collision is resolved (see <xref target="collision"/>), the FSM for the
connection that is closed <bcp14>SHOULD</bcp14> be disposed.</t>
          </section>
          <section anchor="optsessattrs">
            <name>FSM and Optional Session Attributes</name>
            <t>Optional Session Attributes specify either attributes that act as
flags (TRUE or FALSE) or optional timers.  For optional session attributes
that act as flags, if the optional session attribute can be set to
TRUE on the system, the corresponding BGP FSM actions must be
supported.  For example, if the following options can be set in a BGP
implementation: AutoStart and PassiveTcpEstablishment, then Events 3,
4 and 5 must be supported.  If an Optional Session attribute cannot
be set to TRUE, the events supporting that set of options do not have
to be supported.</t>
            <t>Each of the optional timers (DelayOpenTimer and IdleHoldTimer) has a
group of session attributes that are:</t>
            <ul spacing="normal">
              <li>
                <t>flag indicating support,</t>
              </li>
              <li>
                <t>Time set in Timer</t>
              </li>
              <li>
                <t>Timer.</t>
              </li>
            </ul>
            <t>The two optional timers show this format:</t>
            <artwork><![CDATA[
DelayOpenTimer: DelayOpen, DelayOpenTime, DelayOpenTimer
IdleHoldTimer:  DampPeerOscillations, IdleHoldTime,
                IdleHoldTimer
]]></artwork>
            <t>If the flag indicating support for an optional timer (DelayOpen or
DampPeerOscillations) cannot be set to TRUE, the timers and events
supporting that option do not have to be supported.</t>
          </section>
          <section anchor="fsm-event-numbers">
            <name>FSM Event Numbers</name>
            <t>The Event numbers (1-28) utilized in this state machine description
aid in specifying the behavior of the BGP state machine.
Implementations <bcp14>MAY</bcp14> use these numbers to provide network management
information.  The exact form of an FSM or the FSM events are specific
to each implementation.</t>
          </section>
          <section anchor="fsmimpldep">
            <name>FSM Actions that are Implementation Dependent</name>
            <t>At certain points, the BGP FSM specifies that BGP initialization will
occur or that BGP resources will be deleted.  The initialization of
the BGP FSM and the associated resources depend on the policy portion
of the BGP implementation.  The details of these actions are outside
the scope of the FSM document.</t>
          </section>
        </section>
        <section anchor="finite-state-machine">
          <name>Finite State Machine</name>
          <section anchor="idle-state">
            <name>Idle state:</name>
            <t>Initially, the BGP peer FSM is in the Idle state.  Hereafter, the
BGP peer FSM will be shortened to BGP FSM.</t>
            <t>In this state, BGP FSM refuses all incoming BGP connections for this peer.  No resources are allocated to the peer.  In response to a ManualStart event (Event 1) or an AutomaticStart event (Event 3), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>initializes all BGP resources for the peer connection,</t>
              </li>
              <li>
                <t>sets ConnectRetryCounter to zero,</t>
              </li>
              <li>
                <t>starts the ConnectRetryTimer with the initial value,</t>
              </li>
              <li>
                <t>initiates a TCP connection to the other BGP peer,</t>
              </li>
              <li>
                <t>listens for a connection that may be initiated by the remote
BGP peer, and</t>
              </li>
              <li>
                <t>changes its state to Connect.</t>
              </li>
            </ul>
            <t>The ManualStop event (Event 2) and AutomaticStop (Event 8) event
are ignored in the Idle state.</t>
            <t>In response to a ManualStart_with_PassiveTcpEstablishment event (Event 4) or AutomaticStart_with_PassiveTcpEstablishment event (Event 5), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>initializes all BGP resources,</t>
              </li>
              <li>
                <t>sets the ConnectRetryCounter to zero,</t>
              </li>
              <li>
                <t>starts the ConnectRetryTimer with the initial value,</t>
              </li>
              <li>
                <t>listens for a connection that may be initiated by the remote
peer, and</t>
              </li>
              <li>
                <t>changes its state to Active.</t>
              </li>
            </ul>
            <t>The exact value of the ConnectRetryTimer is a local matter, but it
<bcp14>SHOULD</bcp14> be sufficiently large to allow TCP initialization.</t>
            <t>If the DampPeerOscillations session attribute is set to TRUE, the following three additional events may occur within the Idle state:</t>
            <ul spacing="normal">
              <li>
                <t>AutomaticStart_with_DampPeerOscillations (Event 6),</t>
              </li>
              <li>
                <t>AutomaticStart_with_DampPeerOscillations_and_
PassiveTcpEstablishment (Event 7),</t>
              </li>
              <li>
                <t>IdleHoldTimer_Expires (Event 13).</t>
              </li>
            </ul>
            <t>Upon receiving these 3 events, the local system will use these
events to prevent peer oscillations.  The method of preventing
persistent peer oscillation is outside the scope of this document.</t>
            <t>Any other event (Events 9-12, 15-28) received in the Idle state
does not cause change in the state of the local system.</t>
          </section>
          <section anchor="connect-state">
            <name>Connect State:</name>
            <t>In this state, BGP FSM is waiting for the TCP connection to be
completed.</t>
            <t>The start events (Events 1, 3-7) are ignored in the Connect state.</t>
            <t>In response to a ManualStop event (Event 2), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>sets ConnectRetryCounter to zero,</t>
              </li>
              <li>
                <t>stops the ConnectRetryTimer and sets ConnectRetryTimer to
ero, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>In response to the ConnectRetryTimer_Expires event (Event 9), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>restarts the ConnectRetryTimer,</t>
              </li>
              <li>
                <t>stops the DelayOpenTimer and resets the timer to zero,</t>
              </li>
              <li>
                <t>initiates a TCP connection to the other BGP peer,</t>
              </li>
              <li>
                <t>continues to listen for a connection that may be initiated by the remote BGP peer, and</t>
              </li>
              <li>
                <t>stays in the Connect state.</t>
              </li>
            </ul>
            <t>If the DelayOpenTimer_Expires event (Event 12) occurs in the Connect state, the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sends an OPEN message to its peer,</t>
              </li>
              <li>
                <t>sets the HoldTimer to a large value, and</t>
              </li>
              <li>
                <t>changes its state to OpenSent.</t>
              </li>
            </ul>
            <t>If the BGP FSM receives a TcpConnection_Valid event (Event 14),
the TCP connection is processed, and the connection remains in the
Connect state.</t>
            <t>If the BGP FSM receives a Tcp_CR_Invalid event (Event 15), the
local system rejects the TCP connection, and the connection
remains in the Connect state.</t>
            <t>If the TCP connection succeeds (Event 16 or Event 17), the local system checks the DelayOpen session attribute prior to processing.  If the DelayOpen session attribute is set to TRUE, the local system:</t>
            <ul spacing="normal">
              <li>
                <t>stops the ConnectRetryTimer (if running) and sets the
ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>sets the DelayOpenTimer to the initial value, and</t>
              </li>
              <li>
                <t>stays in the Connect state.</t>
              </li>
            </ul>
            <t>If the DelayOpen session attribute is set to FALSE, the local system:</t>
            <ul spacing="normal">
              <li>
                <t>stops the ConnectRetryTimer (if running) and sets the
ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>completes BGP initialization</t>
              </li>
              <li>
                <t>sends an OPEN message to its peer,</t>
              </li>
              <li>
                <t>sets the HoldTimer to a large value, and</t>
              </li>
              <li>
                <t>changes its state to OpenSent.</t>
              </li>
            </ul>
            <t>A HoldTimer value of 4 minutes is suggested.</t>
            <t>If the TCP connection fails (Event 18), the local system checks the DelayOpenTimer.  If the DelayOpenTimer is running, the local system:</t>
            <ul spacing="normal">
              <li>
                <t>restarts the ConnectRetryTimer with the initial value,</t>
              </li>
              <li>
                <t>stops the DelayOpenTimer and resets its value to zero,</t>
              </li>
              <li>
                <t>continues to listen for a connection that may be initiated by
the remote BGP peer, and</t>
              </li>
              <li>
                <t>changes its state to Active.</t>
              </li>
            </ul>
            <t>If the DelayOpenTimer is not running, the local system:</t>
            <ul spacing="normal">
              <li>
                <t>stops the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>releases all BGP resources, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If an OPEN message is received while the DelayOpenTimer is running (Event 20), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>stops the ConnectRetryTimer (if running) and sets the
ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>completes the BGP initialization,</t>
              </li>
              <li>
                <t>stops and clears the DelayOpenTimer (sets the value to zero),</t>
              </li>
              <li>
                <t>sends an OPEN message,</t>
              </li>
              <li>
                <t>sends a KEEPALIVE message,</t>
              </li>
              <li>
                <t>if the HoldTimer initial value is non-zero,  </t>
                <ul spacing="normal">
                  <li>
                    <t>starts the KeepaliveTimer with the initial value and</t>
                  </li>
                  <li>
                    <t>resets the HoldTimer to the negotiated value,</t>
                  </li>
                </ul>
                <t>
else, if the HoldTimer initial value is zero,  </t>
                <ul spacing="normal">
                  <li>
                    <t>resets the KeepaliveTimer and</t>
                  </li>
                  <li>
                    <t>resets the HoldTimer value to zero,</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>and changes its state to OpenConfirm.</t>
              </li>
            </ul>
            <t>If the value of the autonomous system field is the same as the
local Autonomous System number, set the connection status to an
internal connection; otherwise it will be "external".</t>
            <t>If BGP message header checking (Event 21) or OPEN message checking detects an error (Event 22) (see <xref target="openmsgerr"/>), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>(optionally) If the SendNOTIFICATIONwithoutOPEN session attribute is
set to TRUE, then the local system first sends a NOTIFICATION
message with the appropriate error code, and then</t>
              </li>
              <li>
                <t>stops the ConnectRetryTimer (if running) and sets the
ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If a NOTIFICATION message is received with a version error (Event 24), the local system checks the DelayOpenTimer.  If the DelayOpenTimer is running, the local system:</t>
            <ul spacing="normal">
              <li>
                <t>stops the ConnectRetryTimer (if running) and sets the
ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>stops and resets the DelayOpenTimer (sets to zero),</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If the DelayOpenTimer is not running, the local system:</t>
            <ul spacing="normal">
              <li>
                <t>stops the ConnectRetryTimer and sets the ConnectRetryTimer to
zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>performs peer oscillation damping if the DampPeerOscillations
session attribute is set to True, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>In response to any other events (Events 8, 10-11, 13, 19, 23, 25-28), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>if the ConnectRetryTimer is running, stops and resets the
ConnectRetryTimer (sets to zero),</t>
              </li>
              <li>
                <t>if the DelayOpenTimer is running, stops and resets the
DelayOpenTimer (sets to zero),</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>performs peer oscillation damping if the DampPeerOscillations
session attribute is set to True, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
          </section>
          <section anchor="active-state">
            <name>Active State:</name>
            <t>In this state, BGP FSM is trying to acquire a peer by listening
for, and accepting, a TCP connection.</t>
            <t>The start events (Events 1, 3-7) are ignored in the Active state.</t>
            <t>In response to a ManualStop event (Event 2), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>If the DelayOpenTimer is running and the
SendNOTIFICATIONwithoutOPEN session attribute is set, the
local system sends a NOTIFICATION with a Cease,</t>
              </li>
              <li>
                <t>releases all BGP resources including stopping the
DelayOpenTimer</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>sets ConnectRetryCounter to zero,</t>
              </li>
              <li>
                <t>stops the ConnectRetryTimer and sets the ConnectRetryTimer to
zero, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>In response to a ConnectRetryTimer_Expires event (Event 9), the
local system:</t>
            <ul spacing="normal">
              <li>
                <t>restarts the ConnectRetryTimer (with initial value),</t>
              </li>
              <li>
                <t>initiates a TCP connection to the other BGP peer,</t>
              </li>
              <li>
                <t>continues to listen for a TCP connection that may be initiated
by a remote BGP peer, and</t>
              </li>
              <li>
                <t>changes its state to Connect.</t>
              </li>
            </ul>
            <t>If the local system receives a DelayOpenTimer_Expires event (Event
12), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>stops and clears the DelayOpenTimer (set to zero),</t>
              </li>
              <li>
                <t>completes the BGP initialization,</t>
              </li>
              <li>
                <t>sends the OPEN message to its remote peer,</t>
              </li>
              <li>
                <t>sets its hold timer to a large value, and</t>
              </li>
              <li>
                <t>changes its state to OpenSent.</t>
              </li>
            </ul>
            <t>A HoldTimer value of 4 minutes is also suggested for this state
transition.</t>
            <t>If the local system receives a TcpConnection_Valid event (Event
14), the local system processes the TCP connection flags and stays
in the Active state.</t>
            <t>If the local system receives a Tcp_CR_Invalid event (Event 15),
the local system rejects the TCP connection and stays in the
Active State.</t>
            <t>In response to the success of a TCP connection (Event 16 or Event
17), the local system checks the DelayOpen optional session attribute
prior to processing.</t>
            <t>If the DelayOpen session attribute is set to TRUE, the local system:</t>
            <ul spacing="normal">
              <li>
                <t>stops the ConnectRetryTimer and sets the ConnectRetryTimer
 to zero,</t>
              </li>
              <li>
                <t>sets the DelayOpenTimer to the initial value
 (DelayOpenTime), and</t>
              </li>
              <li>
                <t>stays in the Active state.</t>
              </li>
            </ul>
            <t>If the DelayOpen session attribute is set to FALSE, the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>completes the BGP initialization,</t>
              </li>
              <li>
                <t>sends the OPEN message to its peer,</t>
              </li>
              <li>
                <t>sets its HoldTimer to a large value, and</t>
              </li>
              <li>
                <t>changes its state to OpenSent.</t>
              </li>
            </ul>
            <t>A HoldTimer value of 4 minutes is suggested as a "large value" for
the HoldTimer.</t>
            <t>If the local system receives a TcpConnectionFails event (Event 18), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>restarts the ConnectRetryTimer (with the initial value),</t>
              </li>
              <li>
                <t>stops and clears the DelayOpenTimer (sets the value to zero),</t>
              </li>
              <li>
                <t>releases all BGP resource,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>optionally performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If an OPEN message is received and the DelayOpenTimer is running (Event 20), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>stops the ConnectRetryTimer (if running) and sets the
ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>stops and clears the DelayOpenTimer (sets to zero),</t>
              </li>
              <li>
                <t>completes the BGP initialization,</t>
              </li>
              <li>
                <t>sends an OPEN message,</t>
              </li>
              <li>
                <t>sends a KEEPALIVE message,</t>
              </li>
              <li>
                <t>if the HoldTimer value is non-zero,  </t>
                <ul spacing="normal">
                  <li>
                    <t>starts the KeepaliveTimer to initial value,</t>
                  </li>
                  <li>
                    <t>resets the HoldTimer to the negotiated value,</t>
                  </li>
                </ul>
                <t>
else if the HoldTimer is zero  </t>
                <ul spacing="normal">
                  <li>
                    <t>resets the KeepaliveTimer (set to zero),</t>
                  </li>
                  <li>
                    <t>resets the HoldTimer to zero, and</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>changes its state to OpenConfirm.</t>
              </li>
            </ul>
            <t>If the value of the autonomous system field is the same as the
local Autonomous System number, set the connection status to an
internal connection; otherwise it will be external.</t>
            <t>If BGP message header checking (Event 21) or OPEN message checking
detects an error (Event 22) (see <xref target="openmsgerr"/>), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>(optionally) sends a NOTIFICATION message with the appropriate
error code if the SendNOTIFICATIONwithoutOPEN session attribute is set
to TRUE,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If a NOTIFICATION message is received with a version error (Event
24), the local system checks the DelayOpenTimer.  If the
DelayOpenTimer is running, the local system:</t>
            <ul spacing="normal">
              <li>
                <t>stops the ConnectRetryTimer (if running) and sets the
ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>stops and resets the DelayOpenTimer (sets to zero),</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If the DelayOpenTimer is not running, the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>In response to any other event (Events 8, 10-11, 13, 19, 23,
25-28), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by one,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
          </section>
          <section anchor="opensent">
            <name>OpenSent:</name>
            <t>In this state, BGP FSM waits for an OPEN message from its peer.</t>
            <t>The start events (Events 1, 3-7) are ignored in the OpenSent
state.</t>
            <t>If a ManualStop event (Event 2) is issued in the OpenSent state,
the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sends the NOTIFICATION with a Cease,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>sets the ConnectRetryCounter to zero, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If an AutomaticStop event (Event 8) is issued in the OpenSent
state, the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sends the NOTIFICATION with a Cease,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all the BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If the HoldTimer_Expires (Event 10), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sends a NOTIFICATION message with the error code Hold Timer
Expired,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If a TcpConnection_Valid (Event 14), Tcp_CR_Acked (Event 16), or a
TcpConnectionConfirmed event (Event 17) is received, a second TCP
connection may be in progress.  This second TCP connection is
tracked per Connection Collision processing (<xref target="collision"/>) until an
OPEN message is received.</t>
            <t>A TCP Connection Request for an Invalid port (Tcp_CR_Invalid
(Event 15)) is ignored.</t>
            <t>If a TcpConnectionFails event (Event 18) is received, the local
system:</t>
            <ul spacing="normal">
              <li>
                <t>closes the BGP connection,</t>
              </li>
              <li>
                <t>restarts the ConnectRetryTimer,</t>
              </li>
              <li>
                <t>continues to listen for a connection that may be initiated by
the remote BGP peer, and</t>
              </li>
              <li>
                <t>changes its state to Active.</t>
              </li>
            </ul>
            <t>When an OPEN message is received, all fields are checked for
correctness.  If there are no errors in the OPEN message (Event
19), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>resets the DelayOpenTimer to zero,</t>
              </li>
              <li>
                <t>sets the BGP ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>sends a KEEPALIVE message, and</t>
              </li>
              <li>
                <t>sets a KeepaliveTimer (via the text below)</t>
              </li>
              <li>
                <t>sets the HoldTimer according to the negotiated value (see
<xref target="openfmt"/>),</t>
              </li>
              <li>
                <t>changes its state to OpenConfirm.</t>
              </li>
            </ul>
            <t>If the negotiated hold time value is zero, then the HoldTimer and
KeepaliveTimer are not started.  If the value of the Autonomous
System field is the same as the local Autonomous System number,
then the connection is an "internal" connection; otherwise, it is
an "external" connection.  (This will impact UPDATE processing as
described below.)</t>
            <t>If the BGP message header checking (Event 21) or OPEN message
checking detects an error (Event 22)(see <xref target="openmsgerr"/>), the local
system:</t>
            <ul spacing="normal">
              <li>
                <t>sends a NOTIFICATION message with the appropriate error code,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>Collision detection mechanisms (<xref target="collision"/>) need to be applied
when a valid BGP OPEN message is received (Event 19 or Event 20).
Please refer to <xref target="collision"/> for the details of the comparison.  A
CollisionDetectDump event occurs when the BGP implementation
determines, by means outside the scope of this document, that a
connection collision has occurred.</t>
            <t>If a connection in the OpenSent state is determined to be the
connection that must be closed, an OpenCollisionDump (Event 23) is
signaled to the state machine.  If such an event is received in
the OpenSent state, the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sends a NOTIFICATION with a Cease,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If a NOTIFICATION message is received with a version error (Event
24), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>In response to any other event (Events 9, 11-13, 20, 25-28), the
local system:</t>
            <ul spacing="normal">
              <li>
                <t>sends the NOTIFICATION with the Error Code Finite State
Machine Error,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
          </section>
          <section anchor="openconfirm-state">
            <name>OpenConfirm State:</name>
            <t>In this state, BGP waits for a KEEPALIVE or NOTIFICATION message.</t>
            <t>Any start event (Events 1, 3-7) is ignored in the OpenConfirm
state.</t>
            <t>In response to a ManualStop event (Event 2) initiated by the
operator, the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sends the NOTIFICATION message with a Cease,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>sets the ConnectRetryCounter to zero,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>In response to the AutomaticStop event initiated by the system
(Event 8), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sends the NOTIFICATION message with a Cease,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If the HoldTimer_Expires event (Event 10) occurs before a
KEEPALIVE message is received, the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sends the NOTIFICATION message with the Error Code Hold Timer
Expired,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If the local system receives a KeepaliveTimer_Expires event (Event
11), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sends a KEEPALIVE message,</t>
              </li>
              <li>
                <t>restarts the KeepaliveTimer, and</t>
              </li>
              <li>
                <t>remains in the OpenConfirm state.</t>
              </li>
            </ul>
            <t>In the event of a TcpConnection_Valid event (Event 14), or the
success of a TCP connection (Event 16 or Event 17) while in
OpenConfirm, the local system needs to track the second
connection.</t>
            <t>If a TCP connection is attempted with an invalid port (Event 15),
the local system will ignore the second connection attempt.</t>
            <t>If the local system receives a TcpConnectionFails event (Event 18)
from the underlying TCP or a NOTIFICATION message (Event 25), the
local system:</t>
            <ul spacing="normal">
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If the local system receives a NOTIFICATION message with a version
error (NotifMsgVerErr (Event 24)), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If the local system receives a valid OPEN message (BGPOpen (Event
19)), the collision detect function is processed per <xref target="collision"/>.
If this connection is to be dropped due to connection collision,
the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sends a NOTIFICATION with a Cease,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection (send TCP FIN),</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If an OPEN message is received, all fields are checked for
correctness.  If the BGP message header checking (BGPHeaderErr
(Event 21)) or OPEN message checking detects an error (see <xref target="openmsgerr"/>)
(BGPOpenMsgErr (Event 22)), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sends a NOTIFICATION message with the appropriate error code,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If, during the processing of another OPEN message, the BGP
implementation determines, by a means outside the scope of this
document, that a connection collision has occurred and this
connection is to be closed, the local system will issue an
OpenCollisionDump event (Event 23).  When the local system
receives an OpenCollisionDump event (Event 23), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sends a NOTIFICATION with a Cease,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If the local system receives a KEEPALIVE message (KeepAliveMsg
(Event 26)), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>restarts its HoldTimer, if the negotiated HoldTime value is
non-zero, and</t>
              </li>
              <li>
                <t>starts the SendHoldTimer if the SendHoldTime and the
negotiated HoldTime are both non-zero, and</t>
              </li>
              <li>
                <t>changes its state to Established.</t>
              </li>
            </ul>
            <t>In response to any other event (Events 9, 12-13, 20, 27-28), the
local system:</t>
            <ul spacing="normal">
              <li>
                <t>sends a NOTIFICATION with a code of Finite State Machine
Error,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
          </section>
          <section anchor="established-state">
            <name>Established State:</name>
            <t>In the Established state, the BGP FSM can exchange UPDATE,
NOTIFICATION, and KEEPALIVE messages with its peer.</t>
            <t>Any Start event (Events 1, 3-7) is ignored in the Established
state.</t>
            <t>In response to a ManualStop event (initiated by an operator)
(Event 2), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sends the NOTIFICATION message with a Cease,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>deletes all routes associated with this connection,</t>
              </li>
              <li>
                <t>releases BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>sets the ConnectRetryCounter to zero, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>In response to an AutomaticStop event (Event 8), the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sends a NOTIFICATION with a Cease,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero</t>
              </li>
              <li>
                <t>deletes all routes associated with this connection,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>One reason for an AutomaticStop event is: A BGP receives an UPDATE
messages with a number of prefixes for a given peer such that the
total prefixes received exceeds the maximum number of prefixes
configured.  The local system automatically disconnects the peer.</t>
            <t>If the HoldTimer_Expires event occurs (Event 10), the local
system:</t>
            <ul spacing="normal">
              <li>
                <t>deletes all routes associated with this connection,</t>
              </li>
              <li>
                <t>sends a NOTIFICATION message with the Error Code Hold Timer
Expired,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If the KeepaliveTimer_Expires event occurs (Event 11), the local
system:</t>
            <ul spacing="normal">
              <li>
                <t>sends a KEEPALIVE message, and</t>
              </li>
              <li>
                <t>restarts its KeepaliveTimer, unless the negotiated HoldTime
value is zero.</t>
              </li>
            </ul>
            <t>Each time the local system sends a KEEPALIVE or UPDATE message, it
restarts its KeepaliveTimer, unless the negotiated HoldTime value
is zero.</t>
            <t>If the SendHoldTimer_Expires (Event 29) occurs, the local system:</t>
            <ul spacing="normal">
              <li>
                <t>(optionally) sends a NOTIFICATION message with the BGP Error
Code "Send Hold Timer Expired" if the local system can
determine that doing so will not delay the following actions
in this paragraph,</t>
              </li>
              <li>
                <t>logs an error message in the local system with the BGP Error
Code "Send Hold Timer Expired",</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>Each time the local system sends a BGP message, it restarts the
SendHoldTimer unless the SendHoldTime value is zero or the
negotiated HoldTime value is zero, in which case the
SendHoldTimer is stopped.</t>
            <t>The SendHoldTimer is stopped following any transition out of
the Established state as part of the "release all BGP
resources" action.</t>
            <t>A TcpConnection_Valid (Event 14), received for a valid port, will
cause the second connection to be tracked.</t>
            <t>An invalid TCP connection (Tcp_CR_Invalid event (Event 15)) will
be ignored.</t>
            <t>In response to an indication that the TCP connection is
successfully established (Event 16 or Event 17), the second
connection <bcp14>SHALL</bcp14> be tracked until it sends an OPEN message.</t>
            <t>If a valid OPEN message (BGPOpen (Event 19)) is received, and if
the CollisionDetectEstablishedState optional session attribute is TRUE,
the OPEN message will be checked to see if it collides (<xref target="collision"/>)
with any other connection.  If the BGP implementation
determines that this connection needs to be terminated, it will
process an OpenCollisionDump event (Event 23).  If this connection
needs to be terminated, the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sends a NOTIFICATION with a Cease,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>deletes all routes associated with this connection,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If the local system receives a NOTIFICATION message (Event 24 or
Event 25) or a TcpConnectionFails (Event 18) from the underlying
TCP, the local system:</t>
            <ul spacing="normal">
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>deletes all routes associated with this connection,</t>
              </li>
              <li>
                <t>releases all the BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>If the local system receives a KEEPALIVE message (Event 26), the
local system:</t>
            <ul spacing="normal">
              <li>
                <t>restarts its HoldTimer, if the negotiated HoldTime value is
non-zero, and</t>
              </li>
              <li>
                <t>remains in the Established state.</t>
              </li>
            </ul>
            <t>If the local system receives an UPDATE message (Event 27), the
local system:</t>
            <ul spacing="normal">
              <li>
                <t>processes the message,</t>
              </li>
              <li>
                <t>restarts its HoldTimer, if the negotiated HoldTime value is
non-zero, and</t>
              </li>
              <li>
                <t>remains in the Established state.</t>
              </li>
            </ul>
            <t>If the local system receives an UPDATE message, and the UPDATE
message error handling procedure (see <xref target="updatemsgerr"/>) detects an
error (Event 28), the local system: 
<!-- xxx this is wrong now that we've integrated rfc 7606 -->
            </t>
            <ul spacing="normal">
              <li>
                <t>sends a NOTIFICATION message with an Update error,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>deletes all routes associated with this connection,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
            <t>In response to any other event (Events 9, 12-13, 20-22), the local
system:</t>
            <ul spacing="normal">
              <li>
                <t>sends a NOTIFICATION message with the Error Code Finite State
Machine Error,</t>
              </li>
              <li>
                <t>deletes all routes associated with this connection,</t>
              </li>
              <li>
                <t>sets the ConnectRetryTimer to zero,</t>
              </li>
              <li>
                <t>releases all BGP resources,</t>
              </li>
              <li>
                <t>drops the TCP connection,</t>
              </li>
              <li>
                <t>increments the ConnectRetryCounter by 1,</t>
              </li>
              <li>
                <t>(optionally) performs peer oscillation damping if the
DampPeerOscillations session attribute is set to TRUE, and</t>
              </li>
              <li>
                <t>changes its state to Idle.</t>
              </li>
            </ul>
          </section>
        </section>
      </section>
    </section>
    <section anchor="updatemsg">
      <name>UPDATE Message Handling</name>
      <t>An UPDATE message may be received only in the Established state.
Receiving an UPDATE message in any other state is an error.  When an
UPDATE message is received, each field is checked for validity, as
specified in <xref target="updatemsgerr"/>.</t>
      <t>If an optional non-transitive attribute is unrecognized, it is
quietly discarded.  If an optional transitive attribute is
unrecognized, the Partial bit (the third high-order bit) in the
attribute flags octet is set to 1, and the attribute is retained for
propagation to other BGP speakers.</t>
      <t>If an optional attribute is recognized and has a valid value, then,
depending on the type of the optional attribute, it is processed
locally, retained, and updated, if necessary, for possible
propagation to other BGP speakers.</t>
      <t>If the UPDATE message contains a non-empty Withdrawn Routes field,
the previously advertised routes, whose destinations (expressed as IP
prefixes) are contained in this field, <bcp14>SHALL</bcp14> be removed from the
Adj-RIB-In.  This BGP speaker <bcp14>SHALL</bcp14> run its Decision Process because
the previously advertised route is no longer available for use.</t>
      <t>If the UPDATE message contains a feasible route, the Adj-RIB-In will
be updated with this route as follows: if the NLRI of the new route
is identical to the NLRI of a route associated with the same BGP 
session that is currently stored in the Adj-RIB-In, then the new 
route <bcp14>SHALL</bcp14> replace the older route in the Adj-RIB-In, thus implicitly 
withdrawing the older route from service. Otherwise, if the Adj-RIB-In 
has no such older route, the new route <bcp14>SHALL</bcp14> be placed in the 
Adj-RIB-In.</t>
      <t>Once the BGP speaker updates the Adj-RIB-In, the speaker <bcp14>SHALL</bcp14> run
its Decision Process.</t>
      <section anchor="decision">
        <name>Decision Process</name>
        <t>The Decision Process selects routes for subsequent advertisement by
applying the policies in the local Policy Information Base (PIB) to
the routes stored in its Adj-RIBs-In.  The output of the Decision
Process is the set of routes that will be advertised to peers; the
selected routes will be stored in the local speaker's Adj-RIBs-Out,
according to policy.</t>
        <t>The BGP Decision Process described here is conceptual, and does not
have to be implemented precisely as described, as long as the
implementations support the described functionality and they exhibit
the same externally visible behavior.</t>
        <t>The selection process is formalized by defining a function that takes
the attributes of a given route as an argument and returns either (a)
a non-negative integer denoting the degree of preference for the
route, or (b) a value denoting that this route is ineligible to be
installed in Loc-RIB and will be excluded from the next phase of
route selection.</t>
        <t>The function that calculates the degree of preference for a given
route <bcp14>SHALL NOT</bcp14> use any of the following as its inputs: the existence
of other routes, the non-existence of other routes, or the path
attributes of other routes.  Route selection then consists of the
individual application of the degree of preference function to each
feasible route, followed by the choice of the one with the highest
degree of preference.</t>
        <t>The Decision Process operates on routes contained in the Adj-RIBs-In,
and is responsible for:</t>
        <ul spacing="normal">
          <li>
            <t>selection of routes to be used locally by the speaker</t>
          </li>
          <li>
            <t>selection of routes to be advertised to other BGP peers</t>
          </li>
          <li>
            <t>route aggregation and route information reduction</t>
          </li>
        </ul>
        <t>Routes contained in an Adj-RIB-In associated with an EBGP peer
<bcp14>SHALL NOT</bcp14> be considered eligible in the Decision Process if no
explicit Import Policy has been applied.</t>
        <t>The Decision Process takes place in three distinct phases, each
triggered by a different event:</t>
        <ol spacing="normal" type="%c)"><li>
            <t>Phase 1 is responsible for calculating the degree of preference
 for each route received from a peer.</t>
          </li>
          <li>
            <t>Phase 2 is invoked on completion of phase 1.  It is responsible
 for choosing the best route out of all those available for each
 distinct destination, and for installing each chosen route into
 the Loc-RIB.</t>
          </li>
          <li>
            <t>Phase 3 is invoked after the Loc-RIB has been modified.  It is
 responsible for disseminating routes in the Loc-RIB to each
 peer, according to the policies contained in the PIB.  Route
 aggregation and information reduction can optionally be
 performed within this phase.</t>
          </li>
        </ol>
        <section anchor="phase1">
          <name>Phase 1: Calculation of Degree of Preference</name>
          <t>The Phase 1 decision function is invoked whenever the local BGP
speaker receives, from a peer, an UPDATE message that advertises a
new route, a replacement route, or a withdrawn route.</t>
          <t>The Phase 1 decision function is a separate process, which completes
when it has no further work to do.</t>
          <t>The Phase 1 decision function locks an Adj-RIB-In prior to operating
on any route contained within it, and unlocks it after operating on
all new or unfeasible routes contained within it.</t>
          <t>For each newly received or replacement feasible route, the local BGP speaker determines a degree of preference as follows:</t>
          <ul empty="true">
            <li>
              <t>If the route is learned from an internal peer, either the value of
the LOCAL_PREF attribute is taken as the degree of preference, or
the local system computes the degree of preference of the route
based on preconfigured policy information.  Note that the latter
may result in formation of persistent routing loops.</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>If the route is learned from an external peer, then the local BGP
speaker computes the degree of preference based on preconfigured
policy information.  If the return value indicates the route is
ineligible, the route <bcp14>MUST NOT</bcp14> serve as an input to the next phase
of route selection; otherwise, the return value <bcp14>MUST</bcp14> be used as
the LOCAL_PREF value in any propagation of the route into IBGP.</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>The exact nature of this policy information, and the computation
involved, is a local matter.</t>
            </li>
          </ul>
        </section>
        <section anchor="phase2">
          <name>Phase 2: Route Selection</name>
          <t>The Phase 2 decision function is invoked on completion of Phase 1.
The Phase 2 function is a separate process, which completes when it
has no further work to do.  The Phase 2 process considers all routes
that are eligible in the Adj-RIBs-In.</t>
          <t>The Phase 2 decision function is blocked from running while the Phase
3 decision function is in process.  The Phase 2 function locks all
Adj-RIBs-In prior to commencing its function, and unlocks them on
completion.</t>
          <t>If the NEXT_HOP attribute of a BGP route depicts an address that is
not resolvable, or if it would become unresolvable if the route was
installed in the routing table, the BGP route <bcp14>MUST</bcp14> be excluded from
the Phase 2 decision function.</t>
          <t>If the AS_PATH attribute of a BGP route contains an AS loop, the BGP
route should be excluded from the Phase 2 decision function.  AS loop
detection is done by scanning the full AS path (as specified in the
AS_PATH attribute), and checking that the autonomous system number of
the local system does not appear in the AS path.  Operations of a BGP
speaker that is configured to accept routes with its own autonomous
system number in the AS path are outside the scope of this document.
<xref target="RFC7705"/>, if used, documents variations on this procedure.</t>
          <t>It is critical that BGP speakers within an AS do not make conflicting
decisions regarding route selection that would cause forwarding loops
to occur.</t>
          <t>For each set of destinations for which a feasible route exists in the
Adj-RIBs-In, the local BGP speaker identifies the route that has:</t>
          <ol spacing="normal" type="%c)"><li>
              <t>the highest degree of preference of any route to the same set
 of destinations, or</t>
            </li>
            <li>
              <t>is the only route to that destination, or</t>
            </li>
            <li>
              <t>is selected as a result of the Phase 2 tie breaking rules
 specified in <xref target="phase2tiebreak"/>.</t>
            </li>
          </ol>
          <t>The local speaker <bcp14>SHALL</bcp14> then install that route in the Loc-RIB,
replacing any route to the same destination that is currently being
held in the Loc-RIB.  When the new BGP route is installed in the
Routing Table, care must be taken to ensure that existing routes to
the same destination that are now considered invalid are removed from
the Routing Table.  Whether the new BGP route replaces an existing
non-BGP route in the Routing Table depends on the policy configured
on the BGP speaker.</t>
          <t>The local speaker <bcp14>MUST</bcp14> determine the immediate next-hop address from
the NEXT_HOP attribute of the selected route (see <xref target="nexthop"/>).  If
either the immediate next-hop or the IGP cost to the NEXT_HOP (where
the NEXT_HOP is resolved through an IGP route) changes, Phase 2 Route
Selection <bcp14>MUST</bcp14> be performed again.</t>
          <t>Notice that even though BGP routes do not have to be installed in the
Routing Table with the immediate next-hop(s), implementations <bcp14>MUST</bcp14>
take care that, before any packets are forwarded along a BGP route,
its associated NEXT_HOP address is resolved to the immediate
(directly connected) next-hop address, and that this address (or
multiple addresses) is finally used for actual packet forwarding.</t>
          <t>Unresolvable routes <bcp14>SHALL</bcp14> be removed from the Loc-RIB and the routing
table.  However, corresponding unresolvable routes <bcp14>SHOULD</bcp14> be kept in
the Adj-RIBs-In (in case they become resolvable).</t>
          <section anchor="route-resolvability-condition">
            <name>Route Resolvability Condition</name>
            <t>As indicated in <xref target="phase2"/>, BGP speakers exclude
unresolvable routes from the Phase 2 decision.  This ensures that
only valid routes are installed in the Loc-RIB and Routing Table.
<!-- XXX The SHOULD above (a) seems wrong, (b) is unnecessary but worst of all (c) conflicts with a MUST in paragraph 4 of the previous section. -->
            </t>
            <t>The route resolvability condition is defined as follows:</t>
            <ol spacing="normal" type="1"><li>
                <t>A route Rte1, referencing only the intermediate network
address, is considered resolvable if the Routing Table contains
at least one resolvable route Rte2 that matches Rte1's
intermediate network address and is not recursively resolved
(directly or indirectly) through Rte1.  If multiple matching
routes are available, only the longest matching route is
considered.</t>
              </li>
              <li>
                <t>Routes referencing interfaces (with or without intermediate
addresses) are considered resolvable if the state of the
referenced interface is up and if IP processing is enabled on
this interface.</t>
              </li>
            </ol>
            <t>BGP routes do not refer to interfaces, but can be resolved through
the routes in the Routing Table that can be of both types (those that
specify interfaces or those that do not).  IGP routes and routes to
directly connected networks are expected to specify the outbound
interface.  Static routes can specify the outbound interface, the
intermediate address, or both.</t>
            <t>Note that a BGP route is considered unresolvable in a situation where
the BGP speaker's Routing Table contains no route matching the BGP
route's NEXT_HOP.  Mutually recursive routes (routes resolving each
other or themselves) also fail the resolvability check.</t>
            <t>It is also important that implementations do not consider feasible
routes that would become unresolvable if they were installed in the
Routing Table, even if their NEXT_HOPs are resolvable using the
current contents of the Routing Table (an example of such routes
would be mutually recursive routes).  This check ensures that a BGP
speaker does not install routes in the Routing Table that will be
removed and not used by the speaker.  Therefore, in addition to local
Routing Table stability, this check also improves behavior of the
protocol in the network.</t>
            <t>Whenever a BGP speaker identifies a route that fails the
resolvability check because of mutual recursion, an error message
<bcp14>SHOULD</bcp14> be logged.</t>
          </section>
          <section anchor="phase2tiebreak">
            <name>Breaking Ties (Phase 2)</name>
            <t>In its Adj-RIBs-In, a BGP speaker may have several routes to the same
destination that have the same degree of preference.  The local
speaker can select only one of these routes for inclusion in the
associated Loc-RIB.  The local speaker considers all routes with the
same degrees of preference, both those received from internal peers,
and those received from external peers.</t>
            <t>The following tie-breaking procedure assumes that, for each candidate
route, all the BGP speakers within an autonomous system can ascertain
the cost of a path (interior distance) to the address depicted by the
NEXT_HOP attribute of the route, and follow the same route selection
algorithm.</t>
            <t>The tie-breaking algorithm begins by considering all equally
preferable routes to the same destination, and then selects routes to
be removed from consideration.  The algorithm terminates as soon as
only one route remains in consideration.  The criteria <bcp14>MUST</bcp14> be
applied in the order specified.</t>
            <t>Several of the criteria are described using pseudo-code.  Note that
the pseudo-code shown was chosen for clarity, not efficiency.  It is
not intended to specify any particular implementation.  BGP
implementations <bcp14>MAY</bcp14> use any algorithm that produces the same results
as those described here.</t>
            <ol group="tiebreak" spacing="normal" type="%c)"><li>
                <t>Remove from consideration all routes that are not tied for
 having the smallest number of AS numbers present in their
 AS_PATH attributes.  Note that when counting this number, an
 AS_SET counts as 1, no matter how many ASes are in the set.</t>
              </li>
              <li>
                <t>Remove from consideration all routes that are not tied for
 having the lowest Origin number in their Origin attribute.</t>
              </li>
              <li>
                <t>Remove from consideration routes with less-preferred
 MULTI_EXIT_DISC attributes.  MULTI_EXIT_DISC is only comparable
 between routes learned from the same neighboring AS (the
 neighboring AS is determined from the AS_PATH attribute).
 Routes that do not have the MULTI_EXIT_DISC attribute are
 considered to have the lowest possible MULTI_EXIT_DISC value.</t>
              </li>
            </ol>
            <ul empty="true">
              <li>
                <t>This is also described in the following procedure:
<!-- XXX I wasn't sure how to get the indent right for the above. It's part of the previous paragraph, shouldn't get a new bullet, should get the same indent. Same for the later paragraphs that I've crudely indented. -->
                </t>
              </li>
            </ul>
            <artwork><![CDATA[
    for m = all routes still under consideration
        for n = all routes still under consideration
            if (neighborAS(m) == neighborAS(n)) and (MED(n) < MED(m))
                remove route m from consideration
]]></artwork>
            <ul empty="true">
              <li>
                <t>In the pseudo-code above, MED(n) is a function that returns the
value of route n's MULTI_EXIT_DISC attribute.  If route n has
no MULTI_EXIT_DISC attribute, the function returns the lowest
possible MULTI_EXIT_DISC value (i.e., 0).</t>
              </li>
            </ul>
            <ul empty="true">
              <li>
                <t>Similarly, neighborAS(n) is a function that returns the
neighbor AS from which the route was received.  If the route is
learned via IBGP, and the other IBGP speaker didn't originate
the route, it is the neighbor AS from which the other IBGP
speaker learned the route.  If the AS_PATH attribute
is either empty or begins with an AS_SET, it is the local AS.</t>
              </li>
            </ul>
            <ul empty="true">
              <li>
                <t>If a MULTI_EXIT_DISC attribute is removed before re-advertising
a route into IBGP, then comparison based on the received EBGP
MULTI_EXIT_DISC attribute <bcp14>MAY</bcp14> still be performed.  If an
implementation chooses to remove MULTI_EXIT_DISC, then the
optional comparison on MULTI_EXIT_DISC, if performed, <bcp14>MUST</bcp14> be
performed only among EBGP-learned routes.  The best EBGP-
learned route may then be compared with IBGP-learned routes
after the removal of the MULTI_EXIT_DISC attribute.  If
MULTI_EXIT_DISC is removed from a subset of EBGP-learned
routes, and the selected "best" EBGP-learned route will not
have MULTI_EXIT_DISC removed, then the MULTI_EXIT_DISC must be
used in the comparison with IBGP-learned routes.  For IBGP-
learned routes, the MULTI_EXIT_DISC <bcp14>MUST</bcp14> be used in route
comparisons that reach this step in the Decision Process.
Including the MULTI_EXIT_DISC of an EBGP-learned route in the
comparison with an IBGP-learned route, then removing the
MULTI_EXIT_DISC attribute, and advertising the route has been
proven to cause route loops.</t>
              </li>
            </ul>
            <ol group="tiebreak" spacing="normal" type="%c)"><li>
                <t>If at least one of the candidate routes was received via EBGP,
 remove from consideration all routes that were not received via
 EBGP.</t>
              </li>
            </ol>
            <ol group="tiebreak" spacing="normal" type="%c)"><li>
                <t>Remove from consideration any routes with less-preferred
 interior cost.  The interior cost of a route is determined by
 calculating the metric to the NEXT_HOP for the route using the
 Routing Table.  If the NEXT_HOP hop for a route is reachable,
 but no cost can be determined, that route should remain in
 consideration, i.e. it is not considered to be less-preferred.
 (Some implementations may choose to render this issue 
 moot by ensuring a cost can always be determined, by applying
 a default value for routes that otherwise would have no cost. The 
 details of such a strategy are beyond the scope of this document.)</t>
              </li>
            </ol>
            <ul empty="true">
              <li>
                <t>This is also described in the following procedure.</t>
              </li>
            </ul>
            <artwork><![CDATA[
      for m = all routes still under consideration
          for n = all routes in still under consideration
              if (cost(n) can be determined and cost(m) can be determined)
                  if (cost(n) is lower than cost(m))
                      remove m from consideration
]]></artwork>
            <ul empty="true">
              <li>
                <t>In the pseudo-code above, cost(n) is a function that returns
   the cost of the path (interior distance) to the address given
   in the NEXT_HOP attribute of the route.</t>
              </li>
            </ul>
            <ol group="tiebreak" spacing="normal" type="%c)"><li>
                <t>Remove from consideration all routes other than the route that
 was advertised by the BGP speaker with the lowest BGP
 Identifier value. (<xref target="RFC5004"/>, if used, modifies this rule.)</t>
              </li>
              <li>
                <t>Prefer the route received from the lowest peer address.</t>
              </li>
            </ol>
          </section>
        </section>
        <section anchor="phase-3-route-dissemination">
          <name>Phase 3: Route Dissemination</name>
          <t>The Phase 3 decision function is invoked on completion of Phase 2, or
when any of the following events occur:</t>
          <ol spacing="normal" type="%c)"><li>
              <t>when routes in the Loc-RIB to local destinations have changed</t>
            </li>
            <li>
              <t>when locally generated routes learned by means outside of BGP
 have changed</t>
            </li>
            <li>
              <t>when a new BGP speaker connection has been established</t>
            </li>
          </ol>
          <t>The Phase 3 function is a separate process that completes when it has
no further work to do.  The Phase 3 Routing Decision function is
blocked from running while the Phase 2 decision function is in
process.</t>
          <t>All routes in the Loc-RIB are processed into Adj-RIBs-Out according
to configured policy.  This policy <bcp14>MAY</bcp14> exclude a route in the Loc-RIB
from being installed in a particular Adj-RIB-Out.  A route <bcp14>SHALL NOT</bcp14>
be installed in the Adj-Rib-Out unless the destination, and NEXT_HOP
described by this route, may be forwarded appropriately by the
Routing Table.  If a route to a particular destination is excluded from 
a particular Adj-RIB-Out, and if a route to that destination had 
previously been advertised from that Adj-RIB-Out, the previously 
advertised route in that Adj-RIB-Out <bcp14>MUST</bcp14> be withdrawn from service by 
means of an UPDATE message (see <xref target="updatesend"/>).</t>
          <t>Routes <bcp14>SHALL NOT</bcp14> be added to an Adj-RIB-Out associated with an EBGP peer
if no explicit Export Policy has been applied.</t>
          <t>Route aggregation and information reduction techniques (see <xref target="informreduce"/>) 
may optionally be applied.</t>
          <t>Any local policy that results in routes being added to an Adj-RIB-Out
without also being added to the local BGP speaker's forwarding table
is outside the scope of this document.</t>
          <t>When the updating of the Adj-RIBs-Out and the Routing Table is
complete, the local BGP speaker runs the Update-Send process of <xref target="updatesend"/>.</t>
        </section>
        <section anchor="overlap">
          <name>Overlapping Routes</name>
          <t>A BGP speaker may transmit routes with overlapping Network Layer
Reachability Information (NLRI) to another BGP speaker.  NLRI overlap
occurs when a set of destinations are identified in non-matching
multiple routes.  Because BGP encodes NLRI using IP prefixes, overlap
will always exhibit subset relationships.  A route describing a
smaller set of destinations (a longer prefix) is said to be more
specific than a route describing a larger set of destinations (a
shorter prefix); similarly, a route describing a larger set of
destinations is said to be less specific than a route describing a
smaller set of destinations.</t>
          <t>The precedence relationship effectively decomposes less specific
routes into two parts:</t>
          <ul spacing="normal">
            <li>
              <t>a set of destinations described only by the less specific route,
and</t>
            </li>
            <li>
              <t>a set of destinations described by the overlap of the less
specific and the more specific routes</t>
            </li>
          </ul>
          <t>The set of destinations described by the overlap represents a portion
of the less specific route that is feasible, but is not currently in
use.  If a more specific route is later withdrawn, the set of
destinations described by the overlap will still be reachable using
the less specific route.</t>
          <t>If a BGP speaker receives overlapping routes, the Decision Process
<bcp14>MUST</bcp14> consider both routes based on the configured acceptance policy.
If both a less and a more specific route are accepted, then the
Decision Process <bcp14>MUST</bcp14> install, in Loc-RIB, either both the less and
the more specific routes or aggregate the two routes and install, in
Loc-RIB, the aggregated route, provided that both routes have the
same value of the NEXT_HOP attribute.</t>
          <t>If a BGP speaker chooses to aggregate, then it <bcp14>SHOULD</bcp14> <!-- MUST? --> add the
ATOMIC_AGGREGATE attribute to the route.  <!-- This attribute is now
primarily informational.  With the elimination of IP routing
protocols that do not support classless routing, and the elimination
of router and host implementations that do not support classless
routing, there is no longer a need to de-aggregate. -->  Routes <bcp14>SHOULD
NOT</bcp14> be de-aggregated.  In particular, a route that carries the
ATOMIC_AGGREGATE attribute <bcp14>MUST NOT</bcp14> be de-aggregated.  That is, the
NLRI of this route cannot be made more specific.  Forwarding along such a
route does not guarantee that IP packets will actually traverse only
ASes listed in the AS_PATH attribute of the route.</t>
        </section>
      </section>
      <section anchor="updatesend">
        <name>Update-Send Process</name>
        <t>The Update-Send process is responsible for advertising UPDATE
messages to all peers.  It distributes the routes chosen
by the Decision Process to other BGP speakers, which may be located
in either the same autonomous system or a neighboring autonomous
system.</t>
        <t>When a BGP speaker receives an UPDATE message from an internal peer,
the receiving BGP speaker <bcp14>SHALL NOT</bcp14> re-distribute the routing
information contained in that UPDATE message to other internal peers
(unless the speaker acts as a BGP Route Reflector <xref target="RFC4456"/>).</t>
        <t>As part of Phase 3 of the route selection process, the BGP speaker
has updated its Adj-RIBs-Out.  All newly installed routes and all
newly unfeasible routes for which there is no replacement route <bcp14>SHALL</bcp14>
be advertised to its peers by means of one or more UPDATE messages.</t>
        <t>A BGP speaker <bcp14>SHOULD NOT</bcp14> advertise a given feasible BGP route from
its Adj-RIB-Out if it would produce an UPDATE message containing the
same BGP route as was previously advertised.</t>
        <t>Any routes in the Loc-RIB marked as unfeasible <bcp14>SHALL</bcp14> be removed.
Changes to the reachable destinations within its own autonomous
system <bcp14>SHALL</bcp14> also be advertised in an UPDATE message.</t>
        <t>If, due to the limits on the maximum size of an UPDATE message (see
<xref target="msgformat"/>), a single route doesn't fit into the message, the BGP
speaker <bcp14>MUST NOT</bcp14> advertise the route to its peers and <bcp14>MAY</bcp14> choose to
log an error locally.  If a route for the affected destination has
previously been advertised, that route <bcp14>MUST</bcp14> be withdrawn.</t>
        <section anchor="controlling-routing-traffic-overhead">
          <name>Controlling Routing Traffic Overhead</name>
          <t>The BGP protocol constrains the amount of routing traffic (that is,
UPDATE messages), in order to limit both the link bandwidth needed to
advertise UPDATE messages and the processing power needed by the
Decision Process to digest the information contained in the UPDATE
messages.</t>
          <section anchor="mrai">
            <name>Frequency of Route Advertisement</name>
            <t>The parameter MinRouteAdvertisementIntervalTimer determines the
minimum amount of time that must elapse between an advertisement
and/or withdrawal of routes to a particular destination by a BGP
speaker to a peer.  This rate limiting procedure applies on a per-
destination basis, although the value of
MinRouteAdvertisementIntervalTimer is set on a per BGP peer basis.</t>
            <t>Two UPDATE messages sent by a BGP speaker to a peer that advertise feasible
routes and/or withdrawal of unfeasible routes to some common set of
destinations <bcp14>MUST</bcp14> be separated by at least
MinRouteAdvertisementIntervalTimer.  An implementation <bcp14>MUST</bcp14> also provide an
upper bound on the interval.</t>
            <t>Since fast convergence is needed within an autonomous system, either
(a) the MinRouteAdvertisementIntervalTimer used for internal peers
<bcp14>SHOULD</bcp14> be shorter than the MinRouteAdvertisementIntervalTimer used
for external peers, or (b) the procedure described in this section
<bcp14>SHOULD NOT</bcp14> apply to routes sent to internal peers.</t>
            <t>This procedure does not limit the rate of route selection, but only
the rate of route advertisement.  If new routes are selected multiple
times while awaiting the expiration of
MinRouteAdvertisementIntervalTimer, the last route selected <bcp14>SHALL</bcp14> be
advertised at the end of MinRouteAdvertisementIntervalTimer, and the 
intermediate selections <bcp14>SHALL NOT</bcp14> be advertised.</t>
          </section>
          <section anchor="freqoforigination">
            <name>Frequency of Route Origination</name>
            <t>The parameter MinASOriginationIntervalTimer determines the minimum
amount of time that must elapse between successive advertisements of
UPDATE messages that report changes within the advertising BGP
speaker's own autonomous systems.</t>
          </section>
        </section>
        <section anchor="efficient-organization-of-routing-information">
          <name>Efficient Organization of Routing Information</name>
          <t>Having selected the routing information it will advertise, a BGP
speaker may avail itself of several methods to organize this
information in an efficient manner.</t>
          <section anchor="informreduce">
            <name>Information Reduction</name>
            <!-- it seems to me we can eliminate this subsection, it's almost
 vacuous. In the 1990s it needed to be explained; in 2026 it 
 goes without saying. -->

<t>Information reduction may imply a reduction in granularity of policy
control - after information is collapsed, the same policies will
apply to all destinations and paths in the equivalence class.</t>
            <t>The Decision Process may optionally reduce the amount of information
that it will place in the Adj-RIBs-Out as follows:</t>
            <ol spacing="normal" type="%c)"><li>
                <t>Network Layer Reachability Information (NLRI):
Destination IP addresses can be represented as IP address
prefixes.  In cases where there is a correspondence between the
address structure and the systems under control of an
autonomous system administrator, it will be possible to reduce
the size of the NLRI carried in the UPDATE messages.</t>
              </li>
            </ol>
          </section>
          <section anchor="aggregating">
            <name>Aggregating Routing Information</name>
            <t>Aggregation is the process of combining the characteristics of
several different routes in such a way that a single route can be
advertised.  Aggregation can occur as part of the Decision Process to
reduce the amount of routing information that will be placed in the
Adj-RIBs-Out.</t>
            <t>Aggregation reduces the amount of information that a BGP speaker must
store and exchange with other BGP speakers.  Routes can be aggregated
by applying the following procedure, separately, to path attributes
of the same type and to the Network Layer Reachability Information.</t>
            <t>Routes that have different MULTI_EXIT_DISC attributes <bcp14>SHALL NOT</bcp14> be
aggregated.</t>
            <t>Path attributes that have different type codes cannot be aggregated
together.  Path attributes of the same type code may be aggregated,
according to the following rules:</t>
            <dl>
              <dt>NEXT_HOP:</dt>
              <dd>
                <t>When aggregating routes that have different NEXT_HOP
attributes, the NEXT_HOP attribute of the aggregated route
<bcp14>SHALL</bcp14> identify an interface on the BGP speaker that performs
the aggregation.</t>
              </dd>
              <dt>ORIGIN attribute:</dt>
              <dd>
                <t>If at least one route among routes that are aggregated has
ORIGIN with the value INCOMPLETE, then the aggregated route
<bcp14>MUST</bcp14> have the ORIGIN attribute with the value INCOMPLETE.
Otherwise, if at least one route among routes that are
aggregated has ORIGIN with the value EGP, then the aggregated
route <bcp14>MUST</bcp14> have the ORIGIN attribute with the value EGP.  In
all other cases, the value of the ORIGIN attribute of the
aggregated route is IGP.</t>
              </dd>
              <dt>AS_PATH attribute:</dt>
              <dd>
                <t>If routes to be aggregated have identical AS_PATH attributes,
then the aggregated route has the same AS_PATH attribute as
each individual route.
</t>
                <t>Otherwise, for the purpose of aggregating AS_PATH attributes, we
model each AS within the AS_PATH attribute as a tuple &lt;type,
value&gt;, where "type" identifies a type of the path segment the AS
belongs to (e.g., AS_SEQUENCE, AS_SET), and "value" identifies the
AS number.  An aggregated AS_PATH attribute can be formed as
follows:</t>
              </dd>
              <dt/>
              <dd>
                <ul spacing="normal">
                  <li>
                    <t>determine the longest leading sequence of tuples of type
AS_SEQUENCE (as defined above) common to all the AS_PATH attributes
of the routes to be aggregated.  Make this sequence the leading
sequence of the aggregated AS_PATH attribute.</t>
                  </li>
                  <li>
                    <t>for each pair of adjacent tuples in the aggregated AS_PATH,
if both tuples have the same type (which they will), merge 
them together, as long as doing so will not cause a segment 
with a length greater than 255 to be generated.</t>
                  </li>
                  <li>
                    <t>Attach the ATOMIC_AGGREGATE path attribute to the aggregated 
route.</t>
                  </li>
                </ul>
                <t>Except in the identical AS_PATH case described in the first
paragraph, the aggregation procedure will not consume all tuples.
This is why the ATOMIC_AGGREGATE attribute is attached.</t>
                <t>Optionally, the resulting AS_PATH <bcp14>MAY</bcp14> be truncated further. 
Details of when and how to do so are beyond the scope of this
specification.</t>
                <t><xref target="RFC9774"/> refers to the style of aggregation 
described above as "brief". It also defines a variant known as 
"consistent brief" which further truncates the AS_PATH under
some circumstances.</t>
              </dd>
              <dt>ATOMIC_AGGREGATE:</dt>
              <dd>
                <t>If at least one of the routes to be aggregated has
ATOMIC_AGGREGATE path attribute, then the aggregated route
<bcp14>SHALL</bcp14> have this attribute as well.</t>
              </dd>
              <dt>AGGREGATOR:</dt>
              <dd>
                <t>Any AGGREGATOR attributes from the routes to be aggregated <bcp14>MUST
NOT</bcp14> be included in the aggregated route.  The BGP speaker
performing the route aggregation <bcp14>MAY</bcp14> attach a new AGGREGATOR
attribute (see <xref target="aggregator"/>).</t>
              </dd>
            </dl>
          </section>
        </section>
      </section>
      <section anchor="route-selection-criteria">
        <name>Route Selection Criteria</name>
        <t>Generally, additional rules for comparing routes among several
alternatives are outside the scope of this document.  There are two
exceptions:</t>
        <ul spacing="normal">
          <li>
            <t>If the local AS appears in the AS path of the new route being
considered, then that new route cannot be viewed as better than
any other route (provided that the speaker is configured to
accept such routes).  If such a route were ever used, a routing
loop could result.</t>
          </li>
          <li>
            <t>In order to achieve a successful distributed operation, only
routes with a likelihood of stability can be chosen.  Thus, an
AS <bcp14>SHOULD</bcp14> avoid using unstable routes, and it <bcp14>SHOULD NOT</bcp14> make
rapid, spontaneous changes to its choice of route.  Quantifying
the terms "unstable" and "rapid" (from the previous sentence)
will require experience, but the principle is clear.  Routes
that are unstable can be "penalized" (e.g., by using the
procedures described in <xref target="RFC2439"/>).</t>
          </li>
        </ul>
      </section>
      <section anchor="originating-bgp-routes">
        <name>Originating BGP routes</name>
        <t>A BGP speaker may originate BGP routes by injecting routing
information acquired by some other means (e.g., via an IGP) into BGP.
A BGP speaker that originates BGP routes assigns the degree of
preference (e.g., according to local configuration) to these routes
by passing them through the Decision Process (see <xref target="decision"/>).
These routes <bcp14>MAY</bcp14> also be distributed to other BGP speakers within the
local AS as part of the update process (see <xref target="updatesend"/>).  The
decision of whether to distribute non-BGP acquired routes within an
AS via BGP depends on the environment within the AS (e.g., type of
IGP) and <bcp14>SHOULD</bcp14> be controlled via configuration.</t>
      </section>
    </section>
    <section anchor="timers">
      <name>BGP Timers</name>
      <t>BGP employs five timers: ConnectRetryTimer (see <xref target="fsm"/>), HoldTimer
(see <xref target="openfmt"/>), KeepaliveTimer (see <xref target="fsm"/>),
MinASOriginationIntervalTimer (see <xref target="freqoforigination"/>), and
MinRouteAdvertisementIntervalTimer (see <xref target="mrai"/>).</t>
      <t>Three optional timers <bcp14>MAY</bcp14> be supported: DelayOpenTimer, IdleHoldTimer
and SendHoldTimer (see <xref target="fsm"/>).  <xref target="fsm"/> describes their use.</t>
      <t>ConnectRetryTime is a mandatory FSM attribute that stores the initial
value for the ConnectRetryTimer.  The suggested default value for the
ConnectRetryTime is 120 seconds.</t>
      <t>HoldTime is a mandatory FSM attribute that stores the initial value
for the HoldTimer.  The suggested default value for the HoldTime is
90 seconds.</t>
      <t>During some portions of the state machine (see <xref target="fsm"/>), the
HoldTimer is set to a large value.  The suggested default for this
large value is 4 minutes.</t>
      <t>SendHoldTime is an FSM attribute that stores the initial value for
the SendHoldTimer.  If SendHoldTime is non-zero, then it <bcp14>MUST</bcp14> be
greater than the value of HoldTime. The default value of SendHoldTime
<bcp14>SHOULD</bcp14> be the greater of:</t>
      <ul spacing="normal">
        <li>
          <t>8 minutes or</t>
        </li>
        <li>
          <t>2 times the negotiated HoldTime</t>
        </li>
      </ul>
      <t>The KeepaliveTime is a mandatory FSM attribute that stores the
initial value for the KeepaliveTimer.  The suggested default value
for the KeepaliveTime is 1/3 of the HoldTime.</t>
      <t>The suggested default value for the MinASOriginationIntervalTimer is
15 seconds.</t>
      <t>The suggested default value for the
MinRouteAdvertisementIntervalTimer on EBGP connections is 30 seconds.</t>
      <t>The suggested default value for the
MinRouteAdvertisementIntervalTimer on IBGP connections is 5 seconds.</t>
      <t>An implementation of BGP <bcp14>MUST</bcp14> allow the HoldTimer to be configurable
on a per-peer basis, and <bcp14>MAY</bcp14> allow the other timers to be
configurable.</t>
      <t>To minimize the likelihood that the distribution of BGP messages by a
given BGP speaker will contain peaks, jitter <bcp14>SHOULD</bcp14> be applied to the
timers associated with MinASOriginationIntervalTimer, KeepaliveTimer,
MinRouteAdvertisementIntervalTimer, and ConnectRetryTimer.  A given
BGP speaker <bcp14>MAY</bcp14> apply the same jitter to each of these quantities,
regardless of the destinations to which the updates are being sent;
that is, jitter need not be configured on a per-peer basis.</t>
      <t>The suggested default amount of jitter <bcp14>SHALL</bcp14> be determined by
multiplying the base value of the appropriate timer by a random
factor, which is uniformly distributed in the range from 0.75 to 1.0.
A new random value <bcp14>SHOULD</bcp14> be picked each time the timer is set.  The
range of the jitter's random value <bcp14>MAY</bcp14> be configurable.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC791">
          <front>
            <title>Internet Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="September" year="1981"/>
          </front>
          <seriesInfo name="STD" value="5"/>
          <seriesInfo name="RFC" value="791"/>
          <seriesInfo name="DOI" value="10.17487/RFC791"/>
        </reference>
        <reference anchor="RFC793">
          <front>
            <title>Transmission Control Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="September" year="1981"/>
          </front>
          <seriesInfo name="RFC" value="793"/>
          <seriesInfo name="DOI" value="10.17487/RFC793"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC2385">
          <front>
            <title>Protection of BGP Sessions via the TCP MD5 Signature Option</title>
            <author fullname="A. Heffernan" initials="A." surname="Heffernan"/>
            <date month="August" year="1998"/>
            <abstract>
              <t>This memo describes a TCP extension to enhance security for BGP. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2385"/>
          <seriesInfo name="DOI" value="10.17487/RFC2385"/>
        </reference>
        <reference anchor="RFC4760">
          <front>
            <title>Multiprotocol Extensions for BGP-4</title>
            <author fullname="T. Bates" initials="T." surname="Bates"/>
            <author fullname="R. Chandra" initials="R." surname="Chandra"/>
            <author fullname="D. Katz" initials="D." surname="Katz"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <date month="January" year="2007"/>
            <abstract>
              <t>This document defines extensions to BGP-4 to enable it to carry routing information for multiple Network Layer protocols (e.g., IPv6, IPX, L3VPN, etc.). The extensions are backward compatible - a router that supports the extensions can interoperate with a router that doesn't support the extensions. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4760"/>
          <seriesInfo name="DOI" value="10.17487/RFC4760"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC904">
          <front>
            <title>Exterior Gateway Protocol formal specification</title>
            <author fullname="D.L. Mills" initials="D.L." surname="Mills"/>
            <date month="April" year="1984"/>
            <abstract>
              <t>RFC-904 is the specification of the Exterior Gateway Protocol (EGP). This memo updates portions of RFC-888 and RFC-827. This RFC specifies an official protocol of the DARPA community for use between gateways of different autonomous systems in the ARPA-Internet.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="904"/>
          <seriesInfo name="DOI" value="10.17487/RFC904"/>
        </reference>
        <reference anchor="RFC1092">
          <front>
            <title>EGP and policy based routing in the new NSFNET backbone</title>
            <author fullname="J. Rekhter" initials="J." surname="Rekhter"/>
            <date month="February" year="1989"/>
            <abstract>
              <t>This memo discusses implementation decisions for routing issues in the NSFNET, especially in the NSFNET Backbone. Of special concern is the restriction of routing information to advertize the best route as established by a policy decision.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1092"/>
          <seriesInfo name="DOI" value="10.17487/RFC1092"/>
        </reference>
        <reference anchor="RFC1093">
          <front>
            <title>NSFNET routing architecture</title>
            <author fullname="H.W. Braun" initials="H.W." surname="Braun"/>
            <date month="February" year="1989"/>
            <abstract>
              <t>This document describes the routing architecture for the NSFNET centered around the new NSFNET Backbone, with specific emphasis on the interface between the backbone and its attached networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1093"/>
          <seriesInfo name="DOI" value="10.17487/RFC1093"/>
        </reference>
        <reference anchor="RFC1267">
          <front>
            <title>Border Gateway Protocol 3 (BGP-3)</title>
            <author fullname="K. Lougheed" initials="K." surname="Lougheed"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <date month="October" year="1991"/>
            <abstract>
              <t>This memo, together with its companion document, "Application of the Border Gateway Protocol in the Internet", define an inter-autonomous system routing protocol for the Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1267"/>
          <seriesInfo name="DOI" value="10.17487/RFC1267"/>
        </reference>
        <reference anchor="RFC1771">
          <front>
            <title>A Border Gateway Protocol 4 (BGP-4)</title>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <author fullname="T. Li" initials="T." surname="Li"/>
            <date month="March" year="1995"/>
            <abstract>
              <t>This document, together with its companion document, "Application of the Border Gateway Protocol in the Internet", define an inter-autonomous system routing protocol for the Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1771"/>
          <seriesInfo name="DOI" value="10.17487/RFC1771"/>
        </reference>
        <reference anchor="RFC1772">
          <front>
            <title>Application of the Border Gateway Protocol in the Internet</title>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <author fullname="P. Gross" initials="P." surname="Gross"/>
            <date month="March" year="1995"/>
            <abstract>
              <t>This document, together with its companion document, "A Border Gateway Protocol 4 (BGP-4)", define an inter-autonomous system routing protocol for the Internet. This document describes the usage of the BGP in the Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1772"/>
          <seriesInfo name="DOI" value="10.17487/RFC1772"/>
        </reference>
        <reference anchor="RFC1518">
          <front>
            <title>An Architecture for IP Address Allocation with CIDR</title>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <author fullname="T. Li" initials="T." surname="Li"/>
            <date month="September" year="1993"/>
            <abstract>
              <t>This paper provides an architecture and a plan for allocating IP addresses in the Internet. This architecture and the plan are intended to play an important role in steering the Internet towards the Address Assignment and Aggregating Strategy. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1518"/>
          <seriesInfo name="DOI" value="10.17487/RFC1518"/>
        </reference>
        <reference anchor="RFC1519">
          <front>
            <title>Classless Inter-Domain Routing (CIDR): an Address Assignment and Aggregation Strategy</title>
            <author fullname="V. Fuller" initials="V." surname="Fuller"/>
            <author fullname="T. Li" initials="T." surname="Li"/>
            <author fullname="J. Yu" initials="J." surname="Yu"/>
            <author fullname="K. Varadhan" initials="K." surname="Varadhan"/>
            <date month="September" year="1993"/>
            <abstract>
              <t>This memo discusses strategies for address assignment of the existing IP address space with a view to conserve the address space and stem the explosive growth of routing tables in default-route-free routers. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1519"/>
          <seriesInfo name="DOI" value="10.17487/RFC1519"/>
        </reference>
        <reference anchor="RFC1930">
          <front>
            <title>Guidelines for creation, selection, and registration of an Autonomous System (AS)</title>
            <author fullname="J. Hawkinson" initials="J." surname="Hawkinson"/>
            <author fullname="T. Bates" initials="T." surname="Bates"/>
            <date month="March" year="1996"/>
            <abstract>
              <t>This memo discusses when it is appropriate to register and utilize an Autonomous System (AS), and lists criteria for such. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="6"/>
          <seriesInfo name="RFC" value="1930"/>
          <seriesInfo name="DOI" value="10.17487/RFC1930"/>
        </reference>
        <reference anchor="RFC1997">
          <front>
            <title>BGP Communities Attribute</title>
            <author fullname="R. Chandra" initials="R." surname="Chandra"/>
            <author fullname="P. Traina" initials="P." surname="Traina"/>
            <author fullname="T. Li" initials="T." surname="Li"/>
            <date month="August" year="1996"/>
            <abstract>
              <t>This document describes an extension to BGP which may be used to pass additional information to both neighboring and remote BGP peers. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1997"/>
          <seriesInfo name="DOI" value="10.17487/RFC1997"/>
        </reference>
        <reference anchor="RFC2439">
          <front>
            <title>BGP Route Flap Damping</title>
            <author fullname="C. Villamizar" initials="C." surname="Villamizar"/>
            <author fullname="R. Chandra" initials="R." surname="Chandra"/>
            <author fullname="R. Govindan" initials="R." surname="Govindan"/>
            <date month="November" year="1998"/>
            <abstract>
              <t>A usage of the BGP routing protocol is described which is capable of reducing the routing traffic passed on to routing peers and therefore the load on these peers without adversely affecting route convergence time for relatively stable routes. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2439"/>
          <seriesInfo name="DOI" value="10.17487/RFC2439"/>
        </reference>
        <reference anchor="RFC2474">
          <front>
            <title>Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers</title>
            <author fullname="K. Nichols" initials="K." surname="Nichols"/>
            <author fullname="S. Blake" initials="S." surname="Blake"/>
            <author fullname="F. Baker" initials="F." surname="Baker"/>
            <author fullname="D. Black" initials="D." surname="Black"/>
            <date month="December" year="1998"/>
            <abstract>
              <t>This document defines the IP header field, called the DS (for differentiated services) field. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2474"/>
          <seriesInfo name="DOI" value="10.17487/RFC2474"/>
        </reference>
        <reference anchor="RFC2858">
          <front>
            <title>Multiprotocol Extensions for BGP-4</title>
            <author fullname="T. Bates" initials="T." surname="Bates"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <author fullname="R. Chandra" initials="R." surname="Chandra"/>
            <author fullname="D. Katz" initials="D." surname="Katz"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document defines extensions to BGP-4 to enable it to carry routing information for multiple Network Layer protocols (e.g., IPv6, IPX, etc...). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2858"/>
          <seriesInfo name="DOI" value="10.17487/RFC2858"/>
        </reference>
        <reference anchor="RFC3392">
          <front>
            <title>Capabilities Advertisement with BGP-4</title>
            <author fullname="R. Chandra" initials="R." surname="Chandra"/>
            <author fullname="J. Scudder" initials="J." surname="Scudder"/>
            <date month="November" year="2002"/>
            <abstract>
              <t>Currently BGP-4 requires that when a BGP speaker receives an OPEN
message with one or more unrecognized Optional Parameters, the
speaker must terminate BGP peering. This complicates introduction of
new capabilities in BGP.
This document defines new Optional Parameter, called Capabilities,
that is expected to facilitate introduction of new capabilities in
BGP by providing graceful capability advertisement without requiring
that BGP peering be terminated.
This document obsoletes RFC2842.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3392"/>
          <seriesInfo name="DOI" value="10.17487/RFC3392"/>
        </reference>
        <reference anchor="RFC2918">
          <front>
            <title>Route Refresh Capability for BGP-4</title>
            <author fullname="E. Chen" initials="E." surname="Chen"/>
            <date month="September" year="2000"/>
            <abstract>
              <t>This document defines a new Border Gateway Protocol (BGP) capability termed 'Route Refresh Capability', which would allow the dynamic exchange of route refresh request between BGP speakers and subsequent re-advertisement of the respective Adj-RIB-Out. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2918"/>
          <seriesInfo name="DOI" value="10.17487/RFC2918"/>
        </reference>
        <reference anchor="RFC3562">
          <front>
            <title>Key Management Considerations for the TCP MD5 Signature Option</title>
            <author fullname="M. Leech" initials="M." surname="Leech"/>
            <date month="July" year="2003"/>
            <abstract>
              <t>The TCP MD5 Signature Option (RFC 2385), used predominantly by BGP, has seen significant deployment in critical areas of Internet infrastructure. The security of this option relies heavily on the quality of the keying material used to compute the MD5 signature. This document addresses the security requirements of that keying material. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3562"/>
          <seriesInfo name="DOI" value="10.17487/RFC3562"/>
        </reference>
        <reference anchor="RFC4271">
          <front>
            <title>A Border Gateway Protocol 4 (BGP-4)</title>
            <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter"/>
            <author fullname="T. Li" initials="T." role="editor" surname="Li"/>
            <author fullname="S. Hares" initials="S." role="editor" surname="Hares"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>This document discusses the Border Gateway Protocol (BGP), which is an inter-Autonomous System routing protocol.</t>
              <t>The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems. This network reachability information includes information on the list of Autonomous Systems (ASes) that reachability information traverses. This information is sufficient for constructing a graph of AS connectivity for this reachability from which routing loops may be pruned, and, at the AS level, some policy decisions may be enforced.</t>
              <t>BGP-4 provides a set of mechanisms for supporting Classless Inter-Domain Routing (CIDR). These mechanisms include support for advertising a set of destinations as an IP prefix, and eliminating the concept of network "class" within BGP. BGP-4 also introduces mechanisms that allow aggregation of routes, including aggregation of AS paths.</t>
              <t>This document obsoletes RFC 1771. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4271"/>
          <seriesInfo name="DOI" value="10.17487/RFC4271"/>
        </reference>
        <reference anchor="RFC4272">
          <front>
            <title>BGP Security Vulnerabilities Analysis</title>
            <author fullname="S. Murphy" initials="S." surname="Murphy"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>Border Gateway Protocol 4 (BGP-4), along with a host of other infrastructure protocols designed before the Internet environment became perilous, was originally designed with little consideration for protection of the information it carries. There are no mechanisms internal to BGP that protect against attacks that modify, delete, forge, or replay data, any of which has the potential to disrupt overall network routing behavior.</t>
              <t>This document discusses some of the security issues with BGP routing data dissemination. This document does not discuss security issues with forwarding of packets. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4272"/>
          <seriesInfo name="DOI" value="10.17487/RFC4272"/>
        </reference>
        <reference anchor="RFC4456">
          <front>
            <title>BGP Route Reflection: An Alternative to Full Mesh Internal BGP (IBGP)</title>
            <author fullname="T. Bates" initials="T." surname="Bates"/>
            <author fullname="E. Chen" initials="E." surname="Chen"/>
            <author fullname="R. Chandra" initials="R." surname="Chandra"/>
            <date month="April" year="2006"/>
            <abstract>
              <t>The Border Gateway Protocol (BGP) is an inter-autonomous system routing protocol designed for TCP/IP internets. Typically, all BGP speakers within a single AS must be fully meshed so that any external routing information must be re-distributed to all other routers within that Autonomous System (AS). This represents a serious scaling problem that has been well documented with several alternatives proposed.</t>
              <t>This document describes the use and design of a method known as "route reflection" to alleviate the need for "full mesh" Internal BGP (IBGP).</t>
              <t>This document obsoletes RFC 2796 and RFC 1966. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4456"/>
          <seriesInfo name="DOI" value="10.17487/RFC4456"/>
        </reference>
        <reference anchor="RFC4486">
          <front>
            <title>Subcodes for BGP Cease Notification Message</title>
            <author fullname="E. Chen" initials="E." surname="Chen"/>
            <author fullname="V. Gillet" initials="V." surname="Gillet"/>
            <date month="April" year="2006"/>
            <abstract>
              <t>This document defines several subcodes for the BGP Cease NOTIFICATION message that would provide more information to aid network operators in correlating network events and diagnosing BGP peering issues. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4486"/>
          <seriesInfo name="DOI" value="10.17487/RFC4486"/>
        </reference>
        <reference anchor="RFC4724">
          <front>
            <title>Graceful Restart Mechanism for BGP</title>
            <author fullname="S. Sangli" initials="S." surname="Sangli"/>
            <author fullname="E. Chen" initials="E." surname="Chen"/>
            <author fullname="R. Fernando" initials="R." surname="Fernando"/>
            <author fullname="J. Scudder" initials="J." surname="Scudder"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <date month="January" year="2007"/>
            <abstract>
              <t>This document describes a mechanism for BGP that would help minimize the negative effects on routing caused by BGP restart. An End-of-RIB marker is specified and can be used to convey routing convergence information. A new BGP capability, termed "Graceful Restart Capability", is defined that would allow a BGP speaker to express its ability to preserve forwarding state during BGP restart. Finally, procedures are outlined for temporarily retaining routing information across a TCP session termination/re-establishment.</t>
              <t>The mechanisms described in this document are applicable to all routers, both those with the ability to preserve forwarding state during BGP restart and those without (although the latter need to implement only a subset of the mechanisms described in this document). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4724"/>
          <seriesInfo name="DOI" value="10.17487/RFC4724"/>
        </reference>
        <reference anchor="RFC5004">
          <front>
            <title>Avoid BGP Best Path Transitions from One External to Another</title>
            <author fullname="E. Chen" initials="E." surname="Chen"/>
            <author fullname="S. Sangli" initials="S." surname="Sangli"/>
            <date month="September" year="2007"/>
            <abstract>
              <t>In this document, we propose an extension to the BGP route selection rules that would avoid unnecessary best path transitions between external paths under certain conditions. The proposed extension would help the overall network stability, and more importantly, would eliminate certain BGP route oscillations in which more than one external path from one BGP speaker contributes to the churn. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5004"/>
          <seriesInfo name="DOI" value="10.17487/RFC5004"/>
        </reference>
        <reference anchor="RFC5065">
          <front>
            <title>Autonomous System Confederations for BGP</title>
            <author fullname="P. Traina" initials="P." surname="Traina"/>
            <author fullname="D. McPherson" initials="D." surname="McPherson"/>
            <author fullname="J. Scudder" initials="J." surname="Scudder"/>
            <date month="August" year="2007"/>
            <abstract>
              <t>The Border Gateway Protocol (BGP) is an inter-autonomous system routing protocol designed for Transmission Control Protocol/Internet Protocol (TCP/IP) networks. BGP requires that all BGP speakers within a single autonomous system (AS) must be fully meshed. This represents a serious scaling problem that has been well documented in a number of proposals.</t>
              <t>This document describes an extension to BGP that may be used to create a confederation of autonomous systems that is represented as a single autonomous system to BGP peers external to the confederation, thereby removing the "full mesh" requirement. The intention of this extension is to aid in policy administration and reduce the management complexity of maintaining a large autonomous system.</t>
              <t>This document obsoletes RFC 3065. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5065"/>
          <seriesInfo name="DOI" value="10.17487/RFC5065"/>
        </reference>
        <reference anchor="RFC6286">
          <front>
            <title>Autonomous-System-Wide Unique BGP Identifier for BGP-4</title>
            <author fullname="E. Chen" initials="E." surname="Chen"/>
            <author fullname="J. Yuan" initials="J." surname="Yuan"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>To accommodate situations where the current requirements for the BGP Identifier are not met, this document relaxes the definition of the BGP Identifier to be a 4-octet, unsigned, non-zero integer and relaxes the "uniqueness" requirement so that only Autonomous-System-wide (AS-wide) uniqueness of the BGP Identifiers is required. These revisions to the base BGP specification do not introduce any backward compatibility issues. This document updates RFC 4271. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6286"/>
          <seriesInfo name="DOI" value="10.17487/RFC6286"/>
        </reference>
        <reference anchor="RFC6514">
          <front>
            <title>BGP Encodings and Procedures for Multicast in MPLS/BGP IP VPNs</title>
            <author fullname="R. Aggarwal" initials="R." surname="Aggarwal"/>
            <author fullname="E. Rosen" initials="E." surname="Rosen"/>
            <author fullname="T. Morin" initials="T." surname="Morin"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>This document describes the BGP encodings and procedures for exchanging the information elements required by Multicast in MPLS/BGP IP VPNs, as specified in RFC 6513. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6514"/>
          <seriesInfo name="DOI" value="10.17487/RFC6514"/>
        </reference>
        <reference anchor="RFC6793">
          <front>
            <title>BGP Support for Four-Octet Autonomous System (AS) Number Space</title>
            <author fullname="Q. Vohra" initials="Q." surname="Vohra"/>
            <author fullname="E. Chen" initials="E." surname="Chen"/>
            <date month="December" year="2012"/>
            <abstract>
              <t>The Autonomous System number is encoded as a two-octet entity in the base BGP specification. This document describes extensions to BGP to carry the Autonomous System numbers as four-octet entities. This document obsoletes RFC 4893 and updates RFC 4271. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6793"/>
          <seriesInfo name="DOI" value="10.17487/RFC6793"/>
        </reference>
        <reference anchor="RFC7117">
          <front>
            <title>Multicast in Virtual Private LAN Service (VPLS)</title>
            <author fullname="R. Aggarwal" initials="R." role="editor" surname="Aggarwal"/>
            <author fullname="Y. Kamite" initials="Y." surname="Kamite"/>
            <author fullname="L. Fang" initials="L." surname="Fang"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <author fullname="C. Kodeboniya" initials="C." surname="Kodeboniya"/>
            <date month="February" year="2014"/>
            <abstract>
              <t>RFCs 4761 and 4762 describe a solution for Virtual Private LAN Service (VPLS) multicast that relies on the use of point-to-point or multipoint-to-point unicast Label Switched Paths (LSPs) for carrying multicast traffic. This solution has certain limitations for certain VPLS multicast traffic profiles. For example, it may result in highly non-optimal bandwidth utilization when a large amount of multicast traffic is to be transported.</t>
              <t>This document describes solutions for overcoming a subset of the limitations of the existing VPLS multicast solution. It describes procedures for VPLS multicast that utilize multicast trees in the service provider (SP) network. The solution described in this document allows sharing of one such multicast tree among multiple VPLS instances. Furthermore, the solution described in this document allows a single multicast tree in the SP network to carry traffic belonging only to a specified set of one or more IP multicast streams from one or more VPLS instances.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7117"/>
          <seriesInfo name="DOI" value="10.17487/RFC7117"/>
        </reference>
        <reference anchor="RFC7432">
          <front>
            <title>BGP MPLS-Based Ethernet VPN</title>
            <author fullname="A. Sajassi" initials="A." role="editor" surname="Sajassi"/>
            <author fullname="R. Aggarwal" initials="R." surname="Aggarwal"/>
            <author fullname="N. Bitar" initials="N." surname="Bitar"/>
            <author fullname="A. Isaac" initials="A." surname="Isaac"/>
            <author fullname="J. Uttaro" initials="J." surname="Uttaro"/>
            <author fullname="J. Drake" initials="J." surname="Drake"/>
            <author fullname="W. Henderickx" initials="W." surname="Henderickx"/>
            <date month="February" year="2015"/>
            <abstract>
              <t>This document describes procedures for BGP MPLS-based Ethernet VPNs (EVPN). The procedures described here meet the requirements specified in RFC 7209 -- "Requirements for Ethernet VPN (EVPN)".</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7432"/>
          <seriesInfo name="DOI" value="10.17487/RFC7432"/>
        </reference>
        <reference anchor="RFC7606">
          <front>
            <title>Revised Error Handling for BGP UPDATE Messages</title>
            <author fullname="E. Chen" initials="E." role="editor" surname="Chen"/>
            <author fullname="J. Scudder" initials="J." role="editor" surname="Scudder"/>
            <author fullname="P. Mohapatra" initials="P." surname="Mohapatra"/>
            <author fullname="K. Patel" initials="K." surname="Patel"/>
            <date month="August" year="2015"/>
            <abstract>
              <t>According to the base BGP specification, a BGP speaker that receives an UPDATE message containing a malformed attribute is required to reset the session over which the offending attribute was received. This behavior is undesirable because a session reset would impact not only routes with the offending attribute but also other valid routes exchanged over the session. This document partially revises the error handling for UPDATE messages and provides guidelines for the authors of documents defining new attributes. Finally, it revises the error handling procedures for a number of existing attributes.</t>
              <t>This document updates error handling for RFCs 1997, 4271, 4360, 4456, 4760, 5543, 5701, and 6368.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7606"/>
          <seriesInfo name="DOI" value="10.17487/RFC7606"/>
        </reference>
        <reference anchor="RFC7607">
          <front>
            <title>Codification of AS 0 Processing</title>
            <author fullname="W. Kumari" initials="W." surname="Kumari"/>
            <author fullname="R. Bush" initials="R." surname="Bush"/>
            <author fullname="H. Schiller" initials="H." surname="Schiller"/>
            <author fullname="K. Patel" initials="K." surname="Patel"/>
            <date month="August" year="2015"/>
            <abstract>
              <t>This document updates RFC 4271 and proscribes the use of Autonomous System (AS) 0 in the Border Gateway Protocol (BGP) OPEN, AS_PATH, AS4_PATH, AGGREGATOR, and AS4_AGGREGATOR attributes in the BGP UPDATE message.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7607"/>
          <seriesInfo name="DOI" value="10.17487/RFC7607"/>
        </reference>
        <reference anchor="RFC7705">
          <front>
            <title>Autonomous System Migration Mechanisms and Their Effects on the BGP AS_PATH Attribute</title>
            <author fullname="W. George" initials="W." surname="George"/>
            <author fullname="S. Amante" initials="S." surname="Amante"/>
            <date month="November" year="2015"/>
            <abstract>
              <t>This document discusses some existing commonly used BGP mechanisms for Autonomous System Number (ASN) migration that are not formally part of the BGP4 protocol specification. It is necessary to document these de facto standards to ensure that they are properly supported in future BGP protocol work.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7705"/>
          <seriesInfo name="DOI" value="10.17487/RFC7705"/>
        </reference>
        <reference anchor="RFC7964">
          <front>
            <title>Solutions for BGP Persistent Route Oscillation</title>
            <author fullname="D. Walton" initials="D." surname="Walton"/>
            <author fullname="A. Retana" initials="A." surname="Retana"/>
            <author fullname="E. Chen" initials="E." surname="Chen"/>
            <author fullname="J. Scudder" initials="J." surname="Scudder"/>
            <date month="September" year="2016"/>
            <abstract>
              <t>Routing information reduction by BGP Route Reflection or Confederation can result in persistent internal BGP route oscillations with certain routing setups and network topologies. This document specifies two sets of additional paths that can be used to eliminate these route oscillations in a network.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7964"/>
          <seriesInfo name="DOI" value="10.17487/RFC7964"/>
        </reference>
        <reference anchor="RFC8212">
          <front>
            <title>Default External BGP (EBGP) Route Propagation Behavior without Policies</title>
            <author fullname="J. Mauch" initials="J." surname="Mauch"/>
            <author fullname="J. Snijders" initials="J." surname="Snijders"/>
            <author fullname="G. Hankins" initials="G." surname="Hankins"/>
            <date month="July" year="2017"/>
            <abstract>
              <t>This document updates RFC 4271 by defining the default behavior of a BGP speaker when there is no Import or Export Policy associated with an External BGP session.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8212"/>
          <seriesInfo name="DOI" value="10.17487/RFC8212"/>
        </reference>
        <reference anchor="RFC8654">
          <front>
            <title>Extended Message Support for BGP</title>
            <author fullname="R. Bush" initials="R." surname="Bush"/>
            <author fullname="K. Patel" initials="K." surname="Patel"/>
            <author fullname="D. Ward" initials="D." surname="Ward"/>
            <date month="October" year="2019"/>
            <abstract>
              <t>The BGP specification (RFC 4271) mandates a maximum BGP message size of 4,096 octets. As BGP is extended to support new Address Family Identifiers (AFIs), Subsequent AFIs (SAFIs), and other features, there is a need to extend the maximum message size beyond 4,096 octets. This document updates the BGP specification by extending the maximum message size from 4,096 octets to 65,535 octets for all messages except for OPEN and KEEPALIVE messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8654"/>
          <seriesInfo name="DOI" value="10.17487/RFC8654"/>
        </reference>
        <reference anchor="RFC9003">
          <front>
            <title>Extended BGP Administrative Shutdown Communication</title>
            <author fullname="J. Snijders" initials="J." surname="Snijders"/>
            <author fullname="J. Heitz" initials="J." surname="Heitz"/>
            <author fullname="J. Scudder" initials="J." surname="Scudder"/>
            <author fullname="A. Azimov" initials="A." surname="Azimov"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>This document enhances the BGP Cease NOTIFICATION message "Administrative Shutdown" and "Administrative Reset" subcodes for operators to transmit a short free-form message to describe why a BGP session was shut down or reset. This document updates RFC 4486 and obsoletes RFC 8203 by defining an Extended BGP Administrative Shutdown Communication of up to 255 octets to improve communication using multibyte character sets.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9003"/>
          <seriesInfo name="DOI" value="10.17487/RFC9003"/>
        </reference>
        <reference anchor="RFC9072">
          <front>
            <title>Extended Optional Parameters Length for BGP OPEN Message</title>
            <author fullname="E. Chen" initials="E." surname="Chen"/>
            <author fullname="J. Scudder" initials="J." surname="Scudder"/>
            <date month="July" year="2021"/>
            <abstract>
              <t>The Optional Parameters in the BGP OPEN message as defined in the base BGP specification are limited to 255 octets due to a one-octet length field. BGP capabilities are carried in this field and may foreseeably exceed 255 octets in the future, leading to concerns about this limitation.</t>
              <t>This document updates RFC 4271 by extending, in a backward-compatible manner, the length of the Optional Parameters in a BGP OPEN message. The Parameter Length field of individual Optional Parameters is also extended.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9072"/>
          <seriesInfo name="DOI" value="10.17487/RFC9072"/>
        </reference>
        <reference anchor="RFC9687">
          <front>
            <title>Border Gateway Protocol 4 (BGP-4) Send Hold Timer</title>
            <author fullname="J. Snijders" initials="J." surname="Snijders"/>
            <author fullname="B. Cartwright-Cox" initials="B." surname="Cartwright-Cox"/>
            <author fullname="Y. Qu" initials="Y." surname="Qu"/>
            <date month="November" year="2024"/>
            <abstract>
              <t>This document defines the SendHoldTimer, along with the SendHoldTimer_Expires event, for the Border Gateway Protocol (BGP) Finite State Machine (FSM). Implementation of the SendHoldTimer helps overcome situations where a BGP connection is not terminated after the local system detects that the remote system is not processing BGP messages. This document specifies that the local system should close the BGP connection and not solely rely on the remote system for connection closure when the SendHoldTimer expires. This document updates RFC 4271.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9687"/>
          <seriesInfo name="DOI" value="10.17487/RFC9687"/>
        </reference>
        <reference anchor="RFC9774">
          <front>
            <title>Deprecation of AS_SET and AS_CONFED_SET in BGP</title>
            <author fullname="W. Kumari" initials="W." surname="Kumari"/>
            <author fullname="K. Sriram" initials="K." surname="Sriram"/>
            <author fullname="L. Hannachi" initials="L." surname="Hannachi"/>
            <author fullname="J. Haas" initials="J." surname="Haas"/>
            <date month="May" year="2025"/>
            <abstract>
              <t>BCP 172 (i.e., RFC 6472) recommends not using AS_SET and AS_CONFED_SET AS_PATH segment types in the Border Gateway Protocol (BGP). This document advances that recommendation to a standards requirement in BGP; it prohibits the use of the AS_SET and AS_CONFED_SET path segment types in the AS_PATH. This is done to simplify the design and implementation of BGP and to make the semantics of the originator of a BGP route clearer. This will also simplify the design, implementation, and deployment of various BGP security mechanisms. This document updates RFC 4271 by deprecating the origination of BGP routes with AS_SET (Type 1 AS_PATH segment) and updates RFC 5065 by deprecating the origination of BGP routes with AS_CONFED_SET (Type 4 AS_PATH segment). Finally, it obsoletes RFC 6472.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9774"/>
          <seriesInfo name="DOI" value="10.17487/RFC9774"/>
        </reference>
        <reference anchor="I-D.ietf-idr-bgp-issues">
          <front>
            <title>Issues in Revising BGP-4 (RFC1771 to RFC4271)</title>
            <author fullname="Andrew Lange" initials="A." surname="Lange">
              <organization>Alcatel-Lucent</organization>
            </author>
            <date day="27" month="March" year="2012"/>
            <abstract>
              <t>   This document records the issues discussed and the consensus reached
   in the Interdomain Routing (IDR) Working Group during its efforts to
   revise and bring up to date the base specification for the BGP-4
   protocol as documented in RFC1771.  The document focuses on the
   changes tracked from August 2002 when the last major push for
   revision began.  The results of these efforts are encoded in RFC4271,
   which should be taken as normative for any of the issues that were
   discussed.  The discussion here is intended to record how and why
   some of the changes to BGP were made.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-bgp-issues-06"/>
        </reference>
        <reference anchor="IS10747">
          <front>
            <title>Information Processing Systems - Telecommunications and Information Exchange between Systems - Protocol for Exchange of Inter-domain Routeing Information among Intermediate Systems to Support Forwarding of ISO 8473 PDUs</title>
            <author>
              <organization>ISO/IEC IS10747</organization>
            </author>
            <date year="1993"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 4887?>

<section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>This document is closely based on RFC 4271.</t>
      <t>(Further acknowledgements to be supplied.)</t>
      <section anchor="acknowledgements-section-of-rfc-4271">
        <name>Acknowledgements Section of RFC 4271</name>
        <t>RFC 4271 contained the following acknowledgements:</t>
        <t>This document was originally published as <xref target="RFC1267"/> in October 1991,
jointly authored by Kirk Lougheed and Yakov Rekhter.</t>
        <t>We would like to express our thanks to Guy Almes, Len Bosack, and
Jeffrey C. Honig for their contributions to the earlier version
(BGP-1) of this document.</t>
        <t>We would like to specially acknowledge numerous contributions by
Dennis Ferguson to the earlier version of this document.</t>
        <t>We would like to explicitly thank Bob Braden for the review of the
earlier version (BGP-2) of this document, and for his constructive
and valuable comments.</t>
        <t>We would also like to thank Bob Hinden, Director for Routing of the
Internet Engineering Steering Group, and the team of reviewers he
assembled to review the earlier version (BGP-2) of this document.
This team, consisting of Deborah Estrin, Milo Medin, John Moy, Radia
Perlman, Martha Steenstrup, Mike St. Johns, and Paul Tsuchiya, acted
with a strong combination of toughness, professionalism, and
courtesy.</t>
        <t>Certain sections of the document borrowed heavily from IDRP
<xref target="IS10747"/>, which is the OSI counterpart of BGP.  For this, credit
should be given to the ANSI X3S3.3 group chaired by Lyman Chapin and
to Charles Kunzinger, who was the IDRP editor within that group.</t>
        <t>We would also like to thank Benjamin Abarbanel, Enke Chen, Edward
Crabbe, Mike Craren, Vincent Gillet, Eric Gray, Jeffrey Haas, Dimitry
Haskin, Stephen Kent, John Krawczyk, David LeRoy, Dan Massey,
Jonathan Natale, Dan Pei, Mathew Richardson, John Scudder, John
Stewart III, Dave Thaler, Paul Traina, Russ White, Curtis Villamizar,
and Alex Zinin for their comments.</t>
        <t>We would like to specially acknowledge Andrew Lange for his help in
preparing the final version of this document.</t>
        <t>Finally, we would like to thank all the members of the IDR Working
Group for their ideas and the support they have given to this
document.</t>
      </section>
      <section anchor="acknowledgements-in-relationship-to-rfc-4486">
        <name>Acknowledgements in relationship to RFC 4486</name>
        <t><xref target="RFC4486"/> was authored by Enke Chen and Vincent Gillet. Its
contents have been subsumed in this document.</t>
        <t>RFC 4486 contains the following acknowledgments:</t>
        <t>The authors would like to thank Yakov Rekhter, Pedro Marques, Andrew
Lange, and Don Goodspeed for their review and suggestions.</t>
      </section>
      <section anchor="acknowledgements-in-relationship-to-rfc-6286">
        <name>Acknowledgements in relationship to RFC 6286</name>
        <t><xref target="RFC6286"/> was authored by Enke Chen and Jenny Yuan. Its contents have
been subsumed in this document.</t>
        <t>RFC 6286 contains the following acknowledgments:</t>
        <t>The authors would like to thank members of the IDR Working Group for
discussions on the "IPv6-only Network" related issues that inspired this
document.</t>
      </section>
      <section anchor="acknowledgements-in-relationship-to-rfc-7606">
        <name>Acknowledgements in relationship to RFC 7606</name>
        <t><xref target="RFC7606"/> was authored by Enke Chen, John Scudder, Pradosh Mohapatra,
and Keyur Patel. Its contents have been partially subsumed in this document.</t>
        <t>RFC 7606 contains the following acknowledgments:</t>
        <t>The authors wish to thank Juan Alcaide, Deniz Bahadir, Ron Bonica,
Mach Chen, Andy Davidson, Bruno Decraene, Stephen Farrell, Rex
Fernando, Jeff Haas, Chris Hall, Joel Halpern, Dong Jie, Akira Kato,
Miya Kohno, Warren Kumari, Tony Li, Alton Lo, Shin Miyakawa, Tamas
Mondal, Jonathan Oddy, Tony Przygienda, Robert Raszuk, Yakov Rekhter,
Eric Rosen, Shyam Sethuram, Rob Shakir, Naiming Shen, Adam Simpson,
Ananth Suryanarayana, Kaliraj Vairavakkalai, Lili Wang, and Ondrej
Zajicek for their observations and discussion of this topic and
review of this document.</t>
      </section>
      <section anchor="acknowledgements-in-relationship-to-rfc-7607">
        <name>Acknowledgements in relationship to RFC 7607</name>
        <t><xref target="RFC7607"/> was authored by Warren Kumari, Randy Bush, Heather Schiller,
and Keyur Patel. Its contents have been partially subsumed in this
document.</t>
        <t>RFC 7607 contains the following acknowledgments:</t>
        <t>The authors wish to thank Elwyn Davies, Enke Chen, Brian Dickson, Bruno
Decraene, Robert Raszuk, Jakob Heitz, Danny McPherson, Chris Morrow,
iLya, John Scudder, Jeff Tantsura, Daniel Ginsburg, and Susan Hares. 
Apologies to those we may have missed; it was not intentional.</t>
      </section>
      <section anchor="acknowledgements-in-relationship-to-rfc-8212">
        <name>Acknowledgements in relationship to RFC 8212</name>
        <t><xref target="RFC8212"/> was authored by Jared Mauch, Job Snijders, and Greg Hankins.
Its content were subsumed in this document.</t>
        <t>RFC 8212 contained the following acknowledgements:</t>
        <t>The following people contributed to successful deployment of the
solution described in RFC8212: Jakob Heitz &amp; Ondrej Filip.</t>
        <t>The authors would like to thank the following people for their
comments, support and review: Shane Amante, Christopher Morrow,
Robert Raszuk, Greg Skinner, Adam Chappell, Sriram Kotikalapudi,
Brian Dickson, Jeffrey Haas, John Heasley, Ignas Bagdonas, Donald
Smith, Alvaro Retana, John Scudder, and Dale Worley.</t>
      </section>
      <section anchor="acknowledgements-in-relationship-to-rfc-9072">
        <name>Acknowledgements in relationship to RFC 9072</name>
        <t><xref target="RFC9072"/> was authored by Enke Chen and John Scudder. Its contents were 
subsumed in this document.</t>
        <t>RFC 9072 contained the following acknowledgments:</t>
        <t>The authors would like to thank Yakov Rekhter and Srihari Sangli for
discussing various options to enlarge the Optional Parameters field. We
would also like to thank Matthew Bocci, Bruno Decraene, John Heasley,
Jakob Heitz, Christer Holmberg, Pradosh Mohapatra, Keyur Patel, and
Hannes Gredler for their valuable comments.</t>
      </section>
      <section anchor="acknowledgements-in-relationship-to-rfc-9687">
        <name>Acknowledgements in relationship to RFC 9687</name>
        <t><xref target="RFC9687"/> was authored by Job Snijders, Ben Cartwright-Cox, and Yingzhen Qu.
Its content were subsumed in this document.</t>
        <t>RFC 9687 contained the following acknowledgements:</t>
        <t>The authors would like to thank William McCall, Theo de Raadt, John
Heasley, Nick Hilliard, Jeffrey Haas, Tom Petch, Susan Hares, Keyur
Patel, Ben Maddison, Claudio Jeker, and John Scudder for their
helpful review of this document.</t>
      </section>
      <section anchor="acknowledgements-in-relationship-to-rfc-9774">
        <name>Acknowledgements in relationship to RFC 9774</name>
        <t><xref target="RFC9774"/> was authored by Warren Kumari, Kotikalapudi Sriram, Lilia
Hannachi, and Jeffrey Haas. Its contents have been partially subsumed in
this document.</t>
        <t>RFC 9774 contained the following acknowledgements:</t>
        <t>The authors would like to thank Alvaro Retana, John Scudder, Ketan
Talaulikar, Keyur Patel, Susan Hares, Claudio Jeker, Nick Hilliard,
Robert Raszuk, John Heasley, Job Snijders, Jared Mauch, Jakob Heitz,
Tony Przygienda, Douglas Montgomery, Randy Bush, Curtis Villamizar,
Danny McPherson, Chris Morrow, Tom Petch, Ilya Varlashkin, Enke Chen,
Tony Li, Florian Weimer, John Leslie, Paul Jakma, Rob Austein, Russ
Housley, Sandra Murphy, Steven M. Bellovin, Steve Kent, Steve Padgett,
and Alfred Hoenes for comments and suggestions. The comments and
suggestions received from the IESG reviewers are also much appreciated.</t>
      </section>
    </section>
    <section anchor="compare4271">
      <name>Comparison of CURRENT_SPEC with RFC 4271</name>
      <t>This section describes significant technical changes between the present
specification and RFC 4271. In addition, RFC 4271 contains a comparison
between that specification and older BGP specifications. Readers
interested in the evolution of RFC 4271 should also
consider consulting <xref target="I-D.ietf-idr-bgp-issues"/>, which "records the
issues discussed and the consensus reached" during development.</t>
      <section anchor="version-00">
        <name>Version 00</name>
        <ul spacing="normal">
          <li>
            <t>Integrated all verified errata.</t>
          </li>
          <li>
            <t>Converted source to Markdown format.</t>
          </li>
        </ul>
      </section>
      <section anchor="version-01">
        <name>Version 01</name>
        <ul spacing="normal">
          <li>
            <t>Integrated RFC 6286, "Autonomous-System-Wide Unique BGP Identifier 
for BGP-4". This also obsoletes RFC 6286. (Issue #16)</t>
          </li>
          <li>
            <t>Integrated RFC 6608, "Subcodes for BGP Finite State Machine Error".
This also obsoletes RFC 6608. (Issue #17)</t>
          </li>
          <li>
            <t>Added a pointer to RFC 7705 ("Autonomous System Migration Mechanisms 
and Their Effects on the BGP AS_PATH Attribute"). (Issue #21)</t>
          </li>
          <li>
            <t>Merge RFC 8212 ("Default EBGP Route Propagation Behavior without 
Policies"). This also obsoletes RFC 8212. (Issue #22)</t>
          </li>
          <li>
            <t>Merge RFC 9687 ("Border Gateway Protocol 4 (BGP-4) Send Hold Timer")
This also obsoletes RFC 9687. (Issue #25)</t>
          </li>
          <li>
            <t>Address IANA review comments related to IANA Considerations section.
(Issue #54)</t>
          </li>
          <li>
            <t>Say "session attribute" in FSM section, to disambiguate from path 
attribute. (Issue #56)</t>
          </li>
          <li>
            <t>Created a "roadmap" section, which replaces the "placeholder" section.
The roadmap section is a work in progress, but there's something
there now, at least. (Issue #58, still in progress)</t>
          </li>
          <li>
            <t>Change from "trailing bits are irrelevant" to "trailing bits <bcp14>MUST</bcp14> be
zero". (Issue #63)</t>
          </li>
          <li>
            <t>Removed the requirement that Partial must be set if an attribute 
is added to a route in flight. This was found to not be universally
implemented in practice, and its removal poses no interoperability
concerns. (Issue #83)</t>
          </li>
          <li>
            <t><bcp14>SHOULD</bcp14> prepend -&gt; <bcp14>MUST</bcp14> prepend. (Issue #84)</t>
          </li>
          <li>
            <t>Tighten up "no cost can be determined" rule in tie-breakers. (Issue #90)</t>
          </li>
          <li>
            <t>Removed a bullet from "information reduction" subsection that 
related to use of AS_SETs. (Issue #95, partial, issue remains open)</t>
          </li>
          <li>
            <t>Add an informative reference to I-D.ietf-idr-bgp-issues. (Issue #101)</t>
          </li>
          <li>
            <t>Mandate that ORIGIN values 3-255 must never be sent. RFC 7606 already
says what to do if they are received (treat-as-withdraw). (Issue #102)</t>
          </li>
          <li>
            <t>Add IANA registry for AS_PATH segment types. (Issue #103)</t>
          </li>
          <li>
            <t>Fix HoldTimer description in OpenConfirm Event 26. (Issue #109)</t>
          </li>
          <li>
            <t>Clarify that detection of an AS loop is a semantic error, not a 
syntax error in the AS_PATH, despite use of an error code that 
includes the word "malformed". (Issue #110)</t>
          </li>
          <li>
            <t>Remove mentions of RFC 4020 from IANA section. (Issue #114)</t>
          </li>
          <li>
            <t>Clarify apparent (but not actual) bad cross-reference in 
Administrative Events section. The old text said "section" where
it really meant "field". Cleaned up the surrounding words a bit, too.
(Issue #118)</t>
          </li>
        </ul>
      </section>
      <section anchor="version-02">
        <name>Version 02</name>
        <ul spacing="normal">
          <li>
            <t>Bring changelog up to date, including for earlier versions.</t>
          </li>
          <li>
            <t>Add references to RFC 8654 ("Extended Message Support for BGP") from
all parts of the spec that it touches. (Issue #23)</t>
          </li>
        </ul>
      </section>
      <section anchor="version-03">
        <name>Version 03</name>
        <ul spacing="normal">
          <li>
            <t>The primary contribution of this version is to integrate RFC 7606
("Revised Error Handling for BGP UPDATE Messages").  (Issue #19)</t>
          </li>
        </ul>
        <t>This also pulled in a couple of dependent/related issues:</t>
        <ul spacing="normal">
          <li>
            <t>Removed the paragraph about "unrecognized well-known attribute."
(Issue #136)</t>
          </li>
          <li>
            <t>Deprecated UPDATE error subcodes 2-6, 8, 9, and 11, because the 
corresponding RFC 4271 error conditions no longer generate
NOTIFICATIONs under the revised error handling procedures.
(Issue #137)</t>
          </li>
        </ul>
        <t>Because this was a large change, some details beyond the obvious 
are called out below:</t>
        <ul spacing="normal">
          <li>
            <t>Added permission for an implementation to revert to session reset 
behavior by configuration.</t>
          </li>
          <li>
            <t>RFC 4271 said a semantically incorrect Next Hop should result in
the update message being "ignored". This isn't mentioned in 7606
but that was an oversight. Changed "ignored" to "treat-as-withdraw".</t>
          </li>
          <li>
            <t>The Withdrawn Routes field was sometimes (inconsistently) given in
ALL CAPS. Made it consistently mixed-case.</t>
          </li>
          <li>
            <t>RFC 7606 is not fully obsoleted, because it also revises numerous
other RFCs, and it didn't seem desirable to pull all those revisions
into this spec.</t>
          </li>
          <li>
            <t>Added a definition for what "recognized" means. There seems to be 
general understanding of this by practitioners, but as far as I can 
tell, we've never formalized it, and some of the error procedures 
rely on it.</t>
          </li>
          <li>
            <t>Added definitions for AFI, SAFI, AFI/SAFI, MP_REACH_NLRI, 
MP_UNREACH_NLRI. This might end up being the wedge that pulls all of 
RFC 4760 along, who knows.</t>
          </li>
        </ul>
        <t>To do and/or not done:</t>
        <ul spacing="normal">
          <li>
            <t>In the FSM, the description of an UpdateMsgErr event in Established 
state is wrong now. This wasn't fixed in RFC 7606, and our FSM needs
more work, so I've opened #140 to track, but not otherwise addressed
it.</t>
          </li>
          <li>
            <t>Section 8 ("Guidance for Authors of BGP Specifications") isn't 
integrated.</t>
          </li>
          <li>
            <t>The philosophical overview of Section 1 isn't integrated. It might 
be worth creating an appendix talking about the error-handling
philosophy, to retain this information, since it's non-obvious to
those who didn't live through it. That might also be a place to 
put the Section 8 material.</t>
          </li>
          <li>
            <t>Because not all of 7606 is integrated, and especially not the various
attribute updates for non-4271 attributes, some fancy footwork may be
needed with "updates" description text. I stubbed in a beginning, but
it will need polishing.</t>
          </li>
        </ul>
      </section>
      <section anchor="version-04">
        <name>Version 04</name>
        <ul spacing="normal">
          <li>
            <t>Add references to RFC 6793 ("BGP Support for Four-Octet Autonomous 
System (AS) Number Space") from all the parts of the spec that it
touches. (Issue #18)</t>
          </li>
          <li>
            <t>Merge RFC 7607, "Codification of AS 0 Processing". (Issue #20) As 
part of this, also introduced a new top-level section, "Protocol
Invariants". For now, this is the home for the definition of the
system's own AS number (this previously was not defined!). It 
seems likely we will find more things to put in this section; if
it ends up holding only the one definition we can look for a place
to demote it, if wanted.</t>
          </li>
          <li>
            <t>Merge RFC 9072, "Extended Optional Parameters Length for BGP 
OPEN Message". This also obsoletes RFC 9072. (Issue #24)</t>
          </li>
          <li>
            <t>Merge RFC 9774, "Deprecation of AS_SET and AS_CONFED_SET in BGP".
(Issue #47) This required substantial restructuring of the aggregation
procedures. RFC 4271's aggregation description relied on construction
of AS_SETs, now deprecated. The replacement algorithm collapses to
"find the longest leading sequence".</t>
          </li>
          <li>
            <t>Merge RFC 4486, "Subcodes for BGP Cease Notification Message".
(Issue #147)</t>
          </li>
          <li>
            <t>Changed the definition of AGGREGATOR from containing an IPv4 address
to containing a BGP Identifier. This finesses the lack of an
IPv6-specific encoding and is barely a normative change, since the
previous definition already stated that the address <bcp14>SHOULD</bcp14> be the BGP
Identifier. One can also view this as fixing a long-standing
specification defect, since a BGP Identifier has not been required to
be an IP address since RFC 6286. (Issue #150)</t>
          </li>
        </ul>
      </section>
      <section anchor="version-05">
        <name>Version 05</name>
        <ul spacing="normal">
          <li>
            <t>Fixed two lingering places where BGP Identifier was described
as an IP address, that were missed during RFC 6286 integration.
(Issue #154)</t>
          </li>
          <li>
            <t>Got rid of the mandatory/discretionary/well-known taxonomy, 
while retaining "optional" and "transitive". Instead of relying
on the taxonomy to tell people how to set the Optional, Transitive,
and Partial bits for any of the mandatory attributes, spell out
the concrete requirements where the attributes are defined.
(Issue #55) (Issue #138) (Issue #139)</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="tcpopts">
      <name>TCP Options that May Be Used with BGP</name>
      <t>If a local system TCP user interface supports the TCP PUSH function,
then each BGP message <bcp14>SHOULD</bcp14> be transmitted with PUSH flag set.
Setting PUSH flag forces BGP messages to be transmitted to the
receiver promptly.</t>
      <t>If a local system TCP user interface supports setting the DSCP field
<xref target="RFC2474"/> for TCP connections, then the TCP connection used by BGP
<bcp14>SHOULD</bcp14> be opened with bits 0-2 of the DSCP field set to 110 (binary).</t>
      <t>An implementation <bcp14>MUST</bcp14> support the TCP MD5 option <xref target="RFC2385"/>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>A BGP implementation <bcp14>MUST</bcp14> support the authentication mechanism
specified in RFC 2385 <xref target="RFC2385"/>.  The authentication provided by this
mechanism could be done on a per-peer basis.</t>
      <t>BGP makes use of TCP for reliable transport of its traffic between
peer routers.  To provide connection-oriented integrity and data
origin authentication on a point-to-point basis, BGP specifies use of
the mechanism defined in RFC 2385.  These services are intended to
detect and reject active wiretapping attacks against the inter-router
TCP connections.  Absent the use of mechanisms that effect these
security services, attackers can disrupt these TCP connections and/or
masquerade as a legitimate peer router.  Because the mechanism
defined in the RFC does not provide peer-entity authentication, these
connections may be subject to some forms of replay attacks that will
not be detected at the TCP layer.  Such attacks might result in
delivery (from TCP) of "broken" or "spoofed" BGP messages.</t>
      <t>The mechanism defined in RFC 2385 augments the normal TCP checksum
with a 16-byte message authentication code (MAC) that is computed
over the same data as the TCP checksum.  This MAC is based on a one-
way hash function (MD5) and use of a secret key.  The key is shared
between peer routers and is used to generate MAC values that are not
readily computed by an attacker who does not have access to the key.
A compliant implementation must support this mechanism, and must
allow a network administrator to activate it on a per-peer basis.</t>
      <t>RFC 2385 does not specify a means of managing (e.g., generating,
distributing, and replacing) the keys used to compute the MAC.  RFC
3562 <xref target="RFC3562"/> (an informational document) provides some guidance in
this area, and provides rationale to support this guidance.  It notes
that a distinct key should be used for communication with each
protected peer.  If the same key is used for multiple peers, the
offered security services may be degraded, e.g., due to an increased
risk of compromise at one router that adversely affects other
routers.</t>
      <t>The keys used for MAC computation should be changed periodically, to
minimize the impact of a key compromise or successful cryptanalytic
attack.  RFC 3562 suggests a crypto period (the interval during which
a key is employed) of, at most, 90 days.  More frequent key changes
reduce the likelihood that replay attacks (as described above) will
be feasible.  However, absent a standard mechanism for effecting such
changes in a coordinated fashion between peers, one cannot assume
that BGP-4 implementations complying with this RFC will support
frequent key changes.</t>
      <t>Obviously, each should key also be chosen to be difficult for an
attacker to guess.  The techniques specified in RFC 1750 for random
number generation provide a guide for generation of values that could
be used as keys.  RFC 2385 calls for implementations to support keys
"composed of a string of printable ASCII of 80 bytes or less."  RFC
3562 suggests keys used in this context be 12 to 24 bytes of random
(pseudo-random) bits.  This is fairly consistent with suggestions for
analogous MAC algorithms, which typically employ keys in the range of
16 to 20 bytes.  To provide enough random bits at the low end of this
range, RFC 3562 also observes that a typical ACSII text string would
have to be close to the upper bound for the key length specified in
RFC 2385.</t>
      <t>BGP vulnerabilities analysis is discussed in <xref target="RFC4272"/>.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="path-attribute-flags">
        <name>Path Attribute Flags</name>
        <t>IANA is requested to create a registry called "BGP Path Attribute Flags"
within the "Border Gateway Protocol (BGP) Parameters" group. The allocation
policy is Standards Action.</t>
        <t>Bits 0-3 are defined in <xref target="updatefmt"/>. Bit 4, marked deprecated, was
proposed in draft-ietf-idr-optional-transitive-02 and later removed in
draft-ietf-idr-optional-transitive-04, but not before at least one known
implementation had shipped. At the time of writing, it is not considered
safe to assign.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Bit Position</th>
              <th align="left">Name</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">Optional</td>
              <td align="left">(this document)</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">Transitive</td>
              <td align="left">(this document)</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">Partial</td>
              <td align="left">(this document)</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">Extended Length</td>
              <td align="left">(this document)</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">Deprecated</td>
              <td align="left">(this document)</td>
            </tr>
            <tr>
              <td align="left">5-7</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="message-types">
        <name>Message Types</name>
        <t>All the BGP messages contain an 8-bit message type, for which IANA
has created and is maintaining a registry entitled "BGP Message
Types".  IANA is requested to update its reference to this document.
This document defines the following message types:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Value</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">OPEN</td>
              <td align="left">1</td>
              <td align="left">See <xref target="openfmt"/></td>
            </tr>
            <tr>
              <td align="left">UPDATE</td>
              <td align="left">2</td>
              <td align="left">See <xref target="updatefmt"/></td>
            </tr>
            <tr>
              <td align="left">NOTIFICATION</td>
              <td align="left">3</td>
              <td align="left">See <xref target="notifyfmt"/></td>
            </tr>
            <tr>
              <td align="left">KEEPALIVE</td>
              <td align="left">4</td>
              <td align="left">See <xref target="keepalivefmt"/></td>
            </tr>
          </tbody>
        </table>
        <t>Future assignments are to be made using the Standards Action process
defined in <xref target="RFC8126"/>.  Assignments consist of a name and the value.</t>
      </section>
      <section anchor="path-attribute-types">
        <name>Path Attribute Types</name>
        <t>The BGP UPDATE messages may carry one or more Path Attributes, where
each Attribute contains an 8-bit Attribute Type Code.  IANA is
already maintaining such a registry, entitled "BGP Path Attributes".
This document defines the following Path Attributes Type Codes:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Value</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ORIGIN</td>
              <td align="left">1</td>
              <td align="left">See <xref target="origin"/></td>
            </tr>
            <tr>
              <td align="left">AS_PATH</td>
              <td align="left">2</td>
              <td align="left">See <xref target="aspath"/></td>
            </tr>
            <tr>
              <td align="left">NEXT_HOP</td>
              <td align="left">3</td>
              <td align="left">See <xref target="nexthop"/></td>
            </tr>
            <tr>
              <td align="left">MULTI_EXIT_DISC</td>
              <td align="left">4</td>
              <td align="left">See <xref target="med"/></td>
            </tr>
            <tr>
              <td align="left">LOCAL_PREF</td>
              <td align="left">5</td>
              <td align="left">See <xref target="localpref"/></td>
            </tr>
            <tr>
              <td align="left">ATOMIC_AGGREGATE</td>
              <td align="left">6</td>
              <td align="left">See <xref target="atomic"/></td>
            </tr>
            <tr>
              <td align="left">AGGREGATOR</td>
              <td align="left">7</td>
              <td align="left">See <xref target="aggregator"/></td>
            </tr>
          </tbody>
        </table>
        <t>Future assignments are to be made using the Standards Action process
defined in <xref target="RFC8126"/>.  Assignments consist of a name and the value.</t>
      </section>
      <section anchor="error-codes">
        <name>Error Codes</name>
        <t>The BGP NOTIFICATION message carries an 8-bit Error Code, for which
IANA has created and is maintaining a registry entitled "BGP Error
(Notification) Codes".  This document defines the following Error Codes:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Value</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Message Header Error</td>
              <td align="left">1</td>
              <td align="left">
                <xref target="msgheadererr"/></td>
            </tr>
            <tr>
              <td align="left">OPEN Message Error</td>
              <td align="left">2</td>
              <td align="left">
                <xref target="openmsgerr"/></td>
            </tr>
            <tr>
              <td align="left">UPDATE Message Error</td>
              <td align="left">3</td>
              <td align="left">
                <xref target="updatemsgerr"/></td>
            </tr>
            <tr>
              <td align="left">Hold Timer Expired</td>
              <td align="left">4</td>
              <td align="left">
                <xref target="holdtimerexperr"/></td>
            </tr>
            <tr>
              <td align="left">Finite State Machine Error</td>
              <td align="left">5</td>
              <td align="left">
                <xref target="fsmerr"/></td>
            </tr>
            <tr>
              <td align="left">Cease</td>
              <td align="left">6</td>
              <td align="left">
                <xref target="ceaseerr"/></td>
            </tr>
          </tbody>
        </table>
        <t>Future assignments are to be made using the Standards Action process
defined in <xref target="RFC8126"/>.  Assignments consist of a name and the value.</t>
      </section>
      <section anchor="error-subcodes">
        <name>Error Subcodes</name>
        <t>The BGP NOTIFICATION message carries an 8-bit Error Subcode, where
each Subcode has to be defined within the context of a particular
Error Code, and thus has to be unique only within that context.</t>
        <t>IANA has created and is maintaining a set of registries, "BGP Error
Subcodes", with a separate registry for each BGP Error Code.  Future
assignments are to be made using the Standards Action process defined in
<xref target="RFC8126"/>.  Assignments consist of a name and the value.</t>
        <t>IANA maintains a subregistry below the BGP Error Subcodes registry
called "Message Header Error subcodes". IANA is requested to rename this
subregistry "BGP Message Header Error subcodes". This document defines
the following BGP Message Header Error subcodes:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Value</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Unspecific</td>
              <td align="left">0</td>
              <td align="left">See <xref target="msgheadererr"/></td>
            </tr>
            <tr>
              <td align="left">Connection Not Synchronized</td>
              <td align="left">1</td>
              <td align="left">See <xref target="msgheadererr"/></td>
            </tr>
            <tr>
              <td align="left">Bad Message Length</td>
              <td align="left">2</td>
              <td align="left">See <xref target="msgheadererr"/></td>
            </tr>
            <tr>
              <td align="left">Bad Message Type</td>
              <td align="left">3</td>
              <td align="left">See <xref target="msgheadererr"/></td>
            </tr>
          </tbody>
        </table>
        <t>IANA maintains a subregistry below the BGP Error Subcodes registry
called "OPEN Message Error subcodes". IANA is requested to rename this
subregistry "BGP OPEN Message Error subcodes". This document defines 
the following OPEN Message Error subcodes:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Value</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Unspecific</td>
              <td align="left">0</td>
              <td align="left">See <xref target="openmsgerr"/></td>
            </tr>
            <tr>
              <td align="left">Unsupported Version Number</td>
              <td align="left">1</td>
              <td align="left">See <xref target="openmsgerr"/></td>
            </tr>
            <tr>
              <td align="left">Bad Peer AS</td>
              <td align="left">2</td>
              <td align="left">See <xref target="openmsgerr"/></td>
            </tr>
            <tr>
              <td align="left">Bad BGP Identifier</td>
              <td align="left">3</td>
              <td align="left">See <xref target="openmsgerr"/></td>
            </tr>
            <tr>
              <td align="left">Unsupported Optional Parameter</td>
              <td align="left">4</td>
              <td align="left">See <xref target="openmsgerr"/></td>
            </tr>
            <tr>
              <td align="left">[Deprecated]</td>
              <td align="left">5</td>
              <td align="left">See <xref target="RFC4271"/> Appendix A</td>
            </tr>
            <tr>
              <td align="left">Unacceptable Hold Time</td>
              <td align="left">6</td>
              <td align="left">See <xref target="openmsgerr"/></td>
            </tr>
          </tbody>
        </table>
        <t>IANA maintains a subregistry below the BGP Error Subcodes registry
called "UPDATE Message Error subcodes". IANA is requested to rename this
subregistry "BGP UPDATE Message Error subcodes". This document defines 
the following UPDATE Message Error subcodes:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Value</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Unspecific</td>
              <td align="left">0</td>
              <td align="left">See <xref target="updatemsgerr"/></td>
            </tr>
            <tr>
              <td align="left">Malformed Attribute List</td>
              <td align="left">1</td>
              <td align="left">See <xref target="updatemsgerr"/></td>
            </tr>
            <tr>
              <td align="left">Unrecognized Well-known Attribute (deprecated)</td>
              <td align="left">2</td>
              <td align="left">See <xref target="updatemsgerr"/></td>
            </tr>
            <tr>
              <td align="left">Missing Well-known Attribute  (deprecated)</td>
              <td align="left">3</td>
              <td align="left">See <xref target="updatemsgerr"/></td>
            </tr>
            <tr>
              <td align="left">Attribute Flags Error (deprecated)</td>
              <td align="left">4</td>
              <td align="left">See <xref target="updatemsgerr"/></td>
            </tr>
            <tr>
              <td align="left">Attribute Length Error (deprecated)</td>
              <td align="left">5</td>
              <td align="left">See <xref target="updatemsgerr"/></td>
            </tr>
            <tr>
              <td align="left">Invalid ORIGIN Attribute (deprecated)</td>
              <td align="left">6</td>
              <td align="left">See <xref target="updatemsgerr"/></td>
            </tr>
            <tr>
              <td align="left">[Deprecated]</td>
              <td align="left">7</td>
              <td align="left">See <xref target="RFC4271"/> Appendix A</td>
            </tr>
            <tr>
              <td align="left">Invalid NEXT_HOP Attribute (deprecated)</td>
              <td align="left">8</td>
              <td align="left">See <xref target="updatemsgerr"/></td>
            </tr>
            <tr>
              <td align="left">Optional Attribute Error (deprecated)</td>
              <td align="left">9</td>
              <td align="left">See <xref target="updatemsgerr"/></td>
            </tr>
            <tr>
              <td align="left">Invalid Network Field</td>
              <td align="left">10</td>
              <td align="left">See <xref target="updatemsgerr"/></td>
            </tr>
            <tr>
              <td align="left">Malformed AS_PATH (deprecated)</td>
              <td align="left">11</td>
              <td align="left">See <xref target="updatemsgerr"/></td>
            </tr>
          </tbody>
        </table>
        <t>RFC 6608 created the registry "BGP Finite State Machine Error Subcodes".
IANA is requested to update the reference in that registry (both overall,
and individual code points) to this document.</t>
        <t>RFC 4486 created the registry "BGP Cease NOTIFICATION message subcodes".
IANA is requested to update the reference in that registry (both overall,
and individual code points that reference RFC 4486) to this document.</t>
      </section>
      <section anchor="aspath-segment-types">
        <name>AS_PATH Segment Types</name>
        <t>IANA is requested to create a registry called "BGP AS_PATH Segment Types"
within the "Border Gateway Protocol (BGP) Parameters" group. The allocation
policy is Standards Action.</t>
        <t>Values 0 and 255 are reserved. Values 1 and 2 are defined in
<xref target="aspath_segtypes"/>. The values 3 and 4, defined in <xref target="RFC5065"/> are also
included. (Note that it is not an error that the order of SET and
SEQUENCE are reversed between the respective types.)</t>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Value</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Reserved</td>
              <td align="left">0</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">AS_SET (deprecated)</td>
              <td align="left">1</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">AS_SEQUENCE</td>
              <td align="left">2</td>
              <td align="left">This Document</td>
            </tr>
            <tr>
              <td align="left">AS_CONFED_SEQUENCE</td>
              <td align="left">3</td>
              <td align="left">
                <xref target="RFC5065"/></td>
            </tr>
            <tr>
              <td align="left">AS_CONFED_SET (deprecated)</td>
              <td align="left">4</td>
              <td align="left">
                <xref target="RFC5065"/></td>
            </tr>
            <tr>
              <td align="left">Reserved</td>
              <td align="left">255</td>
              <td align="left">This Document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="bgp-open-optional-parameter-types">
        <name>BGP OPEN Optional Parameter Types</name>
        <t>With the publication of RFC 9072, IANA assigned value 255 as the
Extended Length type code in the "BGP OPEN Optional Parameter Types"
registry. With the publication of this document, RFC 9072 will be
obsoleted; thus, IANA is requested to update the reference to refer to
this document.</t>
      </section>
      <section anchor="references-to-bgp-specification">
        <name>References to BGP Specification</name>
        <t>IANA is requested to update all references to RFC4271 in the "Border
Gateway Protocol (BGP) Parameters" registry group to refer to this
document.</t>
        <t>IANA is requested to replace all references to RFC 4271 in the IP Flow
Information Export (IPFIX) Entities registry group at
https://www.iana.org/assignments/ipfix with references to this document.</t>
        <!--
# Aggregation

RFC 4271's aggregation rules were seldom implemented as written (basic
aggregation was pervasively implemented. "Complex" from the appendix was
not) and almost never used in practice. This specification simplifies
aggregation, to document only the implemented and practiced procedures. 

etc

-->

</section>
    </section>
  </back>
  <!-- ##markdown-source:
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
gh13mwBQ4/1WqkFilHAWgAebAai1o8+kvMB1JSA8CWlTvs7F3PtMXHSLu/Dy
Tj1VyODMDVlh+79jCZJ9ZNG8fgBYk1/+4XbLf4sFav3xZ9bexTY6F9V9iqKg
zGKjTS5lCtiBi3bo+1eZve9rs6EuwkS3JSbmEHFI6EkFdHWpCWzDPMMUKC5x
Ru970GMfO7iROdg/3A723q8oYuLGM/AjuRD/GKIfIwiSdU874rUxZvnlIyFu
ZOHUks+KoXmSgdW8VnOOEeMK7gockpIoMq3VarGph55iznwFBV1FhgPIZFEI
Z+axkXvBKS1Y5Fas25nH0l6PZABHUhrOnOpvfque1cyh3ElI9V5K3x66k/yj
9y9E8komPNXJk+HmUGJrkOR+nSUe2CXytSAsFlTxwYSRuCHLdf0ouI2rZeKO
FY9IqYpmSAASKuYhT0okFTYvNklT7STG1twP3rmv5ZVBHalzoX17zLsBb3wJ
17pJRadWepBUGdXw26LcFbYJ7M3j9AEGCjzXHzitNIzKWnnEJPnICsYq+p1U
sYjZmIcOeLk8kCFfdhwMosFBbGAvF4iMzr1fu4vOVm5lSfKub+hlc00ZNgCD
n9n7yl7WV6JUb/3vZ/ezCFE/733JP4rd2hdRDitc7W1r2dIwblNUXApoksBx
dJpdrDjrMTDuPpNphS2pU0gv+6w+8hFQQ7/MdIe6t9cv3rx6++MxiFr3nhUE
cOOv4jJ1yTwP9zDe5uciyrqjO/ozyrUPGDQ/yY1QDzcjOCFAS3kB3xbvSd/R
WJVINIjdkjSgUOPzXWX19hod8jXSX/5290iUTZRgFlQ0aEqFyoPKCMhCt6mt
qE+M1+SS72UcE65L5cxEuSt+Hz3Lml30lTfwlazO6/d0Kt96MtwbhtU5jSWL
bJtarNelN1tPK77hpzKqr+rxn3PDD4qdCQINDQuTXbkRBWLG6fHZ8yL8tm4F
ErIc3vof749fvzh+zn7EaqKF4rHdQijxm3VQUyFe6eHYn49vS9niGfwEZ8DV
HVQtFEyOoBhuT+b0Zl76y5/fMKS/+LBvb3WjzVDb3fh79fyQNaNLp7wOiTJ5
jDIPBNmGhFNpGnp06jQJGBgrRYcl9uv+Rqgn7N0pwrigbSkMHwJRmPGu1yAs
gXkIBOZ5+OXLCMwv59KWRe+ssOla2+1aW6ut3q6tn+N0kZJLQfjaucLQor4H
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
dV5kHp5SponheUkDjDTxVMY9HPjDylCjhd2LF5ZfcBZYeDAc+7gasl1ra8SI
za2nSZKmw7Ojmeg9UWqzAY2NZL7LeROmxmtFrXtOCpBxOrzfvFSd14lzFCMQ
6vNCPs3OEb0/PpSPHZGsSKOwp9mR0ZMc9TNPTqeBSX76il/dVyXRqNN0x6R4
xvYauBhE6LNIT0KQ1fRV88n2Y4Lsd3g3JM3d2BDJeedV6j53o+C7yGI/iOc8
u/ZmJf92d4OZA6IL2Q5zn9Hft5C1oUwLKAkxD9X5LxYzZonX1ew9zndYrf0Q
bcX7usHvPI6/SAPEWSpx6giJB0rR4yznaq9PZDiakdC2H4AuscOlw2bBjJyk
cq3uGpPm/ty4Br1H1BTcU7Nkp7vMTX/G3iaJIpl5t/SN7E7n/tWCol57AhL4
xPOsSeZRnoVYVLXDK4aixJriyzdHhy9/PH17/Dz1roB3Tww/qWs+oJ12YSVO
f7FSl6qiebvzvBYeCm3cZ++p/h9fYrrrrwEh5kPxIxRozhxcg8R6FiMUw2fh
zuObobM9PoZzHlXVFPbd+t0zRV13b55Wa8SXc/2KuxfpOhdp82KF3OI7komg
n7Apu6Au96M/vPr+7B0LfBjkpuyzDhqgv0xFdqbBBKUmgbZqzYQHNxUpr5sE
ZNPl2xi7vqpktyfwCdMW8kG8Y7UYqFgkKhA0MoCf9vbE/a+x55ICAB46Yrcs
syU5oDFTh7JvE9tPVTE+8xqc8uqDhFcfrObVLYGv7Gs3GeKWvDJTXumW80ox
4m18Mw5Np4vDFU7EAO1lU82LnQIbLPkcDNMuhfU8CJ1y+V13b9l22RwbM28y
99HIRdMK7J32htjngIMTQC7R11JeTtMYg3uHEwkOwNfHf3/344s3pxFfY1uY
gy5MCMNiWmpNYT4cziSFiz1tjtGti5ooK+cLVs00geW6WowA0UZfLNgtb8+Y
t0uGvs7r1Hy1P7Fyk/tLGyZjdyuxad181RmFtR6e/Xh6+O7F8qUG9ycJ0zNm
hKHOTnnAlS6tw6xePoXMhnMBu4zhucjYI1W+JpVrYqousqTwOCzYbIsoPYmQ
sAe5uQ7paRPKQD3/b/dL8AnhbalkviAYLMTo/XWQqdAa3ogqAAePbZxn8N75
GuQTwpbcCy94vLSEpSIlKkzNpVNLP8s3dD3A2a779Ont86NHj/Ye/Por+1QX
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
vq7ljObbqyW0FLKIerj8yCvymAiSrpmPz8vLRa64ZZKa7qKs/DDtBw/1A0ec
BgXC6c2qfDjOp70wqjAChWcTv0SPf75iTtWLp/6OKwZ4BM9yOROKq4pLLsa5
lIbfmuE8Q4dtpLzNr3xKNffJIYFphRvRjOkOCb5rNJYt4iokJvSAe8V4WedI
42ZYZzj5ig/E7nvYqMYTlmSWZUg+64UvPrynw7/VhlISzOUMWK3fo2meio5l
zZ04Aa9kbLOQ9EXDYCs8hHiAc78YQWdXEr9mDIWF1GRr/shiUiLewv1ks5CR
JPx/ilr8clBYonvtm2cJsvFEoXA4AV+S6qUmYVDMIFVspY9tpZq1gagPbsTO
v8ru6L+jF4w+32H6JNAW06y3tGVPj0s4WGBZK10udrfRnuzxHbJtzrWhop5n
J/h7L0IEkXNAUn+4Z9rCWsom40896JtW3Ne+PdYMF5m+gZdKTbV+GY0Lfb44
bnG37Iy48t4+L+kVZwFq1p+W6XIqS53d20HZHVONdO9m2oGs9L7zfERbNcSR
1QAMv+ZELy4Es87t0nxdlautOe7yTl7vGPbVdjyjA2NUxqQukeBzw+LI+Lqv
TL2Zpsu5xy8/Lz9G+W6iUE0NAgX5xUfIzJmNs2M0J8kOYtG494SHOAJIyoXC
QYBEfL4Md/KTchPt6QG/UDkQ/D3p+JvjmOsbUq0+KixfWq7bx6SmJXekMohB
eY6r/o1QtEBKOBrxp2HWG+cjqYONGMD+/l7CAbKxeBxrr2rtHexppB5batww
GuB+smhSbHNGA9iSFldzRYvdzs7zYTaYVXW9Ewit5Aq8w4AbAjo8lrYv/lNg
u5Bb8+LjXNDUe/q3npQkY7nc6w1mIAor5lmP3Sm00CPisTD36PZKcJW2itgP
9zNh1S8Hi4R0qWLptL//mPcl1rsOsM5vWPETRRrgiQu2hIeMw1z6JnJSTZsk
g3Atn1Kn34Dae2wfPiBR3Tv+qH2dXyla5Jm6FFWh6m0LXKeUzDNuu8+hJnU6
MyCbeUVGRkzeB/day7mH5byTKhyyzG+SJCLvFbBIeFkb6hirfSE6R3vWe0va
ADRm1uzgNh6ObBegDimIi66J9Z2w0U+2QQIuqCLTRWjNMqi4GJ0B3sGeiTD+
nMYan7qG9PK1sqjlJBLsLSbQ8i8B8jTk2sQdLdz0KkMvPvh7pjY8A+qOVLDq
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
19S/uv8fAjPOMsxNAwA=

-->

</rfc>
