CN112131356A - 一种基于tcam的报文关键字匹配方法和装置 - Google Patents

一种基于tcam的报文关键字匹配方法和装置 Download PDF

Info

Publication number
CN112131356A
CN112131356A CN202010768507.7A CN202010768507A CN112131356A CN 112131356 A CN112131356 A CN 112131356A CN 202010768507 A CN202010768507 A CN 202010768507A CN 112131356 A CN112131356 A CN 112131356A
Authority
CN
China
Prior art keywords
rule
full
database
text
index
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
Application number
CN202010768507.7A
Other languages
English (en)
Other versions
CN112131356B (zh
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.)
Beijing Baizhuo Network Technology Co ltd
National Computer Network and Information Security Management Center
Original Assignee
Beijing Baizhuo Network Technology Co ltd
National Computer Network and Information Security Management Center
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 Beijing Baizhuo Network Technology Co ltd, National Computer Network and Information Security Management Center filed Critical Beijing Baizhuo Network Technology Co ltd
Priority to CN202010768507.7A priority Critical patent/CN112131356B/zh
Publication of CN112131356A publication Critical patent/CN112131356A/zh
Application granted granted Critical
Publication of CN112131356B publication Critical patent/CN112131356B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/332Query formulation
    • G06F16/3329Natural language query formulation or dialogue systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Abstract

本发明公开了一种基于TCAM的报文关键字匹配方法和装置,该方法包括:基于关键字规则数据库和TCAM芯片生成规则索引数据库和规则全文数据库;将第一查询命令字符在所述规则索引数据库中进行匹配;若命中与所述第一查询命令字符相关的索引规则,将第二查询命令字符在所述规则全文数据库中进行匹配;若命中与所述第二查询命令字符相关的规则全文,则基于获取命中的所述规则全文,处理待处理的报文。本发明基于硬件TCAM芯片的匹配速度快但是容量有限的特点,将关键字规则分为长度较短的规则索引和较长的规则全文进行分阶段匹配,兼顾了TCAM芯片的利用率和匹配性能,同时方案无需更改或增加硬件设备,复杂度低,具有较强的实用性。

Description

