Linux系统双网卡聚合超详细教程
  

Duxingxu 3046

{{ttag.title}}
本帖最后由 Duxingxu 于 2021-5-5 17:20 编辑

Linux系统双网卡聚合超详细教程
将多个物理网卡聚合在一起,从而实现冗错和提高吞吐量
网络组不同于旧版中bonding技术,提供更好的性能和扩展性
网络组由内核驱动和teamd守护进程实现.
主要分为两种类型bond、teambond模式介绍(支持多块网卡聚合)mode=0(balance-rr)交换机需要配置链路聚合
表示负载分担,并且是轮询的方式比如第一个包走eth0,第二个包走eth1,直到数据包发送完毕。
优点:流量提高一倍
缺点:需要接入交换机做端口聚合,否则可能无法使用
mode=1(active-backup)
同时只有1块网卡在工作。
优点:冗余性高
缺点:链路利用率低,两块网卡只有1块在工作
mode=2(balance-xor)(平衡策略)交换机需要配置链路聚合
表示XOR Hash负载分担,和交换机的聚合强制不协商方式配合。(需要xmit_hash_policy,需要交换机配置port channel)
特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力
mode=3(broadcast)(广播策略)
表示所有包从所有网络接口发出,这个不均衡,只有冗余机制,但过于浪费资源。此模式适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题。需要和交换机的聚合强制不协商方式配合。
特点:在每个slave接口上传输每个数据包,此模式提供了容错能力
mode=4(802.3ad)(IEEE 802.3ad 动态链接聚合)不常用,且不同厂商的LCAP报文协商不成功
表示支持802.3ad协议,和交换机的聚合LACP方式配合(需要xmit_hash_policy).标准要求所有设备在聚合操作时,要在同样的速率和双工模式,而且,和除了balance-rr模式外的其它bonding负载均衡模式一样,任何连接都不能使用多于一个接口的带宽。
特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。
外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。需要注意的是,并不是所有的传输策略都是802.3ad适应的,尤其考虑到在802.3ad标准43.2.4章节提及的包乱序问题。不同的实现可能会有不同的适应 性。
必要条件:
条件1:ethtool支持获取每个slave的速率和双工设定
条件2:switch(交换机)支持IEEE 802.3ad Dynamic link aggregation
条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式
mode=5(balance-tlb)(适配器传输负载均衡)
是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave。该模式要求slave接口的网络设备驱动有某种ethtool支持;而且ARP监控不可用。
特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
应用拓扑同mode 0,和mode 2一样,不过这种模式除了配置port channel之外还要在port channel聚合口下开启LACP功能,成功协商后,两端可以正常通信。否则不能使用
mode=6(balance-alb)(适配器适应性负载均衡)
在5的tlb基础上增加了rlb(接收负载均衡receive load balance).不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的.
特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance, rlb),而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。来自服务器端的接收流量也会被均衡。当本机发送ARP请求时,bonding驱动把对端的IP信息从ARP包中复制并保存下来。当ARP应答从对端到达 时,bonding驱动把它的硬件地址提取出来,并发起一个ARP应答给bond中的某个slave。
使用ARP协商进行负载均衡的一个问题是:每次广播 ARP请求时都会使用bond的硬件地址,因此对端学习到这个硬件地址后,接收流量将会全部流向当前的slave。这个问题可以通过给所有的对端发送更新 (ARP应答)来解决,应答中包含他们独一无二的硬件地址,从而导致流量重新分布。
当新的slave加入到bond中时,或者某个未激活的slave重新 激活时,接收流量也要重新分布。接收的负载被顺序地分布(round robin)在bond中最高速的slave上
当某个链路被重新接上,或者一个新的slave加入到bond中,接收流量在所有当前激活的slave中全部重新分配,通过使用指定的MAC地址给每个 client发起ARP应答。下面介绍的updelay参数必须被设置为某个大于等于switch(交换机)转发延时的值,从而保证发往对端的ARP应答 不会被switch(交换机)阻截。
必要条件:
条件1:ethtool支持获取每个slave的速率;
条件2:底层驱动支持设置某个设备的硬件地址,从而使得总是有个slave(curr_active_slave)使用bond的硬件地址,同时保证每个bond 中的slave都有一个唯一的硬件地址。如果curr_active_slave出故障,它的硬件地址将会被新选出来的 curr_active_slave接管其实mod=6与mod=0的区别:mod=6,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会发现2个口的流量都很稳定,基本一样的带宽。而mod=6,会发现第一个口流量很高,第2个口只占了小部分流量。
总结:
mode 1、5、6不需要交换机设置
mode 0、2、3、4需要交换机设置
常用的模式 mode 0  1  6
实测中mode0可以通过mac地址欺骗的方式在交换机不设置的情况下不太均衡地进行接收
实际工作中Linux系统网卡配置案列基于bond(VMware Workstation也支持做聚合)
网络拓扑图
hostnamectl(查看Linux版本信息)
ip  a               // (查看当前网卡信息)

