CN107204891A - 一种海量规则下报文识别的方法及装置 - Google Patents

一种海量规则下报文识别的方法及装置 Download PDF

Info

Publication number
CN107204891A
CN107204891A CN201610156886.8A CN201610156886A CN107204891A CN 107204891 A CN107204891 A CN 107204891A CN 201610156886 A CN201610156886 A CN 201610156886A CN 107204891 A CN107204891 A CN 107204891A
Authority
CN
China
Prior art keywords
list
address
rule
rules
fingerprint
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610156886.8A
Other languages
English (en)
Inventor
乔伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN201610156886.8A priority Critical patent/CN107204891A/zh
Priority to PCT/CN2017/077126 priority patent/WO2017157335A1/zh
Publication of CN107204891A publication Critical patent/CN107204891A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/026Capturing of monitoring data using flow identification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/695Types of network addresses using masks or ranges of addresses

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种海量规则下数据报文识别的方法和装置,所述方法包括:解析接收到的数据报文,确定所述数据报文携带的规则包括IP地址;根据所述IP地址的前16位确定所述IP地址在子网掩码长度为16对应的第一规则列表中存在时,识别到所述IP地址;和/或根据所述IP地址的前16位确定所述IP地址在所述第一规则列表中不存在时,根据所述子网掩码的长度确定对应的规则列表,对所述IP地址进行识别。

Description

