Linux系统下网卡绑定模式及配置方法详解

一、网卡绑定模式

Linux 绑定驱动程序提供链路聚合。绑定是并行聚合多个网络接口以提供单个逻辑绑定接口的过程。绑定接口的操作取决于绑定策略,该策略也称为模式。不同的模式提供负载均衡或热备用服务。

1.1 绑定模式介绍

根据要使用的绑定模式,您必须配置交换机上的端口:

绑定模式交换机上的配置

0 - balance-rr

需要启用静态 EtherChannel,而不是链路聚合控制协议 (LACP) 协商。

1 - active-backup

交换机上无需进行任何配置。

2 - balance-xor

需要启用静态 EtherChannel,而不是 LACP 协商。

3 - broadcast

需要启用静态 EtherChannel,而不是 LACP 协商。

4 - 802.3ad

需要启用 LACP 协商的 EtherChannel。

5 - balance-tlb

交换机上无需进行任何配置。

6 - balance-alb

交换机上无需进行任何配置。

 

 

有关如何配置交换机的详细信息,请参阅交换机的文档。 

  • Balance-rr(模式 0)

Balance-rr使用循环算法,该算法按顺序将数据包从第一个可用端口传输到最后一个端口。此模式提供负载均衡和容错功能。

此模式需要交换机配置端口聚合组,也称为 EtherChannel 或类似的端口分组。EtherChannel 是一种端口链路聚合技术,用于将多个物理以太网链路分组到一个逻辑以太网链路。

此模式的缺点是它不适合繁重的工作负载,并且如果 TCP 吞吐量或有序数据包传输是必不可少的。

  • Active-backup主备模式(mode 1)

Active-backup使用确定绑定中只有一个端口处于活动状态的策略。此模式提供容错功能,不需要任何交换机配置。

如果活动端口发生故障,备用端口将变为活动端口。绑定向网络发送无偿地址解析协议 (ARP) 响应。无偿 ARP 强制 ARP 帧的接收方更新其转发表。Active-backup模式传输免费 ARP,以宣布新的路径以保持主机的连接。

primary选项定义绑定接口的首选端口。

  • Balance-xor(mode 2)

Balance-xor使用选定的传输哈希策略发送数据包。此模式提供负载均衡、容错功能,并且需要交换机配置以设置 Etherchannel 或类似的端口分组。

要更改数据包传输和平衡传输,此模式使用xmit_hash_policy选项。根据接口上流量的来源或目标,接口需要额外的负载均衡配置。请参阅粘接参数xmit_hash_policy说明。

  • Broadcast(mode 3)

Broadcast使用在所有接口上传输每个数据包的策略。此模式提供容错功能,并且需要交换机配置来设置 EtherChannel 或类似的端口分组。

此模式的缺点是它不适合繁重的工作负载,并且如果 TCP 吞吐量或有序数据包传输是必不可少的。

  • 802.3ad(mode 4)

802.3ad使用同名的IEEE标准动态链路聚合策略。此模式提供容错能力。此模式需要交换机配置来设置链路聚合控制协议 (LACP) 端口分组。

此模式创建共享相同速度和双工设置的聚合组,并利用活动聚合器中的所有端口。根据接口上流量的来源或目标,此模式需要额外的负载均衡配置。

默认情况下,传出流量的端口选择取决于传输哈希策略。使用传输哈希策略的xmit_hash_policy选项来更改端口选择并平衡传输。

802.3ad Balance-xor之间的区别在于合规性。802.3ad策略在端口聚合组之间协商 LACP。请参阅粘接参数xmit_hash_policy说明

  • Balance-tlb(mode 5)

Balance-tlb使用传输负载均衡策略。此模式提供容错、负载均衡,并建立不需要任何开关支持的通道绑定。

活动端口接收传入流量。如果活动端口发生故障,另一个端口将接管故障端口的 MAC 地址。要确定哪个接口处理传出流量,请使用以下模式之一:

