首页IT科技stp基本工作原理(STP详解)

stp基本工作原理(STP详解)

时间2025-08-04 18:55:31分类IT科技浏览6208
导读:STP STP全称为“生成树协议”(Spanning Tree Protocol),是一种网络协议,用于在交换机网络中防止网络回路产生,保证网络的稳定和可靠性。它通过在网络中选择一条主路径(树形结构),并阻塞其他可能形成回路的路径,以避免数据包在网络中产生无限循环,从而实现网络的高效和可靠...

STP

STP全称为“生成树协议               ”(Spanning Tree Protocol)                ,是一种网络协议                       ,用于在交换机网络中防止网络回路产生       ,保证网络的稳定和可靠性                。它通过在网络中选择一条主路径(树形结构)        ,并阻塞其他可能形成回路的路径                       ,以避免数据包在网络中产生无限循环               ,从而实现网络的高效和可靠传输                       。STP在交换机之间进行通信和协调        ,确保网络拓扑结构的稳定和可用性                       ,并且能够自动适应网络拓扑结构的变化       。STP是一种基于链路层的协议               ,广泛应用于各种类型的局域网和数据中心网络中        。

技术背景

在一个有多个交换机或者桥接器的网络中,当存在多条路径连接同一组设备时                       ,可能会发生环路                      ,数据包会不断循环在这些路径上传递,导致网络堵塞或者数据包丢失                       。这时候STP就可以检测并消除环路                ,保证数据包能够正确地传输               。

一个缺乏冗余性设计的网络:任何一个网络节点出现故障                      ,会造成单链路故障               、单设备故障       ,使整个网络瘫痪        。

引入冗余性的同时也引入了二层环路:网络的冗余性增强了                ,但是却出现了二层环路                       。

常见的二层环路的原因有:错误地连接设备之间的互联线缆                       、配置错误等               。

STP用于构建一个无环的网络拓扑结构                       ,防止数据包在网络中出现环路并造成广播风暴。STP的主要作用是在网络中选择一个最优的路径       ,以避免广播风暴和冗余数据包的产生        ,同时提高网络的可靠性和稳定性                       。

假设有一个大公司                       ,公司的总部和各个分部之间需要进行通信和数据传输                      。为了保证通信的可靠性和安全性               ,每个分部都建立了多个交换机        ,这些交换机通过不同的链路连接着不同的主机和服务器。

然而                       ,由于链路的冗余和网络的复杂性               ,可能会出现链路环路的情况,也就是说                       ,某些交换机之间会存在多条路径                      ,而这些路径上又连接了多个交换机,形成了一个环路                。这样一来                ,数据包就可能在环路上不停地循环                      ,无法到达目的地       ,从而导致通信故障                      。

为了解决这个问题                ,公司决定使用 STP 技术来避免链路环路的出现       。通过在交换机之间建立逻辑上的拓扑结构                       ,STP 可以选择一条最佳的路径       ,同时屏蔽其他的路径        ,从而避免数据包在环路上不停地循环                       ,保证了数据的可靠传输                。这样一来               ,公司的通信和数据传输就更加可靠和高效了                       。

作用:

用于在网络中防止数据包在交换机之间形成环路        ,从而导致网络故障和拥塞       。在一个具有冗余链路的网络中                       ,如果不进行处理               ,数据包就会在多个路径上无限制地循环发送,最终导致网络崩溃        。

STP的基本思想是通过选择一条最优路径                       ,从而构建一棵树形结构                      ,从而消除环路                       。在这个树形结构中,只有一条路径连接任何两个设备                ,这保证了数据包不会形成环路                      ,从而确保网络的正常运行               。

STP的实现需要交换机之间的通信       ,它们需要交换信息来建立树形结构并确定根桥(Root Bridge)                ,即网络中所有桥中最顶层的桥        。在这个过程中                       ,每个桥都会根据所接收到的信息计算出最短路径       ,并将这个信息向其他桥广播                       。如果一个桥接收到了另一个桥发送的更优信息        ,它将更新它自己的信息                       ,并向其他桥广播这个新的信息               。

当所有桥都收到了足够的信息后               ,它们将会选择一个桥作为根桥        ,并选择一条路径到根桥的最短路径                       ,其余的路径都将被阻止。这个过程称为“生成树算法                       ”                       。通过STP               ,网络管理员可以更好地控制网络,减少故障和拥塞                       ,并提高网络的可靠性和稳定性                      。

