一种DPDK环境下基于NAT的负载均衡方法技术

技术编号:21166882 阅读:42 留言:0更新日期:2019-05-22 09:36
本发明专利技术公开了一种DPDK环境下基于NAT的负载均衡方法,方法运用包括DPDK模块和NAT模块的调度器实现,包括步骤:对DPDK模块和NAT模块初始化,得到收发队列端口和NAT规则表和状态记录表;使用DPDK模块记录接收数据包的源目IP和地址,计算源目IP和地址对应的哈希值;根据哈希值查找NAT规则表,判断NAT规则表中是否有与得到的哈希值对应的服务器IP和端口信息,若有就将所述源目IP和地址替换,实现数据报传输,否则寻找状态记录表中负载剩余最大服务器,并将数据包发送至负载剩余最大服务器,并记录负载剩余最大服务器与客户端的通信信息至NAT规则表并更新NAT规则表;本发明专利技术可提升调度器对大规模流量的适用性,具有良好的拓展性,并且有利于服务器负载的均衡。

A load balancing method based on NAT in DPDK environment

The invention discloses a load balancing method based on NAT in DPDK environment, which is realized by using a dispatcher including DPDK module and NAT module, including steps: initializing DPDK module and NAT module, obtaining the receiving and receiving queue port, NAT rule table and state record table; recording the source IP and address of receiving data packet by DPDK module, calculating the hash value corresponding to source IP and address; Find the NAT rule table according to the hash value, judge whether there is server IP and port information corresponding to the hash value obtained in the NAT rule table. If there is any, replace the source IP and address to realize data transmission. Otherwise, find the maximum residual load server in the status record table, send the data packet to the maximum residual load server, and record the maximum residual load server and the guest. The communication information of the client is transferred to the NAT rule table and the NAT rule table is updated; the invention can improve the applicability of the scheduler to large-scale traffic, has good expansibility, and is beneficial to the load balance of the server.

【技术实现步骤摘要】
一种DPDK环境下基于NAT的负载均衡方法
本专利技术属于网络通信领域,具体涉及一种DPDK(DataPlaneDevelopmentKit,数据平面开发套件)环境下基于NAT(NetworkAddressTranslation,网络地址转换)的负载均衡方法。
技术介绍
现如今随着计算机用户的爆炸式的增长,网络流量也变得越来越大,对于服务器的负载能力也提出了更大的挑战。就目前而言即使性能最好的单台服务器也无法承受现如今的大流量的请求。所以利用集群的思想来实现负载均衡就显得格为的重要。对于传统的基于NAT的负载均衡来说,其部署在传统的TCP/IP协议栈上,系统频繁的中断,上下文的不停调度无疑占用了其大量的时间。因而对于传统的利用NAT实现负载均衡来说,调度器本身已经成为其负载均衡的瓶颈。由于调度器的性能问题,一般情况下来说能对10台左右的服务器进行调度,这对于绝大部分情况下已经可以适用,但对于网络流量日渐爆炸的今天,尤其是DDOS技术的日渐成熟,攻击流量上百GB/S级别已经不是问题。在这种背景下传统基于NAT实现的负载均衡显然是胜任不了这份工作,因此寻找能抵抗更大规模流量的负载均衡技术已经亟不可待。在传统的NAT做负载均衡情况下,对于外部的请求,调度器截获到后一般采用轮询的方法,在地址池中随机找出一个内部服务器的地址将目的地址替换掉,源地址保持不变。再将其发往内部服务器去处理。而对于内部与外部的通信刚好是一个相反的过程,调度器将服务器传过来的数据包的源地址替换为调度器拥有的全局地址,目的地址不变,将其发送出去。显然传统下NAT做负载均衡的优点是服务器可以运行任何支持TCP/IP的操作系统,因为只需要在调度器上配置好一个IP,服务器组可以使用自己私有的IP地址,节约了公网的IP地址比较的灵活。但是调度器由于需要对数据包进行频繁的查找,替换操作,虽然相比于服务器对数据包细节处理,这种工作量少了很多,但是在量一旦大了起来,调度器也承受不了这样的高频率的工作。一般情况下来说当服务器结点数目升到20时,调度器本身有可能成为系统的新瓶颈。此外,传统的利用NAT做负载均衡时,一般考虑轮询的方法,即每个服务器机会均等的被调度器垂青,使用一定程度上可以使得各个服务器得到均衡使用,但是这种情况忽略了服务器本身性能的不同,夸张来说A服务器负载能力是B服务器的10倍,对于这种轮询的方法,当B服务器负载达到上限时,A才堪堪达到负载上限的1/10。这样对于B服务器是不公平的,无疑也降低了整个系统的性能。
技术实现思路
针对上述现有技术中无法满足更大规模流量、以及由于调度的不公平而导致整个系统性能降低的问题,本专利技术于提出一种DPDK环境下基于NAT的负载均衡方法,该方法中由DPDK模块接管调度器的处理模块,利用DPDK对数据包的快速处理能力,结合NAT模块的状态记录表对数据包进行调度转发;克服了调度器本身性能的限制,提高了负载均衡的上限,实现了均衡转发,具体技术方案如下:一种DPDK环境下基于NAT的负载均衡方法,所述方法运用包括DPDK模块和NAT模块的调度器实现,具体包括步骤:S1、初始化所述DPDK模块和NAT模块,配置完成所述调度器的收发队列及对应的端口,并设置好对应的NAT规则表和状态记录表;S2、使用DPDK模块记录所述调度器接收到数据包的源目IP和端口,基于所述源目IP和端口进行哈希计算得到所述数据包的哈希值;S3、根据所述哈希值遍历所述NAT规则表,查询所述NAT规则表中是否存在对应所述哈希值的内部服务器的IP和端口信息;若存在,则基于所述NAT规则表对所述源目IP进行替换,并将所述数据包发送给对应服务器,否则,执行步骤S4;S4、若所述NAT中不存在对应所述哈希值的内部服务器的IP和端口信息,则寻找所述状态记录表中负载剩余最大服务器,并将所述数据包发送至所述负载剩余最大服务器,并记录所述负载剩余最大服务器与客户端的通信信息至所述NAT规则表并更新所述NAT规则表。进一步的,所述步骤S2中,还包括判断所述数据包是从客户端发送到服务器还是从服务器发送到客服端,若所述数据包从客户端发送到服务器,则执行步骤S3~S4;否则,执行步骤:根据所述哈希值遍历所述NAT规则表,查询所述NAT规则对应所述哈希值的源目IP和端口信息,并将所述源目IP和端口替换,将所述数据包发送给对应客户端。进一步的,所述步骤S1中还包括:对所述状态记录表中服务器按照剩余负载按照指定规律进行等级划分。进一步的,所述DPDK模块中采用rte_eth_tx_burst()函数接收所述数据包。与现有技术相比,本专利技术的DPDK环境下基于NAT的负载均衡方法的有益效果为:(1)具有大规模流量的适应性:利用DPDK绕过传统协议栈,摈弃了传统协议栈的一些处理流程,加速数据包的处理,突破传统基于NAT负载均衡调度器本身的限制,使得调度器可以调度更多的服务器,实现了在大规模流量下的负载均衡;(2)具有良好的均衡性,提升服务器集群的整体性能:利用状态记录表的剩余负载和性能对比得出的值可以快速的找出真正的剩余负载最多的服务器,相比于传统下使用轮询各个服务器的做法,考虑了服务器的性能差异,实现了真正意义上的负载均衡;(3)具有可扩展性:基于软件对调度器的处理性能进行提升,实现大规模流量的负载均衡;相比于硬件系统,有很多通用的API接口对后续的开发具有良好的支持;同时,也可以根据实际需要对软件进行进一步的开发。附图说明图1是采用本专利技术方法实现一次客户端和服务器通信的流程框图示意;图2是本专利技术实施例中所述NAT规则表的结构示意图;图3是本专利技术实施例中完成所述方法的模型结构图示意。具体实施方式为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述。在本专利技术实施例中,提供了一种DPDK环境下基于NAT的负载均衡方法,参阅图3,本专利技术中调度器内设置有DPDK模块和NAT模块,本专利技术的方法基于所述调度器完成,参阅图1,图示为使用本方法方法实现一次客户端和服务器通信的流程图示意,从中可知,本专利技术方法具体包括步骤:S1、初始化DPDK模块和NAT模块,配置完成调度器的收发队列及对应的端口,并设置好对应的NAT规则表和状态记录表;在本专利技术实施例中,由DPDK模块来实现数据包的收发处理,由NAT模块来对NAT规则表和状态记录表维护,其中,NAT规则表是一个哈希表,具体可参阅图2,从中可知,每个键值对应两个值,一个是用于接收时,将目的IP,端口替换,发送给内部服务器,一个是用于发送时,将源地址替换为外部调度器的IP地址,端口,然后发送给客户端;NAT规则表在初始化时建立,并且在调度器接收到数据包时进行更新,每次将根据客户段的IP,端口信息进行哈希,将内部服务器的IP,端口信息放在第一个位置,将调度器使用的外部IP,端口信息放在第二个位置;调度器在查询时先根据数据包的源端口地址确定该数据包是外部客户端接收过来还是内部服务器需要发送出去的,然后再根据客户端的IP和端口信息进行哈希,确定是使用键的第一个值替换目的IP,端口,还是第二个值替换源IP端口。而对于本专利技术中状态记录表,用于记录还具有剩余负载的服务器的具体情况:本专利技术设定一本文档来自技高网
...

