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

了解 Linux 网络卡绑定:提高网络性能与冗余性

在现代 IT 基础设施中,网络性能和可靠性至关重要。对于许多企业和个人用户来说,确保网络的高可用性和冗余性是首要任务之一。Linux 提供了一个强大的解决方案——网络卡绑定(Network Interface Card Bonding,简称 NIC Bonding)。本文将深入探讨什么是网络卡绑定、它的工作原理、常见的绑定模式以及如何在 Linux 系统中配置和管理网络卡绑定。

什么是网络卡绑定?

网络卡绑定是一种技术,通过将多个网络接口聚合在一起,创建一个逻辑上的网络接口,以提高网络带宽和提供冗余性。简而言之,网络卡绑定可以让多张网卡同时工作,从而提高数据传输速率,并在某一张网卡出现故障时提供故障转移能力。

网络卡绑定的工作原理

网络卡绑定的核心思想是将多张物理网卡虚拟化成一个单一的逻辑接口。这样一来,多个网卡就可以共同处理流量,提高整体的网络吞吐量。同时,当一张网卡失效时,系统可以自动将流量切换到其他可用的网卡,从而实现冗余和高可用性。

常见的绑定模式

网卡绑定模式一共有七种(0到6),即bond0bond1bond2bond3bond4bond5bond6,其中常用的有三种:

  • mode=0:平衡负载模式,具备自动备援功能,但需要交换机的支持和配置。
  • mode=1:自动备援模式,当一条线路断开时,其他线路会自动接管。
  • mode=6:平衡负载模式,具备自动备援功能,不需要交换机的支持和配置。

mode=0(平衡负载模式,Balance-rr)

这种模式通过轮询(round-robin)的方式在所有绑定的网络接口之间分配网络流量。它确保每个网络接口都会轮流发送和接收数据包,以达到负载均衡的效果。

特点:
  1. 负载均衡:通过轮询方式分配流量,可以实现所有绑定接口的负载均衡。
  2. 冗余备援:如果其中一个接口出现故障,流量会自动切换到其他正常的接口,以确保网络连接的可靠性。
  3. 性能提升:在支持的环境中,可以显著提升网络带宽和性能,因为流量同时在多个接口上传输。
要求:
  • 交换机支持:该模式需要连接的交换机支持EtherChannel(如Cisco的)或类似的技术,并且需要在交换机上进行相应的配置以实现链路聚合。
  • 配置复杂度:由于需要交换机的支持和配置,设置较为复杂。
适用场景:
  • 需要高带宽和高可用性的环境,如服务器群集、数据中心等。
  • 环境中具备支持链路聚合技术的高级交换机设备。

mode=1(自动备援模式,Active-backup)

在这种模式下,只有一个网络接口处于活动状态,其他接口处于备援状态。如果活动接口出现故障,备援接口会自动接管,确保网络连接的连续性。

特点:
  1. 高可用性:通过自动备援机制,实现网络连接的高可用性。如果活动接口发生故障,备援接口会立即接管,最小化网络中断时间。
  2. 单链路流量:只有一个接口在任何时间点处于活动状态,因此总带宽受限于单个接口的带宽。
  3. 无交换机需求:不需要交换机的特殊支持或配置,适用于大多数网络环境。
要求:
  • 简易配置:无需复杂的交换机配置,只需在主机上进行绑定配置即可。
适用场景:
  • 对带宽要求不高,但需要高可靠性的网络环境,如服务器的管理接口或关键业务应用的网络连接。
  • 网络环境中没有支持链路聚合的高级交换机设备。

mode=2(XOR模式,Balance-xor)

在这种模式下,基于传输的流量信息(例如源和目标的MAC地址、IP地址等)进行流量分配。通过对这些信息进行异或(XOR)运算,确定每个数据包应该使用的物理接口。

