理解并实施:HSRP


思科热备路由器协议HSRP(HotStandby Router Protocol)是企业级网络路由器的故障冗余服务。如图9.116所示,192.168.2.0/24的子网需要与目标192.168.5.2的计算机通信。192.168.2.0/24的子网有两台出口路由器,一台是R1(192.168.2.1),另一台是R2(192.168.2.2)。现在HSRP可以实现将192.168.2.1的网关地址与192.168.2.2的网关地址虚拟融合成一个IP地址(192.168.2.100)。此时192.168.2.0/24子网的主机在填写网关时,只需要填写192.168.2.100就可以与整个网络通信。而且就算R1或R2任意一台路由器故障,也不会中断192.168.2.0/24的子网与192.168.5.2的持续通信。故障会在R1与R2之间切换,并且在192.168.2.0/24子网的主机无须更改网关。为企业网络做到了透明容错的目标。思科HSRP协议是思科的厂商私有标准,其他厂商的路由器不支持,有一个代替HSRP的标准三层容错协议叫做VRRP,在下一小节将描述VRRP。


理解并实施:HSRP(CCNA200-120新增考点)_第1张图片

现在需要思考两个问题:


问题1192.168.2.0/24子网的主机填写的网关是192.168.2.100(既包括R1又包括了R2的路由器),那么如果在两台路由器都正常的情况下,是哪台路由器负责通信流量的转发,或者说两台都负责通信流量转发吗?


事实上在HSRP的虚拟热融组中,任意一个时刻只有一台路由器进行通信流量的转发,不会两台同时转发通信流量,思科HSRP协议的核心包含了一台活动路由器(Active Router)和备份路由器(Standby Routers),其中活动路由器负责数据包的转发。一旦活动路由器出现故障,备份路由器将取代活动路由器实现数据的转发(并且不会导致主机出现连连续中断通信的现象)。对于活动路由器和备份路由器的选择原则,主要通过路由器的HSRP优先级,优先级最高的为活动路由器,次高优先级为备份路由器。如果网络中HSRP的优先级相同时,则比较其IP地址的大小,IP地址大的将会被选举为活动路由器。默认情况下在如9.116所示的网络环境中,R2将会是一台活动路由器(ActiveRouter),因为默认情况下网络中HSRP路由器的优先级都是相同的,由于R2具备更大的IP地址,所以它将成为活动路由器。那么流量转发和故障切换的过程将如9.117所示。现在192.168.2.0/24子网的所有流量都通过R2转发,因为R2是热容组中的Active Router,直到某个时候,R2故障了,那么流量才会从R2切换到路由器R1

理解并实施:HSRP(CCNA200-120新增考点)_第2张图片

这就产生了另一个问题如果R1和R2都不产生故障,那么就会产生对热容组流量转发的利用率就不充分,在这种情况下,路由器R1将永远不被用于流量转发,单纯处于备用状态,因为它不是Active Router,有没有一种高利用率的方案,比如:当路由器R1和R2没有产生故障时,将转发到主干的流量进行负载均衡,当任意一台路由器故障后,对流量转发进行故障切换?答案是:当然有,如下图9.118所示,建立两个不同的热容组,一个热容组的IP配置为192.168.2.100;另一个配置为192.168.2.101;一个组的活动路由器设置为R1,另一个组的活动路由器设置为R2,如果192.168.2.0子网有100台主机,那么其中50台填写默认网关为192.168.2.100;另外50台填写默认网关为192.168.2.101,此时,如果路由器R1和R2都正常工作,那么就执行流量均衡,如果其中的一台故障,那么流量会自动切换到另一台路由器。

理解并实施:HSRP(CCNA200-120新增考点)_第3张图片

问题2192.168.2.0/24子网的主机填写的网关是192.168.2.100(既包括R1又包括了R2的路由器),那么这个热容组虚拟的IP地址192.168.2.100所使用的MAC地址会是谁的MAC,是路由器R1E1/0,还是路由器R2E1/0

既不会使用路由器R1E1/0MAC地址,也不会使用R2E1/0MAC地址,而是针对热容组的虚拟IP地址192.168.2.100生成一个虚拟的MAC地址,这个热容组虚拟的MAC地址由如9.119所示的3个部分组成。第一部分为厂商编码,思科通常是0000.0c;第二部分为HSRP众所周知的标记,通常是07.ac;第三部分为HSRP热容组编号(换十六进制)决定。比如路由器R1R2的热容组的编号为120,那么此时这个热容组所对应的MAC地址就是:0000.0c07.ac78;因为热容组的编号120换为十六进制表达就是78