0:使用哈希分配策略在不进行负载均衡的情况下分配流量

1:通过负载均衡将流量分配到每个端口
在绑定选项tlb_dynamic_lb=0的情况下,这种绑定模式使用xmit_hash_policy绑定选项来平衡传输。primary选项定义了绑定接口的首选端口。

  • Balance-alb(mode 6)

Balance-alb使用自适应负载均衡策略。此模式提供容错、负载均衡,并且不需要任何特殊的开关支持。

此模式包括 IPv4 和 IPv6 流量的平衡-传输负载均衡 (balance-tlb) 和接收-负载均衡。绑定拦截本地系统发送的 ARP 应答,并覆盖绑定中其中一个端口的源硬件地址。ARP协商管理接收-负载均衡。因此,不同的端口对服务器使用不同的硬件地址。

primary选项定义绑定接口的首选端口。使用tlb_dynamic_lb=0绑定选项时,此绑定模式使用xmit_hash_policy绑定选项来平衡传输。请参阅粘接参数xmit_hash_policy说明。

1.2 xmit_hash_policy绑定参数

 xmit_hash_policy负载均衡参数用于在balance-xor、802.3ad、balance-alb和balance-tlb模式中选择传输哈希策略。仅当tlb_dynamic_lb参数为0时,该参数适用于模式5和6。该参数的可能值包括layer2、layer2+3、layer3+4、encap2+3、encap3+4以及vlan+srcmac。

有关详细信息,请参阅下表:

策略层或网络层

Layer2Layer2+3Layer3+4encap2+3encap3+4

VLAN+srcmac

使用

源和目标MAC地址的XOR以及以太网协议类型

源和目标 MAC 地址以及 IP 地址的 XOR

源端口和目标端口以及 IP 地址的异或

对源MAC地址和目标MAC地址以及支持的隧道内的IP地址进行XOR运算,例如虚拟可扩展局域网(VXLAN)。该模式依赖于skb_flow_dissect()函数来获取报文头字段对源端口和目标端口以及支持的隧道内的IP地址进行XOR运算,例如VXLAN。该模式依赖于skb_flow_dissect()函数来获取报文头字段

VLAN ID 和源 MAC 供应商和源 MAC 设备的 XOR

流量放置

流向同一底层网络接口上的特定网络对等体的所有流量

发往同一底层网络接口上特定 IP 地址的所有流量

发往同一底层网络接口上特定 IP 地址和端口的所有流量

第一选择

如果网络流量在此系统与同一广播域中的多个其他系统之间

如果此系统与多个其他系统之间的网络流量通过默认网关

如果此系统与另一个系统之间的网络流量使用相同的 IP 地址,但通过多个端口

封装的流量在源系统与使用多个 IP 地址的多个其他系统之间进行

封装的流量在源系统和使用多个端口号的其他系统之间进行

如果绑定传输来自多个容器或虚拟机 (VM) 的网络流量,这些流量将其 MAC 地址直接暴露给外部网络(如桥接网络),则无法为模式 2 或模式 4 配置交换机

第二选择

如果网络流量主要在此系统与默认网关后面的多个其他系统之间

如果网络流量主要在此系统和另一个系统之间

兼容的

802.3ad

802.3ad

不是 802.3ad

默认策略

如果未提供任何配置,则这是默认策略

对于非IP流量,该公式与layer2层传输策略相同

对于非 IP 流量,公式与layer2层传输策略的公式相同

二、配置方法

2.1 通过网卡配置文件方式配置网卡绑定 

2.1.1 redhat&centos&rocky Linux系列

网卡配置文件位置在/etc/sysconfig/network-scripts/目录下

示例1:以网卡1和网卡2配置网卡绑定模式为802.3ad 也就是mode 4为例,对应交换机端配置LACP动态链路聚合,

步骤1、编辑文件/etc/sysconfig/network-scripts/ ifcfg-bond1,将以下内容写入并保存

