简介
本文档介绍热备份路由器协议(HSRP)如何运行并检查其功能。
先决条件
要求
本文档没有任何特定的要求。
使用的组件
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
规则
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
HSRP 背景和操作
一种实现接近100%的网络正常运行时间的方法是使用HSRP,它为IP网络提供网络冗余,并确保用户流量立即透明地从网络边缘设备或接入电路中的第一跳故障中恢复。
当两台或多台路由器共享一个IP地址和MAC(第2层)地址时,它们可以充当单个“虚拟”路由器。虚拟路由器组的成员会连续交换状态消息。这样,如果一台路由器由于计划或计划外原因而停止运行,则一台路由器可以承担另一台路由器的路由责任。主机继续将IP数据包转发到一致的IP和MAC地址,并且执行路由的设备转换是透明的。
动态路由器发现机制
其中介绍了主机可用的动态路由器发现机制。其中许多机制无法提供网络管理员所需的网络恢复能力。当最初协议并非旨在提供网络恢复能力,或者网络中的每台主机都不可能运行协议时,就可能导致这种情况。除列出的内容外,请注意,许多主机仅允许您配置默认网关。
代理地址解析协议
一些 IP 主机使用代理地址解析协议 (ARP) 选择路由器。当主机运行代理 ARP 时,它会发送 ARP 请求以获取要访问的远程主机的 IP 地址。网络上的路由器(路由器 A)将代表远程主机回复,并且提供自己的 MAC 地址。通过代理 ARP,主机就如同远程主机已连接到网络的同一个网段一样运行。如果路由器 A 发生故障,主机会继续将目标为远程主机的数据包发送到路由器 A 的 MAC 地址,即使这些数据包没有目的地和丢失也是如此。您可以等待ARP获取发送另一个ARP请求的本地网段上另一个路由器(路由器B)的MAC地址,也可以重新启动主机以强制它发送ARP请求。无论哪种情况,在相当长的一段时间内,主机都无法与远程主机通信,即使路由协议已收敛,并且路由器B准备传输本来要通过路由器A的数据包。
动态路由协议
有些IP主机运行(或监听)动态路由协议,例如路由信息协议(RIP)或开放最短路径优先(OSPF)来发现路由器。使用RIP的缺点是适应拓扑变化的速度很慢。要在每台主机上运行动态路由协议,由于多种原因,再加上管理开销, processing
开销、安全问题或某些平台考虑事项缺乏协议实施。
ICMP 路由器发现协议
某些较新的 IP 主机使用ICMP 路由器发现协议(IRDP) (RFC 1256),在路由器无法使用时查找新的路由器。运行 IRDP 的主机会侦听来自其配置的路由器的 hello 多播消息,并且在不再收到这些 hello 消息时使用替代路由器。IRDP的默认计时器值表示它不适合检测第一跳的故障。默认通告速率是每 7-10 分钟发送一次,默认寿命是 30 分钟。
动态主机配置协议
动态主机配置协议(DHCP)(RFC 1531)提供了一种将配置信息传递给TCP/IP网络上的主机的机制。当运行 DHCP 客户端的主机引导到网络上时,它会从 DHCP 服务器请求配置信息。此配置信息通常包括 IP 地址和默认网关。如果默认网关发生故障,将没有切换到替代路由器的机制。
HSRP 操作
不支持动态发现的大型传统主机实施可以配置默认路由器。要在每台主机上运行动态路由器发现机制,由于多种原因,再加上管理开销, processing
开销、安全问题或某些平台考虑事项缺乏协议实施。 HSRP 会向这些主机提供故障切换服务。
使用HSRP时,一组路由器协同工作,向LAN中的主机呈现单个虚拟路由器的假象。这组路由器称为 HSRP 组或备用组。从组中选出的单个路由器负责分配主机发送到虚拟路由器的数据包。此路由器称为活动路由器。另一台路由器则被选为备用路由器。如果活动路由器发生故障,备用路由器会假定数据包 — forwarding
活动路由器的职责。尽管任意数量的路由器可以运行HSRP,但只有活动路由器会转发发送到虚拟路由器的数据包。
为了最大程度地减少网络流量,一旦协议完成选举过程,就只有活动路由器和备用路由器定期发送 HSRP 消息。如果活动路由器发生故障,则备用路由器接管活动路由器。如果备用路由器发生故障或者成为活动路由器,则会将另一个路由器选为备用路由器。
在特定LAN上,多个热备份组可以共存和重叠。每个备用组都会模拟单个虚拟路由器。各个路由器可以参与多个组。在这种情况下,路由器会针对每个组维护单独的状态和计时器。每个备用组都有一个已知的 MAC 地址和 IP 地址。
HSRP 编址
在大多数情况下,当您将路由器配置为某个 HSRP 组的组成部分时,这些路由器将监听该组的 HSRP MAC 地址以及各自的固化 MAC 地址。但是,以太网控制器仅识别单个 MAC 地址的路由器除外(例如,Cisco 2500 和 Cisco 4500 路由器上的 Lance 控制器)。当这些路由器是活动路由器时,它们使用HSRP MAC地址;当它们不是活动路由器时,它们使用固化地址。
HSRP在所有介质上使用此MAC地址,令牌环除外:
0000.0c07.ac** (where ** is the HSRP group number)
Cisco IOS®版本和HSRP功能表
本文档显示哪些Cisco IOS软件版本支持哪些HSRP功能。单击功能可以查看详细说明。中间的版本号表示功能最先出现在哪个版本,或者表示该功能在哪个版本上发生了变化。
Cisco IOS HSRP功能
HSRP 功能
优先占用
通过 HSRP 抢占功能,优先级最高的路由器可以立即成为活动路由器。优先级的确定首先取决于您配置的优先级值,然后取决于IP地址。在任何情况下,值越大,优先级越高。 当优先级较高的路由器优先于优先级较低的路由器时,它会发送一条 coup 消息。当优先级较低的活动路由器从优先级较高的活动路由器收到 coup 消息或 hello 消息时,它会更改为对话状态,并发送 resign 消息。
抢占延迟
抢占延迟功能允许抢占延迟可配置的时间段,并允许路由器在成为活动路由器之前填写其路由表。
对于 Cisco IOS 软件版本 12.0(9) 之前的版本,延迟从路由器重新加载开始。在 Cisco IOS 版本 12.0(9) 中,延迟会在首次尝试抢占时开始。
要配置HSRP优先级和抢占,请使用standby <group> <prioritynumber> <preempt [delay [minimum]seconds] [syncseconds]>命令。有关详细信息,请参阅HSRP文档。
接口 Tracking
接口 tracking
允许您在路由器上为HSRP进程指定另一个接口进行监控,以便更改给定组的HSRP优先级。
如果接口的指定线路协议关闭,此路由器的HSRP优先级会降低,并且允许另一优先级较高的HSRP路由器变为活动状态(如果已启用抢占)。
配置HSRP接口 tracking
,使用standby <group> track interface <priority>命令。
注意:Interface Track命令的可用性取决于使用的软件版本,但可以使用standby <group> track <object>命令。
当所跟踪的多个接口断开时,优先级将以累积数量降低。如果明确设置递减值,则当该接口断开时,优先级值将减少该数量,并且递减是累积的。如果不设置明确的递减值,则当每个接口断开时,该值都会减少 10,并且递减是累积的。
此示例使用此配置,默认递减值值为10:
注:未指定HSRP组编号时,默认组编号为组0。
interface ethernet0
ip address 10.1.1.1 255.255.255.0
standby ip 10.1.1.3
standby priority 110
standby track serial0
standby track serial1
具有此配置的 HSRP 行为如下:
前面提到的HSRP行为是真实的,即使递减值值显式配置为:
interface ethernet0
ip address 10.1.1.1 255.255.255.0
standby ip 10.1.1.3
standby priority 110
standby track serial0 10
standby track serial1 10
在Cisco IOS版本12.1之前,如果路由器带有关闭接口,则HSRP接口 tracking
将接口视为打开。
使用固化地址
使用固化地址(BIA)功能允许HSRP组使用接口的固化MAC地址而不是HSRP MAC地址。使用 BIA 是在 Cisco IOS 版本 11.1(8) 中首次实施的。要配置HSRP以使用BIA,请使用standby use-bia <scope interface>命令。
实施use-bia命令是为了克服在使用令牌环接口上HSRP MAC地址的功能地址时的限制。
注意:当HSRP在多环源路由桥接环境中运行,并且HSRP路由器驻留在不同的环上并使用功能地址时,可能导致路由信息字段(RIF)混乱。为此,引入了 use-bia 命令。
use-biafeature还通过使用DECnet MAC地址(BIA)用作HSRP MAC地址,在同一路由器上启用了DECnet、Xerox Network Systems(XNS)和HSRP。use-bia命令对于在LAN上的其他设备上配置了设备的BIA的网络也很有用。
然而,use-bia 命令有以下几个缺点:
-
当路由器处于活动状态时,虚拟 IP 地址将移至其他 MAC 地址。新的活动路由器将发送无故 ARP 响应,但不是所有主机实施都能正确处理无故 ARP。
-
配置 use-bia 时,代理 ARP 会中断。备用路由器无法覆盖故障路由器的代理ARP数据库丢失。
-
在 Cisco IOS 版本 12.0(3.4)T 之前,如果配置了 use-bia,则仅允许使用一个 HSRP 组。
当您在子接口上配置use-bia命令时,它实际上显示在主接口上并应用于所有子接口。在Cisco IOS版本12.0(6.2)及更高版本中,use-bia命令通过可选的scope接口关键字进行扩展,以允许将其应用于单个子接口。
多个 HSRP 组
Cisco IOS 版本 10.3 中增加了多个 HSRP (MHSRP) 组功能。此功能进一步实现了网络中的冗余和负载共享,使冗余路由器得到更充分的利用。当路由器主动转发一个HSRP组的流量时,它可能处于备用状态,或者处于侦听状态。
自 Cisco IOS 版本 12.0(3.4)T 以后,您可以在启用了多个 HSRP 组的情况下使用 use-bia 命令。请参阅使用HSRP的负载共享,以配置HSRP并利用多条路径。
可配置的 MAC 地址
通常,您可以使用 HSRP 帮助终端站找出用于 IP 路由的首跳网关。终端站配置有默认网关。然而,HSRP 可以为其他协议提供首跳冗余。某些协议(例如高级对等网络 (APPN))使用 MAC 地址来识别首跳以便进行路由。
在这种情况下,通常需要能够指定使用standby mac-address命令的虚拟MAC地址。虚拟 IP 地址对这些协议而言并不重要。该命令的实际语法是 standby [group] mac-address mac-address。
注意:不能在令牌环接口上使用此命令。
Syslog 支持
支持系统日志 messaging
在Cisco IOS版本11.3中添加了for HSRP信息。此功能可提高效率 logging
和 tracking
系统日志服务器上的当前活动路由器和备用路由器。
HSRP 调试
对于 Cisco IOS 版本 12.1 之前的版本,HSRP 调试命令相对比较简单。要启用 HSRP 调试,只需使用 debug standby 命令即可,该命令支持输出所有接口上的全部备用组的 HSRP 状态和数据包信息。
Cisco IOS 版本 12.0(2.1) 中增加了调试条件,可允许根据接口和组号码过滤 standby debug 命令的输出。命令使用Cisco IOS版本12.0中引入的debug condition范例,如下所示:debug condition standby interface group。指定的接口必须是可支持HSRP的有效接口。组可以是任何组 (0 - 255)。
您可以为不存在的组设置调试条件,以便在新组初始化期间捕获调试信息。
您必须启用 standby debug 指令,才能生成任何调试输出。如果未配置任何备用调试条件,则会为所有接口上的所有组生成调试输出。如果配置至少一个备用调试条件,则所有备用调试条件都会过滤备用调试输出。
增强的 HSRP 调试
对于 Cisco IOS 版本 12.1(0.2) 之前的版本,HSRP 调试的作用有限,因为信息会在周期性 Hello 消息的噪声中丢失。因此,Cisco IOS 12.1(0.2)中增加了增强的调试功能。
下表说明了用于增强调试的命令选项。
您可以使用接口和HSRP组条件调试过滤debug输出。要启用接口条件调试,请使用 debug condition interface interface 命令。要启用 HSRP 条件调试,请使用 debug condition standby interface group 命令。
只有在未设置任何 standby debug 条件时,接口调试条件才适用。基于对 HSRP 状态表所做的改进,Cisco IOS 软件版本 12.1(1.3) 中的 HSRP 调试得到了进一步的增强。
这些增强功能会显示 HSRP 状态表事件。在输出中,a/、 b/ 、 c/ 等是指HSRP有限状态机的事件,这些事件记录在RFC 2281中。
SB1: Ethernet0/2 Init: a/HSRP enabled
SB1: Ethernet0/2 Active: b/HSRP disabled (interface down)
SB1: Ethernet0/2 Listen: c/Active timer expired (unknown)
SB1: Ethernet0/2 Active: d/Standby timer expired (10.0.0.3)
SB1: Ethernet0/2 Speak: f/Hello rcvd from higher pri Speak router
SB1: Ethernet0/2 Active: g/Hello rcvd from higher pri Active router
SB1: Ethernet0/2 Speak: h/Hello rcvd from lower pri Active router
SB1: Ethernet0/2 Standby: i/Resign rcvd
SB1: Ethernet0/2 Active: j/Coup rcvd from higher pri router
SB1: Ethernet0/2 Standby: k/Hello rcvd from higher pri Standby router
SB1: Ethernet0/2 Standby: l/Hello rcvd from lower pri Standby router
SB1: Ethernet0/2 Active: m/Standby mac address changed
SB1: Ethernet0/2 Active: n/Standby IP address configured
身份验证
HSRP 身份验证功能包括 HSRP 数据包中所含的共享明文密钥。此功能可防止优先级较低的路由器通过 learning
优先级较高的路由器的备用IP地址和备用计时器值。
要配置HSRP身份验证字符串,请使用standby authentication <string>命令。
IP 冗余
HSRP 为 IP 路由提供无状态的冗余。HSRP本身只能维护其自己的状态。它假定每个路由器独立于其他路由器构建和维护自己的路由表。IP冗余功能提供了一种机制,允许HSRP为客户端应用提供服务,以便它们可以实施状态故障切换。
IP 冗余不会为对等应用程序提供交换状态信息的机制。这由应用程序自己决定,如果应用程序要提供状态故障切换,这一点至关重要。
IP冗余通常仅针对移动IP家庭代理实施。以下是配置示例:
configure terminal
router mobile
ip mobile home-agent standby hsrp-group1
!
interface e0/2
no shutdown
ip address 10.0.0.1 255.0.0.0
standby 1 ip 10.0.0.11
standby 1 name hsrp-group1
注:从Cisco IOS版本12.1(3)T开始,除了关键字standby外,还接受关键字冗余。在更高的Cisco IOS版本中, standby关键字被逐步淘汰。正确的命令是ip mobile home-agent redundancy hsrp-group1。
IP冗余的未来用途包括:
-
NAT - 需要提供冗余网关。
-
IPSEC - 需要同步状态信息以便在使用 HSRP 时运行。
-
DHCP 服务器 - 在各种路由器中实现的 DHCP 服务器。
-
NBAR、CBAC - 需要为不对称路由镜像防火墙状态。
-
GPRS - 需要一种方法来跟踪 TCP 状态。
SNMP 管理信息库
Cisco IOS 版本 12.0(3.0)T 中增加了 SNMP 管理信息库 (MIB) 支持。HSRP 具有以下两个相关的 MIB:
在 Cisco IOS 版本 12.0(6.1)T 之前,如果存在网桥组虚拟接口 (BVI),则运行扩展的 HSRP MIB 会导致路由器崩溃。
对多协议标签交换虚拟专用网的 HSRP 支持
Cisco IOS 版本 12.1(3)T 中增加了对多协议标签交换虚拟专用网 (MPLS VPN) 的 HSRP 支持。
当您在两个提供商边缘(PE)之间连接以太网时,MPLS VPN接口上的HSRP会非常有用,并且您具有以下其中之一:
网络图显示两个PE,其VPN之间运行HSRP routing/forwarding
(VRF)接口。具有HSRP虚拟IP地址的CE配置为它的默认路由。并且HSRP配置为跟踪将PE连接到提供商网络的其余部分的接口。例如,如果PE1的接口E1发生故障,HSRP优先级会降低,PE2将接管 forwarding
将数据包发送到虚拟IP/MAC地址。
配置如下:
路由器 PE1 |
路由器 PE2 |
ip cef
!
ip vrf vrf1
rd 100:1
route-target export 100:1
route-target import 100:1
!
interface ethernet0
no shutdown
ip vrf forwarding vrf1
ip address 10.2.0.1 255.255.0.0
standby 1 ip 10.2.0.20
standby 1 priority 105
standby 1 preempt delay minimum 10
standby 1 timers 3 10
standby 1 track ethernet1 10
standby 1 track ethernet2 10 |
ip cef
!
ip vrf vrf1
rd 100:1
route-target export 100:1
route-target import 100:1
!
interface ethernet0
no shutdown
ip vrf forwarding vrf1
ip address 10.2.0.2 255.255.0.0
standby 1 ip 10.2.0.20
standby 1 priority 100
standby 1 preempt delay minimum 10
standby 1 timers 3 10
standby 1 track ethernet1 10
standby 1 track ethernet2 10 |
您可以使用以下命令验证HSRP虚拟IP地址是否位于正确的VRF ARP和Cisco Express中 Forwarding
表:
ed1-pe1#show ip arp vrf vrf1
Protocol Address Age (min) Hardware Addr Type Interface
Internet 10.2.0.1 - 00d0.bbd3.bc22 ARPA Ethernet0/2
Internet 10.2.0.20 - 0000.0c07.ac01 ARPA Ethernet0/2
ed1-pe1#show ip cef vrf vrf1
Prefix Next Hop Interface
0.0.0.0/0 10.3.0.4 Ethernet0/3
0.0.0.0/32 receive
10.1.0.0/16 10.2.0.1 Ethernet0/2
10.2.0.0/16 attached Ethernet0/2
10.2.0.1/32 receive
10.2.0.20/32 receive
224.0.0.0/24 receive
255.255.255.255/32 receive
对 ICMP 重定向的 HSRP 支持
HSRP基于以下概念:保护子网的HSRP对等路由器可以提供对构成网络的所有其他子网的访问。因此,哪个路由器成为活动 HSRP 路由器并没有关系,因为所有路由器都具有到每个子网的路由。
HSRP 使用特殊的虚拟 IP 地址和虚拟 MAC 地址,这些地址在逻辑上与 HSRP 活动路由器相连。当接口上使用HSRP时,接口上会自动禁用ICMP重定向。从Cisco IOS 12.1(3)T开始,ICMP重定向功能在配置了HSRP的接口上启用ICMP重定向。有关详细信息,请参阅对 ICMP 重定向的 HSRP 支持。这样做是为了防止主机重定向离开HSRP虚拟IP地址。子网中的两台(或更多)路由器可能与网络的其它部分没有相同的连通性。也就是说,对于特定的目的IP地址,路由器中的一台或另一台可以拥有通往该地址的更佳路径,甚至可以是连接到该地址的唯一路由器。
如果第一个路由器知道另一个路由器具有指向特定目标的更好路径,则 ICMP 协议允许第一个路由器重定向终端站,以将特定目标的数据包发送到同一子网中的另一个路由器。与默认网关一样,如果终端站被重定向到以访问特定目的地的路由器发生故障,则不会将终端站数据包发送到该目的地。在标准 HSRP 中,情况正是如此。因此,如果启用HSRP,建议您禁用ICMP重定向。
当您扩展ICMP重定向和HSRP之间的关系时,可解决此问题,这允许您利用HSRP和ICMP重定向的优点。每个子网中运行两个(或多个)HSRP组,其中配置的HSRP组数至少与参与该配置的路由器数相同。配置优先级,使每个路由器至少是一个HSRP组的主路由器。当一个路由器确定将终端站重定向到特定目的地的不同路由器时,它不会重定向到终端站到另一个路由器IP地址,而是找到将该路由器作为主路由器的HSRP组,并将终端站重定向到对应的虚拟IP地址。如果目标路由器随后发生故障,HSRP会确保另一台路由器接管其工作,并可能将终端站重定向到另一台虚拟路由器。
网桥组虚拟接口
Cisco IOS 版本 12.0(6.2)T 中增加了对网桥组虚拟接口 (BVI) 的 HSRP 支持。
子接口
子接口上的HSRP组的组号必须在同一主接口上所有子接口上的所有其它组间唯一。这是因为子接口未收到唯一的SNMP接口索引。如果您在不同子接口上有2个号码为N的组,则在MIB中,子接口1上的组N和子接口2上的组N会显示为同一个组。
相关信息