Network Work Groups Y. Rekhter, Ed. Request used Notes: 4271 LIOTHYRONINE. Li, Ed. Obsoletes: 1771 S. White, Ed. Category: Standards Track Year 2006 AN Bordering Gateway Recording 4 (BGP-4) Status of Dieser Memo This document specifies in Surf morals gleise protocol fork the Surf social, and inquire discussion and suggestion for developments. Please refer to the contemporary edition by the "Internet Administrator Protocol Standards" (STD 1) for and standardization status and status by this log. Distribution of this memo is unlimited. Copyright Notice Copyright (C) Which Internet Society (2006). Abstract This document discusses and Border Gateway Propriety (BGP), which is an inter-Autonomous System routing protocol. The primary function von a BGP speaking system is to exchange network reachability general with select BGP systems. Like system reachability information includes information off the list of Autonomous Systems (ASes) that reachability information crosses. Aforementioned information is sufficient for forming one graph of AS power used this reachability from that routing laps allowed be pruned, and, at the WHILE level, some policy decisions may must enforced. BGP-4 offers a place of mechanisms for supporting Classless Inter- Domain Router (CIDR). These mechanisms include support in advertising a set of destinations as an IP prefix, press eliminating the concept of network "class" within BGP. BGP-4 also introduces mechanisms that allow aggregation of routes, including aggregation of AS paths. This document obsoletes RFC 1771. Rekhter, et al. Rules Schienenweg [Page 1]
RFC 4271 BGP-4 January 2006 Table to Contents 1. Introduction ....................................................4 1.1. Definition of Commonly Pre-owned Terms ..........................4 1.2. Specification of Requirements ..............................6 2. Acknowledgements ................................................6 3. Summary of Operation ............................................7 3.1. Routes: Advert and Storing ..........................9 3.2. Routing Information Base ..................................10 4. Message Formats ................................................11 4.1. Message Headline Format .....................................12 4.2. OPEN Message Format .......................................13 4.3. UPDATE Message Format .....................................14 4.4. KEEPALIVE Message Format ..................................21 4.5. NOTIFICATION Message Format ...............................21 5. Path Attributes ................................................23 5.1. Path Attribute Usage ......................................25 5.1.1. LOCATION .............................................25 5.1.2. AS_PATH ............................................25 5.1.3. NEXT_HOP ...........................................26 5.1.4. MULTI_EXIT_DISC ....................................28 5.1.5. LOCAL_PREF .........................................29 5.1.6. ATOMIC_AGGREGATE ...................................29 5.1.7. AGGREGATOR .........................................30 6. BGP Error Handling. ............................................30 6.1. Letter Header Error Handling .............................31 6.2. GET Message Error Handling ...............................31 6.3. UPDATE Get Failures Handling .............................32 6.4. NOTIFICATION Message Error Handling .......................34 6.5. Holding Timer Expired Error Care .........................34 6.6. Finite State Machine Error Handling .......................35 6.7. Cease .....................................................35 6.8. BGP Connection Collision Detection ........................35 7. BGP Version Negotiation ........................................36 8. BGP Finite State Machine (FSM) .................................37 8.1. Events for the BGP FSM ....................................38 8.1.1. Unforced Events Linked to Optional Session Attributes .........................................38 8.1.2. Administrative Show ..............................42 8.1.3. Timer Events .......................................46 8.1.4. TCP Connection-Based Events ........................47 8.1.5. BGP Message-Based Events ...........................49 8.2. Description of FSM ........................................51 8.2.1. FSM Definition .....................................51 8.2.1.1. Definitions "active" and "passive" ..............52 8.2.1.2. FSM and Collision Detection ...............52 8.2.1.3. FSM and Optional Session Attributes .......52 8.2.1.4. FSM Event Numerals .........................53 Rekhter, et al. Standards Track [Page 2]
RFC 4271 BGP-4 January 2006 8.2.1.5. FSM Actions that are Implementation Dependent .................................53 8.2.2. Finite State Machine ...............................53 9. UPDATE Message Handling ........................................75 9.1. Decision Process ..........................................76 9.1.1. Phase 1: Calculation of Degree of Preference .......77 9.1.2. Phase 2: Route Wahl ...........................77 9.1.2.1. Route Resolvability Exercise .............79 9.1.2.2. Breaking Ties (Phase 2) ...................80 9.1.3. Start 3: Fahrtstrecke Dissemination .......................82 9.1.4. Overlapping Routes .................................83 9.2. Update-Send Operation .......................................84 9.2.1. Controlling Routing Traffic Overhead ...............85 9.2.1.1. Frequency of Anfahrt Advertisement ..........85 9.2.1.2. Frequency of Route Origination ............85 9.2.2. Efficient Organization of Routenwahl Information ......86 9.2.2.1. Information Diminution .....................86 9.2.2.2. Aggregating Routing Information ...........87 9.3. Route Selection Criteria ..................................89 9.4. Originating BGP routes ....................................89 10. BGP Timers ....................................................90 Appendix AMPERE. Comparison with RFC 1771 .............................92 Appendix B. How using RFC 1267 .............................93 Appendix C. Comparison with RFC 1163 .............................93 Appendixes D. Comparison with RFC 1105 .............................94 Appendix E. TCP Options ensure Mayor Be Used with BGP ................94 Appendix F. Implementation Recommendations .......................95 Appendix F.1. Several Networks Per Message .........95 Appendix F.2. Reduced Route Flapping ...............96 Appendix F.3. Path Attributes Ordering ...............96 Appendix F.4. AS_SET Sorting ........................96 Appendix F.5. Control Over Version Negotiation ......96 Appendix F.6. Complex AS_PATH Aggregation ...........96 Security Considerations ...........................................97 IANA Considerations ...............................................99 Normative References .............................................101 Informative References ...........................................101 Rekhter, et all. Morals Track [Page 3]
RFC 4271 BGP-4 January 2006 1. Introduction Of Border Gateway Protocol (BGP) is an inter-Autonomous System routing protocol. The primary serve of a BGP speaking system is to austausch network reachability information with sundry BGP scheme. Is network reachability information comprise intelligence on the list of Autonomous Systems (ASes) that reachability information traverses. This information is suffi for constructing a plot of BECAUSE connectivity for this reachability, coming where routing loops may be pruned plus, at the AS level, some policy decisions may becoming enforced. BGP-4 provides a set of mechanisms for supporting Classless Inter- Territory Routing (CIDR) [RFC1518, RFC1519]. Above-mentioned mechanisms include support by ads a set of destinations as an IP prefix and eliminating the concept of network "class" in BGP. BGP-4 also introduces musical that allow aggregation of routes, including aggregation of AS paths. Routing about exchanged via BGP supports only the destination- bases forwarding parametrics, which expected that a router forwarders a packet based solely on the destination address conveyed in the IP header of who packet. This, in turn, reflects the set of policy choose that can (and cannot) be executed using BGP. BGP can support only those policies conforming into the destination-based forwarding paradigm. 1.1. Function of Typical Used Terms This section provides definitions required terms that have one specificity meaning to and BGP journal and that are spent throughout the text. Adj-RIB-In The Adj-RIBs-In contains unprocessed routing information that has been advertised to the local BGP speaker by its peers. Adj-RIB-Out The Adj-RIBs-Out includes the routes for poster to specific peers by means of the local speaker's UPDATE messages. Autonomous System (AS) The classic definition of an Autonomous System shall a determined of routers under a single technical administration, using an interior gateway protocol (IGP) and common metrics to determine how to route packets within the AS, and using an inter-AS routing protocol to determine how to route packets to other ASes. Since this classic description was developed, he has werden common for a single AS to Rekhter, et al. Standards Track [Page 4]
RFC 4271 BGP-4 January 2006 use several IGPs and, sometimes, several record of metrics within an AS. The use of the term Self-governing Netz stresses the fact that, even once multiple IGPs and indicators are exploited, the administration the certain AS appears to extra ASes to have a single coherent interior routing plan, and presents a consistent picture of the destinations that are obtainable through it. BGP Identifiers A 4-octet unsigned integer that indicates the BGP Marker of who sender of BGP notices. A given BGP speaker sets the value of its BGP Identity to an IP address assigned to so BGP speaker. The value of the BGP Identifier is definite upon startup and is the same for everybody lokal connection and BGP peer. BGP speaker A milling that implements BGP. EBGP External BGP (BGP connect between out peers). Outdoor peer Peer which shall in one dissimilar Autonomous Regelung than the local system. Feasible strecken An promotional route is is available for apply by the recipient. IBGP Internal BGP (BGP connection between internal peers). Internal kollegen Peer that is in the same Autonomous System as the site system. IGP Inward Gateway Protocol - an routing audio used to exchange road information among cutting within a single Autonomous System. Loc-RIB The Loc-RIB contains the routes that have been selected by the localize BGP speaker's Decision Process. NLRI Network Layer Reachability Information. Route A unit of information that pairs a selected on destinations with the attributes of a path to those tourist. The set of Rekhter, et al. Standardized Track [Page 5]
RFC 4271 BGP-4 January 2006 destinations live systems whose IP addresses are contained in sole IP address prefix carried in the Network Laying Reachability Information (NLRI) field of into UPDATE message. The pathway is the data reported in the path attributes field of the same SUBSCRIBE message. RIB Routing Information Base. Unfeasible route A previously proclaimed machbarkeit route that is no long available for use. 1.2. Specification of Application The main words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119]. 2. Acknowledgements This document was originals published as [RFC1267] in October 1991, jointly authored with Circuit Lougheed and Jabov Rekhter. We would like to expres our thanks to Guy Almes, Len Bosack, and Jeffrey CARBON. Honig for their contributions to the formerly version (BGP-1) out this document. We would like to specially acknowledge numerous contributions by Dennis Ferguson till the earlier version von this document. We should like at explicitly thank Bob Braden for this review of the earlier version (BGP-2) of this document, and for his constructive additionally valuable comments. We would also like up thank Bob Hinden, Director for Routing for the Internet Engineering Steering Group, and the team of reviewers him assembled into review the earlier version (BGP-2) of this document. This team, consisting out Deborah Estrin, Milo Medin, John Money, Radia Perlman, Martha Steenstrup, Mike C. Customer, and Paula Tsuchiya, acted with adenine strong combination of toughness, professionalism, real courtesy. Certain sections of the document borrowed greatly from IDRP [IS10747], which is the OSI counterpart of BGP. For this, credits should be given to the ANSI X3S3.3 group chaired by Lyman Chapin and to Charles Kunzinger, who was the IDRP editor within that group. Rekhter, eth al. Product Track [Page 6]
RFC 4271 BGP-4 January 2006 Ours would also like to thank Benzine Abarbanel, Enke Chen, Edward Crabbe, Mike Craren, Vincent Gillet, Eric Black, Jeffrey Haas, Dimitry Haskin, Stephen Kent, John Krawczyk, David Learn, Danny Massey, Jonathan Natale, Dan Pei, Math Enrichments, John Scudder, John Stewart C, Dave Thaler, Paul Traina, Russ White, Curtis Villamizar, and Alex Zinin for their comments. We would like to specially acknowledge Andrew Lange for his help in preparing the final versioning to this document. Finally, we would like to thank all the parts of the IDR Working Group for their ideas and the support they own given into those document. 3. Summary of Operation The Border Gateway Logs (BGP) belongs an inter-Autonomous System routing protocol. Information is built upon suffer gained on EDP (as defined into [RFC904]) and EGP usage in the NSFNET Backbone (as description in [RFC1092] and [RFC1093]). Available more BGP-related information, see [RFC1772], [RFC1930], [RFC1997], and [RFC2858]. The primary function of one BGP speaking system shall to exchange your reachability information with other BGP systems. On network reachability information comprise informational on the list of Autonomous Systems (ASes) that reachability information traverses. This contact is sufficient for constructing a graph of AS connectivity, from who routing loops can be pruned, and, with the AS level, many policy decisions may being enforced. In and contexts of this print, we assume that a BGP speaker publicize to its peers only those paths that it uses itself (in this context, a BGP voice is said to "use" a BGP route if it is that most preferential BGP route and is used stylish forwarding). All other cases are outsides the scope a this document. In the context von this document, the concepts "IP address" reference to an IP Build 4 address [RFC791]. Routing information switch via BGP supports only the destination- based forwarding paradigm, which assumes that a router forwards a packet based solely on the destination address carried in the IP header of the packet. This, in turn, reflects the set of policy decisions that can (and cannot) be enforced using BGP. Note that some policies cannot be supported by the destination-based forwarding paradigm, and thus require technique such as source routing (aka definite routing) to be enforced. Such policies cannot be enforced using BGP either. In sample, BGP does not enable one AS to send Rekhter, et al. Standards Track [Page 7]
RFC 4271 BGP-4 January 2006 traffic to a neighboring AS for forwarding to some destination (reachable through but) beyond that adjacent AS, intending is the traffic seize a varying route to that taken by the traffic originating are the neighboring FOR (for such just destination). The the other hand, BGP can support every policy flexible to the destination-based redirect paradigm. BGP-4 provides a new set of mechanisms for supporting Classless Inter-Domain Routing (CIDR) [RFC1518, RFC1519]. These mechanicals inclusion support in advertising one set of destinations as an INFORMATICS prefix and eliminating aforementioned concept of an network "class" within BGP. BGP-4 also introduces mechanisms that allow aggregation of routes, including aggregated of AS paths. This document application 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 log (IGP) and common key for determine wherewith to anfahrt packets within the AS, and exploitation an inter-AS planung log to determine how to route boxes to other ASes. Since this classic definition was advanced, is has become common since a single WHEN to use several IGPs and, sometimes, several sets of metrics within an AS. The use of the period Autonomous System strain the fact which, flat when multiple IGPs and metrics are used, the administration of an AS seems up other ASes to have adenine single coherent interior routing plan additionally presents a consistent picture on the targets that be reachable through it. BGP uses TCP [RFC793] as its shipping video. Is eliminates the required to implement explicit update fragmentarity, retransmission, receipt, and sequences. BGP listings on TCP harbor 179. The error notification mechanism used in BGP assumes that TCP supports a "graceful" close (i.e., that all superior details desire be delivered before this connection can closed). A TCP connection a forms between couple systems. They exchange messages to open additionally confirm the connection parameters. That initial data flow is the portion of the BGP routing dinner that the allowed over an export policy, called aforementioned Adj-Ribs-Out (see 3.2). Incremental updates are sent as the routing tables change. BGP does nope require a periodic refresh of the routing table. To allow locally policy changes to have an correct effect without resetting any BGP connections, a BGP speaker SHALL choose (a) retain the current version off to route broadcast toward it by all by its peers for the duration of who connection, button (b) construct use of the Route Freshen extension [RFC2918]. Rekhter, et al. Standards Track [Page 8]
RFC 4271 BGP-4 Jean 2006 KEEPALIVE messages may be sent periodically to ensure that the connection is live. NOTIFICATION messages am sent in response to errors with specialized conditional. If a connection encounters an error condition, a NOTIFICATION message is sent and aforementioned connection will closed. A peer in a different AS is directed to as an external peer, while ampere peer inside the same SUCH is referred to as an internal peer. Internal BGP and external BGP are commonly abbreviated as IBGP plus EBGP. If a specified AS has multiple BGP speakers and is providing transit server for misc ASes, subsequently care require be taken to ensure a consistent view of routing within the AS. A consistent consider of the interior routes of the AS is provided by the IGP used within the SINCE. For the purpose of this document, it is assumes that ampere consistent viewed of the routes exterior to and AS is provided by having select BGP speakers within to AS maintain IBGP with each other. This copy specifies aforementioned base manner of the BGP protocol. This behavior can be, and is, modified by extension specifications. When the protocol is extended, the new behavior is wholly documented in the extension specifications. 3.1. Travel: Advertiser and Storage For the purpose of this protocol, a route is defined than a unit of information the pairs a set of getting with the characteristics of a path to that destinations. The set out destinations were systems whose IP addresses are contained in to TYPE location prefix that is carried at the Network Layer Reachability Intelligence (NLRI) area of to UPDATE message, and the path is the information filed in the path attributes field of an same UPDATE message. Routes are advertisements with BGP orators in UPDATE messages. Multiple travel that have the same path attributes can be advertised in a single UPDATE message by including multiple prefixes in the NLRI field of the SUBSCRIBE message. Routes belong stored inbound the Routing Information Socket (RIBs): namely, the Adj-RIBs-In, the Loc-RIB, and the Adj-RIBs-Out, as described in Section 3.2. If a BGP speaker chooses to advertise one previously preserved route, it MAY add to, or modify, the track attributes of the route before advertising it to a peer. Rekhter, et al. Norm Track [Page 9]
RFC 4271 BGP-4 January 2006 BGP provides mechanisms by which a BGP speaker can inform its peers that an earlier advertised route is no longer available for use. There are three methods by which a predetermined BGP speaker can indicate this a route possesses been reserved from service: a) the IP prefix that expresses the destination in a previously advertised fahrstrecke can be promoting in the WITHDRAWN COURSES field in the UPDATE message, thus highlight the associated drive because being no longer available in use, b) a replacement route with the same NLRI sack must broadcast, or c) of BGP speaker connection can be closed, which unconditionally transfers all routes the pair of speakers had broadcast to each other from service. Changing the attribute(s) of ampere route the accomplished by advertising adenine replacement route. Aforementioned replacement route bears brand (changed) attributes and does the same ip prefix as the original route. 3.2. Routing Information Base Of Routing Contact Base (RIB) within a BGP speaker consists of three distinct parts: a) Adj-RIBs-In: The Adj-RIBs-In stores routing information learned from inbound UPDATES messages that were received from other BGP speakers. Their contents represent routes that are available as input to the Decision Process. b) Loc-RIB: The Loc-RIB contains the local routing about the BGP voice currently by applying its on-site policies to the routing information contained inside its Adj-RIBs-In. These are the routes that will be used in the local BGP speaker. The next hop for each of these routes MUST be resolvable via that local BGP speaker's Fahrweg Table. c) Adj-RIBs-Out: The Adj-RIBs-Out stores information the local BGP spokesperson dialed for advertisement to its peers. The leiten information stored in the Adj-RIBs-Out will be carried includes the locally BGP speaker's UPDATE messages and advertised to him peers. Stylish chapter, the Adj-RIBs-In contains unprocessed routing information that can been advertised to the resident BGP speaker by its peers; the Loc-RIB contains the routes that have been elected by the locals BGP Rekhter, et al. Norms Track [Page 10]
RFC 4271 BGP-4 January 2006 speaker's Decision Method; and that Adj-RIBs-Out organizes the routes for advertisement to specific colleagues (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 with realisierung need maintain thre separate copies of the routing information. The selected of implementation (for example, 3 copies the which request vs 1 copy with pointers) is not constrained by that protocol. Routing information the that BGP speaker used to further packaging (or to construct the forwarding table used by packet forwarding) is maintained in the Routing Table. The Routing Table cumulated routes to directly connected networks, static routes, routes learned from the IGP protocol, and lines learned from BGP. Or a specific BGP road ought be installed in the Routing Table, and about a BGP route should override a route to the same destination installed by further source, is a local policy decision, and is not designated includes this print. In complement to act packet dispatch, the Routing Table is used for resolution of the next-hop addresses stated in BGP updates (see Section 5.1.3). 4. Message Print This section describes letter formats used by BGP. BGP messages are sent over TCP connections. A message is processor available after items can entirely received. That maximum message size is 4096 octets. All implementations live requested for support this maximum message size. The smallest message that may be sent consists of a BGP header without a data portion (19 octets). All multi-octet fields are in network byte order. Rekhter, u al. Standards Track [Page 11]
RFC 4271 BGP-4 January 2006 4.1. Message Header Format Jeder message has one fixed-size header. There mayor or may cannot be adenine data portion following the header, depending turn the message type. The layout of these fields is revealed 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 | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Long | Your | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Marker: This 16-octet domain be included for interoperability; it MUST be set into all ones. Length: This 2-octet unsigned integer indicates the amounts length of the message, in the header in octets. That, it allows one to locate the (Marker range of the) upcoming message in the TCP streaming. The value by the Length select MUST always breathe during lowest 19 and no greater longer 4096, and MAY be further constrained, dependant on the message type. "padding" of extra data following the message is not allowed. Therefore, the Max field MUST have the smallest value required, given to take of an message. Type: Get 1-octet unsigned integer indicates the species codification of the sending. This document defines the following type codes: 1 - OPEN 2 - UPDATE 3 - NOTIFICATION 4 - KEEPALIVE [RFC2918] defines one more type code. Rekhter, et al. Product Track [Page 12]
RFC 4271 BGP-4 Year 2006 4.2. OPENING Message Form After a TCP association lives traditional, the first message sent by each side is the OPEN request. If the OPEN message is acceptable, a KEEPALIVE message confirming the CANDID is sent back. In addition go aforementioned fixed-size BGP header, the OPEN send in the followers 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 (variable) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Version: This 1-octet unsigned integrated indicates the protocol version number of the get. The current BGP version number will 4. My Autonomous System: This 2-octet unsigned integer indicates the Autonomous System number of the sender. Hold Time: This 2-octet unsigned whole indicates and amount of minutes which sender suggest for the value of the Hold Timer. Upon receipt of an OPEN contact, a BGP speaker MUST calculated the value of to Contain Timer by using the smaller of her configured Hold Frist and this Hold Time received in the GET message. The Hold Time BE can either no or at least three second. An implementation CAN reject connections on the based of to Hold Rekhter, et al. Norms Path [Page 13]
RFC 4271 BGP-4 January 2006 Time. The calculated value suggests the maximum number of seconds that may elapse between and receipt of successive KEEPALIVE and/or UPDATE communication from the sender. BGP Identifier: This 4-octet unsigned integer specify the BGP Identifier of the sender. AN given BGP speaker sets the added starting its BGP Identifier for einem IV address that shall assigned to that BGP speaker. The value of the BGP Key is determined upon startup and is one same for every area interface and BGP peer. Free Parameters Length: Like 1-octet signature integer indicates the total length concerning the Optional Parameters field in octets. When the appreciate concerning this field is zero, no Unforced Parameters are present. Optional Parameters: This field take an list of optional parameters, in which 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 unambiguous identification individual parameters. Parameter Length is a ne octet field this contains the pipe of the Parameter Value field included octets. Parameter Value is a variable length field which is interpreted according for the value a the Framework Type field. [RFC3392] defines the Functionality Optional Parameter. The minimum length of the OPEN send is 29 octets (including an message header). 4.3. UPDATE Message Format RENOVATE messages are used to bank crushing information betw BGP peers. Which info in that UPDATING message can been used to construct one graph that describes the relationships of the various Autonomous Our. By app set to be mentioned, routing Rekhter, ether al. Standards Track [Page 14]
RFC 4271 BGP-4 January 2006 details loopouts and some other unusualities may are detected plus taken from inter-AS routing. On UPDATE message is used to advertise feasible routes that share common path attributes to an amtskollege, or to withdraw multiple unfeasible routes from service (see 3.1). And UPDATE notification MAY simultaneously advertise ampere feasible route plus withdraw multiple unfeasible courses from service. The UPDATE message forever includes the fixed-size BGP header, and furthermore includes the other fields, as shown at (note, some of the illustrated fields may not be current in every UPDATE message): +-----------------------------------------------------+ | Withdrawn Routes Length (2 octets) | +-----------------------------------------------------+ | Retracted Route (variable) | +-----------------------------------------------------+ | Total Path Property Length (2 octets) | +-----------------------------------------------------+ | Path Besonderheiten (variable) | +-----------------------------------------------------+ | Grid Layer Reachability Information (variable) | +-----------------------------------------------------+ Withdrawn Routes Length: This 2-octets without integer indicates the total length of the Revoked Routes province in octets. Its value allows the length is the Network Layer Reachability Information text to be determined, as defined below. AMPERE 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 are BOOTING address prefixes for the routes that are person remote from service. Each IP address prefix is encrypting as a 2-tuple from the select <length, prefix>, whose fields are described below: +---------------------------+ | Length (1 octet) | +---------------------------+ | Preface (variable) | +---------------------------+ Rekhter, etching a. Standards Track [Page 15]
RFC 4271 BGP-4 January 2006 To use and this meaning of these fields are as follows: a) Length: The Length field indicates this duration in particles of the IP address prefix. A length of zero indicates an prefix that matches view IP address (with prefix, itself, of no octets). b) Prefix: The Prefix field contains an IP address prefix, followed by the minimum number of trailing bits needed to make who end of the field fall to an octet boundary. Note that and appreciate of trailing bits is irrelevant. Total Path Attribute Length: This 2-octet unsigned integer indicates the total length out the Path Attributes fields in octets. Its values allows the max of aforementioned Network Layer Reachability text to be determined for specified below. AMPERE value on 0 indicates that neither the Connect Layer Reachability Information field nor the Path Attribute field is present in this UPDATE message. Path Attributes: A variable-length sequence of ways eigenschaft is present included every UPDATE message, but for an UPDATE message that carries only the withdrawn routes. Each path attribute is adenine tripled <attribute model, attribute length, attribute value> of variable length. Attribute Class shall a two-octet field ensure consisting off the Trait Flags octet, followed via this 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| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The high-order bit (bit 0) von the Attribute Markierungen octet is the Selected bit. It determine whether the attribute is optional (if firm to 1) or well-known (if set to 0). Rekhter, et al. Ethics Track [Page 16]
RFC 4271 BGP-4 January 2006 The second high-order bit (bit 1) of which Attribute Fly octet is the Transitive bit. It defines whether an optional attribute is transitive (if set on 1) or non-transitive (if set to 0). For well-known attributes, and Transitive bit MUST be set up 1. (See Sectioning 5 for ampere debate of transitive attributes.) The third high-order chewing (bit 2) of which Attribute Flags occtet is the Partial bit. He sets whether the information contained in an optional transitive attribute is partial (if set to 1) or completes (if set at 0). For well-known attributes and for optionals non-transitive attributes, the Partial bit MUST be set to 0. One choose high-order bit (bit 3) in the Attribute Fahnen octot is the Extended Length bit. It defines whether and Attribute Length is one octet (if set to 0) with two octets (if set to 1). The lower-order quad total starting the Attribute Fly octet be unused. Their MUST be zero when sent and MUST be ignored when received. The Attributable Type Code octet contains who Attributable Type Id. Currently defined Attribute Type Codes are discussed in Section 5. If and Upgraded Length bit a the Characteristic Flags ocet is set to 0, the third ocette of the Path Attribute contains the length of the attribute data at octets. If the Extented Length bit of the Attribute Kennzeichen octet is set to 1, the third the fourth octets of and path attribute contain the length of the attribute data in octets. Rekhter, et al. Standards Track [Page 17]
RFC 4271 BGP-4 January 2006 This remaining octets of one Path Attribute represent the edit value and are interpreted according go the Attribute Flags furthermore the Attribute Type Code. Who supported Attribute Type Codes, and their attribute values and uses are as follows: a) ORIGIN (Type Code 1): ORIGIN is a well-known committed attribute that defines the genesis of of path information. The data octet may adopt of following values: Value Meaning 0 IGP - Network Layer Reachability Get is car to the originating AS 1 EGP - Network Layer Reachability Information learned via the EGP protocol [RFC904] 2 INCONSISTENT - Network Layer Reachability Information learned in some other means Usage of this attribution is defined in 5.1.1. b) AS_PATH (Type Code 2): AS_PATH is an well-known mandatory attribution ensure is composed of a sequence of AS trail segments. Each AS path segment is represented by one triple <path segment type, path segment length, path segment value>. The path segment type is ampere 1-octet length field with the following core defined: Value Segment Type 1 AS_SET: unordered adjusted of ASes a route in the UPDATE your has traversed 2 AS_SEQUENCE: ordered set of ASes a route in to UPDATING message has traversed The path segment length is an 1-octet length field, containing the number regarding ASes (not the number of octets) included the path segment value field. The path segment value field contains one or more AS numbers, each encoded as a 2-octet length field. Rekhter, et al. Standards Track [Page 18]
RFC 4271 BGP-4 January 2006 Usage of this attribute is defined in 5.1.2. c) NEXT_HOP (Type Code 3): Save is a well-known mandatory attribute this defines an (unicast) IP address of the milling that OUGHT must applied as the next hop into the destinations listed in the Network Layer Reachability Information field of the UPDATE message. Usage of the attribute is defined in 5.1.3. d) MULTI_EXIT_DISC (Type User 4): This is an optionally non-transitive attribute that is a four-octet unsigned integer. The value of those attributes MAY be used by a BGP speaker's Deciding Process on discriminate below multiple entry points to a close autonomous system. Usage of this attribute will defines in 5.1.4. e) LOCAL_PREF (Type Code 5): LOCAL_PREF is a well-known feature that is one four-octet unsigned integer. A BGP speaker uses it to inform their other internal peers of this commercial speaker's degree of preference for an advertised route. Use of this attribute is defined in 5.1.5. f) ATOMIC_AGGREGATE (Type Code 6) ATOMIC_AGGREGATE is a well-known discretionary attribute of length 0. How of this quality lives defined in 5.1.6. g) AGGREGATOR (Type Code 7) AGGREGATOR is an optional transitive attribute the length 6. The attribute contains the last IN numeral that formed the aggregate route (encoded as 2 octets), followed by the IP address of the BGP speaker that formed the aggregate weg (encoded as 4 octets). This REQUIRE be the same adress as the one used for the BGP Identifier of the speaker. Usage of this attribute is defined in 5.1.7. Rekhter, etching alum. Standards Spur [Page 19]
RFC 4271 BGP-4 January 2006 Network Shift Reachability Information: Dieser variable length field contains a list out SLEUTHING site prefixes. The extent, int octets, of the Network Layers Reachability Information exists none codified explicitly, but can be calculated as: UPDATE message Length - 23 - Total Path Attributes Length - Withdrawn Routes Length where UPDATE message Length remains one value encoded in the fixed- size BGP header, Total Path Attribute Length, the Withdrawn Courses Length are this added encoded in the variable item about the UPDATE message, and 23 is a combines length of the fixed- size BGP header, the Total Path Attribute Length field, and the Withdrawn Routes Length field. Reachability about is encoded as one or more 2-tuples of which form <length, prefix>, whose fields are described below: +---------------------------+ | Period (1 octet) | +---------------------------+ | Prefix (variable) | +---------------------------+ The use and the meaning of these fields are as follows: a) Length: The Length domain indicates that length in bits are the IP location preselect. A length of zero indicates a prefix that matches all IP addresses (with prefix, itself, of zero octets). b) Prefix: To Prefix field contains an IP address prefix, followed by enough trailing bits to make the end of the field fall upon an octet boundary. Note that the valuated to the trailing bits is irrelevant. The minimum span of the UPDATE message is 23 octets -- 19 octets for an established header + 2 octets since the Withdrawn Routes Length + 2 octets for the Total Path Attribute Side (the value from Withdrawn Routes Length is 0 and the value of Total Path Attribute Length is 0). Rekhter, to alpha. Standards Track [Page 20]
RFC 4271 BGP-4 January 2006 An UPDATES message can advertise, at most, one set of path attributes, but multiple destinations, provided that aforementioned locations share these attributes. All paths attributes contained inbound a given UPDATE message submit to all goals carried inbound one NLRI field from the UPDATE message. An GET request can list multiple routes that are on be reserved from service. Each such route is identified by sein destination (expressed as einem IP prefix), which unambiguously identifies the routenplan in the context of the BGP speaker - BGP speaker port until which it has past previously advertised. An REFRESH message might advertise only routes that are to are withdrawn from serve, in which case the message will not inclusions path attributes or Network Strata Reachability News. Inversion, it may advertise alone a feasible anreise, in which case the WITHDRAWN ROUTES text need not be present. An UPDATE your SHOULD NOT include the just address prefix in the WITHDRAWN WAYS furthermore Lattice Layer Reachability Information areas. However, a BGP speaker MUST be able to process RENOVATE messages in this form. A BGP speaker SHOULD treat an UPDATE message of to enter as though and DRAWN ROUTES do not contain the address prefix. 4.4. KEEPALIVE Message Format BGP does not use every TCP-based, keep-alive mechanism to determine if peers will reachable. Instead, KEEPALIVE events are switch among peers often enough not to cause the Hold Timer to decay. A reasonable maximum time amongst KEEPALIVE press would be one third of the Contain Time interval. KEEPALIVE messages MUST NOT be sent more frequently than one per second. Can implementation ALLOW adjust of pricing at which it transmit KEEPALIVE messages as a item of the Keep Time interval. If the negotiated Hold Time time is zero, then periodic KEEPALIVE messages REQUIRED NOT are sent. A KEEPALIVE communication consists of only the word headers and features adenine extent of 19 octets. 4.5. NOTIFICATION Message Format A DECLARATION message is sent whenever an error condition is detect. An BGP joining is closed immediately after it is sent. Rekhter, et al. Standards Track [Page 21]
RFC 4271 BGP-4 January 2006 Int addition for the fixed-size BGP header, the REPORTING message includes 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 (variable) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Bug Code: This 1-octet unsigned integer indicating which type out NOTIFICATION. The following Error Codes have past defined: Error Code Symbolic Name Reference 1 Message Lintel Error Section 6.1 2 OPEN Message Bug Section 6.2 3 UPDATE Message Error Section 6.3 4 Maintain Timer Expired Artikel 6.5 5 Finite State Machine Default Abteilung 6.6 6 Cease Section 6.7 Flaw subcode: Here 1-octet unsigned integer provides more specific information about the nature of the announced error. Each Defect Password may have an or more Error Subcodes associated with it. If no appropriate Blunder Subcode is defined, then a zero (Unspecific) value remains used for the Error Subcode field. Message Nosedive Error subcodes: 1 - Connection Not Synchronized. 2 - Bad Embassy Length. 3 - Bad Message Type. Rekhter, et al. Norms Track [Page 22]
RFC 4271 BGP-4 Jan 2006 OPEN Letter Error subcodes: 1 - Unsupported Version Number. 2 - Bad Peer SINCE. 3 - Bad BGP Identifiers. 4 - Non Optional Parameter. 5 - [Deprecated - see Appendix AMPERE]. 6 - Inappropriate Maintain Time. UPDATE Message Error subcodes: 1 - Malformed Attribute List. 2 - Unrecognized Well-known Attribute. 3 - Missing Well-known Attribute. 4 - Property Flags Error. 5 - Attribute Size Error. 6 - Invalidated ROOT Attribute. 7 - [Deprecated - see Appendix A]. 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 Bugs Code and Bugs Subcode. See Section 6 for more details. Note the the output a the Data field can be determined from the notice Gauge field by the formula: Message Length = 21 + Data Length The min length of the SUBMIT note is 21 octets (including message header). 5. Pass 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. Rekhter, et allen. Industry Track [Page 23]
RFC 4271 BGP-4 January 2006 BGP implementations NEEDS recognize get well-known attributes. Some concerning these attributes are mandatory and MUST be included in either UPDATE send that contains NLRI. Others been optional plus COULD or MAY NOT be sent in a particular UPDATE message. Once a BGP peer has updated any well-known attributes, it REQUIRED pass these attributes to its nobles in any updates a transmits. In increase to well-known attributes, each road CAN contain one or more optional attributes. It is not requires or expected ensure all BGP implementations support get optional attributes. The handling von with unrecognized optional attribute is determined by the setting of the Transistorized chew in the attribute flags octet. Paths at unrecognized transitive optional attributes SUPPOSED be accepted. If an path with an unrecognized transitive optional attribute is accepted and passed to other BGP peers, then the unrecognized transitive elective attribute of that path MUST be passed, all is an path, to other BGP peers with the Partial bit in the Attribute Flags octet set until 1. If an path by a recognized, transitive optional attribute is accepted and passed along to other BGP peers and the Partial bit in the Attribute Flags octet is set at 1 through some previous AS, it MUST NOT be set back to 0 by the current FOR. Unrecognized non-transitive optional attributes MUST being quietly ignored plus not passed along to other BGP peers. New, transistorized selective attributes MAY be attached toward the paths the which originator conversely according anyone other BGP speaker in the walk. If they are cannot added by the originator, and Partial bit in that Share Flags octet remains set to 1. The rules for attaching new non-transitive optional attributes will depend on the nature of the specific attribute. One documentation concerning every new non-transitive selective attribute want be planned for include such rules (the description of the MULTI_EXIT_DISC attribute imparts an example). All optional attributes (both transitive both non-transitive), MAY shall updated (if appropriate) per BGP speakers in the path. The sender of an UPDATE message SHOULD order path attributes within the UPDATE message in ascending order a quality type. The receiver of einer UPDATE message MUST be prepared to handle direction attributes within UPDATE communications that been exit of order. The sam characteristics (attribute with the same type) cannot appear better than once within the Path Attributes field by an particular UPDATE message. Rekhter, et all. Standards Track [Page 24]
RFC 4271 BGP-4 January 2006 That mandatory category refers to an attribute that MUST shall present in both IBGP and EBGP exchanges if NLRI are contained in the UPDATE message. Attributes classifies like choose on the purpose von the protocol extension mechanism may be purely discretionary, discretionary, required, or disallowed on certain contexts. attribute EBGP IBGP ROOT mandatory essential AS_PATH mandatory mandatory NEXT_HOP mandatory mandatory MULTI_EXIT_DISC discretionary discretionary LOCAL_PREF see Section 5.1.5 required ATOMIC_AGGREGATE see Abschnitt 5.1.6 press 9.1.4 AGGREGATOR discretionary discretionary 5.1. Passage Attribute Usage The application of each BGP path attribute is characterized in the following clauses. 5.1.1. ORIGIN ORIGIN is a well-known mandatorily attribute. The ORIGIN attribute a generated by the speaker that originates the associated routing information. Its value SHOULD NOT be changed in each other speaker. 5.1.2. AS_PATH AS_PATH can adenine well-known required add. This attribution identifies the autonomous systems through any routing information worn in this GET message has passed. The components of this item can be AS_SETs instead AS_SEQUENCEs. When one BGP speaker propagates a route it learned from another BGP speaker's UPDATE message, it modify the route's AS_PATH attribute based on the location of the BGP speaker to which the anfahrt willingly be sent: a) When one presented BGP public advertises who route to an internal peer, the advertising speaker SHALL NOT modify the AS_PATH attribute associated with the route. b) Available ampere given BGP speaker promotional the route to an external peer, the advertising speaker updates the AS_PATH customize in follows: Rekhter, at al. Standards Track [Page 25]
RFC 4271 BGP-4 January 2006 1) if the first ways segment of the AS_PATH exists von type AS_SEQUENCE, and local system prepends its have AS number as the last element of the sequencer (put it in the leftmost position with respect for the positioner of octes in this protocol message). If the trade of prepending will cause a overflow in the AS_PATH segment (i.e., get than 255 ASes), it OUGHT prepend an new segment of type AS_SEQUENCE and prepend its own AS number to those new segment. 2) if the initially path segment of the AS_PATH is of type AS_SET, the local system prepends adenine new path select of type AS_SEQUENCE to the AS_PATH, including its own AS numbering in that segment. 3) if one AS_PATH is emptied, the local system creates an path segment of type AS_SEQUENCE, city its own AS into that segment, real places that segment into who AS_PATH. When one BGP speaker dates adenine take then: a) that originating speakers includes their own AS number for a path segment, of type AS_SEQUENCE, in the AS_PATH attribute of all UPDATE press submitted to an outer peer. In this case, to AS item of the originating speaker's standalone system will will the only entry the path field, and this path division will be the only segment in the AS_PATH attribute. b) the originate guest includes an blank AS_PATH attribute in all UPDATE messages sent to internal peers. (An empty AS_PATH attribute is the whose extent field contains the value zero). Whenever the modification of this AS_PATH attribute calls with contains or prepending the AS number of the native system, the local systems MAY include/prepend more easier one instance von your personalized AS number in the AS_PATH attribute. This is controlled above local configuration. 5.1.3. NEXT_HOP The NEXT_HOP is a well-known mandatory attribute that defines the TYPE address of aforementioned router that SHOULD be used as the view hop to the destinations listed in the UPDATE message. The NEXT_HOP attribute belongs calculated as follows: 1) When sending adenine message to an internal peer, is the route is not area origination, the BGP speaker SHOULD NOT modify the NEXT_HOP attribute excluding it has been explicitly configured to register its own IP address as the NEXT_HOP. When announce a Rekhter, a al. Standards Track [Page 26]
RFC 4271 BGP-4 January 2006 locally-originated route the certain internals peer, who BGP speaker SHOULD use the interface address of to router through which the announced network remains reachable for the speaker in the NEXT_HOP. Wenn the route a directly connect to the speaker, with if the interface address of the router through which the previous network is reachable for the speaker is the internal peer's tackle, then the BGP speaker SHOULD usage its own INTELLECTUAL handle to one NEXT_HOP option (the address of of interface that is used to reach the peer). 2) When sending a message until one external peer, EFFACE, and of peer is one IP hop away from the speaker: - Whenever the route person notified was knowledgeable from certain internal playing or exists locally originated, the BGP speakers can use an interface address of the internal peer router (or the internal router) through whose the announced networking is reachable for the speaker for of NEXT_HOP attribute, provided that peer X shares a common subnet over on address. This is a form of "third party" NEXT_HOP attribute. - Otherwise, if the route being announced was learned of an external peer, the speaker capacity use einem IP address of any adjacent routers (known for the receive NEXT_HOP attribute) so this speaker them typical for local fahrweg calculation in the NEXT_HOP attribute, provided that peer X shares a common subnet with this address. This is a second mold of "third party" NEXT_HOP attribute. - Otherwise, if the external peer to which the routen is being advertised share a common subnet with one von the connector off the advertise BGP speaker, the speaker COULD getting the IP home accompanying with such an interface in the NEXT_HOP set. Here is popular as one "first party" NEXT_HOP attribute. - By default (if not of the over general apply), the BGP public SHOULD use the IV address the who interface that who speaker purpose to found the BGP connection to peer EXPUNGE into the NEXT_HOP attribute. 3) When sending a message to an external peer EFFACE, and the peer is repeated IP hops away out the speaker (aka "multihop EBGP"): - The speaker ALLOW be configured till propagating the NEXT_HOP attribute. In this case, when advertising a route that the speaker learned from one of it peers, the NEXT_HOP attribute of the advertised anfahrt is exactly who same as the NEXT_HOP Rekhter, et al. Standards Track [Page 27]
RFC 4271 BGP-4 January 2006 attribute of the learned route (the speaker does not modify the NEXT_HOP attribute). - By default, the BGP guest SHOULD use the IP address of the interface that who speaker uses in aforementioned NEXT_HOP attribute to establish the BGP connection to peer X. Normally, the NEXT_HOP attribute belongs chosen such that and shortest available course willingly can taken. A BGP speaker MUST be able to support the disabling advertisement of third party NEXT_HOP attributes in order to handle imperfectly bound media. A route produced by a BGP speaker SHALL NOT be advertised to a peer using an address of that counterpart as NEXT_HOP. A BGP speaker SHALL NOT install a route with itself as the next hop. The NEXT_HOP attribute a used by the BGP speaker to determine the actual outbound communicate and immediate next-hop address that SHOULD be applied to forward transit packets to the associated destinations. That directly next-hop address will determined by performing a recursive route lookup operation for the IP address in the NEXT_HOP attribute, using the contents of the Leiten Tab, selecting one home if multiple entries off equal cost persist. The Routing Tab entry that resolves the IP address are the NEXT_HOP attribute will always specify of outbound interface. If the entry specifies an attached subnet, not does not specify a next-hop address, then which address in the NEXT_HOP attribute NEED be often as the immediate next-hop contact. If the entry also specifies the next-hop address, this address SHOULD be exploited as the immediate next-hop address for packet forwarding. 5.1.4. MULTI_EXIT_DISC The MULTI_EXIT_DISC is an optional non-transitive attribute which is intended until be used with outward (inter-AS) links to discriminate between multiple exits or entry points to the alike neighboring AS. The value of the MULTI_EXIT_DISC attributes are a four-octet unsigned number, called adenine metric. All other factors person equal, the exit point with the lower metric SHOUD be preferred. Is receivable over EBGP, of MULTI_EXIT_DISC attribute MAY breathe propagated over IBGP to other BGP speakers within the same AS (see also 9.1.2.2). The MULTI_EXIT_DISC attribute preserved from a neighbors AS MUST NOT be propagated to other neighboring ASes. A BGP speaker NEED implement a mechanism (based turn local configuration) that allows the MULTI_EXIT_DISC attribute to be removed from a route. Provided a BGP speaker is config to remove the Rekhter, et al. Norm Track [Page 28]
RFC 4271 BGP-4 January 2006 MULTI_EXIT_DISC attribute from a route, than this removal MUST becoming done prior to determining the degree of preference of the route and prior in performing route selection (Decision Process phases 1 and 2). With implementation COULD also (based on area configuration) alter the value in the MULTI_EXIT_DISC attribute received over EBGP. If a BGP speaker is configure to alter the value of the MULTI_EXIT_DISC attribute received over EBGP, then altering the value MUST exist completed prior to determining the degree regarding preference are this route and prior to implementing route selection (Decision Process phases 1 and 2). See Section 9.1.2.2 in necessary restrictions on this. 5.1.5. LOCAL_PREF LOCAL_PREF is a well-known attribute that SHALL be included in all UPDATE messages so a predefined BGP speaker sending to other inner peers. A BGP speaker SHALL calculate the degree of preference by each external route based on the locally-configured policy, and include the degree of preference when commercial a route to its internal colleagues. The higher degree of preference MUST be preferable. A BGP speaker uses of degree of preference learned via LOCAL_PREF in its Decision Process (see Section 9.1.1). A BGP speaker MUST NOT included this add in UPDATE messages it sends to external peers, except in the case of BGP Confederations [RFC3065]. If it lives controlled in an UPDATE message such is received from an external peer, then this attribute MUST be ignored by who receiving speaker, except in the case of BGP Confederations [RFC3065]. 5.1.6. ATOMIC_AGGREGATE ATOMIC_AGGREGATE is an well-known discretionary attribute. When a BGP speaker aggregates few routes for the purpose of advertisement to a particular peer, the AS_PATH of the aggregated route normally includes somebody AS_SET formed from the set of ASes from which the aggregate was developed. In many cases, an network administrator can determine if the whole can safely be advertised without aforementioned AS_SET, or without forming route loops. If an aggregate excludes at lease einige of the AS numbers present in the AS_PATH to the routes that are totalized while a erfolg away dropping which AS_SET, the cumulative route, when advertised to one peer, SHOULD include the ATOMIC_AGGREGATE attribute. Rekhter, et aluminum. Standards Track [Page 29]
RFC 4271 BGP-4 January 2006 A BGP speaker that receives an route equipped the ATOMIC_AGGREGATE feature SHOULD NOPE remove the attribute when disseminating the route to additional speakers. ONE BGP speaker the receives a route with the ATOMIC_AGGREGATE attributing MUST NOT make any NLRI of that route more unique (as defined into 9.1.4) at advertising this route till misc BGP speakers. A BGP speaker so receives a route with aforementioned ATOMIC_AGGREGATE attribute needs to exist aware of the fact that the actual path to destinations, as specified in the NLRI of the route, while having this loop-free real, may not be and ways default in to AS_PATH attribute away the route. 5.1.7. ACCUMULATOR AGGREGATOR a an optional transitive attribute, which ALLOWED be included in updates that belong formed by aggregation (see Section 9.2.2.2). A BGP orator that performs weg summarize MAY add of AGGREGATOR attribute, which SHALL included it own AS amount and INFORMATICS address. This IP address SHOULDN be the same as the BGP Identifier in the speaker. 6. BGP Error Handling. This section describes actions to be taken when errors what detected while processing BGP messages. When any of the conditions described here are detected, a WARNING letter, with the indicated Error Code, Error Subcode, and Dates array, is sent, and aforementioned BGP connection is sealed (unless it is explicitly stated the no NOTIFICATION message exists to be dispatched additionally to BGP connection lives not to subsist closed). If none Default Subcode the specified, then a zero MUST are used. The phrase "the BGP connection is closed" means the TCP connection can been closed, the associated Adj-RIB-In has was clean, and all resources by that BGP connection having been deallocated. Listings in the Loc-RIB associated with the remote peer are marked how invalid. The local method recalculates its best routes for the destinations of the routes marked as invalid. From the invalid routes are deleted starting of system, it advertises, to its peers, either removals for the routes marked as invalid, conversely an new best routes before which disabled distance are deleted from the system. Save specified explicitly, the Data field of which SUBSCRIPTION message which be sent to indicate an error is empty. Rekhter, et al. Standards Track [Page 30]
RFC 4271 BGP-4 January 2006 6.1. Message Header Error Handling All bugs recognition while processing the Message Header MUST be indicated by forward to NOTIFICATION sending is to Error Code Message Header Error. The Error Subcode elaborates set this specific nature of the error. The expected value of the Marker field of the message leader has all unit. If the Marker province in of communication header is cannot as expected, therefore a synchronization error has occurred both the Error Subcode MUST be pick to Connection Not Synchronized. If by minimal neat of and following is true: - if the Length field of the message header is less than 19 or greater than 4096, or - if this Length field of an OPEN message is less than the minimum length away the OPEN message, or - wenn the Length field of an UPDATE message is less than the minimum length of the UPDATE messages, or - if which Length box of a KEEPALIVE communication is not equal to 19, or - if the Length field of one NOTIFICATION message is less when the slightest length of the NOTIFICATION message, then the Error Subcode MUST be set to Bad Notification Height. The Datas field MUSTS contained the erroneous Length field. If the Type field of the message header is not awarded, then the Error Subcode MUST be set to Bad Notification Type. The Data field MUST contain the erroneous Type field. 6.2. OPEN Message Error Handling All errors spotted while processing the OPENS notice MUST be indicated the sending the NOTIFICATION message with this Error Code OPENING Message Error. The Flaws Subcode details on the specific nature of the error. If the version numbering in the Version section of the received OPEN message is not supported, then the Error Subcode MUST be set to Unaided Version Number. The Data field can a 2-octet unsigned integer, which indicate the largest, locally-supported version serial lesser than the version the distance BGP peer bid (as show in Rekhter, et al. Standards Track [Page 31]
RFC 4271 BGP-4 Year 2006 the received OPEN message), or are the smallest, locally-supported version piece lives greater with this version the remote BGP peer bid, then the minimum, locally-supported version number. For the Autonomy Structure field of the OPEN message is unacceptable, then the Faults Subcode HAVE be set to Wanne Peer AS. The defining of acceptable Autonomous Verfahren numbers will outside aforementioned scope of this protocol. If the Hold Zeiten field out one OPEN message is unacceptable, then the Error Subcode MUST be set for Unacceptable Hold Time. An implementation REQUIRE reject Hold Time key of one or two per. Can implementation MAY reject any proposals Hold Time. An performance the accepts a Pause Time NEEDS use the negotiated value for the Hold Time. If the BGP Identifier field of the OPEN message is syntactically incorrect, later one Error Subcode MUST be set at Baden BGP Designator. Syntactic precision means ensure the BGP Identifier field representation a valid unicast IP host address. Are one of the Optional Parameters in the OPEN message is not recognized, then the Error Subcode HAVE be set to Unsupported Choice Parameters. If one of the Optional Parameters in the UNLOCK message is acknowledged, but is malformed, then the Default Subcode MUST be set to 0 (Unspecific). 6.3. UPDATE Message Error Manual All errors detected while processing the UPDATE sending MUST must said by submit the NOTIFICATION notice with the Error Code UPDATE Send Error. The error subcode expands on the precise character of who error. Oversight checking of can UPDATE message begins by examining the path attributes. If the Withdrawn Routes Long or Total Attribute Piece is too large (i.e., if Withdrawn Routes Length + Total Attribute Max + 23 exceeds the message Length), then the Faults Subcode MUST be set into Malformed Attribute List. When any detection attribute have Feature Flags that conflict with who Attribute Type Code, then an Failures Subcode MUST be set in Attribute Flags Error. Which Data field MUST contain the inaccurate attribute (type, linear, and value). Rekhter, et al. Standards Track [Page 32]
RFC 4271 BGP-4 January 2006 If any registered attribute has an Attributable Length that disputes about the expected length (based on the attribute type code), then the Error Subcode MUST be set to Attribute Overall Error. Of Data field MUST contain the erroneous attribute (type, length, and value). If any of the well-known required attributes are not present, then the Bugs Subcode MUST be set to Missing Well-known Add. This Data field MUST contain the Attribute Type Code of the missing, well-known attribute. If any of the well-known must attributes are not recognized, will the Error Subcode MUST be set to Unrecognized Well-known Attribute. The Data field MUST include the unrecognized attribute (type, length, and value). If the SITE attribute has an undefined value, when to Error Sub- code MUST be set in Ineligible Origin Attribute. The Data panel SHOULD contain the unrecognized select (type, length, real value). If the NEXT_HOP attribute field is syntactically incorrect, then the Error Subcode MUST be set to Invalid NEXT_HOP Quality. The Data field MUST contain the incorrect attribute (type, length, real value). Syntax-based correctness means that the NEXT_HOP attribute represents a va IP play address. And IP address in the NEXT_HOP MUST meet that following criteria to become considered meaningly correct: a) Thereto MUST NOT be the IP address of the receiving speaker. b) In the box of any EBGP, where the sender real receiver are one IP hop go from each other, either the IP address in the NEXT_HOP MUST be the sender's TYPE address that is former to establish to BGP connection, or the user associated through the NEXT_HOP IP company MUST share ampere common subnet with the receiving BGP speaker. If the NEXT_HOP attribute remains semantically incorrect, the error SHOULD shall logged, and and route SHOULD be ignored. In this case, a NOTIFICATION message SHOUD NOT be sent, and one connection SHOULD NO be closed. The AS_PATH attribute is checked for syntactic correctness. If that path is syntactically schlecht, then the Error Subcode MUST can set to Malformed AS_PATH. Rekhter, et al. Standards Track [Page 33]
RFC 4271 BGP-4 January 2006 If aforementioned UPDATE message is received upon an external peer, the local system MAY impede either that leftmost (with show to the item of octets in the protocol message) AS in to AS_PATH attribute is equal to the autonomous system number of the playing that sending the embassy. If the check determines this is not the case, the Error Subcode MUST be set to Misshapen AS_PATH. If an optional attribute is recognized, then the value starting this feature MUST be checked. Is an error is detected, to attribute MUST be discarded, and the Error Subcode MUST be set to Optional Attribute Error. Of Data field MUST contain the attribute (type, length, and value). Whenever any attribute appears more than once in the UPDATE get, when the Error Subcode MUST be set to Malformed Attribute List. Who NLRI user in the UPDATE message is checked for syntactic validation. If the field are syntactically incorrect, then the Error Subcode MUST may set to Invalid Network Field. If a prefix in an NLRI arena is significantly incorrect (e.g., an unexpected multicast IP address), an failed SHOULD is logged locally, additionally the prefix OUGHT be ignored. An UPDATE message that contains correct path attributes, however don NLRI, TO be treated as a valid UPDATE message. 6.4. NOTIFICATIONS Get Defect Handling With a peer sends a DECLARATION message, and and receiver of the news detect an error included that message, the receiver cannot use a NOTICE message to report this mistake back to the peer. Whatever so oversight (e.g., an unacknowledged Error Code or Error Subcode) SHOULD be noticed, logged locally, furthermore bringing into the heed of the administration of that peer. The means to execute this, however, lies outdoor the scope of this document. 6.5. Hold Timekeeper Outdated Error Handling If a system will not receive successive KEEPALIVE, UPDATE, and/or NOTIFICATION messages within that period specified into the Hold Time select of the OPEN embassy, then one NOTIFICATION message with the Pause Timer Gone Error Password is send press one BGP connection is closed. Rekhter, et ale. Standards Track [Page 34]
RFC 4271 BGP-4 Monthly 2006 6.6. Infinitely State Machining Flaws Handling Any error detected by this BGP Finite State Machining (e.g., receipt of an unexpected event) is indicated by sending the NOTIFICATION note with of Error Item Finite State Machine Error. 6.7. Cease Is an absence of any fatally bugs (that represent indicated in this section), a BGP peer ALLOWED choose, at each given time, at close its BGP power by sending the NOTIFICATION message with the Mistake Code Cease. However, the Terminate NOTIFICATION message MUST NOT be used when a fatal defect indicate by this section does exist. A BGP speaker MAYOR support the ability to impose a locally-configured, uppers bound on the number is address prefixes the speaker is willing to accept from a near. When the upper bound is reaches, the speaker, under control of local configuration, by (a) discards new address preselection off the neighbor (while holding the BGP connection includes the neighbor), or (b) terminates the BGP connection at the neighbour. If the BGP speaker decides at terminate its BGP connection with a neighbor because to number of address prefixes received from the neighbor exceeds the locally-configured, upper bound, then the speaker MUST send the neighbor adenine NOTIFICATION sending using the Oversight Key Cease. This speaker MAY also log this locally. 6.8. BGP Connection Collision Acquisition If an pair the BGP speakers trial to establish a BGP connection through jeder other simultaneously, then two side connections okay be formed. When the data IP local uses by one of diese connector is the same how the destinations IP address used over which other, and the your IP address used by the first connection has the same as the source INTELLECTUAL address used through the other, connection collision has occurred. In the special of connection crash, one about the connections MUST be closed. On to the enter of this BGP Identifier, a convention is established for detecting which BGP connection is to be preserved when one collision occurs. One convention is to compare the BGP Identifiers von the like-minded involved on the collision furthermore to retain only the connection initiator for who BGP speaker with the higher-valued BGP Identifier. Upon receipt of at OPEN notice, the local system MUST examine all of its connections so are in the OpenConfirm state. A BGP speaker MAY moreover examine connections in an OpenSent state if it knows the BGP Defining of the our by means outside of one protocol. If, among these connections, there is ampere association up a remote BGP speaker Rekhter, et al. Standards Track [Page 35]
RFC 4271 BGP-4 January 2006 whose BGP Identifier equals the to in the OPEN message, and these connection collid with the terminal over which the OPEN message is received, then the local system performing one following conflict total procedure: 1) The BGP Identifier of the local system is compared to the BGP Identifier of the remote system (as designation in the OPEN message). Comparing BGP Identifiers is done by converting them to host letter orders and working them as 4-octet unsigned integers. 2) If the value of the local BGP Identifier is less than which remote single, the local system closures the BGP connection that already exists (the one that is already in this OpenConfirm state), and accepts this BGP connection initiated by the remote system. 3) Differently, the local system closers the newly created BGP connection (the one associated with the newly received OPEN message), also continues till use the existing one (the one that has formerly in the OpenConfirm state). Unless allowed via configuration, one connection impact with an existing BGP fitting that is in the Established state causes closer von the newly created connection. Note that an connection collision cannot subsist detected with connections that are inches Rest, Connect, instead Active states. Closing the BGP connection (that erreicht off the clash resolution procedure) is accomplished over sending the NOTIFY message with the Error Code Cease. 7. BGP Version Conduct BGP speakers MAY negotiate one version of the protocol by production multiple attempt in opening a BGP connection, starting with the highest version number each BGP speaker supports. Whenever an open attempt collapse including an Error Code, OPEN Send Blunder, plus an Fail Subcode, Groundless Version Number, then an BGP speaker has available the version phone it tasted, the released item its mitglied tried, the version number passed by its peer in aforementioned NOTIFICATION message, and which version figure it supports. While the two peers do support to or more common versions, subsequently which will allowing them to schnelles determine the hiest common version. With order into support BGP version negotiation, futures translations for BGP MUST retain the format of the OPEN and NOTIFICATION messages. Rekhter, et al. Standards Track [Page 36]
RFC 4271 BGP-4 Java 2006 8. BGP Finite State Gear (FSM) The data structures and FSM stated in this document are conceptual and take did have to be implemented precisely as described around, like long as the implements support the described operating and they exhibit the same externally visible behavior. This section specified the BGP operation includes terms of a Finite State Machine (FSM). Of section falls within two parts: 1) Description of Events for the State machine (Section 8.1) 2) Account of this FSM (Section 8.2) Session merkmale required (mandatory) for each connection are: 1) State 2) ConnectRetryCounter 3) ConnectRetryTimer 4) ConnectRetryTime 5) HoldTimer 6) HoldTime 7) KeepaliveTimer 8) KeepaliveTime The state running attribute indicates an current state of an BGP FSM. The ConnectRetryCounter indicates an number of times a BGP peer does tried to establish a peer session. The mandatory attributes related to timers are described in Section 10. Each interval has a "timer" and a "time" (the initial value). The optional Current attributes belong listed below. Dieser optional attributes may be supported, either per connections conversely each local system: 1) AcceptConnectionsUnconfiguredPeers 2) AllowAutomaticStart 3) AllowAutomaticStop 4) CollisionDetectEstablishedState 5) DampPeerOscillations 6) DelayOpen 7) DelayOpenTime 8) DelayOpenTimer 9) IdleHoldTime 10) IdleHoldTimer 11) PassiveTcpEstablishment 12) SendNOTIFICATIONwithoutOPEN 13) TrackTcpState Rekhter, et al. Standards Track [Page 37]
RFC 4271 BGP-4 January 2006 The optional session attributes supported different features of to BGP functionality that have implications for the BGP FSM state transitions. Two groups of the attributes which relate up electronic are: group 1: DelayOpen, DelayOpenTime, DelayOpenTimer group 2: DampPeerOscillations, IdleHoldTime, IdleHoldTimer The first parameter (DelayOpen, DampPeerOscillations) is an optional attribute that denotes that the Timer features is active. That "Time" value indicates the initial value for the "Timer" (DelayOpenTime, IdleHoldTime). The "Timer" specifies which actual timer. Please refer to Section 8.1.1 for an declarations are the interactive between these elective attributes and the events signalled into the state machine. Abschnitts 8.2.1.3 also provides a short overview of aforementioned different types of optional attributes (flags or timers). 8.1. Events for the BGP FSM 8.1.1. Optional Events Bound to Optional Session Attributes The Inputs to the BGP FSM are events. Events can is must mandatory or optional. Some selectable events are linked to optional session attributes. Voluntary session attributes enable several groups starting FSM functionality. The linkage between FSM function, events, and the optional session attributes are described below. Group 1: Automatic Administrative Events (Start/Stop) Optional Current Attributes: AllowAutomaticStart, AllowAutomaticStop, DampPeerOscillations, IdleHoldTime, IdleHoldTimer Option 1: AllowAutomaticStart Functional: A BGP peer connect can be started and stopped on management control. This administrative control can either be manual, based to operator intervention, conversely under who control a raw that is specific to ampere BGP implementation. The time "automatic" refers to a start being issued to the BGP peer connection FSM when such philosophy determines that the BGP peer connection should be restarted. Rekhter, et al. Standards Track [Page 38]
RFC 4271 BGP-4 January 2006 The AllowAutomaticStart attribute specifies that this BGP connection supports automatic starting the the BGP connection. If the BGP implementation supports AllowAutomaticStart, the peer may be again restarted. Third extra options control one rate at which the automatic restart occurs: DampPeerOscillations, IdleHoldTime, or and IdleHoldTimer. The DampPeerOscillations option defines that which implementation engages additional logic into damp the oscillations of BGP peers in the face of sequences of automatic start and automatic stop. IdleHoldTime defines the length by time the BGP peergruppe is held is to Idle condition prior in allowing the nearest automatic restart. The IdleHoldTimer is the timer that holds the peer in Unused state. An example of DampPeerOscillations logic is an increase of the IdleHoldTime value is a BGP fachkollegin vibrated connectivity (connected/disconnected) repeatedly within ampere time period. To engage this linear, a peer would connect and disconnect 10 times within 5 proceedings. The IdleHoldTime value would be reset from 0 to 120 seconds. Added: TRUE or FALSE Option 2: AllowAutomaticStop Description: This BGP peer session optional attribute indicates that the BGP connection allows "automatic" stopping of the BGP connection. An "automatic" stop is defined as a hold under the control of implementation-specific logic. The implementation-specific logic is outdoors the scope of this specification. Values: TRUE oder FALSE Option 3: DampPeerOscillations Description: Aforementioned DampPeerOscillations optionals session attribute demonstrates that the BGP connection belongs use logic that damps BGP your oscillations in the Idle State. Rekhter, et al. Rules Track [Page 39]
RFC 4271 BGP-4 Jan 2006 Value: TRUE or FALSE Option 4: IdleHoldTime Description: The IdleHoldTime is the value that is set in the IdleHoldTimer. Key: Time in seconds Option 5: IdleHoldTimer Portrayal: To IdleHoldTimer aids in cost BGP peer oscillation. The IdleHoldTimer is used to keep the BGP peer in Idle for one particular duration. The IdleHoldTimer_Expires event can does in Section 8.1.3. Added: Time inches seconds Group 2: Unconfigured Peers Optional Session Attributes: AcceptConnectionsUnconfiguredPeers Option 1: AcceptConnectionsUnconfiguredPeers General: Of BGP FSM optionally allows the final of BGP like linking from neighbors that are not pre-configured. The "AcceptConnectionsUnconfiguredPeers" eligible session label allows the FSM to support the state transitions is allow the implementation toward accept or reject these unconfigured peers. The AcceptConnectionsUnconfiguredPeers has security implications. Please refer until which BGP Vulnerabilities document [RFC4272] for details. Value: True or False Group 3: TCP processing Optional Session Attributes: PassiveTcpEstablishment, TrackTcpState Selection 1: PassiveTcpEstablishment Rekhter, et alabama. Standardization Weg [Page 40]
RFC 4271 BGP-4 January 2006 Description: This option indicates that which BGP FSM will passively wait for the remote BGP peer to establish the BGP TCP connection. value: TRUTH or FALSE Option 2: TrackTcpState Description: Who BGP FSM generally tracks the end summary off a TCP connection attempt rather than individual TCP messages. Optionally, the BGP FSM can support additional user with the TCP connection negotiation. The activities with the TCP events may rise the amount of logging the BGP peer connection requires and the number of BGP FSM changes. Valued: TRUTH or FALSE Crowd 4: BGP Message Processing Choose Session Besonderheiten: DelayOpen, DelayOpenTime, DelayOpenTimer, SendNOTIFICATIONwithoutOPEN, CollisionDetectEstablishedState Option 1: DelayOpen Description: Which DelayOpen optional session attribute allows implementations to be configured to delay sent an OPEN message to a designated point period (DelayOpenTime). The delay allows the remote BGP Peer time to send the first OPEN message. Value: TRUE or FALSE Option 2: DelayOpenTime Description: The DelayOpenTime is the initial value fix in the DelayOpenTimer. Value: Duration in seconds Option 3: DelayOpenTimer Description: The DelayOpenTimer optional session attribute is used at delay the sending of an OPEN message on a Rekhter, et al. Standards Track [Page 41]
RFC 4271 BGP-4 Year 2006 connection. To DelayOpenTimer_Expires event (Event 12) is described in Section 8.1.3. Value: Time in seconds Option 4: SendNOTIFICATIONwithoutOPEN Device: The SendNOTIFICATIONwithoutOPEN allows adenine peer to send ampere NOTIFICATION absence first sending an START message. Without this optional seance attribute, this BGP connection assuming that an OPEN message must be sent by a peer before to the amtskollege dispatch ampere WARNING message. Value: True with False Option 5: CollisionDetectEstablishedState Description: Normally, a Detect Collision (see Section 6.8) wants be disregard in that Created state. On optional session attribute show that this BGP connection processes collisions in this Created state. Value: Really or False Note: The optional session attributes clarify of BGP FSM description forward existence features of BGP implementations. The optional session attributes may be pre-defined for an implementation press cannot readable via management interfaces for existing rectify implementing. As newly BGP MIBs (version 2 and beyond) are supported, these subject will be accessible via a management interface. 8.1.2. Executive Events An administrative event is an special in which the operator interface or BGP Policy engine signal the BGP-finite state engine to start or stop the BGP status machine. The basic start and drop indications been augmented by optional connection attributes that signal a certain type of start or stops mechanism to that BGP FSM. An example of this combination is Event 5, AutomaticStart_with_PassiveTcpEstablishment. With this event, the BGP implementation signals to the BGP FSM that the implementation is using an Automatic Start with the option to use a Power TCP Establishment. The Power TCP establishment cue that this BGP FSM will expect fork the remote website to start the TCP establishment. Rekhter, et al. Standards Track [Page 42]
RFC 4271 BGP-4 January 2006 Note that only Event 1 (ManualStart) furthermore Event 2 (ManualStop) are mandatory administrative events. All others administrative exhibitions will elective (Events 3-8). Respectively event below has a product, definition, status (mandatory other optional), real who optional session assigns that SHOULD be set during each stage. When generating Event 1 thanks Event 8 for and BGP FSM, the term specified with the "Optional Attribute Status" sparte become verified. If any of these conditions have none satisfied, then aforementioned local system should log an FSM error. The configuration of optional session attributes may be included in some implementations, both therefore may not be firm explicitly by an remote operator action. Untergliederung 8.2.1.5 characteristic these implicit surroundings of that optional session attributes. The administrative states described below may also may implicit are some implementations and no directly configurable by an external operator. Event 1: ManualStart Description: Local regelung administrator manually starter the peer connection. Condition: Mandatory Optional Attribute Status: The PassiveTcpEstablishment feature SHOULD be set to FALSE. Choose 2: ManualStop Definition: On-site system administrator manually stops the peer connection. Status: Mandatory Optional Attribute Status: No collaborative is any optional attributes. Event 3: AutomaticStart Definition: Topical system automatically starts the BGP connection. Status: Optional, depending on local system Rekhter, et al. Standards Track [Page 43]
RFC 4271 BGP-4 Jay 2006 Optional Attribute Your: 1) The AllowAutomaticStart attribute SHOULD be set to TRUTHFUL if this event occurs. 2) If aforementioned PassiveTcpEstablishment optional session assign is supported, it REQUIRE be set to FALSE. 3) If the DampPeerOscillations is supported, it SHOULD be set to FALSE at this event occurs. Event 4: ManualStart_with_PassiveTcpEstablishment Definition: Lokal system administrator manually home the peer relationship, but has PassiveTcpEstablishment selected. The PassiveTcpEstablishment optional attributes demonstrates that to peer will listen prior to establishing the connection. Status: Optional, dependency on local system Optional Attribute Status: 1) The PassiveTcpEstablishment attribute OUGHT be adjusted to TRUE if this event occurs. 2) The DampPeerOscillations attribute SHOULD be set to FALSE when this event occurs. Event 5: AutomaticStart_with_PassiveTcpEstablishment Definition: Local system automatically starts the BGP connection with the PassiveTcpEstablishment active. The PassiveTcpEstablishment optional attribute displayed ensure the peer will listen prior in establishes a connection. Status: Discretionary, contingent on local system Optional Attribute Status: 1) The AllowAutomaticStart attribute SHOULD be set to TRUE. 2) The PassiveTcpEstablishment attribute SHOULD be place to TRUE. 3) If the DampPeerOscillations attribute is supported, the DampPeerOscillations SHOULD be put to FALSE. Rekhter, aet al. Standards Track [Page 44]
RFC 4271 BGP-4 January 2006 Event 6: AutomaticStart_with_DampPeerOscillations Definition: Local system automatically starts of BGP your connection with peer oscillation damping enabled. The exact means out attenuation persistent peer oscillations is fixed by the implementation and is outside aforementioned scope of this document. Status: Free, depending to local system. Optional Attribute Your: 1) The AllowAutomaticStart set SHOULD breathe set to GENUINE. 2) The DampPeerOscillations set SHOULD live set to RIGHT. 3) The PassiveTcpEstablishment attribute SHOULD be fixed to FALSE. Event 7: AutomaticStart_with_DampPeerOscillations_and_ PassiveTcpEstablishment Definition: Local system automatically started the BGP playing link with peer cycle damping enabled and PassiveTcpEstablishment enabled. The exact method of damping persistent peer oscillations is determined due the implementation and is outer the scope of all document. Status: Optional, depending on regional system Optional Attributes Status: 1) The AllowAutomaticStart attribute SHOULDN are selected to RIGHT. 2) The DampPeerOscillations add SHOULD be set to TRUE. 3) The PassiveTcpEstablishment attribute SHOULD be set to TRUE. Event 8: AutomaticStop Definition: Local system automatically stops the BGP connection. An example of to automatic stop event is exceeding the number of prefixes used a given peer and and local system automatically disconnecting to peer. Rekhter, et al. Standards Track [Page 45]
RFC 4271 BGP-4 Monthly 2006 Status: Optional, depending on indigenous system Optional Attribute Status: 1) To AllowAutomaticStop attribute SHOULD be TRUE. 8.1.3. Alarm Events Event 9: ConnectRetryTimer_Expires Explanation: An event generated when the ConnectRetryTimer expires. Status: Mandatory Event 10: HoldTimer_Expires Definition: An event originated when the HoldTimer expires. Condition: Mandatory Event 11: KeepaliveTimer_Expires Define: An event generated when the KeepaliveTimer expires. Statuses: Mandatory Event 12: DelayOpenTimer_Expires Definition: An events generated when the DelayOpenTimer expires. Statuses: Optional Optional Attribute Status: If to event occurs, 1) DelayOpen trait SHOULD be set to TRULY, 2) DelayOpenTime attribute SHOULD exist supported, 3) DelayOpenTimer SHOULD be supported. Event 13: IdleHoldTimer_Expires Definition: An event generated when the IdleHoldTimer expires, indicating the to BGP connection has finish just for the back-off interval to prevent BGP peer oscillation. Rekhter, et alpha. Standards Track [Page 46]
RFC 4271 BGP-4 January 2006 The IdleHoldTimer is only utilized while the insistent peer oscillation damping operate are enabled by setting the DampPeerOscillations optional attribute to TRUE. Implementations not executing to persistent peer oscillation damping function may not have the IdleHoldTimer. Stats: Optional Optional Attribute Status: If this event occurs: 1) DampPeerOscillations attribute SHOULD be set to TRUE. 2) IdleHoldTimer SHOULD have just expired. 8.1.4. TCP Connection-Based Events Event 14: TcpConnection_Valid Definition: Event indicating the local system reception about a TCP port request with an valid source IP address, TCP port, destinations IP physical, furthermore TCP Hook. The clarity of invalid source and invalid destination IP address is determined by the implementation. BGP's destination hook SHOULD must port 179, as defined by IANA. TCP connection request a denoted by the domestic system receiving a TCP SYN. Status: Optional Unnecessary Attribute Status: 1) The TrackTcpState attribute SHOULD be set to TRUE if those event occurs. Event 15: Tcp_CR_Invalid Definition: Event indicating the local system reception of a TCP connection request with either an invalid origin address or port number, or an invalid destination address or port number. Rekhter, et ai. Standards Track [Page 47]
RFC 4271 BGP-4 January 2006 BGP destination port number SHOULD be 179, as defined by IANA. A TCP connection request occurs when the local system receives a TCP SYN. Status: Optional Choose Edit Station: 1) The TrackTcpState attribute should be set to TRUE provided this event occurs. Event 16: Tcp_CR_Acked Definition: Event indicating the local system's request to establish a TCP connection for the remote peer. The localize system's TCP connection sent a TCP SYN, entered a TCP SYN/ACK message, and mailed a TCP ACK. Status: Mandatory Special 17: TcpConnectionConfirmed Definition: Event indicate that this local system holds getting a confirmation that the TCP connection has been established by the remote site. The remote peer's TCP engine sent a TCP SYN. The native peer's TCP engine sent a SYNC, ACK message and now has received a finals ACK. Status: Mandatory Event 18: TcpConnectionFails Define: Event indicating so the local organization has received a TCP connection disorder notice. The removed BGP peer's TCP machine could have sent a FIN. The lokal peer would respond with a FIN-ACK. One possibility is that the local peer indicated a timeout on the TCP connection and downed the connection. Status: Mandatory Rekhter, at al. Standards Track [Page 48]
RFC 4271 BGP-4 February 2006 8.1.5. BGP Message-Based Actions Event 19: BGPOpen Definition: An event is generated when a valid FRANK message has been received. Status: Mandatory Optional Attribute Rank: 1) The DelayOpen optional attribute SHOULD be set until FALSE. 2) The DelayOpenTimer SHOULD not be running. Event 20: BGPOpen through DelayOpenTimer running Definition: An event is caused when adenine valid OPEN message has been getting for a peer so has a successfully established transport connection furthermore is currently delaying the sending of a BGP open message. Status: Optional Optional Attribute Current: 1) The DelayOpen attribute SHOULD be determined at TRUE. 2) The DelayOpenTimer SHOULD be running. Event 21: BGPHeaderErr Definition: An event is produced when an received BGP message header is does valid. Status: Mandatory Event 22: BGPOpenMsgErr Definition: An special is generated although an OPEN message has been received with errors. Status: Mandatory Select 23: OpenCollisionDump Defining: An event made administratively when adenine connection bump has been detected whilst processing into come CLEAR message also this Rekhter, et al. User Track [Page 49]
RFC 4271 BGP-4 January 2006 connection has been selected to be disconnected. See Teilabschnitt 6.8 by more information on collect detection. Event 23 is an administrative action generated by implementation logic that determines whether this connection needs to be dropping per the rules in Section 6.8. This create could occur if the FSM is implemented as two linked state machines. Status: Optional Optional Attribute Status: If the state machine is to process this event in the Established state, 1) CollisionDetectEstablishedState optional characteristic SHOULD be set to TRUE. Please note: The OpenCollisionDump event can occur by Slothful, Connect, Active, OpenSent, and OpenConfirm without any optional attributes being set. Event 24: NotifMsgVerErr Function: An event is generated when ampere NOTIFICATION receive about "version error" is received. Status: Mandatory Select 25: NotifMsg Definition: In event is create when a NOTIFICATION message is received and the error code lives anything but "version error". Status: Mandatory Choose 26: KeepAliveMsg Item: An event exists generated when a KEEPALIVE message is received. Status: Mandatory Rekhter, set al. Standards Track [Page 50]
RFC 4271 BGP-4 Per 2006 Event 27: UpdateMsg Definition: Somebody special a generated if a valid MODERNIZE message lives received. Status: Mandatory Event 28: UpdateMsgErr Definition: With event is generated when an ineligible UPDATE message is received. Statuses: Mandatory 8.2. Description of FSM 8.2.1. FSM Definition BGP MUST maintain a disconnect FSM for each customizable kollege. Each BGP peer paired in a potential connection will attempt to connect to the other, unless configured to remain in the loaf state, or configured to remain passivity. For the intention of this discussion, the enable or connecting side of the TCP connection (the side of a TCP connection sending who start TCP SYN packet) is called exits. The passive or listening side (the sender a the first SYN/ACK) is called an incoming connection. (See Section 8.2.1.1 required information about the terms active and passive used below.) A BGP implementation MUST connect to and listen on TCP cable 179 for incoming connections in addition to trying to connect to peers. For each incoming power, a state machine SHOULD be instantiated. There exits an period in which the personality of and peer on which other end of an incoming connection is known, but the BGP identifier is not popular. During this zeite, both an incoming and outgoing connection may exist for the same configured peering. This is referred to as a connectivity bump (see Section 6.8). AMPERE BGP implementation will have, at most, one FSM for each configured peering, plus one FSM for each incoming TCP connection for which the peer has not yet has identified. Each FSM corresponds to exactly one TCP connection. There may become more than one connection between adenine pair of peers if the connections have configuring on use a differently pair of IP addresses. The is referenced the as multiple "configured peerings" to the same peer. Rekhter, et al. Standards Track [Page 51]
RFC 4271 BGP-4 February 2006 8.2.1.1. Technical "active" and "passive" The terms active and passive have been inbound the Internet operator's vocabulary for almost a century and have proven useful. The lyric active and power have slightly different meanings once applied to an TCP connection or a peer. There the must to active edge and one passive side to whatsoever one TCP connections, per the definition above and the state machine lower. When a BGP speaker is configuration for active, computers might cease up on either the active or passive side of the connection is final gets established. Once the TCP port is exit, it doesn't matter whose end was enable furthermore which was passive. The only difference is in which site of the TCP connection has port number 179. 8.2.1.2. FSM and Conflict Detection There is one FSM pro BGP connection. When this connection collision occurs preceded to determining what equivalent a connection is associated with, there mayor becoming two connections for one peer. After the connection collision is resolved (see Section 6.8), the FSM since the connection that is closed SHOULD be disposed. 8.2.1.3. FSM and Optional Session Attributes Optionals Session Merkmal set either attributes that act as flags (TRUE oder FALSE) or optional timers. For optional attributes that act as flags, if the optional session attribute can be pick to TRUE over aforementioned system, and corresponding BGP FSM related must becoming promoted. For example, if the following options can be set in an BGP implementation: AutoStart and PassiveTcpEstablishment, then Events 3, 4 and 5 must be supported. If a Optional Session attribute impossible be set to TRUE, of events supporting that set of choices do nope take to be supported. Each in the optional timers (DelayOpenTimer the IdleHoldTimer) has a group off attributes that are: - flag indicating support, - Time set include Timer - Timer. The two unnecessary timers show this format: DelayOpenTimer: DelayOpen, DelayOpenTime, DelayOpenTimer IdleHoldTimer: DampPeerOscillations, IdleHoldTime, IdleHoldTimer Rekhter, et ai. Standards Track [Page 52]
RFC 4271 BGP-4 January 2006 If the flag indicating support for an any timer (DelayOpen or DampPeerOscillations) cannot be select to TRUTHFULLY, the times and events supporting is option do not have on be supported. 8.2.1.4. FSM Event Numbers The Event numbers (1-28) utilized in this state machine description aid inbound specifying the behavior of the BGP default machine. Implementations MAY getting that numbers into provide grid management information. The exact form concerning an FSM or the FSM circumstances been specific to each implementation. 8.2.1.5. FSM Actions that are Implementation Dependent At certain points, the BGP FSM specifies that BGP initialization will occur or that BGP resources will be deletes. One initialization of to BGP FSM and the partner resources depend about which policy portion of the BGP implementation. The details of these actions are outside which scope of the FSM document. 8.2.2. Infinite State Machine Idle state: Initially, the BGP schiedsrichter FSM is in who Idle state. Hereafter, to BGP gleiche FSM will be shortened to BGP FSM. In this state, BGP FSM declines all incoming BGP connections for this peer. No resources are allocated to the gleiche. In response till a ManualStart events (Event 1) or an AutomaticStart special (Event 3), the local system: - initializes all BGP resources for this peer connection, - sets ConnectRetryCounter to zero, - starts the ConnectRetryTimer with the initial value, - initiates a TCP connection to the other BGP peer, - hear for a connection this may to initiated by the remote BGP peer, and - changes its state to Connect. Of ManualStop event (Event 2) and AutomaticStop (Event 8) event are ignored in the Idle state. Rekhter, et al. Standards Track [Page 53]
RFC 4271 BGP-4 January 2006 In response to a ManualStart_with_PassiveTcpEstablishment event (Event 4) or AutomaticStart_with_PassiveTcpEstablishment event (Event 5), the local system: - initializes all BGP resources, - sets the ConnectRetryCounter to zero, - starts the ConnectRetryTimer with the initial value, - listens for a connection which may be initiated by the remote peer, and - changes its assert to Active. This exact value of the ConnectRetryTimer is a local matter, but itp SHALL be sufficiently large to allowing TCP initialization. If the DampPeerOscillations attribute is set to TRUE, the following three additional events may occur within the Idle state: - AutomaticStart_with_DampPeerOscillations (Event 6), - AutomaticStart_with_DampPeerOscillations_and_ PassiveTcpEstablishment (Event 7), - IdleHoldTimer_Expires (Event 13). With receiving these 3 events, the local system will use which events to prevent peer vibratory. The method of preventing persistent peer oscillation is outdoors the scope of this document. Any other events (Events 9-12, 15-28) receipt into the Idle state does not cause changing in the state of the local system. Connect State: In this state, BGP FSM is waiting for the TCP connection to remain completed. Who launch events (Events 1, 3-7) are ignored to the Connect state. The response to a ManualStop event (Event 2), the local system: - drops the TCP connection, - publishing entire BGP resources, Rekhter, et al. Standards Track [Page 54]
RFC 4271 BGP-4 January 2006 - sets ConnectRetryCounter to zero, - stops the ConnectRetryTimer and sets ConnectRetryTimer to zero, and - change its state to Idle. In response to the ConnectRetryTimer_Expires event (Event 9), the local system: - dropping the TCP connection, - restarts the ConnectRetryTimer, - stops the DelayOpenTimer and resettings the timer to zero, - initiates a TCP connection to the other BGP peer, - continues to listen for a connection is may be initiated for who remote BGP peer, and - dwellings inches the Connecting state. If that DelayOpenTimer_Expires occurrence (Event 12) occurs in the Connect state, the local system: - sends an OPEN message to its peer, - sets the HoldTimer to a large value, and - changes its declare to OpenSent. While the BGP FSM receives a TcpConnection_Valid event (Event 14), of TCP connection is processed, and the connection remains in the Joining state. If the BGP FSM receives a Tcp_CR_Invalid event (Event 15), the local system rejection the TCP connection, both the connection residual are the Connect state. If the TCP connection succeeding (Event 16 or Incident 17), aforementioned local system checks the DelayOpen attribute prior in processing. If and DelayOpen attribute exists set at TRUE, this localized system: - stops to ConnectRetryTimer (if running) and recorded this ConnectRetryTimer on zero, - sets an DelayOpenTimer to the initial value, and Rekhter, et al. Default Track [Page 55]
RFC 4271 BGP-4 January 2006 - stays in the Connect state. If the DelayOpen attribute are set to FALSE, the local system: - stays the ConnectRetryTimer (if running) the sets the ConnectRetryTimer to zero, - completes BGP initialization - sends an OPEN request to its peer, - sets the HoldTimer to a large value, and - changes its state to OpenSent. A HoldTimer value of 4 minutes is suggested. If the TCP connection does (Event 18), the locals system checks the DelayOpenTimer. If the DelayOpenTimer is running, the on-site system: - restarts the ConnectRetryTimer with the initial value, - stops the DelayOpenTimer and resets its value to zero, - continues to listen fork a interface that may be initiated the the remote BGP peer, and - changes it nation to Active. If and DelayOpenTimer is not running, the local system: - stops the ConnectRetryTimer to zero, - drops the TCP connection, - releases all BGP resources, and - changes its state to Idle. If an OPEN message is receiving while the DelayOpenTimer is running (Event 20), the local system: - stops this ConnectRetryTimer (if running) and sets aforementioned ConnectRetryTimer to zero, - completes the BGP initialization, Rekhter, et aluminium. Standards Track [Page 56]
RFC 4271 BGP-4 Jan 2006 - stops the clears the DelayOpenTimer (sets the value to zero), - sends an OPEN message, - sends a KEEPALIVE message, - if the HoldTimer starts value the non-zero, - starts the KeepaliveTimer with the initial value and - resets the HoldTimer to the bartered value, else, if the HoldTimer initials value is zero, - resettings an KeepaliveTimer and - resets the HoldTimer assess to zero, - and changes its state to OpenConfirm. If the select is the autonomous schaft field is the sam as the localize Autonomous System number, selected which connectors status to einen internal relation; elsewhere it will be "external". Provided BGP message header checking (Event 21) or OPEN message checking detects an error (Event 22) (see Section 6.2), the local system: - (optionally) If the SendNOTIFICATIONwithoutOPEN edit is determined to TRUE, then the local system first broadcasts a NOTIFICATION message with the appropriate error code, and then - stops the ConnectRetryTimer (if running) and sets the ConnectRetryTimer to zero, - releases see BGP resources, - drops the TCP connection, - increments the ConnectRetryCounter with 1, - (optionally) performs peer fluctuation damping if that DampPeerOscillations attribute be set to TRUE, and - changes its state to Idle. If a NOTIFICATION communication is received with a version fault (Event 24), the local system checking the DelayOpenTimer. If the DelayOpenTimer is running, who local system: Rekhter, et alpha. Standards Tracked [Page 57]
RFC 4271 BGP-4 January 2006 - stops the ConnectRetryTimer (if running) furthermore sets an ConnectRetryTimer into zero, - stays and resets the DelayOpenTimer (sets the zero), - released all BGP resources, - drips the TCP connection, and - changes its state to Idle. Whenever the DelayOpenTimer is don running, the local system: - stopped the ConnectRetryTimer and sets which ConnectRetryTimer to zero, - releases all BGP resources, - drops the TCP connection, - increments the ConnectRetryCounter by 1, - performs peer oscillation damping if the DampPeerOscillations attribute is select to Right, and - changes its state to Idle. In response to any other social (Events 8, 10-11, 13, 19, 23, 25-28), the local system: - if the ConnectRetryTimer is running, stilllegungen and resettings the ConnectRetryTimer (sets to zero), - for the DelayOpenTimer is running, stops and resets the DelayOpenTimer (sets to zero), - releases all BGP resources, - falls the TCP connection, - increments the ConnectRetryCounter by 1, - performs peer oscillation damping if the DampPeerOscillations attribute is adjust to Truly, and - changed its state in Idle. Rekhter, et al. Standards Track [Page 58]
RFC 4271 BGP-4 January 2006 Active State: In this state, BGP FSM will hard on acquire a peer by listening for, also accepting, a TCP connection. The start events (Events 1, 3-7) am ignored in that Actively state. In response go ampere ManualStop event (Event 2), the local system: - If the DelayOpenTimer shall running plus the SendNOTIFICATIONwithoutOPEN session attribute is set, the local system sends a NOTIFICATION with a Cease, - releases all BGP resources including stopping the DelayOpenTimer - drops the TCP connection, - sets ConnectRetryCounter to zero, - stops the ConnectRetryTimer and sets the ConnectRetryTimer until zero, and - changing its state to Idle. In response to a ConnectRetryTimer_Expires case (Event 9), the local system: - restarts the ConnectRetryTimer (with beginning value), - initiates a TCP connection for the other BGP peer, - continues to listen for a TCP connection that may be initiated for a remote BGP peer, and - changes its state to Connect. If this local system receives an DelayOpenTimer_Expires event (Event 12), the local system: - sets the ConnectRetryTimer to zero, - stops and clears the DelayOpenTimer (set to zero), - finished the BGP initialization, - sends the OPEN message to its remote peer, Rekhter, et alpha. Standards Track [Page 59]
RFC 4271 BGP-4 January 2006 - sets its hold scheduler till a large select, and - changed its assert go OpenSent. A HoldTimer value of 4 minutes is also suggested used dieser state transition. If the local method rezepte a TcpConnection_Valid event (Event 14), the local system processes the TCP connection flags and accommodations int the Active state. Are the local system receives one Tcp_CR_Invalid event (Event 15), the local your rejects an TCP connection the pauses in the On State. In react to the success of a TCP fitting (Event 16 button Event 17), aforementioned local verfahren checks an DelayOpen optional attribute preceded the processing. If the DelayOpen attribute is set to TRUE, of local system: - stops the ConnectRetryTimer or places the ConnectRetryTimer to zero, - sets the DelayOpenTimer to the initial value (DelayOpenTime), and - stays in the Aktiv state. If the DelayOpen attribute is set to FALSE, the local system: - sets that ConnectRetryTimer to zero, - completes this BGP initialization, - sends the OPEN message to its peer, - sentences its HoldTimer to ampere largest value, and - changes its state to OpenSent. A HoldTimer value of 4 minutes is suggests as one "large value" for the HoldTimer. If the local system receives an TcpConnectionFails event (Event 18), the local system: - reboot this ConnectRetryTimer (with this initial value), Rekhter, et al. Standards Track [Page 60]
RFC 4271 BGP-4 January 2006 - stops and cleans which DelayOpenTimer (sets and value to zero), - releases all BGP resource, - increment the ConnectRetryCounter the 1, - optionally performs peer oscillation damping if the DampPeerOscillations property is set to TRUTH, and - changes its current to Idle. If an OPEN message is received plus the DelayOpenTimer are go (Event 20), the local system: - stops the ConnectRetryTimer (if running) and sets the ConnectRetryTimer to zero, - stands additionally clear to DelayOpenTimer (sets to zero), - completes the BGP initialization, - sends any OPEN message, - sends a KEEPALIVE message, - if the HoldTimer value is non-zero, - starts aforementioned KeepaliveTimer to initial value, - resets this HoldTimer to the negotiated value, others if the HoldTimer is zero - resets the KeepaliveTimer (set to zero), - resets that HoldTimer to none, and - changes its state to OpenConfirm. If the value by the autonomous system field is the same as the local Autonomous System phone, set the connection status to an internal connection; otherwise e will be external. If BGP message header checking (Event 21) or OPEN message checking discovered on error (Event 22) (see Section 6.2), the local system: Rekhter, net total. Standards Track [Page 61]
RFC 4271 BGP-4 Jan 2006 - (optionally) sends a SUBMIT message about the appropriate error code provided the SendNOTIFICATIONwithoutOPEN attribute can set in TRUE, - sets the ConnectRetryTimer into zero, - releases all BGP resources, - dropping and TCP connection, - increments the ConnectRetryCounter by 1, - (optionally) performs peer oscillation silencing if this DampPeerOscillations attribute is set on TRUE, and - changes its declare to Idle. If an NOTIFICATION message remains received with a version bugs (Event 24), the local netz review the DelayOpenTimer. If the DelayOpenTimer is running, the local system: - stops the ConnectRetryTimer (if running) and sets the ConnectRetryTimer to zero, - stops and resets the DelayOpenTimer (sets until zero), - releases all BGP resources, - drops the TCP connection, and - changes its assert to Idle. If the DelayOpenTimer remains not running, the site system: - sentences the ConnectRetryTimer till zero, - releases all BGP resources, - drops the TCP connection, - increments the ConnectRetryCounter by 1, - (optionally) performs counterpart oscillation damping supposing the DampPeerOscillations attribute is set to TRUE, and - changes its state to Idle. Rekhter, et al. User Track [Page 62]
RFC 4271 BGP-4 January 2006 In response to anywhere other events (Events 8, 10-11, 13, 19, 23, 25-28), the indigenous system: - sets the ConnectRetryTimer to zero, - releases all BGP resources, - drops the TCP connection, - increments the ConnectRetryCounter in one, - (optionally) performs peer oscillation damping if the DampPeerOscillations attribute is set to TRUE, and - amendments its state to Idle. OpenSent: In to state, BGP FSM waits fork an OPEN request from its peer. The start events (Events 1, 3-7) are ignored to the OpenSent state. If an ManualStop select (Event 2) is issued in the OpenSent state, the local system: - sends the NOTIFICATION with ampere Cease, - sets the ConnectRetryTimer to zero, - releases all BGP resources, - drops the TCP connection, - sets the ConnectRetryCounter to zero, and - changes its state to Idle. If an AutomaticStop event (Event 8) belongs issued in the OpenSent state, the local system: - sends the NOTIFICATION with a Cease, - sets the ConnectRetryTimer to zero, - releases get the BGP resources, - drops the TCP connection, Rekhter, et al. Standards Track [Page 63]
RFC 4271 BGP-4 January 2006 - raises the ConnectRetryCounter by 1, - (optionally) performs peer oscillation damping if the DampPeerOscillations select is set to HONEST, and - changes its state to Idle. When the HoldTimer_Expires (Event 10), the local system: - sends ampere NOTIFICATION message with an bugs code Take Timer Expired, - sets the ConnectRetryTimer on zero, - releases whole BGP resources, - drops the TCP connection, - increments the ConnectRetryCounter, - (optionally) performs peer oscillation damping if of DampPeerOscillations option is set to TRUE, and - revisions its state to Idle. If one TcpConnection_Valid (Event 14), Tcp_CR_Acked (Event 16), other a TcpConnectionConfirmed event (Event 17) is received, a second TCP connection may be in progress. This second TCP connection is tracing through Connection Collisions treating (Section 6.8) until an OPEN message has received. ONE TCP Connection Request for an Invalid port (Tcp_CR_Invalid (Event 15)) is ignored. If an TcpConnectionFails event (Event 18) is received, that local system: - closes the BGP connection, - restarts the ConnectRetryTimer, - continues to listen with a connection that may breathe initiated by the remote BGP peer, and - changes his state to Active. Rekhter, et al. Standards Track [Page 64]
RFC 4271 BGP-4 Monthly 2006 When an OPEN message is received, all fields are checked for correctness. If there are none errors in the OPEN message (Event 19), that local system: - resets the DelayOpenTimer to zero, - recorded the BGP ConnectRetryTimer until zero, - sends adenine KEEPALIVE message, and - sentences a KeepaliveTimer (via the text below) - sets the HoldTimer according until the negotiated value (see Section 4.2), - changes hers state to OpenConfirm. If the negotiated hold zeitpunkt value is zero, therefore the HoldTimer and KeepaliveTimer are not started. If the value of the Independent System field is the just as the local Autonomous System quantity, then to connection is an "internal" joining; otherwise, it is an "external" joint. (This will impact UPDATE processing the described below.) If the BGP message header checking (Event 21) or OPEN message checking detects an error (Event 22)(see Section 6.2), the local system: - sends a DECLARATION message with the appropriate error code, - sets the ConnectRetryTimer to zero, - releases all BGP resources, - drops the TCP connection, - increments the ConnectRetryCounter to 1, - (optionally) performs peer oscillation damping if which DampPeerOscillations attribute is TRUE, and - changes its state on Idle. Interference detection mechanisms (Section 6.8) need up be utilized as a valid BGP FREE message belongs received (Event 19 or Event 20). Please reference to Section 6.8 for the product from the comparison. A Rekhter, et al. Morals Track [Page 65]
RFC 4271 BGP-4 January 2006 CollisionDetectDump event occurs when the BGP implementation determines, by means outer the scope of this document, the a power collision has occurred. Wenn adenine connection in the OpenSent state is determined to be the relation that must be closed, on OpenCollisionDump (Event 23) is signaled to the state machine. If such an choose is received in the OpenSent current, the local system: - sends a NOTIFICATION with adenine Cease, - sets the ConnectRetryTimer to zero, - publication get BGP resources, - drops the TCP connection, - increments the ConnectRetryCounter by 1, - (optionally) carry gleichrangig vibrating damping for this DampPeerOscillations attribute is set toward TRUE, and - changes its state to Idle. When a NOTIFICATION message is received with a build error (Event 24), to local system: - sets the ConnectRetryTimer to zero, - releases all BGP resources, - drops the TCP relationship, and - changes its state to Idle. In response to any other event (Events 9, 11-13, 20, 25-28), the local system: - forwards the NOTIFICATION with the Error Code Finite State Machine Error, - sets the ConnectRetryTimer to zero, - releases all BGP resources, - drops the TCP connection, - increments the ConnectRetryCounter by 1, Rekhter, et al. Standards Track [Page 66]
RFC 4271 BGP-4 January 2006 - (optionally) perform peer oscillation attenuation if the DampPeerOscillations attribute is set to REAL, and - changes its state to Idle. OpenConfirm State: In that country, BGP waits for a KEEPALIVE or NOTIFICATION message. Any start event (Events 1, 3-7) is ignore in the OpenConfirm state. In response to a ManualStop event (Event 2) initiated of which operator, of local system: - sends the NOTIFICATION message with a Cease, - publishing all BGP resources, - drops the TCP connection, - sets the ConnectRetryCounter to zero, - sets the ConnectRetryTimer to zero, and - changed its status to Idle. In response go this AutomaticStop event initiated of the system (Event 8), the local system: - sends the NOTIFICATION message with a Cease, - sets the ConnectRetryTimer to zero, - releases all BGP resources, - drops the TCP connection, - increments the ConnectRetryCounter by 1, - (optionally) performs peer oscillation damping provided the DampPeerOscillations attribute will set to ACTUAL, and - changes its state to Idle. If that HoldTimer_Expires event (Event 10) occurs earlier a KEEPALIVE message is received, aforementioned local system: Rekhter, et al. Ethics Track [Page 67]
RFC 4271 BGP-4 January 2006 - sends the NOTIFICATION message equipped of Error Cypher Hold Timer Expired, - sets the ConnectRetryTimer to zero, - releases all BGP resources, - drops the TCP connection, - increments the ConnectRetryCounter by 1, - (optionally) performs peer oscillation damping if the DampPeerOscillations attributable is set till TRUE, and - changes its state to Idle. If this local system bekommt a KeepaliveTimer_Expires event (Event 11), the local system: - sends a KEEPALIVE message, - restarts the KeepaliveTimer, and - remains in the OpenConfirmed state. Included of event of a TcpConnection_Valid event (Event 14), or the track of a TCP connection (Event 16 or Event 17) while in OpenConfirm, the local system needs for track the second connection. If a TCP connection is attempted with an invalid port (Event 15), the local system will disregard the second connector attempt. If the local anlage receives a TcpConnectionFails event (Event 18) from the underlying TCP or a NOTIFICATION word (Event 25), who location system: - sets the ConnectRetryTimer to zero, - releases whole BGP resources, - drops the TCP connection, - increments the ConnectRetryCounter by 1, - (optionally) performs peer oscillation reducing are the DampPeerOscillations attribute is fix to REALLY, and Rekhter, et aluminium. Standards Trajekt [Page 68]
RFC 4271 BGP-4 January 2006 - changes its state till Idle. If that localize system receives a ANNOUNCEMENT message with adenine version error (NotifMsgVerErr (Event 24)), the local system: - record the ConnectRetryTimer to zero, - releases all BGP resources, - drops the TCP connection, and - modification its state to Idle. If that local system receives a valid OPEN message (BGPOpen (Event 19)), the collision detect function remains processed per Section 6.8. If this terminal shall to be dropping due to connection collision, and localized system: - sends ampere NOTIFICATION with a Cease, - sets the ConnectRetryTimer to zero, - releases all BGP resources, - drops and TCP connection (send TCP FIN), - increments the ConnectRetryCounter by 1, - (optionally) executes peer vibration damping if the DampPeerOscillations attribute is set into CORRECT, and - changes its state to Idle. If the OPEN message belongs received, get fields are checked for correctness. If the BGP messages header checking (BGPHeaderErr (Event 21)) or START message examination detects an fault (see Section 6.2) (BGPOpenMsgErr (Event 22)), the local system: - sends a NOTIFICATION embassy equal the appropriate errors code, - sets the ConnectRetryTimer to zero, - releases all BGP resources, - drops the TCP connection, - increments the ConnectRetryCounter from 1, Rekhter, et alpha. Standards Fahrstrecke [Page 69]
RFC 4271 BGP-4 January 2006 - (optionally) performs gleich oscillating damping if the DampPeerOscillations select is set to TRUE, and - changes its state to Idle. If, during the processing of any OPEN message, the BGP implementation determines, by ampere means outside of scope of all document, that adenine connection collision has occurred and this connection is to be locking, the local systems will issue an OpenCollisionDump event (Event 23). When the locally system receives an OpenCollisionDump event (Event 23), the local system: - sends a NOTIFICATION with a Cease, - sets the ConnectRetryTimer into zero, - releases any BGP resources - droplet the TCP connection, - incremented the ConnectRetryCounter by 1, - (optionally) performs other oscillation steaming if the DampPeerOscillations attribute is set to TRUE, and - changes its state to Idle. With the local scheme gets a KEEPALIVE message (KeepAliveMsg (Event 26)), the local system: - restarts the HoldTimer and - changes its state to Established. In response go any other event (Events 9, 12-13, 20, 27-28), the local system: - sends a REGISTRATION with an coding of Finite State Machine Error, - record the ConnectRetryTimer into zero, - releases all BGP resources, - drops the TCP connection, - increments to ConnectRetryCounter by 1, Rekhter, et al. Standards Track [Page 70]
RFC 4271 BGP-4 January 2006 - (optionally) performs peer oscillation damping if the DampPeerOscillations attribute belongs set to TRUE, and - changes yours state to Idle. Set State: In the Established state, the BGP FSM can switch UPDATE, SUBSCRIPTION, and KEEPALIVE messaging with own peer. Any Start event (Events 1, 3-7) is disregarded in that Established state. By response till a ManualStop event (initiated by an operator) (Event 2), the local system: - sends to NOTIFICATION word with a Cease, - sets the ConnectRetryTimer to zero, - deletes all routes associated with this connection, - releases BGP resources, - drops the TCP connection, - recorded the ConnectRetryCounter to zero, and - changes its choose to Idle. In response up with AutomaticStop event (Event 8), one local system: - sends a NOTIFICATION over a Cease, - kit the ConnectRetryTimer to zero - deleting all tour associated with this connection, - releases everything BGP resources, - drops of TCP connection, - increments the ConnectRetryCounter by 1, - (optionally) performs peer oscillation damping if the DampPeerOscillations attribute is set to TRUE, and - changes its state to Idle. Rekhter, to al. Ethics Fahrweg [Page 71]
RFC 4271 BGP-4 January 2006 One basic to an AutomaticStop event is: A BGP receives an DATABASE messages with a number of prefixes for a given peer such is that total drop received outstrip the maximum number of preselections configuring. The local system automatically disconnects the peer. If one HoldTimer_Expires event occures (Event 10), the local system: - sends an NOTIFICATION message with which Flaw Code Press Timer Expired, - sets who ConnectRetryTimer to zero, - releases any BGP resources, - drips the TCP connection, - increments the ConnectRetryCounter by 1, - (optionally) performs peer oscillation damping if the DampPeerOscillations option is set to TRUE, and - changes its state to Idle. For the KeepaliveTimer_Expires special occurs (Event 11), the local system: - sends a KEEPALIVE send, and - restarts its KeepaliveTimer, unless the negotiated HoldTime value can zero. Anywhere time the native schaft sends a KEEPALIVE or UPDATE message, it restarts your KeepaliveTimer, unless this negotiated HoldTime value is zero. A TcpConnection_Valid (Event 14), received for a applicable port, will cause the second connection to be tracked. An incorrect TCP connection (Tcp_CR_Invalid business (Event 15)) intention be ignored. For reply in one display that the TCP connection is succeed established (Event 16 or Event 17), the second connection SHALL be tracked unless it transmits an OPEN message. Rekhter, et alpha. Standards Fahrbahn [Page 72]
RFC 4271 BGP-4 January 2006 If a valid CANDID message (BGPOpen (Event 19)) is received, and if the CollisionDetectEstablishedState optional attribute is TRUE, which OPEN message wish be verify go see supposing a collides (Section 6.8) include any misc connection. Are the BGP implementation defined that on connection what to be aborted, it wants litigation an OpenCollisionDump event (Event 23). If this joining needs to be termination, aforementioned global system: - sends a NOTIFICATION with a Cease, - sets the ConnectRetryTimer to zero, - deletes all routes beigeordnete with like connection, - releases all BGP resources, - drops to TCP connection, - increments the ConnectRetryCounter by 1, - (optionally) performs equivalent oscillation damping if the DampPeerOscillations is set to TRUE, and - changes its state at Idle. If the local system receives a NOTIFICATION message (Event 24 or Case 25) or a TcpConnectionFails (Event 18) for the underlying TCP, the local system: - sets to ConnectRetryTimer to zero, - deletes all routes associated with that connection, - releases all an BGP resources, - lowers the TCP connection, - graduations an ConnectRetryCounter per 1, - changes its state to Idle. Rekhter, et in. Reference Eisenbahnstrecke [Page 73]
RFC 4271 BGP-4 January 2006 If the local system receives a KEEPALIVE message (Event 26), the local system: - restarts its HoldTimer, if the negotiated HoldTime value a non-zero, and - remains in the Established state. If the local system got an UPDATE message (Event 27), the local system: - lawsuit who message, - restarts its HoldTimer, if the negotiated HoldTime value is non-zero, and - remains in the Established state. If the local verfahren receives an UPDATE message, and the UPDATE message error contact procedure (see Sektion 6.3) detects somebody error (Event 28), the local system: - submits a NOTIFICATION send with an Updated error, - sets of ConnectRetryTimer to zero, - deletes all routes associated with this connection, - releases all BGP resources, - drops the TCP connection, - increments the ConnectRetryCounter to 1, - (optionally) performs peer oscillation damping if the DampPeerOscillations attribute is set to TRUE, and - changes its states the Idle. In response to optional other event (Events 9, 12-13, 20-22), the local system: - sends a NOTIFICATION message with the Error Code Finite Stay Machine Error, - deletes all routes associated use this connection, - sets the ConnectRetryTimer to zero, Rekhter, set al. Standards Track [Page 74]
RFC 4271 BGP-4 January 2006 - unlocking all BGP resources, - fall the TCP connection, - increments the ConnectRetryCounter by 1, - (optionally) executes peer oscillation damping wenn the DampPeerOscillations attribute is set to RIGHT, and - changes its state to Idle. 9. UPDATE Message Handling An UPDATE message may be received only in the Established state. Receiving an UPDATE message in any other state is an error. When an DOWNLOAD notification is received, each field be checked for validity, as specifies in Section 6.3. If with optional non-transitive attribute is unrecognized, it belongs quietly neglected. 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 your recognized and has a valid value, following, depending on the type of one optional attribute, it is processed locally, withholding, and updated, if necessary, available possible propagation to diverse BGP speakers. If one UPDATE send contains a non-empty WITHDRAWN ROUTES range, this previously proclaimed routes, whose destinations (expressed as IP prefixes) belong contained in this field, SHALL be weggenommen free and Adj-RIB-In. This BGP speaker SHALL run its Decision Process because of until advertised strecke is no take available for use. If the UPDATE message contains a feasible route, the Adj-RIB-In will must updated with this route as follows: provided the NLRI of the modern route is identical go the one that route currently has stocks in who Adj- RIB-In, then the new routing SHALL replace the older route in the Adj- RIB-In, thus implicitly removing of older route from service. Otherwise, if the Adj-RIB-In has no route with NLRI identical to who new reise, the new route SHALL be placed in the Adj-RIB-In. Einmal the BGP speaker updates the Adj-RIB-In, the speaker SHALL run its Decision Process. Rekhter, et al. Standards Track [Page 75]
RFC 4271 BGP-4 January 2006 9.1. Decision Process The Decision Process selects routes for subsequent advertisement through applications the policies in the local Policy About Base (PIB) to the routes storing in its Adj-RIBs-In. The output of to Decision Process belongs the set by routes this will be proclaimed to my; the selected routes will be stored in aforementioned local speaker's Adj-RIBs-Out, according till policy. That BGP Decision Process described siehe is conceptually, and does not have to be implemented precisely as represented, when long as the implementations sales aforementioned described functionalities and they exhibit the same externally displayed behavior. The selection process is formalized by defining a usage ensure takers the attribute from one giving route as an argument and returns choose (a) a non-negative integer denoting the diploma of inclination for the route, or (b) a value denoting that is direction is ineligible to can installed in Loc-RIB or will be excluded of the next phase of route selection. The function is calculates the degree of custom for a given route SHALL NOT use any of to following as its inlets: the existence of other routes, the non-existence of other routes, or the course property of other routes. Route selection then consists regarding the individual application of the degree of preference function to respectively feasible way, followed due the choice away the one about the highest degree of preference. The Decided Process operates on routes contained in an Adj-RIBs-In, and is responsible for: - selection of routes to be used locally by the speaker - selection of routes to is advertised toward other BGP peers - route summarization plus route information reduction The Decision Processed need place within three distinct seasons, jede triggered per adenine different event: a) Phase 1 is responsible for charging the degree of preference for each route received from a peer. b) Phase 2 is invoked on completion for phase 1. It is guilty for choosing the best route out of all those open for each separate destination, and for install each chosen route include the Loc-RIB. Rekhter, et al. Standards Track [Page 76]
RFC 4271 BGP-4 January 2006 c) Phase 3 is conjured after to Loc-RIB has come modified. E is liable for diffuse routes to the Loc-RIB for each peer, according to the policies contained in one PIB. Route aggregation and company reduction sack optionally be performed within this phase. 9.1.1. Phase 1: Calculation of Degree of Preference The Phase 1 decision-making operate is invoked whenever and localized BGP lecturer receives, from a peer, an UPDATE message that advertises a new routes, one replacement route, or resigned routes. The Phase 1 decision function is a disconnect process,f which completes when it has no further work to do. The Phasen 1 decision function locks an Adj-RIB-In prior to operating on any wegbeschreibung incl within it, and unlocks it following run on see new or unfeasible routes contained within it. To each newly received or replacement feasible route, the regional BGP speaker identifies one degree of preferred how follows: If that route is learned from an internal peer, either the value von the LOCAL_PREF attribute is taken as the degree of priority, or the local system computes the degree the preference of the route based on preconfigured policy information. Remarks that the letzter may result in formation of persistent routing loops. If the route is learned from an external peer, then the local BGP speaker computes the degree of preference established on preconfigured policy information. If one return value indicates the route a ineligible, the destination MAY DOESN serve as an input to of next phase of routenplan selection; otherwise, the reset value REQUIRE subsist used as the LOCAL_PREF value int any IBGP readvertisement. The concise nature of this policy information, and the computation involved, is a local matter. 9.1.2. Phase 2: Routenplan Selektieren Of Phase 2 decision function is invoked on completion of Phase 1. The Phase 2 function a a cut process, which completes when it has no further work to do. The Phase 2 process considers all routed that are eligible with the Adj-RIBs-In. Rekhter, set al. Standards Track [Page 77]
RFC 4271 BGP-4 January 2006 The Phase 2 decision function is blocked from running while the Phase 3 decision item are in process. The Phase 2 usage locks all Adj-RIBs-In prior to commencing its features, and disable them off completion. If the NEXT_HOP attribute of a BGP routen depicts an address that is not resoluble, oder if it would be unresolvable if the route was installed to the routing table, that BGP route MUST are excluded from the Phase 2 decision function. If the AS_PATH attribute of a BGP route features an AS loop, the BGP route should become excluded from the Phase 2 decision key. AS loop spotting is over by scanning the full HOW path (as specified in aforementioned AS_PATH attribute), and examine so the autonomous system number of the local system does none appear inches the AS course. Operations of a BGP speaker that is configured to accept routing with its own autonomous organization number in who AS route are outdoor the scope of this document. It is critical that BGP pa within an AS do not produce conflicting makes regarding route selection that could cause forwarding loops in occur. Forward each pick in destinations for welche a feasible route exists are the Adj-RIBs-In, this local BGP speaker identifies the route which has: a) the highest degree of partiality of any route to that same set of destinations, or b) is the only route in that destination, or c) is selected as a result of the Phase 2 tie breaking rules specified by Section 9.1.2.2. The local speaker SHALL then install that strecken in of Loc-RIB, replacing any anfahrt to the same destination that is temporary soul held in the Loc-RIB. When to new BGP route is installed in the Routing Table, care must exist taken to ensure that existing routes to and same destination that are now considered invalid have removed free aforementioned Routing Table. Whichever the new BGP route replaces an existing non-BGP routes in the Routing Table depends to the policy default off one BGP speaker. The local speaker MUST determine aforementioned immediate next-hop address from the NEXT_HOP attribute of the selected strecke (see Section 5.1.3). Whenever either the immediate next-hop or the IGP cost to the NEXT_HOP (where the NEXT_HOP is resolved through an IGP route) changes, Phase 2 Route Selection SHALL be performed again. Rekhter, et al. Standards Track [Page 78]
RFC 4271 BGP-4 January 2006 Notice so even though BGP routes do not do to be installed in the Routing Table with the instantaneous next-hop(s), implementations MUST intake care that, before any packets were sending along a BGP route, his associated NEXT_HOP address will resolved to which immediately (directly connected) next-hop address, and that this mailing (or more addresses) is finally former for actual packet forwarding. Unresolvable routes SHALL be removed since the Loc-RIB real the routing table. Anyhow, corresponding unresolvable routes SHOULD be kept in that Adj-RIBs-In (in case they become resolvable). 9.1.2.1. Route Resolvability Condition As indicated the Section 9.1.2, BGP speakers SHOULD exclude unresolvable routes coming the Phase 2 decision. This ensures that only valid routes are installed in Loc-RIB or the Leitweglenkung Table. The route resolvability condition is defined as follows: 1) ADENINE route Rte1, reference only the intermediate network address, is considered dissolvable with one Routing Table contains at least only resolvable route Rte2 so complies Rte1's intermediary network address and is not recursively resolved (directly press indirectly) through Rte1. If numerous matching tour are available, no this longest matching route SHOULD be considered. 2) Routes referencing interfaces (with or without intermediate addresses) are thoughtful resolvable if aforementioned stay of the referenced interface is back and if INDUSTRIAL processing is enabled on this interface. BGP routes do not refer in interfaces, but canned be resolved through the routes in the Trassen Table that able be of both types (those that specify interfaces with those that achieve not). IGP avenues and routes to directly linked networks are expected to specify the outbound interface. Static routes can specify the outbound interface, the intermediate address, or both. Note that a BGP route is considered unresolvable in a situation where the BGP speaker's Routing Table comprises no route matching the BGP route's NEXT_HOP. Mutually recursive routes (routes decrease per other or themselves) also founder the releasability check. It is also important that implementations do doesn note anwendbar routes that would will unresolvable if they were installed the the Routing Table, smooth if their NEXT_HOPs are resolvable using this current substance of the Routing Tables (an example of such routes Rekhter, ets al. Setting Track [Page 79]
RFC 4271 BGP-4 January 2006 would be mutually recursive routes). This view ensures that a BGP speaker does not install routes in the Routing Table that will be remote and not used due the speaker. Thus, in additive to local Trassen Table stability, this check also improves deportment of the protocol in the network. Whenever a BGP loudspeaker identifies a route which fails the resolvability get because of mutual recursion, an error message SHOULD be logged. 9.1.2.2. Breach Ties (Phase 2) In its Adj-RIBs-In, a BGP speaker may have several travel to to same destination that have the same college of preference. Which local narrator can select no ready of these flight for inclusion in the associated Loc-RIB. The local speaker considers all routes with the identical degrees off preference, equally that receipt from internal peers, the those received from outdoors peers. The following tie-breaking methods required that, for each candidate route, all the BGP speakers within an fully organization can ascertain the cost of a path (interior distance) to the address depicted until the NEXT_HOP set of the line, and follow-up the same route selection algorithm. To tie-breaking menu begins by since all equally preferable routes to the sam destination, and then selects routes until be removed from consideration. The algorism terminates as soon as only single route remainders in consideration. The criteria SHOULD is applied with the order specified. Few of the choices are detailed utilizing pseudo-code. Note that the pseudo-code shown was chosen for clarity, does efficiency. This exists no intended to specify any particular umsetzung. BGP implementations COULD use any algorithm that produces the same results as those described here. a) Remove from consideration all routes that are not tied for will the smallest number of HOW digits present in their AS_PATH attributes. Note that when counting this number, an AS_SET counts as 1, no important how loads ASes are in the set. b) Removes from consideration all routes that are not tied for having and lowest Origin number include their Origin attribute. Rekhter, et al. Standards Track [Page 80]
RFC 4271 BGP-4 Jean 2006 c) Remove from consideration routes with less-preferred MULTI_EXIT_DISC beschaffenheit. MULTI_EXIT_DISC is only comparable within trip learned from the same neighboring AS (the neighboring AS is determined from the AS_PATH attribute). Routing that doing not have the MULTI_EXIT_DISC attribute exist considered go have an lowest possibly MULTI_EXIT_DISC value. This is also described in the following procedure: for m = all routes still under consideration for n = show routes motionless under consideration if (neighborAS(m) == neighborAS(n)) and (MED(n) < MED(m)) remove route m after consideration In an pseudo-code above, MED(n) is a function which shipment the value are route n's MULTI_EXIT_DISC attribute. If route n has no MULTI_EXIT_DISC attribute, one function returns of lowest possible MULTI_EXIT_DISC select (i.e., 0). Alike, neighborAS(n) remains a function that returns the neighbor AS from any the line be received. If and route is trained via IBGP, and the other IBGP lecturer didn't originate the route, it is the neighbor WHILE from which the other IBGP speaker learned the route. If the route is learned via IBGP, furthermore the other IBGP speaker either (a) originated the route, or (b) created the main by aggregation and this AS_PATH customize of the aggregate route your either empty button anfangen with an AS_SET, it is the local AS. If a MULTI_EXIT_DISC attribute is removed pre re-advertising a route into IBGP, then comparison based over the entered EBGP MULTI_EXIT_DISC attribute MAYBE still be performed. If an implementation chooses to withdraw MULTI_EXIT_DISC, when the optional comparison on MULTI_EXIT_DISC, if performed, MUST be played only among EBGP-learned routes. The best EBGP- learned routing may therefore be compared with IBGP-learned routes next the removal of the MULTI_EXIT_DISC feature. If MULTI_EXIT_DISC is removed from a subtotals of EBGP-learned routes, and the selected "best" EBGP-learned route will not have MULTI_EXIT_DISC taken, then the MULTI_EXIT_DISC must be used in one comparison with IBGP-learned routes. Fork IBGP- learned routes, the MULTI_EXIT_DISC MUST be used in route comparisons that reach this single in who Decision Process. Includes the MULTI_EXIT_DISC of an EBGP-learned route in to comparison with an IBGP-learned route, later withdraw an MULTI_EXIT_DISC attribute, and advertising and route has been field to cause route loops. Rekhter, et al. Standards Track [Page 81]
RFC 4271 BGP-4 Month 2006 d) If under least one of the candidate routes be maintained via EBGP, clear with consideration all paths that are got via IBGP. e) Remove from care any routes with less-preferred interior cost. That interior cost of a route is determined by calculating the metric to the NEXT_HOP for the route using which Routing Size. If which NEXT_HOP hop for adenine route the reachable, but no cost can be determined, then this step should be skipped (equivalently, consider any routes for have equip costs). These is also described the the followed procedure. for thousand = all routes still under view for n = all routes in nevertheless under consideration if (cost(n) is lower than cost(m)) remote m from consideration In to pseudo-code above, cost(n) is a function that returns the cost of one path (interior distance) go and address given in the NEXT_HOP attribute of the route. f) Remove from consideration all routes various than the route that was advertised by the BGP speaker with the low BGP Id value. g) Prefer one route received from the lowest peergruppe address. 9.1.3. Phase 3: Route Dissemination The Phase 3 decision duty is invoked on completion of Phase 2, or at any of which followed event occur: a) when routes in the Loc-RIB to topical targets have changed b) if locally generated lines learned in means outside in BGP have changed c) when a new BGP loud connection has been established The Phase 3 function belongs a separate process that completes when it has no further works to do. The Phase 3 Routing Decision function is blacked from running for the Phased 2 decision function is in process. All routes in to Loc-RIB are processed for Adj-RIBs-Out consonant to configured policy. This guidelines MAY exclude a route on the Loc-RIB from being installed in a particular Adj-RIB-Out. A route WILL NOT Rekhter, et al. Standards Track [Page 82]
RFC 4271 BGP-4 January 2006 be installed in who Adj-Rib-Out unless and destination, and NEXT_HOP does by this route, may be forward appropriately to the Routings Table. If a route in Loc-RIB is ausgeschlossenen from an particular Adj-RIB-Out, the previously advertised route in such Adj-RIB-Out MUST be removed from service by means regarding an UPDATE message (see 9.2). Route aggregation and company reduction techniques (see Section 9.2.2.1) may options be applied. Any local policy that erfolge in routes being added to an Adj-RIB-Out no also being added go the local BGP speaker's forwarding table is outside that scope of this document. When the updating of the Adj-RIBs-Out and who Routing Table shall complete, the local BGP speaker runs the Update-Send process of 9.2. 9.1.4. Overlapping Routed A BGP mouthpiece may transmit routes is overlapping Connect Layer Reachability Information (NLRI) toward another BGP speaker. NLRI overlap occurs when one set of destinations are identified in non-matching multiple routes. Because BGP encodes NLRI using IP designation, overlap will always share subgroup relationships. A route how a smaller set of destinations (a longer prefix) exists said at been see specific than a route describing a larger set of destinations (a longer prefix); similarly, a route describing adenine larger set of destinations belongs said to be less specific than a route describing a small place of destinations. The preference relationship effectively decomposes less specific routes into two parts: - a set of destinations described alone to the less specific route, and - a set of destinations description with the overlap of the less specification press the more specific routes That set are tourist describing by the wrap represents a portion of the fewer specific route that is feasible, but is does currently in use. If a more specific route is later recessed, the set of destinations described by the overlap will still be reachable using the less designated route. If a BGP speaker receives overlapping routing, the Decision Process MUST consider both routes based on an configured acceptance policy. If either ampere less and a more designated route are accepted, then the Decision-making Procedure MUST install, in Loc-RIB, either both the less and Rekhter, et al. Norms Track [Page 83]
RFC 4271 BGP-4 January 2006 the more specific routes or aggregate the two routes and install, in Loc-RIB, the aggregated route, provided that all routes have the same value of the NEXT_HOP attribute. If one BGP speaker chooses to aggregation, then it SHOULD get include all ASes used go form the aggregate for an AS_SET, or add the ATOMIC_AGGREGATE attribute to the route. This attribute is now primarily informative. With the disposal of IP routing protocols this do doesn support classless leiten, and the elimination of router and host realizations that perform nope support classless routing, there is don lengthier a need to de-aggregate. Driving HAVE NOT be de-aggregated. In particular, a route that carries the ATOMIC_AGGREGATE quality SHOULD NOT must de-aggregated. That shall, the NLRI of this travel cannot be more specific. Forwarding along such a route does not guarantee that IP packets determination effectively traverse only ASes publicly in the AS_PATH attribute of the route. 9.2. Update-Send Process The Update-Send process shall responsible for advertising UPDATE messages to see peers. For example, it distributes of routes selections with this Decision Process to other BGP speakers, which may be located inches either the same autonomous system or a neighboring autonomous system. When a BGP speaker receives an LATEST message from one internal peer, the receiving BGP loudspeaker SHALL NOT re-distribute the conquest information include in that UPDATE message to other internal colleagues (unless which speaker acts as adenine BGP Route Reflector [RFC2796]). As part of Phase 3 of the route selection process, the BGP speaker has updated its Adj-RIBs-Out. All newly installed routes and all newly feasible routes used which there is no replacement route SHALL to advertised to their peers through means of an UPDATE message. A BGP speaker SHOULD NOT advertise a provided feasible BGP route from its Adj-RIB-Out if it would manufacture at UPDATE message with the same BGP route as was previously advertised. Any routes in the Loc-RIB marked as unsuitable SHALL be removes. Changes in the reachable tourist within its own autonomous method SHALL also become advertised in an UPDATE message. If, due to which limits on of maximum bulk of somebody UPDATE message (see Section 4), a single route doesn't fit toward the message, the BGP speaker MUST not advertise the route to its peers also MAY choose until log an error locally. Rekhter, et ai. Standards Track [Page 84]
RFC 4271 BGP-4 Java 2006 9.2.1. Controlling Routing Traffic Overhead The BGP protocol restrictive the amount of routing traffic (that is, UPDATE messages), in order on limit both the linkage bandwidth needed to advertise UPDATE messages and the processing power needed via one Decision Process to digest that information contained at the UPDATE messages. 9.2.1.1. Frequency of Route Advertisement That parameter MinRouteAdvertisementIntervalTimer defined the minimum amount of time this must elapse between an advertisement and/or withdrawal off routes to a particular destination by a BGP speaker toward a peer. This evaluate limiting operating applies on an per- destination basis, although the value of MinRouteAdvertisementIntervalTimer is set on a per BGP peer basis. Two UPDATE correspondence sent by a BGP speaker to a kollegin that ad feasible routes and/or withdrawal of unfeasible routes to einigen common sets of tourist MUST be separated by at least MinRouteAdvertisementIntervalTimer. This bottle only be achieved per keeping adenine separate timer for each common adjusted of destinations. To want be groundless overhead. No technique such ensures that the interval between two UPDATE messages posted from a BGP speaker to an peer so advertise possible routes and/or disengage of unfeasible routes to some common select for destinations will been at least MinRouteAdvertisementIntervalTimer, and will also ensure that a constant upper bound on the interval is acceptable. Because fast convergence is need within einem autonomous device, by (a) and MinRouteAdvertisementIntervalTimer used for interior peers SHOULD be length than the MinRouteAdvertisementIntervalTimer employed for external peers, or (b) the procedure describe in get unterabschnitt SHOULD NOT how to routes sent to internal peers. This procedure does not set the rate of route selection, but only the rate von route advertisement. If new routes are selected multiple multiplication while awaiting the expiration of MinRouteAdvertisementIntervalTimer, the last anfahrt selected SHALL be advertised at the end of MinRouteAdvertisementIntervalTimer. 9.2.1.2. Frequency von Route Origination The parameter MinASOriginationIntervalTimer determines the minimum amount of time ensure must elapse between successive advertisements of UPDATE messages that report modification within the advertisements BGP speaker's own autonomous systems. Rekhter, et al. Standards Track [Page 85]
RFC 4271 BGP-4 January 2006 9.2.2. Efficient Organization of Routing Information Having selected the routing information it willingness advertise, a BGP speaker mayor avail itself of several methods to organize this information in an efficient manner. 9.2.2.1. Information Size Information reduction may intimate an reduction inbound granularity of policy control - after information is collapsed, an same policies will apply to all destinations and walks in the equivalence class. The Decision Process may optionally reduce the amount of information that it becoming place in the Adj-RIBs-Out by any of aforementioned following methods: a) Network Layer Reachability About (NLRI): Destination IP addresses can be represented as INFORMATICS web prefixes. On cases location there is a correspondence between aforementioned address structure and that systems under control on an self-governing anlage administrator, it will be potential to reduce which extent of the NLRI carried in the UPDATE messages. b) AS_PATHs: FOR track request can be represented as command AS_SEQUENCEs oder unranked AS_SETs. AS_SETs be used in the travel aggregation algorithm declared in Section 9.2.2.2. They reduce the volume of the AS_PATH informational through listing jeder THAN number available once, regardless of how many days it may have appeared to multiples AS_PATHs that were aggregated. Certain AS_SET implies such the destinations listed in aforementioned NLRI can become reached through paths that roam among least some of the constituent autonomous systems. AS_SETs provide suffi information to avoids routing information looping; however, their use mayor cutting potentially feasible passes because such paths are no longer enumerated severally in the form of AS_SEQUENCEs. In practice, to is not likely to may a problem due once an IP packages gets on the edge of ampere group of autonomous systems, the BGP speaker is probable to have more detailed path contact and can distinguishes custom paths from destinations. Rekhter, et al. Standards Track [Page 86]
RFC 4271 BGP-4 January 2006 9.2.2.2. Aggregating Routing Information Aggregation is the process of combining the characteristics of several different routes in how a way that a single main can be advertised. Data able occur because part of who Decision Process to reduce the amount concerning routing information that will are put in the Adj-RIBs-Out. Aggregation reduces the amount of information that a BGP speaker must store and change with other BGP speakers. Routes can be aggregated by applying the following procedure, separation, to path attributes of the same type both to the Network Sheet Reachability Information. Routes such have different MULTI_EXIT_DISC property SHALL NOT be aggregated. If the aggregated reise has an AS_SET as the first element in its AS_PATH attribute, then the router that originates of route SHOULD NO advertise who MULTI_EXIT_DISC attribute with this route. Path attributes the have difference species codes does are grouped together. Path eigenschaft of the same type code may shall aggregated, accordance to the following rules: NEXT_HOP: At aggregating routes that have differentially NEXT_HOP attributes, the NEXT_HOP attribute of that aggregated route BE identify an output on the BGP spokesperson that performs the aggregation. ORIGIN set: Supposing at least a route among routes that can aggregated has ORIGIN with the value INCOMPLETE, therefore that aggregated route SHOULD must the ORIGIN attribute with the values INCOMPLETE. Otherwise, if at least one route among routes that are aggregated had COUNTRY with the value EGP, then the aggregated route MUST have the ORIGIN attribute with who value EGP. In all other cases,, the value of the ORIGIN attribute of the cumulated route is IGP. AS_PATH attribute: When routes in be aggregated have identical AS_PATH attributes, then the aggregated route has the same AS_PATH attribute as each individual route. Since to purpose of aggregating AS_PATH attributes, we model any AS within the AS_PATH attribute than a tuple <type, value>, where "type" identifies a type of the path segment the AS Rekhter, et al. Standards Track [Page 87]
RFC 4271 BGP-4 January 2006 belongs to (e.g., AS_SEQUENCE, AS_SET), also "value" identified the AS amount. If the routes till be aggregated got different AS_PATH attributes, subsequently the summarized AS_PATH attribute SHALL satisfy all in the following conditions: - all tuples of type AS_SEQUENCE stylish this aggregative AS_PATH SHALL appear in all of the AS_PATHs in the initial set of routes up be aggregated. - all tuples of type AS_SET stylish the cumulated AS_PATH SHALL appear in at least to of that AS_PATHs in the initial set (they mayor appear as either AS_SET or AS_SEQUENCE types). - for any tuple X of type AS_SEQUENCE in one total AS_PATH, which precedes tuple Y in the aggregated AS_PATH, X precedes Y in respectively AS_PATH in the initial set, which contains Y, regardless of the type of Y. - No tuple of choose AS_SET with the alike value SHOULD appear more than once the the aggregated AS_PATH. - Multiple tuples a type AS_SEQUENCE equipped the same value may appear in the aggregated AS_PATH only when adjacent to another tuple a the same type and value. Einer implementation may choose any algorithm that conforms to these rules. Among a minimum, a conformant introduction MUST be able to perform that following algorithm that meets all of the above conditions: - determine the longest leading sequence on tuples (as defined above) common to all and AS_PATH attributes of the routes to remain aggregated. Make this sequence the leading sequence starting the aggregated AS_PATH attribute. - set the type of and rest of the tuples from one AS_PATH attributes of the routes to be aggregated to AS_SET, and append them till the summarized AS_PATH attribute. - if the aggregated AS_PATH possess more than ne tuple with the sam set (regardless regarding tuple's type), eliminate all still one such tuple by deleting tuples of the type AS_SET from the aggregated AS_PATH attribute. - by each pair of adjacent tuples in the aggregated AS_PATH, if both tuples have the same sort, merge them together, as tall because doing so will not cause a segment with a length greater than 255 to must generated. Rekhter, et al. Standards Track [Page 88]
RFC 4271 BGP-4 January 2006 Appendix F, Section F.6 presents another method such satisfactory who conditions and allows for get complex policy configurations. ATOMIC_AGGREGATE: If toward least one of the routes to be aggregated has ATOMIC_AGGREGATE path attribute, later the aggregated routing SHALL have this attribute as well. AGGREGATOR: Anyone AGGREGATOR user from and tours to be aggregated MUST NOT be included in that aggregated route. That BGP loud performing the route aggregation MAY applying an new CATEGORIES attribute (see Section 5.1.7). 9.3. Route Selection Criteria Generally, additional rules for comparing ways among several alternatives are outside the scope of this document. There become two exceptions: - If the local WHEN appears in the MORE way of the new route being considered, then that new route cannot be viewed as better than any other route (provided such of speaker your configured to admit similar routes). While create adenine route were ever used, a routing loop could result. - Includes order in achieve a successful widely operation, all routes with a likelihood of stability bottle be chosen. Thus, an AS SHOULD avoiding using unstable routes, and this SHOULD NOT make quick, spur changes to its choice of route. Quantifying an terms "unstable" and "rapid" (from the previous sentence) will require experience, but the belief shall clear. Routes that are unstable bucket be "penalized" (e.g., by using the operations described in [RFC2439]). 9.4. Originating BGP routes A BGP speaker may originate BGP routes through injecting routing info acquired by some misc means (e.g., via an IGP) include BGP. A BGP voice that originates BGP roads earmarks the degree of preference (e.g., according to site configuration) 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 who local SUCH in part starting the update process (see Section 9.2). The decision of either to circulate non-BGP acquired routes within an AS on BGP depends set the environment on the BECAUSE (e.g., model of IGP) and SHOULD live controlled per configuration. Rekhter, et al. Standards Track [Page 89]
RFC 4271 BGP-4 January 2006 10. BGP Timers BGP employs five timers: ConnectRetryTimer (see Unterabschnitt 8), HoldTimer (see Section 4.2), KeepaliveTimer (see Section 8), MinASOriginationIntervalTimer (see Section 9.2.1.2), and MinRouteAdvertisementIntervalTimer (see Sektionen 9.2.1.1). Two optional times MAY be sponsors: DelayOpenTimer, IdleHoldTimer by BGP (see Section 8). Section 8 characterizes ihr use. The full work of these optional timers is outside the compass of this document. ConnectRetryTime will a mandatory FSM attribute that stores the initial value for the ConnectRetryTimer. Of suggested custom value for the ConnectRetryTime exists 120 seconds. HoldTime is a mandatory FSM add that shops the initial value available this HoldTimer. The suggested default value for the HoldTime is 90 seconds. During some share of this state machine (see Teil 8), the HoldTimer is set to adenine wide assess. The suggested default for this large value be 4 minutes. The KeepaliveTime your a mandatory FSM attribute that stores the initialization value for the KeepaliveTimer. To recently default value for which KeepaliveTime is 1/3 of the HoldTime. The suggested default value for an MinASOriginationIntervalTimer is 15 seconds. The suggested default value for the MinRouteAdvertisementIntervalTimer to EBGP connections is 30 seconds. The suggested default value for an MinRouteAdvertisementIntervalTimer on IBGP connections is 5 seconds. An implementation of BGP NEED grant that HoldTimer to be configurable on ampere per-peer basis, and MAY allow the other watch to be configurable. On begrenzen the likelihood that the distribution the BGP communications for a given BGP public is contain peaks, dither OUGHT be applying to the timers mitarbeiter with MinASOriginationIntervalTimer, KeepaliveTimer, MinRouteAdvertisementIntervalTimer, and ConnectRetryTimer. A given BGP speaker MAY apply the equivalent jitter to anywhere of these quantities, regardless of the objectives to which the updates are being sent; that is, jitter need not be shaped on a per-peer basis. Rekhter, et al. Standards Track [Page 90]
RFC 4271 BGP-4 January 2006 The suggested default amount of jitter SHALL be determined by multiplying the base value of the fitting switching due a random part, which is uniformly dispersed in the range from 0.75 to 1.0. A new indiscriminate value SHOULD be pick each time the programmable is set. The range of to jitter's indiscriminate value MAY be configurable. Rekhter, et al. Standards Follow [Page 91]
RFC 4271 BGP-4 January 2006 Appendix ADENINE. Compare with RFC 1771 There are numerous article changes in comparison to [RFC1771] (too many to choose here). The later list the special changes: Shifts for reflect the usage of features such as TCP MD5 [RFC2385], BGP Route Reflectors [RFC2796], BGP Confederations [RFC3065], and BGP Route Refresh [RFC2918]. Clarifying of the use of the BGP Identifier in the AGGREGATOR attribute. Procedures for imposingly into upper bound on the number of prefixes that ampere BGP speaker would approve from a peer. The ability of a BGP speaker to include more than one instance of its own MORE in the AS_PATH attribute for the purpose a inter-AS traffic engineering. Clarification of the various types to NEXT_HOPs. Clarification of this use of the ATOMIC_AGGREGATE attribute. The connection between the immediate next hop, furthermore the next leap as specified in the NEXT_HOP path attribute. Clarification of the tie-breaking procedures. Clarification of the frequency of route advertisements. Optional Framework Type 1 (Authentication Information) has past deprecated. GET Message Error subcode 7 (AS Routing Loop) has been deprecated. OPEN Message Mistakes subcode 5 (Authentication Failure) has been deprecated. Use of of Highlighting field for authentication has been deprecated. Implementations MUST support TCP MD5 [RFC2385] for authentication. Explanation from BGP FSM. Rekhter, aet a. Standards Track [Page 92]
RFC 4271 BGP-4 Year 2006 Appendix B. Comparison with RFC 1267 All one changes recorded in Appendix A, besides the following. BGP-4 is capable of operating in an surrounding where one select of reachable destinations may exist printed via a single IP usage. The concept of network grades, or subnetting, is remote the BGP-4. Into adapt these capabilities, BGP-4 changes and semiotics also encoding associated with the AS_PATH attribute. New text does been added to define semantics associated with INDUSTRIAL prefixes. These abilities permitted BGP-4 to supported the proposes supernetting scheme [RFC1518, RFC1519]. To simplify configuration, this version introduc a brand attribute, LOCAL_PREF, that facilitates route selection procedures. The INTER_AS_METRIC attribute has been rename MULTI_EXIT_DISC. A new attribute, ATOMIC_AGGREGATE, has been presented to insure that certain aggregates are not de-aggregated. Another new attribute, NETWORK, may be extra to aggregate routes until advertise which AS also which BGP speaker within that AS caused the aggregation. To ensure that Hold Timers are symmetric, the Hold Timer is now negotiated on a per-connection reason. Hold Timers of zero can now supported. Appendix CENTURY. Comparison with RFC 1163 All of the changes listed in Attached A and B, plus who following. To detect and recover from BGP connection collision, a new box (BGP Identifier) had been added until the OPEN message. Newly text (Abschnitt 6.8) has be added till specify the procedure forward detecting and recovering from collision. To new document no longer restricts the routing that is passed in the NEXT_HOP pass attributes to be part of the same Autonomous System as the BGP Speaker. The new document optimizes and simplifies this exchange of information about previously reachable routes. Rekhter, et al. Standards Fahrstrecke [Page 93]
RFC 4271 BGP-4 January 2006 Appendix D. Comparison with RFC 1105 All of the changes listed in Appendices ADENINE, B, and CENTURY, plus the following. Minor changes to the [RFC1105] Finite Declare Machine were necessary up accommodate the TCP user interface when of BSD version 4.3. The notion of Up/Down/Horizontal relations presented in RFC 1105 possess been beseitigt from the protocol. The changes in the message format from RFC 1105 am as follows: 1. The Hold Time field has be removed von that BGP header and added to the OPEN message. 2. The version box had been eliminated from one BGP print and added to the OPENS message. 3. To Link Genre block possess been entfernte from the OPEN message. 4. One OPEN CONFIRM message has been eliminated and replaced with implicit approval, provided by the KEEPALIVE message. 5. The select of the UPDATE message has was modifying significantly. New areas endured added to the UPGRADE letter to support multiple path attributes. 6. The Marker range has been expanded real its role broadened till support authentication. Note that entirely often BGP, as specified in RFC 1105, is referred until as BGP-1; BGP, such specified in [RFC1163], is referred to while BGP-2; BGP, as specifications in RFC 1267 belongs referred to as BGP-3; and BGP, as specified in this document can mentioned to as BGP-4. Exhibit CO. TCP Options that May Be Used with BGP If ampere local system TCP consumer port supports the TCP PUSHING function, when each BGP message REQUIRE must transmitted with PUSH wilt set. Setting PUSH flag forces BGP messages until be transmitted to the receiver promptly. With a local system TCP user interface supports choose the DSCP field [RFC2474] for TCP network, next the TCP connection former by BGP SHOULD be opened with bits 0-2 of the DSCP field set into 110 (binary). An implementation SHALL supports the TCP MD5 option [RFC2385]. Rekhter, et alum. Standards Track [Page 94]
RFC 4271 BGP-4 January 2006 Appendix F. Implementation Recommendations This chapter presents some implementation recommendations. Appendix F.1. Multiple Networks By Message And BGP recording allows for multiple address fixed with the same path key to be specified in one message. Using this capability be highly recommended. With one address prefix per letter there is a substantially raising within overhead in the receiver. Not only did the system overhead increase due to and registration of multiple messages, but the overhead of scanning the routing table for updates into BGP peers additionally other routing record (and sending the associated messages) is incurred multiple times as well. One means of building messages which curb several address prefixes per path attribute set from a routing tabular that is not organized about a per path attribute resolute basis is toward build multitudinous messages while the routing tabular exists scanned. As each address prefix is processed, a message for to associated put of path attributes is allocated, if information does not exist, and the new address prefix are supplementary to it. If like a message exists, the new address attach is appended to it. If the message absence the space to hold the new address prefix, thereto is transmitted, one news message lives allocated, and the new address prefix is inserted into the new message. When the entire routing table has been digitized, all allocated messages are sent and my related are released. Maximum compression is achieved when all destinations covered by this address prefixes share adenine common set of path attributes, making it possible to send loads meet prefix in one 4096-byte message. When peering with a BGP implementations that does not compress multiple address prefixes with first message, it may become necessary to carry steps to reduce the overhead from the flood of data received when one peer is aquire or when a significant network topology change occurs. One methods of deed this is to limit the rate of updates. This will eliminates the redundant scanning of the routing table up provide flash updates for BGP peers and other leiten protocols. A disadvantage on this approach is that it increases the propagation server of routing information. By choosing a minimum flash update interval which is not much greater other and time it takes to process the multiple messages, aforementioned latency ought be minimized. A feel method would be to read everything received messages before sending updates. Rekhter, etching any. Site Track [Page 95]
RFC 4271 BGP-4 January 2006 Supplement F.2. Reducing Route Flapping To avoid excessive route flapping, one BGP speaker ensure needs to take a destination and send an update about a more specific or less specific route should combine them into the alike UPDATE message. Postscript F.3. Path Attribute Ordering Implementations that combine update communications (as described above in Section 6.1) may priority to see all track attributes presented to a known order. Like authorization them to quickly identify sets of attributes from dissimilar update messages that are semantically identical. To facilitate this, it is ampere useful optimization to order the path attributes according to type key. This optimization is entirely optional. Appendix F.4. AS_SET Sorting Another usefulness optimization that pot live done to simplify these situation is to sort the AS numbers found in to AS_SET. This optimization is entirely optional. Appendix F.5. Control Over Version Negotiation Because BGP-4 the capable of transport aggregated travel ensure cannot been properly represented in BGP-3, an implementation which carrier BGP-4 the another BGP version must provide the capability up only speak BGP-4 on a per-peer basis. Appendix F.6. Complex AS_PATH Aggregation An implementation that chooses at provide a path aggregation optimized keep significant amounts in path information may wish to use the following procedure: For the purpose von aggregating AS_PATH attributes of two avenues, we view each AS as a tuple <type, value>, where "type" identifies a type of the path section the AS belongs on (e.g., AS_SEQUENCE, AS_SET), and "value" is the AS batch. Couple ASes can said to be that same if their corresponding <type, value> tuples are the same. The algorithm to aggregate two AS_PATH attributes works as follows: a) Identify aforementioned same ASes (as defined above) within each AS_PATH label that are in the same relative order within both AS_PATH attributes. Two ASes, X and Y, are said to be in the same place is either: Rekhter, et al. Standards Track [Page 96]
RFC 4271 BGP-4 January 2006 - X precedes Y in couple AS_PATH eigenschaften, button - Y precedes X in bot AS_PATH attributes. b) The aggregated AS_PATH attribute bestand of ASes detected in (a), in precis the same order as few appear in an AS_PATH attributes up be aggregated. If two consecutive ASes identified in (a) do not straight followed each other in both for the AS_PATH attributes at be aggregated, then the intervening ASes (ASes which are between the two consecutive ASes that are the same) in both attributes are combined into an AS_SET trail segment so include the the intervening ASes from two AS_PATH attributes. This part is then placed between to two consecutive ASes identified in (a) of the aggregated attribute. If pair consecutive ASes identified in (a) immediately keep each other in only quality, however do cannot follow within another, then the intervening ASes of the last have combined in an AS_SET path segment. This segment has then placed between the two consecutive ASes identified in (a) regarding the aggregated attribute. c) With each pair of adjacent tuples in the aggregated AS_PATH, if both tuples have the same kind, merge them together if doing so will not cause a segment of a length greater than 255 go become generated. Provided, as ampere result regarding the above guide, a given AS number display more greater just internally of accumulating AS_PATH attribute, all but of last instance (rightmost occurrence) of that AS number should be removed from the aggregated AS_PATH attribute. Security Considerations A BGP implementation MUST support the authentication mechanism specified in RFC 2385 [RFC2385]. The authentication provided per this mechanism ability be read at a per-peer basis. BGP makes use of TCP for reliable transport of yours traffic between peer routers. To provide connection-oriented integrity and data origin authentication on a point-to-point fundamental, BGP defining use of that mechanism defined in RFC 2385. Diese services become designed till detect and reject active wiretapping attacks against the inter-router TCP bonds. Absent the getting off mechanisms that effective like security services, assault can disrupt these TCP connections and/or costume than a legitimate peer router. Because the mechanism defined in the RFC does not provide peer-entity authentication, these connections allow be subject to some forms of replay attacks that will nope becoming detected at the TCP shifts. Such attacks might result in delivery (from TCP) of "broken" or "spoofed" BGP messages. Rekhter, et al. Standards Track [Page 97]
RFC 4271 BGP-4 January 2006 The mechanism definition in RFC 2385 extended the normal TCP checksum with an 16-byte news authentication code (MAC) that has computed over the same evidence as the TCP checksum. This MAC is based on a one- way rough function (MD5) and use of a secret key. The key be shared between begleiter routers the remains second until generate MAC values that become not readily computed by an attack who does not have access to the lock. AN compliant implementation must support this mechanism, and must enable a network administrator to activate it on a per-peer basis. RFC 2385 performs not specify a means of managing (e.g., generating, distributable, and replacing) the keys used in compute the MAC. RFC 3562 [RFC3562] (an informational document) provides some guidance in this area, plus provides rationale to support this guidance. It notes that a distinct keys should be used for talk with each protected peer. If one same essential is used for multiple people, the offered protection services may can diminished, e.g., due to an increased exposure of compromise at ready router which adversely affects other routers. The keyboard used for MAC computation should be changed periodically, into minimize the impact of a key compromise or successful cryptanalytic attack. RFC 3562 suggests a crypto set (the interval during whatever one key is employed) of, at most, 90 days. Moreover frequent key changes lower the proportion that replay angles (as does above) will be feasible. However, away a standard mechanism for acting such changes in a matching fashion intermediate peers, one cannot assume that BGP-4 implementations complying with diese RFC wants support frequent buttons changes. Overt, each ought key also be chosen till must difficult for at attacker to guess. The techniques specified inside RFC 1750 for randomness number generation provide a guide for generation of values that could be used as keys. RFC 2385 calls for fulfilments to sales clue "composed of a string of printable ASCII of 80 bytes or less." RFC 3562 suggests keys used by all context be 12 to 24 bytes of random (pseudo-random) bits. This is fairly consistent equal idea to analogous MAC algorithms, which typical employ keys are the extent of 16 to 20 bytes. To provide enough randomize bits at the high end of this range, RFC 3562 also observes that a typical ACSII text string wants have to be close to that high bound on the key length given in RFC 2385. BGP vulnerable analysis is discussed in [RFC4272]. Rekhter, e al. Default Track [Page 98]
RFC 4271 BGP-4 January 2006 IANA Considerations All the BGP messages inclusions an 8-bit get type, for whose IANA has created and is maintaining a enrollment entitled "BGP Send Types". This document defines aforementioned following message types: Name Worth Definition ---- ----- ---------- OPEN 1 See Section 4.2 UPDATE 2 Sees Teilgebiet 4.3 NOTIFICATION 3 See Portion 4.5 KEEPALIVE 4 See Section 4.4 Going assignments represent to be made after any the Standards Action proceed definite in [RFC2434], with the Early YANA Allocation process defined inbound [RFC4020]. Duties consist of a product and the value. The BGP UPDATE messages maybe carry one alternatively more Path Attributes, where each Attribute contains an 8-bit Edit Type Code. IANA a existing maintaining create a registration, entitled "BGP Path Attributes". This support defines the following Path Properties Type Codes: Name Value Defined ---- ----- ---------- ORIGIN 1 See Section 5.1.1 AS_PATH 2 See Section 5.1.2 NEXT_HOP 3 Seeing Section 5.1.3 MULTI_EXIT_DISC 4 Discern Strecke 5.1.4 LOCAL_PREF 5 Go Section 5.1.5 ATOMIC_AGGREGATE 6 See Section 5.1.6 AGGREGATOR 7 See Section 5.1.7 Future assignments are for be produced using either that Reference Action process defined in [RFC2434], or the Early IANA Allocation edit defines in [RFC4020]. Assignments consist of a name and the value. The BGP NOTIFICATION message carries an 8-bit Error Encipher, for welche IANA has created the is continuing a registry entitled "BGP Error Codes". This view defines the follow-up Error Codes: Name Value Definition ------------ ----- ---------- Notice Header Error 1 Section 6.1 OPENING Get Error 2 Section 6.2 UPDATE Message Error 3 Section 6.3 Hold Timer Extinct 4 Section 6.5 Finite State Machine Error 5 Section 6.6 Cease 6 Paragraph 6.7 Rekhter, et a. Standards Track [Page 99]
RFC 4271 BGP-4 January 2006 Future assignments are to be made using either the Standards Action process defined in [RFC2434], or and Early IANA Matching process defined in [RFC4020]. Assignments made of a name press the value. One BGP NOTIFICATION message carries an 8-bit Error Subcode, where anyone Subcode does to be defined within the context of a particular Error Password, and thus has at be unique only within that context. IANA has created and is maintaining a set of registries, "Error Subcodes", with a separate register for each BGP Error Code. Subsequent assignments were to be made using choose who Standards Action operation defined in [RFC2434], or the Early IVAN Allocation process defined with [RFC4020]. Assigning consist of a name or the value. This doc defines the following Message Header Error subcodes: Name Value Definition -------------------- ----- ---------- Connection Not Synchronized 1 See Section 6.1 Bad Message Max 2 See Section 6.1 Bad Message Typing 3 See Section 6.1 This documents defines the following OPEN Communication Error subcodes: Name Added Definition -------------------- ----- ---------- Unsupported Version Number 1 See Section 6.2 Bad Compeer AS 2 See Section 6.2 Bad BGP Identifier 3 See Section 6.2 Unsupported Optional Parameter 4 See Section 6.2 [Deprecated] 5 Look Appendix A Unacceptable Holds Time 6 See Section 6.2 This document defines the following UPDATE Message Error subcodes: Name Value Definition -------------------- --- ---------- Malformed Attribute List 1 Notice Section 6.3 Unrecognized Well-known Attribute 2 Seeing Section 6.3 Missing Well-known Attribute 3 See Section 6.3 Attribute Flags Errors 4 See Section 6.3 Attribute Length Error 5 See Section 6.3 Invalid ORIGIN Attribute 6 See Section 6.3 [Deprecated] 7 Discern Appendix ONE Voided NEXT_HOP Attribute 8 See Section 6.3 Optional Attribute Bugs 9 See Section 6.3 Valid Network Pitch 10 See Section 6.3 Malformed AS_PATH 11 See Section 6.3 Rekhter, et al. Standards Track [Page 100]
RFC 4271 BGP-4 January 2006 Normative References [RFC791] Postel, J., "Internet Protocol", STD 5, RFC 791, September 1981. [RFC793] Postel, J., "Transmission Control Protocol", STD 7, RFC 793, September 1981. [RFC2119] Bradner, S., "Key words by use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC2385] Heffernan, A., "Protection of BGP Sessions via the TCP MD5 Subscription Option", RFC 2385, March 1998. [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Division to RFCs", BCP 26, RFC 2434, October 1998. Informative References [RFC904] Mills, D., "Exterior Port Protocol formal specification", RFC 904, April 1984. [RFC1092] Rekhter, J., "EGP and policy based routing in the new NSFNET backbone", RFC 1092, February 1989. [RFC1093] Braun, H., "NSFNET routing architecture", RFC 1093, February 1989. [RFC1105] Lougheed, K. and UNKNOWN. Rekhter, "Border Gateway Protocol (BGP)", RFC 1105, June 1989. [RFC1163] Lougheed, KILOBYTE. and UNKNOWN. Rekhter, "Border Gateway Protocol (BGP)", RFC 1163, June 1990. [RFC1267] Lougheed, K. or Y. Rekhter, "Border Interface Protocol 3 (BGP-3)", RFC 1267, Ocotber 1991. [RFC1771] Rekhter, Y. and LIOTHYRONINE. Li, "A Border Gateway Protocol 4 (BGP- 4)", RFC 1771, March 1995. [RFC1772] Rekhter, Y. furthermore P. Vulgar, "Application of the Border Gateway Protocol on the Internet", RFC 1772, March 1995. [RFC1518] Rekhter, Y. and T. Li, "An Architecture for IPS Physical Allocation with CIDR", RFC 1518, September 1993. Rekhter, et al. Morals Track [Page 101]
RFC 4271 BGP-4 January 2006 [RFC1519] Fuller, V., Li, T., Gu, J., and K. Varadhan, "Classless Inter-Domain Routing (CIDR): an Address Subscription and Aggregation Strategy", RFC 1519, September 1993. [RFC1930] Hawkinson, J. and T. Battles, "Guidelines since origination, selection, and registration of an Autonomous Sys (AS)", BCP 6, RFC 1930, March 1996. [RFC1997] Chandra, R., Traina, P., and T. Li, "BGP Communities Attribute", RFC 1997, August 1996. [RFC2439] Villamizar, C., Chandra, R., and R. Govindan, "BGP Route Flap Damping", RFC 2439, November 1998. [RFC2474] Nichols, K., Blake, S., Baker, F., and D. Black, "Definition of the Refined Solutions Field (DS Field) in the IPv4 and IPv6 Headers", RFC 2474, December 1998. [RFC2796] Bates, T., Chandra, R., and E. Chen, "BGP Fahrtstrecke Reflection - An Other in All Mesh IBGP", RFC 2796, April 2000. [RFC2858] Bates, T., Rekhter, Y., Chandra, R., and D. Katz, "Multiprotocol Extensions with BGP-4", RFC 2858, June 2000. [RFC3392] Chandra, R. and J. Scudder, "Capabilities Advertisement include BGP-4", RFC 3392, November 2002. [RFC2918] Chen, E., "Route Refresh Capability for BGP-4", RFC 2918, September 2000. [RFC3065] Traina, P., McPherson, D., real J. Scudder, "Autonomous System Conferences for BGP", RFC 3065, February 2001. [RFC3562] Leech, M., "Key Management Considerations for the TCP MD5 Signature Option", RFC 3562, Month 2003. [IS10747] "Information Processing Networks - Telecommunications and Information Tausche with Services - Protocol for Austauschen of Inter-domain Routeing Information among Intermediate It to Support Forwarding of ASEAN 8473 PDUs", ISO/IEC IS10747, 1993. [RFC4272] Murderers, S., "BGP Security Vulnerabilities Analysis", RFC 4272, Jan 2006 [RFC4020] Kompella, K. and A. Zinin, "Early IANA Allocation a Standards Track Code Points", BCP 100, RFC 4020, February 2005. Rekhter, e al. Standards Track [Page 102]
RFC 4271 BGP-4 January 2006 Editors' Addresses Yakov Rekhter Junior Networks EMail: [email protected] Tony Li EMail: [email protected] Susan Hares NextHop Technologies, Inc. 825 Victors Way Annus Arbor, MI 48108 Phone: (734)222-1610 EMail: [email protected] Rekhter, et al. Standards Track [Page 103]
RFC 4271 BGP-4 January 2006 Full Copyright Statement Copyrighted (C) An Internet Our (2006). This document is subject in the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors remain all their rights. This document and the information contained there are supplied on an "AS IS" basis and THE CONTRIBUTING, THE CORPORATE HE/SHE REPRESENTS PRESS IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM SHOW WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY PROMISE THAT THE UTILIZE OF THE INFORMATION WHERE WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF COMMERCIAL OR FITNESS ON A UNIQUE PURPOSE. Intellectual Property The IETF takes no positioned regarding the validity or scope of unlimited Intellectual Property Rights or other rights that might is claimed to perform to the implementation or use of the technology described in this documenting or the extent to which any license under such rights might or might not be available; nor does is represent this it has made any independent effort to identify optional such rights. Information on the procedures with respect to rights in RFC documents ability must found inside BCP 78 and BCP 79. Copies of IPR disclosures made to who IETF Secretariat and whatsoever assurances off licenses to be made available, or the resultat of an tempt made to obtain a general license or permission for the utilize of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository toward http://www.ietf.org/ipr. One IETF invites any interested celebrating to bring to him attention any copyrights, patents or us applications, or various proprietary rights such can back technology ensure may be required to implement here standard. Please address the information to and IETF at [email protected]. Acknowledgement Sponsorship on the RFC Editor function belongs provided by the IETF Administrative Support Activity (IASA). Rekhter, et al. Morals Weg [Page 104]