数据通信保镖---链路聚合

2023-05-16

目录

前言

一、链路聚合技术产生背景

二、链路聚合基本原理

三、链路聚合手工模式

四、LACPDU

 五、活动接口及链路选举步骤

六、负载分担

七、负载分担模式

八、配置命令

1.创建链路聚合组


前言

随着社会迅速的发展,网络业务和园区规模也在不断的扩大,用户对网络的带宽、安全、可靠性也越来越高,一般传统的解决方案是通过升级设备的方式来提高带宽,同时通过部署冗余链路并辅以STP(spanning tree protocol,生成树协议)来保证传输的可靠性,但是这种解决方案存在灵活度第,配置比较复杂,修复故障的时间较长等缺点,不太适用于当今社会的发展,于是就衍生出了今天我们所讲的内容---链路聚合技术

一、链路聚合技术产生背景

随着网络的快速普及和应用的日益深入,各种增值业务得到了广泛部署,网络中断可能导致大量业务异常、造成重大经济损失。
因此,作为承载业务主体的基础网络,基础网络需要保证当设备或者链路出现单点或多点(一处或多出)故障时保证网络服务不间断的能力其可靠性成为备受关注的焦点。
于是人们相出了多种方法来提高网络的可靠性
1.利用设备提高可靠性

这个很容易理解,无备份就是通往目的地的路只有一条,坏了就无法通行,主备备份就是有多条路通往目的地,这条坏了还可以走下一条嘛,以此来提高设备可靠性 

2.利用改变链路提高可靠性

意思就是在设备之间部署多条物理链路,但是为了防止出现环路,所以利用STP只保留其中一条进行转发流量,其余链路成为备份链路


二、链路聚合基本原理

 

 这种老式方法由于stp的存在,实际上只会存在一条链路进行转发流量,安全性有所提高,但是链路之间的带宽却无法的得到提升

于是人们就研发出了一项新的技术---以太网链路聚合

以太网链路聚合Eth-Trunk :简称链路聚合,通过将多个物理接口捆绑成为一个逻辑接口(将几条物理链路虚拟为一条链路,同时进行转发流量),可以在不进行硬件升级的条件下,达到增加链路带宽的目的。
注意:
1、最多支持8个,也就是八合一
2、左右两边的接口数量需要一致

链路聚合的基本术语

链路聚合好处就是转发的时候可以从成员接口中选择一个或多个接口进行转发

聚合 组( Link Aggregation Group LAG ):若干 条链路捆绑在一起所形成的的逻辑链路。每个聚合组唯一对应着一个逻辑接口,这个逻辑 接口又被称为链路 聚合接口或Eth-Trunk 接口,注:图中黄色椭圆处
成员接口和成员链路:组成 Eth-Trunk 接口的各个物理接口称为成员接口。成员接口对应的链路称为成员 链路。
活动接口和活动链路:活动接口又 叫选中 S elected 接口 ,是参与数据 转发的成员 接口。活动接口对应 链路被称为活动链路( Active link
活动 接口和非活动链路:又叫非选中( Unselected )接口,是不参与转发 数据的成员接口 。非 活动接口对应的 链路被称为非活动链路( I nactive link )。
聚合模式 :根据 是否开启 LACP Link Aggregation Control Protocol ,链路聚合 控制协议), 链路聚合可以分为手工模式和 LACP 模式
其他概念:活动接口上限阈值和活动接口下限阈值
就好比一个工作小组有五人===活动接口5个,五人有一个组合名===LAG,其中要求最少两人干活===接口下限阈值,最多四个人干活===接口上限阈值,没有干活的===非活动接口

三、链路聚合手工模式

 •手工模式: Eth-Trunk的建立、成员接口的加入均由手动配置,双方系统之间不使用LACP进行协商。

正常情况下所有链路都是活动链路,该模式下所有活动链路都参与数据的转发,平均分担流量,如果某条活动链路故障,链路聚合组自动在剩余的活动链路中平均分担流量。

当聚合的两端设备中存在一个不支持LACP协议时,可以使用手工模式。

手工模式缺点

1.必须保证本端链路聚合接口所有成员接口的对端接口都属于同一个设备,并且处于同一链路聚合接口

2.手工模式下,设备之间没有报文交互,只能通过管理员人工确认(链路损坏也不清楚)---无容错


四、LACPDU

LACP 模式:采用 LACP 协议的一种链路聚合模式。设备间通过链路聚合控制协议数据单元( Link Aggregation Control Protocol Data Unit LACPDU )进行交互,通过协议协商确保对端是同一台设备、同一个聚合接口的成员接口。
LACPDU 报文中包含设备优先级、 MAC 地址、接口优先级、接口号等。

1.系统优先级---选举主动端

