首页> 中国专利> 用于网络装备中的高性能、可更新和确定的哈希表的方法和设备

用于网络装备中的高性能、可更新和确定的哈希表的方法和设备

摘要

一种设备,包括存储装置,所述存储装置包括哈希表,所述哈希表包含多个桶,每个桶能够存储至少一个数据项目,所述设备还包括处理器,所述处理器用于在接收到键后至少应用第一和第二哈希功能来分别产生第一索引和第二索引,所述第一和第二索引在所述哈希表中识别第一和第二潜在桶以用于存储与所述键相关联的新的数据项目,确定是否所述第一和第二潜在桶中的至少一者具有可用空间来存储所述新的数据项目,并且响应于确定所述第一和第二潜在桶中的至少一者具有可用空间,将所述新的数据项目插入所述第一或第二潜在桶中的经确定为具有可用空间的一个桶中。

著录项

  • 公开/公告号CN103238145A

    专利类型发明专利

  • 公开/公告日2013-08-07

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN201180058011.X

  • 申请日2011-11-21

  • 分类号G06F12/08(20060101);

  • 代理机构

  • 代理人

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2024-02-19 19:37:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-10-03

    专利权的转移 IPC(主分类):G06F12/08 专利号:ZL201180058011X 登记生效日:20230915 变更事项:专利权人 变更前权利人:广东南邦新能源有限公司 变更后权利人:上海南邦华新能源有限公司 变更事项:地址 变更前权利人:510000 广东省广州市南沙区双山大道7号1906房A02 变更后权利人:200237 上海市闵行区虹梅南路1755号1幢1层

    专利申请权、专利权的转移

  • 2022-09-20

    专利权的转移 IPC(主分类):G06F12/08 专利号:ZL201180058011X 登记生效日:20220907 变更事项:专利权人 变更前权利人:广州方维信息科技有限公司 变更后权利人:广东南邦新能源有限公司 变更事项:地址 变更前权利人:510670 广东省广州市黄埔区科丰路91号518房 变更后权利人:510000 广东省广州市南沙区双山大道7号1906房A02

    专利申请权、专利权的转移

  • 2016-11-16

    授权

    授权

  • 2013-09-04

    实质审查的生效 IPC(主分类):G06F12/08 申请日:20111121

    实质审查的生效

  • 2013-08-07

    公开

    公开

说明书

相关申请案的交叉参考

本发明要求2011年9月29日递交的发明名称为“用于网络装备中的高 性能、可更新和确定的哈希表的方法和设备(Method and Apparatus for High  Performance,Updatable,and Deterministic Hash Table for Network Equipment)”的 第13/248235号美国临时专利申请案的在先申请优先权,该申请案要求2010年 12月3日由赛尔西古玛(Sailesh Kumar)等人递交的发明名称为“用于网络装 备中的高性能、可更新和确定的哈希表的方法和设备(Method and Apparatus for  High Performance,Updatable,and Deterministic Hash Table for Network  Equipment)”的第61/419,580号美国临时专利申请案的在先申请优先权,上述两 者在先申请的内容都以引入的方式,如重现一样完全并入本文本中。

关于由联邦政府赞助的

研究或开发的声明

不适用。

参考缩微胶片附录

不适用。

技术领域

背景技术

当前的互联网协议(IP)网络可包括多个节点,所述多个节点包含网络 核心处的多个路由器以及网络边缘处的多个主机。路由器共同地连接主机之间的 通信信道。节点被分配有网络范围内唯一的IP地址,以便将适当并且有效的业 务转发到目标节点。路由器可根据包中携带的IP地址在IP网络中对所述包进行 路由。可由路由器基于可在每个包中指出的<源地址,目标地址>对而将包转发 到适当的目标。

许多高速包交换网络使用查找操作来将一个值或一组值与一个表的条目 进行匹配。例如,IP路由操作通常应用最长的前缀匹配(LPM)比较技术来执 行转发表查找。因此,路由器可利用例如转发表等数据结构来对包执行一个或多 个查找操作。在接收到包后,路由器可参考转发表,并且将接收到的包的网络地 址(例如,IP地址前缀)作为键来使用。例如,路由器可使用转发表来查找包 的目标地址并且选择与那个地址相关联的输出端口。如果未找到匹配,那么包可 能溢出(例如,在各种端口上转发)或被丢弃。

查找和更新操作通常与哈希表一起使用,在哈希表中,数据值是根据可 适用于所述数据值的对应键的哈希功能的结果来编入索引。哈希功能的应用产生 了到哈希表的一个位置或“桶”的索引。哈希表的每个桶可包含固定数目的条目 用于存储数据值,所述数据值具有“哈希”到同一索引的键。键和数据值可以存 储在桶中并且从桶中检索,所述桶与通过将哈希功能应用到键而产生的索引是对 应的。

