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

【网络协议】LACP(Link Aggregation Control Protocol,链路聚合控制协议)

文章目录

    • LACP名词解释
    • LACP工作原理
      • 互发LACPDU报文
      • 确定主动端
      • 确定活动链路
      • 链路切换
    • LACP和PAgP有什么区别?
    • LACP与LAG的关系
    • LACP模式更优于手动模式
      • LACP模式对数据传输更加稳定和可靠
      • LACP模式对聚合链路组的故障检测更加准确和有效
    • 推荐阅读

LACP名词解释

LACP(Link Aggregation Control Protocol,链路聚合控制协议)是一种基于IEEE802.3ad标准的实现链路动态聚合与解聚合的协议,它是链路聚合中常用的一种协议。属于数据链路层协议。

链路聚合组中启用了LACP协议的成员端口通过发送LACPDU报文进行交互,双方对哪些端口能够发送和接收报文达成一致,确定承担业务流量的链路。

此外,当聚合条件发生变化时,如某个链路发生故障,LACP模式会自动调整聚合组中的链路,组内其他可用成员链路接替故障链路维持负载平衡。这样在不进行硬件升级的情况下,可以增加设备之间的逻辑带宽,提高网络的可靠性。

LACP工作原理

LACP主要工作主要包含互发LACPDU报文、确定主动端、确定活动链路、链路切换。

互发LACPDU报文

在对接的两台设备上创建Eth-Trunk并配置为LACP模式,然后向Eth-Trunk中手工加入成员接口。此时成员接口上便启用了LACP协议,两端互发LACPDU报文,LACPDU报文中包含设备的系统优先级、MAC地址、接口优先级、接口号和操作Key等信息。
在这里插入图片描述

确定主动端

两端设备均会收到对端发来的LACPDU报文。

以DeviceB为例,当DeviceB收到DeviceA发送的报文时,DeviceB会查看并记录对端信息,然后比较系统优先级字段,如果DeviceA的系统优先级高于本端的系统优先级,则确定DeviceA为LACP主动端。如果DeviceA和DeviceB的系统优先级相同,比较两端设备的MAC地址,MAC地址小的一端为LACP主动端。
在这里插入图片描述

确定活动链路

选出主动端后,设备两端会以主动端的接口优先级来选择活动接口,如果主动端的接口优先级都相同则选择接口编号比较小的为活动接口。LACP模式支持设置活动接口数上限阈值以在保证带宽的情况下提高网络可靠性,当前活动接口数目达到上限阈值时,再向Eth-Trunk中添加成员接口,不会增加Eth-Trunk活动接口的数目,超过上限阈值的链路状态将被置为Down,作为备份链路。两端设备选择了一致的活动接口,活动链路组便可以建立起来,这些活动链路以负载分担的方式转发数据。

如下图所示,LACP模式下,如果活动链路数上限阈值为2,通过LACP协商后,链路1和链路2因为优先级较高被选作活动链路,链路3则为备份链路。聚合链路中的活动链路参与数据转发,总带宽等于被选中的活动链路带宽之和。
在这里插入图片描述

链路切换

LACP模式链路聚合组中如果某条活动链路故障,链路聚合组自动在备份链路中选择一条优先级最高的链路作为活动链路接替故障链路,参与数据转发的链路数目不变,保证数据传输的可靠性。

LACP模式链路聚合组两端设备中任何一端检测到以下事件,都会触发聚合组的链路切换:

  • 链路Down事件。
  • 以太网OAM检测到链路失效。
  • LACP协议发现链路故障。
  • 接口不可用。
  • 在使能了LACP抢占功能的前提下,更改备份接口的优先级高于当前活动接口的优先级。

当满足上述切换条件其中之一时,按照如下步骤进行切换:

  1. 关闭故障链路。
  2. 从N条备份链路中选择优先级最高的链路接替活动链路中的故障链路。
  3. 优先级最高的备份链路转为活动状态并转发数据,完成切换。

在这里插入图片描述

LACP和PAgP有什么区别?

LACP和PAgP(Port Aggregation Protocol,端口汇聚协议)是链路聚合中使用最广泛的两种协商协议。LACP和PAgP的功能类似,都是通过捆绑链路并协商成员链路之间的流量提高网络的可用性和稳定性。LACP和PAgP数据包在交换机之间通过支持以太网通道的端口交换。

它们之间最大的区别是支持的供应商不同,LACP是开放标准,可以在大多数交换机上运行,如华为系列交换机,而PAgP是Cisco专有协议,只能在Cisco或支持PAgP的第三方交换机上运行。

在这里插入图片描述

LACP与LAG的关系

LAG链路聚合组(Link Aggregation Group)是指将若干条以太链路捆绑在一起形成一条逻辑链路,也称Eth-Trunk链路。每个聚合组对应一个链路聚合接口或Eth-Trunk接口,组成Eth-Trunk接口的各个物理接口称为成员接口,成员接口对应的链路称为成员链路。

