STP详解

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

STP

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

文章目录

技术背景

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

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

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

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

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

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

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

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

作用

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

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

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

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

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

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

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

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

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

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

例子

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

  1. Switch1作为根交换机将所有的端口都设为根端口并发送BPDUBridge Protocol Data Unit报文通知其他交换机它是根交换机。
  2. Switch2、Switch3和Switch4收到BPDU报文后比较自己的参数与BPDU报文的参数发现Switch1的参数更优因此它们都将自己的根端口设为与Switch1相连的端口并将自己的非根端口设为指向根端口的端口然后再向其他交换机发送BPDU报文以便其他交换机更新生成树的信息。
  3. Switch5收到BPDU报文后发现Switch1的参数更优因此它将自己的根端口设为与Switch1相连的端口并将自己的非根端口设为指向根端口的端口然后向其他交换机发送BPDU报文。
  4. 在上述过程中如果有多条链路具有相同的参数那么根据STP算法中的端口优先级和端口号来决定哪条链路是根端口哪些是指向根端口的非根端口。
  5. 经过以上步骤生成树构建完成其中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实现以下功能

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

BPDU包括以下内容

  1. Protocol Identifier2 bytes协议标识符表示该BPDU是由哪种协议生成的STP的标识符为0x0000。
  2. Protocol Version Identifier1 byte协议版本标识符表示生成BPDU的STP版本STP版本1为0x00STP版本2为0x02。
  3. BPDU Type1 byteBPDU类型包括配置BPDU0x00、TCN BPDUTopology Change Notification0x80、RST BPDURapid Spanning Tree0x02等。
  4. Flags1 byte标志位包括TCATopology Change Acknowledgment、Proposal、Port Role、Learning、Forwarding和Agreement等。
  5. Root Identifier8 bytes根桥的优先级和MAC地址用于在网络中选举根桥。
  6. Root Path Cost4 bytes从发送BPDU的桥到根桥的路径代价。
  7. Bridge Identifier8 bytes发送BPDU的桥的优先级和MAC地址。
  8. Port Identifier2 bytes发送BPDU的端口编号。
  9. Message Age2 bytesBPDU已经存在的时间以BPDU为单位计算最大值为0x1FFF。
  10. Maximum Age2 bytesBPDU在网络中的最大生存时间达到该时间BPDU会被认为是过期的以BPDU为单位计算最大值为0x1FFF。
  11. Hello Time2 bytes发送两个连续BPDU之间的时间间隔以BPDU为单位计算最大值为0x1FFF。
  12. Forward Delay2 bytes收到TCN BPDU后等待网络稳定的时间以BPDU为单位计算最大值为0x1FFF。

原理

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

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

具体实现过程如下

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

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

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

  1. 根交换机的选举条件网桥IDBID最小者当选。
  2. 网桥IDBID由以下两部分构成
    • 优先级
      • 范围 0 - 61440
      • 步长 4096
      • 默认值 32768
    • 交换机的基本MAC地址
  3. 网桥IDBID的比较方法
    • 优先级取值越小则网桥IDBID就越小。

生成树算法 —— 选举根端口

  1. 在一个非根交换机上选举出一个根端口RPRoot Port。并且只能是一个。
  2. 根端口RP用于接收根交换机发来的BPDU。也用于转发普通流量。
  3. 根端口RP的选举条件
    • BPDU接收端口到根交换机的路径成本最小。
    • 对端的网桥IDBID最小。
    • 对端的端口IDPID最小。
      • 优先级
        • 范围 0 - 240
        • 步长 16
        • 默认值128
      • 端口号
  • 链路带宽成本值
    4MB/s250
    10MB/s100
    16MB/s62
    100MB/s19
    1GB/s4
    10GB/s2

生成树算法 —— 选举指定端口并阻塞备用端口

  1. 在每个段上选出一个指定端口DPDesignated Port并且只能是一个。
  2. 指定端口DP用于转发根交换机发来的BPDU也用来转发普通流量。
  3. 指定端口DP的选举条件
    • 根交换机的所有端口都是指定端口DP。
    • 根端口的对端端口一定是指定端口DP。
    • BPDU转发端口到根交换机的路径成本最小。
    • 本端的网桥IDBID最小。
  4. 剩余端口成为备用端口APAlternate Port将它们阻塞。

端口状态Port States

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

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

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

cost = 200000 Kbps / port_speed

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

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

  1. 端口号
链路带宽成本值
4MB/s250
10MB/s100
16MB/s62
100MB/s19
1GB/s4
10GB/s2

案例

案例1
在这里插入图片描述
案例2
在这里插入图片描述
案例3
在这里插入图片描述

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6