特点:
  1. 负载均衡:能在不同的接口之间有效地分配流量,实现负载均衡。
  2. 冗余备援:如果某个接口出现故障,其他接口可以接管其流量,以确保网络连接的稳定性和可靠性。
  3. 性能优化:通过基于流的分配方式,可以实现更高效的网络流量管理,特别是在多个连接同时进行时。
要求:
  • 交换机配置:需要连接的交换机支持链路聚合技术(如EtherChannel或LACP),并且需要在交换机上进行相应的配置以支持XOR模式。
  • 配置复杂度:由于需要在交换机上进行配置,相比于不需要交换机支持的模式,配置相对复杂。
适用场景:
  • 多个客户端和服务器之间有大量并发连接的场景,如Web服务器群集。
  • 需要在不同连接之间进行负载均衡的高带宽环境。
工作原理:
  • XOR模式通过对数据包的源和目标地址信息进行异或运算,将计算结果用于选择出一个物理接口来发送该数据包。
  • 这种方式确保了同一对源和目标地址的流量始终通过同一个接口传输,从而避免了数据包的乱序问题。

mode=3(广播模式,Broadcast)

在这种模式下,所有传出的数据包都会通过所有的网络接口进行广播(即所有接口都会发送相同的数据包)。这种方式确保数据包会通过所有可能的路径传输到目的地,从而提高了数据传输的可靠性。

特点:
  1. 数据冗余:每个数据包都会通过所有绑定的接口进行发送,因此在任何一个接口出现故障时,其他接口仍能继续发送数据包,保证了数据传输的可靠性。
  2. 无负载均衡:这种模式下没有负载均衡功能,因为所有的接口都会同时发送相同的数据包,不能提高带宽。
  3. 高可靠性:适合需要确保数据包到达目的地的场景,因为即使一个接口失败,数据包仍能通过其他接口传输。
要求:
  • 支持多播/广播:连接的网络设备和网络结构需要支持多播或广播传输。
  • 配置相对简单:不需要像mode=0那样复杂的交换机配置。
适用场景:
  • 需要极高可靠性的环境,如需要确保数据包到达目的地的实时通信系统、金融交易系统等。
  • 对带宽要求不高,但对数据传输成功率要求很高的场景。

mode=4(IEEE 802.3ad 动态链路聚合)

mode=4 采用IEEE 802.3ad标准,通过动态链路聚合协议(LACP, Link Aggregation Control Protocol)实现多个网络接口的捆绑。这种模式允许多个网卡协同工作,以提高带宽和提供冗余。

特点:
  1. 负载均衡:基于LACP协议,可以实现多个网络接口的负载均衡,提升总的网络吞吐量。
  2. 冗余备援:当某个链路失效时,流量会自动切换到其他正常的链路上,保证网络的高可用性。
  3. 动态配置:LACP协议允许动态配置和管理链路聚合,可以根据实际情况调整链路数量。
  4. 带宽聚合:多个网络接口的带宽可以聚合在一起,形成一个更大的虚拟带宽。
要求:
  • 交换机支持:需要连接的交换机支持IEEE 802.3ad标准的LACP协议,并需要在交换机上进行相应配置。
  • 配置复杂度:由于需要配置交换机的LACP功能,设置相对复杂。
适用场景:
  • 数据中心、高性能计算环境等需要高带宽和高可靠性的场景。
  • 企业级网络环境,尤其是需要动态调整网络带宽和负载的环境。

mode=5(适配器传输负载均衡,Balance-tlb)

这种模式通过根据每个接口的当前负载来动态调整出站流量,从而在多个网络接口之间实现负载均衡。传入流量由当前的主接口处理。

特点:
  1. 传输负载均衡:通过监测每个接口的负载情况,动态调整流量的分配,使出站流量在接口之间平衡。
  2. 自动备援:如果一个接口失效,流量会自动切换到其他接口,确保网络连接的可靠性。
  3. 无需交换机支持:这种模式不需要交换机支持链路聚合技术,因此配置简单。
