利用可变关键字大小的精确匹配查找的制作方法

文档序号:9476542阅读:203来源:国知局
利用可变关键字大小的精确匹配查找的制作方法
【专利说明】利用可变关键字大小的精确匹配查找
[0001]相关串请的交叉引用
[0002]本申请要求于2013年4月11日提交的题为“Exact Match with Variable KeySizes”的美国临时申请N0.61/811011以及于2014年I月2日提交的题为“Exact Matchwith Variable Key Sizes”的美国临时申请N0.61/923093的权益,其公开通过引用结合于此。
[0003]本申请涉及于2012年8月31日提交的题为“Method and Apparatus For TCAMBased Lookup”的美国专利申请N0.13/966962,于2013年I月9日提交的题为“Exact MatchLookup In Network Switch Device” 的美国专利申请 N0.13/737608,以及于 2013 年 8 月28 日提交的题为“Exact Match Hash Lookup Databases in Network Switch Devices”的美国专利申请N0.14/012834,上述申请的公开通过引用结合于此。
技术领域
[0004]本公开总体上涉及网络设备,更特别地涉及网络设备中的精确匹配查找。
【背景技术】
[0005]诸如网络交换机、桥接器、路由器、边缘设备等的网络设备经常采用存储与该网络设备所处理的分组相关联的各种类型的信息的查找表。该网络设备在处理分组时经常在查找表中执行搜索/查找以作出各种处理决策或确定(例如,对分组归类,要将分组转发至哪个端口,等等)。通常,针对分组的查找根据与该分组相关联的关键字来执行。该关键字通常包括来自该分组的报头的信息,而且有时包括可能并未包括在报头中的其它信息,诸如进入接口。该关键字例如被用来搜索表格,并且有关该分组的信息(例如,该分组的转发信息或者指示一些其它动作的信息)从被该关键字所标识的表格条目所获取。
[0006]一些查找表使用内容可寻址存储器(CAM)(例如,三元CAM(TCAM)),其一般被用于“屏蔽”搜索/查找。然而,近年来,网络设备越来越多地开始执行“精确匹配”查找。虽然基于CAM的表格可以被用于精确匹配查找,但是与基于随机访问存储器(RAM)的表格一诸如使用静态RAM(SRAM)所实施的表格一相比,它们通常对于这样的查找不太有效(例如,在面积和功耗方面)。精确匹配查找目前被用来执行任意多种不同的分组处理操作,诸如分组归类、作出转发或路由决策、服务质量归类、策略控制列表应用、隧道终止操作等。此外,由于各种各样的可能处理操作,精确匹配查找可能要去使用具有不同关键字大小的多种不同类型的关键字。例如,典型地,基于介质访问控制(MAC)地址和虚拟局域网(VLAN)标识符的桥接查找使用60位的关键字,而针对IPv4地址的查找使用32位的关键字,针对IPv6地址的路由的查找则使用128位的关键字,等等。为了应对各种关键字大小,一些常规的网络设备将所有较短关键字补充为最大的所支持关键字大小的位长度,或者提供存储在不同存储器中的单独查找表,其中每个表格仅由单一固定大小的关键字进行索引。然而,这两种技术通常在存储器资源的利用方面都是低效的,这最终会增大电路面积和/或功耗。例如,就前者的技术而言,即使相对短的关键字也占据与长关键字相同数量的查找表存储器。此外,由于每个表格/关键字大小将需要的条目数量和/或关键字大小的分布通常并非是事先已知的,所以使用后者的技术的系统设计人员通常无法确定将有效利用查找存储器资源的每查找表/关键字大小的条目数量。

【发明内容】

