文章目录
- STP
- 冗余交换网络为什么存在广播风暴?
- 广播的危害?
- 交换环路的危害?
- 工作机制
- BPDU
- 什么是最好的bpdu
- BPDU触发机制
- STP选举步骤
- 配置
- 协议分析
- 字段分析
- 开销模式
- 端口状态
- 故障类型
- 根桥故障
- 直连故障
- 间接故障 (链路中间可能有HUB,光路等情况)
- 如何控制端口的选举
- stp协议收敛为什么慢?
STP
注意:华为交换机默认开启MSTP
STP PVID 0 802.1D RSTP PVID 2 802.1W MSTP PVID 3
802.1S VBSTP 华为私有,用于和思科交换机做兼容(老版本交换机并不支持)
冗余交换网络为什么存在广播风暴?
1、交换机转发广播报文的机制是泛洪;
2、以太网帧中没有防环字段,帧在转发时没有TTL-1机制,所以会持续的存在广播环路问题。
广播的危害?
1、消耗交换机性能
2、消耗链路带宽
3、主机收到广播要交给CPU处理,影响主机性能
交换环路的危害?
1、广播风暴
2、MAC地址表震荡
3、重复数据帧的接收
工作机制
1、运行STP协议时,每台交换机认为自己时根桥,发送以自己为根的BPDU
2、交换BPDU后,进行根桥的选举,根桥确定后由根桥周期性(2s)发送以自身为根的BPDU,非根桥不在发送以自己为根的BPDU
BPDU
Bridge Protocol Data Unit:桥接协议数据单元
什么是最好的bpdu
1、ROOT ID最小的BPDU最好;
2、累计RPC之和最小;
3、BID最小;
4、PORT ID 最小
5、自身PORT ID小的
运行STP协议的交换机,出厂携带一个BID,桥标识符,用于标识自身; BID由桥优先级+MAC地址组成
桥优先级的取值范围,华为设备的取值范围为0-61440,取4096的倍数,默认为32768; 根桥ID:描述根桥的BID;
桥ID:描述自身的BID; 根桥ID=桥ID 则认为自身是根桥,根桥ID!=桥ID 则认为交换机不是根桥; PORT
ID:由端口优先级.port号组成; 端口优先级,取值范围0-240,默认值128,取16的倍数
STP协议一共2种BPDU
1、配置BPDU
2、TCN BPDU(拓扑改变通知BPDU)
BPDU触发机制
华为:
STP协议当接口UP/down并过渡到forwarding状态,会发生TCN BPDU
逐跳传给根桥,上游向下游发送TCA=1,TC=1的配置BPDU,用于确认TCN,并将TCN逐跳传给根桥,根桥在接收到TCN的端口上回送一个TCA=1,TC=1的配置BPDU,用于确认TCN,并通知网络拓扑发送变化,配置BPDU,在其它端口上则发送TCA=0,TC=1的配置BPDU
TCN从RP发向根桥
stp协议最早认为任何端口进入到forwarding状态或者进入disable状态时,认为stp拓扑发送变化,后来stp对拓扑发生变化的定义作出了优化:
1、当DP端口进入到forwarding状态认为拓扑发生了变化;
2、RP失效或者RP进入forwarding状态;
3、非根桥DP端口失效不认为拓扑发生变化;
4、根桥的DP失效直接发送TC BPDU。
STP选举步骤
1、选举根桥,根桥不存在根端口(两者互斥)
2、其他交换机为非根桥,在非根桥上选举根端口(RP),非根桥上有且只有一个根端口。
3、在每条链路上选举出一个指定端口(DP),每条链路有且只有一个指定端口(根端口和指定端口不能时同一个端口)
4、即不是根端口,也不是指定端口的端口,就成为阻塞端口。
发送时不累加开销,接收时累加开销
根桥:BID最小的交换机成为根桥。
先比较桥优先级,越小越优,桥优先级相同,则比较MAC地址,越小越优, 根桥可以被抢夺
STP通过交换BPDU(帧),来完成选举以及树的维护
根端口:交换机上接收最好的BPDU,可以假想为在交换机上有一台主机,看其去根交换机最近链路
指定端口:链路上发送最好BPDU的端口,可以假想为在链路上有一台主机,看其去根交换机最近链路
配置
协议分析
stp协议计时器的配置,仅在根桥配置即可。
【SW1】stp timer hello 300
[SW1]stp timer forward-delay 2000 #1、决定了在监听状态和学习状态维持的时间,2、收到TC BPDU后MAC地址的老化时间
[SW1]stp timer max-age 3000
字段分析
flags:
TC bit:拓扑改变
TCA bit:拓扑改变确认
message age :BPDU存活时间,根桥发送时为0.每经过一台交换机+1
max age :BPDU最大存活时间,默认是20s,当message age等于max age,则认为该BPDU失效
hello timer :BPDU发送间隔,默认是2s
forway delay :端口在监听状态和学习状态分别等待的时间,默认是15s
开销模式
stp pathcost-standard 命令修改路径开销标准dot1d-1998 IEEE 802.1D-1998 #IEEE标准,比较老,一般不建议使用dot1t IEEE 802.1T #IEEE标准,新标准,华为默认legacy Legacy #华为私有标准
端口状态
1、禁用状态(disabled):接口被shutdown,端口即不处理和转发BPDU报文,也不转发用户流量
2、阻塞(blocking):接口使能/RP或者DP不在是RP或DP的时候,端口仅仅能接收并处理BPDU报文,但不能转发用户流量;
3、监听(listening):当block成为RP或者DP时,监听时间15s,即转发延时时间,默认15s,端口可以转发BPDU报文,但不转发用户流量;
4、学习(learning):listening经历转发延时后进入learning状态,端口可以根据收到的用户流量构建MAC地址表,但不转发用户流量,增加learning状态时为了防止临时环路
5、转发(forwarding):在learning经历转发延时后进入forwarding,端口即可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进入forwarding状态
故障类型
根桥故障
需要50s时间进入转发状态
直连故障
1、存在AP端口的交换机出现RP的直连故障,AP成为新的RP,在经历2倍的转发延(30s)时后进入转发状态,故障恢复。
2、不存在AP端口的交换机出现RP的直连故障后,该交换机会以自己为根发送BPDU,下游交换机等待20s老化,才处理该BPDU,当下游端口确定时DP时,经历2倍的转发延时进入转发状态,总计50s恢复故障。
间接故障 (链路中间可能有HUB,光路等情况)
1、存在AP端口的交换机出现RP的直连故障,RP的BPDU老化后(20s),AP成为新的RP,在经历2倍的转发延(30s)时后进入转发状态,50s故障恢复。
2、不存在AP端口的交换机出现RP的直连故障后,该交换机会以自己为根发送BPDU,下游交换机等待20s老化,才处理该BPDU,当下游端口确定时DP时,经历2倍的转发延时进入转发状态,总计50s恢复故障。
故障将导致MAC地址表学习到的MAC地址表项错误,由于MAC地址需要300S的老化时间,所以在300s内,无法学习到正确的转发mac地址以及端口,所以有了TC BPDU ,接收到TC BPDU后,交换机会将mac地址表对应端口的老化时间更改为15s(可能时因为端口需要经历listening和learning状态,当15s老化以后,端口状态已经到达listening向learning转变状态,可以更好的让端口在达到forwarding状态后学习到正确的mac地址),到时间后从新开始学习正确的mac地址表项。
mac地址更改为15s的老化时间有效期为35,即在35s内会持续发送TC=1的报文,当35s以后,端口老化时间会恢复为300s
定义为35s时因为交换机可能会学习到新根桥,而老根桥老化时间为20s,另外15s时学习的时间,学习15s时考虑到网络中最好最多有7层拓扑,BPDU的转发时间为2s,所以当有7层网络时,大约15s可以传遍所有拓扑
如何控制端口的选举
1、更改接口的cost值(如果想控制某端口的角色,需要更改本端端口cost值);
2、更改接口的port id值(如果想控制某端口的角色,需要更改对端端口port id值);
stp协议收敛为什么慢?
端口角色的计算实际上非常快,比如当AP被计算为RP或者DP时,这个选举过程时非常快的,但为什么要等待30s?
监听状态15s,为了防止临时环路,让BPDU有足够的时间传递到全网,防止STP收敛过程中新的AP端口还没被计算出来,而其他端口都处于转发状态导致的临时环路;
学习状态15s,在stp收敛过程中存在MAC地址提前老化,为了避免大量未知MAC地址地址的单播帧被泛洪转发,设计一段MAC地址学习时间,避免泛洪过多。
所以stp协议为了避免临时环路和泛洪,被动等待计时器超时机制收敛,收敛慢。