CN116095004A - 基于Hash的报文查找方法、交换芯片和网络设备 - Google Patents
基于Hash的报文查找方法、交换芯片和网络设备 Download PDFInfo
- Publication number
- CN116095004A CN116095004A CN202310079827.5A CN202310079827A CN116095004A CN 116095004 A CN116095004 A CN 116095004A CN 202310079827 A CN202310079827 A CN 202310079827A CN 116095004 A CN116095004 A CN 116095004A
- Authority
- CN
- China
- Prior art keywords
- data
- sequence
- type
- route
- module
- 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
Links
Images
Classifications
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及通信技术领域,提供一种基于Hash的报文查找方法、交换芯片和网络设备。交换芯片包括通信连接的提取模块、索引模块、存储模块和比较模块,存储模块存储有多个数据序列且其中的数据表示路由信息及其所属的路由类型;通过提取报文的特征信息并对其进行Hash运算得到索引值,按照索引值获取对应的目标数据序列并从中获取多个待定数据且至少一个待定数据表示路由类型;根据特征信息所属的特征类型和每个待定数据清除目标数据序列中存在误匹配风险的数据,并基于目标数据序列中剩下的数据查找报文对应的路由信息。有效避免了误匹配和提升了报文查找的准确性,同时无需使用多余的数据表示路由类型,节省了存储空间和提高了业务实用性。
Description
技术领域
本发明涉及通信技术领域,具体而言,涉及一种基于Hash的报文查找方法、交换芯片和网络设备。
背景技术
报文查找是指通过报文的特征信息查找用于控制报文转发的路由信息。目前常见的报文查找方式有TCAM(Ternary Content Addressable Memory,三态内容寻址存储器)查找方式和Hash查找方式,由于Hash查找方式具有成本低、功耗小的优点,所以其应用广泛。
采用Hash查找方式会出现冲突,即不同报文的特征信息经Hash处理后得到的索引值可能相同,这样就会导致误匹配。虽然目前有采用新增多个类型字段来避免出现误匹配,但是新增的类型字段没有实际的业务含义还会占用过多的存储空间,并且也会对路由信息的数据结构产生影响。
发明内容
有鉴于此,本发明的目的在于提供一种基于Hash的报文查找方法、交换芯片和网络设备。
为了实现上述目的,本发明采用的技术方案如下:
第一方面,本发明提供一种基于Hash的报文查找方法,应用于交换芯片,所述交换芯片包括通信连接的提取模块、索引模块、存储模块和比较模块,所述存储模块存储有多个数据序列,所述数据序列中的数据表示路由信息及其所属的路由类型,所述方法包括:
所述提取模块提取报文的特征信息并传输给所述索引模块和所述比较模块;
所述索引模块对所述特征信息进行Hash运算得到索引值并传输给所述存储模块;
所述存储模块按照所述索引值获取对应的目标数据序列并传输给所述比较模块;
所述比较模块从所述目标数据序列中获取多个待定数据;其中,所述多个待定数据中至少存在一个待定数据表示路由类型;
所述比较模块根据所述特征信息所属的特征类型和每个所述待定数据清除所述目标数据序列中存在误匹配风险的数据,并基于所述目标数据序列中剩下的数据查找所述报文对应的路由信息。
在可选的实施方式中,所述目标数据序列包括多个相同数据长度的子序列;
所述比较模块从所述目标数据序列中获取多个待定数据,包括:
读取每个所述子序列中位于预设位置的数据,得到每个所述子序列对应的待定数据。
在可选的实施方式中,所述比较模块根据所述特征信息所属的特征类型和每个所述待定数据清除所述目标数据序列中存在误匹配风险的数据,包括:
将所述特征信息与每个所述子序列进行匹配,得到每个所述子序列对应的标记值,所述标记值表示其对应的子序列与所述特征信息的匹配结果;
根据所述特征类型和每个所述待定数据,确定存在误匹配风险的每个目标子序列;
在全部标记值中清除每个所述目标子序列对应的标记值,以清除所述目标数据序列中存在误匹配风险的数据。
在可选的实施方式中,所述路由类型包括第一路由类型和第二路由类型,属于所述第一路由类型的第一路由信息的数据长度小于属于所述第二路由类型的第二路由信息的数据长度;所述第一路由类型与第一特征类型对应,所述第二路由类型与第二特征类型对应;
所述比较模块根据所述特征类型和每个所述待定数据,确定存在误匹配风险的每个目标子序列,包括:
根据每个所述子序列在所述目标数据序列的顺序,得到每个所述待定数据的顺序;
若所述特征类型为所述第一特征类型且位于第一预设顺序的第一待定数据所表示的路由类型为所述第二路由类型,则确定所述第一待定数据所属的第一子序列和所述第一子序列的前一个子序列共同表示所述第二路由信息;
将所述第一子序列的前一个子序列作为所述目标子序列。
在可选的实施方式中,所述方法还包括:
若所述特征类型为所述第一特征类型且位于第二预设顺序的第二待定数据所表示的路由类型为所述第二路由类型,则确定所述第二待定数据所属的第二子序列和所述第二子序列的前一个子序列共同表示所述第二路由信息;
将所述第二子序列的前一个子序列作为所述目标子序列。
在可选的实施方式中,所述路由类型还包括第三路由类型,所述第二路由信息的数据长度小于属于所述第三路由类型的第三路由信息的数据长度,所述方法还包括:
若所述特征类型为所述第一特征类型且位于第二预设顺序的第二待定数据所表示的路由类型为所述第三路由类型,则确定全部子序列共同表示所述第三路由信息;
将除所述第二待定数据所属的第二子序列以外的每个其他子序列均作为所述目标子序列。
在可选的实施方式中,所述方法还包括:
若所述特征类型为所述第二特征类型且位于第二预设顺序的第二待定数据所表示的路由类型为所述第三路由类型,则确定全部子序列共同表示所述第三路由信息;
将除所述第二待定数据所属的第二子序列以外的每个其他子序列均作为所述目标子序列。
第二方面,本发明提供一种交换芯片,所述交换芯片包括通信连接的提取模块、索引模块、存储模块和比较模块,所述存储模块存储有多个数据序列,所述数据序列中的数据表示路由信息及其所属的路由类型;
所述提取模块,用于提取报文的特征信息并传输给所述索引模块和所述比较模块;
所述索引模块,用于对所述特征信息进行Hash运算得到索引值并传输给所述存储模块;
所述存储模块,用于按照所述索引值获取对应的目标数据序列并传输给所述比较模块;
所述比较模块,用于从所述目标数据序列中获取多个待定数据;其中,所述多个待定数据中至少存在一个待定数据表示路由类型;
所述比较模块,还用于根据所述特征信息所属的特征类型和每个所述待定数据清除所述目标数据序列中存在误匹配风险的数据,并基于所述目标数据序列中剩下的数据查找所述报文对应的路由信息。
在可选的实施方式中,所述目标数据序列包括多个相同数据长度的子序列;
所述比较模块,还用于读取每个所述子序列中位于预设位置的数据,得到每个所述子序列对应的待定数据。
第三方面,本发明提供一种网络设备,包括前述实施方式所述的交换芯片。
本发明提供的基于Hash的报文查找方法、交换芯片和网络设备,交换芯片包括通信连接的提取模块、索引模块、存储模块和比较模块,存储模块存储有多个数据序列,数据序列中的数据表示路由信息及其所属的路由类型;提取模块提取报文的特征信息并传输给索引模块和比较模块;索引模块对特征信息进行Hash运算得到索引值并传输给存储模块;存储模块按照索引值获取对应的目标数据序列并传输给比较模块;比较模块从目标数据序列中获取多个待定数据;其中,多个待定数据中至少存在一个待定数据表示路由类型;比较模块根据特征信息所属的特征类型和每个待定数据清除目标数据序列中存在误匹配风险的数据,并基于目标数据序列中剩下的数据查找报文对应的路由信息。通过获取可能表示路由类型的待定数据并结合特征信息所属的特征类型,以过滤掉存在误匹配风险的数据,可以避免出现误匹配并提升了报文查找的准确性,同时无需使用多余的数据来表示路由类型,从而节省了存储空间并提高了业务的实用性。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了现有基于Hash的报文查找方法的一个示例图;
图2示出了现有基于Hash的报文查找方法的又一个示例图;
图3示出了本发明实施例提供的交换芯片方框示意图;
图4示出了本发明实施例提供的基于Hash的报文查找方法的一种流程示意图;
图5示出了本发明实施例提供的基于Hash的报文查找方法的一个示例图;
图6示出了本发明实施例提供的基于Hash的报文查找方法的又一个示例图;
图7示出了本发明实施例提供的基于Hash的报文查找方法的又一个示例图;
图8示出了本发明实施例提供的基于Hash的报文查找方法的又一个示例图;
图9示出了本发明实施例提供的基于Hash的报文查找方法的又一个示例图;
图10示出了本发明实施例提供的基于Hash的报文查找方法的又一个示例图。
图标:110-提取模块;130-索引模块;150-存储模块;170-比较模块。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Hash查找的基本过程为:首先提取模块如KeyGen根据报文的内容提取特征信息;然后索引模块如HashIndexGen根据特征信息进行Hash运算得到索引值,计算索引值的方式也可以采用CRC算法;接着存储模块如HashMemory根据索引值读取到路由信息;最后比较模块如KeyCmp将特征信息与路由信息进行匹配,如果匹配成功即标记值hit=1,则表示查找到报文对应的路由信息,如果匹配失败即标记值hit=0,则表示未查找到报文对应的路由信息。
对于特性信息,其常见的结构有:(1)MacKey:MacDa+VlanId;(2)IpKey:IpDa+VrfId;(3)L2Key:MacDa+MacSa;(4)L2IpKeyL2Ip:MacDa+MacSa+IpDa+IpSa;(5)L2Ip6Key:MacDa+MacSa+IpV6Da+IpSa等其他的结构。
为了便于理解,本发明实施例以L2Key、L2IpKeyL2Ip(以下简称为L2IpKey)和L2Ip6Key这三种结构为例进行说明。这三种结构的特征信息均有对应结构的路由信息,即存储模块中会存放三种路由信息。为了便于区分不同结构的路由信息,存储模块中还存放路由类型以进行区分。由于本示例中只有三种路由信息,则路由类型采用2个bit。
那么对于前述三种结构的特征信息,其分别对应的路由信息的结构如下所示:L2Key:MacDa[47:0]+MacSa[47:0]+keyType[1:0];L2IpKeyL2Ip:MacDa[47:0]+MacSa[47:0]+IpDa[31:0]+IpSa[31:0]+keyType[1:0];L2Ip6Key:MacDa[47:0]+MacSa[47:0]+IpV6Da[127:0]+IpSa[127:0]+keyType[1:0]。
可以看出,这三种路由信息的数据长度是不同的,L2Key结构的路由信息的数据长度为98bit、L2IpKey结构的路由信息的数据长度为162bit、L2Ip6Key结构的路由信息的数据长度为354bit。为了便于描述,我们将L2Key结构的路由信息的数据长度记录为1X长度、将L2IpKey结构的路由信息的数据长度记录为2X长度、将L2Ip6Key结构的路由信息的数据长度记录为4X长度。那么这三种路由信息在存储模块的存放方式如图1所示。
请参阅图1,其中Index N至Index N+4表示索引值N至索引值N+4,在存储模块中一个索引值所对应的存储空间,可以存放4个1X长度的L2Key结构的路由信息如L2Key-0至L2Key-3,或者存放2个2X长度的L2IpKey结构的路由信息如L2IpKey-0和L2IpKey-1,或者存放1个4X长度的L2Ip6Key结构的路由信息如L2Ip6Key-0,或者存放1个2X长度的L2IpKey结构的路由信息和2个1X长度的L2Key结构的路由信息,如L2IpKey-0、L2Key-2和L2Key-3或者L2Key-0、L2Key-1和L2IpKey-1。
由于每个路由信息中只有一个路由类型,所以比较模块进行匹配的过程中会出现误匹配的情况,下面将结合图1进行说明。
例如,假设根据报文的内容提取的特征信息为L2-Key0-Input,并根据该特征信息计算得到的索引值为index N+1,然后按照索引值index N+1读取到数据即L2IpKey-0和L2IpKey-1。由于特征信息L2-Key0-Input的结构是1X长度,而路由信息L2IpKey-0和L2IpKey-1的结构是2X长度。那么就会将L2IpKey-0分为两个部分即高位部分L2IpKey-0High和低位部分L2IpKey-0Low,同理L2IpKey-1也会分为两个部分即高位部分L2IpKey-1High和低位部分L2IpKey-1Low。
由于每个路由信息的路由类型是放置在其低位,则低位部分即L2IpKey-0Low和L2IpKey-1Low都有路由类型,而高位部分即L2IpKey-0High和L2IpKey-1High都没有路由类型,那么特征信息L2-Key0-Input与低位部分的路由信息即L2IpKey-0Low和L2IpKey-1Low进行匹配时,由于其存在路由类型且与特征信息的特征类型不同,则不会匹配成功。但是,由于高位部分的路由信息不存在路由类型,那么特征信息L2-Key0-Input与高位部分的路由信息即L2IpKey-0High和L2IpKey-1High进行匹配时,有可能会匹配成功,这样就会造成误匹配。
目前,现有技术是通过额外新增多个路由类型来避免出现误匹配,如在L2IpKey结构的路由信息中新增一个路由类型、在L2Ip6Key结构的路由信息中新增三个路由类型。那么这三种路由信息在存储模块的存放方式则变成如图2所示的方式,其中T1表示L2Key结构的路由信息的路由类型,T2表示L2IpKey结构的路由信息的路由类型,T4表示L2Ip6Key结构的路由信息的路由类型。
可以看出,现有技术通过额外新增路由类型虽然可以避免出现误匹配,但是这些新增的路由类型对于业务本身没有实际的作用,并且还会占用过多的存储空间和增加对存储模块的消耗。假设以路由类型占用2个bit为例,那么存储128K的L2Ip6Key结构的路由信息,则需要额外新增2bit*128K*3=768K bit;而当业务增多时,路由类型占用的bit也会增大,比如路由类型扩大占用到6bit时,则需要额外新增6bit*128K*3=2.304Mbit。并且,由于路由类型占据固定的位置,这就有可能导致将路由信息中的一个业务字段拆分为2个,例如对于L2Ip6Key结构的路由信息中的IpV6Da字段,其是128bit,则经常被拆分为了2个字段即Ipv6DaHigh和Ipv6DaLow。由此,本发明实施例提供了一种基于Hash的报文查找方法,不仅可以避免出现误匹配,还能够节省存储空间和提高业务的可用性。
请参照图3,是本发明实施例提供的一种交换芯片的方框示意图。交换芯片包括通信连接的提取模块110、索引模块130、存储模块150和比较模块170。
其中,提取模块110用于提取报文的特征信息。索引模块130用于对特征信息进行Hash运算得到索引值。存储模块150存储有多个数据序列,并且数据序列表示路由信息及其所属的路由类型,每个数据序列均有对应的索引值。比较模块170用于将特征信息与数据序列进行比较,以查找报文对应的路由信息。
可以理解的是,图3所示的结构仅为交换芯片的结构示意图,交换芯片还可包括比图3中所示更多或者更少的组件,或者具有与图3所示不同的配置。图3中所示的各组件可以采用硬件、软件或其组合实现。
下面将以上述的交换芯片作为执行主体,执行本发明实施例提供的各个方法中的各个步骤,并实现对应技术效果。
请参阅图4,图4是本发明实施例提供的一种基于Hash的报文查找方法的流程示意图。
步骤S202,提取模块提取报文的特征信息并传输给索引模块和比较模块;
步骤S204,索引模块对特征信息进行Hash运算得到索引值并传输给存储模块;
在本实施例中,提取模块110根据报文的内容提取特征信息,并将特征信息传输给索引模块130和比较模块170;然后索引模块130根据接收到的特征信息进行Hash运算得到索引值,并将索引值传输给存储模块150。
步骤S206,存储模块按照索引值获取对应的目标数据序列并传输给比较模块;
可以理解的是,本发明实施例中的存储模块150采用每个路由信息只有一个路由类型的存储方式。为了便于理解,本发明实施例提供了一个示例图。
请参阅图5,一个索引值所对应的存储空间中,如果存放了4个L2Key结构的路由信息,则该索引值对应的数据序列中存在4个T1路由类型;如果存放了2个L2IpKey结构的路由信息,则该索引值对应的数据序列中存在2个T2路由类型;如果存放了1个L2Ip6Key结构的路由信息,则该索引值对应的数据序列中存在1个T4路由类型;如果存放了1个L2IpKey结构的路由信息和2个L2Key结构的路由信息,则该索引值对应的数据序列中存在1个T2路由类型和2个T1路由类型。
可以看出,本发明实施例所采用的存储方式中每个路由信息只有一个路由类型,相比于现有技术,本发明可以减少路由类型所占用的空间还可以避免将业务字段进行拆分,进而节省了存储空间、降低了对存储模块的消耗并提高了业务的可用性。
在本实施例中,存储模块150根据接收到的索引值,查找其对应的数据序列即获得目标数据序列,并将目标数据序列传输给比较模块170。
步骤S208,比较模块从目标数据序列中获取多个待定数据;其中,多个待定数据中至少存在一个待定数据表示路由类型;
根据图5可以看出,路由类型在数据序列中位置有4个,那么这4个位置上的数据就有可能表示路由类型。因此在本实施例中,比较模块170接收到的目标数据序列后,获取这个4位置上的数据即得到4个待定数据。待定数据可以理解为目标数据序列中可能表示路由类型的数据。
根据本发明实施例的存储方式,一个数据序列最少可以表示1个路由信息即L2Ip6Key结构的路由信息,则一个数据序列中最少有1个路类型,那么获取到的这多个待定数据中至少有一个待定数据表示路由类型。
步骤S210,比较模块根据特征信息所属的特征类型和每个待定数据清除目标数据序列中存在误匹配风险的数据,并基于目标数据序列中剩下的数据查找报文对应的路由信息;
如上述所说的,由于本发明实施例所采用的存储方式中每个路由信息只有一个路由类型,那么就可能出现特征信息与路由信息的高位部分误匹配的情况。
本发明实施例是通过这样的方式来避免出现误匹配的,即比较模块170根据获取到的每个待定数据,可以确定出目标数据序列实际所表示的路由信息及其所属路由类型,并结合特征信息所属的特征类型,以过滤掉目标数据序列中存在误匹配风险的数据,然后基于目标数据序列中剩下的数据来查找报文对应的路由信息。
可见基于上述步骤,交换芯片包括通信连接的提取模块、索引模块、存储模块和比较模块,存储模块存储有多个数据序列,数据序列中的数据表示路由信息及其所属的路由类型;提取模块提取报文的特征信息并传输给索引模块和比较模块;索引模块对特征信息进行Hash运算得到索引值并传输给存储模块;存储模块按照索引值获取对应的目标数据序列并传输给比较模块;比较模块从目标数据序列中获取多个待定数据;其中,多个待定数据中至少存在一个待定数据表示路由类型;比较模块根据特征信息所属的特征类型和每个待定数据清除目标数据序列中存在误匹配风险的数据,并基于目标数据序列中剩下的数据查找报文对应的路由信息。通过获取可能表示路由类型的待定数据并结合特征信息所属的特征类型,以过滤掉存在误匹配风险的数据,可以避免出现误匹配并提升了报文查找的准确性,同时无需使用多余的数据来表示路由类型,从而节省了存储空间并提高了业务的实用性。
可选地,对于上述步骤S208,本发明实施例提供了一种可能的实现方式,即:读取每个子序列中位于预设位置的数据,得到每个子序列对应的待定数据。
在本实施例中,一个数据序列包括多个相同数据长度的子序列,比较模块170可以从目标数据序列的每个子序列中读取预设位置上的数据,获得每个子序列对应的待定数据,即得到多个待定数据。
为了便于理解,本发明实施提供了一个示例。例如,由于本实施例中一个数据序列最多可以表示4个路由信息即4个L2Key结构的路由信息,则其最多存在4个路由类型,那么就将一个数据序列划分为4个子序列,即目标数据序列包括4个子序列。
请参阅图6,假设目标数据序列为DataH,其包括4个子序列即DataH-3至DataH-0。由于本实施例中路由类型总是位于路由信息最低位的后面,并且路由类型占用2个bit,那么预设位置即为每个子序列中最低的两个比特位。应当理解的是,预设位置也可以按照实际应用设置,本发明实施例不作限定。
比较模块170分别从每个子序列中获取对应的待定数据。即获取子序列DataH-3中最低两个比特位上的数据即得到对应的待定数据d3;获取子序列DataH-2中最低两个比特位上的数据即得到对应的待定数据d2;获取子序列DataH-1中最低两个比特位上的数据即得到对应的待定数据d1;获取子序列DataH-0中最低两个比特位上的数据即得到对应的待定数据d0。获得4个待定数据即d3、d2、d1和d0。
可选地,对于上述步骤S210中的比较模块根据特征信息所属的特征类型和每个待定数据清除目标数据序列中存在误匹配风险的数据过程,本发明实施例提供了一种可能的实现方式。
步骤S210-1,将特征信息与每个子序列进行匹配,得到每个子序列对应的标记值,标记值表示其对应的子序列与特征信息的匹配结果;
步骤S210-3,根据特征类型和每个待定数据,确定存在误匹配风险的每个目标子序列;
步骤S210-5,在全部标记值中清除每个目标子序列对应的标记值,以清除目标数据序列中存在误匹配风险的数据。
继续以上述图6所示的目标数据序列为例,将特征信息如InputKey与每个子序列即DataH-3至DataH-0进行匹配,可以得到每个子序列对应的标记值。如hit3表示子序列DataH-3对应的标记值;hit2表示子序列DataH-2对应的标记值;hit1表示子序列DataH-1对应的标记值;hit0表示子序列DataH-0对应的标记值。其中,标记值表示其对应的子序列与特征信息的匹配结果。如标记值为1表示两者匹配成功,标记值为0表示两者匹配失败。
按照现有技术,在获得每个子序列对应的标记值后,则基于全部的标记值来查找报文对应的路由信息。然而为了避免出现误匹配,本发明则是在查找之前,通过特征类型和每个待定数据确定存在误匹配风险的每个目标子序列,然后在全部标记值中清除每个目标子序列所对应的标记值。
可以理解为,由于本发明实施例清除了每个目标子序列所对应的标记值,那么后续基于剩下的标记值进行查找时,就不会查找到目标子序列,因为这些可能导致误匹配的目标子序列已经被过滤掉了,所以不会出现误匹配。
为了便于更好地理解本发明,下面将对可能出现误匹配的几种情况进行说明。
首先,假设L2Key、L2IpKey和L2Ip6Key这三种结构的特征信息的特征类型分为第一特征类型如R1、第二特征类型如R2和第三特征类型如R4;L2Key、L2IpKey和L2Ip6Key这三种结构的路由信息的路由类型分别为第一路由类型T1、第二路由类型T2和第三路由类型T4。第一特征类型R1与第一路由类型T1对应、第二特征类型R2与第二路由类型T2对应、第三特征类型R4与第三路由类型T4对应。
为了便于描述,将属于第一路由类型T1的路由信息称作第一路由信息、将属于第二路由类型T2的路由信息称作第二路由信息、将属于第三路由类型T3的路由信息称作第三路由信息。
情况1:特征类型为第一特征类型R1,即特征信息是1X长度,而获取的目标数据序列中存在属于第二特征类型T2的第二路由信息,由于第二路由信息是2X长度,那么特征信息可能与第二路由信息的高位部分发生误匹配。
情况2:特征类型为第一特征类型R1,即特征信息是1X长度,而获取的目标数据序列表示的是属于第三特征类型T4的第三路由信息,由于第三路由信息是4X长度,那么特征信息可能与第三路由信息的前三个高位部分发生误匹配。
情况3:特征类型为第二特征类型R2,即特征信息是2X长度,而获取的目标数据序列表示的是属于第三特征类型T4的第三路由信息,由于第三路由信息是4X长度,那么特征信息可能与第三路由信息的高位部分发生误匹配。
对于上述的这3种情况,下面将分别说明本发明实施例在每种情况下避免出现误匹配的实现方式。
对于情况1,本发明实施例提供了两种可能的实现方式,下面先介绍第一种实现方式。
步骤S210-3-1,根据每个子序列在目标数据序列的顺序,得到每个待定数据的顺序;
步骤S210-3-3A,若特征类型为第一特征类型且位于第一预设顺序的第一待定数据所表示的路由类型为第二路由类型,则确定第一待定数据所属的第一子序列和第一子序列的前一个子序列共同表示第二路由信息;
步骤S210-3-5A,将第一子序列的前一个子序列作为目标子序列。
为了便于理解,本发明实施例提供了一个示例图,请参阅图7。根据每个子序列DataH-3至DataH-0在目标数据序列的顺序,得到每个待定数据的序列即{d3,d2,d1,d0}。
如果特征类型为第一特征类型R1,即特征信息InputKey是1X长度,位于第一预设顺序的第一待定数据即为第二个待定数据,即第一待定数据为d2且其所表示的路由类型为第二路由类型T2,说明目标数据序列中存在2X长度的第二路由信息,并且可以确定第一待定数据d2所属的第一子序列即DataH-2和其前一个子序列即DataH-3共同表示第二路由信息。
也就是说,目标数据序列DataH所表示的路由信息如图7所示,即依次为1个L2IpKey结构的路由信息和2个L2Key结构的路由信息。那么特征信息InputKey可以能与L2IpKey结构的路由信息的高位部分,即子序列DataH-3发生误匹配,则将第一子序列DataH-2的前一个子序列DataH-3作为存在误匹配风险的目标子序列,并且在全部标记值中清除子序列DataH-3对应的标记值hit3。
下面将对情况1的第二种实现方式进行说明。
步骤S210-3-1,根据每个子序列在目标数据序列的顺序,得到每个待定数据的顺序;
步骤S210-3-3B,若特征类型为第一特征类型且位于第二预设顺序的第二待定数据所表示的路由类型为第二路由类型,则确定第二待定数据所属的第二子序列和第二子序列的前一个子序列共同表示第二路由信息;
步骤S210-3-5B,将第二子序列的前一个子序列作为目标子序列。
为了便于理解,本发明实施例提供了一个示例图,请参阅图8。根据每个子序列DataH-3至DataH-0在目标数据序列的顺序,得到每个待定数据的序列即{d3,d2,d1,d0}。
如果特征类型为第一特征类型R1,即特征信息InputKey是1X长度,位于第二预设顺序的第二待定数据即为最后一个待定数据,即第二待定数据为d0且其所表示的路由类型为第二路由类型T2,说明目标数据序列中存在2X长度的第二路由信息,并且可以确定第二待定数据d0所属的第二子序列即DataH-0和其前一个子序列即DataH-1共同表示第二路由信息。
也就是说,目标数据序列DataH所表示的路由信息如图8所示,即依次为2个L2Key结构的路由信息和1个L2IpKey结构的路由信息。那么特征信息InputKey可以能与L2IpKey结构的路由信息的高位部分,即子序列DataH-1发生误匹配,则将第二子序列DataH-0的前一个子序列DataH-1作为存在误匹配风险的目标子序列,并且在全部标记值中清除子序列DataH-1对应的标记值hit1。
下面将对情况2的实现方式进行说明。
步骤S210-3-1,根据每个子序列在目标数据序列的顺序,得到每个待定数据的顺序;
步骤S210-3-3C,若特征类型为第一特征类型且位于第二预设顺序的第二待定数据所表示的路由类型为第三路由类型,则确定全部子序列共同表示第三路由信息;
步骤S210-3-5C,将除第二待定数据所属的第二子序列以外的每个其他子序列均作为目标子序列。
为了便于理解,本发明实施例提供了一个示例图,请参阅图9。根据每个子序列DataH-3至DataH-0在目标数据序列的顺序,得到每个待定数据的序列即{d3,d2,d1,d0}。
如果特征类型为第一特征类型R1,即特征信息InputKey是1X长度,位于第二预设顺序的第二待定数据即为最后一个待定数据,即第二待定数据为d0且其所表示的路由类型为第三路由类型T4,说明目标数据序列表示的是4X长度的第三路由信息,则可以确定全部子序列即DataH-3至DataH-0共同表示第三路由信息。
也就是说,目标数据序列DataH所表示的路由信息如图9所示,即为1个L2Ip6Key结构的路由信息。那么特征信息InputKey可以能与L2Ip6Key结构的路由信息的前三个高位部分,即子序列DataH-3至DataH-1发生误匹配,则将除第二待定数据d0所属的第二子序列DataH-0以外的每个其他子序列即DataH-3至DataH-1,均作为存在误匹配风险的目标子序列,并且在全部标记值中清除子序列DataH-3、DataH-2和DataH-1分别对应的标记值hit3、hit2和hit1。
下面将对情况3的实现方式进行说明。
步骤S210-3-1,根据每个子序列在目标数据序列的顺序,得到每个待定数据的顺序;
步骤S210-3-3D,若特征类型为第二特征类型且位于第二预设顺序的第二待定数据所表示的路由类型为第三路由类型,则确定全部子序列共同表示第三路由信息;
步骤S210-3-5D,将除第二待定数据所属的第二子序列以外的每个其他子序列均作为目标子序列。
为了便于理解,本发明实施例提供了一个示例图,请参阅图10。根据每个子序列DataH-3至DataH-0在目标数据序列的顺序,得到每个待定数据的序列即{d3,d2,d1,d0}。
如果特征类型为第二特征类型R2,即特征信息InputKey是2X长度,位于第二预设顺序的第二待定数据即为最后一个待定数据,即第二待定数据为d0且其所表示的路由类型为第三路由类型T4,说明目标数据序列表示的是4X长度的第三路由信息,则可以确定全部子序列即DataH-3至DataH-0共同表示第三路由信息。
也就是说,目标数据序列DataH所表示的路由信息如图10所示,即为1个L2Ip6Key结构的路由信息。那么特征信息InputKey可以能与L2Ip6Key结构的路由信息的前三个高位部分,即子序列即DataH-3至DataH-1发生误匹配,则将除第二待定数据d0所属的第二子序列DataH-0以外的每个其他子序列即DataH-3至DataH-1,均作为存在误匹配风险的目标子序列,并且在全部标记值中清除子序列DataH-3、DataH-2和DataH-1分别对应的标记值hit3、hit2和hit1。
为了执行上述实施例及各个可能的方式中的相应步骤,下面给出一种交换芯片的实现方式。需要说明的是,本实施例所提供的交换芯片,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。该交换芯片包括:
提取模块110,用于提取报文的特征信息并传输给索引模块130和比较模块170;
索引模块130,用于对特征信息进行Hash运算得到索引值并传输给存储模块150;
存储模块150,用于按照索引值获取对应的目标数据序列并传输给比较模块170;
比较模块170,用于从目标数据序列中获取多个待定数据;其中,多个待定数据中至少存在一个待定数据表示路由类型;
比较模块170,还用于根据特征信息所属的特征类型和每个待定数据清除目标数据序列中存在误匹配风险的数据,并基于目标数据序列中剩下的数据查找报文对应的路由信息。
可选地,比较模块170,还用于读取每个子序列中位于预设位置的数据,得到每个子序列对应的待定数据。
可选地,比较模块170,还用于将特征信息与每个子序列进行匹配,得到每个子序列对应的标记值,标记值表示其对应的子序列与特征信息的匹配结果;根据特征类型和每个待定数据,确定存在误匹配风险的每个目标子序列;在全部标记值中清除每个目标子序列对应的标记值,以清除目标数据序列中存在误匹配风险的数据。
可选地,比较模块170,还用于根据每个子序列在目标数据序列的顺序,得到每个待定数据的顺序;
若特征类型为第一特征类型且位于第一预设顺序的第一待定数据所表示的路由类型为第二路由类型,则确定第一待定数据所属的第一子序列和第一子序列的前一个子序列共同表示第二路由信息;将第一子序列的前一个子序列作为目标子序列。
可选地,比较模块170,还用于若特征类型为第一特征类型且位于第二预设顺序的第二待定数据所表示的路由类型为第二路由类型,则确定第二待定数据所属的第二子序列和第二子序列的前一个子序列共同表示第二路由信息;将第二子序列的前一个子序列作为目标子序列。
可选地,比较模块170,还用于若特征类型为第一特征类型且位于第二预设顺序的第二待定数据所表示的路由类型为第三路由类型,则确定全部子序列共同表示第三路由信息;将除第二待定数据所属的第二子序列以外的每个其他子序列均作为目标子序列。
可选地,比较模块170,还用于若特征类型为第二特征类型且位于第二预设顺序的第二待定数据所表示的路由类型为第三路由类型,则确定全部子序列共同表示第三路由信息;将除第二待定数据所属的第二子序列以外的每个其他子序列均作为目标子序列。
本发明实施例还提供了一种网络设备,其包括本发明实施例提供的交换芯片。
在本发明所提供的几个实施例中,应该理解到,所揭露的方法,也可以通过其它的方式实现。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于Hash的报文查找方法,其特征在于,应用于交换芯片,所述交换芯片包括通信连接的提取模块、索引模块、存储模块和比较模块,所述存储模块存储有多个数据序列,所述数据序列中的数据表示路由信息及其所属的路由类型,所述方法包括:
所述提取模块提取报文的特征信息并传输给所述索引模块和所述比较模块;
所述索引模块对所述特征信息进行Hash运算得到索引值并传输给所述存储模块;
所述存储模块按照所述索引值获取对应的目标数据序列并传输给所述比较模块;
所述比较模块从所述目标数据序列中获取多个待定数据;其中,所述多个待定数据中至少存在一个待定数据表示路由类型;
所述比较模块根据所述特征信息所属的特征类型和每个所述待定数据清除所述目标数据序列中存在误匹配风险的数据,并基于所述目标数据序列中剩下的数据查找所述报文对应的路由信息。
2.根据权利要求1所述的方法,其特征在于,所述目标数据序列包括多个相同数据长度的子序列;
所述比较模块从所述目标数据序列中获取多个待定数据,包括:
读取每个所述子序列中位于预设位置的数据,得到每个所述子序列对应的待定数据。
3.根据权利要求2所述的方法,其特征在于,所述比较模块根据所述特征信息所属的特征类型和每个所述待定数据清除所述目标数据序列中存在误匹配风险的数据,包括:
将所述特征信息与每个所述子序列进行匹配,得到每个所述子序列对应的标记值,所述标记值表示其对应的子序列与所述特征信息的匹配结果;
根据所述特征类型和每个所述待定数据,确定存在误匹配风险的每个目标子序列;
在全部标记值中清除每个所述目标子序列对应的标记值,以清除所述目标数据序列中存在误匹配风险的数据。
4.根据权利要求3所述的方法,其特征在于,所述路由类型包括第一路由类型和第二路由类型,属于所述第一路由类型的第一路由信息的数据长度小于属于所述第二路由类型的第二路由信息的数据长度;所述第一路由类型与第一特征类型对应,所述第二路由类型与第二特征类型对应;
所述比较模块根据所述特征类型和每个所述待定数据,确定存在误匹配风险的每个目标子序列,包括:
根据每个所述子序列在所述目标数据序列的顺序,得到每个所述待定数据的顺序;
若所述特征类型为所述第一特征类型且位于第一预设顺序的第一待定数据所表示的路由类型为所述第二路由类型,则确定所述第一待定数据所属的第一子序列和所述第一子序列的前一个子序列共同表示所述第二路由信息;
将所述第一子序列的前一个子序列作为所述目标子序列。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述特征类型为所述第一特征类型且位于第二预设顺序的第二待定数据所表示的路由类型为所述第二路由类型,则确定所述第二待定数据所属的第二子序列和所述第二子序列的前一个子序列共同表示所述第二路由信息;
将所述第二子序列的前一个子序列作为所述目标子序列。
6.根据权利要求4所述的方法,其特征在于,所述路由类型还包括第三路由类型,所述第二路由信息的数据长度小于属于所述第三路由类型的第三路由信息的数据长度,所述方法还包括:
若所述特征类型为所述第一特征类型且位于第二预设顺序的第二待定数据所表示的路由类型为所述第三路由类型,则确定全部子序列共同表示所述第三路由信息;
将除所述第二待定数据所属的第二子序列以外的每个其他子序列均作为所述目标子序列。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若所述特征类型为所述第二特征类型且位于第二预设顺序的第二待定数据所表示的路由类型为所述第三路由类型,则确定全部子序列共同表示所述第三路由信息;
将除所述第二待定数据所属的第二子序列以外的每个其他子序列均作为所述目标子序列。
8.一种交换芯片,其特征在于,所述交换芯片包括通信连接的提取模块、索引模块、存储模块和比较模块,所述存储模块存储有多个数据序列,所述数据序列中的数据表示路由信息及其所属的路由类型;
所述提取模块,用于提取报文的特征信息并传输给所述索引模块和所述比较模块;
所述索引模块,用于对所述特征信息进行Hash运算得到索引值并传输给所述存储模块;
所述存储模块,用于按照所述索引值获取对应的目标数据序列并传输给所述比较模块;
所述比较模块,用于从所述目标数据序列中获取多个待定数据;其中,所述多个待定数据中至少存在一个待定数据表示路由类型;
所述比较模块,还用于根据所述特征信息所属的特征类型和每个所述待定数据清除所述目标数据序列中存在误匹配风险的数据,并基于所述目标数据序列中剩下的数据查找所述报文对应的路由信息。
9.根据权利要求8所述的交换芯片,其特征在于,所述目标数据序列包括多个相同数据长度的子序列;
所述比较模块,还用于读取每个所述子序列中位于预设位置的数据,得到每个所述子序列对应的待定数据。
10.一种网络设备,其特征在于,包括权利要求8或9所述的交换芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310079827.5A CN116095004A (zh) | 2023-01-31 | 2023-01-31 | 基于Hash的报文查找方法、交换芯片和网络设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310079827.5A CN116095004A (zh) | 2023-01-31 | 2023-01-31 | 基于Hash的报文查找方法、交换芯片和网络设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116095004A true CN116095004A (zh) | 2023-05-09 |
Family
ID=86200567
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310079827.5A Pending CN116095004A (zh) | 2023-01-31 | 2023-01-31 | 基于Hash的报文查找方法、交换芯片和网络设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116095004A (zh) |
-
2023
- 2023-01-31 CN CN202310079827.5A patent/CN116095004A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105704041B (zh) | 用于ccn路由的方法、系统、和存储介质 | |
US8010557B2 (en) | Retrieving method for fixed length data | |
EP1168723B1 (en) | Method and apparatus for longest matching prefix determination in a communication network | |
US6691124B2 (en) | Compact data structures for pipelined message forwarding lookups | |
US7199729B2 (en) | Character code conversion methods and systems | |
CN107770076A (zh) | 一种哈希冲突的处理方法、装置及交换设备 | |
CN103404092B (zh) | 路由前缀存储方法、装置及路由地址查找方法、装置 | |
EP1510046A1 (en) | Longest prefix matching using tree bitmap data structures | |
US20130024649A1 (en) | Method and device for storing routing table entry | |
CN106789859B (zh) | 报文匹配方法及装置 | |
EP2429132B1 (en) | Table creating and searching method used by network processor | |
CN1319325C (zh) | 一种采用哈希链表查找路由表项的方法 | |
CN111382323B (zh) | 一种数据检索优化方法、装置和计算机设备 | |
CN101158955A (zh) | 一种中文词库的构造方法 | |
US6925503B2 (en) | Method and system for performing a longest prefix match search | |
US6976025B2 (en) | Database and method for storing a searchable set of keywords | |
CN109831384B (zh) | 名字查找方法及路由器 | |
CN116095004A (zh) | 基于Hash的报文查找方法、交换芯片和网络设备 | |
CN111064664B (zh) | 一种ipv6分段路由的编码方法 | |
CN102984071B (zh) | 分段地址路由的路由表组织方法及查找路由的方法 | |
US8051060B1 (en) | Automatic detection of separators for compression | |
CN112565091A (zh) | 一种报文转发方法、装置、存储介质及终端设备 | |
CN110830376A (zh) | 一种int报文的处理方法及装置 | |
CN101707588A (zh) | 基于规则集的报文处理方法和装置 | |
CN104424194A (zh) | CANdb网络文件异同的比较方法及其系统 |
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 |