1、接入交换机接口下配置spanning-tree bpduguard enable是否能防下联傻瓜式设备环路

不能,傻瓜式交换机一般会把BPDU报文给丢弃,从而无法检测环路,如果要防止下联傻瓜式交换机环路,建议开启RLDP功能。

 

2、cisco PVST+是否可以和我们MSTP兼容

二者无法通信。因为pvst使用的私有格式我们无法识别,因此关于bpdu的一些限制操作对pvst报文不起作用。

典型的现象就是bpdufilter无法限制pvst报文,建议统一使用标准MSTP协议。

 

3、交换机开启生成树情况下哪些端口不受生成树协议(stp,rstp,mstp)控制

路由口、配置了bpdu filter的端口、配置了dot1q tunnel的端口。

所谓不受控制的意思是:这些端口是不处理bpdu的,此外,这些端口的状态改变不会影响到网络拓扑计算。

 

4、接口上spanning-tree compatible enable的作用

1)配置接口的兼容性模式,可以使该端口发送BPDU 时根据当前端口的属性有选择的携带不同的MSTI 的信息,以实现与其它产商之间的互连。

2)早期MSTP其他厂商的非标准报文(比如Cisco),携带的Instance信息不完整

3)举个例子来说,用户在cisco上配置了3个实例,但cisco发出的bpdu并不一定会完全携带这三个实例,实例信息要能被发送出去必须被激活,也就是SVI接口up,否则和我司的mstp互连时会导致我们认为cisco的mst在其它域,导致计算错误,instance号,以及对应关系都匹配。

4)而我司实现上报文缺省会发出所有的示例,而不论关联的vlan是否被激活。

5)解决方法是激活所有配置了的vlan,或者在接口上开启spanning-tree compatible enable功能,另外现在我们在和Cisco/H3C对接的时候都要求其采用支持标准MSTP的版本。

 

5、show interface里的drop 项是否统计生成树block口丢弃的数据

1)在生成树计算完成后,一个接口角色被置为block时,他的转发状态是discarding的,这个接口不会学习任何mac地址的信息,交换机也不会往这个接口转发任何数据报文(包括单播,组播,广播);

2)但是对端设备的端口角色一般会是forwarding的,针对广播报文,未知名的组播报文等就会转发到这个接口,这样block的端口,肯定是会丢弃的,同时也会统计到drop的累计值中;

3)所以如果show interface的结果中block属性的端口的drop项很大,并且持续增加的话,那么需要关注该链路上是否有大量的广播,未知名组播报文。

 

6、我司设备和Cisco设备互连时的生成树使用说明

我司设备在市场上部署时经常会遇到和cisco设备混合搭建网络的情况,这时就需要注意一些事情。对于cisco设备,其生成树的默认配置都是pvst。这是cisco实现的一个私有协议,而我司实现的是标准的生成树协议,此时二者是无法正常互联的。这里需要注意的是,pvst即会发标准BPDU,也会发私有pvst报文,这会给用户造成一些判断上的错误,比如某些生成树的实例计算看起来好像是对的,但有些又是错误的,因此一旦我们的设备和cisco交换机混合组网时,优先需要确定的就是网络中所有cisco交换机的生成树配置。

1)如果发现一个二层网络拓扑中有mstp和pvst混用的情况,要求将cisco设备上的生成树修改成mst模式。

2)即使我们将cisco的生成树配置成mst模式,也会遇到一个兼容性问题。Cisco的交换机在IOS12.2(25)SEC版本之前对BPDU里面degest字段的计算采用了私有算法,这样会导致一个问题:即使我司的mstp配置和cisco mst的配置完全一样,二者都会认为对方和自己不在同一个域里面,这就引起计算上的错误,比如有时表现出来的现象就是各自都认为自己是根桥。对这个问题,有一个规避措施就是:将所有设备修改成rstp模式或者是stp模式,这样可以避开mstp的兼容性计算,只不过这样就需要对网络拓扑做一定大改造,因为这是以牺牲mstp的多实例数据分流为代价,比如这种情况下我们就无法搭建双核心拓扑。

3)另外,即使解决了版本问题,cisco的mst模式还有个有效性的概念.。举个例子来说,用户在cisco上配置了3个实例,但cisco发出的bpdu并不一定会完全携带这三个实例,实例信息要能被发送出去必须被激活,否则和我司的mstp互连时会导致我们认为cisco的mst在其它域,导致计算错误。解决办法就是激活实例。Cisco上mst模式下实例激活的条件就是:实例上面映射的vlan必须在设备上存在,并且必须至少有一个端口属于该vlan,同时实例映射的vlan中必须至少有一个端口是up的。举例来说,如果将vlan2映射到实例2,那么我们必须保证vlan在cisco交换机上已经被创建了,并且此时必须有一个up的端口是属于vlan2的,这样设备发出的BPDU里面才会有实例2的信息。因此对于思科设备,在保证模式和域配置相同的同时,还应保证所有Instance确实有效存在,通过show spanning-tree可以验证,若没有相应的Msti信息,就表示该Instance还没有被激活,应该检查配置。保证一个Instance确实存在的条件:存在一个对应的VLAN有效, 这里的有效包括:该VLAN存在,且存在一个端口属于该VLAN。保证与我公司设备相连的端口属于域内配置的所有Instance的某个有效VLAN,最简单而有效的方法是,将这些端口配置为允许所有VLAN的Trunk口。

