APP下载

生成树协议(STP)在计算机网络中的应用

2020-03-16刘东旭马亚琦

电脑知识与技术 2020年2期

刘东旭 马亚琦

摘要:生成树算法的网桥协议STP(Spanning Tree Protocol) 它通过自动形成生成树使得在网络中一个透明的网桥以动态方式在复杂的网络拓扑结构中沿环状工作。网络中的环路由网桥之间通过交换配置桥协议数据单元消息来进行监测,通过关闭选择的网桥接口的方式破除环路。局域网通常由多种网络设备相互连接形成,我们只有消除网络中的环路才能有效降低广播风暴的发生,也就是说网络中的链路应组成树形的无环路结构,使用STP(生成树协议)就可以解决这样的问题。

关键词:生成树协议;路径回环;冗余链路

中图分类号:TP393        文献标识码:A

文章编号:1009-3044(2020)02-0028-02

Abstract: Spinning Tree Protocol STP(Spinning Tree Protocol) of the spanning tree algorithm guarantees that a known bridge works dynamically along a ring in the network topology by generating a generating tree. Bridges exchange BPDU messages with other bridges to monitor the loop, and then close the selected bridge interface to cancel the loop. A local network is usually made up of multiple switches. In order to avoid broadcast storms, we need to ensure that there is no path loop in the network, that is, all links should form a tree without loop. The STP(Spanning Tree Protocol) on the switch implements this function.

Key words: spanning tree protocol; path loop; redundant link

1 透明网桥以及广播风暴的危害

首先大家所熟知的计算机网络中的透明网桥具有以下的特点:

1) 将局域网中的一个IP地址段拓展到其他的IP地址段;

2) 在数据传输过程中,站点的地址信息被网桥记录下来,网桥依据站点的地址转发数据帧;

3) 网络中IP地址段的冲突可以通过透明网桥加以控制。

封装有源MAC地址的数据帧被网桥上的任意一个端口接收到后,网桥就把该MAC地址和流入该数据帧的端口号保存在物理地址列表中。MAC地址表可以显示出接收到的MAC地址与对应该网桥的哪个端口。当数据帧传到网桥时,通过查看MAC地址表对数据帧有三种处理结果:如果数据帧的目的端口和接收端口一致,则数据帧被完全丢弃;如果目的端口和接收端口不一致,则数据帧就从那个端口转发;如果目的地址的端口在MAC地址表中无法找到,则要以广播的方式把数据帧从其他的出口广播出去。另外如果广播帧被网桥接收,那么网桥也会把广播帧从其他端口广播出去,由于网桥不具备路由器的功能,数据帧经过网桥不会被修改,数据帧也不会记录自己走过了多少个网桥,网络中一旦有环路,环路就可能使报文在传输中不断循环和增生,增加网络负荷,造成拥堵,网络中“路径回环”问题的就由此而生。

在计算机网络中,广播风暴以及环路是经常发生的问题。发生后会大量消耗网络带宽,导致数据包无法正常地在网络中传送,从而导致数据的传送的停滞、数据包的丢失等一系列问题,甚至导致整个局域网的瘫痪。如今使用最为广泛的广播风暴预防措施是进行STP的配置。预先破除网络中的环路,从根源上抑制广播风暴以及环路的形成。

2 STP的基本原理及其作用

IEEE 802.1D规定了STP及其算法。一种特殊的配置消息在网络中的网桥之间相互传递,将这种配置消息在802.1D中被定义为“配置BPDU”或者“配置桥协议数据单元”。这种特殊的配置消息中携带的信息可以让网桥完成生成树的计算,网络交换设备会根据配置桥协议数据单元消息来完成以下的工作:

1) 在众多进行生成树计算的网桥中,只有一个被推举为根桥(Root Bridge);

2) 剩余的每个非根桥都会定义一个根端口(Root Port),根端口到达根桥的路径是该网桥到根桥的最佳路径;

3) 离根桥最近的那个网桥作为该IP地址段的指定网桥,指定网桥到该IP地址段的端口作为指定(Designated Port)端口,其主要功能是在该IP地址段上进行数据转发;

4) 除指定端口和根端口之外的其他端口被置于阻塞状态。

当网络中无回路时,网桥在网络中发挥着重要作用。那么是不是回路不能生存在网络中呢?这显然也是不对的,因为当网络拓扑结构中的某条链路因故断开后,回路可以使网络仍然处于连通的状态。为此,生成树算法将冗余链路断开后,就可以把有回路的桥接网络变为一个无回路的树型拓扑结构,回路问题自然就被解决了,而且生成树算法也可以在某条活动(active)的链路突然断开时,通过激活被阻断的冗余链路重新修剪拓扑结构以恢复网络的连通。

3 BPDU的组成以及生成树算法的实现过程

BPDU也被称作配置消息,它主要包含四个方面的内容:即桥接网络中的根桥序列号,从指定网桥到根网桥的最短路径,指定网桥序列号和指定端口序列号四项内容。生成树的计算就是网桥之间通过传递这四个方面的内容来实现的。在实际传输过程中,我们可以用矢量形式(RootlD,RootPathCost,DesignatedBridgelD,DesignatedPortID)來表达每个网桥所发送的配置消息。

