服务器网卡bonding配置浅读

来源:互联网 发布:eval js 编辑:程序博客网 时间:2024/06/06 06:46
    最近看了下服务器网卡bonding驱动的文档,网络比较关心,和大家分享下,文档参见Linux内核目录($KERNEL_DIR/Documentation/networking/bonding.txt)

我看的是内核linux-2.6.32.60的,源码和文档可以去www.kernel.org下载。

网卡绑定支持7中模式,使用mode选项来配置,具体如下:

    balance-rr or 0
        这是默认配置,即服务器开启bond,但是不配mode选项的话,默认就是mode 0,也就是轮询,我的理解是,从网络上看,服务器2块网卡使用同一个MAC地址,
        
        每一个miimon内,同时只有一块网卡在工作,也就是说从交换机上看,这个MAC一会在这个端口,一会在另一个端口,但同时只能有一个端口存在流量,所以瓶颈
    
        是1块网卡的极限。而且该mode如果交换机不配port-channel的话,会出现严重的MAC地址抖动。
    
    active-backup or 1
        主备模式,也是线上用的比较多的一种,服务器端只会有一块网卡是活动状态,只有当activce slave网卡down掉后,另外的slave才会切换到active状态,也
        
        就是说交换机无需任何特殊配置即可和服务器正常通信。

    balance-xor or 2
        异或模式,传输路线会根据异或的结果来选择,默认是拿源MAC和目的MAC做异或操作来决定走哪块网卡,通过xmit_hash_policy参数来修改策略。
    
    broadcast or 3
        广播模式,在所有网卡上接受所有的数据包,只提供冗余,不提供负载均衡。
        
    802.3ad or 4
        LACP模式,也是线上用的最多的一种,双网卡使用一个MAC和IP同时工作,网卡性能是所有slave之和。需要支持ethtool获取所有slave的speed和duplex;
        
        交换机支持802.3ad;
    
    balance-tlb or 5
        不需要交换机特殊支持,bond程序会选择一块网卡作为active网卡收包,而出方向则是根据slave上的traffic来的;如果bond选择的slavedown掉了,会有另外
        
        的slave会接管之前失效的MAC地址来收发包。总之就是单进双出。
        
    balance-alb or 6
        在balance-tlb的基础,增加了入方向rlb,字面上看就是 receive load balance,同样不需要交换机配LACP,但是需要服务器网卡支持ethtool获取speed和duplex,
        
        且网卡支持设置网卡硬件地址,和mode 4一样,需要配置updelay参数,文档原话:“The updelay parameter (detailed below) mustbe set to a value equal or
        
        greater than the switch'sforwarding delay so that the ARP Replies sent to the peers will not be blocked by the switch.”
        
        
mode 802.3ad线上用的比较多,就对802.3ad中可以设置的一些参数做一下介绍:

1、ad_select

    该参数制定链路聚合策略,有以下几种:
    
    stable or 0
        按照最大带宽去聚合;
        在所有slave down的情况,或者active聚合组没有slave的情况下会重新聚合;
        
    bandwidth or 1
        和stable一样,只是重新聚合的条件不一样;
        一个slave的加入或者删除会重新聚合;
        任何slave的状态改变会重新聚合;
        任何slave的802.3ad协议状态的改变会重新聚合;
        bond状态改变也会重新聚合;
    
    count or 2
        按照端口数量最大来聚合,个人最这个最多端口和最大带宽理解还不是太懂,具体要看实验的表现;
        重新聚合发生在“bandwidth”参数的设置;

2、lacp_rate

    该参数指定LACPDU报文发送速率,有以下2种:
    
    slow or 0
        30s一次,默认就是slow;
    
    fast or 1
        1s一次;

3、miimon

    该参数指定链路检测频率,驱动程序推荐是miimon=100,也就是100ms一次,default是0;
    
4、xmit_hash_policy

    layer2
        使用2层(source MAC XOR destination MAC) 来hash;
        
    layer2+3
        使用2+3层(((source IP XOR dest IP) AND 0xffff) XOR( source MAC XOR destination MAC )) 来hash;IP地址XOR完毕后,取低16 bits,再和MAC地址做一次XOR。
        
    layer3+4
        使用3+4层((source port XOR dest port) XOR((source IP XOR dest IP) AND 0xffff)来hash;

最后贴一个mode 4配置:
    cat /etc/modprobe.d/bonding.conf
    alias bond0 bonding
    options bonding miimon=100 mode=4 xmit_hash_policy=2


mode 1    主要的几个选项:

1、primary
    设置主网卡

2、updelay
    
    该参数的配置是为了防止交换机重启后端口UP起来,但是还未进入forwarding状态引起服务器出现流量上来的问题

最后贴一个mode 1配置:
cat /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bonding miimon=100 mode=1 primary=eth0 updelay=600000



有啥理解不对的地方还请指出,谢谢。近期会对所有mode和想了解的参数测试一遍,看看服务器和交换机的具体表现。
    

    

原创粉丝点击