1、STP协议概述

生成树协议(spanning tree protocol),是一种工作在OSI网络模型中第二层(数据链路层)的通信协议,是一种由交换机运行的,基本应用是防止交换机冗余链路产生的环路,用于确保以太网中无环路的逻辑拓扑结构,从而避免了广播风暴,大量占用交换机的资源,

生成树协议工作原理:任意一交换机中如果到达根网桥有二条或者二条以上的链路,生成树协议都根据算法把其中一条切断,仅保留一条,从而保证任意二个交换机之间只有一条单一的活动链路,因为这种生成的这种拓扑结构,很像是以跟交换机为树干的树形结构,故为生成树协议。

STP的工作过程如下:在一个具有物理环路的交换网络中,交换机通过运行STP协议,自动生成一个没有环路的工作拓扑。该无环工作拓扑也成为STP树,当网络拓扑发生变化时,STP树也会自动地发生相应的改变,简而言之,有环的物理拓扑提高了网络连接的可靠性,而无环的工作拓扑避免了广播风暴、MAC地址表震荡。这就是STP的精髓。

在学习STP树之前,需要了解几个基本术语:桥、桥的MAC地址,桥的ID、端口ID

:早期交换机一般只有二个转发端口,所以那个时候的交换机常常被称为“网桥”,后来“桥”这个术语一直沿用至今,但并不是指只有二个转发端口的交换机了,而是泛指任意多端口的交换机,目前“桥”和“交换机”这二个术语是可以混用的

桥的MAC地址:我们知道一个桥有多个转发端口,每个端口都有一个MAC地址,通常,我们把端口编号最小的那个端口的MAC地址作为整个桥的MAC地址。

桥ID(BID):一个桥(交换机)的桥ID由二部分组成,即:桥优先级+桥的MAC地址;其中桥优先级的值可以人为设定,默认0x8000(相当于十进制32768),取值范围是0~65535.

端口ID(PID):一个桥(交换机)的某个端口ID由二部分组成,即:端口优先级+端口编号;端口优先级的值是可以人为设定的。不同厂商的设备对于二部分所占用的字节数可能有所不同 。

 

STP树的生成过程是:首先选举根桥,然后确定根端口和指定端口,最后阻塞备用端口。

1、选举根桥

        根桥是STP树的根节点,要生成一颗STP树首先要确定出一个根桥。当运行STP协议的交换机(简称为STP交换机)会互相交换STP协议帧,这些协议帧的载荷数据被称为BPUD(网桥协议数据单元)。STP交换机初始启动之后,都会认为自己是根桥,并在发送给其他交换机的宣告自己是根桥,当交换机从网络中收到其他设备发送过来的BPUD时,会比较BPUD中指定的根桥BID和自己的BID,交换机不断交互BPUD同时进行比较,直至选举出一台BID值最小的交换机作为根桥。

 如图,交换机S1、S2、S3都使用了默认的桥优先级32768.显然S1的BID最小,所以最终S1被选举为根桥。

2、确定根端口

        根桥确定后,其它没有成为根桥的交换机都成为非根桥,一台非根桥设备可能会有多个端口于网络相连,为了保证从某台非根桥设备到根桥的工作路径是最优且唯一,必须从该非根桥设备的端口中确定出一个被成为“根端口”的端口,由根端口来作为非根桥设备于根桥设备之间进行报文交互的端口,一台非根桥设备上最多只能有一个根端口。

非根桥在选举根端口时分别依据该端口的根路径开销、对端BID、对端PID和本端PID。一个运行STP协议的网络中,我们将某个交换机的端口到根桥的累计路径开销(J即从该端口到根路径经过的所有链路的路径开销的和)称为这个端口的根路径开销(Root Path Cost,RPC),链路的路径开销 于端口速率有关,端口转发速率越大,则路径开销越小。

例1:根据RPC选举根端口

 如图,假定S1已被选为根桥,现在S3需要从1 端口和2端口中确定除根端口。显然,S3的2端口的RPC为20 000;S3的1端口的RPC为200 000+20 000=22 0000,交换机会将RPC最小的那个端口确定为自己的根端口,因此,S3将2端口确定为自己的根端口,同理,S2将自己的1端口确定为根端口。

例2:根据对端BID选举根端口

 然而,在实际应用中一台非根桥设备上的RPC可能是相同的,如图所示,假定S1已被选为根桥。对于S4而言,1端口和2端口到根桥的RPC都是相同的,这种情况下就需要根据对端BID来选举根端口。对于S4而言,它的对端BID也就是S2的BID和S3的BID。相比较之后假设S2的BID小,则1端口为S4根端口;反之,2端口就为S4的根端口。

例3:根据对端PID选举根端口

 如图,二台设备在这种连接方式下非根桥的RPC、对端BID均是相同的,这种情况下需要根据对端PID来选举根端口。对于S2而言,它的对端PID就是Root的GE0/0/1口和GE0/0/2口,假设Root的端口优先级都是128,那么Root的端口编号就是1和2。显然Root的GE 0/0/1的PID更小,所以与之相连接的S2设备的GE 0/0/1端口就被选为根端口。

例4:根据本端PID选举根端口

 如图,二台设备中间通过一台HUB相连接。在这种方式下的非根桥的RPC、对端BID、对端PID均是相同的,这种情况就需要根据本端PID来选举根端口。假设S2的端口优先级都是128,那么显然1端口的PID更小。因此,S2的1端口就被选为了根端口。

3、确定指定端口

根端口保证了交换机与根桥之间工作路径的唯一性和最优性。为了防止工作环路的存在,网络中每个网段与根桥之间的工作路径也必须是唯一且最优的。当一个网段有两条及以上的路径通往根桥时,与该网段相连的交换机就必须确定出一个唯一的指定端口。指定端口也是通过比较RPC来确定的,RPC较小的端口将成为指定端口。如果RPC相同,则需要比较BID、PID等。

 

如图,假定S1已被选举为根桥,并且假定各链路的开销均相等。显然,S2将GE 0/0/1确定为自己的根端口,S3也将GE 0/0/1确定为自己的根端口。在S1与S2,、S1与S3的之间的网段上,很明显Ethernet 0/0/1和Ethernet 0/0/2均为指定端口。在S2与S3之间的网段中,由于两个端口的RPC是相同的,所以这时就需要比较S2和S3的BID;假定S2的BID小于S3的BID,那么就将S2的GE 0/0/2端口选举为该网段的指定端口。

注:通过以上的例子,其实不难发现一个规律:根桥上所有的端口,都是指定端口。
4、阻塞备用端口

在确定了根端口和指定端口之后,交换机上所有剩余的非根端口和非指定端口统称为备用端口。STP会对这些端口进行逻辑阻塞。所谓逻辑阻塞是指这些备用端口不能转发终端计算机产生并发送的帧,这些帧也被称为用户数据帧。不过,备用端口可以接受并处理STP协议帧。根端口和指定端口既可以发送和接收STP协议帧,又可以转发用户数据帧。
 

 如图,一旦备用端口被逻辑阻塞后,STP树(无环工作拓扑)的生成过程便告完成。

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