一、端口状态
802.1W 802.1D
disable
dis black
lis
len len
f f
二、端口角色
802.1W 802.1D
RP RP
DP DP
AP blocking
BP
Edge port
port-id为两个字节=优先级+id
如果1号端口down了,2号端口变成DP需要等待hold time时间 18s,但是状态是discarding之后再P/A
如果C交换机的RP端口down了,3号端口变为RP,时间—>立即
在RSTP中,如果一个端口收不到BPDU,接口的BPDU超时时间=2*3*时间因子(默认3s)
三、link-type
Edge port
P2P 全双工—>两种方式判断1、自己检测,只要不是半双工,就认为是全双工;2、通过命令修改让STP认为是全双工
share(共享)—>半双工和802.1D差不多
四、BPDU的走向
802.1D 802.1W
五、端口角色的改变
802.1D:当B的RP端口链路断开,B收不到A的BPDU会认为自己是根桥,向C发自己的BPDU,C的AP端口收到次级BPDU,不会立即回从A学来正确的BPDU给B交换机
而是等待之前接口缓存的BPDU超时,超时时间max age减去m,最大20秒,之后再会送从A交换机正确的BPDU给B,此时C的AP变DP,B的DP变RP,在等待两倍的转发延迟30S,一共50秒。
802.1W: 直接会送正确的BPDU再P/A,几乎在一秒内完成。
DP端口收到次级BPDU会立即回优的BPDU
六、这种场景,两个交换机通过一个没有运行STP的交换机相连
802.1d收不到BPDU的时候等待max-age-message age时间端口角色发生该变
802.1w收不到BPDU的时候等待hold-time=2*3*时间因子3=18S
AP收到一个次级BPDU会立刻会送优的BPDU,变为DP,discading,在P/A
拓扑变化:
STP:标准触发TCN的条件是一个端口up/down了,华为一个端口fording转发了。收到TC,mac地址age改为15秒。TC发20+15一共35秒。
RSTP: 触发TC的条件是一个非边缘端口fording了,收到TC,删除除了收TC和egde端口的mac表,其他全删,发2次。
好处:STP拓扑变化,mac全部老化15S,RSTP只对一些错误的端口删除不全删,不用在root发了,自己就可以发TC了,加快收敛。
802.1W桥ID
一个8个字节
4个bit的优先级;12个bit扩展系统id用全0;后6个字节mac地址
802.1D的flags位只使用了两个位最高位和最低为,最高位是TCA,最低为是TC
802.1w的flags八位都使用了
端口角色的bit位:
00未定义;01-AP/BP;10-RP;11-DP
P/A机制的前提条件两个:
1、P2P全双工
2、DP对面得是一个RP
当DP端口想要快速forwarding的时候触发P/A,此时DP端口的状态可能是阻塞dis或者len学习状态。
(1)A和B交换机刚开始都认为自己是root,相互交互BPDU
(2)当第一轮BPDU交互完成,链路之间的,交换机的端口角色,如果此时A的1端口为DP,B的2端口为RP
(3)同步B交换机会把除了边缘端口的其他DP端口全部阻塞,也就是后续要流出BPDU的端口
(4)B交换机直接把RP端口进入forwarding状态,在向上回复A置位的配置BPDU
(5)A交换机收到A消息再把DP端口打开进入forwarding状态
注意:P/A机制是逐段P/A的
P/A发生在P2P full全双工的链路上
如果不是点到点,是一个多点的环境比如:A和C和D连接在一个hub上,会触发临时环路。P/A协调机制会复杂。
第一步:刚一开始A和D之间的链路没有连接在没有hup上,这个时候,A和B和C上的端口1,2,3,4,5都已经forwarding了,这个时候,只要A交换机的6端口forwarding就会出现环路。
第二步:然后把A和D之间的链路接起来,此时A交换机从6端口往外流p置位BPDU,C可能因为某种原因没有收到,D交换机收到了回应了a置位的BPDU消息,此时A交换机的6号端口forwarding,出现了临时性环路。
之后C从5号口收到了A的BPDU,在C和A之间链路端口角色重选,再破环。可能C的4号端口被阻塞了。
如果下游有多台交换机,上游交换机无法确定收到多少个A置位的BPDU才能进入转发状态,如果此时贸然进入转发状态,可能会产生临时性环路。
Full 全双工的链路
如果是这种情况,是P2P但是半双工的链路:
因为是半双工,所以链路只能有一个人发,A发P置位的BPDU,如果还有其他流量,那么B就只能等在链路空闲时才能回A消息,这样就不快了,失去了快的意义。
半双工的BPDU的flags位里面A位置0,B只要收到了A位置0的BPDU,不会阻塞其他DP端口,也不会回复A消息,此时不能P/A;半双工无法保证点到点,可能导致临时环路。
P/A如果DP的对端是AP的话,此时端口想要forwarding,需要等待2倍的转发延迟30S。DP端口发15次BPDU
【扩展】交换机怎么区分这个端口是AP还是BP?
答:根据端口收到了BPDU的转发桥ID来判断,如果BPDU的转发桥ID不是自己那个这个端口就是AP;如果更优的BPDU转发桥ID是自己,那么这个端口就是BP,列举场景什么是AP和BP?
【扩展】AP/BP的工作过程?
答:端口角色参数对比顺序:根ID、根路径开销、转发桥ID、转发桥端口ID、本地端口ID。
AP是交换机的备份端口。当交换机到达根桥的路劲丢失时,AP端口迅速变成RP根端口转发数据。
如果交换机上有多个端口,按照参数顺序选择一个最优的AP端口转变为RP根端口。
BP是网段上指定的备份端口。当网段上的指定端口down掉时,BP端口等待hold time时间
变成指定端口转发数据,如果交换机上有BP端口,按照参数对比顺序选择一个最优的BP端
口转变成指定端口
【扩展】STP为什么要等max age,stp为什么要逐跳去转TCN?
答:交换机根端口RP和非指定端口AP/BP收到BPDU后,会把BPDU缓存,BPDU里面有max age字段,定义了这个BPDU的
老化年龄。在老化年龄之前,这个BPDU都是有效的。
stp中配置了BPDU的flag字段的TC位表示拓扑发生了变化。在STP中,只有根桥才能发送TC bpdu,所以需要发生变化的节点
逐跳向根桥的方向rp端口发出去,给根桥,让根桥发TC,通知全网拓扑发生变化,收到TC的交换机,mac表置位15s刷新。
802.1D中,configuration BPDU是单向流动的,只能从root流下来,TCN不是配置BPDU。是单独BPDU。
802.1W收到TC后交换机会立刻刷新mac表,怎么刷的?
答:收到TC后,除了边缘端口和收到TC的端口不删除以外其他的都删除,重新学
为什么收到TC的端口不删呢?难道收到TC的端口mac是对的吗?
答:是对的,从这个端口收到TC说明从这个端口可以去往故障点,如图?
刚开始A和B和E交换机以绿色接口访问PC,当链路down了,拓扑发生该变发TC,刷新mac地址表,可以看出收TC的端口mac地址对应关系是正确的
扩展:
只有在AP变RP的这台交换机上,接了下游交换机的端口DP的端口角色不变,状态不变。接PC会discading,在F,edeg端口不变。
rstp和SRP比较,快体现在哪里?
1、有AP和BP,BP是RP的备份,BP是DP的备份,一旦RP挂了,AP可以立即变为RP,DP挂了,BP端口等待3*2之后,再P/A,没有P/A 两个15秒
2、P/A机制
3、边缘端口
五向量:
根的桥ID
根路径开销RPC
转发桥ID
转发桥端口
接收桥本地端口
STP中为什么要等待30S的转发延时?
是为了让最优的BPDU流到全网,
四种保护机制:
BPDU保护通常和egde port 一起使用,收到BPDU 把接口error-down掉 stp bpdu-protection 全局开
根保护,用在交换机上,只对DP端口有效,开启后DP端口收到更优的BPDU把端口discading掉 stp root-protection
环路保护:AP,RP端口要靠周期收到根的BPDU维持状态,网络拥塞,可能有一段时间收不到,配置环路保护,可以在BPDU老化后,把接口discading掉,防止AP
变RP,RP变DP 变为转发状态。 HYPERLINK "http://127.0.0.1:7890/pages/AZG0221P/05/AZG0221P/05/resources/dc/stp_loop-protection.html"stp loop-protection
TC保护:收到TC设备会清MAC地址表,防止有人恶意攻击,配置接口收到TC的阈值