一种基于TCAM的报文关键字匹配方法和装置
技术领域
本说明书涉及关键字匹配领域,特别是一种基于TCAM的报文关键字匹配方法和装置。
背景技术
DPI(deep packet inspection)深度报文检测技术是一种基于应用层的流量检测和控制技术,所谓“深度”是和普通的报文分析层次相比较而言的,普通报文检测仅分析IP包的4层以下的内容,包括源地址、目的地址、源端口、目的端口以及协议类型。而DPI除了对前面的层次分析外,还增加了应用层分析,识别各种应用及其内容。DPI技术就是通过对应用流中的数据报文内容进行探测,从而确定数据报文的真正应用,其核心是基于关键字匹配的报文特征识别算法,关键字匹配算法的性能直接决定了DPI系统的性能。
目前业界针对关键字匹配提出了多种算法和解决方案,如Aho–Corasick算法、Hyperscan软件库等,但这些解决方案大多是基于CPU的软件解决方案,在以硬件为基础的汇聚分流设备中难以应用这些方法,而利用硬件芯片本身去实现DPI功能面临难以同时满足规则容量与匹配性能要求、开发难度大、灵活性不够等困难。
以相关技术中TCAM芯片在关键字匹配上的应用为例,关键字匹配需要对整个报文进行全包扫描,现有的TCAM用法无法满足这种需求,因为关键字规则匹配通常需要对报文进行全包扫描,由于目标字符位置不定,无法直接确定偏移位置。因此如果直接把关键字规则写入TCAM芯片进行常规匹配,则需要以1个字节为步进单位从报文指定位置(载荷头)开始取固定字长的内容进行遍历查询,这个查询效率极其低下。此外,若将关键字规则进行展开,则TCAM容量会限制规则条数,从而不具有太大实用价值。因此直接将TCAM用于关键字匹配的话难以满足性能和容量的双重需求,目前也很少见到这种方案。
发明内容
本说明书实施例的目的在于,提供了一种基于TCAM的报文关键字匹配方法和装置,具有较高实用性、在TCAM的匹配性能与规则容量之间获得一个平衡,具有开发周期短、实现难度较低及灵活性高等特点。
为达到上述目的,一方面,本说明书实施例提供了一种基于TCAM的报文关键字匹配方法,包括:
基于关键字规则数据库和TCAM芯片生成规则索引数据库和规则全文数据库;
获取待处理的报文;
定位报文的载荷起始位,初始化第一偏移位置offsetL,其中offsetL=0;
基于载荷起始位和初始化第一偏移位置offsetL,取TLI个字节作为第一查询命令字符,其中,TLI为规则索引库的查询命令字符长度;
将第一查询命令字符在规则索引数据库中进行匹配;
若命中与第一查询命令字符相关的索引规则,基于命中的索引规则的编号NID,计算报文的第二偏移位置offsetLN,其中offsetLN=NID%(TLI-RLI+1),其中,RLI为规则索引的长度;
基于第二偏移位置offsetLN取TL个字节作为第二查询命令字符,其中,TL为规则全文数据库的查询命令字符长度;
将第二查询命令字符在规则全文数据库中进行匹配;
若命中与第二查询命令字符相关的规则全文,获取命中的规则全文;
基于获取的规则全文,处理待处理报文。
另一方面,本说明书实施例还提供了一种基于TCAM的报文关键字匹配装置,包括:
规则索引数据库生成模块和规则全文数据库生成模块,用于基于关键字规则数据库和TCAM芯片生成规则索引数据库和规则全文数据库;
报文获取模块,用于获取待处理的报文;
索引规则匹配模块,用于定位报文的载荷起始位,初始化第一偏移位置offsetL,其中offsetL=0;基于载荷起始位和初始化第一偏移位置offsetL,取TLI个字节作为第一查询命令字符,其中,TLI为规则索引库的查询命令字符长度;将第一查询命令字符在规则索引数据库中进行匹配;若命中与第一查询命令字符相关的规则索引,基于命中的索引规则的编号NID,计算报文的第二偏移位置offsetLN,其中offsetLN=NID%(TLI-RLI+1),其中,RLI为规则索引的长度;
规则全文匹配模块,用于基于第二偏移位置offsetLN取TL个字节作为第二查询命令字符,其中,TL为规则全文数据库的查询命令字符长度;将第二查询命令字符在规则全文数据库中进行匹配;若命中与第二查询命令字符相关的规则全文,获取命中的规则全文;
报文处理模块,用于基于获取的规则全文,处理待处理报文。
由以上本说明书实施例提供的技术方案可见,本说明书实施例可以基于硬件TCAM芯片的匹配速度快但是容量有限的特点,将关键字规则分为长度较短的规则索引和较长的规则全文进行分阶段匹配,兼顾了在TCAM芯片的利用率和匹配性能,同时方案无需更改或增加硬件设备,复杂度低,具有较强的实用性。
附图说明
图1和图2为本说明书一些实施例的基于TCAM的报文关键字匹配方法的流程图。
图3为本说明书一些实施例的基于TCAM的报文关键字匹配装置的结构框图。
图4为本说明书一些实施例的从规则全文中提取规则索引的示意图。
图5为本说明书一些实施例的规则索引数据库中规则索引的存放示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
如图1所示,本说明书一些实施例中提供了一种基于TCAM的报文关键字匹配方法,该方法包括以下步骤:
S102、基于关键字规则数据库和TCAM芯片生成规则索引数据库和规则全文数据库;
S104、获取待处理的报文;
S106、定位报文的载荷起始位,初始化第一偏移位置offsetL,其中offsetL=0;基于载荷起始位和初始化第一偏移位置offsetL,取TLI个字节作为第一查询命令字符,其中,TLI为规则索引库的查询命令字符长度;将第一查询命令字符在规则索引数据库中进行匹配;若命中与第一查询命令字符相关的索引规则,基于命中的索引规则的编号NID,计算报文的第二偏移位置offsetLN,其中offsetLN=NID%(TLI-RLI+1),其中,RLI为规则索引的长度;
S108、基于第二偏移位置offsetLN取TL个字节作为第二查询命令字符,其中,TL为规则全文数据库的查询命令字符长度;将第二查询命令字符在规则全文数据库中进行匹配;若命中与第二查询命令字符相关的规则全文,获取命中的规则全文;
S110、基于获取的规则全文,处理待处理报文。
TCAM芯片是一款用来对报文固定位置的固定长度字段进行匹配的专用硬件加速芯片,其具有非常高效的匹配算法,能同时对数万条规则进行匹配,且达到每秒数10亿次的查询速度,非常适用报文的五元组过滤、ACL过滤等应用场景。待查询报文只需取固定位置的固定字长送入TCAM芯片进行一次查询即可。
在本说明书一些实施例中,若未命中与第一查询命令字符相关的规则索引,或未命中与第二查询命令字符相关的规则全文,则按预设位置更新规则,更新第一偏移位置offsetL,并基于更新后的偏移位置,重复在规则索引数据库中的匹配操作和/或在规则全文数据库中的匹配操作,若命中规则全文,则处理待处理报文;若仍未命中规则索引或规则全文,则重复按预设位置更新规则进行偏移位置更新的操作和在规则索引数据库中的匹配操作和/或在规则全文数据库中的匹配操作,预设位置更新规则为offsetL+=TLI
具体而言,通过将关键字规则分为2部分,一部分为长度较短的关键字作为索引规则,在TCAM中划分一个宽度为TLI的数据库,索引规则在这个数据库中单条进行展开;另一部分为关键字规则全文,在TCAM中划分一个宽度为TL的数据库,一条规则全文对应一条TCAM表项;报文查询时先查询索引规则数据库,由于规则进行了展开此次查询速度会比较快,根据查询结果再决定是否去查询规则全文数据库。由于规则索引取自规则全文,通过第一次查询已经可以过滤掉很多不匹配的查询,则进行第二次查询的次数大为减少,从而整体上减少TCAM查询次数。
在本说明书一些实施例中,基于关键字规则数据库和TCAM芯片生成规则索引数据库和规则全文数据库,具体包括,在TCAM芯片上建立规则索引数据库和规则全文数据库;基于规则全文长度RL和规则全文数据库的查询命令字符长度TL组成规则全文数据库,具体为,对于任一个规则全文,将任一个规则全文在(RL,TL-1)长度区间内的掩码置为0后,组成规则全文数据库;选取规则全文数据库中的规则全文的前RLI个字节作为规则索引,并基于规则索引的长度RLI和规则索引库的查询命令字符长度TLI扩展组成规则索引数据库,具体为,对于任一个规则索引,将任一个规则索引依次右移一个字节,直至TLI-1位,将规则索引的左边移出的空位对应掩码位设置为0,由此扩展生成TLI-RLI+1条规则索引。
进一步具体细化,规则库的生成方法和报文匹配方法总共分为九个步骤,具体为:
步骤一:在TCAM芯片上建立两个数据库,即规则索引数据库和规则全文数据库。设置两个数据库的查询命令字长度分别为TLI、TL;其数据库容量分别为TRI、TR
步骤二:生成规则索引数据库,提取关键字规则的前RLI字节作为规则索引,RLI不小于最短规则的长度,对于多个规则的前RLI个字节相同的多个索引只取一个,即进行去重,如图4示例(本例中RLI=3),最终得到RCI条规则索引记录。
得到规则索引后,TCAM索引规则下发流程如下:1)对于每条索引依次写入TCAM规则索引数据库,由于每个索引的长度RLI小于查询命令字长度TLI,对于不足位将其对应掩码位设置为0表示不关心(对应命令字用“X”表示);2)进一步,按以下方法对本条索引进行展开:将索引文本依次右移一个字节,对于左边移出的空位对应掩码位设置为0,生成一条新的TCAM规则下发到规则索引数据库;3)重复步骤2),直到索引规则最后一个字符到达TLI-1位,停止展开。最终一条规则索引文本将形成(TLI-RLI+1)条规则,在TCAM规则索引数据库中存放形式如图5所示(图5中RLI=3,TLI=10,规则索引文本为“sin”)。所有规则索引按照步骤1)-3)形成,最终在规则索引数据中生成RCI*(TLI-RLI+1)条TCAM规则,也即规则索引数据库配置的容量至少不低于该数值。
步骤三:生成规则全文数据库,对每条关键字规则依次写入TCAM规则全文数据库,对于关键字规则长度RL小于规则全文查询命令字长度TL的,对其(RL,TL-1)区间内的掩码置为0(对应命令字用“X”表示)。最终生成RC条关键字全文规则。两个数据库的容量计算公式如下:TRI=TLI*RCI*(TLI-RLI+1)*8bit;TR=TLA*RC*8bit其中,需保证两个数据库容量之和不大于TCAM总容量,即:TRI+TR<=TC
在完成规则索引数据库和规则全文数据库的生成后,可执行报文匹配过程,下面结合图2流程图具体说明:
结合图2,报文匹配过程总体分为2个步骤,即先将报文送入规则索引数据库进行匹配,根据匹配结果再决定是否进行规则全文数据库匹配。
步骤四:对于每一个待匹配的报文,首先将其载荷送入规则索引数据库中进行匹配,初始化取报文字段的偏移位置offsetL,设offsetL=0。
步骤五:从报文指定位置offsetL处取TLI个字节作为查找字符,送入TCAM规则索引数据库进行匹配;
步骤六:若命中某条规则,则利用其返回的规则索引NID计算出该命中索引的偏移位置offsetLN:offsetLN=NID%(TLI-RLI+1),转到步骤七;否则转到步骤八;
步骤七:从报文的offsetLN位置取TL个字节作为查找字符送入TCAM规则全文数据库进行匹配,若命中某条规则,则记录返回的规则ID;转到步骤八;
步骤八:更新offsetL,offsetL+=TLI,并从报文的offsetL位置继续提取TLI个字节作为查询字符送入TCAM规则索引数据库进行匹配,重复上述步骤六至步骤八,直到到达报文结尾。对于最后取的一次查询字符若不够TLI或者TL则以“\x0”填充。
步骤九:将步骤七中记录的结果按照设置的处理规则进行整合处理或者直接发送给下一模块作为关键字匹配最终结果。
综上,本发明根据TCAM芯片的特点将关键字规则分为两部分,即长度较短的规则索引和长度较长的规则全文,对规则索引在TCAM数据库中进行,一条规则展开形成多条TCAM表项,对规则全文则直接下发到数据库,一条规则只生成一条TCAM表项;报文匹配分成两步,首先在规则索引数据库中进行快速匹配,根据此次匹配结构若命中则再到规则全文数据库中进行匹配,否则不进行规则全文数据库的匹配。通过结合硬件TCAM芯片的特点(匹配速度快但是容量有限),将关键字规则分为长度较短的索引和较长的规则全文。较短的索引便于在TCAM中进行规则展开,消耗可接受的容量换来高速匹配效果;较长的规则全文则不进行规则展开,但依赖规则索引的匹配结果进一步进行精确匹配,得到最终匹配结果。本发明提出的这种方法极易在TCAM利用率和查找性能间找到一个平衡,同时方案实现简单,复杂度低,无需更改或增加硬件设备,使得基于TCAM的关键字匹配算法具有较强的实用性。
本说明书一些实施例中还提供了一种基于TCAM的报文关键字匹配装置,该装置包括:
规则索引数据库生成模块和规则全文数据库生成模块,用于基于关键字规则数据库和TCAM芯片生成规则索引数据库和规则全文数据库;报文获取模块,用于获取待处理的报文;
索引规则匹配模块,用于定位报文的载荷起始位,初始化第一偏移位置offsetL,其中offsetL=0;基于载荷起始位和初始化第一偏移位置offsetL,取TLI个字节作为第一查询命令字符,其中,TLI为规则索引库的查询命令字符长度;将第一查询命令字符在规则索引数据库中进行匹配;若命中与第一查询命令字符相关的规则索引,基于命中的索引规则的编号NID,计算报文的第二偏移位置offsetLN,其中offsetLN=NID%(TLI-RLI+1),其中,RLI为规则索引的长度;规则全文匹配模块,用于基于第二偏移位置offsetLN取TL个字节作为第二查询命令字符,其中,TL为规则全文数据库的查询命令字符长度;将第二查询命令字符在规则全文数据库中进行匹配;若命中与第二查询命令字符相关的规则全文,获取命中的规则全文;报文处理模块,用于基于获取的规则全文,处理待处理报文。
在本说明书一些实施例中,还包括,循环匹配模块,用于在未命中与第一查询命令字符相关的索引规则,或未命中与第二查询命令字符相关的规则全文时,按预设位置更新规则,更新第一偏移位置offsetL,并基于更新后的偏移位置,重复在规则索引数据库中的匹配操作和/或在规则全文数据库中的匹配操作,若命中规则全文,则处理待处理报文;若仍未命中规则索引或规则全文,则重复按预设位置更新规则进行偏移位置更新的操作和在规则索引数据库中的匹配操作和/或在规则全文数据库中的匹配操作,预设位置更新规则为offsetL+=TLI。规则索引数据库生成模块和规则全文数据库生成模块,用于在TCAM芯片上建立规则索引数据库和规则全文数据库,规则索引数据库生成模块,具体用于基于规则全文长度RL和规则全文数据库的查询命令字符长度TL组成规则全文数据库,具体为,对于任一个规则全文,将任一个规则全文在(RL,TL-1)区间内的掩码置为0后,组成规则全文数据库;规则全文数据库生成模块,具体用于选取规则全文数据库中的规则全文的前RLI个字节作为规则索引,并基于规则索引的长度RLI和规则索引库的查询命令字符长度TLI扩展组成规则索引数据库,具体为,对于任一个规则索引,将任一个规则索引依次右移一个字节,直至TLI-1位,将规则索引的左边移出的空位对应掩码位设置为0,由此扩展生成TLI-RLI+1条规则索引。
在实际的应用环境中,如图3本发明实施例的硬件构成主要包由三大部分、6个模块组成,其中主控CPU主要负责关键字规则(规则索引、规则全文)的管理,根据关键字规则生成规则索引数据库和规则全文数据库并将下发到TCAM芯片;FPGA(Field ProgrammableGate Array,现场可编程门阵列)/NPU(network processor unit,网络处理单元)芯片主要负责报文匹配的执行以及报文匹配结果的处理。TCAM芯片主要负责接收报文匹配命令并返回匹配结果给FPGA/NPU。
虽然上文描述的过程流程包括以特定顺序出现的多个操作,但是,应当清楚了解,这些过程可以包括更多或更少的操作,这些操作可以顺序执行或并行执行(例如使用并行处理器或多线程环境)。本发明是参照根据本发明实施例的方法的流程图和/或方框图来描述的。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于装置实施例,所以描述的比较简单,相关之处参见装置实施例的部分说明即可。以上仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

