基于FPGA和CPU协同工作的高速关键字过滤方法技术

技术编号:34772056 阅读:50 留言:0更新日期:2022-08-31 19:35
本发明专利技术公开了一种基于FPGA和CPU协同工作的高速关键字过滤方法,在CPU中,数据发送线程和数据接收线程是两个线程,所述的数据发送线程中包括:关键字设置、关键字下发及缓存、关键字过滤、级联关系判断及结果处理、关键字过滤的结果上报。所述的数据接收线程一直在等待FPGA端是否有上报的关键字过滤结果的数据包;如果有则通过对外接口将过滤的结果发送给数据源端。本发明专利技术采用CPU和FPGA共同实现关键字过滤,针对多会话同时过滤需要维护不同会话的过滤现场,做到不同会话现场快速切换。已达到多会话、多关键字的快速过滤。利用CPU和FPGA协同工作,充分利用其各自特点,是过滤性能达到5.6Gbps。具有多会话,多关键字过滤速度快、过滤精准等优点。滤精准等优点。滤精准等优点。

【技术实现步骤摘要】
基于FPGA和CPU协同工作的高速关键字过滤方法


[0001]本专利技术属于数据信息安全应用领域,采用FPGA和CPU协同工作,涉及一种高速数据流关键字过滤的实现方法。

技术介绍

[0002]目前的关键字过滤多采用高性能的CPU实现,通过软件实现的方法,对数据报文进行查找。采用CPU实现速率慢,不能够满足高速的数据传输性能;内存占用率高,影响设备的整体性能和功耗。现有的查找技术,多局限于当前数据包报文的过滤,很难做到多数据包连接进行关键字过滤,当过滤线程多,CPU的能力明显的不足。
[0003]随着数据通信业务类型越来越多,信息安全问题日益突出。在通信过程中一些敏感信息、词汇可能会夹杂在正文中进行传输,造成安全信息泄露。为了防止此类事情的发生需要对通信过程中的数据报文内容进行过滤,看是否存在关键字。当前的关键字过滤技术主要采用CPU来实现,CPU对通信过程中的关键字进行过滤,但是CPU在处理此类事件的时候速率较慢,严重影响了数据通信速率。

技术实现思路

[0004]针对上述现有技术,本专利技术提出了一种高速数据流关键字过滤实现方法,采用CPU和FPGA共同实现关键字过滤,其中,充分发挥FPGA可以用于处理速率较高场合的特点进行关键字过滤,同时采用CPU处理一些事务型管理。
[0005]为了解决上述技术问题,本专利技术提出的一种基于FPGA和CPU协同工作的高速关键字过滤方法,在CPU中,数据发送线程和数据接收线程是两个线程,所述的数据发送线程中包括以下步骤:
[0006]1)关键字设置:每个会话设置1

8组关键字,每组关键字长度为1

32byte,FPGA内部缓存中每个会话关键字配置空间为256byte,每组所述关键字均配置有对应会话号,FPGA内部缓存中最多支持64个会话;接收电脑通过串口配置的关键字,该关键字的长度记为L;判断L的大小,
[0007]如果L<32byte,用KEY_MASK指示关键字有效长度,生成关键字KEY及其关键字掩码KEY_MASK,执行步骤2);
[0008]如果32byte<L≤256byte,将关键字空间进行级联,生成关键字KEY及其关键字掩码KEY_MASK,并以DATA_MASK用于指示关键字之间的级联关系,执行步骤2);
[0009]如果L>256byte,向电脑发回关键字长度超长的提示;
[0010]2)关键字下发:将生成的关键字的会话号、关键字KEY、关键字掩码KEY_MASK和以DATA_MASK表示的关键字级联关系通过PCIE下发至FPGA内部缓存中;
[0011]与此同时,CPU判断当前会话的数据包的文件格式是否为纯文本数据格式,如果是纯文本数据格式,将当前会话的数据包通过PCIE下发至FPGA内部缓存中;如果不是纯文本数据格式,将当前会话的数据包进行缓存,直至当前会话的数据包接收完毕,将非文本数据
格式的文件数据转换为纯文本数据格式的数据通过PCIE下发至FPGA内部缓存中;
[0012]3)关键字过滤:所述FPGA根据数据包中会话号对应的关键字信息对接收到CPU的数据包进行关键字过滤;
[0013]4)判断完成过滤的关键字是否存在级联关系DATA_MASK,如果存在,则进入级联结果处理,如果不存在,则执行步骤5);
[0014]级联结果处理:首先判断关键字1和关键字2是否存在级联关系,如果关键字1和关键字2不存在级联则输出关键字1过滤的结果进入关键字2和关键字3级联判断状态,如果关键字1和关键字2存在级联关系,则直接进入关键字2和关键字3级联判断状态,在关键字2和关键字3级联判断状态判断关键字2和关键字3的级联状态,如果关键字2和关键字3不存在级联关系,则需要输出关键字1和关键字2级联的关系以及过滤结果后进入关键3与关键字4级联判断状态。如果不存在级联关系直接进入关键3与关键字4级联判断状态以此类推,直到判断所有关键字过滤结果与级联的关系,输出级联和过滤结果,并执行步骤5);
[0015]步骤5)将关键字过滤的结果上报给CPU,上报的结果包括过滤命中的结果、会话号、关键字命中的位置,如果完成过滤的关键字存在有级联关系DATA_MASK,则还包括级联的结果;
[0016]所述的数据接收线程一直在等待FPGA端是否有上报的关键字过滤结果的数据包;如果有,则通过对外接口将过滤的结果发送给数据源端。
[0017]进一步讲,本专利技术所述的基于FPGA和CPU协同工作的高速关键字过滤方法,其中:
[0018]步骤2)中,将生成的关键字信息以及会话号,通过PCIE下发至FPGA内部缓存中,当有数据包来临时按照会话号读取关键字信息。用户按照会话号配置关键字过滤信息,关键字信息在FPGA中按照会话号、关键字KEY、关键字掩码KEY_MASK和关键字级联关系DATA_MASK进行存储;当数据包来临时,根据数据包中关键字的会话号在FPGA中取出当前会话的关键字信息进行更新。
[0019]步骤3)的过程如下:
[0020]3‑
1)按照会话号更新关键字:根据数据包中的会话号,在关键字缓存中取出当前会话号的关键字信息;
[0021]3‑
2)判断接收到的数据包的包序号:取出会话号对应的关键字信息后,判断接收到的数据包是否为首包,如果是首包则判断数据包长度,
[0022]如果不是首包则按照数据包的会话号出栈,堆栈中包括已经过滤的位置和未完成过滤的结果;
[0023]3‑
3)进行数据包长度判断,判断数据包长度是否大于32byte,如果≥32byte则执行步骤3

