CN1148687C - 用于网络处理器的全匹配搜索方法和设备 - Google Patents
用于网络处理器的全匹配搜索方法和设备 Download PDFInfo
- Publication number
- CN1148687C CN1148687C CNB011162155A CN01116215A CN1148687C CN 1148687 C CN1148687 C CN 1148687C CN B011162155 A CNB011162155 A CN B011162155A CN 01116215 A CN01116215 A CN 01116215A CN 1148687 C CN1148687 C CN 1148687C
- Authority
- CN
- China
- Prior art keywords
- leaf
- search
- key
- hash
- tree
- 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.)
- Expired - Fee Related
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/742—Route cache; Operation thereof
-
- 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
-
- 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99934—Query formulation, input preparation, or translation
-
- 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99935—Query augmenting and refining, e.g. inexact access
-
- 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99936—Pattern matching access
-
- 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99937—Sorting
-
- 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
-
- 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-oriented database structure processing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Small-Scale Networks (AREA)
Abstract
用于在搜索模式和搜索树的叶子中存储的模式之间寻找全匹配的新颖数据结构、方法和设备。输入关键字,对关键字运算散列函数,访问直接表(DT)并沿树执行模式搜索控制块(PSCB)直至到达叶子。该搜索机制使用一组可位于一些寄存器和常规存储器中的数据结构,并且接着用来建立一个可通过相对简单的宏硬件操纵的Patricia树结构。在该Patricia树结构中存储关键字以及检索所需的相应信息。散列函数提供从关键字的位组到散列关键字的位组的n→n变换。
Description
技术领域
本发明一般地涉及模式匹配算法,并且更具体地涉及可在网络处理部件中实现的全匹配搜索算法。
背景技术
本申请和下述共同未决、共同转让的专利申请相关并含有共用的公开:“网络处理器处理复合体和方法”,序列号09/384,691,1999年8月27日提交;“用于网络处理器的最长前缀匹配(LPM)算法实现”,序列号09/544,992;以及“用于网络处理器的软件管理树实现”,序列号09/545,100。每件共同未决专利申请完整地收录为本说明书的参考资料。
为在媒体速度下支持越来越复杂的任务,需要硬件集成处理,这导致建立网络处理器。通过一组嵌入的可编程协议处理器以及互补的系统协处理器,网络处理器在具有功能灵活性下提供线路速度帧处理和传送能力。期待网络处理器会以微处理器用于当今的个人计算机的方式变为网络的基本网络构件。网络处理器提供多数据流的实时处理,提供增强的安全性并且提供IP包处理和传送能力。另外,它们通过先进的技术,例如并行分布式处理和流水线处理设计,提供速度改进。这些能力可以使有效的搜索引擎成为可能,可提高数据处理吞吐量并对复杂任务提供快速执行。网络处理器的可编程特性对网络产品开发人员在无须新顾客的专用集成电路(ASIC)设计下提供一种更容易的迁移路径来实现新协议和新技术。
网络处理器为因特网或企业网提供者开发互连解决办法提供一种可高定制化、可扩缩的技术。网络处理器为从低端、独立部件到多机柜设备的大范围的解决办法提供基础。通过采用高性能、非阻塞包路由选择交换技术以及专用接口,例如IBM的Data Aligned SerialLink(DASL)接口(该接口可适用于其它工业交换技术),达到这种定标特性。
作为一种可编程通信集成电路,网络处理器提供非常有效的包分类、对每帧的多表查找、包修改、队列/政策管理以及其它包处理能力。网络管理器把交换引擎、搜索引擎、帧处理器和以太网MAC集成一个部件上以支持要求基于任何协议层上的帧内容的高容量、媒体加权交换帧的顾客的需求。
硬件加速器进行帧传送、帧过滤和帧改变。网络处理器的执行数百条带有复杂的范围及动作规定的规则的能力为过滤能力建立了新的基准,使得基于网络处理器的系统独特地适用于高能力的服务器处理应用。
用网络处理器构筑的典型系统采用分布式软件模型,其中各个可编程网络处理器并发地执行任务。有些功能是在控制点(CP)处理器处进行的,CP可在网络处理器的内部或外部。CP提供对层2和层3的路由选择协议、层4和层5的网络应用以及系统管理的支持。通过网络处理器硬件和常驻皮代码的组合实现线路速度传送和过滤功能。
在由一些互连节点组成的通信网络中,可从一节点向任何另一节点或向网络发送数据。称为路由器的专用节点负责把数据传送到它们的目的地。任何通过通信网络发送的数据包含有关目的地地址的信息,通常作为标题的一部分。每个路由器把该信息或者至少它的一部分和内部存储的地址表比较。若找到所存储的地址和目的地地址之间的匹配,该路由器建立一条通往该目的地节点的路径。取决于网络尺寸和结构,或者把数据直接传送到它们的目的地或者发送到另一个中间路由器。国际标准化组织已颁布一个路由选择标准,在其中路由器存储用于部分地址的路由选择信息。接着路由器把包发送到它的数据库中所具有的最佳匹配部分地址。该ISO标准允许利用给定数量的数字或给定的标题长度建立节点的分层结构。主路由器通过地址的起始部分定址,子路由器通过中间部分,而最终目的地通过地址的最后几位数字。从而,路由器读分配给数据要发送到层次的几位数字就够了。
接收包的路由选择基于伴随的地址串。该地址串充当数据库中的搜索关键字,其中该数据库含有该地址串以及其它有关细节例如在包的递送中哪个路由器是下一个路由器。该数据库被称为路由选择表,而当前路由器和下个路由器之间的链路称为包的前进中的下个跳跃。路由选择表搜索过程取决于地址的结构以及表的组织。例如,长度小于8位并具有非层次结构的搜索关键字应会最高效地在按一系列地址项组织的路由选择表中找到。该搜索关键字应充当表中的索引以定位正确的项。对于较长的搜索关键字,例如32位长,相应的路由选择表可能具有多于10,000的项,把这种数据库组织成简单的表以借助索引直接搜索会浪费大量的存储器空间,因为该表的大部分会是空的。
常规路由器把搜索过程分解为几步。第一步是判定路由器是否直接和目的地主计算机连接。在该情况下,消息离目的地为一次跳跃,并应在该方向上进行路由选择。若目的地计算机不和路由器直接连接,下一步是确定目的地网络的拓朴方向。若从拓朴布局确定方向,则以这种方式为消息选择路由。反之,最后的步骤是沿默认链路为消息确定路由。
典型地,第一步是利用线性搜索通过含有与路由器直接连接的主计算机的32位地址的表进行的。为了反映其局部拓朴,该地址表中的每项和一个直接导向被寻址的计算机的对应输出接口相连接。当路由器接收一目的地地址时,所有的32位和表中的每个目的地地址比较。若找到匹配,通过专用路由器接口把消息直接发送到对应的目的地。
确定目的地网络的方向的第二步通常不是通过对表的线性搜索进行的,因为网络地址会使这种表难以管理和使用。在现有技术中,当地址串遵从网络地址、子网地址和主标识的三层分层时,路由器利用数种周知的技术,例如散列、Patricia树搜索和多级搜索,中的一种进行确定。在散列下,散列函数减小网络的地址部分从而产生小的可管理的索引。散列索引用于检索散列表和搜索匹配的散列项。和散列表的每个散列项对应的是指向对应网络的拓朴方向的输出接口的地址。若在散列网络部分和散列项之间找到匹配,把消息引向对应的接口和目的地网络。
散列法把大量不能管理的字段简化成小的可管理的索引。然而,在这种处理中存在着二个或更多的字段产生相同散列索引的可能。这种情况称为冲突,因为必须把这些字段存储在散列表中的相同位置上。在冲突期间需要进一步搜索以区分这些项。因此,冲突减少利用散列搜索获得的效率,并且在最坏的情况下所有许可的地址简化成单个索引使散列法变成实践上不可使用的搜索过程。
Patricia树搜索避免散列法遇到的冲突。该搜索方法要求在一二进制树中存储所有地址串以及伴随信息,例如有关的路由信息。从地址串内的最高有效位位置开始,该搜索过程逐位地比较地址和树的各节点。匹配的位值引导搜索访问左子节点或者右子节点并且对地址中的下一位重复该过程。搜索时间正比于所存储的最长地址串的长度。在Patricia树搜索中,平均搜索时间和最坏情况搜索时间之间的差异不是非常大。另外,路由选择表是相当有效地组织的。和散列法的路由选择表相比,它需要的存储器较小。Patricia树搜索处理最坏情况搜索优于散列法,但在大多数情况中为定位匹配它需要明显更长的时间。从而,许多常用路由器使用散列和Patricia树搜索的组合。这种组合称为多级搜索。
多级搜索结合散列法和Patricia树搜索。一高速缓存存储一个包含着最近使用的并假定是最常用的路由网络地址的子集的散列表,而Patricia树存储完整的网络地址集。当接收消息时,把目的地地址散列到该表中。若在预定的时间周期内它未被定位,把该地址传送到Patricia树搜索引擎,后者若确保该地址已存储就会找到。
在现有技术中,存在一些周知的树搜索算法,包括固定匹配树、最长前缀匹配树和软件管理树。固定匹配树用于要求准确匹配的定长模式,例如层2以太网MAC表。最长前缀匹配树用于只需要部分匹配的可变长度模式,例如IP子网传送。软件管理树用于用范围或位屏蔽定义的模式,例如过滤规则。通常在树搜索引擎(TSE)的帮助下进行查找。
发明内容
本发明的一个目的是提供用于Patricia树的全匹配树搜索算法的硬件实现。它说明如何规定存储器结构,从而这些结构可为该算法服务,它还说明硬件如何处理这些结构。
本发明的另一个目的是提供一种搜索机制,其不需要前一指针上的存储而是只使用一个正向指针以及下一个或下一组要检查的位,从而减少用于各节点的存储空间。
主要的概念是,输入关键字,在该关键字上运算一散列函数,访问一个直接表(DT),沿树执行模式搜索控制块(PSCB)并且在一叶子上结束。
所解决的问题是设计一组可位于一些寄存器和普通存储器中的数据结构,并接着用于建立一个可通过相对简单的宏硬件操纵的Patricia结构。在该Patricia树中,存储检索所需的关键字以及相应信息。
关键字是要进行搜索并匹配的信息。最初把关键字放在一寄存器中并散列。其结果是散列关键字,并在散列关键字上发生实际搜索。散列函数可以是空散列,从而散列关键字可以和关键字完全相同。散列函数提供关键字位串到散列关键字的n→n变换。
用来存储散列关键字以及树中的有关信息的数据结构称为叶子。检索叶子是该算法的目的。每个叶子对应于单个和输入关键字完全匹配的关键字。在这种实现下叶子含有关键字,并且它附带着要存储的附加信息。叶子的长度是可编程的,和关键字的长度一样。在随机存取存储器中存储叶子并实现为单个存储器项。若关键字位于直接表(DT)则把称为直接叶子。
根据本发明,提供了一种通过网络处理器确定对可变长度搜索关键字的全匹配的方法,包括:读作为搜索串的输入关键字;利用散列函数散列输入关键字以生成散列关键字;利用散列关键字的N个最高有效位作为一个代表搜索树的多个根节点的表的索引,其中每个非空项含有一个指向搜索树中的下个分支或者一个叶子的指针;确定非空表项中的指针是否指向相应搜索树中的一个叶子或下个分支;若该指针不指向对应搜索树的叶子,读下个分支内容;当到达对应搜索树的叶子时读叶子内容,并把该叶子内的模式和散列关键字比较以判定叶子模式是否和散列关键字匹配;以及若叶子模式和散列关键字匹配,把找到的该叶子的内容回送给请求的应用。
根据本发明,提供了一种在半导体基片上实现的用于确定可变长度搜索关键字的全匹配的设备,包括:一个嵌入式处理器复合体,包括提供帧处理的多个协议处理器和一个内部控制点处理器;多个可对每个协议处理器访问并提供高速模式搜索、数据操作和帧分析的硬件加速器协处理器;多个存储多个表示至少一个搜索树的数据结构的可编程存储器部件,其中这些数据结构包括一个直接表、一个模式搜索控制块和一个叶子;一个控制存储器仲裁器,其控制每个协议处理器对该多个存储器部件的访问;以及一个在搜索关键字上运算几何散列函数的散列盒部件。
附图说明
通过在连同附图下阅读下述对优选实施例的详细说明可更好地理解本发明,附图是:
图1示出依据本发明的一优选实施例的用于网络处理器的示例体系结构。
图2示出依据本发明的一优选实施例的用于嵌入式处理器复合体的示范实施例。
图3示出依据本发明的一优选实施例的示例协议处理器结构。
图4示出依据本发明的一优选实施例的示例入口处和出口处帧流。
图5示出依据本发明的一优选实施例的用于全匹配搜索算法的树数据结构。
图6示出依据本发明的一优选实施例使用直接表对示例数据结构的作用。
图7示出依据本发明的一优选实施例具有直接叶子对示例数据结构的作用。
图8示出依据本发明的一优选实施例的DT项的示例结构以及全匹配搜索树中的模式搜索控制块(PSCB)行格式。
图9示出一个依据本发明的一优选实施例的利用全匹配搜索的搜索例子。
图10示出依据本发明的一优选实施例的全匹配(FM)搜索算法的处理逻辑。
图11示出依据本发明的一优选实施例的一示例查找定义表的内部结构。
图12示出PSCB寄存器的内部格式。
图13示出用于FM树的固定叶子格式。
图14示出依据本发明的一优选实施例的树搜索引擎的示例体系结构。
具体实施方式
将在其中嵌有本发明的网络处理器的环境下说明本发明。网络处理器10是单芯片上的可编程交换和路由选择系统,在图1中描述它的体系结构。它提供用于10/100以太网、吉位以太网、SONET上的包(POS)的媒体接口并提供用于附着到交换接口上的数据对准串行链路(DASL)。内部硬件加速器提高性能和效率。嵌入式处理器复合体(EPC)12包括多个协议处理器以及一个内部控制点处理器,用于帧处理、配置和管理支持。
可使用多达N个的并行协议处理器。在16个协议处理机的实施例中,可得到16,384字的内部皮代码指令存储和32,768字的外部皮代码指令存储以提供每秒2,128百万条指令(MIPS)的集合处理能力。另外,每个协议处理器访问M个提供高速模式搜索、数据操作、内部芯片管理操作、帧分析和数据预取支持的硬件加速器协处理器。在一优选实施例中用于各协议处理器的控制存储是通过内部和外部存储器提供的:用于立即存取的32K的内部静态随机存取存储器(SRAM)28,用于快速存取的外部零总线往返(ZBT)SRAM30,以及用于大存储要求的外部双数据率(DDR)动态随机存取存储器(DRAM)32。
利用嵌入式硬件加速器以及在相连的控制点处理器34上运行的预处理算法,网络处理器10能在线路速度下通过带有复杂的范围、优先级、动作规定的一百条或更多的过滤规则处理帧。这使得基于网络处理器的系统很适用于网关、服务器处理应用以及对和处理混合业务相关的任务的过滤。
当网络管理员向相干的用户友好接口输入过滤规则时控制点软件提供自动的逻辑检查。利用基于稳定性理论的新颖流控制,在不造成传输控制协议(TCP)失败前提下比通常采用的随机早期放弃法能忍受更高的暂时过预约率。网络处理器10还通过自动地分配带宽,把网路管理员从必须根据瞬间或假定的业务统计预测设立阈值区的作用解脱出来提供有差别的服务。
单个网络处理器10为多达40个的快速以太网端口或者4个吉位以太网端口提供媒体速度交换。还可把它配置成支持OC-48C、OC-48、4个OC-12或16个OC-3端口。对于可扩缩性,可使用二个3.5Gbps的串行DASL连接来互连二个网络处理器以对端口密度翻番,或者和交换结构连接以创造对多达64个网络处理器的交换解决办法。这二个DASL连接,其中一个是主连接另一个是次连接,还可提供对一条冗余交换结构的连接以提高系统可使用性。
如图1中所示网络处理器10的一个示范实施例包括下述主要部分:
1.一个嵌入式处理器复合体(EPC)12,其包括多达16个可编程处理器加若干协处理器;
2.一个入队一离队调度逻辑14,用于从以太网物理层部件移动到交换结构(EDS-入口处)的帧;
3.一个入队一离队调度逻辑16,用于从交换结构移动到以太网物理层部件(EDS-出口处)的帧;
4.入口处交换接口(交换入口处)18和出口处交换接口(交换出口处)20 DASL连接,用于和另一个网络处理器或中间接线器互连;
5.从以太网或POS物理层物件26(PMM-入口处)接收帧的物理MAC多路复用器22以及对以太网或POS物理层部件26(PMM-出口处)发送帧的物理MAC多路复用器24。
图2示出嵌入式处理器复合体的示范实施例。它包括16个协议处理器,提供2128 MIPS的处理能力。每个协议处理器40包括一个3阶段流水线(取、译码和执行)、一组通用寄存器、一组专用寄存器、一个八指令高速缓存、一个专用算述逻辑单元(ALU)以及一组都在133MHz上运行的协处理器。其中二个协议处理器是专用的:一个用于处理导向帧(导向帧处理器),另一个用于在控制存储器中建立查找数据(类属树处理器)。
图3示出协议处理器的一示范实施例。和每个可编程协议处理器40关联的各协处理器提供下述功能。
1.数据存储协处理器64和帧缓冲存储器42、44(入口和出口方向)接口以提供直接存储器存取(DMA)能力;
2.校验和协处理器62计算标题校验和;
3.入队协处理器66控制对含有关键字帧参数的256位的工作寄存器的访问。该协处理器和完成单元4.6接口以使帧进入交换队列和目标端口队列;
4.接口协处理器对所有协议处理器提供对内部寄存器、计数器和存储器的访问,以进行调试和统计数据收集;
5.串拷贝协处理器使EPC内的数据能有效移动;
6.计数器协处理器为各协议处理器40管理计数器更新;
7.政策协处理器确定流控制信息并且检查和预分配带宽的一致性。
硬件加速器48执行帧传送、帧过滤、帧改变和树搜索。网络处理器含有的其它特性包括新的过滤规则处理、散列运算和流控制。
协议处理器40可以执行一百条或更多的带有复杂的范围和动作规定的帧过滤规则。对于网络安全过滤是最基本的,并且网络处理器硬件助理48提供这些复杂规则组的线路速度执行。根据IP标题信息过滤规则可拒绝或允许帧或者分配服务质量。用来预处理规则的控制点软件自动地改正逻辑错误。在输入逻辑上正确的规则组后,从包标题信息形成关键字并利用网络处理器的软件管理树在线路速度下进行检查。
几何散列函数利用IP标题中的统计结构以胜过理想的随机散列。从而,低冲突率使能在无须附加的分辨搜索下对全匹配表高速查找。
在和各协议处理器的执行并行操作下,树搜索引擎70执行树搜索指令(包括存储器读、写或读-写)、存储器范围检查和非法存储器存取报告。图14示出树搜索引擎的一示范实施例。
在网络处理器10内存在二种系统控制选择。内部处理器34可充当系统的控制点(CP)处理器,或者替代地,可对四个以太网宏中的一个连接一个外部处理器用于初始化和配置。通过建立称为导向帧的专用以太网帧,CP处理器34和这些网络处理器内的其它处理器实体通信。可在DASL连接上把导向帧传送到其它部件,这允许和单个以太网端口连接的一个CP处理器和该子系统内含有的所有网络处理器部件通信并控制它们。每个网络处理器10的内部处理器34还可利用分立的32位PCI总线通信。
网络处理器10通常驻留在子系统板上并提供协议层(即,层2、层3、层4和更高层)帧处理。在CP子系统中的CP处理器34上运行的软件提供管理和路由发现功能。CP代码、各协议处理器上运行的皮代码以及在导向帧处理器上运行的皮代码使该系统能开始进行初始化、维护传送路径和管理系统。作为分布式系统,CP和每个网络处理器子系统包含多个并行操作和利用导向帧通信的处理器,以提高效率和性能。
通过PMM 22接收来自媒体的数据帧并传送到数据存储缓冲器42。在接收过程中PMM还进行CRC校验和帧确认。分配器50把64字节的帧信息发送到可使用的协议处理器40供帧查找。分类器硬件助理48提供识别帧格式的控制数据。协议处理器40利用该控制数据确定要应用的树搜索算法,包括固定匹配树、最长前缀匹配树或软件管理树。
在树搜索引擎(TSE)70的帮助下进行查找。TSE 70执行控制存储器72存取,以使协议处理器40能继续执行。控制存储器72存储皮代码所需的所有的表、计数器以及任何其它数据。为了高效,控制存储器仲裁器52通过在协议处理器40和各种芯片上、芯片外控制存储器选择54之间分配存储器周期管理控制存储器操作。
协议处理器40包括用于数据存储操作的一个主数据缓冲器、一个暂存数据缓冲器和控制寄存器组(集体地,72)。一旦找到匹配,可应用入口处帧改变,例如VLAN标题插入或覆盖。这些改变不通过EPC 12进行。替代地,若设定硬件标志,入口处交换接口硬件18执行改变。通过修改入口处数据存储42中保存的帧内容,可由皮代码和数据存储协处理器64完成其它帧改变。
在把帧发送到交换结构之前,收集控制数据并且用于建立交换标题和帧标题。控制数据包括交换信息例如帧的目的地,以及用于出口处网络处理器的以帮助它进行目的地端口的帧查找、多播或单播操作以及出口处帧改变的信息。
图4示出示例的入口处和出口处帧流。一旦完成,入队协处理器66建立必需的用于把帧排到队列控制块(QCB)74中的格式并且把它们传送到完成单元46。完成单元46保证从16个协议处理器40的顶部到各交换结构队列76的帧次序。来自各交换结构队列76的帧分割成带有插入着交换标题和帧标题字节的64字节信元,如由交换结构76按此发送那样。
利用由重组控制块(RCB)80和EDS-出口44提供的信息把从交换结构接收的帧放到出口数据存储缓冲器78中并且入队到EPC 12。通过分配器把帧的一部分发送到任何空闲的协议处理器40以进行帧查找。把帧数据以及来自分类器硬件助理48的数据分配到协议处理器40。分类器硬件助理48利用入口处网络处理器建立的帧控制数据帮助确定供出口处处理的开始指令地址。
出口处树搜索支持和入口处搜索支持的算法相同的算法。用TSE70执行查找,以释放协议处理器40去继续执行。所有的控制存储器操作是由在各处理器复合体之间分配存储器存取的控制存储器仲裁器52管理的。
通过数据存储协处理器64访问出口处帧数据。成功查找的结果包含传送信息并且在某些情况下包含帧改变信息。出口处帧改变可包括VLAN标题删除、生存时间增加(IPX)或减少(IP)、IP标题校验和再计算、以太网帧CRC覆盖和MAC目的地地址或源地址覆盖或者插入。IP标题校验和是由校验和协处理器62准备的,嵌入式处理器复合体12不执行改变而是建立硬件标志,并由PMM出口处硬件24执行改变。一旦完成,利用入队协处理器46建立把帧入到EDS出口处各队列44中的所需格式并且把它们传送到完成单元46。完成单元46保证从16个协议处理器的顶部到馈送出口处以太网MAC的EDS出口处队列的帧次序。最后通过PMM出口处硬件24把完成的帧发送到以太网MAC或POS接口并且离开物理端口。
如图14中所描述的树搜索引擎(TSE)70利用树的概念存储和检索信息。检索即树搜索以及插入和删除是根据关键字完成的,关键字为位模式,例如为MAC源地址或者为IP源地址和IP目的地地址的串接。图5中描述本发明中使用的示例树数据结构。信息存储在称为叶子116、118、120、122的控制块中,叶子至少包含关键字102(所存储的位模式实际上的散列关键字106)。叶子还可包含其它信息,例如老化信息或用户信息,这可以是转发信息例如目标叶子片(blade)和目标端口号码。叶子的格式由皮代码定义;对象被放入到内部或外部控制存储中。
对树的搜索算法对包括着关键字102的各输入参数产生影响,对关键字完成散列104,访问直接表(DT)108,沿树进行模式搜索控制块(PSCB)110、112、114并且结束在叶子116、118、120、122处。每种类型的树具有它自己的搜索算法,从而根据不同的规则发生树查找。例如,对于固定匹配(FM)树,数据结构是Patricia树。当找到一个叶子时,该叶子是可和输入关键字102匹配的唯一可能候选。“最后比较”运算比较输入关键字102和该叶子中存储的模式。这验证该叶子是否真正和输入关键字102匹配。当找到该叶子并且出现匹配时搜索结果为成功(OK),而在所有其它情况下搜索结果为失败(KO)。
搜索运算的输入包含下述参数:
关键字 必须在搜索或插入/删除之前利用专用皮代码指令
建立176位的关键字。只存在一个关键字寄存器。
然而,在开始树搜索后,可通过皮代码利用该关键
字寄存器建立并发地利用执行该搜索的TSE 70的
下个搜索的关键字。这是因为TSE 70散列关键字
并且把结果存储到192位的“散列关键字”寄存器
106中。
关键字长度 该8位寄存器含有减掉一位的关键字长度。在建立
关键字期间通过硬件自动地更新它。
查找定义索引 这是对查找定义表的8位索引,它包含对在其中发
生搜索的树的完整定义。图11示出查找定义表的
内部结构。
TSRNr 搜索结果可存储在1位的树搜索结果区TSRO或
TSR1之一中。这是通过TSRNr规定的。在TSE
进行搜索的同时,皮代码可访问另一个TSR以分
析前一次搜索的结果。
色彩 对于允许色彩的树(在查找定义表中规定),在散列
运算期间把16位色彩寄存器124的内容插入到关
键字中。
对于FM树,如图4中所示,输入的关键字将会散列成散列关键字106。存在几种可使用的固定算法。在查找定义表中规定将使用的算法。
查找定义表是管理树搜索存储器的主结构。查找定义表是一个内部存储器结构并且含有用于建立树的128个项。查找定义表包含用于定义树所存在的物理存储器(例如,DRAM、SRAM、内部RAM)、是否使能高速缓存、关键字和叶子的长度以及要执行的搜索动作类型的各种项。查找定义表是用三个分立的随机存取存储器实现的—一个只能由通用处理器式树处理器(GTH)访问的RAM以及二个彼此完全相同可由所有皮处理器访问的RAM。
散列函数104的输出总是一个176位的数字,其具有在原始输入关键字102和散列函数104的输出之间存在一对一的对应关系的特性。如后面所解释,该特性使从直接表108之后开始的树的深度最小。
若树允许色彩(图4的例子为这种情况),把16位的色彩寄存器插入到176位散列函数输出中,其结果是一个192位的数,称为“散列关键字106”。在直接表108后面直接出现该插入。若直接表108含有2N个项,在位位置N处插入该16位的色彩值,如图4中所示。在“散列关键字106”寄存器106中存储散列函数的输出和插入的色彩值。若某树不允许色彩,则不修改地取用176位的散列函数,并对散列输出附中16个零以产生192位的最后的“散列关键字”。
可使用色彩以在多个独立的树之间共享单个直接表108。例如,色彩的一种使用可以是MAC源地址(SA)表中的VLAN ID。在这种情况下,输入关键字102会是MAC SA,而色彩124会是VLAN ID(由于VLAN ID为12位,色彩的四个位将不使用,即,置为零)。在散列函数104后,所使用的模式为48+16=64位。现在色彩是模式的一部分并可区分不同VLAN的MAC地址。
散列函数104定义成使它的输出中的大部分熵位于最高的位组中。“散列关键字”寄存器106的N个最高位用于计算进入直接表(DT)108的索引。
实现树的第一结构称为直接表(DT)108。DT表中每个带有N个元素的项在二进制下和其前log2N个位和DT表中该项的索引相同的一个关键字相对应。例如,16条项的DT表中的第五项应和其前3位为“0101”的各关键字对应。若不存在和其前log2N个位与DT中的索引相同的关键字对应的叶子,则把该项标记成空。若只存在单个和这些位匹配的叶子,则在该项内存在一个指向某叶子的指针。该指针是存储该叶子的存储器中的指针。若存在的和带有相同的前几位的关键字相对应的叶子多于一个,则该DT项指向一个PSCB结构110,并且还含有下个要检查的位(组)(NBT)字段126。后面会说明这二个结构。
在存储器中实现DT表108,并且它的尺寸(长度)和起始点是可编程的。另一个可编程特性是采用所谓的直接叶子。替代使DT项指向叶子(这使得以后必须读出),可以在项的位置中存储叶子。这称为直接叶子。与此相关的问题当然是在速度和为DT项使用更多的存储器之间进行折衷。存储器尺寸(其宽度)必须足以容纳叶子,并且不是所有的DT项都在其中存储着叶子。然而一个好的关键字散列函数应造成大部分叶子附着到单个DT项,从而速度权衡是大的。
总之,DT项可以是空的。在这种情况下,该DT项不附带着叶子。DT项可指向附着在该DT项上的单个的叶子。在这种情况下,该DT项可指向模式搜索控制块(PSCB)并且还含有用于该PSCB的下个要(接着要)检查的位(组)(NBT)。附着在该DT项上的叶子多于一个。最后,DT项可包含直接叶子。
PSCB代表树中的分支。在本优选实施例中,存在分支0和分支1。从一PSCB发出的分支数量是一个取决于用于指定分支的位数的变量。若使用n位,则在该PSCB处定义2n条分支。每个PSCB还和一个位位置p相关。从PSCB通过分支0可达到的叶子在位置p处都具有“0”,而通过分支1可达到的叶子在位置p处都具有“1”。另外,从某PSCB可到达的所有叶子具有位0,...,p-1相等的模式,即,这些模式从位置p开始不同。和一PSCB相关的位位置存储在前一个PSCB中或存储在一DT项中并称为NBT(即,要检查的下一位)。PSCB项的格式和DT项的格式相同。在随机存取存储器中实现它。
从而,在树中仅在位模式不同的位置处插入PSCB。这允许有效的搜索操作,因为PSCB的数量以及由此的搜索性能只取决于树中的叶子的数量而和模式的长度无关。PSCB寄存器格式在图12中描述。
总之,PSCB项可以是空的,可以指向一个叶子,或者可以指向另一个PSCB,并且还可以包含用于该PSCB的下个要检查的位(NBT)。如后面进一步说明的那样,FM PSCB总是具有用宽度为1高度为1定义的形状。
PSCB可代表一条表示位数多于一位的分支。在这种情况下,例如表示2位的PSCB会具有四个PSCB项,即,00分支项,01分支项,10分支项和11分支项。每个树可具有表示不同的位数的PSCB。在这种情况下,前面的PSCB还会具有表示下个PSCB的位数以及这些位所代表的位号。
在实际的实现中,把关键字插入到一个专用关键字寄存器102中。接着对它散列104,并把结果存入散列关键字寄存器106。散列函数104是可编程的,并且其中的一个函数是空散列函数(即,不散列)。散列关键字的前几位充当对DT表108的索引。一个可编程特性是在充当DT项中的索引的位组的右侧插入一个位向量。该位向量称为“色彩”值(寄存器124),并且把散列关键字和插入的色彩值的结果存储在散列关键字寄存器106内。
FM树中叶子的格式包含含有模式的控制信息。模式把叶子标识成在树中是唯一的。叶子还包含应用启动树搜索所需的数据。叶子中包含的数据是和应用相关的,并且通过该树的查找定义表项定义其长度或存储器需求。图13示出用于FM树的固定叶子格式。
处理DT项的步骤如下:
·从存储器读DT项
·若该DT项是空项,这意味着在该树中不存在它们的前几位
该散列关键字相同的叶子,从而搜索失败。
·若该DT项具有一个对一个叶子的指针,则利用来自DT108
的该指针作为该叶子的地址从存储器读出该叶子。在一寄存
器中存储该叶子并和关键字进行比较。该步骤称为最终比较。
若存在完全匹配,树搜索成功。反之,树搜索失败。
·若该DT项具有一个对PSCB 110的指针以及一个NBT,首先
把该NBT存入一专用寄存器。利用该NBT号找到关键字中
位置NBT上的那个位。利用该位(0或1)以及对PSCB的该指
针提取正确的PSCB项:把该位附加在该指针的尾部,从而
给出该PSCB在存储器中的完整地址。读出该PSCB并存入
一专用寄存器中;接着硬件处理该PSCB项。此刻,启动算
法以向下查找该树。
处理PSCB的步骤如下:
·若该PSCB项是一个空项,这意味着树中不存在其前NBT个
位和该关键字相同的叶子,从而搜索失败。
·若该PSCB具有一个指向某叶子的指针,则利用来自该PSCB
的指针作为该叶子的地址从存储器读该叶子。在一寄存器中
存储该叶子并和该关键字比较。该步骤称为最后比较。若存
在完全匹配,树搜索成功。反之,树搜索失败。
·若PSCB具有一个对某PSCB的指针和一个NBT,首先把该
NBT存入专用寄存器,并且它变成现用NBT。接着利用该
NBT号找到关键字中位置NBT上的那个位。利用该位(0或
1)以及对PSCB的该指针提取正确的下个PSCB项。把该位附
加在该指针的尾部,从而给出该PSCB在存储器中的完整地
址。读出该PSCB并存入专用寄存器中。接着硬件会对PSCB
项重复该处理。
在树查找期间,不是检查叶子的所有的位,而是只检查那些存在着PSCB(树中的分支)的位。从而,一旦找到一个叶子,必须比较该叶子的模式和关键字,以确认所有的位都匹配。这是该算法的最后比较操作的原因。通过OK/KO标志以及一个完成标志标明搜索的成功或失败。当触发完成标志时,使用该FM树搜索引擎的程序或硬件可以检查OK/KO标志。
所有描述为“可编程的”都可设置在一个和该树对应的专用寄存器值中。若该引擎需要支持N个树,则在一寄存器数组中设置N个这样的值。在该寄存器中编码这些可编程的值,即,要使用的散列函数、DT表的开头、其尺寸等等。
该硬件的一种能力是自动插入(硬件插入)关键字。随着对(散列后的)关键字的搜索的继续,当存在不匹配(KO)时,通过在运行中利用硬件创建PSCB可在该点自动插入叶子。在该情况下,全匹配树的概念可用作为一个高速缓存。
搜索是以访问直接表108,即从直接表108读一个DT项,开始的。用于读该DT项的地址是从“散列关键字”的N个最高位计算的,如同在查找定义表中所定义的树特性上那样。DT项可看成是一个树的根。实际的树数据结构取决于树类型。Patrica树数据结构用于FM树,而Patricia树的扩充用于LPM树和SMT树。
图6中示出使用一个8项DT 108的一个例子。可以看出,通过利用DT 108可减少搜索时间,即,必须要访问的PSCB的数量,从而,通过加大DT尺寸,可在存储器使用和搜索性能之间做出折衷。
对于性能原因,读DT项仅查找它含有对某叶子的指针然后又必须读出该叶子本身这是低效的。对于许多DT项可能具有单个叶子的FM,这种情况常常会发生。直接叶子的概念允许在更多存储器使用和更好性能之间进行折衷。
一个树可以启用直接叶子,这一点在查找定义表表中规定。在图7中示出启用直接叶子的树和禁用直接叶子的树之间的差别。当启用直接叶子并且某DT项含有单个叶子时,把该叶子130直接存储在该DT项本身中。反之,该DT项将含有一个对该叶子的指针。
定形是树搜索存储器(TSM)的一个特性并用于规定如何在TSM中存储对象,例如叶子或PSCB。形状是通过参数宽度和高度定义的。对象的高度表示存储该对象的连续地址单元的数量。对象的宽度表示存储该对象的连续存储体(bank)的数量。对于宽度和高度,硬件自动地读适当数量的单元。从皮代码的观点来看,对象是访问的原子单元。对于存储在SRAM中的对象,宽度必须总是为1。以于DRAM中的对象,宽度可能大于1。足够小的适应单个存储器单元的对象被定义为高度为一和宽度为一。禁用直接叶子的DT项的形状总是为(宽度=1,高度=1)。当在动态随机存取存储器中存储该DT项时,它准确地占据64位。启用直接叶子的DT项的形状和叶子的形状相同,该形状在查找定义表中规定。通常,这造成DT 108使用更多的存储器。这还使叶子的形状对DT项地址计算造成影响。
在读了一DT项后并假定该DT项不包含直接叶子而且也不是空的,通过在该DT项处开始对该树的查找继续搜索。沿树查找可能通过几个PSCB(模式搜索控制块),直到到达一个叶子为止。
当在FM树中的搜索期间遇到PSCB时,树搜索引擎硬件70会取决于“散列关键字”的位p的值继续在分支0或分支1上沿树查找。
在树查找期间,不检查“散列关键字”的所有位,而是仅检查那些存在着PSCB的位。从而,当找到一个叶子时,仍然必须把该叶子中的模式和“散列关键字”比较以确保所有的位匹配。请注意,在叶子中存储的是“散列关键字”而不是原始输入关键字。当找到一FM叶子时,执行下述操作:
步骤1:叶子模式和“散列关键字”比较。当出现匹配时,操作从步
骤2继续。反之,若该叶子含有一个对另一个叶子的链式指
针,读该叶子并且再次比较模式和“散列关键字”。在不匹
配和无NLA字段下,该搜索以失败(KO)结束。
步骤2:若启用向量屏蔽,从该叶子的向量屏蔽读具有位号向量索引
的位。该位作为搜索结果的一部分回送。该搜索以成功(OK)
结束。
图10示出本发明的全匹配搜索算法的处理逻辑。处理从读输入关键字的逻辑块1000开始。接着如逻辑框1002所示该输入关键字通过散列函数。把输入关键字散列成散列关键字是选用的。散列函数选择成使得散列关键字的最左边的位组处的熵最高,即利用这些位对直接表定位。该散列函数是可逆的,即,存在可把散列关键字变换成输入关键字的反散列函数。接着,在逻辑框1004,读直接表。散列关键字的前N个位(其中N是可配置的)用作对直接表的索引。当被读的项为空时,搜索回送KO(未找到匹配)。这是通过终止框1006指示的。如判定框1008中所示,判定该项是否指向某叶子。若该DT项指向一个叶子,则如逻辑框1010中所示读该叶子。反之,该DT项指向一PSCB。在这种情况下,如逻辑框1012中所示读某PSCB的适当部分。对于全匹配搜索,PSCB包括二个项:部分0和部分1。前一个PSCB(或DT项)含有一个位号(NBT:下个要检查的位)。该NBT选择散列关键字中的一个位(即,0或1),该位选择使用哪个PSCB项。该PSCB项含有对某叶子或者对另一个PSCB的一个指针。处理接着循环回到决策框1008。一旦在决策框1008中找到叶子并且在逻辑框1010中读出,该叶子中存储的模式按位地和散列关键字比较,如逻辑框1014中所示。若所有的位匹配(如判定框1016中所指示),搜索回送OK(成功匹配),如结束框1018中所示。接着把该叶子的内容传送给应用。反之,搜索回送KO(失败),如结束框1020中所示。作为对这种处理逻辑的扩展,PSCB可包括2b个项,从而来自散列关键字的b个位选择从PSCB读哪个项。这在使用更多存储器的代价下提高性能。
可使用高速缓存来提高树中的搜索性能。使用高速缓存可在以树为基础下启用查找定义表。在搜索期间,树搜索引擎70首先在高速缓存中检查以判定是否存在和“散列关键字”匹配的叶子。若找到这样的叶子,则返回,无需更多的搜索。若未找到这样的叶子,启动常规搜索。
对于树搜索引擎硬件70,高速缓存查找和常规搜索完全相同。即,把输入关键字散列成“散列关键字”,并进行直接表108访问。直接表108充当一个高速缓存。当高速缓存搜索回送OK(成功)时,搜索结束。反之,树搜索引擎70启动完整树中的第二次搜索-不同的只是不必进行散列操作。“散列关键字”寄存器106的内容被重新使用。
可在查找定义表中规定是否采用高速缓存搜索。若高速缓存搜索使用查找定义表项I并且搜索以KO(失败)结束,自动地利用查找定义表项I+1启动另一次搜索。原理上,这允许链接多次搜索,尽管建议在查找定义表项I+1之下存储完整的树。
树搜索引擎70提供FM树、LPM树和SMT树的硬件搜索操作。对于所有树类型,需要不同数量的软件以初始化和维护树。只有FM树和LPM树具有不必在控制点处理器34的介入下进行叶子的插入和去掉的能力。利用这种特性允许可扩缩的配置并且还具有若需要允许CP34插入或去掉叶子的灵活性。
FM树提供一种利用长度固定的模式有效地搜索表的机制。它的一个例子可以是层2以太网单播MAC表。以太网单播MAC地址是长度固定的字节组并且必须具有完全匹配,否则目的地是未知的。
FM树是性能最好的树,因为它们明显地从散列函数得到好处。树搜索引擎提供多个使冲突率非常低的固定散列函数。假定DT 108足够大,单个DT项关联着多个叶子的概率非常低。这是1+ε规则,其中ε代表DT项中的冲突次数。对于带有一个叶子的DT项其ε=0。从而,借助散列函数并且采用FM树,ε的值应很小。
在图8中可看到FM树中DT项的结构。每个DT项为36位宽并包含下述之一的格式:
·空DT项。不存在和这种DT项相关的叶子。
·对下个PSCB的指针。该DT项含有对某PSCB的指针。下个
PSCB地址(NPA)字段和下个要检查的位(NBT)字段是有效的。
·对叶子的指针。存在和该DT项相关的单个叶子。叶子控制
块地址(LCBA)含有对该叶子的指针。
·直接叶子。存在单个和DT项相关的叶子并且该叶子存储在
该DT项本身中。叶子的第一个字段必须是NLA索(rope),其
意味着直接叶子必须启用该索。索是一个环状连接表,用于
把树中的叶子连接在一起。皮代码可以“走过索”或者顺序
地检查索中的所有叶子。请注意,NLA中的前二位保留成表
示“10”,从而把它们自动地编码成“直接”。仅在查找定
义表中得到启用下才在给定的树使用直接叶子。
·除了包括二个PSCB行外,PSCB的结构和FM DT项的结构
相同,其中每个PSCB行可具有图8中示出的二种格式中的
一种格式。在存储器中相邻地设置这二个PSCB行并且作为
沿着树走下的分支。下个要检查的位(NBT)字段表明关键字中
的偏置供在查找PSCB时用来进行位比较并且表示使用二个
PSCB行中的哪一行。
可在图9中看到搜索FM树的一个例子,其中在该树中存储7位的值。通过利用关键字的三个最高位(MSB)作为进入FM DT108的散列该例被简化。该树中存储着五个叶子项(L0-L4)。
作为第一个例子,假定二进制输入关键字是1110011。前三位“111”检索到DT项7,其处存在一个指向叶子L0的LCBA。TSE 70读叶子L0并且将L0中的模式和输入模式比较。在该例中,出现完全匹配并且TSE会回送OK(成功)。
现假定1001110的输入模式。DT项4含有一个带有NBT字段为3的指向PSCB 0的指针。这意味着该关键字中的第四位“1”(位0是最高位或最左位)确定取该树的哪条分支。因为第四位是“1”,使用PSCB 0的下半部分;如果它为“0”,则应该使用PSCB 0的上半部分。每个PSCB实质上是PSCB行的二元素数组,其中“0”NBT值检索第一元素,而“1”NBT值检索第二元素。由于PSCB 0的PSCB行1包含为6的NBT和指向PSCB 2的下个PSCB地址(NPA),搜索继续。借助为7的NBT以及输入模式的位7等于“0”,使用含有对L3的指针的PSCB 2的上半部分。读叶子L3,并对L3中的模式和输入模式进行全比较操作从而回送OK(成功)。
对输入模式1001100的搜索会在树中遵循和上例完全相同的路径,但最后的比较操作将不匹配,从而搜索回送KO(失败)。
本发明可在硬件、软件或二者的结合下实现。任何类型的计算机系统或者其它适应用实现本文中说明的方法的设备都是适用的。典型的硬件和软件的组合可以是一个通用计算机系统,在装入和执行时其控制该计算机系统从而实现本文中说明的方法。本发明还可以植入计算机程序产品中,该产品具有所有能实现本文中所说明的各方法的特征,当把它装入计算机系统中时该产品能实现这些方法。
本语境下的计算机程序指令或计算机程序意味一组以任何语言、代码(即,皮代码指令)或符号表达的指令,这组指令的意图是使具有信息处理能力的系统直接地或在下述之一或二者出现下:a)转换成另一种语言、代码或符号;b)再生不同的实质格式,执行特定功能。
业内人士理解,对本发明的该优选实施例的许多修改是可能的,且不背离本发明的精神和范围。另外,有可能在不相应地使用其它特性下使用本发明的一些特性。上述对优选实施例的说明是出于示出本发明的原理的目的提供的并不是作出限制,因为本发明的范围只由附属权利要求书定义。
Claims (21)
1.一种通过网络处理器确定对可变长度搜索关键字的全匹配的方法,包括:
读作为搜索串的输入关键字;
利用散列函数散列输入关键字以生成散列关键字;
利用散列关键字的N个最高有效位作为一个代表搜索树的多个根节点的表的索引,其中每个非空项含有一个指向搜索树中的下个分支或者一个叶子的指针;
确定非空表项中的指针是否指向相应搜索树中的一个叶子或下个分支;
若该指针不指向对应搜索树的叶子,读下个分支内容;
当到达对应搜索树的叶子时读叶子内容,并把该叶子内的模式和散列关键字比较以判定叶子模式是否和散列关键字匹配;以及
若叶子模式和散列关键字匹配,把找到的该叶子的内容回送给请求的应用。
2.权利要求1的确定对可变长度搜索关键字的全匹配的方法,其中代表搜索树的多个根节点的表含有2N个项。
3.权利要求1的确定对可变长度搜索关键字的全匹配的方法,其中相应搜索树的下个分支的内容指向其他下个分支。
4.权利要求1的确定对可变长度搜索关键字的全匹配的方法,其中下个分支的内容指向相应搜索树的叶子。
5.权利要求1的确定对可变长度搜索关键字的全匹配的方法,还包括:若叶子模式不和散列关键字匹配并且不含有至另一个叶子的指针,回送未找到匹配指示。
6.权利要求1的确定对可变长度搜索关键字的全匹配的方法,还包括:若对表的索引是一个空项,回送未找到匹配指示。
7.权利要求1的确定对可变长度搜索关键字的全匹配的方法,还包括:把色彩寄存器的内容附加到散列关键字上以设置最终散列关键字。
8.权利要求1的确定对可变长度搜索关键字的全匹配的方法,还包括:把一串零附加到散列关键字上以设置最终散列关键字。
9.权利要求1的确定对可变长度搜索关键字的全匹配的方法,还包括:当下一分支的位号超过散列关键字的长度时终止全匹配搜索。
10.权利要求1的确定对可变长度搜索关键字的全匹配的方法,其中对输入关键字使用的散列函数是一个可把散列关键字变换成输入关键字的可逆散列函数。
11.权利要求1的确定对可变长度搜索关键字的全匹配的方法,还包括:
若叶子包含至另一个叶子的链式指针,读另一个叶子中存储的模式并把该模式和散列关键字比较;
若所存储的模式不和散列关键字匹配并且不含有对链中下个叶子的指针,回送未找到匹配的指示。
12.权利要求1的确定对可变长度搜索关键字的全匹配的方法,还包括:
若叶子包含至另一个叶子的链式指针,读另一个叶子中存储的模式并把该模式和散列关键字比较;
若所存储的模式和散列关键字匹配,回送找到匹配的指示。
13.一种在半导体基片上实现的用于确定可变长度搜索关键字的全匹配的设备,包括:
一个嵌入式处理器复合体,包括提供帧处理的多个协议处理器和一个内部控制点处理器;
多个可对每个协议处理器访问并提供高速模式搜索、数据操作和帧分析的硬件加速器协处理器;
多个存储多个表示至少一个搜索树的数据结构的可编程存储器部件,其中这些数据结构包括一个直接表、一个模式搜索控制块和一个叶子;
一个控制存储器仲裁器,其控制每个协议处理器对该多个存储器部件的访问;以及
一个在搜索关键字上运算几何散列函数的散列盒部件。
14.权利要求13的在半导体基片上实现的用于确定全匹配的设备,还包括一个和各协议处理器并行操作的树搜索引擎,用以执行包括存储器读、写和存储器范围检查的树搜索指令。
15.权利要求13的在半导体基片上实现的用于确定全匹配的设备,其中该多个存储器部件还包括内部静态随机存取存储器、外部静态随机存取存储器和外部动态随机存取存储器中的至少一个。
16.权利要求13的在半导体基片上实现的用于确定全匹配的设备,其中该控制存储器仲裁器通过在该多个协议处理器和该多个存储器部件之间分配存储器周期管理控制存储器的操作。
17.权利要求13的在半导体基片上实现的用于确定全匹配的设备,其中每个协议处理器包括一个主数据缓冲器、一个暂存数据缓冲器和一组控制寄存器,用于数据存储操作。
18.权利要求13的在半导体基片上实现的用于确定全匹配的设备,还包括一个可编程搜索关键字寄存器和一个可编程散列关键字寄存器。
19.权利要求18的在半导体基片上实现的用于确定全匹配的设备,还包括一个可编程色彩关键字寄存器以能在多个独立的搜索树之间共享单个表数据结构。
20.权利要求19的在半导体基片上实现的用于确定全匹配的设备,其中,若启用,把色彩寄存器的内容附加到散列输出以生成最终散列关键字。
21.权利要求19的在半导体基片上实现的用于确定全匹配的设备,其中,若不启用色彩寄存器,把相等数量的零附加到散列输出上以生成最终散列关键字。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/543,531 | 2000-04-06 | ||
US09/543,531 US6675163B1 (en) | 2000-04-06 | 2000-04-06 | Full match (FM) search algorithm implementation for a network processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1316696A CN1316696A (zh) | 2001-10-10 |
CN1148687C true CN1148687C (zh) | 2004-05-05 |
Family
ID=24168430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB011162155A Expired - Fee Related CN1148687C (zh) | 2000-04-06 | 2001-04-05 | 用于网络处理器的全匹配搜索方法和设备 |
Country Status (4)
Country | Link |
---|---|
US (3) | US6675163B1 (zh) |
JP (1) | JP3651589B2 (zh) |
KR (1) | KR100477391B1 (zh) |
CN (1) | CN1148687C (zh) |
Families Citing this family (133)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6675163B1 (en) * | 2000-04-06 | 2004-01-06 | International Business Machines Corporation | Full match (FM) search algorithm implementation for a network processor |
US6947931B1 (en) * | 2000-04-06 | 2005-09-20 | International Business Machines Corporation | Longest prefix match (LPM) algorithm implementation for a network processor |
US7107265B1 (en) | 2000-04-06 | 2006-09-12 | International Business Machines Corporation | Software management tree implementation for a network processor |
US6928162B1 (en) * | 2000-04-07 | 2005-08-09 | International Business Machines Corporation | Method and system for manipulating and telescoping a hash function |
US7966421B2 (en) | 2000-06-21 | 2011-06-21 | SAtech Group, A.B. Limited Liability Company | Method and apparatus for logically expanding the length of a search key |
AU2001285161A1 (en) * | 2000-08-21 | 2002-03-04 | United States Postal Services | Delivery point validation system |
KR100686732B1 (ko) * | 2000-08-26 | 2007-02-23 | 삼성전자주식회사 | 복수의 프리픽스로부터 데이터 패킷을 라우팅하기 위한데이터베이스 생성방법과 라우팅 방법 및 그 방법을이용한 라우터 |
US20020116527A1 (en) * | 2000-12-21 | 2002-08-22 | Jin-Ru Chen | Lookup engine for network devices |
KR100488414B1 (ko) * | 2000-12-30 | 2005-05-11 | 한국전자통신연구원 | 다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된 다중탐색 트리 구조의 자료 탐색 방법 |
US20030026246A1 (en) * | 2001-06-06 | 2003-02-06 | Zarlink Semiconductor V.N. Inc. | Cached IP routing tree for longest prefix search |
US7054855B2 (en) * | 2001-07-03 | 2006-05-30 | International Business Machines Corporation | Method and system for performing a pattern match search for text strings |
US6947958B2 (en) * | 2001-09-19 | 2005-09-20 | Sony Corporation | System and method for documenting composite data products |
KR100456671B1 (ko) * | 2001-11-24 | 2004-11-10 | 주식회사 케이티 | 네트워크 라우터의 고속 패킷 전달을 위한 병렬 룩업 엔진및 그 방법 |
US8195705B2 (en) | 2001-12-11 | 2012-06-05 | International Business Machines Corporation | Hybrid search memory for network processor and computer systems |
US6963868B2 (en) * | 2002-06-03 | 2005-11-08 | International Business Machines Corporation | Multi-bit Patricia trees |
US7451182B2 (en) * | 2002-06-28 | 2008-11-11 | Intel Corporation | Coordinating operations of network and host processors |
US7219211B1 (en) * | 2002-11-19 | 2007-05-15 | Juniper Networks, Inc. | Precompute logic for software packet processing |
US7117196B2 (en) * | 2002-11-22 | 2006-10-03 | International Business Machines Corporation | Method and system for optimizing leaf comparisons from a tree search |
KR20040046465A (ko) * | 2002-11-27 | 2004-06-05 | 한국전자통신연구원 | 다단계 해시함수를 이용하여 검색시간 한계를 보장하는분리 체이닝 구조의 데이터 처리 시스템 및 그 처리방법 |
US7146371B2 (en) * | 2002-12-05 | 2006-12-05 | International Business Machines Corporation | Performance and memory bandwidth utilization for tree searches using tree fragmentation |
EP1584164A2 (en) * | 2002-12-31 | 2005-10-12 | Conexant, Inc. | System and method for providing quality of service in asynchronous transfer mode cell transmission |
US7627552B2 (en) | 2003-03-27 | 2009-12-01 | Microsoft Corporation | System and method for filtering and organizing items based on common elements |
US6917618B2 (en) * | 2003-04-02 | 2005-07-12 | Cisco Technology, Inc. | Arrangement in a router for generating a route based on a pattern of a received packet |
JP3842250B2 (ja) | 2003-07-08 | 2006-11-08 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 経路制御装置、経路制御方法及びそのプログラム |
US20080059404A1 (en) * | 2003-07-21 | 2008-03-06 | Koninklijke Philips Electronics N.V. | Method of Searching in a Collection of Documents |
US7464331B2 (en) * | 2003-08-18 | 2008-12-09 | Microsoft Corporation | System and method for validating hierarchically-organized messages |
US7634500B1 (en) | 2003-11-03 | 2009-12-15 | Netlogic Microsystems, Inc. | Multiple string searching using content addressable memory |
US7243165B2 (en) * | 2004-01-14 | 2007-07-10 | International Business Machines Corporation | Parallel pattern detection engine |
US7433355B2 (en) * | 2004-02-09 | 2008-10-07 | Alcatel Lucent | Filter based longest prefix match algorithm |
US7366728B2 (en) * | 2004-04-27 | 2008-04-29 | International Business Machines Corporation | System for compressing a search tree structure used in rule classification |
US7412431B2 (en) * | 2004-04-27 | 2008-08-12 | International Business Machines Corporation | Method for managing multi-field classification rules relating to ingress |
US7454396B2 (en) * | 2004-04-27 | 2008-11-18 | International Business Machines Corporation | Method for compressing multi-field rule specifications |
IL161874A (en) * | 2004-05-07 | 2012-09-24 | Yves Villaret | System and method for searching strings of records |
US7266548B2 (en) * | 2004-06-30 | 2007-09-04 | Microsoft Corporation | Automated taxonomy generation |
JP2006099524A (ja) * | 2004-09-30 | 2006-04-13 | Nec Commun Syst Ltd | データ構造およびデータ検索方法 |
US7554984B2 (en) * | 2004-11-30 | 2009-06-30 | Broadcom Corporation | Fast filter processor metering and chaining |
US7830892B2 (en) | 2004-11-30 | 2010-11-09 | Broadcom Corporation | VLAN translation in a network device |
US7715384B2 (en) * | 2004-11-30 | 2010-05-11 | Broadcom Corporation | Unicast trunking in a network device |
US8005084B2 (en) * | 2004-11-30 | 2011-08-23 | Broadcom Corporation | Mirroring in a network device |
US7680107B2 (en) * | 2004-11-30 | 2010-03-16 | Broadcom Corporation | High speed trunking in a network device |
US8014390B2 (en) * | 2004-11-30 | 2011-09-06 | Broadcom Corporation | Policy based routing using a fast filter processor |
US7826481B2 (en) * | 2004-11-30 | 2010-11-02 | Broadcom Corporation | Network for supporting advance features on legacy components |
CN101266599B (zh) * | 2005-01-31 | 2010-07-21 | 日电(中国)有限公司 | 输入方法和用户终端装置 |
SI1688900T1 (sl) * | 2005-02-07 | 2007-12-31 | Siemens Schweiz Ag | Postopek za določanje položaja naprav sistema za javljanje nevarnosti |
US7769858B2 (en) * | 2005-02-23 | 2010-08-03 | International Business Machines Corporation | Method for efficiently hashing packet keys into a firewall connection table |
CN1878164A (zh) * | 2005-06-08 | 2006-12-13 | 华为技术有限公司 | E.164号码域名存储和查询方法 |
US7665028B2 (en) | 2005-07-13 | 2010-02-16 | Microsoft Corporation | Rich drag drop user interface |
US7583590B2 (en) * | 2005-07-15 | 2009-09-01 | Telefonaktiebolaget L M Ericsson (Publ) | Router and method for protocol process migration |
US7353332B2 (en) * | 2005-10-11 | 2008-04-01 | Integrated Device Technology, Inc. | Switching circuit implementing variable string matching |
US7984180B2 (en) * | 2005-10-20 | 2011-07-19 | Solarflare Communications, Inc. | Hashing algorithm for network receive filtering |
US7843927B1 (en) * | 2006-12-22 | 2010-11-30 | Extreme Networks, Inc. | Methods, systems, and computer program products for routing packets at a multi-mode layer 3 packet forwarding device |
US20070162481A1 (en) * | 2006-01-10 | 2007-07-12 | Millett Ronald P | Pattern index |
US8116312B2 (en) | 2006-02-08 | 2012-02-14 | Solarflare Communications, Inc. | Method and apparatus for multicast packet reception |
US8266152B2 (en) * | 2006-03-03 | 2012-09-11 | Perfect Search Corporation | Hashed indexing |
US8176052B2 (en) * | 2006-03-03 | 2012-05-08 | Perfect Search Corporation | Hyperspace index |
US7792812B1 (en) * | 2006-03-31 | 2010-09-07 | Netlogic Microsystems, Inc. | Search engine devices that support high speed parallel decoding of digital search tries |
CN100371936C (zh) * | 2006-04-03 | 2008-02-27 | 无锡永中科技有限公司 | 用于树型结构文件的数据查找方法 |
JP4271214B2 (ja) * | 2006-07-07 | 2009-06-03 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
US8150856B2 (en) * | 2006-07-07 | 2012-04-03 | S. Grants Co., Ltd. | Bit string searching apparatus, searching method, and program |
JP4271227B2 (ja) | 2006-10-30 | 2009-06-03 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
US20080052270A1 (en) * | 2006-08-23 | 2008-02-28 | Telefonaktiebolaget Lm Ericsson (Publ) | Hash table structure and search method |
US7783654B1 (en) | 2006-09-19 | 2010-08-24 | Netlogic Microsystems, Inc. | Multiple string searching using content addressable memory |
CN100530182C (zh) * | 2006-10-17 | 2009-08-19 | 中兴通讯股份有限公司 | 一种通信系统中字符串匹配信息的处理方法 |
US7805460B2 (en) * | 2006-10-26 | 2010-09-28 | Polytechnic Institute Of New York University | Generating a hierarchical data structure associated with a plurality of known arbitrary-length bit strings used for detecting whether an arbitrary-length bit string input matches one of a plurality of known arbitrary-length bit string |
JP4379894B2 (ja) * | 2006-11-28 | 2009-12-09 | 株式会社エスグランツ | カップルドノードツリーの分割/結合方法及びプログラム |
US7720826B2 (en) * | 2006-12-29 | 2010-05-18 | Sap Ag | Performing a query for a rule in a database |
US7636717B1 (en) | 2007-01-18 | 2009-12-22 | Netlogic Microsystems, Inc. | Method and apparatus for optimizing string search operations |
JP4402120B2 (ja) * | 2007-01-24 | 2010-01-20 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
JP4514768B2 (ja) * | 2007-04-19 | 2010-07-28 | 株式会社エスグランツ | カップルドノードツリーの退避/復元装置、退避/復元方法及びプログラム |
JP4439013B2 (ja) * | 2007-04-25 | 2010-03-24 | 株式会社エスグランツ | ビット列検索方法及び検索プログラム |
JP4514771B2 (ja) * | 2007-05-18 | 2010-07-28 | 株式会社エスグランツ | カップルドノードツリーの最長一致/最短一致検索装置、検索方法及びプログラム |
EP2149845B1 (en) * | 2007-04-19 | 2013-06-12 | Kousokuya, Inc. | Coupled node tree backup/restore apparatus, backup/restore method, and program |
US8266062B2 (en) * | 2007-06-27 | 2012-09-11 | Microsoft Corporation | Server side reversible hash for telephone-based licensing mechanism |
JP4527753B2 (ja) * | 2007-07-03 | 2010-08-18 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
US8312541B2 (en) * | 2007-07-17 | 2012-11-13 | Cisco Technology, Inc. | Detecting neighbor discovery denial of service attacks against a router |
US7912840B2 (en) * | 2007-08-30 | 2011-03-22 | Perfect Search Corporation | Indexing and filtering using composite data stores |
US7774353B2 (en) * | 2007-08-30 | 2010-08-10 | Perfect Search Corporation | Search templates |
US7774347B2 (en) * | 2007-08-30 | 2010-08-10 | Perfect Search Corporation | Vortex searching |
EP2204744B1 (en) * | 2007-09-14 | 2013-04-24 | Kousokuya, Inc. | Bit string search device, search method, and program |
CN100527134C (zh) * | 2007-12-04 | 2009-08-12 | 威盛电子股份有限公司 | 多模式搜寻的方法与系统 |
JP4502223B2 (ja) * | 2007-12-05 | 2010-07-14 | 株式会社エスグランツ | ビット列のマージソート装置、方法及びプログラム |
JP4498409B2 (ja) * | 2007-12-28 | 2010-07-07 | 株式会社エスグランツ | データベースのインデックスキー更新方法及びプログラム |
JP4567754B2 (ja) * | 2008-01-17 | 2010-10-20 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
US9128868B2 (en) * | 2008-01-31 | 2015-09-08 | International Business Machines Corporation | System for error decoding with retries and associated methods |
US8114117B2 (en) * | 2008-09-30 | 2012-02-14 | Tyco Healthcare Group Lp | Compression device with wear area |
JP4514810B2 (ja) * | 2008-05-18 | 2010-07-28 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
US8032495B2 (en) * | 2008-06-20 | 2011-10-04 | Perfect Search Corporation | Index compression |
US8051085B1 (en) | 2008-07-18 | 2011-11-01 | Netlogic Microsystems, Inc. | Determining regular expression match lengths |
US7835357B2 (en) * | 2008-09-30 | 2010-11-16 | Juniper Networks, Inc. | Methods and apparatus for packet classification based on policy vectors |
US7738454B1 (en) * | 2008-09-30 | 2010-06-15 | Juniper Networks, Inc. | Methods and apparatus related to packet classification based on range values |
US8798057B1 (en) | 2008-09-30 | 2014-08-05 | Juniper Networks, Inc. | Methods and apparatus to implement except condition during data packet classification |
US7961734B2 (en) * | 2008-09-30 | 2011-06-14 | Juniper Networks, Inc. | Methods and apparatus related to packet classification associated with a multi-stage switch |
US8675648B1 (en) | 2008-09-30 | 2014-03-18 | Juniper Networks, Inc. | Methods and apparatus for compression in packet classification |
US7796541B1 (en) | 2008-09-30 | 2010-09-14 | Juniper Networks, Inc. | Methods and apparatus for range matching during packet classification based on a linked-node structure |
US8804950B1 (en) | 2008-09-30 | 2014-08-12 | Juniper Networks, Inc. | Methods and apparatus for producing a hash value based on a hash function |
US8255496B2 (en) | 2008-12-30 | 2012-08-28 | Juniper Networks, Inc. | Method and apparatus for determining a network topology during network provisioning |
US8190769B1 (en) | 2008-12-30 | 2012-05-29 | Juniper Networks, Inc. | Methods and apparatus for provisioning at a network device in response to a virtual resource migration notification |
US8565118B2 (en) * | 2008-12-30 | 2013-10-22 | Juniper Networks, Inc. | Methods and apparatus for distributed dynamic network provisioning |
US8331362B2 (en) * | 2008-12-30 | 2012-12-11 | Juniper Networks, Inc. | Methods and apparatus for distributed dynamic network provisioning |
US7889741B1 (en) | 2008-12-31 | 2011-02-15 | Juniper Networks, Inc. | Methods and apparatus for packet classification based on multiple conditions |
US8111697B1 (en) | 2008-12-31 | 2012-02-07 | Juniper Networks, Inc. | Methods and apparatus for packet classification based on multiple conditions |
US8488588B1 (en) | 2008-12-31 | 2013-07-16 | Juniper Networks, Inc. | Methods and apparatus for indexing set bit values in a long vector associated with a switch fabric |
CN101556610B (zh) * | 2009-05-04 | 2011-12-21 | 中兴通讯股份有限公司 | 网络处理器使用的建表和查表方法 |
US8953603B2 (en) * | 2009-10-28 | 2015-02-10 | Juniper Networks, Inc. | Methods and apparatus related to a distributed switch fabric |
US8442048B2 (en) | 2009-11-04 | 2013-05-14 | Juniper Networks, Inc. | Methods and apparatus for configuring a virtual network switch |
KR100964207B1 (ko) | 2009-11-13 | 2010-06-17 | 동국대학교 산학협력단 | 해시 기반 문서의 색인화 및 검색 방법 및 장치 |
US8331373B2 (en) | 2010-03-15 | 2012-12-11 | Extreme Networks, Inc. | Methods, systems, and computer readable media for automatically selecting between internet protocol switching modes on a per-module basis in a packet forwarding device |
EP2552059B1 (en) * | 2010-03-24 | 2014-12-03 | Nec Corporation | Packet transfer system, control apparatus, transfer apparatus, method of creating processing rules, and program |
US8599853B2 (en) | 2010-04-16 | 2013-12-03 | Wipro Limited | System and method for an exact match search using pointer based pipelined multibit trie traversal technique |
CN101834907B (zh) * | 2010-05-21 | 2012-09-05 | 郑州金翔软件科技有限公司 | 端到端纠错码存储覆盖网系统的实现方法 |
US8880507B2 (en) | 2010-07-22 | 2014-11-04 | Brocade Communications Systems, Inc. | Longest prefix match using binary search tree |
CN102012911B (zh) * | 2010-11-19 | 2012-11-14 | 清华大学 | 基于约束优化的专家匹配方法及系统 |
US8312066B2 (en) * | 2010-11-30 | 2012-11-13 | Telefonaktiebolaget L M Ericsson (Publ) | Hash collision resolution with key compression in a MAC forwarding data structure |
US9282060B2 (en) | 2010-12-15 | 2016-03-08 | Juniper Networks, Inc. | Methods and apparatus for dynamic resource management within a distributed control plane of a switch |
US8891406B1 (en) | 2010-12-22 | 2014-11-18 | Juniper Networks, Inc. | Methods and apparatus for tunnel management within a data center |
US8615015B1 (en) * | 2010-12-30 | 2013-12-24 | Juniper Networks, Inc. | Apparatus, systems and methods for aggregate routes within a communications network |
US10069720B2 (en) | 2011-06-06 | 2018-09-04 | Alcatel Lucent | Routing by resolution |
US8880494B2 (en) * | 2011-07-28 | 2014-11-04 | Brocade Communications Systems, Inc. | Longest prefix match scheme |
KR101411266B1 (ko) * | 2011-09-27 | 2014-06-25 | 주식회사 엘지씨엔에스 | 계층 구조를 이용한 이벤트 처리 방법 및 그를 이용한 이벤트 처리 엔진 및 그 시스템 |
CN102609545A (zh) * | 2012-03-14 | 2012-07-25 | 福建榕基软件股份有限公司 | 树型结构中快速搜索定位树结点的方法 |
US9172743B2 (en) * | 2012-12-31 | 2015-10-27 | Futurewei Technologies, Inc. | Scalable storage systems with longest prefix matching switches |
KR101461821B1 (ko) * | 2013-08-29 | 2014-11-13 | 주식회사 엘지씨엔에스 | 계층 구조를 이용한 이벤트 처리 방법 및 이를 수행하는 이벤트 처리 시스템 |
US9639544B1 (en) * | 2013-10-28 | 2017-05-02 | Pivotal Software, Inc. | Table data persistence |
KR102158389B1 (ko) * | 2013-11-06 | 2020-09-21 | 삼성전자주식회사 | 컨텐츠 중심 네트워크에서 패킷 특성을 고려하는 노드의 동작 방법 및 노드 |
JP6209098B2 (ja) * | 2014-02-07 | 2017-10-04 | 富士通株式会社 | データ管理プログラム、データ管理方法、及びデータ管理システム |
CN104301228A (zh) * | 2014-09-12 | 2015-01-21 | 中国电子科技集团公司第三十二研究所 | 网络处理器中查找模块的实现方法及系统 |
US9886450B2 (en) | 2014-09-25 | 2018-02-06 | Oracle International Corporation | System and method for supporting zero-copy binary radix tree in a distributed computing environment |
JP5960863B1 (ja) * | 2015-03-11 | 2016-08-02 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | 検索装置、検索方法、プログラム、及び記録媒体 |
US10241706B2 (en) * | 2016-05-20 | 2019-03-26 | Renesas Electronics Corporation | Semiconductor device and its memory access control method |
US11200217B2 (en) | 2016-05-26 | 2021-12-14 | Perfect Search Corporation | Structured document indexing and searching |
CN110913762B (zh) | 2017-05-22 | 2023-06-27 | 布罗利思感测科技公司 | 用于实时监视血液成分浓度水平的可调谐混合iii-v/iv激光传感器片上系统 |
JP7162066B2 (ja) | 2018-02-02 | 2022-10-27 | ブロリス センサー テクノロジー,ユーエイビー | 広帯域波長可変レーザー及びそのレーザーシステムの波長判定 |
CN113282800A (zh) * | 2021-05-29 | 2021-08-20 | 北京威努特技术有限公司 | 一种基于信息熵的动态多模匹配方法及装置 |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5121495A (en) | 1988-02-02 | 1992-06-09 | Bell Communications Research, Inc. | Methods and apparatus for information storage and retrieval utilizing hashing techniques |
US5202985A (en) * | 1988-04-14 | 1993-04-13 | Racal-Datacom, Inc. | Apparatus and method for displaying data communication network configuration after searching the network |
CA2000006C (en) * | 1989-01-23 | 1994-07-12 | Walter W. Chang | Combinatorial signatures for data encoding and searching |
JP2698154B2 (ja) | 1989-03-31 | 1998-01-19 | アルプス電気株式会社 | キートツプの製造方法 |
ES2132175T3 (es) | 1989-09-01 | 1999-08-16 | Amdahl Corp | Sistema operativo y base de datos que tienen una estructura de acceso formada por una pluralidad de tablas. |
US5202986A (en) | 1989-09-28 | 1993-04-13 | Bull Hn Information Systems Inc. | Prefix search tree partial key branching |
EP0520116A1 (en) * | 1991-06-28 | 1992-12-30 | International Business Machines Corporation | Method and apparatus for performing pattern search functions |
JPH05167640A (ja) | 1991-12-11 | 1993-07-02 | Oki Electric Ind Co Ltd | 通信プロトコル実装方式 |
US5519858A (en) * | 1992-01-10 | 1996-05-21 | Digital Equipment Corporation | Address recognition engine with look-up database for storing network information |
US5418947A (en) | 1992-12-23 | 1995-05-23 | At&T Corp. | Locating information in an unsorted database utilizing a B-tree |
US5918225A (en) | 1993-04-16 | 1999-06-29 | Sybase, Inc. | SQL-based database system with improved indexing methodology |
WO1996000945A1 (en) | 1994-06-30 | 1996-01-11 | International Business Machines Corp. | Variable length data sequence matching method and apparatus |
US5546390A (en) * | 1994-12-29 | 1996-08-13 | Storage Technology Corporation | Method and apparatus for radix decision packet processing |
US5815737A (en) * | 1995-06-05 | 1998-09-29 | Pmc-Sierra, Inc. | Approach for identifying a subset of asynchronous transfer mode (ATM) VPI/VCI values in the complete VPI/VCI range |
US5857196A (en) | 1996-07-19 | 1999-01-05 | Bay Networks, Inc. | Method for storing a tree of potential keys in a sparse table |
US5852820A (en) * | 1996-08-09 | 1998-12-22 | Digital Equipment Corporation | Method for optimizing entries for searching an index |
US6347085B2 (en) * | 1996-08-16 | 2002-02-12 | Netspeak Corporation | Method and apparatus for establishing communications between packet-switched and circuit-switched networks |
US5940396A (en) * | 1996-08-21 | 1999-08-17 | 3Com Ltd. | Method of routing in an asynchronous transfer mode network |
US5819291A (en) | 1996-08-23 | 1998-10-06 | General Electric Company | Matching new customer records to existing customer records in a large business database using hash key |
JP3284064B2 (ja) | 1996-11-28 | 2002-05-20 | 日本電信電話株式会社 | デジタル探索装置 |
US5978795A (en) * | 1997-01-14 | 1999-11-02 | Microsoft Corporation | Temporally ordered binary search method and system |
JP3520709B2 (ja) | 1997-03-13 | 2004-04-19 | 三菱電機株式会社 | ネットワークアドレス検索方式 |
US6035326A (en) * | 1997-05-07 | 2000-03-07 | International Business Machines Corporation | Mapping table lookup optimization system |
US5893086A (en) | 1997-07-11 | 1999-04-06 | International Business Machines Corporation | Parallel file system and method with extensible hashing |
US5946679A (en) | 1997-07-31 | 1999-08-31 | Torrent Networking Technologies, Corp. | System and method for locating a route in a route table using hashing and compressed radix tree searching |
US6553002B1 (en) * | 1997-08-29 | 2003-04-22 | Ascend Communications, Inc. | Apparatus and method for routing data packets through a communications network |
US6266706B1 (en) * | 1997-09-15 | 2001-07-24 | Effnet Group Ab | Fast routing lookup system using complete prefix tree, bit vector, and pointers in a routing table for determining where to route IP datagrams |
JPH11122285A (ja) * | 1997-10-16 | 1999-04-30 | Fujitsu Ltd | Lan電話交換装置及びシステム |
US5946676A (en) * | 1997-11-03 | 1999-08-31 | Ithaca Media Corporation | Information delivery system |
US6012061A (en) | 1997-11-25 | 2000-01-04 | International Business Machines Corp. | Method and apparatus for deleting nodes in Patricia trees |
US6161144A (en) * | 1998-01-23 | 2000-12-12 | Alcatel Internetworking (Pe), Inc. | Network switching device with concurrent key lookups |
US6047283A (en) * | 1998-02-26 | 2000-04-04 | Sap Aktiengesellschaft | Fast string searching and indexing using a search tree having a plurality of linked nodes |
US6396842B1 (en) * | 1998-04-30 | 2002-05-28 | 3Com Corporation | Method of searching using longest match based Randix Search Trie with variable length keys and having prefix capability |
US6522632B1 (en) * | 1998-05-06 | 2003-02-18 | Avici Systems | Apparatus and method for efficient prefix search |
US6430527B1 (en) * | 1998-05-06 | 2002-08-06 | Avici Systems | Prefix search circuitry and method |
US6876653B2 (en) * | 1998-07-08 | 2005-04-05 | Broadcom Corporation | Fast flexible filter processor based architecture for a network device |
US6560640B2 (en) * | 1999-01-22 | 2003-05-06 | Openwave Systems, Inc. | Remote bookmarking for wireless client devices |
GB9912129D0 (en) | 1999-05-26 | 1999-07-28 | 3Com Corp | Communication device with forwarding database having having a trie search facility |
US6789116B1 (en) * | 1999-06-30 | 2004-09-07 | Hi/Fn, Inc. | State processor for pattern matching in a network monitor device |
US6460120B1 (en) * | 1999-08-27 | 2002-10-01 | International Business Machines Corporation | Network processor, memory organization and methods |
US6404752B1 (en) * | 1999-08-27 | 2002-06-11 | International Business Machines Corporation | Network switch using network processor and methods |
JP2003516666A (ja) * | 1999-12-10 | 2003-05-13 | モサイド・テクノロジーズ・インコーポレイテッド | 最長一致アドレスルックアップのための方法および装置 |
US7107265B1 (en) | 2000-04-06 | 2006-09-12 | International Business Machines Corporation | Software management tree implementation for a network processor |
US6675163B1 (en) * | 2000-04-06 | 2004-01-06 | International Business Machines Corporation | Full match (FM) search algorithm implementation for a network processor |
US6671725B1 (en) * | 2000-04-18 | 2003-12-30 | International Business Machines Corporation | Server cluster interconnection using network processor |
-
2000
- 2000-04-06 US US09/543,531 patent/US6675163B1/en not_active Expired - Fee Related
-
2001
- 2001-03-24 KR KR10-2001-0015402A patent/KR100477391B1/ko not_active IP Right Cessation
- 2001-03-28 JP JP2001091839A patent/JP3651589B2/ja not_active Expired - Fee Related
- 2001-04-05 CN CNB011162155A patent/CN1148687C/zh not_active Expired - Fee Related
-
2003
- 2003-08-28 US US10/650,327 patent/US7139753B2/en not_active Expired - Fee Related
- 2003-08-28 US US10/650,397 patent/US7120630B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7120630B2 (en) | 2006-10-10 |
JP2001357071A (ja) | 2001-12-26 |
CN1316696A (zh) | 2001-10-10 |
US20050177552A1 (en) | 2005-08-11 |
US7139753B2 (en) | 2006-11-21 |
US6675163B1 (en) | 2004-01-06 |
KR100477391B1 (ko) | 2005-03-17 |
KR20010103588A (ko) | 2001-11-23 |
US20050076010A1 (en) | 2005-04-07 |
JP3651589B2 (ja) | 2005-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1148687C (zh) | 用于网络处理器的全匹配搜索方法和设备 | |
CN1195279C (zh) | 对软件管理树进行模式范围比较的方法、装置和系统 | |
CN1111815C (zh) | 在数据库中存储元素和寻找这样存储的元素的方法 | |
Adler et al. | Towards compressing web graphs | |
US7984038B2 (en) | Longest prefix match (LPM) algorithm implementation for a network processor | |
CN1174587C (zh) | 最长匹配地址查询的方法和装置 | |
US6266658B1 (en) | Index tuner for given workload | |
CN1291032A (zh) | 使用分组摘要信息快速和自适应处理分组的设备和方法 | |
Sheil | Median split trees: a fast lookup technique for frequently occuring keys | |
CN1695127A (zh) | 网络接口和协议 | |
CN1371500A (zh) | 网络处理器处理组合体和方法 | |
CN1371495A (zh) | Vlsi网络处理器和方法 | |
CN1276359C (zh) | 用于检查和操作数据的存储器引擎 | |
CN1932816A (zh) | 基于密文的全文检索系统 | |
CN1174319C (zh) | 数据结构管理装置、数据结构管理系统和方法 | |
CN1802632A (zh) | 用于在程序代码转换期间执行解释器优化的方法和装置 | |
CN1633130A (zh) | 基于硬件支持的虚拟接口结构用户层网络通信系统 | |
JP3570323B2 (ja) | アドレスに関するプレフィクスの格納方法 | |
CN1256671C (zh) | 管理资源争用的方法和装置 | |
CN100342367C (zh) | 资源的并发、分布式网络的协作 | |
CN109672623A (zh) | 一种报文处理方法和装置 | |
CN1859297A (zh) | 一种路由管理系统和方法 | |
CN1628452A (zh) | 传输序列的碎片整理 | |
CN1860743A (zh) | 使用模式匹配的网络消息处理 | |
CN1652534A (zh) | 保存字符串匹配规则及利用保存规则进行字串匹配的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20040505 Termination date: 20110405 |