使用如哈希表等数据结构的一个好处是定位与一个键相关联的值的查找 时间大体上是恒定的,无论哈希表中的数据值的数量是多少。因此,即使在存储 在桶中的数据值的数量变得相当大时,哈希表实施方案也可保持有效。另一方面, 在使用具有查找表的哈希功能时通常产生的一个问题是冲突几乎不可避免。当哈 希功能对两个或两个以上不同的键产生相同的索引时,冲突可发生,在这种情况 下,尝试将一个数据项目插入与现有项目值相同的位置可能会受阻。因此,不同 于完全关联的数据结构,例如内容可寻址存储器(CAM),传统的哈希表不可保 证确定的查找。

因此,可能需要一种或多种技术来解决冲突,使得从每个键(例如,包 地址)中可产生唯一的索引。在这种情况下使用的一种技术涉及将桶的每个位置 或槽位链接到一个列表,所述列表含有哈希到同一位置的键-值对。另一种技术 包含增加每个桶的大小以容纳多个数据值。然而,已知的是这些技术在存储器带 宽需求和处理时间方面是昂贵的。另外,这些技术中的许多技术都利用特殊电路, 已知的是这种特殊电路相对昂贵并且复杂。

发明内容

在一个实施例中,本发明包含一种设备,所述设备包括存储装置,所述 存储装置包括哈希表,所述哈希表包含多个桶,每个桶能够存储至少一个数据项 目,所述设备还包括处理器,所述处理器经配置以在接收到键后至少应用第一和 第二哈希功能来分别产生第一索引和第二索引,所述第一和第二索引在哈希表中 识别第一和第二潜在桶以用于存储与所述键相关联的新的数据项目,确定是否所 述第一和第二潜在桶中的至少一者具有可用空间来存储新的数据项目,并且响应 于确定所述第一和第二潜在桶中的至少一者具有可用空间,将新的数据项目插入 所述第一或第二潜在桶中的经确定为具有可用空间的一个桶中。

在另一个实施例中,本发明包含一种网络设备实施的方法,用于将数据 存储在哈希表中并且由至少一个网络组件来实施,所述方法包括接收第一键,用 处理器来将第一哈希功能应用到所述第一键以产生第一索引,所述第一索引在哈 希表中识别第一潜在桶用于存储与第一键相关联的新的数据项目,用处理器来将 第二哈希功能应用到所述第一键以产生第二索引,所述第二索引在哈希表中识别 第二潜在桶以用于存储所述新的数据项目,用处理器来确定是否所述第一和第二 潜在桶中的至少一者具有可用空间来存储所述新的数据项目,并且响应于确定所 述第一和第二潜在桶中的至少一者具有可用空间,将新的数据项目插入所述第一 或第二潜在桶中的经确定为具有可用空间的一个桶中。

在第三方面,本发明包含一种设备,所述设备包括存储装置,所述存储 装置包括多个桶,每个桶经配置以具有存储至少一个数据项目的容量,所述设备 还包括处理器,所述处理器经配置以根据与新的数据项目相关联的键来识别第一 和第二桶来存储所述新的数据项目,所述处理器进一步经配置以确定是否所述第 一和第二潜在桶中的至少一者具有可用空间来存储所述新的数据项目,并且所述 处理器进一步经配置以确定当所述第一和第二潜在桶都已充满时,是否多个替代 性的桶中的至少一者具有可用空间来存储当前存储在所述第一或第二潜在桶中 的一者中的数据项目,其中所述多个替代性的桶是用阶层式树状结构来布置的。

从结合附图和所附权利要求书进行的以下详细描述将更清楚地理解这些 和其它特征。

附图说明

为了更完整地理解本发明,现在参考以下结合附图和详细描述进行的简 要描述,其中相同参考标号表示相同部分。

图1A和1B是根据本发明的一个实施例的哈希表的示意图。

图2是根据本发明的一个实施例的决策树的示意图。

图3是一个波形图,图示了在不同负载下在插入操作期间的溢出概率。

图4是一个波形图,图示了在不同负载下每个插入操作所检查的桶的数 量。

图5是根据本发明的一个实施例的用于将数据项目插入哈希表中的方法 的流程图。

图6是网络单元的一个实施例的示意图。

图7是通用计算机系统的一个实施例的示意图。

具体实施方式

最初应理解,尽管下文提供一个或一个以上实施例的说明性实施方案, 但可使用任何数目的技术,不管是当前已知还是现有的,来实施所揭示的系统和 /或方法。本发明决不应限于下文所说明的所述说明性实施方案、图式和技术, 包含本文所说明并描述的示范性设计和实施方案,而是可在所附权利要求书的范 围以及其均等物的完整范围内修改。

