如何进行linux下的双网卡绑定

这篇文章给大家介绍如何进行linux下的双网卡绑定,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

10年积累的成都做网站、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有陆良免费网站建设让你可以放心的选择与我们合作。

Linux上双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个结合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。其实这项技术在Sun和Cisco中早已存在,被称为Trunking和Etherchannel 技术,在Linux的2.4.x的内核中也采用这这种技术,被称为bonding。

bonding技术的最早应用是在集群——beowulf上,为了提高集群节点间的数据传输而设计的。下面我们讨论一下bonding 的原理,什么是bonding需要从网卡的混杂(promisc)模式说起。我们知道,在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身Mac的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。但是网卡也支持另外一种被称为混杂promisc的模式,可以接收网络上所有的帧,比如说tcpdump,就是运行在这个模式下。bonding也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的 Mac地址改成相同,可以接收特定MAC的数据帧。然后把相应的数据帧传送给bond驱动程序处理。

RHEL 6 配置

1 备份网卡配置文件

[root@redhat6 ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ~/ifcfg-eth0.bak[root@redhat6 ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth2 ~/ifcfg-eth2.bak

2 配置绑定

虚拟网络接口配置文件,指定网卡IP,ifcfg-bond0

[root@redhat6 ~]#vi /etc/sysconfig/network-scripts/ifcfg-bond0DEVICE=bond0
IPADDR=192.168.1.111NETMASK=255.255.255.0ONBOOT=yes
BOOTPROTO=none
USERCTL=noNM_CONTROLLED=noBONDING_OPTS="mode=1 miimon=100"

配置真实的网卡,eth0 and eth2

[root@redhat6 ~]#vi /etc/sysconfig/network-scripts/ifcfg-ethDEVICE=ethBOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=noNM_CONTROLLED=no

NM_CONTROLLED=no NetworkManager is not permitted to configure this device.USERCTL=no Non-root users are not allowed to control this device.
BOOTPROTO=none No boot-time protocol should be used

3 重启网络服务

[root@redhat6 ~]#service network restart

4、测试网络

拔下一根网线看ping数据,确认没问题之后插上该网线连通之后,再拔下另外一根网线,观察双网卡绑定效果。

5、Bonding的7种模式

  • define BOND_MODE_ROUNDROBIN 0 (balance-rr模式)网卡的负载均衡模式

  • define BOND_MODE_ACTIVEBACKUP 1 (active-backup模式)网卡的容错模式

  • define BOND_MODE_XOR 2 (balance-xor模式)需要交换机支持

  • define BOND_MODE_BROADCAST 3 (broadcast模式)

  • define BOND_MODE_8023AD 4 (IEEE 802.3ad动态链路聚合模式)需要交换机支持

  • define BOND_MODE_TLB 5 自适应传输负载均衡模式

  • define BOND_MODE_ALB 6 网卡虚拟化方式


mode的值共有0-6 七种模式,常用的为0,1,6三种。

  • mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。

  • mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。

  • mode=6:平衡负载模式,有自动备援,不需要”Switch”支援及设定。


linux系统下bond mode参数说明:(mode=4 在交换机支持LACP时推荐使用,其能提供更好的性能和稳定性)

0-轮询模式,所绑定的网卡会针对访问以轮询算法进行平分。1-高可用模式,运行时只使用一个网卡,其余网卡作为备份,在负载不超过单块网卡带宽或压力时建议使用。2-基于HASH算法的负载均衡模式,网卡的分流按照xmit_hash_policy的TCP协议层设置来进行HASH计算分流,使各种不同处理来源的访问都尽量在同一个网卡上进行处理。3-广播模式,所有被绑定的网卡都将得到相同的数据,一般用于十分特殊的网络需求,如需要对两个互相没有连接的交换机发送相同的数据。4-802.3ab负载均衡模式,要求交换机也支持802.3ab模式,理论上服务器及交换机都支持此模式时,网卡带宽最高可以翻倍(如从1Gbps翻到2Gbps)5-适配器输出负载均衡模式,输出的数据会通过所有被绑定的网卡输出,接收数据时则只选定其中一块网卡。如果正在用于接收数据的网卡发生故障,则由其他网卡接管,要求所用的网卡及网卡驱动可通过ethtool命令得到speed信息。6-适配器输入/输出负载均衡模式,在”模式5″的基础上,在接收数据的同时实现负载均衡,除要求ethtool命令可得到speed信息外,还要求支持对网卡MAC地址的动态修改功能。

双网卡绑定模式下,网卡的性能不是向大多数人猜想的那样带宽加倍,传输速度加倍;而实际上可能恰好相反。

这个问题还是要看到瓶颈在哪。
一般多网卡绑定,处理器应该没有问题,能力很强,网络也很强,瓶颈在网卡,所以多绑定几块可以解决网卡的瓶颈,并且提高可靠性。

如果是板子的话,虽然网络也很强,但估计瓶颈不是网卡了,而是板子的处理能力了。加多个网卡,可能却降低了板子的性能。多网卡绑定,应该在混杂模式,把本来硬件处理的部分交给了驱动来自,增加了软件/板子的负担了。

普通台式机服务器,现在性能应该很强大,不是瓶颈,所以采用多网卡绑定能体现出优势。

任何方法 都有其前提的。

 了解了一下bonding各模式的算法,负载均衡模式用的轮转算法,热备份用的备份算法。
     理论下,双网卡绑定备份模式下,只有一块网卡工作,流量测试的结果应该和用单个网卡相同。
     同样是理论上,双网卡绑定负载均衡模式下,收发一般的网络数据,我是指小于1588的报文等不用分片的数据时,带宽加倍,速度加倍。
     我的猜测:现在我在负载均衡模式下,传输一个4GB的文件,文件被分片处理,在轮转算法下连续的片被两个网卡分别处理,一方面软件算法消耗了时间,另一方面可能会有分片乱序的可能,申请重发或者其他原因消耗了时间。
     现在的问题有两个,1、为什么只有round-robin模式,开发板上两个网卡是一样的型号;2、负载均衡模式下传输文件的速度比用单网卡要慢。
     期待各位大哥解惑,谢谢了。

总结一下

1、只能进入负载均衡的问题;模块加载的时候读取的配置文件modules.conf、modprobe.conf,这两个文件分别适用于旧和新两种内核版本,二这两个文件中mode参数用于设置绑定模式,如果文件名错了,设置当然无效;另外bongding在内核中需要编译成模块,而不是直接加到内核。
2、网卡绑定时传输大文件比不绑定时更慢;测试显示负载均衡模式下,传输大文件所需时间是不绑定用单网口传输的两倍,热备份模式所需时间是单网口的四倍。猜测且没有得到证实的原因:负载均衡时,网络上传输的报文一般都小于1588,网卡处理这些典型的网络报文很快;但现在传输的是一个很大的文件,文件大于1588,文件被分成很多片,文件重组需求分片按次序到达,可能因为被两个网卡处理造成分片次序颠倒等原因申请重发分片,另外增加的绑定算法也需要耗费时间;热备份时,绑定算法耗费时间。

关于如何进行linux下的双网卡绑定就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


名称栏目:如何进行linux下的双网卡绑定
当前地址:http://ybzwz.com/article/gedcgh.html