小何要努力

小何要努力

STP--->STP生成树协议讲解

16
2023-11-21

STP--->STP生成树协议讲解

STP的基本概念

STP是运行在交换机上的二层破环协议,提高局域网的可靠性的同时又能避免环路带来的各种问题。

为什么会产生二层环路?

因为以太网帧中没有用于防环的字段

二层环路带来的风险

①环路会引起广播风暴,会极大的消耗链路的带宽和资源

②环路会导致MAC地址表的震荡

STP端口角色的选举

BID和PID、路径开销、根路径开销的概念

  • BID - Bridge ID(用于在STP中唯一标识一个交换机)

BID=桥优先级+桥MAC地址

桥优先级取值范围:0 ~ 65535 (32768缺省)

  • PID - Port ID(用于在STP中唯一标识一个交换机上的端口)

PID=端口优先级+端口编号

端口优先级取值范围:0 ~ 255

  • Path Cost(用于衡量桥与桥之间路径的优劣)

  • Root path Cost(用来确定到达根桥的最短路径)

根路径开销是该交换机到根桥的路径上所有路径开销之和

STP选举过程

①根桥的选举

 BID最小的成为根桥(先比较优先级,再比较MAC,都是越小越优先)

②根端口的选举

选举根端口时,依据该端口的根路径开销 > 对端BID > 对端PID > 本端PID

③指定端口的选举

选举指定端口时,(1)比较 从该端口发出的根路径开销

此时B的g0口和C的g1口发出的根路径开销如图所计算

(2)比较本端的BID,越小越优先

(3)比较本段的PID,越小越优先

④阻塞端口的选举

未选举为根端口和指定端口的端口--->为阻塞端口

STP的五种端口状态

Disabled 禁用状态

不接受不发送STP BPDU报文

端口为shutdown

Blocking 阻塞状态

只接受STP,不发送STP,不学习MAC,不转发用户数据

端口启用STP,还没被选为根端口或指定端口;或者端口为AP端口也会为此状态

Listening 聆听状态

接受、转发STP,不学习MAC,不转发用户数据

端口被选为根端口或指定端口

Learning 学习状态

接受、转发STP,学习MAC,不转发用户数据

端口 Forward delay计时器超时

Forwarding 转发状态

接受、转发STP,学习MAC,转发用户数

阻塞 → 聆听 0s~20s时间

聆听 → 学习 15s时间

学习 → 转发 15s时间

所以,STP从开启到转发,最少需要30s,最大需要50s

STP拓扑变化

1、根桥故障

根桥故障之后,其他交换机不再收到根桥发来的BPDU,交换机则会等待一个max age的20s时间,重新进行根桥的选举,端口状态会经过两个Forward Delay时间15s+15s变成正常状态

补充:

1.SW1作为根桥,当sw1突然断电的时候,SW2和SW3会立即重新重新选举根桥,不会等待max age time

2.当SW1关闭stp发送功能时,SW2和SW3会等待max age time后在选举根桥

2、直连链路故障

sw1的直连链路故障之后,sw1的g1口检测到g2口故障之后,会立马切换成根端口,经过两个forward delay时间15s+15s变成forwarding状态,链路恢复正常

3、非直连链路故障

sw2的g2口发生故障后,sw1是无感知的,sw1的g1口理论上会经过(阻塞端口会收到次优的BPDU报文后,会等待20s之后才会转换状态)20s最大老化时间后,转换成指定端口,再过15s+15s之后从listening状态转换成forwarding状态

4、拓扑变化导致MAC表项错误

链路未切换之前,SWB从1口学到主机B的mac地址,从3口学到主机A的mac地址

链路切换之后,SWB的mac地址表未更新,数据仍然从1口发送给交换机SWA,导致数据传输失败,主机A无法与主机B通信(此时应该从2口学到mac地址)

检测到拓扑改变的交换机SWC通过根端口向根桥发送TCN,上游交换机SWB收到TCN后回应TCA,让后下游交换机停止发送TCN,再通过自己的根端口发送TCN知道根桥收到,根桥通过指定端口发送TC通知下游所有交换机把MAC地址表记录老化时间从300s变为15s

通过修改开销或者PID参数来修改不同交换机的端口状态:

1、修改开销

PC1和PC2需要互访,但是最近的路径sw1和sw2的链路被阻塞,需要去修改sw1的g1口开销,使g0口角色变为RP

2、修改对端PID(因为根端口选举流程是 根路径开销-->对端BID-->对端PID(端口优先级+端口序列号)-->本端PID)