表查找和更新操作可能都需要实质上确定的性能保证。然而,在许多网 络系统中,查找操作趋向于需要相对更高的性能。为均衡这些需求,本发明的各 方面提议在插入操作期间在哈希表内执行有限次的移动,使得哈希表可以得到重 新平衡,同时在查找操作期间保持相对高的吞吐量。由于移动的次数有限,因此 更新操作可保持实质上确定的特性,由此确保确定的哈希表性能。尽管限制移动 次数可能潜在地降低插入速率,但这个有限的次数可经选择以确保为给定的网络 协议正确地操作而保持足够的插入速率。

此外,本发明的各方面可利用一个或多个多桶散列法技术来减少冲突。 一种此类技术称为d-左散列法(d-left hashing),其中哈希表可分割成d个部分, 使得新的数据项目可插入到最少负载的桶中,或在负载相同的情况下插入到最左 的桶中。额外地或替代性地,一些方面包含将多个数据项目存储在每个桶中以减 少冲突,并且在路由器接口线路板中利用常见存储器技术的突发存取特性。总之, 本发明的各实施例在如上所描述的各种限制(例如,存储器带宽、存取大小、存 储容量、查找速率,更新速率等)之间提供平衡,以获得满足高端网络装备中所 需的性能水平的相对经济的和有效的设计。

本文揭示的是实施实质上确定的哈希表的一种系统和方法。在插入操作 期间,至少将第一哈希功能和第二哈希功能施加到一个键,以分别产生第一和第 二索引值。用第一和第二索引值来识别用于存储与所述键相关联的新数据项目的 第一潜在桶和第二潜在桶。如果第一和第二桶都没有可用空间来存储新的数据项 目,那么可进行搜索以确定是否有替代性的桶可用于存储当前位于第一或第二潜 在桶内的数据项目。如果发现有桶可用于位于第一桶或第二桶中的数据项目,那 么可将所述数据项目移动到此替代性的桶,由此腾出空间以将新的数据项目插入 上述数据项目移动离开的桶中。

