STP(链路管理协议)
STP(Spanning Tree Protocol)是生成树协议的英文缩写。该协议可应用于在网络中建立树形拓扑,消除网络中的环路,并且可以通过一定的方法实现路径冗余,但不是一定可以实现路径冗余。生成树协议适合所有厂商的网络设备,在配置上和体现功能强度上有所差别,但是在原理和应用效果是一致的。
中文名生成树协议
Spanning Tree Protocol
STP
链路管理协议
适合所有厂商的网络设备
避免单点故障、网络回环
算法过程
生成树协议运行生成树算法(STA)生成树算法很复杂,但是其过程可以归纳为以下3个步骤:
(1)选择根网桥
(2)选择根端口
(3)选择指定端口
关于选择根网桥:选择根网桥的依据是网桥ID,网桥ID由网桥优先级和网桥MAC地址组成。网桥的默认优先级是32768.使用show mac-address-table时,显示在最前面的MAC地址就是计算时所使用的MAC地址。网桥ID值小的为根网桥,当优先级相同时,MAC地址小的为根网桥。
关于选择根端口:每个非根交换机选择一个根端口。选择顺序为:到根网桥最低的根路径成本→发送BPDU的网桥ID较小→端口ID较小的。端口ID由端口优先级与端口编号组成。默认的端口优先级为128。
关于选择指定端口:每个网段上选择一个指定端口。选择顺序为:根路径成本较低→发送BPDU的交换机的网桥ID值较小→本端口的ID值较小。另外,根网桥的接口皆为指定端口,因为根网桥上端口的根路径成本为0。
Blocking(阻塞状态):此时,二层端口为非指定端口,也不会参与数据帧的转发。该端口通过接收BPDU来判断根交换机的位置和根ID,以及在STP拓扑收敛结束之后,各交换机端口应该处于什么状态,在默认情况下,端口会在这种状态下停留20秒钟时间。
Listening(侦听状态):生成树此时已经根据交换机所接收到的BPDU而判断出了这个端口应该参与数据帧的转发。于是交换机端口就将不再满足于接收BPDU,而同时也开始发送自己的BPDU,并以此通告邻接的交换机该端口会在活动拓扑中参与转发数据帧的工作。在默认情况下,该端口会在这种状态下停留15秒钟的时间。
Learning(学习状态):这个二层端口准备参与数据帧的转发,并开始填写MAC表。在默认情况下,端口会在这种状态下停留15秒钟时间。
Forwarding(转发状态):这个二层端口已经成为了活动拓扑的一个组成部分,它会转发数据帧,并同时收发BPDU。
Disabled(禁用状态):这个二层端口不会参与生成树,也不会转发数据帧。
潜在故障
双工不匹配:在点到点链路上,双工不匹配是一种常见的配置错误。当链路的一段采用手工的方式配置为了全双工模式,而另一侧却使用自动协商的默认配置的时候,那么就可能发生双工不匹配的情况。
单向链路失效:单向链路是产生桥接环路的一个非常常见的原因。如果光纤链路存在没有检测出来的故障或收发器故障,通常导致单向链路。在启用STP来提供网络冗余的情况下,对于两个链路伙伴之间所连接的物理链路,如果由于某种原因导致这条链路工作在单向通信的状态下,那么就可能导致桥接环路或路由选择黑洞,进而对维护网络稳定非常有害。
帧破坏:帧破坏是导致STP故障的另外一种原因。如果接口正在经受高速的物理错误,其结果有可能就会导致BPDU丢失,而这会使处于阻塞状态的接口过渡到转发状态。虽然如此,但因为STP默认参数是非常保守的,所以很少会发生上述情况。
资源错误:即使在通过专门的ASIC硬件执行大部分交换功能的高端交换机中,STP仍然由CPU来执行。这就意味着:如果处于某种原因而过度使用了网桥的CPU,那么就可能导致CPU没有足够的资源来发出BPDU。通常情况下,STP不是一种密集调用处理器的应用,而且STP的优先级高于其他进程。因此,出现资源问题的可能性并不大。
PortFast配置错误:如果管理员在端口上启用了PortFast特性,那么当链路启动的时候,端口就会绕过STP的监听和学习状态,并且直接过渡到转发状态。但是如果在错误的端口上配置了PortFast特性,那么这种快速过渡就有可能导致桥接环路。
相关研究
随着计算机网络的高速发展,人们对网络的可靠性要求越来越高。为了减小网络故障带来的损害,通常在网络中增加冗余链路。但冗余链路会形成网络环路,使得广播报文不断循环增生,形成广播风暴。为了解决这个问题,需要在交换机上实现快速生成树协议。快速生成树协议通过互相交换BPDU(Bridge Protocol Data Unit)报文,切断冗余链路,消除网络回路,将网络拓扑修剪成树型结构。[1]
参考资料1.快速生成树协议在交换芯片BCM53202M上的实现·知网空间