著录项信息
专利名称 | 深度报文检测设备和方法 |
申请号 | CN200710198554.7 | 申请日期 | 2007-12-11 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2009-06-17 | 公开/公告号 | CN101459489 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L1/00 | IPC分类号 | H;0;4;L;1;/;0;0;;;H;0;4;L;1;2;/;5;6;;;G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 中兴通讯股份有限公司 | 申请人地址 | 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法律部
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 中兴通讯股份有限公司 | 当前权利人 | 中兴通讯股份有限公司 |
发明人 | 邱圣斌 |
代理机构 | 北京安信方达知识产权代理有限公司 | 代理人 | 龙洪;田红娟 |
摘要
本发明提供一种深度报文检测的设备和方法,该方法包括以下步骤:(a)由网络处理器向深度报文检测设备发送待检测报文数据,包括待检测报文及网络处理器附加的控制信息,该控制信息包括当前待检测关键字信息;(b)深度报文检测设备根据网络处理器发送的待检测报文数据进行检测,当检测到当前待检测关键字时,根据是否进一步检测的配置及下一个关键字信息继续进行检测,直到无法检测到某关键字或检测到所有关键字检测结束,深度报文检测设备记录检测结果;(c)深度报文检测设备返回检测结果给网络处理器。本发明设备和方法可以增强检测功能,并为上层软件处理提供更有力的支持。
深度报文检测设备和方法\n技术领域\n[0001] 本发明涉及数据通信领域,尤其是一种基于硬件实现的深度报文检测设备和方法。\n背景技术\n[0002] 随着互联网技术的快速发展,在网络上承载的内容也越来越丰富,而且网络服务供应商对客户提供了越来越多的服务内容,同时这些服务又是根据不同的应用进行区分。\n这就要求网络设备能够提供较复杂的报文处理能力,能够区分不同的应用,以前使用的应用2-4层报文头信息已经不足于区别不同网络应用,现在为了更精细的区分报文,通常需要检测报文5-7层的信息,甚至需要检查报文内容。除了区分报文之外,有时某些特殊应用的场合也需要对报文的内容进行检查,比如对特定关键字的搜索。实现这些功能就需要深度报文检测设备。\n[0003] 目前深度报文检查的实现是使用软件方法,通过网络处理器检查报文内容,这种方法处理速度较慢,并且增加主处理器负担而越来越不适合发展的需求。\n发明内容\n[0004] 本发明要解决的技术问题是提供一种深度报文检测的设备和方法,以实现硬件报文检测,减轻网络处理器负担,提高检测处理效率。\n[0005] 为解决上述技术问题,本发明提供一种深度报文检测设备,该深度报文检测设备包括数据输入接口控制及缓存区、报文检测处理模块及数据输出接口,其中数据输入接口控制及缓存区用于从网络处理器接收数据,并将数据缓存在内部缓存区中;该报文检测处理模块用于根据网络处理器发送的待检测报文数据进行检测并记录检测结果;数据输出接口用于读取报文和检测结果,并发送给网络处理器。\n[0006] 进一步地,该报文检测处理模块包括存储器、报文检测子模块、结果组织子模块、用于缓存控制信息的控制信息缓存区和用于缓存报文数据的数据缓存区,其中,[0007] 存储器用于存储深度报文检测设备待检测的全部关键字和控制信息;\n[0008] 报文检测子模块用于根据数据输入接口控制及缓存区接收的数据和现场可编程门阵列外挂存储器的存储信息进行报文检测并向结果组织模块发送检测结果;\n[0009] 结果组织子模块用于将报文检测子模块的检测结果按控制信息缓存区所要求的格式组织,并在检测过程结束后将这些检测结果写入控制信息缓存区,及在报文检测过程中,将已经检测过的报文数据写入数据缓存区。\n[0010] 进一步地,存储器存储的控制信息包括关键字有效标志、需要进一步查找的标志、进一步查找的关键字组标识及关键字标识,存储器还用于将关键字拆分成分区能够支持的长度,分别存放在不同的分区,并将这些分区组成一个链表,关键字的前部置进一步查找标志和当前关键字是某个较长关键字的一部分的标志。\n[0011] 进一步地,报文检测子模块用于根据网络处理器发送的报文进行疑似匹配;根据疑似匹配的结果选取报文中相应的数据,并用选取的数据和组标识做哈希运算产生存储器中关键字的地址,读取其中的内容进行精确匹配,返回检测结果;在检测到当前待检测关键字时根据是否进一步检测的配置及下一个关键字信息继续进行检测,直到无法检测到某关键字或检测到所有关键字,返回检测结束标志。\n[0012] 进一步地,检测到所有关键字时,结果组织子模块写入控制信息缓存区的深度报文检测设备返回的检测结果包括关键字检测的次数、检测成功标志、最后一个关键字的信息及检测到的每个关键字的信息,其中最后一个关键字的信息包括该最后一个关键字的组标识、字标识及其在报文中的位置,每个关键字的信息包括所有关键字的组标识、字标识及其在报文中的位置;只检测到部分关键字时,深度报文检测设备返回的检测结果包括检测的次数及检测到的各个关键字的信息,其中各个关键字的信息包括检测到的各个关键字的组标识、字标识及其在报文中的位置。\n[0013] 进一步地,该深度报文检测设备采用现场可编程门阵列和外挂存储器实现。\n[0014] 一种采用上述深度报文检测设备进行深度报文检测的方法,该方法包括以下步骤:\n[0015] (a)由网络处理器向深度报文检测设备发送待检测报文数据;\n[0016] (b)深度报文检测设备根据网络处理器发送的待检测报文数据进行检测;\n[0017] (c)深度报文检测设备返回检测结果给网络处理器。\n[0018] 进一步地,步骤(a)中网络处理器发送的待检测报文数据包括待检测报文及网络处理器附加的控制信息,该控制信息包括当前待检测关键字组标识,步骤(b)中深度报文检测设备根据网络处理器发送的待检测报文数据进行检测时,进一步包括:\n[0019] (b1)提取当前待检测的关键字组标识;\n[0020] (b2)进行疑似匹配扫描,若发现疑似匹配,则提取关键字进行精确匹配;\n[0021] (b3)若精确匹配,则根据是否进一步检测的配置及下一个关键字信息判断是否进一步检测;\n[0022] (b4)如需要进一步检测,则用下一个待检测关键字组标识代替当前的关键字组标识,重复步骤(b2)至(b3);否则结束检测。\n[0023] 进一步地,步骤(a)中网络处理附加的控制信息还包括查找起始位置,步骤(b1)中深度报文检测设备提取的信息还包括查找起始位置,步骤(b2)中从查找起始位置开始进行疑似匹配扫描。\n[0024] 如权利要求8所述的方法,其特征在于,步骤(b2)进一步包括:\n[0025] (b21)进行疑似匹配,若发现疑似匹配,则根据疑似匹配的结果选取数据流中相应的数据;\n[0026] (b22)根据当前待检测组标识和选取的数据通过哈希运算得到关键字地址,读取关键字;\n[0027] (b23)用该关键字与选取的数据逐一字节比较,比较结果完全相同,表示精确匹配。\n[0028] 进一步地,检测到所有关键字时,深度报文检测设备返回的检测结果包括关键字检测的次数、检测成功标志、最后一个关键字的信息及检测到的每个关键字的信息,其中最后一个关键字的信息包括该最后一个关键字的组标识、字标识及其在报文中的位置,每个关键字的信息包括所有关键字的组标识、字标识及其在报文中的位置;只检测到部分关键字时,深度报文检测设备返回的检测结果包括检测的次数及检测到的各个关键字的信息,其中各个关键字的信息包括检测到的各个关键字的组标识、字标识及其在报文中的位置。\n[0029] 进一步地,该方法所使用的深度报文检测设备采用存储器存储待检测的全部关键字和控制信息,所述控制信息包括关键字有效标志、需要进一步查找的标志、进一步查找的关键字组标识及关键字标识,存储器还用于将关键字拆分成分区能够支持的长度,分别存放在不同的分区,并将这些分区组成一个链表,关键字的前部置进一步查找标志和当前关键字是某个较长关键字的一部分的标志。\n[0030] 相较于现有技术,本发明报文深度检测设备和方法实现了硬件报文检测,可以减轻网络处理器负担,提高检测处理效率,且本发明设备和方法针对报文内容进行检测,实现了报文深度检测,当检索到第一个关键字后进行是否进一步检索的判断,从而可以实现对多个关键字的检测,并能够返回多次查找的结果,以增强检测功能,并为上层软件处理提供更有力的支持。另外,通过外挂存储器对长度超过一个外挂存储器表项的关键字进行分解,可使本发明方法实现对任意长度关键字进行检索。\n附图说明\n[0031] 图1是本发明方法所采用的深度报文检测设备模块框图。\n[0032] 图2是本发明深度报文检测设备内部进行深度报文检测的流程示意图。\n[0033] 图3是本发明深度报文检测设备中报文检测子模块的处理流程图。\n具体实施方式\n[0034] 如图1所示,本发明深度报文检测设备采用现场可编程门阵列FPGA作为深度报文检测引擎,该深度报文检测设备包括:数据输入接口控制及缓存区101、报文检测处理模块及数据输出接口106,以下对各单元功能进行具体介绍:\n[0035] 数据输入接口控制及缓存区101:用于从网络处理器接收数据,并将数据缓存在内部缓存区中;\n[0036] 报文检测处理模块:用于根据网络处理器发送的待检测报文数据进行检测并记录检测结果。\n[0037] 数据输出接口106:读取报文和检测结果,并发送给网络处理器。\n[0038] 具体地,报文检测处理模块包括报文检测子模块102、结果组织子模块103、FPGA外挂存储器104、控制信息缓存区和数据缓存区105,各部分的功能描述如下:\n[0039] 报文检测子模块102:用于根据网络处理器发送的报文和FPGA外挂存储器存储的内容进行报文检测,返回检测的查找结果给结果组织子模块103。该报文检测子模块根据网络处理器发送的待检测报文数据进行检测,当检测到当前待检测关键字时,根据是否进一步检测的配置及下一个关键字信息继续进行检测,直到无法检测到某关键字或检测到所有关键字检测结束。\n[0040] 该模块检测待检测关键字时,首先从报文中取得待检测关键字的组标识listid和查找起始位置startpos。从startpos位置开始扫描报文,进行疑似匹配。一旦有了疑似匹配后,根据疑似匹配的结果选取报文中相应的数据key,然后用数据key和组标识listid做哈希运算产生FPGA外挂存储器104的关键字地址,之后读取FPGA外挂存储器104的内容,用于精确匹配(通过逐一字节比较数据key和存储器的关键字),返回检测结果,并根据是否进一步检测的配置及下一个关键字信息继续进行检测,直到无法检测到某关键字或检测到所有关键字,返回检测结束标志。\n[0041] 结果组织子模块103:报文检测子模块102针对每个关键字的检测,都会产生一个检测结果。该模块将这些检测结果按控制信息缓存区所要求的格式组织,并在检测过程结束后将这些检测结果写入控制信息缓存区。在报文检测过程中,该模块同时将已经检测过的报文数据写入数据缓存区。\n[0042] 结果组织子模块将报文检测子模块返回的比较结果组织成控制信息缓存区能够识别的格式,由于一个报文需要检测的关键字可能有多个,所以返回的比较结果也有多个,在此本发明将这些信息分成两组写入控制信息缓存区,每次写入一组,所以需要两次才能写完。而将报文内容写入数据缓存区,该操作是在关键字查找过程中进行的,一边查找关键字,一边将已经完成查找的数据写入数据缓存区,采用控制信息缓存区,与数据缓存区分开操作,使得操作更加简单高效。一旦控制信息缓存区有数据,表示当前至少有一个报文已经完成深度报文检测,深度报文检测设备便将数据和控制信息从相应的缓存区中读出,按照报文检测设备返回给网络处理器规定的报文格式重新组织报文,并发送回网络处理器。\n[0043] FPGA外挂存储器104:存储深度报文检测设备待检测的全部关键字和控制信息,具体的控制信息将在下面详细说明。\n[0044] 控制信息缓存区和数据缓存区105:用于缓存控制信息和报文数据。\n[0045] 采用上述深度报文检测设备进行深度报文检测的方法包括以下步骤:\n[0046] 步骤一:由网络处理器向深度报文检测设备发送待检测报文数据;\n[0047] 步骤二:深度报文检测设备根据网络处理器发送的待检测报文数据进行检测,并记录检测结果;\n[0048] 步骤三:深度报文检测设备返回检测结果给网络处理器。\n[0049] 以下分四部分对本发明方法进行详细说明:\n[0050] 一:网络处理器发送到深度报文检测设备的待检测报文的数据结构;\n[0051] 二:深度报文检测设备内部对检测信息的处理流程;\n[0052] 三:深度报文检测设备返回给网络处理器的报文数据结构;\n[0053] 四:深度报文检测设备外挂存储器数据组织结构;\n[0054] 网络处理器发送到深度报文检测设备的待检测报文的数据结构\n[0055] 网络处理器发送的报文包含两个部分,一是网络处理器从线路上接收的报文内容(即下述表格中的报文数据字节),二是网络处理器附加的控制信息,这些控制信息包括关键字组标识和查找起始位置,其中:\n[0056] 关键字组标识:表示当前待检测的关键字的组标识,在检测过程中用于疑似匹配和产生深度报文检测设备外部存储器104的地址,当需要进一步检测时,后续检测使用的组标识由FPGA外部存储器104读取的next_listid代替。\n[0057] 查找起始位置:确定深度报文检测的查找起始位置,本发明只检测查找起始位置startpos之后的报文内容,对查找起始位置startpos之前的报文内容不作检测,这样可以提升设备的性能。\n[0058] 下表是网络处理器发送到深度报文检测设备的报文数据的示例:\n[0059] \n[0060] 以下对上表中各字段进行详细补充说明:\n[0061] 第一保留位(8字节):由网络处理器使用,深度报文检测设备不关心,这一字段处在报文起始位置,深度报文检测设备不对该字段进行处理,当深度报文检测设备返回检测结果时,也不占用该字段,该字段由网络处理器使用。至于是否对该字段的内容进行深度报文检测,由查找起始位置startpos(2字节)决定,当起始位置在该字段之前,则说明需要对该字段进行深度报文检测,否则不需要对该字段进行深度报文检测。\n[0062] 关键字组标识listid(2字节):本发明以最多支持2048个关键字组为例进行说明,只需11位组标识信息,所以该字段只使用低11比特\n[0063] 第二保留位(2字节):无效字节,不关心。\n[0064] 第三保留位(2字节):无效字节,不关心。\n[0065] 第四保留位(16字节):用于深度报文检测设备返回信息的位置,在网络处理器发送给深度报文检测设备的数据中,这16字节的数据为无效数据,该字段在深度报文检测设备发送给网络处理器的数据中表示检测结果信息。在网络处理器发送给深度报文检测设备的报文数据传送这16字节的无效数据,不仅可以保持网络处理器和深度报文检测设备之间传输数据格式的统一性,还可以简化深度报文检测设备内部的处理流程。\n[0066] 报文数据字节:需要进行报文深度检测的报文数据,长度不定,内容不定。\n[0067] 深度报文检测设备内部对检测信息的处理流程\n[0068] 当深度报文检测设备检测到当前关键字时,根据是否进一步检测的配置及下一个待检测关键字信息继续进行检测,直到无法检测到某关键字或检测到所有关键字检测结束,具体地,深度报文检测设备内部进行报文检测的流程示意图如图2所示,该流程包括以下步骤:\n[0069] 步骤201:提取当前待检测的关键字组标识;\n[0070] 步骤202:进行疑似匹配扫描,若发现疑似匹配,则提取关键字进行精确匹配;\n[0071] 步骤203:若精确匹配,则判断是否进一步检测;\n[0072] 步骤204:如需要进一步检测,则用下一个待检测关键字组标识代替当前的关键字组标识,重复步骤202至203;否则结束检测。\n[0073] 以下结合图3对深度报文检测设备中报文检测子模块102内部的处理流程进行详细说明,该流程包括以下步骤:\n[0074] 步骤301:当该模块收到报文数据,提取待检测关键字的组标识listid和查找起始位置startpos,从startpos位置开始扫描报文;\n[0075] 步骤302:在扫描过程中判断是否发现疑似匹配。如果‘是’,则执行步骤303,否则执行步骤309;\n[0076] 步骤303:根据疑似匹配的结果选取相应的数据key,与关键字组标识listid做哈希运算,产生FPGA外挂存储器104的地址;\n[0077] 步骤304:读取FPGA外挂存储器104相应地址的内容,得到控制信息和关键字;\n[0078] 步骤305:逐一字节比较步骤304读取的关键字和步骤303选取的数据key;\n[0079] 步骤306:步骤305比较的结果完全相同,表示精确匹配,则执行步骤307,否则表示步骤303选取的数据key不是待检测的关键字,从发现疑似匹配的位置继续扫描后续报文,执行步骤302;\n[0080] 步骤307:表示当前的关键字检测得到精确匹配的检测结果,将该检测结果送给结果组织子模块,并转步骤308;\n[0081] 步骤308:判别是否需要进一步检测关键字,如果需要则用进一步检测的关键字组标识next_listid代替当前使用的关键字组标识listid,从发现疑似匹配的位置继续扫描后续报文,执行步骤302,否则,执行步骤310;\n[0082] 一般来说,一个报文需要检测多少个关键字,一开始是不知道的,只有等检测到第一个关键字之后,才知道需不需要进一步检测。步骤304从FPGA外挂存储器104读取的数据中包含是否需要进一步检测的标志next,当该标志有效时,表示需要进一步检测后续报文;当next标志无效时,表示不需要进一步检测。\n[0083] 步骤309:判别报文是否结束,如果是,执行步骤310,否则继续扫描后续报文,执行步骤302;\n[0084] 步骤310,结束当前报文的深度报文检测操作,给出检测结束标志。\n[0085] 之后通知结果组织子模块将比较的结果写入控制信息缓存区,深度报文检测设备将查找的比较结果和报文内容返回给网络处理器。\n[0086] 深度报文检测设备返回给网络处理器的报文数据结构\n[0087] 从深度报文检测设备返回的报文带有报文检测的结果和报文内容,检测的结果放在报文内容之前,其中检测的结果记录着查找的比较结果,包括检测成功标志、关键字检测的次数、检测成功时最后一个关键字的信息以及检测到的每个关键字的信息。报文内容是从网络处理器发送来的报文,深度报文检测设备不对报文内容做任何的修改。\n[0088] 关键字的信息包括关键字组标识、关键字标识及关键字在报文中的位置。\n[0089] 其中:\n[0090] 检测成功标志:检测成功标志有效时,表示检测到所有关键字,如果需要进一步检测,说明进一步检测也成功检测到关键字;检测成功标志无效时,表示检测失败,没有检测到第一个关键字或只检测到前几个关键字。\n[0091] 关键字检测的次数:即检测到关键字的次数,检测成功时,与所有需要检测的关键字个数相同;检测不成功时与检测到的关键字个数相同;\n[0092] 最后一个关键字的信息:只有在检测成功标志有效时,报文检测结果中才包括最后一个关键字的信息,包括最后一个关键字的组标识、最后一个关键字的字标识及其在报文中的位置等三个字段,其中,\n[0093] 关键字组标识,如果该报文只进行一次关键字检测,而没有进一步检测,则关键字组标识字段同网络处理器发送来的一样。\n[0094] 关键字的标识:由步骤204得到,本发明采用关键字组标识和关键字标识来唯一确定一个关键字。\n[0095] 关键字在报文中的位置:即最后一次检测的关键字在报文中的结束位置。\n[0096] 每个关键字的信息:这些信息是每检测到一个关键字就记录一次,也就是说,即使最终检测没有成功(检测成功标志无效,只检测到部分关键字),但是前面检测到的关键字的信息也会被记录在这里。\n[0097] 下表为深度报文检测设备发送给网络处理器的报文检测结果的报文数据结构示例,该报文数据结构是以最多能支持4个关键字检测为例进行说明的:\n[0098] \n[0099] 以下对检测结果中的各字段进行详细补充说明:\n[0100] 保留位:由网络处理器使用,深度报文检测设备不关心(8字节):保留给网络处理器使用的字段,深度报文检测设备从网络处理器接发送来的报文中直接提取该信息,然后又原样返回给网络处理器。\n[0101] check_cnt(2bits):表示关键字检测的次数;\n[0102] success(1bit):表示检测成功标志;\n[0103] listid(14bits):表示检测成功时返回的最后一个关键字的关键字组标识listid;\n[0104] sigid(14bits):表示检测成功时返回的最后一个关键字的关键字字标识;\n[0105] Offset(2字节):表示最后一次检测的关键字在报文中的结束位置。\n[0106] offset0[13:10]:表示第一次检测的关键字在报文的结束位置的高4位。\n[0107] Offset1[13:10]:表示第二次检测的关键字在报文的结束位置的高4位。\n[0108] Offset2[13:10]:表示第三次检测的关键字在报文的结束位置的高4位。\n[0109] Offset3[13:10]:表示第四次检测的关键字在报文的结束位置的高4位。\n[0110] listid0(11bits):表示第一次检测的关键字组标识,只取低11比特,由于本发明以支持2048个关键字组标识为例,所以采用11比特完全能够唯一的标识关键字组。\n[0111] sigid0(11bits):表示第一次检测的关键字标识,只取低11比特,由于本发明目前在一个关键字组内最多包含2048个关键字,所以采用11比特完全能够唯一的标识关键字组内每个关键字。\n[0112] offset0[9:0]:表示第一次检测的关键字在报文中的结束位置的低10位。\n[0113] listid1(11bits):表示第二次检测的关键字组标识,只取低11比特。\n[0114] sigid1(11bits):表示第二次检测的关键字标识,只取低11比特。\n[0115] Offset1[9:0]:表示第二次检测的关键字在报文的结束位置的低10位。\n[0116] Listid2(11bits):表示第三次检测的关键字组标识,只取低11比特。\n[0117] Sigid2(11bits):表示第三次检测的关键字标识,只取低11比特。\n[0118] Offset2[9:0]:表示第三次检测的关键字在报文的结束位置的低10位。\n[0119] Listid3(11bits):表示第四次检测的关键字组标识,只取低11比特。\n[0120] Sigid3(11bits):表示第四次检测的关键字标识,只取低11比特。\n[0121] Offset3[9:0]:表示第四次检测的关键字在报文的结束位置的低10位。\n[0122] 报文数据字节:由网络处理器发送来的报文数据,原样返回。\n[0123] 以上是以最多能支持4次关键字检测并最多能返回4个关键字信息为例进行说明的,一般情况下这种数据结构可以满足应用需求,相较于现有技术而言可以大大提高深度报文检测的能力。当检测的次数不足4次时,也就是说需要返回的信息也不足4个关键字的信息,那么将检测的关键字信息按检测顺序充填,后面没用到的部分全部用‘0’充填。\n[0124] 具体地,检测到所有关键字,即检测成功返回的有效检测结果信息包括关键字检测的次数check_cnt、检测成功标志success(置为有效)、最后一个关键字的信息及检测到的每个关键字的信息,其中最后一个关键字的信息包括该最后一个关键字的组标识listid、字标识sigid及其在报文中的位置Offset,每个关键字的信息包括所有关键字的组标识listid、字标识sigid及其在报文中的位置Offset。\n[0125] 只检测到部分关键字从而检测失败时,返回的有效检测结果信息包括检测的次数check_cnt及检测到的各个关键字的信息,其中各个关键字的信息包括检测到的各个关键字的listid、字标识sigid及其在报文中的位置Offset。\n[0126] 深度报文检测设备的FPGA外挂存储器数据组织结构\n[0127] FPGA外挂存储器用于存储设备可能需要检测的全部关键字和相关的控制信息。关键字按链表形势存储在外挂存储器中,关键字的地址由关键字本身和关键字组标识listid通过哈希运算得到。相关的控制信息有:关键字有效标志vld、检测次数cnt、当前关键字字节长度sig_len、进一步查找的关键字组标识next_listid、需要进一步查找的标志next、当前关键字是某个较长关键字的一部分标志suc、关键字标识sigid。\n[0128] 下表是FPGA外挂存储器数据结构的示例:\n[0129] \n[0130] 以下对各字段进行详细说明:\n[0131] Vld:表示关键字有效标志,如果在刷新关键字的时候,需要删除某个关键字,只需将该位置填‘0’即可;\n[0132] Sigid:表示关键字标识,由软件配置,当关键字被成功检测之后,返回给软件;\n[0133] Rsv:保留位,将来升级时使用;\n[0134] Cnt:表示检测次数,用于说明在检测本关键字前已经对当前的报文进行关键字检测并检测成功的次数,也就是本关键字在链表中的位置。由于报文是按顺序扫描的,所以cnt值越大的关键字在报文中出现的位置越靠后。只有当关键字链表中,前一个关键字被成功检测,才能继续检测下一个关键字\n[0135] Sig_len:表示关键字字节长度。\n[0136] Next:表示该关键字被成功检测之后,仍需进一步检测,进一步检测的关键字组标识由next_listid字段给出;\n[0137] Suc:表示该关键字是某个长关键字的一部分。为了高效利用存储器资源,所以本发明对存储器进行分区,每个区域最多存放32个字节的数据(包括关键字和控制信息),由于控制信息的长度固定为4个字节,所以关键字的长度最多支持28字节,一旦某个关键字的长度超过分区能够支持的最大长度时,需要将关键字拆分成分区能够支持的长度,分别存放在不同的分区,并将这些分区组成一个链表,关键字的前部需要置位next标志和suc标志。\n[0138] Signature:表示关键字;\n[0139] Next_listid:表示进一步检测时的关键字组标识,在链表结构中充当链表指针的作用。\n[0140] 本发明报文深度检测设备和方法实现了硬件报文检测,减轻网络处理器负担,提高检测处理效率,且本发明方法针对报文内容进行检测而不是针对报文头封装信息,实现了报文的深度检测,当检索到第一个关键字后进行是否进一步检索的判断,从而可以实现对多个关键字的检测,并能够返回多次查找的结果,以增强检测功能,并为上层软件处理提供更有力的支持。另外,通过外挂存储器对长度超过一个外挂存储器表项的关键字进行分解,可使本发明方法实现对任意长度关键字进行检索。且采用本发明所述方法,填补了深度报文检测设备数据结构方面的空白,丰富了深度报文检测设备返回给网络处理器的关键字查找信息,为网络处理器的后续处理提供更有力的支持,同时本发明的数据组织管理简单有效,提高了深度报文检测的效率。
法律信息
- 2021-11-19
未缴年费专利权终止
IPC(主分类): H04L 1/00
专利号: ZL 200710198554.7
申请日: 2007.12.11
授权公告日: 2011.12.07
- 2011-12-07
- 2009-11-25
- 2009-06-17
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2007-10-10
|
2007-05-22
| | |
2
| |
2007-10-17
|
2007-05-17
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |