首页 > 范文大全 > 正文

高速网络自适应负载均衡技术的实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇高速网络自适应负载均衡技术的实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:Gbit网络的出现,其规模和速度都给网络处理带来了新的挑战。高速网络处理技术的困难是处理速度与网络速度的匹配,而负载均衡技术能够解决这个困难。目前的研究都在NP上实现,硬件要求较高。本文提出一种软件方案实现网络处理的负载均衡,实践证明该方案性能良好。

关键词:高速网络;负载均衡;负载均衡技术;网络处理

中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)15-30729-02

Implementation of self-adapting Load Balance Technique of High-speed Network

ZHENG Zhi-xian1, CHEN Hua1,2, XU Rong-sheng3

(1. Fujian Communication Technology College, Fuzhou 350007, China; 2. Fuzhou University, Fuzhou 350002, China; 3. Network Security Lab, Institute of High Energy Physics, CAS, Beijing 100049, China)

Abstract:Gbit network developes andits scale and speed have brought a new challenge to network processing .The difficulty of processing technology for High-speed network is how to make processing speed match network speed.The load balance technique can solve it.The present researches all base on the NP, and the hardware requirement are higher.The thesis puts forward a software solution to achieve load balance for network processing.And it is proved that the solution is well done .

Key words:High-speed network; load balance; load balance technique; network processing

1 引言

Gbit网络的出现,其规模和速度都给网络处理带来了新的挑战,如何实现在高速链路中的处理能力也成为了当前各种网络处理系统讨论的焦点。一种观点认为高速网中的网络处理是不实际的,因为当前的技术很难实现处理速度与网络速度的匹配,丢包的问题势必造成很高的错误;另一种观点是利用多个处理器并行工作,将网络流量分成单个处理器能处理的多个部分,以实现高速网络中的网络处理。由此可见,研究网络流的负载均衡技术在现实中具有重要的意义。目前在网络中负载均衡技术应用较多是网络处理器(NP)[1,2]。这些应用需要从硬件上改造网络处理能力,下面提出一个软件方案,在现有的条件基础上实现大规模网络的负载均衡。

2 技术背景

2.1 负载均衡技术

负载均衡技术[4]通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务合理均衡地分配出去,用多个设备共同完成任务,从而以较低成本消除网络瓶颈,提高网络的灵活性和可靠性。负载均衡技术面临的问题有3方面:负载状况的定义、如何获取网络数据以及获取后如何处理的问题。而如何处理实际上就是选择合适的负载均衡算法,它能保证设备协同完成任务,消除或避免现有的网络负载不均、数据流量拥挤和响应时间长的瓶颈。

2.2 负载均衡

将负载均衡技术应用在网络处理系统中,是为了解决高速网的网络速度与处理速度不匹配的问题,将从网络中均衡地捕获的数据包再分配给各处理节点进行处理。所以负载均衡技术满足以下条件将更有利于实现网络分析处理:

(1)属于同一IP的所有数据包应由同一个捕获节点完成。

(2)同一类型的数据包,即使用同一协议的数据包集中在一起以便共同处理。

(3)可扩展性和容错性。随网络中的流量发生变化,捕获节点负载分配不均或崩溃时,负载均衡技术都能针对具体情况进行响应,调整数据捕获节点之间的负载,使之重新达到均衡,并且使对其余数据分析处理器的影响降低到最小。

如何在多个数据捕获器之间分配流量是关键问题。其分配方法,在分流节点按照控制节点根据当前情况定义的策略向各捕获节点分配任务,通过调整对应于捕获节点的这些策略来保证每个数据捕获节点的负载均衡。

3 流量分配策略

网络处理第一步就是捕获所有网络流。通常情况下,数据捕获器直接连接到主要入口和路由出口处。它就像sniffer软件那样捕获经过路由器的IP包。分离网络数据流是常用的解决方式。我们可以采用好几种策略。本节给出动态流量分配思想:选择一种或多种被检测网段内主要的服务类型的流量单独对其进行处理,其余类型的流量合并为一类,并且每一种类型的流量都按照一定的流量分配算法分配到各个网络捕获节点,其结构图如图1所示。

图1 动态流量分配结构

3.1 动态负载均衡策略

分离网络数据流是负载均衡常用的解决方式。我们可以采用以下几种策略。

3.1.1 以IP段来分类

每个单位网络都有它们自己的IP段。比如,某单位的IP段是137.138.1.1至137.138.2.254。因此,如果有3个DC,我们就能以以下的方式自动地捕获数据包:

DC1 ------------- 137.138.1.1

DC2 ------------- 137.138.1.2

DC3 ------------- 137.138.1.3

DC1 ------------- 137.138.1.4

……

DC2 ------------- 137.138.2.254

3.1.2 以流入或流出来分类

由于网络捕获器通常直接连接到机构的中心交换机或路由器上,多数IP包很自然地被分成2类,即流入包和流出包。因此很容易设置一部分网络捕获器捕获流入包而另一部分捕获流出包。

3.1.3 以协议来分类

TCP/IP协议模型中,TCP层有两个协议:TCP和UDP。所以我们可以分配一部分网络捕获器只处理TCP包而另一部分只处理UDP数据。网络捕获器的数量取决于网络数据流和网络捕获器的硬件性能。

一般情况下仅使用其中的一种是不能均衡DC的负载。比如,一些企业流入流量比流出流量大得多,而大部分网络服务提供商则流出流量比流入流量大得多。而且不同类型的流量比率也不全是一样的。流量状况经常发生变化。因此为了在捕获器间更好地均衡负载,最好是三种策略的组合。

有很多方式组合这些负载方法。这些方式组合很大程度上取决于开发者的环境需要。每个DC分配的IP范围有静态分配和动态分配两种选择。一般后者比前者更适合网络处理应用。下面我们提出实现动态负载均衡网络流的过程。

3.2 动态负载均衡实现

每个捕获器上有个配置文件,指明本机捕获的IP段和所覆盖的协议。捕获器从中央管理器获取其配置文件。每个捕获器有个运行中的daemon来检查自己的状态,如CPU、内存和网络使用情况,然后把结果送给每个机器。中央管理器检查捕获器的状态,然后给每台机器做最新的配置。它把所有的捕获器看成一个整体,并定期地刷新。如果一个捕获器崩溃了,中央管理器不能接收到该机器的状态,那么就把崩溃机器负责的负载均衡到其他捕获器上。如果一个新的捕获器加入,中央管理器将被告知然后为每个捕获器创建配置文件。这样移走或增加捕获器变得更容易、更安全。

3.2.1 捕获器的综合负载指数

每个捕获器上都有一个daemon定期发送综合负载情况。daemon从本机/proc/目录里获取各种基本负载信息。该程序将本机上的CPU Load、登录会话数、内存用度等进行综合计算,再传给中央管理器。

/proc/loadavg:CPU平均负载

/proc/meminfo:内存使用情况

/proc/stat:swap使用情况

/proc/net/dev:网络流量情况

……

然后,根据一定的综合负载算法得出本机的综合负载指数GLI。下面介绍综合负载算法。

3.2.2 综合负载算法

本机负载指标主要记录各种负载信息,如当前CPU负载CPULOAD、当前内存利用情况MEMORY、当前磁盘交换分区使用情况SWAP、当前网卡负载NICLOAD。

综合负载可以通过以下公式计算出:

GLI=R1*CPULOAD+R2*MEM+R3*SWAP+R4* NICLOAD,其中∑Ri=1。

若当前的系数Ri不能很好地反映应用的负载,系统管理员可以对系数不断地修正调整,直到找到贴近当前应用的一组系数。

另外,关于发送负载信息时间间隔的设置,虽然很短的间隔可以跟确切地反映各个节点的负载并及时作出调整,但是很频繁地查询(如1秒钟几次)会给节点带来一定的负载。所以,这里要有个折衷,我们一般建议将时间间隔设置在5至20秒之间。

