基于FPGA、CPU协同的网络算法调用方法及系统与流程

文档序号:31349749发布日期:2022-08-31 12:29阅读:54来源:国知局
基于FPGA、CPU协同的网络算法调用方法及系统与流程
基于fpga、cpu协同的网络算法调用方法及系统
技术领域
1.本发明涉及计算机网络通信技术领域,具体涉及一种基于fpga、cpu协同的网络算法调用方法及系统。


背景技术:

2.网络算法调用是一个基础网络应用,它的运行包含一个部署于pc上的client和一个部署于服务器上的server以及算法引擎构成。现有服务器密码机多采用高性能网络处理器和高性能算法卡配合使用,其中网络处理器运行server程序,负责和client建立连接关系,完成与client之间的数据交互;高性能算法卡主要作为算法引擎提供算法服务,常规使用pcie的方式为网络处理器提供算法服务。
3.现有技术中,首先需要部署在服务器上的server将数据接收完成,再调用算法引擎的算法服务,最后将运算后的数据传送给client,导致整个流程路径过长,处理时延过长。同时由于需要cpu的参与,cpu的网络处理能力很容易成为制约调用性能的瓶颈。如何缩短调用流程,减少cpu的压力,提高整体的性能是亟待解决的技术问题。


技术实现要素:

