CN111817978A - 一种流分类方法及装置 - Google Patents
一种流分类方法及装置 Download PDFInfo
- Publication number
- CN111817978A CN111817978A CN201910294640.0A CN201910294640A CN111817978A CN 111817978 A CN111817978 A CN 111817978A CN 201910294640 A CN201910294640 A CN 201910294640A CN 111817978 A CN111817978 A CN 111817978A
- Authority
- CN
- China
- Prior art keywords
- rule
- bits
- rules
- rule set
- hash
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/906—Clustering; Classification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/20—Traffic policing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2483—Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种流分类方法和装置,该方法包括:根据第一规则集中多条规则的关心位的分布特征确定与第一规则集对应的有效位,所述有效位包括用于区分所述多条规则中不同规则的数值所在的比特位;根据第一规则集中各条规则的有效位的数值确定各条规则的哈希键值,根据哈希键值将所述第一规则集中各条规则存储于S个存储单元中的至少一个存储单元内,其中,第一规则集是N个规则集中的任意一个,该N个规则集存储于该S个存储单元内,N、S为大于或者等于1的整数,该S个存储单元中的每个存储单元存储的规则的有效位相同;当进行流分类时,根据查找关键字的哈希键值在所述S个存储单元中的每个存储单元内查找对应的规则。
Description
技术领域
本申请涉及计算机技术,尤其涉及一种流分类方法及装置。
背景技术
当前网络中流分类功能已经是路由器和交换机中的关键功能之一,给网络提供包过滤、服务质量(quality of service,QoS)、流量统计等功能特征。流分类的原理是提取报文头中各个域段的信息构造查找关键字,然后根据每条规则相应的设置信息进行匹配。若满足规则的设置就执行规则相关联的动作。配置的每一个规则都会关联一个优先级信息,若有多个规则都能匹配的话就执行优先级最高的规则的动作。
目前广泛使用的流分类解决方案有基于三态内容可寻址存储器(ternarycontent addressable memory,TCAM)的硬件方案和基于决策树算法的规则集切分方案。对规则集进行切分的决策树算法的基本思想是根据规则集的特征,将规则集进行递归切分,直到每个子规则集中规则个数小于某个事先设定好的阈值为止。目标是流查找的时候只需要对某一个规则子集进行匹配即可,这样可以极大的减少需要匹配的规则个数,从而达到高速的流查找功能。基于决策树的预处理算法在当前得到广泛应用,经典的算法有HiCuts、HyperCuts或者Modular等。
目前,由于哈希(hash)算法具有极高的插入和查找性能,也有相关研究将哈希算法作为流分类查找算法。目前的基于哈希算法的流分类方法在规则的插入以及查找时需要的计算资源较大,规则的插入以及查找效率低下。
发明内容
本申请提供一种流分类方法及装置,具有高查找性能、低资源消耗、低查找时延的特性。
第一方面,提供了一种流分类方法,该方法可以由网络设备执行,或者,也可以由配置于网络设备中的芯片或电路执行,本申请对此不作限定。例如,该网络设备可以是路由器或者交换机等,不做限定。
该方法包括:根据第一规则集中多条规则的关心位的分布特征确定与第一规则集对应的有效位,该有效位包括用于区分多条规则中不同规则的数值所在的比特位;根据第一规则集中各条规则的有效位的数值确定各条规则的哈希键值,根据哈希键值将第一规则集中各条规则存储于S个存储单元中的至少一个存储单元内,其中,第一规则集是N个规则集中的任意一个,N个规则集存储于该S个存储单元内,N、S为大于或者等于1的整数,该S个存储单元中的每个存储单元存储的规则的有效位相同;当进行流分类时,根据查找关键字的哈希键值在该S个存储单元中的每个存储单元内查找对应的规则。
具体地,该有效位包括用于区分多条规则中不同规则的数值所在的比特位。确定第一规则集对应的有效位可以理解为确定第一规则集中包含的多条规则所对应的共同的有效位。或者也可以理解为,确定第一规则集中每一条规则的有效位,各条规则的有效位是相同的。每条规则通常包括多个比特位,规则的有效位可以是指在下一步的哈希存储运算中所“有效”的比特位,是参与下一步哈希存储运算的比特位,根据规则的有效位的数值来进行哈希存储运算,而规则的有效位之外的比特位的数值则不参与下一步的哈希存储运算。
关心位的分布特征可以包括关心位的位置特征以及关心位的数值特征。可以根据第一规则集中多条规则的关心位的分布特征确定第一规则集对应的有效位。该有效位包括用于区分多条规则中不同规则的数值所在的比特位,作为示例,基本的确定原则可以是,在第一规则集所对应的有效位上,不同规则的数值应当尽量具有“独特性”,应当尽量和其他规则有效位的数值不同。在该原则下,可以确定第一规则集对应的至少一位有效位,应理解,有效位可以包括多个比特位,在不同规则的数值尽量具有“独特性”的前提下,可以尽量减少有效位的位数,从而能够减少之后进行的哈希存储运算的运算量。
可选地,规则的有效位可以包括规则的全部或者部分的关心位。
可选地,规则的有效位可以包括不关心位。
可选地,在有效位上,不同规则的数值各不相同。
可选地,在有效位上,部分规则的数值可以相同。
本申请提供的流分类方法可以以规则集为单位,确定不同规则集所对应的有效位,之后根据规则集内规则在有效位的数值对规则进行哈希存储,并且将规则存储于多个存储单元内,使得本实施例提供的流分类方法具有高查找性能、低资源消耗、低查找时延的特性。
结合第一方面,在第一方面的某些实现方式中,根据第一规则集中多条规则的关心位的分布特征确定第一规则集对应的有效位之前,该方法还包括:根据初始规则集的关心位的分布特征将所述初始规则集划分为所述N个规则集。
例如,可以将关心位分布特征相同或者相近的规则划分到同一个规则集内,从而能够有助于确定规则集所对应的有效位。
应理解,这里的关心位的分布特征主要涉及关心位的数量以及位置特征,关心位的分布特征相同或者相近主要是指关心位的数量和分布位置相同或者相近。
本申请提供的流分类方法,通过合适的规则集划分方法以及合适的有效位选择方法的结合,可以大大降低规则插入时由于不关心位引起的规则拓展问题,在规则插入时,只需要按照当前规则有效位上的进行规则拓展即可,由此不会消耗较大的计算资源以及存储资源。
结合第一方面,在第一方面的某些实现方式中,若第一规则集中具有多条规则对应同一个哈希键值,根据哈希键值将第一规则集中各条规则存储于S个存储单元中的至少一个存储单元内,包括:将对应同一个哈希键值的多条规则存储于不同的存储单元内。通过以上设置,在哈希查找时,可以避免在同一个存储单元内查找多个槽,尤其是在槽内存储的为规则在规则表中的地址索引时,此时能够避免在一个存储单元内多次查找规则表(查找规则表所需时间较长),由此能够减少查找时延,提高查找的效率。
结合第一方面,在第一方面的某些实现方式中,该S个存储单元并行设置。从而能够并行对该S个存储单元进行并行查找,提高规则查找的效率。
可选地,该S个存储单元还可以串行设置。
结合第一方面,在第一方面的某些实现方式中,每个存储单元均包括哈希表和规则表,根据哈希键值将第一规则集中各条规则存储于该S个存储单元中的至少一个存储单元内,包括:将第一规则集中的各条规则存储于规则表内;根据各条规则的哈希键值计算各条规则在哈希表中的存储位置,并且将各条规则在规则表中的地址索引存储于该存储位置内。
结合第一方面,在第一方面的某些实现方式中,根据所述哈希键值将第一规则集中各条规则存储于S个存储单元中的至少一个存储单元内,包括:根据各条规则的哈希键值计算各条规则的指纹信息,将各条规则的指纹信息存储于该存储位置内。该指纹信息的设置能够减少“哈希冲突”问题的产生,提高规则匹配的准确性与效率。
第二方面,提供了一种流分类装置,包括:确定单元,用于根据第一规则集中多条规则的关心位的分布特征确定与第一规则集对应的有效位,该有效位包括用于区分多条规则中不同规则的数值所在的比特位;存储单元,用于根据第一规则集中各条规则的有效位的数值确定各条规则的哈希键值,根据哈希键值将第一规则集中各条规则存储于S个存储单元中的至少一个存储单元内,其中,第一规则集是N个规则集中的任意一个,该N个规则集存储于该S个存储单元内,N、S为大于或者等于1的整数,该S个存储单元中的每个存储单元存储的规则的有效位相同;查找单元,用于当进行流分类时,根据查找关键字的哈希键值在该S个存储单元中的每个存储单元内查找对应的规则。
可选地,该流分类装置可以是路由器或者交换机。
结合第二方面,在第二方面的某些实现方式中,该装置还包括划分单元,用于根据初始规则集的关心位的分布特征将初始规则集划分为该N个规则集。
结合第二方面,在第二方面的某些实现方式中,若第一规则集中具有多条规则对应同一个哈希键值,存储单元还用于:将对应同一个哈希键值的多条规则存储于不同的存储单元内。
结合第二方面,在第二方面的某些实现方式中,该S个存储单元并行设置。
结合第二方面,在第二方面的某些实现方式中,每个存储单元均包括哈希表和规则表,存储单元还用于:将第一规则集中的各条规则存储于该规则表内;根据各条规则的哈希键值计算各条规则在哈希表中的存储位置,并且将各条规则在规则表中的地址索引存储于该存储位置内。
结合第二方面,在第二方面的某些实现方式中,存储单元还用于:根据各条规则的哈希键值计算各条规则的指纹信息,将各条规则的指纹信息存储于该存储位置内。
第三方面,提供了一种流分类装置,包括:存储器、处理器和通信接口,所述存储器用于存储计算机程序,所述处理器用于从所述存储器中调用并运行所述计算机程序,使得所述流分类装置执行上述第一方面或第一方面任一种可能实现方式中的方法。
可选地,该流分类装置可以是路由器或者交换机。
第四方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序(也可以称为代码,或指令),当所述计算机程序在计算机上运行时,使得所述计算机执行上述第一方面或第一方面中任一种可能实现方式中的方法。
第五方面,提供了一种计算机可读存储介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面任一种可能实现方式的方法的指令。
第六方面,提供了一种芯片系统,包括存储器和处理器,该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,使得安装有该芯片系统的网络设备执行上述第一方面或第一方面中任一种可能实现方式中的方法。
其中,该芯片系统可以包括用于发送信息或数据的输入电路或者接口,以及用于接收信息或数据的输出电路或者接口。
附图说明
图1是哈希表森林算法对应的规则的一例的示意图。
图2示出了图1中规则所对应的掩码。
图3是哈希表森林算法各个哈希表之间的有向图的示意图。
图4是本申请提供的流分类方法的示意性流程图。
图5是本申请提供的哈希算法单元的逻辑结构图。
图6是本申请提供的并行哈希算法单元实现流分类查找的示意性框图。
图7是本申请提供的流分类查找装置的示意性流程图。
图8是本申请提供的流分类装置的结构性示意图。
具体实施方式
为了便于理解本申请实施例,首先对本申请所涉及的概念做简要描述。
流分类通常是指根据报文的某些特征定义一些规则(rule),采用这些规则识别出符合某类特征的报文,从而实现对报文的分类。与特定规则匹配的多个报文构成一个流。当前网络中流分类功能已经是路由器和交换机中的关键功能之一,给网络提供包过滤、服务质量、流量统计等功能特征。流分类的原理是提取报文头中各个域段的信息构造查找关键字(search key),然后根据每条规则相应的设置信息进行匹配。若满足规则的设置就执行规则相关联的动作。配置的每一个规则都会关联一个优先级信息,若有多个规则都能匹配的话就执行优先级最高的规则的动作。
流分类要求要对配置的每一条规则都进行匹配。但是顺序匹配显然会造成极大的计算量及延时。目前广泛使用的解决方案有基于三态内容可寻址存储器的硬件方案和基于决策树算法的规则集切分方案。基于TCAM的硬件方案通过设计专门的硬件,实现所有规则并行匹配,达到高性能流查找能力。TCAM依靠其高速流分类性能以及资源管理简单等优势,应用于高端路由器和交换机。但是由于TCAM具有成本高,功耗大等问题,限制了 TCAM的进一步应用。
对规则集进行切分的决策树算法的基本思想是根据规则集的特征,将规则集进行递归切分,直到每个子规则集中规则个数小于某个事先设定好的阈值为止。目标是流查找的时候只需要对某一个规则子集进行匹配即可,这样可以极大的减少需要匹配的规则个数,从而达到高速的流查找功能。切分的过程,就是建立决策树的过程,决策树的每一个叶子节点对应一个切分后的规则子集。流匹配的时候首先根据决策树树形结构找到当前流对应的叶子节点,然后将流与叶子节点对应的子规则集一一匹配即可。基于决策树的预处理算法在当前得到广泛应用,经典的算法有HiCuts、HyperCuts或者Modular等。
HiCuts和HyperCuts方法用几何的观点研究流分类问题。从几何的观点看,如果流分类器中的规则由分别对应n维空间的n个域(field)组成,则每条规则对应n维空间的一个“超矩形(hyperrectangle)”区域;而每个报文则对应n维空间的一个点。查找与某个报文匹配的规则的过程就相当于计算该报文所对应的点落入哪些“超矩形”当中。在HiCuts 和HyperCuts方法中,规则中的每个域都被看成范围,将范围不同的域放在一起进行切分,以将规则集合划分为小的子规则集合。当子规则集合中的规则数小于预先设定的阈值时,切分终止。通过切分可以建立一棵决策树。决策树的中间节点保存切分方法相关的信息,选择哪一维或几维进行切分,每维的切分次数是多少,叶子节点保存的子规则集合等。
在Modular算法中,对每条规则的每个域进行“0”、“1”编码,每条规则可以包括多个比特。每个比特为“0”、“1”或者通配符。通配符可以用“*”表示,意思是规则的当前比特位可以同时匹配查找关键字(key)对应位的0和1。
将规则集合切分为多个子规则集合时,需要计算规则集合中某一位置所对应的多个比特中“0”,“1”或通配符的个数,并根据特定算法选择某一位置对规则集合进行切分。与HiCuts和HyperCuts方法不同的是,在Modular算法中可以选择位来对规则集合进行切分。选定对规则集合进行切分所依据的基准位置后,规则集合所包含的多条规则中基准位置为“0”的规则被放入一个子规则集合。规则集合所包含的多条规则中,基准位置为“1”的规则被放入另一个子规则集合。规则集合所包含的多条规则中,基准位置为“*”的规则被放入上述两个子规则集合中。
当一条规则包含k个“*”时,则该条规则可以扩展为2k条规则。
例如,对于规则100110**,可以扩展为4条规则,即规则10011000、10011001、10011010、 10011011。
其中,“0”和“1”所在的比特位可以称为“关心位”,流与规则匹配的时候流的这些比特位需要和规则精确匹配。而“*”所在的比特位可以称为“不关心位”,流与规则匹配的时候不对流的这些比特位作要求。
再例如,对于一个IP范围的域127.8.0.0/16可以表示为0111111100001000******** ********。其中,共包括16个关心位(即前面16个比特位),流与规则匹配的时候流的这些比特位需要和规则精确匹配。其余16个比特位是不关心位(即后面16个比特位),流与规则匹配的时候不对流的这些比特位作要求。
为了表示方便,也可以将一条规则存储为数值+掩码(mask)的格式,如0111111100001000****************(数值)+11111111 11111111 00000000 00000000(掩码),掩码位为‘1’表示规则的对应比特位为关心位,掩码位为‘0’表示规则的对应比特位为不关心位。类似的,对于前述的规则100110**,它所对应的掩码为11111100。
哈希表(hash table,也叫散列表)是实现关联数组的一种数据结构,广泛应用于数据的快速查找。哈希表有两个重要操作,一个是写(put)操作,通过写操作把元素插入哈希表中;一个是读(get)操作,从哈希表中快速地找到元素。
哈希表是根据关键码值(Key value,也叫键值)而直接进行访问的数据结构。也就是说,它通过把键值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做哈希函数,存放记录的数组叫做哈希表。若键值为k,则其存放在哈希表中的f(k)的存储位置上,f为哈希函数。
由于哈希算法具有极高的插入和查找性能,也可以将哈希算法作为流分类查找算法。哈希算法对于规则中各个比特位全部为关心位的情况下时能够有效解决流分类问题,达到很高的流查找性能。但是当规则中存在不关心位时,此时一条规则能够对应多条查找关键字,例如,规则127.8.0.0/16(01111111 00001000****************),能够对应216条查找关键字。流查找要求对这216个查找关键字都要能够查找到这条规则,因此需要将上述规则扩展为216条规则,逐一插入到哈希表中,由此需要消耗大量的计算资源以及存储资源。
下面结合附图1-3,介绍流分类查找算法的一个示例。
哈希算法处理集合的插入和查找时具有极高的性能。考虑到单个哈希表难以处理规则中的不关心位,可以采用哈希表森林(hash table forest)算法,对规则集中的每一种掩码构建一个哈希表。然后根据各个哈希表对应掩码之间的覆盖关系组成一个有向图,指导查找关键字的查找流。
图1是哈希表森林算法对应的规则的一例的示意图。
在图1中,共包括6条规则,即规则1至规则6,每条规则分别包括IP域和port域,各条规则之间的不关心位的分布不同。对于规则1,IP域的后24个比特位为不关心位;而对于规则2,IP域的后16个比特位为不关心位;对于规则3,IP域的后8位为不关心位;对于规则4,IP域的后8位、port域的全部8位为不关心位;对于规则5,port域的全部8位为不关心位;对于规则6,没有不关心位,全部为关心位。
可以根据图1中所示的规则的不关心位的分布情况确定所对应的掩码类型的数量。由于图1中6条规则的不关心位的分布情况各不相同,因此,图1中的6条规则共对应6种掩码。图2示出了图1中6条规则所对应的6种掩码。
实际应用中,一个规则集除了包含上述6条规则之外,可能还包括其他多条规则,本实施例中,假设上述其他多条规则对应的掩码类型均包括在上述6种掩码中,也就是说,在该规则集中,可以由包括规则1在内的多条规则对应的掩码为图2中的掩码1,此时,可以将对应掩码1的多条规则存储于哈希表1中。类似的,可以将对应掩码2-6的多条规则存储于哈希表2-6中。这里为了方便表述,可以将与掩码1对应的多条规则组成的集合称为规则集1,而将与掩码2-6对应的多条规则组成的集合称为规则集2-6。
考虑到不需要将每一个查找关键字均在各个哈希表中进行查找,可以根据上述6个哈希表中各个哈希表对应掩码之间的覆盖关系组成一个有向图,指导查找关键字的查找流。图3是哈希表森林算法各个哈希表之间的有向图的示意图。
在图3中,对于每一条规则,需要从根节点开始依次对所有经历的哈希表进行插入操作。哈希表1除了要存储规则集1内的多条规则之外,还需要插入规则集2、3、6内的多条规则。在插入时,将规则集1内的多条规则和掩码1进行按位与(&)运算,之后根据未被掩掉的关心位的数值进行哈希运算,计算得到在哈希表1中的存储位置,之后可以将对应的规则存储在该存储位置上。而对于规则集2、3、6内的多条规则,也与掩码1进行按位与运算,之后根据未被掩掉的关心位的数值进行哈希运算,计算得到在哈希表1中的存储位置,之后可以将该条规则的指针(directory)信息存储在该存储位置上,该指针信息指向该条规则下一个所经历的哈希表。
举例而言,对于规则6,不仅要将其存储于哈希表6中,还要将规则6插入哈希表1-5中,规则6可以分别与哈希表1-5对应的掩码1-5进行按位与运算,计算得到在哈希表1-5 中的存储位置,之后在该存储位置内可以存储指针信息,该指针信息指向规则6所经历的下一个哈希表,例如,哈希表6。
在进行规则查找时,查找关键字首先从哈希表森林的所有根节点开始查找,例如哈希表1和哈希表4。对于每一个哈希表的查找,先用哈希表对应的掩码与当前的查找关键字进行按位与操作,得到当前哈希表的键值,然后判断该键值是否在当前哈希表中,若不在,流查找流程结束。若存在,则进行规则匹配。若不命中,则查找流程结束。若命中,则判断存储位置中是否有指针,看是否有指向下一哈希表。若没有指针,即不需要查询下一个哈希表,则返回命中的优先级最高的规则。若需要继续查询,就继续查找下一个哈希表。
附图1-3所提供的流分类查找算法,在构造哈希表森林和规则查找时需要的计算量较大,对于插入的每一条规则,需要从根节点开始依次对所有经历的哈希表进行插入操作,规则查找时需要对所有根节点进行查找,查找时延较大,效率低下。此外,哈希表森林根节点的个数动态可变,并行查找流水线的个数不定,当并行查找流水线个数较大时,可能需要消耗较大的查找资源。
为了解决上述问题,本申请实施例提供了流分类方法的另一例,具有高查找性能、低资源消耗、低查找时延的特性。
具体地,图4是本申请提供的一种流分类方法200的示意性流程图。该方法200包括步骤210-230,下面将结合图4,对方法来200进行说明。
在步骤210中,根据第一规则集中多条规则的关心位的分布特征确定与第一规则集对应的有效位,该有效位包括用于区分所述多条规则中不同规则的数值所在的比特位。
在步骤220中,根据第一规则集中各条规则的有效位的数值确定各条规则的哈希键值,根据哈希键值将第一规则集中各条规则存储于S个存储单元中的至少一个存储单元内,其中,第一规则集是N个规则集中的任意一个,该N个规则集存储于该S个存储单元内,N、S为大于或者等于1的整数,该S个存储单元中的每个存储单元存储的规则的有效位相同。
在进行流分类查找之前,首先应当将配置的每一条规则存储起来,以供查找关键字进行匹配。因此,在步骤210和步骤220中,将首先讨论如何对配置的(也即需要匹配的)每一条规则进行存储,在本实施例中,对规则进行存储主要涉及对规则进行哈希存储。
作为一种可能的实施方式,被配置的多条规则可以以规则集为单位进行存储。具体的,被配置的多条规则所组成的集合可以称为初始规则集,可以将该初始规则集切分为N个规则集,之后对该N个规则集逐一进行存储。
其中,第一规则集是该N个规则集中的任意一个,下面以第一规则集为例,阐述如何对被配置的多条规则进行存储。
第一规则集中可以包含多条规则,每条规则由多个比特位组成,该多条规则的长度可以相同(即所包括的比特位相同)。每条规则可以包括关心位,还可以包括不关心位,可以根据多条规则的关心位的分布特征确定第一规则集对应的有效位。
在这里,有效位包括用于区分所述多条规则中不同规则的数值所在的比特位。确定第一规则集对应的有效位可以理解为确定第一规则集中包含的多条规则所对应的共同的有效位。或者也可以理解为,确定第一规则集中每一条规则的有效位,各条规则的有效位是相同的。每条规则通常包括多个比特位,规则的有效位可以是指在下一步的哈希存储运算中所“有效”的比特位,是参与下一步哈希存储运算的比特位,根据规则的有效位的数值来进行哈希存储运算,而规则的有效位之外的比特位的数值则不参与下一步的哈希存储运算。
关心位的分布特征可以包括关心位的位置特征以及关心位的数值特征。可以根据第一规则集中多条规则的关心位的分布特征确定第一规则集对应的有效位。有效位包括用于区分所述多条规则中不同规则的数值所在的比特位,作为示例,基本的确定原则可以是,在第一规则集所对应的有效位上,不同规则的数值应当尽量具有“独特性”,应当尽量和其他规则有效位的数值不同。在该原则下,可以确定第一规则集对应的至少一位有效位,应理解,有效位可以包括多个比特位,在不同规则的数值尽量具有“独特性”的前提下,可以尽量减少有效位的位数,从而能够减少之后进行的哈希存储运算的运算量。
例如,第一规则集可以由规则101011**、011111**和10010***组成。基于上述有效位的确定原则,对于由上述3条规则构成的第一规则集,可以将第1至第3比特位确定为第一规则集所对应的有效位,在该有效位上,上述3条规则的数值分别为101、011、100,相互之间各不相同,具有“独特性”。此外,如果不考虑哈希存储运算量的问题,也可以将第1至第4,或者第1至第5比特位确定为第一规则集所对应的有效位。
可选地,规则的有效位可以包括规则的全部或者部分的关心位。
此外,为了减少因为规则拓展所引起的运算量,在第一规则集对应的有效位上,应当尽量不包括规则的不关心位。具体地,规则#1可以是第一规则集的多条规则中的任意一个,若规则#1的有效位存在K个不关心位,则在规则插入时,由于哈希函数无法直接处理含“*”的规则,应当将规则#1进行拓展,并且将拓展之后的2K条规则逐一进行哈希存储。此时若规则#1包含的不关心位较多(即K值较大),则会需要消耗较大的计算资源以及存储资源。
应理解,在本申请中,不同规则的数值应当尽量具有“独特性”以及第一规则集对应的有效位应当尽量不包括不关心位是确定有效位的基本的原则,可以在该原则下来确定第一规则集对应的有效位,并不代表本申请实施例中在有效位上不同规则的数值必然具有“独特性”(即各不相同),以及并不代表有效位必然不包括不关心位。
可选地,在一种可能的实施方式中,在有效位上,不同规则的数值可以相同。
可选地,在一种可能的实施方式中,有效位可以包括不关心位。
可以根据第一规则集中各条规则的有效位的数值将第一规则集存储于至少一个存储单元内,该存储单元可以是哈希存储单元。
在本申请实施例中,可以根据第一规则集中各条规则的有效位的数值确定各条规则的哈希键值,之后根据该哈希键值将第一规则集中的各条规则存储于至少一个存储单元内。
其中,存储单元可以包括哈希表,规则#1可以是第一规则集的多条规则中的任意一个,下面以规则#1为例,阐述如何对第一规则集进行存储。
具体地,可以根据规则#1有效位的数值来确定规则#1的哈希键值,之后根据该哈希键值进行哈希运算,从而确定规则#1在哈希表中的存储位置,在该存储位置存储上对规则#1进行存储。该存储位置上可以存储规则#1的哈希键值,可选地,该存储位置上可以存储规则#1,还可以存储规则#1的优先级信息。
在实际应用中,可以给存储单元设置相应的掩码配置,该掩码配置可以将规则#1对应的哈希键值设置为:仅保留规则#1在有效位上的数值,而将有效位之外的位上的数值用“0”替代。
可选地,存储单元还可以包括规则表,可以将第一规则集中的各条规则存储于规则表内,该规则表内还可以存储各条规则的优先级信息,此时可以将规则#1在规则表中的地址索引存储于存储位置上。
可选地,根据规则#1的哈希键值进行哈希运算,从而确定规则#1在哈希表中的存储位置,该存储位置可以是在哈希表中的行索引(记作index#1),此时可以将规则#1或者规则#1的地址索引存储于index#1行的一个未被占用的槽(slot)中。
可选地,规则#2可以是第一规则集中的另一条规则,规则#2的有效位的数值可以和规则#1有效位的数值相同,确定规则#2在哈希表中的存储位置,该存储位置也可以是index#1,此时可以将规则#2或者规则#2的地址索引存储于index#1行的另一个未被占用的槽中。
可选地,可以根据规则#1的哈希键值进行两次哈希运算。其中,第一次哈希运算用于确定规则#1在哈希表中的存储位置,而第二次运算用于确定规则#1的指纹(fingerprint) 信息,并且将该指纹信息存储于该存储位置上。在下一步的哈希查找过程中,同样可以对查找关键字进行上述两次哈希运算,在第二次运算获得查找关键字的指纹信息以后,可以和存储位置上的指纹信息进行匹配比较,只有在二者相同的情况下才能够确定哈希查找的存储位置是正确的,才进行下一步的规则匹配工作。该指纹信息的设置能够减少“哈希冲突”问题的产生,提高规则匹配的准确性。
可选地,为了约束规则表匹配次数最多一次,同一个行的不同槽内的指纹信息互不相同,从而能够提高规则匹配的效率。
上文介绍了如何对第一规则集进行存储。第一规则集是N个规则集中的任意一个,该 N个规则集可以由初始规则集切分而来,可以通过任意方式将该初始规则集切分为N个规则集,例如,通过HiCuts、HyperCuts、Modular方法等。
作为一种可能的实施方式,可以根据关心位的分布特征将初始规则集划分为N个规则集。
例如,可以将关心位分布特征相同或者相近的规则划分到同一个规则集内,从而能够有助于确定规则集所对应的有效位。
应理解,这里的关心位的分布特征主要涉及关心位的数量以及位置特征,关心位的分布特征相同或者相近主要是指关心位的数量和分布位置相同或者相近。
为了对配置的每一条规则进行存储,可以对该N个规则集逐一进行存储,其中,每个规则集确定的有效位可以相同,也可以不同。
若多个规则集所对应的有效位相同,则可以将该多个规则集存储于同一个存储单元内。此外,若一个存储单元的容量较小无法存储某个规则集中的所有规则,此时可以将该规则集存储于多个存储单元内。在本申请实施例中,为了便于下一步的哈希查找,每个存储单元存储的规则的有效位相同,也即在实际应用中,每个存储单元只设置一种的掩码配置。
此外,在一种可能的实现方式中,第一规则集中具有多条规则对应同一个哈希键值(即多条规则的有效位的数值相同,例如规则#1和规则#2),此时可以将该多条规则存储于不同的存储单元内。在哈希查找时,可以避免在同一个存储单元内查找多个槽,尤其是在槽内存储的为规则在规则表中的地址索引时,此时能够避免在一个存储单元内多次查找规则表(查找规则表所需时间较长),由此能够减少查找时延,提高查找的效率。
综合上述分析,该N个规则集可以存储于S个存储单元内,N的值可以大于、等于或者小于S的值。
作为一种可能的实现方式,可以根据硬件设计上采用的存储单元的数量来对应的划分规则集的数量,也就是说,规则集的数量(N的值)可以等于存储单元的数量(S的值),此时一个规则集可以对应一个存储单元,各个规则集所对应的有效位不同。
可选地,该S个存储单元可以并行设置,从而能够提高哈希查找的效率。
在步骤230中,当进行流分类时,根据查找关键字的哈希键值在所述S个存储单元中的每个存储单元内查找对应的规则。
具体地,当进行流分类时,根据查找关键字的哈希键值在该S个存储单元中的每一个存储单元内进行哈希查找:在每个存储单元内,先用其所设置的掩码配置将初始键值(即该查找关键字)变为该存储单元相应的哈希键值,在进行该存储单元的哈希运算,获得存储位置后,读取相应存储位置的数据信息,进行规则的匹配。若有多条规则匹配成功,则可以将优先级最高的规则作为返回结果。
其中,若该存储位置直接存储规则,此时可以读取该存储位置上的规则,并且进行规则的匹配,若该存储位置上存储的是规则在规则表中的地址索引,此时可以读取在该存储位置上的地址索引,并且与地址索引所指示的规则进行匹配。
此外,还可以根据哈希键值进行两次哈希运算,在第二次运算获得查找关键字的指纹信息以后,可以和存储位置上的指纹信息进行匹配比较,只有在二者相同的情况下才能够确定哈希查找的存储位置是正确的,才进行下一步的规则匹配工作。
本申请实施例提供的流分类方法可以以规则集为单位,确定不同规则集所对应的有效位,之后根据规则集内规则在有效位的数值对规则进行哈希存储,并且将规则存储于多个存储单元内,使得本实施例提供的流分类方法具有高查找性能、低资源消耗、低查找时延的特性。此外,本申请实施例提供的流分类方法,通过合适的规则集划分方法以及合适的有效位选择方法的结合,可以大大降低规则插入时由于不关心位“*”引起的规则拓展问题,在规则插入时,只需要按照当前规则有效位上的“*”进行规则拓展即可,由此不会消耗较大的计算资源以及存储资源。
下面根据表1所示的具体示例来阐述本申请提供的流分类方法,本实施例可以看作是对前述实施例的进一步说明,在本实施例中,重点阐述如何对初始规则集进行划分,以及如何确定规则集所对应的有效位。
表1:
在表1所示的初始规则集中,共包括13条规则,分别为规则#1-#13,每条规则均包括5个域,分别为源IP、目的IP、源端口、目的端口、协议类型。
其中,对于规则#1-#5,目的IP、源端口、目的端口、协议类型所在的位均为不关心位,而上述5条规则的关心位主要集中在源IP域,更具体的,规则#1-#5的关心位分别为源IP域(转换成二进制位)的前32位、28位、24位、26位、26位。
类似的,对于规则#6-#11,源IP、源端口、目的端口、协议类型所在的位均为不关心位,而上述6条规则的关心位主要集中在目的IP域,更具体的,规则#6-#11的关心位分别为目的IP域(转换成二进制位)的前24位、25位、32位、27位、32位、32位。
类似的,对于规则#12-#13,源IP、目的IP、源端口所在的位均为不关心位,而上述2条规则的关心位均集中在目的端口域和协议类型域。
基于上述分析,为了有助于下一步确定规则集的有效位,可以首先根据初始规则集的关心位的分布特征对该初始规则集进行划分。具体地,规则#1-#5的关心位主要集中在源 IP域,规则#6-#11的关心位主要集中在目的IP域,而规则#12-#13的关心位主要集中在目的端口域和协议类型域,因此可以将该初始规则集划分为3个规则集,分别为规则集#1-#3,其中,规则集#1包括规则#1-#5,规则集#2包括规则#6-#11,规则集#3包括规则#12-#13。进一步地,可以将上述3个规则集对应存储于3个存储单元内。
第二步,分别确定各个规则集所对应的有效位。对于规则集#1,由于规则#1-#5的关心位均集中在源IP域,此时可以根据源IP域所包括的比特位来确定有效位。
可选地,可以将源IP所包括全部32个比特位确定为规则集#1对应的有效位,此时,规则集#1所对应的有效位则为源IP所在的32个比特位,规则#1-#5的源IP所包括的32 个比特位的数值参与下一步哈希存储运算,而其他比特位的数值则不参与下一步的哈希存储运算。此外,对于规则#2-#5,由于有效位仅为前28位、24位、26位、26位,因此对于源IP所在的32个比特位中的不关心位在插入时需要进行规则拓展。
可选地,为了减少规则的拓展,可以将源IP的前24位确定为规则集#1对应的有效位,此时,在规则#1-#5的有效位上,均不包括不关心位,因此在插入时无需对规则进行拓展。此时,规则集#1所对应的存储单元的掩码配置可以为表2中掩码1,插入时可以将规则 #1-#5分别与掩码1进行按位与运算,每条规则的源IP的前24位的数值作为自身插入哈希表中的哈希键值。
表2:
掩码 | 源IP | 目的IP | 源端口 | 目的端口 | 协议类型 |
掩码#1 | 255.255.255.0 | 0.0.0.0 | 0x0000 | 0x0000 | 0x00 |
掩码#2 | 0.0.0.0 | 255.255.255.0 | 0x0000 | 0x0000 | 0x00 |
掩码#3 | 0.0.0.0 | 0.0.0.0 | 0x0000 | 0xFFFF | 0x00 |
可选地,为了减少规则插入时的计算量,还可以进一步减少有效位的位数。具体地,表1中示出的为十进制源IP地址,在十进制源IP地址的第2位上,规则#1-#5的值分别为22、33、116、3、72,各不相同,因此可以将该源IP地址的第2位(即二进制的第9-16 位)确定为规则集#1对应的有效位。此时掩码#1可以设置为0.255.0.0 0.0.0.00x00000x00000x00。类似的,在10进制源IP地址的第3位上,规则#1-#5的值分别为132、 5、7、18、2,各不相同,因此可以将该源IP地址的第3位(即二进制的第17-24位)确定为规则集#1对应的有效位。此时掩码#1可以设置为0.0.255.0 0.0.0.0 0x00000x00000x00。
类似的,对于规则集#2,由于规则#6-#11的关心位均集中在目的IP域,此时可以根据目的IP域所包括的位来确定有效位。
可选地,可以将目的IP所包括全部32位确定为规则集#2对应的有效位。
可选地,为了减少规则的拓展,可以将目的IP的前24位确定为规则集#2对应的有效位,此时,在规则#6-#11的有效位上,均不包括不关心位,因此在插入时无需对规则进行拓展。此时,规则集#2所对应的存储单元的掩码配置可以为表2中掩码2,插入时可以将规则#6-#11分别与掩码2进行按位与运算。
可选地,为了减少规则插入时的计算量,还可以进一步减少有效位的位数。具体地,表1中示出的为十进制目的IP地址,在10进制目的IP地址的第3位上,规则#6-#11的值分别为52、17、37、39、7、20,各不相同,因此可以将该目的IP地址的第三位(即二进制的第17-24位)确定为规则集#2的有效位。此时掩码#2可以设置为0.0.0.0 0.0.255.00x00000x00000x00。
类似的,对于规则集#3,由于规则#12-#13的关心位均集中在目的端口域和协议类型域,此时可以根据目的端口域和协议类型域所包括的位来确定有效位。
可选地,可以将目的端口域所包括的位确定为规则集#3所对应的有效位。此时,规则集#1所对应的存储单元的掩码配置可以为表2中掩码3,插入时可以将规则#12-#13分别与掩码3进行按位与运算。
可选地,还可以将协议类型域所包括的位确定为规则集#3所对应的有效位。此时掩码#3可以设置为0.0.0.0 0.0.0.0 0x0000 0x00000xFF。
第三步,在将上述3个规则集对应存储于3个存储单元内之后,为了加快查找效率,可以将上述三个存储单元并行设置。
第四步,在进行流分类查找时,可以根据查找关键字同时在上述三个存储单元中进行查找。在每个存储单元内,先用其所设置的掩码配置将初始键值变为该存储单元相应的哈希键值,在进行该存储单元的哈希运算,获得存储位置后,读取相应存储位置的数据信息,进行规则的匹配。
图5是本申请提供的哈希算法单元的逻辑结构图。在图5中,本申请实施例提供的哈希算法单元包括掩码模块、运算模块、哈希表模块和规则表模块。其中,掩码模块中配置有当前哈希算法单元选择进行哈希运算的有效位,该掩码模块可以将查找关键字转换成对应的哈希键值,该运算模块用于根据该哈希键值进行哈希运算,哈希表模块存储有规则的地址索引、指纹信息等内容,规则表用于存储规则的完整信息,用于最终的完整规则匹配。
图5所示的哈希算法单元的工作流程是:当查找关键字k1输入到哈希算法单元时,首先将查找关键字k1与掩码模块配置的掩码mask进行按位与(&)运算,将查找关键字 k1转换成本哈希算法单元内的哈希表的哈希键值k2。
例如,查找关键字k1可以为1011100101011110,掩码mask可以为1111000000000000,则二者进行按位与运算之后,得到的哈希键值k2为10110000 00000000。
之后该哈希键值k2与第一哈希函数f1进行第一次哈希运算,计算得到该规则在哈希表中存储的行index。之后在该行的多个槽中进行查找,若某个槽中储存有该哈希键值k2,并且储存有规则的地址索引,该地址索引用于指示规则表模块中的某个位置,该位置存储有相关规则的完整信息,此时可以将该相关规则作为返回结果。
此外,为了避免哈希冲突,该哈希键值k2还可以与第二哈希函数f2进行第二次哈希运算,计算得到该规则的指纹信息fingerprint,并且与槽中的指纹信息进行比较,只有在二者相同的情况下才能够确定哈希查找的存储位置是正确的,才进行下一步的规则匹配工作。
图6是本申请提供的并行哈希算法单元实现流分类查找的示意性框图。
在图6中,共有S个并行设置的哈希算法单元,关键字构造单元提取报文头中各个域段的信息并且构造查找关键字,之后将查找关键字输入到S个并行的哈希算法单元中,进行并行查找,查找关键字在每个哈希算法单元中,先利用掩码模块配置的掩码将查找关键字变为该哈希算法单元相应的哈希键值,再进行该哈希算法单元的哈希计算,获得地址后,读取相应地址的数据信息,进行规则匹配比较。如果匹配成功,则命中该条规则,并且将该条规则传输至比较单元。若命中的规则有多条,比较单元用于对该多条规则的优先级进行比较,并且选择优先级最高的规则作为输出结果。
图7是本申请提供的流分类查找装置300的示意性流程图。该装置300可以为流分类装置,也可以为设置于流分类装置内的芯片或者电路,例如,该装置300可以是路由器或者交换机,或者是路由器或者交换机内的芯片。如图7所示,该装置300包括:
确定单元310,用于根据第一规则集中多条规则的关心位的分布特征确定与第一规则集对应的有效位,该有效位包括用于区分所述多条规则中不同规则的数值所在的比特位。
存储单元320,用于根据第一规则集中各条规则的有效位的数值确定各条规则的哈希键值,根据哈希键值将第一规则集中各条规则存储于S个存储单元中的至少一个存储单元内,其中,第一规则集是N个规则集中的任意一个,该N个规则集存储于该S个存储单元内,N、S为大于或者等于1的整数,该S个存储单元中的每个存储单元存储的规则的有效位相同。
查找单元330,用于当进行流分类时,根据查找关键字的哈希键值在该S个存储单元中的每个存储单元内查找对应的规则。
可选地,该装置300还包括划分单元,用于根据初始规则集的关心位的分布特征将所述初始规则集划分为该N个规则集。
可选地,若第一规则集中具有多条规则对应同一个哈希键值,存储单元320还用于:将对应同一个哈希键值的多条规则存储于不同的存储单元320内。
可选地,每个存储单元320均包括哈希表和规则表,存储单元320还用于:将第一规则集中的各条规则存储于规则表内;根据各条规则的哈希键值计算各条规则在哈希表中的存储位置,并且将所述各条规则在规则表中的地址索引存储于所述存储位置内。
可选地,存储单元320还用于:根据各条规则的哈希键值计算各条规则的指纹信息,将各条规则的指纹信息存储于该存储位置内。
图7所示的流分类装置300可以对应于根据本申请实施例的流分类方法200中的流分类装置,该装置300可以包括用于执行图4中流分类方法200的流分类装置执行的方法的模块。并且,该装置300中的各模块和上述其他操作和/或功能分别为了实现图4中流分类方法200的相应流程。各模块执行上述相应步骤的具体过程在方法200中已经详细说明,为了简洁,在此不再赘述。
图8是本申请实施例提供的流分类装置400的结构性示意图。该装置400可以为流分类装置,也可以为设置于流分类装置内的芯片或者电路,例如,该装置400可以是路由器或者交换机,或者是路由器或者交换机内的芯片。如图8所示,该装置400包括:处理器 410、存储器420和通信接口430。其中,存储器420中存储有指令,处理器410用于执行存储器420中的指令,当该指令被执行时,该处理器410用于执行上述方法实施例提供的方法,处理器410还用于控制通信接口430与外界进行通信。
进一步地,该处理器410、存储器420和通信接口430可以通过内部连接通路互相通信,传递控制和/或数据信号。
进一步地,该存储器420可以集成在处理器410中,也可以与处理器410分开设置。
具体地,流分类装置400可以用于执行图4中的流分类方法200中的各个步骤,该装置400可以包括用于执行图4中流分类方法200的流分类装置执行的方法的模块。并且,该装置400中的各模块和上述其他操作和/或功能分别为了实现图4中流分类方法200的相应流程。各模块执行上述相应步骤的具体过程在方法200中已经详细说明,为了简洁,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括计算机程序,当其在计算机上运行时,使得该计算机执行上述方法实施例提供的方法。
本申请实施例还提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得该计算机执行上述方法实施例提供的方法。
本申请实施例还提供一种芯片系统,包括存储器和处理器,该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,使得安装有该芯片系统的网络设备执行上述方法实施例提供的方法。
其中,该芯片系统可以包括用于发送信息或数据的输入电路或者接口,以及用于接收信息或数据的输出电路或者接口。
应理解,本申请实施例中,该处理器可以为中央处理单元(central processingunit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM, EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random accessmemory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM, DR RAM)。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (13)
1.一种流分类方法,其特征在于,包括:
根据第一规则集中多条规则的关心位的分布特征确定与所述第一规则集对应的有效位,所述有效位包括用于区分所述多条规则中不同规则的数值所在的比特位;
根据所述第一规则集中各条规则的有效位的数值确定各条规则的哈希键值,并根据所述哈希键值将所述第一规则集中各条规则存储于S个存储单元中的至少一个存储单元内,其中,所述第一规则集是N个规则集中的任意一个,所述N个规则集存储于所述S个存储单元内,N、S为大于或者等于1的整数,所述S个存储单元中的每个存储单元存储的规则的有效位相同;
当进行流分类时,根据查找关键字的哈希键值在所述S个存储单元中的每个存储单元内查找对应的规则。
2.根据权利要求1所述的方法,其特征在于,所述根据第一规则集中多条规则的关心位的分布特征确定所述第一规则集对应的有效位之前,所述方法还包括:
根据初始规则集的关心位的分布特征将所述初始规则集划分为所述N个规则集。
3.根据权利要求1或2所述的方法,其特征在于,若第一规则集中具有多条规则对应同一个哈希键值,根据所述哈希键值将所述第一规则集中各条规则存储于所述S个存储单元中的至少一个存储单元内,包括:
将对应同一个哈希键值的多条规则存储于不同的存储单元内。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述S个存储单元并行设置。
5.根据权利要求1-4中任一项所述的方法,其特征在于:每个存储单元包括哈希表和规则表,
所述根据所述哈希键值将所述第一规则集中各条规则存储于所述S个存储单元中的至少一个存储单元内,包括:
将所述第一规则集中的各条规则存储于所述规则表内;
根据所述各条规则的哈希键值计算各条规则在哈希表中的存储位置,并且将所述各条规则在规则表中的地址索引存储于所述存储位置内。
6.根据权利要求5所述的方法,其特征在于:根据所述哈希键值将所述第一规则集中各条规则存储于所述S个存储单元中的至少一个存储单元内,包括:
根据所述各条规则的哈希键值计算各条规则的指纹信息,将所述各条规则的指纹信息存储于所述存储位置内。
7.一种流分类装置,其特征在于,包括:
确定单元,用于根据第一规则集中多条规则的关心位的分布特征确定与所述第一规则集对应的有效位,所述有效位包括用于区分所述多条规则中不同规则的数值所在的比特位;
存储单元,用于根据所述第一规则集中各条规则的有效位的数值确定各条规则的哈希键值,并根据所述哈希键值将所述第一规则集中各条规则存储于S个所述存储单元中的至少一个存储单元内,其中,所述第一规则集是N个规则集中的任意一个,所述N个规则集存储于所述S个存储单元内,N、S为大于或者等于1的整数,所述S个存储单元中的每个存储单元存储的规则的有效位相同;
查找单元,用于当进行流分类时,根据查找关键字的哈希键值在所述S个存储单元中的每个存储单元内查找对应的规则。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括划分单元,用于根据初始规则集的关心位的分布特征将所述初始规则集划分为所述N个规则集。
9.根据权利要求7或8所述的装置,其特征在于,若第一规则集中具有多条规则对应同一个哈希键值,所述存储单元还用于:将对应同一个哈希键值的多条规则存储于不同的存储单元内。
10.根据权利要求7-9中任一项所述的装置,其特征在于,所述S个存储单元并行设置。
11.根据权利要求7-10中任一项所述的装置,其特征在于:每个存储单元均包括哈希表和规则表,所述存储单元还用于:
将所述第一规则集中的各条规则存储于所述规则表内;
根据所述各条规则的哈希键值计算各条规则在哈希表中的存储位置,并且将所述各条规则在规则表中的地址索引存储于所述存储位置内。
12.根据权利要求11所述的装置,其特征在于:所述存储单元还用于:
根据所述各条规则的哈希键值计算各条规则的指纹信息,将所述各条规则的指纹信息存储于所述存储位置内。
13.一种芯片系统,其特征在于,包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片系统的网络设备执行如权利要求1-6中任意一项所述的方法。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910294640.0A CN111817978B (zh) | 2019-04-12 | 2019-04-12 | 一种流分类方法及装置 |
KR1020217029001A KR102601351B1 (ko) | 2019-04-12 | 2020-03-25 | 트래픽 분류 방법 및 장치 |
PCT/CN2020/081113 WO2020207248A1 (zh) | 2019-04-12 | 2020-03-25 | 一种流分类方法及装置 |
EP20786844.9A EP3917099A4 (en) | 2019-04-12 | 2020-03-25 | FLOW CLASSIFICATION METHOD AND DEVICE |
JP2021556957A JP7170905B2 (ja) | 2019-04-12 | 2020-03-25 | トラフィック分類方法及び装置 |
US17/469,219 US11882047B2 (en) | 2019-04-12 | 2021-09-08 | Traffic classification method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910294640.0A CN111817978B (zh) | 2019-04-12 | 2019-04-12 | 一种流分类方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111817978A true CN111817978A (zh) | 2020-10-23 |
CN111817978B CN111817978B (zh) | 2022-10-04 |
Family
ID=72750941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910294640.0A Active CN111817978B (zh) | 2019-04-12 | 2019-04-12 | 一种流分类方法及装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11882047B2 (zh) |
EP (1) | EP3917099A4 (zh) |
JP (1) | JP7170905B2 (zh) |
KR (1) | KR102601351B1 (zh) |
CN (1) | CN111817978B (zh) |
WO (1) | WO2020207248A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112667526A (zh) * | 2021-03-22 | 2021-04-16 | 芯启源(南京)半导体科技有限公司 | 一种访问控制列表电路实现方法及其电路 |
CN113468202A (zh) * | 2021-06-30 | 2021-10-01 | 深圳软牛科技有限公司 | 内存数据的筛选方法、装置、设备及存储介质 |
CN115633097A (zh) * | 2022-12-21 | 2023-01-20 | 新华三信息技术有限公司 | 一种访问控制列表acl压缩方法及装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11245625B2 (en) * | 2019-08-07 | 2022-02-08 | Arista Networks, Inc. | Generating entries in a content addressable memory of a network device |
KR102403376B1 (ko) * | 2022-02-23 | 2022-05-30 | 경희대학교 산학협력단 | 결정 트리에 기반하는 트래픽 분류 장치 및 그 방법 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6975592B1 (en) * | 2000-11-22 | 2005-12-13 | Nortel Networks Limited | Configurable rule-engine for layer-7 and traffic characteristic-based classification |
CN1905523A (zh) * | 2006-08-02 | 2007-01-31 | 华为技术有限公司 | 一种多域流分类的实现方法 |
CN101753445A (zh) * | 2009-12-23 | 2010-06-23 | 重庆邮电大学 | 基于关键字分解Hash算法的快速流分类方法 |
CN102377581A (zh) * | 2010-08-09 | 2012-03-14 | 高通创锐讯通讯科技(上海)有限公司 | 一种多域流分类流水线的实现方法 |
US20120079101A1 (en) * | 2010-06-02 | 2012-03-29 | Blue Coat Systems, Inc. | Behavioral Classification of Network Data Flows |
CN104468381A (zh) * | 2014-12-01 | 2015-03-25 | 国家计算机网络与信息安全管理中心 | 一种多域流规则匹配的实现方法 |
CN104462144A (zh) * | 2013-09-24 | 2015-03-25 | 中兴通讯股份有限公司 | 一种包分类规则的查找方法及装置 |
KR20160035793A (ko) * | 2014-09-24 | 2016-04-01 | 에릭슨 엘지 주식회사 | 심층 패킷 분석 방법 및 장치 |
CN106326234A (zh) * | 2015-06-18 | 2017-01-11 | 深圳市中兴微电子技术有限公司 | 流分类方法及装置 |
US20170337258A1 (en) * | 2014-06-04 | 2017-11-23 | International Business Machines Corporation | Classifying uniform resource locators |
US10044620B2 (en) * | 2015-05-01 | 2018-08-07 | Hughes Network Systems, Llc | Multi-phase IP-flow-based classifier with domain name and HTTP header awareness |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7480302B2 (en) | 2004-05-11 | 2009-01-20 | Samsung Electronics Co., Ltd. | Packet classification method through hierarchical rulebase partitioning |
CN101511136B (zh) | 2008-02-14 | 2013-02-20 | 台达电子工业股份有限公司 | 多组发光二极管的电流平衡供电电路 |
CN101540723B (zh) | 2009-04-20 | 2011-07-06 | 杭州华三通信技术有限公司 | 一种流表查找方法和装置 |
US9319316B2 (en) * | 2011-08-02 | 2016-04-19 | Cavium, Inc. | Method and apparatus for managing transfer of transport operations from a cluster in a processor |
US9244978B2 (en) * | 2014-06-11 | 2016-01-26 | Oracle International Corporation | Custom partitioning of a data stream |
WO2016056217A1 (ja) | 2014-10-07 | 2016-04-14 | 日本電気株式会社 | 測定装置、測定システム、測定方法、および、プログラム |
KR101665583B1 (ko) * | 2015-04-21 | 2016-10-24 | (주) 시스메이트 | 네트워크 트래픽 고속처리 장치 및 방법 |
US11418632B2 (en) * | 2015-12-15 | 2022-08-16 | Intel Corporation | High speed flexible packet classification using network processors |
US10305798B2 (en) * | 2016-06-21 | 2019-05-28 | Telefonaktiebolaget Lm Ericsson (Publ) | Dynamic lookup optimization for packet classification |
JP2018033017A (ja) | 2016-08-25 | 2018-03-01 | 日本電信電話株式会社 | ネットワーク処理装置およびパケット処理方法 |
US11088951B2 (en) * | 2017-01-16 | 2021-08-10 | Intel Corporation | Flow classification apparatus, methods, and systems |
-
2019
- 2019-04-12 CN CN201910294640.0A patent/CN111817978B/zh active Active
-
2020
- 2020-03-25 KR KR1020217029001A patent/KR102601351B1/ko active IP Right Grant
- 2020-03-25 WO PCT/CN2020/081113 patent/WO2020207248A1/zh unknown
- 2020-03-25 EP EP20786844.9A patent/EP3917099A4/en active Pending
- 2020-03-25 JP JP2021556957A patent/JP7170905B2/ja active Active
-
2021
- 2021-09-08 US US17/469,219 patent/US11882047B2/en active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6975592B1 (en) * | 2000-11-22 | 2005-12-13 | Nortel Networks Limited | Configurable rule-engine for layer-7 and traffic characteristic-based classification |
CN1905523A (zh) * | 2006-08-02 | 2007-01-31 | 华为技术有限公司 | 一种多域流分类的实现方法 |
CN101753445A (zh) * | 2009-12-23 | 2010-06-23 | 重庆邮电大学 | 基于关键字分解Hash算法的快速流分类方法 |
US20120079101A1 (en) * | 2010-06-02 | 2012-03-29 | Blue Coat Systems, Inc. | Behavioral Classification of Network Data Flows |
CN102377581A (zh) * | 2010-08-09 | 2012-03-14 | 高通创锐讯通讯科技(上海)有限公司 | 一种多域流分类流水线的实现方法 |
CN104462144A (zh) * | 2013-09-24 | 2015-03-25 | 中兴通讯股份有限公司 | 一种包分类规则的查找方法及装置 |
US20170337258A1 (en) * | 2014-06-04 | 2017-11-23 | International Business Machines Corporation | Classifying uniform resource locators |
US9928292B2 (en) * | 2014-06-04 | 2018-03-27 | International Business Machines Corporation | Classifying uniform resource locators |
KR20160035793A (ko) * | 2014-09-24 | 2016-04-01 | 에릭슨 엘지 주식회사 | 심층 패킷 분석 방법 및 장치 |
CN104468381A (zh) * | 2014-12-01 | 2015-03-25 | 国家计算机网络与信息安全管理中心 | 一种多域流规则匹配的实现方法 |
US10044620B2 (en) * | 2015-05-01 | 2018-08-07 | Hughes Network Systems, Llc | Multi-phase IP-flow-based classifier with domain name and HTTP header awareness |
CN106326234A (zh) * | 2015-06-18 | 2017-01-11 | 深圳市中兴微电子技术有限公司 | 流分类方法及装置 |
Non-Patent Citations (2)
Title |
---|
及流暈特征分析: "网络流量分类方法研究及流暈特征分析", 《中国优秀硕士学位论文全文数据库》 * |
黄君荻,吴静,张晖: "IP流量分类算法中特征选择作用分析", 《计算机工程》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112667526A (zh) * | 2021-03-22 | 2021-04-16 | 芯启源(南京)半导体科技有限公司 | 一种访问控制列表电路实现方法及其电路 |
CN112667526B (zh) * | 2021-03-22 | 2021-06-29 | 芯启源(南京)半导体科技有限公司 | 一种访问控制列表电路实现方法及其电路 |
CN113468202A (zh) * | 2021-06-30 | 2021-10-01 | 深圳软牛科技有限公司 | 内存数据的筛选方法、装置、设备及存储介质 |
CN113468202B (zh) * | 2021-06-30 | 2024-05-17 | 深圳软牛科技有限公司 | 内存数据的筛选方法、装置、设备及存储介质 |
CN115633097A (zh) * | 2022-12-21 | 2023-01-20 | 新华三信息技术有限公司 | 一种访问控制列表acl压缩方法及装置 |
CN115633097B (zh) * | 2022-12-21 | 2023-04-28 | 新华三信息技术有限公司 | 一种访问控制列表acl压缩方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3917099A4 (en) | 2022-03-23 |
CN111817978B (zh) | 2022-10-04 |
JP7170905B2 (ja) | 2022-11-14 |
JP2022527704A (ja) | 2022-06-03 |
WO2020207248A1 (zh) | 2020-10-15 |
US11882047B2 (en) | 2024-01-23 |
EP3917099A1 (en) | 2021-12-01 |
US20210409337A1 (en) | 2021-12-30 |
KR102601351B1 (ko) | 2023-11-10 |
KR20210121253A (ko) | 2021-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111817978B (zh) | 一种流分类方法及装置 | |
CN108255958B (zh) | 数据查询方法、装置和存储介质 | |
Lakshminarayanan et al. | Algorithms for advanced packet classification with ternary CAMs | |
Qiao et al. | Fast Bloom filters and their generalization | |
US10095720B2 (en) | Database table index | |
US6484170B2 (en) | Generating searchable data entries and applications therefore | |
Patgiri et al. | Hunting the pertinency of bloom filter in computer networking and beyond: A survey | |
US7558775B1 (en) | Methods and apparatus for maintaining sets of ranges typically using an associative memory and for using these ranges to identify a matching range based on a query point or query range and to maintain sorted elements for use such as in providing priority queue operations | |
Lim et al. | A new hierarchical packet classification algorithm | |
Cheng et al. | Scalable multi-match packet classification using TCAM and SRAM | |
US9703484B2 (en) | Memory with compressed key | |
US10795580B2 (en) | Content addressable memory system | |
US20160105363A1 (en) | Memory system for multiple clients | |
CN106657128B (zh) | 基于通配符掩码规则的数据包过滤方法及装置 | |
Kuo et al. | A memory-efficient TCAM coprocessor for IPv4/IPv6 routing table update | |
CN107045535B (zh) | 数据库表索引 | |
CN113347173B (zh) | 一种包过滤方法、装置及电子设备 | |
CN104901947B (zh) | 一种基于tcam连续数值匹配方法和装置 | |
Ahmadi et al. | Modified collision packet classification using counting bloom filter in tuple space. | |
KR101587756B1 (ko) | 블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법 | |
CN114398518A (zh) | 一种日志快速匹配范化策略的方法及系统 | |
Saxena et al. | Scalable, high-speed on-chip-based NDN name forwarding using FPGA | |
CN118227518B (zh) | 一种表项存储、查找方法、装置、网络设备及存储介质 | |
CN118264255A (zh) | 数据压缩方法、装置、计算机设备及可读存储介质 | |
CN108632131B (zh) | 一种基于指纹型可变长布鲁姆过滤器的邮件地址匹配方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |