基于FPGA的多算法核数据包保序方法及装置与流程

文档序号:31217474发布日期:2022-08-20 04:49阅读:84来源:国知局
基于FPGA的多算法核数据包保序方法及装置与流程
基于fpga的多算法核数据包保序方法及装置
技术领域
1.本发明涉及计算机网络安全技术领域,具体涉及一种基于fpga的多算法核数据包保序方法及装置。


背景技术:

2.当前,fpga实现ipsec(ip安全)功能已经在业内普遍应用,其中由于对称算法计算时间长短和数据包的长度有线性关系,出现了短报文后入先出的问题,从而导致数据流乱序的情况,影响最终的应用效果。
3.现阶段,fpga实现保序功能的主要方法为:当接收到报文以后,使用递增的计数器给每一个报文添加一个标签,作为序列号;报文处理过程中,序列号标签随报文流转;在处理完成准备往外发出的时候,按照标签中序列号的顺序逐个发送;当遇到序列号标签不连续时,将报文缓存下来,等待连续序列号的报文发出后,再发送缓存区的报文。
4.由于保序过程建立在发送接口处,需要大量的内存将乱序的报文缓存下来。另外,加之中间处理的异常情况,可能出现丢包问题,就需要保序过程有老化功能,如果在一定时间内对应序列号的报文没有到来,跳过发送下一个序号的报文,这样就增加了整个设计的复杂度,影响总体性能的稳定性。由于保序功能的存在,需要等待对应序列号标签的报文先发出,导致等待期间出现了发送接口出现空闲的情况,从而一定程度上损失了带宽。


技术实现要素:

