交换机中的冗余链路管理

news2024/11/17 8:19:38

一 交换机冗余链路

许多交换机或交换机设备组成的网络环境中,通常使用一些备份连接,以提高网络的健全性,稳定性。备份连接也叫备份链路,冗余链路等。

为了解决共享式局域网的碰撞问题,采用了交换机构成的交换式局域网,它可以识别数据帧中的封装的MAC地址,并根据地址信息将数据交换到特定端口,这样的工作方式使交换机不同端口之间不会碰撞,即分割碰撞域。但是单点失败问题难以保证通信正常,因此需要冗余技术解决单点失败问题。

虽然使用冗余备份能够为网络带来健全性,稳定性,和可靠性等好处。但备份链路使网络存在环路。环路问题是备份链路面临的最严重的问题,将导致广播风暴,多帧复制,不稳定的MAC地址表等问题。

(1)广播风暴

广播风暴是一种由于网络上广播太多导致的特殊堵塞情况,这也可能由失常的NIC卡,设计不足的网络或桥接/交换回路导致。

如果没有回路规避服务,每个交换机就会无穷无尽地泛滥广播。这种情况通常称为网络回路,从而产生广播风暴,导致带宽浪费,严重影响网络和主机性能。消除回路的方案是通过在正常操作期间阻止四个接口中的传输或接收数据来解决的,也可以看到生成树的工作情况。

(2)重复非广播帧传输

多份非广播帧传给目的站。很多协议期望接收每个传输的单个副本,同一帧的多个副本可能导致不可恢复的错误。多数协议设计既不识别也不处理传输副本。通常利用序列号机制的协议假定多数传输失败,序列号将被循环使用。其他协议试着传输副本到上层协议——这会导致不可预测的结果。

消除回路的方案是通过在正常操作期间阻止四个接口中的传输或接收数据来解决的,这也是生成树协议的另一个目的。

(3)MAC地址表的不稳定性

当一个帧的多个副本到达交换机的不同端口时,导致网络MAC地址表信息不稳定。

当交换机在MAC地址表中因克服地址颠簸而消耗资源时,转发的数据可能被损坏,而根据交换机的内部结构,不可能处理或不可能很好处理MAC数据库的快速变化问题。

消除回路的方案也是通过在正常操作期间阻止四个接口中的传输或接收数据来解决的,阻止数据库的不稳定性是生成树协议的另一个功能。

二 生成树协议

冗余功能是高可用性分层网络拓扑的关键要素,但是在网络中配置多条路径有可能导致环路。可使用生成树协议(STP)来防止环路。

生成树协议定义在IEEE802.1d中,是一种桥到桥的链路管理协议,在防止产生自循环的基础上提供路径冗余。为了使以太网更好的工作,两个工作站之间只有一条活动路径。网络环路的发生有多种原因,最常见的是故意生成的冗余,万一一个链路或者交换机失败,会有另一个链路或者交换机替代。所以STP的主要思想是存在冗余链路时,只允许主链路激活,如果主链路因故障断开后,备用链路才会被打开。

生成书协议分为三代:第一代生成树协议STP(IEEE802.1d);第二代生成树协议RSTP(IEEE802.1w);第三代生成树协议MSTP。

STP的主要作用:避免回路,冗余备份。生成树的协议基于以下几点:

(1)有唯一的组地址(01-80-C2-00-00-00)标识一个特定LAN上的所有的交换机。这个组地址能被所有的交换机识别。

(2)每个交换机有唯一的标识。

(3)每个交换机的端口有唯一的端口标识。

对生成树的管理还需要:对每个交换机协调一个相对的优先级;对每个交换机的每个端口协调一个相对的优先级;对每个端口协调一个路径花费。

关于STP的工作原理:

首先网桥有三个典型方式:透明桥,源路由桥,源路由透明桥。网桥连接两个用同样介质存取控制方法的网段,IEEE802.1d 规范定义了透明桥。桥的两边的网段分属于不同的冲突域,却属于同一个广播域。

透明桥是指对于数据的接收端看不到路径中经由的交换机,认为数据是从发送端直接到达目的地。源路由桥是由IBM公司为它的令牌环路网络开发的。源透明路由桥是透明桥和源路由桥的结合。

在一个由透明桥桥接的网络里,存在冗余的路径就能建立一个桥回路,但桥回路对一个局域网来说是致命的。而生成树协议是一种嵌套桥协议,可以用来消除桥回路。它的工作原理是:生成树协议定义一个数据包,称为桥协议数据单元BPDU,网桥用BPDU来相互通信,并使用BPDU的相关机能来动态选择根桥和备份桥,所以桥回路被消除。