Claims (7)

1.一种基于TCAM的报文关键字匹配方法,其特征在于,所述方法包括:
基于关键字规则数据库和TCAM芯片生成规则索引数据库和规则全文数据库;
获取待处理的报文;
定位所述报文的载荷起始位,初始化第一偏移位置offsetL,其中offsetL=0;
基于所述载荷起始位和所述初始化第一偏移位置offsetL,取TLI个字节作为第一查询命令字符,其中,TLI为所述规则索引库的查询命令字符长度;
将所述第一查询命令字符在所述规则索引数据库中进行匹配;
若命中与所述第一查询命令字符相关的索引规则,基于命中的所述索引规则的编号NID,计算所述报文的第二偏移位置offsetLN,其中offsetLN=NID%(TLI-RLI+1),其中,RLI为所述规则索引的长度;
基于所述第二偏移位置offsetLN取TL个字节作为第二查询命令字符,其中,TL为所述规则全文数据库的查询命令字符长度;
将所述第二查询命令字符在所述规则全文数据库中进行匹配;
若命中与所述第二查询命令字符相关的规则全文,获取命中的所述规则全文;
基于获取的所述规则全文,处理所述待处理报文。
2.根据权利要求1所述的基于TCAM的报文关键字匹配方法,其特征在于,
所述方法还包括,若未命中与所述第一查询命令字符相关的规则索引,或未命中与所述第二查询命令字符相关的规则全文,则按预设位置更新规则,更新所述第一偏移位置offsetL,并基于更新后的偏移位置,重复在所述规则索引数据库中的匹配操作和/或在所述规则全文数据库中的匹配操作,若命中规则全文,则处理所述待处理报文;
若仍未命中规则索引或规则全文,则重复所述按所述预设位置更新规则进行偏移位置更新的操作和在所述规则索引数据库中的匹配操作和/或在所述规则全文数据库中的匹配操作,所述预设位置更新规则为offsetL+=TLI
3.根据权利要求2所述的基于TCAM的报文关键字匹配方法,其特征在于,
所述基于关键字规则数据库和TCAM芯片生成规则索引数据库和规则全文数据库,具体包括,
在所述TCAM芯片上建立所述规则索引数据库和所述规则全文数据库;
基于规则全文长度RL和规则全文数据库的查询命令字符长度TL组成所述规则全文数据库,具体为,对于任一个所述规则全文,将任一个所述规则全文在(RL,TL-1)长度区间内的掩码置为0后,组成所述规则全文数据库;
选取所述规则全文数据库中的规则全文的前RLI个字节作为规则索引,并基于所述规则索引的长度RLI和所述规则索引库的查询命令字符长度TLI扩展组成所述规则索引数据库,具体为,对于任一个所述规则索引,将任一个所述规则索引依次右移一个字节,直至TLI-1位,将所述规则索引的左边移出的空位对应掩码位设置为0,由此扩展生成TLI-RLI+1条规则索引。
4.一种基于TCAM的报文关键字匹配装置,其特征在于,包括
规则索引数据库生成模块和规则全文数据库生成模块,用于基于关键字规则数据库和TCAM芯片生成规则索引数据库和规则全文数据库;
报文获取模块,用于获取待处理的报文;
索引规则匹配模块,用于定位所述报文的载荷起始位,初始化第一偏移位置offsetL,其中offsetL=0;基于所述载荷起始位和所述初始化第一偏移位置offsetL,取TLI个字节作为第一查询命令字符,其中,TLI为所述规则索引库的查询命令字符长度;将所述第一查询命令字符在所述规则索引数据库中进行匹配;若命中与所述第一查询命令字符相关的规则索引,基于命中的所述索引规则的编号NID,计算所述报文的第二偏移位置offsetLN,其中offsetLN=NID%(TLI-RLI+1),其中,RLI为所述规则索引的长度;
规则全文匹配模块,用于基于所述第二偏移位置offsetLN取TL个字节作为第二查询命令字符,其中,TL为所述规则全文数据库的查询命令字符长度;将所述第二查询命令字符在所述规则全文数据库中进行匹配;若命中与所述第二查询命令字符相关的规则全文,获取命中的所述规则全文;
报文处理模块,用于基于获取的所述规则全文,处理所述待处理报文。
5.根据权利要求4所述的基于TCAM的报文关键字匹配装置,其特征在于,还包括,
循环匹配模块,用于在未命中与所述第一查询命令字符相关的索引规则,或未命中与所述第二查询命令字符相关的规则全文时,按预设位置更新规则,更新所述第一偏移位置offsetL,并基于更新后的偏移位置,重复在所述规则索引数据库中的匹配操作和/或在所述规则全文数据库中的匹配操作,若命中规则全文,则处理所述待处理报文;若仍未命中规则索引或规则全文,则重复所述按所述预设位置更新规则进行偏移位置更新的操作和在所述规则索引数据库中的匹配操作和/或在所述规则全文数据库中的匹配操作,所述预设位置更新规则为offsetL+=TLI
6.根据权利要求5所述的基于TCAM的报文关键字匹配装置,其特征在于,
所述规则索引数据库生成模块和所述规则全文数据库生成模块,用于在所述TCAM芯片上建立所述规则索引数据库和所述规则全文数据库,所述规则索引数据库生成模块,具体用于基于规则全文长度RL和规则全文数据库的查询命令字符长度TL组成所述规则全文数据库,具体为,对于任一个所述规则全文,将任一个所述规则全文在(RL,TL-1)区间内的掩码置为0后,组成所述规则全文数据库;所述规则全文数据库生成模块,具体用于选取所述规则全文数据库中的规则全文的前RLI个字节作为规则索引,并基于所述规则索引的长度RLI和所述规则索引库的查询命令字符长度TLI扩展组成所述规则索引数据库,具体为,对于任一个所述规则索引,将任一个所述规则索引依次右移一个字节,直至TLI-1位,将所述规则索引的左边移出的空位对应掩码位设置为0,由此扩展生成TLI-RLI+1条规则索引。
7.根据权利要求6所述的基于TCAM的报文关键字匹配装置,其特征在于,
所述规则索引数据库生成模块和所述规则全文数据库生成模块,设置于主控CPU芯片中;
所述规则索引数据库和所述规则全文数据库,由所述主控CPU芯片下发至所述TCAM芯片中;
所述报文处理模块,设置于FPGA芯片和/或NPU芯片中,所述FPGA芯片和/或NPU芯片用于向所述TCAM芯片发送报文匹配命令和接收所述TCAM芯片的报文匹配结果。
CN202010768507.7A 2020-08-03 2020-08-03 一种基于tcam的报文关键字匹配方法和装置 Active CN112131356B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010768507.7A CN112131356B (zh) 2020-08-03 2020-08-03 一种基于tcam的报文关键字匹配方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010768507.7A CN112131356B (zh) 2020-08-03 2020-08-03 一种基于tcam的报文关键字匹配方法和装置

