summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc1771.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc1771.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc1771.txt')
-rw-r--r--doc/rfc/rfc1771.txt3195
1 files changed, 3195 insertions, 0 deletions
diff --git a/doc/rfc/rfc1771.txt b/doc/rfc/rfc1771.txt
new file mode 100644
index 0000000..b078dfb
--- /dev/null
+++ b/doc/rfc/rfc1771.txt
@@ -0,0 +1,3195 @@
+
+
+
+
+
+
+Network Working Group Y. Rekhter
+Request for Comments: 1771 T.J. Watson Research Center, IBM Corp.
+Obsoletes: 1654 T. Li
+Category: Standards Track cisco Systems
+ Editors
+ March 1995
+
+
+ A Border Gateway Protocol 4 (BGP-4)
+
+Status of this Memo
+
+ This document specifies an Internet standards track protocol for the
+ Internet community, and requests discussion and suggestions for
+ improvements. Please refer to the current edition of the "Internet
+ Official Protocol Standards" (STD 1) for the standardization state
+ and status of this protocol. Distribution of this memo is unlimited.
+
+Abstract
+
+ 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.
+
+1. Acknowledgements
+
+ This document was originally published as RFC 1267 in October 1991,
+ jointly authored by Kirk Lougheed (cisco Systems) and Yakov Rekhter
+ (IBM).
+
+ We would like to express our thanks to Guy Almes (ANS), Len Bosack
+ (cisco Systems), and Jeffrey C. Honig (Cornell University) for their
+ contributions to the earlier version of this document.
+
+ We like to explicitly thank Bob Braden (ISI) for the review of the
+ earlier version of this document as well as his constructive and
+ valuable comments.
+
+ 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 previous 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.
+
+
+
+
+
+
+Rekhter & Li [Page 1]
+
+RFC 1771 BGP-4 March 1995
+
+
+ This updated version of the document is the product of the IETF IDR
+ Working Group with Yakov Rekhter and Tony Li as editors. Certain
+ sections of the document borrowed heavily from IDRP [7], which is the
+ OSI counterpart of BGP. For this credit should be given to the ANSI
+ X3S3.3 group chaired by Lyman Chapin (BBN) and to Charles Kunzinger
+ (IBM Corp.) who was the IDRP editor within that group. We would also
+ like to thank Mike Craren (Proteon, Inc.), Dimitry Haskin (Bay
+ Networks, Inc.), John Krawczyk (Bay Networks, Inc.), and Paul Traina
+ (cisco Systems) for their insightful comments.
+
+ We would like to specially acknowledge numerous contributions by
+ Dennis Ferguson (MCI).
+
+ The work of Yakov Rekhter was supported in part by the National
+ Science Foundation under Grant Number NCR-9219216.
+
+2. Introduction
+
+ The Border Gateway Protocol (BGP) is an inter-Autonomous System
+ routing protocol. It is built on experience gained with EGP as
+ defined in RFC 904 [1] and EGP usage in the NSFNET Backbone as
+ described in RFC 1092 [2] and RFC 1093 [3].
+
+ 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 (ASs) that reachability information traverses.
+ This information is sufficient to construct a graph of AS
+ connectivity from which routing loops may be pruned and some policy
+ decisions at the AS level may be enforced.
+
+ BGP-4 provides a new set of mechanisms for supporting classless
+ interdomain routing. These mechanisms include support for
+ advertising an IP prefix and eliminates the concept of network
+ "class" within BGP. BGP-4 also introduces mechanisms which allow
+ aggregation of routes, including aggregation of AS paths. These
+ changes provide support for the proposed supernetting scheme [8, 9].
+
+ To characterize the set of policy decisions that can be enforced
+ using BGP, one must focus on the rule that a BGP speaker advertise to
+ its peers (other BGP speakers which it communicates with) in
+ neighboring ASs only those routes that it itself uses. This rule
+ reflects the "hop-by-hop" routing paradigm generally used throughout
+ the current Internet. Note that some policies cannot be supported by
+ the "hop-by-hop" routing paradigm and thus require techniques such as
+ source routing to enforce. For example, BGP does not enable one AS
+ to send traffic to a neighboring AS intending that the traffic take a
+ different route from that taken by traffic originating in the
+
+
+
+Rekhter & Li [Page 2]
+
+RFC 1771 BGP-4 March 1995
+
+
+ neighboring AS. On the other hand, BGP can support any policy
+ conforming to the "hop-by-hop" routing paradigm. Since the current
+ Internet uses only the "hop-by-hop" routing paradigm and since BGP
+ can support any policy that conforms to that paradigm, BGP is highly
+ applicable as an inter-AS routing protocol for the current Internet.
+
+ A more complete discussion of what policies can and cannot be
+ enforced with BGP is outside the scope of this document (but refer to
+ the companion document discussing BGP usage [5]).
+
+ BGP runs over a reliable transport protocol. This eliminates the
+ need to implement explicit update fragmentation, retransmission,
+ acknowledgement, and sequencing. Any authentication scheme used by
+ the transport protocol may be used in addition to BGP's own
+ authentication mechanisms. The error notification mechanism used in
+ BGP assumes that the transport protocol supports a "graceful" close,
+ i.e., that all outstanding data will be delivered before the
+ connection is closed.
+
+ BGP uses TCP [4] as its transport protocol. TCP meets BGP's
+ transport requirements and is present in virtually all commercial
+ routers and hosts. In the following descriptions the phrase
+ "transport protocol connection" can be understood to refer to a TCP
+ connection. BGP uses TCP port 179 for establishing its connections.
+
+ 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
+ and common metrics to route packets within the AS, and using an
+ exterior gateway protocol to route packets to other ASs. Since this
+ classic definition was developed, it has become common for a single
+ AS to use several interior gateway protocols and sometimes several
+ sets of metrics within an AS. The use of the term Autonomous System
+ here stresses the fact that, even when multiple IGPs and metrics are
+ used, the administration of an AS appears to other ASs to have a
+ single coherent interior routing plan and presents a consistent
+ picture of what destinations are reachable through it.
+
+ The planned use of BGP in the Internet environment, including such
+ issues as topology, the interaction between BGP and IGPs, and the
+ enforcement of routing policy rules is presented in a companion
+ document [5]. This document is the first of a series of documents
+ planned to explore various aspects of BGP application. Please send
+ comments to the BGP mailing list (bgp@ans.net).
+
+
+
+
+
+
+
+Rekhter & Li [Page 3]
+
+RFC 1771 BGP-4 March 1995
+
+
+3. Summary of Operation
+
+ Two systems form a transport protocol connection between one another.
+ They exchange messages to open and confirm the connection parameters.
+ The initial data flow is the entire BGP routing table. Incremental
+ updates are sent as the routing tables change. BGP does not require
+ periodic refresh of the entire BGP routing table. Therefore, a BGP
+ speaker must retain the current version of the entire BGP routing
+ tables of all of its peers for the duration of the connection.
+ KeepAlive messages are sent periodically to ensure the liveness of
+ the connection. Notification messages are sent in response to errors
+ or special conditions. If a connection encounters an error
+ condition, a notification message is sent and the connection is
+ closed.
+
+ The hosts executing the Border Gateway Protocol need not be routers.
+ A non-routing host could exchange routing information with routers
+ via EGP or even an interior routing protocol. That non-routing host
+ could then use BGP to exchange routing information with a border
+ router in another Autonomous System. The implications and
+ applications of this architecture are for further study.
+
+ If a particular AS has multiple BGP speakers and is providing transit
+ service for other ASs, 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 interior routing protocol. A
+ consistent view of the routes exterior to the AS can be provided by
+ having all BGP speakers within the AS maintain direct BGP connections
+ with each other. Using a common set of policies, the BGP speakers
+ arrive at an agreement as to which border routers will serve as
+ exit/entry points for particular destinations outside the AS. This
+ information is communicated to the AS's internal routers, possibly
+ via the interior routing protocol. Care must be taken to ensure that
+ the interior routers have all been updated with transit information
+ before the BGP speakers announce to other ASs that transit service is
+ being provided.
+
+ Connections between BGP speakers of different ASs are referred to as
+ "external" links. BGP connections between BGP speakers within the
+ same AS are referred to as "internal" links. Similarly, a peer in a
+ different AS is referred to as an external peer, while a peer in the
+ same AS may be described as an internal peer.
+
+
+
+
+
+
+
+
+
+Rekhter & Li [Page 4]
+
+RFC 1771 BGP-4 March 1995
+
+
+3.1 Routes: Advertisement and Storage
+
+ For purposes of this protocol a route is defined as a unit of
+ information that pairs a destination with the attributes of a path to
+ that destination:
+
+ - Routes are advertised between a pair of BGP speakers in UPDATE
+ messages: the destination is the systems whose IP addresses are
+ reported in the Network Layer Reachability Information (NLRI)
+ field, and the the path is the information reported in the path
+ attributes fields of the same UPDATE message.
+
+ - Routes are stored in the Routing Information Bases (RIBs):
+ namely, the Adj-RIBs-In, the Loc-RIB, and the Adj-RIBs-Out. Routes
+ that will be advertised to other BGP speakers must be present in
+ the Adj-RIB-Out; routes that will be used by the local BGP speaker
+ must be present in the Loc-RIB, and the next hop for each of these
+ routes must be present in the local BGP speaker's forwarding
+ information base; and routes that are received from other BGP
+ speakers are present in the Adj-RIBs-In.
+
+ If a BGP speaker chooses to advertise the route, it may add to or
+ modify the path attributes of the route before advertising it to a
+ peer.
+
+ BGP provides mechanisms by which a BGP speaker can inform its peer
+ 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:
+
+ a) the IP prefix that expresses destinations 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
+
+ b) a replacement route with the same Network Layer Reachability
+ Information can be advertised, or
+
+ c) the BGP speaker - BGP speaker connection can be closed, which
+ implicitly removes from service all routes which the pair of
+ speakers had advertised to each other.
+
+
+
+
+
+
+
+
+
+
+Rekhter & Li [Page 5]
+
+RFC 1771 BGP-4 March 1995
+
+
+3.2 Routing Information Bases
+
+ The Routing Information Base (RIB) within a BGP speaker consists of
+ three distinct parts:
+
+ a) Adj-RIBs-In: The Adj-RIBs-In store routing information that has
+ been learned from inbound UPDATE messages. Their contents
+ represent routes that are available as an input to the Decision
+ Process.
+
+ b) Loc-RIB: The Loc-RIB contains the local routing information
+ that the BGP speaker has selected by applying its local policies
+ to the routing information contained in its Adj-RIBs-In.
+
+ c) Adj-RIBs-Out: The Adj-RIBs-Out store the information that the
+ local BGP speaker has 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.
+
+ 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.
+
+ 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.
+
+4. Message Formats
+
+ This section describes message formats used by BGP.
+
+ Messages are sent over a reliable transport protocol connection. A
+ message is processed only after it is entirely received. The maximum
+ message size is 4096 octets. 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, or 19 octets.
+
+
+
+
+
+
+
+
+Rekhter & Li [Page 6]
+
+RFC 1771 BGP-4 March 1995
+
+
+4.1 Message Header Format
+
+ 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 these fields is shown below:
+
+ 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 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Marker:
+
+ This 16-octet field contains a value that the receiver of the
+ message can predict. If the Type of the message is OPEN, or if
+ the OPEN message carries no Authentication Information (as an
+ Optional Parameter), then the Marker must be all ones.
+ Otherwise, the value of the marker can be predicted by some a
+ computation specified as part of the authentication mechanism
+ (which is specified as part of the Authentication Information)
+ used. The Marker can be used to detect loss of synchronization
+ between a pair of BGP peers, and to authenticate incoming BGP
+ messages.
+
+ Length:
+
+ This 2-octet unsigned integer indicates the total length of the
+ message, including the header, in octets. Thus, e.g., it
+ allows one to locate in the transport-level stream the (Marker
+ field of the) next message. The value of the Length field must
+ always be at least 19 and no greater than 4096, and may be
+ further constrained, depending on the message type. No
+ "padding" of extra data after the message is allowed, so the
+ Length field must have the smallest value required given the
+ rest of the message.
+
+
+
+
+
+
+
+Rekhter & Li [Page 7]
+
+RFC 1771 BGP-4 March 1995
+
+
+ Type:
+
+ This 1-octet unsigned integer indicates the type code of the
+ message. The following type codes are defined:
+
+ 1 - OPEN
+ 2 - UPDATE
+ 3 - NOTIFICATION
+ 4 - KEEPALIVE
+
+4.2 OPEN Message Format
+
+ After a transport protocol 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.
+ Once the OPEN is confirmed, UPDATE, KEEPALIVE, and NOTIFICATION
+ messages may be exchanged.
+
+ In addition to the fixed-size BGP header, the OPEN message contains
+ the following fields:
+
+ 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 |
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Version:
+
+ This 1-octet unsigned integer indicates the protocol version
+ number of the message. The current BGP version number is 4.
+
+ My Autonomous System:
+
+ This 2-octet unsigned integer indicates the Autonomous System
+ number of the sender.
+
+
+
+Rekhter & Li [Page 8]
+
+RFC 1771 BGP-4 March 1995
+
+
+ Hold Time:
+
+ This 2-octet unsigned integer indicates the number of seconds
+ that the sender proposes for the value of the Hold Timer. Upon
+ receipt of an OPEN message, a BGP speaker MUST 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 MUST be either zero or at least three seconds. An
+ implementation may 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 by the sender.
+
+ BGP Identifier:
+
+ This 4-octet unsigned integer indicates the BGP Identifier of
+ the sender. A given BGP speaker sets the value of its BGP
+ Identifier to an IP address assigned to that BGP speaker. The
+ value of the BGP Identifier is determined on startup and is the
+ same for every local interface and every BGP peer.
+
+ Optional Parameters Length:
+
+ 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.
+
+ Optional Parameters:
+
+ This field may contain a list of optional parameters, where
+ each parameter is encoded as a <Parameter Type, Parameter
+ Length, Parameter Value> triplet.
+
+ 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)
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...
+
+ 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.
+
+
+
+
+
+
+Rekhter & Li [Page 9]
+
+RFC 1771 BGP-4 March 1995
+
+
+ This document defines the following Optional Parameters:
+
+ a) Authentication Information (Parameter Type 1):
+
+ This optional parameter may be used to authenticate a BGP
+ peer. The Parameter Value field contains a 1-octet
+ Authentication Code followed by a variable length
+ Authentication Data.
+
+ 0 1 2 3 4 5 6 7 8
+ +-+-+-+-+-+-+-+-+
+ | Auth. Code |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ | Authentication Data |
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Authentication Code:
+
+ This 1-octet unsigned integer indicates the
+ authentication mechanism being used. Whenever an
+ authentication mechanism is specified for use within
+ BGP, three things must be included in the
+ specification:
+
+ - the value of the Authentication Code which indicates
+ use of the mechanism,
+ - the form and meaning of the Authentication Data, and
+ - the algorithm for computing values of Marker fields.
+
+ Note that a separate authentication mechanism may be
+ used in establishing the transport level connection.
+
+ Authentication Data:
+
+ The form and meaning of this field is a variable-
+ length field depend on the Authentication Code.
+
+ The minimum length of the OPEN message is 29 octets (including
+ message header).
+
+
+
+
+
+
+
+
+
+
+Rekhter & Li [Page 10]
+
+RFC 1771 BGP-4 March 1995
+
+
+4.3 UPDATE Message Format
+
+ UPDATE messages are used to transfer routing information between BGP
+ peers. The information in the UPDATE packet can be used to construct
+ a graph describing the relationships of the various Autonomous
+ Systems. By applying rules to be discussed, routing information
+ loops and some other anomalies may be detected and removed from
+ inter-AS routing.
+
+ An UPDATE message is used to advertise a single feasible route to a
+ peer, or to withdraw multiple unfeasible routes from service (see
+ 3.1). An UPDATE message may simultaneously advertise a feasible route
+ and withdraw multiple unfeasible routes from service. The UPDATE
+ message always includes the fixed-size BGP header, and can optionally
+ include the other fields as shown below:
+
+ +-----------------------------------------------------+
+ | Unfeasible Routes Length (2 octets) |
+ +-----------------------------------------------------+
+ | Withdrawn Routes (variable) |
+ +-----------------------------------------------------+
+ | Total Path Attribute Length (2 octets) |
+ +-----------------------------------------------------+
+ | Path Attributes (variable) |
+ +-----------------------------------------------------+
+ | Network Layer Reachability Information (variable) |
+ +-----------------------------------------------------+
+
+ Unfeasible Routes Length:
+
+ This 2-octets unsigned integer indicates the total length of
+ the Withdrawn Routes field in octets. Its value must allow the
+ length of the Network Layer Reachability Information field to
+ be determined as specified below.
+
+ 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.
+
+ Withdrawn Routes:
+
+ 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 <length, prefix>, whose fields are described below:
+
+
+
+
+
+
+Rekhter & Li [Page 11]
+
+RFC 1771 BGP-4 March 1995
+
+
+ +---------------------------+
+ | Length (1 octet) |
+ +---------------------------+
+ | Prefix (variable) |
+ +---------------------------+
+
+ The use and the meaning of these fields are as follows:
+
+ a) 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).
+
+ b) Prefix:
+
+ The Prefix field contains IP address prefixes followed by
+ enough trailing bits to make the end of the field fall on an
+ octet boundary. Note that the value of trailing bits is
+ irrelevant.
+
+ Total Path Attribute Length:
+
+ This 2-octet unsigned integer indicates the total length of the
+ Path Attributes field in octets. Its value must allow the
+ length of the Network Layer Reachability field to be determined
+ as specified below.
+
+ A value of 0 indicates that no Network Layer Reachability
+ Information field is present in this UPDATE message.
+
+ Path Attributes:
+
+ A variable length sequence of path attributes is present in
+ every UPDATE. Each path attribute is a triple <attribute type,
+ attribute length, attribute value> of variable length.
+
+ Attribute Type is a two-octet field that consists of the
+ Attribute Flags octet followed by the Attribute Type Code
+ octet.
+
+ 0 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Attr. Flags |Attr. Type Code|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+
+
+
+Rekhter & Li [Page 12]
+
+RFC 1771 BGP-4 March 1995
+
+
+ The high-order bit (bit 0) of the Attribute Flags octet is the
+ Optional bit. It defines whether the attribute is optional (if
+ set to 1) or well-known (if set to 0).
+
+ 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). For well-known attributes, the Transitive bit must be
+ set to 1. (See Section 5 for a discussion of transitive
+ attributes.)
+
+ 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 well-known attributes
+ and for optional non-transitive attributes the Partial bit must
+ be set to 0.
+
+ 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).
+ Extended Length may be used only if the length of the attribute
+ value is greater than 255 octets.
+
+ The lower-order four bits of the Attribute Flags octet are .
+ unused. They must be zero (and must be ignored when received).
+
+ The Attribute Type Code octet contains the Attribute Type Code.
+ Currently defined Attribute Type Codes are discussed in Section
+ 5.
+
+ 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.
+
+ If the Extended Length bit of the Attribute Flags octet is set
+ to 1, then the third and the fourth octets of the path
+ attribute contain the length of the attribute data in octets.
+
+ 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, their attribute values and uses are the following:
+
+
+
+
+
+
+
+
+Rekhter & Li [Page 13]
+
+RFC 1771 BGP-4 March 1995
+
+
+ a) ORIGIN (Type Code 1):
+
+ ORIGIN is a well-known mandatory attribute that defines the
+ origin of the path information. The data octet can assume
+ the following values:
+
+ Value Meaning
+
+ 0 IGP - Network Layer Reachability Information
+ is interior to the originating AS
+
+ 1 EGP - Network Layer Reachability Information
+ learned via EGP
+
+ 2 INCOMPLETE - Network Layer Reachability
+ Information learned by some other means
+
+ Its usage is defined in 5.1.1
+
+ b) AS_PATH (Type Code 2):
+
+ AS_PATH is a well-known mandatory attribute that is composed
+ of a sequence of AS path segments. Each AS path segment is
+ represented by a triple <path segment type, path segment
+ length, path segment value>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rekhter & Li [Page 14]
+
+RFC 1771 BGP-4 March 1995
+
+
+ The path segment type is a 1-octet long field with the
+ following values defined:
+
+ Value Segment Type
+
+ 1 AS_SET: unordered set of ASs a route in the
+ UPDATE message has traversed
+
+ 2 AS_SEQUENCE: ordered set of ASs a route in
+ the UPDATE message has traversed
+
+ The path segment length is a 1-octet long field containing
+ the number of ASs in the path segment value field.
+
+ The path segment value field contains one or more AS
+ numbers, each encoded as a 2-octets long field.
+
+ Usage of this attribute is defined in 5.1.2.
+
+ c) NEXT_HOP (Type Code 3):
+
+ This is a well-known mandatory attribute that defines the IP
+ address of the border router that should be used as the next
+ hop to the destinations listed in the Network Layer
+ Reachability field of the UPDATE message.
+
+ Usage of this attribute is defined in 5.1.3.
+
+ d) MULTI_EXIT_DISC (Type Code 4):
+
+ This is an optional non-transitive attribute that is a four
+ octet non-negative integer. The value of this attribute may
+ be used by a BGP speaker's decision process to discriminate
+ among multiple exit points to a neighboring autonomous
+ system.
+
+ Its usage is defined in 5.1.4.
+
+ e) LOCAL_PREF (Type Code 5):
+
+ LOCAL_PREF is a well-known discretionary attribute that is a
+ four octet non-negative integer. It is used by a BGP speaker
+ to inform other BGP speakers in its own autonomous system of
+ the originating speaker's degree of preference for an
+ advertised route. Usage of this attribute is described in
+ 5.1.5.
+
+
+
+
+
+Rekhter & Li [Page 15]
+
+RFC 1771 BGP-4 March 1995
+
+
+ f) ATOMIC_AGGREGATE (Type Code 6)
+
+ ATOMIC_AGGREGATE is a well-known discretionary attribute of
+ length 0. It is used by a BGP speaker to inform other BGP
+ speakers that the local system selected a less specific
+ route without selecting a more specific route which is
+ included in it. Usage of this attribute is described in
+ 5.1.6.
+
+ g) AGGREGATOR (Type Code 7)
+
+ 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 IP
+ address of the BGP speaker that formed the aggregate route
+ (encoded as 4 octets). Usage of this attribute is described
+ in 5.1.7
+
+ Network Layer Reachability Information:
+
+ 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:
+
+ UPDATE message Length - 23 - Total Path Attributes Length -
+ Unfeasible Routes Length
+
+ where UPDATE message Length is the value encoded in the fixed-
+ size BGP header, Total Path Attribute Length and Unfeasible
+ 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
+ Unfeasible Routes Length field.
+
+ Reachability information is encoded as one or more 2-tuples of
+ the form <length, prefix>, whose fields are described below:
+
+ +---------------------------+
+ | Length (1 octet) |
+ +---------------------------+
+ | Prefix (variable) |
+ +---------------------------+
+
+
+
+
+
+
+
+
+Rekhter & Li [Page 16]
+
+RFC 1771 BGP-4 March 1995
+
+
+ The use and the meaning of these fields are as follows:
+
+ a) 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).
+
+ b) Prefix:
+
+ The Prefix field contains IP address prefixes followed by
+ enough trailing bits to make the end of the field fall on an
+ octet boundary. Note that the value of the trailing bits is
+ irrelevant.
+
+ The minimum length of the UPDATE message is 23 octets -- 19 octets
+ for the fixed header + 2 octets for the Unfeasible Routes Length + 2
+ octets for the Total Path Attribute Length (the value of Unfeasible
+ Routes Length is 0 and the value of Total Path Attribute Length is
+ 0).
+
+ An UPDATE message can advertise at most one route, which may be
+ described by several path attributes. All path attributes contained
+ in a given UPDATE messages apply to the destinations carried in the
+ Network Layer Reachability Information field of the UPDATE message.
+
+ An UPDATE message can list multiple routes 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 been advertised.
+
+ An UPDATE message may advertise only routes to be withdrawn from
+ service, in which case it will not include path attributes or Network
+ Layer Reachability Information. Conversely, it may advertise only a
+ feasible route, in which case the WITHDRAWN ROUTES field need not be
+ present.
+
+4.4 KEEPALIVE Message Format
+
+ BGP does not use any transport protocol-based keep-alive mechanism to
+ determine if peers are reachable. Instead, KEEPALIVE messages are
+ exchanged between peers often enough as 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
+ MUST NOT be sent more frequently than one per second. An
+ implementation MAY adjust the rate at which it sends KEEPALIVE
+
+
+
+Rekhter & Li [Page 17]
+
+RFC 1771 BGP-4 March 1995
+
+
+ messages as a function of the Hold Time interval.
+
+ If the negotiated Hold Time interval is zero, then periodic KEEPALIVE
+ messages MUST NOT be sent.
+
+ KEEPALIVE message consists of only message header and has a length of
+ 19 octets.
+
+4.5 NOTIFICATION Message Format
+
+ A NOTIFICATION message is sent when an error condition is detected.
+ The BGP connection is closed immediately after sending it.
+
+ In addition to the fixed-size BGP header, the NOTIFICATION message
+ contains the following fields:
+
+ 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 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Error Code:
+
+ This 1-octet unsigned integer indicates the type of
+ NOTIFICATION. The following Error Codes have been defined:
+
+ Error Code Symbolic Name Reference
+
+ 1 Message Header Error Section 6.1
+
+ 2 OPEN Message Error Section 6.2
+
+ 3 UPDATE Message Error Section 6.3
+
+ 4 Hold Timer Expired Section 6.5
+
+ 5 Finite State Machine Error Section 6.6
+
+ 6 Cease Section 6.7
+
+ Error subcode:
+
+ 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.
+
+
+
+Rekhter & Li [Page 18]
+
+RFC 1771 BGP-4 March 1995
+
+
+ If no appropriate Error Subcode is defined, then a zero
+ (Unspecific) value is used for the Error Subcode field.
+
+ Message Header Error subcodes:
+
+ 1 - Connection Not Synchronized.
+ 2 - Bad Message Length.
+ 3 - Bad Message Type.
+
+ OPEN Message Error subcodes:
+
+ 1 - Unsupported Version Number.
+ 2 - Bad Peer AS.
+ 3 - Bad BGP Identifier. '
+ 4 - Unsupported Optional Parameter.
+ 5 - Authentication Failure.
+ 6 - Unacceptable Hold Time.
+
+ UPDATE Message Error subcodes:
+
+ 1 - Malformed Attribute List.
+ 2 - Unrecognized Well-known Attribute.
+ 3 - Missing Well-known Attribute.
+ 4 - Attribute Flags Error.
+ 5 - Attribute Length Error.
+ 6 - Invalid ORIGIN Attribute
+ 7 - AS Routing Loop.
+ 8 - Invalid NEXT_HOP Attribute.
+ 9 - Optional Attribute Error.
+ 10 - Invalid Network Field.
+ 11 - Malformed AS_PATH.
+
+ Data:
+
+ 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 Section 6 below for more
+ details.
+
+ Note that the length of the Data field can be determined from
+ the message Length field by the formula:
+
+ Message Length = 21 + Data Length
+
+ The minimum length of the NOTIFICATION message is 21 octets
+ (including message header).
+
+
+
+
+
+Rekhter & Li [Page 19]
+
+RFC 1771 BGP-4 March 1995
+
+
+5. Path Attributes
+
+ This section discusses the path attributes of the UPDATE message.
+
+ Path attributes fall into four separate categories:
+
+ 1. Well-known mandatory.
+ 2. Well-known discretionary.
+ 3. Optional transitive.
+ 4. Optional non-transitive.
+
+ Well-known attributes must be recognized by all BGP implementations.
+ Some of these attributes are mandatory and must be included in every
+ UPDATE message. Others are discretionary and may or may not be sent
+ in a particular UPDATE message.
+
+ All well-known attributes must be passed along (after proper
+ updating, if necessary) to other BGP peers.
+
+ In addition to well-known attributes, each path may 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 transitive optional attributes should be accepted. If a
+ path with unrecognized transitive optional attribute is accepted and
+ passed along to other BGP peers, then the unrecognized transitive
+ optional attribute of that path must 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 recognized transitive optional 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 is not
+ set back to 0 by the current AS. Unrecognized non-transitive optional
+ attributes must be quietly ignored and not passed along to other BGP
+ peers.
+
+ New transitive optional attributes may be attached to the path by the
+ originator or by any other AS in the path. If they are not attached
+ by the originator, the Partial bit in the Attribute Flags octet is
+ set to 1. The rules for attaching new non-transitive optional
+ attributes will depend on the nature of the specific attribute. The
+ documentation of each new non-transitive optional 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) may be updated (if appropriate)
+ by ASs in the path.
+
+
+
+
+
+Rekhter & Li [Page 20]
+
+RFC 1771 BGP-4 March 1995
+
+
+ The sender of an UPDATE message should order path attributes within
+ the UPDATE message in ascending order of attribute type. The
+ receiver of an UPDATE message must be prepared to handle path
+ attributes within the UPDATE message that are out of order.
+
+ The same attribute cannot appear more than once within the Path
+ Attributes field of a particular UPDATE message.
+
+5.1 Path Attribute Usage
+
+ The usage of each BGP path attributes is described in the following
+ clauses.
+
+5.1.1 ORIGIN
+
+ ORIGIN is a well-known mandatory attribute. The ORIGIN attribute
+ shall be generated by the autonomous system that originates the
+ associated routing information. It shall be included in the UPDATE
+ messages of all BGP speakers that choose to propagate this
+ information to other BGP speakers.
+
+5.1.2 AS_PATH
+
+ AS_PATH is a well-known mandatory attribute. 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.
+
+ When a BGP speaker propagates a route which it has learned from
+ another BGP speaker's UPDATE message, it shall modify the route's
+ AS_PATH attribute based on the location of the BGP speaker to which
+ the route will be sent:
+
+ a) When a given BGP speaker advertises the route to another BGP
+ speaker located in its own autonomous system, the advertising
+ speaker shall not modify the AS_PATH attribute associated with the
+ route.
+
+ b) When a given BGP speaker advertises the route to a BGP speaker
+ located in a neighboring autonomous system, then the advertising
+ speaker shall update the AS_PATH attribute as follows:
+
+ 1) if the first path segment of the AS_PATH is of type
+ AS_SEQUENCE, the local system shall prepend its own AS number
+ as the last element of the sequence (put it in the leftmost
+ position).
+
+
+
+
+
+Rekhter & Li [Page 21]
+
+RFC 1771 BGP-4 March 1995
+
+
+ 2) if the first path segment of the AS_PATH is of type AS_SET,
+ the local system shall prepend a new path segment of type
+ AS_SEQUENCE to the AS_PATH, including its own AS number in that
+ segment.
+
+ When a BGP speaker originates a route then:
+
+ a) the originating speaker shall include its own AS number in
+ the AS_PATH attribute of all UPDATE messages sent to BGP
+ speakers located in neighboring autonomous systems. (In this
+ case, the AS number of the originating speaker's autonomous
+ system will be the only entry in the AS_PATH attribute).
+
+ b) the originating speaker shall include an empty AS_PATH
+ attribute in all UPDATE messages sent to BGP speakers located
+ in its own autonomous system. (An empty AS_PATH attribute is
+ one whose length field contains the value zero).
+
+5.1.3 NEXT_HOP
+
+ The NEXT_HOP path attribute defines the IP address of the border
+ router that should be used as the next hop to the destinations listed
+ in the UPDATE message. If a border router belongs to the same AS as
+ its peer, then the peer is an internal border router. Otherwise, it
+ is an external border router. A BGP speaker can advertise any
+ internal border router as the next hop provided that the interface
+ associated with the IP address of this border router (as specified in
+ the NEXT_HOP path attribute) shares a common subnet with both the
+ local and remote BGP speakers. A BGP speaker can advertise any
+ external border router as the next hop, provided that the IP address
+ of this border router was learned from one of the BGP speaker's
+ peers, and the interface associated with the IP address of this
+ border router (as specified in the NEXT_HOP path attribute) shares a
+ common subnet with the local and remote BGP speakers. A BGP speaker
+ needs to be able to support disabling advertisement of external
+ border routers.
+
+ A BGP speaker must never advertise an address of a peer to that peer
+ as a NEXT_HOP, for a route that the speaker is originating. A BGP
+ speaker must never install a route with itself as the next hop.
+
+ When a BGP speaker advertises the route to a BGP speaker located in
+ its own autonomous system, the advertising speaker shall not modify
+ the NEXT_HOP attribute associated with the route. When a BGP speaker
+ receives the route via an internal link, it may forward packets to
+ the NEXT_HOP address if the address contained in the attribute is on
+ a common subnet with the local and remote BGP speakers.
+
+
+
+
+Rekhter & Li [Page 22]
+
+RFC 1771 BGP-4 March 1995
+
+
+5.1.4 MULTI_EXIT_DISC
+
+ The MULTI_EXIT_DISC attribute may be used on external (inter-AS)
+ links to discriminate among multiple exit or entry points to the same
+ neighboring AS. The value of the MULTI_EXIT_DISC attribute is a four
+ octet unsigned number which is called a metric. All other factors
+ being equal, the exit or entry point with lower metric should be
+ preferred. If received over external links, the MULTI_EXIT_DISC
+ attribute may be propagated over internal links to other BGP speakers
+ within the same AS. The MULTI_EXIT_DISC attribute is never
+ propagated to other BGP speakers in neighboring AS's.
+
+5.1.5 LOCAL_PREF
+
+ LOCAL_PREF is a well-known discretionary attribute that shall be
+ included in all UPDATE messages that a given BGP speaker sends to the
+ other BGP speakers located in its own autonomous system. A BGP
+ speaker shall calculate the degree of preference for each external
+ route and include the degree of preference when advertising a route
+ to its internal peers. The higher degree of preference should be
+ preferred. A BGP speaker shall use the degree of preference learned
+ via LOCAL_PREF in its decision process (see section 9.1.1).
+
+ A BGP speaker shall not include this attribute in UPDATE messages
+ that it sends to BGP speakers located in a neighboring autonomous
+ system. If it is contained in an UPDATE message that is received from
+ a BGP speaker which is not located in the same autonomous system as
+ the receiving speaker, then this attribute shall be ignored by the
+ receiving speaker.
+
+5.1.6 ATOMIC_AGGREGATE
+
+ ATOMIC_AGGREGATE is a well-known discretionary attribute. If a BGP
+ speaker, when presented with a set of overlapping routes from one of
+ its peers (see 9.1.4), selects the less specific route without
+ selecting the more specific one, then the local system shall attach
+ the ATOMIC_AGGREGATE attribute to the route when propagating it to
+ other BGP speakers (if that attribute is not already present in the
+ received less specific route). A BGP speaker that receives a route
+ with the ATOMIC_AGGREGATE attribute shall not remove the attribute
+ from the route when propagating it to other speakers. A BGP speaker
+ that receives a route with the ATOMIC_AGGREGATE attribute shall not
+ make any NLRI of that route more specific (as defined in 9.1.4) when
+ advertising this route to other BGP speakers. A BGP speaker that
+ receives a route with the ATOMIC_AGGREGATE attribute needs to be
+ cognizant of the fact that the actual path to destinations, as
+ specified in the NLRI of the route, while having the loop-free
+ property, may traverse ASs that are not listed in the AS_PATH
+
+
+
+Rekhter & Li [Page 23]
+
+RFC 1771 BGP-4 March 1995
+
+
+ attribute.
+
+5.1.7 AGGREGATOR
+
+ AGGREGATOR is an optional transitive attribute which may be included
+ in updates which are formed by aggregation (see Section 9.2.4.2). A
+ BGP speaker which performs route aggregation may add the AGGREGATOR
+ attribute which shall contain its own AS number and IP address.
+
+6. BGP Error Handling.
+
+ This section describes actions to be taken when errors are detected
+ while processing BGP messages.
+
+ When any of the conditions described here are detected, a
+ NOTIFICATION message with the indicated Error Code, Error Subcode,
+ and Data fields is sent, and the BGP connection is closed. If no
+ Error Subcode is specified, then a zero must be used.
+
+ The phrase "the BGP connection is closed" means that the transport
+ protocol connection has been closed and that all resources for that
+ BGP connection have been deallocated. Routing table entries
+ associated with the remote peer are marked as invalid. The fact that
+ the routes have become invalid is passed to other BGP peers before
+ the routes are deleted from the system.
+
+ Unless specified explicitly, the Data field of the NOTIFICATION
+ message that is sent to indicate an error is empty.
+
+6.1 Message Header error handling.
+
+ All errors detected while processing the Message Header are indicated
+ by sending the NOTIFICATION message with Error Code Message Header
+ Error. The Error Subcode elaborates on the specific nature of the
+ error.
+
+ The expected value of the Marker field of the message header is all
+ ones if the message type is OPEN. The expected value of the Marker
+ field for all other types of BGP messages determined based on the
+ presence of the Authentication Information Optional Parameter in the
+ BGP OPEN message and the actual authentication mechanism (if the
+ Authentication Information in the BGP OPEN message is present). If
+ the Marker field of the message header is not the expected one, then
+ a synchronization error has occurred and the Error Subcode is set to
+ Connection Not Synchronized.
+
+
+
+
+
+
+Rekhter & Li [Page 24]
+
+RFC 1771 BGP-4 March 1995
+
+
+ If the Length field of the message header is less than 19 or greater
+ than 4096, or if the Length field of an OPEN message is less than
+ the minimum length of the OPEN message, or if the Length field of an
+ UPDATE message is less than the minimum length of the UPDATE message,
+ or if the Length field of a KEEPALIVE message is not equal to 19, or
+ if the Length field of a NOTIFICATION message is less than the
+ minimum length of the NOTIFICATION message, then the Error Subcode is
+ set to Bad Message Length. The Data field contains the erroneous
+ Length field.
+
+ If the Type field of the message header is not recognized, then the
+ Error Subcode is set to Bad Message Type. The Data field contains
+ the erroneous Type field.
+
+6.2 OPEN message error handling.
+
+ All errors detected while processing the OPEN message are indicated
+ by sending the NOTIFICATION message with Error Code OPEN Message
+ Error. The Error Subcode elaborates on the specific nature of the
+ error.
+
+ If the version number contained in the Version field of the received
+ OPEN message is not supported, then the Error Subcode is 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).
+
+ If the Autonomous System field of the OPEN message is unacceptable,
+ then the Error Subcode is set to Bad Peer AS. The determination of
+ acceptable Autonomous System numbers is outside the scope of this
+ protocol.
+
+ If the Hold Time field of the OPEN message is unacceptable, then the
+ Error Subcode MUST be set to Unacceptable Hold Time. An
+ implementation MUST reject Hold Time values of one or two seconds.
+ An implementation MAY reject any proposed Hold Time. An
+ implementation which accepts a Hold Time MUST use the negotiated
+ value for the Hold Time.
+
+ If the BGP Identifier field of the OPEN message is syntactically
+ incorrect, then the Error Subcode is set to Bad BGP Identifier.
+ Syntactic correctness means that the BGP Identifier field represents
+ a valid IP host address.
+
+ If one of the Optional Parameters in the OPEN message is not
+ recognized, then the Error Subcode is set to Unsupported Optional
+ Parameters.
+
+
+
+Rekhter & Li [Page 25]
+
+RFC 1771 BGP-4 March 1995
+
+
+ If the OPEN message carries Authentication Information (as an
+ Optional Parameter), then the corresponding authentication procedure
+ is invoked. If the authentication procedure (based on Authentication
+ Code and Authentication Data) fails, then the Error Subcode is set to
+ Authentication Failure.
+
+6.3 UPDATE message error handling.
+
+ All errors detected while processing the UPDATE message are indicated
+ by sending the NOTIFICATION message with Error Code UPDATE Message
+ Error. The error subcode elaborates on the specific nature of the
+ error.
+
+ Error checking of an UPDATE message begins by examining the path
+ attributes. If the Unfeasible Routes Length or Total Attribute
+ Length is too large (i.e., if Unfeasible Routes Length + Total
+ Attribute Length + 23 exceeds the message Length), then the Error
+ Subcode is set to Malformed Attribute List.
+
+ If any recognized attribute has Attribute Flags that conflict with
+ the Attribute Type Code, then the Error Subcode is set to Attribute
+ Flags Error. The Data field contains the erroneous attribute (type,
+ length and value).
+
+ If any recognized attribute has Attribute Length that conflicts with
+ the expected length (based on the attribute type code), then the
+ Error Subcode is set to Attribute Length Error. The Data field
+ contains the erroneous attribute (type, length and value).
+
+ If any of the mandatory well-known attributes are not present, then
+ the Error Subcode is set to Missing Well-known Attribute. The Data
+ field contains the Attribute Type Code of the missing well-known
+ attribute.
+
+ If any of the mandatory well-known attributes are not recognized,
+ then the Error Subcode is set to Unrecognized Well-known Attribute.
+ The Data field contains the unrecognized attribute (type, length and
+ value).
+
+ If the ORIGIN attribute has an undefined value, then the Error
+ Subcode is set to Invalid Origin Attribute. The Data field contains
+ the unrecognized attribute (type, length and value).
+
+ If the NEXT_HOP attribute field is syntactically incorrect, then the
+ Error Subcode is set to Invalid NEXT_HOP Attribute. The Data field
+ contains the incorrect attribute (type, length and value). Syntactic
+ correctness means that the NEXT_HOP attribute represents a valid IP
+ host address. Semantic correctness applies only to the external BGP
+
+
+
+Rekhter & Li [Page 26]
+
+RFC 1771 BGP-4 March 1995
+
+
+ links. It means that the interface associated with the IP address, as
+ specified in the NEXT_HOP attribute, shares a common subnet with the
+ receiving BGP speaker and is not the IP address of the receiving BGP
+ speaker. If the NEXT_HOP attribute is semantically incorrect, the
+ error should be logged, and the the route should be ignored. In this
+ case, no NOTIFICATION message should be sent.
+
+ The AS_PATH attribute is checked for syntactic correctness. If the
+ path is syntactically incorrect, then the Error Subcode is set to
+ Malformed AS_PATH.
+
+ If an optional attribute is recognized, then the value of this
+ attribute is checked. If an error is detected, the attribute is
+ discarded, and the Error Subcode is set to Optional Attribute Error.
+ The Data field contains the attribute (type, length and value).
+
+ If any attribute appears more than once in the UPDATE message, then
+ the Error Subcode is set to Malformed Attribute List.
+
+ The NLRI field in the UPDATE message is checked for syntactic
+ validity. If the field is syntactically incorrect, then the Error
+ Subcode is set to Invalid Network Field.
+
+6.4 NOTIFICATION message error handling.
+
+ If a peer sends a NOTIFICATION message, and there is an error in that
+ message, there is unfortunately no means of reporting this error via
+ a subsequent NOTIFICATION message. Any such error, such as an
+ unrecognized Error Code or Error Subcode, should 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.
+
+6.5 Hold Timer Expired error handling.
+
+ If a system does not receive successive KEEPALIVE and/or UPDATE
+ and/or NOTIFICATION messages within the period specified in the Hold
+ Time field of the OPEN message, then the NOTIFICATION message with
+ Hold Timer Expired Error Code must be sent and the BGP connection
+ closed.
+
+6.6 Finite State Machine error handling.
+
+ Any error detected by the BGP Finite State Machine (e.g., receipt of
+ an unexpected event) is indicated by sending the NOTIFICATION message
+ with Error Code Finite State Machine Error.
+
+
+
+
+
+Rekhter & Li [Page 27]
+
+RFC 1771 BGP-4 March 1995
+
+
+6.7 Cease.
+
+ In absence of any fatal errors (that are indicated in this section),
+ a BGP peer may choose at any given time to close its BGP connection
+ by sending the NOTIFICATION message with Error Code Cease. However,
+ the Cease NOTIFICATION message must not be used when a fatal error
+ indicated by this section does exist.
+
+6.8 Connection collision detection.
+
+ If a pair of BGP speakers try simultaneously to establish a TCP
+ connection to each other, then two parallel connections between this
+ pair of speakers might well be formed. We refer to this situation as
+ connection collision. Clearly, one of these connections must be
+ closed.
+
+ Based on the value of the BGP Identifier a convention is established
+ for detecting which BGP connection is to be preserved when a
+ collision does occur. 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.
+
+ Upon receipt of an OPEN message, the local system must examine all of
+ its connections that are in the OpenConfirm state. A BGP speaker may
+ 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, then the local
+ system performs the following collision resolution procedure:
+
+ 1. The BGP Identifier of the local system is compared to the BGP
+ Identifier of the remote system (as specified in the OPEN
+ message).
+
+ 2. If the value of the local BGP Identifier is less than the
+ remote one, the local system closes BGP connection that already
+ exists (the one that is already in the OpenConfirm state), and
+ accepts BGP connection initiated by the remote system.
+
+ 3. Otherwise, the local system closes 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).
+
+ Comparing BGP Identifiers is done by treating them as (4-octet
+ long) unsigned integers.
+
+
+
+
+Rekhter & Li [Page 28]
+
+RFC 1771 BGP-4 March 1995
+
+
+ A connection collision with an existing BGP connection that is in
+ Established states causes unconditional closing of the newly
+ created connection. Note that a connection collision cannot be
+ detected with connections that are in Idle, or Connect, or Active
+ states.
+
+ Closing the BGP connection (that results from the collision
+ resolution procedure) is accomplished by sending the NOTIFICATION
+ message with the Error Code Cease.
+
+7. BGP Version Negotiation.
+
+ BGP speakers may negotiate the version of the protocol by making
+ multiple attempts to open a BGP connection, starting with the highest
+ version number each 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 that
+ 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 must retain the format of the OPEN and NOTIFICATION
+ messages.
+
+8. BGP Finite State machine.
+
+ This section specifies BGP operation in terms of a Finite State
+ Machine (FSM). Following is a brief summary and overview of BGP
+ operations by state as determined by this FSM. A condensed version
+ of the BGP FSM is found in Appendix 1.
+
+ Initially BGP is in the Idle state.
+
+ Idle state:
+
+ In this state BGP refuses all incoming BGP connections. No
+ resources are allocated to the peer. In response to the Start
+ event (initiated by either system or operator) the local system
+ initializes all BGP resources, starts the ConnectRetry timer,
+ initiates a transport connection to other BGP peer, while
+ listening for connection that may be initiated by the remote
+ BGP peer, and changes its state to Connect. The exact value of
+ the ConnectRetry timer is a local matter, but should be
+ sufficiently large to allow TCP initialization.
+
+ If a BGP speaker detects an error, it shuts down the connection
+ and changes its state to Idle. Getting out of the Idle state
+
+
+
+Rekhter & Li [Page 29]
+
+RFC 1771 BGP-4 March 1995
+
+
+ requires generation of the Start event. If such an event is
+ generated automatically, then persistent BGP errors may result
+ in persistent flapping of the speaker. To avoid such a
+ condition it is recommended that Start events should not be
+ generated immediately for a peer that was previously
+ transitioned to Idle due to an error. For a peer that was
+ previously transitioned to Idle due to an error, the time
+ between consecutive generation of Start events, if such events
+ are generated automatically, shall exponentially increase. The
+ value of the initial timer shall be 60 seconds. The time shall
+ be doubled for each consecutive retry.
+
+ Any other event received in the Idle state is ignored.
+
+ Connect state:
+
+ In this state BGP is waiting for the transport protocol
+ connection to be completed.
+
+ If the transport protocol connection succeeds, the local system
+ clears the ConnectRetry timer, completes initialization, sends
+ an OPEN message to its peer, and changes its state to OpenSent.
+
+ If the transport protocol connect fails (e.g., retransmission
+ timeout), the local system restarts the ConnectRetry timer,
+ continues to listen for a connection that may be initiated by
+ the remote BGP peer, and changes its state to Active state.
+
+ In response to the ConnectRetry timer expired event, the local
+ system restarts the ConnectRetry timer, initiates a transport
+ connection to other BGP peer, continues to listen for a
+ connection that may be initiated by the remote BGP peer, and
+ stays in the Connect state.
+
+ Start event is ignored in the Active state.
+
+ In response to any other event (initiated by either system or
+ operator), the local system releases all BGP resources
+ associated with this connection and changes its state to Idle.
+
+ Active state:
+
+ In this state BGP is trying to acquire a peer by initiating a
+ transport protocol connection.
+
+ If the transport protocol connection succeeds, the local system
+ clears the ConnectRetry timer, completes initialization, sends
+ an OPEN message to its peer, sets its Hold Timer to a large
+
+
+
+Rekhter & Li [Page 30]
+
+RFC 1771 BGP-4 March 1995
+
+
+ value, and changes its state to OpenSent. A Hold Timer value
+ of 4 minutes is suggested.
+
+ In response to the ConnectRetry timer expired event, the local
+ system restarts the ConnectRetry timer, initiates a transport
+ connection to other BGP peer, continues to listen for a
+ connection that may be initiated by the remote BGP peer, and
+ changes its state to Connect.
+
+ If the local system detects that a remote peer is trying to
+ establish BGP connection to it, and the IP address of the
+ remote peer is not an expected one, the local system restarts
+ the ConnectRetry timer, rejects the attempted connection,
+ continues to listen for a connection that may be initiated by
+ the remote BGP peer, and stays in the Active state.
+
+ Start event is ignored in the Active state.
+
+ In response to any other event (initiated by either system or
+ operator), the local system releases all BGP resources
+ associated with this connection and changes its state to Idle.
+
+ OpenSent state:
+
+ In this state BGP waits for an OPEN message from its peer.
+ When an OPEN message is received, all fields are checked for
+ correctness. If the BGP message header checking or OPEN
+ message checking detects an error (see Section 6.2), or a
+ connection collision (see Section 6.8) the local system sends a
+ NOTIFICATION message and changes its state to Idle.
+
+ If there are no errors in the OPEN message, BGP sends a
+ KEEPALIVE message and sets a KeepAlive timer. The Hold Timer,
+ which was originally set to a large value (see above), is
+ replaced with the negotiated Hold Time value (see section 4.2).
+ If the negotiated Hold Time value is zero, then the Hold Time
+ timer and KeepAlive timers 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 "external". (This will effect UPDATE
+ processing as described below.) Finally, the state is changed
+ to OpenConfirm.
+
+ If a disconnect notification is received from the underlying
+ transport protocol, the local system closes the BGP connection,
+ restarts the ConnectRetry timer, while continue listening for
+ connection that may be initiated by the remote BGP peer, and
+ goes into the Active state.
+
+
+
+Rekhter & Li [Page 31]
+
+RFC 1771 BGP-4 March 1995
+
+
+ If the Hold Timer expires, the local system sends NOTIFICATION
+ message with error code Hold Timer Expired and changes its
+ state to Idle.
+
+ In response to the Stop event (initiated by either system or
+ operator) the local system sends NOTIFICATION message with
+ Error Code Cease and changes its state to Idle.
+
+ Start event is ignored in the OpenSent state.
+
+ In response to any other event the local system sends
+ NOTIFICATION message with Error Code Finite State Machine Error
+ and changes its state to Idle.
+
+ Whenever BGP changes its state from OpenSent to Idle, it closes
+ the BGP (and transport-level) connection and releases all
+ resources associated with that connection.
+
+ OpenConfirm state:
+
+ In this state BGP waits for a KEEPALIVE or NOTIFICATION
+ message.
+
+ If the local system receives a KEEPALIVE message, it changes
+ its state to Established.
+
+ If the Hold Timer expires before a KEEPALIVE message is
+ received, the local system sends NOTIFICATION message with
+ error code Hold Timer Expired and changes its state to Idle.
+
+ If the local system receives a NOTIFICATION message, it changes
+ its state to Idle.
+
+ If the KeepAlive timer expires, the local system sends a
+ KEEPALIVE message and restarts its KeepAlive timer.
+
+ If a disconnect notification is received from the underlying
+ transport protocol, the local system changes its state to Idle.
+
+ In response to the Stop event (initiated by either system or
+ operator) the local system sends NOTIFICATION message with
+ Error Code Cease and changes its state to Idle.
+
+ Start event is ignored in the OpenConfirm state.
+
+ In response to any other event the local system sends
+ NOTIFICATION message with Error Code Finite State Machine Error
+ and changes its state to Idle.
+
+
+
+Rekhter & Li [Page 32]
+
+RFC 1771 BGP-4 March 1995
+
+
+ Whenever BGP changes its state from OpenConfirm to Idle, it
+ closes the BGP (and transport-level) connection and releases
+ all resources associated with that connection.
+
+ Established state:
+
+ In the Established state BGP can exchange UPDATE, NOTIFICATION,
+ and KEEPALIVE messages with its peer.
+
+ If the local system receives an UPDATE or KEEPALIVE message, it
+ restarts its Hold Timer, if the negotiated Hold Time value is
+ non-zero.
+
+ If the local system receives a NOTIFICATION message, it changes
+ its state to Idle.
+
+ If the local system receives an UPDATE message and the UPDATE
+ message error handling procedure (see Section 6.3) detects an
+ error, the local system sends a NOTIFICATION message and
+ changes its state to Idle.
+
+ If a disconnect notification is received from the underlying
+ transport protocol, the local system changes its state to Idle.
+
+ If the Hold Timer expires, the local system sends a
+ NOTIFICATION message with Error Code Hold Timer Expired and
+ changes its state to Idle.
+
+ If the KeepAlive timer expires, the local system sends a
+ KEEPALIVE message and restarts its KeepAlive timer.
+
+ Each time the local system sends a KEEPALIVE or UPDATE message,
+ it restarts its KeepAlive timer, unless the negotiated Hold
+ Time value is zero.
+
+ In response to the Stop event (initiated by either system or
+ operator), the local system sends a NOTIFICATION message with
+ Error Code Cease and changes its state to Idle.
+
+ Start event is ignored in the Established state.
+
+ In response to any other event, the local system sends
+ NOTIFICATION message with Error Code Finite State Machine Error
+ and changes its state to Idle.
+
+ Whenever BGP changes its state from Established to Idle, it
+ closes the BGP (and transport-level) connection, releases all
+ resources associated with that connection, and deletes all
+
+
+
+Rekhter & Li [Page 33]
+
+RFC 1771 BGP-4 March 1995
+
+
+ routes derived from that connection.
+
+9. UPDATE Message Handling
+
+ An UPDATE message may be received only in the Established state.
+ When an UPDATE message is received, each field is checked for
+ validity as specified in Section 6.3.
+
+ If an optional non-transitive attribute is unrecognized, it is
+ quietly ignored. 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.
+
+ 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.
+
+ If the UPDATE message contains a non-empty WITHDRAWN ROUTES field,
+ the previously advertised routes whose destinations (expressed as IP
+ prefixes) contained in this field shall be removed from the Adj-RIB-
+ In. This BGP speaker shall run its Decision Process since the
+ previously advertised route is not longer available for use.
+
+ If the UPDATE message contains a feasible route, it shall be placed
+ in the appropriate Adj-RIB-In, and the following additional actions
+ shall be taken:
+
+ i) If its Network Layer Reachability Information (NLRI) is identical
+ to the one of a route currently stored in the Adj-RIB-In, then the
+ new route shall replace the older route in the Adj-RIB-In, thus
+ implicitly withdrawing the older route from service. The BGP speaker
+ shall run its Decision Process since the older route is no longer
+ available for use.
+
+ ii) If the new route is an overlapping route that is included (see
+ 9.1.4) in an earlier route contained in the Adj-RIB-In, the BGP
+ speaker shall run its Decision Process since the more specific route
+ has implicitly made a portion of the less specific route unavailable
+ for use.
+
+ iii) If the new route has identical path attributes to an earlier
+ route contained in the Adj-RIB-In, and is more specific (see 9.1.4)
+ than the earlier route, no further actions are necessary.
+
+ iv) If the new route has NLRI that is not present in any of the
+ routes currently stored in the Adj-RIB-In, then the new route shall
+
+
+
+Rekhter & Li [Page 34]
+
+RFC 1771 BGP-4 March 1995
+
+
+ be placed in the Adj-RIB-In. The BGP speaker shall run its Decision
+ Process.
+
+ v) If the new route is an overlapping route that is less specific
+ (see 9.1.4) than an earlier route contained in the Adj-RIB-In, the
+ BGP speaker shall run its Decision Process on the set of destinations
+ described only by the less specific route.
+
+9.1 Decision Process
+
+ 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-RIB-In. The output of the Decision
+ Process is the set of routes that will be advertised to all peers;
+ the selected routes will be stored in the local speaker's Adj-RIB-
+ Out.
+
+ The selection process is formalized by defining a function that takes
+ the attribute of a given route as an argument and returns a non-
+ negative integer denoting the degree of preference for the route.
+ The function that calculates the degree of preference for a given
+ route shall not use as its inputs any of the following: the
+ existence of other routes, the non-existence of other routes, or the
+ path attributes of other routes. Route selection then consists of
+ 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.
+
+ The Decision Process operates on routes contained in each Adj-RIB-In,
+ and is responsible for:
+
+ - selection of routes to be advertised to BGP speakers located in
+ the local speaker's autonomous system
+
+ - selection of routes to be advertised to BGP speakers located in
+ neighboring autonomous systems
+
+ - route aggregation and route information reduction
+
+ The Decision Process takes place in three distinct phases, each
+ triggered by a different event:
+
+ a) Phase 1 is responsible for calculating the degree of preference
+ for each route received from a BGP speaker located in a
+ neighboring autonomous system, and for advertising to the other
+ BGP speakers in the local autonomous system the routes that have
+ the highest degree of preference for each distinct destination.
+
+
+
+
+Rekhter & Li [Page 35]
+
+RFC 1771 BGP-4 March 1995
+
+
+ b) 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 appropriate Loc-RIB.
+
+ c) Phase 3 is invoked after the Loc-RIB has been modified. It is
+ responsible for disseminating routes in the Loc-RIB to each peer
+ located in a neighboring autonomous system, according to the
+ policies contained in the PIB. Route aggregation and information
+ reduction can optionally be performed within this phase.
+
+9.1.1 Phase 1: Calculation of Degree of Preference
+
+ The Phase 1 decision function shall be invoked whenever the local BGP
+ speaker receives an UPDATE message from a peer located in a
+ neighboring autonomous system that advertises a new route, a
+ replacement route, or a withdrawn route.
+
+ The Phase 1 decision function is a separate process which completes
+ when it has no further work to do.
+
+ The Phase 1 decision function shall lock an Adj-RIB-In prior to
+ operating on any route contained within it, and shall unlock it after
+ operating on all new or unfeasible routes contained within it.
+
+ For each newly received or replacement feasible route, the local BGP
+ speaker shall determine a degree of preference. If the route is
+ learned from a BGP speaker in the local autonomous system, either the
+ value of the LOCAL_PREF attribute shall be taken as the degree of
+ preference, or the local system shall compute the degree of
+ preference of the route based on preconfigured policy information. If
+ the route is learned from a BGP speaker in a neighboring autonomous
+ system, then the degree of preference shall be computed based on
+ preconfigured policy information. The exact nature of this policy
+ information and the computation involved is a local matter. The
+ local speaker shall then run the internal update process of 9.2.1 to
+ select and advertise the most preferable route.
+
+9.1.2 Phase 2: Route Selection
+
+ The Phase 2 decision function shall be 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 shall consider all
+ routes that are present in the Adj-RIBs-In, including those received
+ from BGP speakers located in its own autonomous system and those
+ received from BGP speakers located in neighboring autonomous systems.
+
+
+
+
+
+Rekhter & Li [Page 36]
+
+RFC 1771 BGP-4 March 1995
+
+
+ The Phase 2 decision function shall be blocked from running while the
+ Phase 3 decision function is in process. The Phase 2 function shall
+ lock all Adj-RIBs-In prior to commencing its function, and shall
+ unlock them on completion.
+
+ If the NEXT_HOP attribute of a BGP route depicts an address to which
+ the local BGP speaker doesn't have a route in its Loc-RIB, the BGP
+ route SHOULD be excluded from the Phase 2 decision function.
+
+ For each set of destinations for which a feasible route exists in the
+ Adj-RIBs-In, the local BGP speaker shall identify the route that has:
+
+ a) the highest degree of preference of any route to the same set
+ of destinations, or
+
+ b) is the only route to that destination, or
+
+ c) is selected as a result of the Phase 2 tie breaking rules
+ specified in 9.1.2.1.
+
+ The local speaker SHALL then install that route in the Loc-RIB,
+ replacing any route to the same destination that is currently being
+ held in the Loc-RIB. The local speaker MUST determine the immediate
+ next hop to the address depicted by the NEXT_HOP attribute of the
+ selected route by performing a lookup in the IGP and selecting one of
+ the possible paths in the IGP. This immediate next hop MUST be used
+ when installing the selected route in the Loc-RIB. If the route to
+ the address depicted by the NEXT_HOP attribute changes such that the
+ immediate next hop changes, route selection should be recalculated as
+ specified above.
+
+ Unfeasible routes shall be removed from the Loc-RIB, and
+ corresponding unfeasible routes shall then be removed from the Adj-
+ RIBs-In.
+
+9.1.2.1 Breaking Ties (Phase 2)
+
+ 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 equally
+ preferable routes, both those received from BGP speakers located in
+ neighboring autonomous systems, and those received from other BGP
+ speakers located in the local speaker's autonomous system.
+
+ 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
+
+
+
+Rekhter & Li [Page 37]
+
+RFC 1771 BGP-4 March 1995
+
+
+ NEXT_HOP attribute of the route. Ties shall be broken according to
+ the following algorithm:
+
+ a) If the local system is configured to take into account
+ MULTI_EXIT_DISC, and the candidate routes differ in their
+ MULTI_EXIT_DISC attribute, select the route that has the lowest
+ value of the MULTI_EXIT_DISC attribute.
+
+ b) Otherwise, select the route that has the lowest cost (interior
+ distance) to the entity depicted by the NEXT_HOP attribute of the
+ route. If there are several routes with the same cost, then the
+ tie-breaking shall be broken as follows:
+
+ - if at least one of the candidate routes was advertised by the
+ BGP speaker in a neighboring autonomous system, select the
+ route that was advertised by the BGP speaker in a neighboring
+ autonomous system whose BGP Identifier has the lowest value
+ among all other BGP speakers in neighboring autonomous systems;
+
+ - otherwise, select the route that was advertised by the BGP
+ speaker whose BGP Identifier has the lowest value.
+
+9.1.3 Phase 3: Route Dissemination
+
+ The Phase 3 decision function shall be invoked on completion of Phase
+ 2, or when any of the following events occur:
+
+ a) when routes in a Loc-RIB to local destinations have changed
+
+ b) when locally generated routes learned by means outside of BGP
+ have changed
+
+ c) when a new BGP speaker - BGP speaker connection has been
+ established
+
+ The Phase 3 function is a separate process which completes when it
+ has no further work to do. The Phase 3 Routing Decision function
+ shall be blocked from running while the Phase 2 decision function is
+ in process.
+
+ All routes in the Loc-RIB shall be processed into a corresponding
+ entry in the associated Adj-RIBs-Out. Route aggregation and
+ information reduction techniques (see 9.2.4.1) may optionally be
+ applied.
+
+ For the benefit of future support of inter-AS multicast capabilities,
+ a BGP speaker that participates in inter-AS multicast routing shall
+ advertise a route it receives from one of its external peers and if
+
+
+
+Rekhter & Li [Page 38]
+
+RFC 1771 BGP-4 March 1995
+
+
+ it installs it in its Loc-RIB, it shall advertise it back to the peer
+ from which the route was received. For a BGP speaker that does not
+ participate in inter-AS multicast routing such an advertisement is
+ optional. When doing such an advertisement, the NEXT_HOP attribute
+ should be set to the address of the peer. An implementation may also
+ optimize such an advertisement by truncating information in the
+ AS_PATH attribute to include only its own AS number and that of the
+ peer that advertised the route (such truncation requires the ORIGIN
+ attribute to be set to INCOMPLETE). In addition an implementation is
+ not required to pass optional or discretionary path attributes with
+ such an advertisement.
+
+ When the updating of the Adj-RIBs-Out and the Forwarding Information
+ Base (FIB) is complete, the local BGP speaker shall run the external
+ update process of 9.2.2.
+
+9.1.4 Overlapping Routes
+
+ 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. Since 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
+ shorted prefix); similarly, a route describing a larger set of
+ destinations (a shorter prefix) is said to be less specific than a
+ route describing a smaller set of destinations (a longer prefix).
+
+ The precedence relationship effectively decomposes less specific
+ routes into two parts:
+
+ - a set of destinations described only by the less specific
+ route, and
+
+ - a set of destinations described by the overlap of the less
+ specific and the more specific routes
+
+ When overlapping routes are present in the same Adj-RIB-In, the more
+ specific route shall take precedence, in order from more specific to
+ least specific.
+
+ 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.
+
+
+
+
+Rekhter & Li [Page 39]
+
+RFC 1771 BGP-4 March 1995
+
+
+ If a BGP speaker receives overlapping routes, the Decision Process
+ shall take into account the semantics of the overlapping routes. In
+ particular, if a BGP speaker accepts the less specific route while
+ rejecting the more specific route from the same peer, then the
+ destinations represented by the overlap may not forward along the ASs
+ listed in the AS_PATH attribute of that route. Therefore, a BGP
+ speaker has the following choices:
+
+ a) Install both the less and the more specific routes
+
+ b) Install the more specific route only
+
+ c) Install the non-overlapping part of the less specific
+ route only (that implies de-aggregation)
+
+ d) Aggregate the two routes and install the aggregated route
+
+ e) Install the less specific route only
+
+ f) Install neither route
+
+ If a BGP speaker chooses e), then it should add ATOMIC_AGGREGATE
+ attribute to the route. A route that carries ATOMIC_AGGREGATE
+ attribute can not be de-aggregated. That is, the NLRI of this route
+ can not be made more specific. Forwarding along such a route does
+ not guarantee that IP packets will actually traverse only ASs listed
+ in the AS_PATH attribute of the route. If a BGP speaker chooses a),
+ it must not advertise the more general route without the more
+ specific route.
+
+9.2 Update-Send Process
+
+ The Update-Send process is responsible for advertising UPDATE
+ messages to all peers. For example, 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.
+ rules for information exchange between BGP speakers located in
+ different autonomous systems are given in 9.2.2; rules for
+ information exchange between BGP speakers located in the same
+ autonomous system are given in 9.2.1.
+
+ Distribution of routing information between a set of BGP speakers,
+ all of which are located in the same autonomous system, is referred
+ to as internal distribution.
+
+
+
+
+
+
+
+Rekhter & Li [Page 40]
+
+RFC 1771 BGP-4 March 1995
+
+
+9.2.1 Internal Updates
+
+ The Internal update process is concerned with the distribution of
+ routing information to BGP speakers located in the local speaker's
+ autonomous system.
+
+ When a BGP speaker receives an UPDATE message from another BGP
+ speaker located in its own autonomous system, the receiving BGP
+ speaker shall not re-distribute the routing information contained in
+ that UPDATE message to other BGP speakers located in its own
+ autonomous system.
+
+ When a BGP speaker receives a new route from a BGP speaker in a
+ neighboring autonomous system, it shall advertise that route to all
+ other BGP speakers in its autonomous system by means of an UPDATE
+ message if any of the following conditions occur:
+
+ 1) the degree of preference assigned to the newly received route
+ by the local BGP speaker is higher than the degree of preference
+ that the local speaker has assigned to other routes that have been
+ received from BGP speakers in neighboring autonomous systems, or
+
+ 2) there are no other routes that have been received from BGP
+ speakers in neighboring autonomous systems, or
+
+ 3) the newly received route is selected as a result of breaking a
+ tie between several routes which have the highest degree of
+ preference, and the same destination (the tie-breaking procedure
+ is specified in 9.2.1.1).
+
+ When a BGP speaker receives an UPDATE message with a non-empty
+ WITHDRAWN ROUTES field, it shall remove from its Adj-RIB-In all
+ routes whose destinations was carried in this field (as IP prefixes).
+ The speaker shall take the following additional steps:
+
+ 1) if the corresponding feasible route had not been previously
+ advertised, then no further action is necessary
+
+ 2) if the corresponding feasible route had been previously
+ advertised, then:
+
+ i) if a new route is selected for advertisement that has the
+ same Network Layer Reachability Information as the unfeasible
+ routes, then the local BGP speaker shall advertise the
+ replacement route
+
+ ii) if a replacement route is not available for advertisement,
+ then the BGP speaker shall include the destinations of the
+
+
+
+Rekhter & Li [Page 41]
+
+RFC 1771 BGP-4 March 1995
+
+
+ unfeasible route (in form of IP prefixes) in the WITHDRAWN
+ ROUTES field of an UPDATE message, and shall send this message
+ to each peer to whom it had previously advertised the
+ corresponding feasible route.
+
+ All feasible routes which are advertised shall be placed in the
+ appropriate Adj-RIBs-Out, and all unfeasible routes which are
+ advertised shall be removed from the Adj-RIBs-Out.
+
+9.2.1.1 Breaking Ties (Internal Updates)
+
+ If a local BGP speaker has connections to several BGP speakers in
+ neighboring autonomous systems, there will be multiple Adj-RIBs-In
+ associated with these peers. These Adj-RIBs-In might contain several
+ equally preferable routes to the same destination, all of which were
+ advertised by BGP speakers located in neighboring autonomous systems.
+ The local BGP speaker shall select one of these routes according to
+ the following rules:
+
+ a) If the candidate route differ only in their NEXT_HOP and
+ MULTI_EXIT_DISC attributes, and the local system is configured to
+ take into account MULTI_EXIT_DISC attribute, select the routes
+ that has the lowest value of the MULTI_EXIT_DISC attribute.
+
+ b) If the local system can ascertain the cost of a path to the
+ entity depicted by the NEXT_HOP attribute of the candidate route,
+ select the route with the lowest cost.
+
+ c) In all other cases, select the route that was advertised by the
+ BGP speaker whose BGP Identifier has the lowest value.
+
+9.2.2 External Updates
+
+ The external update process is concerned with the distribution of
+ routing information to BGP speakers located in neighboring autonomous
+ systems. As part of Phase 3 route selection process, the BGP speaker
+ has updated its Adj-RIBs-Out and its Forwarding Table. All newly
+ installed routes and all newly unfeasible routes for which there is
+ no replacement route shall be advertised to BGP speakers located in
+ neighboring autonomous systems by means of UPDATE message.
+
+ Any routes in the Loc-RIB marked as unfeasible shall be removed.
+ Changes to the reachable destinations within its own autonomous
+ system shall also be advertised in an UPDATE message.
+
+
+
+
+
+
+
+Rekhter & Li [Page 42]
+
+RFC 1771 BGP-4 March 1995
+
+
+9.2.3 Controlling Routing Traffic Overhead
+
+ 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.
+
+9.2.3.1 Frequency of Route Advertisement
+
+ The parameter MinRouteAdvertisementInterval determines the minimum
+ amount of time that must elapse between advertisement of routes to a
+ particular destination from a single BGP speaker. This rate limiting
+ procedure applies on a per-destination basis, although the value of
+ MinRouteAdvertisementInterval is set on a per BGP peer basis.
+
+ Two UPDATE messages sent from a single BGP speaker that advertise
+ feasible routes to some common set of destinations received from BGP
+ speakers in neighboring autonomous systems must be separated by at
+ least MinRouteAdvertisementInterval. Clearly, this can only be
+ achieved precisely by keeping a separate timer for each common set of
+ destinations. This would be unwarranted overhead. Any technique which
+ ensures that the interval between two UPDATE messages sent from a
+ single BGP speaker that advertise feasible routes to some common set
+ of destinations received from BGP speakers in neighboring autonomous
+ systems will be at least MinRouteAdvertisementInterval, and will also
+ ensure a constant upper bound on the interval is acceptable.
+
+ Since fast convergence is needed within an autonomous system, this
+ procedure does not apply for routes receives from other BGP speakers
+ in the same autonomous system. To avoid long-lived black holes, the
+ procedure does not apply to the explicit withdrawal of unfeasible
+ routes (that is, routes whose destinations (expressed as IP prefixes)
+ are listed in the WITHDRAWN ROUTES field of an UPDATE message).
+
+ 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 MinRouteAdvertisementInterval,
+ the last route selected shall be advertised at the end of
+ MinRouteAdvertisementInterval.
+
+9.2.3.2 Frequency of Route Origination
+
+ The parameter MinASOriginationInterval 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.
+
+
+
+
+Rekhter & Li [Page 43]
+
+RFC 1771 BGP-4 March 1995
+
+
+9.2.3.3 Jitter
+
+ To minimize the likelihood that the distribution of BGP messages by a
+ given BGP speaker will contain peaks, jitter should be applied to the
+ timers associated with MinASOriginationInterval, Keepalive, and
+ MinRouteAdvertisementInterval. A given BGP speaker shall apply the
+ same jitter to each of these quantities regardless of the
+ destinations to which the updates are being sent; that is, jitter
+ will not be applied on a "per peer" basis.
+
+ The amount of jitter to be introduced shall 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.
+
+9.2.4 Efficient Organization of Routing Information
+
+ Having selected the routing information which it will advertise, a
+ BGP speaker may avail itself of several methods to organize this
+ information in an efficient manner.
+
+9.2.4.1 Information Reduction
+
+ 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.
+
+ The Decision Process may optionally reduce the amount of information
+ that it will place in the Adj-RIBs-Out by any of the following
+ methods:
+
+ a) 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.
+
+ b) AS_PATHs:
+
+ AS path information can be represented as ordered AS_SEQUENCEs or
+ unordered AS_SETs. AS_SETs are used in the route aggregation
+ algorithm described in 9.2.4.2. They reduce the size of the
+ AS_PATH information by listing each AS number only once,
+ regardless of how many times it may have appeared in multiple
+ AS_PATHs that were aggregated.
+
+
+
+
+
+Rekhter & Li [Page 44]
+
+RFC 1771 BGP-4 March 1995
+
+
+ An AS_SET implies that the destinations listed in the NLRI can be
+ reached through paths that traverse at least some of the
+ constituent autonomous systems. AS_SETs provide sufficient
+ information to avoid routing information looping; however their
+ use may prune potentially feasible paths, since such paths are no
+ longer listed individually as in the form of AS_SEQUENCEs. In
+ practice this is not likely to be a problem, since once an IP
+ packet arrives at the edge of a group of autonomous systems, the
+ BGP speaker at that point is likely to have more detailed path
+ information and can distinguish individual paths to destinations.
+
+9.2.4.2 Aggregating Routing Information
+
+ 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.
+
+ 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
+ like type and to the Network Layer Reachability Information.
+
+ Routes that have the following attributes shall not be aggregated
+ unless the corresponding attributes of each route are identical:
+ MULTI_EXIT_DISC, NEXT_HOP.
+
+ Path attributes that have different type codes can not be aggregated
+ together. Path of the same type code may be aggregated, according to
+ the following rules:
+
+ ORIGIN attribute: If at least one route among routes that are
+ aggregated has ORIGIN with the value INCOMPLETE, then the
+ aggregated route must 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 must have the origin attribute with the value EGP. In all
+ other case the value of the ORIGIN attribute of the aggregated
+ route is INTERNAL.
+
+ AS_PATH attribute: If routes to be aggregated have identical
+ AS_PATH attributes, then the aggregated route has the same AS_PATH
+ attribute as each individual route.
+
+ For the purpose of aggregating AS_PATH attributes we model each AS
+ within the AS_PATH attribute as a tuple <type, value>, where
+ "type" identifies a type of the path segment the AS belongs to
+
+
+
+Rekhter & Li [Page 45]
+
+RFC 1771 BGP-4 March 1995
+
+
+ (e.g. AS_SEQUENCE, AS_SET), and "value" is the AS number. If the
+ routes to be aggregated have different AS_PATH attributes, then
+ the aggregated AS_PATH attribute shall satisfy all of the
+ following conditions:
+
+ - all tuples of the type AS_SEQUENCE in the aggregated AS_PATH
+ shall appear in all of the AS_PATH in the initial set of routes
+ to be aggregated.
+
+ - all tuples of the type AS_SET in the aggregated AS_PATH shall
+ appear in at least one of the AS_PATH in the initial set (they
+ may appear as either AS_SET or AS_SEQUENCE types).
+
+ - for any tuple X of the type AS_SEQUENCE in the aggregated
+ AS_PATH which precedes tuple Y in the aggregated AS_PATH, X
+ precedes Y in each AS_PATH in the initial set which contains Y,
+ regardless of the type of Y.
+
+ - No tuple with the same value shall appear more than once in
+ the aggregated AS_PATH, regardless of the tuple's type.
+
+ An implementation may choose any algorithm which conforms to these
+ rules. At a minimum a conformant implementation shall be able to
+ perform the following algorithm that meets all of the above
+ conditions:
+
+ - determine the longest leading sequence of tuples (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.
+
+ - set the type of the rest of the tuples from the AS_PATH
+ attributes of the routes to be aggregated to AS_SET, and append
+ them to the aggregated AS_PATH attribute.
+
+ - if the aggregated AS_PATH has more than one tuple with the
+ same value (regardless of tuple's type), eliminate all, but one
+ such tuple by deleting tuples of the type AS_SET from the
+ aggregated AS_PATH attribute.
+
+ Appendix 6, section 6.8 presents another algorithm that satisfies
+ the conditions and allows for more complex policy configurations.
+
+ ATOMIC_AGGREGATE: If at least one of the routes to be aggregated
+ has ATOMIC_AGGREGATE path attribute, then the aggregated route
+ shall have this attribute as well.
+
+
+
+
+
+Rekhter & Li [Page 46]
+
+RFC 1771 BGP-4 March 1995
+
+
+ AGGREGATOR: All AGGREGATOR attributes of all routes to be
+ aggregated should be ignored.
+
+9.3 Route Selection Criteria
+
+ Generally speaking, additional rules for comparing routes among
+ several alternatives are outside the scope of this document. There
+ are two exceptions:
+
+ - 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. If such a route were ever used, a routing loop
+ would result.
+
+ - In order to achieve successful distributed operation, only
+ routes with a likelihood of stability can be chosen. Thus, an AS
+ must avoid using unstable routes, and it must not make rapid
+ spontaneous changes to its choice of route. Quantifying the terms
+ "unstable" and "rapid" in the previous sentence will require
+ experience, but the principle is clear.
+
+9.4 Originating BGP routes
+
+ 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 shall assign the degree of
+ preference to these routes by passing them through the Decision
+ Process (see Section 9.1). These routes may also be distributed to
+ other BGP speakers within the local AS as part of the Internal update
+ process (see Section 9.2.1). The decision whether to distribute non-
+ BGP acquired routes within an AS via BGP or not depends on the
+ environment within the AS (e.g. type of IGP) and should be controlled
+ via configuration.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rekhter & Li [Page 47]
+
+RFC 1771 BGP-4 March 1995
+
+
+Appendix 1. BGP FSM State Transitions and Actions.
+
+ This Appendix discusses the transitions between states in the BGP FSM
+ in response to BGP events. The following is the list of these states
+ and events when the negotiated Hold Time value is non-zero.
+
+ BGP States:
+
+ 1 - Idle
+ 2 - Connect
+ 3 - Active
+ 4 - OpenSent
+ 5 - OpenConfirm
+ 6 - Established
+
+ BGP Events:
+
+ 1 - BGP Start
+ 2 - BGP Stop
+ 3 - BGP Transport connection open
+ 4 - BGP Transport connection closed
+ 5 - BGP Transport connection open failed
+ 6 - BGP Transport fatal error
+ 7 - ConnectRetry timer expired
+ 8 - Hold Timer expired
+ 9 - KeepAlive timer expired
+ 10 - Receive OPEN message
+ 11 - Receive KEEPALIVE message
+ 12 - Receive UPDATE messages
+ 13 - Receive NOTIFICATION message
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rekhter & Li [Page 48]
+
+RFC 1771 BGP-4 March 1995
+
+
+ The following table describes the state transitions of the BGP FSM
+ and the actions triggered by these transitions.
+
+
+ Event Actions Message Sent Next State
+ --------------------------------------------------------------------
+ Idle (1)
+ 1 Initialize resources none 2
+ Start ConnectRetry timer
+ Initiate a transport connection
+ others none none 1
+
+ Connect(2)
+ 1 none none 2
+ 3 Complete initialization OPEN 4
+ Clear ConnectRetry timer
+ 5 Restart ConnectRetry timer none 3
+ 7 Restart ConnectRetry timer none 2
+ Initiate a transport connection
+ others Release resources none 1
+
+ Active (3)
+ 1 none none 3
+ 3 Complete initialization OPEN 4
+ Clear ConnectRetry timer
+ 5 Close connection 3
+ Restart ConnectRetry timer
+ 7 Restart ConnectRetry timer none 2
+ Initiate a transport connection
+ others Release resources none 1
+
+ OpenSent(4)
+ 1 none none 4
+ 4 Close transport connection none 3
+ Restart ConnectRetry timer
+ 6 Release resources none 1
+ 10 Process OPEN is OK KEEPALIVE 5
+ Process OPEN failed NOTIFICATION 1
+ others Close transport connection NOTIFICATION 1
+ Release resources
+
+
+
+
+
+
+
+
+
+
+
+Rekhter & Li [Page 49]
+
+RFC 1771 BGP-4 March 1995
+
+
+ OpenConfirm (5)
+ 1 none none 5
+ 4 Release resources none 1
+ 6 Release resources none 1
+ 9 Restart KeepAlive timer KEEPALIVE 5
+ 11 Complete initialization none 6
+ Restart Hold Timer
+ 13 Close transport connection 1
+ Release resources
+ others Close transport connection NOTIFICATION 1
+ Release resources
+
+ Established (6)
+ 1 none none 6
+ 4 Release resources none 1
+ 6 Release resources none 1
+ 9 Restart KeepAlive timer KEEPALIVE 6
+ 11 Restart Hold Timer KEEPALIVE 6
+ 12 Process UPDATE is OK UPDATE 6
+ Process UPDATE failed NOTIFICATION 1
+ 13 Close transport connection 1
+ Release resources
+ others Close transport connection NOTIFICATION 1
+ Release resources
+ ---------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rekhter & Li [Page 50]
+
+RFC 1771 BGP-4 March 1995
+
+
+ The following is a condensed version of the above state transition
+ table.
+
+
+ Events| Idle | Connect | Active | OpenSent | OpenConfirm | Estab
+ | (1) | (2) | (3) | (4) | (5) | (6)
+ |--------------------------------------------------------------
+ 1 | 2 | 2 | 3 | 4 | 5 | 6
+ | | | | | |
+ 2 | 1 | 1 | 1 | 1 | 1 | 1
+ | | | | | |
+ 3 | 1 | 4 | 4 | 1 | 1 | 1
+ | | | | | |
+ 4 | 1 | 1 | 1 | 3 | 1 | 1
+ | | | | | |
+ 5 | 1 | 3 | 3 | 1 | 1 | 1
+ | | | | | |
+ 6 | 1 | 1 | 1 | 1 | 1 | 1
+ | | | | | |
+ 7 | 1 | 2 | 2 | 1 | 1 | 1
+ | | | | | |
+ 8 | 1 | 1 | 1 | 1 | 1 | 1
+ | | | | | |
+ 9 | 1 | 1 | 1 | 1 | 5 | 6
+ | | | | | |
+ 10 | 1 | 1 | 1 | 1 or 5 | 1 | 1
+ | | | | | |
+ 11 | 1 | 1 | 1 | 1 | 6 | 6
+ | | | | | |
+ 12 | 1 | 1 | 1 | 1 | 1 | 1 or 6
+ | | | | | |
+ 13 | 1 | 1 | 1 | 1 | 1 | 1
+ | | | | | |
+ ---------------------------------------------------------------
+
+
+Appendix 2. Comparison with RFC1267
+
+ BGP-4 is capable of operating in an environment where a set of
+ reachable destinations may be expressed via a single IP prefix. The
+ concept of network classes, or subnetting is foreign to BGP-4. To
+ accommodate these capabilities BGP-4 changes semantics and encoding
+ associated with the AS_PATH attribute. New text has been added to
+ define semantics associated with IP prefixes. These abilities allow
+ BGP-4 to support the proposed supernetting scheme [9].
+
+ To simplify configuration this version introduces a new attribute,
+ LOCAL_PREF, that facilitates route selection procedures.
+
+
+
+Rekhter & Li [Page 51]
+
+RFC 1771 BGP-4 March 1995
+
+
+ The INTER_AS_METRIC attribute has been renamed to be MULTI_EXIT_DISC.
+ A new attribute, ATOMIC_AGGREGATE, has been introduced to insure that
+ certain aggregates are not de-aggregated. Another new attribute,
+ AGGREGATOR, can be added to aggregate routes in order to advertise
+ which AS and which BGP speaker within that AS caused the aggregation.
+
+ To insure that Hold Timers are symmetric, the Hold Time is now
+ negotiated on a per-connection basis. Hold Times of zero are now
+ supported.
+
+Appendix 3. Comparison with RFC 1163
+
+ All of the changes listed in Appendix 2, plus the following.
+
+ To detect and recover from BGP connection collision, a new field (BGP
+ Identifier) has been added to the OPEN message. New text (Section
+ 6.8) has been added to specify the procedure for detecting and
+ recovering from collision.
+
+ The new document no longer restricts the border router that is passed
+ in the NEXT_HOP path attribute to be part of the same Autonomous
+ System as the BGP Speaker.
+
+ New document optimizes and simplifies the exchange of the information
+ about previously reachable routes.
+
+Appendix 4. Comparison with RFC 1105
+
+ All of the changes listed in Appendices 2 and 3, plus the following.
+
+ Minor changes to the RFC1105 Finite State Machine were necessary to
+ accommodate the TCP user interface provided by 4.3 BSD.
+
+ The notion of Up/Down/Horizontal relations present in RFC1105 has
+ been removed from the protocol.
+
+ The changes in the message format from RFC1105 are as follows:
+
+ 1. The Hold Time field has been removed from the BGP header and
+ added to the OPEN message.
+
+ 2. The version field has been removed from the BGP header and
+ added to the OPEN message.
+
+ 3. The Link Type field has been removed from the OPEN message.
+
+ 4. The OPEN CONFIRM message has been eliminated and replaced with
+ implicit confirmation provided by the KEEPALIVE message.
+
+
+
+Rekhter & Li [Page 52]
+
+RFC 1771 BGP-4 March 1995
+
+
+ 5. The format of the UPDATE message has been changed
+ significantly. New fields were added to the UPDATE message to
+ support multiple path attributes.
+
+ 6. The Marker field has been expanded and its role broadened to
+ support authentication.
+
+ Note that quite often BGP, as specified in RFC 1105, is referred
+ to as BGP-1, BGP, as specified in RFC 1163, is referred to as
+ BGP-2, BGP, as specified in RFC1267 is referred to as BGP-3, and
+ BGP, as specified in this document is referred to as BGP-4.
+
+Appendix 5. TCP options that may be used with BGP
+
+ If a local system TCP user interface supports TCP PUSH function, then
+ each BGP message should be transmitted with PUSH flag set. Setting
+ PUSH flag forces BGP messages to be transmitted promptly to the
+ receiver.
+
+ If a local system TCP user interface supports setting precedence for
+ TCP connection, then the BGP transport connection should be opened
+ with precedence set to Internetwork Control (110) value (see also
+ [6]).
+
+Appendix 6. Implementation Recommendations
+
+ This section presents some implementation recommendations.
+
+6.1 Multiple Networks Per Message
+
+ The BGP protocol allows for multiple address prefixes with the same
+ AS path and next-hop gateway to be specified in one message. Making
+ use of this capability is highly recommended. With one address prefix
+ per message there is a substantial increase in overhead in the
+ receiver. Not only does the system overhead increase due to the
+ reception of multiple messages, but the overhead of scanning the
+ routing table for updates to BGP peers and other routing protocols
+ (and sending the associated messages) is incurred multiple times as
+ well. One method of building messages containing many address
+ prefixes per AS path and gateway from a routing table that is not
+ organized per AS path is to build many messages as the routing table
+ is scanned. As each address prefix is processed, a message for the
+ associated AS path and gateway is allocated, if it does not exist,
+ and the new address prefix is added to it. If such a message exists,
+ the new address prefix is just appended to it. If the message lacks
+ the space to hold the new address prefix, it is transmitted, a new
+ message is allocated, and the new address prefix is inserted into the
+ new message. When the entire routing table has been scanned, all
+
+
+
+Rekhter & Li [Page 53]
+
+RFC 1771 BGP-4 March 1995
+
+
+ allocated messages are sent and their resources released. Maximum
+ compression is achieved when all the destinations covered by the
+ address prefixes share a gateway and common path attributes, making
+ it possible to send many address prefixes in one 4096-byte message.
+
+ When peering with a BGP implementation that does not compress
+ multiple address prefixes into one message, it may be necessary to
+ take steps to reduce the overhead from the flood of data received
+ when a peer is acquired or a significant network topology change
+ occurs. One method of doing this is to limit the rate of updates.
+ This will eliminate the redundant scanning of the routing table to
+ provide flash updates for BGP peers and other routing protocols. A
+ disadvantage of this approach is that it increases the propagation
+ latency of routing information. By choosing a minimum flash update
+ interval that is not much greater than the time it takes to process
+ the multiple messages this latency should be minimized. A better
+ method would be to read all received messages before sending updates.
+
+6.2 Processing Messages on a Stream Protocol
+
+ BGP uses TCP as a transport mechanism. Due to the stream nature of
+ TCP, all the data for received messages does not necessarily arrive
+ at the same time. This can make it difficult to process the data as
+ messages, especially on systems such as BSD Unix where it is not
+ possible to determine how much data has been received but not yet
+ processed.
+
+ One method that can be used in this situation is to first try to read
+ just the message header. For the KEEPALIVE message type, this is a
+ complete message; for other message types, the header should first be
+ verified, in particular the total length. If all checks are
+ successful, the specified length, minus the size of the message
+ header is the amount of data left to read. An implementation that
+ would "hang" the routing information process while trying to read
+ from a peer could set up a message buffer (4096 bytes) per peer and
+ fill it with data as available until a complete message has been
+ received.
+
+6.3 Reducing route flapping
+
+ To avoid excessive route flapping a BGP speaker which needs to
+ withdraw a destination and send an update about a more specific or
+ less specific route shall combine them into the same UPDATE message.
+
+
+
+
+
+
+
+
+Rekhter & Li [Page 54]
+
+RFC 1771 BGP-4 March 1995
+
+
+6.4 BGP Timers
+
+ BGP employs five timers: ConnectRetry, Hold Time, KeepAlive,
+ MinASOriginationInterval, and MinRouteAdvertisementInterval The
+ suggested value for the ConnectRetry timer is 120 seconds. The
+ suggested value for the Hold Time is 90 seconds. The suggested value
+ for the KeepAlive timer is 30 seconds. The suggested value for the
+ MinASOriginationInterval is 15 seconds. The suggested value for the
+ MinRouteAdvertisementInterval is 30 seconds.
+
+ An implementation of BGP MUST allow these timers to be configurable.
+
+6.5 Path attribute ordering
+
+ Implementations which combine update messages as described above in
+ 6.1 may prefer to see all path attributes presented in a known order.
+ This permits them to quickly identify sets of attributes from
+ different update messages which are semantically identical. To
+ facilitate this, it is a useful optimization to order the path
+ attributes according to type code. This optimization is entirely
+ optional.
+
+6.6 AS_SET sorting
+
+ Another useful optimization that can be done to simplify this
+ situation is to sort the AS numbers found in an AS_SET. This
+ optimization is entirely optional.
+
+6.7 Control over version negotiation
+
+ Since BGP-4 is capable of carrying aggregated routes which cannot be
+ properly represented in BGP-3, an implementation which supports BGP-4
+ and another BGP version should provide the capability to only speak
+ BGP-4 on a per-peer basis.
+
+6.8 Complex AS_PATH aggregation
+
+ An implementation which chooses to provide a path aggregation
+ algorithm which retains significant amounts of path information may
+ wish to use the following procedure:
+
+ For the purpose of aggregating AS_PATH attributes of two routes,
+ we model each AS as a tuple <type, value>, where "type" identifies
+ a type of the path segment the AS belongs to (e.g. AS_SEQUENCE,
+ AS_SET), and "value" is the AS number. Two ASs are said to be the
+ same if their corresponding <type, value> tuples are the same.
+
+
+
+
+
+Rekhter & Li [Page 55]
+
+RFC 1771 BGP-4 March 1995
+
+
+ The algorithm to aggregate two AS_PATH attributes works as
+ follows:
+
+ a) Identify the same ASs (as defined above) within each AS_PATH
+ attribute that are in the same relative order within both
+ AS_PATH attributes. Two ASs, X and Y, are said to be in the
+ same order if either:
+
+ - X precedes Y in both AS_PATH attributes, or - Y precedes X
+ in both AS_PATH attributes.
+
+ b) The aggregated AS_PATH attribute consists of ASs identified
+ in (a) in exactly the same order as they appear in the AS_PATH
+ attributes to be aggregated. If two consecutive ASs identified
+ in (a) do not immediately follow each other in both of the
+ AS_PATH attributes to be aggregated, then the intervening ASs
+ (ASs that are between the two consecutive ASs that are the
+ same) in both attributes are combined into an AS_SET path
+ segment that consists of the intervening ASs from both AS_PATH
+ attributes; this segment is then placed in between the two
+ consecutive ASs identified in (a) of the aggregated attribute.
+ If two consecutive ASs identified in (a) immediately follow
+ each other in one attribute, but do not follow in another, then
+ the intervening ASs of the latter are combined into an AS_SET
+ path segment; this segment is then placed in between the two
+ consecutive ASs identified in (a) of the aggregated attribute.
+
+ If as a result of the above procedure a given AS number appears
+ more than once within the aggregated AS_PATH attribute, all, but
+ the last instance (rightmost occurrence) of that AS number should
+ be removed from the aggregated AS_PATH attribute.
+
+References
+
+ [1] Mills, D., "Exterior Gateway Protocol Formal Specification", RFC
+ 904, BBN, April 1984.
+
+ [2] Rekhter, Y., "EGP and Policy Based Routing in the New NSFNET
+ Backbone", RFC 1092, T.J. Watson Research Center, February 1989.
+
+ [3] Braun, H-W., "The NSFNET Routing Architecture", RFC 1093,
+ MERIT/NSFNET Project, February 1989.
+
+ [4] Postel, J., "Transmission Control Protocol - DARPA Internet
+ Program Protocol Specification", STD 7, RFC 793, DARPA, September
+ 1981.
+
+
+
+
+
+Rekhter & Li [Page 56]
+
+RFC 1771 BGP-4 March 1995
+
+
+ [5] Rekhter, Y., and P. Gross, "Application of the Border Gateway
+ Protocol in the Internet", RFC 1772, T.J. Watson Research Center,
+ IBM Corp., MCI, March 1995.
+
+ [6] Postel, J., "Internet Protocol - DARPA Internet Program Protocol
+ Specification", STD 5, RFC 791, DARPA, September 1981.
+
+ [7] "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", ISO/IEC IS10747, 1993
+
+ [8] Fuller, V., Li, T., Yu, J., and K. Varadhan, "Classless Inter-
+ Domain Routing (CIDR): an Address Assignment and Aggregation
+ Strategy", RFC 1519, BARRNet, cisco, MERIT, OARnet, September
+ 1993
+
+ [9] Rekhter, Y., Li, T., "An Architecture for IP Address Allocation
+ with CIDR", RFC 1518, T.J. Watson Research Center, cisco,
+ September 1993
+
+Security Considerations
+
+ Security issues are not discussed in this document.
+
+Editors' Addresses
+
+ Yakov Rekhter
+ T.J. Watson Research Center IBM Corporation
+ P.O. Box 704, Office H3-D40
+ Yorktown Heights, NY 10598
+
+ Phone: +1 914 784 7361
+ EMail: yakov@watson.ibm.com
+
+
+ Tony Li
+ cisco Systems, Inc.
+ 170 W. Tasman Dr.
+ San Jose, CA 95134
+
+ EMail: tli@cisco.com
+
+
+
+
+
+
+
+
+
+Rekhter & Li [Page 57]
+