要求:
  • 单向负载均衡:仅对出站流量进行负载均衡,入站流量仍由主接口处理。
  • 动态负载调整:需要系统支持动态监测和调整接口负载。
适用场景:
  • 适用于不具备高级交换机支持的环境。
  • 需要在多接口之间分配出站流量的场景,如网络服务器和数据传输应用。

mode=6(平衡负载模式,Balance-alb)

mode=6是一种平衡负载模式,也称为"Adaptive Load Balancing"(ALB),它在mode=0的基础上进行了改进,主要针对了mode=0中的一个问题,即MAC地址风暴。MAC地址风暴是指当mode=0中的一个网卡失效后,其MAC地址会切换到另一个网卡,导致网络中的所有设备都要重新学习新的MAC地址,造成网络的短暂阻塞。mode=6通过动态修改网卡的MAC地址,解决了这个问题。

特点:
  1. 负载均衡:类似于mode=0,通过轮询方式在所有绑定的网络接口之间分配网络流量,实现负载均衡。
  2. 冗余备援:当一个接口失效时,其它正常的接口会接管其MAC地址和IP地址,无需交换机的支持。
  3. MAC地址动态修改:为避免MAC地址风暴,mode=6会动态地修改网卡的MAC地址,减少网络中断。
要求:
  • 不需要交换机支持:相比于mode=0,mode=6不需要交换机的支持和配置,减少了部署的复杂度。
  • 兼容性:需要确保网络设备对动态MAC地址更改的兼容性。
适用场景:
  • 需要高可用性和负载均衡,并且不想依赖于交换机配置的环境。
  • 对网络中断时间有严格要求的场景,如在线交易系统、云服务等。

小结

为方便大家的理解把上述总结如下表:

模式代号模式名称模式方式交换机设置聚合组速率
mode=0balance-rr轮询模式静态聚合组双倍
mode=1active-backup活动-备份模式无特别设置活动网卡速率
mode=2balance-xor异或策略静态聚合组双倍
mode=3broadcast广播模式静态聚合组双倍
mode=4802.3ad动态链路聚合模式动态聚合组双倍
mode=5balance-tlb传输负载均衡模式无特别设置双倍
mode=6balance-alb自适应负载均衡模式无特别设置双倍

配置示例

在ubuntu系统中,可以通过以编辑/etc/netplan/01-network-manager-all.yaml下的文件配置不同网卡的bond模式,下面以mode=4为例进行阐述

network:version: 2ethernets:eth0:dhcp4: nooptional: trueeth1:dhcp4: nooptional: truebonds:bond4:  dhcp4: noaddresses:- 192.168.1.103/24nameservers:addresses:- 192.168.1.1- 114.114.114.114routes:- to: defaultvia: 192.168.1.1interfaces:- eth0- eth1parameters:mode: 802.3ad  #这里是指定bond的模式mii-monitor-interval: 100lacp-rate: fasttransmit-hash-policy: layer2

修改上述的配置文件,重启网络服务,通过执行如下命令查看是否生效

详细信息查看/proc/net/bonding/bond4这个文件,如下图:

在交换机上,需要启用LACP并将相应端口加入LACP组。例如,在Cisco交换机上,可以通过以下命令进行配置:

Switch(config)# interface range GigabitEthernet0/1 - 2
Switch(config-if-range)# channel-group 1 mode active
Switch(config-if-range)# exit
Switch(config)# interface Port-channel 1
Switch(config-if)# switchport mode trunk

这种配置将eth0和eth1接口绑定为bond0,并将其设置为mode=4模式。交换机上的配置示例展示了如何启用LACP并将端口加入聚合组。需要注意的是,具体配置可能因系统和设备而异。

总结