DEVICE=bond1
NAME=bond1
TYPE=bond
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="mode=4 lacp_rate=1 miimon=100 xmit_hash_policy=layer3+4"
BONDING_MASTER=yes
IPADDR=ip address
NETMASK=netmask
NM_CONTROLLED=no
USERCTL=no

步骤2、分别修改网卡1跟网卡2的配置文件,将以下内容写入并保存

网卡1配置文件示例

DEVICE=device_name
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
MASTER=bond1
SLAVE=yes
NM_CONTROLLED=no
USERCTL=no

网卡2配置文件示例

DEVICE=device_name
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
MASTER=bond1
SLAVE=yes
NM_CONTROLLED=no
USERCTL=no

步骤3、启用配置,重启网络服务

# systemctl restart network

示例2、 以网卡1和网卡2配置网卡绑定模式为Active-backup主备模式 也就是mode 1为例,

步骤1、修改绑定网络接口bond2的网络配置文件,编辑文件“/etc/sysconfig/network-scripts/ ifcfg-bond2”,内容如下:

DEVICE=bond2
NAME=bond2
TYPE=bond
ONBOOT=yes
BOOTPROTO=static
BONDING_MASTER=yes
BONDING_OPTS="mode=1 miimon=100"
IPADDR=ip_address
NETMASK=netmask
IPV6INIT=yes
NM_CONTROLLED=no
USERCTL=no

步骤2、修改网卡1跟网卡2配置文件,内容如下

DEVICE=网卡1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
MASTER=bond2
SLAVE=yes
NM_CONTROLLED=no
USERCTL=no
DEVICE=网卡2
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
MASTER=bond2
SLAVE=yes
NM_CONTROLLED=no
USERCTL=no

步骤3、启用配置,重启网络服务

# systemctl restart network

2.1.2 Debian系(Ubuntu) 

示例1、以网卡ens36与37配置mode4为例,对应交换机端配置LACP动态链路聚合

注意:

Ubuntu系统从17.10版本开始,默认使用的网络管理工具从ifupdown转变为了Netplan。在这之后的版本中,不再使用传统的/etc/network/interfaces文件来配置网络,而是使用YAML格式的配置文件,通常位于/etc/netplan/目录下。

如果你需要在Ubuntu 17.10或更高版本中配置静态IP地址,你应该编辑Netplan配置文件,而不是修改interfaces文件。

  • Ubuntu17.10之前版本配置方法

步骤1:修改配置文件/etc/network/interfaces,内容如下:

vi /etc/network/interfaces

 source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

auto ens36
iface ens36 inet manual
bond-master bond0

auto ens37
iface ens37 inet manual
pre-up sleep 5
bond-master bond0

auto bond0
iface bond0 inet static
  address 192.168.10.2
  netmask 255.255.255.0
  gateway 192.168.10.254
  bond-mode 4
  bond-miimon 100
  bond-lacp-rate 1
  bond-slaves ens36 ens37

步骤2:重启网络服务

#service network restart 
或
#/etc/init.d/networking restart
  • Ubuntu17.10以后版本配置方法:

修改/etc/netplan/ 01-network-manager-all.yaml文件或新创建yaml文件,文件内容如下:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      dhcp4: no
    enp2s0:
      dhcp4: no
    enp3s0:
      dhcp4: no
      optional: true
    enp4s0:
      dhcp4: no
      optional: true
    enp5s0:
      dhcp4: no
      optional: true
    enp6s0:
      dhcp4: no
      optional: true
  bonds:
    bond-guanli:
      interfaces: [enp2s0, enp3s0]
      addresses: [192.168.93.2/24]
      parameters:
        mode: 802.3ad
        mii-monitor-interval: 1
    bond-yewu:
      interfaces: [enp1s0, enp4s0]
      addresses: [192.168.1.252/24]
      nameservers:
        search: [local]
        addresses: [8.8.8.8, 8.8.4.4]
      parameters:
        mode: active-backup
        mii-monitor-interval: 1
        gratuitious-arp: 5
      routes:
        - to: default
          via: 192.168.1.1
    bond-cuncu:
      interfaces: [enp5s0, enp6s0]
      addresses: [192.168.254.2/24]
      parameters:
        mode: balance-rr
        mii-monitor-interval: 1

