一、HSRP 的概念


HSRP 是 Hot Standby Routing Protocol(热备份路由协议)的缩写。它的作用是能够把一台或多台路由器用来做备份,所谓热备份是指当使用的路由器不能正常工作时,候补的路由器能够实现平滑的替换,尽量不被察觉。 通常,我们的网络上主机设置一条缺省路由,指向主机所在网段内的一个路由器 R,这样,主机发出的目的地址不在本网段的报文将被通过缺省路由发往路由器 R,从而实现了主机与外部网络的通信。在这种情况下,当路由器 R 坏掉时,本网段内所有以路由器 R 为缺省路由下一跳的主机将断掉与外部的通信。HSRP 实现容错备份功能,可以有效解决上述可靠性问题。

 
二、HSRP 解决的问题

作为冗余网路的要求,
R6为局域网设备,R4与R5为两个出口网关路由器,R6设置的默认网关为155.1.100.254,这是一个虚拟地址 ,当R5出现故障时,R6能够通过R4出去,同理当R4出现故障时,R6能够通过R5出去。R5与R4是需要选举产生主路由器和备份路由器,默认情况下以优先级大的为主路由器。

 

三、HSRP 的用途

 
HSRP 用于广播或多播局域网上的路由器热备份,并适于静态的路由配置,实际上 HSRP 正是解决设备不能动态适应路由改变的问题。 HSRP 主要用途: 1、主机设置缺省网关 假设主机 A 是局域网中一台需要访问远程数据的服务器,要求远程访问能力可靠。由于主机 A 中静态设置缺省网关,一旦想更换网关,必须在主机中重新配置。 通过使用 HSRP,主机中设置虚拟路由器为缺省网关,具体由虚拟路由器中的哪台路由器完成网关的实际工作,主机并不关心,这就为应用提供了较好的可靠性和灵活性。 2、设置静态路由 可以通过配置静态缺省路由指向虚拟路由器来实现另外一种备份。

四、HSRP 工作原理

当采用 HSRP, 用户看到的是一台虚拟路由器,该虚拟路由器有自己的虚拟 IP 地址和虚拟 MAC 地址,该虚拟路由器是由一组路由器组成的,这组路由器称为备份组。备份组内由一台活动路由器、一台备份路由器,以及群众路由器构成。一般情况下,一旦活动路由器坏掉,该备份路由器成为活动路由器,然后备份组内选举组内的另一台路由器为备份路由器。 组内路由器通过接受来自活动路由器的周期性 Hello 报文来判断活动路由器是否工作正常。如果组内备份路由器 R 在一定时间间隔未收到活动路由器 Hello 报文,就认为活动路由器坏掉了,优先级高的备份路由器最终成为活动路由器。备份路由器也是通过类似过程产生的。这样总能保证备份组中有一台活动路由器,一台备份路由器。

五、HSRP 状态

备份组内的路由器处于各自的状态,根据相互间发送 HSRP 报文来调整新的状态。 HSRP 状态:
  (1)init:所有备份组内组员的初始状态为 INIT,当组员配置属性或端口 UP 时,进入 INIT 状态。
  (2)learn:该组员未设定虚拟 IP 地址,并等待从本组活动路由器发出的认证的 Hello 报文中学习得到自己的虚拟 IP 地址。
  (3)listen :该组员已得知或设置了虚拟 IP 地址,通过监听 Hello 报文监视活动/备份路由器,一旦发现活动/备份路由器长时间 未发送 Hello 报文,则进入 SPEAK 状态,开始竞选。
  (4)speak: 参加竞选活动/备份路由器的组员所处的状态,通过发送 Hello 报文使竞选者间相互比较、竞争。
  (5)standby: 组内备份路由器所处的状态,备份组员监视活动路由器,准备随时在活动路由器坏掉时接替活动路由器。备份 路由器也周期性发送 Hello 报文告诉其他组员自己没有坏掉。
  (6)ACTIVE:组内活动路由器即负责虚拟路由器实际路由工作的组员所处的状态。活动路由器周期性发送 Hello 报文告诉其他 组员自己没有坏掉。

