RFC 4274

BGP-4 Protocol Analysis

๐Ÿ“… published January 2006, from ietf

RFC 4274: BGP-4 Protocol Analysis โœจ

Okay bestie, this one is the Informational report on BGP-4 ๐ŸŒ, written by D. Meyer and K. Patel from Cisco Systems back in January 2006 ๐Ÿ’…. It's not an Internet standard, just a documented analysis of how BGP-4 measured up when it was being considered for Draft Standard status ๐ŸŽ€. The title block doesn't list any documents it obsoletes or updates.


Status of This Memo

This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited. ๐Ÿซถ

Copyright (C) The Internet Society (2006). ๐Ÿฉท

Abstract

okay so the whole point of this report is to show how BGP-4 checked off the requirements for a routing protocol to get published as an Internet Draft Standard ๐Ÿ”ฅ. It's basically the receipts ๐Ÿงพ.

It counts as "the second report" from Section 6.0 of RFC 1264 ๐Ÿ’–. To get there, it builds on RFC 1774, sums up BGP-4's key features, and then looks at how the protocol handles scaling and performance โœจ.

Table of Contents

   1. Introduction ....................................................2
   2. Key Features and Algorithms of BGP ..............................3
      2.1. Key Features ...............................................3
      2.2. BGP Algorithms .............................................4
      2.3. BGP Finite State Machine (FSM) .............................4
   3. BGP Capabilities ................................................5
   4. BGP Persistent Peer Oscillations ................................6
   5. Implementation Guidelines .......................................6
   6. BGP Performance Characteristics and Scalability .................6
      6.1. Link Bandwidth and CPU Utilization .........................7
   7. BGP Policy Expressiveness and its Implications ..................9
      7.1. Existence of Unique Stable Routings .......................10
      7.2. Existence of Stable Routings ..............................11
   8. Applicability ..................................................12
   9. Acknowledgements ...............................................12
   10. Security Considerations .......................................12
   11. References ....................................................13
       11.1. Normative References ....................................13
       11.2. Informative References ..................................14

1. Introduction ๐ŸŒธ

BGP-4 is an inter-autonomous system routing protocol ๐Ÿ›ฃ๏ธ made for TCP/IP internets. Version 1 got published in [RFC1105]. After that came BGP versions 2, 3, and 4 ๐Ÿ’…. Version 2 is written up in [RFC1163], version 3 is in [RFC1267], and version 4 is in [BGP4] (from here on, "BGP" just means version 4 ๐ŸŽ€). If you want to see what changed between versions, check Appendix A of [BGP4]. Ideas about where BGP could be used on the Internet are in [RFC1772] ๐Ÿฆ‹.

BGP brought in support for Classless Inter-Domain Routing (CIDR) [RFC1519] โœจ. Earlier BGP versions didn't have CIDR support, so they're considered obsolete and unusable on today's Internet ๐Ÿ’€. Not them, not usable ๐Ÿ˜ญ.

The purpose of this report is to document how the requirements for publication of a routing protocol as an Internet Draft Standard have been satisfied by Border Gateway Protocol version 4 (BGP-4) ๐Ÿ’œ.

This report satisfies the requirement for "the second report", as described in Section 6.0 of [RFC1264] ๐Ÿง. To pull that off, it augments [RFC1774], summarizes the key features of BGP-4, and analyzes the protocol with respect to scaling and performance ๐Ÿ”ฅ.

2. Key Features and Algorithms of BGP ๐Ÿงš

This section is the rundown of BGP's key features and algorithms ๐Ÿ‘‘. BGP is an inter-autonomous system routing protocol, which means it's built to run between multiple autonomous systems ๐ŸŒˆ. It assumes routing within an autonomous system is handled by an intra-autonomous system routing protocol ๐Ÿซง. It also assumes data packets get routed from source towards destination independent of the source ๐ŸŽ€. BGP doesn't make any assumptions about which intra-autonomous system routing protocols are running inside each autonomous system ๐Ÿ’–. Specifically, BGP does not require every autonomous system to run the same intra-autonomous system routing protocol (aka an interior gateway protocol, or IGP) ๐Ÿ™ˆ.

