两端设备配置的MSTP报文的协议格式不一致导致端口DOWN

组网情况

图7-13所示,Switch-1、Switch-2与两台H3C S6500组成MSTP环。

图7-13 两端设备MSTP报文的协议格式不一致导致端口DOWN组网图

现象描述

将Switch-1整机重启并重新上电后,S6500-1的GE0/0/4端口会自动shutdown,必须手动undo shutdown才能恢复。且设备上打印如下告警:

%Jul  5 08:13:33 2011 S6500-1 L2INF/5/PORT LINK STATUS CHANGE: GigabitEthernet0/0/4: is UP
%Jul  5 08:13:42 2011 S6500-1 MSTP/3/BPDUFORMATERROR:Port GigabitEthernet0/0/4 received different format of MSTP BPDU packets continually! Shut down it in order to voiding broadcast
%Jul  5 08:13:43 2011 S6500-1 L2INF/5/PORT LINK STATUS CHANGE: GigabitEthernet0/0/4: is DOWN

原因分析

Switch和S6500互连端口均没有配置MSTP报文的协议格式,使用默认值。但是默认值不一致,导致S6500接口被Shutdown。

Switch端口的MSTP报文的协议格式stp compliance默认为auto并发送dot1s格式报文,S6500默认发送legacy格式报文。S6500端口UP后连续发送3个legacy报文,Switch端口UP后发送1个dot1s报文,S6500回复1个dot1s报文,Switch回复S6500的legacy报文,后续两端交互dot1s报文。

S6500在进行报文格式检查时有特殊的处理机制:10秒内收到的legacydot1s报文都大于等于3个时,将端口Shutdown。

操作步骤

  1. 在Switch整机启动端口UP后,在S6500上执行命令display stp interface,查看直连UP端口的信息,发现MSTP BPDU formatlegacy
    [S6500] display stp interface
    ......
    ----[Port4(GigabitEthernet0/0/4)][FORWARDING]----
    Port Protocol       :enabled
    Port Role           :CIST Designated Port
    Port Priority       :128
    Port Cost(Legacy)   :Config=auto / Active=20
    Desg. Bridge/Port   :32768.000f-e2e0-5501 / 128.4
    Port Edged          :Config=disabled / Active=disabled
    Point-to-point      :Config=auto / Active=true
    Transit Limit       :3 packets/hello-time
    Protection Type     :None
    Receive/Send
    MSTP BPDU format    :legacy
    Port Config
    Digest Snooping     :disabled
    Num of Vlans Mapped :0
    PortTimes           :Hello 2s MaxAge 20s FwDly 15s RemHop 0
    BPDU Sent           :56143
    TCN: 0, Config: 0, RST: 0, MST: 56143
    BPDU Received       :56734
    TCN: 0, Config: 0, RST: 0, MST: 56734
    ......
  1. 执行命令stp compliance legacy,将Switch连接S6500的端口强制配置为legacy模式。

建议与总结

在与其他厂商设备对接时,需要关注对端接口收发MSTP报文的协议格式是否默认为auto,是否有特殊的检查机制。

当Switch端口配置为非auto格式,端口收到的报文格式与配置不一致时,打印如下日志:

MSTP/3/PACKET_ERR_COMPLIAN:The port compliance protocol type of the packet received by MSTP from the port [port-name] is invalid.

出现该情况后,建议按照如下方法处理:

  1. 使用获取报文工具记录收到的错误报文。
  2. 记录查询对端的接口信息,如设备厂商、版本、配置。

    如果是华为设备,使用命令display versiondisplay interfacedisplay current-configuration查询设备的版本、配置等。

    如果是其他厂商设备,则根据该厂商的设备命令获取信息。

  3. 由于此时MSTP收到非法报文,计算出来的STP状态错误,有可能导致出现二层环路(使用display stp brief命令查看接口STP状态,可确认是否存在环路),建议先shutdown接口,防止形成广播风暴。确认不存在环路后,使用undo shutdown命令恢复接口。
阅读剩余
THE END