STP生成树协议笔记之(二) : 端口角色选举

STP生成树协议笔记之(二) : 端口角色选举

STP端口角色

STP中定义了三种端口角色:指定端口,根端口和预备端口

指定端口Design):是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口。一般情况下,根桥的每个端口总是指定端口

根端口Root):是非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口

预备端口(Alternate):如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻塞。

Tips:一台交换机有且仅有一个根端口(根桥除外),一条链路有且仅有一个指定端口。

 

STP端口角色选举过程

1、选举一个根桥。

2、每个非根交换机选举一个根端口。

3、每个网段选举一个指定端口。

4、阻塞非根、非指定端口。

这些不同的端口角色是怎样选举出来的,会在下面详细描述

 

根桥选举

STP中根桥的选举依据的是IDBridge ID)STP中的每个交换机都会有一个桥ID(Bridge ID) 。

ID由16位的桥优先级(Bridge Priority)和48位的MAC地址构成。在STP网络中,桥优先级是可以配置的,取值范围是0~65535,默认值为32768。

 

查看桥ID的命令:display stp

如下图所示:此时交换机的桥ID为32768(桥优先级).4c1f-cc93-1da6MAC地址)

 

 

 

根桥选举过程:

1、首先对比桥优先级,桥优先级最高(数值最小的)的设备会被选举为根桥。

2、如果桥优先级相同,则会比较MAC地址,MAC地址越小则越优先

 

交换机启动后就自动开始进行生成树收敛计算。默认情况下,所有交换机启动时都认为自己是根桥,自己的所有端口都为指定端口,这样BPDU报文就可以通过所有端口转发。对端交换机收到BPDU报文后,会比较BPDU中的根桥ID和自己的桥ID。

如果收到的BPDU报文中的桥ID优先级低,接收交换机会继续通告自己的配置BPDU报文给邻居交换机。如果收到的BPDU报文中的桥ID优先级高,则交换机会修改自己的BPDU报文的根桥ID字段,宣告新的根桥。

 

 

根端口选举

非根交换机在选举根端口时依据的先后顺序为该端口的根路径开销、对端BID(Bridge ID)、对端PID(Port ID)和本端PID。

 

根路径开销:交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口发送数据时的开销值,即出端口的开销。STP认为从一个端口接收数据是没有开销的。端口的开销和端口的带宽有关,带宽越高,开销越小。从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有出端口的端口开销总和,即根路径开销RPC(Root Path Cost)。非根桥根据根路径开销来确定到达根桥的最短路径,并生成无环树状网络。根桥的根路径开销是0

缺省情况下,端口开销的默认值为20000。

 

端口ID:运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成。端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍。缺省情况下,端口优先级是128。端口ID(port ID)可以用来确定端口角色。

下图红圈中就是端口ID的一个例子,其指出了该交换机设备的根端口ID为128(端口优先级).15(端口号)

 

 

 

根端口选举过程:

1、首先比较根路径开销,确定非根交换机中哪个端口到根桥的路径开销最少。

2、如果每个端口的根路径开销均相同,则比较对端交换机的桥ID(Bridge ID),桥ID越小越优先

3、如果对端交换机的桥ID相同的情况(如两台设备之间连接了两条或以上的链路),则比较对端交换机上的端口ID(Port ID),端口ID越小越优先

4、如果对端的端口ID(Port ID)相同(极少见情况),则比较本端交换机上的端口ID(Port ID),端口ID越小越优先

 

每个非根桥都要选举一个根端口。根端口是距离根桥最近的端口,这个衡量标准是靠累计根路径开销来判定的,即累计根路径开销最小的端口就是根端口。端口收到一个BPDU报文后,抽取该BPDU报文中累计根路径开销字段的值,加上该端口本身的路径开销即为累计根路径开销。

 

 

 

指定端口选举

在网段上抑制其他端口(无论是本设备的还是其他设备的)发送BPDU报文的,只有自己才能发送BPDU的端口,就是该网段的指定端口。每个网段都应该有一个指定端口,根桥的所有端口都是指定端口(除非根桥在物理上存在环路)。

 

 

指定端口选举过程

1、首先比较累计根路径开销,累计根路径开销最小的端口就是指定端口。

2、如果累计根路径开销相同,则比较端口所在交换机的桥ID,所在桥ID最小的端口被选举为指定端口。

3、如果通过累计根路径开销和所在桥ID选举不出来,则比较端口ID,端口ID最小的被选举为指定端口。

 

网络收敛后,只有指定端口和根端口可以转发数据。其他端口为预备端口,预备端口将被阻塞,不能转发数据,只能够从所连网段的指定交换机接收到BPDU报文,并以此来监视链路的状态。

 

 