一种海量规则下报文识别的方法及装置
技术领域
本发明涉及通信领域,尤其涉及一种海量规则下报文识别的方法及装置。
背景技术
本申请发明人在实现本申请实施例技术方案的过程中,至少发现相关技术中存在如下技术问题:
在移动通信网关中,需要对数据报文中的IP层、传输层以及应用层进行识别匹配,根据识别结果对应的策略对报文进行相应的处理。具体包括:(1)识别数据报文四层以下IP层和传输层的内容五元组,内容五元组包括:源IP地址、源端口、目的IP地址、目的端口、以及协议类型;(2)识别应用层的内容,根据应用层的净荷指纹识别应用的类型或内容。
针对内容五元组的识别,目前IP地址类规则识别主要通过类传统路由包算法,例如trie树等。针对应用层的识别,目前主要是通过正则表达式匹配的方式。当网关处于海量规则识别情景下时,现有的识别方法使得网关对报文的识别性能急剧下降,不能满足网关对报文识别效率方面的要求。因此,亟需一种海量规则下报文识别的方法,提高报文识别的效率,满足网关对报文识别效率方面的要求。
发明内容
有鉴于此,本发明实施例希望提供一种海量规则下报文识别的方法及装置,至少解决了现有技术中海量规则条件下,聚合IP地址识别效率低的问题。
本发明实施例的技术方案是这样实现的:
本发明实施例提供一种海量规则下数据报文识别的方法,所述方法包括:
解析接收到的数据报文,确定所述数据报文携带的规则包括IP地址;
根据所述IP地址的前16位确定所述IP地址在子网掩码长度为16对应的第一规则列表中存在时,识别到所述IP地址;和/或根据所述IP地址的前16位确定所述IP地址在所述第一规则列表中不存在时,根据子网掩码的长度确定对应的规则列表,对所述IP地址进行识别。
上述方案中,所述方法还包括:以所述IP地址的前16位为下标在所述第一规则列表中查找所述IP地址,当查找到所述IP地址时,确定所述IP地址在所述第一规则列表中存在。
上述方案中,所述根据子网掩码的长度确定对应的规则列表,对所述IP地址进行识别包括:以所述IP地址的前16位为下标在所述第一规则列表的对应位置处下挂的第二规则列表;其中,所述第二规则列表为子网掩码的长度为17至23对应的长度为7的规则列表;以子网掩码的长度减去16得到的数值为下标,在所述第二规则列表的对应位置处查找所述IP地址,当查找到所述IP地址时,识别到所述IP地址。
上述方案中,所述根据子网掩码的长度确定对应的规则列表,对所述IP地址进行识别包括:以所述IP地址的前16位为下标在所述第一规则列表的对应位置处下挂的第三规则列表;其中,所述第三规则列表为子网掩码的长度为24对应的长度为256的规则列表;以子网掩码的第17至24位为下标在所述第三规则列表的对应位置处查找所述IP地址,当查找到所述IP地址时,识别到所述IP地址。
上述方案中,所述根据子网掩码的长度确定对应的规则列表,对所述IP地址进行识别包括:以所述IP地址的第17至24位为下标在所述第三规则列表的对应位置处下挂的第四规则列表,其中,第三规则列表根据所述IP地址的前16位确定,所述第四规则列表为子网掩码的长度为25至31对应的长度为7的规则列表;以子网掩码的长度减去24得到的数值为下标,在所述第四规则列表的对应位置处查找所述IP地址,当查找到所述IP地址时,识别到所述IP地址。
上述方案中,当确定所述数据报文携带的规则包括IP地址或域名时,对所述规则分别通过第一哈希算法和第二哈希算法进行哈希运算得到第一指纹和第 二指纹,根据所述第一指纹和所述第二指纹识别所述规则。
上述方案中,所述根据所述第一指纹和所述第二指纹识别所述规则包括:将所述第二指纹和第一哈希列表的第一指纹对应位置存储的值做比较,当一致时,识别到所述规则。
上述方案中,所述根据所述第一指纹和所述第二指纹进行识别所述规则包括:当所述第一哈希列表的第一指纹对应位置的值为非空,且第二哈希列表的第二指纹对应位置的值大于1时,遍历所述第一哈希列表的第一指纹对应位置处的链表,当所述链表中存在所述规则时,识别到所述规则。
本发明实施例还提供一种海量规则下数据报文识别的装置,所述装置包括:解析模块、和识别模块;其中,
所述解析模块,用于解析接收到的数据报文,确定所述数据报文携带的规则包括IP地址;
所述识别模块,用于根据所述IP地址的前16位确定所述IP地址在子网掩码长度为16对应的第一规则列表中存在时,识别到所述IP地址;和/或根据所述IP地址的前16位确定所述IP地址在所述第一规则列表中不存在时,根据子网掩码的长度确定对应的规则列表,对所述IP地址进行识别。
上述方案中,所述识别模块包括:第一识别模块,用于以所述IP地址的前16位为下标在所述第一规则列表中查找所述IP地址,当查找到所述IP地址时,确定所述IP地址在所述第一规则列表中存在。
上述方案中,所述识别模块包括:
第二识别模块,用于以所述IP地址的前16位为下标在所述第一规则列表的对应位置处下挂的第二规则列表;其中,所述第二规则列表为子网掩码的长度为17至23位对应的长度为7的规则列表;以子网掩码的长度减去16得到的数值为下标,在所述第二规则列表的对应位置处查找所述IP地址,当查找到所述IP地址时,识别到所述IP地址。
上述方案中,所述识别模块包括:第三识别模块,用于以所述IP地址的前16位为下标在所述第一规则列表的对应位置处下挂的第三规则列表;其中,所 述第三规则列表为子网掩码的长度为24位对应的长度为256的规则列表;以子网掩码的第17至24位为下标在所述第三规则列表的对应位置处查找所述IP地址,当查找到所述IP地址时,识别到所述IP地址。
上述方案中,所述识别模块还包括:第四识别模块,用于以所述IP地址的第17至24位为下标在所述第三规则列表的对应位置处下挂的第四规则列表,其中,第三规则列表根据所述IP地址的前16位确定,所述第四规则列表为子网掩码的长度为25至31位对应的长度为7的规则列表;以子网掩码的长度减去24得到的数值为下标,在所述第四规则列表的对应位置处查找所述IP地址,当查找到所述IP地址时,识别到所述IP地址。
上述方案中,所述装置还包括:规则模块,用于当确定所述数据报文携带的规则包括IP地址或域名时,对所述规则分别通过第一哈希算法和第二哈希算法进行哈希运算得到第一指纹和第二指纹,根据所述第一指纹和所述第二指纹识别所述规则。
上述方案中,所述根据所述第一指纹和所述第二指纹识别所述规则包括:
将所述第二指纹和第一哈希列表的第一指纹对应位置存储的值做比较,当一致时,识别到所述规则。
上述方案中,所述根据所述第一指纹和所述第二指纹进行识别所述规则包括:
当所述第一哈希列表的第一指纹对应位置的值为非空,且第二哈希列表的第二指纹对应位置的值大于1时,遍历所述第一哈希列表的第一指纹对应位置处的链表,当所述链表中存在所述规则时,识别到所述规则。
本发明实施例的一种海量规则下数据报文识别的方法,所述方法包括:解析接收到的数据报文,确定所述数据报文携带的规则包括IP地址;根据所述IP地址的前16位确定所述IP地址在子网掩码长度为16对应的第一规则列表中存在时,识别到所述IP地址;和/或根据所述IP地址的前16位确定所述IP地址在所述第一规则列表中不存在时,根据所述子网掩码的长度确定对应的规则列表,对所述IP地址进行识别。采用本发明实施例,在海量规则场景下,根据数 据报文中的IP地址前16位查找子网掩码长度为16对应的第一规则列表,并快速找到规则在第一规则列表的位置,确定是否存在第一规则列表中,如果查找到则查找成功,识别到该IP地址,且认为该IP地址的子网掩码为16位,识别过程结束,否则继续查找与子网掩码的长度关联的其他规则列表对IP地址进行识别,从而节省识别的时间、空间,提高数据报文识别的效率。
附图说明
图1为本发明实施例一提供的一种海量规则下数据报文识别的方法的流程示意图;
图2为本发明实施例一提供的又一种海量规则下数据报文识别的方法的流程示意图;
图3本发明实施例提供的子网掩码长度为16时规则列表的结构示意图;
图4为本发明实施例提供的子网掩码长度为17-23时规则列表的结构示意图;
图5为本发明实施例提供的子网掩码长度为24时规则列表的结构示意图;
图6为本发明实施例提供的子网掩码长度为25-31时规则列表的结构示意图;
图7为本发明实施例三一种海量规则下数据报文识别的方法的流程示意图;
图8为本发明实施例四提供的一种海量规则下数据报文识别的装置的结构示意图;
图9为本发明实施例四提供的又一种海量规则下数据报文识别的装置的结构示意图。
具体实施方式
下面结合附图对技术方案的实施作进一步的详细描述。
实施例一
本发明实施例一提供一种海量规则下数据报文识别的方法,如图1所示,该方法包括:
S101:解析接收到的数据报文,确定所述数据报文携带的规则包括IP地址;
S102:根据所述IP地址的前16位确定所述IP地址在子网掩码长度为16对应的第一规则列表中存在时,识别到所述IP地址;和/或根据所述IP地址的前16位确定所述IP地址在所述第一规则列表中不存在时,根据所述子网掩码的长度确定对应的规则列表,对所述IP地址进行识别。
这里,当网关接收到数据报文时,需要对数据报文携带的各种规则进行识别,以匹配运营商定制的各种不同的计费规则,从而进行流量细化经营。
在S101中,当网关接收到数据报文时,接收到的数据报文包括各种规则,对接收到的数据报文进行解析,解析接收到的数据报文携带的规则,当数据报文携带的规则包括IP地址时,对所述IP地址进行识别。
在S102中,在子网掩码长度为16对应的第一规则列表对S101中解析出的IP地址进行初步匹配,具体的,以所述IP地址的前16位为下标在第一规则列表中查找所述IP地址,当查找到所述IP地址时,确定所述IP地址在第一规则列表中存在,此时,识别到该IP地址,否则通过查找与第一规则列表关联的其他规则列表识别所述IP地址。其中,当在第一规则列表中查找到该IP地址时,表明该IP地址的子网掩码的长度为16。第一规则列表为长度为65536的线性列表,其下标依次从0-65535。
当接收一IP地址时,根据所述IP地址的前16位确定所述IP地址在子网掩码长度为16对应的第一规则列表中存在时,识别到所述IP地址;识别流程结束。
当接收一IP地址时,根据所述IP地址的前16位确定所述IP地址在所述第一规则列表中不存在时,根据所述子网掩码的长度确定对应的规则列表,对所述IP地址进行识别。
以该IP地址的前16位为下标在第一规则列表中未查找到该IP地址时,表明该IP地址在第一规则列表中不存在,未识别到该IP地址,此时,需要根据 子网掩码的长度确定对应的规则列表,查找与子网掩码长度关联的其他线性列表,对该IP地址进行识别。
查找子网掩码的长度为17至23位的第二规则列表,具体的:以所述IP地址的前16位为下标在所述第一规则列表的对应位置处下挂的第二规则列表;其中,所述第二规则列表为子网掩码的长度为17至23对应的长度为7的规则列表;以所述子网掩码的长度减去16得到的数值为下标,在所述第二规则列表的对应位置处查找所述IP地址,当查找到所述IP地址时,识别到所述IP地址。
查找子网掩码的长度为24位对应的第三规则列表,具体的,以所述IP地址的前16位为下标在所述第一规则列表的对应位置处下挂的第三规则列表;其中,所述第三规则列表为子网掩码的长度为24对应的长度为256的规则列表;以所述子网掩码的第17至24位为下标在所述第三规则列表的对应位置处查找所述IP地址,当查找到所述IP地址时,识别到所述IP地址。
查找子网掩码的长度为25至31位对应的规则列表,具体的,以所述IP地址的第17至24位为下标在所述第三列表的对应位置处下挂的第四规则列表,其中,第三规则列表根据所述IP地址的前16位确定,所述第四规则列表为子网掩码的长度为25至31位对应的长度为7的规则列表;以所述子网掩码的长度减去24得到的数值为下标,在所述第四规则列表的对应位置处查找所述IP地址,当查找到所述IP地址时,识别到所述IP地址。
在该方法中,在子网掩码为16位的第一规则列表中查找是否存在该IP地址,当存在时,识别过程结束,识别到该IP地址,且该IP地址为子网掩码长度为16的聚合IP地址;当不存在时,再根据子网掩码的长度查找与第一规则列表相关联的其他子网掩码长度对应的线性列表。
如图2所示,本方法还包括:S103:当确定所述数据报文携带的规则包括IP地址或域名时,对所述规则分别通过第一哈希算法和第二哈希算法进行哈希运算得到第一指纹和第二指纹,根据所述第一指纹和所述第二指纹识别所述规则。
在实际应用中,IP地址包括聚合IP地址和精确IP地址,除了对子网掩码 位数为16-31位的聚合IP地址进行识别外,还需要对不存在子网掩码或子网掩码长度为32的精确IP地址进行识别,另外,接收到的数据报文的规则还包括域名。如图4所示,当接收到数据报文时,对接收到的数据报文携带的规则进行识别,规则可包括IP地址,域名等规则,但经过S104的步骤未识别到接收到的规则时,可通过实施例一所述的S102、S103根据子网掩码长度分别为16位、17-23位、24位、25-31位对应的第一规则列表、第二规则列表、第三规则列表、第四规则列表对该IP进行识别,当识别到时,确定该IP为聚合IP。
所述根据所述第一指纹和所述第二指纹识别所述规则可包括:
(1)将所述第二指纹和第一哈希列表的第一指纹对应位置存储的值做比较,当一致时,识别到所述规则。
具体的,在规则的配置时,接收到一规则,将该规则通过第一哈希算法做哈希运算得到第一指纹(即第一哈希值X1),并通过第二哈希算法做哈希运算得到第二指纹(即第二哈希值X2),将得到的第二指纹存储在第一哈希表中的第一指纹对应位置P位置处,其中P为对X1通过模运算P=X1%L1得到,L1为第一哈希表H1的长度。在接收到数据报文,对该数据报文的精确IP地址或域名等规则进行识别时,将该规则分别通过第一哈希算法和第二哈希算法进行哈希运算后分别得到第一指纹X1和第二指纹X2,对X1做模运算P=X1%L1得到P,以P为下标在第一哈希表H1的P位置处查找是否存在X2,当存在时,则查找成功,识别到该规则。
其中,对X1通过模运算P=X1%L1为对通过X1处于L1后取余,比如:5%2=1。
(2)当所述第一哈希列表的第一指纹对应位置的值为非空,且第二哈希列表的第二指纹对应位置的值大于1时,遍历所述第一哈希列表的第一指纹对应位置处的链表,当所述链表中存在所述规则时,识别到所述规则。
具体的,在规则的配置时,经过(1)中的存储之后,再次接收到一规则,将该规则通过第一哈希算法做哈希运算得到第一指纹X1,则通过第二哈希算法做哈希运算得到第二指纹X2,此时,得到的该规则的第一指纹和第二指纹的值 和(1)中的第一指纹X1和第二指纹X2的值是否相同,不同时,根据(1)中的配置方法进行存储,当相同时,产生哈希冲突。此时,分别对第一指纹和第二指纹做模运算P=X1%L1,P2=X2%L2,置第一哈希列表中的P位置处为非空,且在P位置处下挂链表L,将经哈希运算后得到的指纹的值相同的规则存储在该链表L中,同时,将第二哈希列表中的P2位置处的值加1,为2。当对接收到的规则进行识别时,将该规则分别通过第一哈希算法和第二哈希算法进行哈希运算得到第一指纹X1和第二指纹X2,当第一哈希列表的第一指纹X1对应位置P位置处为非空,且第二哈希列表的第二指纹对应位置P2位置处大于1时,遍历第一哈希列表H1的P位置处下挂的链表L,当在L中查找到该规则时,则匹配到该规则,表明识别到该规则。
这里需要说明的是,当不存在两个以上的规则的第一指纹的值相同时,不存在哈希冲突,则直接在第一哈希列表H1中查找该规则;当存在两个以上的规则的第一指纹的值相同时,此时,发生哈希冲突,则在第一哈希列表H1的第一指纹对应位置处下挂的链表中查找该规则,其中,第二哈希列表H2中的第二指纹对应位置处的数值为与冲突的记录次数。
在实际应用中,本发明实施例中的第一哈希算法和第二哈希算法,采用MurmurHash64A,murmurHash3_32等哈希算法,但不仅限于这两种,优选的,第一哈希算法和第二哈希算法可选取冲突率低的哈希算法。
采用本发明实施例提供的方法,对IP层、传输层的五元组识别性能分析如下:
95%的报文1次查找获得结果,5%的报文2-7次获得结果(取中值4),若采用类似Trie的路由器算法,由于32地址的每bit都会参与运算,即使按照掩码最小16位计算,平均比较次数至少16次。由此可以得出算法性能的对比为(95%*1+5%*4=0.97):16,也就是说提升15倍,考虑到Trie算法的实际运算开销更大(更多的内存寻址,更多的比较和判断),真实场景下的性能差距在50-100倍之间。对第应用层的识别和传统正则表达式等算法进行对比,哈希指纹的计算比正则判断URL快10倍+。数学理论:两个指纹相同而应用层内容不 同的误码率10^-8,三个误码率为10^-23。
在实际应用中,除了通过精确的五元组与域名规则在概率上可以识别95%-98%的报文,还有2-5%的报文需要做进一步的识别。而这些需要进一步识别的报文,主要因为配置的规则库中存在聚合IP地址,这种情况下,使用本发明实施例提供的数据报文的是被方法,通过聚合IP的规则识别报文中的五元组时,很大程度上提高了识别的效率。
实施例二
本发明实施例二中,在该实施例中,以IP地址为192.168.1.1为例,通过其子网掩码的长度分别为16、17、24和25位为例对本发明实施例中的聚合IP地址识别的过程进行详细说明。这里,在识别之前,首先对规则的配置过程及存储过程进行说明,对192.168.1.1进行存储时,根据该IP地址携带的子网掩码的长度进行存储,具体的:
当子网掩码长度为16时,创建如图3所示的第一规则列表,建立如图3所示的第一规则列表List16,其中第一规则列表为线性列表,比如数组列表,大小为2^16即65536,第i位置处存储的数据可表示为List16[i],0≤i≤65535。
比如:规则为IP地址192.168.1.1,子网掩码为255.255.0.0即子网掩码长度为16,将IP地址和子网掩码做与运算192.168.1.1&255.255.0.0得到该IP地址的前十六位,将得到的二进制转换为整数49320,以49320作为下标存储在第一规则列表的List16[49320]位置处,即存储在以IP地址的前16位为下标的第一规则列表的位置处List16[IP前16位],这个位置的指向链表的指针为空。这个位置就存储着192.168.1.1掩码长度为16这条规则。
当规则的子网掩码长度为24,如图4所示,首先将该规则定位到List16[IP前16位]位置处,创建第三规则列表List24,即在该位置处下挂第三规则列表,取该规则IP地址的第三个8位作为List24表的下标,List24的长度为2^8即256。
比如:规则为IP地址192.168.1.1,子网掩码为255.255.255.0,这样掩码长度为24;首先通过IP地址的前16位二进制192.168转化为下标确定在List16数组中的位置即49320处,可表示为List16[49320],然后在List16[49320]位置 处下挂一个链表第三规则列表List24,再将IP地址的第三个8位,即第17~24位与255做与运算得到1,则在确定List24[1]的位置处存储该规则,也就是将子网掩码长度为24的IP地址存储在第三规则列表List24的List24[1]位置处。
当规则的子网掩码长度为17~23,如图5所示,首先将该规则定位到List16[IP前16位]元素节点处,然后在List16下面创建List17_23线性表,其大小为7,下标为1…7(分别对应掩码17…23),可以每个元素包括指向一个单向链表存放对应掩码的规则;
比如,规则为IP地址192.168.1.1,子网掩码为255.255.128.0,则子网掩码长度为17;首先通过前16位二进制192.168转化为下标49320,确定List16[49320]即List16的49320处,在该位置处下挂第二规则列表List17_23线性表,如图5所示,其大小为7,这样通过17-16=1,将该IP地址存储到1位置处,即存储在List17_23[1]。
基于存在同时多个规则可能同时需要存储在List16[49320]处下挂的第二规则第二规则列表的1-7的每一个位置处,因此,可在第二规则列表的List17_23的1-7的每个位置处下挂规则列表,如果又来一条规则根据其前16为确定位于List16[49320]处,且同时掩码长度也是17,则在1的位置处继续插入规则;如图5所示,如果掩码长度为19,则19-16=3,在3处下挂链表插入规则。
当规则的子网掩码长度为25~31时,如图6所示,那么同样在第三规则列表List24下创建长度为7的第四规则列表List25_31,下标为1…7(分别对应掩码25…31),可以每个元素包括指向一个单向链表存放对应掩码的规则。
比如:规则为IP地址192.168.1.1,子网掩码为255.255.255.128,这样掩码长度为25;首先通过前16位二进制192.168转化为下标确定在List16数组中的位置即49320处,然后通过192.168.1.1中第3个8位二级制为1,确定在第一规则列表List16[49320]位置处下挂的第三规则列表List24的List24[1],继续在List24[1]位置处下挂的第四规则列表List25_31查找所述规则。这里,在List24[1]处下挂的List25_31的下标为1…7(分别对应掩码25…31)。
这样,通过25-24=1,确定在List25_31[1]处存储该规则。同子网掩码长 度为17-23相同,基于存在同时多个规则可能同时需要第四规则列表的1-7的每一个位置处,因此,可在List25_31[1]位置处下挂列表存储这样的规则。
数据报文识别过程
当接收到数据报文时,接收到的IP地址为192.168.1.1,在第一规则列表的List16[49320]位置处查找192.168.1.1,具体的List16[49320]的确定方式同存储过程的确定方式,当查找到时,则识别到192.168.1.1,且该IP地址的子网掩码为255.255.0.0,长度为16位。当未识别到时,通过子网掩码的长度查找与第一规则列表关联的其他规则列表。
查找子网掩码长度为17-23对应的第二队则列表,当查找List16[49320]位置处下挂的第二规则列表List17_23,且在List17_23[1]位置处或List17_23[1]位置处下挂的线性列表中查找到该IP时,识别到该IP地址,且子网掩码255.255.128.0,子网掩码长度为17。
查找子网掩码长度为24的第三规则列表,当查找List16[49320]位置处下挂的第三规则列表List24,且在List24[1]位置处查找到该IP时,识别到该IP地址,且子网掩码为255.255.255.0,子网掩码长度为24。
查找子网掩码长度为25-31对应的第四规则列表,确定List16[49320]位置处下挂的第三规则列表List24[1],当查找List24[1]位置处下挂的第四规则列表List25_31,且在List25_31[1]位置处或List25_31[1]位置处下挂的线性列表查找到该IP时,识别到该IP地址,且当子网掩码为255.255.255.128时,子网掩码长度为25。
优选的,本方案中,可以第一规则列表、第三规则列表、第二规则列表、第四规则列表的顺序进行查找,也可以第一规则列表、第二规则列表、第三规则列表、第四规则列表的顺序进行查找,以第一规则列表为首,对其他的查找顺序不做具体限定。
这里需要说明的是,IP地址是192.168.1.1为十进制的表示,当表示为二进制时为11000000.10101000.00000001.00000001,前十六位1100000010101000转换为十进制为49320,第3个8位即17-24位为1。
实施例三
在本发明实施例三中,对本发明实施例提供的包括一级域名、二级域名或五元组规则等规则的识别过程进行说明。其中,这里的规则以域名为www.baidu.com,采用的哈希算法为MurmurHash64A,murmurHash3_32为例进行说明。
这里,在规则的识别之前,首先需要进行规则的配置,如图7所示,具体的配置过程如下。
S701:分别通过第一哈希算法和第二哈希算法对规则进行哈希运算,得到第一指纹和第二指纹;
对规则www.baidu.com分别通过hash算法C1、C2进行哈希运算分别得到一个4字节的哈希值即指纹,每条规则需要存储两个指纹共计8字节;C1为第一哈希算法,采用MurmurHash64A,C2为第二哈希算法,采用murmurHash3_32。
S702,未存在哈希冲突时,将第一指纹存储在第一哈希指纹对应第一哈希列表的对应位置处;
将规则通过第一哈希算法C1MurmurHash64A计算得到无符号64位整数第一指纹X1,将规则通过第二哈希算法C2murmurHash3_32计算得到无符号32位整数第二指纹X2,将第一指纹X1作模运算P=X1%L1得到P,将第二指纹X2存储到第一哈希表H1中,存储的位置为H1[P]位置处。
S703,存在哈希冲突图时,存储在第一哈希列表的第一指纹对应位置处下挂的链表中;
如果发生哈希冲突时,则在H1[P]位置处下挂链表L来解决冲突;将规则存储在链表L中,并且将第二指纹X2作模运算P2=X2%L2得到P2,将第二哈希表H2的H2[P2]的值加1。
在本方案中,当不存在哈希冲突时,将规则通过第一哈希算法C1哈希算法计算得到X1,通过对X1取余P=X1%L1确定位置P,其中,L1为哈希表H1长度;将规则经过第二哈希算法C2哈希算法计算得到无符号32位整数X2,将X2存储到哈希表H1的位置P处。存在哈希冲突时,将规则通过C1计算得 到X1,通过对X1取余P=X1%L1得到P,将H1的P位置处下挂链表L;将规则经过C2计算得到X2,将X2经过模运算(取余运算)得到P2,将H2的P2的位位置加1。如果有冲突记录为冲突次数比如冲突2次,就是2;存储到哈希表H1中的位置P处。如果存在哈希冲突则通过在该位置下挂链表L解决。置存储的值代表规则是否存在。
在实际应用中,H2的P2位置处存储的值代表规则是否存在。当首次计算得到P2时,将该位置处置1,如果有冲突则该位置处的记录为冲突次数比如冲突2次,就是2;冲突次数5此,则为5。
具体的识别过程为:
当数据报文经过网关,解析数据报文提取网关超文本传输协议(Hyper Text Transport Protocol,HTTP)层的主机域名,利用上述两级哈希算法第一哈希算法、第二哈希算法,分别得到X1和X2,查找第一哈希表H1中P位置的32位整数即(4个字节),当H1的P位置获取的32位整数为X2时,判断记录存在,识别到www.baidu.com,说明该报文匹配到此规则。如果从H1的P位置获取的32位整数不为X2时,判断是否为空,如果不为空,且H2中的P2位置处是够大于1,当大于1时,遍历H1中P位置处下挂的链表L,当查找到www.baidu.com时,识别到www.baidu.com,说明该报文匹配到此规则。
实施例四
为实现上述方法,本发明实施例四提供一种海量规则下数据报文识别的装置,如图8所示,所述装置包括:解析模块801、和识别模块802;其中,
解析模块801,用于解析接收到的数据报文,确定所述数据报文携带的规则包括IP地址;
识别模块802,用于根据所述IP地址的前16位确定所述IP地址在子网掩码长度为16对应的第一规则列表中存在时,识别到所述IP地址;和/或根据所述IP地址的前16位确定所述IP地址在所述第一规则列表中不存在时,根据子网掩码的长度确定对应的规则列表,对所述IP地址进行识别。
如图9所示,识别模块802包括:第一识别模块8021,用于以所述IP地 址的前16位为下标在所述第一规则列表中查找所述IP地址,当查找到所述IP地址时,确定所述IP地址在第一规则列表中存在。
如图9所示,识别模块802:第二识别模块8022,用于以所述IP地址的前16位为下标在所述第一规则列表的对应位置处下挂的第二规则列表;其中,所述第二规则列表为子网掩码的长度为17至23位对应的长度为7的规则列表;以子网掩码的长度减去16得到的数值为下标,在所述第二规则列表的对应位置处查找所述IP地址,当查找到所述IP地址时,识别到所述IP地址。
识别模块802包括:第三识别模块8023,用于以所述IP地址的前16位为下标在所述第一规则列表的对应位置处下挂的第三规则列表;其中,所述第三规则列表为子网掩码的长度为24位对应的长度为256的规则列表;以子网掩码的第17至24位为下标在所述第三规则列表的对应位置处查找所述IP地址,当查找到所述IP地址时,识别到所述IP地址。
识别模块802还包括:第四识别模块8024,用于以所述IP地址的第17至24位为下标在所述第三规则列表的对应位置处下挂的第四规则列表,其中,第三规则列表根据所述IP地址的前16位确定,所述第四规则列表为子网掩码的长度为25至31位对应的长度为7的规则列表;以子网掩码的长度减去24得到的数值为下标,在所述第四规则列表的对应位置处查找所述IP地址,当查找到所述IP地址时,识别到所述IP地址。
所述装置还包括:规则模块803,用于当确定所述数据报文携带的规则包括IP地址或域名时,对所述规则分别通过第一哈希算法和第二哈希算法进行哈希运算得到第一指纹和第二指纹,根据所述第一指纹和所述第二指纹识别所述规则。
其中,所述根据所述第一指纹和所述第二指纹识别所述规则包括:
将所述第二指纹和第一哈希列表的第一指纹对应位置存储的值做比较,当一致时,识别到所述规则。
当所述第一哈希列表的第一指纹对应位置的值为非空,且第二哈希列表的第二指纹对应位置的值大于1时,遍历所述第一哈希列表的第一指纹对应位置 处的链表,当所述链表中存在所述规则时,识别到所述规则。
本发明实施例所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (16)