【技术保护点】
1.一种DPDK环境下基于NAT的负载均衡方法,其特征在于,所述方法运用包括DPDK模块和NAT模块的调度器实现,具体包括步骤:S1、初始化所述DPDK模块和NAT模块,配置完成所述调度器的收发队列及对应的端口,并设置好对应的NAT规则表和状态记录表;S2、使用DPDK模块记录所述调度器接收到数据包的源目IP和端口,基于所述源目IP和端口进行哈希计算得到所述数据包的哈希值;S3、根据所述哈希值遍历所述NAT规则表,查询所述NAT规则表中是否存在对应所述哈希值的内部服务器的IP和端口信息;若存在,则基于所述NAT规则表对所述源目IP进行替换,并将所述数据包发送给对应服务器,否则,执行步骤S4;S4、若所述NAT中不存在对应所述哈希值的内部服务器的IP和端口信息,则寻找所述状态记录表中负载剩余最大服务器,并将所述数据包发送至所述负载剩余最大服务器,并记录所述负载剩余最大服务器与客户端的通信信息至所述NAT规则表并更新所述NAT规则表。

【技术特征摘要】
1.一种DPDK环境下基于NAT的负载均衡方法,其特征在于,所述方法运用包括DPDK模块和NAT模块的调度器实现,具体包括步骤:S1、初始化所述DPDK模块和NAT模块,配置完成所述调度器的收发队列及对应的端口,并设置好对应的NAT规则表和状态记录表;S2、使用DPDK模块记录所述调度器接收到数据包的源目IP和端口,基于所述源目IP和端口进行哈希计算得到所述数据包的哈希值;S3、根据所述哈希值遍历所述NAT规则表,查询所述NAT规则表中是否存在对应所述哈希值的内部服务器的IP和端口信息;若存在,则基于所述NAT规则表对所述源目IP进行替换,并将所述数据包发送给对应服务器,否则,执行步骤S4;S4、若所述NAT中不存在对应所述哈希值的内部服务器的IP和端口信息,则寻找所述状态记录表中负载剩余最大服务器,并将所述数据包发送至所述负载剩余最大服务器,并记录所述负载剩...

【专利技术属性】
技术研发人员:李鹏徐壮王汝传徐鹤朱枫程海涛李超飞
申请(专利权)人:南京邮电大学江苏省精创电气股份有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1