Also, BGP is a real inter-autonomous system routing protocol, so it puts no constraints on the underlying interconnect topology of the autonomous systems ๐ŸŒ. The info BGP swaps around is enough to build a graph of autonomous systems connectivity, which lets you prune routing loops and enforce a lot of routing policy decisions at the autonomous system level ๐Ÿ“.

2.1. Key Features ๐ŸŽ€

The key features of the protocol are path attributes and aggregation of Network Layer Reachability Information (NLRI) โœจ.

Path attributes are what give BGP its flexibility and extensibility ๐Ÿ’…. Each path attribute is either well-known or optional ๐Ÿฆ‹. The optional ones let you experiment with a group of BGP routers without messing with the rest of the Internet ๐Ÿซถ. New optional attributes can get added to the protocol the same way new options get added to, for example, the Telnet protocol [RFC854] ๐ŸŒธ.

One of the most important path attributes is the Autonomous System Path, or AS_PATH ๐Ÿ‘‘. As reachability information travels across the Internet, the list of autonomous systems it has already passed through gets added to this AS_PATH info ๐Ÿ›ฃ๏ธ. That makes it easy to suppress routing information loops ๐Ÿ”, and it's also a powerful, versatile tool for policy-based routing ๐Ÿ”ฅ.

BGP extends AS_PATH so it can include sets of autonomous systems as well as lists, through the AS_SET attribute โœจ. That lets generated aggregate routes carry the path info from the more specific routes used to build them, which is so clean ๐Ÿงฉ. It's worth noting though that, as of this writing, AS_SETs are rarely used on the Internet [ROUTEVIEWS] ๐Ÿ™ˆ.

2.2. BGP Algorithms ๐Ÿงฎ

BGP doesn't use a pure distance vector algorithm, and it's not a pure link state algorithm either ๐Ÿ’œ. Instead it uses a modified distance vector algorithm called a "Path Vector" algorithm ๐ŸŒˆ. This uses path information to dodge the classic distance vector problems ๐Ÿ’…. Every route in BGP pairs the info about a destination with the path information to that destination ๐ŸŽ€. The path info (also called AS_PATH info) lives in the AS_PATH attribute ๐Ÿซง. That path info is how BGP spots AS loops, so BGP speakers can pick loop-free routes ๐Ÿ”โœจ.

BGP uses an incremental update strategy to save bandwidth and processing power ๐Ÿ”‹. After the initial exchange of complete routing information, a pair of BGP routers only trades the changes ๐Ÿง . That kind of incremental update design needs reliable transport between the two BGP routers to work properly ๐Ÿซถ. BGP handles that by using TCP for reliable transport ๐Ÿฆ‹.

On top of incremental updates, BGP added route aggregation, so info about groups of destinations that use hierarchical address assignment (e.g., CIDR) can get aggregated and sent as a single Network Layer Reachability (NLRI) ๐Ÿง.

And lastly, BGP is a self-contained protocol ๐Ÿ’–. It specifies how routing information gets exchanged, both between BGP speakers in different autonomous systems and between BGP speakers inside a single autonomous system ๐Ÿ‘‘.

2.3. BGP Finite State Machine (FSM) ๐ŸŒŸ

The BGP FSM is a set of rules applied to a BGP speaker's set of configured peers for BGP operation ๐ŸŽ€. A BGP implementation requires that a BGP speaker connect to and listen on TCP port 179 to accept any new BGP connections from its peers ๐Ÿ›Ž๏ธ. The BGP Finite State Machine (FSM) has to be started and kept up for each new incoming and outgoing peer connection ๐Ÿ”ฅ. In steady state operation there's only one BGP FSM per connection per peer โœจ.

There can be a short period where a BGP peer has separate incoming and outgoing connections, which creates two different BGP FSMs for one peer instead of one ๐Ÿ˜ญ. Fix that by following the BGP connection collision rules defined in the [BGP4] specification ๐Ÿ’….