初始阶段每个网桥只知道自身的存在,所以每个网桥自认为自己是根桥并发送配置信息。当网桥收到来自其他网桥发送的配置消息时,它就会把收到的配置消息和自身发送的配置信息进行对比,看看哪个配置消息的优先级最高,最后该网桥用对比后优先级最高的配置消息替代自己的配置消息,并且完成下列的其他工作:

1) 推举根网桥RootID:Root ID值为最小将成为最终的Root ID;

2) 到根桥的最短路径花费RootPathCost:如果网桥是根网桥,则最短路径开销为0,否则最短路径开销就是最优配置消息中的路径开销加上接收端口对应链路的路径开销;

3) 选择根端口RootPort:网桥各个端口中到根桥路径开销最短的那个端口就是根端口,如果对应最短路径开销的端口不止一个,则对应收到的BPDU消息中DesignatedBridgelD号最小的端口将成为根端口,如果还不能选出根端口,则对应收到的BPDU消息中DesignatedPortID号最小的端口将成为根端口;

4) 选择指定端口:网桥端口发送的BPDU配置消息的优先级比较接收的BPDU配置消息优先级高,这个端口就是指定端口。

最后,新的配置消息被网桥从指定端口重新发送。

4 STP对于网络故障的处理

4.1 链路故障处理

生成树算法定义了一种定时器策略来解决网络链路故障的问题,生存期的值被封装在配置消息中,生存期为0的配置消息被根网桥通过自身所有端口按一定的周期发送出去,其他网桥收到配置消息后,把生存期为0的配置消息也从自身的指定端口发送出去。一旦生成树的分支发生链路故障,则新鲜的配置消息就不会被故障链路下游的端口接收到,反而自身的配置消息的生存期值不断增长,一直到无法增长,该网桥将丢弃这个超过极限的配置消息,新的生成树计算从头开始。在这个过程中使用hello time表示定时发送的周期,使用message age表示配置消息的生存期,使用maxage表示最大生存期。

4.2 临时回路处理

STP中定义了若干中间状态来解决网络中临时回路的问题。在802.1D的协议中,端口有这样几种状态:Disabled、Blocking、Listening、Learning、Forwarding。

當端口的状态为根端口或者指定端口,原先的blocking状态就会改变为listening的中间状态;由于网络延时forward  delay的存在,端口状态继续变为learning状态;网络延时fovwarddely继续叠加,端口状态继而变为forwarding状态。由于网络拓扑结构发生改变导致原先端口不再是根端口或指定端口,端口状态就会马上变为blocking状态,并且不管端口处于何种状态,当端口变为可用或者不可用时端口的状态都会变为disabled状态。端口状态listening变为learning,或者端口状态learning变为forwarding状态,都要通过forwarddelay延时来实现,forward  delay延时可以促使网络中需要变为blocking状态的端口达到目的,从而解决了网络中环路产生的问题。

4.3 网络拓扑结构变化后的处理

生成树中每个站点所处的位置会随着网络拓扑结构的变化而发生变动,原来保存在网桥中的MAC地址信息就会变得错误重重,所以应该给MAC地址信息定义一个生存期,在生存期内不能证明MAC地址信息正确,则丢弃掉这些MAC地址信息。在STP中存在两个生存期:较长的生存期在网络拓扑相对稳定时使用、较短的生存期在拓扑结构经常变化时使用。并不是所有的网桥都能够发现网络拓扑结构变化,这就需要以报文的形式把拓扑结构改变的信息告知到每一个网桥。在STP中有三种报文被用来标识拓扑改变:拓扑改变通知消息,拓扑改变应答消息,拓扑改变消息。当有网桥发现拓扑改变,就会把拓扑改变通知消息以hello time为周期定时从根端口向根网桥的方向发送,网络中的其余非根网桥也同样要向根桥的方向发送这个通知消息。非根网桥会响应一个拓扑改变应答消息,当网桥收到应答消息后就停止发送通知消息。应答消息用一个拓扑改变应答标志位来标识,它通常被携带在网桥发送的下一个配置消息中。拓扑改变被根网桥自行发现或者通过拓扑改变通知消息发现,就会在一定时间内,把拓扑改变的标志位携带在向其他网桥发送的配置消息中,网桥收到这个消息后较短的生存期将会应用到该网桥的地址表项,直到拓扑改变的标志位不再出现。

参考文献:

[1] 李玉鹏,王换招,赵青苹.基于STP的以太网物理拓扑发现[J].北京电子科技学院学报,2004,12(2):8-13.

[2] 林状辉.使用交换机时如何避免环路现象产生[J].科技信息,2009(24):159-160.

[3] 陈荣.浅析生成树协议原理及其实验设计[J].信息与电脑:理论版,2011(5):93-94.

[4] 王炅,张华,谢储晖.生成树协议的算法分析[J].重庆科技学院学报:自然科学版,2011,13(5):140-142.

【通联编辑:唐一东】