一种基于DPDK的流量动态负载均衡方法技术

技术编号:16282641 阅读:61 留言:0更新日期:2017-09-23 02:07
本发明专利技术一种基于DPDK的流量动态负载均衡方法涉及计算机多核技术领域;该方法通过建立两张Hash表;分别进行Hash1()以及Hash2()计算,根据Hash结果查找表1以及Hash表2,判断两次Hash计算结果与处理核心id是否存在映射关系,如果是,将数据包分配到对应的处理核心中,否则,计算当前CPU的整体负载均衡度;判断负载均衡度是否超出阈值,如果否,根据Hash1()的结果在Hash表1中建立映射关系,将数据包分配到对应的处理核心中,如果是,剔除过载严重的处理核心;动态更新Hash2()的计算结果与处理核心id的映射关系,根据Hash2()的结果在Hash表2中建立映射关系,并将数据包分配到对应的处理核心中;本发明专利技术解决了多核处理器负载不均衡的问题。

A traffic dynamic load balancing method based on DPDK

The invention relates to a flow of DPDK based dynamic load balancing method to the multi-core technology field; the method by establishing two Hash respectively (Hash1); and (Hash2) calculation, according to the results of Hash 1 and Hash table lookup table 2, judge two times Hash calculation results and the existence of the mapping relation of processing core if Id is the packets to the corresponding processing core, otherwise, the overall calculation of current CPU load balance degree judgment; load balance degree is beyond the threshold, if not, according to the Hash1 (Hash) results in the table to establish mapping relations in 1, the packets corresponding to the processing core, if it is excluding serious overload, core processing; dynamic update (Hash2) results of mapping and processing core ID (Hash2), according to the results in Table 2 of Hash mapping, and the data packet The invention solves the problem that the multi-core processor has an unbalanced load.

【技术实现步骤摘要】
一种基于DPDK的流量动态负载均衡方法
本专利技术涉及计算机多核
,具体涉及一种基于DPDK的流量动态负载均衡方法。
技术介绍
在信息技术、人工智能技术和分布式并行计算技术飞速发展的今天,高性能数据处理系统在电信、金融、工业和医疗等众多领域得到了广泛应用。未来将是一个高效的数字化社会,信息量、计算量和复杂度迅速膨胀,大量的语音、数据、图像等信息需要计算机进行高速实时感知和处理。多年来,处理器性能的提升主要依赖于工作频率的提高,然而由于受到功耗及发热等因素的影响,这种做法已接近极限。在此背景下,多核处理器应运而生,并得到迅速发展,随着多核处理器在大规模并行数据处理系统中应用,计算性能的提高将更依赖于处理器核数量的提升。为了充分利用这些数量庞大的处理器核,应用程序的进程/线程个数也将大幅增加;同时多核处理器也使并行系统的层次结构变得更为复杂,给传统的进程/线程分配和调度带来挑战,从而使多核处理器在快速应用以及发挥最大性能优势方面遇到了阻碍。为了有效利用多核处理器,提高任务并行处理能力和吞吐量,负载平衡是一种能够通过恰当的任务分配与调度来进行资源优化利用,实施并行计算,提高计算机吞吐量和缩短任务响应时间的技术,现有的对于RSS技术,RSS是通过特定的报文字段值进行哈希计算得出哈希值,再通过得出的哈希值将数据报文送往不同的队列,网卡会根据数据包的不同类型确定其特定的关键字段信息,如下表所示:表1RSS数据包类型与关键字的对应关系其缺点是一些网络应用处理的设备中,单纯的使用RSS技术会影响处理性能,例如电信转发设备,对一个网络连接的双向流处理地方式是相近的,所以希望在多核处理器的同一个核上对存在对称信息的数据报文进行处理,比较有代表性的应用有网络防火墙、服务质量保证。若在不同的核上处理同一个流上的双向信息,就会出现不同核进行数据同步的问题,这就会产生处理器的多余开销,降低处理器的性能。相对DPDK平台的RSS技术改进的对称RSS技术虽然解决了同一个流的对向数据报文在不同核上进行处理的问题,但是对于出现Hash碰撞的情况以及大规模相同连接的流量时,还是会出现多核处理器某一个核上的负载过重,出现负载不均衡的情况。所以当网络流量出现比较单一极端的情况下,仅仅利用静态的Hash技术是不能满足对数据报文处理的需求的,会出现单核负载过重,降低CPU的处理效率。
技术实现思路
本专利技术针对上述问题,提出了一种对称RSS技术与多重Hash计算结合的流量动态负载均衡方法。本专利技术为解决上述问题采取的技术方案是:本专利技术一种基于DPDK的流量动态负载均衡方法,具体步骤包括:步骤a、建立Hash表1和Hash表2,用来分别存储一个连接与CPU不同处理核心id之间的映射关系;步骤b、在捕获到数据包后,输入数据报文中的五元组信息以及默认的HashKey,分别通过Hash1()以及Hash2()计算得到Hash结果,根据两次Hash计算得到的Hash结果进行Hash表1以及Hash表2查找,判断两次Hash结果与处理核心id是否存在映射关系,如果:是,将数据包分配到对应的处理核心中;否,说明数据包属于一条新连接,则对当前CPU的整体负载均衡度进行计算;步骤c、判断当前CPU的整体负载均衡度是否超出阈值,如果:否,说明目前系统负载均衡,根据Hash1()的Hash结果在Hash表1中建立映射关系,将数据包分配到对应的处理核心中,是,说明目前系统负载不均衡,剔除过载严重的处理核心;步骤d、动态更新Hash2()的所有Hash结果与处理核心id的映射关系,数据包根据Hash2()的Hash结果在Hash表2中建立映射关系,并将数据包分配到对应的处理核心中。进一步地,在步骤b中输入的HashKey值如下:staticuint8_trss_intel_key[40]={0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,}。进一步地,在步骤c中所述的数据包分配具体为:每个I/O接收逻辑核和工作逻辑核对之间通过专用的“生产者—消费者”Ring环形队列进行连接;每个I/O接收逻辑核从指定的Ring环形队列接收报文,然后分发到工作线程,每个I/O接收逻辑核与任何一个工作线程进行通信;每个工作逻辑核从其对应的Ring环形队列读取报文,将这些报文拆分,并按照DPDK提供的LPM表的转发逻辑将报文被转发到网卡口的输出Ring环形队列;每个工作逻辑核和NIC_TX_Port之间创建有Ring环形队列,由每个I/O发送逻辑核处理网卡端口上的Ring环形队列中的数据报文。进一步地,所述步骤b中负载均衡度的计算公式为:Ri(t)表示在时刻t多核处理器的第i个核的利用率,n为多核处理器核的数量。有益效果:本专利技术的基于DPDK的流量动态负载均衡方法采用对称RSS技术与多重Hash计算结合的方式,对称RSS技术在网卡驱动开启RSS功能后相同连接的双向数据报文能够分配到多核处理器的同一个核中,解决了同一个流的对向数据报文在不同核上进行处理的问题;采用多重Hash方法,避免单次Hash可能会出现Hash碰撞的可能,进一步分离不同流的数据包,使更多的核参与到均衡流量得过程中,能到达更好的负载均衡效果。附图说明图1本专利技术的方法流程图;图2本专利技术实现负载均衡的收发包框架图;图3实现本专利技术的算法的硬件结构;图4使用现有RSS方法各核的负载情况;图5使用现有RSS方法各核的平均使用率;图6使用本专利技术的方法后各核的负载情况;图7使用本专利技术的方法后各核的平均使用率。具体实施方式结合图1~图7说明本实施方式,本实施方式的一种基于DPDK的流量动态负载均衡方法流程图如图1所示,具体步骤包括:步骤a、建立两张hash表,用来存储一个连接与CPU不同核之间的映射关系;步骤b、捕获到数据包后,输入数据报文中的五元组信息以及默认的HashKey:staticuint8_trss_intel_key[40]={0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,},分别通过Hash1()以及Hash2()计算得到Hash结果,根据两次Hash计算得到的Hash结果进行Hash表1以及Hash表2查找,判断两次Hash计算结果与处理核心id是否存在映射关系,如果是,就将数据包分配到对应的处理核心中,数据包分配的具体步骤为:本专利技术的实现负载均衡的收发包框架图如图2所示,每个I/O接收逻辑核和工作逻辑核对之间通过专用的“生本文档来自技高网
...
一种基于DPDK的流量动态负载均衡方法