1.一种海量规则下数据报文识别的方法,其特征在于,所述方法包括:
解析接收到的数据报文,确定所述数据报文携带的规则包括IP地址;
根据所述IP地址的前16位确定所述IP地址在子网掩码长度为16对应的第一规则列表中存在时,识别到所述IP地址;和/或
根据所述IP地址的前16位确定所述IP地址在所述第一规则列表中不存在时,根据子网掩码的长度确定对应的规则列表,对所述IP地址进行识别。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
以所述IP地址的前16位为下标在所述第一规则列表中查找所述IP地址,当查找到所述IP地址时,确定所述IP地址在所述第一规则列表中存在。
3.根据权利要求1所述的方法,其特征在于,所述根据子网掩码的长度确定对应的规则列表,对所述IP地址进行识别包括:
以所述IP地址的前16位为下标在所述第一规则列表的对应位置处下挂的第二规则列表;其中,所述第二规则列表为子网掩码的长度为17至23对应的长度为7的规则列表;
以子网掩码的长度减去16得到的数值为下标,在所述第二规则列表的对应位置处查找所述IP地址,当查找到所述IP地址时,识别到所述IP地址。
4.根据权利要求1所述的方法,其特征在于,所述根据子网掩码的长度确定对应的规则列表,对所述IP地址进行识别包括:
以所述IP地址的前16位为下标在所述第一规则列表的对应位置处下挂的第三规则列表;其中,所述第三规则列表为子网掩码的长度为24对应的长度为256的规则列表;
以子网掩码的第17至24位为下标在所述第三规则列表的对应位置处查找所述IP地址,当查找到所述IP地址时,识别到所述IP地址。
5.根据权利要求4所述的方法,其特征在于,所述根据子网掩码的长度确定对应的规则列表,对所述IP地址进行识别包括:
以所述IP地址的第17至24位为下标在所述第三规则列表的对应位置处下挂的第四规则列表,其中,第三规则列表根据所述IP地址的前16位确定,所述第四规则列表为子网掩码的长度为25至31对应的长度为7的规则列表;
以子网掩码的长度减去24得到的数值为下标,在所述第四规则列表的对应位置处查找所述IP地址,当查找到所述IP地址时,识别到所述IP地址。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:当确定所述数据报文携带的规则包括IP地址或域名时,对所述规则分别通过第一哈希算法和第二哈希算法进行哈希运算得到第一指纹和第二指纹,根据所述第一指纹和所述第二指纹识别所述规则。
7.根据权利要求6所述的方法,其特征在于,所述根据所述第一指纹和所述第二指纹识别所述规则包括:
将所述第二指纹和第一哈希列表的第一指纹对应位置存储的值做比较,当一致时,识别到所述规则。
8.根据权利要求6所述的方法,其特征在于,所述根据所述第一指纹和所述第二指纹进行识别所述规则包括:
当所述第一哈希列表的第一指纹对应位置的值为非空,且第二哈希列表的第二指纹对应位置的值大于1时,遍历所述第一哈希列表的第一指纹对应位置处的链表,当所述链表中存在所述规则时,识别到所述规则。
9.一种海量规则下数据报文识别的装置,其特征在于,所述装置包括:解析模块、和识别模块;其中,
所述解析模块,用于解析接收到的数据报文,确定所述数据报文携带的规则包括IP地址;
所述识别模块,用于根据所述IP地址的前16位确定所述IP地址在子网掩码长度为16对应的第一规则列表中存在时,识别到所述IP地址;和/或根据所述IP地址的前16位确定所述IP地址在所述第一规则列表中不存在时,根据子网掩码的长度确定对应的规则列表,对所述IP地址进行识别。
10.根据权利要求9所述的装置,其特征在于,所述识别模块包括:第一 识别模块,用于以所述IP地址的前16位为下标在所述第一规则列表中查找所述IP地址,当查找到所述IP地址时,确定所述IP地址在所述第一规则列表中存在。
11.根据权利要求9所述的装置,其特征在于,所述识别模块包括:
第二识别模块,用于以所述IP地址的前16位为下标在所述第一规则列表的对应位置处下挂的第二规则列表;其中,所述第二规则列表为子网掩码的长度为17至23位对应的长度为7的规则列表;
以子网掩码的长度减去16得到的数值为下标,在所述第二规则列表的对应位置处查找所述IP地址,当查找到所述IP地址时,识别到所述IP地址。
12.根据权利要求9所述的装置,其特征在于,所述识别模块包括:第三识别模块,用于以所述IP地址的前16位为下标在所述第一规则列表的对应位置处下挂的第三规则列表;其中,所述第三规则列表为子网掩码的长度为24位对应的长度为256的规则列表;
以子网掩码的第17至24位为下标在所述第三规则列表的对应位置处查找所述IP地址,当查找到所述IP地址时,识别到所述IP地址。
13.根据权利要求12所述的装置,其特征在于,所述识别模块还包括:第四识别模块,用于以所述IP地址的第17至24位为下标在所述第三规则列表的对应位置处下挂的第四规则列表,其中,第三规则列表根据所述IP地址的前16位确定,所述第四规则列表为子网掩码的长度为25至31位对应的长度为7的规则列表;
以子网掩码的长度减去24得到的数值为下标,在所述第四规则列表的对应位置处查找所述IP地址,当查找到所述IP地址时,识别到所述IP地址。
14.根据权利要求1所述的装置,其特征在于,所述装置还包括:规则模块,用于当确定所述数据报文携带的规则包括IP地址或域名时,对所述规则分别通过第一哈希算法和第二哈希算法进行哈希运算得到第一指纹和第二指纹,根据所述第一指纹和所述第二指纹识别所述规则。
15.根据权利要求14所述的装置,其特征在于,所述根据所述第一指纹和 所述第二指纹识别所述规则包括:
将所述第二指纹和第一哈希列表的第一指纹对应位置存储的值做比较,当一致时,识别到所述规则。
16.根据权利要求14所述的装置,其特征在于,所述根据所述第一指纹和所述第二指纹进行识别所述规则包括:
当所述第一哈希列表的第一指纹对应位置的值为非空,且第二哈希列表的第二指纹对应位置的值大于1时,遍历所述第一哈希列表的第一指纹对应位置处的链表,当所述链表中存在所述规则时,识别到所述规则。
CN201610156886.8A 2016-03-18 2016-03-18 一种海量规则下报文识别的方法及装置 Pending CN107204891A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201610156886.8A CN107204891A (zh) 2016-03-18 2016-03-18 一种海量规则下报文识别的方法及装置
PCT/CN2017/077126 WO2017157335A1 (zh) 2016-03-18 2017-03-17 报文识别的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610156886.8A CN107204891A (zh) 2016-03-18 2016-03-18 一种海量规则下报文识别的方法及装置