5.为此,本发明提供一种基于fpga的多算法核数据包保序方法及装置,以解决传统技术存在的稳定性差,损失带宽的问题。
6.为了实现上述目的,本发明提供如下技术方案:基于fpga的多算法核数据包保序方法,包括:
7.对算法核进行编号,关闭算法核的接收使能信号,禁止算法核接收上级数据;
8.通过控制fifo的full标识信号判断控制fifo的剩余空间,若控制fifo存在剩余空间,逐个判断每个算法核的flag标识信号,对flag标识为空闲的算法核进行选通,开启选通算法核的接收使能,允许接收上级数据;
9.判断选通算法核是否接收完整数据包,若选通算法核接收完整数据包,关闭算法核的接收使能,将接收完整数据包的算法核序列号写入控制fifo,将算法核的运算结果写入到数据fifo;
10.当控制fifo非空状态下,从控制fifo中读取算法核的序列号,然后根据读取的序列号从对应的数据fifo中依次读取数据报文。
11.作为基于fpga的多算法核数据包保序方法优选方案,full标识信号的状态包括高位状态和低位状态,当控制fifo已满不存在剩余空间时,full标识信号处于高位状态;当控制fifo存在剩余空间时,full标识信号处于低位状态;
12.当控制fifo的full标识信号处于高位状态时,等待直到控制fifo的full标识信号
处于低位状态。
13.作为基于fpga的多算法核数据包保序方法优选方案,当算法核被占用时,将被占用算法的flag标识配置为busy状态。
14.作为基于fpga的多算法核数据包保序方法优选方案,通过flag标识判断数据fifo中是否包含完整的数据包,如果数据fifo中的数据包不完整,等待直到检测到数据fifo中包含完整的数据包。
15.作为基于fpga的多算法核数据包保序方法优选方案,将从数据fifo中读取的数据报文发送到后级使用,完成数据包的转发。
16.本发明还提供一种基于fpga的多算法核数据包保序装置,包括:
17.算法核编号模块,用于对算法核进行编号;
18.算法核关闭模块,用于关闭算法核的接收使能信号,禁止算法核接收上级数据;
19.剩余空间判断模块,用于通过控制fifo的full标识信号判断控制fifo的剩余空间;
20.算法核状态判断模块,用于若控制fifo存在剩余空间,逐个判断每个算法核的flag标识信号;
21.算法核选通模块,用于对flag标识为空闲的算法核进行选通,开启选通算法核的接收使能,允许接收上级数据;
22.数据包完整性判断模块,用于判断选通算法核是否接收完整数据包;若选通算法核接收完整数据包,关闭算法核的接收使能;
23.序列号写入模块,用于将接收完整数据包的算法核序列号写入控制fifo;
24.结果写入模块,用于将算法核的运算结果写入到数据fifo;
25.序列号读取模块,用于当控制fifo非空状态下,从控制fifo中读取算法核的序列号;
26.报文读取模块,用于根据读取的序列号从对应的数据fifo中依次读取数据报文。
27.作为基于fpga的多算法核数据包保序装置优选方案,所述剩余空间判断模块中,full标识信号的状态包括高位状态和低位状态,当控制fifo已满不存在剩余空间时,full标识信号处于高位状态;当控制fifo存在剩余空间时,full标识信号处于低位状态;
28.还包括第一等待模块,用于当控制fifo的full标识信号处于高位状态时,等待直到控制fifo的full标识信号处于低位状态。
29.作为基于fpga的多算法核数据包保序装置优选方案,所述算法核状态判断模块中,当算法核被占用时,将被占用算法的flag标识配置为busy状态。
30.作为基于fpga的多算法核数据包保序装置优选方案,所述数据包完整性判断模块通过flag标识判断数据fifo中是否包含完整的数据包;
31.还包括第二等待模块,用于如果数据fifo中的数据包不完整,等待直到检测到数据fifo中包含完整的数据包。
32.作为基于fpga的多算法核数据包保序装置优选方案,所述报文读取模块将从数据fifo中读取的数据报文发送到后级使用,完成数据包的转发。
33.本发明具有如下优点:对算法核进行编号,关闭算法核的接收使能信号,禁止算法核接收上级数据;通过控制fifo的full标识信号判断控制fifo的剩余空间,若控制fifo存
在剩余空间,逐个判断每个算法核的flag标识信号,对flag标识为空闲的算法核进行选通,开启选通算法核的接收使能,允许接收上级数据;判断选通算法核是否接收完整数据包,若选通算法核接收完整数据包,关闭算法核的接收使能,将接收完整数据包的算法核序列号写入控制fifo,将算法核的运算结果写入到数据fifo;从控制fifo中读取算法核的序列号,然后根据读取的序列号从对应的数据fifo中依次读取数据报文。本发明缩短保序的反应弧,降低对缓存和带宽的影响;通过将多核算法核调度和保序作为一个整体,保证性能不产生任何损耗,从而保证最后的带宽不受保序功能的影响。
附图说明
34.为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引申获得其他的实施附图。
35.本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容能涵盖的范围内。
36.图1为本发明实施例1提供的基于fpga的多算法核数据包保序方法中数据调度流程示意图;
37.图2为本发明实施例1提供的基于fpga的多算法核数据包保序方法中数据汇聚流程示意图;
38.图3为本发明实施例1提供的基于fpga的多算法核数据包保序方法应用的fpga架构示意图;
39.图4为本发明实施例2提供的基于fpga的多算法核数据包保序装置示意图。
具体实施方式
40.以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
41.需要强调的是,本技术方案中涉及的英文缩写或英文单纯含义为本领域常用的表达方式,如fpga、fifo、full、busy等,其含义和本领域在描述相关词语时的含义相同,不具有其它特殊的含义。
42.实施例1
43.本发明实施例1提供一种基于fpga的多算法核数据包保序方法,整体采用先入先出思想,主要结合数据调度和汇聚两个处理流程,具体实施步骤如下。
44.参见图1,调度处理流程包括以下步骤:
45.s001:上电后完成复位,初始化内部逻辑状态,对多算法核进行编号,下一步转到s002;
46.s002:关闭算法核接收使能信号,禁止算法核接收上级数据,转到s003;
47.s003:通过控制fifo的full标识信号,full信号为高表示控制fifo已满,full信号为低表示控制fifo还有空间,如果full信号为高则等待,直到full信号为低,转到s004;
48.s004:逐个判断每个算法核的flag标识信号,如果flag标识为繁忙busy状态,说明算法核已经被占用,选择一个flag标识为空闲的算法核,下一步转s005;
49.s005:选通空闲的算法核,下一步转s006;
50.s006:开启选通算法核的接收使能,允许接收数据,下一步转s007;
51.s007:等待接收一个完整的数据包,接收完一个完整的数据包,转到下一步s008;
52.s008:关闭选通算法核的接收使能,禁止接收前级数据,下一步转s009;
53.s009:将选择的算法核序列号写入到控制fifo中,下一步转s003。
54.参见图2,汇聚处理流程包括以下步骤:
55.s101:上电后完成复位,初始化内部逻辑状态,下一步转到s102;
56.s102:判断控制fifo是否为空状态,为空时,等待控制fifo非空,下一步转到s103;
57.s103:从控制fifo读出一个序列号,下一步转到s104;
58.s104:选通序列号对应的数据fifo,下一步转到s105;
59.s105:根据flag标识,判断数据fifo中是否包含一个完整的数据包,如果fifo中没有完整的数据包则等待,待检测到数据fifo包含完整的数据包,转s106;
60.s106:从数据fifo中读出数据包,发送到后级,完成一个完整数据包的转发,下一步转s102。
61.参见图3,本实施例技术方案的一个应用场景fpga框架如下:
62.调度单元(a001):接收上级待运算报文,根据a002的flag标识状态选择空闲的算法核a002,将待运算报文分配到空闲的算法核a002,并将对应的序列号写入到a004。
63.算法核(a002):负责密码运算功能,将运算结果写入到a005,同时通过算法核的flag标识将工作状态及时反馈给a001。
64.汇聚单元(a003):负责多通道数据的汇聚工作,根据a004中的序列号,依次从对应的a005中读取数据报文。
65.控制fifo(a004):保存下来调度单元使用a002的序列号。
66.数据fifo(a005):保存对应a002运算的结果数据,可以同时保存多个报文的数据。
67.本实施例中,整体结合调度单元和汇聚单元实现高效保序的方法,数据流从调度单元到算法核,再到数据fifo,最后进行汇聚;控制流从汇聚单元到控制fifo,再到调度单元。调度单元根据算法核的工作状态选择空闲的算法核分配算法任务,同时将选择的算法核序列号写入到控制fifo中;控制fifo保存下来调度单元使用算法核的序列号,对应到数据包的顺序号。
68.当算法核实现密码运算,运算结束以后,将运算结果写入到后级的数据fifo中,同时向调度单元反馈已经再次出现空闲状态,可以继续接收运算任务;数据fifo中缓存运算结束的数据包,可以同时保存多个数据包;汇聚单元首先从控制fifo中读取算法核的序列号,然后根据该序列号从对应的数据fifo中依次读取数据报文,控制fifo中保存的序列号和数据fifo中数据报文具有一一对应的关系。通过调度单元、控制fifo、算法核、数据fifo和汇聚单元的配合,在使用较小缓存区域的情况下,即可实现保序的功能,同时对整个数据
流的数据带宽不产生衰减。
69.实践中,网络报文的大小,最大1500字节,最小64字节,对称算法使用时间的长短和报文长度成线性关系。最坏的乱序情况下,可以乱24个报文(64字节报文),每一个算法核后配合一个2048字节深度的数据fifo,足够缓存每一个算法核的运算结果。结合算法核的性能,4个算法核能够支持千兆线速的需求,总共需要8k字节的缓存空间即可以完成保序功能,总体上减少了缓存开销。另外,由于存在多个数据fifo,每一个算法核对应一个数据fifo,这样不同的算法核可以同时计算,从而保证整体上不损耗任何带宽。
70.综上所述,本发明通过对算法核进行编号,关闭算法核的接收使能信号,禁止算法核接收上级数据;通过控制fifo的full标识信号判断控制fifo的剩余空间,若控制fifo存在剩余空间,逐个判断每个算法核的flag标识信号,对flag标识为空闲的算法核进行选通,开启选通算法核的接收使能,允许接收上级数据;判断选通算法核是否接收完整数据包,若选通算法核接收完整数据包,关闭算法核的接收使能,将接收完整数据包的算法核序列号写入控制fifo,将算法核的运算结果写入到数据fifo;当控制fifo非空状态下,从控制fifo中读取算法核的序列号,然后根据读取的序列号从对应的数据fifo中依次读取数据报文。full标识信号的状态包括高位状态和低位状态,当控制fifo已满不存在剩余空间时,full标识信号处于高位状态;当控制fifo存在剩余空间时,full标识信号处于低位状态;当控制fifo的full标识信号处于高位状态时,等待直到控制fifo的full标识信号处于低位状态。当算法核被占用时,将被占用算法的flag标识配置为busy状态。通过flag标识判断数据fifo中是否包含完整的数据包,如果数据fifo中的数据包不完整,等待直到检测到数据fifo中包含完整的数据包。将从数据fifo中读取的数据报文发送到后级使用,完成数据包的转发。本发明缩短保序的反应弧,降低对缓存和带宽的影响;通过将多核算法核调度和保序作为一个整体,保证性能不产生任何损耗,从而保证最后的带宽不受保序功能的影响。
71.需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
72.需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
73.实施例2
74.参见图4,本发明实施例2提供一种基于fpga的多算法核数据包保序装置,包括:
75.算法核编号模块1,用于对算法核进行编号;
76.算法核关闭模块2,用于关闭算法核的接收使能信号,禁止算法核接收上级数据;
77.剩余空间判断模块3,用于通过控制fifo的full标识信号判断控制fifo的剩余空间;
78.算法核状态判断模块4,用于若控制fifo存在剩余空间,逐个判断每个算法核的flag标识信号;
79.算法核选通模块5,用于对flag标识为空闲的算法核进行选通,开启选通算法核的接收使能,允许接收上级数据;
80.数据包完整性判断模块6,用于判断选通算法核是否接收完整数据包;若选通算法核接收完整数据包,关闭算法核的接收使能;
81.序列号写入模块7,用于将接收完整数据包的算法核序列号写入控制fifo;
82.结果写入模块8,用于将算法核的运算结果写入到数据fifo;
83.序列号读取模块9,用于当控制fifo非空状态下,从控制fifo中读取算法核的序列号;
84.报文读取模块10,用于根据读取的序列号从对应的数据fifo中依次读取数据报文。
85.本实施例中,所述剩余空间判断模块3中,full标识信号的状态包括高位状态和低位状态,当控制fifo已满不存在剩余空间时,full标识信号处于高位状态;当控制fifo存在剩余空间时,full标识信号处于低位状态;
86.还包括第一等待模块11,用于当控制fifo的full标识信号处于高位状态时,等待直到控制fifo的full标识信号处于低位状态。
87.本实施例中,所述算法核状态判断模块4中,当算法核被占用时,将被占用算法的flag标识配置为busy状态。
88.本实施例中,所述数据包完整性判断模块6通过flag标识判断数据fifo中是否包含完整的数据包;
89.还包括第二等待模块12,用于如果数据fifo中的数据包不完整,等待直到检测到数据fifo中包含完整的数据包。
90.本实施例中,所述报文读取模块10将从数据fifo中读取的数据报文发送到后级使用,完成数据包的转发。
91.需要说明的是,上述装置各模块之间的信息交互、执行过程等内容,由于与本技术实施例1中的方法实施例基于同一构思,其带来的技术效果与本技术方法实施例相同,具体内容可参见本技术前述所示的方法实施例中的叙述,此处不再赘述。
92.实施例3
93.本发明实施例3提供一种非暂态计算机可读存储介质,所述计算机可读存储介质中存储有基于fpga的多算法核数据包保序方法的程序代码,所述程序代码包括用于执行实施例1或其任意可能实现方式的基于fpga的多算法核数据包保序方法的指令。
94.计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solid state disk、ssd))等。
95.实施例4
96.本发明实施例4提供一种电子设备,包括:存储器和处理器;
97.所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行实施例1或其任意可能实现方式的基基于fpga的多算法核数据包保序方法。
98.具体的,处理器可以通过硬件来实现也可以通过软件来实现,当通过硬件实现时,该处理器可以是逻辑电路、集成电路等;当通过软件来实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器可以集成在处理器中,可以位于所述处理器之外,独立存在。
99.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。
100.显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
101.虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1