能详细看到ens37、和ens38没有使用(每个服务器网卡名字不同,仅供参考)
小技巧
服务器上有很多网卡,不确定哪个口对应哪个网卡可以使用命令
ethtool -p ens37   -                             //此时对应网卡接口灯会闪烁nmtui 图形模式配置(强烈推荐快、简单、方便)
按(tab键来回切换、上下左右也能操控、回车确定)

选择添加一个bond组


把ens37、ens38网卡添加到聚合组中bond中

添加ens37网卡到聚合组中,点击确认(每台服务器的网卡不同,仅供参考)
添加ens38网卡到聚合组中确认(每台服务器的网卡不同,仅供参考)
)]


验证是否把正确的网卡添加到bond组中点击编辑能看到网卡的对应的MAC地址说明成功


按照实际情况选择绑定模式(此处选择mode 0)负载分担

链路检测、时间选择默认即可
配置聚合组bond的IP地址、netmask、DNS、gateway


点击返回
)]
点击 确认
重启网络服务systemctl restart netwrok可以很明显的看到ens37、ens38中网卡中的MAC地址和nm-bond聚合组的MAC地址是一致的无需质疑
验证方法nmcli connection show nmcli device status     //查看网卡状态
ifconfig ens37 down                  //关闭ens37网口
r

验证成功
交换机链路聚合不再阐述(后期详细讲解)
team模式介绍(最大支持2-8块网卡聚合)
team模式概述
team模式的工作模式与bond模式不同,有四种,分别是"broadcast"广播容错、"roundrobin"平衡轮询、"activebackup"主备和"loadbalance"负载均衡。在添加team模式时命令中的工作模式命令也不同,team模式的命令格式是’{“runner”:{“name”:“工作模式”}}’,这点需要注意。
runner 方式:
1.roundrobin 【mode 0】负载均衡 (balance-rr)
特点:
)从头到尾顺序的在每一个slave接口上面发送数据包,轮询方式往每条链路发送报文,基于per packet方式发送。服务上ping 一个相同地址:1.1.1.1 双网卡的两个网卡都有流量发出。负载到两条链路上,说明是基于per packet方式 ,进行轮询发送。
2)提供负载均衡和容错的能力,当有链路出问题,会把流量切换到正常的链路上。
交换机端需要配置聚合口
2.activebackup【mode 1】活动-备份(主备)策略
特点:
一个端口处于主状态 ,一个处于从状态,所有流量都在主链路上处理,从链路不会有任何流量。当主端口down掉时,从端口接手主状态。
不需要交换机端支持
3.loadbalance【mode 2】限定流量
特点:
该模式将限定流量,以保证到达特定对端的流量总是从同一个接口上发出。既然目的地是通过MAC地址来决定的,因此该模式在“本地”网络配置下可以工作得很好。
如果所有流量是通过单个路由器(比如 “网关”型网络配置,只有一个网关时,源和目标mac都固定了,那么这个算法算出的线路就一直是同一条,那么这种模式就没有多少意义了。),那该模式就不是最好的选择。
和balance-rr一样,交换机端口需要能配置为“port channel”。这模式是通过源和目标mac做hash因子来做xor算法来选路的。
交换机端需要配置聚合口
4.broadcast【mode 3】广播策略
特点:
这种模式一个报文会复制两份往bond下的两个接口分别发送出去,当有对端交换机失效,我们感觉不到任何downtime,但此法过于浪费资源;不过这种模式有很好的容错机制。
此模式适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题
适用于拓扑,两个接口分别接入两台交换机,并且属于不同的vlan,当一边的网络出现故障不会影响服务器另一边接入的网络正常工作。而且故障过程是0丢包
5.lacp (implements the 802.3ad Link Aggregation ControlProtocol)【mode 4】
特点:
802.3ad模式是IEEE标准,因此所有实现了802.3ad的对端都可以很好的互操作。802.3ad 协议包括聚合的自动配置,因此只需要很少的对交换机的手动配置(要指出的是,只有某些设备才能使用802.3ad)。802.3ad标准也要求帧按顺序(一定程度上)传递,因此通常单个连接不会看到包的乱序。
总结
mode 0 3 4 需要交换机配置
mode 1 不需要交换机配置
常用模式 mode 0 1 实际工作配置方法
网络拓扑图如下:
配置如下:
hostnamectl(查看Linux版本信息)
ip  a               // (查看当前网卡信息)
]
能详细看到ens37、和ens38没有使用(每个服务器网卡名字不同,仅供参考)
小技巧
服务器上有很多网卡,不确定哪个口对应哪个网卡可以使用命令
ethtool -p ens37   -                             //此时对应网卡接口灯会闪烁nmtui 图形模式配置(强烈推荐快、简单、方便)
按(tab键来回切换、上下左右也能操控、回车确定)

