接着上一篇文章中的图
要想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为避免环路只会保留一个为邻居。