The BGP FSM has these states for each of its peers ๐Ÿฆ‹:

   IDLE:           State when BGP peer refuses any incoming connections.

   CONNECT:        State in which BGP peer is waiting for its TCP
                   connection to be completed.

   ACTIVE:         State in which BGP peer is trying to acquire a peer
                   by listening and accepting TCP connection.

   OPENSENT:       BGP peer is waiting for OPEN message from its peer.

   OPENCONFIRM:    BGP peer is waiting for KEEPALIVE or NOTIFICATION
                   message from its peer.

   ESTABLISHED:    BGP peer connection is established and exchanges
                   UPDATE, NOTIFICATION, and KEEPALIVE messages with its
                   peer.

There are a bunch of BGP events that act on those FSM states for BGP peers ๐ŸŒˆ. Support for these events is either mandatory or optional (lowkey a big deal ๐Ÿ‘€). The events come from the protocol logic as part of BGP, or from an operator using a configuration interface to the BGP protocol ๐Ÿ› ๏ธ.

These BGP events come in these types: Optional events linked to Optional Session attributes, Administrative Events, Timer Events, TCP Connection-based Events, and BGP Message-based Events ๐Ÿงš. The FSM and the BGP events are both explained in detail in [BGP4] ๐Ÿ“–.

3. BGP Capabilities ๐ŸŽ€

The BGP capability mechanism [RFC3392] makes it super easy and flexible to introduce new features into the protocol ๐Ÿ’–. Specifically, it lets a BGP speaker advertise its supported optional features to its peers during startup (and receive the same kind of info back from them) ๐Ÿซถ. That way the base BGP can stay focused on essential functionality, while still having a flexible way to signal protocol extensions ๐ŸŒธโœจ.

4. BGP Persistent Peer Oscillations ๐Ÿ’€

Whenever a BGP speaker detects an error in a peer connection, it shuts that peer down and changes its FSM state to IDLE ๐Ÿ™…โ€โ™€๏ธ. A BGP speaker needs a Start event to restart an idle peer connection ๐Ÿ”„. If the error sticks around and the BGP speaker generates a Start event on its own, that can lead to persistent peer flapping ๐Ÿ˜ญ. Peer oscillation shows up a lot across BGP implementations, but methods for preventing persistent peer oscillations are outside the scope of the base BGP specification ๐Ÿซ .

5. Implementation Guidelines โœจ

okay so bestie, a robust BGP implementation is "work conserving" ๐Ÿ’… what that means is: if the number of prefixes is bounded, then even arbitrarily high levels of route change can be tolerated ๐Ÿ”ฅ and high levels can be tolerated with bounded impact on route convergence for occasional changes in generally stable routes ๐Ÿฆ‹

a robust implementation of BGP should have the following characteristics ๐ŸŽ€

  1. It is able to operate in almost arbitrarily high levels of route flap without losing peerings (failing to send keepalives) or losing other protocol adjacencies as a result of BGP load. ๐Ÿ˜ญ
  2. Instability of a subset of routes should not affect the route advertisements or forwarding associated with the set of stable routes. ๐Ÿซถ
  3. Instability should not be caused by peers with high levels of instability or with different CPU speed or load that result in faster or slower processing of routes. These instable peers should have a bounded impact on the convergence time for generally stable routes. ๐Ÿ’œ

numerous robust BGP implementations exist ๐ŸŒˆ producing a robust implementation is not a trivial matter, but it is clearly achievable โœจ


6. BGP Performance Characteristics and Scalability ๐Ÿ“

in this section we give "order of magnitude" answers to how much link bandwidth, router memory and router CPU cycles BGP will consume under normal conditions ๐Ÿงš we'll also cover the scalability of BGP and its limitations ๐Ÿ’–

right after the initial BGP connection setup, BGP peers exchange complete sets of routing information ๐Ÿฆ‹ if we denote the total number of routes in the Internet as N, the total path attributes (for all N routes) received from a peer as A, and we assume the networks are uniformly distributed among the autonomous systems, then the worst-case amount of bandwidth consumed during the initial exchange between a pair of BGP speakers (P) is

        BW = O((N + A) * P)

