数据报文的深度检测方法、装置、介质及监控系统与流程

文档序号:29491082发布日期:2022-04-06 13:23阅读:201来源:国知局
数据报文的深度检测方法、装置、介质及监控系统与流程

1.本发明实施例涉及计算机技术,尤其涉及一种数据报文的深度检测方法、装置、介质及监控系统。


背景技术:

2.现有的各种网络安全设备,一般由fpga进行普通报文检测,分析ip包4层以下的内容,包括源地址、目的地址、源端口、目的端口以及协议类型,由cpu进行深度报文检测(deep packet inspection,dpi),dpi增加了应用层分析,识别各种应用及其内容。
3.目前,网络安全设备中的cpu在进行深度报文检测时,主要通过内核协议栈和用户协议栈共同配合,实现对数据报文的深度检测。
4.发明人在实现本发明的过程中,发现现有技术主要存在如下缺陷:传统的内核协议栈中,网络数据报文的处理有着很多的性能瓶颈,如局部性失效、中断处理、内核拷贝和系统调用所产生的性能消耗,严重影响数据报文的收发,从而影响cpu辅助fpga对数据报文的深度检测能力和网络安全监控系统的性能。


技术实现要素:

5.本发明实施例提供了一种数据报文的深度检测方法、装置、介质及监控系统,以提高cpu对数据报文的深度检测能力,提高网络安全监控系统的性能。
6.第一方面,本发明实施例提供了一种数据报文的深度检测方法,该方法由数据报文监控系统中的cpu执行,该方法包括:
7.将接收到的待深度检测报文存储于内核空间的目标内存区域中,并将所述目标内存区域的目标存储地址通知给所述cpu中的用户协议栈;
8.通过所述用户协议栈,在与所述目标存储地址匹配的目标存储区域内,对所述待深度检测报文进行深度检测,得到检测结果报文。
9.进一步的,在所述cpu的用户协议栈中,预先注册有深度检测程序,所述深度检测程序用于进行传输层协议之上的报文检测;
10.通过所述用户协议栈,在与所述目标存储地址匹配的目标存储区域内,对所述待深度检测报文进行深度检测,包括:
11.通过所述用户协议栈,执行所述深度检测程序,在与所述目标存储地址匹配的目标存储区域内,对所述待深度检测报文进行深度检测。
12.进一步的,在将接收到的待深度检测报文存储于内核空间的目标内存区域中之前,还包括:
13.接收所述数据报文监控系统中的fpga发送的待深度检测报文,其中,所述待深度检测报文为所述fpga对经由交换模块接收的原始报文进行报文传输层协议之下的检测后得到的;
14.在通过所述用户协议栈,在与所述目标存储地址匹配的目标存储区域内,对所述
待深度检测报文进行深度检测,得到检测结果报文之后,还包括:
15.通过所述用户协议栈,在确定检测结果报文满足转发条件时,将所述检测结果报文重写入至所述目标内存区域;
16.从所述目标内存区域获取所述检测结果报文,并将所述检测结果报文发送至所述fpga,以经由所述fpga,将所述检测结果报文发送至所述交换模块进行转发。
17.进一步的,在通过所述用户协议栈,在与所述目标存储地址匹配的目标存储区域内,对所述待深度检测报文进行深度检测,得到检测结果报文之后,还包括:
18.通过所述用户协议栈,在确定检测结果报文不满足转发条件时,清空所述目标内存区域。
19.进一步的,将接收到的待深度检测报文存储于内核空间的目标内存区域中,并将所述目标内存区域的目标存储地址通知给所述cpu中的用户协议栈,包括:
20.通过驱动单元,将接收到的待深度检测报文存储于内核空间的目标内存区域中,并将所述目标内存区域的目标存储地址通知给所述cpu中的用户协议栈;
21.从所述目标内存区域获取所述检测结果报文,并将所述检测结果报文发送至所述fpga,包括:
22.通过所述驱动单元,从所述目标内存区域获取所述检测结果报文,并将所述检测结果报文发送至所述fpga。
23.进一步的,所述方法还包括:
24.通过所述用户协议栈,获取访问控制列表规则,并将所述访问控制列表规则下发至所述fpga;
25.其中,所述访问控制列表规则为所述fpga进行报文传输层协议之下的检测时所使用的规则。
26.第二方面,本发明实施例还提供了一种数据报文的深度检测装置,由数据报文监控系统中的cpu执行,该装置包括:
27.报文存储模块,用于将接收到的待深度检测报文存储于内核空间的目标内存区域中,并将所述目标内存区域的目标存储地址通知给所述cpu中的用户协议栈;
28.报文深度检测模块,用于通过所述用户协议栈,在与所述目标存储地址匹配的目标存储区域内,对所述待深度检测报文进行深度检测,得到检测结果报文。
29.第三方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现如本发明任意实施例所述的数据报文的深度检测方法。
30.第四方面,本发明实施例还提供了一种网络数据报文监控系统,该系统包括:交换模块、fpga以及cpu;
31.所述交换模块,用于接收原始报文,将所述原始报文发送至fpga;或者,接收fpga发送的检测结果报文,将所述检测结果报文进行转发;
32.所述fpga,用于接收交换模块发送的原始报文和用户协议栈下发的访问控制列表规则,根据所述访问控制列表规则对所述原始报文进行报文传输层协议之下的检测,得到待深度检测报文,将所述待深度检测报文发送至cpu;或者,接收cpu发送的检测结果报文,将所述检测结果报文发送至交换模块;
33.所述cpu,用于实现如本发明任意实施例所述的数据报文的深度检测方法。
34.进一步的,所述交换模块包括:第一端口和第二端口;
35.所述第一端口,用于接收原始报文,将所述原始报文发送至fpga;
36.所述第二端口,用于接收fpga发送的检测结果报文,将所述检测结果报文进行转发。
37.本发明实施例通过数据报文监控系统中的cpu,将接收到的待深度检测报文存储于内核空间的目标内存区域中,并将所述目标内存区域的目标存储地址通知给所述cpu中的用户协议栈;通过所述用户协议栈,在与所述目标存储地址匹配的目标存储区域内,对所述待深度检测报文进行深度检测,得到检测结果报文的技术手段,解决了现有技术中cpu接收到数据报文,首先通过内核协议栈,再通过用户协议栈进行深度检测时可能存在的局部性失效、中断处理、内核拷贝和系统调用等浪费网络安全监控系统性能的问题,提高了cpu对数据报文的深度检测能力,提高网络安全监控系统的性能。
附图说明
38.图1a为本发明实施例一提供的一种数据报文的深度检测方法的流程图;
39.图1b为本发明实施一提供的一种报文传输层协议之下的检测的具体应用场景图;
40.图1c为本发明实施例一提供的一种报文深度检测的具体应用场景图;
41.图2为本发明实施例二提供的一种数据报文的深度检测装置的结构示意图;
42.图3为本发明实施例四提供的一种网络数据报文监控系统的结构示意图。
具体实施方式
43.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
44.实施例一
45.图1a为本发明实施例一提供的一种数据报文的深度检测方法的流程图,本实施例可适用于对网络数据报文进行深度检测的情况,该方法可以由数据报文监控系统中的cpu执行,该方法可以由数据报文的深度检测装置来执行,该装置可以通过软件和/或硬件的方式来实现,并一般可集成在数据报文监控系统中,具体包括如下步骤:
46.s110、将接收到的待深度检测报文存储于内核空间的目标内存区域中,并将所述目标内存区域的目标存储地址通知给所述cpu中的用户协议栈。
47.其中,待深度检测报文可以是指除检测报文的源地址、目的地址、源端口、目的端口以及协议类型之外,还需要对报文的应用层进行分析,识别应用及内容的报文。目标内存区域可以是指待深度检测报文在cpu中的存储区域。目标存储地址可以是指目标内存区域所对应的存储地址,例如,可以是存储目录地址。
48.具体的,可以接收待深度检测报文,并存储于cpu内核空间的目标内存区域中,并将目标内存区域对应的目标存储地址通知给cpu中的用户协议栈。
49.在将接收到的待深度检测报文存储于内核空间的目标内存区域中之前,还可以包括:接收所述数据报文监控系统中的fpga发送的待深度检测报文。
50.其中,待深度检测报文可以为fpga对经由交换模块接收的原始报文进行报文传输层协议之下的检测后得到的。原始报文可以是指在网络通信中,由交换模块的接收端口所接收的未经任何处理的报文。
51.可选的,数据报文监控系统的fpga对交换模块接收的原始报文传输层协议之下的检测过滤后,得到待深度检测报文,进一步的,可以将待深度检测报文发送至cpu进行深度检测。
52.示例性的,图1b为本发明实施一提供的一种报文传输层协议之下的检测的具体应用场景图。预先烧写安全过滤程序到fpga,还在fpga安装适配的系统软件;通过系统软件配置指定交换端口的基本ip过滤功能到fpga。通过在这个交换端口线速打对应的协议报文和其它报文(即在这个交换端口接收原始报文)。在另一个交换端口查看过滤掉不允许通过的ip报文之后的正常报文(即另一个交换端口可以转发经安全过滤程序进行报文传输层协议之下的检测后的正常报文)。
53.其中,安全过滤程序用于对原始报文进行报文传输层协议之下的检测。本具体应用场景中的原始报文均不需要进行深度检测。
54.具体的,由交换模块的一个交换端口接收原始报文,经过cpu下发至fpga的访问控制列表规则,通过三态内容寻址存储器(ternary content addressable memory,tcam)快速查找访问控制列表,辅助fpga进行初步报文检测滤除含有敏感信息的ip报文后,得到正常报文;进一步的,经由交换模块的另一个交换端口进行正常转发。
55.s120、通过所述用户协议栈,在与所述目标存储地址匹配的目标存储区域内,对所述待深度检测报文进行深度检测,得到检测结果报文。
56.其中,目标存储区域可以是与目标存储地址对应的存储区域。检测结果报文可以是对待深度检测报文进行深度检测应用和内容后,筛除不安全报文后,得到的报文。
57.具体的,用户协议栈收到待深度检测报文的存储通知后,可以在待深度检测报文的目标存储地址匹配的目标存储区域内,直接对当前处理的待深度检测报文进行深入应用层的深度检测,进而得到检测结果报文。
58.可选的,在所述cpu的用户协议栈中,预先注册有深度检测程序,所述深度检测程序用于进行传输层协议之上的报文检测;基于此,在本实施例的一个可选实施方式中,通过所述用户协议栈,在与所述目标存储地址匹配的目标存储区域内,对所述待深度检测报文进行深度检测,可以包括:通过所述用户协议栈,执行所述深度检测程序,在与所述目标存储地址匹配的目标存储区域内,对所述待深度检测报文进行深度检测。
59.其中,深度检测程序可以是预先编写的程序,并将其预先注册于cpu的用户协议栈中。
60.具体的,可以在待深度检测报文的目标存储地址匹配的目标存储区域内,通过执行用户协议栈中预先注册的深度检测程序,直接对当前处理的待深度检测报文进行深度检测。需要说明,传统cpu辅助fpga对数据报文进行深度检测,由内核协议栈执行一部分检测,用户协议栈执行一部分检测来实现,而本发明实施例将完整的深度检测功能进行集成,由深度检测程序来执行。
61.可选的,在通过所述用户协议栈,在与所述目标存储地址匹配的目标存储区域内,对所述待深度检测报文进行深度检测,得到检测结果报文之后,还可以包括:通过所述用户
协议栈,在确定检测结果报文满足转发条件时,将所述检测结果报文重写入至所述目标内存区域;从所述目标内存区域获取所述检测结果报文,并将所述检测结果报文发送至所述fpga,以经由所述fpga,将所述检测结果报文发送至所述交换模块进行转发;
62.其中,转发条件可以是指当前得到的检测结果报文内容不包含违法或者违规等条件。
63.具体的,得到检测结果报文之后,可以判断该检测结果报文是否可以转发,如果可以,可以再直接通过用户协议栈将该检测结果报文重写入至目标内存区域;进一步的,从该目标内存区域中取得该检测结果报文,并发送至fpga;从而经过fpga将该检测结果报文发送至交换模块进行正常转发。相应的,通过所述用户协议栈,在确定检测结果报文不满足转发条件时,清空所述目标内存区域,可以理解为,将不满足转发条件的检测结果报文从目标内存区域中清除。
64.另一种情况下,对于满足转发条件的检测结果报文,如果有对该检测结果报文的转发目的地址的修改请求,可以通过在用户协议栈中预先注册的深度检测程序,修改该检测结果报文的报文头,实现该修改转发逻辑。
65.在本实施例的一个可选实施方式中,基于以上的操作,将接收到的待深度检测报文存储于内核空间的目标内存区域中,并将所述目标内存区域的目标存储地址通知给所述cpu中的用户协议栈,可以包括:
66.通过驱动单元,将接收到的待深度检测报文存储于内核空间的目标内存区域中,并将所述目标内存区域的目标存储地址通知给所述cpu中的用户协议栈;从所述目标内存区域获取所述检测结果报文,并将所述检测结果报文发送至所述fpga,包括:通过所述驱动单元,从所述目标内存区域获取所述检测结果报文,并将所述检测结果报文发送至所述fpga。
67.其中,驱动单元可以包括:dpdk驱动单元或netmap驱动单元。
68.具体的,通过cpu的驱动单元,可以将接收的待深度检测报文存储至内核空间的目标内存区域中,并将该目标内存区域的目标存储地址通知给用户协议栈。在用户协议栈对待检测深度报文进行深度检测完成获得检测结果报文,并将满足转发条件的检测结果报文存储于目标内存区域后,还可以通过驱动单元,从该目标内存区域取出检测结果报文发送至fpga。
69.示例性的,图1c为本发明实施例一提供的一种报文深度检测的具体应用场景图。预先烧写安全过滤程序到fpga,还在fpga安装适配的系统软件;通过系统软件配置指定交换端口的深度过滤功能到fpga(该深度过滤功能在本应用场景中由cpu辅助完成);通过在这个交换端口线速打对应的协议报文和其它报文。在另一个交换端口查看过滤掉不允许通过的ip报文之后的正常报文(即另一个交换端口可以转发经安全过滤程序进行报文传输层协议之下的检测后,将需要进行深度检测的报文由cpu辅助完成深度检测后的正常报文)。
70.具体的,由交换模块的一个交换端口接收原始报文,经过用户协议栈下发至fpga的访问控制列表规则,通过tcam快速查找访问控制列表,辅助fpga进行初步报文检测滤除含有敏感信息的报文后,得到待深度检测报文;进而经netmap驱动将待深度检测报文存储至cpu内核空间的内存区域中;进一步的,用户协议栈通过预先注册的深度检测程序进行深度检测后,得到检测结果报文;用户协议栈将满足转发条件的检测结果报文再次重新写入
前述内存区域中,通过netmap驱动将检测结果报文发送至fpga,经由交换模块进行正常转发。
71.本发明实施例的技术方案,通过数据报文监控系统中的cpu,将接收到的待深度检测报文存储于内核空间的目标内存区域中,并将所述目标内存区域的目标存储地址通知给所述cpu中的用户协议栈;通过所述用户协议栈,在与所述目标存储地址匹配的目标存储区域内,对所述待深度检测报文进行深度检测,得到检测结果报文的技术手段,解决了现有技术中cpu接收到数据报文,首先通过内核协议栈,再通过用户协议栈进行深度检测时局部性失效、中断处理、内核拷贝和系统调用等浪费网络安全监控系统性能的问题,提高了cpu对数据报文的深度检测能力,提高网络安全监控系统的性能。
72.在上述技术方案的基础上,数据报文的深度检测方法还可以包括:通过所述用户协议栈,获取访问控制列表规则,并将所述访问控制列表规则下发至所述fpga;
73.其中,所述访问控制列表规则为所述fpga进行报文传输层协议之下的检测时所使用的规则。
74.具体的,可以通过用户协议栈中预先注册的深度检测程序,将访问控制列表规则下发至fpga,fpga可以通过访问控制列表规则实现报文传输层协议之下的检测。
75.实施例二
76.图2为本发明实施例二提供的一种数据报文的深度检测装置的结构示意图。该装置可执行本发明任意实施例提供的一种数据报文的深度检测方法,该装置由数据报文监控系统中的cpu执行。参考图2,该装置包括:报文存储模块210和报文深度检测模块220。其中:
77.报文存储模块210,用于将接收到的待深度检测报文存储于内核空间的目标内存区域中,并将所述目标内存区域的目标存储地址通知给所述cpu中的用户协议栈;
78.报文深度检测模块220,用于通过所述用户协议栈,在与所述目标存储地址匹配的目标存储区域内,对所述待深度检测报文进行深度检测,得到检测结果报文。
79.本发明实施例的技术方案,通过数据报文监控系统中的cpu,将接收到的待深度检测报文存储于内核空间的目标内存区域中,并将所述目标内存区域的目标存储地址通知给所述cpu中的用户协议栈;通过所述用户协议栈,在与所述目标存储地址匹配的目标存储区域内,对所述待深度检测报文进行深度检测,得到检测结果报文的技术手段,解决了现有技术中cpu接收到数据报文,首先通过内核协议栈,再通过用户协议栈进行深度检测时局部性失效、中断处理、内核拷贝和系统调用等浪费网络安全监控系统性能的问题,提高了cpu对数据报文的深度检测能力,提高网络安全监控系统的性能。
80.上述装置中,可选的是,在所述cpu的用户协议栈中,预先注册有深度检测程序,所述深度检测程序用于进行传输层协议之上的报文检测;
81.报文深度检测模块220,具体可以用于:
82.通过所述用户协议栈,执行所述深度检测程序,在与所述目标存储地址匹配的目标存储区域内,对所述待深度检测报文进行深度检测。
83.上述装置中,可选的是,还包括,待深度检测报文接收模块,具体用于,在将接收到的待深度检测报文存储于内核空间的目标内存区域中之前:
84.接收所述数据报文监控系统中的fpga发送的待深度检测报文,其中,所述待深度检测报文为所述fpga对经由交换模块接收的原始报文进行报文传输层协议之下的检测后
得到的;
85.还包括,检测结果报文转发模块,具体用于,在通过所述用户协议栈,在与所述目标存储地址匹配的目标存储区域内,对所述待深度检测报文进行深度检测,得到检测结果报文之后,包括:
86.检测结果报文重写子单元,用于通过所述用户协议栈,在确定检测结果报文满足转发条件时,将所述检测结果报文重写入至所述目标内存区域;
87.检测结果报文发送子单元,用于从所述目标内存区域获取所述检测结果报文,并将所述检测结果报文发送至所述fpga,以经由所述fpga,将所述检测结果报文发送至所述交换模块进行转发。
88.上述装置中,可选的是,还包括,目标内存区域清空模块,具体用于,在通过所述用户协议栈,在与所述目标存储地址匹配的目标存储区域内,对所述待深度检测报文进行深度检测,得到检测结果报文之后:
89.通过所述用户协议栈,在确定检测结果报文不满足转发条件时,清空所述目标内存区域。
90.上述装置中,可选的是,报文存储模块210,具体可以用于:
91.通过驱动单元,将接收到的待深度检测报文存储于内核空间的目标内存区域中,并将所述目标内存区域的目标存储地址通知给所述cpu中的用户协议栈;
92.检测结果报文发送子单元,具体还可以用于:
93.通过所述驱动单元,从所述目标内存区域获取所述检测结果报文,并将所述检测结果报文发送至所述fpga。
94.上述装置中,可选的是,所述驱动单元可以包括:dpdk驱动单元或netmap驱动单元。
95.上述装置,可选的是,数据报文的深度检测装置,还包括,访问控制列表规则下发模块,具体可以用于:
96.通过所述用户协议栈,获取访问控制列表规则,并将所述访问控制列表规则下发至所述fpga;
97.其中,所述访问控制列表规则为所述fpga进行报文传输层协议之下的检测时所使用的规则。
98.本发明实施例所提供的数据报文的深度检测装置可执行本发明任意实施例所提供的数据报文的深度检测方法,具备执行方法相应的功能模块和有益效果。
99.实施例三
100.本发明实施例三还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行一种数据报文的深度检测方法,该方法由数据报文监控系统中的cpu执行,该方法包括:
101.将接收到的待深度检测报文存储于内核空间的目标内存区域中,并将所述目标内存区域的目标存储地址通知给所述cpu中的用户协议栈;
102.通过所述用户协议栈,在与所述目标存储地址匹配的目标存储区域内,对所述待深度检测报文进行深度检测,得到检测结果报文。
103.当然,本发明实施例所提供的一种计算机可读存储介质,其上存储有计算机程序,
该程序不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据报文的深度检测方法中的相关操作。
104.通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
105.值得注意的是,上述数据报文的深度检测装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
106.实施例四
107.图3为本发明实施例四提供的一种网络数据报文监控系统的结构示意图,如图3所示,该系统包括:交换模块310、fpga320以及cpu330;
108.所述交换模块310,用于接收原始报文,将所述原始报文发送至fpga;或者,接收fpga发送的检测结果报文,将所述检测结果报文进行转发;
109.所述fpga320,用于接收交换模块发送的原始报文和用户协议栈下发的访问控制列表规则,根据所述访问控制列表规则对所述原始报文进行报文传输层协议之下的检测,得到待深度检测报文,将所述待深度检测报文发送至cpu;或者,接收cpu发送的检测结果报文,将所述检测结果报文发送至交换模块;
110.所述cpu330,用于实现如本发明任意实施例所述的数据报文的深度检测方法,该方法由数据报文监控系统中的cpu执行,该方法包括:
111.将接收到的待深度检测报文存储于内核空间的目标内存区域中,并将所述目标内存区域的目标存储地址通知给所述cpu中的用户协议栈;
112.通过所述用户协议栈,在与所述目标存储地址匹配的目标存储区域内,对所述待深度检测报文进行深度检测,得到检测结果报文。
113.上述系统中,可选的是,所述交换模块310包括:第一端口和第二端口;
114.所述第一端口,用于接收原始报文,将所述原始报文发送至fpga;
115.所述第二端口,用于接收fpga发送的检测结果报文,将所述检测结果报文进行转发。
116.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1