利用HSRP实现IP路由容错
对于IP网络来说,Cisco的热备份路由协议(HSRP, Hot Standby Routing Protocol)答应网络在一个路由器失效不能工作时,网络中的另一个路由器自动接管失效路由器,从而实现IP路由容错。HSRP协议还答应两个或多个配置HSRP协议的路由器使用一个虚拟路由器的MAC地址和IP地址。
虚拟路由器物理上并不存在,它表示一个能为它们提供备份容错的公共路由器对象。图1显示了配置HSRP协议的广域网中的北京网段。其中,每个物理路由器都配置了虚拟路由器的MAC地址和IP地址。
在图1中,虚拟路由器的MAC地址是0000.0c07.ac01。当配置HSRP协议时,路由器自动地在Cisco IOS软件的地址池中选择一个虚拟MAC地址,该虚拟MAC地址在Cisco 公司的MAC地址块范围内。以太网和FDDI局域网使用预先指定的MAC地址作为虚拟MAC地址,令牌环局域网使用一个功能地址作为虚拟MAC地址。
在图1中,网络192.1.1.0中的主机的缺省路由器没有设置为路由器A,而设置为虚拟路由器的IP地址。当用户A的工作站给位于广州网段的用户B的工作站发送数据包时,它将数据包发送到虚拟路由器的MAC地址。
在图1中,路由器A设置为主动路由器。它被配置为虚拟路由器的IP地址和MAC地址,所有发往虚拟路由器的数据包都经由接口发送到广州网段。作为备份路由器,路由器B也被配置为虚拟路由器的IP地址和MAC地址。假如由于某种原因路由器A停止转发数据包,路由协议发生收敛,路由器B接管路由器A变为主动路由器。也就是说,路由器B对虚拟MAC地址和虚拟IP地址进行反应。用户A的工作站继续使用虚拟路由器的IP地址将数据包发往用户B的工作站,路由器B接受这些数据包,并通过上海网段将其发送到广州网段。直到路由器A重新工作,HSRP答应路由器B为北京网段的用户提供不间断的与广州网段的用户进行通信服务。当路由器B是主动路由器时,路由器B执行正常功能:转发北京网段和上海网段之间的数据包。
HSRP的工作原理
HSRP协议利用一个优先级方案来决定哪个配置了HSRP协议的路由器成为默认的主动路由器。假如一个路由器的优先级设置得比所有其他路由器的优先级高,则该路由器成为主动路由器。路由器的缺省优先级是100,所以假如只设置一个路由器的优先级高于100,则该路由器将成为主动路由器。
通过在设置了HSRP协议的路由器之间广播HSRP优先级,HSRP协议选出当前的主动路由器。当在预先设定的一段时间内主动路由器不能发送hello消息时,优先级最高的备用路由器变为主动路由器。路由器之间的包传输对网络上的所有主机来说都是透明的。
配置了HSRP协议的路由器交换以下三种多点广播消息:
● Hello──hello消息通知其他路由器发送路由器的HSRP优先级和状态信息,HSRP路由器默认为每3秒钟发送一个hello消息;
● Coup──当一个备用路由器变为一个主动路由器时发送一个coup消息;
● Resign──当主动路由器要宕机或者当有优先级更高的路由器发送hello消息时,主动路由器发送一个resign消息。
在任一时刻,配置了HSRP协议的路由器处于以下四种状态之一:
● Active──路由器执行包传输功能;
● Standby──当主动路由器失效时路由器预备接管包传输功能;
● Speaking and listening──路由器正在发送和监听hello消息;
● Listening──路由器正在监听hello消息。
配置HSRP
图2给出了一个IP网络的拓扑结构图,其中两个路由器配置了HSRP协议。
网络上的所有主机都将虚拟路由器的IP地址(本文中为1.0.0.3)配置为缺省的网关。配置缺省网关的命令与主机的操作系统、TCP/IP实现和配置有关。
以下是路由器A的配置:
hostname RouterA
!
interface ethernet 0
ip address 1.0.0.1 255.0.0.0
standby 1 ip 1.0.0.3
standby 1 preempt
standby 1 priority 110
standby 1 authentication example
standby 1 timers 5 15
!
interface ethernet 1
ip address 3.0.0.1 255.0.0.0
!
router eigrp 1
network 1.0.0.0
network 3.0.0.0
以下是路由器B的配置:
hostname RouterB
!
interface ethernet 0
ip address 1.0.0.2 255.0.0.0
standby 1 ip 1.0.0.3
standby 1 preempt
standby 1 authentication example
standby 1 timers 5 15
!
interface ethernet 1
ip address 2.0.0.2 255.0.0.0
!
router eigrp 1
network 1.0.0.0
network 2.0.0.0
其中的standby ip接口设置命令启动HSRP协议并设置1.0.0.3作为虚拟路由器的IP地址。两个路由器的配置中均包含了这个命令,这样两个路由器共享同一个虚拟IP地址。1建立备用组1(假如不指定一个组号,则缺省组号为0)。在建立的备用组中必须有一个路由器指定虚拟路由器的IP地址,备用组中的其他路由器指定虚拟路由器的IP地址则是可选的。
其中的standby preempt接口设置命令答应当该路由器的优先级比组中的其他的路由器的优先级高时,该路由器成为主路由器。在本文的配置中,两个路由器都包含该命令,这样其中的任何一个路由器都可以成为另一个路由器的备份路由器。其中的1表示此命令适用于备用组1。假如其中的一个路由器配置中不包含此命令,则该路由器不能成主动路由器。
其中的standby priority接口设置命令设置路由器的HSRP优先级为110,这比缺省的100优先级高。在本文的配置中只有路由器A包含这个命令,这使路由器A成为缺省的主动路由器。1表示该命令适用于备用组1。
其中的standby authentication接口设置命令建立一个8字符的明文认证字符串,此认证字符串包含在每个HSRP多点广播消息中。
该命令是可选的,假如使用,则组中的每个配置HSRP协议的路由器必须使用相同的认证字符串,以保证每个路由器能确认接收到的HSRP消息的来源。1表示此命令应用于备用组1。
其中,standby timers接口设置命令设置hello消息之间的间隔,称为hello时间,此时间间隔为5秒; 路由器在等待8秒钟保持时间之后公布主动路由器宕机(缺省的hello时间和保持时间分别为3秒和10秒)。假如修改此参数,则各路由器必须使用相同的hello时间和保持时间。1表示此命令应用于备用组1。
配置多个HSRP组
多组HSRP协议(MHSRP)是HSRP协议的扩展,它答应路由器的一个端口隶属于多个热备份组。MHSRP协议需要Cisco IOS 10.3或以上的版本支持,并且路由器硬件答应一个以太网端口绑定多个单点广播MAC地址,如AGS、AGS+以及Cisco 7000系列路由器。如图3所示,这些非凡路由器硬件答应配置路由器中的一个端口,使得该路由器成为多个备份组的备份路由器。
在图3中,路由器A的以太网端口0属于组1,路由器B的以太网端口0属于组1、2和3,路由器C的以太网端口0属于组2,路由器D的以太网端口0属于组3。可以按照部门组织结构来建立各组。在这中情况下,组1可能表示工程部门,组2表示制造部门,组3表示财务部门。
路由器B配置为组1和组2的主动路由器,组3的备份路由器。路由器D配置为组3的主动路由器。假如路由器D因为某种原因失效,路由器B将执行路由器D的数据转发功能,从而答应财务部门的用户可以继续访问其他子网的数据。
以下是路由器A的配置:
hostname RouterA
!
interface ethernet 0
ip address 1.0.0.1 255.0.0.0
standby 1 ip 1.0.0.5
standby authentication sclara
!
interface serial 0
ip address 2.0.0.1 255.0.0.0
!
router eigrp 1
network 1.0.0.0
network 2.0.0.0
以下是路由器B的配置,要求路由器B必须是AGS、AGS+或者Cisco 7000系列路由器:
hostname RouterB
!
interface ethernet 0
ip address 1.0.0.2 255.0 0.0
standby 1 ip 1.0.0.5
standby 1 priority 110
standby 1 preempt
standby 1 authentication sclara
standby 2 ip 1.0.0.6
standby 2 priority 110
standby 2 preempt
standby 2 authentication mtview
standby 3 ip 1.0.0.7
standby 3 preempt
standby 3 authentication svale
!
interface serial 0
ip address 3.0.0.1 255.0.0.0
!
router eigrp 1
network 1.0.0.0
network 3.0.0.0
以下是路由器C的配置:
hostname RouterC
!
interface ethernet 0
ip address 1.0.0.3 255.0 0.0
standby 2 ip 1.0.0.6
standby 2 authentication mtview
!
interface serial 0
ip address 4.0.0.1 255.0.0.0
!
router eigrp 1
network 1.0.0.0
network 4.0.0.0
以下是路由器D的配置:
hostname RouterD
!
interface ethernet 0
ip address 1.0.0.4 255.0 0.0
standby 3 ip 1.0.0.7
standby 1 priority 110
standby 1 preempt
standby 3 authentication svale
!
interface serial 0
ip address 4.0.0.1 255.0.0.0
!
router eigrp 1
network 1.0.0.0
network 5.0.0.0
端口跟踪
根据路由器的某些端口是否有效,利用HSRP和MHSRP协议的端口跟踪特性能够调整热备路由器的优先级。当一个路由器的被跟踪端口失效时,该路由器的HSRP优先级将降低。端口跟踪特性可以大大减少含有失效要害端口的路由器成为主动路由器的可能性。要配置端口跟踪特性,使用standby track接口配置命令。图4显示了一个配置了端口跟踪特性的网络。
在图4中,路由器A配置为主动路由器,路由器B和路由器C配置为路由器A的热备路由器。
以下是路由器A的配置:
hostname RouterA
!
interface ethernet 0
ip address 1.0.0.1 255.0.0.0
standby 1 ip 1.0.0.4
standby 1 preempt
standby 1 priority 110
standby authentication microdot
!
interface serial 0
ip address 2.0.0.1 255.0.0.0
!
router eigrp 1
network 1.0.0.0
network 3.0.0.0
其中的standby ip接口设置命令使能HSRP协议,并设置1.0.0.4作为虚拟路由器的IP地址。1建立热备份组1。
其中的standby preempt接口设置命令答应路由器A在其优先级比热备份组中配置HSRP协议的其他所有路由器的优先级高时变为主动路由器。
其中的standby priority接口设置命令设置路由器的优先级为110,为本例三个路由器中优先级最高的。由于路由器A的优先级最高,在正常情况下路由器A就是主动路由器。
以下是路由器B的配置:
hostname RouterB
!
interface ethernet 0
ip address 1.0.0.2 255.0 0.0
standby 1 ip 1.0.0.4
standby 1 preempt
standby 1 priority 105
standby track serial 0
standby 1 authentication microdot
interface serial 0
ip address 3.0.0.1 255.0.0.0
!
router eigrp 1
network 1.0.0.0
network 2.0.0.0
其中的standby preempt接口设置命令答应当路由器B的优先级最高时立即变为主动路由器,即使当前的主动路由器没有失效。
其中的standby priority接口设置命令设置路由器B的优先级为105(低于路由器A的优先级而高于路由器C的优先级),所以路由器B是热备路由器。
其中的standby track接口设置命令使得以太网接口0跟踪串行接口0。假如串行接口0失效,路由器B的优先级就减去10(缺省值)。
以下是路由器C的配置:
hostname RouterC
!
interface ethernet 0
ip address 1.0.0.3 255.0 0.0
standby 1 ip 1.0.0.4
standby 1 preempt
standby 1 priority
standby track serial 0
standby 1 authentication microdot
!
interface serial 0
ip address 4.0.0.1 255.0.0.0
!
router eigrp 1
network 1.0.0.0
network 4.0.0.0
其中的standby preempt接口设置命令答应当路由器C的优先级最高时立即变为主动路由器。
其中的standby priority接口设置命令没有设置路由器C的优先级,所以路由器C的优先级是100(缺省值)。
假如路由器A失效,而路由器B的串行接口0正常,路由器B(优先级为105)将变为主动路由器。但是,假如路由器B的串行接口0在路由器A串行接口0失效之前失效,路由器B的优先级将减为95。假如而后路由器A失效,则路由器C(优先级为100)就变为主动路由器。
结束语
HSRP和MHSRP协议为IP数据包提供了路由容错,使所有网段上的主机能够永不停顿地访问所有网段上的资源。为了实现路由容错,HSRP和MHSRP协议需要一个快速收敛的路由协议如增强的IGRP协议。快速收敛的路由协议保证了路由状态的变化能够迅速地广播,使得网络用户感觉不到路由器由热备状态到主动状态的转变。