本文档提供有关 EtherChannel 不一致的信息以及如何在 Cisco Catalyst 交换机中检测 EtherChannel 不一致。
本文档不会详细说明 EtherChannel 的工作原理或配置方式。有关提供如何了解和配置 EtherChannel 以及不同 Catalyst 交换机之间配置示例的详情的文档,请参阅 LAN 技术的技术支持:EtherChannel。
本文档没有任何特定的要求。
本文档不限于特定的软件和硬件版本。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
EtherChannel 是以单个逻辑端口形式出现的物理端口的聚合集。EtherChannel 的目标是提供比单个端口更高的带宽和可用性。
生成树协议 (STP) 将 EtherChannel 视为单个端口。如果信道两端的信道端口不一致,这会导致生成转发环路。
此绘制提供一个示例:
如果交换机A有两条不在通道中的单独物理链路,并且交换机B认为这些相同的链路是通道的一部分,则交换机B会向交换机A发送广播或未知单播数据包。由于这些链路未捆绑在一起作为交换机A上的通道,因此数据包会转发回交换机B,如图所示。这会导致数据包复制并更改交换机 B 上的转发表,从而指向错误的方向。
特殊协议(如 Cisco Port Aggregation Protocol (PAgP) 和 IEEE Link Aggregation Control Protocol (LACP))旨在确保信道相邻交换机之间保持一致。不过,在某些情况下,这两种协议都不受任何系统支持,或由于其他考虑因素而被禁用。Cisco 开发出一种特殊机制来检测信道不一致并防止此问题出现,从而避免数据包重复、循环以及其他与 EtherChannel 不一致相关的问题。此功能受 Catalyst 4500/4000、5500/6000 和 6500/6000 交换机的支持,默认情况下处于启用状态,无论信道模式是 desirable、active、auto、passive 还是 on。
如“后台”部分中所述,STP 将 EtherChannel 视为单个端口。信道中所有端口的 STP 状态都相同,每个 VLAN 和每个 hello 间隔只能发送或接收一个 STP 网桥协议数据单元 (BPDU)。
如果一台交换机将这两条链路视为一个信道,相邻交换机将这两条链路视为独立的连接(即出现不一致),则情况不同。请考虑以下示例:
在图表中,交换机 A 不建立信道,而交换机 B 建立信道。假设信道的 STP 指定端口位于交换机 B 侧。这意味着交换机 B 应发送 BPDU。只要信道被视为单个 STP 端口,信道上的每个 VLAN 就只能发送一个 BPDU。此 BPDU 实际上通过信道中的其中一条链路进行传输。因此,只有交换机 A 上的其中一个端口接收此 BPDU。在图表中,此端口用黑色箭头表示。
交换机 A 接收 BPDU 后,交换机 A 上的其他端口成为 STP 指定端口。这是因为端口未作为信道与接收BPDU的端口捆绑,并且不直接从交换机B接收BPDU。作为交换机A上的STP指定端口,它现在将图中红色箭头表示的BPDU发回交换机B。交换机B从交换机A接收BPDU,并且不一致检测到。
EtherChannel 不一致检测机制要求:对于每个 VLAN,信道中只有一个指定的端口发送或接收 BPDU。Catalyst 交换机上的每个端口都有自己唯一的 MAC 地址,在发送 BPDU 时使用。
对于 Catalyst OS (CatOS),如果在版本 7.1(1) 及更高版本中发出 show port mac-address mod/port 命令或 show module mod 命令,则会看到此 MAC 地址。以下是输出示例:
Cat6k> (enable) show port mac-address 2/7 Port Mac address ----- ----------------- 2/7 00-02-fc-90-19-2c Cat6k> (enable) show module 2 bold Mod Slot Ports Module-Type Model Sub Status --- ---- ----- ------------------------- ------------------- --- -------- 2 2 16 10/100/1000BaseT Ethernet WS-X6516-GE-TX no ok Mod Module-Name Serial-Num --- -------------------- ----------- 2 SAD05170009 Mod MAC-Address(es) Hw Fw Sw --- -------------------------------------- ------ ---------- ----------------- 2 00-02-fc-90-19-26 to 00-02-fc-90-19-35 0.231 6.1(3) 7.1(1)
对于 Catalyst 交换机上的 Cisco IOS® 软件,如果发出 show interface type mod/port 命令,则会看到此 MAC 地址,如以下输出示例所示:
Cat6k-CiscoIOS# show interface fastEthernet 4/1 FastEthernet4/1 is up, line protocol is down (monitoring) Hardware is C6k 100Mb 802.3, address is 0005.7461.c838 (bia 0005.7461.c838) Description: I,NSP49,10.101.5.96,OCCRBC7505BN1A HSSI 1/0/0 MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec, reliability 255/255, txload 1/255, rxload 1/255 Encapsulation ARPA, loopback not set Full-duplex, 100Mb/s input flow-control is off, output flow-control is off ARP type: ARPA, ARP Timeout 04:00:00 Last input never, output never, output hang never Last clearing of "show interface" counters never Input queue: 0/2000/0/0 (size/max/drops/flushes); Total output drops: 262140 Queueing strategy: fifo Output queue :0/40 (size/max) 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute output rate 0 bits/sec, 0 packets/sec 119374 packets input, 8353326 bytes, 0 no buffer Received 118782 broadcasts, 299 runts, 0 giants, 0 throttles 748 input errors, 14 CRC, 0 frame, 0 overrun, 0 ignored 0 input packets with dribble condition detected 9225693 packets output, 591962436 bytes, 0 underruns 0 output errors, 0 collisions, 1 interface resets 0 babbles, 0 late collision, 0 deferred 0 lost carrier, 0 no carrier 0 output buffer failures, 0 output buffers swapped out Cat6k-CiscoIOS#
如果 EtherChannel 上接收或发送 BPDU 的源 MAC 地址不断变化,则多个 STP 端口会发送 BPDU。这是明显的不一致迹象,因为 STP 将信道视为单个端口。
注意:此机制允许一些容差,因为BPDU可能来自不同的MAC地址。例如,当 STP 融合时,信道两端的 STP 指定端口可能发生变化。不过,此过程必须在短时间内进行。
发送和接收的 BPDU 由检测机制检查。如果信道在超过 30 秒的时间内检测到 75 个以上来自不同 MAC 地址的 BPDU,则 EtherChannel 即视为不一致。不过,如果发现 连续 5 个 BPDU 来自同一个 MAC 地址,则会重置检测计数器。这些计时器/计数器会在未来的软件版本中进行更改。
注意:由于此机制的一般性质,即使信道配置一致,也可触发不一致检测。
例如,如果网络中某台交换机出现硬件或软件方面的问题,并且由信道连接的两台独立交换机不能就哪一端为 STP 指定端口达成一致,则两端都会发送 BPDU。一致性检测机制可禁用出现这些症状的 EtherChannel。由于这种更改可能允许分割的网络进行融合,因此它不一定会导致有害的负面影响。
即使禁用 STP,BPDU 也不会由硬件泛洪。STP 仍需在 BPDU 上进行处理,包括将 BPDU 中的源 MAC 地址更改为发送端口的 MAC 地址。这意味着,即使禁用 STP,不一致检测也会在信道上发挥作用。
默认情况下,CatOS 和 Cisco IOS 软件上都启用检测。
您还可以监控此功能的运行。为此,请针对 CatOS 发出 show spantree statistics mod/port [vlan] 命令。请考虑以下示例:
Cat6k> (enable) show spantree statistics 2/5 199 Port 2/5 VLAN 199 !--- Output suppressed. channel_src_mac 00-d0-5a-eb-67-5a channel src count 73 channel OK count 1 Cat6k> (enable) show spantree statistics 2/5 199 Port 2/5 VLAN 199 !--- Output suppressed. channel_src_mac 00-50-14-bb-63-a9 channel src count 76 channel OK count 1
此列表对输出示例中的 show spantree statistics mod/port [vlan] 参数进行说明。
channel_src_mac — 显示信道上发送或接收的最后一个 BPDU 的源 MAC 地址
channel src count — 对使用不同源 MAC 地址发送或接收的 BPDU 进行计数
channel OK count — 对连续使用同一个 MAC 地址发送的 BPDU 进行计数
注意:通道src计数参数增加。一旦此参数超过 75,信道中的所有链路都将处于 error-disabled 状态,并发出系统日志消息。另请注意,您在两个输出示例中看到的 MAC 地址不同。
如果存在 EtherChannel 配置错误问题,那么您还会在 CatOS 的系统日志输出中看到此错误消息:
%SPANTREE-2-CHNMISCFG: STP loop - channel 2/5-12 is disabled in vlan/instance 199
此消息表明 EtherChannel 类型设置 (auto/desirable/on) 中可能存在配置错误。配置错误的信道已形成,导致生成树环路。在此消息中:
[dec] 是模块编号
[chars] 是端口号
vlan [dec] 是 VLAN 编号
在 CatOS 版本 8.1 及更高版本中,即为 %SPANTREE-2-CHNMISCFG2:BPDU 随错误消息一起出现。此消息帮助您进行故障排除,因为 MAC 地址现在位于系统日志中,可供查看并帮助您简化故障排除工作。
%SPANTREE-2-CHNMISCFG2: BPDU source mac addresses: [chars], [chars]
此消息在 SPANTREE-2-CHNMISCFG 消息显示后出现。此消息提供导致错误禁用信道的 STP BPDU 的源 MAC 地址。在此消息中,[chars]、[chars] 是 BPDU 的源 MAC 地址。
对于 Cisco IOS 软件,您必须使用标准 STP 故障排除步骤才能检测 EtherChannel 不一致。如果您在系统日志输出中看到此错误消息,则可能存在 EtherChannel 配置错误问题:
SPANTREE-2-CHNL_MISCFG: Detected loop due to etherchannel misconfiguration of [chars] [chars]
此消息表明检测到信道组配置错误。例如,EtherChannel 一端的端口可能未配置到信道中,也可能捆绑失败,而 EtherChannel 另一端的端口则捆绑成功。在此消息中,[chars] 是信道组 ID。
使用 show interfaces status err-disabled 命令确定配置错误的本地端口。使用 show etherchannel summary 命令检查远程设备上的 EtherChannel 配置。如果配置正确无误,请在相关的端口信道接口上依次发出 shutdown 命令和 no shutdown 命令。
有关 STP debug 命令以及如何进行故障排除的详情,请参阅对运行 Cisco IOS 系统软件的 Catalyst 交换机上的 STP 进行故障排除。