当您在通过LAN交换机连接的两台路由器之间运行热备份路由器协议(HSRP)时,您可能会发现HSRP不稳定。这通常发生在网络中断或活动路由器转换期间,例如优先级更高的HSRP路由器,并抢先配置到LAN。本文档说明了为什么会发生这种不稳定,以及如何避免这种不稳定。
本文档没有任何特定的要求。
本文档不限于特定的软件和硬件版本。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
本部分提供有关如何配置本文档所述功能的信息。
注:要查找有关本文档中使用的命令的其他信息,请使用命令查找工具(仅注册客户)。
本文档使用下图所示的网络设置。
本文档使用以下配置:
Router A |
---|
interface FastEthernet1/0 ip address 10.144.220.3 255.255.252.0 standby priority 120 standby preempt standby ip 10.144.220.1 |
Router B |
---|
interface FastEthernet3/0 ip address 10.144.220.2 255.255.252.0 standby priority 110 standby preempt standby ip 10.144.220.1 |
当前没有可用于此配置的验证过程。
本部分提供的信息可用于对配置进行故障排除。
命令输出解释程序工具(仅限注册用户)支持某些 show 命令,使用此工具可以查看对 show 命令输出的分析。
注意:在使用debug命令之前,请参阅有关debug命令的重要信息。
debug standby
在上图中,当路由器A添加到网络时,您可以观察路由器B的HSRP状态从主用状态摆动到备用状态。在路由器B上运行debug standby 会产生以下输出:
RouterB# debug standby *Mar 1 02:55:56: SB0:FastEthernet3/0 Hello out 10.144.220.2 Active pri 110 hel 3 hol 10 ip 10.144.220.1 *Mar 1 02:56:08: SB0:FastEthernet3/0 Hello in 10.144.220.3 Active pri 120 hel 3 hol 10 ip 10.144.220.1 *Mar 1 02:56:08: SB0: FastEthernet3/0 state Active -> Speak *Mar 1 02:56:08: SB0:FastEthernet3/0 Resign out 10.144.220.2 Speak pri 110 hel 3 hol 10 ip 10.144.220.1 *Mar 1 02:56:08: SB0:FastEthernet3/0 Hello out 10.144.220.2 Speak pri 110 hel 3 hol 10 ip 10.144.220.1 *Mar 1 02:56:09: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet3/0, changed state to down *Mar 1 02:56:11: SB0: FastEthernet3/0 state Speak -> Init *Mar 1 02:56:13: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet3/0, changed state to up *Mar 1 02:56:13: SB0: FastEthernet3/0 state Init -> Listen *Mar 1 02:56:14: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet3/0, changed state to down *Mar 1 02:56:14: SB0: FastEthernet3/0 state Listen -> Init *Mar 1 02:56:20: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet3/0, changed state to up *Mar 1 02:56:20: SB0: FastEthernet3/0 state Init -> Listen *Mar 1 02:56:30: SB0: FastEthernet3/0 state Listen -> Speak *Mar 1 02:56:40: SB0: FastEthernet3/0 state Speak -> Standby *Mar 1 02:56:41: SB0: FastEthernet3/0 state Standby -> Active *Mar 1 02:56:41: SB: FastEthernet3/0 Adding 0000.0c07.ac00 to address filter *Mar 1 02:56:41: SB0:FastEthernet3/0 Hello out 10.144.220.2 Active pri 110 hel 3 hol 10 ip 10.144.220.1 *Mar 1 02:56:44: SB0:FastEthernet3/0 Hello in 10.144.220.3 Active pri 120 hel 3 hol 10 ip 10.144.220.1 *Mar 1 02:56:44: SB0: FastEthernet3/0 state Active -> Speak
从以上输出中,很明显路由器B的HSRP状态在从主用状态持续更改为主用状态,依此类推。
HSRP进程使用组播地址224.0.0.2与其他HSRP路由器通信hello数据包。如果连接丢失,或将具有更高优先级的HSRP路由器添加到网络,则HSRP状态可能开始抖动,如上所示。在某些路由器平台上运行HSRP(请参阅下面的注意)并向网络添加高优先级路由器时,低优先级路由器的HSRP状态会从“活动”变为“发言”,并会发生链路状态更改。交换机的端口检测到此链路状态更改,生成树协议转换发生。端口经过侦听、学习和转发阶段大约需要30秒。此时间段超过HSRP hello进程的默认超时,因此低优先级路由器在达到备用状态后会变为活动状态,因为没有从活动路由器接收到hello数据包。
由于路由器看不到彼此的HSRP hello数据包,因此它们都会变为活动状态。当交换机端口转换到Learning状态时,交换机可能会从两个不同的端口看到相同的虚拟MAC地址。
注意:HSRP状态更改导致的物理链路状态更改在Cisco 2600、Cisco 3600和Cisco 7200系列路由器上的网络模块快速以太网(NM-FE)接口上发生。Cisco IOS®软件版本12.1(3)及更高版本中不再出现此行为。
有关详细信息,请参阅Cisco Bug ID CSCdr02376(仅限注册客户)。
执行以下任务之一,以解决上述问题。
为交换机配置set spantree portfast enable,这允许交换机绕过spantree状态并直接进入转发状态。
如果路由器配置为桥接此接口/端口上的数据包,则无法使用此解决方法,因为此类链路上的立即转发可能导致网络容易出现转发环路中断。
注意:此限制也适用于连接到其他交换机或网桥的交换机端口。
更改HSRP计时器,使生成树转发延迟(默认为15秒)小于HSRP保持时间的一半(默认为10秒)。
我们建议HSRP保持时间为40秒。
注意:增加HSRP保持时间会使HSRP在检测活动路由器已关闭和备用路由器处于活动状态时变慢。
确保网络中没有数据包风暴(IPX容易发生数据包风暴)。
配置standby use-bia命令,该命令强制HSRP活动路由器使用固化地址。
这完成了两件事。由于HSRP不再需要更改(或添加)单播MAC地址到MAC地址过滤器列表,因此以太网接口不会重置。它还防止交换机在两个不同端口上获取同一地址。请参阅什么是standby use-bia命令及其工作原理?。
注意:使用standby use-bia命令有以下缺点:
当路由器变为活动状态时,虚拟 IP 地址会移至其他 MAC 地址。新的活动路由器将发送无故地址解析协议 (ARP) 响应,但不是所有主机实施都能正确处理无故 ARP。
配置standby use-bia时代理ARP会中断。备用路由器无法覆盖故障路由器丢失的代理ARP数据库。
由于内部限制,多层交换机功能卡2(MSFC2)不支持standby use-bia命令。 有关详细信息,请参阅在Supervisor引擎2上配置IP单播第3层交换的配置指南和限制部分。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
02-Jun-2008 |
初始版本 |