现参考图1A,图示了根据本发明一个实施例的哈希表100并且表示为m 行和c列的阵列。如本文所使用,术语“哈希表”可指存储数据并且将键与数据 值或相应的表位置进行关联的任何合适的数据结构、阵列、集合、高速缓冲存储 器或合适的存储器装置。所属领域的一般技术人员将理解,哈希表100可由例如 但不限于路由器、交换器、服务器等一个或多个合适的网络组件和基础设施元件 来使用。此外,哈希表100可包括任何合适的存储媒体105和/或通过任何合适 的存储媒体105来实施,所述任何合适的存储媒体105例如但不限于随机存取存 储器(RAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器 (SDRAM)、减少时延的DRAM(RLDRAM)、嵌入式DRAM(eDRAM)、临时 内容可寻址存储器(TCAM)、相变存储器(PCM)、固态驱动器(SSD)、硬盘 驱动器(HDD)、相变存储器(PCM)等。

哈希表100包括用于存储数据的多个桶110、112、114、116、118、120、 122和124。如本文所使用,术语“数据”希望是最宽广的意义并且可以指所有 类型的包或任何其它的信息或数据单位,包含但不限于固定长度单元和可变长度 包,其中每一者都可以或不可以分为更小的包或单元。此外,术语“包”可指包 本身或它的一部分,例如但不限于所有的或一部分的包头部、数据结构值、指针 或索引,或者对包或与包相关联的信息的任何其它直接或间接的识别。此外,包 可含有一种或多种类型的信息,包含但不限于音频、语音和视频信息。

在一些实施例中,桶110、112、114、116、118、120、122和124可容 纳多个槽位或条目,其中每个条目可包含一个键或一个与所述键相关联的数据项 目。例如,每个条目可以是固定长度(例如32比特)的指针,指向含有存储的 项目的主文件中的特定位置。在图1A中,哈希表100的行对应于桶的数量(即, m个桶),且列对应于每个桶中的条目的数量(即,每个桶中有c个条目)。因此, 图1的哈希表100将在本文中描述为包括八个桶110、112、114、116、118、120、 122和124,每个桶含有两个条目。可是,应理解在其它实施方案中,哈希表100 可包括更多或更少的桶,并且每个桶可含有任何合适数量的条目。类似地,尽管 桶110、112、114、116、118、120、122和124将描述为含有相等数量的条目, 但是在一些实施方案中,一个或多个桶可比哈希表100中的其它桶含有更多或更 少的条目。

在一个实施例中,使用至少两个哈希功能来产生对应于相应的桶110、 112、114、116、118、120、122和124的索引。如本文所使用,术语“哈希功能” 可指使用例如键等输入值并且返回或识别与哈希表100中的位置(例如,它所处 的桶或条目)相关联的输出值或索引的任何合适的功能或映射算法。应理解尽管 本文所描述的实施例可能着重于使用特定数量的哈希功能,但其它实施例可使用 任何合适数量的哈希功能。

根据一个方面,第一哈希功能h1和第二哈希功能h2接收并且处理新到达 的键k以产生相应的输出,从而结合对与所述键相关联的数据的存取和/或存储 (例如,在插入和/或更新操作期间)来识别潜在桶110、112、114、116、118、 120、122和124。出于方便,在本文中这些数据指的是与所述键相关联的数据项 目。然而,熟练的技术人员将很容易了解,所述数据可额外地或替代性地包含所 述键本身、与所述键相关联的数据项目的全部或一部分、识别数据项目的全部或 一部分的位置信息或指针等。

如图1A中所示,第一哈希功能h1和第二哈希功能h2都可以应用到第一 键k1,以产生输出,从而分别识别第一桶114和第二潜在桶120。在一个实施例 中,每个所识别的桶114和120都可以作为预期候选者,用于存储与第一键k1相关联的数据项目d1。因此,可以检查桶114和120中的任一者或两者以确定数 据项目d1是否可以插入其中。在这种情况下,尽管桶114和120都分别含有现 有的数据项目d14和d20,但是桶114和120两者都含有可用于存储额外的数据项 目的条目。如果存在于相应的桶114和120中的数据项目d14和d20具有相同的 大小并且每个桶114和120具有相同的容量,那么可选择这两个桶114或120中 的任一者来插入与第一键k1相关联的数据项目d1

所属领域的一般技术人员将理解,可用各种方法来选择用于存储数据项 目d1的桶114或120。简要地说,桶的选择可以是随机地、按顺序地和/或根据 指定的策略或优先权(例如,根据最近使用最多或最少的)来完成。在一个方面, 例如,可根据可用的容量数量或占用水平来选择桶。额外地或替代性地,可根据 将插入到桶中的数据类型来选择桶。然而,出于描述本实例的目的,可假定桶 120是任意选择的,用于插入与第一键k1相关联的数据项目d1

现参考图1B,图示了依据第一哈希功能h1和第二哈希功能h2而应用第 二键k2。此处,第一哈希功能h1和第二哈希功能h2返回相应的输出,将第一桶 112和第二桶120识别为潜在候选者,用于存储与第二键k2相关联的数据项目 d2。如图1B中所示,第一识别的桶112含有两个数据项目d11和d12,并且第二 识别的桶120含有两个数据项目d1和d20。因此,与关于图1A所描述的情况不 同,识别的桶112和120两者都是满的。由于由哈希功能h1和h2识别的桶112 和120没有可用空间来存储与第二键k2相关联的数据项目d2,因此可执行搜索 以确定是否可采用替代性的桶来腾出空间以在哈希表100内容纳数据项目d2

例如,可搜索一个或多个其它桶(即,未由哈希功能h1和h2识别的桶) 以确定是否现有的数据项目d1、d11、d12或d20可从识别的桶112或120中的一者 移动到替代性的桶中。根据一个方面,对替代性桶的搜索可首先对存储在由第一 哈希功能h1和第二哈希功能h2识别的桶中的数据项目来执行。这样,所述搜索 可开始于对在将现有的数据项目d1、d11、d12或d20插入到识别为用于插入d2的 候选者的桶112和120中的过程期间识别的潜在桶进行检查。所属领域的熟练技 术人员将了解,对桶进行检查的顺序可根据任何合适的准则。例如,所述顺序可 以是预先确定或随机的、根据桶位置、根据时间(例如,最近添加或移动到桶中 的数据项目)。在一些方面,可以用深度第一顺序对桶进行搜索,而在其它方面, 可以用宽度第一顺序对桶进行搜索。为了清晰,本实例将假定用宽度第一顺序以 数据项目d1开始对替代性桶进行搜索。

如上所讨论,第一哈希功能h1和第二哈希功能h2产生输出值,将两个桶 114和120识别为用于插入数据项目d1的可能候选者。由于选择桶120来存储数 据项目d1,因此未选择的桶114在这种情况下就可定义为待检查的“替代性的 桶”。因此,尽管某个桶(例如桶114)起初可能不被选择来插入数据项目(例 如d1),但哈希表100可维持输出值的日志,所述输出值对应于起初被识别但不 用于存储相应的数据项目的替代性的桶。或者,当一个数据项目存储于在插入的 时候选择的桶中时,对应于替代性的桶的输出值可随着每个相应的数据项目一起 进行存储。

如图1B中所示,用于数据项目d1的替代性的桶114具有一个可用于容 纳额外的数据项目的条目。因此,数据项目d1可从桶120移动到它的替代性的 桶114中,由此有空间用于将数据项目d2插入到桶120中。当然,如果已使用 三个或三个以上哈希功能来识别用于插入数据项目d1的桶,那么每个被识别而 未选择的桶可以被界定为用于数据项目d1的替代性的桶。如果多个替代性的桶 被检查并且确定为在这些情况下是可用的,那么可用的替代性的桶可经比较以确 定(例如,根据占用水平)选择将考虑中的数据项目移动到哪个替代性的桶中。

在一些方面,用于一个给定的数据项目和/或至少两个数据项目的多个替 代性的桶可经检查以确定是否可以将现有的数据项目移走来腾出空间给新到达 的数据项目。或者,当识别出具有可用于给定的数据项目的空间的第一替代性的 桶后,检查可终止。在其它方面,可对当前存储在被识别为用于存储新到达的数 据项目的潜在候选者的桶中的每个数据项目的至少一个替代性的桶进行检查。如 果一个以上替代性的桶被确定为含有可用于容纳识别的桶中的数据项目的条目, 那么每个可用的替代性的桶可经比较以确定将使用哪个桶。如上所论述,桶的选 择可以是随机的、按顺序的、按照策略的,等。

在一个实例中,可假定哈希功能h1和h2在数据项目d11的插入期间产生 了输出值,将桶112和116识别为潜在的桶。由于数据项目d11当前存储在桶112 中,因此桶116就被界定为替代性的桶,它可经检查以确定数据项目d11是否可 移走以腾出空间来将数据项目d2插入桶112中。如图2B所示,桶116是空的, 而桶114含有数据项目d14。因此(例如,根据布置哈希表100内的数据项目的 算法或优先权),在一些情况下,为了腾出空间以插入数据项目d2,可将数据项 目d11从桶112移到桶116中,而不是将数据项目d1从桶120移到桶114中。在 这种情况下,数据项目d2将被插入到桶112中,而不是插入到桶120中。例如, 如果桶的选择根据的是最低占用水平,那么这种结果将是优选的。

在另一实例中,可假定四个替代性的桶都没有空间可用于对位于经识别 为用于数据项目d2的桶112和120中的对应的数据项目进行存储。在这种情况 下,多达八个替代性的桶可类似地经检查以确定是否某个桶具有可用空间来对位 于已满的四个替代性桶中的一个桶中的数据项目进行存储。根据四个数据项目 d1、d11、d12和d20都不能移到它们相应的替代性桶中的假定,可进行搜索以识别 潜在的替代性桶,用于位于已满的四个替代性桶中的一个桶中的数据项目。

根据一个方面,当识别出一个没有满(或能存储数据项目)的替代性桶 时,可用检查的顺序反复地移走数据项目,所述检查的顺序是以替代性桶没有满 的数据项目开始,并且以将新到达的数据插入两个识别的桶中的一个桶中结束。 将参考图2进一步描述这方面,图2图示了用于将数据项目布置在哈希表中的决 策树200。

在插入操作期间,如图1A和1B所示,可使用决策树200在哈希表中搜 索替代性的桶。在一个实施例中,决策树200可采取二元树的形式,其根基在识 别为用于插入数据项目的潜在候选者的每个桶处。在使用两个哈希功能(例如 h1和h2)来将数据项目插入桶中的实施方案中,已满的每个桶(即,含有c个数 据项目)将具有它的c个数据项目中的一者可移动到的替代性的桶的总共c个选 择。因此,图2中所描绘的决策树200的度等于c。

当接收到新到达的数据项目d50时,可应用第一哈希功能h1和第二哈希 功能h2来产生输出值,从而识别出第一和第二相应的桶210和212,其中每个桶 210和212可当作对应于决策树200的第一或顶层。由于每个识别的桶210和212 是满的,因此可搜索哈希表以确定是否数据项目d52、d54、d56、d58可从顶部桶 210或212移动到位于决策树200的较低层的替代性桶中。

出于方便的目的,决策树200将被描述为以搜索替代性的桶来移动数据 项目d52开始。此外,将假定使用两个哈希功能(例如h1和h2)来识别两个潜在 的桶以将每个数据项目存储在图2所示的桶中,其中一个潜在的桶对应于给定的 数据当前存储的桶,且另一个桶对应于被哈希功能识别但是没有被选择来存储所 述给定的数据项目的替代性的桶。例如,在图2中,用于数据项目d52的替代性 的桶对应于已满的桶214。由于没有可用于数据项目d52的替代性的桶,因此可 使用决策树200来确定是否有可用于将被搜索的下一个数据项目(例如d54、d56或d58)的替代性的桶。如先前所提到,对替代性桶的搜索可持续到找到可用的 替代性桶为止。

在一个实施例中,如果没有可用于位于顶层或第一层桶210和212中的 任何数据项目d52、d54、d56或d58的替代性桶,那么可继续搜索以确定是否有可 用于位于决策树200的下一层中的一个或多个数据项目的替代性桶。为了清晰, 将假定在这种情况下按顺序来搜索各桶。因此,在下一层处的搜索可开始于确定 是否有可用于位于桶214中的数据项目(例如d60或d62)的替代性桶。然而,在 其它情况下,在下一层处的搜索可开始于确定是否有可用于位于一个不同的桶 (例如,桶216、218和/或220)中的一个或多个数据项目的替代性桶。在这点上, 应注意替代性桶所根据的顺序是根据任何合适的搜索算法。

如决策树200所示,用于位于桶214中的数据项目d60或d62的相应的替 代性桶222和224都已满。在一些方面中,当确定桶214中的第一数据项目(例 如d60)不能移动到它的替代性桶中时,可继续搜索以确定是否桶214中的另一 数据项目(例如d62)可移动到它的替代性桶中。在其它方面,当确定桶214中 的两个数据项目d60或d62中的一个不能移动到它相应的替代性桶222或224中 时,可继续搜索以确定是否位于不同的桶216、218或220中的一个或多个数据 项目可移动到替代性桶中。

不考虑用于位于桶214、216、218和220中的数据项目的替代性桶的搜 索顺序,所述搜索可持续到找到可用的替代性桶为止。因此,在某个时刻,将执 行搜索以确定是否有替代性桶可用于数据项目d64。根据决策树200,桶226对 应于用于数据项目d64的替代性桶。由于桶226所示为具有一个开放的条目,因 此数据d64可从桶216移到它的替代性桶226中。随后,位于较高层处的桶中的 数据项目可移到它们的替代性桶中,从而可产生空间用于将数据项目d50插入识 别的桶212或214中的一者中。例如,在这种情况下,在数据项目d64移到桶226 中之后,数据项目d54可移到桶216中,并且数据项目d50可插入桶212中。假 定考虑中的哈希表不具有任何额外的桶,则在插入数据项目d50后哈希表容量将 满。然而,如果哈希表确实具有没有满的额外的桶,那么可用一种方式搜索这些 桶,所述方式类似于为了确定是否有可用于移动位于桶222、224、226、228、 230、232、234和/或236中的一个或多个数据项目的替代性桶而描述的方式。

在一个实施例中,可在插入操作期间强加等于k的限定或有限次的搜索 反复。例如,为了腾出空间以用于插入新到达的数据项目,数据项目可以移动的 总次数必须小于或等于k。在图2所描绘的实例中,在两次搜索反复之后识别出 可用的替代性桶(即,桶226),并且因此,两个数据项目(即,d54和d64)被移 走以腾出空间用于将数据项目d50插入哈希表的桶210中。当然,尽管将新的数 据项目插入到每桶中包括一个以上条目(即c>1)的哈希表中,但在每次搜索反 复之后,决策树200可检查以指数方式增加的数量的桶,尤其是当数据项目由于 每次执行的搜索反复而移走时。

在插入操作期间的移动数量被限制为k的实施例中,决策树200的深度 可限制为k+1,在这种情况下,可检查多达2(ck+1-1)个桶。在这种情况下,数据 项目不能被插入哈希表中的概率等于所有2(ck+1-1)个桶都已满(即,每个桶含 有c个数据项目)的概率。如果有总数为n的数据项目存储在包括m个桶的哈 希表中(即,负载因数=n/m),那么单个桶已满的概率将等于(n/m)c,且所有2(ck+1–1)个桶已满的概率将等于(n/m)(2(c^(k+1)–1))c

图3和4图示了根据包括m个桶的哈希表的不同的k值和负载水平(n/m) 的波形图,其中每个桶能够存储两个数据项目(即,c=2)。这些波形图是使用本 文揭示的插入和再映射算法而产生的。首先参考图3,波形图300绘制了在不同 负载下发生溢出(即,数据项目不能插入桶中)的概率。例如,信号310、320 和330表示当哈希表包括的负载因数分别等于50%、75%和90%时发生溢出的概 率。

图3中的波形图300还指示了在不同负载水平下在插入操作期间将移动 的数据项目的最大数量。例如,根据信号310,当哈希表包括等于50%的负载因 数时,可能需要移动以用于插入新到达的数据项目的数据项目的最大数量约等于 二。类似地,信号320表示当哈希表包括等于75%的负载因数时,用于插入新到 达的数据项目的移动的最大数量约等于三。信号330表示当哈希表包括等于90% 的负载因数时,用于插入新的数据项目的移动的最大数量小于五。

现参考图4,波形图400绘制了在给定负载下在插入操作期间检查的桶 的平均数量,以及在所有负载下检查的桶的最大数量。波形图400表示在插入操 作期间所检查的桶的平均数量(例如,由信号410、420和430表示)显著小于 在插入操作期间所检查的桶的最大数量(信号440)。因此,可看到在决策树的 较早阶段期间(例如,在到达决策树的树叶之前)将找到可用的桶的概率高。由 于桶已满的概率是p=(n/m)c,因此在插入操作期间第i个桶被检查的概率等于先 前检查的i-1个桶都已满的概率,它等于pi-1。此外,在这种情况下,一个数据 项目被插入第i个桶中的概率等于(1-p)×pi-1。因此,所检查的桶的平均数量将 等于Σi×pi-1×(1-p)。对于更大的搜索树深度,此计算结果可近似为1/(1-p)。 因此,对于每个桶能存储两个数据项目的哈希表(即,c=2),针对插入操作所检 查的桶的平均数量对于50%的负载因数将等于1.33(信号410),对于75%的负 载因数将等于2.286(信号420),以及对于90%的负载因数将等于5.263(信号 430)。

以上所描述的实例说明了根据本发明的哈希表能够支持相对高且确定的 查找速率,因为每次查找操作只检查两个桶。此外,还可以看到本文所描述的哈 希表在插入操作期间需要适度低数量的桶检查和数据项目移动,由此实现了高插 入和更新速率。这些速率可通过选择与哈希表相关联的某些配置值,例如c和k, 而进行优化。例如,本实例说明了将桶大小设置为每桶两个数据项目(即,c=2) 大体上已足够实现高负载。这样,各桶可保持相对窄的大小,并且因此需要相对 低的存储器带宽。此外,根据本文所揭示的数据和实例,可看到在接近90%的负 载水平处,将每次插入所移动的数据项目的最大数量限制为八(即,k=8),将产 生几乎有保证的插入。换句话说,插入操作将需要最多八次移动来提供有保证的 哈希表更新性能。

在一些实施例中,哈希表可将指纹存储在它的桶中,而不是存储整个键, 在这种情况下,可在另一个表中维持完整的键值。例如,使用指纹可应用于进一 步减少存储器带宽,例如当存储长文本串时。然而,相对小的指纹可导致指纹冲 突和高的错误肯定率(FPR),由此产生非确定行为。因此在一个方面,可假定 存储了整个键或足够大的指纹,从而确保接近零的指纹冲突率和FPR。例如,128 比特的指纹可具有的FPR和指纹冲突率大致是2-64,这出于所有实际目的是极其 不可能发生的。

图5图示了用于将数据项目插入包括多个桶的哈希表中的方法500的实 施例,其中每个桶能够存储至少两个数据项目。方法500可由任何合适的网络组 件例如路由器或交换器等来实施。方法500可在框510处开始,其中接收到一个 键。在框520处,确定至少两个用于插入与所述键相关联的数据项目的潜在的桶。 潜在的桶可通过将两个不同的哈希施加到所述键而确定。在块530处,确定是否 两个潜在的桶中的任何一者具有可用于存储数据项目的空间。如果有可用空间, 那么在框540处,所述数据项目被插到具有可用空间的潜在的桶中的一个桶中。 如果在潜在的桶中没有可用空间,那么方法500继续到框550,其中检查潜在的 桶中的数据可移动到的替代性的桶以确定是否在替代性桶中有可用空间用于从 潜在的桶中的一个桶中将数据项目移走。如果替代性的桶具有可用空间,那么所 述方法继续到框560并且将来自潜在的桶中的至少一个桶的数据项目移动到替 代性桶中,由此空出潜在的桶来接收与新的键相关联的传入的数据项目。随后, 方法500继续到框540。

如果替代性桶是满的,那么方法500继续到框570,其中确定在替代性 桶的分层树中的下一层处的替代性桶是否具有可用于存储数据项目的空间。如果 答案是没有,那么方法500重复框570,移动到替代性桶的分层树中的下一更低 的层。如果替代性桶被发现具有可用于将数据项目从潜在的桶中移走的空间,那 么方法500继续到框580并且将来自潜在的桶中的一个桶的数据项目移动到所述 替代性桶。方法500随后继续到框540,其中将与新接收到的键相关联的数据项 目插入潜在的桶中。

图6图示了网络单元600的一个实施例,所述网络单元可为通过网络传 输和处理数据的任何装置或组件。例如,网络单元600可对应于网络中的路由器、 网桥或交换器。网络单元600还可以包括任何合适的存储器架构。网络单元600 可包括一个或多个入站端口或单元610,其耦合到用于从其它网络组件接收包、 对象或类型长度值(TLV)的接收器(Rx)612。网络单元600可包括逻辑单元 620,用以确定将包发送到哪些网络组件。可使用硬件、软件或这两者来实施逻 辑单元620。网络单元600还可包括一个或多个出站端口或单元630,其耦合到 用于向其它网络组件发射帧的发射器(Tx)632。接收器612、逻辑单元620以 及发射器632也可经配置以实施或支持方法500。网络单元600的组件可如图6 所示,或根据适合于执行本文所揭示的一个或多个操作的任何布置方案而进行布 置。此外,应理解一些实施例可包含两个或两个以上网络单元600。

上述网络组件可在包括任何通用网络组件的系统中实施,所述通用网络 组件例如为具有足够处理能力、存储器资源以及网络吞吐能力以处理其上的必要 工作量的计算机或网络组件。图7图示了典型的通用网络组件700,所述通用网 络组件700适合于实施本文中所揭示的组件的一个或多个实施例。网络组件700 包括处理器702(可称为中央处理器单元或CPU),所述处理器与包含以下项的 存储器装置进行通信:辅助存储装置704、只读存储器(ROM)706、随机存取 存储器(RAM)708、输入/输出(I/O)装置710,以及网络连接装置712。处理 器702可作为一个或多个CPU芯片实施,或者可为一个或多个专用集成电路 (ASIC)的一部分。

辅助存储器704通常由一个或多个磁盘驱动器或磁带驱动器构成,且用 于对数据进行非易失性存储,而且如果RAM708的大小不足以保存所有的工作 数据,那么辅助存储器704可用作溢出数据存储装置。辅助存储器704可用于存 储程序,当选择执行这些程序时,所述程序被加载到RAM708中。ROM706用 于存储在程序执行期间读取的指令以及可能的数据。ROM706为非易失性存储 器装置,其存储器容量相对于辅助存储器704的较大存储器容量而言通常较小。 RAM708用于存储易失性数据,还可能用于存储指令。对ROM706和RAM708 两者的存取通常比对辅助存储装置704的存取快。

具有本发明的优势,所属领域的技术人员将了解,可实施本文所揭示的 实施例来提供哈希表以用于在高性能网络装备中的联合查找操作。在其它情况 中,哈希表可经设计以满足通用网络协议实施方案中需要的查找和更新吞吐量; 提供防止拒绝服务(DoS)的确定性能;存储准确匹配查找项目的所需数量;并 且经济地利用当前已知的和/或以后开发的路由器接口线路板中的存储器技术。

揭示至少一个实施例,且所属领域的技术人员对所述实施例和/或所述实 施例的特征的变化、组合和/或修改在本发明的范围内。因组合、整合和/或省略 所述实施例的特征而产生的替代实施例也在本发明的范围内。在明确陈述数值范 围或限制的情况下,应将此些表达范围或限制理解为包含属于明确陈述的范围或 限制内的类似量值的重复范围或限制(例如,从约1到约10包含2、5、4等; 大于0.10包含0.11、0.12、0.15等)。举例来说,每当揭示具有下限Rl和上限 Ru的数值范围时,具体是揭示属于所述范围的任何数字。具体而言,所述范围 内的以下数字是特别揭示的:R=Rl+k*(Ru-Rl),其中k为从1%到100%范围 内以1%递增的变量,即,k为1%、2%、5%、4%、5%、……、50%、51%、52%、……、 75%、76%、77%、78%、77%或100%。此外,还特定揭示由如上文所定义的两 个R数字定义的任何数值范围。相对于权利要求的任一元素使用术语“任选地” 意味着所述元素是需要的,或者所述元素是不需要的,两种替代方案均在所述权 利要求的范围内。使用例如包括、包含和具有等较广术语应被理解为提供对例如 由……组成、基本上由……组成以及大体上由……组成等较窄术语的支持。因此, 保护范围不受上文所陈述的描述限制,而是由所附权利要求书界定,所述范围包 含所附权利要求书的标的物的所有均等物。每一和每个权利要求作为进一步揭示 内容并入说明书中,且所附权利要求书是本发明的实施例。所述揭示内容中的参 考的论述并不是承认其为现有技术,尤其是具有在本申请案的在先申请优先权日 期之后的公开日期的任何参考。本发明中所引用的所有专利、专利申请案和公开 案的揭示内容特此以引用的方式并入本文中,其提供补充本发明的示范性、程序 性或其它细节。

虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或 范围的情况下,所揭示的系统和方法可以许多其它特定形式来体现。本发明的实 例应被视为说明性的而非限制性的,且本发明不限于本文所给出的细节。举例来 说,各种元件或组件可在另一系统中组合或集成,或某些特征可省略或不实施。

另外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离 散或单独的技术、系统、子系统和方法可与其它系统、模块、技术或方法组合或 整合。展示或论述为彼此耦合或直接耦合或通信的其它项目也可以电方式、机械 方式或其它方式通过某一接口、装置或中间组件间接地耦合或通信。改变、替代 和更改的其它实例可由所属领域的技术人员确定,且可在不脱离本文所揭示的精 神和范围的情况下作出。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号