Spanning Tree Protocol介绍

Spanning Tree Protocol (STP) 主要用在网桥上,避免网络环路并确保冗余连接。通过选择根节点和确定各端口状态,STP维持网络稳定。本文详细介绍了STP的工作原理、BPDUs帧结构及网络拓扑变化时的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spanning Tree Protocol(STP)主要是用在网桥上,用来避免网络回路,并制造冗余连接(也就是保证网络的可靠性).

这里只是一个大概的介绍,具体的还是要去看IEEE 的 802.1D STP的文档。

先看下面的图:


[img]/upload/attachment/111941/731a1ffc-da28-34ef-b0e2-3124116783bc.jpg[/img]

我们可以看到在stp中,只有一个根节点,然后root port指的是将此网桥和root连接起来的那个端口,而designated port指的是在连接这个lan的端口中,距离root最近的那个port。

这里虚线部分就是没有激活的link,而对应的端口也是关闭的,这些连接其实就是冗余连接,当实线的某些连接不可用时,这些虚线部分的一些就会根据stp的算法进行激活。

而要实现stp的这些目标,就需要在各个网桥之间传递相应的帧(比如树的平衡,还有上面所说的情况等等).而这个帧就叫做bridge protocol data units(UPDUS).

在stp中,只有根节点才会生成BPDUS,而另外的节点只会接收BPDUS或者update它。

在stp中,每个端口都有状态,分别是下面5种:

disabled(关闭),blocking(端口启用,可是stp阻塞了它),listening(端口打开,但不能传输数据),learning(学习网桥地址被激活),forwarding(数据能被传输).

来看它的状态图:


[img]/upload/attachment/111951/26d7a85b-e37e-3f9b-af96-1b8119e7481f.jpg[/img]

这里要注意每个状态的转化都会启动一个相应的定时器。

每个网桥和端口的角色以及状态都依赖于一些设置的参数,这些参数都有默认值,可是也能通过用户控件来改变。

Bridge ID(网桥id),Port ID(端口id)。

而下面的几个参数是用来改变网桥和端口的优先级:

Port cost(端口的权重,值越小,权重越大),Timers(stp使用每个端口,每个网桥都有定时器).

下面来看参数的构成(这里是802.1t,他是改变了一些位的表示,相比于802.1D):


[img]/upload/attachment/111968/c7decf2e-f665-3533-b11e-ce1d687585a2.jpg[/img]

可以看到多了system id位,有了它就可以用4096个不同的网桥id来共享相同的mac地址,之前的话就需要4096个mac地址。这里要注意4096不是一个随机的数字,它表示了在802.1Q协议中最大的vlans数目。

802.1t的改变并没有影响stp,从他的观点来看,桥id就是一个8字节的值,端口id就一个2字节的值。它只是影响了用户空间的config工具。

下面来介绍BPDUs

BPDUS分为两种类型:

1 Configuration BPDU

主要用来防止回路。

2 Topology Change Notification (TCN) BPDU

当整个网络拓扑改变的时候,一个网桥发给根节点网桥 。比如在当前网络加入一个新的网桥。

来看他们帧的结构:


[img]/upload/attachment/111970/eab6d8ff-d6ee-3eae-9380-b88bcce8fd54.jpg[/img]

这里的protocol id和version字段是为了标示stp,rstp还有mstp这几个的区别(后两种都是stp协议的增强),其中后两种linux内核还没有实现。


[img]/upload/attachment/111972/993217be-1a2b-3fe8-95d8-752ba60ae676.jpg[/img]

通过上面的帧的结构那张图我们能看到一个configuration bpdu的所有域,这里重点看一下它的priority vector,它又4个字段组成:

Root Bridge ID, Root Path Cost, Bridge ID, and Port ID,而两个优先级向量之间的比较是每个字段依次比较的。也就是说通过这个我们就能确定根节点。

接下来看当一个网络拓扑改变后会发生什么事。


[img]/upload/attachment/111979/b1018289-b00e-3b88-a22f-c6886fd68d9a.jpg[/img]


在上面的这个图中,a2和d1中的网络断掉了,此时a2将会连接到d2.

当改变后a2将会开启定时器然后发送tcn到d2,然后d2也会开启定时器,发送tcn到c1,当c1接收到tcn后,他会发送一个config bpdu with tca flag,当a2接收到这个帧后,就会关闭定时器,然后此次拓扑修改就完成。