4.为此,本发明提供一种基于fpga、cpu协同的网络算法调用方法及系统,以解决传统技术存在较长处理延迟,cpu压力过大,整体性能差的问题。
5.为了实现上述目的,本发明提供如下技术方案:基于fpga、cpu协同的网络算法调用方法,包括:
6.fpga接收网络数据包,fpga对所述网络数据包的类型进行识别:
7.若所述网络数据包为配置管理的数据报文,fpga判断配置管理的数据报文格式是否正确,若配置管理的数据报文格式正确,fpga将配置管理的数据报文转发到cpu;cpu接收fpga转发的所述网络数据包,cpu对所述网络数据包的类型进行识别,若所述网络数据包为配置管理的数据报文,cpu判断配置管理的数据报文格式是否正确,若配置管理的数据报文格式正确,cpu将配置管理的数据报文和本地密码资源合成出算法参数,cpu将合成的算法参数发送到fpga,fpga将算法参数配置到算法中;
8.若所述网络数据包为业务报文,fpga判断配置管理的数据报文格式是否正确,若业务报文的格式正确,从业务报文中获取句柄,若根据句柄检索到上下文信息,fpga从上下文表项空间中提取密钥和上下文信息进行密码运算。
9.作为基于fpga、cpu协同的网络算法调用方法优选方案,fpga从上下文表项空间中提取密钥和上下文信息进行密码运算时,根据业务报文中flag标识,判断业务报文是否为最后一包,如果业务报文为最后一包,将数据包返回,并且由cpu断开业务连接,fpga设置句柄和上下文信息处于失效状态。
10.作为基于fpga、cpu协同的网络算法调用方法优选方案,对fpga中处于失效状态的句柄和上下文信息进行清除。
11.作为基于fpga、cpu协同的网络算法调用方法优选方案,如果业务报文非最后一包,fpga将运算结束后的中间链变量刷新到上下文信息中;然后将数据包返回宿主机。
12.作为基于fpga、cpu协同的网络算法调用方法优选方案,若根据句柄未检索到上下文信息,fpga向cpu发送密钥协商申请报文,cpu收到fpga发送的密钥协商申请报文后开始报文协商,cpu获取业务密钥和参数信息并转发给fpga;
13.fpga创建一个句柄,合成密钥信息和上下文初始化参数;将业务密钥、参数信息作为上下文信息更新到fpga地址空间里;将句柄设置为有效标识,使句柄和上下文信息处于激活状态。
14.本发明还提供一种基于fpga、cpu协同的网络算法调用系统,包括fpga处理单元和cpu处理单元;
15.所述fpga处理单元包括:
16.第一数据接收模块,用于fpga接收网络数据包;
17.第一数据识别模块,用于fpga对所述网络数据包的类型进行识别;
18.第一格式判断模块,用于若所述网络数据包为配置管理的数据报文,fpga判断配置管理的数据报文格式是否正确;
19.第一数据转发模块,用于若配置管理的数据报文格式正确,fpga将配置管理的数据报文转发到cpu处理单元;
20.参数配置模块,用于fpga将算法参数配置到算法中;
21.所述cpu处理单元包括:
22.第二数据接收模块,用于cpu接收fpga转发的所述网络数据包;
23.第二数据识别模块,用于cpu对所述网络数据包的类型进行识别;
24.第二格式判断模块,用于若所述网络数据包为配置管理的数据报文,cpu判断配置管理的数据报文格式是否正确;
25.参数合成模块,用于若配置管理的数据报文格式正确,cpu将配置管理的数据报文和本地密码资源合成出算法参数;
26.第二数据转发模块,用于cpu将合成的算法参数发送到fpga。
27.作为基于fpga、cpu协同的网络算法调用系统优选方案,所述fpga处理单元还包括报文结束判断模块,用于fpga从上下文表项空间中提取密钥和上下文信息进行密码运算时,根据业务报文中flag标识,判断业务报文是否为最后一包;
28.所述cpu处理单元还包括业务断开模块,用于如果业务报文为最后一包,将数据包返回时,且由cpu断开业务连接;
29.所述fpga处理单元还包括失效配置模块,用于fpga设置句柄和上下文信息处于失效状态。
30.作为基于fpga、cpu协同的网络算法调用系统优选方案,所述fpga处理单元还包括失效清除模块,用于对fpga中处于失效状态的句柄和上下文信息进行清除。
31.作为基于fpga、cpu协同的网络算法调用系统优选方案,所述fpga处理单元还包括变量刷新模块,用于如果业务报文非最后一包,fpga将运算结束后的中间链变量刷新到上下文信息中;然后将数据包返回宿主机。
32.作为基于fpga、cpu协同的网络算法调用系统优选方案,所述fpga处理单元还包括
协商申请模块,用于若根据句柄未检索到上下文信息,fpga向cpu发送密钥协商申请报文;
33.所述cpu处理单元还包括报文协商模块,用于cpu收到fpga发送的密钥协商申请报文后开始报文协商;
34.所述cpu处理单元还包括参数获取转发模块,用于cpu获取业务密钥和参数信息并转发给fpga;
35.所述fpga处理单元还包括句柄创建模块,用于fpga创建一个句柄,合成密钥信息和上下文初始化参数;
36.所述fpga处理单元还包括上下文更新模块,用于将业务密钥、参数信息作为上下文信息更新到fpga地址空间里;
37.所述fpga处理单元还包括激活配置模块,用于将句柄设置为有效标识,使句柄和上下文信息处于激活状态。
38.本发明具有如下优点:通过fpga接收网络数据包,fpga对网络数据包的类型进行识别:若网络数据包为配置管理的数据报文,fpga判断配置管理的数据报文格式是否正确,若配置管理的数据报文格式正确,fpga将配置管理的数据报文转发到cpu;cpu接收fpga转发的网络数据包,cpu对网络数据包的类型进行识别,若网络数据包为配置管理的数据报文,cpu判断配置管理的数据报文格式是否正确,若配置管理的数据报文格式正确,cpu将配置管理的数据报文和本地密码资源合成出算法参数,cpu将合成的算法参数发送到fpga,fpga将算法参数配置到算法中;若网络数据包为业务报文,fpga判断配置管理的数据报文格式是否正确,若业务报文的格式正确,从业务报文中获取句柄,若根据句柄检索到上下文信息,fpga从上下文表项空间中提取密钥和上下文信息进行密码运算。本发明可以由fpga硬件承担网络数据处理过程中大量密码运算和调度的操作,缩短了调用流程,降低对系统cpu时间的占用,可提高了响应速度,有利于降低网络数据发送延迟;业务报文不在系统内存中,不易被其他软件篡改,提高了网络系统的安全性。
附图说明
39.为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引申获得其他的实施附图。
40.本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容能涵盖的范围内。
41.图1为本发明实施例1提供的基于fpga、cpu协同的网络算法调用方法中fpga处理流程示意图;
42.图2为本发明实施例1提供的基于fpga、cpu协同的网络算法调用方法中cpu处理流程示意图;
43.图3为本发明实施例2提供的基于fpga、cpu协同的网络算法调用系统示意图。
具体实施方式
44.以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
45.实施例1
46.参见图1和图2,本发明实施例1提供一种基于fpga、cpu协同的网络算法调用方法,通过fpga和cpu分工合作,采用协同的方式实现算法的调用,实施过程中包括fpga处理流程和cpu处理流程,且fpga处理流程和cpu处理流程之间存在协同关系,具体实施步骤如下。
47.fpga处理流程如下:
48.s001:fpga上电后完成复位,初始化fpga的网络接口,初始化上下文表项空间等,下一步转到s002;
49.s002:通过完成初始化的mac接口接收网络数据包,根据网络数据包的数据报文中的type类型对报文进行分类,如果为配置管理的数据报文,则转到s101处理;如果为业务报文,则转到s201处理;
50.s101:检查数据报文的格式符合要求,进行crc(循环冗余校验)字段检验,判断为正常的配置管理数据报文后,下一步转到s701,若错误则将报文丢弃;
51.s201:检查数据报文的格式符合要求,进行crc字段检验,判断为业务报文,下一步转到s202,若错误则将报文丢弃;
52.s202:从报文中获取句柄,下一步转到s203;
53.s203:根据句柄检索,检索上下文信息,下一步转到s204;未检索到对应的上下文信息,发送密钥协商申请报文,转到s801;
54.s204:从上下文表项空间中提取密钥、上下文信息;
55.s205:使用上下文信息、密钥,对带运算符的数据进行密码运算,转到s206;
56.s206:根据报文中flag标识,判断报文是否为最后一包,如果最后一包,将数据包返回,并且转到s901,如果非最后一包,转到s207;
57.s207:将运算结束后的中间链变量刷新到上下文信息中,转到s208;
58.s208:将数据包返回宿主机;
59.s301:创建一个句柄,合成密钥信息和上下文初始化参数;
60.s302:将密钥、初始化参数等信息作为上下文信息更新到fpga地址空间里;
61.s303:设置句柄有效标识,表明句柄和上下文信息处于激活状态;
62.s401:先将句柄设置无效,使句柄和上下文信息处于失效状态,转到s402;
63.s402:将fpga中上下文信息清除,转到s403;
64.s403:将句柄信息清除;
65.s501:将算法参数配置到算法;
66.s502:配置完毕,初始化完成。
67.cpu处理流程如下:
68.s601:cpu上电后完成复位,初始化运行参数和网络接口、缓存空间等,下一步转到s602;
69.s602:接收fpga转发的网络数据包,根据type类型对报文进行分类:如果为配置管理报文,则转到s701处理;如果为密钥协商申请报文,则转到s801处理;如果业务完成标识报文,则转到s901处理;
70.s701:检查报文数据格式,计算报文crc,错误报文丢弃,正确报文下一步转到s702;
71.s702:和本地密码资源一起合成出算法参数,下一步转到s703;
72.s703:将合成的算法参数,发送到fpga,下一步转到s501;
73.s801:开始报文协商,下一步转到s802;
74.s802:获取业务密钥和参数信息,转到s301;
75.s901:断开业务连接;
76.s902:回收句柄,清除上下文信息,下一步转到s401。
77.综上所述,本发明通过fpga接收网络数据包,fpga对所述网络数据包的类型进行识别:若所述网络数据包为配置管理的数据报文,fpga判断配置管理的数据报文格式是否正确,若配置管理的数据报文格式正确,fpga将配置管理的数据报文转发到cpu;cpu接收fpga转发的所述网络数据包,cpu对所述网络数据包的类型进行识别,若所述网络数据包为配置管理的数据报文,cpu判断配置管理的数据报文格式是否正确,若配置管理的数据报文格式正确,cpu将配置管理的数据报文和本地密码资源合成出算法参数,cpu将合成的算法参数发送到fpga,fpga将算法参数配置到算法中;若所述网络数据包为业务报文,fpga判断配置管理的数据报文格式是否正确,若业务报文的格式正确,从业务报文中获取句柄,若根据句柄检索到上下文信息,fpga从上下文表项空间中提取密钥和上下文信息进行密码运算。fpga从上下文表项空间中提取密钥和上下文信息进行密码运算时,根据业务报文中flag标识,判断业务报文是否为最后一包,如果业务报文为最后一包,将数据包返回,并且由cpu断开业务连接,fpga设置句柄和上下文信息处于失效状态。对fpga中处于失效状态的句柄和上下文信息进行清除。如果业务报文非最后一包,fpga将运算结束后的中间链变量刷新到上下文信息中;然后将数据包返回宿主机。若根据句柄未检索到上下文信息,fpga向cpu发送密钥协商申请报文,cpu收到fpga发送的密钥协商申请报文后开始报文协商,cpu获取业务密钥和参数信息并转发给fpga;fpga创建一个句柄,合成密钥信息和上下文初始化参数;将业务密钥、参数信息作为上下文信息更新到fpga地址空间里;将句柄设置为有效标识,使句柄和上下文信息处于激活状态。本发明由fpga硬件承担网络数据处理过程中大量密码运算和调度的操作,缩短了调用流程,降低对系统cpu时间的占用,可提高了响应速度,有利于降低网络数据发送延迟;业务报文不在系统内存中,不易被其他软件篡改,提高了网络系统的安全性。
78.需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
79.需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定
要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
80.实施例2
81.参见图3,本发明实施例2提供一种基于fpga、cpu协同的网络算法调用系统,包括fpga处理单元1和cpu处理单元2;
82.所述fpga处理单元1包括:
83.第一数据接收模块101,用于fpga接收网络数据包;
84.第一数据识别模块102,用于fpga对所述网络数据包的类型进行识别;
85.第一格式判断模块103,用于若所述网络数据包为配置管理的数据报文,fpga判断配置管理的数据报文格式是否正确;
86.第一数据转发模块104,用于若配置管理的数据报文格式正确,fpga将配置管理的数据报文转发到cpu处理单元;
87.参数配置模块105,用于fpga将算法参数配置到算法中;
88.所述cpu处理单元2包括:
89.第二数据接收模块201,用于cpu接收fpga转发的所述网络数据包;
90.第二数据识别模块202,用于cpu对所述网络数据包的类型进行识别;
91.第二格式判断模块203,用于若所述网络数据包为配置管理的数据报文,cpu判断配置管理的数据报文格式是否正确;
92.参数合成模块204,用于若配置管理的数据报文格式正确,cpu将配置管理的数据报文和本地密码资源合成出算法参数;
93.第二数据转发模块205,用于cpu将合成的算法参数发送到fpga。
94.本实施例中,所述fpga处理单元1还包括报文结束判断模块106,用于fpga从上下文表项空间中提取密钥和上下文信息进行密码运算时,根据业务报文中flag标识,判断业务报文是否为最后一包;
95.所述cpu处理单元2还包括业务断开模块206,用于如果业务报文为最后一包,将数据包返回时,且由cpu断开业务连接;
96.所述fpga处理单元1还包括失效配置模块107,用于fpga设置句柄和上下文信息处于失效状态。
97.本实施例中,所述fpga处理单元1还包括失效清除模块108,用于对fpga中处于失效状态的句柄和上下文信息进行清除。
98.本实施例中,所述fpga处理单元1还包括变量刷新模块109,用于如果业务报文非最后一包,fpga将运算结束后的中间链变量刷新到上下文信息中;然后将数据包返回宿主机。
99.本实施例中,所述fpga处理单元1还包括协商申请模块110,用于若根据句柄未检索到上下文信息,fpga向cpu发送密钥协商申请报文;
100.所述cpu处理单元2还包括报文协商模块207,用于cpu收到fpga发送的密钥协商申请报文后开始报文协商;
101.所述cpu处理单元2还包括参数获取转发模块208,用于cpu获取业务密钥和参数信息并转发给fpga;
102.所述fpga处理单元1还包括句柄创建模块111,用于fpga创建一个句柄,合成密钥信息和上下文初始化参数;
103.所述fpga处理单元1还包括上下文更新模块112,用于将业务密钥、参数信息作为上下文信息更新到fpga地址空间里;
104.所述fpga处理单元1还包括激活配置模块113,用于将句柄设置为有效标识,使句柄和上下文信息处于激活状态。
105.需要说明的是,上述系统各模块/单元之间的信息交互、执行过程等内容,由于与本技术实施例1中的方法实施例基于同一构思,其带来的技术效果与本技术方法实施例相同,具体内容可参见本技术前述所示的方法实施例中的叙述,此处不再赘述。
106.实施例3
107.本发明实施例3提供一种非暂态计算机可读存储介质,所述计算机可读存储介质中存储有基于fpga、cpu协同的网络算法调用方法的程序代码,所述程序代码包括用于执行实施例1或其任意可能实现方式的基于fpga、cpu协同的网络算法调用方法的指令。
108.计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solidstatedisk、ssd))等。
109.实施例4
110.本发明实施例4提供一种电子设备,包括:存储器和处理器;
111.所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行实施例1或其任意可能实现方式的基于fpga、cpu协同的网络算法调用方法。
112.具体的,处理器可以通过硬件来实现也可以通过软件来实现,当通过硬件实现时,该处理器可以是逻辑电路、集成电路等;当通过软件来实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器可以集成在处理器中,可以位于所述处理器之外,独立存在。
113.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。
114.显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示
出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
115.虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1