CN115514707A - 一种报文匹配方法、装置、存储介质及电子装置 - Google Patents

一种报文匹配方法、装置、存储介质及电子装置 Download PDF

Info

Publication number
CN115514707A
CN115514707A CN202110699863.2A CN202110699863A CN115514707A CN 115514707 A CN115514707 A CN 115514707A CN 202110699863 A CN202110699863 A CN 202110699863A CN 115514707 A CN115514707 A CN 115514707A
Authority
CN
China
Prior art keywords
counter
hash
counters
target
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.)
Pending
Application number
CN202110699863.2A
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.)
Sanechips Technology Co Ltd
Original Assignee
Sanechips Technology Co Ltd
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 Sanechips Technology Co Ltd filed Critical Sanechips Technology Co Ltd
Priority to CN202110699863.2A priority Critical patent/CN115514707A/zh
Priority to EP22827630.9A priority patent/EP4345634A1/en
Priority to PCT/CN2022/100564 priority patent/WO2022268138A1/zh
Publication of CN115514707A publication Critical patent/CN115514707A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供了一种报文匹配方法、装置、存储介质及电子装置,该方法包括:确定报文的键值对应的多个哈希运算结果;分别根据该多个哈希运算结果对多个计数器组的地址进行索引,得到多个计数器,其中,一个计数器组中索引一个计数器;从该多个计数器中确定一个目标计数器;根据该目标计数器的地址获取片外存储器对应位置的目标条目;若该目标条目与该键值相等,确定该报文与该目标条目匹配,可以解决相关技术中片内外结构的报文匹配算法无法兼顾查找效率和存储效率的问题,大大提高了报文匹配的查找速率和稳定性,存储利用率也得到大幅提升。

Description

