生成树又叫CST ? spanning tree protocol
目录
HUB工作原理:复制和放大
基于源MAC地址学习;基于目的MAC地址转发;收到的是一个广播帧或者未知的单播帧除源端口以外所有端口转发;一个MAC地址被多个接口学习到选择最新的。
冗余解决了单点故障,但是引入冗余性的同时也引入了二层环路(有闭环存在)---->有顺时针环路+逆时针环路,也叫广播风暴,有的交换机性能差会直接死机(好一点的可能是指示灯爆闪),还会出现多帧复制,以及MAC地址表不稳定(三层环路起码有ttl);
解决二层环路:手动解决闭环问题(拔掉网线)、生成树
根网桥、非根网桥(交换机的前身是网桥,交换机是硬件转发,网桥是软件转发,网桥端口密度小,交换机端口密度大)
根端口-RP(每台非根桥上有且仅有一个根端口);
指定端口-DP(在每条链路上有且仅有一个指定端口,有几根线就有几个DP,作用是发送配置的BPDU,指定端口是在每一条链路上面进行选举的);
阻塞端口-blocking;
1、禁用(disable):该接口不能收发BPDU,也不能收发业务数据帧,例如接口为DOWN
2、阻塞(blocking):该接口被STP阻塞,处于阻塞状态的接口也不能发送BPDU,但是会持续侦听BPDU,而且不能收发业务数据帧,也不会进行MAC地址学习
3、侦听(listening):STP初步认定该接口为根端口或指定端口,但接口依然会处于STP计算的过程中,此时接口可以收发BPDU,但是不能收发业务数据帧,也不会进行MAC地址学习
4、学习(learning):会侦听业务数据帧(但是不能转发业务数据帧),并且在收到业务数据帧后进行MAC地址学习。
5、转发(forwarding):处于该状态的接口可以正常收发业务数据帧,也会进行BPDU处理,接口的角色需要是根接口或指定接口才能进入转发状态。
1、比较桥优先级,越小越优,默认为32768;桥优先级相同,比较MAC地址,越小越优;
2、Bridge id = priority (32768) + MAC
1、到根网桥的开销最小
2、直连网桥的bridge-id最小
3、对方的port-id(端口优先级默认128+端口编号)最小
1、到根网桥的开销最小
2、所在网桥的bridge-id=priority(32768)+MAC最小
3、自己的port-id最小
注意:一般根网桥上的接口都是DP,但不是一定(一台交换机,自己连自己,就有一个端口是阻塞)
TCN BPDU拓扑变更提示+TCA拓扑变更确认+TC拓扑变更+message age消息寿命
1、直连故障:被阻塞的端口会从blocking状态,依次切换到listening及learning状态,最终进入forwarding状态;直连链路故障,端口状态切换,延时30s后进入forwarding状态。
2、非直连故障:由于被阻塞端口上不再收到更优的BPDU,因此20s后端口开始从blocking状态依次切换到listening、learning及forwarding状态;非直连故障会导致50s左右的恢复时间,等于max age加上2倍的forward delay时间
1、当根桥发生故障时,会停止发送BPDU报文
2、非根网桥等待MAX Age计时器(20s)超时,从而导致以及收到的BPDU报文失效,又接收不到根桥发送的新的BPDU报文,从而得知上游出现故障
3、非根桥会互相发送配置BPDU,重新选举新的根桥
4、经过重新选举后,非根桥的A端口经过两个转发延迟之后恢复转发状态(非根桥会在BPDU老化之后开始根桥的重新选举,根桥故障会导致50s左右的恢复时间)
当交换机网络稳定时检测到根端口的链路发生故障,则其备用端口会经过两倍的Forward Delay(15s)时间进入用户流量转发状态
非根桥交换机检测到直连链路物理故障后,会将预备端口转换为根端口;直连链路故障,备用端口会经过30s后恢复转发状态。
非根桥的根端口发生故障,导致生成树拓扑重新收敛,在生成树拓扑完成收敛后,从一个主机到另一个主机的帧仍然不能到达目的地,因为交换机依赖MAC地址表转发数据帧,缺省情况下,MAC地址表项的老化时间是300秒,如何快速恢复转发?
TCN BPDU在网络拓扑发生变化的时候产生;报文格式:协议标识、版本号、类型;拓扑变化:会使用到BPDU中Flags的TCA和TC位
收到TC后,300s会变成15s
命令区别:
确定根网桥后,只有根网桥会发送配置BPDU,非根网桥转发配置BPDU,配置BPDU的报文格式:
PID(协议ID,对于STP而言,该字段的值总为0)+ PVI(协议版本ID,对于STP而言,该字段的值总为0)
BPDU type(指示本BPDU类型,0x00表示本报文为配置BPDU;0x80表示为TCN BPDU--当网络故障时,交换机向上发送拓扑变更提示)
Flags(STP只使用该字段的最高及最低两个比特位,最低位是TC标志(根网桥发送)--拓扑变更,最高位是TCA标志--拓扑变更确认)
ROOT ID(根网桥的桥ID)+ Bridge ID + Port ID
RPC(根路径开销,到达根桥的STP cost)
Message age(消息寿命,从根网桥发出BPDU之后的秒数,每经过一个网桥都加1,本质上就是到达根桥的跳数)+运行STP协议的网络中非根桥设备收到配置BPDU报文后,报文中的Message Age和Max Age会进行比较:1、如果message age 小于等于max age,则该非根桥设备继续转发配置BPDU报文 2、如果大于,则该配置BPDU报文将被老化,该非根桥设备直接丢弃该配置BPDU,可认为网络直径过大,导致根桥连接失败。
Max Age(最大寿命,当一段时间未收到任何BPDU,生存期到达最大寿命时,网桥认为该接口连接的链路发生故障,默认是20s)
Hello Time(根网桥连续发送的BPDU之间的时间间隔,默认2s)
Forwarding Delay(转发延迟,在侦听和学习状态所停留的时间间隔,默认是15s) + 链路故障会引发网络重新进行生成树的计算,生成树的结构将发生相应的变化,不过重新计算得到的新配置消息无法立刻传遍整个网络,如果新选出的根端口和指定端口立刻就开始数据转发的话,可能会造成临时环路;为此,STP采用了一种状态迁移机制,新选出的根端口和指定端口需要经过2倍的转发延迟后才能进入转发状态,这个延时保证了新的配置消息传遍整个网络,从而防止了临时环路的产生)
(主要比较4个参数进行角色选举:根桥ID、根路径开销、网桥ID、端口ID)
1、选举根桥
2、选举根端口
3、选举指定端口
4、阻塞非指定端口
1、端口初始化或者使能,进入BLOCKing状态
2、端口被选为根端口或者指定端口,进入Listening状态
3、端口的Forward Delay时间(15s)到,进入learning状态;再经过一个Forward Delay,进入Forwarding状态
4、端口不再是根端口、指定端口,进入Blocking状态
5、端口被禁用或者链路失效