STP详细笔记
脑图
一、由于二层网络冗余带来环路存在以下三个问题:
1、广播风暴。由于交换机转发BUM报文机制导致的;数据帧没有防环机制,导致环路无法消除。
B:boradcast
U:未知MAC单播帧
M:组播
以下拓扑没有运行生成树协议。CE1的5口收到PC1的广播,会把数据帧从CE1的1口和2口泛洪出去, CE2收到后又从3口4口泛洪回去,形成了广播风暴。转发的时候是根据目的MAC转发的,数据帧本身没有防环机制。
2、MAC地址表震荡
生成错误的MAC地址表项,导致转发出现错误。
在同一个交换机的同一个Vlan的不同的端口上不能学习到同一个MAC地址。
MAC地址震荡:交换机转发数据帧需要学习数据帧的源MAC。当5口收到PC1的数据帧,将学习到PC1的MAC地址,
由于广播风暴2口也会学习到PC1的数据帧,反向1口一样。交换机学习MAC的机制是接口后学习到的MAC地址会把之前学习到的MAC地址覆盖掉。
某一时刻,PC2需要访问PC1。由于广播风暴的原因,PC1的MAC在CE1的2口学习到,而不是5口转发出去,导致转发错误。
3、重复数据帧的拷贝
如果存在大量的广播帧,导致网络性能下降甚至不可用,终端设备也会消耗大量的CPU资源处理广播。
当CE1的5口收到广播数据帧,会从1口和2口泛洪出去,CE2的3口收到后又会从6口和4口泛洪出去,4口同理,从而会导致大量的数据帧拷贝,对应PC来说,收到广播后,需要进一步处理,才会决定这个数据帧会不会处理,从而耗费CPU。
生成树通过逻辑的阻塞一个端口打破环路。
二、STP选举规则
在一个广播域中有且仅有一个根桥。
STP选举规则:
- 选举一个根桥;
- 每个非根交换机选举一个根端口
- 每一条链路选举一个指定端口
- 阻塞非根和非指定端口。AP(备份端口,华为特有。普通的为BP端口)端口。
STP协议的所有角色都是通过BPDU的参数来选举的。
STP定义每个交换机都有一个BID来标识自己。
BID=优先级+MAC
优先级取值范围:
优先级默认值32768
1、0-65535
2、0-61440华为采用0-61440,但是优先级取值必须是4096的倍数。
端口角色:
ROOT桥:发送最优的BPDU。
RP(根端口):非根桥接收最优BPDU的端口。
DP(指定端口):链路上发送最优BPDU的端口。
AP(备用端口):既不是RP也不是DP,被阻塞。
什么是最优的BPDU?
- 比较RID越小越优。
- 如果RID相同,则比较RPC路径和,越小越优。
- 如果RPC路径相同,则比较BID,越小越优。
- 如果PID相同,则比较自身PID(特殊场景)
BPDU中4个选举参数:
RID:根桥的BID。
RPC:对于根桥来说RPC永远等于0;
对于非根桥来说RPC是自己到根桥的路径开销之和。
BID:交换机自身的BID;
PID:由端口优先级+端口ID组成优先级的取值为0-240,默认128,只能取16的倍数。报文中用16进制表示。
选举算法:
- rootID最小为根桥。
- 非根桥收到最优BPDU的端口是RP.
- 根据RP计算DP的BPDU参数,如果比指定端口本身的BPDU参数优,则该端口为DP端口,如果没有比指定端口本身的BPDU优,则为AP。
在稳定的STP网络中端口状态有两种:discasrding(AP),forwarding(RP、DP)
开销标准有三种:dot1d-1998;dot1t;legacy;
STP的五种状态:Forwarding、Learning、Listening、Blocking、Disable。
STP故障:
RP失效,存在AP时,网络需要30S恢复连接。
RP失效,不存在AP时,网络需要50S恢复连接
ROOT失效,重新选举根桥,网络需要50S恢复连接。
三、STP协议对于MAC地址表刷新机制:
主机A和主机B正常互访路径为SB—>SA—>SC,交换机会学习数据帧的源MAC地址,SB的3口会学习到主机A 的MAC地址,SB的1口会学习主机B的MAC地址;SC的2口会学习主机B的MAC地址,1口会学习主机A的MAC地址。SA的2口会学习主机B的MAC地址,1口会学习到主机A的MAC地址。
当SC的一口down掉后,C1口和A2口的MAC地址会被清除,生成树的收敛最长50S就会完成,而MAC地址表老化时间为300S,就会出现SB发往主机B的数据帧,会从1口转发出去,导致传输故障。
当交换机收到TC BPDU后将自身所有接口(EP端口除外)的MAC地址表的老化时间强制设置为15S.
TC BPDU会持续由根桥发送35S时间
注:边缘端口标准的STP不支持的,但是华为的STP协议支持边缘端口设置。
何时STP算拓扑发生变化?
STP协议最早从任何端口进入到forwading状态或进入disable状态时,认为STP拓扑发生变化。
STP对拓扑发生变化的定义做出了优化:1、当端口进入到forading状态认为拓扑发生变化,DP端口进入disable状态不认为拓扑发生变化。2、RP失效会认为拓扑发生变化。3、DP端口失效不认为拓扑发生变化。
TC置位的BPDU,会导致不停的泛洪,影响MAC地址的稳定,严重影响网络性能。
边缘端口可以减少上网的等待时间和避免不必要TC发送。
华为 VBST 实现和友商pvstp兼容。
标准STP由根桥发送配置BPDU,非根桥不能主动发送。华为的STP根桥发送BPDU,非根桥也可以主动发送;收到次级BPDU立即老化,支持EP端口。
转发延时:决定了监听状态和学习状态所需的时间;
收到TC BPDU后MAC地址老化时间。
修改计时器只需要在STP根桥上修改。
为什么在监听和学习状态需要forward delay的等待时间?
侦听状态:
如图S6的优先级为4096,它为根桥。我们将S4的优先级改为0,S4以自己为根发送BPDU可以很快的让S5的1口由AP变为RP,如果不需要等待30S的延时,就进入forward状态,新的AP端口还没选举出来,会产生瞬时的环路。在STP选举过程中如果BPDU没有传递到整个网络,传递过程中部分路径过早的进入转发状态,就会产生临时网路。每两秒发送一次,15秒的延时可以在直径7台SW的网络中传播。让BPDU有足够时间在整个网络传播。
学习状态:
学习数据帧的源MAC地址,监听状态期间,MAC地址表受TC BPDU的影响,会进行提前老化,清除错误的MAC地址信息,导致错误的MAC地址老化也导致闲置MAC地址老化,如果此时要转发数据帧,就会导致大量目的MAC的未知单播帧的泛洪,影响网络性能,那么我们继续牺牲15S收敛时间,设计出学习状态能让交换机在此期间重新构建正确的MAC表项,减少单播帧在STP收敛期间导致的泛洪行为。
STP收敛完全是基于计时器完成的,收敛速度慢,为了解决临时环路和收敛期间的单播泛洪,需要等待30S。
STP是单生成树,在存在多个VLAN时,所有VLAN共享一棵树,导致链路利用率不高,访问路径存在次优。不合适的trunk配置导致部分vlan不通。
RSTP
RSTP相对于STP做了哪些改进?
1、配置BPDU的处理发生了变化;
拓扑稳定后BPDU的发送方式,根桥按照Hello Time规定时间间隔发送配置BPDU。非根桥只有收到上游发送的配置BPDU,才会出发发出配置BPDU,这样让STP计算复杂缓慢。RSTP对此进行改进,无论非根桥是否接受到根桥发送的BPDU,非根桥仍然按照Hello Time规定的时间发送配置BPDU,此行为完全由每台设备自主决定。
2、更短的BPDU超时计时
如果一个端口超时时间(Hello Time*3*Time Factor[时间因子;默认3S])内没有收到上游设备发送过来的配置BPDU,那么该设备认为和此邻居协商失败,不像STP那样需要等待一个Max Age。
3、处理次优BPDU
当一个端口收到上游桥发送的配置BPDU,该端口会将自身存储的BPDU与收到的BPDU进行比较。
如果该端口的BPDU优于收到的BPDU,那么该端口会直接丢弃收到的BPDU,立即回复自身存储的RST BPDU,上游设备收到BPDU后会立即更新自身存储的BPDU。
快速收敛Proposal/Agreement机制
作用:P/A是在点到点全双工的链路上让DP和RP快速进入转发状态,同时不会产生临时环路。
条件:DP端口处于discarding状态;点到点全双工链路;DP端口的对端为RP端口;
过程:DP端口处于discarding状态时,发送(P=1,A=1)的BPDU报文;
RP收到DP的(P=1,A=1)的BPDU后,会进行同步置位。 同步置位:discarding所有非边缘端口;AP端口由于不会引入额外的环路,默认认为已经同步置位。
同步置位完成后,RP发送(P=0 A=1BPDU)并将端口置为转发状态。
上游DP收到RP的(P=0,A=1)BPDU后,认为下游的RP已经处于无环拓扑并转发状态,于是自己将端口状态立即过渡到转发。