一种报文匹配方法、装置、存储介质及电子装置
技术领域
本申请实施例涉及通信领域,具体而言,涉及一种报文匹配方法、装置、存储介质及电子装置。
背景技术
在网络处理器和路由设备中,诸如含接入控制列表(Access Control Lists,简称为ACL)、路由表、媒体接入控制(Media Access Control,简称为MAC)转发表等各类表项的查表效率决定了报文转发效率,直接影响整个网络的性能。基于硬件实现的报文分类方法具有查找速率高、查找延时稳定等优点,通常以专用芯片的形式广泛应用于如今高性能网络处理设备和转发设备中。
精确匹配类型是当今报文匹配类型中最为简单的一种,存储与查找方法通常十分简单高效。但随着网络规模不断扩大,这类表项规模也急剧增长,诸如MAC转发表这类仅需精确匹配的表项,已达到了上G的容量,所占用的芯片内的存储开销已不容忽视。为了降低芯片的整体规模,我们希望能够将实际的表项存储至片外专用的存储器中,由此减少片内的存储器需求,这需要对原始算法进行改良。
已有的哈希算法中,存放于片外的哈希表由于哈希冲突的问题,可能需要多次片外访问才能完成一次查找,查找效率下降。即使提供一定的三态内容存在存储器(TernaryContent Addressable Memory,简称为TCAM)或寄存器资源用于解决部分冲突,保证哈希表每个地址仅存放一个条目,则哈希表的存储效率将大幅降低,表项容量无法保证。传统的布鲁姆过滤器仅能提供条目过滤,减少对片外无效访问的概率,无法解决查找效率和存储效率的固有问题。
针对相关技术中片内外结构的报文匹配算法无法兼顾查找效率和存储效率的问题,尚未提出解决方案。
发明内容
本申请实施例提供了一种报文匹配方法、装置、存储介质及电子装置,以至少解决相关技术中片内外结构的报文匹配算法无法兼顾查找效率和存储效率的问题。
根据本申请的一个实施例,提供了一种报文匹配方法,包括:
确定报文的键值对应的多个哈希运算结果;
分别根据所述多个哈希运算结果对多个计数器组的地址进行索引,得到多个计数器,其中,一个计数器组中索引一个计数器;
从所述多个计数器中确定一个目标计数器;
根据所述目标计数器的地址获取片外存储器对应位置的目标条目;
若所述目标条目与所述键值相等,确定所述报文与所述目标条目匹配。
根据本申请的另一个实施例,还提供了一种报文匹配装置,包括:
确定模块,用于确定报文的键值对应的多个哈希运算结果;
索引模块,用于分别根据所述多个哈希运算结果对多个计数器组的地址进行索引,得到多个计数器,其中,一个计数器组中索引一个计数器;
选取模块,用于从所述多个计数器中确定一个目标计数器;
第一获取模块,用于根据所述目标计数器的地址获取片外存储器对应位置的目标条目;
匹配模块,用于若所述目标条目与所述键值相等,确定所述报文与所述目标条目匹配。
根据本申请的又一个实施例,还提供了一种计算机可读的存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
本申请实施例,确定报文的键值对应的多个哈希运算结果;分别根据所述多个哈希运算结果对多个计数器组的地址进行索引,得到多个计数器,其中,一个计数器组中索引一个计数器;从所述多个计数器中确定一个目标计数器;根据所述目标计数器的地址获取片外存储器对应位置的目标条目;若所述目标条目与所述键值相等,确定所述报文与所述目标条目匹配,可以解决相关技术中片内外结构的报文匹配算法无法兼顾查找效率和存储效率的问题,大大提高了报文匹配的查找速率和稳定性,存储利用率也得到大幅提升。
附图说明
图1是本申请实施例的报文匹配方法的移动终端的硬件结构框图;
图2是根据本申请实施例的报文匹配方法的流程图;
图3是根据本实施例的条目插入哈希表的流程图;
图4是根据本实施例的构建索引树寻找空位置的示意图;
图5是根据本实施例的以索引树为前提的布谷鸟哈希碰撞搬移的示意图;
图6是根据本实施例的对计数器组的维护过程的示意图;
图7是根据本实施例的硬件模块的框图;
图8是根据本实施例的报文匹配装置的框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本申请实施例的报文匹配方法的移动终端的硬件结构框图,如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的报文匹配方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及业务链地址池切片处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于上述移动终端或网络架构的报文匹配方法,应用于终端,所述终端通过双连接(Dual Connection,简称为DC)接入源区域的当前主节点MN小区与当前辅节点SN小区,图2是根据本申请实施例的报文匹配方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,确定报文的键值对应的多个哈希运算结果;
本实施例中,上述步骤S202具体可以包括:提取所述报文的键值;根据分类器预设的多个哈希函数,确定所述键值对应的所述多个哈希运算结果,其中,一个哈希函数确定一个哈希运算结果。
步骤S204,分别根据所述多个哈希运算结果对多个计数器组的地址进行索引,得到多个计数器,其中,一个计数器组中索引一个计数器;
步骤S206,从所述多个计数器中确定一个目标计数器;
本实施例中,上述步骤S206具体可以包括:依次提取所述多个计数器的计数器值;从所述多个计数器中获取所述计数器值最小的计数器;若所述计数器值最小的计数器为一个,确定所述计数器值最小的计数器为所述目标计数器;若所述计数器值最小的计数器为多个,通过计时器组的状态从所述多个计数器中确定唯一的所述目标计数器。本实施例中计数器组的状态包括计数器组编号、哈希函数编号、计数器所在组内的地址编号、哈希函数结果。具体的,可以确定所述计数器值最小的多个计数器中计数器组编号或哈希函数编号最小的计数器为所述目标计数器,也可以确定所述计数器值最小的多个计数器中计数器所在组内的地址编号或哈希函数结果最小的计数器为所述目标计数器。
步骤S208,根据所述目标计数器的地址获取片外存储器对应位置的目标条目;
步骤S210,若所述目标条目与所述键值相等,确定所述报文与所述目标条目匹配。
通过上述步骤S202至S210,可以解决相关技术中片内外结构的报文匹配算法无法兼顾查找效率和存储效率的问题,大大提高了报文匹配的查找速率和稳定性,存储利用率也得到大幅提升。
在一示例性实施例中,在上述步骤S202之前,还包括:
S1,获取待插入条目的多个哈希运算结果,其中,所述多个哈希运算结果是根据分类器预设的多个哈希函数确定的,一个哈希函数确定一个哈希运算结果,一个哈希函数对应一个计数器组;
S2,根据所述多个哈希运算结果将所述待插入条目插入哈希表的空闲位置,并维护多个计数器组,其中,每个计数器组包含的计数器个数与所述哈希表的容量相等,每个计数器组内的计数器地址分别与所述哈希表的哈希表位置一一对应,所述计数器地址为所述哈希运算结果。
进一步的,上述步骤S2具体可以包括:
S21,根据所述多个哈希运算结果对多个计数器组的地址进行索引,得到多个计数器,其中,一个哈希运算结果对应一个计数器组中的一个计数器;
S22,从所述多个计数器中选取对应哈希表的位置为空闲状态的一个目标计数器;
S23,将所述待插入条目插入所述目标计数器的地址对应的哈希表的空闲位置。
在一示例性实施例中,上述步骤S22具体可以包括:
S221,若所述多个计数器的地址对应的哈希表位置均为空闲状态,从所述多个计数器中选取计数器值最小的一个目标计数器;
S222,若所述多个计数器的地址对应的哈希表位置均为非空闲状态,执行碰撞搬移,得到碰撞搬移后的一个目标空闲位置,确定所述目标空闲位置对应的计数器为所述目标计数器。
在一可选的实施例中,上述步骤S222中,执行碰撞搬移,得到碰撞搬移后的一个目标空闲位置具体可以包括:
分别对所述哈希表的k个位置存放的条目构建索引树,得到k棵索引树,其中,所述索引树的根节点链接到哈希运算结果对应哈希表的K个位置;
通过布谷鸟哈希碰撞从所述k棵索引树的一棵索引树的根节点对应的哈希表位置中搬移已存放的条目,腾出所述k个位置中的一个位置,得到所述目标空闲位置,进一步的,重复从所述k棵索引树的第一棵索引树开始,控制每棵索引树生长一层,得到k-1个叶子节点,直到从所述叶子节点获取到所述空闲位置,其中,每棵索引树中每个叶子节点对应的哈希表位置是其父节点对应哈希表位置已存放条目计算得到的哈希运算结果,所述k-1个叶子节点分别对应其父节点位置已存放条目计算得到的当前位置以外的k-1个哈希运算结果;将父节点对应哈希表位置已存放条目搬移到所述空闲位置,使得所述父节点对应的哈希表位置为空闲状态,若作为当前节点的所述父节点存在父节点,则搬移所述当前节点的父节点对应哈希表位置已存放条目到所述当前节点对应的空闲哈希表位置,从底向上重复执行搬移,直到所述根节点对应哈希表位置为空闲状态,得到所述目标空闲位置。
在另一可选实施例中,上述步骤S222中,执行碰撞搬移,得到碰撞搬移后的一个目标空闲位置具体还可以包括:根据所述待插入条目X对应的k个计数器的计数值以及计数器组当前状态的其它特征值,唯一定位到哈希函数编号及哈希表位置,将所述哈希表位置内已存放的条目Y取出,并标记所述哈希表位置;确定所述条目Y的其余k-1个哈希运算结果,若存在空闲位置,则依次将所述条目Y搬移至所述空闲位置;否则,根据所述条目Y的k-1个计数器的计数值以及计数器组当前状态的其它特征值,唯一定位到哈希函数编号及哈希表位置,将所述哈希表位置内以存放的条目取出,继续尝试碰撞搬移,直至找到所述空闲位置,确定所述条目Y搬移前所在位置为所述目标空闲位置,其中,在碰撞搬移过程中不允许搬移至标记过的位置内。
具体的,在插入条目X时,若X计算得到的k个哈希函数结果对应位置均为非空闲状态,执行碰撞搬移;根据当前X对应的k个计数器的计数值以及可能需要的其它计数器组的状态信息,定位到唯一的哈希函数编号及哈希表位置,将该位置内已存放的条目Y取出,并标记该位置;计算条目Y的其余k-1个哈希函数结果,若存在空闲位置,则依次将Y搬移至空闲位置,X搬移至原Y所在位置;否则,根据Y的k-1个计数器的计数值以及可能需要的其它计数器组的状态信息,定位到唯一的哈希函数编号及哈希表位置,将该位置内以存放的条目取出,继续尝试碰撞搬移;碰撞搬移不允许搬移至已标记的位置内,只允许指向新位置;如此重复执行,直至找到空闲位置或达到预设的碰撞搬移上限。
在另一可选实施例中,上述步骤S222中,维护多个计数器组具体可以包括:获取所述待插入条目插入的目标空闲位置的哈希运算结果Hs(X),其中,1≤s≤k,k为哈希函数的数量;依次获取第s个计数器组的第Hs(X)个计数器,得到k个计数器;若通过所述k个计数器的计数值或者所述k个计数器组的当前状态中除所述计数值之外的其它特征值,唯一定位到目标空闲位置,则无需维护计数器组;否则,调整一个或多个计数器的计数值,使得调整后的计数器的计数值满足条目插入规则;若所述条目X插入时引起计数器的计数值发生改变,检查所述计数值发生改变的计数器对应的哈希表位置已存放条目是否仍满足所述条目插入规则;若不满足,重复对所述计数值发生改变的计数器对应的哈希表位置已存放条目继续执行计数器维护,直至所述计数器值发生改变的计数器对应的哈希表位置已存放条目均符合所述条目插入规则,其中,所述条目插入规则为:依次获取第s个计数器组的第Hs(X)个计数器,得到所述k个计数器,其中,1≤s≤k,k为哈希函数的数量;通过所述k个计数器的计数值以及k个计数器组的当前状态中除所述计数值之外的其它特征值,唯一确定所述条目存放时采用的哈希函数编号,采用所述哈希函数编号对应的哈希函数的哈希运算结果唯一定位到条目存放的位置。
具体的,获取所述待插入条目插入的目标空闲位置的哈希运算结果Hs(X),其中,1≤s≤k,k为哈希函数的数量;
若i<s,且CGi[Hi(X)]≤CGs[Hs(X)],则令CGi[Hi(X)]=CGs[Hs(X)]+1,其中,CGi[Hi(X)]为所述待插入条目经过第i个哈希函数计算得到的哈希运算结果对应的计数器的计数器值,CGs[Hs(X)]为所述待插入条目经过第s个哈希函数计算得到的哈希运算结果对应的计数器的计数器值;
若i>s,且CGi[Hi(X)]<CGs[Hs(X)],则令CGi[Hi(X)]=CGs[Hs(X)];
确定第t个计数器组内的目标计数器发生计数器值变动,其中,所述目标计数器对应的哈希表位置已存放条目Y,所述条目Y通过第t个哈希函数运算得到的哈希运算结果为所述目标计数器对应的哈希表位置,1≤t≤k;
检测所述条目Y对应的除哈希运算结果Ht(Y)之外的k-1个哈希运算结果对应的k-1个计数器的计数值是否满足条目插入规则;
若不满足,则对所有不满足的计数器执行增加计数,使所述条目Y满足所述条目插入规则,重复执行直至所有计数器值发生变动的计数器对应的哈希表位置已存放条目均符合所述条目插入规则,其中,所述条目插入规则为:若i<s,则必然有CGi[Hi(X)]>CGs[Hs(X)];若i>s,则必然有CGi[Hi(X)]≥CGs[Hs(X)]。
本实施例中,插入条目X,通过k个哈希函数计算得到k个哈希结果,记为Hk(X)。依次选取第s个计数器组的第Hs(X)个计数器,找到计数值最小的计数器,该计数器对应的哈希表位置即为目标存放位置。若存在多个计数值最小的计数器,选则哈希结果更小的位置为目标位置。若目标位置非空,则执行碰撞搬移,以找到空位置,维护计数器组以满足上述条件。
数据插入部分包括以下步骤:
步骤1,逐个插入当前样本内的每一个条目并继续步骤2执行插入;
步骤2,根据分类器预设的k个哈希函数,计算当前待插入报文的哈希运算结果,找到哈希表内对应的k个位置。
步骤3,查询k个位置是否为空,如果不存在空位置,则跳转步骤4,否则跳转步骤5。
步骤4,对k个位置存放的条目分别构建索引树,尝试通过布谷鸟哈希碰撞搬移已有的条目,腾出最初计算得到的k个位置中的一个,成功则跳转步骤5,否则撤销所有操作,返回插入失败。
上述步骤4的具体步骤包括:
步骤4a,新建k棵树及其根节点,k个根节点分别链接到哈希计算得到的k个位置(每个位置均被占用)。
步骤4b,从第一棵树开始,令每棵树生长一层,具体通过对每个叶子节点链接的哈希表位置所存放的规则执行哈希计算,找到除当前位置外的其余(k-1)个位置,分别新建子节点。一旦在某棵树新长出的叶子节点中找到空位置,则跳转至步骤4d。
步骤4c,重复步骤4b,每次生长一层,直至找到空位置或树的高度达到预设上限,如果找到空位置则跳转至步骤4d,否则返回寻找失败。
步骤4d,以该叶子节点为初始节点,尝试将父节点指向位置所存放的规则转移至当前节点的位置,根据计数器组维护是否成功为标准判断规则是否可搬移,如果成功,则跳转至步骤4e;否则回退所执行的搬移操作,返回寻找失败。
步骤4e,以上一步中节点的父节点作为新的初始节点,重复执行步骤4d,直至中途返回失败或顺利到达根节点,此时根节点指向的哈希表位置已腾出,返回该位置信息。
步骤5,假设条目可存放于找到的空闲位置,对计数器组进行维护,保证当前条目插入后不会对表内已有条目查找的正确性产生影响,如果维护成功,则跳转步骤6,否则撤销所有操作,返回插入失败。
上述步骤5中维护计数器组的具体步骤为:
步骤5a,k个哈希函数对应k个计数器组,每个计数器组分别记为CG1,……,CGk,每个计数器组包含的计数器个数与哈希表容量相等。令条目X经过k个哈希函数计算得到的结果分别记为Hi(X),1≤i≤k。令第p个计数器组的第m个计数器数值记为CGp[m]。假设当前条目X插入的位置所采用的哈希函数为Hs(1≤s≤k),那么需要对CGi[Hi(X)](1≤i≤k,且i≠s)进行判断,若i≤s,且CGi[Hi(X)]≤CGs[Hs(X)],则令CGi[Hi(X)]=CGs[Hs(X)]+1;若i>s,且CGi[Hi(X)]<CGs[Hs(X)],则令CGi[Hi(X)]=CGs[Hs(X)]。若维护后的计数器数值超过计数器上限,则回退所有计数器操作,返回失败。
步骤5b,逐个判断每一个有变动的计数器,查看该地址哈希表内是否已存放条目,若未存放条目,则跳过;若存放条目所采用的哈希编号与该计数器所处的计数器组编号不同,则跳过;否则进入步骤5c处理,直至所有计数器判断处理完成,或者达到计数器组碰撞上限,或者计数器计数达到上限。若全部处理完成,返回成功;否则回退所有计数器操作,返回失败。
步骤5c,判断该计数器对应地址所存放的条目,假设条目为Y,并且当前位置为通过第t个哈希函数运算得到的地址Ht(Y),1≤t≤k。类似步骤5a中,判断并维护Y相关的(k-1)个计数器,保证Y相关的所有计数器中Ht(Y)具有最小的数值,或者在多个具有最小的数值计数器中,Ht(Y)具有最小的哈希函数编号。若Ht(Y)的变动并未导致条目Y的其余(k-1)个计数器发生改变,则返回步骤5b中继续处理后续计数器;否则将所影响的计数器添加到步骤5b中,再返回步骤5b中继续处理后续计数器。
步骤6,将条目插入空闲位置,返回插入成功。
数据查询部分包括以下步骤:
提取报文的键值,记为Z;
根据分类器预设的k个哈希函数,计算Z对应的k个哈希运算结果,结果记为Ht(Z),1≤t≤k。
依次取出第1个计数器组(Counter Group)的地址为H1(Z)的计数器值CG1(H1(Z)),第2个计数器组的地址为H2(Z)的计数器值CG2(H2(Z)),……,第k个计数器组的地址为Hk(Z)的计数器值CGk(Hk(Z))。比较这些计数值的大小,得到计数值最小的计数器组编号,记为m,则有
CGm(Hm(Z))=min{CG1(H1(Z)),CG2(H2(Z)),...,CGk(Hk(Z))},1≤m≤k。
并且,多个计数器值相等时,取编号最小的计数器组。
根据地址Hm(Z),索引片外存储器对应位置条目T,读取至片内;
精确比较Z与T是否完全相等,相等则返回结果为匹配,否则返回不匹配。此次查找结束。
通过本实施例,克服了已有片内外哈希算法存储利用率与查找效率无法兼顾的困难,在保证了片外存储效率的前提下,解决了已有的片内外哈希算法每次查找可能需要多次访问片外存储器的问题。本发明所述方法和装置,采用了改进的布鲁姆过滤器结构,实现了单次查表仅需1次片外访问,大大提高了已有算法的查找速率和稳定性,存储利用率相较于传统哈希算法也有大幅提升。
以下具体实施例中,假设装置所采用的哈希函数个数为3,哈希函数分别为H1、H2、H3,计数器组分别为CG1、CG2、CG3。但本发明的实施并不局限于这种特殊配置,可更改哈希函数的个数为其它数值。
图3是根据本实施例的条目插入哈希表的流程图,如图3所示,包括:
步骤S301,获取当前条目的全部哈希函数运算结果,得到多个表地址;
步骤S302,判断是否存在一个表地址为空闲状态,在判断结果为是的情况下,执行步骤S305,在判断结果为否的情况下,执行步骤S303;
步骤S303,执行布谷鸟哈希的碰撞搬移,寻找空闲位置;
步骤S304,判断是否找到空闲位置,在判断结果为是的情况下,执行步骤S305,在判断结果为否的情况下,执行步骤S307;
步骤S305,维护计数器组;
步骤S306,判断是否维护成功,在判断结果为否的情况下,执行步骤S307,在判断结果为是的情况下,执行步骤S308;
步骤S307,插入失败;
步骤S308,插入成功。
若哈希函数为3个,条目插入哈希表的过程具体包括:
步骤1,逐个插入当前样本内的每一个条目并继续步骤2执行插入;
步骤2,根据分类器预设的3个哈希函数,计算当前待插入报文的哈希运算结果,找到哈希表内对应的3个位置。
步骤3,查询这3个位置是否为空,如果不存在空位置,则跳转步骤4,否则跳转步骤5。
步骤4,对这3个位置存放的条目分别构建索引树,尝试通过布谷鸟哈希碰撞搬移已有的条目,腾出最初计算得到的3个位置中的一个,成功则跳转步骤5,否则撤销所有操作,返回插入失败。
步骤5,假设条目可存放于找到的空闲位置,对计数器组进行维护,保证当前条目插入后不会对表内已有条目查找的正确性产生影响,如果维护成功,则跳转步骤6,否则撤销所有操作,返回插入失败。
步骤6,将条目插入空闲位置,返回插入成功。
上述步骤3中,图4是根据本实施例的构建索引树寻找空位置的示意图,如图4所示,当插入新的条目时,如果3个哈希地址均非空,则以每个位置存放的条目为根节点构建一棵索引树。节点生长时,子节点为该位置存放条目计算得到的当前位置以外的哈希地址。由于此时哈希函数的个数为3,因此每个节点至多有2个子节点。3棵索引树按层进行构建,直到找到一个空位置或者树的层数达到了预设的上限。
以图4中为例,X经过哈希计算得到3个地址,但3个地址均被占用,于是以这三个地址为根节点,开始构建3棵索引树。以索引树1为例,根节点地址存放条目A,计算条目A的另外两个哈希地址,找到条目B和条目C,因此在第一层新建两个子节点分别指向这两个地址。类似地,继续在索引树2和索引树3中生长第一层子节点,但所有节点对应地址均非空,则再次从索引树1开始生长第二层子节点。条目B的节点的两个子节点中,存在一个空位置,将此空位置标记为目标空位,结束所有索引树的生长。
此处树的层数代表了后续需要执行的布谷鸟哈希碰撞搬移次数,搬移过程由树的叶子节点向根节点索引。
上述步骤4中,图5是根据本实施例的以索引树为前提的布谷鸟哈希碰撞搬移的示意图,如图5所示,根据图4给出的目标空位以及相应的树的分支,哈希表中需要执行相应的搬移。条目B首先搬移至目标空位,即地址8;B搬移后,地址2成为新的目标空位,条目A随后搬移至地址2;A搬移后,地址0空出,最终将X插入地址0。
此过程利用了布谷鸟哈希的原理,只是不再在不同的哈希表之间搬移,而是在同一张哈希表内根据不同的哈希函数进行搬移,同样实现了哈希表填充率的提升,缓解了原始哈希表的冲突概率高的问题。
上述步骤5中,图6是根据本实施例的对计数器组的维护过程的示意图,如图6所示,以3个哈希函数为例,哈希表容量为7,依次将条目A、B、C、D插入所述实例的装置中。
初始时,计数器组CG1、CG2和CG3内的所有计数器均初始化为0。
条目A插入时,通过哈希函数计算得到地址0、1、5,分别对应计数器组内的三个计数器CG1[0]、CG2[1]、CG3[5],三个地址均为空。比较三个计数器的数值,有CG1[0]=CG2[1]=CG3[5],因此哈希函数编号最小的CG1计数器对应哈希地址具有最高优先级,条目A存放于地址0。
条目B插入时,通过哈希函数计算得到地址1、4、6,分别对应计数器组内的三个计数器CG1[1]、CG2[4]、CG3[6],三个地址均为空。类似的,条目B存放于地址1。
条目C插入时,通过哈希函数计算得到地址1、3、6,分别对应计数器组内的三个计数器CG1[1]、CG2[3]、CG3[6],地址1被占用,地址3和6为空。此时,将条目C存入地址3,同时将CG1[1]增加1,保证此时CG2[3]具有最高优先级。但由于CG1[1]的增加,对已有条目B产生了影响。为了保证条目B的正确查找,条目B的另外两个对应计数器也需要增加1,即CG2[4]和CG3[6]分别加1。
条目D插入时,通过哈希函数计算得到地址0、1、6,分别对应计数器组内的三个计数器CG1[0]、CG2[1]、CG3[6],地址0和1被占用,地址6为空。此时,将条目D存入地址6,同时将CG1[0]和CG2[1]增加2,以保证CG3[6]具有最小数值。由于CG1[0]的增加,对已有条目A产生了影响。为了保证条目A的正确查找,条目A的另外两个对应计数器也需要增加至2,即CG2[1]和CG3[5]数值调整为2。
至此,条目A~D均已插入表格,并且满足查找条件:条目总是存放在数值最小的计数器对应的表地址;若数值相同,则总是存放在哈希函数编号最小的计数器对应的表地址。
图7是根据本实施例的硬件模块的框图,如图7所示,包括:键值生成模块71,哈希计算模块72,计数器组模块73,片外地址生成模块74,片外存储器75,精确比较模块76,在实施查找时,首先,由键值生成模块71对报文的头部信息执行键值提取,提取信息格式适配于当前装置内存放的样本;生成的键值信息分发给所有哈希函数计算模块72,以每个计算模块72输出结果为地址分别对相应的计数器组模块73进行索引,得到多个计数器信息;这些计数器信息送至片外地址生成模块74,生成规则为选择计数器数值最小且计数器“组编号”最小的计数器,将该计数器对应的地址编号作为片外存储器75的索引地址,读取片外存储的条目信息;最终由精确比较模块76对片外存储器返回的条目信息与提取的键值进行精确对比,得到最终的匹配结果。
根据本申请的另一个实施例,还提供了一种报文匹配装置,图8是根据本实施例的报文匹配装置的框图,如图8所示,包括:
确定模块82,用于确定报文的键值对应的多个哈希运算结果;
索引模块84,用于分别根据所述多个哈希运算结果对多个计数器组的地址进行索引,得到多个计数器,其中,一个计数器组中索引一个计数器;
选取模块86,用于从所述多个计数器中确定一个目标计数器;
获取模块88,用于根据所述目标计数器的地址获取片外存储器对应位置的目标条目;
匹配模块810,用于若所述目标条目与所述键值相等,确定所述报文与所述目标条目匹配。
在一示例性实施例中,所述选取模块88,还用于
依次提取所述多个计数器的计数器值;
从所述多个计数器中获取所述计数器值最小的计数器;
若所述计数器值最小的计数器为一个,确定所述计数器值最小的计数器为所述目标计数器;
若所述计数器值最小的计数器为多个,通过计时器组的状态从所述多个计数器中确定唯一的所述目标计数器。
在一示例性实施例中,所述确定模块82,还用于
提取所述报文的键值;
根据分类器预设的多个哈希函数,确定所述键值对应的所述多个哈希运算结果,其中,一个哈希函数确定一个哈希运算结果。
在一示例性实施例中,所述装置还包括:
第二获取模块,用于获取待插入条目的多个哈希运算结果,其中,所述多个哈希运算结果是根据分类器预设的多个哈希函数确定的,一个哈希函数确定一个哈希运算结果,一个哈希函数对应一个计数器组;
插入模块,用于根据所述多个哈希运算结果将所述待插入条目插入哈希表的空闲位置,并维护多个计数器组,其中,每个计数器组包含的计数器个数与所述哈希表的容量相等,每个计数器组内的计数器地址分别与所述哈希表的哈希表位置一一对应,所述计数器地址为所述哈希运算结果。
在一示例性实施例中,所述插入模块包括:
索引子模块,用于根据所述多个哈希运算结果对多个计数器组的地址进行索引,得到多个计数器,其中,一个哈希运算结果对应一个计数器组中的一个计数器;
选取子模块,用于从所述多个计数器中选取对应哈希表的位置为空闲状态的一个目标计数器;
插入子模块,用于将所述待插入条目插入所述目标计数器的地址对应的哈希表的空闲位置。
在一示例性实施例中,所述选取子模块包括:
选取单元,用于若所述多个计数器的地址对应的哈希表位置为空闲状态,从所述多个计数器中选取计数器值最小的一个目标计数器;
搬移单元,用于若所述多个计数器的地址对应的哈希表位置均为非空闲状态,执行碰撞搬移,得到碰撞搬移后的一个目标空闲位置,确定所述目标空闲位置对应的计数器为所述目标计数器。
在一示例性实施例中,所述插入模块,还用于
获取所述待插入条目插入的目标空闲位置的哈希运算结果Hs(X),其中,1≤s≤k,k为哈希函数的数量;
依次获取第s个计数器组的第Hs(X)个计数器,得到k个计数器;
若通过所述k个计数器的计数值或者所述k个计数器组的当前状态中除所述计数值之外的其它特征值,唯一定位到目标空闲位置,则无需维护计数器组;否则,调整一个或多个计数器的计数值,使得调整后的计数器的计数值满足条目插入规则;
若所述条目X插入时引起计数器的计数值发生改变,检查所述计数值发生改变的计数器对应的哈希表位置已存放条目是否仍满足所述条目插入规则;
若不满足,重复对所述计数值发生改变的计数器对应的哈希表位置已存放条目继续执行计数器维护,直至所述计数器值发生改变的计数器对应的哈希表位置已存放条目均符合所述条目插入规则。
在一示例性实施例中,所述条目插入规则为:
依次获取第s个计数器组的第Hs(X)个计数器,得到所述k个计数器,其中,1≤s≤k,k为哈希函数的数量;
通过所述k个计数器的计数值以及k个计数器组的当前状态中除所述计数值之外的其它特征值,唯一确定所述条目存放时采用的哈希函数编号,采用所述哈希函数编号对应的哈希函数的哈希运算结果唯一定位到条目存放的位置。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (11)