链路聚合接口可以作为普通的以太网接口来使用,与普通以太网接口的差别在于:转发的时候链路聚合组需要从成员接口中选择一个或多个接口来进行数据转发。

在这里插入图片描述
LAG是一种链路聚合技术,当在两台交换机之间并行连接多个端口并将它们配置为LAG时,链路聚合组就会形成,而LACP是一种自动建立LAG的控制协议,用于启用LAG自动配置网络交换机端口、分离链路故障和激活故障切换

LAG主要有两种模式,分别是手工模式和LACP模式。

  • 手动模式:指LAG不启用任何链路聚合协议,Eth-Trunk的建立、成员接口的加入由手动配置。
  • LACP模式:指LAG启用LACP链路聚合协议,Eth-Trunk的建立、成员接口的加入基于LACP协议协商自动完成。
    在这里插入图片描述

LACP模式更优于手动模式

LACP模式对数据传输更加稳定和可靠

手动模式下,所有链路都是活动链路,所有活动链路均参与数据转发,平均分担流量。如果某条活动链路故障,链路聚合组自动在剩余的活动链路中平均分担流量。
LACP模式下,由LACP确定聚合组中的活动和非活动链路,又称为M:N模式,即M条活动链路与N条备份链路的模式。这种模式提供了更高的链路可靠性,并且可以在M条链路中实现不同方式的负载均衡。

如下图所示,两台设备间有M+N条链路,在聚合链路上转发流量时在M条链路上分担负载,即活动链路,不在另外的N条链路转发流量,这N条链路提供备份功能,即备份链路。此时链路的实际带宽为M条链路的总和,但是能提供的最大带宽为M+N条链路的总和。当M条链路中有一条链路故障时,LACP会从N条备份链路中找出一条优先级高的可用链路替换故障链路。此时链路的实际带宽还是M条链路的总和,但是能提供的最大带宽就变为M+N-1条链路的总和。
在这里插入图片描述

LACP模式对聚合链路组的故障检测更加准确和有效

手动模式只能检测到同一聚合组内的成员链路有断路等有限故障;

LACP模式不仅能够检测到同一聚合组内的成员链路有断路等有限故障,还可以检测到链路故障、链路错连等故障。

如下图所示,DeviceA与DeviceB之间创建Eth-Trunk,需要将DeviceA上的四个接口与DeviceB捆绑成一个Eth-Trunk。由于错将DeviceA上的一个接口与DeviceC相连,这将会导致DeviceA向DeviceB传输数据时可能会将本应该发到DeviceB的数据发送到DeviceC上。
手动模式的Eth-trunk不能及时检测到该故障,如果在DeviceA和DeviceB上都启用LACP协议,经过协商后,Eth-Trunk就会选择正确连接的链路作为活动链路来转发数据,从而DeviceA发送的数据能够正确到达DeviceB。
在这里插入图片描述

推荐阅读

  • 局域网协议:地址解析协议(ARP,Address Resolution Protocol)
  • 局域网协议:以太网(Ethernet)详解
  • 局域网协议:VLAN技术介绍
  • 网络安全准入技术之MAC VLAN
  • 【网络安全】零日漏洞(0day)是什么?如何防范零日攻击?
  • 安全知识普及:什么是垃圾邮件和网络钓鱼欺诈

相关文章:

  • Linux学习笔记-Ubuntu下ssh服务器连接异常Connection reset
  • IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Spring中FactoryBean
  • 基于FPGA的视频接口之高速IO(光纤)
  • uniApp 中实现一个骰子动效
  • 超越MJ:PixArt-α超低成本,高质量文生图创新模型
  • C++ 常函数 常对象 const
  • html中一个div中平均一行分配四个盒子,可展开与收起所有的盒子
  • 定时器TIM HAL库+cubeMX(上)
  • PaddleClas学习3——使用PPLCNet模型对车辆朝向进行识别(c++)
  • 安装LLaMA-Factory微调chatglm3,修改自我认知
  • 奥比中光 Femto Bolt相机ROS配置
  • strtok()的用法及实现哦
  • 逻辑回归的介绍和应用
  • es模板和索引简单操作简介
  • rust宏(macro)详解
  • 【前端学习】-粗谈选择器
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • eclipse的离线汉化
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Web标准制定过程
  • win10下安装mysql5.7
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 从零开始的无人驾驶 1
  • 订阅Forge Viewer所有的事件
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 如何设计一个微型分布式架构?
  • 使用common-codec进行md5加密
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • ###STL(标准模板库)
  • #1014 : Trie树
  • #13 yum、编译安装与sed命令的使用
  • (4)(4.6) Triducer
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (NSDate) 时间 (time )比较
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (过滤器)Filter和(监听器)listener
  • (接口封装)
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (一)基于IDEA的JAVA基础10
  • (一)为什么要选择C++
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .CSS-hover 的解释
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET Core WebAPI中封装Swagger配置
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET/C# 使用反射注册事件
  • @Documented注解的作用
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [Angular 基础] - 表单:响应式表单
  • [C++]——带你学习类和对象