新农首页 农业新闻 致富信息 农业技术 农业搜索 农药 电脑 网站地图

Linux服务器下多网卡负载均衡 Linux下的bonding技术(2)

发布时间:2012-04-30  来源:中国建站网
摘要:基于传输协议的发送算法的主要思想是:由目的主机号、目的主机所在子网的子网号及该会话的TCP或UDP的目的端口号共同决定某个数据包的发送接口号,此算法和MAC地址的异或算法有点类似,因为它也是一种异或计算。 下面


    基于传输协议的发送算法的主要思想是:由目的主机号、目的主机所在子网的子网号及该会话的TCP或UDP的目的端口号共同决定某个数据包的发送接口号,此算法和MAC地址的异或算法有点类似,因为它也是一种异或计算。

    下面我们约定:

    (1)host为要发送数据包的目的主机号。

    (2)subnet为目的主机的子网的子网号。

    (3)port为UDP或TCP连接的目的端口号。

    (4)slave_cnt为绑定的接口数。

    不失一般性,这里先考虑slave_cnt为4的情况,在这种情况下由上述几个条件异或并进行求余计算来共同确定发送的接口号,即进行下面的运算:

    (host^subnet^port)&(0x03)%slave_cnt①式

    上式可能的结果可能为0、1、2、3。即该算法这种情况下最多可以绑定4个网卡接口。 

    该算法最大程度上将不同连接的数据包从不同的接口发送,下面分几种情况讨论:

    (1)对于同一个客户机的两个TCP连接,发送的接口号只与要连接的目的端口号有关。我们假设连接1和连接2的目的端口号分别为port1,port2,当port1(二进制)和port2(二进制)的最后两位不同时,上个算法的计算结果不相等,两个连接的数据流从不同的接口发送出去.

    (2)对于同一个子网的不同客户机的两个TCP连接来说,上述算法式子中的subnet相同,假设连接的目的端口号port相同。但是主机号不同。设目的主机号分别为host1和host2,当host1和host2(都是用二进制表示)的最后两位不相同时,算法公式的计算结果不相等,两个连接的数据流从不同的接口发送出去。

    [NextPage]

    (3)对于不同子网的两个TCP连接来说,假定主机号和连接的目的号port号都相同,子网号不同。设连接1和连接2所在的子网号分别为subnet1和subnet2,当两者的最后两位不相同时,算法公式的计算结果不相等,此时两个连接的数据流从不同的接口发送出去。

    下面考虑有N个网卡接口的情况,在某个时间段内从第i个接口发送的连接数为(i=1,2,….N),第i个接口发送的第j个连接的数据流为,则第i个网卡接口的负载是:

    ②式

    当②式成立时,每个接口的负载绝对均衡,由于①式能够将连接尽量分配到不同的接口,所以一般情况下==……,即每个接口的连接数相等,但是每个连接的数据流量不一定相等,也就是说②式不一定成立,根据统计原理,当客户机和服务器的连接数足够大并且时间足够长时,②式是成立的。

    从上面对基于传输协议的负载均衡算法分析来看,该算法不仅在网络层并且传输层都实现了各个接口的负载均衡,且保证了数据有序到达客户端问题,同时资源的利用率也很高。

    5测试结果进行验证分析

    测试软件环境:RedHat9.0(内核2.4.20)

    测试硬件配置环境:一台服务器(CPU:PIV2.8G;内存:512M;两块支持MII状态字寄存器的百兆网卡,每个有一个接口;一台客户机(配置和服务器一样);两台(一台也可)24口千兆交换机。测试软件为netpipe,利用此软件可以测试TCP协议性能,用它依次来对轮转算法、MAC地址异或算法以及基于传输协议的发送算法的网络延时和吞吐率。这里服务器用来发送数据,客户机用来接收数据。

    服务器发送方执行:

    NPtcp?t?s?h172.19.11.130?otest.ppt?p

    客户机接受方执行:

    NPtcp?r?s

    测试结果(测试结果为平均值)如表一所示。

    从测试结果可以得出结论:由于轮转算法简单,计算量小,网络延迟也相对小,而基于传输协议的发送算法计算量相对较多,网络延时也比较大。由于这里是双机对测,即只有一个客户端,一个服务器端,所有MAC地址异或算法每次计算的结果也就唯一,只有一个接口被使用,吞吐率最小。相对来说,基于传输协议的发送算法吞吐率要大一些。

    上面测试需要说明的是:测试中服务器仅配置了两块网卡,并且只有一台客户机访问服务器,当网卡接口和客户机增加时,此文介绍的基于传输协议的发送算法的优势将会很明显。在一个比较大的局域网中多个客户机和服务器建立连接对话时,采用轮转算法的同一个连接的数据包经过不同的链路传送,无序到达客户端的概率就会增加,重发的次数也增加,服务器吞吐率会降低。而基于传输协议的发送算法则不存在这样的问题,此种情况下,服务器的吞吐率相对增加。

    6结束语

    Linux的bonding技术将多个网卡接口绑定在一起,使用多个接口发送数据,算法上实现了负载均衡和故障迁移与接管。它是一种不对称得负载均衡技术,目前只是研究了发送算法,接受算法还有待于进一步的研究,目前的链路技术都是将网卡接口绑定在一起来提高服务器的网络性能,但是各种实现算法包括基于传输协议的发送算法并没有考虑接口的速度,这一点有必要进一步改进。

打印 责任编辑:希望