2.2 使用nmtui配置网卡绑定

2.2.1 redhat&centos&rocky Linux系列

前提条件:确保NetworkManager服务正常运行,如果未开启,执行以下命令开启

systemctl start NetworkManager

步骤1:在终端执行nmtui打开配置窗口,选择编辑,按回车

步骤2、选择add添加,选择bond,回车创建

 步骤3、填写配置文件名称、设备名称、选择“Add”添加,选择网卡绑定的“接口类型”,选择“创建”,如以太网,

步骤4、 填写成员端口的配置文件及设备名称,回车

步骤5、继续重复步骤2和3添加第二个成员端口,如下图

 步骤6、选择绑定模式,以主备模式mode1为例,回车

步骤7、为聚合端口配置ip地址,如需dhcp自动配置IP,则省略此步骤,如下图, 

步骤8、返回主菜单,退出

步骤9、验证

# cat /proc/net/bonding/bond0

 #nmcli device status

2.2.2 Debian系(Ubuntu)

ubuntu与redhat系列使用nmtui配置网卡绑定的方式一样,这里不再赘述

2.3 其它配置方式 

redhat7系列系统还可以使用nmcli管理工具,配置网卡绑定,8,9系统支持web控制台配置,另外使用nm-connection-editor也可以配置网卡绑定,配置效果跟上面2种配置方式所达到的效果是一样的,根据实际情况选择相应配置方式即可所以这里也不再赘述

三、配置VLAN标签

虚拟局域网 (VLAN) 是物理网络中的逻辑网络。VLAN 接口在数据包通过接口时使用 VLAN ID 标记数据包,并删除返回数据包的标记。您可以在另一个接口(例如以太网、绑定、组或桥接设备)之上创建 VLAN 接口。这些接口称为parent interface .

3.1 redhat系列

3.1.1 单网卡配置VLAN标记

步骤1、编辑/etc/sysconfig/network-scripts/ifcfg-ens33,文件内容如下:

#more ifcfg-ens33

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="ens33"
UUID="b5fc64bd-a688-43aa-8ff2-ac540453287b"
DEVICE="ens33"
ONBOOT="yes"

步骤2:编辑/etc/sysconfig/network-scripts/ifcfg-ens33.10,文件内容如下:

#more ifcfg-ens33.10

TYPE="Vlan"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
PHYSDEV=ens33
NAME="ens33.10"
UUID="b5fc64bd-a688-43aa-8ff2-ac540453287b"
DEVICE="ens33.10"
ONBOOT="yes"
VLAN_ID=10
IPADDR=192.168.1.1
PREFIX=24
GATEWAY=192.168.1.254

步骤3、重启网络服务

#systemctl restart network

3.1.2 给聚合绑定网卡配置VLAN标记

步骤1、编辑配置文件/etc/sysconfig/network-scripts/ifcfg-bond1.10,内容如下:

more ifcfg-bond1.10

TYPE=Vlan
BONDING_MASTER=yes
HWADDR=
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.247.140
PREFIX=24
GATEWAY=192.168.247.254
DNS1=192.168.247.253
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=bond1.10
UUID=6ad166b3-24c5-4c1b-9282-570a00ab5a18
DEVICE=bond1.10
PHYSDEV=bond1
VLAN_ID=10
ONBOOT=yes

步骤2、编辑/etc/sysconfig/network-scripts/ifccfg-bond1网卡配置文件内容如下:

#more ifcfg-bond1

