本发明涉及硬件加速,特别涉及一种报文分配方法、装置、设备及存储介质。
背景技术:
1、fpga(field programmable gate array,现场可编程门阵列),广泛应用于通信系统中,许多功能模块通常都需要大量的滤波运算,而这些滤波函数往往需要大量的乘和累加操作。而通过fpga来实现分布式的算术结构,就可以有效地实现这些乘和累加操作。
2、现有技术中,在高并发场景下,服务器的网络端口往往需要承受很大的压力,传统的微服务架构尝试从软件层面解决问题,引入了软件层面的网关用于分发流量,但这加剧了硬件设备的压力,同时无法解决网卡内存被堆满的情况。
技术实现思路
1、有鉴于此,本发明的目的在于提供一种报文分配方法、装置、设备及存储介质,可以通过fpga直接将接收到的数据帧报文发送至服务器,避免通过中间网卡分发报文,减轻高并发场景下的网络负担,提高处理效率。其具体方案如下:
2、第一方面,本申请公开了一种报文分配方法,应用于fpga,包括:
3、轮询每个服务器的网卡剩余内存,并判断是否接收到网络数据帧;
4、若接收到所述网络数据帧,则基于所述网络数据帧的ip地址为所述网络数据帧分配具有相应服务器编号的第一目标服务器;
5、判断所述第一目标服务器的网卡剩余内存是否小于所述网络数据帧的内存占用;
6、若否,则将所述网络数据帧发送至所述第一目标服务器,若是,则将所述网络数据帧存储至本地内存队列,并在轮询到所述第一目标服务器的网卡剩余内存大于所述网络数据帧的内存占用时,将所述本地内存队列中的所述网络数据帧发送至所述第一目标服务器。
7、可选的,所述轮询每个服务器的网卡剩余内存,并判断是否接收到网络数据帧,包括:
8、在fpga芯片启动后,轮询每个服务器的网卡内存占用;
9、利用预设记录列表记录基于所述网卡内存占用确定的每个服务器当前的网卡剩余内存,并判断是否接收到网络数据帧。
10、可选的,所述基于所述网络数据帧的ip地址为所述网络数据帧分配具有相应服务器编号的第一目标服务器之前,还可以包括:
11、判断当前所述本地内存队列中是否存在未完成分配的网络数据帧;
12、若存在,则确定与所述未完成分配的网络数据帧对应的第二目标服务器,并判断当前所述第二目标服务器的网卡剩余内存是否小于所述未完成分配的网络数据帧的内存占用;
13、若不小于,则将所述未完成分配的网络数据帧发送至所述第二目标服务器。
14、可选的,所述报文分配方法,还可以包括:
15、利用所述预设记录列表记录所述网络数据帧的分配状态。
16、可选的,所述轮询每个服务器的网卡内存占用,并判断是否接收到网络数据帧之前,还可以包括:
17、确定服务器数量,并基于所述服务器数量为每台服务器创建相应的服务器编号。
18、可选的,所述基于所述网络数据帧的ip地址为所述网络数据帧分配具有相应服务器编号的第一目标服务器,包括:
19、确定所述网络数据帧的ip地址,并将所述网络数据帧的ip地址转换为无符号32位整数,以得到与所述网络数据帧对应的目标编码;
20、基于所述目标编码对所述服务器数量对应的数值进行取余数处理,以得到与所述网络数据帧对应的余数;
21、将服务器编号与所述余数相一致的服务器作为第一目标服务器,并为所述网络数据帧分配所述第一目标服务器。
22、可选的,所述报文分配方法,还可以包括:
23、判断所述网络数据帧是否为经过拆包的数据帧;
24、若是,则在获取到与所述网络数据帧对应的同属一个数据包的其他数据帧后,将所述其他数据帧发送至所述第一目标服务器。
25、第二方面,本申请公开了一种报文分配装置,包括:
26、数据帧接收判断模块,用于轮询每个服务器的网卡剩余内存,并判断是否接收到网络数据帧;
27、服务器分配模块,用于如果接收到所述网络数据帧,则基于所述网络数据帧的ip地址为所述网络数据帧分配具有相应服务器编号的第一目标服务器;
28、内存判断模块,用于判断所述第一目标服务器的网卡剩余内存是否小于所述网络数据帧的内存占用;
29、数据帧处理模块,用于如果否,则将所述网络数据帧发送至所述第一目标服务器,若是,则将所述网络数据帧存储至本地内存队列,并在轮询到所述第一目标服务器的网卡剩余内存大于所述网络数据帧的内存占用时,将所述本地内存队列中的所述网络数据帧发送至所述第一目标服务器。
30、第三方面,本申请公开了一种电子设备,包括:
31、存储器,用于保存计算机程序;
32、处理器,用于执行所述计算机程序以实现如前述的报文分配方法。
33、第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现如前述的报文分配方法。
34、本申请中,首先轮询每个服务器的网卡剩余内存,并判断是否接收到网络数据帧;若接收到所述网络数据帧,则基于所述网络数据帧的ip地址为所述网络数据帧分配具有相应服务器编号的第一目标服务器;判断所述第一目标服务器的网卡剩余内存是否小于所述网络数据帧的内存占用;若否,则将所述网络数据帧发送至所述第一目标服务器,若是,则将所述网络数据帧存储至本地内存队列,并在轮询到所述第一目标服务器的网卡剩余内存大于所述网络数据帧的内存占用时,将所述本地内存队列中的所述网络数据帧发送至所述第一目标服务器。由此可见,通过本申请中所述报文分配方法,可以在fpga芯片启动后且接收到网络数据帧后,基于所述网络数据帧的ip地址为所述网络数据帧分配具有相应服务器编号的服务器,并在所述服务器网卡的剩余内存大于所述网络数据帧内存占用时直接将所述网络数据帧发送至所述服务器。这样一来,可以通过fpga直接将接收到的数据帧报文发送至服务器,避免通过中间网卡分发报文,减轻高并发场景下的网络负担,提高处理效率。
1.一种报文分配方法,其特征在于,应用于fpga,包括:
2.根据权利要求1所述的报文分配方法,其特征在于,所述轮询每个服务器的网卡剩余内存,并判断是否接收到网络数据帧,包括:
3.根据权利要求2所述的报文分配方法,其特征在于,所述基于所述网络数据帧的ip地址为所述网络数据帧分配具有相应服务器编号的第一目标服务器之前,还包括:
4.根据权利要求2所述的报文分配方法,其特征在于,还包括:
5.根据权利要求1所述的报文分配方法,其特征在于,所述轮询每个服务器的网卡内存占用,并判断是否接收到网络数据帧之前,还包括:
6.根据权利要求5所述的报文分配方法,其特征在于,所述基于所述网络数据帧的ip地址为所述网络数据帧分配具有相应服务器编号的第一目标服务器,包括:
7.根据权利要求1至6任一项所述的报文分配方法,其特征在于,还包括:
8.一种报文分配装置,其特征在于,应用于fpga,包括:
9.一种电子设备,其特征在于,包括:
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的报文分配方法。