9.13 网络健壮性

一个强壮的网络可以抵御一定程度上的网络故障并保持网络应用的平滑运行。

为了保证路由器出现故障时仍能进行正常通信,要求LAN网段配置冗余路由器,但是IPv4 LAN上的主机却在很大程度上依赖于单台默认路由器与远程网段中的主机进行通信。如果该默认路由器出现故障,而主机却并不知情,那么该主机会将流量发送到黑洞路由。VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)和Cisco HSRP(Hot Standby Routing Protocol,热备份路由协议)等路由器冗余协议都可以解决这个问题,这两种协议都可以让多台路由器共享单个IP地址,因而主机在配置默认网关的IP地址时就可以使用该共享地址。使用该共享地址的路由器中只有一台处于活动状态,如果这台活动路由器出现故障,备用路由器将接管数据流量的发送和接收工作,对主机来说根本感受不到路由器故障,多台路由器仍然将其流量向LAN网段外进行转发。VRRP是一种基于Cisco HSRP的开放式标准,不过Cisco IOS软件并不支持VRRP,因而本书不再讨论VRRP,将在下一小节对HSRP做进一步分析和讨论。


注意: 有关VRRP的定义请参见RFC 2338。


HSRP

HSRP允许单个LAN中或ISL封装的VLAN中的多台路由器共享同一个IP地址和MAC地址。将一组路由器配置为HSRP组,组中的每台路由器都被配置一个组IP地址和一个优先级,其中只有一台路由器处于活动状态并负责接受所有转发到组IP/MAC地址的数据包,该活动路由器失效后,组中的其他路由器将成为活动路由器并开始接受数据包。

HSRP组中优先级最高的路由器将成为活动路由器,默认优先级为100,如果多台路由器的优先级均相同,那么HSRP接口上IP地址最大的路由器将成为活动路由器,优先级第二的路由器将成为备用路由器;在活动路由器出现故障后,该备用路由器将成为活动路由器,并宣告其存在,或者开始宣告一个较低的优先级。图9-4解释了HSRP的基本原理。

路由器Monet被配置了一个接口IP地址172.16.1.100和一个HSRP组1的IP地址 172.16.1.201。由于路由器Monet对外宣告的HSRP优先级(对HSRP组1而言)为120,大于Picasso的默认优先级,因而Monet为HSRP组1的活动路由器。当Wks1准备向其默认网关发送数据包时,其ARP的是HSRP组1的IP地址,Monet响应以HSRP组1的MAC地址,之后Wks1即可向HSRP组1的MAC地址发送数据包,此时将由Monet接收该数据包。

HSRP组中的路由器会互相交换宣告优先级的多播Hello包。Hello包在配置了HSRP组的链路上进行交换,路由器在默认情况下每隔3秒钟发送一条Hello消息。如果活动路由器在一个可配置的时间周期(即保持时间,默认的保持时间为10秒钟)内都未能发送Hello消息,那么优先级最高的备用路由器将成为活动路由器,并开始接受目的地是HSRP组MAC地址的数据包。

img570a

图9-4 HSRP

1.MHSRP

MHSRP(Multigroup HSRP,多组HSRP)可以为一个接口配置多个HSRP组。如果希望在同

一个LAN中的多台路由器上分发活动路由器的功能,那么就需要使用MHSRP技术,将某些终端节点的默认路由配置为某个HSRP组的IP地址,而将其他终端节点的默认路由配置为另一个HSRP组的IP地址;如果这两台默认路由器都失效,那么将由其他路由器来接管数据包的转发操作。如果以太网接口不允许关联到多个MAC地址,那么将无法实现MHSRP(那些使用Lance以太网硬件的路由器(1000、2500、3000和4000)在单个以太网上不支持多个组),以太网和FDDI最多支持255个MHSRP组,令牌环最多支持3个MHSRP组(组号分别为0、1、2)。此外,ISL(Inter-Switch Link,交换机间链路)封装链路上也支持MHSRP。图9-5解释了MHSRP的应用情况。

img570b

图9-5 可以在路由器接口上配置MHSRP组以实现负载均衡

如图9-5所示,Monet是组1的活动路由器,Picasso是组2的活动路由器,Wks1默认去往172.16.1.201(组1),Wks2默认去往172.16.1.202(组2)。如果Monet接收不到组2的 HSRP Hello消息,那么将成为组1和组2的活动路由器。

2.配置HSRP

要想启用HSRP,可以输入以下接口子命令。

img571a

至少要为HSRP组中的一台路由器指定IP地址,如果没有在路由器上指定IP地址,那么就需要通过HSRP Hello消息学习IP地址。

下述命令将影响路由器在HSRP中的行为。

img571b

命令times的作用是修改Hello包的间隔时间以及备用路由器认为活动路由器已失效之前所逝去的时间,默认的Hello时间为3秒钟,默认的保持时间为10秒钟。

命令priority和preempt的作用是修改HSRP路由器的优先级,命令preempt让优先级最高的路由器接管活动路由器的角色(即使目前的活动路由器没有任何问题),选项delay的作用是让路由器在成为活动路由器之前延迟指定时长之后再抢占活动路由器的角色,该时长范围为0~3600秒,默认为0。