生成树算法(Spanning Tree Algorithm)是一种网络算法                      ,其目的是在一个连通图中选择一棵生成树,使得该生成树包含原图的所有节点                ,且不存在环。

在计算机网络中                      ,生成树算法通常用于构建一个树形拓扑结构       ,以避免网络中的环路和冗余链路                。生成树算法的实现通常通过网络设备上的协议来完成                ,其中最常用的就是Spanning Tree Protocol(STP)                      。

STP是一种生成树算法                       ,它通过将所有节点的连接关系看作一个图来计算生成树       。首先       ,在该图中选取一个节点作为根节点        ,然后依次对每个非根节点进行计算                       ,找到连接该节点的链路中的最短路径               ,将该链路加入生成树                。如果该链路导致生成树中出现了环路        ,则通过从生成树中删除一条链路来解决环路问题                       。这个过程一直重复                       ,直到所有的非根节点都被加入了生成树中       。

STP算法的实现可以通过以下步骤来完成:

选定一个根节点:在网络中选定一个根节点               ,将其作为生成树的根        。 计算最短路径:对于每个非根节点,计算连接该节点的链路中的最短路径                       ,将该链路加入生成树                       。 检测环路:检测生成树中是否存在环路                      ,如果存在,则通过删除一条链路来解决环路问题               。 计算端口状态:根据生成树的计算结果                ,对网络设备上的端口进行状态计算                      ,决定哪些端口需要开启或关闭        。

STP算法的实现可以保证网络中不存在环路和冗余链路       ,从而提高网络的可靠性和稳定性                       。

例子:

假设有一个局域网                ,其中有5台交换机                       ,它们分别是Switch1        、Switch2               、Switch3                       、Switch4和Switch5       ,它们通过多条链路相互连接               。为了保证数据的传输不出现环路        ,我们需要在交换机之间构建一棵生成树。假设在这个局域网中                       ,Switch1是根交换机               ,那么生成树的过程如下:

Switch1作为根交换机        ,将所有的端口都设为根端口                       ,并发送BPDU(Bridge Protocol Data Unit)报文               ,通知其他交换机它是根交换机                       。 Switch2        、Switch3和Switch4收到BPDU报文后,比较自己的参数与BPDU报文的参数                       ,发现Switch1的参数更优                      ,因此它们都将自己的根端口设为与Switch1相连的端口,并将自己的非根端口设为指向根端口的端口                ,然后再向其他交换机发送BPDU报文                      ,以便其他交换机更新生成树的信息                      。 Switch5收到BPDU报文后       ,发现Switch1的参数更优                ,因此它将自己的根端口设为与Switch1相连的端口                       ,并将自己的非根端口设为指向根端口的端口       ,然后向其他交换机发送BPDU报文。 在上述过程中        ,如果有多条链路具有相同的参数                       ,那么根据STP算法中的端口优先级和端口号来决定哪条链路是根端口               ,哪些是指向根端口的非根端口                。 经过以上步骤        ,生成树构建完成                       ,其中Switch1作为根交换机               ,Switch2       、Switch3                       、Switch4和Switch5成为根交换机的子节点                      。这样,在数据传输过程中                       ,就可以通过生成树来保证数据只能按照一个方向流动                      ,避免了出现环路和数据丢失等问题       。

需要注意的是,STP有多个版本                ,包括STP                、RSTP       、MSTP等                      ,它们都有不同的特点和用途                。此外       ,由于STP需要进行广播和计算                ,因此它可能会对网络性能产生一定的影响                       ,因此在设计网络时需要权衡STP的优点和缺点       ,选择适当的版本和配置                       。

BPDU

BPDU是指桥接协议数据单元(Bridge Protocol Data Unit)        ,是在网络中由网桥或交换机发送的信息单元                       ,用于进行交换机之间的通信               ,以实现网络拓扑的自动发现和动态调整       。

当交换机启用STP协议(Spanning Tree Protocol)时        ,交换机会通过发送BPDU来交流网络拓扑信息                       ,并利用这些信息计算生成一个树型的拓扑结构               ,从而避免出现网络环路而导致的广播风暴和网络故障        。BPDU包含了发送者的标识                      、端口的标识                、桥的标识和优先级、BPDU类型以及其他必要的信息                       。

