一种构造匹配规则表及识别报文类型的方法和装置的制作方法

文档序号:7700615阅读:134来源:国知局
专利名称:一种构造匹配规则表及识别报文类型的方法和装置的制作方法
技术领域
本发明涉及通信领域,特别是指一种构造匹配规则表及识别报文类型的方 法和装置。
背景技术
在许多网络设备(例如交换机、路由器)中,需要对接收到的各种报文进行 处理,其中,有一些处理需要知道报文的类型,以便进行统计、监控等。报文 的类型由报文中一些特定字段的值来表示,不同类型的报文在某些字段的取值 不同,要判断一个报文是否属于某一报文类型,需要从这个报文中获取这些字 段的值,并与一个已知的对应字段值的组合对比,如果两者完全一致,则可以 断定当前的报文是预期的报文类型。
判断一个报文是否某属于一预期报文类型的过程,称为报文匹配,其中, 已知的字段值的组合是判断的标准,称为匹配规则。满足一个匹配规则的报文 必然属于该匹配规则对应的报文类型,反之,某一报文类型的所有报文都具有 相同的匹配规则。报文符合特定匹配规则,是报文属于特定报文类型的充要条 件。据此,可以将每个报文类型与一个确定的匹配规则——对应,要判断任一 报文类型,也就是将此报文中的某些字段的值与一系列匹配规则相对比,如果 找到一个匹配的规则,那么该报文就属于该匹配规则对应的报文类型。现有技 术中,常使用基于报文特定字段的识别方法,可以对报文的内容进行解析并逐 层分析,以确定报文类型。
发明人在实现本发明的过程中,发现现有技术中至少存在如下问题对报
类似交换机、路由器等网络设备对报文类型识别性能较高要求的场合;对于大 量的匹配规则,如果以线性表的方式来存放这些匹配规则,则在一个有n个匹 配规则的匹配规则表中进行匹配的时间复杂度为O(n)。

发明内容
本发明的目的是提供一种构造匹配规则表及识别报文类型的方法和装置, 用于解决现有技术中,对报文的内容进行解析并逐层分析以获取报文类型所采 用的技术效率低,不适用于类似交换机、路由器等网络设备对类型识别性能较 高要求的场合的问题。
一种构造匹配规则表的方法,包括计算报文类型对应的匹配规则所对应 的哈希值;所述匹配规则根据报文特征构造而成,描述了一报文的类型为所述 报文类型需要满足的条件;根据所述哈希值将所述匹配规则存入一哈希表中, 形成一用于报文类型识别的匹配规则表。
一种构造匹配规则表的装置,包括哈希值计算模块,用于计算报文类型 对应的匹配规则的哈希值;所述匹配规则根据报文特征构造而成,描述了报文 的类型为所述报文类型需要满足的条件;匹配规则表建立模块,用于根据所述 哈希值将所述匹配规则存入一哈希表中,形成一用于报文类型识别的匹配规则 表。
一种识别报文类型的方法,包括接收到一报文;提取所述报文中特征字 段的值,生成一报文特征;根据所述报文特征计算出一哈希值;根据所述哈希 值在匹配规则表中查找对应的匹配规则,将所述报文特征与该匹配规则进行匹 配;所述的匹配规则表为一保存有匹配规则的哈希表;匹配成功之后,确定所 述匹配规则所对应的报文类型为所述报文的报文类型。
一种能够识别报文类型的装置,包括报文接收模块,用于接收报文;报 文特征提取模块,用于提取所述报文中的特征字段,生成一报文特征;报文特 征哈希值计算模块,用于根据所述报文特征计算出一哈希值;匹配规则查找模 块,用于依据所述哈希值在所述匹配规则表中查找对应的匹配规则并与该匹配 规则进行匹配;所述的匹配规则表为一保存有匹配规则的哈希表;匹配成功之 后,确定所述匹配规则所对应的报文类型为所述报文的报文类型。
应用本发明实施例提供的技术,? 1入哈希表作为匹配规则表来存储匹配规 则,通过提取报文的特征字段,将它与预先存储在哈希表中的匹配规则进行比 对,实现报文类型的快速识别,从而将匹配的时间复杂度由O(n)降低到了常 数级别的O(l)。


