当前位置:网站首页>使用STP生成树协议解决网络中的二层环路问题
使用STP生成树协议解决网络中的二层环路问题
2022-07-29 05:25:00 【虹科工业通讯事业部】
交换机之间进行互连时会产生一个封闭的物理环路,这意味着两个网络之间可能存在不止一条路径。这些环路可能是由于需要冗余路径来确保可靠性,也可能是因为错误而产生的。如果在交换机网络中出现环路的情况下,发送给主机的Broadcast 、Unknown Unicast Frame将无法到达目的地,网络也会停止服务。这种情况的出现,主要是由透明交换机的两个特点决定的:
当目标地址不在其地址表中时,继续进行泛洪;
转发帧时,副本与原始帧无法区分。没有字段(例如跳转计数器)来区分连续副本
那么,该如何解决这个问题呢?
有两种可能的解决方法,一是严禁创建带有环路的网络,二是启用某种机制,允许交换机检测拓扑中是否存在环路,从而禁用必要的接口来避免环路的产生。这就是生成树协议(STP,Spanning Tree Protocol)发挥作用的地方。生成树中的任何一对节点之间只有一个可能的路径(没有循环的树)。生成树协议的目标是在逻辑上禁用接口以始终实现生成树。

因此,为了了解网络的拓扑结构从而禁用接口,会发送生成树消息,这些消息称为BPDU(网桥协议数据单元)。BPDU 使用保留的多播地址01-80-C2-00-00-00-00,以确保非生成树交换机透明地传播它们。
生成树协议的操作流程:
- 交换机定期交换带有网络拓扑信息的BPDU。
- 每个交换机都有一个标识符 (sw-ID),它根据其 MAC 地址创建。
- 此外,每个端口都有一个标识符 (port-ID) 和与之相关的成本。
- 交换机选择具有最低 sw-ID的交换机作为树的根。它们都选择同一个。
- 每个交换机通过其接口发送BPDUs,表明其sw-ID、根交换机的sw-ID以及到达根交换机的成本。BPDU在整个网络中传播,每个交换机在转发信息时都会加上它所通过的接口的成本。
- 收到 BPDU后,每台交换机都会计算出它可以通过哪个端口才能以最低成本到达根交换机,进而决定根端口,在存在相同成本的情况下,它会选择最低的端口ID。
- 每个 LAN 都有一个指定端口,该端口是该 LAN 以最低成本访问根交换机的端口。
- 既不是根也不是指定的端口是阻塞端口。这些端口对于通信是不必要的,如果允许操作,它们会导致循环。
快速生成树协议:RSTP
传统的生成树 (IEEE 802.1D)存在收敛问题,因为拓扑更改可能需要 30 秒到几分钟。这在某些情况下是无法满足用户要求的。1998 年,快速生成树协议(RSTP,IEEE 802.1w)的标准化工作完成,这是原始协议的一种变体,可将收敛时间减少到大约6 秒。如今,传统的生成树已被宣布过时。
在RSTP中,交换机保留着通往根的第二条最低成本路径的信息,因此在发生故障时切换到新的拓扑结构要比STP协议更快。

多个RSTP:MSTP
RSTP协议已经成为在包括冗余的拓扑结构中防止二层网络出现环路的理想选择。如果网络中存在交换机,则它必须能够运行RSTP算法。
另一种有趣的冗余形式或针对环路的安全性是使用多生成树协议 (MSTP)。MSTP 是 RSTP 的扩展,可以将VLAN 分组到生成树实例中。它为数据流量提供了多条转发路径,并实现了负载均衡。

MSTP为每个VLAN组配置一个单独的生成树,允许每个VLAN有一个配置的根桥和转发拓扑结构。它在每个生成树中阻断所有可能的备用路径,只保留一条。
虹科提供了将RSTP和MSTP功能集成到网络中的技术,即虹科网管冗余交换机(MES)。这是一个具有许多配置选项的FPGA的IP核解决方案,能够支持RSTP和MSTP,可用于多种类型应用的交换机。若想了解更多关于STP协议的技术与应用,欢迎随时通过[email protected]联系我们。
边栏推荐
- Sqlyog installation and configuration tutorial
- 动态规划总结
- Leetcode 344. reverse string
- LeetCode #557.反转字符串中的单词 III
- 循环链表和双向链表
- Unity初学2——瓦片的制作以及世界的交互(2d)
- Sliding window leetcode 76. minimum covering substring (hard) 76.76. minimumwindow substring (hard)
- LeetCode #3.无重复字符的最长子串
- 寒假集训总结 (1.23~1.28) [第一梯队]
- LeetCode #1.两数之和
猜你喜欢

Leetcode 189. rotation array

LeetCode #1.两数之和

UE4 高光官方参考值

官方教程 Redshift 07 Instances and Proxy

Leetcode 83. delete duplicate elements in the sorting linked list

Official tutorial redshift 05 AOVs

官方教程 Redshift 05 AOVs

官方教程 Redshift 03 各种GI的参数和常规使用说明

LeetCode #557.反转字符串中的单词 III

虹科分享 | 测试与验证复杂的FPGA设计(2)——如何在IP核中执行面向全局的仿真
随机推荐
Computer network interview questions
Overview and summary of GI engine in redshift 024, the official tutorial
UE4 天光和反射球的原理和区别
ML10 self study notes SVM
leetcode刷题笔记 605. Can Place Flowers (Easy) 605.种花问题
官方教程 Redshift 08 Light
Unity初学3——敌人的移动控制和掉血区域的设置(2d)
Abstract encapsulation inheritance polymorphism
[beauty of software engineering - column notes] 13 | how to break the rhythm of writing code during daytime meetings and overtime?
Traditional model predictive control trajectory tracking - circular trajectory (function package has been updated)
单链表面试题
操作系统面试题
【Leetcode刷题】数组1——双指针
Official tutorial redshift 08 light
寒假集训总结 (1.23~1.28) [第一梯队]
Abstract classes and interfaces
JUC concurrent knowledge points
Rowkey设计
Leetcode notes 452. minimum number of arrows to burst balloons (medium) 452. detonate balloons with the minimum number of arrows (medium)
IDEA 实用快捷键 新手必看