本文转自http://www.yunweipai.com/archives/1969.html 支持原创、尊重原创,分享知识!

在企业及电信Linux服务器环境上,网络配置都会使用Bonding技术做网口硬件层面的冗余,防止单个网口应用的单点故障。
Linux Bond的配置很简单,当下网络上也有很多资料,这里我们就不介绍了。我们在这篇文章中介绍Linux Bond的原理及其不足。

原理
Linux Bond有两种典型的模式:主备,负载均衡。无论哪种模式,Bonding技术都是通过更改Linux的网口驱动,来实现网口故障后平滑切换的。

主备模式:

负载均衡模式:

1. 我们先看主备模式


主备模式下,Linux Bonding实现会将Bond的两个slave网口的MAC地址改为Bond的MAC地址,而Bond的MAC地址是Bond创建启动后,主用slave网口的MAC地址。

当主用网口故障后,Bond会切换到备用网口,切换过程中,上层的应用是无感知不受影响的,因为Bond在驱动层,会接管上层应用的数据包,缓存起来等备用网卡起来后再通过备用网卡发送出去。当然,前提是切换时间很短,否则缓冲区是会溢出的,溢出后就开始丢包了。具体的时间值本人还没有验证过。

2. 再看负载均衡模式


负载均衡模式下,Linux Bonding实现可以保持两个slave网口的MAC地址不变,Bond的MAC地址是其中一个网卡的,Bond MAC地址的选择是根据Bond自己实现的一个算法来的,具体如何选择还没有研究。

当然,这里要重点说明的是,Bond负载均衡模式下,要求交换机做配置,是的两个slave网口能够互通,否则的话,丢包会很厉害,基本没法使用。这个是因为Bond的负载均衡模式算法,会将包在两个网口之间传输以达到负载均衡。

由于负载均衡模式下,两个slave有独立的MAC地址,你可能会想,我能否给slave网口再绑定一个IP地址,用作其他用途。
这种方法是实现不了的。
负载均衡模式下,两个slave网口在操作性系统上看到是两个独立的MAC地址,但是当你指定一个MAC地址发送包的时候,实际上发生的现象,不是你期望的。你指定MAC地址1发包,这个数据包可能到MAC地址2出去了。
这个是因为Bond对这两个网口做了手脚,改了网口的驱动。看起来他们有独立的MAC地址,实际上他们的MAC地址不是独立的,只能给Bond使用。

不足
从上面的介绍中,很容易看到Bond的一点不足:
Bond更改了网口的驱动,其网口不能被用作其他用途。

Bond还有一点不足就是其故障监测上面:
Bond默认只能做网口MII监测不能做链路监测(链路是指本机到网关的路径),也就是只能监测网口是否连接(网口是否亮);当然Bond也支持ARP协议的链路监测,但是ARP链路监测在一些场景下,太消耗资源,得不偿失。我们曾经在实际应用中使用过,效果确实不好。

[转载]Linux Bond的原理及其不足的更多相关文章

  1. Linux Bond的原理及其不足

    http://www.tektea.com/archives/1969.html. 在企业及电信Linux服务器环境上,网络配置都会使用Bonding技术做网口硬件层面的冗余,防止单个网口应用的单点故 ...

  2. 深度分析Linux下双网卡绑定七种模式 多网卡的7种bond模式原理

    http://blog.csdn.net/abc_ii/article/details/9991845多网卡的7种bond模式原理 Linux网卡绑定mode共有七种(~) bond0.bond1.b ...

  3. 多网卡的7种bond模式原理 For Linux

    多网卡的7种bond模式原理 Linux 多网卡绑定 网卡绑定mode共有七种(0~6) bond0.bond1.bond2.bond3.bond4.bond5.bond6 常用的有三种 mode=0 ...

  4. [转载]Linux进程调度原理

    [转载]Linux进程调度原理 Linux进程调度原理 Linux进程调度的目标 1.高效性:高效意味着在相同的时间下要完成更多的任务.调度程序会被频繁的执行,所以调度程序要尽可能的高效: 2.加强交 ...

  5. 【转载】多网卡的7种bond模式原理

    多网卡的7种bond模式原理 Linux 多网卡绑定 网卡绑定mode共有七种(0~6) bond0.bond1.bond2.bond3.bond4.bond5.bond6 常用的有三种 mode=0 ...

  6. Linux Bond 技术学习资料

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

  7. 多网卡的7种bond模式原理

    多网卡的7种bond模式原理 Linux 多网卡绑定 网卡绑定mode共有七种(0~6) bond0.bond1.bond2.bond3.bond4.bond5.bond6 常用的有三种 mode=0 ...

  8. Linux Kbuild工作原理分析(以DVSDK生成PowerVR显卡内核模块为例)

    一.引文 前篇博文<Makefile之Linux内核模块的Makefile写法分析>,介绍了Linux编译生成内核驱动模块的Makefile的写法,但最近在DVSDK下使用Linux2.6 ...

  9. 转 Linux内存管理原理

    Linux内存管理原理 在用户态,内核态逻辑地址专指下文说的线性偏移前的地址Linux内核虚拟3.伙伴算法和slab分配器 16个页面RAM因为最大连续内存大小为16个页面 页面最多16个页面,所以1 ...

随机推荐

  1. C# 将PowerPoint文件转换成PDF文件

    PowerPoint的优势在于对演示文档的操作上,而用PPT查看资料,反而会很麻烦.这时候,把PPT转换成PDF格式保存,再浏览,不失为一个好办法.在日常编程中和开发软件时,我们也有这样的需要.本文旨 ...

  2. 关于一道数据库例题的解析。为什么σ age>22 (πS_ID,SCORE (SC) ) 选项是错的?

    本人大二学子.近段时间在做数据库复习题的时候遇到一道题,如下. 有关系SC(S_ID,C_ID,AGE,SCORE),查找年龄大于22岁的学生的学号和分数,正确的关系代数表达式是( ) . ⅰ. πS ...

  3. 重温Servlet学习笔记--Cookie对象

    首先要了解cookie必须得先了解http协议,,Cookie是http协议指定的,先由服务器保存cookie到浏览器,在下次浏览器请求服务器时把上次请求得到的cookie归还给服务器,cookie以 ...

  4. 【JUC】JDK1.8源码分析之LinkedBlockingQueue(四)

    一.前言 分析完了ArrayBlockingQueue后,接着分析LinkedBlockingQueue,与ArrayBlockingQueue不相同,LinkedBlockingQueue底层采用的 ...

  5. JS实现动态显示当前时间

    效果图: 代码实现: <script language="JavaScript"> var timerID = null; var timerRunning = fal ...

  6. 让你的web程序“动”起来。

    看到这里你可能会问,asp.net程序本身就是动态网站,还要如何动? 我这里所谓的动起来,是指动态加载,动态更新.好吧可能你又要问了动态网站本来就是动态加载,动态更新的.asp.net的程序依附于II ...

  7. ios7.1 in-house app的发布方法

    iOS7.1版本的in-house app必须发布到https站点才能下载安装,原来的连接: itms-services://?action=download-manifest&url=htt ...

  8. OpenSAML

    一.背景知识: SAML即安全断言标记语言,英文全称是Security Assertion Markup Language.它是一个基于XML的标准,用于在不同的安全域(security domain ...

  9. 【JAVA并发编程实战】11、有界缓存的实现

    1.有界缓存的基类 package cn.xf.cp.ch14; /** * *功能:有界缓存实现基类 *时间:下午2:20:00 *文件:BaseBoundedBuffer.java *@autho ...

  10. Lind.DDD.Manage项目核心技术分享

    回到目录 关于Lind.DDD.Manager的培训与学习 讲解:张占岭 花名:仓储大叔 主要框架:Lind.DDD,Lind.DDD.Manager 关于Lind.DDD.Manager 由于数据模 ...