Publications (2)

Publication Number Publication Date
CN112131356A true CN112131356A (zh) 2020-12-25
CN112131356B CN112131356B (zh) 2022-06-07

Family

ID=73850615

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010768507.7A Active CN112131356B (zh) 2020-08-03 2020-08-03 一种基于tcam的报文关键字匹配方法和装置

Country Status (1)

Country Link
CN (1) CN112131356B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112994886A (zh) * 2021-05-21 2021-06-18 芯启源(南京)半导体科技有限公司 一种用于生成tcam搜索关键字的硬件及实现方法
CN113438252A (zh) * 2021-07-08 2021-09-24 恒安嘉新(北京)科技股份公司 报文访问控制方法、装置、设备及存储介质
CN114257461A (zh) * 2022-03-01 2022-03-29 四川省商投信息技术有限责任公司 一种sdn交换机流表控制方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101478447A (zh) * 2009-01-08 2009-07-08 中国人民解放军信息工程大学 一种深度报文检测方法和装置
WO2017036291A1 (zh) * 2015-09-01 2017-03-09 深圳市中兴微电子技术有限公司 一种访问控制列表acl的实现方法、装置及存储介质
US20190036821A1 (en) * 2017-07-30 2019-01-31 Mellanox Technologies Tlv Ltd. Efficient caching of TCAM rules in RAM
CN111222017A (zh) * 2018-11-23 2020-06-02 恒为科技(上海)股份有限公司 一种利用tcam实现浮动字符串匹配的系统
CN111353018A (zh) * 2020-02-24 2020-06-30 杭州迪普信息技术有限公司 基于深度包检测的数据处理方法、装置和网络设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101478447A (zh) * 2009-01-08 2009-07-08 中国人民解放军信息工程大学 一种深度报文检测方法和装置
WO2017036291A1 (zh) * 2015-09-01 2017-03-09 深圳市中兴微电子技术有限公司 一种访问控制列表acl的实现方法、装置及存储介质
US20190036821A1 (en) * 2017-07-30 2019-01-31 Mellanox Technologies Tlv Ltd. Efficient caching of TCAM rules in RAM
CN111222017A (zh) * 2018-11-23 2020-06-02 恒为科技(上海)股份有限公司 一种利用tcam实现浮动字符串匹配的系统
CN111353018A (zh) * 2020-02-24 2020-06-30 杭州迪普信息技术有限公司 基于深度包检测的数据处理方法、装置和网络设备

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112994886A (zh) * 2021-05-21 2021-06-18 芯启源(南京)半导体科技有限公司 一种用于生成tcam搜索关键字的硬件及实现方法
CN112994886B (zh) * 2021-05-21 2021-08-06 芯启源(南京)半导体科技有限公司 一种用于生成tcam搜索关键字的硬件及实现方法
CN113438252A (zh) * 2021-07-08 2021-09-24 恒安嘉新(北京)科技股份公司 报文访问控制方法、装置、设备及存储介质
CN114257461A (zh) * 2022-03-01 2022-03-29 四川省商投信息技术有限责任公司 一种sdn交换机流表控制方法及装置

Also Published As

Publication number Publication date
CN112131356B (zh) 2022-06-07

Similar Documents

Publication Publication Date Title
CN112131356B (zh) 一种基于tcam的报文关键字匹配方法和装置
JP3485262B2 (ja) データ・パケットを分類する方法および手段
US6633953B2 (en) Range content-addressable memory
US6173384B1 (en) Method of searching for a data element in a data structure
CN107967219B (zh) 一种基于tcam的大规模字符串高速查找方法
US6564211B1 (en) Fast flexible search engine for longest prefix match
EP1808987B1 (en) Longest prefix matching using tree bitmap data structures
US6691124B2 (en) Compact data structures for pipelined message forwarding lookups
CN104462609B (zh) 结合星型图编码的rdf数据存储与查询方法
EP3113036B1 (en) Data matching method and apparatus and computer storage medium
CN107154899B (zh) 一种用后缀索引查找ip路由的系统
US20040230583A1 (en) Comparison tree data structures of particular use in performing lookup operations
US7873041B2 (en) Method and apparatus for searching forwarding table
JP3881663B2 (ja) フィールドレベルツリーを用いたパケット分類装置及び方法
CN101388030A (zh) 数据库和数据库处理方法
WO1999006926A1 (en) System and method for locating a route in a route table using hashing and compressed radix tree searching
CN106708956B (zh) 一种基于多url规则集的http数据匹配方法
WO2020038399A1 (zh) 数据包的分类方法、装置及计算机可读存储介质
CN109150962B (zh) 一种通过关键字快速识别http请求头的方法
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
CN109189759A (zh) Kv存储系统中的数据读取方法、数据查询方法、装置及设备
CN105718521A (zh) 一个基于Wavelet Tree的网络数据包索引系统
CN107045535B (zh) 数据库表索引
CN109241098B (zh) 一种分布式数据库的查询优化方法
US9851902B2 (en) Searching memory for a search key

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