CN105760411B - 混合通配符匹配表 - Google Patents

混合通配符匹配表 Download PDF

Info

Publication number
CN105760411B
CN105760411B CN201510757313.6A CN201510757313A CN105760411B CN 105760411 B CN105760411 B CN 105760411B CN 201510757313 A CN201510757313 A CN 201510757313A CN 105760411 B CN105760411 B CN 105760411B
Authority
CN
China
Prior art keywords
sram
pool
pools
tcam
entry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510757313.6A
Other languages
English (en)
Other versions
CN105760411A (zh
Inventor
王炜煌
T·丹尼尔
S·阿特鲁里
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.)
Kaiwei International Co
Marvell Asia Pte Ltd
Original Assignee
Marvell Asia Pte Ltd
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 Marvell Asia Pte Ltd filed Critical Marvell Asia Pte Ltd
Publication of CN105760411A publication Critical patent/CN105760411A/zh
Application granted granted Critical
Publication of CN105760411B publication Critical patent/CN105760411B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]

Abstract

本发明涉及混合通配符匹配表,更具体地,本发明的实施例在于一种通配符匹配解决方案,其在混合解决方案中使用静态随机存取存储器(SRAM)和三元内容可寻址存储器(TCAM)的组合。具体地,通配符匹配解决方案使用用于查找的多个SRAM池以及用于未解决的散列冲突的溢出TCAM池。

Description