交换机通过BPDU实现以下功能:

发现交换机之间的链路关系               。 选举根交换机,确定整个网络的拓扑结构        。 计算最短路径                       ,防止出现环路                       。 监控链路状态                      ,检测链路故障               。 动态调整网络拓扑结构,实现快速恢复。

BPDU包括以下内容:

Protocol Identifier(2 bytes):协议标识符                ,表示该BPDU是由哪种协议生成的                      ,STP的标识符为0x0000                       。 Protocol Version Identifier(1 byte):协议版本标识符       ,表示生成BPDU的STP版本                ,STP版本1为0x00                       ,STP版本2为0x02                      。 BPDU Type(1 byte):BPDU类型       ,包括配置BPDU(0x00)                      、TCN BPDU(Topology Change Notification        ,0x80)                       、RST BPDU(Rapid Spanning Tree                       ,0x02)等。 Flags(1 byte):标志位               ,包括TCA(Topology Change Acknowledgment)、Proposal               、Port Role                       、Learning        、Forwarding和Agreement等                。 Root Identifier(8 bytes):根桥的优先级和MAC地址        ,用于在网络中选举根桥                      。 Root Path Cost(4 bytes):从发送BPDU的桥到根桥的路径代价       。 Bridge Identifier(8 bytes):发送BPDU的桥的优先级和MAC地址                。 Port Identifier(2 bytes):发送BPDU的端口编号                       。 Message Age(2 bytes):BPDU已经存在的时间                       ,以BPDU为单位计算               ,最大值为0x1FFF       。 Maximum Age(2 bytes):BPDU在网络中的最大生存时间,达到该时间BPDU会被认为是过期的                       ,以BPDU为单位计算                      ,最大值为0x1FFF        。 Hello Time(2 bytes):发送两个连续BPDU之间的时间间隔,以BPDU为单位计算                ,最大值为0x1FFF                       。 Forward Delay(2 bytes):收到TCN BPDU后                      ,等待网络稳定的时间       ,以BPDU为单位计算                ,最大值为0x1FFF               。

原理

STP(Spanning Tree Protocol)是一种用于创建环路无环路网络拓扑结构的协议        。其主要原理是通过选举一个根桥(root bridge)和将其他桥连接到这个根桥的方式来消除网络中的环路                       。

在STP中                       ,每个桥的端口会被分为两种类型:根端口(root port)和指定端口(designated port)               。其中       ,根端口是连接到根桥的端口        ,而指定端口是连接到其他桥的端口。通过选举根桥以及为每个桥分配根端口和指定端口                       ,可以实现一个无环路的拓扑结构                       。

具体实现过程如下:

选举根桥:在网络中               ,所有的桥会通过发送BPDU(Bridge Protocol Data Unit)来选举根桥                      。BPDU包含了桥的ID和优先级等信息        ,其中ID是由优先级和MAC地址组成的                       ,优先级越高的桥被选为根桥。选举完成后               ,根桥会向其他桥发送BPDU,其他桥也会将其接收到的BPDU向其他桥转发                       ,以保持网络拓扑的更新和同步                。 计算根端口和指定端口:每个桥根据收到的BPDU计算出到根桥的距离(path cost)                      ,距离越短的桥被选为根端口                      。同时,每个桥还需要选出一个或多个设计端口                ,这些设计端口会将数据帧转发到其他桥       。 收敛过程:在网络拓扑发生变化时                      ,STP会通过重新选举根桥和重新计算端口的方式重新构建拓扑结构       ,直到网络达到一个无环路的状态                。这个过程被称为收敛过程                ,需要一定的时间来完成                       。

STP的主要作用是保证网络中不会出现环路                       ,从而避免数据包的不必要循环和丢失       。同时       ,STP还能够自动适应网络拓扑的变化        ,确保网络拓扑结构的稳定和可靠        。

生成树算法 —— 选举根交换机

