当前位置: 首页 > news >正文

【华为】Smart-Link基础知识

Smark-Link技术

Smark-Link(灵活链路or备份链路,华为/华三 私有用)

Smark-Link定义

Smark-Link,又叫备份链路。一个Smark Link由两个接口组组成,其中一个接口作为另一个的备份。Smark-Link常用于双上行组网,提供可靠高效的备份与高速的切换机制。

Smark-Lin的目的

下游设备连接到上游设备,当采用单上行方式时,若出现单点故障,会造成业务中断。若采用双上行方式,将一台下游设备同时连接到两台上游设备,可降低单点故障对网络的影响。(有点像VRRP,但VRRP是网关冗余,Smartlink是链路的冗余)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-htnZROZu-1682930522581)(./图库/Smark-Link图库/smart-link示意图.png)]

如图所示,SwitchD采用双上行方式连接到SwitchB和C,这样SwitchD到达SwitchA的链路就可以有两条(SwitchD–>SwitchB–>SwitchA和SwitchD–>SwitchC–>SwitchA),但是网络中的环路会产生网络风暴。在SwitchA上配置Smark Link,正常情况下,可实现Interface2所在的链路作为Interface1所在链路的备份。若实例1所在链路发生故障,SmartLink会自动将数据流量切换到实例2所在链路,保证业务不中断。

在此类组网中采用SmarkLink技术有以下优点:

1、能够实现在双上行组网的两条链路正常情况下,一条链路处于转发,而另一条处于堵塞待命状态,从而避免环路的不利影响。

2、配置和使用更为简洁,便于用户操作。

3、当主用链路发生故障后,流量会在毫秒级的时间内迅速切换到备用链路上,极大限度的保证了数据的正常转发。

Smark-Link基本概念

SmarkLink通过两个端口互相配合工作来实现功能。这样的一对端口组储层了一个SmarkLink组。为了区别一个SmarkLink组中的两个端口,我们将其中的一个叫做主端口,另一个叫做从端口。同时利用Flush报文、SmarkLink实例和控制VLAN等机制,以更好地实现SmarkLink的功能(包括负载)

SmarkLink组

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WHT80fiP-1682930522582)(./图库/Smark-Link图库/smart-link示意图.png)]

SmarkLink组

SmarkLink组中,一个组内最多可包含两个接口,其中一个为主接口,另一个为从接口。正常情况下,只有一个接口处于Active转发状态,另一个接口被堵塞,处于待命Inactive状态。

看图一(上图)可以发现,SwitchD中interface1为SmarkLink的主接口,Interface2被配置为从接口(也叫Slave接口)

主接口/从接口

当SmarkLink组中的两个接口都处于UP状态时,主接口将由优先进入转发状态,而从接口将保存待命状态。当主接口所在的链路发生过故障时,从接口将切换为转发状态。在发生链路切换后若主链路恢复正常,但此时为了保证链路的稳定是不会主动进行抢占,我们可以通过配置抢占或链路回切功能进行切换。

正常转发情况

链路故障情况

回切时间配置

抢占配置

主接口并不一直处于转发状态,发生链路切换后,如果从接口已经处于转发状态那么此时尽管主链路恢复正常,也只能处于待命状态,直到下次链路发生切换(当然可以配置抢占功能

Flush报文

当链路组发生故障链路切换时,原有的转发表项将不适用于新的拓扑网络,需要整网进行MAC表项和ARP表项的更新。这时,SmarkLink组就要通过FLUSH来告知其他设备进行MAC和ARP和ND(ipv6)表项的刷新操作,如图SmarkLink示意图,当链路发生切换时,SwitchD会发送组播FLUSH报文通知SwitchA,B,C进行MAC和ARP表项的更新。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mzq783do-1682930522583)(./图库/Smark-Link图库/smart-link示意图.png)]

控制VLAN(Control VLAN)

1、控制VLAN的发出

发送控制VLAN是链路备份组用于广播FLUSH报文的VLAN。如图SmarkLINK所示,如果在SwitchD上开启了FLUSH报文发送功能,当发生链路切换时,设备会在发送控制VLAN内广播发送FLUSH报文

2、控制VLAN的接收

