S7700与思科对接STP后端口状态不断切换问题

发布时间:  2016-12-27 浏览次数:  502 下载次数:  0
问题描述

S7706-1通过G3/0/3端口,连接Cisco45065/0/47S7706-2通过G3/0/3端口,连接Cisco45065/0/48;两台S9508E之间,使用G3/0/2端口互联。Cisco4748端口的STP状态不断切换,上报错误信息。

  导致对接失败,C4506和两台7706的端口状态异常,不稳定,根端口也变成了阻塞端口。

%SPANTREE-2-UNBLOCK_CONSIST_PORT: Unblocking GigabitEthernet5/48 on MST00.

Port consistencyinterface FastEthernet3/41

%SPANTREE-7-RECV_1Q_NON_TRUNK: Received 802.1Q BPDU on non trunk GigabitEthernet5/48 VLAN1.

%SPANTREE-7-BLOCK_PORT_TYPE: Blocking GigabitEthernet5/48 on MST00. Inconsistent port type.access.

告警信息

在现网,C4506上打印下面的信息:

    %SPANTREE-7-RECV_1Q_NON_TRUNK: Received 802.1Q BPDU on non trunk GigabitEthernet5/48 VLAN1.

    %SPANTREE-7-BLOCK_PORT_TYPE: Blocking GigabitEthernet5/48 on MST00. Inconsistent

处理过程
正常情况下端口状态应该如下:

Interface              Role Sts     Cost      Prio.Nbr Type

---------------- ---------- --- --------- --------

G5/0/47->s7700根桥连接 Root FWD  200000    128.1    P2p  Bound(RSTP)  

G5/0/48                 Desg BKN  200000    128.3    P2p  *TYPE_Inc       

而测试验证的过程当中还出现如下异常状态:

Interface         Role   Sts      Cost      Prio.Nbr   Type

--------------------- --- --------- -------- ----------------------------------------------------------

G5/0/47            Altn   BLK    200000    128.1    P2p Bound(RSTP)

G5/0/48            Root  FWD   200000     128.3    P2p

    搜索查找思科设备打印UNBLOCK_CONSIST_PORTECV_1Q_NON_TRUNK错误的故障原因,这个提示表示的是该设备在端口g5/0/47或者g5/0/48收到了带TAGSTP报文,但是端口G5/0/47和G5/0/48实际上是ACCESS的端口,这里所指的带TAGSTP报文并不是标准的报文,而正是思科的PVST报文。

    S7700配置的是MSTP,是不可能发带TAGSTP,更不可能发PVST报文;那么可以肯定是两台S7700透传了思科设备的PVST报文,也就是说两台S7700直接或者间接连接了别的思科设备,而思科设备默认是PVST模式。这种情况在我司设备和思科设备的STP对接过程当中经常遇到,建议将所有的思科的设备全部配置成MSTP模式,不要按照它默认模式,并划到一个域内。

3、按照上面的复现组网,各台设备的STP状态如下:

S7700-1:

 dis stp brief                                                      

 MSTID      Port                        Role  STP State     Protection        

   0        GigabitEthernet3/0/1        DESI  FORWARDING    NONE              

   0        GigabitEthernet3/0/3        DESI  FORWARDING    NONE  

S7700-2

dis stp brief

 MSTID      Port                       Role   STP State         Protection

   0        GigabitEthernet3/0/1       ROOT   FORWARDING    NONE

   0        GigabitEthernet3/0/3       DESI    DISCARDING      NONE 

C4506:

Interface        Role Sts Cost      Prio.Nbr Type                              

---------------- ---- --- --------- -------- --------------------------------  

G5/0/47            Root FWD 200000    128.1    P2p Bound(RSTP)                   

G5/0/48            Desg BKN*200000    128.3    P2p *TYPE_Inc 

 

这个时候根桥7706-1设备上的和C4506的互联端口GigabitEthernet3/0/3是指定端口,为转发状态。这时C4506上不停打印:

00:26:38: %SPANTREE-2-UNBLOCK_CONSIST_PORT: Unblocking GigabitEthernet5/0/47 on MST00.Port consistency restored.                                                    

00:26:38: %SPANTREE-7-RECV_1Q_NON_TRUNK: Received 802.1Q BPDU on non  GigabitEthernet5/0/47 VLAN10.                                                             

00:26:38: %SPANTREE-7-BLOCK_PORT_TYPE: Blocking GigabitEthernet5/0/47 on MST00. Inconsistent port type.

将打开S7700-1STP报文收发开关打开:

*Apr  8 11:25:17:425 2016  MSTP/7/PKT:Chassis=1-Slot=3;                     

Port471(GigabitEthernet3/0/3) Send Mstp-legacy Packet(Length: 103)           

ProtocolVersionID: 03                                                          

BPDUType         : 02                                                           

(Instance)Flags  : (0)Desi[  AF    ]                                                                                                                           

*Apr  8 11:25:18:777 2016  MSTP/7/PKT:Chassis=1-Slot=9;                     

Port471(GigabitEthernet1/9/0/3) Rcvd Mstp-legacy Packet(Length: 103)           

ProtocolVersionID: 03                                                          

BPDUType   : 02                                                          

(Instance)Flags  : (0)Desi[   FL   ] 

注意:S7700C4506收发都是私有legacy Packet报文格式.

这里发现一个异常情况,C4506上显示的端口g5/0/47是根端口,那么就不应该向S7700-1发送BPDU报文,S7700-1收到C4506发送过来的报文以后,解析发现是从指定端口发送过来的,而C4506上显示的Fa0/1却是根端口。

也就是说C4506ACCESS端口GigabitEthernet5/0/47 收到了PVST报文之后,没发正确切换到根端口状态,端口的状态不稳定,从而导致还会向S7700-1发送BPDU报文。

4、在S7700的端口GigabitEthernet3/0/3配置stp compliance dot1s

[HW-GigabitEthernet1/9/0/3]stp compliance dot1s                               

S7700-1的端口GigabitEthernet3/0/3的状态发生了变化,变成阻塞

[HW-GigabitEthernet3/0/3]di st br                                           

 MSTID      Port                      Role  STP State     Protection        

   0        GigabitEthernet3/0/3       DESI  FORWARDING    NONE              

   0        GigabitEthernet3/0/2       DESI  DISCARDING     NONE  

去掉配置stp compliance dot1s后,立即又恢复转发状态。

在配置stp compliance dot1s后打开调试开关:

[HW-GigabitEthernet3/0/3]                                                   

*Apr  8 11:25:55:822 2016  MSTP/7/PKT:Chassis=1-Slot=3;                     

Port471(GigabitEthernet3/0/3) Send Mstp-dot1s Packet(Length: 102)            

ProtocolVersionID: 03                                                          

BPDUType         : 02                                                          

(Instance)Flags  : (0)Desi[  AF    ]                                                                                                                  *MSTP/7/PKT:Chassis=1-Slot=3;                     

Port471(GigabitEthernet3/0/3) Send Mstp-dot1s Packet(Length: 102)            

ProtocolVersionID: 03                                                          

BPDUType         : 02                                                          

(Instance)Flags  : (0)Desi[        ] 

从上面可以看到S7700-1发送的是dot1s标准格式,而没有看到C4506持续发报文;思科设备始终是发送legacy私有报文格式,现在S7700-1强制发送dot1s标准格式后,思科设备并没有自动切换dot1s标准格式的功能(目前在C4506上没有找到可以设置发送dot1s标准格式报文的命令,其余设备再确认),思科设备还是继续发送legacy私有格式报文。 思科设备收到我司dot1s标准格式报文后,不能对接没有继续发。

而我司设备提供了MSTP报文格式不兼容保护功能:在MSTP模式下,当端口上配置的收发MSTP报文格式不是auto时,如果端口收到了与所配格式不符的报文,该端口将成为指定端口,其状态将保持在Discarding,以防止出现环路。现在我们在端口配置stp compliance dot1s,而收到思科的私有报文格式,将会不匹配而阻塞端口。

而我司的设备的端口默认都是auto,收到dot1s标准格式报文后,该端口自动切换到发送dot1s标准格式报文;收到legacy私有报文(通常指定是思科设备),会自动切换到发送legacy私有报文。

跟不支持发送dot1s标准格式报文思科设备对接,只需要配置摘要即可。

建议与总结

    S7700配置的是MSTP,是不可能发带TAGSTP,更不可能发PVST报文;那么可以肯定是两台S7700透传了思科设备的PVST报文,也就是说两台S7700直接或者间接连接了别的思科设备,而思科设备默认是PVST模式。这种情况在我司设备和思科设备的STP对接过程当中经常遇到,建议将所有的思科的设备全部配置成MSTP模式,不要按照它默认模式,并划到一个域内。


   看到S7700-1发送的是dot1s标准格式,而没有看到C4506持续发报文;思科设备始终是发送legacy私有报文格式,现在S7700-1强制发送dot1s标准格式后,思科设备并没有自动切换dot1s标准格式的功能(目前在C4506上没有找到可以设置发送dot1s标准格式报文的命令,其余设备再确认),思科设备还是继续发送legacy私有格式报文。 思科设备收到我司dot1s标准格式报文后,不能对接没有继续发。

而我司设备提供了MSTP报文格式不兼容保护功能:在MSTP模式下,当端口上配置的收发MSTP报文格式不是auto时,如果端口收到了与所配格式不符的报文,该端口将成为指定端口,其状态将保持在Discarding,以防止出现环路。现在我们在端口配置stp compliance dot1s,而收到思科的私有报文格式,将会不匹配而阻塞端口。

而我司的设备的端口默认都是auto,收到dot1s标准格式报文后,该端口自动切换到发送dot1s标准格式报文;收到legacy私有报文(通常指定是思科设备),会自动切换到发送legacy私有报文。

跟不支持发送dot1s标准格式报文思科设备对接,只需要配置摘要即可。

END