HSRP的原理及命令
续上篇的ACL的多种高级用法,本篇讲一下网关热冗余协议——HSRP
作为一个思科专有的网关冗余技术,现在在思科设备运用的还是较为广泛的。
HSRP概念
热备份路由器协议(HSRP)的设计目标是支持特定情况下 IP 流量失败转移不会引起混乱、并允许主机使用单路由器,以及即使在实际第一跳路由器使用失败的情形下仍能维护路由器间的连通性。实现HSRP的条件是系统中有多台路由器,它们组成一个“热备份组”,这个组形成一个虚拟路由器。简单的来说,当源主机不能动态知道第一跳路由器的 IP 地址时,HSRP 协议能够保护第一跳路由器不出故障。
工作原理
把多台网关设备的网关接口加入到同一个HSRP组中,设定一定的优先级使其中一台网关设备成为Active一台成为Standby。Active用于响应终端设备的网关ARP请求。Standby作为备份网关。Active与Standby之间使用Hello报文来维持关系。当Standby没有收到Active的HSRP报文的时候,Standby会认为Active已经Down了,此时Standby会成为Active来转发终端设备的流量。Active与Standby使用一个虚IP与虚MAC来对终端的网关请求。
虚IP:手动配置一个虚拟IP。用于设备终端的网关地址。注意:不能够使用真实设备的IP地址。虚IP是通过学习得到的,但是必须要有一台设备手动配置后,其他设备可以自动学习。
虚MAC:HSRP自动生成一个MAC地址。00-00-0c-07-ac-XX。其中XX代表HSRP的组号。
版本
HSRPv1:IPv4,组的取值范围:0-255。发送方式:组播224.0.0.2
HSRPv2:IPv4/IPv6,组的取值范围:0-4095。发送方式:组播224.0.0.102
基于组的负载均衡
在一个接口内。可以同时建立多个HSRP的组,通过干预Active的选举把不同组的Active设备分别放在两个网络设备上。实现基于组的负载均衡。好处:在意义上是实验了负载均衡,缺点:比较死板。只能基于组来进行负载均衡。如果某个组的流量特别大,某个组的流量特别小。就不能做到真正意义的上负载均衡。基于流量的负载均衡。
设备角色及选举规则
Active:在一个组内只有一个Active用于转发数据流量。
Standby:在一个组内只有一个Standby.用于监听Active,当Active失效后,成为Active
Other:在一个组内,不是Active也不是Standbuy成为Other,用于监听HSRP流量。当Standby成为Active后。会在Other中再选举出Standby。
选举规则:
1、 选举时针对某一个组的参数来选举的,并不是以一台路由器,或一个接口来进行选举,也就是说,一台路由的同一个接口,可以成为一个组的Active,也可以成为另外一个组的Standby。
2、 通过优先级+IP地址。越大越优。
3、 优先级:取值范围0-255。默认为100。可以通过命令进行修改:
R2(config-if)#standby 1 priority 0-255
4、 当优先级相同的时候。使用IP地址进行选举
5、 无视优先级,在虚IP是通过学习而来的那一次协商中,这台设备会成为Standby。
R2(config-if)#standby 100 ip
6、 在成为一个Active之前。这台设备会先成为Standby
状态
Initial:接口Shutdown后会进入这个状态,开启接口后,就会发送Hello报文。
Learn:学习状态,这个不是一个必经的状态,只有没有配置虚IP的设备才会进入这个状态,在这个状态下,没配置虚IP的设备会学习已配置虚IP设备上的虚IP。
Listen:进入这状态的设备会监听接收其他路由器发送的Hello报文。选举不了Active和Standby的设备,会在这个状态下,监听HSRP的Hello包。
Speak:这个状态下的设备,会参与路由器的Active和Standby的选举。
Standby:设备具有第二优的优先级会成成为这个状态,在一个组内,最多只有一台设备会成为Standby
Active:设备具有最高的优先级会成为这个状态,用来响应终端的网关ARP请求,在个一组内最多只有一台设备会成为Active。
周期时间
Hello:3.3秒左右。
Holdtime:9.9秒左右。
可以通过命令进行修改,以至于加快收敛速度。
R1(config-if)#standby 4 timers 1 2 //针对组4修改Hello时间为1秒,Holdtime为2秒。
R1(config-if)#standby 4 timers msec 15 msec 50 //以毫秒级别来修改时间。慎用!
抢占
在HSRP收敛完毕后,当组内出现一个更优的优先级设备时或直接修改其他设备优先级,这台设备不会直接成为Active。除非打开设备的抢占功能,注意:抢占为主动去抢占,建议如果要使用抢占功能时,组内所有设备开启抢占,开启抢占也是为了配合其他特性使用。默认情况下。Active不可以抢占,Standby可以。
建议:
HSRP的Active设备,最好是STP的根桥。(有效的防止出现链路次优问题)
设备切换
下行链路Down:
当下行链路Down掉之后,Standby接收不到Active的Hello报文,从而成为Active设备。成为Active设备后,会主动发送一个免费ARP,他的作用主要是为了刷新下游交换机的MAC地址表。如果下行链路回复可以通过抢占功能把链路恢复到原本的样子。
上行链路Down:
由于上行链路Down,而Standby还是会接收到Active的Hello报文。所以Standby并不知道Active设备上有链路Down了。这时,Standby设备并不会成为Active,如果有要进行转发,Active设备会通过路由,找到,去往某个目的的路由还可以通过Standby设备过去。这时就会产生次优路径,并且,ICMP重定向机制开启,设备下次去往这个目的,会直接找到Standby设备,如果Active的链路恢复后,将不会重新走回原来的链路。
链路次优路径解决
通过追踪接口/对象。功能,来对Active设备的优先级进行减少,减少的数字需要减少后,小于Standby的优先级,这样,Standby就可以成为Active状态。注意:需要配合抢占功能使用。。
R1(config-if)#standby 10 track f0/0 XX //追踪F0/0接口,如果F0/0接口DOWN了。就减少对应组的优先级XX。直接回车默认减少10。
‘追踪对象:
R1(config)#track 1 interface f0/0 line-protocol //创建1号追踪对象,检测f0/0的链路状态
R1(config-if)#standby 10 track 1 decrement 10 //调用在HSRP中。
R1(config-if)#standby 4 preempt //开启HSRP抢占功能。
配置命令
R1(config-if)#standby 10 ip 192.168.100 //设置虚拟网关,可以不加IP地址,默认自动学习地址,两边路由器都敲,但最少一方配IP地址,一方才可以学习。
R1#show standby //查看standby状态
R1#traceroute 3.3.3.3 //查看ping路径
实例配置
分析:
先配置好IP地址,配置路由协议,保证全网通信。
R4模拟的PC网关为192.168.1.254
R5模拟的PC网关为192.168.1.253
需求1:配置HSRP技术
要使得R4去3.3.3.3,路径为R2-R3-3.3.3.3,则需要R2为active状态. 则需要R1为standby状态,修改R2的standby优先级为101以及抢占。(由于这里由于R2的IP地址大,默认选举active。也可不做修改。)
R1(config)#int f0/0
R1(config-if)standby 10 ip 192.168.1.254
R2(config)#int f0/0
R2(config-if)standby 10 ip 192.168.1.254
R2(config-if)#standby 10 preempt
R2(config-if)#standby 10 priority 101
配置完成来查看状态及访问情况
可以明显看出,此时R2已经是Active 状态,R4ping3.3.3.3是走R2方向的。
需求2:
配置HSRP技术,要使得R5去3.3.3.3,路径为R1-R3-3.3.3.3,则需要R1为active状态,修改R1的standby优先级为101以及抢占。为了不与第一题冲突,这里再设置一个虚拟网关。
R1(config)#int f0/0
R1(config-if)standby 20 ip 192.168.1.253
R2(config)#int f0/0
R2(config-if)standby 20 ip 192.168.1.253
R1(config-if)#standby 20 preempt
R1(config-if)#standby 20 priority 101
配置完成来查看状态及访问情况
可以明显看出,此时R1已经是Active 状态,R4ping3.3.3.3是走R2方向的。
需求3:
当R1上行链路F0/1口DOWN时,R5还是能够ping通3.3.3.3,原因是R1上有R2的路由,但R5去往R1的时候,发现直接去R3不可达,就会走R2从而到到R3。这里需要给配置standby的端口追踪,使得但R1上行链路故障时,R5能够直接走R2到达R3,不必经过R1。
R1(config-if)#standby 20 track f0/1 //默认优先级减10
将R1的F0/1接口down掉。查看配置访问情况
可以看出,此时R2的group10 和group 20 都变成active,而R5也是直接走R2,而不会先走R1再走R2。
再恢复接口,查看情况
恢复端口开启状态,但这里要注意一下IP的重定向问题,在端口重新启动后不要立刻去ping,稍等片刻等路由收敛完成。
需求4:
当R2上行链路F0/1口DOWN时,R4还是能够ping通3.3.3.3,原因是R2上有R1的路由,但R4去往R2的时候,发现直接去R3不可达,就会走R1从而到R3。这里需要给配置standby的端口追踪,使得但R2上行链路故障时,R3能够直接走R1到达R3,不必经过R2。
R2(config-if)#standby 10 track f0/1
关掉接口
开启接口
成功实现。
结尾
到此,思科的私有协议HSRP讲述完毕,可以说了解了这个协议,对应其他的VRRP和GLBP也都能了解清晰,下一期我们简单的讲一下这两种网关热备冗余和负载,感谢观看!