接收控制VLAN时上游设备用于接收并处理FLUSH报文的VLAN。如图Smark所示,如果上游设备ABC能够识别FLUSH报文,并开启了FLUSH报文接收处理功能,当发生链路切换时,上游设备会处理收到的属于接收控制VLAN的FLUSH报文,进而刷新MAC和ARP表。

当上游设备收到FLUSH报文时,判断该FLUSH报文的发送控制VLAN是否在收到报文的接口配置的接收控制VLAN列表中,上游设备才会接受并刷新MAC和ARP表。

总结:

发送

控制VLAN就是配合着FLUSH报文,将某某VLAN配置成控制VLAN,那么FLUSH报文将会在该VLAN内发送。

接收

下游端口发送过来的控制VLAN是多少,还要看我本机也就是上游设备,中的接收控制VLAN中,有没有添加这个VLAN,有,那么就接收这个报文,做对应的ARP和MAC地址表项处理,如果没有,那不做处理,直接转发。

SmartLink基本原理

如图所示,分别介绍SmarkLink运行的基本原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hjvKMFnq-1682930522583)(./图库/Smark-Link图库/smart-link示意图.png)]

链路正常

在正常情况下,Interface1为主接口,Interface2为从接口。双上行链路都正常的情况下,主接口出于转发情况,所在的链路是主用链路,从接口处于待命状态,所在链路是备份接口。

数据正常工作时,数据沿着主链路进行传输。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iHsafqjB-1682930522583)(./图库/Smark-Link图库/链路正常工作时流量示意图.png)]

链路故障

当主链路故障时,主接口Interface1切换到待命状态,从接口Interface2切换到转发状态。此时,网络中相关设备上的MAC和ARP表项不再正确了,需要提供一种MAC及ARP更新的机制,目前更新机制有以下两种。

1、通过FLUSH报文通知设备,更新表项,这种方式适用于上游设备均支持Smart-link功能的设备之间(ABC)。为了实现快速链路切换,需要在D上开启FLUSH报文发送功能,在上游设备上所有处于双上行链路上的接口开启接收处理FLUSH报文的功能。

​ (1)SwitchD进行链路切换后,会从新的主用链路上发送该FLUSH报文,即通过Interface2来发送FLUSH。

​ (2)当上游设备收到FLUSH报文时,判断该FLUSH的发送控制vlan,是否在收到报文的接口,所配置的接收控制VLAN列表中。IF:不在,设备对该FLUSH报文不做处理,直接转发;IF:在,设备会处理收到的FLUSH报文,进而执行MAC地址转发表项和ARP转发表项的刷新操作。

注:当主链路故障,从接口接替后。此时,主链路恢复,不进行抢占。如果需要切换,那么要手动切换过去。用以保障网络稳定性

2、自动通过流量更新表项(适用于与不支持Smark-Link功能的设备之间)

这种方法适用于 和不支持SmarkLink功能的设备(包括其他厂商设备)对界的情况,需要有上行流量触发。(其就依靠STP正常的工作原理进行流量切换,收敛时间很慢)

处理:如果没有收到SwitchD的上行流量(TC bpdu)去触发SwitchA的MAC及ARP表项更新,那么当SwitchA收到目的设备为SwitchD的数据报文时,A仍会通过接口3转发出去,但此时报文已经不能到达SwitchD,这样就会造成流量丢失,直到其MAC或ARP表项自动老化。(MAC老化300s,ARP老化1200s)

老化了之后,就需要重新广播ARP报文后,流量才能被发送过去。

总结:

通过FLUSH报文通知设备更新的机制,无需等待表项老化。可以极大程度减少更新所需时间。

链路恢复

当原 主用链路故障恢复时,为了保证网络稳定,不会进行抢占,将继续维持在拥塞状态。但如果希望流量切换回原主用链路,那就通过如下机制进行。

1、使用SmarkLink组回切功能,需要在SwitchD上开启回切功能。当原主用链路故障恢复后,经过回切定时器设定的时间,SmarkLink会自动将流量切换回原主用链路上。

2、通过配置命令,强制让SmarkLInk立即将流量切换到原主用链路上。

Smart-link

Smart-Link组存在2个接口,主和从接口互相协同工作

Smart Link & Monitor Link

介绍

双上行组网是目前常用组网之一,一般情况下通过开启STP来实现网络中的链路冗余备份,但STP不适用于对收敛时间要求很高的用户。Smart Link和Monitor Link可以满足用户快速收敛链路的需求,可以实现主备链路的冗余备份及快速迁移。Smart Link的主要特点是:专用于双上行组网;收敛速度快(达到亚秒级);配置简单,便于用户操作。

