快速业务通道

链路层的网卡聚合-基于Linux bonding

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-05

linux总是可以用一种最简单的方式实现一个很复杂的功能,特别是网络方面的,哪怕这个功能被认为只是在高端设备上才有,linux也可以很容易的实现,以前的文章已经说了不少次了,比如vlan功能,比如高级路由和防火墙功能等等,本文着重说一下linux的bonding,也就是端口聚合的功能模块.不可否认,在网络设备这个层面上上,linux搞出了两个很成功的虚拟设备的概念,一个是tap网卡,另一个就是本文所讲述的bonding,关于tap网卡的内容,请参阅之前关于OpenVPN的文章.
如果有一个问题摆在眼前,那就是关于linux bonding有什么比较好的资料,答案就是linux内核的文档,该文档在$KERNEL-ROOT/Documentation/networking/bonding.txt,我觉得没有任何资料比这个更权威了.
一、bonding简介
bonding是一个linux kernel的driver,加载了它以后,linux支持将多个物理网卡捆绑成一个虚拟的bond网卡,随着版本的升级,bond驱动可配置的参数越来越多,配置本身也越来越方便了.
我们在很多地方会使用到物理网卡端口汇聚的功能,比如我们想提升网络速率,比如我们想提供热备份,比如我们想把我们的主机配置成一个网桥,并且使之支持802.3ad动态端口聚合协议等等,然而最重要的还是两点,第一点是负载均衡,第二点就是热备份啦.
二、驱动以及Changes介绍
linux的bonding驱动的最初版本仅仅提供了基本的机制,需要在加载模块的时候指定配置参数,如果想更改配置参数,那么重新加载bonding模块;然后modprobe支持一种rename的机制,也就是在modprobe的时候支持使用-o重新为此模块命名,这样就可以实现一个模块以不同的配置参数加载多次了,起初比如我有4个网口,想把两个配置成负载均衡,两个配置成热备,这只能手工重新将bonding编译成不同的名称来解决,modprobe有了-o选项之后,就可以两次加载相同的驱动了,比如可以使用:
modprobe bonding -o bond0 mode=0
modprobe bonding -o bond1 mode=1
加载两次bonding驱动,用lsmod看一下,结果是bond0和bond1,并没有bonding,这是modprobe加载时命名了,然而最终,这个命名机制不再被支持了,正如modprobe的man手册所叙述的一样,-o重命名机制主要适用于test.,bonding支持了sysfs的配置机制,对/sys/class/net/目录下的文件进行读或者写就可以完成对驱动的配置.
不管怎样,在sysfs完全支持bonding配置之前,如果想往某一个bonding网卡添加设备或者删除设备的时候,还是要使用经典且传统的ioctl调用,因此必然需要一个用户态程序与之对应,该程序就是ifenslave.
我想,如果linux的所有关于设备的配置都能统一于sysfs,所有的关于内核和进程配置统一于procfs(内核是所有进程共享的地址空间,也有自己的内核线程以及进程0,因此对内核的配置应该在procfs中),对所有的消息,使用netlink通信,这就太好了,摆脱了命令式的ioctl配置,文件式(netlink使用的sendto之类的系统调用也可以归为文件系统调用相关的)的配置将更加高效,简单以及好玩!
三、bonding配置参数
在内核文档中,列举了许多bonding驱动的参数,然后本文不是文档的翻译,因此不再翻译文档和介绍和主题无关的参数,仅对比较重要的参数进行介绍,并且这些介绍也不是翻译,而是一些建议或者心得.
ad_select:802.3ad相关.如果不明白这个,那不要紧,抛开Linux的bonding驱动,直接去看802.3ad的规范就可以了.列举这个选项说明linux bonding驱动完全支持了动态端口聚合协议.
arp_interval和arp_ip_target:以一个固定的间隔向某些固定的地址发送arp,以监控链路.有些配置下,需要使用arp来监控链路,这是一种三层的链路监控,使用网卡状态或者链路层pdu监控只能监控到双绞线两端的接口的健康情况,而监控不到到下一条路由器或者目的主机之间的全部链路的健康状况.
primary:表示优先权,顺序排

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号