二层环路导致的问题
1、广播风暴,交换机转发BUM报文的机制导致,数据帧没有防环机制。
BUM报文是指(B: boradcast、U:未知DMAC单播帧、M:组播)
2、 mac地址表震荡,生成错误MAC地址表项, 导致转发出现错误
3、重复数据帧接收,如果存在大量的广播帧,导致网络性能下降甚至是不可用,终端设备也会消耗大量CPU资源处理广播。
STP协议的所有角色都是通过比较BPDU的参数选举出来的。
STP定义每个交换机都有一个BID来标识自己。
BID=pri+mac
pri默认值32768
pri取值有2种标准
1、0-65535
2、0-61440 华为采用0-61440,但pri取 值必须是4096倍数。
ROOT桥:发送最好BPDU的交换机。
RP(根端口) :非根桥上接收最好BPDU的端口
DP(指定端口):链路.上发送最好BPDU的端口
AP(备用端口):即不是RP也不是DP的端口,被block。
DP端口要么对着RP,要么对着AP;RP的对端一定是DP。
什么是最好的BPDU?
BPDU中4个选举参数
RID:当前根桥的BID
RPC:对于根桥来说RPC永远等于0,对于非根桥来说RPC是自己根端口到根桥的路径开销之和。
BID:发送BPDU设备的BID
PID:由端口优先级+端口id组成,优先级的取值为0-240,默认值128,取16的倍数。
最好BPDu的选举机制:
1、比较RID ,RID越小越优
2、如果RID相同,则比较RPc路径和,越小越优
3、如果RPC路径和相同,则比较BID,越小越优
4、如果BID相同,则比较PID,越小越优
5、如果PID相同,则比较自身PID (特殊场景下,比如接个HUB)
非根桥根据根端口的配置消息计算DP端口的配置消息。
STP算法实现的基本过程
-
初始状态
由于每个桥都认为自己是根桥,所以在每个端口所发出的BPDU中,根桥字段都是用各自的BID,Root Path Cost字段是累计的到根桥的开销,发送者BID是自己的BID,端口PID是发送该BPDU端口的端口ID。
-
选择根桥
网络初始化时,网络中所有的STP设备都认为自己是“根桥”,根桥ID为自身的设备ID。通过交换配置消息,设备之间比较根桥ID,网络中根桥ID最小的设备被选为根桥。
-
选择根端口和指定端口
-
根端口和指定端口的选择过程如表1所示。
表1 根端口和指定端口的选择过程 步骤
过程
1
非根桥设备将接收最优配置消息(最优配置消息的选择过程如表2所示)的那个端口定为根端口
2
设备根据根端口的配置消息和根端口的路径开销,为每个端口计算一个指定端口配置消息:
- 根桥ID替换为根端口的配置消息的根桥ID;
- 根路径开销替换为根端口配置消息的根路径开销加上根端口对应的路径开销;
- 发送者BID替换为自身设备的ID;
- 发送端口PID替换为自身端口ID。
3
设备将计算出的配置消息与角色待定端口自己的配置消息进行比较:
- 如果计算出的配置消息更优,则该端口被确定为指定端口,其配置消息也被计算出的配置消息替换,并周期性地向外发送;
- 如果该端口自己的配置消息更优,则不更新该端口的配置消息并将该端口阻塞。该端口将不再转发数据,且只接收不发送配置消息。
表2 最优配置消息的选择过程 步骤
过程
1
每个端口将收到的配置消息与自己的配置消息进行比较:
- 如果收到的配置消息优先级较低,则将其直接丢弃,对自己的配置消息不进行任何处理;
- 如果收到的配置消息优先级较高,则用该配置消息的内容将自己配置消息的内容替换掉;
- 如果收到的配置消息和自己的一样,则将其直接丢弃。