STP协议
STP的弊端:
1,通过计时器超时机制来收敛,收敛慢,直接故障30s,间接故障50s
2,故障反馈机制较慢,通过逐跳转发TCN到根桥,在由根桥去通知全网交换机进行MAC地址表刷新
3,端口状态定义和端口角色之间模糊不清
交换环路的危害,广播风暴,MAC地址表震荡,重复数据帧的接收
MAC地址表震荡:
当收到报文的源MAC在其他接口已经有了MAC地址表项,会刷新上一条表项。表项彼此被删除
STP运作原则:
1,选择唯一根桥
2,每台交换机自身选择前往根桥开销最小的根端口
3,所有相连端口选择一个指定端口
4,阻塞在之前的选举中都落选的接口
根桥选举:比较根网桥ID,数值越小越优先,
桥ID由优先级和MAC地址组成,桥优先级默认为32768,如果一台交换机接收到一个比自己的桥ID大的BPDU,
则自己更优,会继续以2s为周期向外发送BPDU
根端口选举:比较去往根桥的开销——比较我接口上接收到的桥ID——比较端口上连交换机的端口ID——自己的端口ID
指定端口选举:链路开销——非根网桥ID(自身的BID)——端口ID(自身的PID)
运行STP的交换机都有一个端口ID,端口ID由端口优先级 和端口号组成,端口优先级的取值范围为0到240,取值必须为16的整数倍,默认为128
STP协议一共两种BPDU
1,配置BPDU
2,TCN BPDU
flages:
TCA bit 拓扑改变确认
TC bit 拓扑改变
message age : BPDU存活时间,根桥发送是为0,每经过一台交换机+1
max age : 默认是20s,BPDU最大存活时间,当message age 等于 max age,则认为该BPDU失效
hello timer : 默认是2s,BPDU发送间隔
forward delay : 默认15s,端口在监听状态和学习状态分别需要等待的时间
非根桥的计时器与根桥同步,配置计时器只需配置根桥
STP的端口角色:
RP根端口
DP指定端口
block的端口,华为STP定义为AP端口
标准的STP协议端口角色只有两种,STP协议将Block状态的端口引用RSTP协议的AP代替角色端口来定义
STP端口开销由三种定义
学习状态和监听状态都接收和转发BPDU
当根桥故障后,非根桥交换机在等待一个根桥的BPDU存活最大时间20s后重新开始选举根桥。如何在经历一个状态迁移时间,30s,需要50s完成收敛
直连链路故障后
1,存在AP的端口的交换机出现RP的直连故障后,AP成为新的RP,在经历两倍的转发延时后恢复转发状态,等待30s
2,不存在AP端口的交换机出现RP的直连故障后,该交换机会以自己为根发送BPDU,下游的交换机等待20s老化,
才处理该BPDU,当下游端口确定为DP时,经历两倍的转发延时进入转发状态,总计50s恢复故障
RP恢复到frowdring状态后,并有一个指定端口在转发状态,此RP也会发TCNBPDU
STP协议最早认为任何端口进入到forwading状态或者进入到disable状态时,认为STP拓扑发送变化,后来STP拓扑发生变化的定义做出了优化:
1,当DP端口进入到forwading状态认为拓扑发生了变化,连接终端设备的DP端口设置为边缘端口进行优化。
2,RP失效或者RP进入到forwarding状态
3,非根桥DP端口失效不认为拓扑发生变化
4,根桥的DP失效直接发送TC BPDU
@ STP协议当接口 down 或者 up 并过渡到forwarding状态,会发生TCN BPDU,由根端口向上游转发
并逐跳传给根桥,上游向下游发送TCA=1,TC=1 的配置BPDU,TCA,用于确认TCN,并将TCN逐跳传给根桥
@ 根桥在接收到TCN的端口回送一个TCA=1,TC=1的配置BPDU,TCA BPDU, 用于确认TCN,并通知网络拓扑发生变化,向所有端口发送TC BPDU
一直发送35s
STP的BPDU类型4种:
配置BPDU : TCA=0,TC=0
拓扑改变确认BPDU: TCA=1,TC=0
拓扑改变配置BPDU : TCA=1,TC=1 或者是 TCA=0,TC=1
拓扑改变通知: TCN BPDU
stp pathcost-standard //配置STP路径开销
STP协议为什么收敛慢?
端口角色计算其实非常快,比如当AP被计算为RP或者DP时,这个选举过程是非常快的,但为什么要等待30s?
监听状态15s,为了防止临时环路,让BPDU有足够的时间传递到全网,防止STP收敛过程中新的AP端口还没有被计算出来,
而其他端口都处于转发状态而导致的临时环路
学习状态15s,在STP收敛过程中存在MAC地址提前老化,为了避免大量未知MAC地址单播帧被泛洪转发,设计一段MAC学习时间,避免泛洪过多
所以STP协议为了避免环路和泛洪,被动等待计时器超时机制收敛,收敛慢
RSTP(快速生成树协议)
通过端口角色的增补,简化了生成树协议的理解与部署
RSTP端口角色,新增了Backup端口和边缘端口
P/A协商机制: 交换机的一个端口为DP时,并处于Discarding状态时,向外发送P置位的BPDU
1,初始状态时,每台交换机都认为自己是根桥,端口角色默认为DP,端口状态为Disabled。向外发送P置位的BPDU
SWB接收到该P置位的BPDU后,通过对比BPDU中的参数信息,知道SWB的优先级比对方低成为非根桥,
端口角色为RP则触发同步变量机制(将除边缘端口外的所有端口阻塞等待30s,防止暂时环路)
SWB向对端发送一个A置位的BPDU,进行确认。SWA收到确认后将该端口立即变为forwarding状态,该过程1s即可完成
2,如果接收到P/A协商的端口为AP,则AP端口无视该协商,发起协商的端口需等待两倍的转发延时30s后进入forwarding状态
状态标志位组合:
0 0 discarding
1 1 forwarding
0 1 learning
端口角色标志位组合:
0 0 保留组合,没有意义
1 1 DP
0 1 BP/AP
1 0 RP
RSTP的改变:
当根端口失效,交换机会立即认为自己是根桥,重置所有端口状态到DR和disable状态,触发P/A协商
1,网络拓扑发生变化时,变更点交换机直接向全网发送TC置位的BPDU,而不是先通知根桥然后由根桥向全网发送BPDU,节省了收敛时间
2,判断拓扑变化唯一标准:一个非边缘端口迁移到转发状态
3,边缘端口:当设置了边缘端口的接口会快速进入到转发状态,边缘端口也会发送BPDU,当边缘端口接收到BPDU会立即变成一个正常端口
边缘端口发生了变化,STP不会发送TCNBPDU,RSTP/MSTP不会发送TCBPDU,保证全网交换机MAC地址的稳定性
SWB的E1为RP,SWC的E2为AP
当SWB的E1链路down掉后:
SWB以自己为根,发送 P ,A 置位的BPDU,以自己为根桥,同时将E2端口变为DP端口,状态为Discarding
SWC的E2是阻塞端口,接收到次优BPDU后,将更好的BPDU转发给SWB,该端口角色变为 DP端口,状态为Discarding,发送P,A 置位的BPDU
SWB接收到SWC的更优BPDU后,回复一个以SWA为根,P置0,A置1 的BPDU,端口角色变为RP,状态为Forwardng
收敛机制:
由于拓扑发生了变化,拓扑发生变化的SWB的E1端口的MAC地址表清空,SWB除边缘端口外的所有端口发送TC置位的BPDU,
一旦TC-wait-time(4s)发生超时,则立即停止发送TCBPDU
其他收到TCBPDU报文的接口 清空除接收到TCBPCU报文和边缘端口外的所有接口清空MAC地址,同时向外发送 RST BPDU,TC置位
SWC接收到 RST BPDU 后,会清空除了收到报文外的其他所有非边缘端口学习到的MAC地址,SWA重复该过程
边缘端口为什么发送BPDU:
1,依然是指定端口
2,如果边缘端口下行网络产生环路,发送BPDU可以预防环路风险
端口保护:设置了端口保护的端口在接收到了bpdu后将端口shutdown,默认不会自动恢复
【SW int-g0/0/0】stp edged-port default //将端口设置为边缘端口
【SW】stp bodu-protection //在系统视图下,针对边缘端口,开启端口保护
【SW】error-down auto-recovery cause bpdu-protection interval 50 //端口因端口保护而shutdown,在50s内自动恢复
根保护:启用了Root保护功能的指定端口接收到优先级更高的RSTP BPDU时,端口进入到Discarding状态,不在转发报文
在经过一段时间后两倍的转发延时没有接收到优先级更高的BPDU,端口将自动恢复到转发状态,只能在指定端口上生效
【SW】stp root-protection
TC-BPDU泛洪保护:
启用了防TC-BPDU报文攻击功能后,在单位时间内,RSTP进程在接收处理到TC类型的BPDU次数可配置,默认单位时间2s,处理次数3次
RSTP只会处理阈值内的TC-BPCU,定时器超时后处理超出的TC-BPCU,统一处理一次。 避免频繁删除MAC地址,保护交换机
【SW G0/0/1】 stp tc-restriction enable //开启TC-BPDU保护
多生成树协议
将多个VLAN映射到一个实例instance上
IST : 内部生成树,MST域内实例0的生成树,是特殊的MSTI,只代表vlan1组成的实例0的树
CST : 公共生成树,连接所有MST域的一棵生成树
CIST : 公共和内部生成树,连接所有设备的一棵生成树,由IST和CST共同组成
MSTI : 多生成树实例,每个域内可以存在多棵生成树,每棵生成树与相应的VLAN对应,一个域内可以生成多颗生成树,由管理员创建每棵生成树都称为一个MSTI
SST:运行生成树协议的交换设备只能属于一个生成树,MST域中只有一个交换设备,但构成一个域,只它当初CST内来计算
总根 : CIST实例中桥ID最优的桥
域根 : MST域内的IST和每个MSTI的根桥都是一个域根,IST域根必须是距离总根最近的交换机,IST域根即实例0的根,MSTI域根即管理员配置的实例的根桥
主桥:
是IST Master,是域内距离总根最近的设备,如果总根在MST域中则总根为该域的主桥
新增的端口:
Master端口,非根域上哪些端口可以到总根,是MST域和总根相连所有路径中最短路径上的端口cost,
如果cost比不出来的则比较上联区域的IST域的BID即实例0的
把一个域当成一台交换机,他的BID就是实例0的BID
域边缘端口,域边缘端口是指位于MST域的边缘并连接其他MST域或SST的的端口
ERPC,在CST树的域间开销。IRPC,域内的开销
-------[CIST Global Info][Mode MSTP]-------
CIST Bridge :32768.4c1f-cce3-067c
Config Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC :32768.4c1f-cc1f-6ab1 / 40000 //CIST总根的BID,是域内实例0的BID,域间开销是40000
CIST RegRoot/IRPC :32768.4c1f-cce3-067c / 0 //域根ID,IST的BID充当
CIST RootPortId :128.1 ,
MSTP配置:配置标识MST Configuration Identifer
标识自己所在的区域
被封装在交换机相互发送的BPDU中
1 Byet 协议规定 0x00
32 Byets 区域名称
2 Byets 修订级别
16 Byets MST配置表摘要
如果不配置域名,则会用交换机的MAC地址作域名,在一个域内域名和修订级别必须要一致
STP和RSTP,MSTP三种工作模式原则就是向下兼容
如果MSTP交换机的端口上曾经连接有STP/RSTP交换机,则该端口被迁移到STP/RSTP兼容工作模式
如果STP/RSTP交换机被关机或移走,则该端口无法自动迁移到MSTP模式下工作,此时如果在端口上执行 stp mcheck 操作,
则端口会重新迁移到MSTP模式下工作
MSTP拓扑计算:
CIST和MSTI都是根据优先级向量来计算的