六、HSRP 报文

  • Version :1 Byte HSRP 报文的版本号。本文档的 HSRP 报文版本为 0 。
  • Oper Code :1 Byte描述了 HSRP 报文的类型,共有3 种报文类型: (1)0 -- Hello Hello 类型报文说明发送者处在运  行状态,有能力成为活动/备份路由器。 (2)1--COUP COUP 类型报文说明发送者希望成为活动路由器。 (3)2 -- RESIGN COUP 类型报文说明发送者不再是活动路由器。
  • State :1 Byte 描述发送者发送报文时所处的状态。
  • Hello Time :1 Byte 该域只在 Hello 报文中有意义。它包含发送者发送 Hello 报文的时间间隔,以秒计; 如果路由器上未配置 Hello Time 值,它可以从组中活动路由器发送的 Hello 报文中学习到,但须本路由器认证该 Hello 报文; 如果路由器上既未配置 Hello Time,也未学习到,则赋予缺省值 3。
  • Hold Time :1 Byte 该域只在 Hello 报文中有意义。它包含发送者发送 Hello 报文的持有时间,以秒计; Hold Time 必须大于 Hello Time ,而且最好大于三倍 Hello Time ;如果路由器上未配置 Hold Time ,它可以从组中活动路由器发送的 Hello 报文中学习到,但须本路由器认证该 Hello 报文; 如果路由器上既未配置 Hello Time ,也未学习到,则赋予缺省值10 。
  • Priority :1 Byte 该域用来选举活动/备份路由器。当选举过程中出现竞争(多个路由器都想成为活动/
  备份路由器)时,优先级最高的竞争者胜,对于优先级相等的竞争者,IP 地址最大的竞争者胜。
  • Group :1 Byte 此域中记录发送者所在的备份组号。对于以太网,Group 取值范围为0-255 。
  • Authentication Data :8 Byte 8 字符长的的口令,用于组内成员相互鉴别。
  • Vritual IP Address:4 Byte 备份组的虚拟IP地址,备份组模拟的虚拟路由器的 IP 地址。虚拟路由器还有一 MAC 地址,它由组号直接映射而成:0X00 00 0C 07 AC ** ,其中“**”为备份组号。 组内各成员须至少有如下信息: (1)备份组号(Group); (2)虚拟 MAC 地址(Virtual MAC Address); (3)优先级(Priority); (4)Authentication Data; (5)Hello Time; (6)Hold Time; 至少一位组员有如下信息: (1)虚拟 IP 地址(Virtual IP Address); 每位组员可选择配置如下信息:(1)抢占标志(Preempt); 如果某位组员的 Preempt 置位,又收到活动路由器的 Hello 报文,发现自己的优先级比活动路由器高,则该组员可强行取代成为活动路由器。

七、HSRP 多备份组(MHSRP)

在一网段内,多个备份组可以共存。每个备份组模拟成一虚拟路由器,每个这样的虚拟路由器配置一虚拟MAC 地址和一虚拟 IP 地址。该虚拟IP地址应属于本网段,而且不与网段内的任何路由器和主机的IP地址相同,也不与网段内的其他虚拟路由器的虚拟IP地址相同。 一台路由器也可以参加多个备份组,为多个组作备份。 路由器的 HSRP 配置是针对具体接口的,因此需要在接口模式下配置。在一台路由器上,备份组由(接口,组号)唯一确定。每个备份组都有属于自己的数据和状态。 如果一台路由器有两个以太网口,可以分别在两个接口上配置两个 HSRP 备份组,为不同网段使用。

八、HSRP 配置方法

  • [no] standby [group-number] ip [virtual ip address] 说明: 使路由器在指定局域网段加入或退出一个备份组。需要指定备份组号和虚拟 IP 地址。备份组号范围从 0 到 255,如 group-number 不指定,备份组号缺省为 0,virtual ip address 如果不指定,路由器不会参与备份,直到从备份组中的活动路由器获得虚拟 IP 地址。注意虚拟 IP 地址应该是接口所在网段的地址。一旦退出 HSRP 备份组,则路由器在该备份组上设置的所有 HSRP 特性不再有效(如优先级,授权字等)。
  • standby [group-number] priority [priority-value] 说明: HSRP 中根据优先级来确定参与备份组的每台路由器的地位,备份组中优先级最大并且已获得虚拟 IP 地址的路由器将成为活动路由器,优先级其次的路由器将成为备份路由器。优先级缺省值是 100,可设置范围从 0 到 255。
  • standby [group-number] preempt 说明: 一旦备份组中的某台路由器成为活动路由器,只要它没有出现故障,其它路由器即使随后被配置更高的优先级,也不会成为活动路由器,除非被设置抢占方式。路由器如果设置抢占方式,它一旦发现自己的优先级比当前的活动路由器的优先级高,就会成为活动路由器。相应地,原活动路由器会退出活动态,成为备份路由器或其它。缺省方式是不抢占。
  • standby [group-number] authentication string 说明: HSRP 授权字确认同备份组间其它路由器的有效性。授权字 string 的长度不超过 8 个字节。注意:同一备份组要设置相同的授权字。
  • standby [group-number] timers [hello_time] [hold_time]说明: HSRP 备份组路由器之间通过定时发送 Hello 报文确认相互的状态,超过一定时间(hold time)没有收到某台路由器的 Hello 报文,则认为它已关机或出现故障。用户可以调整发送 Hello 报文的间隔  时间(hello time)和超时时间(hold time)。缺省值分别是 3 秒和 10 秒。时间单位是秒。注意:同一备份组要设置相同的 hello time 和 hold time。
  • standby [group-number] track interface_name [priority-reduced] 说明: HSRP 监视接口功能,更好地扩充了备份功能,即不仅在路由器出现故障时提供备份功能,而且在某网络接口不可用时,也可以使用备份功能。命令作用是监视接口interface_name,如果接口变为不可用,则将优先级减少 priority-reduced (priority-reduced 缺省值为 10) 。