1.一种报文匹配方法,其特征在于,包括:
确定报文的键值对应的多个哈希运算结果;
分别根据所述多个哈希运算结果对多个计数器组的地址进行索引,得到多个计数器,其中,一个计数器组中索引一个计数器;
从所述多个计数器中确定一个目标计数器;
根据所述目标计数器的地址获取片外存储器对应位置的目标条目;
若所述目标条目与所述键值相等,确定所述报文与所述目标条目匹配。
2.根据权利要求1所述的方法,其特征在于,从所述多个计数器中确定一个目标计数器包括:
依次提取所述多个计数器的计数器值;
从所述多个计数器中获取所述计数器值最小的计数器;
若所述计数器值最小的计数器为一个,确定所述计数器值最小的计数器为所述目标计数器;
若所述计数器值最小的计数器为多个,通过计时器组的状态从所述多个计数器中确定唯一的所述目标计数器。
3.根据权利要求1所述的方法,其特征在于,确定报文的键值对应的多个哈希运算结果包括:
提取所述报文的键值;
根据分类器预设的多个哈希函数,确定所述键值对应的所述多个哈希运算结果,其中,一个哈希函数确定一个哈希运算结果。
4.根据权利要求1所述的方法,其特征在于,在确定报文的键值对应的多个哈希运算结果之前,所述方法还包括:
获取待插入条目的多个哈希运算结果,其中,所述多个哈希运算结果是根据分类器预设的多个哈希函数确定的,一个哈希函数确定一个哈希运算结果,一个哈希函数对应一个计数器组;
根据所述多个哈希运算结果将所述待插入条目插入哈希表的空闲位置,并维护多个计数器组,其中,每个计数器组包含的计数器个数与所述哈希表的容量相等,每个计数器组内的计数器地址分别与所述哈希表的哈希表位置一一对应,所述计数器地址为所述哈希运算结果。
5.根据权利要求4所述的方法,其特征在于,根据所述多个哈希运算结果将所述待插入条目插入哈希表的空闲位置包括:
根据所述多个哈希运算结果对多个计数器组的地址进行索引,得到多个计数器,其中,一个哈希运算结果对应一个计数器组中的一个计数器;
从所述多个计数器中选取对应哈希表的位置为空闲状态的一个目标计数器;
将所述待插入条目插入所述目标计数器的地址对应的哈希表的空闲位置。
6.根据权利要求5所述的方法,其特征在于,从所述多个计数器中选取对应哈希表的位置为空闲状态的一个目标计数器包括:
若所述多个计数器的地址对应的哈希表位置为空闲状态,从所述多个计数器中选取计数器值最小的一个目标计数器;
若所述多个计数器的地址对应的哈希表位置均为非空闲状态,执行碰撞搬移,得到碰撞搬移后的一个目标空闲位置,确定所述目标空闲位置对应的计数器为所述目标计数器。
7.根据权利要求4至6中任一项所述的方法,其特征在于,维护所述多个计数器组包括:
获取所述待插入条目插入的目标空闲位置的哈希运算结果Hs(X),其中,1≤s≤k,k为哈希函数的数量;
依次获取第s个计数器组的第Hs(X)个计数器,得到k个计数器;
若通过所述k个计数器的计数值或者所述k个计数器组的当前状态中除所述计数值之外的其它特征值,唯一定位到目标空闲位置,则无需维护计数器组;否则,调整一个或多个计数器的计数值,使得调整后的计数器的计数值满足条目插入规则;
若所述条目X插入时引起计数器的计数值发生改变,检查所述计数值发生改变的计数器对应的哈希表位置已存放条目是否仍满足所述条目插入规则;
若不满足,重复对所述计数值发生改变的计数器对应的哈希表位置已存放条目继续执行计数器维护,直至所述计数器值发生改变的计数器对应的哈希表位置已存放条目均符合所述条目插入规则。
8.根据权利要求7所述的方法,其特征在于,所述条目插入规则为:
依次获取第s个计数器组的第Hs(X)个计数器,得到所述k个计数器,其中,1≤s≤k,k为哈希函数的数量;
通过所述k个计数器的计数值以及k个计数器组的当前状态中除所述计数值之外的其它特征值,唯一确定所述条目存放时采用的哈希函数编号,采用所述哈希函数编号对应的哈希函数的哈希运算结果唯一定位到条目存放的位置。
9.一种报文匹配装置,其特征在于,包括:
确定模块,用于确定报文的键值对应的多个哈希运算结果;
索引模块,用于分别根据所述多个哈希运算结果对多个计数器组的地址进行索引,得到多个计数器,其中,一个计数器组中索引一个计数器;
选取模块,用于从所述多个计数器中确定一个目标计数器;
第一获取模块,用于根据所述目标计数器的地址获取片外存储器对应位置的目标条目;
匹配模块,用于若所述目标条目与所述键值相等,确定所述报文与所述目标条目匹配。
10.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至8任一项中所述的方法。
11.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至8任一项中所述的方法。
CN202110699863.2A 2021-06-23 2021-06-23 一种报文匹配方法、装置、存储介质及电子装置 Pending CN115514707A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202110699863.2A CN115514707A (zh) 2021-06-23 2021-06-23 一种报文匹配方法、装置、存储介质及电子装置
EP22827630.9A EP4345634A1 (en) 2021-06-23 2022-06-22 Message matching method and apparatus, storage medium and electronic apparatus
PCT/CN2022/100564 WO2022268138A1 (zh) 2021-06-23 2022-06-22 一种报文匹配方法、装置、存储介质及电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110699863.2A CN115514707A (zh) 2021-06-23 2021-06-23 一种报文匹配方法、装置、存储介质及电子装置

