The Hebe-jebes (or He-B-GPs): Understanding the Roles of EBGP, IBGP and an IGP Using Lab 7-4, IBGP, Next Hop and Synchronization Rick Graziani Cabrillo College
© STEAL MY STUFF! Username = cisco Password = perlman
Topology
© ITA routers need to receive IPv4 networks from both ISPs. SanJose1 and SanJose3 will only include ITA networks /24 and /24 in its BGP. updates to the ISP routers. Both ISPs need to be able to reach ITA LANs
© Topology Ensure AS is not a transit AS
EIGRP
© Configuring EIGRP SanJose1(config)# router eigrp 1 SanJose1(config-router)# eigrp router-id SanJose1(config-router)# network SanJose1(config-router)# network SanJose2(config)# router eigrp 1 SanJose2(config-router)# eigrp router-id SanJose2(config-router)# network SanJose2(config-router)# network SanJose3(config)# router eigrp 1 SanJose3(config-router)# eigrp router-id SanJose3(config-router)# network SanJose3(config-router)# network Loopback interfaces are also advertised. Beginning with IOS 15, the default is no auto-summary What is the role of an IGP (EIGRP)?
© Role of EIGRP Provides complete reachability for ITA routers within the AS. Example, for BGP purposes… R4 has a route in its routing table to reach the serial interface on R2 and … R2 has a route in its routing table to reach the serial interface on R4
EBGP
© Configuring EBGP ISP1(config)# router bgp ISP1(config-router)# bgp router-id ISP1(config-router)# network mask ISP1(config-router)# neighbor remote-as SanJose1(config)# router bgp SanJose1(config-router)# bgp router-id SanJose1(config-router)# neighbor remote-as SanJose1(config-router)# neighbor remote-as !IBGP SanJose1(config-router)# neighbor update-source Loopback0 !IBGP SanJose1(config-router)# network mask What is the role of an EBGP? Share network/prefix information between AS’s.
© Configuring IBGP SanJose1(config)# router bgp SanJose1(config-router)# bgp router-id SanJose1(config-router)# neighbor remote-as SanJose1(config-router)# neighbor remote-as SanJose1(config-router)# neighbor update-source Loopback0 SanJose1(config-router)# network mask SanJose3(config)# router bgp SanJose3(config-router)# bgp router-id SanJose3(config-router)# neighbor remote-as SanJose3(config-router)# neighbor update-source Loopback0 SanJose3(config-router)# network mask What is the role of an IBGP? Share network/prefix information learned from EBGP to IBGP routers in the same AS. Note: Internal networks are also shared but may not be needed to be reached via IBGP because of IGP (EIGRP). Peering via loopbacks allow multi- path reachability
© Examining SanJose1’s BGP Table SanJose1# show ip bgp Network Next Hop Metric LocPrf Weight Path *> / i *> / i r>i / i SanJose1# SanJose1# show ip bgp rib-failure Network Next Hop RIB-failure RIB-NH Matches / Higher admin distance n/a SanJose1# What does BGP know and is it reachable? IBGP has an AD of 200 EIGRP has an AD of 90 < Reachable via next-hop < (r) RIB failure, (i) learned via IBGP < indicates originating this route
© Examining SanJose1’s Routing Table SanJose1# show ip route /16 is subnetted, 1 subnets B [20/0] via , 00:14: /16 is variably subnetted, 7 subnets, 3 masks D /30 [90/ ] via , 00:30:41, Serial0/0/1 D /24 [90/ ] via , 00:30:41, Serial0/0/1 D /24 [90/ ] via , 00:29:42, Serial0/0/ /16 is variably subnetted, 4 subnets, 2 masks D /24 [90/ ] via , 00:30:41, Serial0/0/1 D /24 [90/ ] via , 00:29:42, Serial0/0/1 SanJose1# ping Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to , timeout is 2 seconds: !!!!! What does the routing table show us? EBGP EIGRP
Examine and troubleshoot IBGP next hop reachability on SanJose3
© Examining SanJose3’s Routing Table SanJose3# show ip route /16 is variably subnetted, 7 subnets, 3 masks D /30 [90/ ] via , 01:00:03, Serial0/0/0 D /24 [90/ ] via , 01:00:03, Serial0/0/0 D /24 [90/ ] via , 01:00:03, Serial0/0/ /16 is variably subnetted, 4 subnets, 2 masks D /24 [90/ ] via , 01:00:03, Serial0/0/0 D /24 [90/ ] via , 01:00:03, Serial0/0/0 SanJose3# Why doesn’t SanJose3 have the /16 prefix from SanJose1 in its routing table? It’s IBGP peering with SanJose1… Notice /30 is NOT in the routing table either. EIGRP Loopbacks ?
© SanJose3# show ip bgp Network Next Hop Metric LocPrf Weight Path * i / i r>i / i *> / i SanJose3# Why doesn’t SanJose3 have the prefix from SanJose1 in its routing table? Remember, prefixes learned via EBGP are advertised into IBGP with the next-hop address unchanged. SanJose3 needs to be able to reach the next hop or the route is not added to the routing table. Solutions: Advertise next-hop ( ) AS SanJose1 modifies makes itself the next-hop when advertising EBGP routes using IBGP EIGRP ? < (r) RIB failure, (i) learned via IBGP < indicates originating this route < NOT reachable because next-hop is not in routing table Next hop Examining SanJose3’s BGP Table
© Next-hop-self SanJose1(config)# router bgp SanJose1(config-router)# neighbor next-hop-self SanJose3(config)# router bgp SanJose3(config-router)# neighbor next-hop-self SanJose1 will use it’s loopback0 address as the next hop address in its BGP updates SanJose3 will use it’s loopback0 address as the next hop address in its BGP updates
© Re-examining SanJose3’s BGP Table SanJose3# show ip bgp Network Next Hop Metric LocPrf Weight Path *>i / i r>i / i *> / i SanJose3# Notice that the next hop address has been changed to SanJose1’s loopback0 address which is reachable because it being advertised in EIGRP updates from SanJose1. EIGRP ? < (r) RIB failure, (i) learned via IBGP < indicates originating this route < Reachable because new next-hop is in routing table Next hop
© Re-examining SanJose3’s Routing Table SanJose3# show ip route bgp /16 is subnetted, 1 subnets B [200/0] via , 00:03:17 SanJose3# SanJose3 installs the prefix learned from SanJose1. Is reachable? EIGRP ?
© Re-examining SanJose3’s Routing Table SanJose3# show ip route bgp /16 is subnetted, 1 subnets B [200/0] via , 00:03:17 SanJose3# SanJose3# ping Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to , timeout is 2 seconds: U.U.U Success rate is 0 percent (0/5) SanJose3# Nope. Maybe because SanJose3 is not advertising the source address ( /30) of the ping? Remember, ITA is only advertising /24 and /24.
© Re-examining SanJose3’s Routing Table SanJose3# show ip route bgp /16 is subnetted, 1 subnets B [200/0] via , 00:03:17 SanJose3# SanJose3# ping source gig 0/0 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to , timeout is 2 seconds: U.U.U Success rate is 0 percent (0/5) SanJose3# Nope. Maybe the problem lies with SanJose2? It’s not you, it’s me.
Examine the behavior of BGP synchronization being disabled
© Re-examining SanJose3’s BGP and Routing Table SanJose3# show ip bgp Network Next Hop Metric LocPrf Weight Path *>i / i r>i / i *> / i SanJose3# show ip route bgp /16 is subnetted, 1 subnets B [200/0] via , 00:03:17 SanJose3# ping source gig 0/0 U.U.U SanJose3# SanJose3 has the in its BGP and IP routing tables because it learned the route via IBGP from SanJose1 and … It now has a valid next hop address to SanJose1 for the route. But is unreachable.
© Examining SanJose2’s BGP and Routing Table SanJose2# show ip route SanJose2# SanJose2 does not have any knowledge of the /16 network.
© Examining SanJose2’s BGP and Routing Table SanJose3# show ip route bgp /16 is subnetted, 1 subnets B [200/0] via , 00:03:17 SanJose3# SanJose3 still has a IBGP route for this network because the default BGP behavior is no synchronization. Beginning with IOS 12.2(8)T, the default BGP behavior is no synchronization. The BGP synchronization rule states that a router will not include in its routing table nor advertise routes learned by IBGP unless that route is directly connected or learned from an IGP. I am using NO synchronization by default. I have an IBGP route to and even if my routing table doesn’t have an IGP (EIGRP) route, I will include the route in my routing table. And I would send this route to ISP2. IGP (EIGRP) => IBGP NOT included in routing table
© Enable Synchronization SanJose3(config)# router bgp SanJose3(config-router)# synchronization SanJose3# show ip bgp Network Next Hop Metric LocPrf Weight Path * i / i r>i / i *> / i SanJose3# show ip route bgp SanJose3# With synchronization enabled, SanJose3 will not include the BGP route to /16 in its routing table unless it already knows about it via EIGRP. If SanJose3 had the /16 network in its IP routing table as an EIGRP route, it would would mean other routers in the domain, SanJose2, would most likely have this route also. I have an IBGP route to but I do not have an IGP (EIGRP) route in my routing table. So, I will NOT include it in my routing table because I am using “synchronization”. And, I will not send this route to ISP2.
© Back to No Synchronization SanJose3(config)# router bgp SanJose3(config-router)# no synchronization SanJose3# show ip route bgp /16 is subnetted, 1 subnets B [200/0] via , 00:03:17 SanJose3# Re-enable default, no synchronization I am using NO synchronization again. I have an IBGP route to and even if my routing table doesn’t have an IGP (EIGRP) route, I will include the route in my routing table. And I would send this route to ISP2. Hey, I’m still clueless… help!
Configure and verify full-mesh IBGP on all ITA transit routers
© Two Options BGP EIGRP BGP Option 1: Redistribute BGP routes into IGP (EIGRP) Undesirable All routers in ITA would receive these routes. We only need our transit routers to have these routes. Option2: Enable full-mesh IBGP - on all routers in transit path. BGP IBGP
© Configure full-mesh IBGP on all transit routers SanJose2(config)# router bgp SanJose2(config-router)# bgp router-id SanJose2(config-router)# neighbor remote-as SanJose2(config-router)# neighbor update-source Loopback0 SanJose2(config-router)# neighbor remote-as SanJose2(config-router)# neighbor update-source Loopback0 SanJose1(config)# router bgp SanJose1(config-router)# neighbor remote-as SanJose1(config-router)# neighbor update-source Loopback0 SanJose1(config-router)# neighbor next-hop-self SanJose3(config)# router bgp SanJose3(config-router)# neighbor remote-as SanJose3(config-router)# neighbor update-source Loopback0 SanJose3(config-router)# neighbor next-hop-self Remember, default is no synchronization IBGP
© Peering Relationships ISP1# show bgp summary Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State PfxRcd :14:25 2 SanJose1# show bgp summary Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State PfxRcd :12: :12: :12:12 1 SanJose2# show bgp summary Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State PfxRcd :14: :53:14 1 SanJose3# show bgp summary Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State PfxRcd :14: :53:19 0 IBGP
© Examining SanJose2 – No longer clueless SanJose2# show ip bgp Network Next Hop Metric LocPrf Weight Path *>i / i r>i / i r>i / i SanJose2# show ip route bgp /16 is subnetted, 1 subnets B [200/0] via , 00:06:53 I now have a route via IBGP to I don’t have to be the missing link any more!
© Let’s look at SanJose3 again SanJose3# show ip bgp Network Next Hop Metric LocPrf Weight Path *>i / i r>i / i *> / i SanJose3# show ip route bgp /16 is subnetted, 1 subnets B [200/0] via , 00:54:55 SanJose3# SanJose3# ping source gig 0/0 !!!!! SanJose3# ISP1# ping source gig 0/0 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 80/83/84 ms ISP1#