CN107967219B - 一种基于tcam的大规模字符串高速查找方法 - Google Patents
一种基于tcam的大规模字符串高速查找方法 Download PDFInfo
- Publication number
- CN107967219B CN107967219B CN201711202703.2A CN201711202703A CN107967219B CN 107967219 B CN107967219 B CN 107967219B CN 201711202703 A CN201711202703 A CN 201711202703A CN 107967219 B CN107967219 B CN 107967219B
- Authority
- CN
- China
- Prior art keywords
- tcam
- string
- tree
- distinguishing
- sram
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0692—Multiconfiguration, e.g. local and global addressing
Abstract
一种基于TCAM的大规模字符串的高速查找方法,属于网络基础架构领域。该方法包括构建与查询,构建时使用大规模字符串集合构建树型结构,再使用划分两个或多个字符串的区分位提取区分位列表,按照区分位列表的顺序从树型结构中提取到各指定节点路径上区分位对应的值,构建压缩串作为TCAM存储条目,并将划分后的子树或叶子信息存储在DRAM中,使用SRAM保存TCAM条目与DRAM地址的对应关系;查询时,使用区分位列表提取查询字符串生成TCAM的查询关键字,利用TCAM的高速查找特性定位到DRAM中存储的子集或匹配信息,实现大规模字符串的高速匹配。本发明提高了名称前缀的匹配速率,且能很好地处理大规模变长字符串。
Description
技术领域
本发明涉及一种基于TCAM的大规模字符串高速查找方法,特别涉及从树型结构中提取比特值或比特串构建压缩的比特串作为TCAM存储表项的方法,并利用TCAM并行查找的特性实现大规模字符串的高速匹配,属于网络基础架构技术领域。
背景技术
字符串查找算法被广泛用在网络基础结构的各个领域,查找算法速率往往决定了网络性能的高低。其中字符串查找在数据包转发过程中就起到了一个至关重要的影响,路由器转发数据包时需要使用目的地址(IP网络中)或数据名称(信息中心网络中)查询转发信息库(Forward Information database,FIB)中的规则集合,通过字符串查询算法匹配到对应规则获取转发的下一跳信息,即数据包转发的下一跳端口,字符串的查询速率制约着数据包的转发速度进而影响网络的传输速率。
网络架构中的字符串查询速率受多方面因素制约,一方面,随着移动设备与计算机的迅速普及,FIB表的规模越来越大,查询的规则集合越来越大,而字符串查询算法时间复杂度往往与查询规模相关,规模越大查询速率越低,如何快速查询大规模字符串集合成了一个亟待解决的难题。另一方面,随着IP框架的局限性越来越明显,研究学者们提出了不少新型的下一代互联网架构,新型网络的特性又为字符串查询带来了更多新的挑战,例如近些年来备受关注的信息中心网络(Information Centric Networking,ICN),使用变长的不限长的内容名称实现数据包的转发与传递而不是IP网络中固定长度的IP地址,这就导致查询集合中的字符串长度不再受限,比现有的IP地址串更长更复杂,FIB表也比IP大了两个数量级,并且随着ICN的推广集合规模会越来越大,这就要求字符串查询算法能够处理更加复杂的变长大规模的字符串集合。另外,现在以太网的网络传输速率已经能够达到100Gbps,要使数据的转发速率能够达到这个速度,就要求在能够处理大规模变长的字符串集合的基础上实现高速查询。
目前的字符串查询算法软件方案主要有基于哈希表的和基于树的结构,基于哈希表的方案在大规模字符串的查询中,占用大量的存储空间,且在查找最长前缀过程中,需要从全部名称开始根据哈希表的结果不断缩短哈希的前缀长度,查找最长的匹配前缀即前缀寻找,该过程需要多次计算哈希值,并多次访问内存,制约了查询的速率。基于树的查询结构,查询速率取决于树的深度,随着字符串的规模变大,树深度也在变大,平均查询速率降低。对于大规模的字符串,仅依靠软件的解决方案无法实现高速查询。因此,目前还有一些基于硬件的解决方案,如利用静态随机存储器(SRAM)存储Bloom Filter来加速基于哈希表方案的前缀查找。另外一些方案采用多核技术或GPU来提高查询速率,这些方案在一定程度上提高了查询速率,但还不能满足当前网络性能的要求。
为了实现大规模变长字符串的高速查找,本发明利用IP网络高速线卡的存储元件三态内容寻址存储器(Ternary Content Addressable Memory,TCAM)的快速并行查找提高查询速率。TCAM可以并行访问表内所有的条目,在一个时钟周期内返回查询结果,查询速率极快,但其存储空间有限,目前最大的TCAM内存仅为80Mb。基于TCAM的上述特点,本发明提供了一种基于TCAM的大规模字符串的高速查询方法,本方法主要涉及两个问题:
(1)使用字符串规则集中的字符串建立树型的数据结构,通过树型结构提取能够区分不同前缀字符串的比特值或比特串构建存储在TCAM中的比特串,作为TCAM的存储表项,
(2)使用构建TCAM存储比特串的规则,提取查询字符串对应位置上的比特值或比特串生成查询关键字查询TCAM,再查询SRAM与DRAM实现字符串的匹配。
发明内容
本发明的目的是为了克服大规模字符串集合对查询速率的限制,变长字符串给查询结构带来的挑战,以及字符串查询速率对高速网络性能的制约,提出一种基于TCAM的大规模字符串高速查找方法。
本发明的核心思想是:通过字符串建立的树型结构生成适用于高速元件TCAM的存储数据,然后利用存储元件TCAM、SRAM与DRAM的特性,实现大规模变长字符串的存储与快速匹配;具体步骤包括构建与查询,构建过程首先使用大规模变长字符串集合建立树型结构,然后根据TCAM存储空间的限制进行子树划分,使用主干中划分两个或多个字符串的区分位组成区分位列表,再按照区分位列表的顺序提取从根节点到各指定节点路径上区分位对应的比特值或比特串构成压缩串,生成TCAM的存储条目,最后将划分后的子树或叶子信息存储在SRAM或DRAM中,对应SRAM称为数据SRAM,再将子树和叶子信息在数据SRAM或DRAM中的起始地址与匹配TCAM的地址索引一起存入SRAM中,这里的SRAM称之为索引SRAM;查询过程中,首先使用区分位列表提取查询字符串在对应区分位上的比特值或比特串生成TCAM的查询关键字,输入TCAM,利用TCAM在一个时钟周期内并行查找所有存储表项并返回查询结果的特性,快速返回匹配前缀对应TCAM的地址索引,使用该索引作为输入查询索引SRAM,匹配到对应子树或叶子信息在数据SRAM或DRAM中存储的起始地址,然后在数据SRAM或DRAM中进行一个小规模的字符串快速匹配返回匹配结果,即完成了大规模变长字符串的高速匹配和查找。
本发明提供了一个基于TCAM的大规模变长字符串的高速查找方法,用于在大规模不限长的字符串集合中快速查找到指定的字符串并返回查询结果,包括构建与查询;
其中,构建的步骤如下:
步骤1,根据TCAM存储空间的限制对树型结构进行子树划分,得出子树与叶子信息以及得出主干部分提取区分位列表,使得划分后,用于构建压缩串的主干区分位列表的长度与代表存储表项数目的子树个数的关系满足TCAM的内存限制;
其中,主干是指树型结构使用子树划分算法剪去子树后树的剩余部分;
其中,区分位是指树型结构中,能够对两个或多个节点进行划分的字节、比特、字符子串或其他结构在字符串中对应的位置;
其中,区分位列表是树型结构中各区分位按照一定的顺序构建的列表,可按照树的查找顺序以及区分位的数值大小顺序;
其中,压缩串是指按照区分位列表的顺序,提取从根节点遍历到指定节点路径上各节点区分位上对应的取值,并填充一些其他字符,构成的字符串;
其中,存储表项是指TCAM存储数据中的一个实体,对应存储的一条规则、一个字符串或一个二进制字符串;
其中,区分位是通过大规模字符串集合构成的树型结构确定的,具体为:
步骤1.1将大规模字符串集合中的字符串前缀,通过插入操作逐条加入到初始为空的树型结构中,建立大规模字符串集合的树型存储结构;
步骤1.2确定树型结构中各节点用于划分不同孩子节点的字节、比特、子串为主的结构所在字符前缀中的位置,即获取节点的区分位,区分位可以对不同的字符串进行区分;
步骤1.3由于存储数据占用的TCAM内存空间由存储表项宽度与数目决定,而本方案中存储表项的宽度由区分位个数决定,存储表项的数目由子树个数决定,因此根据不同的划分方案,统计划分出的子树个数与主干包含的不同区分位的个数,选择合适的划分方案,进行子树划分;
步骤2,遍历步骤1子树划分后的主干部分提取区分位列表,遍历过程中按照顺序记录遍历主干节点中所有的区分位值,构建一个有序的不重复的区分位列表;
步骤3,根据步骤2提取的区分位列表,再次遍历树型结构提取压缩串,获取指定节点的压缩串时,从根节点开始定位到该节点,将路径上经过的节点区分位的取值,记录在区分位列表对应区分位的位置上,对应TCAM的0和1状态,对于路径上没有出现的区分位,记为表示TCAM第三种状态的字符,构成到指定节点且包含三种状态的压缩串,通过遍历树型结构,获取到每个步骤1子树划分的子树根节点的压缩串;
步骤4,将步骤3获得的压缩串按顺序存入TCAM,对于父节点与孩子节点均含有压缩串时,先存储孩子节点的压缩串,再存储父节点的压缩串,并记录压缩串与其存入到TCAM的地址索引关系;
其中,父节点含有压缩串时,代表父节点本身含有前缀信息;
其中,TCAM的地址索引是指压缩串在TCAM中存储位置的索引值;
步骤5,将步骤1子树划分出的子树与叶子信息,存入数据SRAM或DRAM中,并记录各个子树与叶子信息在数据SRAM或DRAM中的存储地址;
其中,数据SRAM是指存储子树和叶子信息的SRAM;
其中,当划分出的所有子树和叶子信息占用的存储空间小于SRAM的容量时,使用数据SRAM存储子树与叶子信息,当子树与叶子信息占用存储空间较大时,使用DRAM存储子树和叶子信息;
其中,数据SRAM与DRAM中存储子树或叶子信息的数据格式,可以使用树型结构、哈希表结构存储子树和叶子表示的前缀信息;
步骤6,将步骤4记录的TCAM的地址索引与步骤5记录的数据SRAM或DRAM的存储地址匹配,存入索引SRAM中;
其中,匹配TCAM地址索引与数据SRAM或DRAM存储地址的过程,是根据步骤1划分的子树,匹配其根节点在步骤3中生成压缩串对应的TCAM地址索引与子树在步骤5中返回的存储地址;
其中,索引SRAM是指存储TCAM地址索引与数据SRAM或DRAM地址关系的SRAM;
查询的步骤如下:
步骤A,使用构建过程步骤2提取的区分位列表提取查询字符串对应位置上的值生成查询压缩串;
其中,对应位置上的值指字符串在区分位指出的位置上的取值,如查询字符串在区分位表示的位置上一个字节、一个比特、多位比特的取值;
步骤B,使用步骤A生成的查询压缩串作为关键字检索存储压缩串的TCAM,TCAM根据关键字匹配表项,返回匹配表项的地址索引;
其中,TCAM中存储的压缩串是由构建过程步骤3生成的;
其中,返回的地址索引,是与关键字匹配的表项在TCAM中存储位置的索引;
步骤C,将步骤B输出的地址索引输入索引SRAM,输出匹配的数据SRAM或DRAM地址,该地址对应匹配到的子树根节点在数据SRAM或DRAM中存储位置;
其中,索引SRAM中存储的是构建过程步骤6生成的TCAM地址索引与数据SRAM或DRAM的存储地址的匹配数据;
步骤D,从步骤C输出的数据SRAM或DRAM地址开始,查询数据SRAM或DRAM,获取查询字符串在集合中的匹配结果,返回结果完成查询操作;
其中,查询操作可以是查询小规模的子树结构,也可以是查询一个存储小规模子集的哈希表操作,也可是其他操作,其中小规模子集是指子树包含的前缀集合。
有益效果
一种基于TCAM的大规模字符串高速查找方法,对比已有方法,具有如下有益效果:
1.本发明适用于计算机领域中使用字符串查询的各个应用场景,特别涉及网络基础架构数据包转发中大规模字符串的高速查询方法,本发明不需要对查询字符串进行多次哈希来确定最长匹配前缀的长度,多次查询哈希表,通过一次查询即可确定最长前缀;
2.在基于树型结构的解决方案上,本发明使用TCAM加速查询,将前缀集合对应的压缩串集合存入TCAM,只要压缩串集合能存入TCAM,无论规模有多大都可在一个时钟周期内返回查询结果,查询速率极快,并且经TCAM查询后,匹配子树表示的前缀集合规模约束在一百个左右,利用现有的一些方案如哈希表、树型结构,查询含一百个前缀的数据集可以快速地匹配到结果,相较于查询原本大规模的数据集,总体查询速率得到了大幅度提高,本发明通过实验验证了10M内规则集的快速查询。
附图说明
图1为本发明一种基于TCAM的大规模字符串高速查找方法及实施例中的流程图,含构建流程与查询流程;
图2为本发明一种基于TCAM的大规模字符串高速查找方法实施例中字符串查询的框架图;
图3为本发明一种基于TCAM的大规模字符串高速查找方法实施例中从树型结构中提取区分位上的取值构建到指定节点压缩串的示意图;
图4为本发明一种基于TCAM的大规模字符串高速查找方法实施例中根据BinaryPatricia树获取节点区分位的示意图;
图5为本发明一种基于TCAM的大规模字符串高速查找方法实施例中使用实施例中数据集建立的Binary Patricia树;
图6为本发明一种基于TCAM的大规模字符串高速查找方法实施例中由BinaryPatricia树中的区分位,实现基于子树包含规则数目进行子树划分的示意图。
具体实施方式
为使发明目的、技术方案及优点更加清楚,下面将结合附图使用具体的实例数据集对本发明的具体实施方式进行详细描述。本实施例以本发明技术方案为前提进行实施,给出了详细实施方式和具体操作过程,但本发明的保护范围不限于下述实施例。
实施例1
本实施例叙述了采用本发明所述的一种基于TCAM的大规模字符串高速查找方法的具体实施。
图1展示了本发明的流程图,包含构建过程和与查询过程的流程,图1(a)展示了本发明的构建流程:第一步根据前缀字符串数据集建立树型结构,在本实施例中采用一种变形的前缀树Patricia树,Patricia树通过将只有一个孩子节点的节点与其孩子进行合并形成一种空间优化的前缀树;第二步确定树型结构中间节点用于划分不同孩子节点的字节、比特、字符串为主的结构在前缀字符串中的位置信息,即区分位,本实施例中的区分位是Binary Patricia树中间节点中用于划分不同孩子节点的比特值在字符前缀二进制表示串中的比特位置;第三步根据区分位个数与划分出的子树个数,选取合适的子树划分算法,本实施例使用一种基于子树规模大小的划分算法,其中,子树规模即子树中包含的前缀集合的规模,通过限定最大的子树规模来划分子树,选取合适的子树规模限制,使子树划分后主干不同的区分位个数与划分出的子树个数满足TCAM的存储空间限制;第四步对划分后的主干提取区分位列表,本实施例中的区分位列表,是由中间节点存储的不同的区分位,按照从小到大的顺序建立的链表;第五步使用区分位列表,遍历树型结构获取到各个指定节点的压缩前缀,本实施例中的压缩前缀是由0,1,X构成的字符串,其中0对应TCAM中匹配数字0的状态,1对应TCAM中匹配数字1的状态,X对应TCAM的”don’t care”状态;第六步将压缩串按照树后续遍历的顺序存入TCAM,并返回在TCAM中的存储地址索引;第七步将第三步中划分出来的子树或叶子节点存入数据SRAM或DRAM中,并将起始存储地址返回,本实施例采用DRAM,并采用树型结构存储子树对应的前缀集合;第八步将第六步TCAM的地址索引与第七步的起始存储地址匹配存入索引SRAM中,结束构建过程。
图1(b)展示了本发明的查询流程,同时图2给出了本实施例查询字符串的框架图:步骤I,提取查询字符串,本实施例是通过网络处理器从报文包中提取查询字符串;步骤II,使用构建过程中提取的区分位列表生成查询压缩串,本实施例中是提取区分位对应的比特值,生成由0和1组成的字符串;步骤III,将步骤II生成的压缩串作为TCAM的查询关键字输入TCAM,与TCAM的存储数据进行查询匹配,返回匹配项在TCAM中存储的地址索引;步骤IV,将步骤III输出的地址索引输入索引SRAM,在索引SRAM中匹配对应的子树在数据SRAM或DRAM中存储地址并返回,本实施例中采用DRAM存储子树;步骤V,从步骤IV返回的存储地址开始,查询DRAM中存储的子树,获得查询字符串的匹配结果,返回结果到网络处理器。
其中构建过程是本发明的一个重要创新点,通过结合树型结构来构建适合高速存储器件TCAM的存储数据,合理地利用TCAM有限的存储空间实现大规模变长字符串前缀的快速查询,使其满足高速网络转发平台的性能需求。其中通过树型结构构建TCAM存储表项是构建过程的基础,图3展示了如何从树型结构中生成TCAM存储表项的示意图,树型结构中,节点通常使用某个位置上的比特值、字节值或字符串划分不同的孩子节点,如图3带有p1标识的节点通过字节或字符串s11、s12、s13分别划分出三个孩子节点标识为p3、p2、p4,则将s11、s12、s13在字符串前缀中的位置记为p1,即为区分位,然后按照区分位值的大小关系,使用整个树型结构中的区分位构建区分位列表如图3右图,然后从根节点遍历到各叶子节点,获取路径上对应区分位上的值,路径上不存在的区分位,对应位置上填充TCAM第三种状态对应的字符,本实施例中使用X。
本实施例使用Binary Patricia树来讲解具体的操作过程,但本发明涉及的树型结构不限于Patricia树,通过Binary Patricia树确定区分位的过程如图4所示,图4(a)中的树型结构是由表1字符串集合构建的Binary Patricia树,本实施例中使用的字符串前缀是基于名称的字符串前缀,但本发明涉及的字符串不限于基于名称的字符串,单圆圈节点中存储的为节点后面所有叶子表示前缀的公共子串,箭头上的标识为划分不同孩子节点的比特值,对应图4(b)中记录了该比特值在前缀串中的位置,如根节点划分左右孩子的比特值在字符串中的位置为第15位,所以根节点的区分位记为p:15,根节点的左孩子划分节点的区分位为第18位,依次类推,可以确定Binary Patricia树中每个节点的区分位,本实例中的区分位是划分孩子节点的比特值对应的位置即bit position(简称BP),对应的区分位列表简称BP列表,但本发明的区分位不限于比特值对应的位置。
表1字符串前缀集合及其二进制表示与输出端口信息
表1为本发明一种基于TCAM的大规模字符串高速查找方法实施例中构建BinaryPatricia树用到的字符串数据集合及其对应的二进制表示与输出端口信息。
表2名称前缀集合及对应端口号
表2为本发明一种基于TCAM的大规模字符串高速查找方法实施例中构建BinaryPatricia树用到的名称前缀集合及对应下一跳输出端口信息。
使用表2中的名称前缀集合,本实施例给出构建过程的详细步骤:
步骤a,根据TCAM的内存大小限定,对树型结构进行子树划分,具体步骤如下:
步骤a.1,使用表2中的数据集建立带有区分位的Binary Patricia树,图5为建成的Binary Patricia树,中间节点中的字符串为其子树中所有前缀的公共子串token,叶子节点中的标识,标识对应前缀的下一跳输出端口port,图6为Binary Patricia树中各节点区分位的信息,中间节点的标识”1:p5”表示第1个节点的区分位为前缀字符串的第5位,以此类推,叶子节点的标识”8:v5”表示第8个节点对应前缀的下一跳输出端口号为5,获取带有区分位的Binary Patricia树的具体步骤包括:
步骤a.1.1,创建Binary Patricia树的根节点,初始化节点信息为空,作为树的插入、查询、删除操作的入口。
本实施实例中,每个节点结构中包含token、输出端口port、区分位bit position、以及左右孩子指针,首先创建一个节点结构的root指针作为Binary Patricia树的根节点指针,为其动态分配一块内存,初始化结构体内的数据信息为空。
步骤a.1.2,逐条读取字符串集合文件中的字符串及其下一跳信息,将字符串的二进制表示和下一跳信息作为参数传入Binary Patricia树的插入函数中,向现有的Patricia树中插入新的字符串。
本实施实例中,依次读取表2中名称前缀的二进制表示串与端口号,将二进制字符串、端口号以及步骤a.1.1创建的根节点root,传入Patricia树的插入函数insert()中,向初始化为空的Patricia树中依次插入字符串。
步骤a.1.3,在插入函数中,从根节点开始遍历Patricia树,找到匹配节点插入下一跳信息或新建节点存储字符串信息。
本实施例中,采用深度优先算法遍历现有的Patricia树实现字符串的插入,另外也可采用宽度优先算法,在进行字符串的插入前,比较指定起始位置的插入串与节点内存储的字符串,获取两者的公共子串,这里将要插入的二进制字符串记为str,参与比较的插入串起始偏移量记为pos,与token进行比较的子串即为str:pos,即比较从起始偏移量开始的插入字符串与节点内存储的字符串,节点内存储的字符串记为token,公共子串的长度记为res,为简述方便,本实施例中使用(string)2表示字符串string的二进制表示。
从根节点root开始遍历Patricia树,先判断节点是否为空节点,当节点为空时,将插入串的子串str:pos存入节点的token,将插入串的端口信息存入节点的port中,将节点的bit position设置为插入串的总长度,结束本轮插入操作,继续步骤a.1.2,如第一次插入表2的第一条前缀串的二进制表示串(google.com)2时,root节点为空,则将(google.com)2存入root节点的token中,将端口号“1”存入节点的port中,将节点的bitposition设置为80,然后退出insert函数,返回步骤a.1.2;当节点不为空时,比较插入串str:pos与节点的token,确定两者的公共子串,如插入表2的第二个名称前缀的二进制表示串(facebook.com)2时,root节点不再为空,需要比较root节点的token与当前pos开始的字符串,pos初始化为0,即比较(google.com)2与(facebook.com)2,它们的二进制公共子串为(0110011),长度res为7。插入操作中插入串、token以及公共子串的关系存在四种情况,每种情况对应不同的处理方式:
(1)公共子串等于当前节点的token,并且等于插入串str:pos时,插入字符串匹配到当前节点,向节点的port中加入字符串对应的端口号。
(2)公共子串等于当前节点的token,但不等于插入串str:pos,插入串还未匹配到对应的节点,根据插入串中公共子串的下一位取值判断继续查询左孩子节点还是右孩子节点,同时改变插入串的起始偏移量,起始位置变为pos+res+1。
(3)公共子串等于插入串str:pos,但不等于当前节点的token,插入串已完成匹配,但没有匹配到现有节点,创建新节点,复制当前节点的所有信息到新建节点,清空当前节点,更新节点的token为公共子串,区分位bit position变为插入串的尾后位置pos+res,port变为插入串对应的端口信息,再根据原token中公共子串的下一位判断创建节点是当前节点的左孩子还是右孩子,将当前节点对应的孩子指针指向新建节点,设置新建节点的token为当前节点的token减去公共子串与其下一位后的尾串。
(4)公共子串既不等于当前节点的token,又不等于插入串str:pos,字符串已完成匹配,但没有匹配到现有节点,创建新节点复制当前节点的所有信息,清空当前节点,更新当前节点的token为公共子串,bit position更新为插入串中公共子串下一位的位置pos+res,再根据原token公共子串的下一位判断token的尾串是在节点的左孩子还是右孩子,将当前节点对应的孩子指针指向新建节点,更新新建节点的token为原token的尾串,然后根据插入串公共子串的下一位判断插入串的尾串是在当前节点的左孩子还是右孩子,创建对应的孩子节点,设置新建孩子节点的token为str:pos减去公共子串与其下一位后的尾串,即对应起始位置为pos+res+1的str子串,bit position为插入串的长度,port为插入串对应的输出端口。
步骤a.1.4,迭代步骤a.1.2与步骤a.1.3,逐条读取表2中名称字符串的二进制表示串,调用插入函数,依次将字符串插入到现有的Patricia树中,最终可建立一颗与插入顺序无关的唯一的带有区分位的Binary Patricia树,图5即为表2中的名称字符串构建的Binary Patricia树,在树的节点中存储有划分左右孩子时的公共子串与区分位,图6即为Patricia树对应的bit position表示方式。查询名称字符串时,可以根据匹配节点内的token与连接线上的比特值寻找匹配节点,也可以直接通过比较名称字符串在区分位bitposition上的比特值确定左右孩子,最终匹配到带有规则信息的节点。如查询字符串”baidu.com/news”,可根据其二进制字符串第5位的值”0”确定其需继续查询第一个节点的左孩子,然后根据查询串的第6位的值”0”确定继续查询当前节点的左孩子,再根据查询串的第7位的值”1”确定继续查询节点的右孩子,再取查询串的第13位的比特值为”0”,最终匹配到叶子节点14,输出端口号为3。基于这个特性,可以提取字符串bit position上的值构造TCAM的存储条目,同时提取查询字符串对应bit position上的值作为查询子串,实现快速查询。
步骤a.2,确定树型结构中各节点的区分位,可以在建树的过程中,根据节点划分孩子节点时,公共子串token的变化,更新区分位的值,也可以遍历已建成的树形结构,获取各个节点的区分位,本实施例采用第一种方式,直接在建树过程中确定节点的区分位值,输出结果如图6所示。
步骤a.3,根据不同的区分位个数、子树个数的关系与TCAM的内存限制进行子树划分,本实施例采用基于子树规模的方式划分不同的子树,即限定最大的子树规模,将包含的叶子节点的个数小于指定子树规模的节点划分到子树中,图6中虚线表示了子树的划分结果,限定子树规模为2,即子树中包含的名称前缀的数目最多为2,具体步骤如下:
步骤a.3.1,统计通过设定不同子树规模划分出的子树个数与主干中不同区分位bit position个数;
经过第一部分由所有字符串构建出一颗带有bit position的Binary Patricia树,每个中间节点都有自己的bit position,通过比较节点中bit position的值即可定位到叶子节点,因此可以通过整颗树的BP列表构建所有到达叶子节点的路径,即匹配叶子节点的压缩串。然后将这些压缩字符串装入TCAM中,对应TCAM的宽度为BP列表的个数,TCAM存储的条目为所有的字符串数目,利用TCAM并行查找所有表项的特性,实现字符串的快速查找。但是由于TCAM的内存有限,构成Patricia树的字符串数目与BP列表的乘积可能超过TCAM的有限内存,所以需要对Patricia树进行子树划分,使BP列表中BP数目与划分的子树数目的乘积小于等于TCAM的存储空间。
首先遍历Patricia树,统计可能出现的子树规模情况,即以当前节点为子树根节点所含规则的数目,如图6中节点11的子树规模为4,该子树中含有4条名称前缀;再统计分别以这些子树规模划分Patricia树,统计每种划分方案对应的子树个数与主干中不同BP的个数,如图6以子树规模2划分子树,划分出8颗子树,如图虚线所示,对应主干中不同BP的个数为5,分别为{p5,p6,p7,p8,p74};然后根据不同划分方式下的子树个数与不同BP个数的乘积,选择一个最接近TCAM存储空间的划分规模。
步骤a.3.2,根据选定的划分规模完成子树划分,遍历Patricia树,若当前访问节点对应子树中包含的叶子数小于等于选定子树规模,则将该节点划分到子树,否则继续遍历节点的孩子节点,遍历完成后即可确定树的主干与各个子树,本实施例选定子树规模2进行子树划分,对应子树规模小于2的节点划分到子树中,对应在虚线下部,划分后树的主干对应图中虚线上部。
步骤b,遍历步骤a.3.2完成子树划分后的树主干部分,将主干中各中间节点的区分位值按照从小到大的顺序加入到链表中,去除重复的区分位值,构建出区分位列表;本实施例中,遍历图6虚线上部树的主干部分,创建BP列表为{p5,p6,p7,p8,p74}。
步骤c,使用步骤b构建的区分位列表,提取树型结构中到指定节点的压缩串,从Patricia树的根节点遍历到每个子树的根节点或含有字符串规则信息的叶子节点,将路径中每个节点BP对应的值记录在列表对应的位置上,如果是左孩子,该BP位置上记为0,右孩子记为1,如果路径中不含BP列表中的BP,则该BP值记为’X’,表明列表中该BP的值对查询结果没有影响,对于中间节点中含有规则信息的节点,先记录其叶子节点的压缩串,再构建中间节点的压缩串。如图6,BP列表为{p5,p6,p7,p8,p74},叶子节点8在根节点1的左子树,节点1对应区分位p5,与BP列表的第一个元素值p5相等,设置该位置上的取值为0,同理,叶子节点8又在区分位为p6的节点2的左子树,对应区分p6取值为0,叶子节点8在区分位为p7的节点4的左子树,则BP列表中区分位p7的位置上取值为0,而从根节点到叶子节点8的路径中不经过区分位为p8、p74的节点,所以BP列表中p8、p74位置上的取值为X,最终叶子8节点的压缩串为{0,0,0,X,X},以此类推确定所有字符串对应的压缩串。表3展示了图6中到各子树根节点或叶子节点的压缩串。
表3根据区分位列表提取的到各子树根节点或叶子节点的压缩串
步骤d,按照树的后续遍历顺序,将子树根节点与叶子节点的压缩串存入TCAM,对于含有叶子信息的中间节点,先存入左右孩子节点的压缩串,再存储中间节点对应的压缩串,并返回压缩串再TCAM中存储的地址索引,例如本实例中节点8对应的压缩串”000XX”为TCAM的第1个存储表项,地址索引为1,而节点6对应压缩串”1XX0X”为TCAM的第7个存储表项,地址索引为7。
步骤e,将步骤a.3.2中划分出的子树与叶子存入数据SRAM或DRAM中,在本实施例中,即将虚线下的子树和叶子节点以树型结构存入DRAM中,返回子树根节点与叶子节点存储的地址。
步骤f,按照子树划分时的关系,将步骤d的TCAM地址索引与步骤e的数据SRAM或DRAM的存储地址匹配,存入索引SRAM中,比如本实施例中将节点9的压缩串在TCAM中的地址索引2与以节点9为根节点的子树在DRAM中的存储地址匹配存在索引SRAM,完成各子树根节点或叶子节点的压缩串索引地址与存储地址的关联。
本实施例中使用名称字符串”google.co.in/p1”查询本发明的方案,具体的查询步骤如下:
首先,使用构建步骤b生成的区分位列表从查询名称字符串中提取查询压缩串,作为TCAM的查询关键字,按照区分位列表中记录的区分位,提取查询字符串对应区分位上的值,例如区分位列表为{p3,p5,p8},抽取二进制串(01100010)的压缩串,为提取二进制串第3位、第5位、第8位上的比特值为分别为1,0,0构成压缩串为”100”,同理,根据本实施例中的区分位列表{p5,p6,p7,p8,p74}提取(google.co.in/p1)2对应位置上的比特值,构成查询压缩串”01110”。
其次,使用上一步生成查询压缩串查询TCAM,TCAM在一个时钟周期内并行查询存储的所有表项,并返回匹配项的地址索引,如本实施例中使用查询压缩串”01110”查询存储有表3中压缩串的TCAM,TCAM存储单元中0匹配查询关键字的0,1匹配查询关键字的1,X匹配查询关键字中的0或1,经过匹配查询关键字匹配到节点18的压缩串,对应索引为5。
再次,使用上一步的TCAM地址索引查询索引SRAM,通过索引匹配到存储当前子树的数据SRAM或DRAM的地址,输出存储地址,本实施例返回以节点18位根节点的子树的存储地址。
最后,从上一步返回的存储地址开始查询数据SRAM或DRAM,本实施例查询节点18,20,21构成的子树,查询字符串在节点18的区分位p87上的取值为0,定位到叶子节点20,返回查询结果输出端口号7。
结论
本发明主要介绍了一种使用高速存储元件TCAM存储大规模变长名称前缀集合的部分信息来加速字符串查询速率的方法,涉及一种使用树型结构提取与名称前缀等价的压缩串的方法。本实施例中通过对字符串构建一颗带有区分位(bit position,BP)信息的Binary Patricia树,通过统计在限定不同子树规模的情况下,树主干中区分位列表的个数与划分出的子树个数的关系,选取能够满足TCAM存储空间的最优的子树划分规模,对子树进行划分,遍历主干建立区分位列表,并提取从根节点到各指定叶子节点或子树根节点路径上的各区分位取值构建压缩串存入TCAM,同时在数据SRAM或DRAM中存储子树和叶子节点信息,并使用索引SRAM存储节点压缩串在TCAM中的地址索引与节点所在子树在数据SRAM或DRAM中的地址关系。查询时,使用BP列表提取查询字符串对应位置上的比特值或比特串生成查询压缩串查询TCAM。再将TCAM的查询结果输入索引SRAM获取子树或叶子节点在数据SRAM或DRAM中的存储地址,最后通过快速查询一个小规模子集或小子树,可获取最终的匹配结果,完成字符串的快速查找。
自此,就完成了基于TCAM的大规模字符串高速查找方法。
虽然本文结合附图实例描述了本发明的实施方式,但是对于本领域技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进,这些也视为属于本发明的保护范围。
Claims (8)
1.一种基于TCAM的大规模字符串高速查找方法,其特征在于:通过字符串建立的树型结构生成适用于高速元件TCAM的存储数据,然后利用存储元件TCAM、SRAM与DRAM的特性,实现大规模变长字符串的存储与快速匹配;具体步骤包括构建与查询,构建过程首先使用大规模变长字符串集合建立树型结构,然后根据TCAM存储空间的限制进行子树划分,使用主干中划分两个或多个字符串的区分位组成区分位列表,再按照区分位列表的顺序提取从根节点到各指定节点路径上区分位对应的比特值或比特串构成压缩串,生成TCAM的存储条目,最后将划分后的子树或叶子信息存储在SRAM或DRAM中,对应SRAM称为数据SRAM,再将子树和叶子信息在数据SRAM或DRAM中的起始地址与匹配TCAM的地址索引一起存入SRAM中,这里的SRAM称之为索引SRAM;查询过程中,首先使用区分位列表提取查询字符串在对应区分位上的比特值或比特串生成TCAM的查询关键字,输入TCAM,利用TCAM在一个时钟周期内并行查找所有存储表项并返回查询结果的特性,快速返回匹配前缀对应TCAM的地址索引,使用该索引作为输入查询索引SRAM,匹配到对应子树或叶子信息在数据SRAM或DRAM中存储的起始地址,然后在数据SRAM或DRAM中进行一个小规模的字符串快速匹配返回匹配结果,即完成了大规模变长字符串的高速匹配和查找;所述方法用于在大规模不限长的字符串集合中快速查找到指定的字符串并返回查询结果,包括构建与查询;其中,构建的步骤如下:
步骤1,根据TCAM存储空间的限制对树型结构进行子树划分,得出子树与叶子信息以及得出主干部分提取区分位列表,使得划分后,用于构建压缩串的主干区分位列表的长度与代表存储表项数目的子树个数的关系满足TCAM的内存限制;
其中,区分位是指树型结构中,能够对两个或多个节点进行划分的字节、比特、字符子串或其他结构在字符串中对应的位置;
步骤2,遍历步骤1子树划分后的主干部分提取区分位列表,遍历过程中按照顺序记录遍历主干节点中所有的区分位值,构建一个有序的不重复的区分位列表;
步骤3,根据步骤2提取的区分位列表,再次遍历树型结构提取压缩串,获取指定节点的压缩串时,从根节点开始定位到该节点,将路径上经过的节点区分位的取值,记录在区分位列表对应区分位的位置上,对应TCAM的0和1状态,对于路径上没有出现的区分位,记为表示TCAM第三种状态的字符,构成到指定节点且包含三种状态的压缩串,通过遍历树型结构,获取到每个步骤1子树划分的子树根节点的压缩串;
步骤4,将步骤3获得的压缩串按顺序存入TCAM,对于父节点与孩子节点均含有压缩串时,先存储孩子节点的压缩串,再存储父节点的压缩串,并记录压缩串与其存入到TCAM的地址索引关系;
步骤5,将步骤1子树划分出的子树与叶子信息,存入数据SRAM或DRAM中,并记录各个子树与叶子信息在数据SRAM或DRAM中的存储地址;
步骤6,将步骤4记录的TCAM的地址索引与步骤5记录的数据SRAM或DRAM的存储地址匹配,存入索引SRAM中;
步骤6中,匹配TCAM地址索引与数据SRAM或DRAM存储地址的过程,是根据步骤1子树划分的子树,匹配其根节点在步骤3中生成压缩串对应的TCAM地址索引与子树在步骤5中返回的存储地址;
其中,索引SRAM是指存储TCAM地址索引与数据SRAM或DRAM地址关系的SRAM;
查询的步骤如下:
步骤A,使用构建过程步骤2提取的区分位列表提取查询字符串对应位置上的值生成查询压缩串;
其中,对应位置上的值指字符串在区分位指出的位置上的取值,如查询字符串在区分位表示的位置上一个字节、一个比特或多位比特的取值;
步骤B,使用步骤A生成的查询压缩串作为关键字检索存储压缩串的TCAM,TCAM根据关键字匹配表项,返回匹配表项的地址索引;
步骤C,将步骤B输出的地址索引输入索引SRAM,输出匹配的数据SRAM或DRAM地址,该地址对应匹配到的子树根节点在数据SRAM或DRAM中存储位置;
步骤D,从步骤C输出的数据SRAM或DRAM地址开始,查询数据SRAM或DRAM,获取查询字符串在集合中的匹配结果,返回结果完成查询操作。
2.根据权利要求1所述的一种基于TCAM的大规模字符串高速查找方法,其特征在于:步骤1中,主干是指树型结构使用子树划分算法剪去子树后树的剩余部分;区分位列表是树型结构中各区分位按照一定的顺序构建的列表,可按照树的查找顺序以及区分位的数值大小顺序;压缩串是指按照区分位列表的顺序,提取从根节点遍历到指定节点路径上各节点区分位上对应的取值,并填充一些其他字符,构成的字符串;存储表项是指TCAM存储数据中的一个实体,对应存储的一条规则、一个字符串或一个二进制字符串。
3.根据权利要求2所述的一种基于TCAM的大规模字符串高速查找方法,其特征在于:步骤1中的区分位是通过大规模字符串集合构成的树型结构确定的,具体为:
步骤1.1将大规模字符串集合中的字符串前缀,通过插入操作逐条加入到初始为空的树型结构中,建立大规模字符串集合的树型存储结构;
步骤1.2确定树型结构中各节点用于划分不同孩子节点的字节、比特、子串为主的结构所在字符前缀中的位置,即获取节点的区分位,区分位可以对不同的字符串进行区分;
步骤1.3由于存储数据占用的TCAM内存空间由存储表项宽度与数目决定,而本方案中存储表项的宽度由区分位个数决定,存储表项的数目由子树个数决定,因此根据不同的划分方案,统计划分出的子树个数与主干包含的不同区分位的个数,选择合适的划分方案,进行子树划分。
4.根据权利要求3所述的一种基于TCAM的大规模字符串高速查找方法,其特征在于:步骤4中,父节点含有压缩串时,代表父节点本身含有前缀信息;TCAM的地址索引是指压缩串在TCAM中存储位置的索引值。
5.根据权利要求4所述的一种基于TCAM的大规模字符串高速查找方法,其特征在于:步骤5中,数据SRAM是指存储子树和叶子信息的SRAM;
其中,当划分出的所有子树和叶子信息占用的存储空间小于SRAM的容量时,使用SRAM存储子树与叶子信息,当子树与叶子信息占用存储空间较大时,使用DRAM存储子树和叶子信息;
其中,数据SRAM与DRAM中存储子树或叶子信息的数据格式,可以使用树型结构、哈希表结构存储子树和叶子表示的前缀信息。
6.根据权利要求5所述的一种基于TCAM的大规模字符串高速查找方法,其特征在于:步骤B中,TCAM中存储的压缩串是由构建过程步骤3生成的;返回的地址索引,是与关键字匹配的表项在TCAM中存储位置的索引。
7.根据权利要求6所述的一种基于TCAM的大规模字符串高速查找方法,其特征在于:步骤C中,索引SRAM中存储的是构建过程步骤6生成的TCAM地址索引与数据SRAM或DRAM的存储地址的匹配数据。
8.根据权利要求7所述的一种基于TCAM的大规模字符串高速查找方法,其特征在于:步骤D中,查询操作可以是查询小规模的子树结构,也可以是查询一个存储小规模子集的哈希表操作,也可是其他操作,其中小规模子集是指子树包含的前缀集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711202703.2A CN107967219B (zh) | 2017-11-27 | 2017-11-27 | 一种基于tcam的大规模字符串高速查找方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711202703.2A CN107967219B (zh) | 2017-11-27 | 2017-11-27 | 一种基于tcam的大规模字符串高速查找方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107967219A CN107967219A (zh) | 2018-04-27 |
CN107967219B true CN107967219B (zh) | 2021-08-06 |
Family
ID=61998764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711202703.2A Active CN107967219B (zh) | 2017-11-27 | 2017-11-27 | 一种基于tcam的大规模字符串高速查找方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107967219B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109815225B (zh) * | 2018-12-11 | 2021-07-09 | 中国科学院计算技术研究所 | 基于前缀树结构的并行化前缀数据检索方法和系统 |
CN111382323B (zh) * | 2018-12-29 | 2023-08-11 | 贵州白山云科技股份有限公司 | 一种数据检索优化方法、装置和计算机设备 |
CN110222143B (zh) * | 2019-05-31 | 2022-11-04 | 北京小米移动软件有限公司 | 字符串匹配方法,装置,存储介质及电子设备 |
CN112087389B (zh) * | 2019-06-14 | 2023-01-24 | 深圳市中兴微电子技术有限公司 | 一种报文匹配查表方法、系统、存储介质和终端 |
CN111143427B (zh) * | 2019-11-25 | 2023-09-12 | 中国科学院计算技术研究所 | 基于在网计算的分布式信息检索方法、系统与装置 |
CN111046938B (zh) * | 2019-12-06 | 2020-12-01 | 邑客得(上海)信息技术有限公司 | 基于字符串多模式匹配的网络流量分类识别方法和设备 |
CN111459938B (zh) * | 2020-03-30 | 2023-02-28 | 烽火通信科技股份有限公司 | 一种表项处理方法、查表方法及系统 |
CN111813540B (zh) * | 2020-05-29 | 2023-06-06 | 中国科学院计算技术研究所 | 一种基于图划分的tcam的分配方法 |
CN112667636B (zh) * | 2020-12-30 | 2023-03-24 | 杭州趣链科技有限公司 | 索引建立方法、装置及存储介质 |
CN112650452B (zh) * | 2020-12-31 | 2021-11-26 | 成都卓讯智安科技有限公司 | 一种数据查询方法和设备 |
CN113609344B (zh) * | 2021-09-29 | 2022-01-14 | 北京泰迪熊移动科技有限公司 | 字节流状态机的构建方法及装置、电子设备、存储介质 |
CN115422142A (zh) * | 2022-08-22 | 2022-12-02 | 北京羽乐创新科技有限公司 | 数据压缩方法及装置 |
CN115633097B (zh) * | 2022-12-21 | 2023-04-28 | 新华三信息技术有限公司 | 一种访问控制列表acl压缩方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5864858A (en) * | 1995-06-05 | 1999-01-26 | Shigeru Matsumoto | Method for data retrieval in a data-string set by extracting related link-information from a parent node |
CN1573714A (zh) * | 2003-06-04 | 2005-02-02 | 英特尔公司 | 比较多个字节的数据与已存储的字符串段的方法及系统 |
CN101051321A (zh) * | 2007-05-18 | 2007-10-10 | 北京哲安科技有限公司 | 一种多字符串匹配方法和芯片 |
CN105430109A (zh) * | 2015-10-30 | 2016-03-23 | 电子科技大学 | 一种基于流行为特征的互联网数据中心ip地址查找方法 |
CN105824761A (zh) * | 2016-03-10 | 2016-08-03 | 北京金山安全软件有限公司 | 一种物理内存信息获取方法及装置 |
CN107154899A (zh) * | 2017-03-23 | 2017-09-12 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种用后缀索引查找ip路由的系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10063474B2 (en) * | 2015-09-29 | 2018-08-28 | Keysight Technologies Singapore (Holdings) Pte Ltd | Parallel match processing of network packets to identify packet data for masking or other actions |
-
2017
- 2017-11-27 CN CN201711202703.2A patent/CN107967219B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5864858A (en) * | 1995-06-05 | 1999-01-26 | Shigeru Matsumoto | Method for data retrieval in a data-string set by extracting related link-information from a parent node |
CN1573714A (zh) * | 2003-06-04 | 2005-02-02 | 英特尔公司 | 比较多个字节的数据与已存储的字符串段的方法及系统 |
CN101051321A (zh) * | 2007-05-18 | 2007-10-10 | 北京哲安科技有限公司 | 一种多字符串匹配方法和芯片 |
CN105430109A (zh) * | 2015-10-30 | 2016-03-23 | 电子科技大学 | 一种基于流行为特征的互联网数据中心ip地址查找方法 |
CN105824761A (zh) * | 2016-03-10 | 2016-08-03 | 北京金山安全软件有限公司 | 一种物理内存信息获取方法及装置 |
CN107154899A (zh) * | 2017-03-23 | 2017-09-12 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种用后缀索引查找ip路由的系统 |
Non-Patent Citations (1)
Title |
---|
Scalable Name-Based Packet Forwarding: From Millions to Billions;Tian Song et al.;《In Proceedings of the 2nd International Conference on Information-Centric Networking (ICN)》;20150930;第19页第1栏第1-2段、第20页第2栏倒数第4段至第22页第2栏倒数第2段;图1-3 * |
Also Published As
Publication number | Publication date |
---|---|
CN107967219A (zh) | 2018-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107967219B (zh) | 一种基于tcam的大规模字符串高速查找方法 | |
US6633953B2 (en) | Range content-addressable memory | |
EP1623347B1 (en) | Comparison tree data structures and lookup operations | |
US6594655B2 (en) | Wildcards in radix- search tree structures | |
EP2040184B1 (en) | Database and database processing methods | |
EP1358739B1 (en) | Method and apparatus for routing table management | |
KR100586461B1 (ko) | 파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체 | |
Lim et al. | Priority tries for IP address lookup | |
CN103428093B (zh) | 一种基于名字路由前缀存储、匹配及更新方法与装置 | |
Priya et al. | Hierarchical packet classification using a Bloom filter and rule-priority tries | |
CN105141525B (zh) | IPv6路由查找方法及装置 | |
JP3881663B2 (ja) | フィールドレベルツリーを用いたパケット分類装置及び方法 | |
US7478109B1 (en) | Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes | |
CN112131356B (zh) | 一种基于tcam的报文关键字匹配方法和装置 | |
US20040044868A1 (en) | Method and apparatus for high-speed longest prefix match of keys in a memory | |
CN115086221B (zh) | 一种报文处理方法、装置、转发设备和存储介质 | |
Lim et al. | Binary searches on multiple small trees for IP address lookup | |
CN113824814B (zh) | 一种转发表的地址匹配方法、装置、网络设备及介质 | |
KR101587756B1 (ko) | 블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법 | |
Liu et al. | Longest prefix matching with pruning | |
Erdem | Pipelined hierarchical architecture for high performance packet classification | |
CN116319555B (zh) | 一种面向虚拟专用网络的路由转发方法 | |
Erdem et al. | Value-coded trie structure for high-performance IPv6 lookup | |
WO2003003250A1 (en) | Range content-addressable memory | |
KR20030075016A (ko) | 클래스 분할 기법을 이용한 라우팅 테이블 자료구조,라우팅 테이블을 이용한 라우팅 경로 검색방법 및 장치 |
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 |