虽然路由器的LAN接口可能仍处于活动状态,路由器本身也运行良好,但该路由器用来将数据包向外转发的接口可能会失效。此时,转发到该路由器的数据包必须被重定向到其他路由器(如图9-6所示)。

img571c

图9-6 无接口跟踪的HSRP

工作站向其默认网关(活动路由器Monet)发送数据包,但Monet的出站接口都失效,因而Monet查询其路由表并将该数据包转发回以太网并由Picasso做进一步转发。

命令track可以启用HSRP跟踪出站接口的状态,让路由器降低其优先级并在接口出现故障时可以从活动状态迁移出去。当被跟踪接口出现故障时,该路由器会更改其宣告的优先级,如果新的优先级低于备用路由器的优先级,且备用路由器被配置为以低优先级来抢占活动路由器,那么该备用路由器将成为该HSRP组的活动路由器。该HSRP组的路由器按照interface-prioroty字段中指定的数值(默认为10)来递减其优先级。可以同时跟踪多个接口,如果跟踪了多个接口,且每个接口都被配置了一个interface-prioroty值,在一个以上接口都出现故障时,所要递减的优先级值将是累积递减值。如果接口上没有设置interface-prioroty值,在多个接口出现故障时,被递减的优先级值将为默认值10,且不累积。

命令authentication的作用是让路由器在其HSRP消息中包含一个认证字符串,必须为组中的所有路由器配置相同的认证字符串,或者根本不配置字符串。第一台启用了HSRP的路由器将成为活动路由器,如果随后被激活的路由器上的认证字符串不匹配,那么新的被激活的路由器将处于学习状态,此时将无任何路由器成为备用路由器。

例9-48显示了图9-7(单组HSRP)中的路由器Monet和Picasso的HSRP配置情况。

例9-48:图9-7中路由器Monet和Picasso的HSRP配置情况。

img572a

img572b

图9-7 单组HSRP示意图

Picasso通过HSRP功能学习到IP地址和定时器。

对路由器Picasso使用命令show standby后的输出结果如例9-49所示,显示了Picasso所学习到的信息。

请注意,Picasso的状态为备用状态,优先级为100,活动路由器是Monet,其IP地址为 172.16.1.100,HSRP地址为172.16.1.201,相关联的HSRP MAC地址为0000.0c07.ac01。

例9-49:命令show standby的输出结果显示了Picasso从HSRP功能中学习到的IP地址和定时器信息。

img572c

img573a

例9-50从工作站向HSRP地址发起ping操作,演示了活动路由器出现故障后由备用路由器负责恢复的整个过程。

例9-50:向HSRP地址发起ping操作显示了活动路由器出现故障和备用路由器恢复的过程。

img573b

工作站每秒钟都向HSRP地址发送ping包,包1~6成功,包7~16失败。可以看出,备用路由器开始接受发往HSRP MAC地址的ping包大约花费了10~11秒钟的时间。当活动路由器的LAN接口失效后,备用路由器就无法从活动路由器接收到Hello消息,此后备用路由器会等待10秒钟的保持时间,然后再开始接受数据包。

例9-51中的配置在Monet上启用了HSRP接口跟踪机制,图9-8解释了HSRP接口跟踪的好处。Monet的串行接口1和以太网接口0去往远端网络资源,这些远端网络资源也能经Picasso到达,设计目标是只要Monet有一个或多个出站接口(串行接口1和以太网接口0)处于工作状态,那么LAN上的工作站就应该使用去往Monet的默认路由;如果Monet的这两个出站接口均失效,则工作站将选择Picasso作为默认路由。

例9-51:在路由器Monet上启用HSRP接口跟踪机制。

img573c

请注意,Monet同时跟踪串行接口1和以太网接口0,如果仅有其中的一个被跟踪接口出现故障,此时Monet的优先级仍为105,仍大于Picasso的优先级,因而Monet仍然为活动路由器。但如果Monet的这两个接口均出现了故障,那么Monet将会宣告其优先级为90(不再是120),这样一来,在等待了一个抢占延时时间之后,Picasso开始接管活动路由器的角色,并侦听其他HSRP消息以确定其是否需要成为备用路由器。因而,需要在Picasso的HSRP配置中增加语句preempt,以启用其接管机制。当Monet的某个接口恢复正常之后,其优先级将更改为105,由于Monet也配置了preempt和delay,因而Monet在等待10秒钟之后将再次成为组1的活动路由器。

img574a

图9-8 解释HSRP接口跟踪机制的网络示意图

3.配置MHSRP

图9-9给出了一个MHSRP示意图。

img574b

图9-9 MHSRP示意图

例9-52给出了路由器Monet和Picasso的MHSRP配置情况。

例9-52:在路由器Monet和Picasso上配置MHSRP。

img574c

img575a

从上例可以看出,Monet是组1的活动路由器,其HSRP IP地址为172.16.1.201,Picasso是组2的活动路由器,其HSRP地址为172.16.1.202。为了实现负载均衡功能,将LAN中的一般工作站的默认网关配置为172.16.1.201,而将另一半工作站的默认网关配置为172.16.1.202。