用于在处理器中调度规则匹配的调度方法和装置制造方法

文档序号:6540733阅读:265来源:国知局
用于在处理器中调度规则匹配的调度方法和装置制造方法
【专利摘要】在被配置为处理路由器中的搜索请求的网络搜索处理器中,用于调度通过多个启动引擎所启动的规则匹配线程的调度器被设计以有效地利用网络搜索处理器中的资源,同时提供高速性能。根据至少一个示例实施例,调度器及其相应的调度方法包括:确定规则匹配线程组束,每个束通过独立的处理引擎被启动;将在束组的每个束中的规则匹配线程分布成多个规则匹配线程子组;将与束组的每个束相关联的规则匹配线程的子组分配给多个调度队列;以及根据基于与相应的规则匹配线程束相关联的优先级的顺序将被分配给每个调度队列的规则匹配线程发送给规则匹配引擎。
【专利说明】用于在处理器中调度规则匹配的调度方法和装置

【背景技术】
[0001]开放式互联(OSI)参考模型定义了被用于在传输媒介上进行通信的七个网络协议层(L1-L7)。上层(L4-L7)表示点到点通信,并且底层(L1-L3)表示本地通信。
[0002]网络应用感知系统需要处理、过滤和切换一系列L3到L7网路协议层。例如,诸如超文本传输协议(HTTP)和简单邮件传输协议(SMTP)的L7网络协议层,以及诸如传输控制协议(TCP)的L4网络协议层。除了处理网络协议层之外,网络应用感知系统需要通过L4-L7网络协议层用基于接入和内容的安全同时保护这些协议,包括防火墙、虚拟专用网络(VPN)、安全套接层(SSL)、入侵检测系统(IDS)、互联网协议安全(IPsec)、在线速上的反病毒(AV)和反垃圾邮件功能。
[0003]在当今互联网世界,改善网络操作的效率和安全依旧是针对互联网用户的最终目标。接入控制、流量工程、入侵检测和许多其它网络服务要求基于数据包报头的多个字段区别包,其被称为包分类。
[0004]互联网路由器对包进行分类以实施多个高级的互联网服务,诸如路由、速率限制、在防火墙中的接入控制、虚拟带宽分配、基于策略的路由、服务区分、负载均衡、流量整形以及流量计费。这些服务要求路由器将进来的包分类成不同的流,并且然后依据这个分类执行适当的动作。
[0005]分类器使用一组滤波器或规则指定流或类别。例如,在防火墙中的每个规则可能指定一组源和目的地址,并且将相应的拒绝或许可动作和它相关联。备选地,规则可能基于包头的多个字段,包括OSI模型的层2、3、4和5,字段中包含寻址和协议信息。
[0006]在一些类型的专有硬件上,访问控制列表(ACL)指的是应用于端口号的规则或在主机或层3设备上存在的网络后台程序名称,每项具有被许可使用服务的主机和/或网络的列表。独立的服务器以及路由器都能够具有网络ACL。ACL能够被配置为控制入站和出站的流量。


【发明内容】

[0007]根据至少一个示例实施例,用于调度通过网络搜索处理器中的多个启动引擎所启动的规则匹配线程的方法和相应的装置包括:确定规则匹配线程组束,每个束通过独立的处理引擎被启动;将在束组的每个束中的规则匹配线程分布成多个规则匹配线程子组;将与束组的每个束相关联的规则匹配线程的子组分配给多个调度队列;以及根据基于与相应的规则匹配线程束相关联的优先级的顺序将被分配给每个调度队列的规则匹配线程发送给规则匹配引擎。

【专利附图】

【附图说明】
[0008]上述内容将从下列本发明的示例实施例的更具体的描述中变得清楚,如在附图中所图示的,其中相同的参考符号指的是遍及不同视角的相同部分。附图不一定是按比例绘制,而是将重点放在图示本发明的实施例。
[0009]图1是包括搜索处理器可以被采用的网络单元的典型的网络拓扑结构的方框图;
[0010]图2A-2C示出图示了采用搜索处理器的路由器的示例实施例的方框图;
[0011]图3示出搜索处理器的示例架构;
[0012]图4是图示了由软件编译器将规则加载至片上存储器(OCM)内的示例实施例的方框图;
[0013]图5示出图示了根据至少一个示例实施例的存储器,或搜索,簇的架构的方框图;
[0014]图6A-6C是图示与对处理关键搜索线程相关联的不同阶段的流程图;
[0015]图7A和7B是图示根据至少一个示例实施例在调度器或仲裁器模块内对规则匹配线程束的调度的方框图;
[0016]图8是图示根据至少一个示例实施例在调度器或仲裁器模块内对一组束的确定和处理的不意图;
[0017]图9A-9C是图示在调度队列内对规则匹配线程的处理的示意图;以及
[0018]图10是图示根据至少一个示例实施例的调度器或仲裁器模块的架构的方框图。

