STP--->STP生成树协议讲解
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)
- 11
- 0
-
分享