linux网卡绑定原理详解

Linux网卡绑定原理详解

 

l Linux 双网卡绑定概述

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

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

直接给两块网卡设置同一IP地址是不可能的。Kernels 2.4.12及以后的版本均供bonding模块,以前的版本可以通过patch实现。可以通过以下命令确定内核是否支持 bonding

#cat /boot/config-kernel-version |grep -i bonding
CONFIG_BONDING=m

l 网卡绑定的意义

Ø 网络负载均衡

对于bonding的网络负载均衡是我们在文件服务器中常用到的,比如把三块网卡,当做一块来用,解决一个IP地址,流量过大,服务器网络压力过大的问 题。对于文件服务器来说,比如NFSSAMBA文件服务器,没有任何一个管理员会把内部网的文件服务器的IP地址弄很多个来解决网络负载的问题。如果在内网中,文件服务器为了管理和应用上的方便,大多是用同一个IP地址。对于一个百M的本地网络来说,文件服务器在多个用户同时使用的情况下,网络压力是极大的,特别是SAMABANFS服务器。为了解决同一个IP地址,突破流量的限制,毕竟网线和网卡对数据的吞吐量是有限制的。如果在有限的资源的情况 下,实现网络负载均衡,最好的办法就是 bonding

Ø 网络冗余

对于服务器来说,网络设备的稳定也是比较重要的,特别是网卡。在生产型的系统中,网卡的可靠性就更为重要了。在生产型的系统中,大多通过硬件设备的冗余来提供服务器的可靠性和安全性,比如电源。bonding也能为网卡提供冗余的支持。把网个网卡绑定到一个IP地址,当一块网卡发生物理性损坏的情况下,另一块网卡也能提供正常的服务。

l 双网卡绑定设置 

一、       编辑虚拟网络接口配置文件,指定网卡IP 

假设eth0是对外服务的网卡,已经调试好网络;eth1是希望与eth0同时对外提供服务的网卡

# cd /etc/sysconfig/network-scripts/

#vi ifcfg-bond0

写入如下信息和原来 ifcfg-eth0的配置其实差不多。

  所以我建议执行如下语句,将ifcfg-eth0复制一份再改。

# cp ifcfg-eth0 ifcfg-bon0

ifcfg-bon0的信息修改大致如下:

DEVICE=bond0

   BOOTPROTO=static

           IPADDR=[IP]

NETMASK=[MASK]

BROADCAST=[BROADCAST]

GATEWAY=[GATEWAY]

ONBOOT=yes

 TYPE=Ethernet 

二、       配置真实网卡 

修改ifcfg-eth0如下:

DEVICE=eth0

BOOTPROTO=none

ONBOOT=yes

MASTER=bond0     #如果不写,则必须做第四步

SLAVE=yes             #如果不写,则必须做第四步

USERCTL=yes

类似地修ifcfg-eth1如下:

DEVICE=eth1

BOOTPROTO=none

ONBOOT=yes

MASTER=bond0     #如果不写,则必须做第四步

SLAVE=yes             #如果不写,则必须做第四步

USERCTL=yes

三、       加载模块,让系统 支持bonding 

        默认情况下,内核已支持bonding,只需要简单修改/etc/modprobe.conf这个配置文档就可以了:添加两行

alias bond0 bonding

options bond0 miimon=100 mode=1

说明:

mode指定了bond0的工作模式,在redhat中有067种工作模式,常用的是01

      mode=0表示 load balancing(round-robin)为负载均衡方式,两块网卡都工作。 

mode=1 表示 fault-tolerance(active-backup)提供冗余功能,工作方式是主 从的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份。  

mode=2 表示 XOR policy为平衡策略。此模式提供负载平衡和容错能力  

mode=3 表示 broadcast为广播策略。此模式提供了容错能力  

mode=4 表示 IEEE 802.3adDynamic link aggregation IEEE 802.3ad为 动态链接聚合。该策略可以通过 xmit_hash_policy选项从缺省的 XOR策略改变到其他策略。  

mode=5 表示 Adaptivetransmit load balancing为适配器传输负载均衡。该 模式的必要条件:ethtool支持获取每个 slave的速率  

mode=6 表示 Adaptive load balancing为适配器适应性负载均衡。该模式包含 了 balance-tlb模式,同时加上针对 IPV4流量的接收负载均衡(receive load  balance, rlb),而且不需要任何 switch(交换机)的支持。  

bonding 只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对 外的链路 down掉了,而交换机本身并没有故障,那么 bonding会认为链路没有问题而继续使用。

      关于绑定网卡的详细参数可参见另一篇文章

http://czmmiao.iteye.com/admin/blogs/1044031

四、       增加开机启动脚本 

/etc/rc.d/rc.local里加上

      #ifenslave bond0 eth0 eth1

      如果eth0eth1都写了MASTERSLAVE,则上面的步骤做不做都无所谓。

五、       重启 

reboot或者service networkrestart都可以看到结果。

六、 查看绑定在哪张网卡上 

# cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.0.3 (March 23, 2006)

Bonding Mode: fault-tolerance (active-backup)

Primary Slave: None

Currently Active Slave: eth0 

MII Status: up

MII Polling Interval (ms): 500

Up Delay (ms): 0

Down Delay (ms): 0


Slave Interface: eth0
 

MII Status: up

Link Failure Count: 0

