HSRP 协议提供了一种决定使用活动路由器还是备份路由器的机制,并指定一个虚拟的 IP 地址作为网络系统的默认网关地址。如果活动动路由器出现故障,备份路由器(Standby Router)就会自动接管活动路由器(Active Router)的所有任务,并且不会导致主机连通中断现象。当在网络或者网段中配置了HSRP时,会提供一个由HSRP路由器组中各路由器共享的虚拟MAC地址和虚拟的IP地址。但是HSRP路由器组中的各路由器转发协议数据包的源地址使用的仍是物理路由器接口上的实际 IP 地址,而并非虚拟IP地址。正因如此,HSRP 组中的路由器间能相互识别。
HSRP 组中各路由器的识别是通过VRRP Hello广播包来维系的。HSRP运行在 UDP 上,发送HSRP通告包时所采用的端口号为UDP 1985。为了减少网络的数据流量,在设置完活动路由器和备份路由器之后,
只有活动路由器向备份路由器定时发送
HSRP
报文,而备份路由器不会向活动路由器发送HSRP报文。如果当前活动路由器失效,备份路由器将接管成为新的活动路由器。如果备份路由器失效或者变成了活跃路由器,将由另外的路由器被选为备份路由器。
目前一些Cisco IOS交换机支持两种HSRP版本:HSRPv1和HSRPv2。默认都是v1版本。在HSRPv1版本中,备份组的组号取值范围为0~255,虚拟MAC地址为0000.0C07.AC??(“??”为HSRPv1组号)。HSRPv1使用组播IP地址224.0.0.2来发送hello包,这样就会与使用相同组播IP地址的CGMP(Cisco Group Management Protocol,思科组管理协议)相冲突,所以你不能同时启用HSRPv1和CGMP。
HSRPv2备份组的组号可以与子接口的VLAN ID号进行匹配,取值范围为0~4095,虚拟MAC地址的取值范围为0000.0C9F.F000 ~ 0000.0C9F.FFFF。HSRPv2使用组播IP地址224.0.0.102来发送Hello包,这样就不再与CGMP有冲突了,可以同时启用这两个协议。
另外,HSRPv2与HSRPv1的包格式也不一样。运行HSRPv1的交换机不能识别发送hello包的物理路由器,因为包中的源MAC地址是虚拟MAC地址。而HSRPv2包使用TLV(type-length-value)格式,并有一个6字节,带有发送hello包的物理路由器MAC地址的标识(identifier)字段。如果运行HSRPv1的接口接收到一个HSRPv2的包,则type(类型)字段将被忽略。
在实际的一个特定的局域网中,可能有多个热备份组并存或重叠,这就是我们下面将要介绍的MHSRP(多HSRP)。每个热备份组模拟成一个虚拟路由器工作,都有一个Well-known(公认)的MAC地址和一个IP地址。该IP地址、组内路由器的接口地址、主机在同一个子网内,但是不能一样。当在一个局域网上有多个热备份组存在时,把主机分布到不同的热备份组,可以实现负载分担。
【注意】在HSRP备份组中的路由器可以是支持HSRP的任一路由器接口,包括可路由端口和VLAN的SVI接口。但对于交换机来说,这台交换机不能运行LAN Base特性集。
2.1.2 HSRP工作原理
多数IP主机有一个以单一路由器作为默认网关的IP地址。当使用HSRP时,IP主机的默认网关将以HSRP组的虚拟IP地址替代具体物理路由器接口的IP地址。HSRP通过为网络中的主机提供冗余的IP通信路由来实现网络的高可用性。
1. HSRP组中路由器的两种角色
在HSRP路由器组中的路由器分成两种两种角色:活动路由器(Active Router)和备份路由器(Standby Router),共同构成一台虚拟路由器。活动路由器承担路由包转发工作,而备份路由器只是在当前活动路由器出现故障时,或者满足某种条件时才接管活动路由器的工作。HSRP对于那些不支持路由发现协议(如ICMP路由发现协议(IRDP)),不能在它们所选择的路由器重载,或者关闭时切换到新的路由器的主机网络中非常有用。因为在启用HSRP后,现存的TCP会话可以继续,避免中断,为主机动态选择下一跳恢复IP路由通信。
运行HSRP的路由器发送和接收基于UDP的组播Hello消息来检测路由器的失效,指定活动路由器和备份路由器。当活动路由器在所配置的期间内没有发送一个Hello包,具有最高优先级的备份路由器将成为新的活动路由器,网络中所有主机的数据通信将同时切换到新的活动路由器上。
2. HSRP组虚拟MAC地址和虚拟IP地址
在一个网段配置了HSRP后,它将提供一个供运行HSRP的路由器组中的各成员路由器共享的虚拟MAC地址(
Virtual MAC address)和虚拟IP地址(
virtual IP address),各路由器的HSRP备份组IP地址必须都设置成这个虚拟IP地址。在这些路由器中将选择一台路由器作为活动路由器,活动路由器接收、路由包到路由器组的虚拟MAC地址。当活动路由器失效时,HSRP会检测到,同时会选举一个备份路由器来控制路由器组的虚拟MAC地址和虚拟IP地址。
通过共享一个虚拟MAC地址和虚拟IP地址,两台或者多台路由器可以作为一台虚拟路由器。虚拟路由器并不是实际存在的,但它是作为为HSRP组中相互备份的路由器的公共默认网关。你无需在网络中用活动路由器的物理接口IP地址为主机配置默认网关,而要用虚拟路由器的虚拟IP地址作为主机的默认网关。如果活动路由器在所配置的延时时间内没有发送Hello包,则备份路由器会认为活动路由器已失效,备份路由器之间会选举一台新的路由器作为新新的活动路由器,控制虚拟IP地址的使用。
3. HSRP优先级
HSRP还使用优先级机制来决定哪台HSRP路由器成为默认的活动路由器。要配置一台路由器作为活动路由器,你需要分配一个比组中其它路由器更高的优先级。默认的优先级是100,所以如果你仅配置一台路由器的优先级大于100(值越大,优先级越高),则这台路由器就会成为默认路由器了。
4. MHSRP
你可以在多台交换机或交换机堆叠间配置多个路由器备份组,并为每个备份组指定一个组号。这就是MHSRP(多HSRP)。例如,你可以在switch 1上配置一个接口作为活动路由器,在switch 2上配置一个接口作为备份路由器,同时你也可以在switch 2上配置另一个接口作为活动路由器,而在switch 1上配置另一个接口作为备份路由器。
有关MHSRP的具体工作原理将在下节介绍。
5. HSRP示例
图2-1显示了一个网段的HSRP配置。其中的备份组中有两台路由器,Rouer A是活动路由器,Rouer B是备份路由器。它们两个一起形成一个虚拟路由器。每台路由器都用虚拟路由器的MAC地址和IP地址进行配置。
图2-1 典型HSRP拓扑示例
在这样一个示例中,网络中的主机默认网关配置就要指向这个虚拟路由器IP地址,而不是指向Router A或者Router B。当Host C发送一个数据包到Host B时,它会先以虚拟路由器的MAC地址作为源MAC地址把数据包发送到虚拟路由器。正常情况下,肯定是通过Router A来对Host C的请示进行响应的,因为它是备份组的活动路由器。如因某种原因,Router A停止了工作,则Router B会以虚拟路由器的MAC地址和IP地址ARP映射表项进行响应,同时成为活动路由器。然后,Host C使用Router B的ARP响应包中的虚拟路由器IP地址发送数据包给Host B。当Rouer B接收到数据包后,再转发给Host B。直到Router A恢复正常工作之前,HSRP一直允许Router B为Host C网段中到达Host B所在网段的用户提供不间断的服务,当然同时它仍然负责正常的Host A和Host B网段这间的用户通信。
2.3.2 主要VRRP特性概述
在VRRP中最主要的特性包括以下几个:(1)VRRP路由器优先级和抢占,(2)VRRP通告,(3)VRRP认证,(4)VRRP对象跟踪。
1. VRRP路由器优先级和抢占
VRRP冗余方案的一个重要特征就是VRRP路由器优先级。优先级决定了每个VRPP路由器在虚拟路由器主失效时可以扮演的角色。如果一个VRRP路由器的物理接口IP地址与虚拟路由器的IP地址相同,则认为它是虚拟路由器IP地址拥有者,会自动成为虚拟路由器主的。
VRRP路由器的优先级也决定了在虚拟路由器主失效时备份路由器可能成为新的虚拟路由器主的排序。你可以使用
vrrp priority命令为每个备份路由器配置1~254的优先级,因为255是最高优先级,是虚拟路由器IP地址拥有者的优先级,不可改变的。
例如。如果当前的虚拟路由器主Router A失效了,这时就会在Router B和Router C这两台备份路由器间进行新的虚拟路由器主选举。如果Router B和Router C这两台路由器的优先级分别配置为101、100,这时Router B将被选举为新的虚拟路由器主,因为它的优先级更高。如果Router B和Router C这两台路由器的优先级都配置为100,这时就要考虑这两台路由器的IP地址配置了,IP地址大的将成为新的虚拟路由器主。
默认情况下,具有更高优先级的备份路由器可以接管当前的虚拟路由器主,而成为新的虚拟路由器主。你可以使用
no vrrp preempt命令禁止VRPP路由器的抢占功能。如果禁止了抢占功能,则选举成为新的虚拟路由器主的备份路由器将一直保持虚拟路由器主角色,直到原来的虚拟路由器主恢复,重新成为虚拟路由器主。
2. VRRP通告
启用了VRRP后,虚拟路由器主发送VRRP通告到其他VRRP路由器,向其他路由器传递虚拟路由器主的优先级和状态。VRRP通告封装在IP包中,并用分配给VRRP组的多播IP地址进行发送。VRRP通告会发按配置的发送时间间隔向VRRP组中的每个备份路由器。
尽管VRRP按照RFC 3786是不支持毫秒级计时器,但在Cisco路由器中仍允许你配置毫秒级计时器。你需要手动在虚拟路由器主和备份路由器上配置毫秒级计时器。要注意的是,在备份路由器上使用show vrrp命令显示的虚拟路由器主通告计时器值总是为1秒,因为备份路由器不接受毫秒时间值。
3. VRRP对象跟踪
对象跟踪是一个独立管理创建、监控和删除被跟踪对象(如接口线路协议状态)的进程。HSRP、GLBP(Gateway Load Balancing Protocol,网关负载平衡协议)和VRRP客户端注册被跟踪对象,在这些对象的状态发生改变时采取相应的行动。
每个被跟踪的对象由一个唯一的号码标识的,VRRP、HSRP、GLBP等使用这个号码对对象进行跟踪,这与比较新的IOS版本中的HSRP对象跟踪方法是一样的。跟踪进程会周期性地轮换跟踪被跟踪的对象,并注意它们的任何参数值的改变。一旦被跟踪的对象发生任何改变,则会通知VRRP、HSRP或GLBP。
VRRP也可仅跟踪特定的对象,如接口状态、线路协议、IP路由状态和路由的可达性。每个VRRP组可以跟踪多个可能影响VRRP路由器优先级的对象,你只需要指出其要跟踪的对象号,VRRP就会在被跟踪对象发生任何改变时得到通知,然后VRPP会根据相应的状态改变减小或者增加虚拟路由器的优先级。
4. VRRP认证
VRRP会忽略没有认证的VRPP消息,默认的认证类型为文本认证,但你也可以配置使用密钥字符串的简单MD5认证,或者MD5认证密钥链。MD5认证提供了比纯文本认证更高的安全性。MD5认证允许每个VRRP路由器组成员使用一个加密密钥产生一个加密的MD5哈希值,并作为出站包的一部分。从其他VRRP路由器流入的入站包也会产生一个加密MD5哈希值,如果入站包中的哈希值与本VRRP路由器的出站包中的哈希值与不一致,则这个入站包将被忽略。MD5哈希值可以直接在配置中使用密钥字符串给出,也可以通过密钥链间接提供。VRRP路由器将忽略来自不是相同认证配置的VRRP路由器发来的VRRP包。
2.3.3 VRRP基本工作原理
图2-4显示了一个配置了VRRP的局域网拓扑结构。在这个示例中,Router A、Router B和Router C是组成VRPP虚拟路由器的VRRP路由器成员。虚拟路由器IP地址与Router A的IP地址一样——10.0.0.1(HSRP中的虚拟IP地址不能与物理路由器的IP地址一样)。
图2-4 基本的VRRP拓扑
因为虚拟路由器使用Router A上的物理接口IP地址,Router A就自动成为虚拟路由器主角色,并成为虚拟IP地址拥有者。作为虚拟路由器主,Router A控制着虚拟路由器的IP地址,并且对转发到这个虚拟IP地址的数据包进行响应。在本示例中,Client 1~3配置Router A的IP地址10.0.0.1作为默认网关。
此时,Router B和Router C作为虚拟路由器的备份。如果虚拟路由器主(Router A)失效,Router B和Router C中优先级更高的将成为新的虚拟路由器主,为局域网中的主机提供不间断的服务。当Router A恢复后,它又将成为虚拟路由器主。
图2-5显示了一个配置了两个VRRP组的LAN拓扑,Router A和Router B共享到达,或者来自Client 1~4的负载,Router A和Router B为相互备份的关系,因为此时这两个路由器已创建了两个VRPP组,而且两个路由器分别为两VRRP组中的虚拟路由器主。
在这个示例中,就有两个VRPP虚拟路由器了。对于VRRP组1,Router A是IP地址虚拟IP地址10.0.0.1的拥有者,自动成为虚拟路由器主,Router B作为备份路由器。Client 1和Clients 2以虚拟IP地址作为默认网关。而在VRRP组2中,Router B是IP地址虚拟IP地址10.0.0.2的拥有者,自动成为虚拟路由器主,Router A作为备份路由器。Client 3和Clients 4以虚拟IP地址作为默认网关。
图2-5 双VRRP组负载共享的拓扑示例