[0007]在一个实施例中,一种用于在网络设备中执行精确匹配查找的方法,包括在该网络设备接收网络分组;至少基于所接收到的网络分组的报头中所包括的数据确定该网络分组的查找关键字;至少基于该查找关键字的大小从多个可能散列函数中选择一个散列函数;使用所选择的散列函数对该查找关键字执行散列操作以计算散列查找关键字分段;并且使用该散列查找关键字分段来查询数据库以提取出精确地对应于该查找关键字的数值。
[0008]在另一个实施例中,一种网络设备包括多个接口、存储数据库的查找存储器、以及耦合至该多个接口的分组处理器。该分组处理器被配置为对经由该多个接口中的至少一些所接收的网络分组进行处理,并且包括关键字生成单元,关键字生成单元被配置为至少基于所接收到的网络分组的报头中所包括的数据确定经由该多个接口之一所接收到的网络分组的查找关键字。该分组处理器还包括关键字搜索单元,其被配置为至少基于该查找关键字的大小从多个可能散列函数中选择一个散列函数,使用所选择的散列函数对该查找关键字执行散列操作以计算散列查找关键字分段,并且使用该散列查找关键字分段来查询数据库以提取出精确地对应于该查找关键字的数值。
[0009]在另一个实施例中,一种用于在网络设备中执行精确匹配查找的方法,包括在该网络设备接收网络分组;至少基于所接收到的网络分组的报头中所包括的数据确定该网络分组的查找关键字;使用两个或更多散列函数对该查找关键字执行两个或更多散列操作以计算两个或更多散列查找关键字分段;并且使用该两个或更多散列关键字分段来查询在两个或更多存储器组之间进行分布的数据库以提取出精确地对应于该查找关键字的数值。查询该数据库包括使用该两个或更多散列查找关键字分段来访问该两个或更多存储器组以标识两个或更多匹配分段;获取与该两个或更多匹配分段中的至少一个相关联的至少一个指针;并且使用该至少一个指针将匹配分段中的至少两个进行组合以标识该数据库中的匹配条目,精确地对应于该查找关键字的数值是与该匹配条目相关联的数值。
[0010]在另一个实施例中,一种网络设备包括多个接口、存储在两个或更多存储器组之间进行分布的数据库的查找存储器,以及耦合至该多个接口的分组处理器。该分组处理器被配置为对经由该多个接口中的至少一些所接收的网络分组进行处理。该分组处理器包括关键字生成单元和关键字搜索单元,关键字生成单元被配置为至少基于所接收到的网络分组的报头中所包括的数据确定经由该多个接口之一所接收到的网络分组的查找关键字。该关键字搜索单元被配置为使用两个或更多散列函数对该查找关键字执行两个或更多散列操作以计算两个或更多散列查找关键字分段,并且使用该两个或更多散列关键字分段来查询该数据库以提取出精确地对应于该查找关键字的数值。该关键字搜索单元被配置为至少通过使用该两个或更多散列查找关键字分段来访问该两个或更多存储器组以标识两个或更多匹配分段,获取与该两个或更多匹配分段中的至少一个相关联的至少一个指针,并且使用该至少一个指针将匹配分段中的至少两个进行组合以标识该数据库中的匹配条目来查询该数据库,精确地对应于该查找关键字的数值是与该匹配条目相关联的数值。
[0011]在另一个实施例中,一种用于在网络设备中填充精确匹配查找表的方法,包括确定要存储在该网络设备的数据库中的查找关键字,该数据库在两个或更多存储器组之间进行分布。该方法还包括至少基于该查找关键字的大小(i)从该两个或更多存储器组之间选择第一存储器组,并且(ii)从多个可能散列函数中选择一个散列函数,使用所选择的散列函数对该查找关键字执行散列操作以计算第一散列查找关键字分段,将该第一散列查找关键字分段存储在所选择的第一存储器组中,并且将对应于该查找关键字的一个或多个散列查找关键字分段存储在该两个或更多存储器组中的一个或多个后续存储器组中。
[0012]在另一个实施例中,一种网络设备包括多个接口、存储在两个或更多存储器组之间进行分布的数据库的查找存储器、以及耦合至该多个接口的分组处理器。该分组处理器被配置为对经由该多个接口中的至少一些所接收的网络分组进行处理。该分组处理器包括关键字生成单元以及关键字插入单元,关键字生成单元被配置为至少基于所接收到的网络分组的报头中所包括的数据确定经由该多个接口之一所接收到的网络分组的查找关键字。该关键字插入单元被配置为至少基于该查找关键字的大小(i)从该两个或更多存储器组之间选择第一存储器组,并且(ii)从多个可能散列函数中选择一个散列函数,使用所选择的散列函数对该查找关键字执行散列操作以计算第一散列查找关键字分段,将该第一散列查找关键字分段存储在所选择的第一存储器组中,并且将对应于该查找关键字的一个或多个散列查找关键字分段存储在该两个或更多存储器组中的一个或多个后续存储器组中。
[0013]在另一个实施例中,一种用于在网络设备中填充精确匹配查找表的方法,包括确定要存储在该网络设备的数据库中的查找关键字,该数据库在两个或更多存储器组之间进行分布。该方法还包括使用两个或更多散列函数对该查找关键字执行两个或更多散列操作以计算两个或更多散列查找关键字分段,至少包括使用第一散列函数计算第一散列查找关键字分段,并且使用第二散列函数计算第二散列查找关键字分段。该方法还包括将该第一散列查找关键字分段存储在该两个或更多存储器组中的第一存储器组中,将该第二散列查找关键字分段存储在该两个或更多存储器组中的第二存储器组中,并且将指针与该第一散列查找关键字分段相关联,该指针指示该第二散列查找关键字分段在该第二存储器组中的位置。
[0014]在另一个实施例中,一种网络设备包括多个接口,以及存储在两个或更多存储器组之间进行分布的数据库的查找存储器。该两个或更多存储器组至少包括第一存储器组和第二存储器组。该网络设备还包括耦合至该多个接口的分组处理器。该分组处理器被配置为对经由该多个接口中的至少一些所接收的网络分组进行处理。该分组处理器包括关键字生成单元和关键字插入单元,该关键字生成单元被配置为至少基于所接收到的网络分组的报头中所包括的数据确定经由该多个接口之一所接收到的网络分组的查找关键字。该关键字插入单元被配置为至少通过使用第一散列函数计算第一散列查找关键字分段,并且使用第二散列函数计算第二散列查找关键字分段而使用两个或更多散列函数对该查找关键字执行两个或更多散列操作以计算两个或更多散列查找关键字分段。该关键字插入单元还被配置为将该第一散列查找关键字分段存储在第一存储器组中,将该第二散列查找关键字分段存储在第二存储器组中,并且将指针与该第一散列查找关键字分段相关联,该指针指示该第二散列查找关键字分段在该第二存储器组中的位置。
【附图说明】
[0015]图1是根据一个实施例的利用多散列查找表执行各种查找操作的示例网络设备的框图。
[0016]图2是根据一个实施例的被用来依据第一精确匹配查找技术存储图1的多散列查找表的示例存储器组的框图。
[0017]图3是根据一个实施例的被用来依据第二精确匹配查找技术存储图1的多散列查找表的示例存储器组的框图。
[0018]图4是根据一个实施例的用于使用第一技术执行精确匹配查找的示例方法的流程图。
[0019]图5是根据一个实施例的用于使用第一技术填充精确匹配查找表的示例方法的流程图。
[0020]图6是根据一个实施例的用于使用第二技术执行精确匹配查找的示例方法的流程图。
[0021]图7是根据一个实施例的用于使用第二技术填充精确匹配查找表的示例方法的流程图。
【具体实施方式】
[0022]在以下所描述的实施例中,具有不同大小(例如,位长度)的查找关键字被有效存储在统一存储器(例如,存储器组的共用集合)之中而并不要求较短的关键字被补充至最长所支持关键字的长度。在这些实施例中的一些中,多散列、精确匹配查找表跨多个存储器组进行分布。在一个实施例中,每个存储器组或者多个存储器组的一个或多个群组中的每一个使用不同的散列函数进行访问(例如,用于填充或搜索存储在(多个)组中的查找表的一部分)。根据第一精确匹配查找技术,在一个实施例中,散列表根据关键字大小进行定义,其中每个散列表是使用单个散列函数进行访问(为了关键字插入和关键字搜索)的一个或多个存储器组的虚拟/逻辑分组。在这些实施例中的一些中,并且受到表格条目的可用性的影响,具有最小大小的关键字能够被插入到对应于存储器组的散列表中,而较大的关键字则能够被插入到对应于两个或更多存储器组的连续分块的散列表中。在一些实施例中,对应于较大关键字的每个散列表基于关键字大小而被限制为存储器组的特定集合,并且用来访问散列表的特定散列函数取决于采用哪个存储器组的集合。在一个实施例中,例如,每个散列表使用与对应于该散列表的一个或多个存储器组的分组中的第一存储器组相关联的散列函数进行访问。
[0023]在一个实施例中,根据第二精确匹配查找技术,较大关键字能够以更为灵活的方式被插入到各个存储器组中(例如,并不被限制为存储器组的连续分块),其中指针被用来指示不同存储器组中的各个散列关键字分段之间的关联。在一个这样的实施例中,查找通过如下方法来执行:利用对应于每个存储器组的散列函数对较大关键字进行散列,标识该存储器组中的任意匹配分段,并且使用与该匹配分段相关联的一个或多个指针(以及其它信息,在一些实施例中,诸如分段数量和/或关键字大小)重构针对该较大关键字提供精确匹配的适当条目。
[0024]图1是根据一个实施例的利用这里所描述的可变关键字大小的查找技术的示例网络设备10的高度简化框图。网络设备10通常是连接两个或更多计算机系统、网络分段、子网等的计算机联网设备。在各个实施例中,网络设备10是桥接设备、路由器设备、交换机设备,或者被配置为在联网环境内进行操作的任意其它适当网络设备。图1的实施例中所示的网络设备10包括端口
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1