【技术保护点】
一种基于DPDK的流量动态负载均衡方法,其特征在于,具体步骤包括:步骤a、建立Hash表1和Hash表2,用来分别存储一个连接与CPU不同处理核心id之间的映射关系;步骤b、在捕获到数据包后,输入数据报文中的五元组信息以及默认的Hash Key,分别通过Hash1()以及Hash2()计算得到Hash结果,根据两次Hash计算得到的Hash结果进行Hash表1以及Hash表2查找,判断两次Hash结果与处理核心id是否存在映射关系,如果:是,将数据包分配到对应的处理核心中;否,说明数据包属于一条新连接,则对当前CPU的整体负载均衡度进行计算;步骤c、判断当前CPU的整体负载均衡度是否超出阈值,如果:否,说明目前系统负载均衡,根据Hash1()的Hash结果在Hash表1中建立映射关系,将数据包分配到对应的处理核心中,是,说明目前系统负载不均衡,剔除过载严重的处理核心;步骤d、动态更新Hash2()的所有Hash结果与处理核心id的映射关系,数据包根据Hash2()的Hash结果在Hash表2中建立映射关系,并将数据包分配到对应的处理核心中。

【技术特征摘要】
1.一种基于DPDK的流量动态负载均衡方法,其特征在于,具体步骤包括:步骤a、建立Hash表1和Hash表2,用来分别存储一个连接与CPU不同处理核心id之间的映射关系;步骤b、在捕获到数据包后,输入数据报文中的五元组信息以及默认的HashKey,分别通过Hash1()以及Hash2()计算得到Hash结果,根据两次Hash计算得到的Hash结果进行Hash表1以及Hash表2查找,判断两次Hash结果与处理核心id是否存在映射关系,如果:是,将数据包分配到对应的处理核心中;否,说明数据包属于一条新连接,则对当前CPU的整体负载均衡度进行计算;步骤c、判断当前CPU的整体负载均衡度是否超出阈值,如果:否,说明目前系统负载均衡,根据Hash1()的Hash结果在Hash表1中建立映射关系,将数据包分配到对应的处理核心中,是,说明目前系统负载不均衡,剔除过载严重的处理核心;步骤d、动态更新Hash2()的所有Hash结果与处理核心id的映射关系,数据包根据Hash2()的Hash结果在Hash表2中建立映射关系,并将数据包分配到对应的处理核心中。2.根据权利要求1所述的一种基于DPDK的流量动态负载均衡方法,其特征在于,在步骤b中输入的HashKey值如下:staticuint8_trss_intel_key[40]={0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,0x5A,0x6D,...

【专利技术属性】
技术研发人员:李城龙朱佳伟刘培朋余翔湛李凯叶麟刘立坤张宏莉史建焘于海宁胡阳赵卫晨路遥
申请(专利权)人:哈尔滨工业大学国家计算机网络与信息安全管理中心
类型:发明
国别省市:黑龙江,23

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

1