BGP路由反射

接着上一篇文章中的图
https://blog.gnuers.org/?attachment_id=1351
要想IBGP内各路由器内都有完整的路由信息,可以做的方案:

  1. 做full mesh,也就是改一下R1/R2的配置,将对方做peer。
  2. 将R3设置为路由反射器(Route-Reflector)
  3. 使用BGP联盟,把内部各路由器划到不同分子AS。

路由反射的配置比较简单,R1/R2的配置不变,R3的配置只需要添加一行

log file /var/log/quagga/zebra.log  
log file /var/log/quagga/bgpd.log  
!  
password bgp  
!  
interface eth0  
ipv6 nd suppress-ra  
link-detect  
!  
interface eth1  
ipv6 nd suppress-ra  
no link-detect  
!  
interface lo  
no link-detect  
!  
router bgp 65000  
bgp router-id 10.1.0.4  
redistribute connected metric 121  
neighbor IBGP peer-group  
neighbor IBGP remote-as 65000  
neighbor IBGP password DOCKER  
neighbor IBGP route-reflector-client  
neighbor 10.1.0.2 remote-as 65001  
neighbor 10.1.0.2 password DOCKER  
neighbor 10.1.0.2 ebgp-multihop 255  
neighbor 10.1.0.3 peer-group IBGP  
neighbor 10.1.0.5 peer-group IBGP  
distance bgp 250 200 150  
exit  
!  
access-list all permit any  
!  
ip forwarding  
ipv6 forwarding  
!  
line vty  
!  
end

其中neighbor IBGP route-reflector-client这个行将IBGP这个peer-group设置为了反射的client,因此R3可以在R1/R2之间重分发路由。

注意点

  • 配置了路由反射器后,不要设置ibg的 maximum-paths 大于1,否则在域内各router宣告相同的地址时,RR为避免环路只会保留一个为邻居。