在lacp模式下,两端设备所选的活动接口数目必须一致,否则就无法建立,所以就需要利用lacp优先值确定一方为主动端,由主动端去选择被动端(主动端有几个接口,被动端就有几个接口,保持一致确保链路聚合组建立)

值越小优先值越高,默认为32768

当优先级一致时,lacp会通过比较mac地址选择主动端,mac地址越小越优

2.接口优先级---选举活动接口

主动端选择出来后,两端都i会从主动端的接口优先级来选择活动接口,优先级高的优先被选为活动接口(lacp优先级值越小,优先级越高)

lacp优先级默认是32768(和系统优先级一样)越小越优先,通常保持默认(一般别动它),当接口优先级一致时,lacp会通过接口编号来选择活动接口(接口编号越小越优先)

3.最大活动接口数

当成员接口超过最大活动接口数目时,将会通过比较接口优先级,接口号来选举出较优的接口成为活动接口,其余的成为备份端口,交换机只会从活动接口进行转发流量

当活动链路出现链路故障时,可以从非活动链路中找到一条优先级最高的来替代故障链路,保证总体宽带不发生变化,业务不间断转发


 五、活动接口及链路选举步骤

 前提:两端配置最大活跃接口数为2

1.通过lacp选举出优先级较高的交换机作为主动端

2.主动端比较接口优先级,选举出活动接口

3.主动端通过lacpdu将本端的活动接口选举结果告诉对方

4.被动端根据主动端的选举结果,明确本端的活动接口且数量一致,对应的链路就是活动链路


六、负载分担

负载分担分为两种,

一种是基于包的负载分担--将一整个数据切割成多个数据帧,在多个链路上传输,速度较快,但是有可能因为到达时间不同而导致乱序

一种是基于流的负载分担 ,将数据切割后全部放在一条链路上进行传输,死磕到底,其他的数据包也一眼,在一条链路不间断传输,直到传输完毕

七、负载分担模式

 

 大家想一想,基于流的负载分担有是有缺陷的,假如有一条数据从第一条活动链路上开始传输,南无往后的数据都会进行跟随,直到传输完毕,这样就会有三条链路一直处于休息状态,假如发送结束了,间隔了一段时间后继续发送,那么还是会选择从第一条链路进行传输,其余三条一直处于休息,在这个问题的基础上,又创造出 了一些负载分担模式:IP、源MAC、目的IP、目的MAC、源目IP、源目MAC,这些模式总归都是一个目的,那就是尽量不让每一条链路闲着,一般就选那个不固定的

如图:

源目mac相同,但是他的源目IP不同,这时候就需要使用源目IP的模式,假如有A、B两台电脑,如果对方B的IP一直处于变化之中的话,A向B发送数据的链路也就不会一直是单一的,这也达到了不使其他链路闲着的目的

神魔情况下使用源目mac模式???

还是假如A、B是不同的工位上,但是B的工位上一直在变化,在换人,换人的话笔记本也就换了,mac地址也就会变化,所以A给B要基于mac模式,才可以平均使用链路


八、配置命令

1.创建链路聚合组

[Huawei] interface eth-trunk trunk-id

2.配置链路聚合模式

Huawei-Eth-Trunk1] mode {lacp | manual load-balance }

Mode lacp配置链路聚合模式为lacp模式,mode manual load-balance配置链路聚合模式为手工模式。

注意:需要保持两端链路聚合模式一致。

3.将接口加入到链路聚合组中

[Huawei-GigabitEthernet0/0/1] eth-trunk trunk-id

4.将接口加入链路聚合组中(Eth-Trunk视图)

[Huawei-Eth-Trunk1] trunkport interface-type { interface-number}

Eth-Trunk视图中将接口加入到链路聚合组中。34两种方式都可以将接口加入到链路聚合组中。

5.配置系统LACP优先级,目的确立主动端

[Huawei] lacp priority priority

系统LACP优先级值越小优先级越高,缺省情况下,系统LACP优先级为32768

6.配置接口LACP优先级

[Huawei-GigabitEthernet0/0/1] lacp priority [优先级]

在接口视图下配置接口LACP优先级。缺省情况下,接口的LACP优先级是32768。接口优先级取值越小,接口的LACP优先级越高。

只有在接口已经加入到链路聚合中才可以配置该命令。

7.配置最大活动接口数

[Huawei-Eth-Trunk1] max active-linknumber {number}

8.配置最小活动接口数

Huawei-Eth-Trunk1] least active-linknumber {number}

本端和对端设备的活动接口数下限阈值可以不同,手动模式、LACP模式都支持配置最小活动接口数。

