链路层的网卡聚合-基于Linux bonding
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-04-05
是事情又不是那么严重,ip只是依照本地的mtu进行分段,而tcp是端到端的,它可以使用诸如mss以及mtu发现之类的机制配合滑动窗口机制最大限度减少ip分段,因此layer3 4策略,很OK! miimon和arp:使用miimon仅能检测链路层的状态,也就是链路层的端到端连接(即交换机某个口和与之直连的本地网卡口),然而交换机的上行口如果down掉了还是无法检测到,因此必然需要网络层的状态检测,最简单也是最直接的方式就是arp了,可以直接arp网关,如果定时器到期网关还没有回复arp reply,则认为链路不通了. 四、我该如何配置呢 1.,传统的方式肯定不妥,内核文档上写的有,大家参考便是,记住,要装一个ifenslave 2.最新的sysfs配置方式 确认你的系统上有sys这个目录,并且mount于它的文件系统是sysfs类型的.然后就是下面的步骤了,很简单: 第零步:加载模块 root@zyxx:modprobe bonding 第一步:进入相应目录 root@zyxx:cd /sys/class/net/ 第二步:查看一下文件,熟悉一下地形(该步骤可省略) root@zyxx:/sys/class/net# ls bond0 bonding_masters eth0 eth1 eth2 eth3 eth4 eth5 lo 第三步:看看当前有哪些bond设备 root@zyxx:/sys/class/net# cat bonding_masters bond0 第四步:从一个bond设备添加或者删除一个以太网卡设备 root@zyxx:/sys/class/net# echo (-)X > bonding_masters #注释:上一条命令中的 号表示添加设备,而-号表示删除设备, X中的X表示任意一个你喜欢的名字,-X中的X表示bonding_masters中已经存在的一个名字 第五步:进入新创建的bondMy,并且尽情配置吧 root@zyxx:/sys/class/net/bondMy/bonding# ls active_slave ad_num_ports ad_select arp_validate lacp_rate mode primary use_carrier ad_actor_key ad_partner_key arp_interval downdelay miimon num_grat_arp slaves xmit_hash_policy ad_aggregator ad_partner_mac arp_ip_target fail_over_mac mii_status num_unsol_na updelay 1.增加eth2到bondMy root@zyxx:/sys/class/net/bondMy/bonding# echo eth2 > slaves 2.设置链路监控间隔 root@zyxx:/sys/class/net/bondMy/bonding# echo 100 > miimon 3.设置mode为热备 root@zyxx:/sys/class/net/bondMy/bonding# echo 1 > mode ... 第七步:感慨 整个配置步骤很简单,模块只需要加载一次,以后动态配置就一切OK了. 五、bonding驱动的实现 在看了精彩的配置并且实际上已经配置出一个很好用的网络后,我肯定会急切的看一下源代码的实现,这也是我喜欢linux的原因,它可以让你随意patch.实际上bonding的驱动非常简单,和tap一样的,基本就是三大部分: 第一部分:初始化 这部分很简单,就是初始化一个net_device,然后注册进去,这就不多说了 第二部分:实现用户配置接口 该接口有两种,第一种就是传统的基于ioctl的方式配置,就是实现一个ioctl即可,另一种就是通过sysfs实现,也很简单,实现一些attitude的store/show方法即可,不管采用哪种方式,最终都要调用一个函数,那就是netdev_set_master,该函数中最重要的事就一个,那就是将物理网卡的master设置成我们在第一部分初始化的那个bond设备: slave->master = master; 第三部分:初始化传输和接收接口 对于传输接口,很简单,和多端口网桥类似.bond设备在初始化时将start_xmit初始化成bond_start_xmit,在bond_start_xmit中有一个switch-case,switch什么呢?当然是bonding的mode了,比如在mode0,也就是轮转负载的mode下,bond_start_xmit调用如下代码段: switch-case:bond_xmit_roundrobin... bond_for_each_slave_from(bond, slave, i, start_at) { if (IS_UP(slave- |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: linux系统下远程管理设备配置下一篇: 读Linux那些事儿之我是HUB笔记(五)
关于链路层的网卡聚合-基于Linux bonding的所有评论