Permanent HW addr: 00:0c:29:01:4f:77

 

Slave Interface: eth1 

MII Status: up

Link Failure Count: 0

Permanent HW addr: 00:0c:29:01:4f:8b 

七、       测试 

ping着某个地址,当然是能ping通的地址啦。如果发现网络不通,请检查ifcfg-bond0的网络设置。

     然后拔掉一根网线,如果ping没断,证明拔了一根backup的线,不是主线,重新插上等两分钟。

     此时拔掉另一根网线,估计现在可以看到ping超时或者卡在那里,稍等10~30秒,ping继续连同。

     测试成功。

转载自:http://czmmiao.iteye.com/blog/1043873

已标记关键词 清除标记
相关推荐
Atheros AR8131 网卡驱动下载地址:(包括windows 驱动 和 Linux驱动) http://partner.atheros.com/Drivers.aspx Atheros AR9285无线网卡驱动,由开源项目MadWifi支持 在sourceforge搜索MadWifi可以找到: http://sourceforge.net/projects/madwifi/ 最新的Atheros无线网卡驱动主页: http://madwifi-project.org/ 对于新版本linux kernel 2.6.25之后(现在都是这个以上的内核),要用新的current版本。 http://snapshots.madwifi-project.org/madwifi-0.9.4-current.tar.gz In case you use kernel 2.6.25 or newer, you need to get this snapshot of the madwifi-0.9.4 branch instead of the v0.9.4 release! That snapshot is basically v0.9.4 plus compilation fixes for recent kernels. Atheros无线网卡驱动介绍: http://wireless.kernel.org/en/users/Drivers/Atheros AR9285无线网卡驱动 http://wireless.kernel.org/en/users/Drivers/ath9k Any distribution shipping a kernel >= 2.6.27 will have ath9k present but the ath9k driver on 2.6.32 is the oldest one recommended, anything older than that is completely unsupported. Below is a list of the minimal distribution requirements to either use ath9k from 2.6.27 or from compat-wireless, which lets you install newer drivers on older kernels. Ubuntu Intrepid (8.10) Fedora Core 10 openSUSE 11.1 Mandriva Linux 2009.0 (formally known as Mandrake Linux) ARCH Linux Gentoo Linux Red Flag Linux 7.0 (based on Fedora 10) RHEL5 2.6.18 kernel being tested When it went in ath9k was announced to have been merged into Linux-2.6.27-rc3 by Linus on Tue, 12 Aug 2008 19:33:16 -0700 (PDT), and consisted of 58.8% of the entire rc3 patch. Early distributions which picked it up OpenWrt became the first distribution to pick up ath9k and contribute to it.
<p> <span style="color:#4d4d4d;">当前课程中博客项目的实战源码是我在 GitHub上开源项目 My-Blog,目前已有 2000 多个 star:</span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdnimg.cn/202103310649344285.png" alt="" /><br /> </span> </p> <p> <span style="color:#4d4d4d;">本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 大部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 个人博客项目功能的讲解,<span style="color:#565656;">通过本课程的学习,不仅仅让你掌握基本的 Spring Boot 开发能力以及 Spring Boot 项目的大部分开发使用场景,同时帮你提前甄别和处理掉将要遇到的技术难点,认真学完这个课程后,你将会对 Spring Boot 有更加深入而全面的了解,同时你也会得到一个大家都在使用的博客系统源码,你可以根据自己的需求和想法进行改造,也可以直接使用它来作为自己的个人网站,这个课程一定会给你带来巨大的收获。</span></span> </p> <p> <span style="color:#4d4d4d;"><span style="color:#565656;"> </span></span> </p> <p> <span style="color:#e53333;"><span style="color:#e53333;"><strong>课程特色</strong></span></span> </p> <p> <span style="color:#e53333;"><span style="color:#e53333;"><strong> </strong></span></span> </p> <p> <span style="color:#4d4d4d;"><span style="color:#565656;"> </span></span> </p> <ol> <li> <span style="color:#565656;">课程内容紧贴 Spring Boot 技术栈,涵盖大部分 Spring Boot 使用场景。</span> </li> <li> <span style="color:#565656;">开发教程详细完整、文档资源齐全、实验过程循序渐进简单明了。</span> </li> <li> <span style="color:#565656;">实践项目页面美观且实用,交互效果完美。</span> </li> <li> <span style="color:#565656;">包含从零搭建项目、以及完整的后台管理系统和博客展示系统两个系统的功能开发流程。</span> </li> <li> <span style="color:#565656;">技术栈新颖且知识点丰富,学习后可以提升大家对于知识的理解和掌握,对于提升你的市场竞争力有一定的帮助。</span> </li> </ol> <p> <strong>实战项目预览</strong> </p> <p> <span style="color:#4d4d4d;"><span style="color:#565656;"><span style="color:#e53333;"><strong> </strong></span></span></span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdn.net/202005150303066258.png" alt="" /><br /> </span> </p> <p>   </p> <p> <span style="color:#4d4d4d;"> </span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdn.net/202005150305396930.png" alt="" /><br /> </span> </p> <p> <span style="color:#4d4d4d;"> </span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdn.net/202005150305528842.png" alt="" /><br /> </span> </p> <p> <span style="color:#4d4d4d;"> </span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdn.net/202005150306056323.png" alt="" /><br /> </span> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页