根交换机的选举条件:网桥ID(BID)最小者当选                       。 网桥ID(BID)由以下两部分构成: 优先级 范围 0 - 61440 步长 4096 默认值 32768 交换机的基本MAC地址 网桥ID(BID)的比较方法 优先级取值越小                       ,则网桥ID(BID)就越小               。 生成树算法 —— 选举根端口 在一个非根交换机上选举出一个根端口RP(Root Port)        。并且只能是一个                       。 根端口RP用于接收根交换机发来的BPDU               。也用于转发普通流量。 根端口RP的选举条件: BPDU接收端口到根交换机的路径成本最小                       。 对端的网桥ID(BID)最小                      。 对端的端口ID(PID)最小。 优先级 范围 0 - 240 步长 16 默认值:128 端口号 链路带宽 成本值 4MB/s 250 10MB/s 100 16MB/s 62 100MB/s 19 1GB/s 4 10GB/s 2 生成树算法 —— 选举指定端口并阻塞备用端口 在每个段上选出一个指定端口DP(Designated Port)并且只能是一个                。 指定端口DP用于转发根交换机发来的BPDU               ,也用来转发普通流量                      。 指定端口DP的选举条件: 根交换机的所有端口都是指定端口DP       。 根端口的对端端口一定是指定端口DP                。 BPDU转发端口到根交换机的路径成本最小                       。 本端的网桥ID(BID)最小       。 剩余端口成为备用端口AP(Alternate Port)        ,将它们阻塞        。 端口状态(Port States):

端口状态是指在一个交换机的端口与跟桥之间的关系                       。STP确保在一个桥接网络中只有一条活动的路径                       ,从而避免了环路问题               。端口状态共有5种:

Disabled(禁用状态):禁用状态的端口不会参与 STP 的计算               ,处于物理层断开状态        。 Blocking(阻塞状态):端口接收到 BPDU (Bridge Protocol Data Unit) 数据帧后,端口进入阻塞状态                       ,不会转发数据                      ,但会继续监听网络中的 BPDU,阻止环路的产生                       。 Listening(监听状态):端口接收到 BPDU 数据帧后                ,进入监听状态               。此时                      ,端口仍然不会转发数据       ,但会继续监听 BPDU                ,此状态通常持续 15 秒。 Learning(学习状态):端口在监听状态一段时间后                       ,进入学习状态       ,开始学习与之相连的设备 MAC 地址        ,但不会转发数据                       。 Forwarding(转发状态):学习完毕后                       ,端口进入转发状态               ,开始转发数据                      。在这个状态下        ,端口将正常工作                       ,将数据帧从一个端口转发到另一个端口。 在阻塞状态下               ,端口只能接收bpdu报文                。从这种状态转变可能需要20秒; 在监听状态下,交换机判断是否有其他路径到达根桥                      。向前延迟                       ,持续

15秒       。监听状态:用户数据不被转发                      ,MAC地址不被学习; 在学习状态下,用户数据不会被转发                ,但MAC地址会从看到的任何流量

中学习                。学习状态持续15秒,也称为前向延迟; 转发状态转发用户数据                      ,继续学习MAC地址                       。bpdu仍在处理;

cost(成本值)的计算公式是

cost = 200000 Kbps / port_speed

因此       ,可以看出 Cisco 交换机默认的 cost 值是由带宽决定的                ,而带宽越大                       ,成本值越小       ,这也符合了生成树算法的本质        ,即选择最短路径       。同时                       ,由于交换机的速度越来越快               ,所以在一些新型的 Cisco 交换机中        ,可能会将默认的 reference bandwidth 值提高到 100Gbps 或更高的数值                       ,以适应新的硬件环境        。

其中               ,port_speed是指端口速率                       。对于各种常见的端口速率,对应的成本值如下:

端口号 链路带宽 成本值 4MB/s 250 10MB/s 100 16MB/s 62 100MB/s 19 1GB/s 4 10GB/s 2

案例

案例1:

案例2:

案例3:

声明:本站所有文章                       ,如无特殊说明或标注                      ,均为本站原创发布               。任何个人或组织,在未征得本站同意时                ,禁止复制               、盗用                       、采集        、发布本站内容到任何网站       、书籍等各类媒体平台        。如若本站内容侵犯了原著者的合法权益                      ,可联系我们进行处理                       。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
vue获取手机定位(学会在Vue项目中插入高德地图JS API与地图的相关设置,看这一篇就够了~(保姆级精简教学)) 提升关键词排名服务(如何通过关键词排名方式提高网站权重)