Monitor Link通常与Smart Link配合使用,以扩展Smart Link的应用范围。Monitor Link通过监控上行链路对下行链路进行同步设置,达到上行链路故障迅速传达给下行设备,从而触发下游设备上的拓扑协议进行链路的切换,防止长时间因上行链路故障而出现流量丢失。

协议

部署双上行组网时我们就需要采用该协议来进行高速的收敛,SmartLink具体原理如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YD7Vpwbe-1682930522583)(D:\Aa_重要文件\图库\smart-link示意图.png)]

Smark-Link,又叫备份链路。一个Smark Link由两个接口组组成,其中一个接口作为另一个的备份。Smark-Link常用于双上行组网,提供可靠高效的备份与高速的切换机制。

Smark-Lin的目的

下游设备连接到上游设备,当采用单上行方式时,若出现单点故障,会造成业务中断。若采用双上行方式,将一台下游设备同时连接到两台上游设备,可降低单点故障对网络的影响。(有点像VRRP,但VRRP是网关冗余,Smartlink是针对上行组网的链路冗余)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pzcGn8vl-1682930522584)(./图库/Smark-Link图库/smart-link示意图.png)]

如图所示,SwitchD采用双上行方式连接到SwitchB和C,这样SwitchD到达SwitchA的链路就可以有两条(SwitchD–>SwitchB–>SwitchA和SwitchD–>SwitchC–>SwitchA),但是网络中的环路会产生网络风暴。在SwitchA上配置Smark Link,正常情况下,可实现Interface2所在的链路作为Interface1所在链路的备份。若实例1所在链路发生故障,SmartLink会自动将数据流量切换到实例2所在链路,保证业务不中断。而且若采用STP来提供链路冗余切换功能的话,我们采用Smart-link一个很重要的原因是其亚秒级别的收敛。

在此类组网中采用SmarkLink技术有以下优点:

1、能够实现在双上行组网的两条链路正常情况下,一条链路处于转发,而另一条处于堵塞待命状态,从而避免环路的不利影响。

2、配置和使用更为简洁,便于用户操作。

3、当主用链路发生故障后,流量会在毫秒级的时间内迅速切换到备用链路上,极大限度的保证了数据的正常转发。

介绍

基本概念

负载分担

一般情况下,Smart Link的备份链路处于空闲状态,不承担业务数据流量的转发。如希望提高链路的利用率,可以配置负载分担实例,备份链路转发指定负载分担实例内所映射的VLAN数据流量,即允许指定实例对应的VLAN数据通过备份链路进行转发(主链路此时不会对这些VLAN数据进行转发),从而使主链路和备份链路承载不同VLAN数据流量的转发,达到负载分担的目的。

smartlink组配置即可

[load-balance instance { instance-id1 [ to instance-id2 ] } &<1-10> slave,用来配置该实例绑定的VLAN报文从备用接口发送,实现负载分担方式

SmarkLink用于双上行组网,能够提供亚秒级别的快速链路链路切换,SmarkLink组通过2个接口相互配合实验功能,其中一个端口为主端口为转发状态,另一个端口处于从端口备份状态,同时还通过在控制VLAN中发送FLUSH报文方式实现当链路故障时的MAC,ARP,ND表现刷项刷新,链路故障后恢复时我们还有2个功能,一个是回切,回切功能定义了原主链路故障恢复后所经过回切定时器所定义的时间后,那么流量就会切换回原主上,或也可以使用命令强制切换回原主

配置命令


相关文章:

【华为】Smart-Link基础知识

Smark-Link技术 Smark-Link(灵活链路or备份链路&#xff0c;华为/华三 私有用) Smark-Link定义 Smark-Link&#xff0c;又叫备份链路。一个Smark Link由两个接口组组成&#xff0c;其中一个接口作为另一个的备份。Smark-Link常用于双上行组网&#xff0c;提供可靠高效的备份与…...

分享24个强大的HTML属性 —— 建议每位前端工程师都应该掌握

前期回顾 是不是在为 API 烦恼 &#xff1f;好用免费的api接口大全呼之欲出_0.活在风浪里的博客-CSDN博客APi、常用框架、UI、文档—— 整理合并https://blog.csdn.net/m0_57904695/article/details/130459417?spm1001.2014.3001.5501 &#x1f44d; 本文专栏&#xff1a;…...

NIO基础 - 网络编程

non-blocking io 非阻塞 IO 1. 三大组件 1.1 Channel & Buffer channel 有一点类似于 stream&#xff0c;它就是读写数据的双向通道&#xff0c;可以从 channel 将数据读入 buffer&#xff0c;也可以将 buffer 的数据写入 channel&#xff0c;而之前的 stream 要么是输入…...

06.toRef 和 toRefs

学习要点&#xff1a; 1.toRef 和 toRefs 本节课我们来要了解一下 Vue3.x 中的 ref 两个周边 API 的用法&#xff1b; 一&#xff0e;toRef 和 toRefs 1. toRef 可以将源响应式对象上的 property 创建一个 ref 对象&#xff1b; const obj reactive({ name : Mr.Lee, age : 10…...

RabbitMq、Kafka、RocketMq整理

MQ的主要作用:异步提高性能、解耦提高扩展性、削峰。 一、常见中间件对比 Kafka、RocketMq和RabbitMq最大的区别就是:前两个是分布式存储。 1.1、ActiveMq 优点:1)完全支持jms规范的消息中间件 ,2)提供丰富的api, 3)多种集群构建模式。 缺点:)在高并发的场景下,性能可…...

