一、 Linux bonding 研究及实现 Linux Bonding 本文介绍 Linux(具体发行版本是 CentOS5.6)下的双卡绑定的原理及实现。 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-,其中 与配置文件所控制的设备的名称相关。 在所有的网络接口中,最常用的就是以太网接口ifcfg-eth0,它是系统中第一块网卡的配置文件。虽然在不同的系统之间,文件的类型和数量并不一定相同,但各种的网络设备都需要用到这些文件保证设备的正常运作。bonding 技术,就是通过配置文件建立绑定接口,从而实现多个物理网卡绑定到一个虚拟网卡。 测试环境 本次作业环境中,使用的是CentOS5.6,其系统信息如下: [root@support ~]# cat /etc/issue CentOS release 5.6 (Final) Kernel \r on an \m [root@support ~]# uname -a Linux support 2.6.18-238.9.1.el5 #1 SMP Tue Apr 12 18:10:13 EDT 2011 x86_64 x86_64 x86_64 GNU...