Linux双网卡绑定实现是使用两块网卡虚拟成为一块网卡设备,这简单来说,就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。这项技术在Sun和Cisco中分别被称为Trunking和Etherchannel技术,在Linux的2.4.x及其以后的内核则称为Bonding技术。
bonding的前提条件:网卡应该具备自己独立的BIOS芯片,并且各网卡芯片组型号相同。同一台服务器上的网卡毫无疑问是是符合这个条件的。
Bonding原理
bonding的原理:在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身MAC的以太网帧,过滤别的数据帧,以减轻驱动程序的负担;但是网卡也支持另外一种被称为混杂promisc的模式,可以接收网络上所有的帧,bonding就运行在这种模式下,而且修改了驱动程序中的mac地址,将两块网卡的MAC地址改成相同,可以接收特定MAC的数据帧。然后把相应的数据帧传送给bond驱动程序处理。
为方便理解bonding的配置及实现,顺便阐述一下Linux的网络接口及其配置文件。在 Linux 中,所有的网络通讯都发生在软件接口与物理网络设备之间。与网络接口配置相关的文件,以及控制网络接口状态的脚本文件,全都位于 /etc/sysconfig/netwrok-scripts/ 目录下。网络接口配置文件用于控制系统中的软件网络接口,并通过这些接口实现对网络设备的控制。当系统启动时,系统通过这些接口配置文件决定启动哪些接口,以及如何对这些接口进行配置。接口配置文件的名称通常类似于 ifcfg-
Bonding工作模式
bonding的模式一共有7种,常用的为0、1两种:
round-robin(balance-rr) 0 网卡的负载均衡模式
active-backup 1 网卡的容错模式
balance-xor 2 需要交换机支持
broadcast 3 广播模式
ieee802.3ad 4 动态链路聚合模式,需要交换机支持
mode-tlb 5 自适应模式
mode-alb 6 网卡虚拟化方式
mode=0表示load balancing(round-robin)为负载均衡方式,两块网卡都工作。在这种模式下,能在提供带宽的负载均衡的同时提供失效保护。