Publications (1)

Publication Number Publication Date
CN107204891A true CN107204891A (zh) 2017-09-26

Family

ID=59850592

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610156886.8A Pending CN107204891A (zh) 2016-03-18 2016-03-18 一种海量规则下报文识别的方法及装置

Country Status (2)

Country Link
CN (1) CN107204891A (zh)
WO (1) WO2017157335A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110351397A (zh) * 2019-05-30 2019-10-18 湖北微源卓越科技有限公司 一种匹配ip网段的方法及装置
CN112491901A (zh) * 2020-11-30 2021-03-12 北京锐驰信安技术有限公司 一种网络流量精细化筛选装置及方法
CN115865459A (zh) * 2022-11-25 2023-03-28 南京信息工程大学 一种基于二次特征提取的网络流量异常检测方法及系统

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111343153A (zh) * 2020-02-10 2020-06-26 Oppo(重庆)智能科技有限公司 数据包检测方法、装置、服务器及存储介质
CN112199175B (zh) * 2020-04-02 2024-05-17 支付宝(杭州)信息技术有限公司 一种任务队列生成方法、装置及设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100366008C (zh) * 2003-05-29 2008-01-30 华为技术有限公司 构造路由表及用其查找路由项的方法
CN100397816C (zh) * 2004-07-09 2008-06-25 杭州华三通信技术有限公司 在网络设备中对接收数据包进行分类的方法
US7990973B2 (en) * 2008-08-13 2011-08-02 Alcatel-Lucent Usa Inc. Hash functions for applications such as network address lookup
WO2011091581A1 (zh) * 2010-01-26 2011-08-04 华为技术有限公司 关键字存储、查找的方法及装置
CN102984071B (zh) * 2012-12-31 2015-02-25 武汉烽火网络有限责任公司 分段地址路由的路由表组织方法及查找路由的方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110351397A (zh) * 2019-05-30 2019-10-18 湖北微源卓越科技有限公司 一种匹配ip网段的方法及装置
CN110351397B (zh) * 2019-05-30 2022-06-14 湖北微源卓越科技有限公司 一种匹配ip网段的方法及装置
CN112491901A (zh) * 2020-11-30 2021-03-12 北京锐驰信安技术有限公司 一种网络流量精细化筛选装置及方法
CN112491901B (zh) * 2020-11-30 2023-03-24 北京锐驰信安技术有限公司 一种网络流量精细化筛选装置及方法
CN115865459A (zh) * 2022-11-25 2023-03-28 南京信息工程大学 一种基于二次特征提取的网络流量异常检测方法及系统

