一种基于FPGA的负载均衡处理系统技术方案

技术编号:28045884 阅读:82 留言:0更新日期:2021-04-09 23:30
本发明专利技术的公开了一种基于FPGA的负载均衡系统,该系统包括:FPGA加速卡和服务器,FPGA加速卡包括:解析处理模块、负载均衡模块、FIFO缓存模块、DDR缓存和DMA模块;服务器上设置DPDK驱动模块;解析处理模块用于对数据链路层进行解析;负载均衡模块用于提取数据包的五元组信息,根据负载均衡算法对数据包进行计算,确定该数据包所属的队列;将每个数据包和每个数据包的负载均衡结果分别发送至FIFO缓存模块;FIFO缓存模块用于将数据包负载均衡结果插入到数据包以太网前导码之后,并对合并后的数据包进行缓存;DDR模块用于缓存FIFO缓存模块通过AXI总线传输的数据,通过DMA方式传输到服务器;DPDK驱动模块用于根据每个数据包所携带的负载均衡结果,将该数据包拷贝到相应队列中。

【技术实现步骤摘要】
一种基于FPGA的负载均衡处理系统
本专利技术涉及网络通信
,特别涉及一种基于FPGA的负载均衡处理系统。
技术介绍
网络通信的迅速发展使得网络流量和网络速率不断提升,对网络数据进行高速的采集和处理已经成为学术界和工业界的重点。CPU单核对高速网络数据处理包处理能力有限,需要前置网络在前端分流。例如全流量留存系统采集网络中的数据包,之后对数据包进行解析。全流量留存系统需要使用负载均衡将数据包分配到不同核心上面,同时需要将相同业务的数据包尽量分配到同一个核心上,以减少不同处理器核心切换带来的开销。全流量留存系统使用传统网卡提供的RSS算法来实现负载均衡,但此算法对数据包进行负载均衡后,相同业务的数据包往往不能分配到同一个核心上,而网卡使用的RSS算法又无法对其修改;全流量留存系统也可以使用软件的方法实现负载均衡,以实现将相同业务分配到同一核心的需求,但软件实现负载均衡性能不理想,不能达到线速的要求,延迟较高,无法满足数据包实时处理的需求。FPGA经过快速发展,已经成为数据包处理的主流平台之一。使用FPGA进行数据包处理具有高吞吐率和低延时的优点,因而被应用于网络数据处理的各个领域。在高速网络数据处理的过程中,首先使用FPGA对网络数据包进行处理,再将处理后的数据传输至上位机。在负载均衡方面,首先利用FPGA对数据包进行负载均衡,将负载均衡的结果和数据包通过DMA一同发送至上位机,上位机通过驱动程序进行接收分配和处理。利用DPDK驱动程序可以高效地实现对数据包的这些操作。DPDK是一组快速处理数据包的开发平台及接口,它通过轮询的方式处理数据包。它向应用层提供了简单易行且高效的数据包处理方式,使得网络开发更加方便,可以说DPDK正成为网络数据处理的一种标准。通过DPDK驱动可以将FPGA采集的数据包放入到mbuf中,同时可以将此数据包的负载均衡的结果放入mbuf->RSS字段,以方便在后续处理中将数据包分配到不同的处理器核心上。
技术实现思路
本专利技术针对全流量留存系统负载均衡的需求,提出了一种低复杂度的负载均衡系统,通过对现有的负载均衡方案的改进和完善,能够实现零丢包的负载均衡,同时引入的延迟低,对全流量留存系统所做的软件修改小。为实现上述目的,本专利技术提出了一种基于FPGA的负载均衡系统,用于采集和处理高速网络数据包;该系统包括:FPGA加速卡和服务器,两者通过PCIe接口通信;其中,FPGA加速卡包括:解析处理模块、负载均衡模块、FIFO缓存模块、DDR缓存和DMA模块;服务器上设置DPDK驱动模块;所述解析处理模块,用于对数据链路层进行解析,将解析得到的数据包发送到负载均衡模块;所述负载均衡模块,用于提取数据包的五元组信息,根据负载均衡算法对数据包进行计算,确定该数据包所属的队列;将每个数据包和每个数据包的负载均衡结果分别发送至FIFO缓存模块;所述FIFO缓存模块,用于将数据包负载均衡结果插入到数据包以太网前导码之后,并对合并后的数据包进行缓存;所述DDR模块,用于缓存FIFO缓存模块通过AXI总线传输的数据;所述DMA模块,用于将DDR的缓存数据通过DMA方式传输到服务器;所述DPDK驱动模块,用于根据每个数据包所携带的负载均衡结果,将该数据包拷贝到相应队列中。作为上述系统的一种改进,所述负载均衡模块的具体实现过程为:提取数据包的五元组信息:源IP地址,目的IP地址,源端口,目的端口和协议号;计算五元组CRC32的校验值,将源IP地址作为CRC32输入计算校验值,将此校验值作为初始向量,同时把源端口作为输入计算第一校验值;将目的IP地址作为CRC32输入计算校验值,将此校验值作为初始向量,同时把目的端口作为输入计算第二校验值;将协议号作为CRC32输入计算第三校验值;对三个校验值进行异或运算,对要分配的核数取模获取该数据包的负载均衡结果;将该数据包和该数据包的负载均衡结果分别发送至FIFO缓存模块。作为上述系统的一种改进,所述FIFO缓存模块包括:METAFIFO、DATAFIFO和FIFO;METAFIFO,用于缓存数据包的负载均衡结果;DATAFIFO,用于缓存数据包;FIFO,用于将数据包的负载均衡结果插入到数据包以太网前导码之后,将数据包的数据放在负载均衡结果之后,将合并后的数据包通过AXI总线传输到DDR模块。作为上述系统的一种改进,所述FIFO缓存模块对一个数据包的具体处理过程为:当METAFIFO不为空时,将以太网前导码放入到FIFO中,然后读取METAFIFO中的负载均衡结果,将一个数据包的负载均衡结果放入到FIFO;然后读取DATAFIFO中的该数据包的数据放入到FIFO中。作为上述系统的一种改进,所述DPDK驱动模块的具体实现过程为:从服务器内存中读取数据包;当识别到以太网数据帧前导码则认为收取到新数据包;首先将位于前导码后面的负载均衡结果字段放入到mbuf->RSS字段,然后将位于负载均衡结果后面的数据包负载部分放入mbuf->data字段;上层应用收取数据包后,根据mbuf->RSS字段将mbuf分配到不同的队列上。与现有技术相比,本专利技术具有的优势为:1、相比于传统网卡使用的RSS负载均衡算法,本专利技术的系统使用数据包的五元组信息来进行负载均衡,相同业务的数据包会被分配到同一个处理器核心上,关联性强同时具有较好的均衡效果;2、本专利技术的系统具有低复杂度、低延时、高吞吐率和资源占用率少优点;3、本专利技术的负载均衡方法适用于数据中心高速网络数据包处理、网络虚拟化NFV、SDN、全流量留存等相关领域。附图说明图1是本专利技术的基于FPGA的负载均衡处理系统总体框架图;图2是本专利技术的负载均衡算法流程图;图3是本专利技术的数据包合成的示意图。具体实施方式下面通过附图对本专利技术的技术方案做进一步详细描述。高速网络数据包处理需要使用负载均衡方法将数据包分配到不同的处理器核心上进行解析,同时要求相同业务的数据包能够分配到同一个核心上。使用传统网卡提供的负载均衡算法及软件方法难以实现这些需求。现有使用FPGA对以太网数据应用负载均衡算法,根据负载均衡算法的结果,将具有相同结果的数据包(即之后要分配到同一路的数据包)放入到同一个FPGA的硬件FIFO中。如果需要将数据包分配到N路,则在FPGA中必须对应建立N个硬件FIFO来缓存数据包。而本专利技术将负载均衡的结果插入到以太网前导码后,由于每个数据包前导码后带有负载均衡结果标签,只需要将负载均衡后的数据包放入1个FPGA的硬件FIFO中,不需要使用多个FPGA硬件FIFO分别缓存具有不同负载均衡结果的数据包。因此,本专利技术的系统使用的FPGA硬件资源要少,实现的FPGA负载均衡方法复杂度低。如图1所示,本专利技术提出了一种基于FPGA的负载均衡处理系统本文档来自技高网
...

