CN114338529B - 五元组规则匹配方法及装置 - Google Patents
五元组规则匹配方法及装置 Download PDFInfo
- Publication number
- CN114338529B CN114338529B CN202111633216.8A CN202111633216A CN114338529B CN 114338529 B CN114338529 B CN 114338529B CN 202111633216 A CN202111633216 A CN 202111633216A CN 114338529 B CN114338529 B CN 114338529B
- Authority
- CN
- China
- Prior art keywords
- rule
- data
- tuple
- matching
- table entry
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 230000006870 function Effects 0.000 abstract description 10
- 238000004364 calculation method Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 5
- 230000007547 defect Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及一种五元组规则匹配方法、装置、电子设备及计算机可读介质。该方法包括:获取待进行五元组匹配的报文数据;将所述报文数据基于预设规则进行计算生成哈希数值;基于所述哈希数值获取目标表项数据;将所述报文数据的五元组数据和所述目标表项数据进行规则匹配;在规则匹配结果中包含有链表数据时,在所述目标表项数据中再次提取表项数据进行比较,直至比较结果中不包含链表时为止。本申请涉及的五元组规则匹配方法、装置、电子设备及计算机可读介质,能够在保证原功能不变的情况下,大幅度提高规则查找性能,并简化某些处理流程,节省了FPGA资源,并提高了查表下表性能。
Description
技术领域
本公开涉及计算机信息处理领域,具体而言,涉及一种五元组规则匹配方法、装置、电子设备及计算机可读介质。
背景技术
五元组规则,是一种基于五元组的报文查找方法。用户可设置任意几元为关心或者不关心(此操作也叫做查找类型配置)。FPGA根据用户配置的查找类型截取报文五元组所关心字段用于哈希计算,并将计算结果作为地址存储规则表项。现有技术中,设备的单个五元组查找引擎可一般配置4种查找类型(也可再增加,但类型越多查找性能越差)。表项内容包括报文五元组信息、规则id号,以及规则对应的转发组等。当多个规则之间出现哈希冲突时,FPGA会以链表的形式存储表项内容,链表地址也存放在表项之中。当用户配置了多个查找类型或者出现链表时,需要进行二次回退查找。
现有技术方案可配置的查找类型有且只有4个,数量有限,且性能不高。且对于下一查找类型回退查找,流程比较繁琐,且需要再次计算哈希值,3.
ipv6表项规模太大,浪费了资源。
因此,需要一种新的五元组规则匹配方法、装置、电子设备及计算机可读介质。
在所述背景技术部分公开的上述信息仅用于加强对本申请的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
有鉴于此,本申请提供一种五元组规则匹配方法、装置、电子设备及计算机可读介质,能够在保证原功能不变的情况下,大幅度提高规则查找性能,并简化某些处理流程,节省了FPGA资源,并提高了查表下表性能。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请的一方面,提出一种五元组规则匹配方法,该方法包括:获取待进行五元组匹配的报文数据;将所述报文数据基于预设规则进行计算生成哈希数值;基于所述哈希数值获取目标表项数据;将所述报文数据的五元组数据和所述目标表项数据进行规则匹配;在规则匹配结果中包含有链表数据时,在所述目标表项数据中再次提取表项数据进行比较,直至比较结果中不包含链表时为止。
在本申请的一种示例性实施例中,还包括:基于多个五元组查找类型和多个五元组匹配规则生成规则表项。
在本申请的一种示例性实施例中,基于多个五元组查找类型和多个五元组匹配规则生成规则表项,包括:将所述多个五元组查找类型作为所述规则表项中的表项数据;和/或将所述多个五元组匹配规则作为所述规则表项中的表项数据;和/或基于五元组查找类型和五元组匹配规则生成所述规则表项中的表项数据。
在本申请的一种示例性实施例中,还包括:在所述规则表项为IPV6规则表项时,将所述IPV6规则表项中的sip协议位与dip协议为进行压缩以生成所述规则表项。
在本申请的一种示例性实施例中,将所述报文数据基于预设规则进行计算生成哈希数值,包括:基于预设规则提取所述报文数据中的目标单元数据;生成所述目标单元数据的哈希数值。
在本申请的一种示例性实施例中,生成所述目标单元数据的哈希数值,包括:基于至少三个数据引擎对所述目标单元数据进行计算以生成所述哈希数值。
在本申请的一种示例性实施例中,基于所述哈希数值获取目标表项数据,包括:基于所述哈希数值在所述规则表项中进行匹配以获取所述目标表项数据。
在本申请的一种示例性实施例中,将所述报文数据的五元组数据和所述目标表项数据进行规则匹配,包括:由所述目标表项数据中提取五元组查找类型和/或五元组匹配规则;将所述报文数据的五元组数据与五元组查找类型和/或五元组匹配规则进行规则匹配。
在本申请的一种示例性实施例中,在规则匹配结果中包含有链表数据时,在所述目标表项数据中再次提取表项数据进行比较,直至比较结果中不包含链表时为止,包括:在规则匹配结果中包含有链表数据时,进行链表回退以提取规则表项;在所述规则表项中再次提取目标表项数据进行比较;直至规则匹配结果中不包含链表时为止,生成五元组规则匹配结果。
根据本申请的一方面,提出一种五元组规则匹配装置,该装置包括:报文模块,用于获取待进行五元组匹配的报文数据;哈希模块,用于将所述报文数据基于预设规则进行计算生成哈希数值;表项模块,用于基于所述哈希数值获取目标表项数据;比较模块,用于将所述报文数据的五元组数据和所述目标表项数据进行规则匹配;回退模块,用于在规则匹配结果中包含有链表数据时,在所述目标表项数据中再次提取表项数据进行比较,直至比较结果中不包含链表时为止。
根据本申请的一方面,提出一种电子设备,该电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上文的方法。
根据本申请的一方面,提出一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上文中的方法。
根据本申请的五元组规则匹配方法、装置、电子设备及计算机可读介质,通过获取待进行五元组匹配的报文数据;将所述报文数据基于预设规则进行计算生成哈希数值;基于所述哈希数值获取目标表项数据;将所述报文数据的五元组数据和所述目标表项数据进行规则匹配;在规则匹配结果中包含有链表数据时,在所述目标表项数据中再次提取表项数据进行比较,直至比较结果中不包含链表时为止的方式,能够在保证原功能不变的情况下,大幅度提高规则查找性能,并简化某些处理流程,节省了FPGA资源,并提高了查表下表性能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
通过参照附图详细描述其示例实施例,本申请的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种五元组规则匹配方法及装置的应用场景图。
图2是根据一示例性实施例示出的一种五元组规则匹配方法的流程图。
图3是根据另一示例性实施例示出的一种五元组规则匹配方法的流程图。
图4是根据另一示例性实施例示出的一种五元组规则匹配方法的流程图。
图5是根据一示例性实施例示出的一种五元组规则匹配装置的框图。
图6是根据一示例性实施例示出的一种电子设备的框图。
图7是根据一示例性实施例示出的一种计算机可读介质的框图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本申请将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本申请概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本申请所必须的,因此不能用于限制本申请的保护范围。
本申请涉及的技术缩略语解释如下:
五元组:报文的源IP(SIP)、目的IP(DIP)、协议号(PRO)、源端口(SPORT)和目的端口(DPORT)五种元组的组合。
五元组规则:一种分流网络设备基于报文五元组进行的流量查找、匹配以及转发方法。
DDR:又称为DDR SDRAM,即双倍速率同步动态随机存储器。本发明中用于存储五元组规则表项。
图1是根据一示例性实施例示出的一种五元组规则匹配方法、装置的应用场景图。
如图1所示,系统架构10可以包括终端设备101、102、103,网络104和匹配设备105。网络104用以在终端设备101、102、103和匹配设备105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与匹配设备105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
匹配设备105可以是提供五元组匹配服务的通信设备,可为交换机、网关、防火墙等设备,匹配设备105可对终端设备101、102、103发送的流量数据进行五元组匹配,并对流量数据进行处理,或者截断流量数据,或者正常转发流量数据。
匹配设备105可例如获取待进行五元组匹配的报文数据;匹配设备105可例如将所述报文数据基于预设规则进行计算生成哈希数值;匹配设备105可例如基于所述哈希数值获取目标表项数据;匹配设备105可例如将所述报文数据的五元组数据和所述目标表项数据进行规则匹配;匹配设备105可例如在规则匹配结果中包含有链表数据时,在所述目标表项数据中再次提取表项数据进行比较,直至比较结果中不包含链表时为止。
匹配设备105还可例如基于多个五元组查找类型和多个五元组匹配规则生成规则表项。
需要说明的是,本申请实施例所提供的五元组规则匹配方法可以由匹配设备105执行,相应地,五元组规则匹配装置可以设置于匹配设备105中。
图2是根据一示例性实施例示出的一种五元组规则匹配方法的流程图。五元组规则匹配方法20至少包括步骤S202至S210。
如图2所示,在S202中,获取待进行五元组匹配的报文数据。可由现网流量数据中提取报文数据。
在S204中,将所述报文数据基于预设规则进行计算生成哈希数值。基于预设规则提取所述报文数据中的目标单元数据;生成所述目标单元数据的哈希数值。
预设规则可为设置初始哈希计算原则,更具体的,可为对报文数据中的哪个单元数据进行哈希计算。比如,初始哈希计算原则为计算sip的哈希值,在本步骤中计算表项地址时,只会取报文数据的sip单元中的内容去计算哈希值。
更具体的,可在FPGA中基于至少三个数据引擎对所述目标单元数据进行计算以生成所述哈希数值。
在S206中,基于所述哈希数值获取目标表项数据。基于所述哈希数值在所述规则表项中进行匹配以获取所述目标表项数据。
在一个实施例中,还可基于多个五元组查找类型和多个五元组匹配规则生成规则表项。
更具体的,可将所述多个五元组查找类型作为所述规则表项中的表项数据;将所述多个五元组匹配规则作为所述规则表项中的表项数据;基于五元组查找类型和五元组匹配规则生成所述规则表项中的表项数据。
在一个实施例中,还包括,在所述规则表项为IPV6规则表项时,将所述IPV6规则表项中的sip协议位与dip协议为进行压缩以生成所述规则表项。
现有技术中的ipv6报文由于其表项内容过大,读取一张完整表要比ipv4慢一倍。这样既影响性能,又占容量。本申请中对ipv6表项进行了压缩,使其能够和ipv4表项规模大小一样,这样无论是ddr地址消耗还是处理性能都会有明显的改善。具体压缩方案可见下表:
其中,规则表项地址为五元组哈希计算的结果取低16bit。表项内容通过减少sip与dip所占比特位,将规模压缩到了与ipv4一样大小。此方法弊端是,有极小概率会出现此种情况:有一个a报文与一张b表项,a报文通过哈希计算得到的哈希值低16bit与b表项地址一样,因此a报文查到了b表项,但实际上两者sip或dip并不完全一样,而不一样的比特位刚好是压缩表项后未保留的位置,此时,就出现了误命中现象。
针对这种情况,本申请的技术方案中,在表项中添加了“crc_high”字段,此字段取哈希计算结果中未用于地址索引的其它位置上的8bit。在报文与表项比较中,将该字段也作为匹配条件,只有初始哈希计算结果对应位置与该字段一致,报文才可能命中规则,此方法极大地降低了误命中的概率。
表项中其余字段还有:userid(此规则对应的用户id)、rule_grp(此规则对应的转发组,用于控制流量命中后的转发)、next_tbl_index(下一个链表地址)、ruleid(规则的id号)、rule_type(指定当前规则的查找类型,每1bit对应1元组,1为关心)。
在S208中,将所述报文数据的五元组数据和所述目标表项数据进行规则匹配。由所述目标表项数据中提取五元组查找类型和/或五元组匹配规则;将所述报文数据的五元组数据与五元组查找类型和/或五元组匹配规则进行规则匹配。
在S210中,在规则匹配结果中包含有链表数据时,在所述目标表项数据中再次提取表项数据进行比较,直至比较结果中不包含链表时为止。在规则匹配结果中包含有链表数据时,进行链表回退以提取规则表项;在所述规则表项中再次提取目标表项数据进行比较;直至规则匹配结果中不包含链表时为止,生成五元组规则匹配结果。
本申请中,取消了现有技术中的按照类型查找的方式,直接将多种查找类型以挂链表的方式进行处理,速度更快,且简化了整体处理流程,当链表查找结束,即可认定整体任务结束。
根据本申请的五元组规则匹配方法,通过获取待进行五元组匹配的报文数据;将所述报文数据基于预设规则进行计算生成哈希数值;基于所述哈希数值获取目标表项数据;将所述报文数据的五元组数据和所述目标表项数据进行规则匹配;在规则匹配结果中包含有链表数据时,在所述目标表项数据中再次提取表项数据进行比较,直至比较结果中不包含链表时为止的方式,能够在保证原功能不变的情况下,大幅度提高规则查找性能,并简化某些处理流程,节省了FPGA资源,并提高了查表下表性能。
应清楚地理解,本申请描述了如何形成和使用特定示例,但本申请的原理不限于这些示例的任何细节。相反,基于本申请公开的内容的教导,这些原理能够应用于许多其它实施例。
为了更加明确本申请中的方案和现有技术中的区别,现将现有技术中的五元组规则查找流程详细描述如图3所示,报文输入后,先获取首次查找类型,查找类型由寄存器全局配置,单个规则查找模块可配置最多4种查找类型。根据查找类型计算哈希值,并以此作为地址进行表项查找与匹配,若被告知有链表,则根据链表地址进行二次回退查找,一直到所有链表查完为止,一轮查找结束之后,获取下一个查找类型,开始新一轮查找,此时需要重新计算哈希。当所有类型都查完,五元组规则查找任务全部结束。
图3是根据另一示例性实施例示出的一种五元组规则匹配方法的流程图。图3所示的流程30是现有技术的详细描述。
如图3所示,在S302中,流量输入。
在S304中,获取首次查找类型。
在S306中,哈希计算。哈希计算引擎单次可处理64bit数据内容。
对于ipv4报文,五元组全部内容共需要104bit(32bit_sip+32bit_dip+16bit_sport+16bit_dport+8bit_protocol)。对于ipv6报文,五元组全部内容共需要296bit。其中sip与dip均为128bit。
通过计算可知,一个哈希计算引擎处理ipv4报文共需要连续进行写操作2次,处理ipv6报文共需要连续写操作5次,由此可以看出,同样条件下,ipv6哈希处理速度甚至不到ipv4的一半。
现有技术中虽然采用了双引擎模式来计算哈希,此模式下实现了ipv4的全速处理,而ipv6尽管有所提高,但仍然是一个性能瓶颈。
在S308中,规则表提取。ipv4报文五元组内容共占104bit,ipv6报文五元组内容共占296bit。在读取表项的过程中,ipv6比ipv4的读DDR带宽要高一倍。也就是说,在同等速率下,FPGA获取一张ipv6表项的所用时间是ipv4表项的一倍。
在S310中,报文与表项进行比较。
在S312中,是否有链表。
在S314中,判断是否有下一查找类型。链表回退查找与下一查找类型回退查找:链表查找地址从表项中获取,无需重新计算哈希。下一查找类型回退查找需要再次计算哈希。
为了保证处理性能,FPGA采用了流水操作。即各个环节可在自身最大处理限度之内全速运行,无需等到上一个报文查找结束。发送查表命令时,当链表回退报文与类型回退报文同时准备好时,优先处理链表回退。
而且,现有技术中,哈希计算模块在选择处理新输入报文与下一查找类型回退报文时,采用了分时隙操作,即奇数时刻只处理新输入报文,偶数时刻只处理下一查找类型回退报文,而这种操作只能在新输入报文与回退报文流量压力相当的情况下的实现尽可能的公平调度,但当一方压力较大时,分时隙调度便无法做到公平调度。
在S316中,查找结束。
现有技术方案在性能上主要有如下缺点:
1.对于下一查找类型回退查找,流程比较繁琐,且需要再次计算哈希值,相比于链表回退直接发送查找命令,处理周期要明显更长。而且,哈希计算模块在选择处理新输入报文与下一查找类型回退报文时,采用了分时隙操作,当两方流量压力不均时,无法公平调度。对于单个规则查找模块来说,可配置的查找类型有且只有4个,数量有限,且性能不高。
2.哈希计算性能不足。在双引擎模式下,ipv4报文可全速处理,但ipv6报文处理性能仍有不足。
3.ipv6表项规模太大,不仅浪费了资源,读取一张完整表也要比ipv4慢一倍。
本申请的五元组规则匹配方法,针对现有方案的三点不足,提出了有效的优化方案,可以在保证原功能不变的情况下,大幅度提高规则查找性能,并简化某些处理流程。
图4是根据另一示例性实施例示出的一种五元组规则匹配方法的流程图。图4所示的流程40是对图2所示的流程的详细描述。与现有技术中的流程相比,本申请的方案中,删除了用于配置查找类型的寄存器,以及报文下一类型查找回退流程。同时增加了哈希计算模块处理引擎。
如图4所示,在S402中,流量输入。
在S404中,哈希计算。采用多引擎计算,ipv6的哈希计算性能仍有不足,新增计算引擎,可将ipv6哈希处理性能在原有基础上再提升50%。
删除查找类型配置寄存器:本申请不再采用4个寄存器来配置有限的4种查找类型,而是将查找类型携带于规则表项之中,这样既解决了用户可配查找类型较少的问题,也更加的灵活。
在使用的过程中,用户只需要对规则查找模块配置一个初始哈希计算原则,所有新输入报文都以此方式计算哈希,并进行首次规则查找,获取到表项之后,根据表项中携带的查找类型来进行五元组比较。
在本申请中,表项地址只和规则五元组以及初始哈希计算原则有关,与查找类型不再有直接关系,比如,用户需要下一条关心sip+dip的a规则,但初始哈希计算原则为只关心sip,那么,在计算表项地址时,只会取sip去计算哈希,而当此时需要下另一条关心sip+sport的规则,且两者sip是完全一样的,那毫无疑问,哈希结算结果也一样,此时则以挂链表的形式将规则下给FPGA。
在S406中,规则表项获取。
在S408中,报文与表项进行比较。
在S408中,是否有链表。现有技术中的下一类型回退查找流程,不仅处理周期较长,且需要重新计算哈希,处理性能受限于哈希计算性能,明显不如链表回退直接发送查找命令高效,且下一类型回退可能会出现与新输入流量调度不均的问题。本申请中的方案中删除了此流程,将多种查找类型以挂链表的方式进行处理,速度更快,且简化了整体处理流程,当链表查找结束,即可认定整体任务结束。
在S408中,查找结束。
本申请的五元组规则匹配方法,简化了整体处理流程,在保证原有功能正常使用的情况下有效的提高了规则查找性能。查找类型存放在规则表项中,相比于以往用寄存器配置,更加灵活,且支持数量更多。对ipv6报文表项进行压缩,节省了FPGA资源,并提高了查表下表性能。
本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本申请提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
此外,需要注意的是,上述附图仅是根据本申请示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图5是根据一示例性实施例示出的一种五元组规则匹配装置的框图。如图5所示,五元组规则匹配装置50包括:报文模块502,哈希模块504,表项模块506,比较模块508,回退模块510。
报文模块502用于获取待进行五元组匹配的报文数据;
哈希模块504用于将所述报文数据基于预设规则进行计算生成哈希数值;
表项模块506用于基于所述哈希数值获取目标表项数据;
比较模块508用于将所述报文数据的五元组数据和所述目标表项数据进行规则匹配;
回退模块510用于在规则匹配结果中包含有链表数据时,在所述目标表项数据中再次提取表项数据进行比较,直至比较结果中不包含链表时为止。
根据本申请的五元组规则匹配装置,通过获取待进行五元组匹配的报文数据;将所述报文数据基于预设规则进行计算生成哈希数值;基于所述哈希数值获取目标表项数据;将所述报文数据的五元组数据和所述目标表项数据进行规则匹配;在规则匹配结果中包含有链表数据时,在所述目标表项数据中再次提取表项数据进行比较,直至比较结果中不包含链表时为止的方式,能够在保证原功能不变的情况下,大幅度提高规则查找性能,并简化某些处理流程,节省了FPGA资源,并提高了查表下表性能。
图6是根据一示例性实施例示出的一种电子设备的框图。
下面参照图6来描述根据本申请的这种实施方式的电子设备600。图6显示的电子设备600仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书中描述的根据本申请各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图2,图4中所示的步骤。
所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
所述存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备600’(例如键盘、指向设备、蓝牙设备等)通信,使得用户能与该电子设备600交互的设备通信,和/或该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,如图7所示,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本申请实施方式的上述方法。
所述软件产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该计算机可读介质实现如下功能:获取待进行五元组匹配的报文数据;将所述报文数据基于预设规则进行计算生成哈希数值;基于所述哈希数值获取目标表项数据;将所述报文数据的五元组数据和所述目标表项数据进行规则匹配;在规则匹配结果中包含有链表数据时,在所述目标表项数据中再次提取表项数据进行比较,直至比较结果中不包含链表时为止。得该计算机可读介质还可实现如下功能:基于多个五元组查找类型和多个五元组匹配规则生成规则表项。
本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本申请实施例的方法。
以上具体地示出和描述了本申请的示例性实施例。应可理解的是,本申请不限于这里描述的详细结构、设置方式或实现方法;相反,本申请意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
Claims (8)
1.一种五元组规则匹配方法,其特征在于,包括:
获取待进行五元组匹配的报文数据;
基于多个五元组查找类型和多个五元组匹配规则生成规则表项;
在所述规则表项为IPV6规则表项时,将所述IPV6规则表项中的sip协议位与dip协议位进行压缩以生成所述规则表项;
将所述报文数据基于预设规则进行计算生成哈希数值;
基于所述哈希数值获取目标表项数据;
将所述报文数据的五元组数据和所述目标表项数据进行规则匹配;
在规则匹配结果中包含有链表数据时,在所述目标表项数据中再次提取表项数据进行比较,直至比较结果中不包含链表时为止。
2.如权利要求1所述的方法,其特征在于,基于多个五元组查找类型和多个五元组匹配规则生成规则表项,包括:
将所述多个五元组查找类型作为所述规则表项中的表项数据;和/或
将所述多个五元组匹配规则作为所述规则表项中的表项数据;和/或
基于五元组查找类型和五元组匹配规则生成所述规则表项中的表项数据。
3.如权利要求1所述的方法,其特征在于,将所述报文数据基于预设规则进行计算生成哈希数值,包括:
基于预设规则提取所述报文数据中的目标单元数据;
生成所述目标单元数据的哈希数值。
4.如权利要求3所述的方法,其特征在于,生成所述目标单元数据的哈希数值,包括:
基于至少三个数据引擎对所述目标单元数据进行计算以生成所述哈希数值。
5.如权利要求2所述的方法,其特征在于,基于所述哈希数值获取目标表项数据,包括:
基于所述哈希数值在所述规则表项中进行匹配以获取所述目标表项数据。
6.如权利要求1所述的方法,其特征在于,将所述报文数据的五元组数据和所述目标表项数据进行规则匹配,包括:
由所述目标表项数据中提取五元组查找类型和/或五元组匹配规则;
将所述报文数据的五元组数据与五元组查找类型和/或五元组匹配规则进行规则匹配。
7.如权利要求1所述的方法,其特征在于,在规则匹配结果中包含有链表数据时,在所述目标表项数据中再次提取表项数据进行比较,直至比较结果中不包含链表时为止,包括:
在规则匹配结果中包含有链表数据时,进行链表回退以提取规则表项;
在所述规则表项中再次提取目标表项数据进行比较;
直至规则匹配结果中不包含链表时为止,生成五元组规则匹配结果。
8.一种五元组规则匹配装置,其特征在于,包括:
报文模块,用于获取待进行五元组匹配的报文数据;
规则表项模块,用于基于多个五元组查找类型和多个五元组匹配规则生成规则表项,并且在所述规则表项为IPV6规则表项时,将所述IPV6规则表项中的sip协议位与dip协议位进行压缩以生成所述规则表项;哈希模块,用于将所述报文数据基于预设规则进行计算生成哈希数值;
表项模块,用于基于所述哈希数值获取目标表项数据;
比较模块,用于将所述报文数据的五元组数据和所述目标表项数据进行规则匹配;
回退模块,用于在规则匹配结果中包含有链表数据时,在所述目标表项数据中再次提取表项数据进行比较,直至比较结果中不包含链表时为止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111633216.8A CN114338529B (zh) | 2021-12-29 | 2021-12-29 | 五元组规则匹配方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111633216.8A CN114338529B (zh) | 2021-12-29 | 2021-12-29 | 五元组规则匹配方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114338529A CN114338529A (zh) | 2022-04-12 |
CN114338529B true CN114338529B (zh) | 2024-03-08 |
Family
ID=81014855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111633216.8A Active CN114338529B (zh) | 2021-12-29 | 2021-12-29 | 五元组规则匹配方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114338529B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115225544A (zh) * | 2022-07-19 | 2022-10-21 | 武汉思普崚技术有限公司 | 一种网络流量统计和监测方法、装置、电子设备及介质 |
Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101345694A (zh) * | 2007-07-11 | 2009-01-14 | 上海未来宽带技术及应用工程研究中心有限公司 | 一种快速查找定位和匹配访问控制列表的方法 |
WO2009103225A1 (zh) * | 2008-02-18 | 2009-08-27 | 华为技术有限公司 | 一种报文转发的方法和设备 |
US7600094B1 (en) * | 2006-06-30 | 2009-10-06 | Juniper Networks, Inc. | Linked list traversal with reduced memory accesses |
CN101753445A (zh) * | 2009-12-23 | 2010-06-23 | 重庆邮电大学 | 基于关键字分解Hash算法的快速流分类方法 |
CN102882810A (zh) * | 2012-10-26 | 2013-01-16 | 杭州迪普科技有限公司 | 一种报文快速转发方法及装置 |
CN103023728A (zh) * | 2013-01-15 | 2013-04-03 | 中国人民解放军信息工程大学 | 流监控方法 |
CN103095595A (zh) * | 2012-12-30 | 2013-05-08 | 大连环宇移动科技有限公司 | 一种基于单向并行多链表的网络数据管理方法及系统 |
CN103179109A (zh) * | 2013-02-04 | 2013-06-26 | 上海恒为信息科技有限公司 | 基于二级会话查询功能的过滤分流装置及其方法 |
CN103188231A (zh) * | 2011-12-30 | 2013-07-03 | 北京锐安科技有限公司 | 一种多核板卡acl规则匹配方法 |
CN103581007A (zh) * | 2013-10-28 | 2014-02-12 | 汉柏科技有限公司 | 一种报文分类及查找方法 |
CN103780469A (zh) * | 2012-10-23 | 2014-05-07 | 上海博达数据通信有限公司 | 多核平台上IPv6隧道的实现方法以及报文转发方法 |
CN104468381A (zh) * | 2014-12-01 | 2015-03-25 | 国家计算机网络与信息安全管理中心 | 一种多域流规则匹配的实现方法 |
CN104579970A (zh) * | 2013-10-29 | 2015-04-29 | 国家计算机网络与信息安全管理中心 | 一种IPv6报文的策略匹配方法及装置 |
CN108153757A (zh) * | 2016-12-02 | 2018-06-12 | 深圳市中兴微电子技术有限公司 | 一种哈希表管理的方法和装置 |
CN109361609A (zh) * | 2018-12-14 | 2019-02-19 | 东软集团股份有限公司 | 防火墙设备的报文转发方法、装置、设备及存储介质 |
CN109600313A (zh) * | 2017-09-30 | 2019-04-09 | 迈普通信技术股份有限公司 | 报文转发方法及装置 |
CN110708250A (zh) * | 2019-08-26 | 2020-01-17 | 广州市高科通信技术股份有限公司 | 一种提高数据转发性能的方法、电子设备及存储介质 |
CN111107068A (zh) * | 2019-12-09 | 2020-05-05 | 江苏云涌电子科技股份有限公司 | 一种fpga高效规则匹配方法及终端 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107682266B (zh) * | 2017-09-12 | 2021-02-26 | 杭州迪普科技股份有限公司 | 流表项的匹配方法及装置、计算机可读存储介质 |
CN107682267B (zh) * | 2017-09-21 | 2020-04-28 | 烽火通信科技股份有限公司 | Linux设备的网络数据转发方法及系统 |
-
2021
- 2021-12-29 CN CN202111633216.8A patent/CN114338529B/zh active Active
Patent Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7600094B1 (en) * | 2006-06-30 | 2009-10-06 | Juniper Networks, Inc. | Linked list traversal with reduced memory accesses |
CN101345694A (zh) * | 2007-07-11 | 2009-01-14 | 上海未来宽带技术及应用工程研究中心有限公司 | 一种快速查找定位和匹配访问控制列表的方法 |
WO2009103225A1 (zh) * | 2008-02-18 | 2009-08-27 | 华为技术有限公司 | 一种报文转发的方法和设备 |
CN101753445A (zh) * | 2009-12-23 | 2010-06-23 | 重庆邮电大学 | 基于关键字分解Hash算法的快速流分类方法 |
CN103188231A (zh) * | 2011-12-30 | 2013-07-03 | 北京锐安科技有限公司 | 一种多核板卡acl规则匹配方法 |
CN103780469A (zh) * | 2012-10-23 | 2014-05-07 | 上海博达数据通信有限公司 | 多核平台上IPv6隧道的实现方法以及报文转发方法 |
CN102882810A (zh) * | 2012-10-26 | 2013-01-16 | 杭州迪普科技有限公司 | 一种报文快速转发方法及装置 |
CN103095595A (zh) * | 2012-12-30 | 2013-05-08 | 大连环宇移动科技有限公司 | 一种基于单向并行多链表的网络数据管理方法及系统 |
CN103023728A (zh) * | 2013-01-15 | 2013-04-03 | 中国人民解放军信息工程大学 | 流监控方法 |
CN103179109A (zh) * | 2013-02-04 | 2013-06-26 | 上海恒为信息科技有限公司 | 基于二级会话查询功能的过滤分流装置及其方法 |
CN103581007A (zh) * | 2013-10-28 | 2014-02-12 | 汉柏科技有限公司 | 一种报文分类及查找方法 |
CN104579970A (zh) * | 2013-10-29 | 2015-04-29 | 国家计算机网络与信息安全管理中心 | 一种IPv6报文的策略匹配方法及装置 |
CN104468381A (zh) * | 2014-12-01 | 2015-03-25 | 国家计算机网络与信息安全管理中心 | 一种多域流规则匹配的实现方法 |
CN108153757A (zh) * | 2016-12-02 | 2018-06-12 | 深圳市中兴微电子技术有限公司 | 一种哈希表管理的方法和装置 |
CN109600313A (zh) * | 2017-09-30 | 2019-04-09 | 迈普通信技术股份有限公司 | 报文转发方法及装置 |
CN109361609A (zh) * | 2018-12-14 | 2019-02-19 | 东软集团股份有限公司 | 防火墙设备的报文转发方法、装置、设备及存储介质 |
CN110708250A (zh) * | 2019-08-26 | 2020-01-17 | 广州市高科通信技术股份有限公司 | 一种提高数据转发性能的方法、电子设备及存储介质 |
CN111107068A (zh) * | 2019-12-09 | 2020-05-05 | 江苏云涌电子科技股份有限公司 | 一种fpga高效规则匹配方法及终端 |
Non-Patent Citations (4)
Title |
---|
一个多功能路由查找引擎的设计与实现;陈虎;梁松海;尹冬元;;计算机工程与应用;20060311(第08期);全文 * |
基于单向并行多链表的流管理;叶荻秋;程东年;李玉峰;;计算机科学;20130915(第09期);全文 * |
多进程共享的高效哈希表;张伟;许海洋;周百顺;;计算机工程与设计(第05期);全文 * |
用于快速流分类的关键字分解Hash算法;赵国峰;闫亮;;计算机工程(第16期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114338529A (zh) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8886680B2 (en) | Deterministic finite automata graph traversal with nodal bit mapping | |
CN102104541B (zh) | 报头处理引擎 | |
CN112866111B (zh) | 流表管理的方法和装置 | |
US8290934B2 (en) | Method and system for processing access control lists using a hashing scheme | |
CN115486046B (zh) | 基于开放虚拟软交换机ovs的数据包处理方法及设备 | |
US20070171911A1 (en) | Routing system and method for managing rule entry thereof | |
CN113411380B (zh) | 基于fpga可编程会话表的处理方法、逻辑电路和设备 | |
CN114285781B (zh) | Srv6业务流量统计方法、装置、电子设备及介质 | |
US10700975B2 (en) | Systems and methods for optimized route caching | |
CN113746749A (zh) | 网络连接设备 | |
CN109525518B (zh) | 一种基于fpga的ip报文网络地址转换方法及装置 | |
CN114760108B (zh) | 报文匹配方法及装置 | |
CN114338529B (zh) | 五元组规则匹配方法及装置 | |
CN115996203B (zh) | 网络流量分域方法、装置、设备和存储介质 | |
US20060274762A1 (en) | Method and system for supporting efficient and cache-friendly TCP session lookup operations based on canonicalization tags | |
CN113656198A (zh) | 客户端到云手机的复制粘贴方法和装置 | |
CN114006831B (zh) | 报文数据处理方法及装置 | |
CN114124822B (zh) | 报文匹配处理装置及方法 | |
CN115250254B (zh) | Netflow报文分发处理方法及装置 | |
CN116600031B (zh) | 报文处理方法、装置、设备及存储介质 | |
CN114363257B (zh) | 隧道报文的五元组匹配方法及装置 | |
CN118590438A (zh) | 反向首包报文的转发方法及装置 | |
CN114650271B (zh) | 全局负载dns邻居站点学习方法及装置 | |
CN118646723A (zh) | 一种适用于智能网卡的流表卸载方法、系统、设备及介质 | |
US12079136B1 (en) | Cache look up during packet processing by uniformly caching non-uniform lengths of payload data in a dual-stage cache of packet processors |
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 |