理解并实施:HSRP(CCNA200-120新增考点)_第4张图片

取证思科HSRP的工作原理:

通过取证HSRP工作原理,来进一步理解HSRP协议端口号、理解HSRP的工作过程、理解备份路由器是如何知道主路由器发生故障、如何进行故障接管的如下9.120所示

理解并实施:HSRP(CCNA200-120新增考点)_第5张图片

第一步:理解HSRP协议端口号,思科热备路由器协议(Hot Standby Router Protocol)运行在传输层的UDP协议上,使用的端口编号为1985,如9.121所示。

理解并实施:HSRP(CCNA200-120新增考点)_第6张图片

第二步:理解HSRP的工作过程,就必须理解如下所述的5个状态。

Initial状态:HSRP启动时的状态。即HSRP还没有运行,一般是在改变配置或端口刚刚启动时进入该状态,如图9.122所示,指的是活动路由器未知,备份路由器也未知。

理解并实施:HSRP(CCNA200-120新增考点)_第7张图片

Listen状态:路由器已经得到了虚拟IP地址,但是它既不是活动路由器也不是备份路由器,它一直监听从活动路由器或者备份路由器发来的Hello报文,如图9.123所示。

理解并实施:HSRP(CCNA200-120新增考点)_第8张图片

Speak状态:在该状态下,路由器定期发送Hello报文,并且积极参加活动路由器或备份路由器的选举,如图9.124所示。

理解并实施:HSRP(CCNA200-120新增考点)_第9张图片

HSRP利用Hello数据报文完成活动路由器的选举,成功完成活动路由器与备份路由器的选举。Standby表示备份路由器,指示当活动路由器失效时此路由器准备接管通信流量传输,如图9.125所示;Active表示活动路由器执行通信流量的传输功能,如图9.126所示。

理解并实施:HSRP(CCNA200-120新增考点)_第10张图片

第三步:理解备份路由器是如何知道主路由器发生故障、如何进行故障接管的。主路由器与备份路由器之间维持着一个间隔的Hello报文,包含了HSRP的状态信息。Hello只在活动路由器和备份路由器之间发送,HSRP路由器默认为每3秒发送一个Hello消息。如果此维持会话中断,那么备份路由器将接管主路由器的功能,并将备份路由器自已设为Coup状态。

Coup(政变)状态:当一个备用路由器变为一个活动路由器时,备份路由器向该网络上的所有路由器发送一个Coup消息。组播地址224.0.0.2代表该网络上的所有路由器,如图9.127所示,路由器R2(192.168.1.2)设置为活动路由器。

理解并实施:HSRP(CCNA200-120新增考点)_第11张图片

注意:还有一个状态叫做Resign(辞职),该状态指示当活动路由器宕机或者当有优先级更高的路由器发送Hello消息时,活动路由器发送一个Resign消息。对于配置了HSRP协议的路由器都将处于以上5种状态其中之一。



演示:思科HSRP协议的配置


演示目标:在如图9.116所示的环境中,保证主机192.168.2.3/24和主机192.168.2.4/24能在R1与R2两台路由器出单点故障时,持续ping通主机192.168.5.2/24。要求:在R1和R2上启动HSRP协议,并且主机192.168.2.3/24及主机192.168.2.4/24的网关IP必须为HSRP协议热备份组给出的虚拟IP,HSRP协议热备份组给出的虚拟IP地址为192.168.2.100。

演示环境:图9.116所示。

理解并实施:HSRP(CCNA200-120新增考点)_第12张图片

演示步骤:


第一步R1R2上完成HSRP的配置,配置HSRP的虚拟IP192.168.2.100R1为主路由器,R2为备份路由器。


R1HSRP配置指令

R1(config)#inte1/0

R1(config-if)#ip add 192.168.2.1 255.255.255.0

R1(config-if)#standby 100 ip 192.168.2.100

R1(config-if)#standby 100 preempt

R1(config-if)#standby 100 track e1/1

R1(config-if)#standby 100 priority 120


R2HSRP配置指令

R2(config)#int e1/0

R2(config-if)#ip add 192.168.2.2 255.255.255.0

R2(config-if)#standby 100 ip 192.168.2.100

R2(config-if)#standby 100 preempt

R2(config-if)#standby 100 track e1/1

R2(config-if)#standby 100 priority 110


