CN113519144B - 用于网络设备的精确匹配和三元内容可寻址存储器(tcam)混合查找 - Google Patents
用于网络设备的精确匹配和三元内容可寻址存储器(tcam)混合查找 Download PDFInfo
- Publication number
- CN113519144B CN113519144B CN202080017420.4A CN202080017420A CN113519144B CN 113519144 B CN113519144 B CN 113519144B CN 202080017420 A CN202080017420 A CN 202080017420A CN 113519144 B CN113519144 B CN 113519144B
- Authority
- CN
- China
- Prior art keywords
- lookup
- packet
- cam
- hash value
- uncompressed
- 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
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90339—Query processing by using parallel associative memories or content-addressable memories
-
- 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
-
- 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/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Abstract
在网络设备中,散列计算器从与由网络设备接收的分组相关联的数据字段生成查找散列值。压缩查找键生成器使用查找散列值为分组生成压缩查找键。内容可寻址存储器(CAM)存储与压缩查找键相对应的压缩模式,使用从压缩查找键生成器接收的压缩查找键来确定所接收的压缩查找键是否匹配任何存储的压缩模式,并且输出对应于匹配压缩查找键的所存储的压缩模式的索引。存储器存储对应于与CAM中存储的压缩模式的未压缩模式,并且使用由CAM输出的索引检索未压缩模式。比较器生成信号,该信号指示从存储器中检索的未压缩模式是否匹配与分组相关联的数据字段。
Description
相关申请的交叉引用
本申请要求于2019年1月10日提交的题为“Hybrid Ternary Content-Addressable Memory(TCAM)Exact Match”的美国临时申请第62/790,724号的权益,其公开内容由此通过引用整体并入本文。
技术领域
本公开总体上涉及网络设备,并且更具体地涉及使用分组信息执行查找的网络设备。
背景技术
诸如网络交换机、路由器、边缘设备等网络设备通常采用查找表,该查找表存储与由网络设备处理的分组相关联的各种信息,并且,网络设备在查找表中进行查找以在网络设备对分组的处理期间做出各种处理决策。例如,可以针对分组分类、转发决策、服务质量分类、策略控制列表应用、以及通常由网络设备执行的其他处理操作来执行查找操作。通常,根据与分组相关联或为分组生成的键来执行对分组的查找。例如,键用于搜索表,并且与分组相关的信息(例如,分组的转发信息)从由键标识的表中的条目中检索。
一些查找表使用内容可寻址存储器(CAM)来实现。CAM是一个完全关联阵列,它通常允许将任何合适的键插入表中,多达CAM的最大表条目数。为了执行查找,键被提供给CAM,并且CAM确定该键是否与CAM中存储的任何模式匹配。三元CAM(TCAM)还允许“无关”字段(例如,即使CAM条目的无关字段中的位与查找键不匹配,也会指示匹配)和TCAM中的模式的顺序。例如,由于无关字段,给定键可能与TCAM中的多个条目匹配,但TCAM只会返回与首次出现的匹配条目(根据TCAM中的条目的顺序)相关的匹配项。CAM/TCAM表在面积和功耗方面通常很昂贵,尤其是在使用大尺寸查找表时。
作为CAM/TCAM表的替代方案,一些设备采用基于散列的精确匹配方案,其中散列函数被应用于键以确定散列表中存储有键和与键相关联的信息(例如,转发信息)的位置。因为散列函数会为提供给散列函数的两个或更多个不同键生成相同散列值,所以将原始键与从散列表中检索的键进行比较,以确认原始键是否与从散列表中检索的键完全匹配。虽然精确匹配/散列表通常比CAM/TCAM实现更便宜且消耗更少功率,但精确匹配/散列表不允许如上所述的“无关”字段和模式顺序,并且通常比CAM/TCAM实现更慢。
发明内容
在一个实施例中,一种用于为网络设备执行查找的装置包括:散列计算器,被配置为从一组一个或多个数据字段生成查找散列值,一组一个或多个数据字段与由网络设备接收的分组相关联,数据字段中的至少一些数据字段是分组的报头字段;被配置为使用查找散列值为分组生成压缩查找键的压缩查找键生成器;内容可寻址存储器(CAM),CAM被配置为i)存储与压缩查找键相对应的压缩模式,压缩模式包括对应于与分组相关联的数据字段的相应模式散列值,ii)使用从压缩查找键生成器接收的压缩查找键来确定所接收的压缩查找键是否与任何存储的压缩模式匹配,以及iii)输出索引,该索引对应于与从压缩查找键生成器接收的压缩查找键匹配的所存储的压缩模式;存储器,被配置为i)存储与CAM中存储的压缩模式相对应的未压缩模式,以及ii)使用由CAM输出的索引检索未压缩模式;以及比较器,被配置为生成信号,该信号指示从存储器中检索的未压缩模式是否匹配与由网络设备接收的分组相关联的该一组一个或多个数据字段。
在另一实施例中,一种用于与处理由网络设备接收的分组相结合来执行查找操作的方法包括:在网络设备处从与分组相关联的一组一个或多个数据字段生成查找散列值,数据字段中的至少一些数据字段是分组的报头字段;在网络设备处确定分组的包括查找散列值的压缩查找键是否与CAM中存储的任何压缩模式匹配,CAM存储与包括相应模式散列值的压缩查找键相对应的压缩模式,相应模式散列值对应于与分组相关联的数据字段;由CAM输出索引,该索引对应于与压缩查找键匹配的所存储的压缩模式;使用由CAM输出的索引,来从存储与CAM中存储的压缩模式相对应的未压缩模式的存储器中检索未压缩模式;在网络设备处将从存储器中检索的未压缩模式和与由网络设备接收的分组相关联的该组一个或多个数据字段进行比较;以及由网络设备生成信号,该信号指示从存储器中检索的未压缩模式是否与匹配由网络设备接收的分组相关联的该组一个或多个数据字段。
在又一实施例中,一种用于在网络设备的CAM/精确匹配混合查找引擎中存储查找信息的方法,以用于处理由网络设备接收的分组,该方法包括:在网络设备处从一组一个或多个值生成散列值,该一组一个或多个值对应于与分组相关联的一个或多个数据字段;将散列值存储在CAM/精确匹配混合查找引擎的CAM中的条目中;以及将与一个或多个数据字段相对应的该组一个或多个值存储在存储器中,在该存储器中与CAM中的条目相对应的位置处,该存储器被包括在CAM/精确匹配混合查找引擎中,与CAM分开。
附图说明
图1是根据实施例的利用内容可寻址存储器(CAM)/精确匹配混合查找引擎来处理分组的示例网络设备的简化框图。
图2是根据实施例的被包括在图1的示例网络设备中的示例CAM/精确匹配混合查找引擎的简化图。
图3A是根据另一实施例的示例未压缩查找键的图,示例CAM/精确匹配混合查找引擎被配置为与执行查找操作相结合来接收该示例未压缩查找键。
图3B是根据另一实施例的与图3A的未压缩查找键相对应的压缩查找键的图,示例CAM/精确匹配混合查找引擎被配置为生成该压缩查找并且使用该压缩查找键执行查找操作。
图4是根据实施例的图2的示例CAM/精确匹配混合查找引擎的三元内容可寻址存储器TCAM中的一组示例条目。
图5是根据实施例的用于在CAM/精确匹配混合查找引擎中执行查找操作的示例方法的流程图。
图6是根据实施例的用于在网络设备的CAM/精确匹配混合查找引擎中存储用于处理由网络设备接收的分组的信息的示例方法的流程图。
具体实施方式
在下面描述的说明性实施例中,用于网络设备(例如,网络交换机、路由器等)的查找系统利用混合内容可寻址存储器(CAM)和精确匹配查找系统。在示例CAM/精确匹配混合中,要检测其匹配项的未压缩模式(例如,包括与分组相对应的字段值,诸如报头字段值或未被包括在分组中但以其他方式与分组相关联的字段的值)通过将散列函数应用于该模式以生成散列值来压缩。然后,未压缩模式的散列值被存储在CAM的条目中。此外,未压缩模式被存储在与CAM分开的存储器中并且在该存储器中与存储有散列值的CAM中的条目相关联的位置处。因为压缩模式(例如,散列值)被存储在CAM中,所以与具有相同数目的条目的现有技术的基于CAM的查找系统相比,至少在一些实施例中,可以减小CAM的大小,从而实现成本节省。在CAM是三元CAM(TCAM)的至少一些实施例中,还提供了基于TCAM的查找的优点,诸如使用“无关”字段的能力和/或对TCAM中的模式排序的能力。
为了使用上面讨论的CAM/精确匹配混合执行查找,通过将散列函数应用于与分组相关联的未压缩字段来生成压缩查找键,并且将压缩查找键提供给CAM。如果CAM指示匹配,则从单独的存储器中检索相关联的未压缩模式,并且将未压缩模式和与分组相关联的未压缩字段进行比较,以确认与分组相关联的未压缩字段是否与未压缩模式完全匹配。
图1是根据实施例的利用CAM/精确匹配混合查找系统的示例网络设备100的简化框图。网络设备100通常在两个或更多个计算机系统、网段、子网等之间转发分组。例如,在一个实施例中,网络设备100是层2交换机。然而,应当注意,网络设备100不一定限于特定协议层或特定网络技术(例如,以太网技术)。例如,在其他实施例中,网络设备100适当地是路由器、网桥、虚拟专用网络(VPN)集中器等。
网络设备100包括分组处理器(或其他合适的网络处理器)102和分组处理器102。网络设备100还包括耦合到网络处理器102的多个网络接口(例如,端口)108,并且端口108中的每个经由相应通信链路耦合到通信网络和/或通信网络内的另一合适网络设备。一般而言,分组处理器102被配置为处理经由网络接口108(有时称为“入口接口”或“入口端口”)接收的分组,以确定要经由其传输分组的相应网络接口108(有时称为“出口接口”或“出口端口”),并且引起分组经由所确定的出口接口108被传输。在一些实施例中,网络接口108是双向的并且既用作入口接口又用作出口接口。在一些实施例中,分组处理器102处理与分组相关联的分组描述符,而不是处理分组本身。在一个实施例中,分组描述符包括来自分组的一些信息,诸如分组的报头信息中的一些或全部,和/或包括由分组处理器102为分组而生成的信息。例如,分组描述符包括诸如分组存储在与网络设备100相关联的分组存储器(未示出)中的位置的指示符、接收分组的网络接口(例如,端口)的指示符、分组处理器102确定分组所属的流的指示符。为了便于解释,本文中的术语“分组”用于指代分组本身或与分组相关联的分组描述符。
分组处理器102包括交换引擎(例如,层2引擎、桥接引擎等)116。交换引擎116耦合到存储器120。该存储器包括一个或多个存储器设备,诸如随机存取存储器(RAM)(诸如动态RAM(DRAM)或静态RAM(SRAM))、闪存等。交换引擎被配置为在存储器120中查找关于由网络设备100接收的分组(有时在本文中称为“进入分组”)的转发信息。虽然存储器120在图1中被描绘为是与交换引擎116分开并且耦合到交换引擎116的外部存储空间,但是应当注意,在至少一些实施例中,存储器120是交换引擎116内部的存储空间。
作为说明性示例,存储器120被配置为存储转发数据库124,该转发数据库124又存储用于分组的处理信息,诸如进入分组要经由其被转发的网络设备100的网络接口(例如,端口)108的指示符。在一些实施例中,存储器120包括多个物理存储体。在其他实施例中,存储器120包括单个存储体。
在一些实施例中,分组处理器102还包括路由器引擎(未示出),并且存储器120被配置为存储转发数据库(未示出),路由器引擎使用该转发数据库来做出关于进入分组的转发决定。例如,根据一个实施例,转发数据库(未示出)存储下一跳网络地址信息,并且路由器引擎(未示出):从转发数据库中检索进入分组的下一跳网络地址信息,并且在网络设备100传输分组之前使用下一跳网络地址信息修改分组的报头。
在另一实施例中,分组处理器102省略了路由器引擎和转发数据库。在各种其他实施例中,存储器120被配置为存储由分组处理器102使用以处理进入分组的其他合适类型的处理信息,诸如隧道终止转发信息、分组分类信息等。在其他实施例中,存储器120是用于存储转发数据库124的专用存储器设备,并且一个或多个其他存储器设备(未示出)存储由分组处理器102使用以处理进入分组的其他类型的处理信息。
为了便于解释和避免混淆网络设备100的CAM/精确匹配混合方面的解释,分组处理器102的其他处理元件(例如,报头修改引擎、监管引擎等)未示出。在各种实施例中,交换引擎116和其他处理元件(诸如路由器引擎(如果包括的话)和未示出的其他处理元件)以任何合适的并行或流水线布置进行布置。
例如,根据一个实施例,在流水线分组处理架构中,多个分组处理元件(PPE)以串行流水线布置进行布置,其中每个PPE被配置为对一个分组执行一个或多个分组处理操作并且将分组(或与分组相对应的分组描述符)传递到下一PPE以用于分组的进一步处理。在一个实施例中,交换引擎116是流水线PPE之一。
作为另一示例,根据一个实施例,在并行处理布置中,分组处理器102中包括的多个PPE被配置为并行地对相应进入分组执行处理操作。开关引擎116至少部分由一个或多个并行处理PPE实现。例如,在一个实施例中,多个并行处理PPE包括被配置为执行存储在一个或多个非暂态存储器(未示出)中的计算机可读指令的处理器,而CAM/精确匹配混合系统使用硬件电路系统(例如,在集成电路(IC)、专用IC(ASIC)等上)来实现。
交换引擎116包括查找引擎140。查找引擎140被配置为接收查找键,查找键之一对应于将要被处理的进入分组,并且查找引擎140被配置为使用查找键在一个或多个TCAM(未示出)中执行查找。查找引擎140还被配置为基于查找键生成查找结果。例如,查找结果指示查找引擎是否确定了查找键的匹配项(例如,在一个或多个TCAM(未示出)中)。然后查找结果被用于确定如何处理与查找键相对应的分组。例如,根据一个实施例,查找结果还指示转发数据库124中存储有分组的转发信息的条目。
查找引擎140包括TCAM/精确匹配混合查找引擎148。在一个实施例中,TCAM/精确匹配混合查找引擎148包括TCAM 152,TCAM 152存储对应于与分组相关联的信息的压缩模式(例如,使用散列函数进行压缩的)。至少在一些实施例中,因为压缩模式(例如,散列值)被存储在TCAM 152中,所以与存储未压缩模式的现有技术的基于TCAM的查找系统相比,TCAM 152的大小被减小。
此外,TCAM/精确匹配混合查找引擎148包括与TCAM分开的存储器156,存储器156存储与TCAM 152中存储的压缩模式相关联的未压缩模式。为了执行查找,TCAM/精确匹配混合查找引擎148通过将散列函数应用于由查找引擎140接收的查找键的至少一部分(本文中有时称为“未压缩查找键”)来生成压缩查找键,并且压缩查找键被提供给TCAM 152。如果TCAM 152指示匹配,则从单独的存储器156中检索相关联的未压缩模式,并且将未压缩模式与未压缩查找键的字段进行比较以确认未压缩查找键的字段是否与未压缩模式完全匹配。
可选地,查找引擎140还包括仅TCAM查找引擎166,仅TCAM查找引擎166存储未压缩模式,该未压缩模式对应于与分组相关联的信息(例如,来自分组的报头信息、来自与分组相对应的分组描述符的信息、由分组处理器102分配给分组的信息(例如,接收分组的网络接口(端口)的指示符、分组所属的流的指示符等))。在各种实施例中,仅TCAM查找引擎166是合适的仅TCAM查找引擎,诸如现有技术的仅TCAM查找引擎、或另一合适的仅TCAM查找引擎。仅TCAM查找引擎166包括另一TCAM(未示出)。在一些实施例中,当查找引擎140确定要被存储的新的未压缩键散列到已经被存储在TCAM 152中的模式时,这可以指示两个不同未压缩键散列到同一散列结果(即,当散列函数应用于两个不同未压缩键时,生成同一散列结果)。因此,当查找引擎140确定要被存储的新的未压缩键散列到已经被存储在TCAM 152中的模式时,查找引擎140将新的未压缩键存储在仅TCAM查找引擎166的TCAM中,而不是存储在TCAM 152中。
在包括仅TCAM查找引擎166的一些实施例中,当查找引擎140要使用查找键执行查找时,查找引擎140首先将查找键提供给TCAM/精确匹配混合查找引擎148。如果TCAM/精确匹配混合查找引擎148指示不存在查找键的匹配项,则查找引擎140将查找键提供给仅TCAM查找引擎166。在另一实施例中,查找引擎140首先向仅TCAM查找引擎166提供查找键;并且如果仅TCAM查找引擎166指示不存在查找键的匹配项,则查找引擎140将查找键提供给TCAM/精确匹配混合查找引擎148。在另一实施例中,查找引擎140将查找键并行地提供给TCAM/精确匹配混合查找引擎148和仅TCAM查找引擎166。
在一些实施例中,仅TCAM查找引擎166被省略。
在一些实施例中,网络设备100还包括耦合到分组处理器102的处理器(例如,中央处理单元(CPU))170。处理器170被配置为执行存储在耦合到处理器170的存储器(未示出)中的机器可读指令。
在一个实施例中,交换引擎116使用硬件电路系统来实现。在另一实施例中,交换引擎116另外地或替代地使用处理器(未示出)来实现,该处理器执行存储在耦合到处理器的存储器(未示出)中的机器可读指令。
在一个实施例中,查找引擎140使用硬件电路系统来实现。在另一实施例中,查找引擎140另外地或替代地使用处理器(未示出)来实现,该处理器执行存储在耦合到处理器的存储器(未示出)中的机器可读指令。
在一个实施例中,TCAM/精确匹配查找引擎148使用硬件电路系统来实现。在另一实施例中,TCAM/精确匹配查找引擎148另外地或替代地使用处理器(未示出)来实现,该处理器执行存储在耦合到处理器的存储器(未示出)中的机器可读指令。
在一个实施例中,仅TCAM查找引擎166使用硬件电路系统来实现。在另一实施例中,仅TCAM查找引擎166另外地或替代地使用处理器(未示出)来实现,该处理器执行存储在耦合到处理器的存储器(未示出)中的机器可读指令。
图2是根据实施例的示例TCAM/精确匹配混合查找引擎200的框图。在一些实施例中,TCAM/精确匹配混合查找引擎200用作图1的TCAM/精确匹配混合查找引擎148,并且为了说明的目的参考图1描述图2。在其他实施例中,TCAM/精确匹配混合查找引擎200用于除了图1的网络设备100之外的另一合适的网络设备中,和/或图1的网络设备100包括除了图2的TCAM/精确匹配混合查找引擎200之外的另一合适的TCAM/精确匹配混合查找引擎148。
TCAM/完全匹配混合查找引擎200接收TCAM/完全匹配混合查找引擎200要执行查找操作的查找键204(有时称为“未压缩键”)。未压缩键204包括一个或多个“无关”字段212和一个或多个固定字段216。固定字段216对应于必须与由TCAM/精确匹配混合查找引擎200存储的模式精确匹配以便TCAM/精确匹配混合查找引擎200返回未压缩键204的“匹配”或“命中”的位。另一方面,无关字段212对应于可选地可以与由TCAM/精确匹配混合查找引擎200存储的模式中的位匹配以便TCAM/精确匹配混合查找引擎200返回未压缩键204的“匹配”或“命中”的位。下面更详细地描述无关字段212和固定字段216的使用。
TCAM/精确匹配混合查找引擎200包括散列计算器220,散列计算器220被配置为将散列函数应用于未压缩键204的固定字段216以生成散列值224(有时称为“查找散列值”)。在一个实施例中,散列计算器220被配置为将散列函数应用于固定字段216而不是无关字段212。在一些实施例中,与固定字段216的大小(例如,位长)相比,查找散列值224具有更小的尺寸(例如,位长)。
无关字段212和查找散列值224形成压缩查找键(在本文中有时称为“压缩键”)228。至少在一些实施例中,压缩键228的大小(例如,位长)至少小于未压缩键204的大小(位长),因为查找散列值224的大小小于对应固定字段216的大小。
图3A是根据说明性实施例的用作图2的未压缩键204的示例未压缩键300的图。图3A仅是未压缩键的说明性示例,并且在其他实施例中使用包括不同和/或附加信息和/或省略图3A所示的任何信息的其他未压缩键。
未压缩键300包括来自与查找操作相关联的分组的报头的信息。根据一些实施例,如以下将描述的,未压缩键300还包括与分组相关联但不来自分组的报头的信息,诸如经由其接收分组的网络接口(例如,端口)的指示、分组所属的流的确定的(例如,通过分组处理器102、网络设备100等)的标识等。
未压缩键300包括无关字段304和固定字段308。图3A所示的属于无关字段304和固定字段308的信息仅是说明性的,并且在其他实施例中,无关字段304和固定字段308包括其他合适的信息。在图3A的示例中,无关字段304包括填充有来自分组的报头的信息的字段,诸如源互联网协议(IP)地址字段312和目的地IP地址字段316。在图3A的示例中,固定字段308还包括填充有来自分组的报头的信息的字段,诸如源媒体访问控制(MAC)地址字段320和目的地MAC地址字段324。在图3A的示例中,固定字段308还包括填充有来自分组的报头和/或以其他方式与分组相关联的(例如,由网络设备100、分组处理器102等为分组而分配的)信息的字段,诸如源端口字段328、虚拟局域网(VLAN)标识符字段332和优先级字段336。根据一个实施例,源端口字段328指示经由其接收分组的网络接口(例如,端口)。根据一个实施例,VLAN标识符字段332指示与该分组相关联的VLAN,该VLAN可能已经由网络设备100、分组处理器102等为该分组而分配或从该分组的报头中检索。根据一个实施例,优先级字段336指示与分组相关联的服务质量(QoS)优先级级别,该QoS优先级级别可能已经由网络设备100、分组处理器102等为分组而分配或从该分组的报头中检索。
图3B是根据说明性实施例的用作图2的压缩键228的示例压缩键350的图。图3B仅是未压缩键的说明性示例,并且在其他实施例中,使用包括不同和/或附加信息和/或省略图3B所示的任何信息的其他未压缩键。
压缩键350是从未压缩键300生成的。例如,散列函数被应用于固定字段308以生成散列结果354(有时称为“查找散列值”),并且压缩键350包括无关字段304和查找散列值354。至少因为查找散列值354的大小(例如,位长)小于固定字段308的大小(例如,位长),压缩键350的大小(例如,位长)小于未压缩键300的大小(例如,位长)。
再次参考图2,在压缩键228被生成之后,压缩键228被提供给TCAM 240的输入。TCAM 240确定压缩键228是否与TCAM 240中存储的任何模式匹配。当TCAM 240确定压缩键228与TCAM 240中存储的模式匹配时,TCAM 240返回(例如,输出)指示与压缩键228匹配的模式的索引。在一些实施例中,TCAM 240的条目按顺序布置,并且TCAM 240被配置为返回(例如,输出)索引,其对应于与压缩键228匹配的首次出现的模式(根据条目顺序)。例如,在一些场景中,压缩键228与TCAM 240中存储的多个模式匹配,但是TCAM 240被配置为返回(例如,输出)索引,其对应于与压缩键228匹配的首次出现的模式(根据条目顺序)。
图4是根据实施例的TCAM(诸如TCAM 240或另一合适的TCAM)中的一组条目400的图。TCAM存储与压缩查找键相对应的压缩模式,该压缩模式包括对应于与分组相关联的字段的相应散列值,诸如分组报头字段、由分组处理器102分配给分组的字段、指示经由其接收分组的网络接口(例如,端口)的字段、具有分组所属的流的标识的字段等。例如,该组条目400存储散列结果404(有时称为“模式散列值”),其与应用于与分组相关联的一个或多个字段的散列函数相对应。
TCAM中的每个模式的第一部分406对应于压缩键的无关字段,并且每个模式的第二部分408对应于将散列函数应用于与分组相对应的一个或多个字段(例如,报头字段、由分组处理器102分配给分组的字段、具有不是来自分组报头的信息但以其他方式与分组相关联的字段等)的散列结果。出于解释的目的,TCAM中的条目集合400被示出为对应于图3B的示例压缩键350。在其他实施例中,TCAM中的该组条目400包括其他合适的信息。
TCAM中的该组条目400按顺序布置。组400中根据该顺序的首次出现的条目412包括源IP地址值416、目的地IP地址值420和模式散列值404。组400中根据该顺序的第二出现的条目428包括设置为无关(DC)值的位432、目的地IP地址值420和模式散列值404。组400中根据该顺序的第三出现的条目436包括设置为DC值的位440和模式散列值404。
根据一个实施例,当搜索与压缩键匹配的模式时,TCAM(例如,TCAM 240)被配置为忽略被设置为DC值的位。换言之,根据一个实施例,TCAM被配置为在确定压缩查找键是否与模式匹配时不分析压缩查找键中与设置为DC值的模式的位相对应的字段。
如果压缩键包括与条目412相同的位,则压缩键将与所有条目412、428和436匹配。然而,TCAM(例如,TCAM 240)将返回(例如,输出)与条目412相对应的索引,因为根据条目的顺序,条目412出现在条目428和436之前。类似地,如果压缩键包括目的地IP地址值420和模式散列值404,但包括不同源IP地址值,则压缩键将与条目428和436匹配,但将与条目412不匹配。TCAM(例如,TCAM 240)将返回(例如,输出)与条目428相对应的索引,因为根据条目的顺序,条目428出现在条目436之前。
再次参考图2,TCAM 240中的至少一些条目中的每个存储与压缩查找键相对应的压缩模式,该压缩模式包括对应于与分组相关联的字段的相应散列值。例如,TCAM 240存储具有大体类似于图4所示的条目的格式的压缩模式。当TCAM 240确定压缩键228与TCAM 240中的压缩模式匹配时,TCAM 240输出与TCAM 240中与压缩键228匹配的压缩模式相对应的索引。
由TCAM 240输出的索引用于从存储器244中检索与TCAM 240中的匹配压缩模式相对应的条目。存储器244存储与TCAM 240中存储的压缩模式相对应的未压缩模式。例如,对于TCAM 240中存储的至少一些压缩模式中的每个,存储器244存储一个或多个对应未压缩模式。例如,对于TCAM 240中存储的每个散列值,存储器244存储用于生成散列值的一个或多个固定字段。
在一些实施例中,TCAM/精确匹配混合查找引擎200被配置为确保具有从不同散列输入生成的相同散列值的多个压缩模式不被存储在TCAM 240中。例如,当TCAM/精确匹配混合查找引擎200确定要被存储在TCAM 240中的新压缩模式(对应于新未压缩模式)与已经被存储在TCAM 240中的压缩模式匹配时,TCAM/精确匹配混合查找引擎200被配置为不是将新压缩模式存储在TCAM 240中,而是将未压缩模式存储在与仅TCAM查找引擎(诸如仅TCAM查找引擎166(图1))相关联的单独的TCAM中。
在另一实施例中,由TCAM 240输出的索引指示存储器244中的一个或多个条目的群组(或桶),并且当TCAM/精确匹配混合查找引擎200确定要被存储在TCAM 240中的新的第一压缩模式(对应于新的第一未压缩模式)与已经被存储在TCAM 240中的第二压缩模式匹配时,TCAM/精确匹配混合查找引擎200被配置为将TCAM 240中的新的第一未压缩模式添加到已经包括与已经存储在TCAM 240中的压缩模式相对应的第二未压缩模式的条目的群组(或桶)。
在一个实施例中,存储器244包括随机存取存储器(RAM),并且由TCAM 240输出的索引用于确定要在RAM 244中从其检索未压缩模式的条目(或条目的群组(或桶))的地址。在一个实施例中,由TCAM 240输出的索引用作要在RAM 244中从其检索未压缩模式的条目(或条目的群组(或桶))的地址。在另一实施例中,TCAM/精确匹配混合查找引擎200包括地址生成器电路(未示出),该地址生成器电路使用由TCAM 240输出的索引来生成在RAM 244中要从其检索未压缩模式的条目(或条目的群组(或桶))的地址。作为说明性示例,根据说明性实施例,地址生成器电路包括加法器电路,该加法器电路被配置为作为生成地址的一部分来向由TCAM 240输出的索引添加偏移。在各种实施例中,RAM 244包括静态RAM(SRAM)设备、动态RAM(DRAM)设备等。在其他实施例中,存储器244包括不同于RAM的另一种合适的存储器设备,诸如闪存。
TCAM/精确匹配混合查找引擎200还包括比较器248,比较器248被配置为比较i)从存储器244中检索的未压缩模式,以及ii)未压缩键204中的固定字段216。因为由散列计算器220使用的散列函数将不同散列输入值映射到同一散列结果,所以比较器248将从存储器244中检索的未压缩模式与未压缩键204中的固定字段216进行比较,以确认由TCAM 240检测到的匹配项是否对应于未压缩键204的匹配项。当从存储器244中检索的未压缩模式与未压缩键204中的固定字段216匹配时,比较器248指示TCAM/精确匹配混合查找引擎200检测到与未压缩键204的匹配项。另外,TCAM/精确匹配混合查找引擎200输出来自TCAM 240的索引,该索引指示TCAM 240中与未压缩键204的匹配项相对应的模式。在一些实施例中,来自TCAM 240的索引指示要针对与未压缩键204相对应的分组而采取的动作。例如,根据一个实施例,来自TCAM 240的索引可以用于从转发数据库中检索网络接口标识符(例如,端口ID),该网络接口标识符对应于分组要被转发到其以进行传输的网络接口。作为另一示例,根据一个实施例,来自TCAM 240的索引可以用于从流ID表中检索流ID,该流ID对应于分组要被分配到的分组流。在其他实施例中,来自TCAM 240的索引由分组处理器使用以关于分组执行其他合适的动作。
因为多个未压缩模式可以散列到同一散列值,在其他实施例中,由TCAM 240输出的索引用于确定在RAM 244中从其检索一个或多个未压缩模式的条目的群组(桶)的地址,群组(或桶)中的每个条目对应于散列到同一散列值的不同未压缩模式。在至少一些这样的实施例中,TCAM/精确匹配混合查找引擎200包括控制器(未示出),该控制器被配置为检索由TCAM 240输出的索引指示的条目群组(或桶)中的一个或多个未压缩模式,并且使用比较器248(或多个比较器(未示出))将一个或多个未压缩模式与未压缩键204中的固定字段216进行比较。当从存储器244中的条目群组(或桶)中检索的未压缩模式之一与未压缩键204中的固定字段216匹配时,比较器248指示TCAM/精确匹配混合查找引擎200检测到未压缩键204的匹配项。
在一些这样的实施例中,条目群组(或桶)中的每个条目对应于子索引,并且TCAM/精确匹配混合查找引擎200输出来自TCAM 240的索引和来自存储器244的子索引,它们一起指示TCAM 240中的模式和存储器244中与未压缩键204的匹配项相对应的未压缩模式。在一些实施例中,来自TCAM 240的索引和来自存储器244的子索引一起指示要针对与未压缩键204相对应的分组而采取的动作,诸如如上所述。在一些实施例中,子索引对应于条目群组(或桶)内的条目的顺序。在其他实施例中,相应子索引值存储在条目群组(或桶)内的相应条目中。
在一个实施例中,散列计算器220是使用硬件电路系统来实现的。在另一实施例中,散列计算器220另外地或替代地使用处理器(未示出)来实现,该处理器执行存储在耦合到处理器的存储器(未示出)中的机器可读指令。
在一个实施例中,比较器248是使用硬件电路系统来实现的。在另一实施例中,比较器248另外地或替代地使用处理器(未示出)来实现,该处理器执行存储在耦合到处理器的存储器(未示出)中的机器可读指令。
虽然在TCAM的上下文中讨论了图1-4,但是在其他实施例中,使用CAM并且未压缩键204/300和压缩键228/350不包括任何无关字段。
图5是根据实施例的用于与处理由网络设备接收的分组相结合来执行查找操作的示例方法500的流程图。在一个实施例中,方法500由图1的网络设备100实现。在其他实施例中,方法500由不同于网络设备100的另一合适的网络设备实现。在一个实施例中,由图2的TCAM/精确匹配混合查找引擎200来实现方法500,并且参考图2描述方法500仅用于说明目的。在其他实施例中,方法500由不同于图2的TCAM/精确匹配混合查找引擎200的另一种合适的CAM/精确匹配混合查找引擎来实现,诸如利用非三元CAM的CAM/精确匹配混合查找引擎。
在框504处,网络设备从与分组相对应的一组一个或多个字段生成查找散列值。例如,根据一个实施例,散列计算器220从一个或多个固定字段216生成散列结果224(查找散列值)。
在框512处,网络设备确定该分组的包括查找散列值的压缩查找键是否与CAM中存储的任何压缩模式匹配,该CAM存储与包括相应模式散列值的压缩查找键相对应的压缩模式,该相应模式散列值对应于与分组相关联的数据字段。例如,根据一个实施例,TCAM 240确定压缩键228是否与TCAM 240中存储的任何压缩模式匹配。
在一个实施例中,查找散列值是从与分组相关联的第一组一个或多个数据字段生成的,并且压缩查找键还包括与分组相关联的第二组一个或多个字段。例如,根据一个实施例,压缩查找键228包括查找散列值224和一个或多个无关字段212。
在一个实施例中,方法500还包括使用查找散列值为分组生成压缩查找键。在一个实施例中,在框504处生成查找散列值包括从与分组相关联的第一组一个或多个数据字段生成查找散列值;并且生成压缩查找键包括使用与分组相关联的第二组一个或多个数据字段来生成压缩查找键。例如,根据一个实施例,压缩查找键228被生成为包括查找散列值224和一个或多个无关字段212。
在一个实施例中,方法500还包括将具有与相应模式散列值分开的相应一个或多个字段的压缩模式存储在CAM中。例如,根据一个实施例,除了相应模式散列值,CAM中存储的压缩模式还包括与分组相关联的信息。在另一实施例中,将压缩模式存储在CAM中包括:将一个或多个压缩模式存储在TCAM中,每个压缩模式包括与相应模式散列值分开的无关信息,该无关信息指示TCAM将不会分析压缩查找键中的对应字段。例如,根据一个实施例,TCAM中的一个或多个压缩模式包括设置为无关(DC)值的一个或多个位。
在一个实施例中,在框504处生成查找散列值包括通过将散列函数应用于与分组相关联的该组一个或多个数据字段来生成查找散列值;并且方法500还包括将使用散列函数生成的模式散列值存储在CAM中。
在框516处,CAM输出索引,其对应于与压缩查找键匹配的所存储的压缩模式。例如,根据一个实施例,TCAM 240输出与TCAM 240中存储的与压缩查找键228匹配的压缩模式相对应的索引。
在框520,网络设备使用由CAM输出的索引来从存储与CAM中存储的压缩模式相对应的未压缩模式的存储器中检索未压缩模式。例如,根据一个实施例,由TCAM 240输出的索引用于从存储器244中检索未压缩模式。在一个实施例中,索引指示存储器中存储仅一个未压缩模式的条目,并且框520包括从由索引指示的存储器中的条目中检索未压缩模式。在另一实施例中,索引指示存储多个不同未压缩模式的多个条目的群组(或桶),并且在框520处检索未压缩模式是作为从由索引指示的存储器中的多个条目的群组(或桶)中检索多个不同未压缩模式的一部分而执行的。
在一个实施例中,方法500还包括将未压缩模式存储在随机存取存储器(RAM)中;并且在框520处检索未压缩模式包括从RAM中检索未压缩模式。在一个实施例中,使用由CAM输出的索引从存储器中检索未压缩模式包括:使用由CAM输出的索引从RAM中检索未压缩模式。在另一实施例中,方法500还包括使用由CAM输出的索引来为RAM生成要从其中检索未压缩模式的地址。
在框524处,网络设备将从存储器中检索的未压缩模式和与由网络设备接收的分组相关联的该组一个或多个数据字段进行比较。例如,根据一个实施例,比较器248将从存储器244中检索的未压缩模式与未压缩查找键204的一个或多个固定字段216进行比较。在结合框520从存储器中检索多个不同未压缩模式的实施例中,在框524处将从存储器中检索的未压缩模式和与由网络设备接收的分组相关联的该组一个或多个数据字段进行比较是作为将来自存储器中的多个条目的群组(或桶)的多个不同未压缩模式中的每个与与由网络设备接收的分组相关联的该组一个或多个数据字段进行比较的一部分而执行。
在框528处,网络设备生成指示从存储器中检索的未压缩模式是否匹配与由网络设备接收的分组相关联的该组一个或多个数据字段的信号。例如,比较器248生成指示从存储器244中检索的未压缩模式是否与未压缩查找键204的一个或多个固定字段216匹配的信号。
图6是用于在网络设备的CAM/精确匹配混合查找引擎中存储用于处理由网络设备接收的分组的查找信息的示例方法600的流程图。在一个实施例中,方法600由图1的网络设备100实现。在其他实施例中,方法600由不同于网络设备100的另一合适的网络设备实现。在一个实施例中,方法600由图1的处理器170实现。在一个实施例中,结合图2的TCAM/精确匹配混合查找引擎200来实现方法600,并且参考图2描述方法600仅用于说明目的。在其他实施例中,方法600结合不同于图2的TCAM/精确匹配混合查找引擎200的另一合适的CAM/精确匹配混合查找引擎来实现,诸如利用非三元CAM的CAM/精确匹配混合查找引擎。
在框604处,网络设备从对应于与分组相关联的一个或多个数据字段的一组一个或多个值生成散列值。例如,根据一个实施例,散列计算器220从对应于与分组相关联的一个或多个数据字段的一组一个或多个值生成模式散列值。
在框608处,将散列值存储在混合CAM/精确匹配系统的CAM中的条目中。例如,根据一个实施例,在框604处生成的散列值存储在TCAM 240中。
在一个实施例中,在框604处生成散列值包括从对应于与分组相关联的一个或多个第一数据字段的一组一个或多个第一值生成散列值;并且方法600还包括将对应于与分组相关联的一个或多个第二数据字段的一组一个或多个第二值存储与在其中存储有散列值的CAM中的条目中。例如,根据一个实施例,与一个或多个第二字段相对应的该组一个或多个第二值存储在TCAM 240中。
在一个实施例中,在框608处将散列值存储在CAM中的条目中包括:将散列值存储在混合CAM/精确匹配系统的TCAM中;并且将对应于与分组相关联的一个或多个第二数据字段的该组一个或多个第二值存储在CAM中的条目中包括:将对应于与分组相关联的一个或多个第二数据字段的该组一个或多个第二值存储与在其中存储有散列值的TCAM中的条目中。在一个实施例中,方法600还包括将设置为无关值的一个或多个位存储在存储有散列值的TCAM中的条目中。
在框612处,将对应于与分组相关联的一个或多个数据字段的该组一个或多个值存储在存储器中并且在该存储器中与CAM中的条目相对应的位置处,该存储器被包括在混合CAM/精确匹配系统中并且与CAM分开。例如,根据一个实施例,对应于与分组相关联的一个或多个数据字段的该组一个或多个值被存储在存储器244中。
在一个实施例中,存储器中的多个条目的群组对应于CAM中的条目,并且在框612处存储与一个或多个字段相对应的该组一个或多个值包括:将与该多个条目的群组中的条目之一中的一个或多个字段相对应的该组一个或多个值存储在存储器中。
在另一实施例中,方法600还包括网络设备确定在框604处生成的散列值是否与已经存储在CAM中的任何其他散列值匹配,该其他散列值是从与在框604处从其生成散列值的该组一个或多个值不同的各组一个或多个其他值生成的;并且在框608处将散列值存储在CAM中的条目中是响应于确定在框604处生成的散列值与已经存储在CAM中的任何其他散列值不匹配而执行的,该其他散列值是从与在框604处从其生成散列值的该组一个或多个值不同的各组一个或多个其他值生成的。
在另一实施例中,如果在框604处生成的散列值与已经存储在CAM中的另一散列值匹配,该另一散列值是从与在框604处从其生成散列值的该组一个或多个值不同的一组一个或多个其他值生成的,在框608中,网络设备将包括从其生成散列值的该组一个或多个值的未压缩模式存储在另一CAM中,而不是将散列值存储在CAM中的条目中。
在另一实施例中,如果第一散列值与已经存储在CAM中的第二散列值匹配,则在框604处生成的散列值是第一散列值,该第二散列值是从与从其生成第一散列值的该组一个或多个值不同的一组一个或多个其他值生成的,不执行在框608处将第一散列值存储在CAM中的条目中,并且在框612处存储与一个或多个字段相对应的该组一个或多个值包括:将与一个或多个字段相对应的该组一个或多个值存储在存储器中的多个条目的群组中的多个条目中的一个条目中,多个条目的群组对应于存储第二散列值的CAM中的条目。
实施例1:一种用于为网络设备执行查找的装置,该装置包括:散列计算器,被配置为从一组一个或多个数据字段生成查找散列值,该一组一个或多个数据字段与由该网络设备接收的分组相关联,该数据字段中的至少一些数据字段是该分组的报头字段;压缩查找键生成器,被配置为使用该查找散列值为该分组生成压缩查找键;内容可寻址存储器(CAM),被配置为i)存储与压缩查找键相对应的压缩模式,该压缩模式包括与对应于分组相关联的数据字段的相应模式散列值,ii)使用从该压缩查找键生成器接收的该压缩查找键来确定所接收的压缩查找键是否与任何存储的压缩模式匹配,以及iii)输出索引,该索引对应于与从该压缩查找键生成器接收的该压缩查找键匹配的所存储的压缩模式;存储器,被配置为i)存储与该CAM中存储的该压缩模式相对应的未压缩模式,以及ii)使用由该CAM输出的该索引检索未压缩模式;以及比较器,被配置为生成信号,该信号指示从该存储器中检索的该未压缩模式是否匹配与由该网络设备接收的该分组相关联的该一组一个或多个数据字段。
实施例2:根据实施例1该的装置,其中:该散列计算器被配置为从与该分组相关联的第一组一个或多个数据字段生成该查找散列值;以及该压缩查找键生成器被配置为还使用与该分组相关联的第二组一个或多个数据字段来为该分组生成该压缩查找键。
实施例3:根据实施例2该的装置,其中该CAM被配置为:存储具有与该相应模式散列值分开的相应一个或多个字段的压缩模式。
实施例4:根据实施例3该的装置,其中该CAM是三元内容可寻址存储器(TCAM),该三元内容可寻址存储器被配置为:存储一个或多个压缩模式,每个压缩模式包括与该相应模式散列值分开的无关信息,该无关信息指示该TCAM将不会分析该压缩查找键中的对应字段。
实施例5:根据实施例1-4中任一项该的装置,其中:被配置为存储未压缩模式的该存储器包括随机存取存储器(RAM)。
实施例6:根据实施例5该的装置,还包括:地址生成器电路,被配置为使用由该CAM输出的该索引来为该RAM生成要从其中检索该未压缩模式的地址。
实施例7:根据实施例1-6中任一项该的装置,其中:该散列计算器被配置为通过将散列函数应用于该一组一个或多个字段来生成该查找散列值;以及该CAM被配置为存储使用该散列函数生成的模式散列值。
实施例8:一种用于与处理由网络设备接收的分组相结合来执行查找操作的方法,该方法包括:在该网络设备处从与该分组相关联的一组一个或多个数据字段生成查找散列值,该数据字段中的至少一些数据字段是该分组的报头字段;在该网络设备处确定该分组的包括该查找散列值的压缩查找键是否与内容可寻址存储器(CAM)中存储的任何压缩模式匹配,该内容可寻址存储器存储与包括相应模式散列值的压缩查找键相对应的压缩模式,该相应模式散列值对应于与分组相关联的数据字段;由该CAM输出索引,该索引对应于与该压缩查找键匹配的所存储的压缩模式;使用由该CAM输出的该索引,来从存储与该CAM中存储的该压缩模式相对应的未压缩模式的存储器中检索未压缩模式;在该网络设备处将从该存储器中检索的该未压缩模式和与由该网络设备接收的该分组相关联的该一组一个或多个数据字段进行比较;以及由该网络设备生成信号,该信号指示从该存储器中检索的该未压缩模式是否匹配与由该网络设备接收的该分组相关联的该一组一个或多个数据字段。
实施例9:根据实施例8该的方法,还包括:在该网络设备处使用该查找散列值生成该压缩查找键。
实施例10:根据实施例8或9中任一项该的方法,其中:生成该查找散列值包括:从与该分组相关联的第一组一个或多个数据字段生成该查找散列值;以及生成该压缩查找键包括:使用与该分组相关联的第二组一个或多个数据字段生成该压缩查找键。
实施例11:根据实施例10该的方法,还包括:将具有与相应模式散列值分开的相应一个或多个字段的压缩模式存储在该CAM中。
实施例12:根据实施例11该的方法,其中将压缩模式存储在该CAM中包括:将一个或多个压缩模式存储在三元内容可寻址存储器(TCAM)中,每个压缩模式包括与相应模式散列值分开的无关信息,该无关信息指示该TCAM将不会分析该压缩查找键中的对应字段。
实施例13:根据实施例8-12中任一项该的方法,还包括:将该未压缩模式存储在随机存取存储器(RAM)中;其中使用由该CAM输出的该索引从该存储器中检索该未压缩模式包括:使用由该CAM输出的该索引从该RAM中检索该未压缩模式。
实施例14:根据实施例13该的方法,还包括:在该网络设备处使用由该CAM输出的该索引来为该RAM生成要从其中检索该未压缩模式的地址。
实施例15:根据实施例8-14中任一项该的方法,其中:生成该查找散列值包括:通过将散列函数应用于该一组一个或多个字段来生成该查找散列值;以及该方法还包括:将使用该散列函数生成的模式散列值存储在该CAM中。
实施例16:一种用于在网络设备的内容可寻址存储器(CAM)/精确匹配混合查找引擎中存储查找信息的方法,以用于处理由该网络设备接收的分组,该方法包括:在该网络设备处从一组一个或多个值生成散列值,该一组一个或多个值对应于与分组相关联的一个或多个数据字段;将该散列值存储在该CAM/精确匹配混合查找引擎的CAM中的条目中;以及将与该一个或多个数据字段相对应的该一组一个或多个值存储在存储器中,在该存储器中与该CAM中的该条目相对应的位置处,该存储器被包括在该CAM/精确匹配混合查找引擎中,与该CAM分开。
实施例17:根据实施例16该的方法,其中:生成该散列值包括:从一组一个或多个第一值生成该散列值,该一组一个或多个第一值对应于与分组相关联的一个或多个第一数据字段;以及该方法还包括:将对应于与分组相关联的一个或多个第二数据字段的一组一个或多个第二值存储于在其中存储有该散列值的该CAM中的该条目中。
实施例18:根据实施例17该的方法,其中:将该散列值存储在该CAM中的该条目中包括将该散列值存储在该CAM/精确匹配混合查找引擎的三元内容可寻址存储器(TCAM)中;以及将对应于与分组相关联的一个或多个第二数据字段的该一组一个或多个第二值存储在该CAM中的该条目中包括:将对应于与分组相关联的一个或多个第二数据字段的该一组一个或多个第二值存储于在其中存储有该散列值的该TCAM中的该条目中。
实施例19:根据实施例18该的方法,还包括:将设置为无关值的一个或多个位存储于在其中存储有该散列值的该TCAM中的该条目中。
实施例20:根据实施例16-19中任一项该的方法,其中:该存储器中的多个条目的群组对应于该CAM中的该条目;以及存储与该一个或多个数据字段相对应的该一组一个或多个值包括:将与该一个或多个数据字段相对应的该一组一个或多个值存储在该存储器中的该多个条目的群组中的该条目中的一个条目中。
实施例21:根据实施例16-19中任一项该的方法,还包括:在该网络设备处确定该散列值是否与已经存储在该CAM中的任何其他散列值匹配,该其他散列值已经从与从其生成该散列值的该一组一个或多个值不同的多组一个或多个其他值被生成。
实施例22:根据实施例21该的方法,其中:将该散列值存储在该CAM中的该条目中是响应于确定该散列值与已经存储在该CAM中的任何其他散列值不匹配而执行的,该其他散列值是从与从其生成该散列值的该一组一个或多个值不同的多组一个或多个其他值生成的。
实施例23:根据实施例21该的方法,还包括:响应于该网络设备确定该散列值与已经存储在该CAM中的另一散列值匹配,将包括从其生成该散列值的该一组一个或多个值的未压缩模式存储在另一CAM中,该另一散列值是从与从其生成该散列值的该一组一个或多个值不同的一组一个或多个其他值生成的。
实施例24:根据实施例21该的方法,其中该散列值是第一散列值,并且其中该方法还包括:响应于该网络设备确定该第一散列值与已经存储在该CAM中的第二散列值匹配,存储与该一个或多个字段相对应的该一组一个或多个值包括:将与该一个或多个字段相对应的该一组一个或多个值存储在该存储器中的多个条目的群组中的多个条目中的一个条目中,该多个条目的群组对应于存储该第二散列值的该CAM中的条目,该第二散列值是从与从其生成该第一散列值的该一组一个或多个值不同的一组一个或多个其他值生成的。
根据一些实施例,上述各种块、操作等可以在硬件中实现,诸如在一个或多个定制集成电路、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等中。在其他实施例中,上述的一些块、操作等可以全部或部分地通过处理器执行存储在耦合到处理器的存储器中的机器可读软件和/或固件指令来实现。
虽然已经参考具体示例描述了本发明,这些示例仅用于说明而非限制本发明,但是本领域普通技术人员将很清楚,在不脱离本发明的精神和范围的情况下,除了以上明确描述的那些,还可以对所公开的实施例做出其他改变、添加或删除。
Claims (18)
1.一种用于为网络设备执行查找的装置,所述装置包括:
查找引擎,被配置为接收与由所述网络设备接收的分组相关联的未压缩查找键,所述未压缩查找键具有:i)与所述分组相关联的第一组一个或多个数据字段,所述第一组一个或多个数据字段中的数据字段中的至少一个数据字段来自所述分组的报头,以及ii)与所述分组相关联的第二组一个或多个数据字段,所述第二组一个或多个数据字段中的数据字段中的至少一个数据字段来自所述分组的所述报头;
其中所述查找引擎包括散列计算器,所述散列计算器被配置为根据与所述分组相关联的所述第一组一个或多个数据字段来生成查找散列值;
其中所述查找引擎还被配置为针对所述分组生成压缩查找键,所述压缩查找键包括:i)所述查找散列值,以及ii)具有与所述分组相关联的所述第二组一个或多个数据字段的查找未散列值;并且
其中,所述查找引擎还包括:
内容可寻址存储器CAM,被配置为i)存储与压缩查找键相对应的压缩模式,所述压缩模式中的至少一些压缩模式中的每个压缩模式包括a)对应于与分组相关联的第一数据字段的相应模式散列值以及b)对应于与分组相关联的第二数据字段的相应未散列值,ii)使用从所述压缩查找键生成器接收的所述压缩查找键来确定所接收的压缩查找键是否与任何存储的压缩模式匹配,以及iii)输出索引,所述索引对应于与从所述压缩查找键生成器接收的所述压缩查找键匹配的所存储的压缩模式;
存储器,被配置为i)存储与所述CAM中存储的所述压缩模式相对应的未压缩模式,以及ii)使用由所述CAM输出的所述索引检索未压缩模式;以及
比较器,被配置为i)仅将所述未压缩查找键的部分与从所述存储器中检索的所述未压缩模式进行比较,所述未压缩查找键的所述部分包括与所述分组相关联的所述第一组一个或多个数据字段,以及ii)生成信号,所述信号指示从所述存储器中检索的所述未压缩模式是否匹配与由所述网络设备接收的所述分组相关联的所述第一组一个或多个数据字段。
2.根据权利要求1所述的装置,其中所述CAM是三元内容可寻址存储器TCAM,所述三元内容可寻址存储器被配置为:
存储一个或多个压缩模式,每个压缩模式包括与所述相应模式散列值分开的无关信息,所述无关信息指示所述TCAM将不会分析所述压缩查找键中的对应字段。
3.根据权利要求1所述的装置,其中:
被配置为存储未压缩模式的所述存储器包括随机存取存储器RAM。
4.根据权利要求3所述的装置,还包括:
地址生成器电路,被配置为使用由所述CAM输出的所述索引来为所述RAM生成要从其中检索所述未压缩模式的地址。
5.根据权利要求1所述的装置,其中:
所述散列计算器被配置为通过将散列函数应用于所述第一组一个或多个数据字段来生成所述查找散列值;以及
所述CAM被配置为存储使用所述散列函数生成的模式散列值。
6.一种用于与处理由网络设备接收的分组相结合来执行查找操作的方法,所述方法包括:
在所述网络设备处,接收与由所述网络设备接收的分组相关联的未压缩查找键,所述未压缩查找键具有:i)与所述分组相关联的第一组一个或多个数据字段,所述第一组一个或多个数据字段中的数据字段中的至少一个数据字段来自所述分组的报头,以及ii)与所述分组相关联的第二组一个或多个数据字段,所述第二组一个或多个数据字段中的数据字段中的至少一个数据字段来自所述分组的所述报头;
在所述网络设备处,根据与所述分组相关联的所述第一组一个或多个数据字段来生成查找散列值;
在所述网络设备处,针对所述分组生成压缩查找键,所述压缩查找键包括:i)所述查找散列值,以及ii)具有与所述分组相关联的所述第二组一个或多个数据字段的查找未散列值;
在所述网络设备处确定所述分组的所述压缩查找键是否与内容可寻址存储器CAM中存储的任何压缩模式匹配,所述内容可寻址存储器存储与压缩查找键相对应的压缩模式,所述压缩模式中的至少一些压缩模式中的每个压缩模式包括i)对应于与分组相关联的第一数据字段的相应模式散列值,以及ii)对应于与分组相关联的第二数据字段的相应未散列值;
由所述CAM输出索引,所述索引对应于与所述压缩查找键匹配的所存储的压缩模式;
使用由所述CAM输出的所述索引,来从存储与所述CAM中存储的所述压缩模式相对应的未压缩模式的存储器中检索未压缩模式;
在所述网络设备处将从所述存储器中检索的所述未压缩模式仅与所述未压缩查找键的部分进行比较,所述未压缩查找键的所述部分包括与由所述网络设备接收的所述分组相关联的所述第一组一个或多个数据字段;以及
由所述网络设备生成信号,所述信号指示从所述存储器中检索的所述未压缩模式是否匹配与由所述网络设备接收的所述分组相关联的所述第一组一个或多个数据字段。
7.根据权利要求6所述的方法,其中:
所述CAM是三元内容可寻址存储器TCAM;以及
所述方法还包括:将一个或多个压缩模式存储在所述TCAM中,每个压缩模式包括与所述相应模式散列值分开的无关信息,所述无关信息指示所述TCAM将不会分析所述压缩查找键中的对应字段。
8.根据权利要求6所述的方法,还包括:
将所述未压缩模式存储在随机存取存储器(RAM)中;
其中使用由所述CAM输出的所述索引从所述存储器中检索所述未压缩模式包括:使用由所述CAM输出的所述索引从所述RAM中检索所述未压缩模式。
9.根据权利要求8所述的方法,还包括:
在所述网络设备处使用由所述CAM输出的所述索引来为所述RAM生成要从其中检索所述未压缩模式的地址。
10.根据权利要求6所述的方法,其中:
生成所述查找散列值包括:通过将散列函数应用于所述第一组一个或多个数据字段来生成所述查找散列值;以及
所述方法还包括:将使用所述散列函数生成的模式散列值存储在所述CAM中。
11.一种用于在网络设备的内容可寻址存储器CAM/精确匹配混合查找引擎中存储查找信息的方法,以用于处理由所述网络设备接收的分组,所述方法包括:
在所述网络设备处接收未压缩模式,所述未压缩模式具有:i)对应于与分组相关联的一个或多个第一数据字段的第一组一个或多个值,以及ii)对应于与分组相关联的一个或多个第二数据字段的第二组一个或多个值;
在所述网络设备处从所述第一组一个或多个值生成散列值,所述第一组一个或多个值对应于与分组相关联的一个或多个第一数据字段;
在所述网络设备处生成压缩模式以包括i)所述散列值和ii)具有对应于与分组相关联的一个或多个第二数据字段的所述第二组一个或多个值的未散列值;
将所述压缩模式存储在所述CAM/精确匹配混合查找引擎的CAM中的条目中;以及
仅将所述未压缩模式的部分存储在存储器中的对应于所述CAM中的所述条目的位置处,该步骤包括:将对应于所述一个或多个第一数据字段的所述第一组一个或多个值存储在所述存储器中的对应于所述CAM中的所述条目的位置处,所述存储器被包括在所述CAM/精确匹配混合查找引擎中,与所述CAM分开。
12.根据权利要求11所述的方法,其中将所述压缩模式存储在所述CAM的所述条目中包括:
将所述散列值存储在所述CAM/精确匹配混合查找引擎的三元内容可寻址存储器TCAM的条目中;以及
将对应于一个或多个第二数据字段的所述第二组一个或多个值存储在其中存储有所述散列值的所述TCAM中的所述条目中。
13.根据权利要求12所述的方法,还包括:
将设置为无关值的一个或多个位存储于在其中存储有所述散列值的所述TCAM中的所述条目中。
14.根据权利要求11所述的方法,其中:
所述存储器中的多个条目的群组对应于所述CAM中的所述条目;以及
将与所述一个或多个第一数据字段相对应的所述第一组一个或多个值存储在所述存储器中包括:将与所述一个或多个第一数据字段相对应的所述第一组一个或多个值存储在所述存储器中的所述多个条目的群组中的所述条目中的一个条目中。
15.根据权利要求11所述的方法,还包括:
在所述网络设备处确定所述散列值是否与已经存储在所述CAM中的任何其他散列值匹配,所述其他散列值已经从与从其生成所述散列值的所述第一组一个或多个值不同的多组一个或多个其他值被生成。
16.根据权利要求15所述的方法,其中:
将所述压缩模式存储在所述CAM中的所述条目中是响应于确定所述散列值与已经存储在所述CAM中的任何其他散列值不匹配而执行的,所述其他散列值是从与从其生成所述散列值的所述第一组一个或多个值不同的多组一个或多个其他值生成的。
17.根据权利要求15所述的方法,还包括:
响应于所述网络设备确定所述散列值与已经存储在所述CAM中的另一散列值匹配,将包括从其生成所述散列值的所述第一组一个或多个值的未压缩模式存储在另一CAM中,所述另一散列值是从与从其生成所述散列值的所述第一组一个或多个值不同的一组一个或多个其他值生成的。
18.根据权利要求15所述的方法,其中所述散列值是第一散列值,并且其中所述方法还包括:
响应于所述网络设备确定所述第一散列值与已经存储在所述CAM中的第二散列值匹配,存储与所述一个或多个第一数据字段相对应的所述第一组一个或多个值包括:将与所述一个或多个第一数据字段相对应的所述第一组一个或多个值存储在所述存储器中的多个条目的群组中的多个条目中的一个条目中,所述多个条目的群组对应于存储所述第二散列值的所述CAM中的条目,所述第二散列值是从与从其生成所述第一散列值的所述第一组一个或多个值不同的一组一个或多个其他值生成的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962790724P | 2019-01-10 | 2019-01-10 | |
US62/790,724 | 2019-01-10 | ||
PCT/IB2020/050203 WO2020144655A1 (en) | 2019-01-10 | 2020-01-10 | Exact match and ternary content addressable memory (tcam) hybrid lookup for network device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113519144A CN113519144A (zh) | 2021-10-19 |
CN113519144B true CN113519144B (zh) | 2023-06-27 |
Family
ID=69326583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080017420.4A Active CN113519144B (zh) | 2019-01-10 | 2020-01-10 | 用于网络设备的精确匹配和三元内容可寻址存储器(tcam)混合查找 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11362948B2 (zh) |
CN (1) | CN113519144B (zh) |
WO (1) | WO2020144655A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111984835B (zh) * | 2020-08-20 | 2022-07-05 | 国家计算机网络与信息安全管理中心 | 一种IPv4掩码五元组规则存储压缩方法及装置 |
US11782895B2 (en) | 2020-09-07 | 2023-10-10 | Mellanox Technologies, Ltd. | Cuckoo hashing including accessing hash tables using affinity table |
WO2023017315A1 (en) * | 2021-08-12 | 2023-02-16 | Marvell Israel (M.I.S.L) Ltd. | Network device that utilizes tcam configured to output multiple match indices |
US11917042B2 (en) * | 2021-08-15 | 2024-02-27 | Mellanox Technologies, Ltd. | Optimizing header-based action selection |
US11929837B2 (en) | 2022-02-23 | 2024-03-12 | Mellanox Technologies, Ltd. | Rule compilation schemes for fast packet classification |
US11968285B2 (en) | 2022-02-24 | 2024-04-23 | Mellanox Technologies, Ltd. | Efficient memory utilization for cartesian products of rules |
US11924102B2 (en) * | 2022-04-05 | 2024-03-05 | Nxp B.V. | Minimizing deviation from average latency of table lookups |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7197597B1 (en) * | 2003-07-22 | 2007-03-27 | Cisco Technology, Inc. | Performing lookup operations in a content addressable memory based on hashed values of particular use in maintaining statistics for packet flows |
CN102232219A (zh) * | 2010-01-26 | 2011-11-02 | 华为技术有限公司 | 关键字存储、查找的方法及装置 |
CN105229980A (zh) * | 2013-04-11 | 2016-01-06 | 马维尔以色列(M.I.S.L.)有限公司 | 利用可变关键字大小的精确匹配查找 |
CN105791455A (zh) * | 2014-12-26 | 2016-07-20 | 中兴通讯股份有限公司 | 三态内容寻址存储器tcam空间的处理方法及装置 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7260673B1 (en) * | 2001-07-20 | 2007-08-21 | Cisco Technology, Inc. | Method and apparatus for verifying the integrity of a content-addressable memory result |
US8295286B2 (en) * | 2003-12-31 | 2012-10-23 | Stmicroelectronics, Inc. | Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware |
US20060248095A1 (en) | 2005-04-29 | 2006-11-02 | Cisco Technology, Inc. (A California Corporation) | Efficient RAM lookups by means of compressed keys |
US7469317B2 (en) * | 2006-09-12 | 2008-12-23 | Alcatel Lucent | Method and system for character string searching |
US7859877B2 (en) | 2007-02-12 | 2010-12-28 | Marvell Israel (M.I.S.L.) Ltd. | Apparatus to detect patterns in data |
US8176242B1 (en) | 2008-05-05 | 2012-05-08 | Marvell International Ltd. | Apparatus and method for improving CAM usage |
CN101350771B (zh) * | 2008-07-07 | 2010-12-29 | 中国人民解放军国防科学技术大学 | 三态内容可寻址存储器条目免排序存储方法及其系统 |
US9280609B2 (en) * | 2009-09-08 | 2016-03-08 | Brocade Communications Systems, Inc. | Exact match lookup scheme |
US8848715B2 (en) | 2010-03-16 | 2014-09-30 | Marvell Israel (M.I.S.L) Ltd. | Combined hardware/software forwarding mechanism and method |
US20130018932A1 (en) * | 2011-07-12 | 2013-01-17 | Hughes Network Systems, Llc | System and method for long range and short range data compression |
US9171030B1 (en) | 2012-01-09 | 2015-10-27 | Marvell Israel (M.I.S.L.) Ltd. | Exact match lookup in network switch devices |
US9672239B1 (en) | 2012-10-16 | 2017-06-06 | Marvell Israel (M.I.S.L.) Ltd. | Efficient content addressable memory (CAM) architecture |
US9367645B1 (en) * | 2012-10-17 | 2016-06-14 | Marvell International Ltd. | Network device architecture to support algorithmic content addressable memory (CAM) processing |
US9094350B2 (en) * | 2013-03-15 | 2015-07-28 | Polytechnic Institute Of New York University | Finding nonequivalent classifiers to reduce ternary content addressable memory (TCAM) usage |
US9537771B2 (en) | 2013-04-04 | 2017-01-03 | Marvell Israel (M.I.S.L) Ltd. | Exact match hash lookup databases in network switch devices |
US9502111B2 (en) * | 2013-11-05 | 2016-11-22 | Cisco Technology, Inc. | Weighted equal cost multipath routing |
CN103581023A (zh) * | 2013-11-06 | 2014-02-12 | 盛科网络(苏州)有限公司 | 实现最长掩码匹配的方法及装置 |
US9620213B2 (en) * | 2013-12-27 | 2017-04-11 | Cavium, Inc. | Method and system for reconfigurable parallel lookups using multiple shared memories |
US9703484B2 (en) * | 2014-10-09 | 2017-07-11 | Memobit Technologies Ab | Memory with compressed key |
US9590948B2 (en) * | 2014-12-15 | 2017-03-07 | Cisco Systems, Inc. | CCN routing using hardware-assisted hash tables |
-
2020
- 2020-01-10 US US16/740,170 patent/US11362948B2/en active Active
- 2020-01-10 WO PCT/IB2020/050203 patent/WO2020144655A1/en active Application Filing
- 2020-01-10 CN CN202080017420.4A patent/CN113519144B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7197597B1 (en) * | 2003-07-22 | 2007-03-27 | Cisco Technology, Inc. | Performing lookup operations in a content addressable memory based on hashed values of particular use in maintaining statistics for packet flows |
CN102232219A (zh) * | 2010-01-26 | 2011-11-02 | 华为技术有限公司 | 关键字存储、查找的方法及装置 |
CN105229980A (zh) * | 2013-04-11 | 2016-01-06 | 马维尔以色列(M.I.S.L.)有限公司 | 利用可变关键字大小的精确匹配查找 |
CN105791455A (zh) * | 2014-12-26 | 2016-07-20 | 中兴通讯股份有限公司 | 三态内容寻址存储器tcam空间的处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2020144655A1 (en) | 2020-07-16 |
CN113519144A (zh) | 2021-10-19 |
US20200228449A1 (en) | 2020-07-16 |
US11362948B2 (en) | 2022-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113519144B (zh) | 用于网络设备的精确匹配和三元内容可寻址存储器(tcam)混合查找 | |
US11102120B2 (en) | Storing keys with variable sizes in a multi-bank database | |
US10389633B2 (en) | Hash-based address matching | |
US9569561B2 (en) | Label masked addressable memory | |
US9997245B1 (en) | Method and apparatus for TCAM based look-up | |
US9819637B2 (en) | Efficient longest prefix matching techniques for network devices | |
US20170085482A1 (en) | Exact match hash lookup databases in network switch devices | |
US7852850B2 (en) | Double-hash lookup mechanism for searching addresses in a network device | |
JP4742167B2 (ja) | Camのキーサイズを超えるテーブルインデックスを用いてテーブルルックアップ動作を実行する方法 | |
US7903666B1 (en) | Method and system for compressing route entries in a route table based on equal-cost multi-paths (ECMPs) matches | |
US7480299B2 (en) | Rules engine for access control lists in network units | |
US7480255B2 (en) | Data structure identifying for multiple addresses the reverse path forwarding information for a common intermediate node and its use | |
US20070171911A1 (en) | Routing system and method for managing rule entry thereof | |
WO2014127605A1 (zh) | 基于哈希表和tcam表的mac地址硬件学习方法及系统 | |
US10397116B1 (en) | Access control based on range-matching | |
US9159420B1 (en) | Method and apparatus for content addressable memory parallel lookup | |
US20060265370A1 (en) | Method and apparatus for reducing overflow of hash table entries | |
US8848707B2 (en) | Method for IP longest prefix match using prefix length sorting | |
US10587516B1 (en) | Hash lookup table entry management in a network device | |
US7403526B1 (en) | Partitioning and filtering a search space of particular use for determining a longest prefix match thereon | |
WO2021104393A1 (zh) | 多规则流分类的实现方法、设备和存储介质 | |
US11018978B1 (en) | Configurable hash-based lookup in network devices | |
US10205658B1 (en) | Reducing size of policy databases using bidirectional rules | |
CN110971526B (zh) | 一种混合交换机fdb资源的流表扩展方法及装置 | |
CN107204926B (zh) | 预处理cache的路由快速查找方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |