我的新BGP上游分配了一个IPv4 / 30网络块作为连接路由器的粘合块。但是,我想运行两个路由器,并在它们之间进行故障转移。如果netblock较大(/ 29),则无论有没有VRRP,我都可以从两个路由器轻松运行BGP会话(它们也可以运行VRRP)。

是否有合理的VRRP / keepalived故障转移

我的两个路由器都运行Linux(一个Ubuntu,一个Gentoo),并带有Quagga?基本配置正常。

#1 楼

您有多个Linux解决方案,用于将LAN中的第一跳冗余到两个路由器(Quagga本身不支持VRRP,但您可以将Quagga与其中的任何一个结合使用而不会出现任何问题):



keepalived(正如您已经提到的)

uCARP-OpenBSD的CARP(通用地址冗余协议)的Linux端口

vrrpd-稀疏有记录且未经测试的VRRP守护程序,但是仍然可以选择

,请注意,这些都与BGP冗余无关,我认为这是您要解决的真正问题。但是,应该很有可能在两个Quagga主机的提供程序端运行VRRP,并将VRRP虚拟IP配置为ISP分配的/ 30的“您的端”,并使用它与ISP对等。故障转移时间可能接近下面的Linux-HA解决方案的时间(如果不仅仅是比它快一点的话)。话虽如此,我个人认为Linux-HA解决方案会更干净,更简单,但这也取决于拓扑。

关于BGP的选项,有一个IETF草案针对“多会话BGP”,它引入了一个新的BGP功能代码,旨在支持在同一地址上与同一对等体的多个BGP会话,但是该草案假定这两个会话都在同一设备上,但是该草案是全新的并且Quagga的当前版本不太可能对此提供支持。

另一个选择是使用Linux-HA在两个盒子之间设置心跳群集,并对其进行配置,以便如果主路由器发生故障,则心跳将识别出此情况,并在备用路由器上打开Quagga / BGPd / etc。