含BPDU的以太帧格式

以太网帧头包括DLC头部,LLC头部,BPDU字段,填充DLC的Padding。BPDU也经常被封装在IEEE802.q的头部后。

(1)DLC头部:长度14字节,包含 DMA , SAMA , L/T 三个字段。

* DMA:指目的MAC地址,BPDU通常采用的是Bridge group addr 网桥组多播地址,其多播目标MAC地址为:01-80-c2-00-00-00.

* SAM:指源MAC地址。

* L/T:指帧长。

(2)LLC头部:长度为3字节,包括DSAP Address,SSAP Address,Unnumbered frame 字段。

(3)BPDU:长度为32字节。

(4)DLC:长度为8字节,是为了补齐60字节边界用的DLC填充(Padding)8字节。

BDPU分为两种:包含配置信息的BPDU包,称为配置BPDU;检测到网络拓扑结构发生变化时,则要发送拓扑变化通知BPDU。

配置BPDU编码

发送拓扑变化通知BPDU帧格式

对于配置BPDU,超过35字节的部分将被忽略;对于拓扑变化通知BPDU,超过4字节的部分将被忽略掉。由配置BPDU和和发送拓扑变化通知BPDU格式可见,发送拓扑变化通知BPDU的组成部分是配置BPDU帧格式的帧头部分。

BPDU帧格式含义:

(1)Protocol Identifier: 协议ID,长度2字节,协议标识符值固定为0。

(2)Protocol Version Identifier:版本号,长度为1字节,当数值为00时,表示使用协议IEEE802.d;当数值为02时,表示使用协议IEEE802.1w。

(3)BPDU Type:消息类型,长度为1字节,配置BPDU数值为ox00,配置TCN数值为ox80。

(4)Flag:标志长度为一字节,字节最高低位用于标识TC(Topology Change ,拓扑是否变化),字节最高位用于标识TCA(Topology Change Acknowlegment,是否是拓扑变化确认信息)。

(5)Root Identifier:根ID,长度为8字节,用于表示根网桥的网桥ID,习惯写成Root ID。其包括两部分:字节的priority(根优先级)和6字节的MAC Address (根端口IP地址)组成。

(6)Root Path Cost:路径开销,长度为4字节,用于表示从交换机到达根网桥方向STP开销的叠加。如果交换机自己就是根网桥,其值为0。

(7)Bridge Identifier:网桥ID,长度为8字节,用于转发根网桥BPDU的网桥的ID,习惯写成Bridge ID。Bridge ID 包括两部分:Priority(交换机自己的优先级),MAC Addresss(交换机自己的MAC地址)其中,Priority 数值范围为0~61440,默认值为0x8000,即十进制的32768;在设定时,其值只能为"0"或"4096"的倍数,故共16个。

(8)Port Identifier:端口ID,长度为2字节,用于转发根网桥BPDU的网桥的端口ID,习惯写为Port ID。Port ID由1字节的端口优先级和1字节的端口ID组成。端口优先级的范围为0~240,默认值为128,在设定时,其值必须是"0"或"16"的倍数,总共16个。

(9)Message Age :消息老化时间,长度为2字节。

(10)Max Age:最大寿命,长度为2字节,用于记录对方有效BPDU消息的最长时间,当一段时间未收到任何BPDU,生成期到达Max Age时,网桥认为该端口连接的链路发生故障,默认20秒。

(11)Hello Time:长度为2字节,用于根桥定期发送BPDU的时间间隔,默认2秒。

(12)Forward Delay:指转发延迟,长度为2字节,通常是指网桥端口由网桥监听与学习状态改变的时间间隔,默认为15秒。

STP为解决环路和重复帧问题,会通过生成树算法(STA)堵塞可能导致环路的冗余路径(逻辑堵塞),这些物理路径仍然实际存在,一旦需要启用此类路径来抵消网络电缆和交换机故障的影响时,STP会重新计算路径,将必要的端口解除堵塞,使冗余路径进入活动状态。

生成树形成方法如下:

(1)决定根交换机(根的上端口都是根端口)

  • 所有交换机首先会认为自己是根。

  • 全网选取Bridge ID 最小的交换机为根交换机。

  • 每个交换机唯一的桥ID由交换机优先级和MAC地址组合而成。

  • 交换机优先级和Mac地址越小,则Bridge ID越小。

  • 默认优先级为32678。

