Linux网卡bonding

一、binding技术

bonding(绑定)是一种linux系统下的网卡绑定技术,可以把服务器上n个物理网卡在系统内部抽象(绑定)成一个逻辑上的网卡,能够提升网络吞吐量、实现网络冗余、负载等功能,有很多优势。

二、常用模式详解

1、模式0 balance-rr


默认模式

  • 优点:有高可用性(容错)和负载均衡的功能,需要交换机配置,每块网卡轮询发包,流量分发比较均匀。
  • 缺点:一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降
交换机配置静态聚合口
Switch1# configure terminal 进入全局配置模式 
Switch1(config)# interface eth-0-1 进入接口配置模式 
Switch1(config-if)# no shutdown  端口 up 
Switch1(config-if)# static-channel-group 1 添加接口到 channel group 1 
Switch1(config-if)# exit  退出接口配置模式 
Switch1(config)# interface eth-0-2 进入接口配置模式 
Switch1(config-if)# static-channel-group 1 添加接口到 channel group 1 
Switch1(config-if)# no shutdown  端口 up 
Switch1(config-if)# exit  退出接口配置模式 
### Switch1(config-if)# no static-channel-group 从聚合口移除
### Switch1# show channel-group summary 验证静态聚合口
### Switch1# show interface agg 1 
配置过程,网上有很多例子。

查看bond状态的命令

  • ifconfig #ifconfig命令可以查看设备的bond信息,bond口和两个成员口MAC地址相同,成员口的地址失效,两块网卡共用bond0设备的一个IP地址
  • cat /proc/net/bonding/bond0
  • cat /sys/class/net/bond0/bonding/mode
#cat /proc/net/bonding/bond0接口状态
[root@nas network-scripts]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: p7p1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:b3:42:03:b3:f0
Slave queue ID: 0

Slave Interface: p7p2
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:b3:42:03:b3:f1
Slave queue ID: 0
#cat ifcfg-bond0
[root@nas network-scripts]# cat ifcfg-bond0
#Modify#
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=bond0
ONBOOT=yes
BONDING_OPTS="miimon=100  mode=balance-rr
IPADDR="192.168.11.151"
PREFIX=24
SLAVER="p7p1,p7p2"
  • bond默认只能做网口mii检测不做arp链路检测,也可以使用ARP做链路检测,但是arp比较消耗资源
  • 负载均衡模式下,slave口在操作系统上看是两个独立的Mac地址

2、模式1 active-backup 主备

  • 特点:一个网口处于主状态,一个处于从状态,所有流量都在主链路上处理,从状态不会出现任何流量。当主端口down掉时,从端口接手主状态。此模式优点是可以提供高网络连接的可用性,但是资源利用率较低,只有一个接口处于工作状态。
  • 此时绑定的MAC地址只在一个外部端口上可见。交换机配置的是捆绑的话将不能工作,因为交换机往两块网卡发包,有一半包是丢弃的
此模式不需要交换机配置
#cat /proc/net/bonding/bond0接口状态。
[root@nas network-scripts]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: p7p2  #p7p2为主设备
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: p7p2
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:b3:42:03:b3:f1
Slave queue ID: 0

Slave Interface: p7p1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:b3:42:03:b3:f0
Slave queue ID: 0
#cat ifcfg-bond0
[root@nas network-scripts]# cat ifcfg-bond0
#Modify#
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=bond0
ONBOOT=yes
BONDING_OPTS="miimon=100  mode=active-backup
"
IPADDR="192.168.11.151"
PREFIX=24
SLAVER="p7p1,p7p2"

3、模式4 802.3ad lacp IEEE 802.3ad动态链路聚合

  • 特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。
    外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。
交换机配置动态聚合
Switch# configure terminal 
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)# interface range eth-0-3 - 4
Switch(config-if-range)# channel-group 1 mode active 
Switch(config-if-range)# exit
Switch(config)# exit
Switch#  show channel-group summary  #查看信息
port-channel load-balance hash-arithmetic: xor
port-channel load-balance hash-field-select:
        macda macsa ipsa ipda 

