文/解麟猛
为了减小设备或线路故障对业务的影响、提高网络的可用性,设备需要能够尽快检测到与相邻设备间的通信故障,以便能够及时采取措施,从而保证业务继续进行。
现有的故障检测方法主要包括以下几种:
· 硬件检测:例如通过SDH(Synchronous Digital Hierarchy,同步数字体系)告警检测链路故障。硬件检测的优点是可以很快发现故障,但并不是所有介质都能提供硬件检测。
· 上层协议检测机制:比如说路由协议中的Hello报文机制,VRRP中的hello报文机制。这种机制检测到故障所需时间较长,通常为秒级。
BFD(Bidirectional Forwarding Detection,双向转发检测)就是为了解决上述检测机制的不足而产生的,它是一套全网统一的检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况,保证邻居之间能够快速检测到通信故障,从而快速建立起备用通道恢复通信。
H3C公司提供的融合承载网元方案,采用IRF技术,实现融合承载网元双机框高可靠性的部署。同时采用NAT业务单板插卡的方式,实现整机容量的灵活扩容。
融合承载网元采用旁挂CE的方式接入网络,网元上需要配置PI-0、PI-1和PI-3等三个VPN,和CE上对应的VPN采用Option-a的方式互联。VPN路由采用静态路由方式配置。
CE上路由设计:
在PI-3VPN中,配置缺省路由,下一跳指向融合承载网元;
在PI-0VPN中,配置静态路由,目标网段为融合承载网元上为CTWAP私网用户分配的访问Internet的NAT公网地址池的汇聚网段,下一跳为融合承载网元;
在PI-1VPN中,配置静态路由,目标网段为融合承载网元上为CTWAP私网用户分配的访问PI-1的NAT私网地址池的汇聚网段,下一跳为融合承载网元。
融合承载网元上的路由设计:
在PI-3(对承载网元来说是public路由)中,把从CE接收到的流量通过策略路由的方式转发各对防火墙插卡。把复用的privatewap地址根据不同的地址段,重定向到各对防火墙插卡上去。策略路由建议使用PBR的方式,不使用MQC的方式。配置静态路由,目标网段为PI-3的私网复用地址网段,下一跳为等价路由,分别指向CE1和CE2;
在PI-0VPN中,配置缺省路由,下一跳为等价路由,分别指向CE1和CE2;同时配置到各对防火墙插卡的PI-0公网地址池的静态路由,下一跳分别指向各对防火墙插卡的VRRP虚地址。为避免路由环路,需要配置黑洞路由,目标网段为所有防火墙的PI-0公网地址池的汇总;
在PI-1VPN中,配置静态路由,目标网段为PI-1VPN私网业务的网段,目前包括两个网段,10.0.0.0/8和115.168.254.0/24,下一跳为等价路由,分别指向CE1和CE2;同时配置到各对防火墙插卡的PI-1私网地址池的静态路由,下一跳分别指向各对防火墙插卡的VRRP虚地址。为避免路由环路,需要配置黑洞路由,目标网段为所有防火墙的PI-1私网地址池的汇总;
从路由规划上看出,承载网元在每一个VPN上都设置了两条静态路由,分别指向CE1和CE2,为了能够在CE1或CE2故障时快速收敛,需要有一种检测机制实时监测CE1和CE2的状态,并能够根据CE1和CE2的状态情况撤销对应静态路由;
在CE1和CE2上同样配置了指向承载网元的静态路由,并把这个静态路由引入到动态路由中发布到PE上去,作为报文返回时路由选择。在CE1和CE2上也需要有一种检测机制,监测CE1和CE2是否可以到达融合承载网元,如果不可到达,需要联动本地静态路由无效,并取消在动态路由中的引入发布。
而BFD(Bidirectional Forwarding Detection,双向转发检测)就是这样一种检测机制,用于快速检测、监控网络中链路或者IP连通状况,并且作为标准协议,能够和静态路由联动,为大多数主流厂商所支持。
需求讨论一:
有人产生这样的疑问,CE和融合承载网元大多数情况在同一个机房,两者采取直连的方式,中间并不跨越传输设备,如果链路出现故障,CE和融合承载网元感知链路中断,对应静态路由不生效,应该很快会收敛,不需要额外配置其它检测机制。
目前的情况是,虽然是直连,但大多使用光纤连接,单通现象较普遍,如果单纤出现故障,会导致一方静态路由不生效,而另外一方静态路由生效,业务仍然会部分中断。
需求讨论二:
既然担心单通造成通信故障,那么现在主流厂商都有单通检测机制,是否可以使用单通检测机制来替代BFD呢?答案是不可以。原因是目前各厂商的单通检测机制都是私有协议,实际组网时限制太多。而BFD是标准协议,各主流厂商之间的互通不存在问题。
BFD的工作方式有两种:
控制报文方式:链路两端会话通过控制报文交互监测链路状态。这种工作方式适合于链路两端设备都需要进行链路状态监测。
Echo报文方式:链路某一端通过发送Echo报文由另一端作为普通数据报文转发回来,实现对链路的双向监测。这种工作方式适合于仅链路一端的设备需要进行链路双向传输监测。比如另一端设备不支持BFD时,只能使用这种工作方式。
在C网NAT的场景下,CE设备和融合承载网元都需要对另一端设备进行检测,所以采用控制报文的工作方式更为合适。
H3C设备作为融合承载网元,典型配置如下:
ip route-static 10.48.0.0 255.252.0.0 Vlan-interface3103 10.233.213.237 bfd control-packet description TO-CDMA-PI3-privatwap-CE8
其中10.48.0.0 255.252.0.0为目标网段和掩码;vlan-interface3103为下一跳出接口;10.233.213.237是下一跳地址,也是远端CE和融合承载网元的互联地址;bfd control-packet表明此静态路由和BFD绑定,BFD的工作方式是控制报文方式;description关键字及其后面的字符是为了维护方便,对此静态路由的描述。
根据对收敛速度的要求,可以适当调整BFD报文的探测周期和探测次数:
bfd min-transmit-interval value
bfd min-receive-interval value
bfd detect-multiplier value
假如Router A的Min-transmit-Interval为100毫秒,Min-Receive-Interval为300毫秒,Detect Mult为5;Router B的Min-transmit-Interval为150毫秒,Min-Receive-Interval为400毫秒,Detect Mult为10。那么会有以下结果:
Router A的实际发送时间为Router A发送控制报文的最小时间间隔和Router B接收控制报文的最小时间间隔之间的较大值=Max(100,400)=400毫秒。
Router B的实际发送时间为Router B发送控制报文的最小时间间隔和Router A接收控制报文的最小时间间隔之间的较大值=Max(150,300)=300毫秒。
Router A的实际检测时间为Router B的检测时间倍数和Router B的实际发送时间的乘积=10×300=3000毫秒。
Router B的实际检测时间为Router A的检测时间倍数和Router A的实际发送时间的乘积=5×400=2000毫秒。