图1为本发明实施例构造匹配规则表方法流程示意图一; 图2为本发明实施例构造匹配规则表方法流程示意图二; 图3为本发明实施例构造匹配规则表的装置结构示意图; 图4为本发明实施例识别报文类型的方法流程示意图一; 图5为本发明实施例识别报文类型的方法流程示意图二; 图6为本发明实施例识别报文类型的装置结构示意图。
具体实施例方式
为使本发明的目的、技术特征和实施效果更加清楚,下面将结合附图及具 体实施例对本发明的技术方案进行详细描述。本发明提供的实施例用以克服现 有技术中存在的匹配规则表查找效率低的问题和缺陷,提供基于哈希表建立匹 配规则表以及进行报文匹配的方法。
本发明提供的实施例中,提供一种构造匹配规则表的方法,如图l所示, 包括
步骤IOI,计算报文类型对应的匹配规则所对应的哈希值;所述匹配规则 根据报文特征构造而成,描述了一报文的类型为所述报文类型需要满足的条 件;
步骤102,根据所述哈希值将所述匹配规则存入一哈希表中,形成一用于 报文类型识别的匹配关见则表。
应用本实施例提供的技术,以匹配规则表记录不同的报文类型,为在交换 机、路由器等需要处理多种报文类型的网络设备上实现快速识别报文类型提供 了可行方案。
本实施例中为充分揭示构造一匹配规则表的流程,不失一般性,设定存在 一具体的报文类型type,报文pkt,则将匹配规则R(type)和报文的特征字段 C(pkt)分别表示成
R(type) = {Condition 1, Condition2,…, Conditionn } (1) C(pkt) = {Field 1:value 1 , Field2:value2, …,Fieldn:valuen} (2)式(l)中,Conditionl, Condition2等给出了报文类型type需要满足的一系 列条件;式(2)中,给出了报文pkt的各个特征字段的名称和值。
匹配过程中,将报文的一个或多个特征字段的值提取出来,记作C(pkt), 将C(pkt)与已经确定的匹配规则R(type)进行对比,根据对比结果得出结论; 如果C(pkt)满足R(type)所描述的条件,则pkt就是type这一报文类型的报文, 否则pkt不是type报文。
例如, 一个报文的报文类型为ARP的充要条件是由于是以太报文类型, 因此该报文中存在取值为0x0806的以太类型字段EthType,可以将ARP报文 的匹配身见则记为
R(arp) = { EthType=0x0806 }
因此,根据给定的任一报文pkt,提取该报文pkt的以太类型构成报文特 征字段,记为
C(pkt) = { EthType:<ethType>}。其中,〈ethType〉为该报文pkt的实际以太 类型的值;如果〈ethType〉的值为0x0806,说明报文pkt满足匹配规则R(arp), 可以判定pkt是一个arp报文,否则不是arp报文。
同理,ospf报文的匹配规则记为
R(ospf)= { EthType=0x0800, IPVersion=4, Protocol=0x59} 即,当报文的以太类型为0x0800、 IP版本号为4、协议号为0x59时,该 报文才会被认为是ospf报文。
由上述描述可知,对于报文类型的识别,依赖于报文中一个或多个特定字 段的取值,而报文中其他字段的信息(如用户数据)不会影响报文类型的判断。 这些特定字段多位于报文的各层包头中,相对位置固定,因此使用本实施例提
比较,就可以判定报文是否对应的报文类型,相比于逐字节解析报文的做法, 提高了判断报文类型的效率。
本实施例中,给出了一种较为通用的定义匹配规则的结构的方法
{Valid, DstMac=DST_MAC}, {Valid, EthType=ETHTYPE},{Valid, Protocol=PROTOCOL}, {Valid, SrcPort=SRC—PORT}, {Valid, DstPort=DST—PORT}, {Valid, ExtendedCondition}
显然,匹配规则R由6个检查条件构成,每个检查条件包含一个标志Valid 和右面的取值要求,其中,标志Valid用来指出本条^^查条件中,右面对应的 条件是否必须被满足如果此标志Valid为真,则按照给定的字段值对报文进 行检查,如果为假,则对报文不必满足该对应的条件。最后一项检查条件可以 是任意一个必检的扩展^r查条件,可以采用 一个等式或者其他任何形式的表达 式,例如可以用复杂的函数来表示,以便满足某些特殊的匹配需求。
以太网中传输的所有的报文类型的匹配规则均可以用上述结构来描述,一 系列匹配规则插入一哈希表中即构成一匹配规则表。匹配规则表的建立需要确 定每个匹配规则的哈希值,该匹配规则的哈希值需要与计算所得的哈希值对应 起来,因此,只能根据匹配规则中的某一个特定检查字段来计算,这个特定检 查字段即此匹配规则的关4建字段,记为key。
不同的匹配规则并不一定都会4企查同 一个关4建字段,因此无法使用某个固 定的特征字段来做为匹配规则的关键字段。哈希值的计算需要根据每条匹配规 则各自的特点,选择一个合适的关键字段来计算。
本实施例中,对于Ethernet格式报文,该格式报文EthType/Len字段大于 0x0600,代表报文的以太类型,是这类报文匹配规则的必检字段;对于非 Ethernet格式报文,其EthType/Len字段不大于0x0600,不代表报文的以太类 型,但其目的MAC通常都具有明确特征,可以用来识别才艮文类型。因此,每 条匹配规则,在目的MAC字段和EthType/Len字段中,至少有一个是需要检 查的必检字段。
以下所描述的哈希值计算方法,正是基于这一特点,确定了匹配规则的关 键字段,就可以根据其值使用一个哈希函数计算出当前匹配规则的哈希值 hash_code:
hash_code = Hash(ke力 (3)
9通常应用中,均需要按协议应用来区分报文类型;通过分析各种报文的格 式发现,在应用于以太网的报文中,可以根据以下各特征字段中的一个或几个 的取值来识别
目的MAC(DstMac)、以太类型(EthType)、 IP报文协议号(Protocol)、源端 口号(SrcPort)、目的端口号(DstPort)等。
有了匹配规则对应的确定的哈希值,匹配规则就可以根据此哈希值插入哈 希表构成所述匹配规则表。如图2所示,给出了基于上述特征字段作为关键字 段建立匹配规则表的流程
步骤201 ,确定需要被识别的报文类型。
步骤202,将此报文类型所需满足的不同特征转换成当前匹配规则;具体 包括将不同特征字段作为必检字段,在匹配规则中记录对应的值。
步骤203,判断EthType是否当前匹配规则的必检字段,如果不是转步骤 204,否则转步骤205;
步骤204,表明当前匹配规则对应的报文类型非Ethernet格式,选择目的 MAC做为关键字段,转步骤208。
步骤205,判断Protocol是否当前匹配规则的必检字段,如果不是转步骤 206,如果是,转步骤207。
步骤206, EthType是当前的匹配规则的必检字段,以该EthType作为关 键字段,表明当前匹配规则非IPV4或者IPV6报文,当前匹配规则对应的报 文类型是Ethernet格式,转步骤208。
步骤207,选择Protocol做为关键字段,转步骤208。
步骤20S,根据选择的关键字段的值,计算出哈希值hash一code。
步骤209,根据计算出来的哈希值hash—code,将匹配规则插入匹配规则 表中。
步骤210,判断是否还有更多需要被识别的报文类型,如果没有转步骤 211,如果有则返回步骤201。
步骤211,构造匹配规则表的流程结束。
由于不同匹配规则中对哈希值的计算并不一定是依据相同的关键字段,因 此不同的匹配规则存在哈希值相同的可能,即匹配规则表中不同匹配规则之间可能存在沖突;因此,所述哈希值将所述匹配规则存入一哈希表中进一步包括 所述哈希表能够支持沖突链;当出现过多匹配规则具有相同哈希值的匹配规则 插入所述匹配规则表时,所述哈希表自行建立并维护一个冲突链以实现这些匹 配规则的保存。即当不同匹配规则的哈希值相同,哈希表会自动建立一个沖突 链来保存这些匹配规则。如能合理设置匹配规则表的初始的表空间大小,或者 更换哈希值计算函数Hash(key),可以减少甚至消除出现冲突的可能。本实施 例中的"出现过多"是指具有相同哈希值的匹配规则的数目超出了一个预先设 定的能够容忍的限度。
上述实施例提供的方法可以应用于网络安全的各个领域。 与所提供的方法对应,本实施例提供了一种构造匹配规则表的装置,如图 3所示,至少包括
哈希值计算模块301,用于计算报文类型对应的匹配规则对应的哈希值; 所述匹配规则根据报文特征构造而成,描述了报文的类型为所述报文类型需要 满足的条件;
匹配规则表建立模块302,用于根据所述哈希值将所述匹配规则存入一哈 希表中,形成一用于报文类型识别的匹配规则表。
应用本实施例提供的技术,用匹配规则表记录不同的报文类型,为在交换 机、路由器等需要处理多种类型报文的网络设备上实现快速的报文类型识别提 供了可依赖的技术。
还可以包括修正模块303,与哈希值计算模块301连接,统计不同匹配 规则出现哈希值相同的情况,用于当出现过多匹配规则的哈希值相同时,重新 设置所述哈希表的表空间大小,或者更换用于计算所述哈希值的哈希函数;与 匹配规则表建立模块302连接,为所述匹配规则表建立模块302重新建立一匹 配规则表,直至不同匹配规则的哈希值之间的冲突降低到一预定程度;以此改 善存在匹配规则冲突时的性能。这些调整应当在设计阶段确定。
本实施例中,基于上述提供的技术方案所构建匹配规则表,应用该匹配规 则表进行报文匹配,提供一种识别报文类型的方法,如图4所示,具体包括 步骤401,接收到一报文;步骤402,提取所述报文中特征字段的值,生成一报文特征; 步骤403,根据所述报文特征计算出一哈希值;
步骤404,依据所述哈希值在一匹配规则表中查找对应的匹配规则并与该 匹配规则进行匹配;所述的匹配规则表为 一保存有匹配规则的哈希表;
步骤405,匹配成功之后,确定所述匹配规则所对应的报文类型为所述报 文的报文类型。
应用本实施例提供的技术,针对现有技术中存在的匹配规则表查找效率较 低的问题和缺陷进行了改进,引入了哈希表来存储匹配规则表,通过提取报文 的特征字段,将它与预先存储在哈希表中的匹配规则进行比对,实现报文类型 的快速识别,从而将匹配的时间复杂度由O(n)降低到了常数级别的O(l)。
报文匹配是由报文特征选择关键字段并计算哈希值,据此哈希值在匹配规 则表中与不同的匹配规则进行对比。由于匹配规则表中有存在沖突的可能,根 据哈希值找到的第一条匹配规则并不一定能够匹配成功,因此可能需要遍历冲 突链,依次与沖突链上的部分或全部匹配规则进行匹配,直至匹配成功或者全 部不成功。
大部分报文都可以根据以下各字段中的一个或几个的取值来识别目的介 质访问控制地址(DstMAC)、以太类型(EthType)、 IP报文协议号(Protocol)、源 端口号(SrcPort)、目的端口号(DstPort)等。如图5所示的报文匹配的流程图, 对于任意报文,包括
步骤501,解析报文,提取报文中一特征字段EthType/Len的值。 步骤502,判断EthType/Len的值是否大于0x0600,如果是转步骤504, 否则转步骤503。
步骤503,此特征字段为Len,非Ethernet格式的报文,需要选择报文的 目的MAC作为关4建字段Key。
步骤504,此特征字段为EthType,需要进一步进行判断EthType的值是 否为0x0800或0x86dd,如果是转步骤506,否则转步骤505。
步骤505,需要选择EthType作为关键字段Key并转步骤507。
步骤506,报文是IPV4或IPV6报文,需要选择报文的Protocol作为关键 字段Key。
12步骤507,提取报文中由步骤503、步骤505或步骤506中得到的关键字 段Key的值,计算出该报文的哈希值hash一code。本步骤507实质上处理的是 非IP的ETHERNET格式的报文,因此用EthType做关44字4更Key。
步骤508,使用所述hash—code对匹配规则表进行哈希查找,尝试找到此 hash—code对应的下一条匹配MJ'J R(hash—code);
步骤509,判断查找匹配规则R(hash—code)是否存在,如果存在转步骤510, 否则转步骤512。
步骤510,已找到R(hash_code),将报文的报文特征与此匹配规则进行比 寿交匹配;
判断是否匹配成功,如果是转步骤511,否则转步骤508。
步骤511,匹配规则中所有对应的必检字段的值与报文对应的特征字段的
值都完全相同,且满足扩展检查条件,则报文匹配成功,当前匹配规则对应的
报文类型就是待识别的报文的报文类型,转步骤513。
步骤512,报文无法匹配成功,匹配失败不再需要进行任何对比,因此转
步骤513。
匹配不成功的原因是在匹配规则表中没有找到能够描述待匹配报文的特 征的匹配失见则。
步骤513,匹配流程结束。
根据报文选择不同的特征字段作为关键字段,与前述实施例中根据匹配规 则的特点选择关键字段是对应的,并且也使用相同的哈希函数计算各自的哈希 值,从而快速找到匹配规则。
与报文匹配方法对应地,本实施例提供了一种能够识别报文类型的装置, 如图6所示,包括
报文接收模块601,用于接收报文。
报文特征提取模块602,用于提取所述报文中的特征字段,生成一报文特征。
报文特征哈希值计算模块603,用于根据所述报文特征计算出 一哈希值。 匹配规则查找模块604,用于依据所述哈希值在一匹配规则表中查找对应 的匹配规则并与该匹配规则进行匹配;所述的匹配规则表为 一保存有匹配规则的哈希表;
匹配成功之后,确定所述匹配规则所对应的报文类型为所述报文的报文类型。
应用本实施例提供的技术,针对现有技术中存在的匹配规则表查找效率较 低的问题和缺陷进行了改进,引入了哈希表来存储匹配规则表,通过提取报文 的特征字段,将它与预先存储在哈希表中的匹配规则进行比对,实现报文类型 的快速识别,相对于采用线性表存储匹配规则的方式,将匹配的时间复杂度由 O(n)降低到了常数级别的0(1)。
为了在任意报文pkt被装置接收到时均可以被处理,匹配规则和匹配规则 表应当在对装置进行初始化时准备好,因此还包括
匹配规则表存储模块,用于存储所述匹配规则和匹配规则表,即匹配规则 是事先已经确定的,并以匹配规则表的形式存储在装置中备用。
本发明的实施例具有以下有益效果,针对现有技术中存在的匹配规则表查 找效率较低的问题和缺陷进行了改进,引入了哈希表来存储匹配规则表,从而 将匹配的时间复杂度降低到0(1)。
应当说明的是,以上实施例仅用以说明本发明的技术方案而非限制,所有 的参数取值可以根据实际情况调整,且在该权利保护范围内。本领域的普通技 术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离 本发明技术方案的精神范围,其均应涵盖在本发明的权利要求范围当中。
1权利要求
1.一种构造匹配规则表的方法,其特征在于,包括计算报文类型对应的匹配规则的哈希值;所述匹配规则根据报文特征构造而成,描述了一报文的类型为所述报文类型需要满足的条件;根据所述哈希值将所述匹配规则存入一哈希表中,形成一用于报文类型识别的匹配规则表。
2. 根据权利要求1所述的方法,其特征在于,所述匹配规则包含至少一 个应满足的条件,每一条件为一特征字段应取的值;在以太网中所传输的报文中,所述特征字段包括目的介质访问控制地址、以太类型、IP报文协议号、源端口号、目的端 口号中的至少一个。
3. 根据权利要求1所述的方法,其特征在于,计算所述匹配规则的哈希 值进一步包括确定一所述匹配规则的一关键字段,使用一哈希函数根据所述关键字段计 算出所述匹配规则的哈希值。
4. 根据权利要求1所述的方法,其特征在于,根据所述哈希值将所述匹 配规则存入一哈希表中进一步包括所述哈希表能够支持沖突链;当出现过多具有相同哈希值的匹配规则插入所述匹配规则表时,所述哈希 表自行建立并维护所述沖突链以实现这些所述匹配规则的保存。
5. —种构造匹配规则表的装置,其特征在于,包括 哈希值计算模块,用于计算报文类型对应的匹配规则的哈希值;所述匹配规则根据报文特征构造而成,描述了报文的类型为所述报文类型需要满足的条 件;匹配规则表建立模块,用于根据所述哈希值将所述匹配规则存入一哈希表 中,形成一用于报文类型识别的匹配规则表。
6. 根据权利要求5所述的装置,其特征在于,修正模块,用于当出现过多匹配规则的哈希值相同时,重新设置所述哈希表的表空间大小,或者更换用于计算所述哈希值的哈希函数;重新建立一匹配 规则表,直至不同匹配规则的哈希值之间的沖突降低到一预定程度。
7. —种识别报文类型的方法,其特征在于,包括 接收到一报文;提取所述报文中特征字段的值,生成一报文特征; 根据所述报文特征计算出 一哈希值;根据所述哈希值在匹配规则表中查找对应的匹配规则,将所述报文特征与 该匹配规则进行匹配;所述匹配规则表为 一保存有匹配^见则的p合希表;匹配成功之后,确定所述匹配规则所对应的报文类型为所述报文的报文类型。
8. 根据权利要求7所述的方法,其特征在于,根据所迷,合希值在匹配规则表中查找对应的匹配规则,将所述报文特征与 该匹配规则进行匹配进一 步包括的特征字段的值一致时,匹配成功;当所述匹配规则中还包括必检的扩展检查条件,则所述报文还需满足所述 扩展检查条件方能匹配成功。
9. 根据权利要求7所述的方法,其特征在于,根据所述哈希值在一匹配 规则表中查找对应的匹配规则,将所述报文特征与该匹配规则进行匹配进一步 包括当根据所述哈希值找到 一所述匹配规则后,所述报文特征与所述匹配规则 不匹配,且匹配规则表中有更多与该哈希值对应的匹配规则时,遍历所述匹配 规则表中的与该哈希值对应的其他匹配规则,依次与查找到的每条匹配规则进 4亍匹配。
10. 根据权利要求7所述的方法,其特征在于,所述匹配规则包含至少一 个应满足的条件,每一条件为一特征字段应取的值;在以太网中所传输的报文中,所述特征字段包括 目的介质访问控制地址、以太类型、IP报文协议号、源端口号、目的端 口号中的至少一个。
11. 根据权利要求7所述的方法,其特征在于,将所述^J艮文特征与该匹配 规则进行匹配进一步包括所述报文满足预先设置的扩展检查条件。
12. —种能够识别报文类型的装置,其特征在于,包括 报文接收模块,用于接收报文;报文特征提取模块,用于提取所述报文中的特征字段,生成一报文特征; 报文特征哈希值计算模块,用于根据所述报文特征计算出 一哈希值; 匹配规则查找模块,用于根据所述哈希值在所述匹配规则表中查找对应的匹配规则并与该匹配规则进行匹配;所述匹配规则表为 一保存有匹配规则的哈希表;匹配成功之后,确定所述匹配规则所对应的报文类型为所述报文的报文类型。
全文摘要
本发明提供一种构造匹配规则表及识别报文类型的方法和装置,其中方法包括计算报文类型对应的匹配规则的哈希值;所述匹配规则根据报文特征构造而成,描述了一报文的类型为所述报文类型需要满足的条件;根据所述哈希值将所述匹配规则存入一哈希表中,形成一用于报文类型识别的匹配规则表。应用本发明实施例提供的技术,通过提取报文的特征字段,将它与预先存储在哈希表中的特定匹配规则进行比对,实现报文类型的快速识别,从而将报文匹配的时间复杂度由O(n)降低到了常数级别的O(1)。
文档编号H04L29/06GK101562612SQ200910085600
公开日2009年10月21日 申请日期2009年5月26日 优先权日2009年5月26日
发明者周鹏辉 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1