华为实现中:STP运行机制实例分析一

华为实现中:STP运行机制实例分析一_第1张图片

如图所示有三台交换机,从SW1到SW3优先级分别为4096、8192、32768

整个STP运行情况如下:

第一步:根桥选举

假设三台交换机是同步启动的,刚开始的时候,三台交换机都认为自己是根交换机,将自己所有的端口都设置为指定端口,并向外发送配置BPDU,在配置BPDU中起到根桥选举的多元组是{根桥ID、根路径开销、网桥ID、发送端口ID}(如果四元组都一样再看接受端口ID。)

SW1的配置BPDU中的4元组为{4096.4c1f-cc43-24cf、0、4096.4c1f-cc43-24cf 、portID},为了方便,之后用交换机名字代表它的桥ID。SW2、SW3的配置BPDU的四元组分别为{SW2、0、SW2、portID}、{SW3、0、SW3、portID}。

对于SW1,它从G1和G2口会分别受到SW2和SW3发来的BPDU,通过与自己发送的BPDU比较发现,自己两个端口发送的BPDU分别都比从两个端口接受到的BPDU更加优秀,所以SW1忽略收到的配置BPDU并确定自己是根桥,然后按照Hello time从G1和G2这两个指定端口发送自己的配置BPDU。

对于SW2,它从G1和G3端口分别接收到SW1和SW3发送过来的配置BPDU,发现从G1收到的BPDU最优,于是在自己的G1端口用SW1发送过来的配置BPDU替换自己之前的BPDU,从G2口收到的配置BPDU不如自己的优秀,所以忽略。综合比较接收和自己发送的配置BPDU,选出G1为根桥。

对于SW3,它从G2和G3端口分别接收到SW1和SW1发送过来的配置BPDU,发现从两个口端接收到的BPDU都比自己的优秀,于是在G2和G3端口分别用SW1和SW2发送过来的BPDU来替换自己的BPDU(这里的替换是指把端口里缓存的BPDU换掉)。综合比较接收和自己发送的配置BPDU,选出G1为根桥。

第二步:非根桥的根端口选举     

SW2的 G1端口现在缓存的是SW1发送过来的BPDU,G3端口缓存的是自己的BPDU,通过比较两个端口缓存的BPDU优先级可以发现G1缓存的更加优秀,所以G1端口成为SW2的根端口。

SW3的G2端口现在缓存的是SW1发送过来的BPDU,G3端口缓存的是SW2发送过来的BPDU,通过比较这两个端口缓存的BPDU优先级可以发现G2端口缓存的更加优秀,所以G2端口成为SW3的根端口。

第三步:非根桥交换机非根端口的BPDU计算

SW2从G1口接收的BPDU以及现在G1口缓存的BPDU是{SW1,0,SW1,portID},SW2给除了根端口外的其他端口重新计算一份BPDU,SW2的G3端口重新计算的BPDU为{SW1,20000,SW2,portID}。

同理SW3上的G3端口重新计算出的BPDU为{SW1,20000,SW3,portID}。

注意:如果一台非根桥交换机有多个非根端口,则每个端口都要重新计算BPDU,每个端口重新计算的BPDU的根桥ID,根路径开销,网桥ID都一样,不同的是portID。

第四步:选举DP

SW2的G3端口和SW3的G3端口开始相互发送重新计算后的BPDU来选举DP,SW2发送自己G3口缓存的BPDU{SW1,20000,SW2,portID},SW3也发送自己G3缓存的BPDU{SSW1,20000,SW3,portID}由于SW2发送的BPDU更优秀,所以SW2的G3口成为指定端口。

SW2的G3口收到SW3的G3口发送的BPDU时,由于自己缓存的BPDU更优秀,所以它会忽略收到的BPDU;SW3的G3口收到SW2的G3口发送的BPDU时,由于自己缓存的BPDU没有收到的优秀,所以这个时候SW3的G3口会更新自己G3口的BPDU为{SW1,20000,SW2,portID}

第五步:阻塞端口

SW3的G3口现在存储的BPDU是{SW1,20000,SW2,portID},而它从根端口计算得到的BPDU是{SW1,20000,SW3,portID},很明显,从根端口计算得到的BPDU现在没有它自己缓存的BPDU优秀,所以现在SW3的G3口被阻塞。

注意:华为的STP阻塞端口有两种状态:BP和AP;因为SW3缓存的BPDU的桥ID和自己不一样,所以SW3的G3成为AP。(关于AP和BP端口的详细分析见文章“如何决定AP和BP端口”)

小结:华为实现中STP运行分5步骤

1、根桥选举(比较不同交换机发送的BPDU,谁小选谁)

2、非根桥根端口选举(比较本交换不同端口缓存的BPDU,谁小选谁)、

3、非根端口BPDU计算(以根端口缓存的BPDU为原型计算交换机其他端口的BPDU)

4、选举DP(同一网段上BPDU最优的端口成为根端口)

5、阻塞端口(同一网段上除了一个DP端口,其他端口都会被阻塞,和DP端口在同一交换机上则成为BP,和DP不在一个交换机上的端口成为AP)

你可能感兴趣的:(STP)