I follow the whitepaper of Huawei for MSTP and adjust the configuration according to it.
1. Enable digest snooping on the interface that is directly connected to Cisco/non-Huawei system, in order to solve the BPDU keys inconsistency.
If Huawei and non-Huawei devices have the same region name, revision level, and VLAN mapping table but different BPDU keys, the stp config-digest-snoop command can be used to enable the Huawei and non-Huawei devices to exchange BPDUs.
# Enable digest snooping on 10GE1/0/1.
< HUAWEI> system-view
[~HUAWEI] interface 10ge 1/0/1
[~HUAWEI-10GE1/0/1] stp config-digest-snoop
2. On Cisco C4500/C3750/3560/ME3400 SW default road-cost algorithm is short, corresponding Huawei is 802.1d-1998. However Huawei device default way is 802.1t, corresponding Cisco long algorithm. Different algorithm can explain why there are 2 different RBs in the MSTP network.
# Use the IEEE 802.1d-1998 to calculate the path cost.
< HUAWEI> system-view
[~HUAWEI] stp pathcost-standard dot1d-1998
3. Disable Proposal/Agreement mechanism. Huawei devices and non-Huawei devices may fail to communicate with each other, because they have different Proposal/Agreement mechanisms.
# Configure the common fast transition mechanism for the interface that connects to non-Huawei device.
< HUAWEI> system-view
[~HUAWEI] interface 10ge 1/0/1
[~HUAWEI-10GE1/0/1] stp no-agreement-check
By default, the enhanced transition mechanism is configured on an interface.
After we modify the configuration accordingly the problem was not resolved. So we need to do further troubleshooting.
By checking the interface status on Cisco side we find out the switch sees the interface connecting to Huawei as an PVST port instead of MSTP. So most probably Cisco device is receiving PVST+ BPDU from downstream network via Po104. This will trigger the PVST simulation component of MSTP that will transform the port into a PVST port.
Po104 Desg FWD 500 128.2418 P2p Bound(PVST)
Since Po104 is working as PVST interface, it will send STP BPDUs to Huawei CloudEngine device, and not MSTP . We can see this from debugging that the BPDUs system’s received is having BPDU type = 00, which is STP BPDU.
2016-08-10 14:17.373+08:00 PER2-CE6810-MI-SER %%01MSTP/7/MSTP_DEBUG_PACKET(d):CID=0x80542723;
Port64 Rcvd Packet(Length: 43)
ProtocolVersionID : 00
BPDUType : 00
Flags : 00
Root Identifier : 24576.38ed-1866-7700
Root Path Cost : 0
Bridge Identifier : 28672.38ed-1866-4c00
Port Identifier : 128.2418
Message Age : 0
Max Age : 20
Hello Time : 2
Forward Delay : 15
Therefore the port status mode on Cloudengine is STP, instead of MSTP.
CIST Port Information:
Port Id :64
Port Name :Eth-Trunk104
Port State :Forwarding
Port Protocol :Enabled
---- More ----[16D [16D Port Role :Root Port
Port Priority :128
Port Cost(Dot1D) :Config=auto / Active=1
Designated Bridge/Port :28672.38ed-1866-4c00 / 128.2418
Port Edged :Config=default / Active=disabled
Point-to-point :Config=auto / Active=true
Transit Limit :6 packets/s
Protection Type :None
Config-digest-snoop :Snooped=true
Port STP Mode :STP
Port Protocol Type :Config=auto / Active=dot1s
BPDU Encapsulation :Config=stp / Active=stp
PortTimes :Hello 2s MaxAge 20s FwDly 15s RemHop 0
1.