本站文章大部分为作者原创,非商业用途转载无需作者授权,但务必在文章标题下面注明作者 刘世民(Sammy Liu)以及可点击的本博客地址超级链接 http://www.cnblogs.com/sammyliu/ ,谢谢合作
随笔 - 206  文章 - 46  评论 - 755  阅读 - 270万

Linux 网卡bond模式 (多块网卡虚拟成一块网卡)

Linux 网卡bond模式

 
Bond技术原理
    Bond 就是将多块网卡虚拟成为一块网卡的技术,通过 bond 技术让多块网卡看起来是一个单独的以太网接口设备并具有相同的 IP 地址

  Bond 的原理是网卡在混杂 (promisc) 模式下运行;在这种模式下,网卡不像在通常情况下,只接收目的硬件地址是自身 Mac 的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担;而是接收网络上所有的数据帧,而且修改了驱动程序中的 mac 地址,将两块网卡的 Mac 地址改成相同,可以接收特定 mac 的数据帧,然后把相应的数据帧传送给 bond 驱动程序处理。

  为了实现多块网卡的协同工作,Bond 模式将自己的 MAC 地址复制到各个物理网卡上,让所有的网卡共享同一个 MAC 地址。这个方式就要求所有的网卡都要支持 BIOS,这样才能够让操作系统将 MAC 地址写到网卡上;对于不支持 BIOS 读写的网卡而言,重起以后就恢复到网卡上 MAC 地址,服务器可能无法根据记录的 MAC 地址找到相对应的网卡。

  对于单物理网卡的 Bond 网卡而言,Bond 网卡的 MAC 地址和物理网卡的物理地址是一致的;对于多物理网卡的 Bond 网卡而言,其中一块物理网卡会被设置为 Master,其他的网卡都是 Slave,Bond 网卡的 MAC 地址取自标志为 Master 的物理网卡,然后将这个 MAC 地址复制到其他物理网卡上。所以在指定用于安装 Linux 的网卡时,我们需要指定 Bond 网卡,以及 Bond 网卡所对应的标志为 Master 的物理网卡。(如果没有人为干预,一般情况下 Linux 所识别到的第一块网卡会被标志为 Master,也即使 eth0;对于有特殊配置的 Bond 网卡,需要根据具体的 Bond 配置情况来进行指定。)

    网卡 bond 后的工作模式有两种:主备的工作方式和负载均衡方式。 

    在主备模式下 , 只有主网卡 eth0 工作,eth1 作为备份网卡是不工作的,只有当一个网络接口失效时 ( 例如主交换机掉电等 ),为了不会出现网络中断,系统会按照配置指定的网卡顺序启动工作,保证机器仍能对外服务,起到了失效保护的功能。

    在负载均衡工作模式下,由于两块网卡都正常工作,它能提供两倍的带宽,在这种情况下出现一块网卡失效,仅仅会是服务器出口带宽下降,也不会影响网络使用。

    Linux下通过网卡邦定技术既增加了服务器的可靠性,又增加了可用网络带宽,为用户提供不间断的网络服务。

Bond配置

  1. 创建配置文件:     

    vi /etc/sysconfig/network-scripts/ifcfg-bond0

    如下参考配置: 

  DEVICE=bond0        --物理设备名字
  IPADDR=192.168.1.20  --IP地址
  NETWORK=192.168.1.0  --所属子网
  NETMASK=255.255.255.0 --子网掩码
  USERCTL=no           --是否允许非root用户控制该设备
  BOOTPROTO=none     --一般是在做网卡绑定的时候用到,通常情况下就dhcp或者static
  ONBOOT=yes         --开机自动激活网卡

    将如上的IP替换为实际的IP地址.

  2. 修改 eth0 和 eth1 配置文件:

    [root@nixway.net etc]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 

    如下为参考配置 

DEVICE=eth0
  USERCTL=no
  ONBOOT=yes
  MASTER=bond0
  SLAVE=yes
  BOOTPROTO=none

  修改eth1配置文件 

 [root@nixway.net etc]# vi /etc/sysconfig/network-scripts/ifcfg-eth1 

  如下为参考配置 

DEVICE=eth1
 USERCTL=no
 ONBOOT=yes
 MASTER=bond0
 SLAVE=yes
 BOOTPROTO=none

 保存退出.

3. 装载 bond 模块驱动

  在使bond0网口能够工作之前,需要首先装载内核bond模块的驱动, 修改/etc/modprobe.conf: 

 [root@nixway.net etc]# vi /etc/modprobe.conf 

 将如下两行附加到文件末尾: 

 alias bond0 bonding
 options bond0 mode=balance-alb miimon=100
 mode=balance-alb ---f负载均衡
 miimon=100       ---用来进行链路监测的。 比如:miimon=100,那么系统每100ms监测一次链路 连接状态,如果有一条线路不通就转入另一条线路 

 保存退出vi编辑。更多关于bond内核模块的文档,请参考Linux Ethernet Bonding Driver  Howto

posted on   SammyLiu  阅读(3400)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示