我们依据上述算法思想做了一个评估实验,测试了大量配置相同的机器的运行情况,得出每个机器上的CPU、内存、交换空间、进程数等,然后估算出各个参量值的权重系数{0.4,0.3,0.1,0.2}:

表1各种负载系数

于是得出综合负载指数为:

GLI=R1*CPULOAD+R2*MEM+R3*SWAP+R4* NICLOAD,其中∑Ri=1。

3.3 中央管理器

将要处理的网络IP数列出,同时根据协议类别形成多个任务。中央管理器接收到各个捕获器的综合负载指数,根据其负载能力分配任务。在系统运行过程中,流量发生变化,则需要对各种流量对应的捕获器作调整,并将任务重新同步发送到各捕获器上。每个捕获器上的配置如下:

task.conf文件

seize

{ host ipaddr;

protocol pro;

int port; };

……

4 数据捕获的设计

BPF包捕获技术提供了基于内核的过滤和缓冲,在高速高负载网络中可获得较好的性能。每个捕获器的网络数据捕获基于libpcap。libpcap作为一个通用可移植的包捕获API函数库,提供了对BPF的内在支持,为底层网络监听提供一个可移植框架。BPF改进了过滤方式,使用基于寄存器的过滤求值程序, 同时还使用了一种简单的缓冲策略, BPF的性能大幅度得提高。BPF过滤器和缓冲器是经过优化的,用户可用BIOCSBLEN ioct1()增加缓冲区长度。

每个捕获器将读入其配置文件,通过libpcap的Pcap_setfilter来设置过滤器,完成给它分配的捕获任务。在实现上,为提高捕获速度,技术上做以下改进:引入“零拷贝”技术[3]。

传统的Libpcap采用BPF方式来实现对网络数据的采集,从网卡抓包到应用程序获取数据包要经历3次拷贝:网卡到内核缓冲区;内核中复制一份,一份交给正常的应用程序,另一份交给抓包程序;内核到应用层的拷贝。这三次拷贝中主要是后两次所消耗的资源比较大,影响系统的整体性能。引入零拷贝技术,取消后两次拷贝操作,让应用程序直接访问网卡复制到内核缓冲区的数据包,实现CPU的零参与,彻底消除CPU在这方面的负载。

零拷贝技术首先利用DMA方式将网络数据包直接传递到系统内核预先分配的地址空间中,避免CPU的参与;同时将系统内核中存储数据包的内存区域映射到网络数据获取的应用程序空间,以对这块内存进行访问,从而减少了系统内核向用户空间的内存拷贝,同时减少了系统调用的开销。

5 性能测试

3台捕获机与中央管理机均为PC机,操作系统为RedHat 7.3,处理器为P4 2.0GHz,内存为256MBDDR,硬盘为40GB,千兆以太网卡;使用用IXIA网络测试仪发送ip段为192.168.10.1~192.168.10.10的网络数据,数据丢包率低于0.01%。

6 结束语

这种软件负载均衡技术是实现高速网络环境下网络处理的有效途径之一。该方式具有高可用性,高扩展性,使得网络处理系统能更好地适应网络带宽不断增加的趋势。因而进一步研究有很强的应用前景。该技术可以实现基于网络层的数据转发和负载均衡调度。在此基础上进行改进可以实现千兆带宽的网络入侵检测、千兆带宽的网络取证等网络处理。

参考文献:

[1] 陈宇,薛鹏,翟伟斌,刘宝旭,许榕生.基于IXP2400开发NIDS负载均衡器的研究[J].计算机工程,2007,33(1):104-105,127.

[2] 郑爱蓉,施恩,杨彬,陈宇,许榕生.基于IXP2400千兆防火墙包分类算法的设计与实现[J].计算机应用研究,2005,22(9):237-239.

[3] 杨武,方滨兴,云晓春,等.基于骨干网的并行集群入侵检测系统[J].哈尔滨工业大学学报,2004,36(3):274-275.

[4] 负载均衡技术:/cword/2876.shtml.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。