网络卡绑定是提高 Linux 系统网络性能和可靠性的重要技术。通过将多张网卡绑定在一起,用户可以实现更高的带宽、更好的负载均衡和更强的冗余性。不同的绑定模式适用于不同的应用场景,用户可以根据实际需求选择合适的模式进行配置。
掌握网络卡绑定技术,不仅能提升系统的网络性能,还能为关键业务应用提供更高的稳定性和可靠性。

相关文章:

了解 Linux 网络卡绑定:提高网络性能与冗余性

在现代 IT 基础设施中,网络性能和可靠性至关重要。对于许多企业和个人用户来说,确保网络的高可用性和冗余性是首要任务之一。Linux 提供了一个强大的解决方案——网络卡绑定(Network Interface Card Bonding,简称 NIC Bonding&…...

2024年618购物狂欢节即将来袭!精选五款超值入手数码好物!

618购物狂欢盛宴即将落幕,是时候展现我们的购物智慧了!在追求价格优惠的同时,我们更应看重商品的品质与实用性。面对琳琅满目的选择,如何筛选出真正值得拥有的好物呢?为了让大家的购物之旅更加轻松愉快,以下…...

中国AI独角兽资本大冒险

成立不过一年多时间,月之暗面已然成为中国大模型赛道上,最炙手可热的明星公司。 5月21日,华尔街见闻获悉,月之暗面将按照投前估值30亿美元(合217.3亿人民币)进行融资,完成后依然会是当前中国估…...

项目十二:简单的python基础爬虫训练

许久未见,甚是想念,今日好运,为你带好运。ok,废话不多说,希望这门案例能带你直接快速了解并运用。🎁💖 基础流程 第一步:安装需要用到的requests库,命令如下 pip inst…...

OpenGL学习入门及开发环境搭建

最近学习OpenGL开发,被各种openGL库搞得晕头转向,什么glut, glew glfw glad等等。 可以参考这边博客:OpenGL 下面的 glut freeglut glfw 都是个啥_glx wgl的中文-CSDN博客 glfw是glut的升级版,跨平台的主要处理窗口 事件相关。 glad是glew…...

three.js能实现啥效果?看过来,这里都是它的菜(08)

在Three.js中实现旋转动画的原理是通过修改对象的旋转属性来实现的,通常使用渲染循环(render loop)来更新对象的旋转状态,从而实现动画效果。 具体的原理包括以下几个步骤: 创建对象:首先创建一个需要旋转…...

SpringBoot(九)之整合mybatis

SpringBoot(九)之整合mybatis 文章目录 SpringBoot(九)之整合mybatisSpring整合mybatis回顾1. 引入依赖2. mybatis-config.xml SpringBoot整合mybatis1.引入依赖2. 配置数据源和 MyBatis 属性3. 配置 Mapper 接口4. 配置mapper.xm…...

【实战教程】使用Spring AOP和自定义注解监控接口调用

一、背景 随着项目的长期运行和迭代,积累的功能日益繁多,但并非所有功能都能得到用户的频繁使用或实际上根本无人问津。 为了提高系统性能和代码质量,我们往往需要对那些不常用的功能进行下线处理。 那么,该下线哪些功能呢&…...

算法学习之:Raft-分布式一致性/共识算法

基础介绍 Raft是什么? Raft is a consensus algorithm that is designed to be easy to understand. Its equivalent to Paxos in fault-tolerance and performance. The difference is that its decomposed into relatively independent subproblems, and it clea…...

彩色进度条(C语言版本)

.h文件 #include<stdio.h> #include<windows.h>#define NUM 101 #define LOAD_UP 50 #define LOAD_DOWN 60 #define SLEEP_SLOW 300 #define SLEEP_FAST 70 版本1&#xff1a;&#xff08;初始版&#xff09; //v1 #include "progress.h" int main() …...

C#和C++有什么区别?

C#和C都是广泛使用的编程语言&#xff0c;但它们在设计理念、应用场景和语法上有许多显著的区别。以下是一些关键区别的详细介绍&#xff1a; 1. 设计理念和目的 C&#xff1a; 设计目的&#xff1a;C是一种面向系统编程和应用程序开发的语言&#xff0c;具有高效性和灵活性…...

微信小程序报错:notifyBLECharacteristicValueChange:fail:nodescriptor的解决办法

文章目录 一、发现问题二、分析问题二、解决问题 一、发现问题 微信小程序报错&#xff1a;notifyBLECharacteristicValueChange:fail:nodescriptor 二、分析问题 这个提示有点问题&#xff0c;应该是该Characteristic的Descriptor有问题&#xff0c;而不能说nodescriptor。 …...

富格林:可信攻略阻止遭遇欺诈

富格林悉知&#xff0c;在投资市场中&#xff0c;如何阻止遭遇欺诈情况应该是每位投资者都想要了解的一个知识点。事实上&#xff0c;现货黄金市场相对来说会其他市场复杂多变&#xff0c;因此要想盈利出金还是得要先学会阻止遭遇欺诈情况。据富格林所知&#xff0c;目前市面上…...

搭建淘宝扭蛋机小程序:技术选型与最佳实践

随着移动互联网的快速发展&#xff0c;小程序作为一种轻量级应用&#xff0c;以其无需安装、即用即走的特点&#xff0c;受到了广大用户的喜爱。在电商领域&#xff0c;淘宝作为国内最大的电商平台之一&#xff0c;也积极拥抱小程序技术&#xff0c;为用户提供更加便捷、个性化…...

【线性回归】梯度下降

文章目录 [toc]数据数据集实际值估计值 梯度下降算法估计误差代价函数学习率参数更新 Python实现导包数据预处理迭代过程结果可视化完整代码 结果可视化线性拟合结果代价变化 数据 数据集 ( x ( i ) , y ( i ) ) , i 1 , 2 , ⋯ , m \left(x^{(i)} , y^{(i)}\right) , i 1 ,…...

GMSL图像采集卡,适用于无人车、自动驾驶、自主机器、数据采集等场景,支持定制

基于各种 系列二代 G MS L 图像采集卡&#xff08;以下简称 二代图像采集卡&#xff09;是一款自主研发的一款基于 F P G A 的高速图像产品&#xff0c;二代图像采集卡相比一代卡&#xff0c;由于采用PCIe G en 3 技术&#xff0c;速度和带宽都相应的有了成 倍的提高。该图像…...

docker不删除容器更改其挂载目录

场景&#xff1a;docker搭建的jenkins通常需要配置很多开发环境&#xff0c;当要更换挂载目录&#xff0c;每次都需要删除容器重新运行&#xff0c;不在挂载目录的环境通常不会保留。 先给一个参考博客docker不删除容器&#xff0c;修改容器挂载或其他_jenkins 修改容器挂载do…...

K8s Service 背后是怎么工作的?

kube-proxy 是 Kubernetes 集群中负责服务发现和负载均衡的组件之一。它是一个网络代理&#xff0c;运行在每个节点上, 用于 service 资源的负载均衡。它有两种模式&#xff1a;iptables 和 ipvs。 iptables iptables 是 Linux 系统中的一个用户空间实用程序&#xff0c;用于…...

ClickHouse配置与使用

静态IP配置 # 修改网卡配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33# 修改文件内容 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic IPADDR192.168.18.128 NETMASK255.255.255.0 GATEWAY192.168.18.2 DEFROUTEyes IPV4_FAILURE_FATALno IPV6INIT…...

将某一个 DIV 块全屏展示

文章目录 需求分析 需求 上节我们研究了如何将页面中的指定 div 下载为图片&#xff1a;跳转查看 本节演技一下如何将 DIV 全屏展示 全屏展示某一个 DIV 分析 其实就是模拟键盘动作 F11 var element document.getElementById(pic) var requestMethod element.requestFullS…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...