配置最小活动接口数目的是为了保证最小带宽,当前活动链路数目小于下限阈值时,Eth-Trunk接口的状态转为Down

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据通信保镖---链路聚合 的相关文章

  • JAVA从入门到精通(14)-- 包装类

    一 包装类 1 基本数据类型是不具备对象的特征的 xff0c 比如基本数据类型不能调用方法 功能简单 xff0c 为了让基本数据类型具备对象的特性 xff0c Java为每个基本数据类型提供了一个包装类 2 3 包装类主要提供了两大类方法
  • JAVA从入门到精通(16)-- Java版JSON入门

    一 JSON课程介绍 1 JSON是行业内使用最为广泛的数据传输格式 定义 xff1a JSON是一种与开发语言无关的 轻量级的数据格式 全称是JavaScript Object Notation 优点 xff1a 易于人的阅读和编写 xf
  • JAVA从入门到精通(17)-- GSON

    一 GSON介绍 1 介绍 xff1a GSON最早由Google提出的开源的项目 xff0c 主页在github上 xff0c 解析json 二 GSON生成JSON数据 1 加入依赖 xff0c 创建包和类 2 创建Gson对象 Man
  • JAVA从入门到精通(18)-- Servlet

    一 Servlet定义 1 现有JSP还是先有Servlet xff1f 先有的Servlet xff0c 因为JSP的前身就是Servlet 2 定义 xff1a Servlet是在服务器上运行的小程序 一个Servlet就是一个Java
  • pixhawk自学笔记之uorb学习总结

    注 xff1a 这是看过好多文章总结出来的 xff0c 转载了较多人的博客 xff0c 希望有知道原出处的人把地址留下 xff0c 我贴上来 在此谢谢各位前辈的总结 xff08 我会在后续笔记中贴出在我自己的程序中对于uorb的使用 xff
  • pixhawk自学笔记之px4程序启动顺序

    在了解px4启动之前我们需要了解一下bootloader Bootloader是在操作系统内核运行之前运行 xff0c 可以初始化硬件设备 xff0c 建立内存空间映射图等 xff0c 整个系统的加载启动任务就是完全由Bootloader来
  • PID概述以及在无人机中的应用

    PID控制是将误差信号的比例P xff0c 积分I xff0c 微分D通过线性组合构成控制量 xff0c 称之为PID控制 但是在很多情况下 xff0c 往往不一定需要三个单元 xff0c 但是比例单元是必不可少的 PID控制器难点在于参数
  • PID连续控制算法的表达式以及C语言实现

    1 数字 xff08 离散 xff09 PID控制算法的表达式 xff1a 将PID调节器离散化 xff0c 用差分方程来代替连续系统的微分方程 xff0c 分为位置式和增量式两类 重点理解概念如下 xff1a a xff09 基本偏差e
  • 简单常用滤波算法C语言实现

    1 限幅滤波算法 xff08 程序判断滤波算法 xff09 方法解析 xff1a 根据经验判断 xff0c 确定两次采样允许的最大偏差值 xff08 设定为A xff09 xff0c 每次检测到新值时判断 xff1a 如果本次值与上次值之差
  • Nuttx的源码构建和编译

    下载源码 sudo mkdir Nuttx cd Nuttx Nuttx xff1a git clone https bitbucket org nuttx nuttx gitapps xff1a git clone https bitbu
  • ZMQ简介

    ZMQ xff08 MQ ZeroMQ 0MQ xff09 看起来像是一套嵌入式的网络链接库 xff0c 是网络通信中新的一层 xff0c 介于应用层和传输层之间 xff08 按照TCP IP划分 xff09 xff0c 其是一个可伸缩层