选择添加一个team组
点击创建

把物理接口ens37、ens38加入到team组中



验证成功能看到物理网卡的MAC地址
配置聚合组team的IP地址、netmask、DNS、gateway点击确认)]
确认
cd /etc/sysconfig/network-scripts/               /进入linux网卡配置文件指定的team配置文件中
cat ifcfg-组队连接_1                          //查看team配置文件信息、最后一行加入team的模式  
vi   ifcfg-组队连接_1                       //按住i键进入编辑模式,最后一行加上TEAM_CONFIG={“runner”: {“name”: “`roundrobi`n”}}   负载分担模式,按照实际需求修改esc键shift +zz 快速保存(或者wq)

重启网络服务systemctl restart network   
验证
ip a 可以很明显的看到ens37、ens38中的MAC地址和nm-team聚合组的MAC地址是一致的无需质疑

进一步验证
nmcli connection show nmcli device status
上述所有配置均也可采用命令行的配置方法(但是容易出错,一个英文敲错就得排查)交换机链路聚合原理配置方法后期会详细讲解,很感谢每一个点赞和关注的帅哥、美女谢谢大家!

打赏鼓励作者,期待更多好文!

打赏
4人已打赏

dhf 发表于 2021-7-19 14:55
  
感谢楼主的精彩分享,有助工作!!!
暗夜星空 发表于 2021-7-22 13:15
  
坚持每日学习打卡
新手078326 发表于 2021-8-9 09:50
  
感谢分享,有助工作  
新手078326 发表于 2021-9-2 11:10
  
感谢楼主的精彩分享,有助工作!!!
新手612152 发表于 2021-9-11 08:48
  
感谢楼主的精彩分享,有助工作!
新手780102 发表于 2021-9-12 10:46
  
感谢楼主的精彩分享,有助工作
小鱼儿 发表于 2023-12-13 09:55
  
一起来学习 一起来学习哦
小西北 发表于 2023-12-13 09:55
  
一起来学习 一起来学习哦
朱墩2 发表于 2023-12-13 09:55
  
一起来学习 一起来学习哦
发表新帖
热门标签
全部标签>
每日一问
技术盲盒
技术笔记
干货满满
技术咨询
功能体验
产品连连看
新版本体验
GIF动图学习
2023技术争霸赛专题
自助服务平台操作指引
标准化排查
信服课堂视频
运维工具
通用技术
秒懂零信任
技术晨报
用户认证
安装部署配置
每日一记
安全攻防
SDP百科
设备维护
深信服技术支持平台
社区帮助指南
答题自测
玩转零信任
畅聊IT
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
上网策略
测试报告
日志审计
问题分析处理
流量管理
云计算知识
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版达人

adds

本周建议达人

无极剑圣

本周分享达人

新手25642...

本周提问达人