九、HSRP实验

 
【实验拓扑】

 

【实验要求】
利用HSRP配置, R4与R5是出口的网关,R6是局域网中的设备,当R5或R4任意一条链路失效时,能够自动切换到另外1条链路,通过R6 ping R1 进行测试

【实验配置】

R1:
interface Serial 0/0
encapsulation frame-relay
no frame-relay inverse-arp
ip address 155.1.0.1 255.255.255.0
frame-relay map ip 155.1.0.5 105 broadcast
frame-relay map ip 155.1.0.4 104 broadcast
ip ospf network broadcast
no shutdown
!
router ospf 1
router-id 150.1.1.1
network 155.1.0.1 0.0.0.0 area 0
R4:
interface Eth 0/1
ip address 155.1.100.4 255.255.255.0
standby 1 name GROUP1
standby 1 ip 155.1.100.254
standby 1 preempt
standby 1 priority 110
standby 1 track Serial 0/0 20
no shutdown
上面定义了虚拟IP地址,preempt为定义抢占的方式,priority定义优先级,默认为100;track定义监测上层链路s/0,如果链路down,将把优先级减少20。
!
interface Serial 0/0
encapsulation frame-relay
no frame-relay inverse-arp
ip address 155.1.0.4 255.255.255.0
frame-relay map ip 155.1.0.5 401 broadcast
frame-relay map ip 155.1.0.1 401
ip ospf priority 0
ip ospf network broadcast
no shutdown
!
interface Loopback0
ip address 150.1.45.4 255.255.255.0
!
router ospf 1
router-id 150.1.4.4
redistribute connected subnets metric 400
network 155.1.0.4 0.0.0.0 area 0
R5:
interface Ethernet 0/0
ip address 155.1.100.1 255.255.255.0
standby 1 name GROUP1
standby 1 ip 155.1.100.254
standby 1 preempt
standby 1 priority 100
no shut
!
interface Serial 0/0
encapsulation frame-relay
no frame-relay inverse-arp
ip address 155.1.0.5 255.255.255.0
frame-relay map ip 155.1.0.1 501 broadcast
frame-relay map ip 155.1.0.4 501
ip ospf network broadcast
ip ospf priority 0
no shutdown
!
interface Loopback0
ip address 150.1.45.5 255.255.255.0
!
router ospf 1
router-id 150.1.5.5
network 155.1.0.5 0.0.0.0 area 0
redistribute connected subnets metric 500
R6:
interface Gig 0/0
ip address 155.1.100.6 255.255.255.0
no shutdown
!
ip route 0.0.0.0 0.0.0.0 155.1.100.254
【实验验证】
R4#show standby
Ethernet0/1 - Group 1
State is Active
5 state changes, last state change 00:00:26
Virtual IP address is 155.1.100.254
Active virtual MAC address is 0000.0c07.ac01
Local virtual MAC address is 0000.0c07.ac01 (v1 default)
Hello time 3 sec, hold time 10 sec
Next hello sent in 0.960 secs
Preemption enabled
Active router is local
Standby router is 155.1.100.1, priority 100 (expires in 8.960 sec)
Priority 110 (configured 110)
Track interface Serial0/0 state Up decrement 20
IP redundancy name is "GROUP1" (cfgd)
R6#ping 155.1.0.1 repeat 1000 size 1000
Type escape sequence to abort.
Sending 1000, 1000-byte ICMP Echos to 155.1.0.1, timeout is 2 seconds:
!!!!!!
Rack1AS>4
[Resuming connection 4 to r4 ... ]
R4#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R4(config)#int se 0/0
R4(config-if)#shut
R4(config-if)#
Rack1AS>6
[Resuming connection 6 to r6 ... ]
!!.U...................!!!!!!!!!!!!!!!!!!!!!!!!!!.
Success rate is 66 percent (44/66), round-trip min/avg/max = 508/510/516 ms
R5#show standby
Ethernet0/0 - Group 1
State is Active
5 state changes, last state change 00:01:31
Virtual IP address is 155.1.100.254
Active virtual MAC address is 0000.0c07.ac01
Local virtual MAC address is 0000.0c07.ac01 (v1 default)
Hello time 3 sec, hold time 10 sec
Next hello sent in 1.880 secs
Preemption enabled
Active router is local
Standby router is 155.1.100.4, priority 90 (expires in 9.880 sec)
Priority 100 (default 100)
IP redundancy name is "GROUP1" (cfgd)
R4#show standby
Ethernet0/1 - Group 1
State is Standby
7 state changes, last state change 00:01:42
Virtual IP address is 155.1.100.254
Active virtual MAC address is 0000.0c07.ac01
Local virtual MAC address is 0000.0c07.ac01 (v1 default)
Hello time 3 sec, hold time 10 sec
Next hello sent in 2.788 secs
Preemption enabled
Active router is 155.1.100.1, priority 100 (expires in 8.764 sec)
Standby router is local
Priority 90 (configured 110)
Track interface Serial0/0 state Down decrement 20
IP redundancy name is "GROUP1" (cfgd)