4)解决了兼容性以及实例激活问题之后,我们还需要注意一个配置问题。在mstp模式下,我们通常是需要配置多个实例,这时我们需要区修改实例-vlan映射关系,有时还需要修改mstp name以及mstp revision。假设有两台交换机A和B,都是mstp模式,初始的时候它们在默认配置下是被认为是同一个域的。这时我们需要增加一个instance 1。于是我们会在A上配置instance 1 vlan <>,然后在B上做同样的配置。但这里有个问题,当我们在A上修改完配置后,此时B的配置还未更新过来,因此这个间隙里面A、B会被认为在不同域,进而引发拓扑振荡,这个问题在网络中有大量设备需要同时升级配置时很容易遇到。对于这个问题,mstp的配置指南里面有写到一个配置建议,就是先关闭生成树协议,等完成所有配置升级后再启动生成树协议,这点在老产品上尤其需要注意,因为RGNOS版本的软件可以进行这种动态切换,但老产品由于实现上的差异,需要静态切换。

5)如果cisco只能采用pvst协商,并且无法修改,那么物理拓扑上有环的情况,只能在我司设备上开启透传bpdu的功能,这样cisco设备自身计算STP,我司不参与,可以实现防环

ruijie(config)#bridge-frame forwarding protocol bpdu

 

7、我司交换机在哪些情况下会产生TC-BPDU报文,由哪些端口产生(如指定端口、根端口)?

      在以下这些情况,会产生TC-BPDU:

        1、根桥切换

        2、根端口切换

        3、有新设备加入STP计数

        4、指派端口UP\DOWN(非边缘端口的指派口)

        自己设备产生的TC,是由根端口发出。至于可以进行TC扩散的端口有根端口(RP)指派口(DP)Master口

这里以根端口切换为例,详细说明TC-BPDU散发过程:

(1)SW1和SW3直连的线路DOWN,导致根端口(RP)变化至和SW2直连的端口;

 

(2)SW1根端口(RP)变化至和SW2直连的端口后,随即从RP口发送个TC-BPDU报文,SW2收到后,从RP口发送至SW3给根桥,根桥收到TC-BPDU后,向所有DP口泛洪。

 

 

 

8、我司交换机在收到TC-BPDU是如何执行清除MAC地址的动作?

收到TC报文后,会清除收到TC的端口外的其他指派口(Designate口)上的MAC地址,Root口、Alter口、Master口、边缘端口都不会有清除MAC的操作。排除TC攻击的情况外,收到TC表示STP拓扑中存在变化或振荡,不一定是本机,也可能是STP拓扑中其它部分。


9、我司设备替换思科核心/汇聚设备时,关闭STP并且开启BPDU透传不参与STP计算后,为何思科之间的STP接口变成BKN状态?

    查看思科官网说明,造成思科2层端口变成BKN状态的4个原因:

1loop guard

2root guard

3PVID冲突 

4、端口类型冲突

根保护:当交换机启用了根保护,而又收到了更优的BPDU(如比自己更低priorityBPDU),此时根保护起作用,会把收到更优BPDU的端口置为BKN,同时产生root inconsistencylog 

 

环路保护:交换机non-designated端口启用环路保护(loop guard),age time内没有收到上游交换机的BPDU,该端口被置为BKN状态,而不是进入LIS-LRN,同时发送loop inconsistencylog 

 

PVID冲突:当两个直连的交换机端口PVID不一致的时候会进入BKN状态,同时发送PVID inconsistencylog。在两个端口上关闭STP,但是这样会造成VLAN泄露的现象,即不同的VLAN不通过三层设备也可互访。

 

端口类型冲突:最简单最好理解的就是一端是access口一端是trunk口,access口一方进入BKN,同时发送port-type inconsistency


10、在替换思科设备过程中全网部署STP,如何过滤PVST+是有报文保证割接的平滑过渡?

     思科PVST+私有协议的目的MAC地址为组播的:0100.0ccc.cccd ,因此只需要配置相应ACL,过滤目的地址为0100.0ccc.cccd 的报文即可,配置方法如下:

专家级ACL

expert access-list extended test-pvst

 5 deny ip any any any host 0100.0ccc.cccd 

 15 permit ip any any any any 

 25 permit arp any any 

 35 permit etype-any any any 

 45 permit 0x86DD any any 

 

MAC-ACL

mac access-list extended deny-pvst

 10 deny any host 0100.0ccc.cccd etype-any 

 20 permit any any etype-any