Flags:  s - suspend           T - standby
        D - down/admin down   B - in Bundle
        R - Layer3            S - Layer2
        w - wait              U - in use

Mode:   SLB  - static load balance
        DLB  - dynamic load balance
        SHLB - self-healing load balance
        RR   - round robin load balance

Aggregator Name  Mode      Protocol     Ports
----------------+---------+------------+-----------------------------------------------
agg1(SD)         SLB       LACP         eth-0-3(s)      eth-0-4(s)
cat /proc/net/bonding/bond0
[root@nas network-scripts]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer3+4 (1)  ##hash策略
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

802.3ad info
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable
System priority: 65535
System MAC address: 00:b3:42:03:b3:f0
Active Aggregator Info:
    Aggregator ID: 1
    Number of ports: 2
    Actor Key: 13
    Partner Key: 1
    Partner Mac Address: 00:1e:08:0f:43:c3

Slave Interface: p7p1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:b3:42:03:b3:f0
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
    system priority: 65535
    system mac address: 00:b3:42:03:b3:f0
    port key: 13
    port priority: 255
    port number: 1
    port state: 61
details partner lacp pdu:
    system priority: 2000
    system mac address: 00:1e:08:0f:43:c3
    oper key: 1
    port priority: 32768
    port number: 3
    port state: 61

Slave Interface: p7p2
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:b3:42:03:b3:f1
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
    system priority: 65535
    system mac address: 00:b3:42:03:b3:f0
    port key: 13
    port priority: 255
    port number: 2
    port state: 61
details partner lacp pdu:
    system priority: 2000
    system mac address: 00:1e:08:0f:43:c3
    oper key: 1
    port priority: 32768
    port number: 4
    port state: 61

此模式基于hash算法,随机选择网口,不同的hash策略选择的网口可能不相同。

hash算法(xmit_hash_policy)
数值 策略 算法
0 layer2 默认值, hash = source MAC XOR destination MAC XOR packet type ID hash mod slave count
1 layer3+4 hash = source MAC XOR destination MAC XOR packet type ID hash = hash XOR source IP XOR destination IP hash = hash XOR (hash RSHIFT 16) hash = hash XOR (hash RSHIFT 8) hash mod slave count
2 layer2+3 hash = source port, destination port (as in the header) hash = hash XOR source IP XOR destination IP hash = hash XOR (hash RSHIFT 16) hash = hash XOR (hash RSHIFT 8) hash modulo slave count.
hash策略中异或方式 详细的解释可以参考下方的官方文档
bond的源码地址
https://github.com/torvalds/linux/commit/b5f862180d7011d9575d0499fa37f0f25b423b12
bond的官方文档
https://www.kernel.org/doc/Documentation/networking/bonding.txt
针对802.3ad中的hash算法layer3+4的解释
https://www.llcblog.cn/2020/01/10/how-bonding-lacp-xmit-hash-work/
参考文章
https://blog.csdn.net/sxy2475/article/details/77425931?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase
关于bond的参数详解及部分源码解释:
https://blog.csdn.net/sinat_20184565/article/details/104510601
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容

  • 网卡绑定:目前网卡绑定有7种模式:bond0, bond1, bond2, bond3, bond4, bond5...
    崩芭大酱阅读 1,090评论 0 0
  • 发现工作中可能会用到Linux下网卡绑定相关的知识。找了些文章看,然后一通混剪,各家所长为我所用。 什么是网卡bo...
    rubinw阅读 14,225评论 1 3
  • 网卡绑定mode共有七种(0~6) bond0、bond1、bond2、bond3、bond4、bond5、bon...
    一点也不想吃辣阅读 821评论 0 3
  • 基本的绑定方法,只需要按照前5步执行就可以。剩余部分作深入了解即可。 1.需要彻底关闭NetworkManger ...
    laod_wh阅读 429评论 0 0
  • Linux 网卡bond的七种模式 什么是bond 网卡bond是通过多张网卡绑定为一个逻辑网卡,实现本地网卡的冗...
    iCaptain阅读 3,997评论 0 11