Publications (1)

Publication Number Publication Date
CN115514707A true CN115514707A (zh) 2022-12-23

Family

ID=84499757

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110699863.2A Pending CN115514707A (zh) 2021-06-23 2021-06-23 一种报文匹配方法、装置、存储介质及电子装置

Country Status (3)

Country Link
EP (1) EP4345634A1 (zh)
CN (1) CN115514707A (zh)
WO (1) WO2022268138A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116366292B (zh) * 2023-02-24 2024-03-29 南京金阵微电子技术有限公司 报文处理方法、系统、存储介质及电子设备
CN116881338B (zh) * 2023-09-07 2024-01-26 北京傲星科技有限公司 基于大模型的数据流的数据挖掘方法及相关设备
CN117478626B (zh) * 2023-12-27 2024-04-05 天津光电聚能通信股份有限公司 基于组相连缓存的快速匹配查找系统、方法、设备及介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101577721A (zh) * 2008-12-05 2009-11-11 湖南大学 一种索引拆分布鲁姆过滤器及其插入、删除和查询方法
CN101655861B (zh) * 2009-09-08 2011-06-01 中国科学院计算技术研究所 基于双计数布鲁姆过滤器的哈希方法和哈希装置
CN105786718A (zh) * 2014-12-26 2016-07-20 中兴通讯股份有限公司 计数处理方法及装置
US10452879B2 (en) * 2018-03-22 2019-10-22 Target Brands, Inc. Memory structure for inventory management
US11080205B2 (en) * 2019-08-29 2021-08-03 Micron Technology, Inc. Classifying access frequency of a memory sub-system component