配置指令分析:

Standby 100 ip 192.168.2.100:Standby表示热备份组的编号,笔者自定义的编号为100,其取值范围为0~255;IP表示配置表示虚拟的IP地址;Standby 100 preempt:preempt表示设置路由器抢占功能,抢占功能主要描述:保证优先级高的路由器失效恢复后总能处于活动状态,也就是进行活动路由器的选举;Standby 100 track e1/1:Track设置HSRP的跟踪功能,Track跟踪功能主要描述:当活动路由器监控到某一链路出现了故障时,能快速地切换活动路由器;Standby 100 priority 120:Priority表示设置HSRP优先级。


第二步查看HSRP配置的结果,确定谁是主路由器,谁是备份路由器。可以在R1或者R2上利用指令Show StandbyEthernet 1/0查看HSRP的情况。在R1上查看如图9.128所示的结果,可明确看出192.168.2.1为热容组100的主路由器,备份路由器为192.168.2.2。


理解并实施:HSRP(CCNA200-120新增考点)_第13张图片

第三步在主机192.168.2.3上填写网关为192.168.2.100,然后执行到192.168.5.2的路由器跟踪,可得到如9.128所示的路径,以及通过主路由器转发的流量。如果要进一步证实HSRP的故障切换功能,可把R1E1/0或者E1/1接口shutdown然后再次ping 192.168.5.2,如果配置没有错误,可看见通信仍然能进行。

理解并实施:HSRP(CCNA200-120新增考点)_第14张图片

特别说明Track参数的作用与配置注意事项:

如下9.129所示,如果是路由器R1R2形成HSRP的热容组,R1为活动路由器、R2为备份路由器,当R1E1/0接口故障时,由于存在间隔性Hello报文的监控,所以故障很快会被发现,并且热容组的备份路由器R2会去接管故障路由器R1,但是如果故障出现在原活动路由器R1S2/0接口,比如R1T1链路接口上,那么会出现一个什么样的现象?HSRP组中的备份路由器R2能正常接管故障路由器吗?R1R2S2/0上不存在HSRP的间隔性Hello监控报文,答案是不能接管。那么内部网络中所有通过活动路由器转发的数据包将被丢弃,因为此时的活动路由器R1S2/0接口故障了,但是它的内部接口E1/0将正常的发送表示生命存活迹象的HSRPhello报文。那么备份路由器将永远无法成为故障接管路由器。

除非,在路由器R1R2上配置Standby 组号 track s2/0指令,对两台路由器的T1链路进行监控,此时,如果活动路由器R1S2/0接口故障了,即便E1/0接口正常,备份路由器也将进行故障接管,首先活动路由器R1会将自已的优先级调低,默认是以10为单位进行调整,比如:原来活动路由器R1的优先级是120,此时就会降级为110,然后会在R1E1/0接口上停止发送HSRPhello报文。此时备份路由器R2会成功接管故障。

理解并实施:HSRP(CCNA200-120新增考点)_第15张图片

注意:为了确保HSRP备用跟踪将优先级降低到足以让备用路由器在为接管故障的活动路由器,需要对所有HSRP路由器的优先级进行正确的规划。如下例举一个正确规划和一个错误规划的实例,以帮助大家理解!


正确HSRP优先级规划实例

R1(config-if)#standby 100 track S2/0    

R1(config-if)#standby 100 priority 120  

R2(config-if)#standby 100 track S2/0      

R2(config-if)#standby 100 priority 110  


错误HSRP优先级规划实例

R1(config-if)#standby 100 track S2/0    

R1(config-if)#standby 100 priority 254  

R2(config-if)#standby 100 track S2/0      

R2(config-if)#standby 100 priority 110  


对照分析:在正确HSRP优先级规划实例中,活动路由器和备用路由器的优先级只相差10,当路由器R1的S2/0接口故障,R1的HSRP的优先级正好下降10,从120转为110,那么此时路由器R2正好能接管路由器R1的故障。其实前面的演示:思科HSRP协议的配置就正好是这种情况,当路由器R1故障后,它的优先级下降10,正好和R2的优先级相同,由于优先级相同,且R2有更高的IP地址,所以它成功的接管故障。 而错误HSRP优先级规划实例中的配置则不能成功的接管故障,因为R1的优先级为254,即便默认下降10,它也是244,仍然比备用路由器R2更高,所以备用路由器R2将无法接管故障。这也是很多工程技术人员在实践环境中常出现的一个问题。