通过实验来检验STP端口角色选举

 

 

 

现于华为网络学习软件eNSP中建立拓扑图如上,由于交换机默认使用MSTP(多实例生成树协议),所以这里需要改为使用STP协议(生成树协议)。具体配置方式在以后在详述。

在图中,已经给出了LSW1~LSW4交换机的桥ID(Bridge ID),可以知道四台交换机的桥优先级均相同,都为默认的32768。所有链路的端口开销均相同,为默认的20000。

Step 1 :选举根桥

四台交换机的桥优先级相同,MAC地址最小的是LSW4,则根桥为LSW4

 

Step 2  每台交换机选举根端口

对于LSW4:根桥没有根端口,且根桥上所有端口都为指定端口。

 

对于LSW2:首先对比根路径开销,由图可知路径LSW2-LSW4的开销为20000,路径LSW2-LSW3-LSW4为40000,路径LSW2-LSW1-LSW3-LSW4为60000。则GE0/0/2的端口开销最小,根端口为G0/0/2。

 

对于LSW3:与LSW2相同,根端口为G0/0/3。

 

对于LSW1:由图可知,路径LSW1-LSW2-LSW4和路径LSW1-LSW3-LSW4根路径开销都是相同的,那么就要比较对端交换机的桥ID。

因为LSW3的桥ID比LSW2的桥ID小,则优先级大,可以确定根端口会在端口G0/0/18或G0/0/15中产生。那么接着就要比较对端交换机的端口ID。

因为LSW3上G0/0/18的端口ID为128.18,G0/0/15的端口ID为128.15,那么G0/0/15的端口ID要小,那么其对应在LSW1的对应端口G0/0/15称为了根端口。

 

Step 3:每条链路选举一个指定端口                  

对于LSW2和LSW1之间的链路:由于LSW2距离根桥的根路径开销更小,所以LSW2上的G0/0/10和G0/0/12都是指定端口。

 

对于LSW3和LSW1之间的链路:同理可知LSW3上的G0/0/18和G0/0/15都是指定端口

 

对于LSW2和LSW3之间的链路:首先LSW2和LSW3到根桥LSW4的根路径开销是相同的,那么就要比较本端交换机上的桥ID,可知LSW3的桥ID更小,所以LSW3上的端口G0/0/10是指定端口。

 

Step4:将剩余的端口设为预备端口,预备端口被阻塞

剩余的非根端口且非指定端口,即LSW2上的G0/0/6,LSW1的G0/0/6,G0/0/10和G0/0/8这些端口设为预备端口,所有预备端口均被阻塞,不转发BPDU报文和用户流量。

 

验证:端口角色之间选举完成,如拓扑图中给出。结果可以登录进交换机进行查证

ROOT:根端口  DESI:指定端口  ALTE:预备端口

 

LSW1:

 

 

    

LSW2:

 

 

 

 

LSW3

 

 

 

 

LSW4

                                                                                                                                                                                                                                                                              

Tips:生成树协议在交换机上一般是默认开启的,不经人工干预即可正常工作。但这种自动生成的方案可能导致数据传输的路径并非最优化。因此,可以通过人工设置的方法影响生成树的生成结果。具体的设置方法将会在之后给出。

 

 

端口状态切换

 

 

 

1、端口初始化或使能;

2、端口被选为根端口或指定端口。

3、端口不再是根端口或指定端口。

4、forward delay计时器超时。

5、端口禁用或链路失效。

 

完全收敛时间为30秒

图中所示为STP的端口状态迁移机制,运行STP协议的设备上端口状态有5种:

Forwarding:转发状态。端口既可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进入Forwarding状态。

Learning:学习状态。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路。

Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量。

Blocking:阻塞状态。端口仅仅能接收并处理BPDU,不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态。

Disabled:禁用状态。端口既不处理和转发BPDU报文,也不转发用户流量。

 

 

参考链接:

https://blog.csdn.net/weixin_42859280/article/details/83114161

https://blog.csdn.net/zainwei1766/article/details/41707447

 

 

 

STP协议笔记汇总:

 

STP生成树协议笔记之(一) : 背景和原理

 

https://www.cnblogs.com/zylSec/p/14615481.html

 

STP生成树协议笔记之(二) : 端口角色选举STP

 

https://www.cnblogs.com/zylSec/p/14618328.html

 

STP生成树协议笔记之(三) : 协议报文的抓包解析

 

https://www.cnblogs.com/zylSec/p/14627690.html

 

STP生成树协议笔记之(四) : 协议基础配置

 

https://www.cnblogs.com/zylSec/p/14628274.html

 

posted @ 2021-04-05 14:02  若水一瓢  阅读(9649)  评论(0编辑  收藏  举报