BGP Network Migration scenario
BGP Network Migration scenario
Given below is a small scenario where ISP_B is acquired by ISP_A, and hence the BGP AS number will change for ISP_B to match with ISP_A. Care will be taken that there is least impact on the Customer connected to ISP_B in terms of outage and reachability.
Initial configuration on ISP_A router
interface Loopback 0
ip address 1.1.1.1 255.255.255.255
!
interface serial 0/0
ip address 10.1.1.1 255.255.255.252
!
router bgp 100
neighbor 10.1.1.2 remote-as 200
network 1.1.1.1 mask 255.255.255.255
!
Initial configuration on ISP_B router
interface Loopback 0
ip address 2.2.2.2 255.255.255.255
!
interface serial 0/0
ip address 10.1.1.2 255.255.255.252
!
interface serial 0/1
ip address 10.3.3.1 255.255.255.252
!
router bgp 200
neighbor 10.1.1.1 remote-as 100
neighbor 10.3.3.2 remote-as 300
network 2.2.2.2 mask 255.255.255.255
!
Initial configuration on Customer router
interface Loopback 0
ip address 3.3.3.3 255.255.255.255
!
interface Loopback 1
ip address 4.4.4.4 255.255.255.255
!
interface Loopback 2
ip address 5.5.5.5 255.255.255.255
!
interface serial 0/0
ip address 10.3.3.2 255.255.255.252
!
router bgp 300
neighbor 10.3.3.1 remote-as 200
network 3.3.3.3 mask 255.255.255.255
network 4.4.4.4 mask 255.255.255.255
network 5.5.5.5 mask 255.255.255.255
!
After initial configuration, the BGP sessions are UP and the routers exchange routing information with each other.
BGP tables on ISP_A, ISP_B and Customer routers
ISP_A# show ip bgp | begin Network
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.1/32 0.0.0.0 0 32768 i
*> 2.2.2.2/32 10.1.1.2 0 0 200 i
*> 3.3.3.3/32 10.1.1.2 0 200 300 i
*> 4.4.4.4/32 10.1.1.2 0 200 300 i
*> 5.5.5.5/32 10.1.1.2 0 200 300 i
ISP_B# show ip bgp | begin Network
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.1/32 10.1.1.1 0 0 100 i
*> 2.2.2.2/32 0.0.0.0 0 32768 i
*> 3.3.3.3/32 10.3.3.2 0 0 300 i
*> 4.4.4.4/32 10.3.3.2 0 0 300 i
*> 5.5.5.5/32 10.3.3.2 0 0 300 i
Customer# show ip bgp | begin Network
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.1/32 10.3.3.1 0 200 100 i
*> 2.2.2.2/32 10.3.3.1 0 0 200 i
*> 3.3.3.3/32 0.0.0.0 0 32768 i
*> 4.4.4.4/32 0.0.0.0 0 32768 i
*> 5.5.5.5/32 0.0.0.0 0 32768 i
Network migration of ISP_B:
ISP_B is now acquired by ISP_A and its BGP AS number needs to be changed from 200 to 100, making the BGP session between them an iBGP session. Also, no changes can be made on the Customer router.
Step 1: First step towards migration will be running an IGP (OSPF) between ISP_A and ISP_B so that an iBGP session between Loopback interfaces can be run between them. A configuration like below is implemented on ISP_A and ISP_B routers, making sure no Hello packets are sent on WAN link towards the Customer.
OSPF configuration on ISP_B router
router ospf 1
passive-interface serial 0/1
network 0.0.0.0 255.255.255.255 area 0
!
Step 2: Once OSPF is enabled between the routers, complete BGP configuration on ISP_B is removed and reconfigured again with new AS number 100. However, no configuration changes are made on the Customer router. This means that the BGP session between ISP_B and the Customer router will never come UP as the Customer router is configured to peer with BGP AS 200 with ISP_B. Hence, a mechanism is required on ISP_B router that disguises its new BGP AS number to the Customer router and continues to use the old BGP AS number that the Customer router is peering with. In comes, BGP Local-AS feature.
BGP Local-AS feature allows a BGP speaking router to impersonate an AS different from the one configured with the router bgp <ASN> command.
Further, the eBGP session between ISP_A and ISP_B is converted into an iBGP session.
Configuration changes on ISP_B
no router bgp 200
!
router bgp 100
neighbor 1.1.1.1 remote-as 100
neighbor 1.1.1.1 update-source Loopback 0
neighbor 10.3.3.2 remote-as 300
neighbor 10.3.3.2 local-as 200
!
Configuration changes on ISP_A
router bgp 100
no neighbor 10.1.1.2 remote-as 200
neighbor 2.2.2.2 remote-as 100
neighbor 2.2.2.2 update-source Loopback 0
no network 1.1.1.1 mask 255.255.255.255
!
Step 3: The Customer router loses all routing information about 1.1.1.1/32 and 2.2.2.2/32 since they are not advertised by BGP network command any more. One possible solution is to redistribute OSPF into BGP, but that will expose all ISP_A routes to the Customer. So a better option is that ISP_B advertise a default-route to the Customer.
Default-route configuration on ISP_B
router bgp 100
neighbor 10.3.3.2 remote-as 300
neighbor 10.3.3.2 local-as 200
neighbor 10.3.3.2 default-originate
!
BGP tables after migration
ISP_A# show ip bgp | begin Network
Network Next Hop Metric LocPrf Weight Path
*>i3.3.3.3/32 10.3.3.2 0 100 0 200 300 i
*>i4.4.4.4/32 10.3.3.2 0 100 0 200 300 i
*>i5.5.5.5/32 10.3.3.2 0 100 0 200 300 i
ISP_B# show ip bgp | begin Network
Network Next Hop Metric LocPrf Weight Path
*> 3.3.3.3/32 10.3.3.2 0 0 200 300 i
*> 4.4.4.4/32 10.3.3.2 0 0 200 300 i
*> 5.5.5.5/32 10.3.3.2 0 0 200 300 i
Customer# show ip bgp | begin Network
Network Next Hop Metric LocPrf Weight Path
*> 0.0.0.0 10.3.3.1 0 0 200 100 i
*> 3.3.3.3/32 0.0.0.0 0 32768 i
*> 4.4.4.4/32 0.0.0.0 0 32768 i
*> 5.5.5.5/32 0.0.0.0 0 32768 i
It should be noted that ISP_B router prepends AS number 200 to all the updates that it advertises to its BGP neighbors. This can be avoided using neighbor 10.3.3.2 local-as 200 no-prepend command. The no-prepend keyword disables prepending AS 200 to all BGP routes advertised by ISP_B router.
A simple PING to 1.1.1.1/32 from the Customer router validates the reachability.
Customer# ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 88/103/144 ms
This is a temporary solution and proper changes should be made on the ISP_B and the Customer routers.