一、HSRP的简介
SHRP即热备份路由协议,它主要是向我们提供了这样一种机制,它的设计目的主要在于支持IP协议传输失败情况下的不中断服务,保证了网络的高可用性。具体说,就是本协议用于在源主机无法动态地学习到首跳路由器IP地址的情况下防止首跳路由的失败。它主要用于多接入,多播和广播局域网(例如以太网)。
二、HSRP的工作原理
HSRP协议利用一个优先级方案来决定哪个配置了HSRP协议的路由器成为默认的主动路由器。如果一个路由器的优先级设置的比所有其他路由器的优先级高,则该路由器成为主动路由器。路由器的默认缺省优先级是100,所以如果只设置一个路由器的优先级高于100,则该路由器将成为主动路由器。
通过在设置了HSRP协议的路由器之间广播HSRP优先级,HSRP协议选出当前的主动路由器。当在预先设定的一段时间内主动路由器不能发送hello消息时,优先级最高的备用路由器变为主动路由器。路由器之间的包传输对网络上的所有主机来说都是透明的。
配置了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―――路由器执行包传输功能,即路由器处于激活状态。
三、应用案例
1、案例1
(1)实施环境:思科小凡模拟器
(2)要求:
现有一网络,网络中有两个VLAN,两个VLAN通过路由器进行通信工作,现要求要实现网络的高可用性,必须保证在一个路由器损坏的情况下还能工作,并且在使用两个路由器工作时必须保证路由器的利用效率。
(3)网络拓扑图:
根据网络要求使用绘图工具绘制出网络拓扑图,如图1所示:
图1:网络拓扑图
(4)设备实施:
1)路由器R1的配置:
//进入特权模式
Router>enable
//进入用户模式
Router#config t
Router(config)#hos
//修改名称
Router(config)#hostname R1
R1(config)#int f0/0
//启动接口
R1(config-if)#no shut
R1(config-if)#exit
R1(config)#int f0/0.1
R1(config-subif)#encapsulation d
//把子接口封装为dot1Q类型
R1(config-subif)#encapsulation dot1Q 10
//配置IP地址
R1(config-subif)#ip add 192.168.10.1 255.255.255.0
R1(config-subif)#exit
//进入子接口
R1(config)#int f0/0.2
R1(config-subif)#en
R1(config-subif)#encapsulation d
//把字节口封装为dot1Q
R1(config-subif)#encapsulation dot1Q 20
R1(config-subif)#ip add 192.168.20.1 255.255.255.0
//配置HSRP协议
R1(config)#int f0/0.1
R1(config-subif)#st
R1(config-subif)#standby ?
//把加入热备份组号10以及备份虚拟IP
R1(config-subif)#standby 10 ip 192.168.10.254
R1(config-subif)#standby pri
//配置优先级(优先级之越大越优先,默认100)
R1(config-subif)#standby priority 120
//启动立即抢占
R1(config-subif)#standby pre
R1(config-subif)#standby preempt
R1(config)#int f0/0.2
R1(config-subif)#standby
//把加入热备份组号20以及备份虚拟IP
R1(config-subif)#standby 20 ip 192.168.20.254
R1(config-subif)#standby 20 pri
//配置优先级(优先级之越大越优先,默认100)
R1(config-subif)#standby 20 priority 100
R1(config-subif)#standby pre
//启动立即抢占
R1(config-subif)#standby preempt
2)路由器R2的配置:
Router>enable
Router#config t
//修改名称
Router(config)#hostname R2
R2(config)#int f0/0
//启动接口
R2(config-if)#no shut
R2(config-if)#exit
//进入子接口
R2(config)#int f0/0.1
R2(config-subif)#encapsulation d
//把接口封装为dot1Q类型VLAN 10
R2(config-subif)#encapsulation dot1Q 10
R2(config-subif)#ip add 192.168.10.2 255.255.255.0
R2(config-subif)#exit
//进入子接口
R2(config)#int f0/0.2
//把接口封装为dot1Q类型VLAN 20
R2(config-subif)#encapsulation dot1Q 20
R2(config-subif)#ip add 192.168.20.2 255.255.255.0
R2(config)#int f0/0.1
R2(config-subif)#stan
//把加入热备份组号10以及备份虚拟IP
R2(config-subif)#standby 10 ip 192.168.10.254
R2(config-subif)#stan
R2(config-subif)#standby 10 pri
//配置优先级(优先级之越大越优先,默认100)
R2(config-subif)#standby 10 priority 100
R2(config-subif)#stan
R2(config-subif)#standby 10 pre
//启动立即抢占
R2(config-subif)#standby 10 preempt
R2(config-subif)#exit
R2(config)#int f
//进入子接口
R2(config)#int f0/0.2
R2(config-subif)#sstan
R2(config-subif)#stan
//把加入热备份组号10以及备份虚拟IP
R2(config-subif)#standby 20 ip 192.168.20.254
R2(config-subif)#stan
R2(config-subif)#standby 20 pri
//配置优先级(优先级之越大越优先,默认100)
R2(config-subif)#standby 20 priority 120
R2(config-subif)#sta
R2(config-subif)#standby 20 pre
//启动立即抢占
R2(config-subif)#standby 20 preempt
3)交换机S1的配置:
Router>ena
Router#config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hos
//修改名称
Router(config)#hostname S1
S1(config)#exit
S1#vlan database
//创建VLAN10
S1(vlan)#VLAN 10
VLAN 10 added:
Name: VLAN0010
//创建VLAN10
S1(vlan)#VLAN 20
VLAN 20 added:
Name: VLAN0020
S1(vlan)#exit
S1#config t
//进入接口
S1(config)#int f0/0
//把接口设为trunk类型
S1(config-if)#switchport mode trunk
//trunk下允许所有VLAN通过
S1(config-if)#switchport trunk allowed vlan all
S1(config-if)#exit
S1(config)#int f0/1
S1(config-if)#switchport mode tr
//把接口设为trunk类型
S1(config-if)#switchport mode trunk
//trunk下允许所有VLAN通过
S1(config-if)#switchport trunk allowed vlan all
S1(config-if)#exit
S1(config)#int f0/2
S1(config-if)#switchport mode tr
//把接口设为trunk类型
S1(config-if)#switchport mode trunk
//trunk下允许所有VLAN通过
S1(config-if)#switchport trunk allowed vlan all
S1(config)#int f0/10
S1(config-if)#sw
S1(config-if)#switchport acc
//允许VLAN 10通过
S1(config-if)#switchport access vlan 10
S1(config-if)#exit
S1(config)#int f0/20
S1(config)#int f0/15
S1(config-if)#switchport access vlan 20
4)交换机S2的配置:
Router>ena
Router#config t
Router(config)#host
//修改名称
Router(config)#hostname S2
S2(config)#exit
S2#vlan data
S2#vlan database
//创建VLAN 10
S2(vlan)#vlan 10
VLAN 10 added:
Name: VLAN0010
//创建VLAN 20
S2(vlan)#vlan 20
VLAN 20 added:
Name: VLAN0020
S2#config t
S2(vlan)#exit
//进入接口
S2(config)#int f0/0
S2(config-if)#switchport mode tr
//把接口设为trunk类型
S2(config-if)#switchport mode trunk
S2(config-if)#exit
S2(config)#int f0/1
S2(config-if)#switchport mode tr
//把接口设为trunk类型
S2(config-if)#switchport mode trunk
//在trunk下允许所有VLAN通过
S2(config-if)#switchport trunk allowed vlan all
S2(config-if)#int f0/2
S2(config-if)#switchport mode tr
S2(config-if)#switchport mode trunk
S2(config-if)#switchport trunk allowed vlan all
S2(config-if)#exit
S2(config)#int f0/10
S2(config-if)#switchport ac
S2(config-if)#switchport access vlan 10
S2(config-if)#int f0/15
//把接口设为允许VLAN20通过
S2(config-if)#switchport acce
S2(config-if)#switchport access vlan 20
(5)测试验证:
1)查看R1上的HSRP协议:
在R1上查看HSRP协议如下图所示:
2)PC1 ping PC4
3)断开R2的接口,即R2损坏后查看R1上的HSRP协议
2、案例2
(1)实施环境:思科小凡模拟器
(2)要求:
现有一网络,网络中有两个VLAN,两个VLAN通过路由器进行通信工作,现在要求要实现网络的高可用性,必须保证在一个路由器损坏的情况下还能工作,并且在使用两个路由器工作时必须保证路由器的高效利用效率,并且要求两个VLAN的主机可以访问到Internet。
(3)网络拓扑图:
根据网络要求使用绘图工具绘制出网络拓扑图,如图2所示:
图2:网络拓扑图
(4)设备的配置:
1)路由器R1的配置:
//进入特权模式
Router>enable
//进入用户模式
Router#config t
Router(config)#hos
//修改名称
Router(config)#hostname R1
R1(config)#int s1/0
//配置IP地址
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#exit
R1(config)#int f0/0
R1(config-if)#no shut
R1(config-if)#exit
//进入子接口
R1(config)#int f0/0.1
R1(config-subif)#en
R1(config-subif)#encapsulation d
//把接口封装为dot1Q VLAN10
R1(config-subif)#encapsulation dot1Q 10
//配置IP地址
R1(config-subif)#ip add 192.168.10.1 255.255.255.0
R1(config-subif)#exit
R1(config)#int f0/0.2
//把接口封装为dot1Q VLAN10
R1(config-subif)#encapsulation d
R1(config-subif)#encapsulation dot1Q 20
//配置IP地址
R1(config-subif)#ip add 192.168.20.1 255.255.255.0
//配置HSRP协议
R1(config)#int f0/0.1
R1(config-subif)#st
R1(config-subif)#standby ?
//把加入热备份组号10以及备份虚拟IP
R1(config-subif)#standby 10 ip 192.168.10.254
R1(config-subif)#standby pri
//配置优先级(优先级之越大越优先,默认100)
R1(config-subif)#standby priority 120
//启动立即抢占
R1(config-subif)#standby pre
R1(config-subif)#standby preempt
//配置跟踪接口,当接口中断时优先级减小30
R1(config-subif)#standby 10 track s1/0 30
R1(config)#int f0/0.2
R1(config-subif)#standby
R1(config-subif)#standby 20 ip ?
//把加入热备份组号10以及备份虚拟IP
R1(config-subif)#standby 20 ip 192.168.20.254
R1(config-subif)#standby 20 pri
//配置优先级(优先级之越大越优先,默认100)
R1(config-subif)#standby 20 priority 100
R1(config-subif)#standby pre
//启动立即抢占
R1(config-subif)#standby preempt
//配置默认路由
R1(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.1
//配置访问控制列表
R1(config)#access-list 10 permit 192.168.10.0 255.255.255.0
R1(config)#access-list 10 permit 192.168.20.0 255.255.255.0
R1(config)#int f0/0.1
R1(config-subif)#ip nat in
//在接口上配置允许nat进入
R1(config-subif)#ip nat inside
R1(config-subif)#int f0/0.2
//在接口上配置允许nat进入
R1(config-subif)#ip nat in
R1(config-subif)#ip nat inside
R1(config-subif)#int s1/0
R1(config-if)#ip nat out
//在接口上应用nat
R1(config-if)#ip nat outside
R1(config)#ip nat source list 10 int
R1(config)#ip nat source list 10 interface s1/0
2)路由器R2的配置:
Router>enable
Router#config t
//修改名称
Router(config)#hostname R2
R2(config)#int s1/1
//配置IP地址
R2(config-if)#ip add 192.168.2.1 255.255.255.0
R2(config-if)#no shut
R2(config-if)#exit
R2(config)#int f0/0
//启动接口
R2(config-if)#no shut
R2(config-if)#exit
//进入子接口
R2(config)#int f0/0.1
R2(config-subif)#encapsulation d
//把接口封装为dot1Q类型VLAN 10
R2(config-subif)#encapsulation dot1Q 10
R2(config-subif)#ip add 192.168.10.2 255.255.255.0
R2(config-subif)#exit
//进入子接口
R2(config)#int f0/0.2
//把接口封装为dot1Q类型VLAN 20
R2(config-subif)#encapsulation dot1Q 20
R2(config-subif)#ip add 192.168.20.2 255.255.255.0
R2(config)#int f0/0.1
R2(config-subif)#stan
//把加入热备份组号10以及备份虚拟IP
R2(config-subif)#standby 10 ip 192.168.10.254
R2(config-subif)#stan
R2(config-subif)#standby 10 pri
//配置优先级(优先级之越大越优先,默认100)
R2(config-subif)#standby 10 priority 100
R2(config-subif)#stan
R2(config-subif)#standby 10 pre
//启动立即抢占
R2(config-subif)#standby 10 preempt
R2(config-subif)#exit
R2(config)#int f
//进入子接口
R2(config)#int f0/0.2
R2(config-subif)#sstan
R2(config-subif)#stan
//把加入热备份组号10以及备份虚拟IP
R2(config-subif)#standby 20 ip 192.168.20.254
R2(config-subif)#stan
R2(config-subif)#standby 20 pri
//配置优先级(优先级之越大越优先,默认100)
R2(config-subif)#standby 20 priority 120
R2(config-subif)#sta
R2(config-subif)#standby 20 pre
//启动立即抢占
R2(config-subif)#standby 20 preempt
//配置默认路由
R2(config)#ip route 0.0.0.0 0.0.0.0 192.168.2.1
//配置接口跟踪当接口出现故障时优先级减小30
R2(config-subif)#standby 20 track s1/1 30
//配置访问控制列表20允许所有通过
R2(config)#access-list 20 permit any
R2(config)#int f0/0.1
//在接口下设置nat进入
R2(config-subif)#ip nat ins
R2(config-subif)#ip nat inside
R2(config-subif)#int f0/0.2
R2(config-subif)#ip nat in
//在接口下设置nat进入
R2(config-subif)#ip nat inside
R2(config-subif)#int s1/1
R2(config-if)#ip na
//在接口下设置nat出入
R2(config-if)#ip nat ou
R2(config-if)#ip nat outside
//配置动态nat
R2(config)#ip nat source list 20 interface s1/1
3)路由器R3的配置:
Router>ena
Router#conf t
//修改名称
Router(config)#hostname R3
R3(config)#int s1/0
R3config-if)#ip add
//配置IP地址
R3(config-if)#ip address 192.168.1.1 255.255.255.0
//打开接口
R3(config-if)#no shut
R3(config-if)#exit
//进入接口
R3(config)#int s1/1
R3(config-if)#ip add
//配置IP地址
R3(config-if)#ip address 192.168.2.1 255.255.255.0
R3(config-if)#no shut
R3(config)#int loo
R3(config)#int loopback 0
R3(config-if)#ip add
R3(config-if)#ip address 1.1.1.1 255.255.255.0
(5)测试验证:
1)在PC1上ping1.1.1.1和路由跟踪,如下图:
2)查看路由器R1的HSRP协议
3)断开R2的S1/1接口,查看R2的变化和R1的HSRP
R2(config-if)#shut
R2(config-if)#
*Mar 1 06:09:06.914: %HSRP-5-STATECHANGE: FastEthernet0/0.2 Grp 20 state Active -> Speak //从这里可以看到S2的f0/0.2的接口有激活状态转变为Speek状态了。
路由器R1的HSRP变化如下图所示:
5)中断R2的S1/1接口后PC4ping1.1.1.1,如下图所示: