链路层的网卡聚合-基于Linux bonding
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-04-05
列,当出现某种选择事件时,按照从前到后的顺序选择网口,比如802.3ad协议中的选择行为. fail_over_mac:对于热备模式是否使用同一个mac地址,如果不使用一个mac的话,就要完全依赖免费arp机制更新其它机器的arp缓存了.比如,两个有网卡,网卡1和网卡2处于热备模式,网卡1的mac是mac1,网卡2的mac是mac2,网卡1一直是master,但是网卡1突然down掉了,此时需要网卡2接替,然而网卡2的mac地址与之前的网卡1不同,别的主机回复数据包的时候还是使用网卡1的mac地址来回复的,mac1已经不在网络上了,这就会导致数据包将不会被任何网卡接收.因此网卡2接替了master的角****后,最好有一个回调事件,处理这个事件的时候,进行一次免费的arp广播,广播自己更换了mac地址. lacp_rate:发送802.3ad的LACPDU,以便对端设备自动获取链路聚合的信息. max_bonds:初始时创建bond设备接口的数量,默认值是1.但是这个参数并不影响可以创建的最大的bond设备数量. use_carrier:使用MII的ioctl还是使用驱动获取保持的状态,如果是前者的话需要自己调用mii的接口进行硬件检测,而后者则是驱动自动进行硬件检测(使用watchdog或者定时器),bonding驱动只是获取结果,然而这依赖网卡驱动支持状态检测,如果不支持的话,网卡的状态将一直是on. mode:这个参数最重要,配置以什么模式运行,这个参数在bond设备up状态下是不能更改的,先down设备(使用ifconfig bondX down)才可以配置,主要的有以下几个: 1.balance-rr or 0:轮转方式的负载均衡模式,流量轮流在各个bondX的真实设备之间分发.注意,一定要用状态检测机制,否则如果一个设备down掉以后,没有状态检测,该设备将一直是up状态,仍然接受发送任务,这将会出现丢包. 2.active-backup or 1:热备模式.在比较高的版本中,免费arp会在切换时自动发送,避免一些故障,比如fail_over_mac参数描述的故障. 3.balance-xor or 2:我不知道既然bonding有了xmit_hash_policy这个参数,为何还要将之单独设置成一种模式,在这个模式中,流量也是分发的,和轮转负载不同的是,它使用源/目的mac地址为自变量通过xor|mod函数计算出到底将数据包分发到哪一个口. 4.broadcast or 3:向所有的口广播数据,这个模式很XX,但是容错性很强大. 5.802.3ad or 4:这个就不多说了,就是以802.3ad的方式运行. ... xmit_hash_policy:这个参数的重要性我认为仅次于mode参数,mode参数定义了分发模式,而这个参数定义了分发策略,文档上说这个参数用于mode2和mode4,我觉得还可以定义更为复杂的策略呢. 1.layer2:使用二层帧头作为计算分发出口的参数,这导致通过同一个网关的数据流将完全从一个端口发送,为了更加细化分发策略,使用一些三层信息,然而却增加了计算开销,天啊,一切都要权衡! 2.layer2 3:在1的基础上增加了三层的ip报头信息,计算量增加了,然而负载却更加均衡了,一个个主机到主机的数据流形成并且同一个流被分发到同一个端口,根据这个思想,如果要使负载更加均衡,我们在继续增加代价的前提下可以拿到4层的信息. 3.layer3 4:这个还用多说吗?可以形成一个个端口到端口的流,负载更加均衡.然慢!事情还没有结束,虽然策略上我们不想将同一个tcp流的传输处理并行化以避免re-order或者re-transmit,tcp本身就是一个串行协议,比如英特尔的8257X系列网卡芯片都在尽量减少将一个tcp流的包分发到不同的cpu,同样,端口聚合的环境下,同一个tcp流也应该使用本policy使用同一个端口发送,但是不要忘记,tcp要经过ip,而ip是可能要分段的,分了段的ip数据报中直到其被重组(到达对端或者到达一个使用nat的设备)都再也不能将之划为某个tcp流了.ip是一个完全无连接的协议,它只关心按照本地的mtu进行分段而不管别的,这就导致很多时候我们使用layer3 4策略不会得到完全满意的结果.可 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: linux系统下远程管理设备配置下一篇: 读Linux那些事儿之我是HUB笔记(五)
关于链路层的网卡聚合-基于Linux bonding的所有评论