网络工程Routing&Switching —— STP 小白来说说自己了解的内容
Hello~
大家好~ 我这个小白又出现了~ 今天跟大家说一说我们交换网络中的STP生成树协议
首先
还是很感谢大家给我这个小白一个机会来说说STP生成树协议的。
(以下内容均为个人总结,如有不对,请大家指正,谢谢)
文章目录
STP生成树协议的作用
stp通过阻塞端口来消除环路,并实现链路备份
STP实现(选出根端口的过程)
- 选举一个根桥
- 每个非根交换机上选举一个根端口
- 每个网段选举一个指定端口
- 阻塞非根,非指定端口
根桥的选举(根据 桥ID/Bridge ID来选举)
桥ID(BridgeID)又交换机优先级+MAC地址(48位)组成,优先级可以进行手工的配置(0~65535),默认的优先级是32768,优先级数值越低,优先级越高。优先级相同时,比较交换机上最小的MAC地址,MAC地址越小,越优先。
注: 每一台交换机在启动STP时,都认为自己是根桥
如下图,此图中SWA为根桥
根端口的选举
根据该端口的根路径开销,对端的BID(BridgeID),对端PID,本端的PID来进行选举。
根路径开销越小,越优先;对端BID越小越优先;对端PID越小,越优先;本端PID越小,越优先。
PID 由端口优先级+端口ID组成
端口优先级可手动配置,默认为128;端口ID就是端口号
例1
如图,假设每条链路的开销都为1,对于左下角的交换机来说,1号端口和2号端口的跟枯井开销是不一样的,而且很明显1端口的根路径开销更小为1,而2号端口的根路径开销为2。
所以此图中1号端口为根端口
总结:根桥相对的端口一定为根端口
例2
在这个图中,我们可以看到对于交换机C来说,1号端口和2号端口的根路径开销是一样的,那么我们来比较两端口对端交换机的BID,也就是交换机B和交换机C的BID,谁的BID越小,所对应D交换机上的端口就是根端口
例3
在此图中,交换机D上的1端口和2端口根路径开销相同,对端的BID也相同,所以开始比较对端的PID ,比较根桥中A,B两呃呃端口的PID,那个小,所对应的端口就是根端口。
例4
在此图中,交换机B两端口的跟路径开销,对端BID(Root),对端PID(对端交换机,hub不算) 都一样,所以开始比较本端的PID;假如端口优先级都为默认128,那么1端口的端口号小,所以1 端口为根端口
指定端口的选举
(注:根端口是在交换机上进行选举,而指定端口是在网段上进行选举的)
指定端口根据 跟路径开销,BID,PID来进行选举。
例1
三台交换机中。每两台交换机间都是一个网段
AB与AC之间的两个网段中,跟桥上的端口都是指定端口,因为根桥上的端口根路径开销都为0,BC之间的网段,根路径开销相同,那么比较两交换机的BID,谁的BID小,谁的端口为指定端口。
例2
还有一种特别特殊的情况,就是在连接过程中形成了 “自环”
此图中,形成了交换机的自环,根路径开销相同,BID相同,所以比较PID,1端口的PID小,所以1端口为指定端口
最后,阻塞其他端口
网络收敛后,只有指定端口和根端口可以转发数据,其他端口为预备端口,被阻塞我,只能接收BPDU报文(后文介绍)来监视链路状态。
端口状态转换
在STP协议中交换机端口总共有5种状态
- Disable:禁用状态,端口不可用。
- Blocking:阻塞状态,仅能接收BPDU报文,但是不能进行任何转发,是预备端口/阻塞端口的最终状态。
- Listening:侦听状态,可以转发BPDU报文,但是不能转发用户流量。
- Learning:学习状态,可以收到用户流量,可以构建MAC地址表象,不能转发用户流量
- . Forwarding:转发状态,既能转发用户数据,又能转发BPDU报文;只有根端口和指定端口可以处于转发状态,也是根端口和指定端口是最终状态。
从listening状态到learning状态,再到forwarding状态需要经过两个 15s 的forward delay定时器,需等待15s后才可以进入下一状态。
BPDU报文
BPDU报文包含了:桥ID,根路径开销,端口ID,计时器等等。
计时器:HelloTime,MessageAge,MaxAge
BPDU报文可以分为:配置BPDU 和 TCN BPDU
通常情况下我们使用配置BPDU,只有在网络拓扑结构发生改变时才会使用TCN BPDU。
下面我们再来说几个概念:
-
Message Age:配置BPDU在网络中最大生存周期
-
Max Age:配置BPDU在设备中能保存的最大生存周期
(后面会向对两者进行详细说明) -
Hello Time:发送BPDU的周期
-
Fwd delay(Forward delay):端口状态迁移时间
注:
Message Age:从根桥到当前交换机经过的时间,根桥发出时为0,到达一个交换机就+1,用来限制网络拓扑中最大的交换机个数,最大不能超过Max Age,否则该BPDU就会被丢弃,判定为网络直径过大,根桥连接失败。
Max Age:BPDU报文的老化时间(可手动配置,默认时间为20s)
根桥故障
根桥会定期不断发送BPDU报文,如果根桥故障就会停止发送BPDU报文,下游交换机没有收到BPDU报文后会开始等待并开启计时器,等待一个MaxAge时长(默认20s),超时后,非根交换机就会相互发送配置BPDU报文来重新选举新的根桥,被选中的Alternate端口(根桥替代端口)会经过listening,learning,最终到达forwarding状态,所以,根桥故障会导致50s的故障时间(20s+15s+15s=50s)
直连链路故障
当交换机B上的端口出现故障时,因为B与根桥间为直连链路,且故障发生在B上,所以,B马上就会知道有故障发生,B会立即启动预备端口,将预备端口从blocking转为forwarding状态,需要30s时间修复
非直连链路故障
对于交换机B,B不知道HUB上的端口出现故障,所以会等待20s老化时间,没有接收到来自根桥的BPDU报文,判定故障,B开始对外发送配置BPDU,请求重新选举根桥。交换机C同时可以收到来自A和B的BPDU报文,很明显,交换机C不会理会交换机B,因为根桥A的BPDU报文优先级一定高于交换机B;但是C收到了来自B的BPDU报文,证明在B的上游链路中发生了故障,所以此时C会将它的预备端口改为forwarding状态,需要30s,所以整个过程需要20s+30s=50s 的时间。
拓扑改变导致的MAC地址表错误
当交换机AC间发生故障时,BC间的备份链路会开启,但是原来交换机B学习到的的MAC地址表象中存储的是通过BAC的上方链路,交换机MAC地址表的默认老化时间为300s,所以在300s内交换机B并不知道新的链路和端口,所以MAC地址表会出现错误,很显然这是不可以的。所以,我们引入TCN BPDU报文(前文提到过)来解决此问题。
当出现拓扑变化时,出现拓扑变化的交换机C会向上游发送TCN BPDU报文,不能直接到达根桥就会通过非根交换机进行传达TCN报文。交换机B收到TCN报文后,回复交换机C一个TCA确认报文,确认收到TCN报文信息,之后,将TCN报文转发给根桥A,根桥收到后会向下游回复一个TC报文,并经过交换机B转发给交换机C,下游所有收到TC报文的交换机会将自己MAC地址表象的老化时间从300s,转为15s。(华为的交换设备会直接变成0秒,立刻开始学习,更改新的MAC地址表象)
好了,
以上就是小白给大家分享的关于交换网络的STP生成树协议的内容
重点
(希望大家可以指出内容中的不足与错误,给小白一点建议和改进的机会。如果有错误,请私信,或评论我指出,我会立即改正,同时也请大家多多担待。感谢大家,小白一定会更加努力的。我们再会,祝大家都有一个好心情。)