Python多元线性回归预测模型实验完整版

多元线性回归预测模型 实验目的 通过多元线性回归预测模型&#xff0c;掌握预测模型的建立和应用方法&#xff0c;了解线性回归模型的基本原理 实验内容 多元线性回归预测模型 实验步骤和过程 (1)第一步&#xff1a;学习多元线性回归预测模型相关知识。 一元线性回归模型…...

C#基础 变量在内存中的存储空间

变量存储空间&#xff08;内存中&#xff09; // 1byte 8bit // 1KB 1024byte // 1MB 1024KB // 1GB 1024MB // 1TB 1024GB // 通过sizeof方法 可以获取变量类型所占的内存空间&#xff08;单位&#xff1a;字节&#xff09; 有…...

你最关心的4个零代码问题,ChatGPT 帮你解答了!

作为人工智能&#xff08;AI&#xff09;新型聊天机器人模型 ChatGPT&#xff0c;刚上线5天就突破100万用户&#xff0c;两个多月全球用户量破亿&#xff0c;不愧为业界最炙热的当红炸子鸡。 ChatGPT 是一种语言生成模型&#xff0c;由 OpenAI 开发和训练。它是基于 Transform…...

linux的环境变量

目录 一、自定义变量和环境变量的区别 二、自定义变量 三、环境变量 四、查看所有变量&#xff08;自定义变量、环境变量&#xff09; 五、记录环境变量到相关的系统文件 &#xff08;1&#xff09;为什么要这样做&#xff1f; &#xff08;2&#xff09;环境变量相关系统…...

openQA----基于openSUSE部署openQA

【原文链接】openQA----基于openSUSE部署openQA &#xff08;1&#xff09;下载 openqa-bootstrap 脚本并执行 cd /opt/ curl -s https://raw.githubusercontent.com/os-autoinst/openQA/master/script/openqa-bootstrap | bash -x&#xff08;2&#xff09;配置apache proxy…...

正则表达式基础一

BRE(basic regular expression)&#xff1a;匹配数据流中的文本字符 普通文本匹配 特殊字符 正则表达式存在一些特殊字符&#xff0c;如需当成普通文本来匹配&#xff0c;必须加上转义&#xff0c;即反斜杠\&#xff0c;如下所示 .*[]^${}?|() 指定出现位置的字符 ^ 指定行首…...

Java中的内存泄露、内存溢出与栈溢出

内存泄露、内存溢出与栈溢出 1、概述2、内存泄漏、内存溢出和栈溢出2.1、内存泄漏2.2、内存溢出2.3、栈溢出 2、总结 1、概述 大家好&#xff0c;我是欧阳方超。本次就Java中几个相似而又不同的概念做一下介绍。内存泄漏、内存溢出和栈溢出都是与内存相关的问题&#xff0c;但…...

时序预测 | Matlab实现SSA-GRU、GRU麻雀算法优化门控循环单元时间序列预测(含优化前后对比)

