一、简介
热备份路由器协议(HSRP)的设计目标是支持特定情况下 IP 流量失败转移不
会引起混乱、并允许主机使用单路由器,以及即使在实际第一跳路由器使用失败的
情形下仍能维护路由器间的连通性。换句话说,当源主机不能动态知道第一跳路由
器的 IP 地址时,HSRP 协议能够保护第一跳路由器不出故障。HSRP是CISCO平台一
种特有的技术,是cisco的私有协议。该协议中含有多台路由器,对应一个HSRP组。
该组中只有一个路由器承担转发用户流量的职责,这就是活动路由器。当活动路由
器失效后,备份路由器将承担该职责,成为新的活动路由器。
HSRP的工作原理
负责转发数据包的路由器称之为活动路由器(Active Router)。一旦主动路由器
出现故障,HSRP 将激活备份路由器(Standby Routers)取代主动路由器。HSRP 协议
提供了一种决定使用主动路由器还是备份路由器的机制,并指定一个虚拟的 IP 地址
作为网络系统的缺省网关地址。如果主动路由器出现故障,备份路由器(Standby
Routers)承接主动路由器的所有任务,并且不会导致主机连通中断现象。
HSRP 运行在 UDP 上,采用端口号1985。路由器转发协议数据包的源地址使用
的是实际IP 地址,而并非虚拟地址,正是基于这一点HSRP 路由器间能相互识别。
HSRP协议利用一个优先级方案来决定哪个配置了HSRP协议的路由器成为默认
的主动路由器。如果一个路由器的优先级设置的比所有其他路由器的优先级高,则
该路由器成为主动路由器。
通过在设置了HSRP协议的路由器之间广播HSRP优先级,HSRP协议选出当前的
主动路由器。当在预先设定的一段时间内主动路由器不能发送hello消息时,优先级最
高的备用路由器变为主动路由器。路由器之间的包传输对网络上的所有主机来说都
是透明的。
配置了HSRP协议的路由器交换以下三种多点广播消息:
Hello——— hello 消息通知其他路由器发送路由器的HSRP优先级和状态信息,
HSRP路由器默认为每3秒钟发送一个hello消息;
Coup———当一个备用路由器变为一个主动路由器时发送一个coup消息;
Resign———当主动路由器要宕机或者当有优先级更高的路由器发送hello消息
时,主动路由器发送一个resign消息。
在任一时刻,配置了HSRP协议的路由器都将处于以下五种状态之一:
Initial———HSRP启动时的状态,HSRP还没有运行,一般是在改变配置或端口
刚刚启动时进入该状态。
Listen———路由器已经得到了虚拟IP地址,但是它既不是活动路由器也不是等
待路由器。它一直监听从活动路由器和等待路由器发来的HELLO报文。
Speak———在该状态下,路由器定期发送HELLO报文,并且积极参加活动路由
器或等待路由器的竞选。
Standby———当主动路由器失效时路由器准备接管包传输功能。
Active———路由器执行包传输功能。
HSRP与VRRP和差别
1、在功能上,VRRP和HSRP非常相似,但是就安全而言,VRRP对HSRP的一个主
要优势:它允许参与VRRP组的设备间建立认证机制。并且不像HSRP那样要求虚拟
路由器不能是其中一个路由器的IP地址,但是VRRP允许这种情况发生(如果”拥有”
虚拟路由器地址的路由器被建立并且正在运行,那么应该总是由这个虚拟路由器管
理—等价于HSRP中的活动路由器),但是为了确保万一失效发生的时候终端主机不必
重新学习MAC地址,它指定使用的MAC地址00-00-5e-00-01-VRID,这里的VRID是
虚拟路由器的ID(等价于一个HSRP的组标识符).。
2.另外一个不同是VRRP不使用HSRP中的政变或者一个等价消息,VRRP的状态
机比HSRP的简单,HSRP有6个状态(初始(Initial)状态,学习(Learn)状态,监听(Listen)
状态,对话(Speak)状态,备份(Standby)状态,活动(Active)状态)和8个事件,VRRP只
有3个状态(初始状态(Initialize)、主状态(Master)、备份状态(Backup))和5个事件。
3. HSRP有三种报文,而且有三种状态可以发送报文,呼叫(Hello)报文,告辞
(Resign)报文,突变(Coup)报文。VRRP有一种报文——VRRP广播报文:由主路由器
定时发出来通告它的存在,使用这些报文可以检测虚拟路由器各种参数,还可以用
于主路由器的选举。
1985端口,向组播地址224.0.0.2 发送hello消息)。
5.VRRP的安全:VRRP协议包括三种主要的认证方式:无认证,简单的明文密码
和使用 MD5 HMAC IP认证的强认证.。
6.VRRP的崩溃间隔时间:3*通告间隔+时滞时间(skew-time)。
二、案例
拓扑图:
配置过程:
R1:
R1(config)#int f0/0.10
R1(config-subif)#encapsulation dot1q 10
R1(config-subif)#ip address 192.168.10.1 255.255.255.0
R1(config-subif)#int f0/0.20
R1(config-subif)#encapsulation dot1q 20
R1(config-subif)#ip address 192.168.20.1 255.255.255.0
R1(config)#int f0/0.10
R1(config-subif)#standby 10 ip 192.168.10.254
R1(config-subif)#standby 10 priority 120
R1(config-subif)#int f0/0.20
R1(config-subif)#standby 20 ip 192.168.20.254
R1(config-subif)#standby 20 priority 120
R2:
R2(config-if)#interface fastEthernet 0/0.10
R2(config-subif)#encapsulation dot1q 10
R2(config-subif)#ip address 192.168.10.2 255.255.255.0
R2(config-subif)#interface fastEthernet 0/0.20
R2(config-subif)#encapsulation dot1q 20
R2(config-subif)#ip address 192.168.20.2 255.255.255.0
R2(config-subif)#int f0/0.10
R2(config-subif)#standby 10 ip 192.168.10.254
R2(config-subif)#int f0/0.20
R2(config-subif)#standby 20 ip 192.168.20.254
SW-1:
SW-1(config)#int f 0/0
SW-1(config-if)#switchport mode trunk
SW-1(config-if)#int f 0/1
SW-1(config-if)#switchport mode trunk
SW-1#vlan database
SW-1(vlan)#vlan 10
SW-1(vlan)#vlan 20
SW-1(vlan)#exit
SW-1(config-if)#int range f0/3 - 10
SW-1(config-if-range)#switchport access vlan 10
SW-1(config-if-range)#int range f0/11 - 15
SW-1(config-if-range)#switchport access vlan 20
SW-2:
SW-2(config)#int f0/0
SW-2(config-if)#switchport mode trunk
SW-2(config-if)#int f0/1
SW-2(config-if)#switchport mode trunk
SW-2(config-if)#end
SW-2#vlan database
SW-2(vlan)#vlan 10
SW-2(vlan)#vlan 20
SW-2(vlan)#exit
SW-2(config)#interface range f 0/3 - 10
SW-2(config-if-range)#switchport access vlan 10
SW-2(config-if-range)#interface range f 0/11 - 15
SW-2(config-if-range)#switchport access vlan 20
测试结果: