目录
定义与作用
STP Spanning Tree Protocol 生成树协议
作用:以阻塞端口的方式来消除二层环路的协议
环路产生的影响
1.mac地址表震荡:接口学习mac地址优先级默认一样,一样的情况允许mac地址漂移,所以不断的会进行mac地址表项的覆盖。
2.广播风暴:mac地址从每个接口的不断广播,会形成广播风暴,导致网络资源耗尽,网络瘫痪。
二层环路产生的原因
1.从表面上来看是在物理拓扑上形成环路;
2.本质上是交换机对未知单播帧的泛洪处理。
优先级向量及其选举过程
选取顺序:根桥,RP,DP,AP(结合下图1-1 理解效果更佳)
首先是选取根桥
通过root id选举(root id的意思是根桥ID,由于一开始所有的设备都会认为自己是根桥,所以这里用root id。后面选出根桥后,其他非根桥的ID就叫做桥ID,也就是BID)。根桥是一台交换机
root id共有两部分组成共8个字节,前2个字节用来表示桥优先级,后6个字节用设备的MAC地址来表示。新华三设备桥优先级默认的是32768,以4096为步长(因为前两个字节共16比特位,前4个比特位才真正表示桥优先级,而后12个bit表示的是vlan-id,所以当桥优先级变化时,是16位的高4位在变化,步长为4096)
看图,这时假设图中五台设备互相发送配置BPDU报文,确定了根桥是SW1。
选取根端口RP
确定根桥后,下面就要选取非根桥上的根端口RP(Root Port),注意:在根桥上没有根端口!
RP是对非根桥上的端口而言的,选取规则是首先看离根桥的根路径开销RPC(Root Path Cost),RPC最小的称为根端口,很显然在SW2,SW3上的三个端口,只有最上面的端口离根桥最近,成为RP。
在SW4上的四个端口,显然上面两个端口的RPC一样,这时就要第二个规则了,看与相应端口相连的设备的BID,BID越小的,成为RP,与这两个端口相连的分别是SW2,SW3,假设SW2的BID为4096,SW3的BID为32768,此时SW4的左上边那个端口成为RP。
再看SW5,发现与SW5两个端口相连的设备是同一台,而且到根桥的距离也一样,这时就要第三个规则了,看发送端的端口ID,即PID(Port ID)PID越小的成为RP,假设SW4下面左边的端口PID比下面右边的要小,所以此时对于SW5来说,左边那个端口成为RP。
选取指定端口DP
根端口选举完成后,下面就要选举指定端口DP(Designated Port)
注意:DP是在每一个物理段选举的,即在一根线的两端中选取一个作为DP。
选取规则根据RPC,对于SW1和SW2,SW3相连的段,很显然SW1上的两个端口成为DP;
在SW2和SW3相连的段上,由于两个端口的RPC相同,这时比较BID,显然SW2的BID比SW3的BID要小,所以SW2上的端口成为DP。
同样在SW2,SW3和SW4相连的段上,SW2,SW3的两个端口的RPC更小,成为DP,在SW4和SW5相连的段上,SW4的两个下行端口成为DP。
选取阻塞端口AP
在RP,DP选举完成后,剩下的端口成为阻塞端口,即AP(Alternate Port ),自此STP端口角色选举完成。
图1-1 端口角色选举
STP端口状态
1.Disabled:未启用STP功能的端口,不收发BPDU报文,不接收或者转发数据;
2.Blocking:阻塞状态,接收但不发送BPDU报文,但不接收或者转发数据,AP端口的状态
3.Listening:侦听状态,接收并且发送BPDU报文,不接收也不转发数据
4.Learning:学习状态,接收并且发送BPDU报文,不接受也不转发数据,学习MAC
5.Forwarding:接收并且转发数据,DP,RP端口的状态
端口状态转移
在开启STP功能后,端口被选为DP或者RP后,状态从Blocking状态到Forwarding状态,会经历Blocking到Listening用时0~20秒,从lisenting到learning,从learning到forwarding 分别需要一个forwarding delay(15秒)所以最快需要30秒才能收敛。
STP为什么要设计Forwarding Delay:
能够保证当网络拓扑发生变化时,新的配置消息能够传遍整个网络,从而避免网络未收敛时造成的临时环路。
STP计时器
Hello Time :配置BPDU的发送周期,用于检测对方是否存活,2s一个,开始时所有的交换机都会发送,在拓扑稳定的时候只有根桥去发送,其他人进行转发
Forwarding Delay :状态切换延迟15s一个
Max age:判断链路故障的时间为20s,10个Hello Time 内没有收到对方发送的配置BPDU,就认为链路挂掉了
BPDU报文
配置BPDU报文:开始所有人都发送,选举出根桥后由根桥发送,发送周期为一个hello time,所以一般配置BPDU都是由DP发送,RP接收
TCN BPDU:端口状态变为Forwarding 状态,设备向外发送TCN BPDU
拓扑变化机制(TC机制)
这个机制主要是为了当拓扑发生变化时,让网络的收敛速度更快。
1.STP中,设备检测到网络拓扑发生变化时就会触发TC机制。(down时触发拓扑变更无 意义)
2.下游交换机SW5会不间断向上游(沿RP口)发送TCN BPDU报文。
3.上游设备SW3收到下游SW5发来的TCN BPDU报文后,只有指定端口处理TCN BPDU报文。其他 端口可能收到TCN BPDU报文,但是不会处理。
4.上游设备SW3会把回复一个TCA置位的配置BPDU给下游SW5,下游停止发送TCN BPDU报文。
5.上游设备SW3复制一份TCN BPDU报文,沿RP口向根桥SW1发送。
6.根桥SW1收到TCN BPDU报文后,会回复TCA置位的配置BPDU,同时根桥会发送一个TC置 位的配置BPDU,沿着DP端口,泛洪到全网,发送间隔是2秒。 持续时间35秒 = 20秒(老 化) +15秒(转发延迟)。
7.所有收到TC置位的配置BPDU的交换机,会将MAC表的老化时间调整成15秒。
注意: 1)整体老化时间是50秒=35秒+15秒。 2)如果三层交换机,会删除ARP表项。
直连故障与非直连故障
1.直连故障: 如果Hub与SW3之间的链路断了,对于SW3是有感知的,知道RP失效,AP马上变成 RP,状态从Blocking迁移成Forwarding,需要等待30秒的转发延迟。
2.非直连故障: 如果Hub与SW1之间的链路断了,对于SW3是没有感知的,RP端口需要先等待BPDU 老化时间20秒,然后RP失效,AP马上变成RP。状态从Blocking迁移成Forwarding, 还需要等待30秒的转发延迟。一共需要 20秒(Max Age老化)+ 30秒(2倍转发延迟)= 50秒的时间
关闭了STP的功能,收到BPDU将如何处理
BPDU报文的发送目的地址是01-80-C2-00-00-00,以组播的形式发送,如果交换机关闭了STP功能,将会收到这个组播数据帧,会接收不处理。
STP不发送TC置位的配置BPDU会有什么影响
在原本的拓扑发生变化后,原来的MAC地址表将无法正确引导数据转发。如果不去发送TC置位的BPDU,将无法刷新MAC地址表,会导致数据流量无法正常转发,要等到300s的MAC地址表老化时间后,才会自动刷新MAC地址表。
注:本文有借鉴相关官方文档以及别的优秀博主的文章,仅供个人学习使用。