第8章热备份路由选择协议(HSRP)HSRP概述HSRP(HotStandbyRoutingProtocol,热备份路由选择协议)是Cisco私有的一种技术,它确保了当网络边缘设备或接入链路出现故障时,用户通信能迅速并透明的恢复,以此为IP网络提供冗余性。通过应用HSRP,可使网络的正常运行时间接近100%,从而满足用户对网络可靠性的要求热备份路由协议为IP网络提供了容错和增强的路由选择功能。通过使用同一个虚拟IP地址和虚拟MAC地址,LAN网段上的两台或多台路由器可以作为一台虚拟路由器对外提供服务。HSRP使组内的Cisco路由器能互相监视对方的运行状态。虚拟路由器组的成员通过HSRP消息不断的交换状态信息。如果其中一台出现故障,另一台就能接替它,继续完成路由功能。LAN网段上的主机都配置使用同一个细腻路由器作为默认网关,并不断将IP包发往同一个IP和MAC地址。因此,路由设备的切换对主机都是透明的。HSRP向主机提供了默认网关的冗余性,绝大多数主机以默认网关作为唯一的下一跳IP和MAC地址。另外,通过多个热备份组,路由器可以提供冗余备份,并在不同的IP子网上实现负载均衡。HSRP组成员HSRP备份组由一台活跃路由器、一台备份路由器、一台虚拟路由器和其他路由器组成(在三层交换机配置HSRP时也使用HSRP定义的备份路由器等名称)。其中,各路由器的作用如下:活跃路由器的功能是转发发送到虚拟路由器的数据包。组中的另一台路由器被选为备份路由器。活跃路由器通过发送Hello消息来承担和保持它活跃的角色。备份路由器的功能是监视HSRP组的运行状态,并且当活跃路由器不能运行时,迅速承担起转发数据包的责任。备份路由器也传输Hello消息,告知组中所有路由器备份路由器的角色和状态变化。虚拟路由器(即该LAN上的网关)的功能是向最终用户提供一台可以连续工作的路由器。虚拟路由器配有它自己的IP地址和MAC地址,但并不实际转发数据包。HSRP备份组可以包含其他路由器。这些路由器监视Hello消息,但不做应答。这些路由器转发任何经由它们的数据包,但并不转发经由虚拟路由器的数据包。当活跃路由器失效时,其他HSRP路由器将不能接收到Hello消息,随后备份路由器就承担起活跃路由器的角色。随着备份路由器成为活跃路由器,备份路由器的位置空缺,组中的所有其他路由器将竞争备份路由器的角色。默认情况(优先级相同)下,IP地址大的路由器将成为新的备份路由器。尽管一个HSRP组中可以有多台路由器,但只有活跃路由器才负责转发发送到虚拟路由器的数据包。HSRP原理HSRP组内的每个路由器都有指定的优先级(Priority),用于衡量路由器在活跃路由器选择中的优先程度。默认的优先级是100,它是用户配置中的可选项,可以是0-255内的任何值。组中有最高优先级的路由器将成为活跃路由器。活跃路由器替虚拟路由器对数据流进行到响应。如果末端主机发送了一个数据包到虚拟路由器的MAC地址,那么,活跃路由器将接收并且处理这个数据包。如果末端主机对虚拟路由器的IP地址发送ARP解析请求,那么,活跃路由器将使用虚拟器的MAC地址进行应答。选择活跃路由器和备份路由器时,如果优先级相同,IP地址大的路由器获胜。如果在HSRP组内,除了活跃和备份路由器之外还有其他路由器,它们就会监听活跃路由器和备份路由器的状态(即它们发出的HSRPHello包),以实现更强的容错能力。虚拟MAC地址地址解析协议ARP在IP地址和MAC地址之间建立了一种关联。每台三层交换机都维护着一个地址解析表。三层交换机在试图联系某个设备之前,先检查其ARP缓存,以确定这个地址是否已经被解析。虚拟路由器的IP地址和相应的MAC地址维持在HSRP组中的每台三层交换的ARP表中。虚拟路由器所用的MAC地址由三部分组成:厂商编码——MAC地址的前三个字节。HSRP编码(HSRP众所周知的虚拟MAC地址)——MAC地址的后两个字节,本MAC地址用于一台HSRP虚拟路由器,HSRP编码总是“07.ac”。组号(HSRP组号)——MAC地址的最后一个字节是组的标示号。例如,组号47转换为十六进制为2f,它将构成MAC地址的最后一个字节。HSRP消息HSRP中的所有路由器都发送或接受HSRP消息。这些消息用来决定和维护组内的路由器角色。HSRP消息封装在用户数据报协议(UDP)数据包中的数据部分,使用UDP端口号1985。这些数据包所使用的目的地址是全部路由器多点广播地址224.0.0.2,生存时间TTL值为1。(发送给相邻的路由器,只能发送一次)HSRP的状态HSRP配置的路由器有六种状态,并不是所有的HSRP路由器都经历所有状态。例如:不是备份路由器或者活跃路由器的路由器,就不会有备份状态和活跃状态。1.初始状态所有路由器都从初始状态开始。这是一种起始状态,同时表明HSRP还没有运行。配置发生变化或一个端口第一次启用时,就进入该状态。2.学习状态路由器等待来自活跃路由器的消息。这时,路由器还没有看到来自活跃路由器的Hello消息,也没有学习到虚拟路由器的IP地址。3.监听状态路由器知道了虚拟的IP地址,但它既不是活跃路由器,也不是备份路由器。这时,路由器监听来自活跃路由器和备份路由器的Hello消息。除活跃路由器和备份路由器之外的路由器都保持监听状态。4.发言状态路由器周期性的发送Hello消息,并参与活跃或备份路由器的竞选。路由器在获得虚拟路由器的IP地址之前,不能进入发言状态。5.备份状态路由器是成为下一个活跃路由器的候选设备,并且它也周期性的发送Hello消息。在一个组中只有一台备份路由器。6.活跃状态在活跃状态,路由器负责转发发送到备份组的虚拟MAC地址的数据包。活跃路由器周期性的发送Hello消息。在一个组中,必须有且只有一台活跃路由器。HSRP的计时器HSRP使用两个计时器:Hello间隔和保持时间。任何状态的HSRP路由器都会在Hello计时器超时后生成Hello包。默认的Hello间隔是3s,默认的保持时间是10s。未配置计时器的路由器会从活跃路由器或备份路由器学到这些计时器的值。活跃路由器上配置的计时器值会覆盖其他路由器上的计时器设定值。同一个HSRP组内的路由器应该使用相同的计时器值。通常,保持时间会大于或等于Hello间隔的三倍,并且保持时间的取值必须大于Hello间隔。其他HSRP路由器按照保持时间对活跃路由器进行监控:当收到任何活跃路由器发出的Hello包时,路由器会根据HSRPHello消息中的相应字段重置保持时间值。通常,默认的HSRP计时器值适用于大多数的LAN网段。(对于反应慢的路由器,将保持时间改长一点)HSRP与VRRP的区别HSRP是Cisco的专有协议。在Cisco的HSRP之后,Internet工程任务组(InternetEngineeringTaskForce,IETF)也指定了一种路由备份冗余协议:虚拟路由器冗余协议(VirtualRouterRedundancyProtocol,VRRP)。目前,包括Cisco在内的主流厂商均已在其产品中支持VRRP协议。VRRP的工作原理与HSRP相似,也是将系统中的多台路由器组成VRRP组,该组拥有同一个虚拟IP地址作为LAN的默认网关地址。VRRP和HSRP也有很多不同。VRRP与HSRP的一个主要区别在安全性方面:它允许参与VRRP组的设备间建立认证机制。另一个主要区别是:VRRP中只有三种状态——初始状态(Initialize)、主状态(Master)、备份状态(Backup),而HSRP有六种状态。其余在报文类型、报文格式和通过TCP而非UDP发送报文方面也都有所不同。HSRP的配置及应用1.配置为HSRP的成员要将三层交换机配置为一个HSRP组的成员,可以在VLAN虚拟接口端口配置模式下输入下面的命令:Switch(config-if)#standbygroup-numberipvirtual-ip-addressgroup-number:表示该端口所属的HSRP组。通过在备份命令中指定一个唯一的组号可以创建多个HSRP组。默认组是0号,可配置范围是0-255。virtual-ip-address:表示虚拟HSRP路由器的IP地址,即网段的网关地址。如果指定了IP地址,则该地址就会用作该组的HSRP地址。如果没有指定IP地址,路由器就会通过HSRPHello消息学到虚拟地址。在选择活跃路由器时,线路上至少要有一台路由器被配置,或者学到了虚拟IP地址。需要注意配置的虚拟IP地址必须和端口配置的实际地址处于同一网段。例如:Switch(config-if)#standby10ip192.168.1.254如果需要从HSRP组中取消一个端口,可以在上述命令前加关键字no。例如:Switch(config-if)#nostandby10ip192.168.1.2542.配置HSRP的优先级用户可以指定端口在组内的优先级。这样,在发生故障时,用户可以灵活的指定端口顺序。优先级数值高的将成为活跃路由器,指定优先级可使用下面的命令:Switch(config-if)#standbygroup-numberprioritypriority-value其中,priority-value的范围是0-255,默认值是100。3.配置HSRP的占先权要想原先的活跃路由器(优先级高)能够从优先级较低的新活跃路由器那里重新取回转发权,恢复转发路由器的角色,可以使用下面的命令:Switch(config-if)#standbygroup-numberpreempt在配置了standbypreempt命令之后,优先级高的端口将变成活跃状态。除了上述情况下,还有一些其他情况需要配置占先权:配置HSRP时,先配置低优先级的路由器A,当配置完成后它会确认HSRP组中其他路由器的状态和优先级。此时路由器A是HSRP组中唯一的设备,路由器A认为自身优先级最高而成为活跃路由器。在路由器A成为活跃路由器后,再配置高优先级的路由器B,如果没有配置占先权,则路由器B将不会成为活跃状态,而成为备份状态。在网络中的HSRP组工作正常,路由器A优先级为200,路由器B优先级为100,路由器A成为活跃路由器。在路由器A上配置端口跟踪,优先级降低150。当跟踪的端口链路出现故障时,路由器A的优先级降低为50,路由器B成为HSRP组中优先级最高的设备。这时如果路由器B没有配置占先权,则不会成为活跃路由器。由此可以看出,如果网络中已经存在活跃路由器,则新加入HSRP组中没有配置占先权的路由器无论其优先级高低都不会成为活跃路由器。4.配置Hello消息的计时器默认计时器值在很多网络中都工作得很好,一般情况下不需要修改。然而,如果Hello包需要经过有时会拥塞的网络,可以修改这些值,命令如下:Switch(config-if)#standbygroup-numbertimeshellotimeholdtime其中,hellotime间隔时间默认为3s,设置范围是1-255;holdtime保持时间最少应该是Hello时间的三倍,默认的保持时间是10s。例如:将Hello时间和保持时间分别配置为2s和8s,命令如下:Switch(config-if)#standby10times28注意:同一个HSRP组中的Hello时间和保持时间应该配置相同。5.配置HSRP的端口跟踪利用HSRP跟踪(HSRPTracking)功能,可以指定HSRP监控路由器上的另一端口。如果被跟踪端口的状态变为Down,其他路由器就接替其成为活跃路由器。这一过程是通过被跟踪端口的链路状态变为Down时减小HSRP的优先级来实现的。减小优先级的目的是让路由器的HSRP优先级低于其他路由器,默认减小值是10。HSRP跟踪功能减少额主端口不可用时路由器的优先级,但其仍有保持活跃路由器的可能性。通用的原则是在HSRP端口上同时设定占先功能(高优先级和低优先级都配置),以提供最佳的故障