STP(Spanning Tree Protocol,生成树协议)能够提供路径冗余,使用STP可以使用两个终端中只有一条有效路径。在实际的网络环境中,物理环路可以提高网络的可靠性,当一条线路断掉的时候,另一条链路仍然可以传输数据。但是,在交换网络中,当交换机接收到一个未知目的地址的数据帧时,交换机的操作是将这个数据帧广播出去,这样,在存在物理的交换网络中,就会产生一个双向的广播环,甚至产生广播风暴,导致交换机死机。如何既有物理冗余链路保证网站的可靠性,又能避免冗余环路所产生的广播风暴呢?STP协议是在逻辑上断开网络的环路,防止广播风暴的产生,而一旦正在用的线路出现故障,逻辑上被断开的路线又被连通,继续传输数据。
交换网络环路
交换网络环路会带来3个问题:广播风暴、同一帧的多个拷贝和交换机CAM表不稳定。
交换网络环路的产生:
PC1和PC2通过交换机相连。网络初始状态时,PC1与PC2通信过程如下:
1.在网络通信最初,PC1的ARP条目中没有PC2的MAC地址,PC1首先会向SW1发送一个ARP广播请求PC2的MAC地址;2.当SW1收到ARP的广播请求后,SW1会将广播帧从除接收端口之外的所有端口转发出去即会从F0/1和F0/2发出;3.SW2收到广播后,会将广播帧从F0/2和连接PC2的端口转发,同样SW3收到广播后,将其从F0/2端口转发;
4.SW2收到SW3的广播后,将其从F0/1和连接PC2的端口转发,SW3收到SW2的广播后将其从F0/1端口转发;
5.SW1分别从SW2、SW3收到广播帧,然后将从SW2收到的广播帧转发给SW3,而将从SW3收到的广播帧发给SW2。SW1、SW2和SW3会将广播帧相互转发。这时网络就形成了一个环路,而交换机并不知道,这将导致广播帧在这个环路中永远循环下去。
STP工作原理
STP运行STA(生成树算法 Spanning Tree Algorithm)。STA算法很复杂,但是其过程可以归纳为以下三个步骤:
1.选择根网桥(Root Bridge);
1>网桥ID最小。
2.选择根端口(Root Ports);
1>到根路径成本最低;
2>最小的直连发送方网桥ID;
3>最小的发送方端口ID。
3.选择指定端口(Designated Ports)。
1>根路径成本最低;
2>所在交换机的网桥ID最小;
3>所在交换机的端口ID最小。
配置实例
S-switch-A]stp enable
[S-switch-B]stp enable
[S-switch-C]stp enable
[S-switch-D]stp enable
这样交换机根据自己的MAC地址大小,自动选取根桥。
1、查看stp的运行状态:
[S-switch-B]dis stp
2、直连终端的端口,禁用stp报文的发送
[S-switch-A]int g0/0/2
[S-switch-A-GigabitEthernet0/0/2]stp disable
3、stp 抓包分析
<S-switch-D>debugging stp packet all
<S-switch-D>terminal debugging
4、手工指定根桥
[S-switch-D]stp priority 4096
或者
[S-switch-D]stp root primary
5、指定备份根桥
[S-switch-B]stp root secondary
6、指定端口为根端口:
[S-switch-B]int e0/0/2
[S-switch-B-Ethernet0/0/2]stp port priority 64
或者
[S-switch-B]int e0/0/2
[S-switch-B-Ethernet0/0/2]stp cost 100 #修改端口的开销值
STP潜在故障
双工不匹配:在点到点链路上,双工不匹配是一种常见的配置错误。当链路的一段采用手工的方式配置为了全双工模式,而另一侧却使用自动协商的默认配置的时候,那么就可能发生双工不匹配的情况。
单向链路失效:单向链路是产生桥接环路的一个非常常见的原因。如果光纤链路存在没有检测出来的故障或收发器故障,通常导致单向链路。在启用STP来提供网络冗余的情况下,对于两个链路伙伴之间所连接的物理链路,如果由于某种原因导致这条链路工作在单向通信的状态下,那么就可能导致桥接环路或路由选择黑洞,进而对维护网络稳定非常有害。
帧破坏:帧破坏是导致STP故障的另外一种原因。如果接口正在经受高速的物理错误,其结果有可能就会导致BPDU丢失,而这会使处于阻塞状态的接口过渡到转发状态。虽然如此,但因为STP默认参数是非常保守的,所以很少会发生上述情况。
资源错误:即使在通过专门的asic硬件执行大部分交换功能的高端交换机中,STP仍然由CPU来执行。这就意味着:如果处于某种原因而过度使用了网桥的CPU,那么就可能导致CPU没有足够的资源来发出BPDU。通常情况下,STP不是一种密集调用处理器的应用,而且STP的优先级高于其他进程。因此,出现资源问题的可能性并不大。
PortFast配置错误:如果管理员在端口上启用了PortFast特性,那么当链路启动的时候,端口就会绕过STP的监听和学习状态,并且直接过渡到转发状态。但是如果在错误的端口上配置了PortFast特性,那么这种快速过渡就有可能导致桥接环路。
想要浏览更多的内容,欢迎登陆编程学习网或关注公众号【编程学习网IT精品课程】,一如既往欢迎点评。