BGP-4 was created specifically to reduce the size of the set of NLRI entries that border routers have to carry and exchange ๐Ÿ’… the aggregation scheme, defined in [RFC1519], describes the provider-based aggregation scheme used in today's Internet โœจ

due to the advantages of advertising a few large aggregate blocks (instead of many smaller class-based individual networks), it's honestly hard to estimate the actual reduction in bandwidth and processing that BGP-4 has provided over BGP-3 ๐Ÿ˜ตโ€๐Ÿ’ซ if we simply enumerate all aggregate blocks into their individual, class-based networks, we would not take into account "dead" space that has been reserved for future expansion ๐Ÿ™ˆ the best metric for judging BGP's aggregation is to sample the number of NLRI entries in the globally-connected Internet today and compare it to the growth rates that were projected before BGP was deployed ๐Ÿ“ˆ

at the time of writing, the full set of exterior routes carried by BGP is approximately 134,000 network entries [ROUTEVIEWS] ๐ŸŒ

6.1.1. CPU Utilization ๐Ÿ”ฅ

okay this is the big one, bestie ๐Ÿ‘‘ an important and fundamental feature of BGP is that its CPU utilization depends only on the stability of its network, which relates to BGP in terms of BGP UPDATE message announcements ๐Ÿ’œ if the BGP network is stable, all the BGP routers within it are in the steady state ๐Ÿซถ so the only link bandwidth and router CPU cycles consumed by BGP are due to the exchange of BGP KEEPALIVE messages ๐Ÿฆ‹ KEEPALIVE messages are exchanged only between peers ๐Ÿ’– the suggested frequency of the exchange is 30 seconds โญ KEEPALIVE messages are quite short (19 octets) and require virtually no processing ๐ŸŽ€ as a result, the bandwidth consumed by KEEPALIVE messages is about 5 bits/sec ๐ŸŒธ operational experience confirms that the overhead (in terms of bandwidth and CPU) associated with KEEPALIVE messages should be viewed as negligible ๐Ÿ™Œ

during periods of network instability, BGP routers are generating routing updates that are exchanged using BGP UPDATE messages ๐Ÿ˜ญ the greatest overhead per UPDATE message occurs when each UPDATE message contains only a single network ๐Ÿ’€ it should be pointed out that, in practice, routing changes show strong locality with respect to route attributes ๐Ÿงš that is, routes that change are likely to have common route attributes ๐Ÿ“ in this case, multiple networks can be grouped into a single UPDATE message, which significantly reduces the bandwidth required (see also Appendix F.1 of [BGP4]) ๐Ÿ’…

6.1.2. Memory Requirements ๐Ÿง 

to quantify the worst-case memory requirements for BGP, we denote the total number of networks in the Internet as N, the mean AS distance of the Internet as M (distance at the level of an autonomous system, expressed in terms of the number of autonomous systems), and the total number of unique AS paths as A ๐ŸŒˆ then the worst-case memory requirements (MR) can be expressed as

        MR = O(N + (M * A))

because the mean AS distance M is a slow-moving function of the interconnectivity ("meshiness") of the Internet, for all practical purposes the worst-case router memory requirements are on the order of the total number of networks in the Internet multiplied by the number of peers the local system is peering with ๐Ÿฆ‹ we expect the total number of networks in the Internet to grow much faster than the average number of peers per router ๐Ÿ“ˆ so BGP's memory-scaling properties are linearly related to the total number of networks in the Internet ๐Ÿ’–