【技术保护点】
1.一种基于FPGA的负载均衡系统,用于采集和处理高速网络数据包;其特征在于,该系统包括:FPGA加速卡和服务器,两者通过PCIe接口通信;其中,FPGA加速卡包括:解析处理模块、负载均衡模块、FIFO缓存模块、DDR缓存和DMA模块;服务器上设置DPDK驱动模块;/n所述解析处理模块,用于对数据链路层进行解析,将解析得到的数据包发送到负载均衡模块;/n所述负载均衡模块,用于提取数据包的五元组信息,根据负载均衡算法对数据包进行计算,确定该数据包所属的队列;将每个数据包和每个数据包的负载均衡结果分别发送至FIFO缓存模块;/n所述FIFO缓存模块,用于将数据包负载均衡结果插入到数据包以太网前导码之后,并对合并后的数据包进行缓存;/n所述DDR模块,用于缓存FIFO缓存模块通过AXI总线传输的数据;/n所述DMA模块,用于将DDR的缓存数据通过DMA方式传输到服务器;/n所述DPDK驱动模块,用于根据每个数据包所携带的负载均衡结果,将该数据包拷贝到相应队列中。/n

【技术特征摘要】
1.一种基于FPGA的负载均衡系统,用于采集和处理高速网络数据包;其特征在于,该系统包括:FPGA加速卡和服务器,两者通过PCIe接口通信;其中,FPGA加速卡包括:解析处理模块、负载均衡模块、FIFO缓存模块、DDR缓存和DMA模块;服务器上设置DPDK驱动模块;
所述解析处理模块,用于对数据链路层进行解析,将解析得到的数据包发送到负载均衡模块;
所述负载均衡模块,用于提取数据包的五元组信息,根据负载均衡算法对数据包进行计算,确定该数据包所属的队列;将每个数据包和每个数据包的负载均衡结果分别发送至FIFO缓存模块;
所述FIFO缓存模块,用于将数据包负载均衡结果插入到数据包以太网前导码之后,并对合并后的数据包进行缓存;
所述DDR模块,用于缓存FIFO缓存模块通过AXI总线传输的数据;
所述DMA模块,用于将DDR的缓存数据通过DMA方式传输到服务器;
所述DPDK驱动模块,用于根据每个数据包所携带的负载均衡结果,将该数据包拷贝到相应队列中。


2.根据权利要求1所述的基于FPGA的负载均衡系统,其特征在于,所述负载均衡模块的具体实现过程为:
提取数据包的五元组信息:源IP地址,目的IP地址,源端口,目的端口和协议号;
计算五元组CRC32的校验值,将源IP地址作为CRC32输入计算校验值,将此校验值作为初始向量,同时把源端口作为输入计算第一校验值;
将目的IP地址作为CRC32输入计算校验值,将此校验值作为初始向量,同时把目的端口作为输入计算第二校验值;
将协议号作为CRC32输入计...

【专利技术属性】
技术研发人员:宋曼谷沙猛郭志川王可
申请(专利权)人:中国科学院声学研究所中科海网苏州网络科技有限公司
类型:发明
国别省市:北京;11

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

1