混合通配符匹配表
技术领域
本发明涉及通配符匹配。更具体地,本发明涉及混合通配符匹配表。
背景技术
网络设备使用通配符匹配将数据包分为多个流。三元内容可寻址存储器(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所示,关键字被索引到TCAM 205中,其执行TCAM205中的所有条目的并行匹配并返回地址。然后,返回的地址被索引到伴随的SRAM 210,其提供诸如控制数据(例如,终止)的最终数据。
TCAM 205具有内置优先权编码方案,表示第一匹配的条目是最终匹配的条目并且被索引到SRAM 210中。换句话说,如果TCAM 205中的多个条目与关键字匹配,则TCAM 205返回TCAM 205中的第一匹配条目的地址。如此,优先权基于TCAM 205中条目的排序是固有的。在图2中,关键字与TCAM 205中的三个条目匹配。第一匹配条目(表示为“匹配图案0”)的地址被返回并索引到SRAM 210中,其返回控制数据(表示为“匹配数据”)。尽管基于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
Figure BDA0000842540890000071
Figure BDA0000842540890000081
混合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
Figure BDA0000842540890000101
Figure BDA0000842540890000111
如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_map 32’hC0C0_00FF,以及way_1具有key_map 32’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资源。
本领域技术人员应该即使到还存在其他用法和优势。虽然参照多个具体细节描述了本发明,但本领域技术人员应该意识到,在不背离本发明的精神的情况下可以以其他具体形式来具体化本发明。因此,本领域技术人员应该理解,本发明不限于前面的所示细节,而是通过所附权利要求来限定。

Claims (41)

1.一种网络开关,包括:
多个静态随机存取存储器SRAM池,存储可散列条目,其中每个所述SRAM池均与一个或多个散列方法相关联;
至少一个溢出三元内容可寻址存储器TCAM池,存储从所述SRAM池溢出的不可散列条目,其中所述不可散列条目是不能根据所述散列方法散列至所述SRAM池的条目;以及
请求接口控制逻辑,将搜索关键字分配给所述SRAM池和至少一个所述TCAM池的一个或多个有效池并返回结果数据。
2.根据权利要求1所述的网络开关,其中所述多个SRAM池中的每一个均包括用于平行散列的16个SRAM瓦片,并且其中所述至少一个溢出TCAM池包括多个TCAM数据库作为基本匹配单元。
3.根据权利要求1所述的网络开关,还包括可被所述多个SRAM池、所述至少一个溢出TCAM池和所述请求接口控制逻辑访问的混合通配符匹配WCM表。
4.根据权利要求3所述的网络开关,其中所述混合通配符匹配WCM包括用于所述多个SRAM池、所述至少一个溢出TCAM池和所述请求接口控制逻辑的配置。
5.根据权利要求4所述的网络开关,其中所述配置包括用于所述多个SRAM池中的每一个的配置、用于所述至少一个溢出TCAM中的每一个的配置以及用于所述请求接口控制逻辑的配置。
6.根据权利要求4所述的网络开关,其中所述配置识别所述多个SRAM池和所述至少一个溢出TCAM池中的哪些是所述一个或多个有效池。
7.根据权利要求1所述的网络开关,其中进行仲裁以确定所述一个或多个有效池中的哪一个具有返回所述结果数据的优先级。
8.根据权利要求1所述的网络开关,其中所述至少一个溢出TCAM池被组织到八个数据库中,其中所述八个数据库中的每一个均包括六个TCAM瓦片并且伴随有用于控制数据返回的专用SRAM。
9.根据权利要求8所述的网络开关,其中所述六个TCAM瓦片中的每一个均是64位宽和512个条目深。
10.根据权利要求1所述的网络开关,其中所述多个SRAM池中的每一个均包括八对SRAM瓦片,所述八对SRAM瓦片中的两对存储控制数据且所述八对SRAM瓦片中的六对存储条目。
11.根据权利要求10所述的网络开关,其中所述八对SRAM瓦片中的每一个均是256位宽且2048条线深。
12.一种用于实施网络开关的方法,所述网络开关包括多个静态随机存取存储器SRAM池和至少一个溢出三元内容可寻址存储器TCAM池,所述方法包括:
接收将被插入到由所述TCAM池和所述SRAM池组成的组中的一个池中的条目;
确定所述条目是否可散列;
基于所述条目可散列的确定,将所述条目插入到所述多个SRAM池中的一个中;以及
基于所述条目不可散列的确定,将所述条目插入到所述溢出TCAM池中。
13.根据权利要求12所述的方法,其中确定所述条目是否可散列包括将每个key_map与所述条目进行比较。
14.根据权利要求13所述的方法,其中所述多个SRAM池中的每一个均包括16个SRAM瓦片,并且其中所述16个SRAM瓦片中的每一个均与key_map相关联。
15.根据权利要求13所述的方法,其中每个key_map均掩蔽参与散列的条目的位。
16.根据权利要求15所述的方法,其中当所述条目中参与散列的所有位均不是通配符时,所述条目是可散列的。
17.根据权利要求12所述的方法,其中所述条目被插入到所述多个SRAM池中的一个SRAM池的两个SRAM瓦片的一个中。
18.根据权利要求12所述的方法,其中将所述条目插入到所述多个SRAM池中的一个中包括再散列以解决散列冲突。
19.根据权利要求12所述的方法,其中再散列实施深度第一插入算法。
20.根据权利要求12所述的方法,其中再散列实施宽度第一插入算法。
21.根据权利要求12所述的方法,其中所述条目作为图案被插入到一个所述池中。
22.一种实施网络开关的方法,所述网络开关包括多个静态随机存取存储器SRAM池和至少一个溢出三元内容可寻址存储器TCAM池,所述方法包括:
在请求接口控制逻辑处接收搜索关键字;
基于混合通配符匹配WCM表,将所述搜索关键字分配给一个或多个有效池;
当所述一个或多个有效池包括所述溢出TCAM池时,所述TCAM池返回包括数据和优先级信息的第一组结果;
当所述一个或多个有效池包括所述多个SRAM池中的至少一个时,通过每个有效SRAM池返回第二组结果,其中所述第二组结果包括数据和优先级信息;
基于优先级执行由所述一个或多个有效池返回的所有组的结果的第二层级仲裁;以及
基于所述第二层级仲裁,输出来自具有最高优先级的所述所有组中的一组的数据,
其中所述TCAM池被用于存储不可散列条目,并且所述SRAM池被用于存储可散列条目。
23.根据权利要求22所述的方法,其中所述混合通配符匹配WCM表的配置表示哪些所述池是所述一个或多个有效池。
24.根据权利要求22所述的方法,其中同时执行所述一个或多个有效池中的查找。
25.根据权利要求22所述的方法,还包括:对于每个有效SRAM池来说,基于优先级执行由对应有效SRAM池的每个SRAM瓦片返回的所有组的结果的第一层级仲裁,以确定所述第二组结果。
26.根据权利要求22所述的方法,其中所述至少一个溢出TCAM池被组织到八个数据库中,其中所述八个数据库中的每一个均包括六个TCAM瓦片并且伴随有用于控制数据返回的专用SRAM。
27.根据权利要求22所述的方法,其中所述多个SRAM池中的每一个均包括八对SRAM瓦片,其中所述八对SRAM瓦片中的两对存储控制数据,以及所述八对SRAM瓦片中的六对存储条目。
28.一种用于网络开关的存储装置,所述存储装置包括:
多个静态随机存取存储器SRAM池,存储可散列条目,其中每个所述SRAM池均与一个或多个散列方法相关联;以及
至少一个溢出三元内容可寻址存储器TCAM池,存储从所述SRAM池溢出的不可散列条目,其中所述不可散列条目是不能根据所述散列方法散列至所述SRAM池的条目,
其中所述存储装置与请求接口控制逻辑交互,所述请求接口控制逻辑被配置为接收在所述网络开关处到达的数据包的搜索关键字并输出结果数据。
29.根据权利要求28所述的存储装置,其中所述请求接口控制逻辑基于可被所述请求接口控制逻辑访问的混合通配符匹配WCM表的配置将所述搜索关键字分配给一个或多个有效池,其中所述配置识别所述多个SRAM池和所述至少一个溢出TCAM池中的哪一些是所述一个或多个有效池。
30.根据权利要求29所述的存储装置,其中进行最后的仲裁以确定所述一个或多个有效池中的哪一个具有返回所述结果数据的优先级。
31.根据权利要求28所述的存储装置,其中所述多个SRAM池中的每一个均包括多个SRAM瓦片,所述多个SRAM瓦片被逻辑组织以表示不同的逻辑表宽度。
32.根据权利要求31所述的存储装置,其中所述多个SRAM瓦片包括成对组织的16个SRAM瓦片,其中八对SRAM瓦片中的两对存储控制数据以及所述八对SRAM瓦片中的六对存储条目。
33.根据权利要求31所述的存储装置,其中所述多个SRAM池中的每一个均被配置为执行由对应SRAM池的每个SRAM瓦片返回的所有组的结果的初始仲裁并且基于所述初始仲裁返回第一数据和用于所述第一数据的优先级信息。
34.根据权利要求31所述的存储装置,其中每个所述SRAM瓦片均与key_map相关联。
35.根据权利要求34所述的存储装置,其中当条目中参与散列的所有位均不是通配符时,所述条目是可散列的,其中所述key_map确定所述条目中的哪些位参与散列。
36.根据权利要求28所述的存储装置,其中所述至少一个溢出TCAM池被组织成多个数据库,其中所述多个数据库中的每一个均包括多个TCAM瓦片并且伴随有专用SRAM,并且其中所述至少一个溢出TCAM池被配置为返回第二数据和用于所述第二数据的优先级信息。
37.根据权利要求36所述的存储装置,其中所述多个数据库包括八个数据库,并且其中所述多个TCAM瓦片包括六个TCAM瓦片。
38.根据权利要求36所述的存储装置,其中所述多个TCAM瓦片被逻辑组织成与不同的关键字大小相对应。
39.根据权利要求28所述的存储装置,其中所述搜索关键字是所述数据包的一个或多个报头字段的组合。
40.根据权利要求28所述的存储装置,其中所述至少一个溢出TCAM还存储由于散列冲突而不能插入到所述多个SRAM池中的条目。
41.一种网络开关,用于分类一个或多个条目,所述网络开关包括:
处理单元,用于确定所述一个或多个条目中的一个条目是可散列条目或不可散列条目;
至少一个静态随机存取存储器SRAM池,用于存储确定的一个或多个可散列条目,所述至少一个SRAM池与一个或多个散列方法相关联;以及
至少一个溢出三元内容可寻址存储器TCAM池,用于存储确定的一个或多个不可散列条目;
其中所述处理单元基于与所述至少一个SRAM池相关联的所述一个或多个散列方法做出所述确定,其中所述至少一个TCAM池中的所述确定的一个或多个不可散列条目从所述至少一个SRAM池溢出。
CN201510757313.6A 2014-11-10 2015-11-09 混合通配符匹配表 Active CN105760411B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/536,937 US10116564B2 (en) 2014-11-10 2014-11-10 Hybrid wildcard match table
US14/536,937 2014-11-10

Publications (2)

Publication Number Publication Date
CN105760411A CN105760411A (zh) 2016-07-13
CN105760411B true CN105760411B (zh) 2021-03-09

Family

ID=55913127

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510757313.6A Active CN105760411B (zh) 2014-11-10 2015-11-09 混合通配符匹配表

Country Status (3)

Country Link
US (1) US10116564B2 (zh)
CN (1) CN105760411B (zh)
TW (1) TWI667900B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9692684B2 (en) * 2014-09-05 2017-06-27 Telefonaktiebolaget L M Ericsson (Publ) Forwarding table precedence in SDN
US10798000B2 (en) 2014-12-22 2020-10-06 Arista Networks, Inc. Method and apparatus of compressing network forwarding entry information
US9680749B2 (en) 2015-02-27 2017-06-13 Arista Networks, Inc. System and method of using an exact match table and longest prefix match table as a combined longest prefix match
US10684961B1 (en) * 2015-10-02 2020-06-16 Amazon Technologies, Inc. External memory protection for content addressable memory
JP2022035056A (ja) * 2020-08-20 2022-03-04 富士通株式会社 情報処理装置およびパケット制御方法
EP4075740A1 (en) * 2021-04-14 2022-10-19 Nxp B.V. Extending best match lookup algorithm with one or more conditionally executed exact match lookups

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1953418A (zh) * 2005-10-19 2007-04-25 阿尔卡特公司 处理信息分组的方法和使用该方法的电信设备
US7554980B1 (en) * 2002-10-18 2009-06-30 Alcatel Lucent Packet classification using relevance scoring
CN102591947A (zh) * 2010-12-28 2012-07-18 微软公司 用于数据去重复的快速且低ram占用的索引
US8355269B1 (en) * 2008-11-24 2013-01-15 Esilicon Corporation Pushed-rule bit cells with new functionality

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226710B1 (en) * 1997-11-14 2001-05-01 Utmc Microelectronic Systems Inc. Content addressable memory (CAM) engine
US6957215B2 (en) 2001-12-10 2005-10-18 Hywire Ltd. Multi-dimensional associative search engine
US7634500B1 (en) * 2003-11-03 2009-12-15 Netlogic Microsystems, Inc. Multiple string searching using content addressable memory
US7019674B2 (en) * 2004-02-05 2006-03-28 Nec Laboratories America, Inc. Content-based information retrieval architecture
US7796627B2 (en) 2004-08-12 2010-09-14 Broadcom Corporation Apparatus and system for coupling and decoupling initiator devices to a network using an arbitrated loop without disrupting the network
US7469241B2 (en) 2004-11-30 2008-12-23 Oracle International Corporation Efficient data aggregation operations using hash tables
WO2007078220A2 (en) * 2005-12-30 2007-07-12 Telefonaktiebolaget Lm Ericsson (Publ) Compiling method for command based router classifiers
US7805393B1 (en) * 2007-07-30 2010-09-28 Netlogic Microsystems, Inc. Assigning encoded state values to a search tree according to failure chains
US8515956B2 (en) 2009-05-11 2013-08-20 H5 Method and system for clustering datasets
JP5666722B2 (ja) * 2011-03-14 2015-02-12 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. メモリ・インターフェース
US8606791B2 (en) 2011-06-17 2013-12-10 Microsoft Corporation Concurrently accessed hash table
US9065860B2 (en) * 2011-08-02 2015-06-23 Cavium, Inc. Method and apparatus for multiple access of plural memory banks
CN102880724A (zh) * 2012-10-23 2013-01-16 盛科网络(苏州)有限公司 处理哈希冲突的方法及系统
US9245626B2 (en) * 2012-10-26 2016-01-26 Cisco Technology, Inc. System and method for packet classification and internet protocol lookup in a network environment
US9276846B2 (en) * 2013-03-15 2016-03-01 Cavium, Inc. Packet extraction optimization in a network processor
US9264357B2 (en) * 2013-04-30 2016-02-16 Xpliant, Inc. Apparatus and method for table search with centralized memory pool in a network switch
US20150039823A1 (en) * 2013-07-30 2015-02-05 Mediatek Inc. Table lookup apparatus using content-addressable memory based device and related table lookup method thereof
CN103702301A (zh) * 2013-12-31 2014-04-02 大连环宇移动科技有限公司 一种针对网间短信业务的实时感控系统
US9264257B2 (en) 2014-05-13 2016-02-16 Cisco Technology, Inc. Dynamic ternary content-addressable memory carving
US9658984B2 (en) * 2014-07-15 2017-05-23 Cisco Technology, Inc. Method and apparatus for synchronizing multiple MAC tables across multiple forwarding pipelines
IL233776B (en) 2014-07-24 2019-02-28 Verint Systems Ltd A system and method for adjusting domains

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7554980B1 (en) * 2002-10-18 2009-06-30 Alcatel Lucent Packet classification using relevance scoring
CN1953418A (zh) * 2005-10-19 2007-04-25 阿尔卡特公司 处理信息分组的方法和使用该方法的电信设备
US8355269B1 (en) * 2008-11-24 2013-01-15 Esilicon Corporation Pushed-rule bit cells with new functionality
CN102591947A (zh) * 2010-12-28 2012-07-18 微软公司 用于数据去重复的快速且低ram占用的索引

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TCAM存储高效的OpenFlow多级流表映射机制;刘中金等;《清华大学学报(自然科学版)》;20140415;第437-442页 *

Also Published As

Publication number Publication date
US20160134536A1 (en) 2016-05-12
US10116564B2 (en) 2018-10-30
TWI667900B (zh) 2019-08-01
TW201633751A (zh) 2016-09-16
CN105760411A (zh) 2016-07-13

Similar Documents

Publication Publication Date Title
US11102120B2 (en) Storing keys with variable sizes in a multi-bank database
CN105760411B (zh) 混合通配符匹配表
US10389633B2 (en) Hash-based address matching
JP4742167B2 (ja) Camのキーサイズを超えるテーブルインデックスを用いてテーブルルックアップ動作を実行する方法
US9871728B2 (en) Exact match hash lookup databases in network switch devices
US10491521B2 (en) Field checking based caching of ACL lookups to ease ACL lookup search
EP1649389B1 (en) Internet protocol security matching values in an associative memory
CN107528783B (zh) 利用对前缀长度进行两个搜索阶段的ip路由缓存
US10148571B2 (en) Jump on a match optimization for longest prefix match using a binary search tree
US11218410B2 (en) Hybrid wildcard match table
US11362948B2 (en) Exact match and ternary content addressable memory (TCAM) hybrid lookup for network device
JP2005198285A (ja) ハードウエアにおけるipルックアップソリューションを効率的に実現するためにハッシングを使用する装置及び方法
US6987683B2 (en) Magnitude comparator based content addressable memory for search and sorting
US9672239B1 (en) Efficient content addressable memory (CAM) architecture
US9485179B2 (en) Apparatus and method for scalable and flexible table search in a network switch
US9305115B1 (en) Method and apparatus for reducing power consumption during rule searches in a content search system
US7516119B1 (en) Method and apparatus for action group generation and arbitration in a classification engine
Huang et al. Fast routing table lookup based on deterministic multi-hashing
US11943142B2 (en) Hybrid wildcard match table
US10476785B2 (en) IP routing search
JP2013038536A (ja) 半導体装置
CN115203493A (zh) 用一个或多个精确匹配查找扩展最佳匹配查找算法
WO2005013566A1 (ja) データ検索方法及び装置
Chen et al. Scalable IPv 6 Lookup/Update Design for High-Throughput Routers

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: California, USA

Applicant after: Cavium, Inc.

Address before: California

Applicant before: Cavium, Inc.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200429

Address after: Singapore City

Applicant after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Applicant before: Kaiwei international Co.

Effective date of registration: 20200429

Address after: Ford street, Grand Cayman, Cayman Islands

Applicant after: Kaiwei international Co.

Address before: California, USA

Applicant before: Cavium, Inc.

GR01 Patent grant
GR01 Patent grant