the following table shows typical memory requirements of a router running BGP ๐ŸŽ€ we denote the average number of routes advertised by each peer as N, the total number of unique AS paths as A, the mean AS distance of the Internet as M (distance at the level of an autonomous system, expressed in terms of the number of autonomous systems), the number of octets required to store a network as R, and the number of bytes required to store one AS in an AS path as P ๐ŸŒธ it is assumed that each network is encoded as four bytes, each AS is encoded as two bytes, and each network is reachable via some fraction of all the peers (# BGP peers/per net) ๐Ÿ™ˆ for purposes of these estimates, we calculate MR = (((N * R) + (M * A) * P) * S) ๐Ÿงฎ

  # Networks  Mean AS Distance # ASes # BGP peers/per net   Memory Req
      (N)             (M)        (A)          (P)              (MR)
  ----------  ---------------- ------ ------------------- -------------
    100,000           20         3,000         20           10,400,000
    100,000           20        15,000         20           20,000,000
    120,000           10        15,000        100           78,000,000
    140,000           15        20,000        100          116,000,000

in analyzing BGP's memory requirements, we focus on the size of the BGP RIB table (ignoring implementation details) ๐Ÿ’… specifically, we derive upper bounds for the size of the BGP RIB table ๐Ÿ‘€ for example, at the time of writing, the BGP RIB tables of a typical backbone router carry on the order of 120,000 entries ๐Ÿ˜ณ given this number, one might ask whether it would be possible to have a functional router with a table containing 1,000,000 entries ๐Ÿค” clearly, the answer depends more on how BGP is implemented ๐Ÿ› ๏ธ a robust BGP implementation with reasonable CPU and memory should not have issues scaling to such limits โœจ


7. BGP Policy Expressiveness and its Implications ๐ŸŽ€

okay so BGP is unique among deployed IP routing protocols in that routing is determined using semantically rich routing policies ๐Ÿ’– although routing policies are usually the first BGP issue that comes to a network operator's mind, it's important to note that the languages and techniques for specifying BGP routing policies are not part of the protocol specification (see [RFC2622] for an example of such a policy language) ๐Ÿง  the BGP specification also contains few restrictions, explicit or implicit, on routing policy languages ๐Ÿ™ƒ these languages have typically been developed by vendors and evolved through interactions with network engineers, in an environment lacking vendor-independent standards ๐ŸŒธ

the complexity of typical BGP configurations, at least in provider networks, has been steadily increasing ๐Ÿ“ˆ router vendors typically provide hundreds of special commands for configuring BGP, and this command set keeps expanding ๐Ÿ˜ตโ€๐Ÿ’ซ for example, BGP communities [RFC1997] let policy writers selectively attach tags to routes and use them to signal policy information to other BGP-speaking routers ๐Ÿท๏ธ many providers allow customers, and sometimes peers, to send communities that determine the scope and preference of their routes ๐Ÿฆ‹ because of these developments, writing BGP configurations has become more and more like open-ended programming ๐Ÿ’ป this has let network operators encode complex policies to address many unforeseen situations, and has opened the door to a great deal of creativity and experimentation in routing policies ๐ŸŒˆ this policy flexibility is one of the main reasons BGP is so well suited to the commercial environment of the current Internet ๐Ÿ‘‘

however, this rich policy expressiveness comes with a cost that is often not recognized ๐Ÿ˜ฌ in particular, it is possible to construct locally defined routing policies that can lead to protocol divergence and unexpected global routing anomalies, such as (unintended) non-determinism ๐Ÿ’€ if the interacting policies causing such anomalies are defined in different autonomous systems, these problems can be very difficult to debug and correct ๐Ÿ™ˆ in the following sections, we describe two such cases relating to the existence (or lack thereof) of stable routings ๐Ÿซถ

7.1. Existence of Unique Stable Routings ๐ŸŽ€

okay so bestie, this is where BGP gets a little chaotic ๐Ÿ˜ญ one can totally build sets of policies where BGP cannot guarantee that stable routings are unique. the example is lowkey simple but it's giving big brain energy ๐Ÿง โœจ we have four Autonomous Systems: AS1, AS2, AS3, and AS4. AS1 and AS2 are peers, and they provide transit for AS3 and AS4 respectively. then suppose AS3 provides transit for AS4 (so AS3 is a customer of AS1, and AS4 is a multihomed customer of both AS3 and AS2) ๐Ÿ’…

AS4 wants to use the link to AS3 as a "backup" link, so it sends AS3 a community value that AS3 has configured to drop the preference of AS4's routes to a level below its upstream provider, AS1. the intended "backup routing" to AS4 looks like this ๐ŸŒธ:

           AS1 ------> AS2
           /|\          |
            |           |
            |           |
            |          \|/
           AS3 ------- AS4

so the AS3-AS4 link is only meant to be used when the AS2-AS4 link is down. (for outbound traffic, AS4 just gives routes from AS2 a higher local preference.) this is a super common scenario on today's Internet ๐Ÿซถ but here's the plot twist: this configuration has another stable solution ๐Ÿ˜ณ

           AS1 ------- AS2
            |           |
            |           |
            |           |
           \|/         \|/
           AS3 ------> AS4

in this one, AS3 does not translate the "depref my route" community received from AS4 into a "depref my route" community for AS1. so if AS1 hears the route to AS4 that transits AS3, it will prefer that route (because AS3 is a customer). this state could be reached by starting in the "correct" backup routing shown first, bringing down the AS2-AS4 BGP session, and then bringing it back up. honestly BGP has no way to prefer the "intended" solution over the anomalous one ๐Ÿ’€ the solution picked depends on the unpredictable order of BGP messages.

while this example is relatively simple, a lot of operators may not realize the real source of the problem is that the BGP policies of ASes can interact in unexpected ways, and those interactions can result in multiple stable routings ๐Ÿ™ˆ one can imagine the interactions getting way more complex on the real Internet. we suspect these anomalies will only become more common as BGP keeps evolving with richer policy expressiveness โœจ for example, extended communities provide an even more flexible way of signaling information within and between autonomous systems than [RFC1997] communities can. at the same time, operators are using communities more and more to tackle complex inter-domain traffic engineering issues ๐Ÿฆ‹

7.2. Existence of Stable Routings ๐ŸŒˆ

you can also build a set of policies where BGP cannot guarantee that a stable routing exists (or, worse, that one will ever be found) ๐Ÿ˜ญ for example, [RFC3345] documents several scenarios that lead to route oscillations tied to the Multi-Exit Discriminator (MED) attribute. route oscillation happens in BGP when a set of policies has no solution. that means when there is no stable routing that satisfies the constraints policy imposes, BGP has no choice but to keep trying ๐Ÿ”„ and even if a BGP configuration can have a stable routing, the protocol may not be able to find it. BGP can "get trapped" down a blind alley that has no solution ๐Ÿฅฒ

protocol divergence isn't only a MED problem, though ๐Ÿ‘‘ it can happen in BGP even without MED. so, like the unintended nondeterminism from the last section, this kind of divergence is an unintended consequence of the unconstrained nature of BGP policy languages ๐Ÿ’…


8. Applicability ๐Ÿฆ‹

in this section we figure out which environments BGP is great for, and which ones it's not suited for ๐Ÿ’– this is partially answered in Section 2 of BGP [BGP4], which says:

"To characterize the set of policy decisions that can be enforced using BGP, one must focus on the rule that an AS advertises to its neighbor ASes only those routes that it itself uses. This rule reflects the "hop-by-hop" routing paradigm generally used throughout the current Internet. Note that some policies cannot be supported by the "hop-by-hop" routing paradigm and thus require techniques such as source routing to enforce. For example, BGP does not enable one AS to send traffic to a neighbor AS intending that the traffic take a different route from that taken by traffic originating in the neighbor AS. On the other hand, BGP can support any policy conforming to the "hop-by-hop" routing paradigm. Since the current Internet uses only the "hop-by-hop" routing paradigm and since BGP can support any policy that conforms to that paradigm, BGP is highly applicable as an inter-AS routing protocol for the current Internet."

one of the big points here is that BGP only contains essential functionality, but it also has a flexible mechanism built in that lets us extend it ๐ŸŽ€ for example, BGP capabilities give us an easy, flexible way to introduce new features. and because BGP was designed to be flexible and extensible, new or evolving requirements can be handled through existing mechanisms โœจ

to sum up, BGP is well suited as an inter-autonomous system routing protocol for any internet based on IP [RFC791] as the internet protocol and the "hop-by-hop" routing paradigm ๐Ÿซถ


9. Acknowledgements ๐Ÿ’œ

we'd like to thank Paul Traina for authoring previous versions of this document ๐Ÿ™ Elwyn Davies, Tim Griffin, Randy Presuhn, Curtis Villamizar and Atanu Ghosh also gave lots of insightful comments on earlier versions ๐Ÿงš


10. Security Considerations ๐Ÿ’€๐Ÿ”ฅ

this section is serious, bestie. read it carefully ๐Ÿšจ

BGP provides flexible mechanisms, with varying levels of complexity, for security purposes. BGP sessions are authenticated using BGP session addresses and the assigned AS number. because BGP sessions use TCP (and IP) for reliable transport, BGP sessions are further authenticated and secured by whatever authentication and security mechanisms TCP and IP use ๐Ÿ”

BGP uses the TCP MD5 option to validate data and protect against spoofing of TCP segments exchanged between its sessions. the usage of the TCP MD5 option for BGP is described at length in [RFC2385]. TCP MD5 key management is discussed in [RFC3562]. BGP data encryption is provided using the IPsec mechanism, which encrypts the IP payload data (including TCP and BGP data). the IPsec mechanism can be used in both transport mode and tunnel mode. the IPsec mechanism is described in [RFC2406]. both the TCP MD5 option and the IPsec mechanism are not widely deployed security mechanisms for BGP on today's Internet, so it's hard to gauge their real performance impact when used with BGP ๐Ÿคทโ€โ™€๏ธ however, because both mechanisms are TCP- and IP-based security mechanisms, the Link Bandwidth, CPU utilization and router memory consumed by BGP would be the same as for any other TCP- and IP-based protocols ๐Ÿ’…

BGP uses the IP TTL value to protect its External BGP (EBGP) sessions from TCP- or IP-based CPU-intensive attacks ๐Ÿ›ก๏ธ it's a simple mechanism that suggests filtering BGP (TCP) segments using the IP TTL value carried in the IP header of BGP (TCP) segments exchanged between EBGP sessions. the BGP TTL mechanism is described in [RFC3682]. using [RFC3682] impacts performance in a similar way to using any access control list (ACL) policies for BGP ๐Ÿ“‹

these flexible TCP- and IP-based security mechanisms allow BGP to prevent insertion, deletion or modification of BGP data, snooping of the data, session stealing, etc. ๐Ÿ™…โ€โ™€๏ธ however, BGP is vulnerable to the same security attacks that are present in TCP. the [BGP-VULN] explains in depth the BGP security vulnerabilities ๐Ÿ“š at the time of writing, several efforts are underway to create and define an appropriate security infrastructure within the BGP protocol to provide authentication and security for its routing information; these efforts include [SBGP] and [SOBGP] ๐ŸŒŸ


11. References ๐Ÿ“š

11.1. Normative References ๐ŸŽ€

[BGP4]        Rekhter, Y., Li., T., and S. Hares, Eds., "A Border
              Gateway Protocol 4 (BGP-4)", RFC 4271, January 2006.

[RFC1519]     Fuller, V., Li, T., Yu, J., and K. Varadhan, "Classless
              Inter-Domain Routing (CIDR): an Address Assignment and
              Aggregation Strategy", RFC 1519, September 1993.

[RFC791]      Postel, J., "Internet Protocol", STD 5, RFC 791,
              September 1981.

[RFC1997]     Chandra, R., Traina, P., and T. Li, "BGP Communities
              Attribute", RFC 1997, August 1996.

[RFC2385]     Heffernan, A., "Protection of BGP Sessions via the TCP
              MD5 Signature Option", RFC 2385, August 1998.

[RFC3345]     McPherson, D., Gill, V., Walton, D., and A. Retana,
              "Border Gateway Protocol (BGP) Persistent Route
              Oscillation Condition", RFC 3345, August 2002.

[RFC3562]     Leech, M., "Key Management Considerations for the TCP
              MD5 Signature Option", RFC 3562, July 2003.

[RFC3682]     Gill, V., Heasley, J., and D. Meyer, "The Generalized
              TTL Security Mechanism (GTSM)", RFC 3682, February
              2004.

[RFC3392]     Chandra, R. and J. Scudder, "Capabilities Advertisement
              with BGP-4", RFC 3392, November 2002.

[BGP-VULN]    Murphy, S., "BGP Security Vulnerabilities Analysis",
              RFC 4272, January 2006.

[SBGP]        Seo, K., S. Kent and C. Lynn, "Secure Border Gateway
              Protocol (Secure-BGP)", IEEE Journal on Selected Areas
              in Communications Vol. 18, No. 4, April 2000, pp. 582-
              592.

11.2. Informative References ๐ŸŒธ

[RFC854]      Postel, J. and J. Reynolds, "Telnet Protocol
              Specification", STD 8, RFC 854, May 1983.


[RFC1105]     Lougheed, K. and Y. Rekhter, "Border Gateway Protocol
              (BGP)", RFC 1105, June 1989.


[RFC1163]     Lougheed, K. and Y. Rekhter, "Border Gateway Protocol
              (BGP)", RFC 1163, June 1990.

[RFC1264]     Hinden, R., "Internet Routing Protocol Standardization
              Criteria", RFC 1264, October 1991.

[RFC1267]     Lougheed, K. and Y. Rekhter, "Border Gateway Protocol 3
              (BGP-3)", RFC 1267, October 1991.

[RFC1772]     Rekhter, Y., and P. Gross, Editors, "Application
              of the Border Gateway Protocol in the Internet", RFC
              1772, March 1995.

[RFC1774]     Traina, P., "BGP-4 Protocol Analysis", RFC 1774, March
              1995.

[RFC2622]     Alaettinoglu, C., Villamizar, C., Gerich, E., Kessens,
              D., Meyer, D., Bates, T., Karrenberg, D., and M.
              Terpstra, "Routing Policy Specification Language
              (RPSL)", RFC 2622, June 1999.

[RFC2406]     Kent, S. and R. Atkinson, "IP Encapsulating Security
              Payload (ESP)", RFC 2406, November 1998.

[ROUTEVIEWS]  Meyer, D., "The Route Views Project",
              http://www.routeviews.org.

[SOBGP]       White, R., "Architecture and Deployment Considerations
              for Secure Origin BGP (soBGP)", Work in Progress, May
              2005.

Authors' Addresses ๐ŸŽ€

David Meyer ๐Ÿ’– EMail: dmm@1-4-5.net

Keyur Patel ๐Ÿฆ‹ Cisco Systems EMail: keyupate@cisco.com

Copyright (C) The Internet Society (2006). ๐Ÿ’…

okay so this part is the legal stuff ๐Ÿ˜ญ but it's still important! This document is subject to the rights, licenses and restrictions in BCP 78, and except for what BCP 78 says, the authors keep all of their rights. ๐Ÿ”’

The whole document and everything in it is provided "AS IS" ๐Ÿซถ, and the contributor, the organization they represent or are sponsored by (if any), the Internet Society, and the Internet Engineering Task Force all say NO to every warranty, whether it's stated or implied. That includes no promise that using the info here won't infringe anyone's rights, and no implied promise about merchantability or fitness for a particular purpose. Not giving any guarantees, periodt. ๐Ÿ’€

Intellectual Property ๐ŸŒˆ

The IETF doesn't take a side on whether any Intellectual Property Rights or other rights claimed to cover the tech in this document are valid, or how far they reach. It also doesn't say whether any license for those rights is available or not. And it hasn't done any independent digging to find out what rights exist. โญ

If you want info about how rights work for RFC documents, check BCP 78 and BCP 79. ๐Ÿ“š

Copies of IPR disclosures sent to the IETF Secretariat, plus any assurances of licenses that might be offered, can be found in the IETF's online IPR repository at http://www.ietf.org/ipr. The same goes for the results of any attempt to get a general license or permission to use the proprietary rights, for implementers or users of this spec. ๐Ÿ“

The IETF also invites anyone who knows about copyrights, patents, patent applications, or other proprietary rights that might cover technology needed to implement this standard to let them know. ๐Ÿงš Send that info to the IETF at ietf-ipr@ietf.org. ๐Ÿ’œ

Acknowledgement ๐Ÿซถ

Funding for the RFC Editor function comes from the IETF Administrative Support Activity (IASA). ๐Ÿ‘‘

๐Ÿ“ฆ where this page comes from