4)进行关键字过滤,如果<32byte则缓存当前数据包,按照当前数据包的大小左移更新缓存空间,执行步骤3

4)进行关键字过滤;
[0024]3‑
4)关键字过滤:根据按照会话号取出的关键字信息在数据包中进行关键字的过滤,首先,将接收到的数据包复制8份,每组关键字一份。将每份按照关键字的最大长度复制为32路,每路的偏移地址为0B,1B,2B,3B,
……
,30B,31B,按照不同的地址偏移进行并行关键字过滤,从而遍历数据包中所有的关键字组合;
[0025]3‑
5)判断过滤是否完成:如果当前数据包过滤完成则进入过滤状态入栈,如果没有完成,则需要等待关键字过滤,直至完成;
[0026]3‑
6)过滤状态入栈:将过滤的会话号、已经过滤的位置、未完成过滤的结果放入堆栈中,等待下一次同一会话的数据包来临再将过滤状态出栈。
[0027]在步骤3

2)中,按照数据包的会话号出栈是:对于未完成的关键字过滤结果,将过滤的会话号、已经过滤的位置、未完成过滤的结果放入堆栈中,等当前会话的下一包数据来后,将入栈的信息出栈,和当前数据一起进行数据的过滤,以解决关键字出现在相邻数据包的情况。
[0028]本专利技术中,所述FPGA本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于FPGA和CPU协同工作的高速关键字过滤方法,在CPU中,数据发送线程和数据接收线程是两个线程,其特征在于,所述的数据发送线程中包括以下步骤:1)关键字设置:每个会话设置1

8组关键字,每组关键字长度为1

32byte,FPGA内部缓存中每个会话关键字配置空间为256byte,每组所述关键字均配置有对应会话号,FPGA内部缓存中最多支持64个会话;接收电脑通过串口配置的关键字,该关键字的长度记为L;判断L的大小,如果L<32byte,用KEY_MASK指示关键字有效长度,生成关键字KEY及其关键字掩码KEY_MASK,执行步骤2);如果32byte<L≤256byte,将关键字空间进行级联,生成关键字KEY及其关键字掩码KEY_MASK,并以DATA_MASK用于指示关键字之间的级联关系,执行步骤2);如果L>256byte,向电脑发回关键字长度超长的提示;2)关键字下发:将生成的关键字的会话号、关键字KEY、关键字掩码KEY_MASK和以DATA_MASK表示的关键字级联关系通过PCIE下发至FPGA内部缓存中;与此同时,CPU判断当前会话的数据包的文件格式是否为纯文本数据格式,如果是纯文本数据格式,将当前会话的数据包通过PCIE下发至FPGA内部缓存中;如果不是纯文本数据格式,将当前会话的数据包进行缓存,直至当前会话的数据包接收完毕,将非文本数据格式的文件数据转换为纯文本数据格式的数据通过PCIE下发至FPGA内部缓存中;3)关键字过滤:所述FPGA根据数据包中会话号对应的关键字信息对接收到CPU的数据包进行关键字过滤;4)判断完成过滤的关键字是否存在级联关系DATA_MASK,如果存在,则进入级联结果处理,如果不存在,则执行步骤5);级联结果处理:首先判断关键字1和关键字2是否存在级联关系,如果关键字1和关键字2不存在级联则输出关键字1过滤的结果进入关键字2和关键字3级联判断状态,如果关键字1和关键字2存在级联关系,则直接进入关键字2和关键字3级联判断状态,在关键字2和关键字3级联判断状态判断关键字2和关键字3的级联状态,如果关键字2和关键字3不存在级联关系,则需要输出关键字1和关键字2级联的关系以及过滤结果后进入关键3与关键字4级联判断状态;如果不存在级联关系直接进入关键3与关键字4级联判断状态以此类推,直到判断所有关键字过滤结果与级联的关系,输出级联和过滤结果,并执行步骤5);步骤5)将关键字过滤的结果上报给CPU,上报的结果包括过滤命中的结果、会话号、关键字命中的位置,如果完成过滤的关键字存在有级联关系DATA_MASK,则还包括级联的结果;所述的数据接收线程一直在等待FPGA端是否有上报的关键字过滤结果的数据包;如果有,则通过对外接口将过滤的结果发送给数据源端。2.根据权利要求2所述的基于FPGA和C...

【专利技术属性】
技术研发人员:毕顺利吴淑艳
申请(专利权)人:天津光电聚能专用通信设备有限公司
类型:发明
国别省市:

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

1