接着上一篇文章中的图要想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之间重分发路由。

### 注意点

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