随着Internet的日益普及,人们对网络的依赖性也越来越强。这同时对网络的稳定性提出了更高的要求,人们自然想到了基于设备的备份结构,就像在服务器中为提高数据的安全性而采用双硬盘结构一样。路由器是整个网络的核心和心脏,如果路由器发生致命性的故障,将导致本地网络的瘫痪,如果是骨干路由器,影响的范围将更大,所造成的损失也是难以估计的。因此,对路由器采用热备份是提高网络可靠性的必然选择。在一个路由器完全不能工作的情况下,它的全部功能便被系统中的另一个备份路由器完全接管,直至出现问题的路由器恢复正常,这就是热备份路由协议(HotStandbyRouterProtocal),HSRP RFC2281技术要解决的问题。
HSRP:热备份路由器协议(HSRPHot Standby Router Protocol
热备份路由器协议(HSRP)的设计目标是支持特定情况下在实际第一跳路由器使用失败的情形下仍能维护路由器间的连通性。换句话说,HSRP 协议能够保护第一跳路由器不出故障。该协议中含有多种路由器,对应一个虚拟路由器。HSRP 协议只支持一个路由器代表虚拟路由器实现数据包转发过程。终端主机将它们各自的数据包转发到该虚拟路由器上。
负责转发数据包的路由器称之为活跃路由器(Active Router)。一旦活跃路由器出现故障,HSRP 将激活备份路由器(Standby Routers)取代主动路由器。HSRP 协议提供了一种决定使用主动路由器还是备份路由器的机制,并指定一个虚拟的 IP 地址作为网络系统的缺省网关地址(即虚拟路由器)。如果主动路由器出现故障,备份路由器(Standby Routers)能在数秒之内承接活跃路由器的所有任务,并且不会导致主机连通中断现象。
实现HSRP的条件是系统中有多台路由器,它们组成一个“热备份组”,这个组形成一个虚拟路由器。为了减少网络的数据流量,在设置完活动路由器和备份路由器之后,只有活动路由器和备份路由器定时发送HSRP报文。如果活动路由器失效,备份路由器将接管成为活动路由器。如果备份路由器失效或者变成了活动路由器,将有另外的路由器被选为备份路由器。
在实际的一个特定的局域网中,可能有多个热备份组并存或重叠。每个热备份组模仿一个虚拟路由器工作,它有一个Well-known-MAC地址和一个IP地址。该IP地址、组内路由器的接口地址、主机在同一个子网内,但是不能一样。当在一个局域网上有多个热备份组存在时,把主机分布到不同的热备份组,可以使负载得到分担。
HSRP的工作原理
HSRP协议利用一个优先级方案来决定哪个配置了HSRP协议的路由器成为默认的活跃路由器。如果一个路由器的优先级设置的比所有其他路由器的优先级高,则该路由器成为主动路由器。路由器的缺省优先级是100,所以如果只设置一个路由器的优先级高于100,则该路由器将成为主动路由器。
通过在设置了HSRP协议的路由器之间广播HSRP优先级,HSRP协议选出当前的主动路由器。当在预先设定的一段时间内主动路由器不能发送hello消息时,优先级最高的备用路由器变为主动路由器。路由器之间的包传输对网络上的所有主机来说都是透明的。
HSRP 运行在 UDP 上,采用端口号1985。路由器转发协议数据包的源地址使用的是实际 IP 地址,而并非虚拟路由器的虚拟地址,正是基于这一点,HSRP 路由器间能相互识别.
配置了HSRP协议的路由器交换以下三种多点广播消息:
Hello———hello消息通知其他路由器发送路由器的HSRP优先级和状态信息,HSRP路由器默认为每3秒钟发送一个hello消息;
Coup———当一个备用路由器变为一个主动路由器时发送一个coup消息;
Resign———当主动路由器要宕机或者当有优先级更高的路由器发送hello消息时,主动路由器发送一个resign消息。
在任一时刻,配置了HSRP协议的路由器都将处于以下六种状态之一:
Initial———HSRP启动时的状态,HSRP还没有运行,一般是在改变配置或端口刚刚启动时进入该状态。
learn———路由器已经得到了虚拟IP地址,但是它既不是活动路由器也不是等待路由器。它一直监听从活动路由器和等待路由器发来的HELLO报 文。
Listen———路由器正在监听hello消息。
Speak———在该状态下,路由器定期发送HELLO报文,并且积极参加活跃路由器或等待路由器的竞选。
Standby——当主动路由器失效时路由器准备接管包传输功能。
Active———路由器执行包传输功能。
下面我们搭建简单的实验拓扑如下:
clip_image001
组成及其各个功能:
1. 活跃路由器 :转发发送到虚拟路由器的数据包
2. 备份路由器 :监视HSRP组的运行状态,并且当活跃路由器不能运行,迅速承担起转发数据包的责任。
3. 虚拟路由器:向最终用户代表一台可以连续工作的路由器。它有自己的ip地址
配置如下:
-----R1
R1(config)# interface f0/0
R1(config-if)# ip address 192.168.1.1 255.255.255.0
R1(config-if)# no shutdown
R1(config-if)# no ip redirects                             关闭端口的重定向
R1(config-if)# standby 192 ip 192.168.1.254     
                  加入192虚拟路由组并指定虚拟路由组的IP为192.168.1.254
R1(config-if)# exit
R1(config)# interface f1/0
R1(config-if)# ip address 202.106.1.1 255.255.255.0
R1(config-if)# no shutdown
R1(config-if)# no ip redirects                            关闭端口的重定向
R1(config-if)# standby 202 ip 202.106.1.254    
                  加入202虚拟路由组并指定虚拟路由组的IP为202.106.1.254
R1(config-if)# exit
R1(config)# interface f2/0                                 设置心跳线
R1(config-if)# ip address 172.16.1.1 255.255.255.0
R1(config-if)# no shutdown
R1(config-if)# exit
R1(config)# ip route 192.168.1.0 255.255.255.0 172.16.1.2
R1(config)# ip route 202.106.1.0 255.255.255.0 172.16.1.2
                                                                        设定心跳线的默认路由
-----R2
R2(config)# interface f0/0
R2(config-if)# ip address 192.168.1.2 255.255.255.0
R2(config-if)# no shutdown
R2(config-if)# no ip redirects                            关闭端口的重定向
R2(config-if)# standby 192 ip 192.168.1.254
                 加入192虚拟路由组并指定虚拟路由组的IP为192.168.1.254
R2(config-if)# exit
R2(config)# interface f1/0
R2(config-if)# ip address 202.106.1.2 255.255.255.0
R2(config-if)# no shutdown
R2(config-if)# no ip redirects                           关闭端口的重定向
R2(config-if)# standby 202 ip 202.106.1.254
                  加入202虚拟路由组并指定虚拟路由组的IP为202.106.1.254
R2(config-if)# exit
R2(config)# interface f2/0                               设置心跳线
R2(config-if)# ip address 172.16.1.2 255.255.255.0
R2(config-if)# no shutdown
R2(config-if)# exit
R2(config)# ip route 192.168.1.0 255.255.255.0 172.16.1.1
R2(config)# ip route 202.106.1.0 255.255.255.0 172.16.1.1
                                                                      设定心跳线的默认路由
 
配置HSRP的优先级,用于衡量路由器在活跃路由器选择中的优先程度 默认优先级是100,数值越大优先级越高
 
-----R1
R1(config)# interface f0/0
R1(config-if)# standby 192 priority 120
R1(config-if)# exit
R1(config)# interface f1/0
R1(config-if)# standby 202 priority 110
 
-----R2
R2(config)# interface f0/0
R2(config-if)# standby 192 priority 110
R2(config-if)# exit
R2(config)# interface f1/0
R2(config-if)# standby 202 priority 120
 
配置HSRP占先权,当活跃路由器失效,备份路由器将自动承担起活跃路由器角色,即使有更高的优先级的原活跃路由器又重新工作时,这台新的活跃路由器仍然会继续工作,为了原优先级别高的活跃路由器再次成为转发路由器,需要更改下占先权。
 
-----R1
R1(config)# interface f0/0
R1(config-if)# standby 192 preempt
-----R2
R2(config)# interface f1/0
R2(config-if)# standby 202 preempt
配置完成后查看结果如下
# show standby brief
-----R1
clip_image002
-----R2
clip_image003
 
# show running-config
-----R1
clip_image004
-----R2
clip_image005