(2)决定根端口

  • 比较Root Path Cost(路径开销是到根桥的路径上所有端口的开销总和,其计算方法是从根交换机进入到拓扑中其他交换机的过程中,端口开销的累加。路径开销最低的会成为首选路径,所有其他冗余路径都会被阻塞。

  • 比较相邻交换机的Bridge ID。

  • 比较本地Port ID。

  • 比较交换机端口的物理编号(如F0/1或G0/1等)。

开销->对端BID->对端PID->本端PID

(3)决定指定交换机

(4)决定指定端口

指定交换机和LAN相连的端口称为指定端口;除根端口之外,可以在网络中获准转发流量的所有端口,都指的是指定端口。交换机确定哪台交换机上的哪个端口作为特定LAN网段的特定端口时所采用的步骤如下:

  • 使用网段上具有到达根交换机的最低累加路径成本的已连接交换机。

  • 如果两台交换机之间的累加路径成本相同,那么将选择具有最低交换机ID的交换机

  • 如果碰巧是相同的交换机,但有两个到达LAN网段单独连接,那么将选择具有最低优先级的交换机端口。

  • 如果交换机上端口的优先级仍然相同,那么选择该交换机上具有最低物理编号的端口。

  • 根交换机上每个活动端口都是指定端口

(5)决定非指定端口

除了根端口和指定端口之外所有端口都被称为未指定端口,其是被堵塞的交换机端口,不会转发数据帧,也不会使用源地址填充MAC地址。

(6)确定端口状态

运行生成树协议的交换机端口具有4种状态:转发,学习,监听和堵塞,并且总处于四种状态之一。

(1)堵塞:接收BPDU,不学习MAC地址,不转发数据帧,所有端口为堵塞状态,由交换机决定哪个端口转为转发状态。

(2)监听:接收BPDU,不学习MAC地址,不转发数据帧,交换机向其他交换机通告此端口,参与选举根端口和指定端口,这种状态属于临时状态。

(3)学习:接收BPDU,学习MAC地址,不转发数据帧,这种状态属于临时状态。

(4)转发:可以正常的传送和接受数据,数据帧。

确定完根端口和指定端口后进入转发状态,其它冗余非指定端口设为堵塞状态,这样一个生成树的拓扑结构也就产生了。

好了,以上内容就是海翎光电关于交换机的冗余链路管理这个问题的相关详细介绍,希望能对大家有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/339153.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言静态库、动态库的封装和注意事项

1、动态库、静态库介绍 参考博客:《静态库和动态库介绍以及Makefile》; 2、代码目录结构和编译脚本 参考博客:《实际工作开发中C语言工程的目录结构分析》; 3、编写库的流程 (1)明确需求:需求是否合理、需求的使用场景、需求可能遇…

chatgpt:人工智能的一次突破,如何正确的创建用户及使用

Chatgpt的正确创建及使用 chatgpt最近在国内也开始有声音了,其实早在去年12月初,该网站就已经可以在国外进行使用,而且很快渗透到了国外各行各业各个年龄段 ,最火的当属国外很多学生用它来生成论文,关键是语句通顺&am…

如何开启多个独立Chrome浏览器

一、简介 作为测试或者开发人员,有些情况下会用到 Chrome 浏览器,但有时是同一个 Chrome 浏览器无法为我们提供隔离开的不同环境。这样 我们就需要清理 cache 、切换账号等,降低了我们的工作效率。今天的主题是如何开启多个独立的 Chrome 浏…

LayUI模板引擎渲染数据

前端模板引擎介绍 接上节Spring boot项目开发实战——(LayUI实现前后端数据交换与定义方法渲染数据) 模板引擎能简化开发,极大提高效率,小编之前使用过JSP和Thymeleaf,以及python的jinja2,这些是后端的模…

spring(二)-----------如何注入bean

我们从第三方框架mybatis为引,看看如何往spring中注入一个bean 1、纯mybatis开发生成一个mapper对象 如果不使用spring的情况下,mybatis想生成一个mapper对象大概需要做下面的操作: 假设我们有了一个TMapper接口,此时获取该map…

12款开源数据资产(元数据)管理平台选型分析(三)

如上,是ChatGPT的百度指数和微信指数,继2022年12月上旬技术圈火热之后,因为微软、谷歌等巨头的推广加持,ChatGPT成为全球大众热源的话题。各大媒体都在消费这波舆论红利,打开微信公众号,劈天盖地各种姿势的…

前后端学习

最近和锴哥想搞一下前后端接口的事儿,但是不会,所以打算再学学前后端的基础知识,之后好抄作业,做缝纫机;达哥觉得我浮躁,这次一定要支棱起来;这次开始,面向openai学习。 前后端学习1…

ChatGPT (可能)是怎么炼成的

学习自李宏毅老师的课https://www.youtube.com/watch?ve0aKI2GGZNg 1.学习文字接龙 学习方式 GPT只需要在网上阅读大量的句子,不需要人工标注即可学习到大量句子接龙的知识 然而实际上,“你好”后面可以接的字有很多。实际上,GPT学的就是…

3、Go基础数据类型

目录一、Go数据类型二、字符串三、强制类型转换一、Go数据类型 基础数据类型 类型长度(字节)默认值说明bool1falsebyte10uint8,取值范围[0,255]rune40Unicode Code Point, int32int, uint4或8032 或 64 位,取决于操作系统int8, uint810-128 ~ 127, 0 ~…

Freemarker介绍

2. Freemarker介绍 FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与 Web 容器无关,即在 Web 运行时,它并不知道 Servlet 或 HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成 XML…

Python数据结构:概念、栈

1.概念 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中。 比如:列表、集合与字典等都是一种数据结构。 N.Wirth:“程序数据结构算法’ 2.分类 数据结…

基于comsol软件弯曲单模光纤模拟仿真

在本节中,主要基于实验室实际光纤单模圆柱光纤进行模拟,与comsol案例库文件在分析过程和建模有些差异: 模拟主要通过以下三个步骤进行:模型的几何构建、物理场的添加研究、结构处理分析来进行。 下面是第一步骤:几何…

unity2022.1.8之后版本的新的输入行为控制对象变化

文章目录unity2022.1.8之后版本的新的输入行为控制对象变化怎么导入?如何使用?unity2022.1.8之后版本的新的输入行为控制对象变化 我们先了解大概的逻辑。我们要设置触发行为的方式并且让他和对象的行为绑定,再将行为和对象绑定,…

SpringBoot开发规范部分通用模板+idea配置【项目通用-1】

SpringBoot开发规范通用模板 1 分页插件使用 通过MybatisPlus配置分页插件拦截器 Configuration MapperScan("com.xuecheng.content.mapper") public class MybatisPlusConfig {//定义分页的拦截器Beanpublic MybatisPlusInterceptor getMybatisPlusInterceptor() {…

Pascal版本的 - freopen

参数 filename -- 这是包含要打开的文件的名称的字符串。 mode -- 这是包含文件访问模式的字符串。它包括 - 高级编号模式&说明1个 “r” 打开文件进行读取。该文件必须存在。 2个 “w” 创建一个用于写入的空文件。如果已存在同名文件,则删除其内容并将该文件…

【Java容器(jdk17)】ArrayList深入源码,就是这么简单

ArrayList深入源码一、ArrayList源码解析1. MIXIN 的混入2. 属性说明3. 构造方法4. 其他方法(核心)iterator 和 listIterator 方法add方法remove 方法sort方法其他二、ArrayList 为什么是线程不安全的?体现哪些方面呢?三、ArrayLi…

(day12) 自学Java——集合进阶(双列集合)

目录 1.双列集合特点 Map遍历三种方式 2.HashMap 3.LinkedHashMap 4.TreeMap 5.源码解析 6.可变参数(形参个数可变) 7.Collections 8.综合练习 1.双列集合特点 ①双列集合一次需要存一对数据,分别为键和值 ②键不能重复,值可以重复 ③键和值是一…

全志H616——用C语言的形式操作数据库

sqlite3_open(const char *filename, sqlite3 **ppDb)该例程打开一个指向 SQLite 数据库文件的连接,返回一个用于其他 SQLite 程序的数据库连接对象。sqlite3_close(sqlite3*)该例程关闭之前调用 sqlite3_open() 打开的数据库连接。所有与连接相关的语句都应在连接关…

【Linux】环境变量本地变量

文章目录环境变量基本概念常见环境变量和环境变量相关的命令为什么带./运行我们的可执行程序本地变量环境变量的组织方式环境变量具有全局属性环境变量 基本概念 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 如:我们…

gRPC的简单应用

gRPC的简单应用 gRPC是由开发的一个高性能、通用的开源RPC框架,主要面向移动应用开发且基于HTTP/2协议标准而设计,同时支持大多数流行的编程语言。 官网:https://grpc.io/ 安装protoc 工具 https://protobuf.dev/ 安装Go插件 旧版本直接…