Also Published As

Publication number Publication date
WO2017157335A1 (zh) 2017-09-21

Similar Documents

Publication Publication Date Title
CN107204891A (zh) 一种海量规则下报文识别的方法及装置
US10496680B2 (en) High-performance bloom filter array
US9984144B2 (en) Efficient lookup of TCAM-like rules in RAM
CN104243315B (zh) 用于唯一枚举解析树中的路径的装置和方法
CN1881950B (zh) 使用频谱分析的分组分类加速
CN111988231B (zh) 一种掩码五元组规则匹配的方法及装置
EP1436936A2 (en) High speed data stream pattern recognition
US20050018683A1 (en) IP address storage technique for longest prefix match
US11327974B2 (en) Field variability based TCAM splitting
CN111984835B (zh) 一种IPv4掩码五元组规则存储压缩方法及装置
US7373412B2 (en) Apparatus for selecting and sorting packets from a packet data transmission network
US10616113B2 (en) Longest prefix match using a binary search tree with compressed hash tables
CN101848248A (zh) 一种规则查找方法和装置
US20040044868A1 (en) Method and apparatus for high-speed longest prefix match of keys in a memory
CN103825824A (zh) 一种报文处理方法及装置
US6687715B2 (en) Parallel lookups that keep order
CN102143151B (zh) 一种基于深度包检测的协议跨包检测方法和装置
CN111950000B (zh) 一种接入访问控制方法及设备
CN101388044A (zh) 匹配规则包含或运算符的并行多模式匹配的方法及系统
CN102984071B (zh) 分段地址路由的路由表组织方法及查找路由的方法
US20160301658A1 (en) Method, apparatus, and computer-readable medium for efficient subnet identification
CN111163077A (zh) 一种基于网络处理器实现多维连续掩码的系统和方法
KR100662254B1 (ko) 라우팅 시스템에서의 패킷 분류 장치 및 이를 위한 룰 구축 방법
CN108449445A (zh) 一种范围型报文匹配电路及方法
CN105791124A (zh) 报文检测方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170926