【硬件相关】网卡bond配置

一、前言

参考文档:
Redhat:7.7. Using Channel Bonding

本文主要阐述如何配置网卡bond,以及不同bond模式区别差异

bonding是Linux提供的一种技术,它可以将两个以上的网络接口绑定为一个逻辑接口,实现网络冗余、负载均衡

二、网卡配置

集群存在两张双口万兆网卡,分别使用两张万兆网卡其中一个口配置bond,实现网络聚合效果

1、CentOS

万兆网卡01 万兆网卡02
网卡名称 enp2s0f0 enp130s0f0
bond配置 bond0 bond0

以下示例,将网卡enp2s0f0和网卡enp130s0f0聚合为bond0网卡,bond配置模式为bond6(mode=6

注:如需更改bond模式,则更改mode为对应数值即可

1、备份现有网卡配置信息

[root@node118 network-scripts]# cp ifcfg-enp2s0f0 backup-ifcfg-enp2s0f0 
[root@node118 network-scripts]# cp ifcfg-enp130s0f0 backup-ifcfg-enp130s0f0 

2、添加以下网卡配置信息,重启网络服务即可

[root@node118 network-scripts]# cat ifcfg-enp2s0f0 
DEVICE=enp2s0f0
BOOTPROTO=none
ONBOOT=yes
NAME=enp2s0f0
TYPE=Ethernet
MASTER=bond0
SLAVE=yes
NM_CONTROLLED=no


[root@node118 network-scripts]# cat ifcfg-enp130s0f0 
DEVICE=enp130s0f0
BOOTPROTO=none
ONBOOT=yes
NAME=enp130s0f0
TYPE=Ethernet
MASTER=bond0
SLAVE=yes
NM_CONTROLLED=no


[root@node118 network-scripts]# cat ifcfg-bond0 
DEVICE=bond0
NAME=bond0
TYPE=Ethernet
NM_CONTROLLED=no
USERCTL=no
ONBOOT=yes
BOOTPROTO=static
BONDING_OPTS='mode=6 miimon=100'
IPADDR=172.16.21.118
NETMASK=255.255.255.0
GATEWAY=172.16.21.205
DNS1=114.114.114.114
DNS2=8.8.8.8


[root@node118 network-scripts]# systemctl restart network

2、Ubuntu

万兆网卡01 万兆网卡02
网卡名称 ens160 ens192
bond配置 bond0 bond0

以下示例,将网卡ens160和网卡ens192聚合为bond0网卡,bond配置模式为bond6(mode=6
注:如需更改bond模式,则更改mode为对应数值即可

1、安装ifenslave软件包

root@node180:~# apt-cache search ifenslave
ifenslave - configure network interfaces for parallel routing (bonding)

root@node180:~# apt-get install ifenslave

2、备份现有网卡配置

root@node180:/etc/network# cp interfaces interfaces.bak

3、添加以下网卡配置文件,重启网络服务即可

root@node180:~# cat /etc/network/interfaces
source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

auto ens160
iface ens160 inet manual
bond-master bond0

auto ens192
iface ens192 inet manual
bond-master bond0

auto bond0
iface bond0 inet static
address 172.16.21.180
netmask 255.255.255.0
network 172.16.21.0
broadcast 172.16.21.255
gateway 172.16.21.205
dns-nameservers 114.114.114.114 8.8.8.8

bond-slaves none
bond-miimon 100
bond-mode 6

root@node180:~# /etc/init.d/networking restart

三、交换机配置

以bond4模式举例,除了网卡配置信息修改之外,同时需要修改交换机配置,示例为华为交换机(S6720-54C-EI-48S-AC)

1、配置说明

  • 笔记本通过Console线连接至交换机COM口,通过xshell连接至调试会话
    注:
    1、可通过设备管理器查看COM端口号
    2、传输协议为SERIAL,波特率为9600,其他参数值为默认即可
    3、华为交换机默认用户密码为admin/[email protected]

  • 执行system-view命令进入以太网端口视图

system-view 
Enter system view, return user view with Ctrl+Z.
[HUAWEI]
  • 执行interface Eth-Trunk {端口组ID}命令进入链路聚合端口,执行mode lacp命令将端口组设置模式为LACP
[HUAWEI]interface Eth-Trunk 10
[HUAWEI-Eth-Trunk10]mode lacp 
[HUAWEI-Eth-Trunk10]display this
#
interface Eth-Trunk10
 mode lacp
#
return
[HUAWEI-Eth-Trunk10]quit
  • 执行interface XGigabitEthernet 0/0/{交换机端口号}进入交换机端口,执行eth-trunk {端口组ID}将当前交换机端口加入端口组
    注:如需取消设置,则执行undo eth-trunk即可
[HUAWEI]interface XGigabitEthernet 0/0/42
[HUAWEI-XGigabitEthernet0/0/42]eth-trunk 10
[HUAWEI-XGigabitEthernet0/0/42]display this
#
interface XGigabitEthernet0/0/42
 eth-trunk 10
#
return
  • 执行display eth-trunk查看当前端口组配置
    注:需要把对应节点网卡配置修改为bond4,此时查看对应端口组端口状态为Selected
[HUAWEI]display eth-trunk
Eth-Trunk80's state information is:
Local:
LAG ID: 80                  WorkingMode: LACP                                 
Preempt Delay: Disabled     Hash arithmetic: According to SIP-XOR-DIP         
System Priority: 32768      System ID: 1856-4421-3090                         
Least Active-linknumber: 1  Max Active-linknumber: 8                         
.
Operate status: up          Number Of Up Port In Trunk: 4                     
--------------------------------------------------------------------------------
ActorPortName          Status   PortType PortPri PortNo PortKey PortState Weight
XGigabitEthernet0/0/7  Selected 10GE     32768   1      20545   10111100  1     
XGigabitEthernet0/0/9  Selected 10GE     32768   2      20545   10111100  1     
XGigabitEthernet0/0/3  Selected 10GE     32768   3      20545   10111100  1     
XGigabitEthernet0/0/8  Selected 10GE     32768   4      20545   10111100  1     

Partner:
--------------------------------------------------------------------------------
ActorPortName          SysPri   SystemID        PortPri PortNo PortKey PortState
XGigabitEthernet0/0/7  65535    6891-d066-f634  255     1      15      10111100
XGigabitEthernet0/0/9  65535    6891-d066-f634  255     2      15      10111100
XGigabitEthernet0/0/3  65535    6891-d066-f634  255     3      15      10111100
XGigabitEthernet0/0/8  65535    6891-d066-f634  255     4      15      10111100
    
Eth-Trunk81's state information is:
Local:
LAG ID: 81                  WorkingMode: LACP                                 
Preempt Delay: Disabled     Hash arithmetic: According to SIP-XOR-DIP         
System Priority: 32768      System ID: 1856-4421-3090                         
Least Active-linknumber: 1  Max Active-linknumber: 8                          
Operate status: up          Number Of Up Port In Trunk: 2                     
--------------------------------------------------------------------------------
ActorPortName          Status   PortType PortPri PortNo PortKey PortState Weight
XGigabitEthernet0/0/5  Selected 10GE     32768   5      20801   10111100  1     
XGigabitEthernet0/0/1  Selected 10GE     32768   6      20801   10111100  1     

Partner:
--------------------------------------------------------------------------------
ActorPortName          SysPri   SystemID        PortPri PortNo PortKey PortState
XGigabitEthernet0/0/5  65535    6891-d067-426c  255     1      15      10111100
XGigabitEthernet0/0/1  65535    6891-d067-426c  255     2      15      10111100

四、相关说明

1、测试总结

1.1、分析说明
  • bond0

a. 使用两个网口轮询发送,提高发送能力,使用两个服务端时,能够达到理论上的带宽的极限2G.但由于是轮询发送,会出现包乱序,导致重发。当发送请求给两个服务端时,从dstat来看流量,出口的带宽已经达到极限
在这里插入图片描述

而iperf的结果看,每个服务端接收的流量只有8.7Gbit
在这里插入图片描述

抓包查看有乱序和重发的现象,所以,应用不能使用到所有网口的带宽。

b. 只有两个节点时,发送时轮询发送,性能的瓶颈在接收端。交换机在某一个时间段只往一个端口发送包,这个时候发送端两个口总共只能发送1G的流量。

  • bond4

a. 两个节点分别使用4个万兆网口做bond4,由于所有slave接口MAC地址一样,两个节点对跑iperf时,只有1个万兆网口工作,无法发挥4个万兆网口的性能
注:如需发挥4个万兆网口bond4性能,则需用4台万兆客户端iperf压测

[root@node85 ~]# ip ad
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
4: enp24s0f0:  mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
    link/ether 68:91:d0:66:f6:34 brd ff:ff:ff:ff:ff:ff
5: enp24s0f1:  mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
    link/ether 68:91:d0:66:f6:34 brd ff:ff:ff:ff:ff:ff
6: enp25s0f0:  mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
    link/ether 68:91:d0:66:f6:34 brd ff:ff:ff:ff:ff:ff
7: enp25s0f1:  mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
    link/ether 68:91:d0:66:f6:34 brd ff:ff:ff:ff:ff:ff
8: enp59s0f0:  mtu 1500 qdisc mq master bond1 state UP group default qlen 1000
    link/ether 68:91:d0:67:42:6c brd ff:ff:ff:ff:ff:ff
9: enp59s0f1:  mtu 1500 qdisc mq master bond1 state UP group default qlen 1000
    link/ether 68:91:d0:67:42:6c brd ff:ff:ff:ff:ff:ff
10: bond0:  mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 68:91:d0:66:f6:34 brd ff:ff:ff:ff:ff:ff
    inet 172.16.21.85/24 brd 172.16.21.255 scope global bond0
       valid_lft forever preferred_lft forever
    inet6 fe80::6a91:d0ff:fe66:f634/64 scope link 
       valid_lft forever preferred_lft forever
11: bond1:  mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 68:91:d0:67:42:6c brd ff:ff:ff:ff:ff:ff
    inet 172.16.33.85/24 brd 172.16.33.255 scope global bond1
       valid_lft forever preferred_lft forever
    inet6 fe80::6a91:d0ff:fe67:426c/64 scope link 
       valid_lft forever preferred_lft forever

【硬件相关】网卡bond配置_第1张图片

  • bond5

a. bond5通过MAC地址来均衡出口的带宽。但在发送arp报文时,只发送一个端口的地址。所以入口的流量只走一个口。当两个节点时,接收端的带宽上限只有1G,客户端理论上限也只有1G,两个节点作为客户端相似.

b. 两个节点作为服务端时,bond5可以利用到两个端口的带宽,bond5通过算法来均衡出口的带宽,所以出口带宽能达到2G.

  • bond6

a. bond6是在bond0的基础上,增加接收的负载均衡。bond6可以截获arp的报文,通过修改MAC地址,使不同客户端的可以跟不同端口进行通信。当只有两个节点时,客户端收到arp地址只有一个,服务端接收的流量最大也只有1G.

b.使用2个客户端或者2个服务端测试,客户端和服务端都能利用到两个接收发送的端口,所以带宽都能达到2G.

1.2、分析总结

从上面的测试来看,bond0由于本身的机制,容易出现重发影响性能的缺点,并且,bond0本身没有定义入口流量的均衡,性能的瓶颈在入口流量;bond5同理,入口的带宽限制了网络的性能;
bond6在bond5的基础上增加接收能力,在三节点以上规模的节点,出入口的流量都能达到2G的带宽上限,但实际使用中发现网络流量并不稳定;
综上所述,在条件允许情况下,要想实现网络冗余和网络聚合效果,推荐使用bond4配置

注:bond0、bond4需要交换机支持(交换机端口绑定),bond5、bond6无需交换机支持(软件配置即可)

你可能感兴趣的:(硬件相关,网络)