随机推荐

  • ubunut安装stlink

    在ubuntu上面的stlink驱动的安装 依赖包的安装 sudo apt get install libusb 1 0sudo apt get install cmakesudo apt get install libgtk 3 dev
  • Nuttx程序测试

    前面两篇文章我们讲述了如何编译nuttx和ubuntu下stlink的安装 现在我们继续往下测试程序 硬件环境 stm32f407discovery软件环境 ubuntu14 04 43 vim 我们首先进入到nuttx tools目录下执
  • 两种四轴PID讲解

    参考资料 xff1a 爱无人机论坛 单级PID xff1a PID算法属于一种线性控制器 xff0c 这种控制器被广泛应用于四轴上 要控制四轴 xff0c 显而易见的是控制它的角度 xff0c 那么最简单 xff0c 同时也是最容易想到的一
  • 麒麟系统开机自启的实现方式

    方法 xff1a 利用Linux的 desktop文件实现开机启动 xff0c desktop文件位于在 etc xdg autostart目录下 举例 在 etc xdg autostart 目录下建立一个 test desktop文件
  • ifconfig与 ip addr命令详细

    文章目录 前言一 如何查看机器的IP地址二 网卡信息详解1 网卡名称2 网络设备状态标识3 IP地址4 MAC地址 三 ifconfig与 ip addr区别 前言 本文记录在linux系统下如何查看ip信息 网卡状态等信息以及简要说明if
  • Linux网卡ifcfg网卡配置项详解

    前言 由于在工作中涉及到服务器网卡的适配 xff0c 算是linux新手 xff0c 本次记录下linux网卡ifcfg exx配置项含义说明 xff0c 以下是某款终端下centos 7 5系统自动生成的网卡配置内容 xff1a span
  • Determining IP information for eth问题解决

    前言 在Linux网卡ifcfg网卡配置项详解文章中提到一个BOOTPROTO 61 配置项 它的意思是指网卡启动时获取ip的方式 xff0c 可以是dhcp或者静态ip 方式 xff0c 如果设置为none说明是不指定ip设置方式 一 问
  • 回首2013,展望2014

    此刻值此2013年末 xff0c 明天便是元旦 近日浏览CSDN论坛时 xff0c 发现有许多的坛友都在写2013年度总结 xff0c 博客作为个人的名片 xff0c 也决定开始尝试写博客 xff0c 我的第一篇博客就是关于2013年度总结
  • 关于vector大小(size)和容量(capacity)总结

    操作大小的函数 在Vector容器中有以下几个关于大小的函数 方法效果size 返回容器的大小empty 判断容器是否为空max size 返回容器最大的可以存储的元素capacity 返回容器当前能够容纳的元素数量 例子一 xff1a 该
  • inet_addr 和inet_ntoa函数作用

    我们使用socket进行通信的时候 xff0c 我们需要指定三个元素 xff1a 通信域 xff08 地址族 xff09 IP地址 端口号 xff0c 这三个元素由SOCKADDR IN结构体定义 xff0c 为了简化编程一般将IP地址设置
  • 使用C语言完成单片机的底层配置操作

    整体概貌 单片机型号 xff1a C8051F020 技术等级 xff1a 不懂底层编程的菜鸟 写作目的 xff1a 加深对底层的了解 xff0c 方便下一步对FPGA底层配置的实现 编写内容 xff1a 1 定时器的定时 2 串口波特率的
  • windows7触屏操作API

    每当用户触摸触敏式 Windows 7 设备时 xff0c Windows 7 多点触控平台都会向您的应用程序发送手势消息 WM GESTURE 这是现成的免费行为 xff0c 如果您希望停止接收此类消息 xff0c 则需要选择退出 手势被
  • visual studio中头文件和库文件路径设置

    在程序开发中 xff0c 很多时候需要用到别人开发的工具包 xff0c 如OpenCV和itk 一般而言 xff0c 在vs中 xff0c 很少使用源文件 xff0c 大部分是使用对类进行声明的头文件和封装了类的链接库 xff08 静态li
  • LNK2001: 无法解析的外部符号的几种情况

    一般来说 xff0c 我们引用第三方库时 xff0c 需要进行指定依赖项配置 xff0c 若没有进行相关配置 xff0c 则编译器会出现 LNK2001 无法解析的外部符号 错误 这个是最常见的问题 xff0c 具体步骤 xff1a 项目
  • C++11向线程函数传递参数

    template span class token operator lt span class Function span class token punctuation span class span class token punct
  • C++11之std::future对象使用说明

    std future介绍 在前面几篇文章中基本都用到thread对象 xff0c 它是C 43 43 11中提供异步创建多线程的工具 但是我们想要从线程中返回异步任务结果 xff0c 一般需要依靠全局变量 xff1b 从安全角度看 xff0
  • delete 和 delete[]真正区别

    我们通常从教科书上看到这样的说明 xff1a delete 释放new分配的单个对象指针指向的内存 delete 释放new分配的对象数组指针指向的内存 那么 xff0c 按照教科书的理解 xff0c 我们看下下面的代码 xff1a spa
  • 【转】使用Android MediaCodec 硬解码延时问题分析

    最近做项目用到Android native层的MediaCodec的接口对H264进行解码 xff0c 通过在解码前和解码后加打印日志 xff0c 发现解码耗时200多ms xff0c 和IOS的解码耗时10ms相比实在是延时好大 后来研究
  • 数据异常检测

    数据下载 xff1a 链接 xff1a https pan baidu com s 1ePMpmTBeoECBFFgPZQrPAg 提取码 xff1a qkg2 两维数据异常检测 xff08 使用高斯原始模型 xff09 代码 span c
  • 数据通信保镖---链路聚合

    目录 前言 一 链路聚合技术产生背景 二 链路聚合基本原理 三 链路聚合手工模式 四 LACPDU 五 活动接口及链路选举步骤 六 负载分担 七 负载分担模式 八 配置命令 1 创建链路聚合组 前言 随着社会迅速的发展 xff0c 网络业务