最后我们来看一下当新加入一个网桥后,会出现的情况。

每一个新加入的网桥都会首先认为自己是根节点,因此它就会发送一个config bpdu,然后他也会接收到一个根节点传过来的bpdu,通过优先级向量的比较,当它的优先级低时,就会设置根节点为本身网络的根节点,而当他优先级高的时候,所有接收到它的bpdu的帧的端口也都修改相应的值。


我这里只是介绍了协议的大概,比如定时器一些都没有涉及,详细的介绍还是应该去看ieee的specifications和源码。

而另外的rstp和mstp都是思科提出来的,内核暂时还没有实现,因此这里就没有介绍。。
### 回答1: Spanning Tree Protocol(STP)是一种网络协议,用于在一个具有冗余连接的网络中,防止出现环路,确保网络拓扑结构为树形结构,从而保证数据在网络中的正常传输。STP通过计算各个网络设备之间的距离,选择一条最优路径,将其他冗余路径阻塞,从而实现网络的冗余备份和高可用性。STP是网络中非常重要的协议之一,被广泛应用于局域网、数据中心等各种网络环境中。 ### 回答2: Spanning Tree Protocol(STP)是一种网络协议,用于在含有环形拓扑结构的局域网中,自动选择并维护一棵无环的最佳路径树。STP主要用于以太网交换机上,防止数据包在环路中无限循环转发,避免广播风暴和网络拥塞的问题。 STP的主要作用是通过在局域网中选择某些端口作为根桥(Root Bridge),并为其他交换机或设备动态计算出树状结构中的最佳路径。在树状结构中,根桥作为根节点,其他交换机或设备作为子节点,通过不断发送和接收特定的BPDU(Bridge Protocol Data Unit)消息来协调构建并维护整个拓扑结构。 当网络中有环路存在时,STP通过选举确定根桥,并将不符合最佳路径的端口设置为阻塞状态,即不转发数据包。这样可以确保数据只沿着最佳路径进行转发,避免数据包在环路中循环传输。 STP的实现涉及到以下几个重要的概念: 1. 根桥(Root Bridge):被选举为整个拓扑结构的根节点,所有其他交换机向其发送BPDU消息,用于计算最佳路径。 2. 优先级(Priority):每个交换机都有一个默认优先级,用于选举根桥,具有更低优先级的交换机更有可能成为根桥。 3. 端口状态(Port State):STP定义了几种端口状态,包括阻塞、监听、学习和转发状态,用于控制数据包的转发和学习行为。 4. BPDU消息:交换机之间通过BPDU消息进行通信,包括根路径的信息、交换机的优先级、发送端口的标识等。 总而言之,Spanning Tree Protocol是一种用于解决以太网局域网中环路问题的协议,它通过选举根桥和计算最佳路径,实现了数据的有效转发和网络拓扑的稳定性。 ### 回答3: Spanning Tree Protocol(STP)是一种计算机网络中的协议,用于在交换机之间构建一个无环的树形拓扑结构,以防止数据在网络中产生环路导致的数据包循环转发问题。 当一个网络中有多个交换机时,如果没有采用STP协议,数据包在网络中可能会产生环路,导致数据包被无限循环转发,从而占据网络资源,使网络性能下降甚至瘫痪。因此,STP协议的目标就是通过选择一条最佳路径来构建一个无环的拓扑结构,从而确保数据的有效传输。 STP协议的工作原理如下:在网络中的交换机通过发送Bridge Protocol Data Units(BPDU)来交换信息,并进行路径选择。通过比较BPDU中的信息,交换机之间建立一个优先级和路径成本的关系,并选择一条路径作为根桥。其他的交换机将选择到达根桥的最短路径作为最佳路径,并将其他路径变为阻塞状态,从而消除网络中的环路。 当网络发生变化时,例如某个交换机出现故障或被添加到网络中,STP协议会自动重新计算路径,并重新选择根桥和最佳路径,以保持网络的连通性。 STP协议是一种数据链路层协议,广泛应用于以太网网络中。它能够有效解决网络中的环路问题,保证数据的正常传输,提高网络的可靠性和性能。但是STP协议的计算和重计算路径的过程会消耗一定的时间,因此在一些对实时性要求较高的网络环境中,可以采用其他快速收敛的协议替代STP。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值