STP(Spanning Tree Protocol)是一种由交换机运行和用来解决交换网络中环路问题的数据链路层协议。
一。环路问题
环路的存在会导致MAC地址表翻盘、广播风暴、多帧复制等现象的问题。
1.MAC地址表翻盘:
当PC-1要发送一个广播帧帧X时,则该帧在S1、S2和S3交换机上都会执行泛洪的转发操作。则会产生下面两种运动的现象:
(1)S1的1号口——S2的1号口——S2的2号口——S3的1号口——S3的2号口——S1的2号口——S1的1号口——.........——S3的2号口.......这样的逆向旋转。
(2)S1的2号口——S3的2号口——S3的1号口——S2的2号口——S2的1号口——S1的1号口——S1的2号口——.........——S3的2号口.......这样的顺时针的旋转。
在这样的环境下,X帧的一个拷贝将永不停止的进行逆向短的快速旋转,而另一个拷贝在顺时针的高速旋转。同时,在X的拷贝从1号口进入S1交换机时,S1就会将MAC地址表中关于PC-1 的MAC地址的表项修改为“PC-1的MAC地址——1号口”,而每当X的拷贝从2号口进入S1时,S1就会将MAC地址表中关于PC-1 的MAC地址的表项修改为“PC-1的MAC地址——2号口”。到最后,S1的MAC地址表中关于PC-1的MAC地址的表项内容会被无休止的改来改去,这就会产生翻摆现象。
弊端:MAC地址表的快速翻摆会消耗大量的交换机处理资源,严重的情况下,会导致交换机的瘫痪。
2.广播风暴:
在MAC地址表不断的翻摆情况下,每台的交换机都会不停的接收到X帧的拷贝并对其执行泛洪的操作。然而,每执行一次泛洪,PC都会收到一个X帧的拷贝,交换机同时也会不停的执行泛洪,这样就会产生广播风暴现象。
弊端:会大量的消耗网络中的带宽资源和计算机的处理资源。同时,大量的广播帧,很大的可能性会导致计算机的瘫痪。
3.多帧复制:
当PC-1向PC-2发送一个单播帧时,如果S1的MAC地址表中不存在关于PC-2的MAC地址表的表项,而S2的MAC地址表中存在关于PC-2的MAC地址表的表项“PC-2的MAC地址——3号口”,S3的MAC地址表中存在表项“PC-2的MAC地址——1号口”。
在这样的情况下,S1会对这个单播帧进行泛洪转发,而S2和S3会对其执行点对点的转发操作。最后会造成,PC-2会收到两个单播帧的拷贝。这就是多帧复制的现象。
二。STP树的生成
1.基本术语介绍:
(1)桥:泛指具有任意多接口的交换机。
(2)桥的MAC地址:一个桥有多个转发接口,每个端口都会有一个MAC地址。将端口编号最小的那个端口的MAC地址作为这个桥的MAC地址。
(3)桥ID(BID):一个桥的桥ID由两部分组成。桥优先级的值可自定义,缺省值是0x8000(十进制=32768)。
(4)端口ID(PID):常见的两种定义方式
2.STP协议的基本原理:
在一个具有物理环路的交换网络中,交换机通过运行STP协议,自动的生成一个没有环路的工作拓扑。这个无环的工作拓扑被称为STP树,其中树的节点为某些特定的交换机,树枝是某些特定的路由。一棵STP树包含了唯一的一个根节点,任意一个节点到根节点的工作路径是是唯一的,也是最优的。当网络拓扑发生变化时,STP树也会随之发生相应的变化。
STP的精髓:有环的物理拓扑提高了网络连接的可靠性,但是无环的工作拓扑避免了广播风暴、多帧复制和MAC地址表翻摆的问题。
3.STP树的生成过程:首先选举根桥——确定根端口、指定端口——阻塞备用端口。
(1)选举根桥:
根桥是STP树的根节点。根桥是整个交换网络的逻辑中心,但不一定是物理中心。网络拓扑发生改变时,根桥也可能发生变化。
运行STP协议的交换机会互相交换STP协议帧,协议帧的数据载荷被称为BPDU(网桥协议数据单元):(1)BPDU是STP协议帧的数据单元,但不是网络层的数据单元。(2)BPDU的产生者、处理者和接收者都是SYP交换机本身,不是终端计算机。(3)BPDU中包含了与STP协议有关的所有信息。其中就有BID(桥ID)。
STP交换机在最初的时候都会认为自己是根桥,而且会发送给别的交换机的BPDU中宣称自己是根桥。当交换机从网络中收到其他设备发送过来的BPDU时,会比较BPDU中指定的根桥BID与自己的BID。最终选出BID最小的交换机作为根桥。
(2)根端口的确定:
没有成为根桥的交换机都成为是非根桥。从非根桥设备中的端口中选出一个称为“根端口”的端口,由根端口作为此非根桥设备与根桥设备之间进行报文交互的端口。一台非根桥设备上最多有一个根端口。
STP协议中确定根端口的依据是:根路径开销。链路的根路径开销与端口速率有关,端口速率越大,路径开销就会越小。
根路径开销(RPC):某个计算机的端口到根桥的累计路径开销(即这个端口到根桥所经过的所有链路的路径开销的和)。
端口速率与路径开销的对应关系表:
端口速率 | 路径开销(IEEE 802.11标准,不同的设备上采用的标准或许有所不同) |
10Mbit/s | 2000 000 |
100Mbit/s | 200 000 |
1Gbit/s | 20 000 |
10Gbit/s | 2 000 |
根端口的确定流程:
1.RPC相同时,比较上行设备的BID;
2.BID相同,比较上行设备的PID,较小的作为根端口;
3.BID不相同,所连接的上行设备的BID较小的作为根端口。
(3)指定端口的确定:
为了防止环路的产生,网络中的每个网段与根桥之间的工作路径必须是最优和唯一的。当一个网段有两条及以上的路径通往根桥时,与其网段相连的交换机(可能有多台)中必须选出一个指定端口。
指定端口的确定流程:
1.RPC相同时,比较交换机的BID;(1)BID小的端口作为指定端口;(2)BID大的端口作为备用端口。
2.BID相等时,比较交换机的PID;(1)PID小的端口作为指定端口;(2)PID大的端口作为备用端口。
注意:根桥上不存在任何的根端口,只有指定端口。
(4)阻塞备用端口:(逻辑阻塞) 注:一旦备用端口被逻辑阻塞后,STP树便生成。
备用端口:在确定了根端口和指定端口,交换机上剩余的非根端口和非指定端口都是备用端口。
逻辑阻塞:指将这些备用端口不能转发终端计算机所产生的并发送的帧(称为:用户数据帧)。
补充:备用端口可以接收并处理STP协议帧。根端口和指定端口可以发送和接收STP协议帧,也可以转发用户数据帧。