【具体实施方式】
[0019]本发明的示例实施例的描述如下。
[0020]虽然包分类已被广泛研究了很长时间,研究人员仍主动得寻求新颖的和有效的包分类方案,由于:1)网络带宽的持续增长,?)网络应用的持续增加的复杂度,以及iii)网络系统的技术创新。
[0021]针对网络带宽的持续增加的需求通常是由于数据流量的增长。领先的服务提供商有时在六到九个月内报告在他们的骨干网络上带宽加倍。因此,新颖的包分类方案被要求来处理在边缘和核心设备上以指数级增加的流量。
[0022]由于在网络设备中被实施的网络应用的数量的增加,网络应用的复杂度在增加。包分类被广泛的用于各种种类的应用,诸如服务感知路由、入侵防护和流量整形。因此,在没有性能的重大损失的前提下处理不同类型的规则组要求新颖的包分类的智能方案。
[0023]此外,诸如多核处理器的新技术提供前所未有的计算能力以及高度集成的资源。考虑到这种高级的硬件和软件技术,用户还期待和他们的设备的速度相匹配的高的网络速度和性能。高网络性能和速度可以通过采用新颖的智能包分类方案来获得。
[0024]现有的包分类算法用存储器交换时间。虽然折中已在不断地被改善,针对合理数量的存储器所采用的时间通常仍是贫乏的。
[0025]由于现有的算法方案存在的问题,设计人员使用三态内容可寻址存储器(TCAM),其使用强力并行硬件以针对可用的分类规则同时检查包。TCAM在算法方案上的主要优势是速度和确定性。TCAM为所有数据库工作。
[0026]TCAM是功能为完全关联存储器的硬件设备。TCAM单元存储三个值:0、I或“X”,其表示无关位,并且作为每小区掩码来操作使得TCAM能够与包含诸如kleen号的通配符的规则匹配。在操作中,整个包头可以被提供给TCAM以确定它与哪个条目或规则相匹配。但是,TCAM的复杂度仅已允许小的、不灵活的和相对缓慢的实施,这种实施消耗大量功率。因此,在专门的数据结构上进行操作的有效的算法方案成为有价值的备选方案。
[0027]在本领域中提出的数学方案被示出具有很好的时间/空间复杂度。但是,由于数学方案经常加入特定的条件以简化问题和/或省略可能隐藏明确的最坏情况界的大量常数因子,这些方法在现实网络设备中通常是不可实施的。
[0028]提出的基于观察的方案采用在规则中所观察的统计特征以获得用于现实应用的有效方案。但是,这些算法方法通常仅对特定类型的包分类规则组有效。由于针对不同应用的包分类规则具有不同的特征,很少基于观察的方法能够全面地挖掘在不同类型的规则组中的冗余以得到在各种条件下的稳定性能。
[0029]包分类通过使用包分类器来执行,还被称为策略数据库、流分类器,或简单地被称为分类器。分类器包括规则或策略的采集。接收到的包与规则相匹配,其确定与匹配的包所采取的动作。在通用包分类中,路由器基于在包头中的多个字段将包进行分类。分类器的每个规则根据在包头的“F”字段上的准则指定包可能属于的类别。标识符(例如,类别ID)与每个类别相关联。例如,在流分类器中的每个规则是每个流在独立的类别中的流说明。标识符唯一地指定与每个规则相关联的动作。每个规则具有“F”字段。规则R的第i字段(被称为R[i])表示以与包头的第i字段一起被评估的表达或条件。如果对于每一个i,P的头的第i字段满足表达或条件R[i],那么包P与具体的规则R相匹配。表达或条件R[i]可以用于测试包头的第i字段的值是否精确地等于特定的值,测试对应于包头的第i字段的比特的子组的值是否等于给定值等。
[0030]由规则制定的类别可以重叠。例如,一个包可以匹配多个规则。在这个情况中,当多个规则重叠时,规则在分类器中出现的顺序确定规则相对的优先级。换句话说,与多个规则匹配的包属于由其中首先在分类器中出现的规则的标识符(例如,类别ID)所识别的类别。
[0031]包分类器可以将分类器表中的规则进行分析和归类,并且创建用于将接收的包与来自分类器表的规则相匹配的判决树。判决树是判决支持工具,其使用判决的树状图或模型和它们的可能后果,包括随机事件结果、资源成本和效用。判决树通常用于操作研究,特别是判决分析,以帮助识别最可能达到目标的策略。判决树的另一个用途是作为用于计算条件概率的描述性工具。判决树可以被用于将接收的包与在分类器表中的规则相匹配以确定如何处理接收的包。
[0032]简而言之,问题可以被定义为找到与包匹配的一个或多个规则,例如,匹配规则。在描述对于这个问题的方案之前,应注意,包可以被分解成诸如头、负载和尾部的部分。例如,包的头或包头可以进一步被分成字段。因此,问题可以进一步被定义为找到与包头的一个或多个字段相匹配的一个或多个规则。
[0033]对于上述问题的可能方案可以这样来描述,在概念上,通过描述找到与包或包的部分相匹配的一个或多个规则的请求,“查找请求”,如何导致找到一个或多个匹配规则。
[0034]图1是包括搜索处理器可以被采用的网络单元的典型的网络拓扑结构的方框图100。网络拓扑结构包括互联网核心102,其包括多个核心路由器104a-h。多个核心路由器104a-h中的每个与多个核心路由器104a-h中的至少另一个相连接。在互联网核心102的边缘上的核心路由器104a-h,例如核心路由器104b-e和104h,与至少一个边缘路由器106a_f相耦合。每个边缘路由器106a_f被耦合至至少一个接入路由器108a-e。
[0035]核心路由器104a_104h被配置为在互联网核心102或互联网骨干网中操作。核心路由器104a-104h被配置为支持互联网核心102的多个电信接口,并且被进一步配置为按照多个电信协议中每个协议的全速来转发包。
[0036]边缘路由器106a_f被放置在互联网核心102的边缘。边缘路由器106a_f将在互联网核心102外的接入路由器108a-e和在互联网核心102中的核心路由器104a_h相桥连。边缘路由器106a_f可以被配置为采用桥连协议以从接入路由器108a-e向核心路由器104a_h转发包,反之亦然。
[0037]接入路由器108a-e可以是由诸如家庭用户或办公用户的端用户所使用的路由器,以连接至边缘路由器106a_f中的一个路由器,边缘路由器反过来通过连接至核心路由器104a-h来连接至互联网核心102。如此,边缘路由器106a-f可以经由一个或多个边缘路由器106a-f和一个或多个相互连接的核心路由器104a-104h连接至任何其它的边缘路由器 106a_f。
[0038]本文中所描述的搜索处理器可以存在于任何核心路由器104a_h、边缘路由器106a_f或接入路由器108a_e中。本文中所描述的在每个这些路由器内的搜索处理器被配置为基于一组规则分析互联网协议(IP)包并且沿着适当的网络路径转发IP包。
[0039]图2A是图示采用搜索处理器202的边缘路由器106的示例实施例的方框图。诸如服务供应商边缘路由器的边缘路由器106包括搜索处理器202、第一主处理器204和第二主处理器214。第一主处理器的示例包括处理器,诸如网络处理器单元(NPU)、定制的专用集成电路(ASIC)、Cavium Inc.的OCTEON*处理器等。第一主处理器204被配置作为进入主处理器。第一主处理器204接收来自网络的进入包206。一旦接收到包,第一主处理器204使用Interlaken接口 208向搜索处理器202转发包括进入包206的包头或字段的查找请求。然后搜索处理器202使用采用多个规则的多个规则处理引擎来处理包头,以确定在网络上转发进入包206的路径。搜索处理器202在处理查找请求与包头之后,向第一主处理器204转发路径信息,第一主处理器204向在网络中的另一个网络单元转发所处理的进入包210。
[0040]同样地,第二处理器214是外出主处理器。第二主处理器的示例包括处理器,诸如NPU、定制的ASIC、OCTEON处理器等。第二主处理器214接收向网络发送的外出包216。第二主处理器214在第二 Interlaken接口 218上向搜索处理器202转发具有来自外出包216的包头或字段的查找请求。然后搜索处理器202使用采用多个规则的多个规则处理引擎来处理包头,以确定在网络上转发包的路径。搜索处理器202向在网络中的另一个网络单元转发来自主处理器214的所处理的进入包220。
[0041]图2B是图示了被配置为采用搜索处理器202的边缘路由器106的另一个示例实施例的方框图220。在这个实施例中,边缘路由器106包括多个搜索处理器202,例如第一搜索处理器202a和第二搜索处理器202b。搜索处理器202a_b相应地使用多个Interlaken接口 226a-b被耦合至包处理器228。包处理器228的示例包括处理器,诸如NPU、ASIC等。多个搜索处理器202a-b可以在单个Interlaken接口上被耦合至包处理器228。边缘路由器106在包处理器228处接收具有预处理的包222的包头或字段的查找请求。包处理器228向搜索处理器202a-b中的一个发送查找请求。搜索处理器202a或202b基于一组规则和在包头内的数据对于预处理包222搜索针对适当的转发目标的包头,并且对包处理器228所产生的查找请求做出响应。然后包处理器228基于对来自搜索处理器202a或202b的对于查找请求的响应向网络发送后已处理包224。
[0042]图2C是图示了采用搜索处理器202的接入路由器246的示例实施例的方框图240。接入路由器246在进入包处理器242处接收输入包250。进入包处理器242的示例包括OCTEON处理器等。然后进入包处理器242向搜索处理器202转发具有输入包250的包头的查找请求。搜索处理器202基于在查找请求中的包头确定用于输入包250的转发路径,并且在Interlaken接口 252上向外出包处理器244对查找请求做出响应。然后外出包处理器244向网络输出转发的包248。
[0043]图3示出搜索处理器202的示例架构。除了别的之外,处理器包括接口(例如,Interlaken LA接口)302以接收来自主处理器(例如,204、214、228、242或244)的请求,并且向主处理器发送响应。接口 302被耦合至查找前端(LUF)处理器304,其被配置为对从或向接口 302传送的请求和响应进行处理、调度和排序。根据示例实施例,每个LUF处理器被耦合至超级簇310中的一个。每个超级簇310包括一个或多个存储器簇或搜索簇320。每个存储器簇或搜索簇320包括查找引擎(LUE)部件322和相应的片上存储器(OCM)部件324。存储器簇或搜索簇可以被看作是包括LUE部件322和相应的OCM部件324的搜索块。LUE部件322包括处理引擎,其被配置为给定请求,在相应的OCM部件324中搜索与用于包分类的钥匙相匹配的规则。LUE部件322还可以包括接口逻辑或引擎,被配置为管理在存储器簇320内的不同部件之间数据的传输以及与其它簇的传送。在给定的超级簇310中,存储器簇320通过接口设备312 (例如,交叉开关(XBAR))被耦合。XBAR312可以被看作是智能组织,实现LUF处理器304至不同的存储器簇320的耦合以及在相同的超级簇310中不同的存储器簇320之间的耦合。搜索处理器202可以包括一个或多个超级簇310。查找簇复合体(LCC) 330定义在搜索处理器202中的超级簇310的组。
[0044]搜索处理器202还可以包括存储器遍历器聚合器(MWA) 303和至少一个存储块控制器(MBC)305以协调来自/到位于处理器之外的存储器的读和写的操作。搜索处理器202可以进一步包括一个或多个桶后处理器(BPP) 307以搜索与用于包分类的钥匙相匹配的规贝U,其被存储在为于搜索处理器202之外的存储器中。
[0045]图4是图示了由软件编译器将规则加载至OCM部件中的示例实施例的方框图400。根据示例实施例,软件编译器404是由主处理器或控制面处理器执行以将规则存储到搜索处理器202中的软件。特别地,规则被加载至在搜索处理器202中的至少一个存储器簇或搜索块320的至少一个OCM部件324。根据至少一个示例实施例,软件编译器404以便于后面所存储的规则的搜索的方式,在存储规则中使用多数量据结构。软件编译器404接收规则组402,指示最大树深度406的(多个)参数和指示子树的数量408的(多个)参数。根据至少一个示例实施例,软件编译器404生成一组格式化的编译的规则作为链接的数据结构,在下文中被称为规则编译的数据结构(RCDS)410。RCDS被存储于在搜索处理器202中的至少一个存储器簇或搜索块320的至少一个OCM部件324。RCDS410包括至少一个树412。每个树412包括节点411a-411c、叶节点413a_413b和根节点432。树412的叶节点413a_413b包括或指向一组桶414的一个。桶414可以被看作是桶条目的序列或阵列,每个桶条目存储规则块420的指针或地址,在下文中被称为块指针418。桶可以例如使用表、链接的列表或足够用于存储一系列条目的本领域中已知的任何其他数据结构来实施。规则块420基本上是描述或表示一个或多个规则的数据块。换句话说,存储在搜索处理器202中的一个或多个OCM部件324中的一组规则416包括一个或多个规则块420。规则块420可以是连续的一组规则或遍及存储器的分散的一组规则,由多个指针来组织或通过重新采集分散的规则块420 (例如,使用散列函数)来组织。
[0046]在图4中描述的RCDS410图示在搜索引擎202中存储规则的示例方法。本领域中的技术人员应理解,使用嵌套数据结构的其它方法可以被采用。例如,具有条目包括块指针418的表可以被用于替代树412。在设计用于存储和接入被用于将数据包进行分类的规则的规则编译的数据结构时,要考虑的一个因素是实现这些规则的有效和迅速的搜索或接入。
[0047]一旦规则被存储在搜索处理器202中,然后规则可以被接入以对数据包进行分类。当主处理器接收到数据包时,主处理器向搜索处理器202转发具有来自数据包的包头或一个或多个字段的查找请求。在搜索处理器一侧,处理接收的查找请求的过程包括:
[0048]I)搜索处理器接收来自主处理器的查找请求。根据至少一个示例实施例,从主处理器接收的查找请求包括包头和组标识符(GID)。
[0049]2) GID在全局定义/描述表(⑶T )中指示条目。每个⑶T条目包括η个表标识符(TID)、包头索引(PHIDX)和钥匙格式表索引(KFTIDX)。
[0050]3)每个TID在树位置表(TLT)中指示条目。每个TLT条目识别哪个查找引擎或处理器将寻找一个或多个匹配规则。以这种方式,每个TID指定谁将寻找一个或多个匹配规则以及在哪里寻找一个或多个匹配规则。
[0051]4)每个TID还在树接入表(TAT)中指示条目。TAT是在在超级簇中被组合在一起的多个查找引擎寻找一个或多个匹配规则的背景中使用。每个TAT条目在规则组的存储器中提供起始地址,或指向规则的指针,被称为规则表或树。术语规则表或规则树,或简单地表或树,在下文中被可交换地使用。TID识别在哪个规则组或集中寻找一个或多个匹配规则。
[0052]5) PHIDX在包头表(PHT)中指示条目。在PHT中的每个条目描述如何从包头中抽取η个钥匙。
[0053]6) KFTIDX在钥匙格式表(FKT)中指示条目。在KFT中的每个条目提供指令用于从包头中抽取的η个钥匙中的每个钥匙中抽取一个或多个字段,例如,包头的部分。
[0054]7)抽取的字段中的每个字段和TID中的每个一起被用于查找规则的子组。每个子组包含可以可能与抽取的字段中的每个字段相匹配的规则。
[0055]8)然后每个子组的每个规则和抽取的字段进行比较。作为响应或查找响应,匹配的规则被提供。
[0056]如上文所述,查找请求和它的列举阶段的处理被提供用于图示的目的。本领域的技术人员应理解,针对被包括在查找请求中的不同名称以及数据的不同格式化可以被采用。本领域的技术人员还应理解,被包括在查找请求中的数据的至少部分取决于被用于在存储器簇或搜索簇320中存储规则的RCDS的设计。
[0057]图5示出图示根据至少一个示例实施例的存储器簇或搜索簇320的架构的方框图。存储器簇或搜索簇320包括被配置为存储和提供接入到与RCDS410相关联的数据的片上存储器(OCM)部件324。OCM部件324包括一个或多个存储体。在不同的存储体之间与RCDS410相关联的数据的分布可以以不同的方式完成。例如,不同的数据结构,例如(多个)树数据结构、(多个)桶数据结构和(多个)规则块数据结构,可以被存储在不同的存储体中。备选地,单个存储体可以存储与多于一个的数据结构相关联的数据。例如,给定的存储体可以存储一部分的树数据结构、一部分的桶数据结构和一部分的规则块数据结构。
[0058]存储器簇或搜索簇320包括多个处理引擎510,处理引擎510包括例如,一个或多个树遍历引擎(TWE) 512、一个或多个桶遍历引擎(BWE) 514、多个规则遍历引擎(RWE) 516和多个规则匹配引擎(RME) 518。根据示例实施,存储器簇或搜索簇320包括8个BWE514、8个相应的RWE516和3个RME518。本领域的技术人员应理解,存储器簇或搜索簇320可以被设计成包括不同数量的BWE514、RWE516或RME518。根据至少一个示例实施例,BWE514和RWE516可以被组合成执行桶和规则块数据搜索的单个处理引擎。根据示例实施例,RWE516和RME518可以是独立的处理引擎。根据另一个示例实施例,规则块420的接入和取回可以由还执行规则匹配的RME518执行。换句话说,RME和RWE可以是相同的处理器。
[0059]当搜索处理器202从主处理器接收到被称为查找请求的请求时,LUF处理器304将查找请求处理成一个或多个钥匙搜索请求,每个钥匙搜索请求具有钥匙502。然后LUF处理器304向存储器簇或搜索簇320调度钥匙请求。搜索簇320在TWE512处接收来自LUF处理器304的钥匙502。钥匙502表示例如从包头抽取的字段。特别地,如果RCDS410包括多个树,TWE512可以进一步接收将被穿过的特定树412的指示。TWE512被配置为遍历或穿过存储在OCM部件324中的树412。在对树遍历的响应中,指向桶的指针直接地或通过TWE512从OCM部件324被传到BWE514。BWE514被配置为在OCM部件324中遍历或搜索桶414。在对桶搜索的响应中,桶条目被从OCM部件324发送给BWE514,BWE514向相应的RWE516传递桶条目。备选地,桶条目可以从OCM部件324直接被发送给RWE516。在另一个示例中,RWE516可以是相应的BWE514的部分或部件。RME518被配置为确定包括在钥匙中的包头字段是否匹配与由在被提供给RWE516的一个桶条目中的指针418所指向的规则块数据420相关联的任何规则。
[0060]本领域中的技术人员应理解,RCDS410可以基于包括至少第一类型数据结构和第二类型数据结构的不同嵌套数据结构来实施。第一类型数据结构可以是树、表、链接的列表等。类似地,第二类型数据结构也可以是树、表、链接的列表等。例如,一个或多个表可以被采用以替代在图4中所示出的树412。此外,替代在RCDS410中的桶414,诸如链接的列表、树、表等不同的数据结构可以被使用。像这样,TWE512是被配置为在嵌套的数据结构中搜索第一类型数据结构的引擎,例如,基于钥匙搜索相应的第一条目。第一条目,例如指示在嵌套的数据结构中第二类型数据结构(例如,桶)的存储器位置。通常,BWE514表示被配置为搜索嵌套的数据结构的第二类型数据结构的引擎。
[0061]根据至少一个示例实施例,存储器簇或搜索簇320还包括调度器或仲裁器模块520、OCM存储体槽(OBS)模块530以及累加器计分板(ACCS)模块540。存储器簇或搜索簇320可以进一步包括本文中未描述的其它部件或模块。调度器或仲裁器模块520,还被称为规则遍历簇仲裁器RWCARB,被配置为调度由多个RME514或BWE516启动的规则匹配线程的执行。规则匹配线程由多个RME518处理以确定包括在钥匙中的字段是否匹配与规则块数据420 (由在被提供给RWE516或BWE514的桶条目中的指针418所指向)相关联的任何规贝U。根据至少一个示例实施例,在规则匹配线程的调度执行中,调度器或仲裁器模块520被配置为最小化与规则匹配线程的执行相关联的处理时间。
[0062]来自TWE512、BWE514或RWE516的RCDS数据接入请求被发送给OBS模块530。根据至少一个示例实施例,OBS模块530通过多个逻辑或接入端口被耦合至在OCM部件324中的存储体。接入端口号在给定的时钟周期内约束可能被执行的数据接入请求的数量或可能被接入的存储体的数量。OBS模块530被配置为确定数据接入请求在每个时钟周期内被转发给OCM部件324的存储体。OBS模块530尝试最大化OCM的使用,同时避免存储体冲突以及提供针对数据接入请求的低延时。例如,当在给定的时钟周期内尝试通过多于一个的数据接入请求接入存储体时,存储体冲突发生。低延时一般通过防止接入请求在OBS模块530中在被转发给相应的存储体之前等待很长时间来实现。
[0063]根据至少一个示例实施例,ACCS540被配置为管理由RME518生成的规则匹配线程的结果以及确定最终结果用于向主处理器(例如,204、214、228、242或244)报告。ACCS540还被配置为报告最终结果被确定给相应的BWE514或RWE516。
[0064]图6A-6C是图示了在搜索簇或存储器簇320中处理与处理钥匙搜索线程的不同阶段相关联的流的方框图。LUF处理器304向存储器簇或搜索簇320发送钥匙搜索请求502。钥匙搜索请求502包括钥匙。钥匙表示例如从包头抽取的字段。特别地,如果RCDS410包括多个树,钥匙搜索请求可以进一步包括将要搜索的特定树412的指示。
[0065]如图6A所示,根据至少一个示例实施例,钥匙搜索线程在TWE512处开始。从LUF处理器304接收钥匙搜索请求的TWE通过OBS模块530向OCM部件324发送树遍历请求610。树遍历请求是读取与存储在OCM部件324中的特定树相关联的数据的请求。根据示例实施例,树遍历请求包括在特定树412中穿过的路径的指示。这个指示例如在钥匙内被定义。在OCM部件324中,与指示的路径相关联的数据被读取。路径可能在叶节点(例如,413a或413b)结束,或在到达叶节点之前结束(例如,在诸如411a、411b或411c的内部节点)。树412的叶节点(413a-413b)通常包括到桶414的指针或地址和指示在相应的桶中桶条目(BE)的数量的值。但是,叶节点(413a-413b)可以不包括关于桶的信息,例如,不包括地址和数量的值。在穿过的路径在包括涉及桶的信息的叶节点(例如,413a或413b)结束的情况下,叶节点响应614被发送回TWE512。叶节点响应614包括到桶的指针(或其地址)和数量的值。然后桶指针和数量的值从TWE512被传618给BWE514。备选地,叶节点响应614可以被直接地发送给来自OCM部件324的相应的BWE514。
[0066]图6B是图示了处理与桶遍历线程相关联的流的方框图。BWE514发出桶数据请求620以接入在OCM部件324中的桶414并且接收相应的响应。桶数据请求620包括,例如,桶指针或地址和在叶节点响应614中提供的数量的值。桶数据请求620通过0BS530从BWE514被发送给OCM部件324。由桶地址或指针和条目的相应的数量所指示的桶条目被取回,并且在桶响应624中从OCM部件324发送给BWE514。然后桶条目通过BWE514被提交628给与BWE514相关联的RWE516。备选地,桶响应624被直接地从OCM部件324发送给相应的RWE516。RWE516还可以作为BWE514的部件被实施。桶响应624包括一个或多个桶条目。
[0067]桶响应624可以包含,例如8个桶条目。8个桶条目包括,例如,具有3个桶条目的一个束和具有5个条目的另一个束。备选地,桶响应624可以包含具有8个桶条目的单个束。根据一个示例场景,束已经在叶节点处被定义。作为另一个示例场景,束可以由BWE514定义。搜索引擎软件,例如,可以向BWE或树发送定义束的配置信息。当桶条目的束被提交给RWE516时,BWE514通知629ACCS540束中的桶条目的数量。根据示例实施例,桶条目的束包括一个到八个条目。根据另一个示例实施例,桶条目的束包括一个到十六个桶条目。
[0068]图6C是图示了启动和处理规则匹配线程的流的流程图。RWE516被配置为将从相应的BWE514接收的桶条目的束转发630给调度器或仲裁器模块520。每个桶条目包括指向描述规则的规则块420的规则块指针418。与桶条目的束相关联的规则将基于来自钥匙的一个或多个字段通过RME518进行评估,以检查钥匙字段是否满足与桶条目的束相关联的任何规则。像这样,从RWE516或BWE514向调度器或仲裁器模块520发送桶条目的束表示了规则匹配线程束的指示。
[0069]当BWE514接收桶条目时,钥匙或钥匙的信息被发送给可接入RME518的存储器或缓存。钥匙或钥匙的信息,例如,通过BWE514的数目或索引来指示。当规则块420到达RME518用于处理时,和规则块一起发送的背景信息告诉RME518规则块420是针对哪个BWE514的。RME518使用这个BWE数量或索引以通知ACCS540 “匹配”或“不匹配”,并且还从缓存其取得钥匙用于与规则块420进行比较。
[0070]调度器或仲裁器模块520被配置为从不同的RWE516或BWE514接收桶条目的束,并且调度相应的规则匹配线程用于通过RME518进行处理。调度器或仲裁器模块520向RME518分配并且传递或发送规则匹配线程。根据至少一个示例实施,调度器或仲裁器模块520能够在每个时钟周期发送多于一个的规则匹配线程。在向所分配的RME518传递规则匹配线程时,调度器或仲裁器模块520被配置为通过0BS530向OCM部件324发送相应的规则块请求634。根据至少一个示例实施例,在发送规则块请求634之后,调度器或仲裁器模块520向相应的RWE514发送通知631。当在束内的所有规则匹配线程已通过调度器或仲裁器 520 发送时,RWE516 通知(633)BWE514。从 RWE516 到 BWE514 的通知 633 允许 BWE514向RWE516提交与另一个桶线程或请求相关联的更多的桶条目。当RWE516向调度器或仲裁器模块520提交给定的桶条目的束时,同一个RWE516可以不向调度器或仲裁器模块520提交另一个束,直到对应于给定的束的所有相应的规则块请求632被调度器或仲裁器520处理并且发送给模块0BS530。从调度器520向0BS530发送的规则块请求632包括,例如,要被读取的数据的起始地址和要被读取的数据的数量的指示,例如,多个连续的地址。起始地址和数据的数量的指示从相应的桶条目获得,并且由RWE516传递给调度器520。
[0071]规则块请求632包括来自相应的桶条目的规则块指针418,引用相应的规则块420。规则块请求632通过0BS530转发给OCM部件324。0BS530可以作为多个子请求转发规则块请求632,每个用于读取单个存储器线,例如,在OCM部件324处,由与规则匹配线程相关联的规则块指针418所指示的规则块420被取回,并且然后转发634给通过调度器或仲裁器模块520所分配给的相应的RME518。分配的RME518检查通过接收到的规则块420所表示的规则是否通过在钥匙中的(多个)字段来满足。分配的RME518处理规则块420并且向ACCS540报告“匹配”或“不匹配”结果。万一在规则匹配线程的处理期间发生了错误,分配的RME518还可以向ACCS540报告“错误”。在处理规则块420并且将结果报告(636)给ACCS540之后,分配的RME还可以向调度器或仲裁器模块520发送通知635,指示规则匹配线程被处理了。
[0072]与相应的规则块请求632相关联的规则块420被完全地提交给RME518,并且不能被分布在多于一个的RME518之间。根据至少一个场景,提交给具体的RME518的数据块的交织是不被允许的。与数据块420相关联的数据的数量可以从一个数据块向另一个改变。由RME518处理规则匹配线程的时间也基于相应的规则块420的尺寸改变。例如,具有更多数据线的数据块420由RME518处理时耗费更长的时间。根据至少一个场景,在存储器簇或搜索簇320中的RME518具有等价的功能和处理规则匹配线程的相同的能力。换句话说,RME518具有相同处理能力。
[0073]ACCS被配置为收集针对在相应的束内所有规则匹配线程的响应636并且确定针对束的最终结果。在确定最终结果之后,ACCS540被配置为向相应的BWE514发送通知637,指示束已被充分地处理,并且包括最终结果,例如,“错误”、“匹配”或“不匹配”。在接收到响应637之后,BWE514决定如何继续。如果响应指示“不匹配”,那么BWE514启动另一个桶请求620以从OCM部件324取得桶条目。如果响应指示“错误”,BWE514将停止读取额外的桶条目并且向LUF返回“不匹配”。这个处理继续,直到“匹配”被由RME518找到,“错误”通过RME518被指示,或BWE514已耗尽在叶节点(例如,413a和413b)中指示的桶条目的数量。也就是说,如果在一些点BWE514接收指示“匹配”的响应,它停止启动新的规则块搜索并且等待任何未解决的规则匹配线程以完成处理。如果响应指示“不匹配”,BWE514继续读取桶条目并且启动更多规则搜索。
[0074]如果在一些点BWE514接收指示“匹配”的响应,它停止启动新的规则搜索并等待任何未解决的规则搜索以完成处理。然后,BWE514提供,或使得ACCS540通过LUF处理器304向主处理器提供响应,指示在(多个)钥匙字段和取回的(多个)规则块中的一个或多个规则之间是“匹配”的。如果BWE514在没有接收任何“匹配”响应时耗尽在桶中的所有桶条目,BWE514通过LUF处理器304向主处理器报告或导致报告,指示不匹配。
[0075]通知635允许调度器或仲裁器模块520保持跟踪RME518的有效性状态。根据至少一个示例实施例,调度器520维持与RME518相关联的缓存器的状态的指示。这些指示可以以在下文中被称为信用的存储器单元的术语来描述。当相应的规则匹配线程被发向给定的RME518时,给定指示给定的RME518的存储器容量的多个信用C,调度器520被配置为通过多个信用η衰减C,表示规则块420的尺寸。在这个阶段,给定的RME的存储器容量是C_n。当给定的RME518已处理完规则匹配线程,它在通知635中将信用η的数量发信号返回给调度器520,并且调度器520增加信用η。
[0076]图7Α和7Β是图示根据至少一个示例实施例在调度器或仲裁器520中规则匹配线程725的束的调度的方框图。如图7Α所示,在规则匹配线程的每个束720中的规则匹配线程725被分配优先级的值723。给定的规则匹配线程725的优先级的值723指示相比于同一束中的其它线程,给定的规则匹配线程725的相对的优先级。在确定针对束720的最终结果时,在ACCS540处,相应的规则匹配线程725的优先级的值723被考虑在内。例如,最终结果可以被确定为在束中的规则匹配线程之间具有最高优先级的给定的规则匹配线程的匹配结果,匹配结果等于“匹配”或“错误”。在图7Α中所示出的实施中,优先级值723越低,相应的规则匹配线程725的优先级越高。例如,具有优先级的值为O的规则匹配线程在束720中具有最高的优先级。本领域中的技术人员应理解,其他的实施可以被采用,例如更高的优先级的值指示更高的优先级。
[0077]如图7Α所示,在每个相应的束720中的规则匹配线程725被分布成规则匹配线程的多个子组728。例如,如图7Α所示,每个子组728包括两个规则匹配线程。备选地,每个子组728可以包括四个规则匹配线程725。根据至少一个示例场景,在每个束720中的规则匹配线程725可以以如下的形式在相应的子组728之间被分布,即每个子组728包括来自相同的束720的具有高的和相对低的优先级的规则匹配线程725。例如,“对O”包括具有优先级的值为O和4的规则匹配线程,然而“对I”包括具有优先级的值为I和5的规则匹配线程,诸如此类。本领域中的技术人员应理解,不同的分布方案可以被使用。根据至少一个示例实施例,调度器或仲裁器模块520在任何时间点不能具有来自给定的请求器或规则匹配线程启动器的被处理或在要被处理的队列中的多于一个的束720。给定规则匹配线程的请求器710是启动规则匹配线程725或将其发送给调度器的处理引擎。例如,用于给定的规则匹配线程的请求器710可以是相应的BWE514或相应的RWE516。束优先级的值被分配给每个束720。例如,基于相应的请求器710,针对给定的束720的束优先级的值可以被分配。本领域中的技术人员应理解,优先级的值723可以基于其它准则被分配,诸如在每个束中的请求725的数量,在束中的(多个)特定优先级的值723的存在或不存在,诸如此类。图7B是图示根据至少一个示例实施例在调度器或仲裁器模块520中规则匹配线程的子组728的调度的方框图。针对每个束720,对应于相应的请求器710,相应的子组728被分配给调度器或仲裁器模块520的多个调度队列750a-d。根据至少一个实施场景,针对每个束720的子组728的数量等于在调度器或仲裁器模块520中的调度队列的数量。在这种情况下,在给定的束720中的每个子组728被分配给独立的调度队列,例如,750a、750b、750c或750d。备选地,调度队列750的数量可以小于或大于在每个束720中的子组728的数量。在这种情况下,给定的束720的多于一个的子组728或没有子组728可以被分配给具体的调度队列750。
[0078]根据至少一个示例实施例,子组728的分配通过这种方式被执行,即具有更高的束优先级的束的子组728先于具有相对更低的束优先级的束的子组728被分配给调度队列(例如,750a-d)。例如,八个请求器R0,…,R7,束的优先级可以被定义,诸如对应于RO的束具有最高的束优先级,对应于Rl的束具有第二高的束优先级,…以及对应于R7的束具有最低的束优先级。在这种情况下,对应于请求器RO的束总是被首先分配,接下来是对应于请求器Rl的束,依次类推。此外,针对给定的调度队列,从不同的束720所分配的子组可以具有不同的索引。例如,针对对应于请求器RO的束,子组“对O”、“对I ”、“对2”和“对3”被分别分配给调度队列750a、750b、750c和750d。但是针对对应于请求器Rl的束,子组“对3”、“对2”、“对I”和“对O”被分别分配给调度队列750a、750b、750c和750d。
[0079]通过从一个束到另一个束改变子组如何被分配给调度队列,在不同束中的具有相对高优先级的规则匹配线程被分布于不同的调度队列(例如,750a-d)之间。一旦子组728被分配给调度队列,例如750a-d,然后子组基于相应的束优先级被调度以向RME518转发。调度指针,例如752a-d,指示在当前或下一个时钟周期内在每个调度队列中(例如,750a-d)中被转发的子组。此外,在每个子组内,具有更高优先级的规则匹配线程被调度以先于其它具有相对更低的优先级的规则匹配线程之前被转发。
[0080]根据至少一个示例场景,规则匹配线程725的子组728被构造成优先级的值723几乎在子组728中均匀分布。此外,子组728到多个调度队列(例如,750a-d)的分配在每个束720中被轮换。像这样,调度器520被设计成尽可能实施具有高优先级的规则匹配线程725的并行处理。例如,在图7B中,指针752a-d和所指向的相应的子组指示具有优先级值为O的规则匹配线程正在调度队列750a中被转发,具有优先级值为I的规则匹配线程正在调度队列750b中被转发,具有优先级值为2的规则匹配线程正在调度队列750c中被转发,以及具有优先级值为3的规则匹配线程正在调度队列750d中被转发。
[0081]图8是图示根据至少一个示例实施例在调度器或仲裁器模块520中束组的确定和处理的图。在调度器或仲裁器模块520中规则匹配线程725的调度被在束720组中执行。规则匹配线程的束组被确定和处理。一旦束组的处理完成,新的组被确定和处理。在时钟周期N中,例如,调度器或仲裁器模块520准备好处理从RWE516或BWE514接收的规则匹配线程的束720。调度器520在相同的时钟周期N中确定被调度和向RME518转发的规则匹配线程的一组束720。一组束可以被定义成包括在时钟周期N中在调度器520中存在的所有束720。备选地,确定的组可以是在时钟周期N中在调度器520中存在的所有束720的子组。在图8中,确定的组包括对应于请求器R3、R5、R6和R7的束。
[0082]在时钟周期N+1,调度器520分配并向RME518转发在束中具有最高束优先级的(例如,对应于R3的束)规则匹配线程725。在相同的时钟周期N+1,对应于请求器R4的规则匹配线程的另一个束在调度器中被接收。在时钟周期N+2,对应于R3的束被完全地处理并且相应的规则匹配线程725向RME518转发,因此调度指针752指向在确定的组中的下一个束,例如,对应于请求器R5的束。对应于请求器R4的束(用虚线所示)被跳过,即使它具有比对应于R5的束更高的束优先级,由于它不是在确定的组中。在时钟周期N+K,调度器520完成转发在确定的集中所有的束。调度器520确定仅包括对应于R4的束的新的组。调度器752指向对应于R4的束。
[0083]图9A-9C是图示根据至少一个示例实施例在调度队列750a_d内的规则匹配线程725的处理的图。在调度器520内的调度队列(例如,750a-d)在每个时钟周期内独立地操作。根据至少一个实施场景,每个调度队列(例如,750a、750b、750c或750d)是先进先出(FIFO)缓存器。每个调度队列(例如,750a、750b、750c或750d)具有调度指针(例如,752a、752b、752c或752d),指向例如对应于在相同调度队列中的子组之间具有最高束优先级的束的子组。在对应于具有最高束优先级的束的子组内,调度器指针(例如,752a、752b、752c或752d)指向在相同的子组中的规则匹配线程之间具有最高优先级的规则匹配线程。根据至少一个示例场景,每个RME518被配置为在一个时刻接收一个规则匹配线程725。此外,每个规则匹配线程725被转发给单个RME518。因此,调度器520在一个时刻向具体的RME514转发一个规则匹配线程725。
[0084]在图9A中,搜索或存储器簇320具有四个RME,例如,RMEO、RMEl、RME2和RME3,并且调度器520具有四个调度队列750a-d。在时钟周期N,调度队列750a、750b、750c和750d分别向RMEO、RMEU RME2和RME3转发规则匹配线程725。例如,在调度队列750a中,来自与请求器Rl相关联的子组“对3”的规则匹配线程725向RMEO被转发。在调度队列750b中,来自与请求器RO相关联的子组“对I”的规则匹配线程725向RMEl被转发。在调度队列750c中,来自与请求器Rl相关联的子组“对I”的规则匹配线程725向RME2被转发,以及在调度队列750d中,来自与请求器R2相关联的子组“对I”的规则匹配线程725向RME3被转发。假定在时钟周期N中,分别对应于请求器Rl、R0、Rl和R2的子组“对3”、“对I”、“对I”和“对I”中的每个具有尚未处理的单个规则匹配线程725。在时钟周期N+1,分配给调度队列750a-d的RME被轮换。也就是说,调度队列750a、750b、750c和750d现在分别向RME3、RMEO, RMEl和RME2转发规则匹配线程725。在相同的时钟周期,来自与请求器R2相关联的子组“对2”的规则匹配线程725从调度队列750a向RME3转发。此外,来自与请求器Rl相关联的子组“对O”的规则匹配线程725从调度队列750b向RMEO转发。
[0085]根据图9B和9C,仅有三个RME,例如,RME0.RME1和RME2,而调度器520具有四个调度队列,例如,750a-d。在每个时钟周期,假定最多单个规则匹配线程725可以向给定的RME518发送,调度队列750a-d的一个是失速的,并且不调度或转发任何规则匹配线程725。假定在时钟周期N,分别对应于请求器R1、R0、R1和R2的子组“对3”、“对1”、“对I”和“对I”中的每个具有单个尚未处理的规则匹配线程725。在相同的时钟周期N,分别对应于请求器RUROJP Rl的子组“对3”、“对I”和“对I”中的单个规则匹配线程725被处理,并且分别向RMEO、RMEl和RME2转发。由于在时钟周期N相应的调度队列750d处于失速状态,在对应于请求器R2的子组“对I”中的单个规则匹配线程725不被处理。
[0086]在时钟周期N+1,RME0、RME1、RME2的分配和对调度队列750a_d的失速状态910被更新。特别地,在时钟周期N+1,调度队列750a、750b、750c和750d被分别分配给失速状态910、RMEO, RMEl和RME2。在这个阶段,分别对应于请求器R2、Rl和R2的子组“对2”、“对O”和“对O”中的每个包括两个规则匹配线程725,而对应于请求器R2的子组“对I”包括单个规则匹配线程725时。在相同的时钟周期N+1,来自分别对应于请求器R1、R2和R2的子组“对O”、“对O”和“对I ”的规则匹配线程725被调度,并且分别向RMEO、RMEl和RME2发送。调度队列750a在时钟周期N+1是失速的。像这样,没有规则匹配线程725从对应于请求器R2的子组“对2”被发送。在如图9C所示的时钟周期N+2和N+3,将RME0、RME1、RME2和失速状态910映射到调度队列750a-d的分配模式被转移或轮换。
[0087]通过改变调度队列(例如750a、750b、750c或750d)被分配给的RME518,例如,在每个时钟周期中,调度器520保证穿过搜索簇320的不同RME518的平衡地处理的负载。对调度队列(例如,750a-d)的可用RME518的动态分配允许每个RME518从不同的子组接收规则匹配线程725,并且因此具有不同的优先级。此外,如果RME被禁用,或RME518的数量小于调度队列(例如,750a-d)的数量,失速时间被分布于不同的调度队列之间。网络搜索处理器202的软件可以在任何时间点禁用具体的RME518。在这种情况下,RME518向调度队列(例如,750a-d)的静态分配导致调度队列被分配给失速可能很长一段时间的被禁用的RME。像这样,调度器520可以不接收来自具有处于失速调度队列中的线程的请求器的任何更多的规则匹配线程725。
[0088]本领域中的技术人员应理解,在相应的调度队列(例如,750a_d)中RME518向规则匹配线程725的动态分配可以以不同的方式来实施。例如,在RME518和调度队列(例如,750a-d)之间的动态映射可以根据随机模式而不是轮换或转移模式来完成。此外,映射模式的更新可以每个时钟周期或每多个时钟周期被执行一次。
[0089]图10是图示根据至少一个示例实施例的调度器或仲裁器模块520的架构1000的方框图。调度器520包括多个调度队列,例如,750a-d。调度队列(例如,750a_d)可以包括诸如FIFO缓存器的存储器缓存器。调度队列(例如,750a-d)被耦合至开关逻辑,开关逻辑被配置为将规则匹配线程725从调度队列(例如,750a-d)指向RME518。开关逻辑可以包括,例如,多个复用器或选择器。每个选择器或复用器被配置为选择被指向特定的RME518的规则匹配线程725。
[0090]调度器520还包括调度管理器1003,被配置为控制调度队列(例如,750a_d)向RME518的分配。调度管理器1003被配置为保持跟踪在每个RME518处可用的存储器容量。特别地,调度管理器1003被配置为在每个RME518处存储当前数量的可用信用,接收在来自RME518的响应635中的信用增加更新(例如,lOOla-c),接收涉及被发送给RME518的规则匹配线程的信用衰减更新(例如,1002a_c),以及基于接收到的更新(例如,lOOla-c和1002a-c)调整当前数量的可用信用。基于与RME518相关联的所调整的当前可用的信用,调度管理器向调度队列(例如,750a-d)发送可用信用计数的指示(例如,1004a-d)。由于存在四个调度队列(例如,750a-d)和三个RME518,信号104a_d中的一个信号指示O信用或失速状态910。复用器或选择器1005a-d被配置为将信用计数(例如,1004a-d)指向调度队列(例如,750a-d)。每个信用计数(例如,1004a、1004b、1004c、1004d)被提交给单个调度队列。
[0091]开关逻辑1006将从四个调度队列(750a_d)中选择的请求指向三个RME518。只有一个调度队列能够在任何给定的时间向具体的RME518发送规则匹配线程725。每个RME的信用计数指示每个RME接收和处理规则匹配线程的能力以及所预期的处理延时。越少的信用指示越高的被期待的处理延时。从调度队列(例如,750a-d)发送的规则匹配线程725衰减每个RME的信用计数。衰减是由要发送给相关联的RME518的规则块的尺寸来确定。
[0092]当相应的规则匹配线程的处理被完成时,信用被从RME518返回,并且信用计数被增加。信用可以同时被增加或减少,导致净值被应用于当前的信用计数。如果被读取的规则块420的尺寸超过针对RME518的可用信用,调度队列将不尝试发送请求。调度队列将失速直到它能发送待定的规则匹配线程725。在这个时间周期期间,其他的调度队列可以发送一个或多个规则匹配线程725。失速阻止具有大的规则块420的规则匹配线程725被不断地延迟,有利于发送具有更小尺寸的规则块420的规则匹配线程。调度队列通知RWE516什么时候相应的规则匹配线程725向RME518发送。
[0093]开关逻辑1006由控制单元来控制。在开关逻辑1006中的选择线,确定RME518向调度队列(例如,750a-d)的分配,根据判决函数被改变。例如,对RME配对的调度队列每个时钟周期被轮换,如果下面的条件被满足:(1)至少一个调度队列具有将被转发的规则匹配线程,以及(2)每个调度队列满足至少一个以下条件:Ca)调度队列没有待定的规则匹配线程750,或(b)调度队列自从上一次轮换已向它分配的RME518发送至少一个请求,或(c)调度队列被分配给的RME518已通过软件配置被禁用,或(d)调度队列没有分配给它的RME518。
[0094]控制单元控制,例如,开关逻辑和选择器或复用器1005a_d。控制单元还可以执行其它功能,诸如基于在相应的RME518处所期待的处理时间以及行进和排队时间,确定针对规则匹配线程的所期待的处理延时。在RME518处的处理时间可以基于通过RME518没有返回给调度器520的信用来确定。行进和排队时间可以基于例如已由调度器520发送给RME518并且还没有接收到针对其的响应635的所有规则匹配线程来确定。
[0095]本领域的技术人员应理解,规则匹配线程725可以被考虑成当BWE514接收相应的桶条目时开始,当BWE514向RWE516发送相应的桶条目的束时开始,当RWE516从BWE514接收的相应的束时开始,或当RWE516向调度器发送相应的束时开始。由调度器发送规则块请求是规则匹配线程725的部分,并且可以被理解为向调度器520转发规则匹配线程。
[0096]虽然本发明参照其示例实施例已被具体地示出和描述,本领域的技术人员将理解,不背离由所附权利要求涵盖的本发明的范围,可以在其中进行形式和细节上的各种改变。
【权利要求】
1.一种调度通过网络搜索处理器中的多个启动引擎所启动的规则匹配线程的方法,用于通过所述网络搜索处理器的多个匹配引擎进行处理,所述方法包括: 通过调度器确定规则匹配线程束组,每个束由独立的启动引擎启动; 将在所述束组的每个束中的规则匹配线程分布成多个规则匹配线程的子组; 将与所述束组的每个束相关联的规则匹配线程的所述子组分配给多个调度队列;以及根据基于与相应的规则匹配线程束相关联的优先级的顺序将被分配给每个调度队列的规则匹配线程向规则匹配引擎发送。
2.根据权利要求1所述的方法,进一步包括在调度器从所述多个启动引擎的一个或多个启动引擎接收对应于一个或多个规则匹配线程束的数据。
3.根据权利要求2所述的方法,其中在从给定的启动引擎接收到对应于第一束的数据之后,没有对应于至少一个其他束的其他数据从所述给定的启动引擎被接收,直到将在所述第一束中的所有规则匹配线程发送给规则匹配引擎。
4.根据权利要求1所述的方法,进一步包括在发送与所述给定的束相关联的至少一个规则匹配线程之后,向与所述给定的束相关联的启动引擎发送通知。
5.根据权利要求1所述的方法,其中所确定的所述束组是在所述束组被确定的时候在所述调度器处可用的所述规则匹配线程的所述束。
6.根据权利要 求1所述的方法,其中向所述规则匹配引擎发送所述规则匹配线程包括向所述网络搜索处理器的存储器部件发送针对相应的数据块的请求,所述相应的数据块被取回并且向所述规则匹配引擎转发。
7.根据权利要求1所述的方法,其中所述束组是第一束组,并且所述方法进一步包括在向所述规则匹配引擎发送在所述第一束组中的所有所述规则匹配线程之后,确定第二束组。
8.根据权利要求1所述的方法,其中在子组内,所述顺序是进一步基于被分配给相应束的规则匹配线程的优先级。
9.根据权利要求1所述的方法,其中向规则匹配引擎发送规则匹配线程包括只有在相应的预计的处理延时不超过预先定义的阈值时发送所述规则匹配线程。
10.根据权利要求9所述的方法,其中所述预计的处理延时包括在所述规则匹配引擎处所述规则匹配线程的处理时间以及所述规则匹配线程的预计的行进和排队时间,所述处理时间依赖于与所述相应的规则匹配线程相关联的数据块的尺寸,所述行进和排队时间依赖于与被发送给所述规则匹配引擎的规则匹配线程相关联的数据块的累积尺寸。
11.一种网络搜索处理器,包括: 多个启动引擎,被配置为启动规则匹配线程束; 多个规则匹配引擎,被配置为处理所述规则匹配线程束; 调度引擎,被配置为: 确定规则匹配线程束组,每个束由独立的处理引擎启动; 将在所述束组的每个束中的规则匹配线程分布成多个规则匹配线程的子组; 将与每个束相关联的规则匹配线程的所述子组分配给多个调度队列;以及根据基于与相应的规则匹配线程束相关联的优先级的顺序将被分配给每个调度队列的规则匹配线程向规则匹配引擎发送。
12.根据权利要求11所述的网络搜索处理器,其中所述调度引擎被配置为进一步从所述多个启动引擎的一个或多个启动引擎接收对应于一个或多个规则匹配线程束的数据。
13.根据权利要求12所述的网络搜索处理器,其中在从给定的启动引擎接收到对应于第一束的数据之后,没有对应于至少一个其他束的其他数据从所述给定的启动引擎被接收,直到将在所述第一束中的所有规则匹配线程发送给规则匹配引擎。
14.根据权利要求11所述的网络搜索处理器,其中所述调度引擎被配置为在发送与所述给定的束相关联的至少一个规则匹配线程之后,向与给定的束相关联的启动引擎发送通知。
15.根据权利要求11所述的网络搜索处理器,其中所确定的所述束组是在所述束组被确定的时候在所述调度引擎处可用的所述规则匹配线程的所述束。
16.根据权利要求11所述的网络搜索处理器,其中在向规则匹配引擎发送规则匹配线程中,所述调度引擎被配置为向所述网络搜索处理器的存储器部件发送针对相应的数据块的请求,所述相应的数据块被取回并且向所述规则匹配引擎转发。
17.根据权利要求11所述的网络搜索处理器,其中所述束组是第一束组,并且所述调度引擎被配置为进一步在向所述规则匹配引擎发送在所述第一束组中的所有所述规则匹配线程之后,确定第二束组。
18.根据权利要求11所述的网络搜索处理器,其中在子组内,所述顺序是进一步基于被分配给相应束的规则匹配线程的优先级。
19.根据权利要 求11所述的网络搜索处理器,其中在向所述规则匹配引擎发送规则匹配线程中,所述调度引擎被配置为只有在相应的预计的处理延时不超过预先定义的阈值时发送所述规则匹配线程。
20.根据权利要求19所述的网络搜索处理器,其中所述预计的处理延时是所述规则匹配线程的处理时间和所述规则匹配线程的预计的行进和排队时间的总和,所述处理时间依赖于与所述相应的规则匹配线程相关联的数据块的尺寸,所述行进和排队时间依赖于与被发送给所述规则匹配引擎的规则匹配线程相关联的数据块的累积尺寸。
【文档编号】G06F17/30GK104050041SQ201410097575
【公开日】2014年9月17日 申请日期:2014年3月14日 优先权日:2013年3月15日
【发明者】J·A·庞伯恩, N·I·安萨里, G·A·鲍查德, R·戈亚尔 申请人:凯为公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1