This tutorial explains the BGP synchronization rule. To understand what this is all about, make sure you understand why we need IBGP first. If you are a little fuzzy about IBGP, BGP split horizon and why we need IBGP full mesh adjacencies then please read my IBGP tutorial first. Having said that, let’s look at the synchronization rule.
BGP synchronization is an old rule from the days where we didn’t run IBGP on all routers within a transit AS. In short, BGP will not advertise something that it learns from an IBGP neighbor to an EBGP neighbor if the prefix can’t be validated in its IGP.
It’s best explained with an example, take a look below:
Above we see 5 routers and 3 autonomous systems. When we want to get from R1 to R5 we’ll have to cross AS2, this makes AS2 our transit AS.
EBGP has been configured between R1/R2 and also between R4/R5. IBGP is configured between R2/R4 and R3 on top doesn’t run BGP at all.
The routers within AS2 are configured with OSPF, this is required since R2/R4 have to be able to reach each other to establish the IBGP session.
R1 will advertise a prefix in BGP, AS2 and AS3 will learn about this prefix…
Let me show you the configurations. We’ll use the topology from above but I added some IP addresses to it:
The OSPF configuration is really straight-forward. R2 and R4 have a loopback interface that is used for the IBGP peering which is advertised in OSPF:
R2# router ospf 1 network 188.8.131.52 0.0.0.255 area 0 network 192.168.23.0 0.0.0.255 area 0
R3# router ospf 1 network 184.108.40.206 0.0.0.255 area 0 network 192.168.23.0 0.0.0.255 area 0 network 192.168.34.0 0.0.0.255 area 0
R4# router ospf 1 network 220.127.116.11 0.0.0.255 area 0 network 192.168.34.0 0.0.0.255 area 0
Let me also show you the BGP configuration…
The configuration of R1 is simple, it’s configured to run EBGP with R2 and it advertises network 18.104.22.168 /24 into BGP:
R1# router bgp 1 no synchronization bgp log-neighbor-changes network 22.214.171.124 mask 255.255.255.0 neighbor 192.168.12.2 remote-as 2 no auto-summary
R2 runs EBGP with R1 and IBGP with R4:
R2# router bgp 2 no synchronization bgp log-neighbor-changes neighbor 126.96.36.199 remote-as 2 neighbor 188.8.131.52 update-source Loopback0 neighbor 184.108.40.206 next-hop-self neighbor 192.168.12.1 remote-as 1 no auto-summary
R4 is similar to R2:
R4# router bgp 2 no synchronization bgp log-neighbor-changes neighbor 220.127.116.11 remote-as 2 neighbor 18.104.22.168 update-source Loopback0 neighbor 22.214.171.124 next-hop-self neighbor 192.168.45.5 remote-as 3 no auto-summary
And finally R5, it only runs EBGP with R4:
R5#show run | b router bgp router bgp 3 no synchronization bgp log-neighbor-changes neighbor 192.168.45.4 remote-as 2 no auto-summary
By default, BGP synchronization is disabled. You can see the no synchronization command in the configurations of the routers above. Let’s take a “before” and “after” look..
BGP synchronization disabled
We’ll take a look at R4 and R5, see if they learned about the 126.96.36.199 /24 network which is advertised on R1 and forwarded by R2 through IBGP:
R4#show ip bgp BGP table version is 10, local router ID is 188.8.131.52 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *>i184.108.40.206/24 220.127.116.11 0 100 0 1 i
R4 knows about this prefix and installed it…what about R5?
R5#show ip bgp BGP table version is 6, local router ID is 18.104.22.168 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 22.214.171.124/24 192.168.45.4 0 2 1 i
Great, R5 also knows about this network. The problem in this scenario however is that we will never get any IP packets from AS3 to AS1 since R3 doesn’t run BGP…it will never learn about network 126.96.36.199 /24 so whenever R4 forwards something, it will be dropped. Take a look at R3 here:
R3#show ip route 188.8.131.52 % Network not in table
To synchronization rule was created to prevent this problem. Let’s find out how it works…
BGP synchronization enabled
Let me show you what happens when we enable it, you have to do this on the border routers (R2 and R4):
R2(config)#router bgp 2 R2(config-router)#synchronization
R4(config)#router bgp 2 R4(config-router)#synchronization
Take a look again at R4:
R4#show ip bgp BGP table version is 11, local router ID is 184.108.40.206 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path * i220.127.116.11/24 18.104.22.168 0 100 0 1 i
R4 sees the network in its BGP table but refuses to install it.