混合通配符匹配表的制作方法

文档序号:13744388阅读:160来源:国知局
本发明涉及通配符匹配。更具体地,本发明涉及混合通配符匹配表。
背景技术
:网络设备使用通配符匹配将数据包分为多个流。三元内容可寻址存储器(TCAM)由于其速度和简单性而传统上用于执行通配符匹配。然而,高成本和高功耗是基于TCAM的通配符匹配引擎的主要缺点。技术实现要素:本发明的实施例的目的在于通配符匹配解决方案,其在混合解决方案中使用静态随机存取存储器(SRAM)和三元内容可寻址存储器(TCAM)的组合。具体地,通配符匹配解决方案使用用于查找的多个SRAM池以及用于未解决的散列冲突的溢出TCAM池。在一个方面中,提供了一种网络开关。该网络开关包括:多个SRAM池,存储可散列条目;至少一个溢出TCAM池,存储不可散列条目;以及请求接口控制逻辑,将搜索关键字(key)分配给一个或多个有效池并返回结果数据。在一些实施例中,多个SRAM池中的每一个均包括用于平行散列的16个SRAM瓦片(tile),并且至少一个TCAM池包括多个TCAM数据库作为基本匹配单元。在一些实施例中,该网络开关还包括可被多个SRAM池、至少一个溢出TCAM池和请求接口控制逻辑访问的混合通配符匹配(WCM)表。在一些实施例中,混合WCM包括用于多个SRAM池、至少一个溢出TCAM池和请求接口控制逻辑的配置。在一些实施例中,该配置包括用于多个SRAM池中的每一个SRAM池的配置、用于至少一个溢出TCAM中的每一个的配置以及用于请求接口控制逻辑的配置。在一些实施例中,该配置识别多个SRAM池和至少一个溢出TCAM池中的哪些是一个或多个有效池。在一些实施例中,进行仲裁以确定一个或多个有效池中的哪一个具有返回结果数据的优先级。在一些实施例中,至少一个溢出TCAM池被组织到八个数据库中,其中八个数据库中的每一个均包括六个TCAM瓦片并且伴随有用于控制数据返回的专用SRAM。在一些实施例中,六个TCAM瓦片中的每一个均是64位宽和512个条目深。在一些实施例中,多个SRAM池中的每一个均包括八对SRAM瓦片,八对SRAM瓦片中的两对存储控制数据且八对SRAM瓦片中的六对存储条目。在一些实施例中,16个SRAM瓦片中的每一个均是256位宽且2048条线深。在另一方面中,提供了一种实施网络开关的方法,网络开关包括多个SRAM池和至少一个溢出TCAM池。该方法包括:接收将被插入到一个池中的条目;确定条目是否可散列;基于条目可散列的确定,将条目插入到多个SRAM池中的一个中;以及基于条目不可散列的确定,将条目插入到溢出TCAM池中。在一些实施例中,确定条目是否可散列包括将每个key_map与条目进行比较。在一些实施例中,多个SRAM池中的每一个均包括16个SRAM瓦片,并且16个SRAM瓦片中的每一个均与key_map相关联。在一些实施例中,每个key_map均掩蔽参与散列的条目的位。在一些实施例中,当条目中参与散列的所有位均不是通配符时,该条目是可散列的。在一些实施例中,条目被插入到多个SRAM池中的一个SRAM池的两个SRAM瓦片的一个中。在一些实施例中,将条目插入到多个SRAM池中的一个中包括再散列以解决散列冲突。在一些实施例中,再散列实施深度第一插入算法。可选地,在一些实施例中,再散列实施深度第一插入算法。在一些实施例中,条目作为图案被插入到一个池中。在又一方面中,提供了一种实施网络开关的方法,网络开关包括多个SRAM池和至少一个溢出TCAM池。该方法包括:在请求接口控制逻辑处接收搜索关键字;基于混合通配符匹配(WCM)表,将搜索关键字分配给一个或多个有效池;当一个或多个有效池包括溢出TCAM池时,TCAM池返回包括数据和优先级信息的第一组结果;当一个或多个有效池包括多个SRAM池中的至少一个时,通过每个有效SRAM池返回第二组结果,其中第二组结果包括数据和优先级信息;基于优先级执行由一个或多个有效池返回的所有组的结果的第二层级仲裁;以及基于第二层级仲裁,输出来自具有最高优先级的组的数据。在一些实施例中,混合WCM表的配置表示哪些池是一个或多个有效池。在一些实施例中,同时执行一个或多个有效池中的查找。在一些实施例中,该方法还包括:对于每个有效SRAM池来说,基于优先级执行由对应有效SRAM池的每个SRAM瓦片返回的所有组的结果的第一层级仲裁,以确定第二组结果。在一些实施例中,至少一个溢出TCAM池被组织到八个数据库中,八个数据库中的每一个均包括六个TCAM瓦片并且伴随有用于控制数据返回的专用SRAM。在一些实施例中,多个SRAM池中的每一个均包括八对SRAM瓦片,八对SRAM瓦片中的两对存储控制数据,以及八对SRAM瓦片中的六对存储条目。在又一方面中,提供了一种用于网络开关的存储结构。该存储结构包括:多个SRAM池,存储可散列条目;以及至少一个溢出TCAM池,存储不可散列条目。存储结构通常与请求接口控制逻辑交互,请求接口控制逻辑被配置为接收在网络开关处到达的数据包的搜索关键字并输出结果数据。在一些实施例中,请求接口控制逻辑基于可被请求接口控制逻辑访问的混合通配符匹配(WCM)表的配置将搜索关键字分配给一个或多个有效池。该配置识别多个SRAM池和至少一个溢出TCAM池中的哪一些是一个或多个有效池。在一些实施例中,进行最后的仲裁以确定一个或多个有效池中的哪一个具有返回结果数据的优先级。在一些实施例中,多个SRAM池中的每一个均包括多个SRAM瓦片,多个SRAM瓦片被逻辑组织以表示不同的逻辑表宽度。在一些实施例中,多个SRAM瓦片包括成对组织的16个SRAM瓦片,其中八对SRAM瓦片中的两对存储控制数据以及八对SRAM瓦片中的六对存储条目。在一些实施例中,多个SRAM池中的每一个均被配置为执行由对应SRAM池的每个SRAM瓦片返回的所有组的结果的初始仲裁并且基于初始仲裁返回第一数据和用于第一数据的优先级信息。每个SRAM瓦片均与key_map相关联。在一些实施例中,当条目中参与散列的所有位均不是通配符时,该条目是可散列的。key_map确定条目中的哪些位参与散列。在一些实施例中,至少一个溢出TCAM池被组织成多个数据库。多个数据库中的每一个均包括多个TCAM瓦片并且伴随有专用SRAM。至少一个溢出TCAM池被配置为返回第二数据和用于第二数据的优先级信息。在一些实施例中,多个数据库包括八个数据库,并且多个TCAM瓦片包括六个TCAM瓦片。在一些实施例中,多个TCAM瓦片被逻辑组织成与不同的关键字大小相对应。在一些实施例中,搜索关键字是数据包的一个或多个报头字段的组合。在一些实施例中,至少一个溢出TCAM还存储由于散列冲突而不能插入到多个SRAM池中的条目。附图说明将从以下附图所示本发明的示例性实施例的更具体的描述中明确前述内容,其中类似的参考标在不同附图中表示相同的部分。附图不需要按比例绘制,重点放在示出本发明的实施例。图1示出了示例性5维数据包匹配规则。图2示出了基于TCAM的解决方案。图3示出了根据一些实施例的通配符匹配解决方案的示例性实施方式。图4示出了根据一些实施例的TCAM池的示例性示图。图5示出了根据一些实施例的SRAM池的示例性示图。图6示出了根据一些实施例的用于解决散列冲突的再散列的示例性场景。图7示出了根据一些实施例的条目插入的方法。图8示出了根据一些实施例的表查找的示例性流程。图9示出了根据一些实施例的表查找的方法。具体实施方式在以下描述中,为了说明的目的阐述了多个细节。然而,本领域技术人员应该意识到,在不使用这些具体细节的情况下也可以实践本发明。因此,本发明不限于所示实施例而是扩展到符合本文描述的原理和特征的范围。图1示出了示例性5维数据包匹配规则100。五维是指五个报头字段:源IP字段(表示为src.IP)、目的地IP字段(表示为dest.IP)、源端口字段(表示为src.port)、目的地端口字段(表示为dest.port)和协议字段。规则100包括作为值的组合的匹配关键字,一个对应于每一个报头字段。规则100还包括控制数据,其表示当输入的数据包与匹配关键字匹配时进行的相应动作。规则中的每个字段被允许不同类型的匹配,包括精确匹配、前缀匹配和范围匹配。在具有先前值的字段中使用通配符(*)表示前缀匹配,而在字段中单独使用通配符表示任何任意值均可以匹配。在图1中,源IP字段和目的地IP字段均包括作为前缀规格的值,源端口字段包括作为通配符规格的值,目的地端口字段包括作为范围规格的值,以及协议字段包括作为精确匹配规格的值。与规则100的匹配关键字相关联的对应动作是终止(drop),意味着如果到达网络设备(诸如网络开关)的数据包与规则100的规格或匹配关键字相匹配,则数据包将通过网络开关终止。尽管规则100的控制数据包括单个动作,但规则的控制数据可以包括多个动作。如上所述,现有技术的网络设备实施主要基于三元内容可寻址存储器(TCAM)的解决方案。在这些传统的解决方案中,如图2所示,关键字被索引到TCAM205中,其执行TCAM205中的所有条目的并行匹配并返回地址。然后,返回的地址被索引到伴随的SRAM210,其提供诸如控制数据(例如,终止)的最终数据。TCAM205具有内置优先权编码方案,表示第一匹配的条目是最终匹配的条目并且被索引到SRAM210中。换句话说,如果TCAM205中的多个条目与关键字匹配,则TCAM205返回TCAM205中的第一匹配条目的地址。如此,优先权基于TCAM205中条目的排序是固有的。在图2中,关键字与TCAM205中的三个条目匹配。第一匹配条目(表示为“匹配图案0”)的地址被返回并索引到SRAM210中,其返回控制数据(表示为“匹配数据”)。尽管基于TCAM的解决方案相对较快地实施,但这些解决方案具有高成本和功耗。此外,这些解决方案不足以处理范围规格并插入新条目。本发明的实施例的目的在于提供通配符匹配解决方案,其在混合解决方案中使用静态随机存取存储器(SRAM)和三元内容可寻址存储器(TCAM)的组合。具体地,通配符匹配解决方案使用用于查找的多个SRAM池和用于未解决的散列冲突的溢出TCAM池。通配符匹配解决方案基于发明人对前缀规格和范围规格进行的观察。参照图1,观察在于每个维度的最高有效位非常可能是精确匹配,因此是可散列的(hashable)。在一些实施例中,多个SRAM池被配置为存储可散列的条目,以及溢出TCAM池被配置为存储不可散列的条目以及由于散列冲突而不能插入到多个SRAM池中的条目。以下进一步讨论条目的可散列性。图3示出了根据一些实施例的通配符匹配解决方案的示例性实施方式300。实施方式300包括请求接口控制逻辑305、多个SRAM池310和至少一个溢出TCAM池315。在一些实施例中,每个SRAM池310均包括用于平行散列的16个SRAM瓦片,以及TCAM池315包括多个TCAM数据库作为基础匹配单元。以下讨论SRAM池310和TCAM池315的细节。尽管图3示出了单个溢出TCAM池,但可以预期多个溢出TCAM池。通配符匹配解决方案的实施方式300通常在诸如网络开关的网络设备上执行。首先,在高层级处,在请求接口控制逻辑305处接收搜索请求(例如,搜索关键字)。在接收到请求时,控制逻辑305将请求数据分派至有效的一个或多个池,其中进行局部匹配。在每个有效池执行局部匹配之后,进行下一层级仲裁以确定哪个有效池具有返回最终数据(例如,控制数据)的优先权。请求接口控制逻辑305或网络设备中的另一逻辑执行仲裁。表1列出了混合通配符匹配(WMC)表的示例性结构。混合WMC表驻留在一个或多个SRAM池310和溢出TCAM池315中的任何一个中或组合中。可选地或附加地,混合WMC表驻留在网络设备的存储器的另一部分中。表1混合WCM表由图3的请求接口控制逻辑305、SRAM池310和溢出TCAM池315访问,并且为每个单元305-315提供对应的配置或规格。例如,混合WCM表包括关于是否访问溢出TCAM池、访问哪个SRAM池、进行比较的关键字的大小是多少以及返回的动作的大小是多少的用于请求接口控制逻辑305的配置。混合WCM表还包括用于每个溢出TCAM池和用于每个SRAM池的配置。在一些实施例中,混合WCM表自动更新、或者经由软件手动更新、或者两者皆可。图4示出了根据一些实施例的TCAM池400的示例性示图。在一些实施例中,图3的TCAM池315类似地被配置为TCAM池400。TCAM池400被组织进入八个不同的数据库。数据库具有六个TCAM瓦片,其可被配置进入具有不同关键字大小的三个不同模式中的一个模式。在一些实施例中,TCAM瓦片是64位宽512条目深,但是其他大小也是可以的。然而,基于该大小,在一个模式(模式A)中,六个TCAM瓦片可以被布置为128位宽乘以1.5k条目深。在另一模式(模式B)中,六个TCAM瓦片可以被布置为192位宽乘以1k条目深。在又一模式(模式C)中,六个TCAM瓦片可以被布置为384位宽乘以512条目深。对于每个数据库,存在附随的专用SRAM用于数据返回。专用SRAM可以是SRAM池的一部分或者与SRAM池分离。在一些实施例中,单个专用SRAM用于所有八个数据库。图5示出了根据一些实施例的SRAM池500的示例性示图。在一些实施例中,图3的每个SRAM池310均类似地配置为SRAM池500。SRAM池500包括多个SRAM瓦片。例如,SRAM池500包括16个SRAM瓦片。这些多个物理存储瓦片可以被逻辑地组织以代表不同的逻辑表宽度。在一些实施例中,两个物理存储瓦片被分组以存储一组逻辑数据。同样,SRAM池500包括八对SRAM瓦片。随着条目插入和表查找的讨论,用于配对的机制将变得更加显而易见。在一些实施例中,这些多个SRAM瓦片的逻辑组织可被重新配置。在一些实施例中,每个SRAM瓦片是256位宽2048线深,但是其他大小也是可以的。SRAM中的数据被存储为SRAM中的各自的逻辑条目。基于应用,条目可以具有不同的宽度。在一些实施例中,逻辑条目可以是256位宽,其中SRAM瓦片的每行均是条目。逻辑条目还可以是512位宽,在这种情况下,SRAM瓦片的一行(256位宽)与相应对(512位宽)中的另一SRAM瓦片(256位宽)的行联结(concatenate)。如以下进一步讨论的,SRAM瓦片中的每个条目均存储图案。假设SRAM池500是有效池,其将通过混合WCM表中的sram_pool_bitmap字段来表示。一旦关键字到达SRAM池500中每对瓦片处,就向关键字应用对应的散列函数。散列函数将关键字与较窄的索引或地址(其用于寻址SRAM瓦片以检索条目)匹配。在一些实施例中,如果表条目(图案)是256位宽,则整个条目被存储在一个SRAM线中(例如,每个瓦片是一个路径(way))。如果表条目是512位宽,则整个条目横跨两个SRAM瓦片扩展(例如,每两个瓦片由一个路径组成)。这与输入关键字宽度无关。如此,当搜索关键字被传送至SRAM池500时,每个路径向搜索关键字应用散列掩码和散列函数以查找条目。在一些实施例中,SRAM池500可以对于窄条目进行最大16路径的散列。在一些实施例中,出于硬件成本的目的,控制数据被存储在两对SRAM瓦片中,并且条目被存储在六对SRAM瓦片中。如此,在这些实施例中,SRAM池500对于256位以下的关键字来说限于12路径散列以及对于512位以下的关键字来说限于6路径散列。表2列出了SRAM条目表的示例性条目格式。SRAM条目表示出了对三种不同的关键字大小或格式的支持:128位关键字、192位关键字和384位关键字。128位关键字可以适合两种类型的256位条目中的一种。192位关键字适合512位条目。384位关键字条目适合512位条目。表2如SRAM条目表所示,对每个条目提供明确的优先权。如上所述,优先权基于条目的位置在TCAM内暗示。在混合SRAM和TCAM方案中,每个TCAM条目还要求利用潜在的SRAM条目匹配仲裁的明确优先权。优先权必须在SRAM条目表中指定,因为优先权与其寻址分离。条目的图案被编码。SRAM条目表还提供了范围规格以及是否为每个条目设置了联结。针对一些格式,SRAM条目表提供表示值字段的哪些字节或位为“不关心”或通配符的掩码(mask)。在一些实施例中,SRAM条目表经由软件自动更新或者手动更新。为了表示N位图案,作为二进制值的通配符要求N×log23或1.6N位。例如,5位图案的通配符为8位二进制。三个系数值用于表示0值、1值和通配符。具体地,0的系数值表示0值,1的系数值表示1值,以及2的系数值表示通配符。例如,编码5位图案5’b01XXX(X为通配符)是8’d53的8位二进制值,其等效于8’h35。具体地,8位二进制值是2×30(用于5位图案中的第0位)、2×31(用于5位图案中的第1位)、2×32(用于5位图案中的第2位)、1×33(用于5位图案中的第3位)和0×34(用于5位图案中的第4位)的总和。解码的8位二进制值8’d53是5’b01XXX的5位图案。具体地,用于5位图案的位的系数值为:(53/30)%3=2(或者X用于5位图案中的第0位)、(53/31)%3=2(或者X用于5位图案中的第1位)、(53/32)%3=2(或者X用于5位图案中的第2位)、(53/33)%3=1(或者1用于5位图案中的第3位)和(53/34)%3=0(或者0用于5位图案中的第4位)。这些计算使用整数除法。返回参照表2,应该注意到,对于16位或32位范围规格,如果值包含X(例如,“不关心”或通配符),则对应的dbyte_up_bound字段无效。类似地,如果dbyte_up_bound小于对应值,则dbyte_up_bound字段无效。条目均作为图案插入到SRAM池和TCAM池中。在一些实施例中,条目是被配置到池中的软件。返回参照表1,每个SRAM路径(SRAM瓦片或对,取决于条目宽度)与key_map相关联,其表示SRAM路径是否针对将被插入的条目可散列。key_map掩蔽参与散列函数的条目的位。如果SRAM路径可散列,则条目被插入到SRAM路径中,其中图案的任何x位被掩蔽不进行散列。例如,插入{128.*.*.*,162.192.*.*,16’d456,16’d31002,8’h6,24’h0}的128位条目。假设SRAM的key_map为32’hC0C0-00FF。基于这种假设,该SRAM路径对于128位条目来说可散列。具体地,key_map中的每一位都掩蔽来自条目(关键字)的对应四位。十六进制的值C是二进制中的1100,并且十六进制的值0是二进制中的0000。这意味着图案中的前8位参与散列,接下来的24位不参与散列,接下来的8位参与散列,接下来的56位不参与散列,以及最后的32位参与散列。在这种情况下,由于条目中参与散列的所有位是精确的数值,所以该SRAM路径是可散列的。然而,假设SRAM路径的key_map是32’hF0C0_00FF。基于这种假设,该SRAM路径对于128位条目来说不可散列。十六进制的值F是二进制值中的1111。这意味着图案中的前16位参与散列,接下来的16位不参与散列,接下来的8位参与散列,接下来的56位不参与散列,以及最后的32位参与散列。在这种情况下,由于所有前16位需要参与散列但是18位仅前8位是精确的数值并且剩余的8位是通配符,所以该SRAM路径是不可散列的。如果没有SRAM路径可散列,则条目被插入到溢出TCAM中或者可选地,x的每一位可以扩展成多个图案,使得它们可散列。继续最后一种假设,由于8位错过散列,所以图案可以扩展成28或256个不同的图案,每一个图案均对应于256个独立的数值。如此,所有这些不同的图案变得可散列。图6示出了根据实施例的用于解决散列冲突的再散列的示例性情景600。在一些实施例中,使用路径和跳(hop)来执行再散列。情景600示出了2路径散列。一旦新条目或图案进入,就针对每个路径掩蔽和散列条目。每个掩蔽和散列单元指向其对应SRAM瓦片中的位置,如图6中的黑色虚线所示。如果一个或两个位置为空,则图案被插入到一个位置中。在一些实施例中,如果两个位置均为空,则向下路径(例如,way_0)(其通常与较小数值的SRAM瓦片相关联)给出插入的偏好(preference)。当一个或多个位置均占用时,发生散列冲突,诸如情景600。在图6中,由掩蔽和散列单元指向的位置被“条目0”和“条目1”占用。在散列冲突中,条目被“踢出”它们的位置到不同的位置直到位置为空。在一些实施例中,当两个位置均被占用时,新条目总是经由下路径(例如,way_0)插入或者通过一个路径任意插入。在图6中,新条目经由way_0插入到“条目0”的位置。假设两个路径对于“条目0”来说都是可散列的,则经由另一个路径(way_1)来再散列“条目0”。“条目0”被插入到由“条目2”占用的位置。“条目0”插入到其新位置被称为跳-1。进一步假设两个路径对于“条目2”来说均可散列,则“条目2”经由另一路径(例如,way_0)再散列。“条目2”被插入到未被占用的位置。将“条目2”插入到其新位置被称为跳-2。在这种情况下,使用两跳解决了散列冲突。然而,在其他情况下,使用多于两跳来解决散列冲突。再散列可实施深度第一插入算法(所有瓦片的深度),诸如图6所示。可选地,再散列可以实施宽度第一插入算法(每个瓦片的宽度)。可选地,再散列可以基于D-left散列。如果通过再散列不能解决散列冲突,则对应条目被插入到至少一个溢出TCAM池的一个中。图7示出了根据一些实施例的条目插入的方法700。条目插入的方法700通常在包括多个SRAM池和至少一个溢出TCAM池的网络开关上实施。在步骤705中,接收将被插入到一个池中的条目。在步骤710中,确定条目是否可散列。在一些实施例中,步骤710中的确定包括将每个key_map与条目进行比较。如上所述,多个SRAM池中的每一个均包括16个SRAM瓦片。16个SRAM瓦片中的每一个均与key_map相关联。每个key_map掩蔽参与散列的条目的位。当条目中参与散列的所有位均是精确的数值时,条目可散列。在步骤715中,基于条目可散列的确定,条目被插入到多个SRAM池中的一个中。在一些实施例中,条目被插入到多个SRAM池中的一个SRAM池的两个SRAM瓦片中的一个中。在一些实施例中,将条目插入到多个SRAM池的一个中包括再散列以解决散列冲突。再散列可实施深度第一插入算法或宽度第一插入算法。在步骤720中,基于条目不可散列的确定,条目被插入到溢出TCAM池中。条目作为图案插入到一个池中。现在,假设在128位条目{128.*.*.*,162.192.*.*,16’d456,16’d31002,8’h6,24’h0}插入到SRAM池0中之后,图8示出了根据一些实施例的表查找800的示例性流程。在步骤805中,搜索关键字{128.1.2.3,1.62.192.1.2,456,31002,8’h6}达到图3的请求接口控制逻辑305。在步骤810中,基于混合WCM表的结构,请求接口控制逻辑305相应地分配搜索关键字以激活池。在该示例中,tcam_pool_valid被设置为1,并且sram_pool_bitmap为4’b0011,其对应于SRAM池0和SRAM池1。如此,溢出TCAM池、SRAM池0和SRAM池1均是活跃池。在步骤815中,在SRAM池0处接收搜索关键字。在步骤820中,在SRSM处1处接收搜索关键字。在步骤825中,在溢出TCAM处接收搜索关键字。基本同时发生步骤815-825。通常,图9中的查找步骤同时或并行发生。在步骤825中,溢出TCAM中的查找类似于传统TCAM。在步骤855中,溢出TCAM向请求接口控制逻辑305返回控制数据和优先级。SRAM池0对应于2路径散列。每一个路径均与key_map相关联,key_map被应用于掩蔽搜索(输入)关键字的对应位。在图8中,way_0具有key_map32’hC0C0_00FF,以及way_1具有key_map32’hF0C0_00FF。way_0的key_map和搜索关键字被应用于散列函数,其在步骤830中返回{8’d128,24’d0,8’d162,56’d0,8’d6,24’h0}的hash_key。类似地,way_1的key_map和搜索关键字被应用于散列函数,其在步骤835中返回{8’d128,8’d1,16’d0,8’d162,88’d0}的hash_key。步骤830中的hash_key对应于hash_index‘d123,其在步骤840中的SRAM池0的SRAM瓦片中的具体条目。条目与搜索关键字进行比较,并且在步骤845中返回结果。在步骤850中返回来自SRAM池0和1的结果,其中执行优先级仲裁并且此后从具有最高优先级且位于剩余SRAM瓦片中的对应条目中读出控制数据。在该示例中,不通过SRAM池0返回任何数据,在地址‘d123处读出路径1和控制数据,因为对应条目具有最高优先级。在步骤860中返回来自步骤850和步骤855的结果,其中执行优先级仲裁和返回结果数据。在该示例中,不通过SRAM池1返回数据。图9示出了根据一些实施例的表查找的方法900。表查找的方法900通常在包括多个SRAM池和至少一个溢出TCAM池的网络开关上实施。在步骤905中,在请求接口控制逻辑处接收搜索关键字。网络开关通常包括请求接口控制逻辑。在步骤910中,基于混合通配符匹配(WCM)表,搜索关键字被分配给一个或多个有效池。混合WCM表的结构表示哪些池是一个或多个有效池。在一些实施例中,同时执行在一个或多个有效池中的查找。在步骤915中,当一个或多个有效池包括溢出TCAM池时,TCAM池返回包括数据和优先级信息的第一组结果。在步骤920中,当一个或多个有效池包括多个SRAM池中的至少一个时,每个有效SRAM池均返回包括数据和优先级信息的第二组结果。对于每个有效SRAM池来说,为了确定第二组结果,对相应有效SRAM池的每个SRAM瓦片返回的所有组的结果执行基于优先级的第一层级仲裁。在步骤925中,对一个或多个有效池返回的所有组的结果执行基于优先级的第二层级仲裁。在步骤930中,基于第二层级仲裁,输出来自具有最高优先级的组的数据。通配符匹配解决方案的一种核心思想在于大多数条目被插入到多个SRAM池中。SRAM池可以不对艰难(tough)图案执行匹配,在这种情况下溢出TCAM池将对这些艰难图案执行匹配。取决于是否存在高层级软件算法支持,硬件可以与软件算法脱离。如果软件算法确信执行匹配,则非常少的TCAM资源被使用。另一方面,如果软件算法不确认或者怠于执行匹配,则可以使用更多的TCAM资源。本领域技术人员应该即使到还存在其他用法和优势。虽然参照多个具体细节描述了本发明,但本领域技术人员应该意识到,在不背离本发明的精神的情况下可以以其他具体形式来具体化本发明。因此,本领域技术人员应该理解,本发明不限于前面的所示细节,而是通过所附权利要求来限定。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1