Also Published As

Publication number Publication date
EP4345634A1 (en) 2024-04-03
WO2022268138A1 (zh) 2022-12-29

Similar Documents

Publication Publication Date Title
CN115514707A (zh) 一种报文匹配方法、装置、存储介质及电子装置
US11811660B2 (en) Flow classification apparatus, methods, and systems
EP3293929B1 (en) Efficient matching of tcam rules using hash tables in ram
US9984144B2 (en) Efficient lookup of TCAM-like rules in RAM
US20170053012A1 (en) High-performance bloom filter array
US5946679A (en) System and method for locating a route in a route table using hashing and compressed radix tree searching
CN110019647B (zh) 一种关键词搜索方法、装置和搜索引擎
US6691124B2 (en) Compact data structures for pipelined message forwarding lookups
CN101388030B (zh) 数据库和数据库处理方法
US8750144B1 (en) System and method for reducing required memory updates
US9131000B2 (en) Methods, systems, and computer readable media for heuristics-based adaptive protocol parsing
US20130024649A1 (en) Method and device for storing routing table entry
CN101345707B (zh) 一种实现IPv6报文分类的方法及设备
CN111131084B (zh) 一种QoS感知的OpenFlow流表查找方法
Su et al. A time efficient tag identification algorithm using dual prefix probe scheme (DPPS)
CN111049746B (zh) 一种路由表项生成方法、字典树生成方法和装置
CN117640510B (zh) 一种空间太赫兹网络包高效转发方法及装置
CN106302178B (zh) 一种路由查询方法及装置
KR100662254B1 (ko) 라우팅 시스템에서의 패킷 분류 장치 및 이를 위한 룰 구축 방법
CN111819552A (zh) 访问控制列表的管理方法及装置
CN112667640A (zh) 一种路由地址存储方法及装置
CN107124480B (zh) 一种网络协议地址-地域信息匹配方法及系统
CN111522941A (zh) 文本聚类方法、装置、电子设备及计算机存储介质
CN109039920B (zh) 一种构建若干棵深度和度数约束最小生成树的方法
US11929837B2 (en) Rule compilation schemes for fast packet classification

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