TYPE=Bond
BONDING_MASTER=yes
HWADDR=
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=bond1
UUID=6ad166b3-24c5-4c1b-9282-570a00ab5a18
DEVICE=bond1
ONBOOT=yes
BONDING_OPTS="downdelay=0 miimon=100 mode=active-backup updelay=0"

步骤3、修改配置文件/etc/sysconfig/network-scripts/ifcfg-ens36 ifcfg-ens37,bond1的成员端口,文件内容如下:

#more ifcfg-ens36

TYPE=Ethernet
NAME=ens36
UUID=f3215047-8271-4464-83af-ef3b1ec964b7
DEVICE=ens36
ONBOOT=yes
MASTER=bond1
SLAVE=yes
MASTER_UUID=6ad166b3-24c5-4c1b-9282-570a00ab5a18
TYPE=Ethernet
NAME=ens37
UUID=2d6705cf-44da-41d2-ae4e-36996a20f0d4
DEVICE=ens37
ONBOOT=yes
MASTER=bond1
SLAVE=yes
MASTER_UUID=6ad166b3-24c5-4c1b-9282-570a00ab5a18

 3.2 Debian系(Ubuntu)

3.2.1 聚合端口配置VLAN标签

编辑vi /etc/network/interfaces文件,内容如下

vi /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback

auto ens36
iface ens36 inet manual
bond-master bond0

auto ens37
iface ens37 inet manual
pre-up sleep 5
bond-master bond0

auto bond0
iface bond0 inet manual
bond-mode 4
bond-miimon 100
bond-lacp-rate 1
bond-slaves ens36 ens37

# mgmt network
auto vlan2
iface vlan2 inet static
address 192.168.10.2
netmask 255.255.255.0
gateway 192.168.10.254
vlan_raw_device bond0

17.10以后或使用netplan管理网络的系统配置方法如下,给bond-yewu聚合口配置vlan标记

#more /etc/netplan/01-network-manager-all.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      dhcp4: no
    enp2s0:
      dhcp4: no
    enp3s0:
      dhcp4: no
      optional: true
    enp4s0:
      dhcp4: no
      optional: true
    enp5s0:
      dhcp4: no
      optional: true
    enp6s0:
      dhcp4: no
      optional: true
  bonds:
    bond-guanli:
      interfaces: [enp2s0, enp3s0]
      addresses: [192.168.93.2/24]
      parameters:
        mode: 802.3ad
        mii-monitor-interval: 1

    bond-yewu:
      interfaces: [enp1s0, enp4s0]
      parameters:
        mode: active-backup
        mii-monitor-interval: 1
        gratuitious-arp: 5
      
    vlan:
      vlan10:
        id: 10
        link: bond-yewu
      addresses: [192.168.254.2/24]
      nameservers:
        search: [local]
        addresses: [8.8.8.8, 8.8.4.4]
      routes:
        - to: default
          via: 192.168.1.1

3.2.2 单端口配置VLAN标签

vi /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback

auto ens36
iface ens36 inet manual

# mgmt network
auto vlan2
iface vlan2 inet static
address 192.168.10.2
netmask 255.255.255.0
gateway 192.168.10.254
vlan_raw_device ens36

17.10以后或使用netplan管理网络的系统配置方法如下,给ens聚合口配置vlan标记

#more /etc/netplan/01-network-manager-all.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      dhcp4: no
    enp2s0:
      dhcp4: no
    enp3s0:
      dhcp4: no
      optional: true
    enp4s0:
      dhcp4: no
      optional: true
    enp5s0:
      dhcp4: no
      optional: true
    enp6s0:
      dhcp4: no
      optional: true
  
    vlan:
      vlan10:
        id: 10
        link: enp1s0
      addresses: [192.168.254.2/24]
      nameservers:
        search: [local]
        addresses: [8.8.8.8, 8.8.4.4]
      routes:
        - to: default
          via: 192.168.1.1

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术瘾君子1573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值