Border Gateway Protocol Session # Presentation_ID © 2000, Cisco Systems, Inc. 1 Agenda • BGP Fundamentals • BGP Attributes • Controlling the flow of BGP updates • Practical Design Examples Autonomous System (AS) AS 100 A • Collection of networks with same policy • Single routing protocol • Usually under single administrative control • Identified by AS number (1 – 65535) Private ASNs from 64512 – 65535 ARIN ASN Registration Guidelines • A unique routing policy (its policy differs from its border gateway peers) • A multi-homed site http://www.arin.net What is an IGP? • Interior Gateway Protocol • Within an Autonomous System • Carries information about internal prefixes • Examples—OSPF, RIP, EIGRP… What is an EGP? • Exterior Gateway Protocol • Used to convey routing information between Autonomous Systems • Decoupled from the IGP • Current EGP is BGP Interior vs. Exterior Routing Protocols • Interior • Exterior Automatic discovery Specifically configured peers Generally trust your IGP routers Connecting with outside networks Routes go to all IGP routers Set administrative boundaries Why do we need an EGP? • Scaling to large network Hierarchy Limit scope of failure Fast convergence No manual reconfig (static routes) - high maintenance • Complex Routing Policies Control reachability to prefixes by selecting outbound paths and announcing internal routes NJEDge NJEDge Intranet NJEDge Internet Alternate ISP Verizon ATM Member Remote Network What is BGP? • Border Gateway Protocol, currently version 4 – defined in RFC 1771 • Distance-vector routing protocol running over TCP port 179 • Supports classless routing • Actually two protocols – iBGP and eBGP Internal BGP AS 3847 When BGP speakers in the same AS form a BGP connection for the purpose of exchanging routing information, they are said to be running IBGP or internal BGP. A c IBGP speakers are usually fully-meshed. B External BGP AS 109 131.108.0.0 .1 When BGP speakers in different ASs form a BGP connection for the purpose of exchanging routing information, they are said to be running EBGP or external BGP. EBGP peers are usually directly connected. A 131.108.10.0 B .2 150.10.0.0 AS 110 Agenda • BGP Fundamentals • BGP Attributes • Controlling the flow of BGP updates • Practical Design Examples BGP Attributes • • • • • • • AS-path Origin Next-hop Weight Local preference Multi Exit Discriminator (MED) Community BGP Attributes AS-Path 690 B 1. Router A sends update for 141.253.10.0/24 with AS_PATH: 1880 1880 A 2. Router B sends update for 141.253.10.0/24 with AS_PATH: 690 1880 C 200 141.253.10.0/24 3.Router C sends update for 141.253.10.0/24 with AS_PATH: 200 690 1880 4.Router A will detect its own AS number and will discard the update AS-Path AS701 192.67.95.0/24 AS3561 204.70.0.0/15 G F D AS3847 207.240.0.0/16 C AS1673 140.222.0.0/16 B E show ip bgp A AS6201 192.67.95.0/24 140.222.0.0 204.70.0.0/15 207.240.0.0/16 3847 701 i 3847 1673 i 3847 3561 i 3847 i AS-Path • Sequence of ASNs a route has traversed. • Provides a mechanism for loop detection • Shortest AS path preferred • Policies may be applied based on AS path Origin Order of preference: • IGP (i) Route is interior to the originating AS Set with the Network statement under router BGP • EGP (e) Route learned via EGP • Incomplete (?) Route redistributed from IGP Origin AS 300 192.208.10.5 B A AS 200 192.208.10.6 RouterB# show ip bgp table version is 24, local router ID is 203.250.15.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network *> 192.208.10.0 Next Hop Metric LocPrf Weight 192.208.10.5 0 0 Path 300 i Next Hop 150.10.1.1 150.10.1.2 AS 200 150.10.0.0/16 A B AS 300 150.10.0.0/16 150.10.1.1 160.10.0.0/16 150.10.1.1 AS 100 160.10.0.0/16 • Next hop IP address to reach a network • For EBGP usually the IP of the neighbor specified by the neighbor remote-as command Next Hop 150.10.1.1 150.10.1.2 C AS 200 150.10.0.0/16 AS 100 160.10.0.0/16 A B AS 300 150.10.0.0/16 150.10.1.1 160.10.0.0/16 150.10.1.1 • With IBGP Next Hop does not change • Ensure that router C can reach 150.10.1.1 via an IGP Weight • Cisco proprietary • Local to router, not propagated in any routing updates • Value 0-65535 (default if originated by router - 32768, other - 0) • Highest weight preferred • Rarely used Weight router bgp 300 neighbor neighbor neighbor neighbor 1.1.1.1 1.1.1.1 2.2.2.2 2.2.2.2 remote-as 100 weight 2000 remote-as 200 weight 1000 Local Preference AS 100 160.10.0.0/16 AS 200 AS 300 D 150 200 A 160.10.0.0/16 > 160.10.0.0/16 150 200 B AS 400 C E Local Preference • Path with highest local pref is preferred (default = 100) • Unlike weight, local pref advertised to routers within the same AS (IBGP) • Often used attribute • “Powerful” attribute, comes before AS-Path length in the BGP selection algorithm Local Preference router bgp 400 neighbor 3.3.3.4 remote-as 300 neighbor 128.213.11.1 remote-as 400 bgp default local-preference 200 Multi-Exit Discriminator (MED) AS 200 C 192.68.1.0/24 2000 192.68.1.0/24 A B 192.68.1.0/24 AS 201 1000 Multi-Exit Discriminator (MED) • Lowest MED preferred • Used to convey the relative preference of entry points into an AS (Local Pref is outbound) • Influences best path selection – after AS_PATH evaluation • Comparable if paths are from same AS. Use bgp always-compare-med command to compare all MEDs • Advertised to external neighbors • Usually based on IGP metric Multi-Exit Discriminator (MED) router bgp 300 neighbor 3.3.3.2 remote-as 100 neighbor 3.3.3.2 route map SETMEDOUT out neighbor 1.1.1.1 remote-as 300 route-map SETMEDOUT permit 10 set metric 200 Communities • BGP attribute • Used to group destinations • Useful in applying routing policies • Represented as number(s) that get “stamped” on BGP routes • Each destination could be member of multiple communities • Community attribute carried across Autonomous Systems Communities AS 200 160.10.0.0 router bgp 200 3.3.3.2 network 160.10.0.0 neighbor 3.3.3.1 remote-as 300 neighbor 3.3.3.1 send-community neighbor 3.3.3.1 route-map SETCOMMUNITY out route-map SETCOMMUNITY permit 10 match ip address 1 set community no-export route-map SETCOMMUNITY permit 20 A B AS 300 3.3.3.1 access list 1 permit 0.0.0.0 255.255.255.255 AS 100 C Agenda • BGP Fundamentals • BGP Attributes • Controlling the flow of BGP updates • Practical Design Examples BGP Path Selection Algorithm 1. Do not consider IBGP path if not synchronized 2. Do not consider path if no route to next hop 3. Highest weight (local to router) 4. Highest local preference (global within AS) 5. Shortest AS path BGP Path Selection Algorithm 6. Lowest origin code IGP < EGP < incomplete 7. Multi-Exit Discriminator Considered only if paths are from the same AS 8. Prefer EBGP path over IBGP path 9. Path with shortest next hop metric wins 10. Lowest router-id Route Maps router bgp 256 neighbor 3.3.3.4 remote-as 300 route-map SETLOCALIN in neighbor 128.213.11.1 remote-as 256 ip as-path 7 permit ^300$ route-map SETLOCALIN permit 10 match as-path 7 set local-preference 200 route-map SETLOCALIN permit 20 Route Maps route-map SETLOCALIN permit 10 match as-path 7 set local-preference 200 route-map SETLOCALIN permit 20 • Route-maps are Cisco’s mechanism to select and modify routes with if/then style algorithms. • For route-maps with the keyword “permit”, if the prefix being examined passes the match statement, the set commands are executed and the route-map is exited. • If the match statement is not passed, the next sequence number is executed. • If there are no more sequence numbers, the prefix is filtered/dropped. Cisco Regular Expressions ip as-path 7 permit ^300$ . Period matches any single character, including white space. * Asterisk matches 0 or more sequences of the pattern. + Plus sign matches 1 or more sequences of the pattern. ? Question mark matches 0 or 1 occurrences of the pattern ^ Caret matches the beginning of the input string. $ Dollar sign matches the end of the input string. _ Underscore matches a comma (,), left brace ({), right brace (}) left parenthesis, right parenthesis, the beginning or end of the input string, or a space. ][ Square brackets designate a range of single character patterns. - Hyphen separates the endpoints of a range. These are much like standard vi regular expressions. Cisco Regular Expressions 701 6201 A F E B 3847 6202 C D G The following configuration could be used on router B to accept routes from AS6201 & 6202 and deny all others. ip as-path access-list 10 permit ^6201$ ip as-path access-list 10 permit ^6201_6202$ ip as-path access-list 10 deny .* AS-Path Padding AS 100 A Router A router bgp 100 AS 200 AS 300 network 170.10.0.0 neighbor 2.2.2.2 remote-as 200 neighbor 2.2.2.2 route-map SETPATH out route-map SETPATH permit 10 set as-path prepend 100 100 AS 400 Peer Groups • A way to group in a configuration template a set of neighbors having the same outbound policy. • Peer-groups allow: easier configuration (and maintenance) of BGP neighbors better cpu/memory usage when generating updates • By grouping neighbors with common policy together, routers can save CPU by creating once a route object and then advertising that object to multiple peers. • Also, saves typing :) Peer Groups router bgp 300 neighbor neighbor neighbor neighbor neighbor neighbor neighbor neighbor neighbor neighbor neighbor EXTERNALMAP peer-group EXTERNALMAP route-map SETMED EXTERNALMAP filter-list 1 out EXTERNALMAP filter-list 2 in 2.2.2.2 remote-as 100 2.2.2.2 peer-group EXTERNALMAP 4.4.4.2 remote-as 600 4.4.4.2 peer-group EXTERNALMAP 1.1.1.2 remote-as 200 1.1.1.2 peer-group EXTERNALMAP 1.1.1.2 filter-list 3 in Aggregation • Three ways to configure route aggregation Redistribute static Network mask command Aggregate-address command Aggregation Redistribute Static router bgp 200 neighbor 3.3.3.1 remote-as 300 redistribute static ip route 160.0.0.0 255.0.0.0 null 0 Aggregation Network Mask router bgp 200 network 160.0.0.0 mask 255.0.0.0 neighbor 3.3.3.1 remote-as 300 ip route 160.0.0.0 255.0.0.0 null 0 Aggregation Aggregate-address router bgp 200 network 160.0.0.0 neighbor 3.3.3.1 remote-as 300 aggregate-address 160.0.0.0 255.0.0.0 Aggregation Suppress-map router bgp 300 neighbor 3.3.3.3 remote-as 200 neighbor 2.2.2.2 remote-as 100 network 160.10.0.0 aggregate-address 160.0.0.0 255.0.0.0 suppress-map CHECK route-map CHECK permit 10 match ip address 1 access-list 1 deny 160.20.0.0 0.0.255.255 access-list 1 permit 0.0.0.0 255.255.255.255 Agenda • BGP Fundamentals • BGP Attributes • Controlling the flow of BGP updates • Practical Design Examples Multi-homing with two ISPs AS 100 B 10.10.10.10 ISP A AS 300 A 141.253.10.0/24 1.0.0.0 / 8 2.0.0.0 / 8 20.20.20.20 AS 200 C NJEDge Internet Risk of your AS becoming a transit AS Configuration to Receive Full Internet Routing Table router bgp 300 network 1.0.0.0 network 2.0.0.0 neighbor 10.10.10.10 neighbor 10.10.10.10 neighbor 20.20.20.20 neighbor 20.20.20.20 remote-as route-map remote-as route-map 100 localonly out 200 localonly out ip as-path access-list 10 permit ^$ route-map localonly permit 10 match as-path 10 Load Sharing when Multi-homed to Two ISPs Internet AS 300 AS 400 ISP A Network NJEDge Internet D E IBGP A B AS 100 Member Network C 10.10.10.0/24 10.10.20.0/24 Redistributing IGP into BGP router eigrp 10 network 175.220.0.0 router bgp 200 neighbor 1.1.1.1 remote-as 300 neighbor 2.2.2.2 remote-as 200 neighbor 1.1.1.1 distribute-list 1 out redistribute eigrp 10 access-list 1 permit 175.220.0.0 0.0.255.255 Requires careful use of access lists to prevent routes from being injected back into BGP Redistributing IGP into BGP (Preferred) router bgp 200 network 175.220.0.0 neighbor 1.1.1.1 remote-as 300 neighbor 2.2.2.2 remote-as 200 • Works for networks learned through IGP or static routes • Use with aggregate-address command if necessary Redistributing BGP into IGP • Normally avoided because too many routes would be injected into the IGP • Common design is to redistribute one or two routes and make them exterior routes • Or, have your BGP router generate default for your autonomous system • When redistributing from BGP into IGP, only routes learned using EBGP get redistributed Cisco Routers • Can’t run full BGP 2500 4000/4000M/4500/4500M • Can run full BGP (64 MB)2600 3620/3640/3660 4700M 7206 7000 7500 Best Practices • Peer IBGP routers using loopback address neighbor 1.1.1.1 update-source loopback0 • BGP soft-reconfig Allows config changes w/o clearing neighbor Inbound: neighbor 1.1.1.1 soft-reconfiguration inbound Outbound: no configuration necessary clear ip bgp 1.1.1.1 soft (in/out) Route Refresh Capability IOS 12.0(1.0.4)S and later • bgp dampening command Suppress flapping routes (high CPU utilization) For EBGP only Alternate paths still usable Use judiciously! • bgp log-neighbor-changes Used to log neighbor up/down events and resets