时序预测 | Matlab实现SSA-GRU、GRU麻雀算法优化门控循环单元时间序列预测(含优化前后对比) 目录 时序预测 | Matlab实现SSA-GRU、GRU麻雀算法优化门控循环单元时间序列预测(含优化前后对比)预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现SSA-GRU、GRU麻雀算法…...

Java+springboot开发的医院HIS信息管理系统实现,系统部署于云端,支持多租户SaaS模式

一、项目技术框架 前端&#xff1a;AngularNginx 后台&#xff1a;JavaSpring&#xff0c;SpringBoot&#xff0c;SpringMVC&#xff0c;SpringSecurity&#xff0c;MyBatisPlus&#xff0c;等 数据库&#xff1a;MySQL MyCat 缓存&#xff1a;RedisJ2Cache 消息队列&…...

【前端面经】Vue-Vue中的 $nextTick 有什么作用?

Vue.js 是一个流行的 JavaScript 框架&#xff0c;它提供了许多实用的功能&#xff0c;其中之一就是 $nextTick 方法。 在 Vue.js 中&#xff0c; $nextTick 方法可以确保我们在更新 DOM 之后再去执行某些操作&#xff0c;从而避免由于 DOM 更新而导致的问题。这个方法非常实用…...

基于STATCOM的风力发电机稳定性问题仿真分析(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

如何写出高质量的代码

背景说明&#xff1a; 你是否曾经为自己写的代码而感到懊恼&#xff1f;你是否想过如何才能写出高质量代码&#xff1f;那就不要错过这个话题&#xff01;在这里&#xff0c;我们可以讨论什么是高质量代码&#xff0c;如何写出高质量代码等问题。无论你是初学者还是资深开发人…...

15.基于主从博弈的智能小区代理商定价策略及电动汽车充电管理

说明书 MATLAB代码&#xff1a;基于主从博弈的智能小区代理商定价策略及电动汽车充电管理 关键词&#xff1a;电动汽车 主从博弈 动态定价 智能小区 充放电优化 参考文档&#xff1a;《基于主从博弈的智能小区代理商定价策略及电动汽车充电管理》基本复现 仿真平台&#…...

ChatGPT实现多语种翻译

语言翻译 多语种翻译是 NLP 领域的经典话题&#xff0c;也是过去很多 AI 研究的热门领域。一般来说&#xff0c;我们认为主流语种的互译一定程度上属于传统 AI 已经能较好完成的任务。比如谷歌翻译所采用的的神经机器翻译(NMT, Neural Machine Translation)技术就一度让世人惊…...

volatile关键字原理的使用介绍和底层原理解析和使用实例

文章目录 volatile关键字原理的使用介绍和底层原理解析和使用实例1. volatile 关键字的作用2. volatile 的底层原理3. volatile 的使用案例4. volatile 的原子性问题5. 如何解决 volatile 的原子性问题6. volatile 的实现原理7. 小结8. volatile的最佳实践9. 案例:使用volatile…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归&#xff08;Tail Recursion&#xff09; 什么是 Loop&#xff08;循环&#xff09;&#xff1f; 复杂度分析 头递归&#xff08;Head Recursion&#xff09; 树形递归&#xff08;Tree Recursion&#xff09; 线性递归&#xff08;Linear Recursion&#xff09;…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...

用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章

用 Rust 重写 Linux 内核模块实战&#xff1a;迈向安全内核的新篇章 ​​摘要&#xff1a;​​ 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言&#xff0c;受限于 C 语言本身的内存安全和并发安全问题&#xff0c;开发复杂模块极易引入难以…...

验证redis数据结构

一、功能验证 1.验证redis的数据结构&#xff08;如字符串、列表、哈希、集合、有序集合等&#xff09;是否按照预期工作。 2、常见的数据结构验证方法&#xff1a; ①字符串&#xff08;string&#xff09; 测试基本操作 set、get、incr、decr 验证字符串的长度和内容是否正…...

当下AI智能硬件方案浅谈

背景&#xff1a; 现在大模型出来以后&#xff0c;打破了常规的机械式的对话&#xff0c;人机对话变得更聪明一点。 对话用到的技术主要是实时音视频&#xff0c;简称为RTC。下游硬件厂商一般都不会去自己开发音视频技术&#xff0c;开发自己的大模型。商用方案多见为字节、百…...