CN104104604A - 网络交换机设备中的准确匹配哈希查找数据库 - Google Patents
网络交换机设备中的准确匹配哈希查找数据库 Download PDFInfo
- Publication number
- CN104104604A CN104104604A CN201310394776.1A CN201310394776A CN104104604A CN 104104604 A CN104104604 A CN 104104604A CN 201310394776 A CN201310394776 A CN 201310394776A CN 104104604 A CN104104604 A CN 104104604A
- Authority
- CN
- China
- Prior art keywords
- cryptographic hash
- search key
- skew
- transmitting
- hash
- 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.)
- Granted
Links
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
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3009—Header conversion, routing tables or routing tags
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的各实施例涉及网络交换机设备中的准确匹配哈希查找数据库。在一种用于在网络设备中转发包的方法中,基于查找关键字生成多个哈希值。多个哈希值至少包括使用第一哈希函数生成的第一哈希值、使用第二哈希函数生成的第二哈希值和使用第三哈希函数生成的第三哈希值。第三哈希函数不同于第一哈希函数和第二哈希函数。使用第一哈希值和第二哈希值搜索查找表以确定用于查找关键字的偏移。然后,使用第三哈希值和为查找关键字确定的偏移搜索转发表以选择与查找关键字对应的转发条目。基于选择的转发条目向网络设备的一个或者多个端口转发包。
Description
相关申请的交叉引用
本申请要求对通过完全引用将其公开内容明确地结合于此、于2013年4月4日提交、名称为″Exact Match Hash Algorithm For VeryLarge Table in Switches″的第61/808,323号美国临时申请的优先权。
技术领域
本公开内容总体上涉及网络设备,并且更具体地涉及网络设备中的哈希查找表。
背景技术
这里提供的背景描述是出于总体上呈现公开内容的背景的目的。当前具名的发明人的工作在背景技术这一节中描述的程度上以及该描述的可能在提交时未以其他方式符合现有技术的方面既未被明示地也未被暗示地承认为针对本公开内容的现有技术。
网络设备(比如网络交换机、路由器、边缘设备等)经常运用如下查找表,这些查找表存储与由网络设备处理的包关联的各种信息,并且网络设备在查找表中执行查找以用于在网络设备处理包期间做出各种处理判决。例如,可以执行查找操作以用于包分类、转发判决、服务质量分类、策略控制列表应用和一般由网络设备执行的其他处理操作。一般而言,根据与包关联的或者为包生成的关键字执行对于包的查找。关键字例如被用来搜索表,并且从由表中的由关键字标识的条目取回与包相关的信息(例如,用于包的转发信息)。
使用内容可寻址存储器(CAM)来实施一些查找表。基于CAM的表一般允许通常在单个比较循环中比较向表提供的关键字与表的所有条目,并且返回指示哪些条目与关键字匹配的结果。然而,尤其在运用大规模查找表时,基于CAM的表一般在面积和功率消耗方面成本高。
查找表的备选实现方式利用基于哈希的方案,在该方案中,将哈希函数应用于关键字以确定哈希表中的其中存储关键字和与关键字关联的信息(例如,转发信息)的位置。尽管哈希表与CAM实现方式相比一般更小并且更高效,但是哈希表在哈希函数为向哈希函数提供的两个或者更多不同关键字生成相同哈希值时表现固有冲突,并且作为结果,无法向哈希表中插入向哈希表提供的一些关键字。因此,即使关键字可以与条目匹配,对于向哈希表提供的一些关键字的查找操作仍然不会产生匹配。因此,难以在运用哈希表时实现准确匹配查找性能。
发明内容
在一个实施例中,一种用于在网络设备中转发包的方法包括在哈希值生成器并且基于与包对应的查找关键字生成多个哈希值,至少包括使用第一哈希函数生成第一哈希值、使用第二哈希函数生成第二哈希值和使用第三哈希函数生成第三哈希值,第三哈希函数不同于第一哈希函数和第二哈希函数。该方法也包括使用第一哈希值和第二哈希值搜索查找表以确定用于查找关键字的偏移,以及使用第三哈希值和为查找关键字确定的偏移搜索转发表以选择与查找关键字对应的转发条目。该方法还包括基于选择的转发条目向网络设备的一个或者多个端口转发包。
在另一实施例中,一种用于在网络中转发包的网络设备包括多个端口和耦合到多个端口的包处理器,包处理器被配置用于向多个端口中的一个或者多个适当端口传送经由多个端口中的至少一些端口接收的包。包处理器包括:哈希值生成器,被配置用于基于与包对应的查找关键字生成多个哈希值,多个哈希值至少包括使用第一哈希函数生成的第一哈希值、使用第二哈希函数生成的第二哈希值和使用第三哈希函数生成的第三哈希值,第三哈希函数不同于第一哈希函数和第二哈希函数。包处理器也包括耦合到查找表和转发表的查找单元。查找单元被配置用于使用第一哈希值和第二哈希值搜索查找表以确定用于查找关键字的偏移,以及使用第三哈希值和为查找关键字确定的偏移搜索转发表以选择与查找关键字对应的转发条目。包处理器还包括被配置用于基于选择的转发条目向多个端口中的一个或者多个端口转发包的转发引擎。
在又另一实施例中,一种用于在网络设备中填充转发数据库的方法包括在哈希值生成器并且基于查找关键字生成与包对应的多个哈希值,至少包括使用第一哈希函数生成第一哈希值、使用第二哈希函数生成第二哈希值和使用第三哈希函数生成第三哈希值,第三哈希函数不同于第一哈希函数和第二哈希函数。该方法也包括用网络设备并且至少基于第一哈希值和第二哈希值为查找关键字确定进入转发表的偏移。该方法还包括用网络设备并且基于第三哈希值和偏移确定转发表中的用于插入查找关键字的位置。该方法还包括用网络设备确定是否可以在确定的位置向转发表中插入查找关键字而未与在确定的位置先前存储的关键字冲突。该方法还包括在确定可以向转发表中插入查找关键字时,在确定的位置向转发表中插入查找关键字和与查找关键字关联的转发信息。
在再一实施例中,一种用于在网络设备中填充转发数据库的装置包括:哈希值生成器,被配置用于基于查找关键字生成多个哈希值,至少包括使用第一哈希函数生成的第一哈希值、使用第二哈希函数生成的第二哈希值和使用第三哈希函数生成的第三哈希值,第三哈希函数不同于第一哈希函数和第二哈希函数。该装置也包括:更新单元,被配置用于:至少基于第一哈希值和第二哈希值为查找关键字确定进入转发表的偏移,以及基于第三哈希值和为查找关键字确定的偏移确定转发表中的用于插入查找关键字的位置。更新单元也被配置用于确定是否可以在确定的位置向转发表中插入查找关键字而未与在确定的位置先前存储的关键字冲突、并且在确定可以向转发表中插入查找关键字时,在确定的位置向转发表中插入查找关键字和与查找关键字关联的转发信息。
附图说明
图1是根据本公开内容的一个实施例的能够使用多哈希函数方案高效解决基于哈希的查找数据库中的冲突的示例切换设备的简化框图;
图2图示根据一个实施例的查找表的示例条目;
图3A-图3B是图示根据一个实施例的用于在数据库中对查找关键字定位并且从数据库取回与查找关键字关联的信息的示例查找方案的流程图;
图4A-图4B是图示根据一个实施例的用于向数据库中插入查找关键字和与查找关键字关联的信息的示例更新方案400的流程图;
图4C是图示根据一个实施例的与图4A-图4B的更新技术结合实施的冲突解决方案的流程图;
图5A-图5B是图示根据一个示例实施例的应用于数据库表的条目重排技术的示图;
图6是根据一个实施例的用于在网络设备中转发包的示例方法的流程图;
图7是根据一个实施例的用于在网络设备中填充转发数据库的示例方法的流程图。
具体实施方式
图1是根据本公开内容的一个实施例的能够使用多哈希函数方案高效解决基于哈希的查找数据库中的冲突的示例切换设备100的简化框图。切换设备100一般是连接两个或者更多计算机系统、网络段、子网等的计算机联网设备。例如,在一个实施例中,切换设备100是路由器。然而,注意,切换设备100未必限于特定协议层或者特定联网技术(例如,以太网)。例如,切换设备100也可以是桥接器、VPN集中器等。
切换设备100包括耦合到多个端口112的包处理器102,并且端口112中的每个端口耦合到通信网络(例如,通信网络内的网络设备)。一般而言,包处理器102被配置用于处理经由入站端口112接收的包、确定应当经由其传输包的相应出战端口112并且经由确定的出站端口112传输包。在一些实施例中,包处理器102被配置用于在入站端口112接收包、在存储器中存储包、在包存储于存储器中之时执行包的处理、确定应当经由其传输包的一个或者多个出站端口112并且在做出转发判决之后从存储器取回包并且经由该一个或者多个出站端口112传输包。在一些实施例中,包处理器102为包生成包描述符,并且包描述符而不是包本身随后由包处理器102处理。在一个实施例中,包描述符包括来自包的一些信息,比如包的头部信息中的一些或者所有头部信息。在一些实施例中,包描述符附加地包括其他信息,比如包在存储器中存储于何处的指示符。为了易于说明,下文使用术语“包”以指代包本身或者与包关联的包描述符。
包处理器102包括耦合到转发数据库105的转发引擎104。在一个实施例中,转发数据库105存储在与连接到端口112的网络设备对应的目的地地址(例如,介质访问控制(MAC)地址、网际协议(IP)地址、VLAN、多播地址等)与网络设备连接到的特定端口112之间的关联。根据一个实施例,转发数据库105包括转发表106、查找表107和内容可寻址存储器(CAM)108(例如,二进制CAM(BCAM)或者三进制CAM(TCAM))。在一个实施例中,转发表106被实施为基于查找关键字生成的由哈希值编索引的哈希表(如这里使用的术语“关键字”和“查找关键字”可互换)。由于哈希值一般比查找关键字更短,所以在两个或者更多查找关键字之间的冲突可能在哈希函数为该两个或者更多查找关键字生成相同哈希值时产生。在这样的系统中,由于在哈希成相同哈希值的不同关键字之间的冲突而无法向哈希表中插入一些查找关键字,因此,未充分利用一些哈希表。在各种实施例中,转发引擎104被配置用于利用为每个查找关键字生成的多个哈希值以解决转发表106中的冲突,由此提高转发表106的存储器利用率。
根据一个实施例,转发引擎104被配置用于使用三个不同哈希函数为每个查找关键字生成三个哈希值,并且有选择地利用该三个哈希值以确定在转发表106中存储查找关键字的存储器位置。在这一实施例中,第一哈希值H1用来访问查找表107以标识查找表107中的与第一哈希值对应的条目。第二哈希值H2用来从查找表107的标识的条目中的与第一哈希值关联的一个或者多个偏移选择偏移。选择的偏移然后被应用于第三哈希值H3以确定用于访问转发表106的索引,并且取回在确定的索引存储的转发条目。由于为查找关键字生成的第三哈希值用来对转发表106编索引,其中根据与用来为查找关键字生成第一哈希值和第二哈希值的哈希函数不同的哈希函数生成第三哈希值,所以在查找关键字未共享相同第三哈希值时的至少一些情形中避免了在哈希成相同第一哈希值和相同第二哈希值的不同查找关键字之间的冲突。另外,由于操作表107在至少一些情形中关联多个偏移与第一哈希值,所以在至少一些情形中,即使在哈希成相同第一哈希值的不同关键字哈希成第三相同关键字时,仍然在该不同关键字之间避免了冲突。附加地,在一些实施例中,在其中查找表107无法解决在哈希成相同第一哈希值的不同关键字之间的冲突的情形中,例如,在存储于转发表106中的这样的关键字的数目超过由查找表107的条目支持的最大偏移数目时,如以下将更具体说明的那样,仍然使用默认偏移来向转发表106中插入这样的关键字。
由于这里描述的这些和其他冲突解决技术,在至少一些实施例中,与不能解决这样的冲突的已知系统相比,一般提高了数据库利用率。例如,在一些实施例中,本公开内容的查找关键字插入技术促成提高的如通过“第一未命中”标准测量的存储器利用率。第一未命中标准一般被定义为基于哈希的数据库在数据库中遇到关键字的第一未命中插入时的利用率(即存储于数据库中的条目相对于由数据库支持的最大条目数目的百分比)。因而,等于或者接近100%的根据第一未命中标准的存储器利用率产生高度地利用并且高效的基于哈希的数据库。在至少一些实施例中,这里描述的多哈希值数据库结构极大地提高如通过第一未命中标准测量的存储器利用率。附加地,在一些实施例中,也提高了如通过其他适当标准(比如存储器容量标准(或者与由数据库支持的最大条目数目对应的、由多个尝试的插入产生的成功插入的百分比))测量的存储器利用率。应当注意,根据一个实施例,转发条目的取回仅需用于从查找表107取回偏移的第一存储器访问和用于从转发表106取回转发条目的第二存储器访问这两个存储器访问。作为结果,通过使对存储器的访问数目限于相对小的访问数目(例如,2个),与需要更大数目的存储器访问以取回关键字的已知多哈希数据库相比,这里描述的技术允许从数据库更高效地取回信息(例如,在从存储器取回关键字时的存储器带宽方面)。作为示例,常规多哈希系统可以通过使用对应数目的相应哈希函数为关键字生成多个哈希值(例如,4个哈希值)并且用多个哈希值中的每个哈希值访问存储器以在哈希表中对将允许插入关键字的条目定位来增加存储器利用率。在这一情况下,关键字的插入并且相应地关键字的后续取回需要对应数目(例如,4个)的查找操作。另一方面,本公开内容的技术保证需要有限数目(例如,仅2个)的查找操作以插入和/或取回关键字。作为结果,本公开内容的技术通过限制为了取回信息而需要的对存储器的访问数目来提供高效插入和例如从相对大的基于哈希的数据库和/或在切换设备外部的存储器中存储的数据库取回关键字而又维持数据库的高存储器利用率。
在一些实施例中,转发引擎104包括处理器120和存储在处理器120上可执行的指令的存储器122。在一些这样的实施例中,处理器120执行转发表106的优化以进一步增加转发表106的利用率。备选地或者附加地,在一些实施例中,处理器102用来在其中查找表107不能解决在具有相同第一哈希值的不同关键字之间的冲突的至少一些情形中辅助解决这样的冲突。例如,如以下将更具体说明的那样,在一些实施例中,处理器120在这样的冲突的数目超过由查找表107支持的这样的冲突的最大数目时辅助解决这样的冲突。另外,在一个实施例中,转发引擎104被配置用于利用附加存储器(比如CAM108)以用于存储不能解决其冲突的关键字。
尽管数据库105在这里一般被描述为如下转发数据库,该转发数据库存储在网络设备100的端口112与连接到端口112的网络设备的地址(例如,MAC地址)之间的关联,但是数据库105一般可以是存储在查找关键字和与查找关键字关联的属性之间的关联的任何查找数据库。例如,在一些实施例中,数据库105是存储在关键字与将对与关键字对应的包执行的一个或者多个策略控制动作(例如,关于访问控制、服务质量、流量测量、VLAN指派等)之间的关联的策略控制数据库。在其他实施例中,数据库105存储如下其他信息,该其他信息一般由网络设备100用来处理由网络设备100接收的包。另外,尽管数据库105被图示为在转发引擎104外部,但是在一些实施例中,在转发引擎104中包括数据库105。备选地,在一些实施例中,数据库105在包处理器102外部和/或在切换设备100外部。另外,在一些实施例中,数据库105的表106是具有一百万或者数百万条目的相对大的表。在一个实施例中,在经由适当接口(例如,双数据速率(DDR)接口、单数据速率(SDR)接口或者其他适当接口)耦合到转发引擎104的外部(例如,设置于在切换设备100外部的集成设备上)动态随机存取存储器中实施表106。然而,一般而言,在各种实施例中,数据库105是任何适当大小的数据库并且被使用任何适当类型的存储器(例如,静态随机存取存储器(SRAM)或者另一适当类型的存储器)来实施。也注意,这里描述的数据库和数据库查找操作并不限于网络设备并且在其他实施例中在其他适当计算设备中被利用。
继续参照图1,转发引擎104包括耦合到哈希值生成器110的关键字生成器109。在一个实施例中,关键字生成器109接收包或者包描述符并且基于在包的头部中或者在包描述符中包括的信息生成查找关键字。例如,关键字生成器单元109基于在包中包括的或者与包关联的目的地地址(单播、多播或者广播)、虚拟局域网(VLAN)标签等中的一项或者多项为包生成查找关键字。在其他实施例中,关键字生成器109基于在包中包括的或者与包关联的其他信息为包生成查找关键字。
关键字生成器109向哈希值生成器110提供查找关键字。哈希值生成器110接收查找关键字,并且为查找关键字生成多个哈希值。在一个实施例中,哈希值生成器使用三个相异哈希函数(例如,使用不同生成器多项式(比如32位CRC哈希多项式)或者其他适当哈希多项式)为查找关键字生成三个哈希值。哈希值生成器110向数据库控制器单元114提供生成的哈希值(例如,H1、H2和H3)。在一个实施例中,数据库控制器单元114包括查找单元114a和更新单元114b。例如,在需要转发信息以做出转发判决时,查找单元114a在数据库105中执行查找操作以从数据库105取回这一信息。在一个实施例中,在学习新转发信息时,更新单元114b例如通过向数据库105中插入查找关键字和与查找关键字关联的信息更新数据库105。附加地,在一些实施例中,例如在尚未访问条目持续某一时间段时,更新单元114b从数据库105删除条目。
仍然参照图1,在一个实施例中,查找表107包括根据第一哈希值H1编索引的多个条目,并且每个条目包括与每个第一哈希值H1关联的多个偏移。附加地,在一个实施例中,在查找表107的条目中的偏移中的每个偏移还与偏移对应于的特定查找关键字的第二哈希值H2关联。在操作中,查找单元114a基于为查找关键字生成的第一哈希值H1标识查找表107中的与查找关键字对应的条目。查找单元114a然后基于为查找关键字生成的第二哈希值H2从在查找表107的标识的条目中包括的多个偏移选择与查找关键字对应的偏移。查找单元114a然后将选择的偏移应用于第三哈希值H3以确定转发表106中的与查找关键字对应的位置,并且从转发表106中的确定的位置取回转发条目。在一个实施例中,在从转发表106取回转发条目时,查找单元114a比较从转发条目取回的查找关键字与用来确定条目的位置的查找关键字(即,为由转发引擎104处理的包生成的查找关键字)。如果取回的关键字与查找关键字匹配,则已经执行了成功的查找,并且取回的转发信息用来向由转发信息指示的一个或者多个端口112转发被转发引擎104处理的包。另一方面,在一个实施例中,如果取回的关键字未与查找关键字匹配,则在转发表106中的查找失败。在这一情况下,在一个实施例中,查找单元114a利用查找关键字以搜索CAM108,并且如果在CAM108中发现用于查找关键字的匹配,则基于CAM108的对应条目获得转发信息。在一个实施例中,如果在CAM108中未发现用于查找关键字的匹配,则转发引擎114向(例如,在第2层桥接设备中的)端口112中的所有端口或者子集“传涌(flood)”包,或者执行另一默认或者预定操作。
以下与图3A-图3B结合描述根据一个实施例的由查找单元114a实施的示例查找方案。以下与图4A-图4B结合描述根据一个实施例的由更新单元114b实施的示例更新方案。在描述示例查找方案和示例更新方案之前,首先与图2结合描述根据一个实施例的查找表17的示例条目。
图2图示根据一个实施例的图1的查找表107的示例条目200。在其他实施例中,图1的查找表107包括具有除了条目200之外的适当结构的条目。条目200包括多个子条目或者冲突桶(collisionbucket)(“桶”)201。冲突桶201一般通过允许不同偏移用于多个查找关键字来为哈希成相同第一哈希值H1的多个查找关键字提供冲突解决。在图2的实施例中,每个桶201包括相应签名字段202、相应冲突计数器字段204和相应偏移字段206。偏移字段206用来为哈希成相同第一哈希值H1的不同查找关键字存储相应偏移,并且签名字段202用来关联偏移与偏移对应于的特定查找关键字。在一个实施例中,签名字段202将与关键字对应的第二哈希值H2存储为用于为关键字选择适当偏移的签名。在这一实施例中,在基于为关键字生成的第一哈希值H1从查找表107取回条目200时,查找单元114a比较从条目200的签名字段202取回的签名与为关键字生成的第二哈希值H2。在从签名字段202取回的签名与为关键字生成的第二哈希值H2匹配的情况下,查找单元114a选择从对应偏移字段206取回的偏移。在图2的实施例中,条目200包括四个冲突桶201并且能够存储与单个第一哈希值H1关联的四个不同偏移和签名。在其他实施例中,条目200包括其他适当数目(例如,1个、2个、3个、5个、6个等)的冲突桶,并且相应地能够存储与单个哈希值H1关联的其他对应数目的偏移和签名。
附加地,在一些实施例中,条目200被构造用于支持解决在共享第一哈希值H1和第二哈希值H2二者、但是具有不同第三哈希值H3的多个关键字之间的冲突。在这样的情形中,从条目200中的多个偏移为多个关键字选择相同偏移,但是选择的偏移被应用于不同第三哈希值H3从而产生转发表106中的不同存储器位置。在一个实施例中,冲突计数器字段203被用来统计(account for)对应偏移字段206中的偏移被用于的多个关键字。如以下将更具体说明的那样,在从转发表106删除偏移被用于的多个查找关键字时利用多个关键字的这样的统计,从而使得冲突桶保持有效,直至去除多个查找关键字中的最后查找关键字。在一个实施例中,每个冲突计数器字段204包括两位并且能够统计最多四个查找关键字。在其他实施例中,利用其他适当长度的冲突计数器字段。例如,每个冲突计数器字段204包括除了两位之外的适当数目的位(例如,1、3、4、5位等),并且相应地能够统计共享对应偏移的不同对应数目的查找关键字。
图3A-图3B是图示根据一个实施例的用于在数据库中对查证关键字定位并且从数据库取回与查找关键字关联的信息的示例查找方案300的流程图。在一个实施例中,在图1的网络设备100中实施查找方案300。例如在一个实施例中,查找方案300由图1的查找单元114a实施。在其他实施例中,在其他适当网络设备中实施查找方案300。类似地,在其他实施例中,图1的网络设备100(例如,网络设备100的查找114a)实施除了技术300之外的适当查找技术。为了易于说明,以下将查找方案300描述为与图1的查找表107、转发表106和CAM108结合由查找单元114a实施。
在块302,获得查找关键字X。在一个实施例中,基于在包中包括的或者与包关联的信息生成查找关键字X。例如,在一个实施例中,查找关键字由与包关联的目的地MAC地址和VLAN标签组成。在其他实施例中,关键字X包括与包关联的其他适当信息。
在块304,生成用于关键字X的多个哈希值。在一个实施例中,在块304生成的哈希值包括第一哈希值H1=h1(X)、第二哈希值H2=h2(X)和第三哈希值H3=h3(X),其中h1、h2和h3是相异哈希函数。例如,在一个实施例中,使用相异生成器多项式(比如32CRC多项式)实施哈希函数h1、h2、h3。在一个示例实施例中,第三哈希值H3=HI+H2+h3(X)。在其他实施例中,以其他适当方式生成第三哈希值H3。在一些实施例中,与第一哈希值H1和/或第二哈希值H2独立地生成第三哈希值H3。一般而言,任何适当哈希值生成方案可以用来在块304为关键字X生成多个哈希值。
在块306,查找单元114a使用在块304生成的第一哈希值H1执行第一存储器访问。具体而言,在块306的第一存储器访问中,查找单元114a使用值H1作为进入查找表107的索引访问查找表107,并且从查找表107取回对应条目。在一个实施例中,取回的查找条目被构造为图2的条目200。在这一实施例中,取回的查找表包括四个冲突桶,并且每个冲突桶包括相应签名字段、相应冲突计数器字段和相应偏移字段。在另一实施例中,以另一适当方式构造取回的查找表条目。
在块308,查找单元114a分析取回的条目以确定取回的条目的冲突桶是否包括与在块304为关键字生成的第二哈希值匹配的签名。另外,在标识具有与H2匹配的签名的冲突桶时,查找单元114a确定标识的冲突桶是否在冲突桶的偏移字段中包括有效偏移。例如,在一个实施例中,在冲突桶的偏移字段中的全一(即,偏移字段的每个位被设置成逻辑一(1))指示偏移无效,并且在冲突桶的偏移字段中的任何其他值(即,偏移字段的位中的一位或者多位被设置成逻辑零(0))是有效偏移。在其他实施例中,偏移字段的其他适当值指示在标识的冲突桶中的偏移不是有效偏移。
如果在块308标识具有与H2匹配的签名并且具有有效偏移的冲突桶,则查找方案在块310继续,查找单元114a在该块执行第二存储器访问,从而访问转发数据库106。在第二存储器访问中,查找单元114a使用H3和从在块308标识的冲突桶的偏移字段取回的偏移访问转发表106。另一方面,如果在块308未标识具有与H2匹配的签名的有效冲突桶,则方案300在块312继续,查找单元114a在该块使用H3和默认偏移执行第二存储器访问。在一些实施例中,默认偏移可配置。在其他实施例中,默认偏移被预设或者预定并且不可配置。
在任何情况下,在第二存储器访问(在块310或者在块312)中,查找单元114a从转发表106取回转发条目。在一个实施例中,从转发表106取回的转发条目包括关键字和与关键字关联的信息。现在参照图3B,方案300在块314继续。在块314,查找单元114a比较在块310或者在块312从转发表106取回的转发条目中的关键字与在块302获得的查找关键字X。在一个实施例中,在块314的在取回的条目中的关键字与关键字X匹配这样的确定表明成功查找已经出现。在这一情况下,根据一个实施例,与关键字关联的取回的信息(例如,标识应当经由其传输包的一个端口(或者多个端口)112的转发信息)用来例如对包执行一个或者多个动作,比如向标识的一个端口(或者多个端口)112转发包。然而,在一些情况下,在决314确定在决310或者在块312从转发表106取回的转发条目中的关键字未与在块302获得的关键字X匹配。在这一情况下,方案300在块316继续,查找单元114a在该块使用关键字X搜索CAM108以尝试在CAM108中发现用于关键字X的匹配。备选地,在另一实施例中,查找单元114a在至少一些情形中与访问转发表106和/或访问查找表107并行地搜索CAM108,这造成在其中关键字位于CAM108中的情况下的更低延时。在通过完全引用而结合于此、Levi等人、于2012年8月31日提交、名称为“Efficient TCAM Architecture”的第61/695,520号美国临时专利申请中更具体描述在一些实施例中利用的用于与基于CAM的数据库中的搜索并行执行基于哈希的数据库中的搜索的示例技术。
在任何情况下,当在CAM108中发现用于关键字X的匹配(在块318为“是”)时,则在CAM108中的成功查找已经出现。在这一情况下,在一个实施例中,查找单元114a例如从由与关键字X匹配的条目指示的存储器位置取回与关键字关联的信息,比如转发条目。在一个实施例中,由与关键字X匹配的条目指示的存储器位置是在转发表106中的存储器位置。例如,在一个实施例中,在CAM108中的每个条目指示进入转发表106的索引。在另一实施例中,由与关键字X匹配的CAM条目指示的存储器位置是在除了转发表106之外的存储器中的存储器位置。
另一方面,如果在CAM108中未发现匹配(在块318为“否”),则查找已经失败,即,在数据库中未发现查找关键字X。在这一情况下,采取用于失败查找的适当动作。将在失败查找情形中采取的特定动作依赖于具体实施例和/或场景。例如,在一个实施例和/或场景中,转发引擎104向(例如,在第2层桥接设备中的)端口112中的所有的端口传涌包。作为另一示例,在另一实施例和/或场景中,发起用于向数据库中插入关键字X和与关键字X关联的信息的过程。附加地或者备选地,在其他实施例中,在失败查找的情况下执行其他适当默认或者预定操作。
图4A-图4B是图示根据一个实施例的用于向数据库中插入查找关键字和与关键字关联的信息的示例更新方案400的流程图。在一个实施例中,在图1的网络设备100中实施更新方案400。例如,在一个实施例中,图1的更新单元114b完全或者部分实施更新方案400。在其他实施例中,在其他适当网络设备中实施更新方案400。类似地,在一些实施例中,图1的网络设备100(例如,网络设备100的更新单元114b)实施除了更新方案400之外的适当更新方案。为了易于说明,以下将更新方案400描述为与图1的转发表106、查找表107和CAM108结合由更新单元114b执行。
在块402,获得将向数据库中插入的查找关键字X。在一个实施例中,基于在如下包中包括的或者与该包关联的信息生成查找关键字X,已经为该包将目的地地址链接到特定的一个端口或者(多个端口)112。在一个实施例中,查找关键字X例如由已经被链接到特定的一个端口或者(多个端口)112的目的地MAC地址和VLAN标签中的一项或者多项组成。在其他实施例中,关键字X包括在包中包括的或者与包关联的其他适当信息。
在块404,生成用于关键字X的多个哈希值。在一个实施例中,在块304生成的哈希值包括第一哈希值H1=h1(X)、第二哈希值H2=h2(X)和第三哈希值H3=h3(X),其中h1、h2和h3是相异哈希函数。在一些实施例中,使用相异或者有关生成器多项式(比如32CRC多项式)实施哈希函数h1、h2和h3。在一个示例实施例中,第三哈希值H3=HI+H2+h3(X)。在其他实施例中,以其他适当方式生成第三哈希值H3。在一些实施例中,与第一哈希值H1和/或第二哈希值H2独立地生成第三哈希值H3。一般而言,任何适当哈希值生成方案可以用来在块404为关键字X生成多个哈希值。
在块406,更新单元使用第一哈希值H1作为进入查找表107的索引访问查找表107。在块408,更新单元114b确定具有与关键字X对应的签名的有效冲突桶是否已经在查找表107中存在于在块406访问的条目中。在一个实施例中,为了确定具有与关键字X对应的签名的有效冲突桶是否存在于在块406访问的条目中,更新单元114b比较查找表条目中的冲突桶的签名字段与第二哈希值H2。在标识具有与第二哈希值H2匹配的签名的冲突桶时,更新单元114b确定标识的冲突桶是否在冲突桶的偏移字段中包括有效偏移。例如,在一个实施例中,在冲突桶的偏移字段中的全一(即,偏移字段的每个位被设置成逻辑一(1))指示偏移无效,并且在冲突桶的偏移字段中的任何其他值(即,偏移字段的位中的一位或者多位被设置成逻辑零(0))对应于有效偏移。在其他实施例中,偏移字段的其他适当值指示在标识的冲突桶中的偏移不是有效偏移。
当在块408标识具有与第二哈希值H2匹配的签名的冲突桶时,方案400在块410继续,更新单元114b在该块确定对应偏移是否可以用于向转发表106中插入附加关键字。在一个实施例中,更新单元114b检查在块408标识的冲突桶的冲突计数器字段,并且如果冲突计数器未超过某个最大值则确定对应偏移可以用于向转发表106中插入附加关键字。例如,在一个实施例中,每个冲突计数器字段包括两位并且能够支持最多四个关键字。在这一实施例中,更新单元114b在冲突计数器指示三个或者更少关键字当前利用偏移时确定附加关键字可以利用偏移。另一方面,在冲突计数器字段指示已经向转发表106中插入冲突桶可以容纳的关键字的最大数目(例如,在冲突计数器字段中为四的值)时,更新单元114b确定无法向转发表106中插入附加关键字。
在块412,在确定可以插入附加关键字时,更新单元114b将对应偏移应用于在块404生成的第三哈希值,并且利用具有偏移的第三哈希值作为进入转发表106的索引。在块414,更新单元114b确定在转发表106中的编索引的条目是否为空(即,可用)。参照图4B,在确定编索引的条目可用时,方案400在块424继续,更新单元114b在该块向转发表106中的条目中插入关键字X(和与关键字X关联的信息)。在这一情况下,由于具有大于零(0)的冲突计数器值的、已经与有效冲突桶关联的偏移用来插入关键字,所以无需更新查找表以指示新偏移。因而,在这一情况下,方案400跳过块426并且在块428继续,更新单元114b在该块递增在块408标识的冲突桶的冲突计数器字段(例如,在关键字X是将与冲突桶关联的第一关键字的情况下,更新单元114b将计数器字段的值从-1改变成0)以统计在块424中向转发表106中插入的关键字X。
现在返回到图4A的块408,当在块408未标识具有与第二哈希值H2匹配的签名的冲突桶时,方案400然后在块418继续,更新单元114b在该块确定未占用的冲突桶是否存在于在块406访问的查找表条目中。如果在块418确定未占用的冲突桶存在,则更新单元114b使用第三哈希值H3访问转发表106,并且搜索转发表106以从由第三哈希值H3编索引的条目发现可用偏移。换言之,在一个实施例中,更新单元114b搜索转发表106以寻找未占用的条目,其中该搜索开始于由H3编索引的条目并且结束于与由查找表107支持的最大偏移对应的条目。如果标识了这样的条目,则更新单元114b在块424向标识的条目中插入关键字X(和与关键字X关联的信息)。然后,在块426,更新单元114b用与在块422标识的条目对应的偏移更新在块418(图4A)标识的冲突桶。此外,更新单元114b递增在块418标识的冲突桶的冲突计数器以统计在块424向转发106中插入的关键字X。
再次参照图4A,块410、414和418中的每个块的“否”分支通向块416,更新单元114b在该块访问CAM108以尝试向CAM108中插入关键字X。在块430(图4B)确定是否可以向CAM108中插入关键字X。在确定可以向CAM108中插入关键字时,更新单元114b向CAM108中插入关键字(图4B的块432)。另一方面,在确定无法向CAM108中插入关键字时(例如,当在CAM中无空的空间时),关键字X的插入已经失败。
图4C是图示在一些实施例中与图4A-图4B的更新技术400结合实施的冲突解决方案450的流程图。方案450包括如下一些块,这些块是技术400的公共块,并且这些块相对于图4A-图4B的对应块由相似编号的块引用(例如,块432)。在方案450中,在一个实施例中,支持使用默认偏移向转发表107中的插入。在一个实施例中,默认偏移可配置。在其他实施例中,默认偏移被预设或者预定并且不可配置。
冲突解决方案450开始于与图4A的块418对应的块418。当在块418确定无可用(未使用)冲突桶存在于在块408标识的查找表条目中时,取代如根据方案400完成的那样前进到块432,方案450前进到块434,在该块确定是否启用默认偏移。如果在块434确定未启用默认偏移,则方案450前进到块432,在该块根据方案400尝试向CAM108中插入关键字。另一方面,当在块434确定启用默认偏移时,则方案450在块436继续,在该块将默认偏移应用于第三哈希值H3以确定用于转发表106的索引,并且使用确定的索引访问转发表106。
在块438确定是否占用了在块436访问的条目。当在块438确定条目被占用时,则方案350在块432继续,在该块尝试向CAM108中插入。然而,当在块438确定未占用在块436访问的条目时,在块436访问的条目向转发表106中插入关键字X。在这一情况下,根据方案450,在至少一些情形中,即使具有未与关键字X匹配的签名的关键字已经占用了与用于关键字X的第一哈希值关联的所有冲突桶,仍然向转发表106中插入关键字X。在一个实施例中,在效果上,在查找表106“以外”学习这样的关键字。
在一个实施例中,由图1的处理器120和存储器122辅助方案450的实现方式。具体而言,为了防止对于在查找表106以外学习的关键字的后续查找错误,在这一实施例中,处理器120在存储器中(例如,在存储器122中或者在耦合到处理器120的另一存储器中)存储这样的关键字的签名。后续查找错误可以例如出现于查找表107中的与关键字X的第一哈希值H1对应的冲突桶随后变成可用(例如,由于删除与这一冲突桶先前关联的关键字),并且然后用于具有与关键字X的第二哈希值H2匹配的第二哈希值H2的其他关键字时。这将造成为关键字X后续执行的未成功查找,因为将在查找期间不再访问其中存储X的转发表条目。为了防止这一场景,在一个实施例中,处理器120检查在查找表106以外学习的关键字的存储的签名并且防止随后向查找表106中写入与存储的签名匹配的签名。例如,在一个实施例中,取而代之,在这样的情形中,处理器120使更新单元114b使用与关键字对应的第三哈希值H3访问转发表106。
再次参照图1,在一些实施例中,为了进一步提高转发表107的存储器利用率,处理器120执行存储器122中存储的指令以在一些情形中实施如下技术,比如基于跳房子哈希化(hopscotch hasing)的技术,该技术重排转发表106中的条目以由此允许插入原本不能向转发表106中插入的至少一些查找关键字。图5A-图5B是图示根据一个示例实施例的用于重排数据库表510中的条目的方案500的示图。在一个实施例中,(例如,由处理器120)在转发引擎104中实施方案500以重排转发表106中的条目。在这一实施例中,与图1的查找表107结合实施方案500。在一个实施例中,与图4A-图4B的更新方案400结合利用方案500以重排转发表106中的条目以在更新方案400由于转发表106中的冲突而不能向转发表106中插入查找关键字时允许向转发表106中插入查找关键字。
在图5A-图5B中所示的实施例中,将表510示出为具有五个条目512-1至512-5。虽然将表510图示为具有五个条目,但是表510一般包括任何适当数目的条目,并且在一些实施例中,在表510中的条目数目多于五个条目或者少于五个条目。根据所示实施例,在图5A-图5B中在条目512的右侧指示条目索引。一般而言,使用为查找关键字生成的第三哈希值H3和为查找关键字选择或者确定的偏移向表500中插入查找关键字。在一个实施例中,偏移的值受最大偏移限制。在图5A-图5B的示例实施例中,最大偏移等于三。因而,在这一实施例中,可以在具有在x与x+3之间的索引的可用(未占用)表条目向表510中插入具有等于x的第三哈希值H3的查找关键字。在其他实施例中,利用最大偏移的其他适当值。
首先参照图5A,表510的所有条目512初始地为空。将向表510中插入的第一查找关键字514-1对应于第三哈希值H3=x,并且用偏移0(即,在由值x编索引的表条目)向表510中插入。将向表510中插入的第二查找关键字514-2对应于第三哈希值H3=x,并且用偏移1(即,在由值x+1编索引的表条目)向表510中插入。将向表510中插入的第三查找关键字514-3对应于第三哈希值H3=x+1,并且由于第二查找关键字514-2已经占用了由值x+1编索引的条目,因此用偏移1(即,在由值x+2编索引的表条目)向表510中插入。将向表510中插入的第四查找关键字514-4对应于第三哈希值H3=x,并且用偏移3(即,在由值x+2编索引的条目)向表510中插入。
将向表510中插入的第五查找关键字514-5对应于第三哈希值H3=x。无法向表510中插入查找关键字514-5,因为其他关键字当前占用在可以向其中插入具有H3=x的关键字的条目范围内的所有条目(即,在x与x+3之间的条目)。如图5B中所示,在一个实施例中,第三查找关键字514-3然后移向由x+4编索引的空条目,并且与第三查找关键字514-3关联的偏移被改变成值3,由此允许在由x+2编索引的位置向表510中插入第五查找关键字514-5。因而,然后在由x+2编索引的位置用偏移向3向表510中插入第五查找关键字514-5。另外,在一个实施例中,更新与查找关键字514-3关联的查找表条目(例如,在图1的查找表107中的冲突桶中)以反映用于查找关键字514-3的新偏移。
在一个实施例中,为了避免更新其他查找关键字也与之关联的偏移,在移动查找关键字514-3之前,检查与查找关键字514-3关联的冲突桶以保证无其他查找关键字与对应偏移关联。例如,在与查找关键字514-3关联的冲突计数器的值指示查找关键字514-3是与对应偏移关联的仅有关键字(例如,冲突计数器的值等于0)时,查找关键字514-3被移向由x+4编索引的位置,并且相应地更新偏移字段以对应于由x+4编索引的新位置。然而,在一个实施例中,在冲突计数器的值指示一个或者多个其他关键字与对应偏移关联(例如,冲突计数器的值大于0)时,则查找关键字514-3未被移向新位置。在一些实施例和/或场景中,在这一情况下,不同查找关键字(与指示查找关键字是与对应偏移关联的仅有关键字的冲突计数器关联的查找关键字)被移向新位置以允许插入查找关键字515-5。也就是说,在这一实施例中,查找关键字的重定位仅限于如果查找关键字例如如由与特定冲突桶关联的对应冲突计数器的值0指示的那样是与冲突桶关联的仅有查找关键字,则对查找关键字重定位。
备选地,在其中查找关键字514-3与之关联的冲突计数器的值指示一个或者多个其他关键字与对应偏移关联(例如,冲突计数器的值大于0)的另一实施例中,包括查找关键字514-3的与冲突桶关联的所有查找关键字被移向新位置,并且在查找关键字514-3的先前位置向表510中插入查找关键字514-5。另外,在这一实施例中,例如在图1的查找表107中更新与重定位的查找关键字关联的相应偏移以恰当反映重定位的查找关键字的新位置。
图6是根据一个实施例的用于在网络设备中对包执行动作或者动作集(比如转发包)的示例方法600的流程图。在一个实施例中,方法600由图1的切换设备100实施。例如,在一个实施例中,方法600至少部分由图1的转发引擎104实施。在其他实施例中,方法600由切换设备100的其他适当部件或者由另一适当网络设备实施。
在块602,基于与包对应的查找关键字生成多个哈希值。在一个实施例中,哈希值由图1的哈希值生成器110生成。在其他实施例中,哈希值由切换设备100的其他适当部件或者由另一适当切换设备生成。在一个实施例中,与包对应的查找关键字包括在包中包括的或者与包关联的各种信息。例如,查找关键字包括目的地MAC地址和VLAN标签等中的一项或者多项。在其他实施例中,查找关键字包括在包中包括的或者与包关联的其他适当信息。
在块604,使用在块602生成的第一哈希值和第二哈希值搜索查找表。在一个实施例中,搜索图1的查找表107。在另一实施例中,搜索另一适当查找表。在一个实施例中,查找表包括构造为图2的条目200的条目。在其他实施例中,查找表包括以其他适当方式构造的条目。在一个实施例中,基于第一哈希值标识查找表中的条目,并且使用第二哈希值搜索标识的条目以选择标识的条目的与第二哈希值对应的子条目。
在块606,使用第三哈希值和在块604确定的偏移搜索适当网络设备数据库,比如转发表。在一个实施例中,搜索转发表106。在另一实施例中,搜索另一转发表或者除了转发表之外的适当数据库。在一个实施例中,搜索数据库包括将偏移应用于第三哈希值以确定进入数据库的索引,从而访问数据库以取回与确定的索引对应的条目。在一个实施例中,取回的条目包括用于对包执行一个或者多个动作的信息。例如,在一个实施例中,取回的条目是指示应当如何(例如,向哪个端口)转发包的转发条目。在其他实施例中,取回的条目指示关于除了转发包之外的一个或者多个动作的信息,比如关于将向包应用的过滤的信息、关于与包的服务质量(QoS)处理关联的动作或者动作集的信息、与在网络设备中收集统计量有关的信息等。在块608,将由在块606取回的条目指示的一个或者多个动作应用于包。例如,在一个实施例中,在转发数据库应用中,基于在块606选择的转发条目向网络设备的端口转发包。在其他实施例中,在块608将基于在块606取回的条目的其他适当的一个或者多个动作应用于包。
图7是根据一个实施例的用于在网络设备中填充转发数据库的示例方法700的流程图。在一个实施例中,方法700由图1的切换设备100实施。例如,在一个实施例中,方法700至少部分由图1的转发引擎104实施。在其他实施例中,方法700由切换设备100的其他适当部件或者由另一适当网络设备实施。
在块702,基于与包对应的查找关键字生成多个哈希值。在一个实施例中,哈希值由图1的哈希值生成器110生成。在其他实施例中,哈希值由切换设备100的其他适当部件或者由另一适当切换设备生成。在一个实施例中,与包对应的查找关键字包括在包中包括的或者与包关联的各种信息。例如,查找关键字包括目的地MAC地址和VLAN标签等中的一项或者多项。在其他实施例中,查找关键字包括在包中包括的或者与包关联的其他适当信息。
在块704,至少基于第一哈希值和第二哈希值确定进入转发表的偏移。在一个实施例中,确定偏移包括访问查找表以确定与第一哈希值和第二哈希值关联的偏移是否已经存在于查找表中。在一个实施例中,确定偏移包括访问图1的查找表107,该查找表107具有被构造为图2的条目200的条目。在另一实施例中,确定偏移包括访问另一适当查找表。在一个实施例中,在与第一哈希值和第二哈希值关联的偏移已经存在于查找表中时,将偏移设置成从查找表取回的偏移。然后将偏移应用于第三哈希值以确定进入转发表(例如,图1的转发表106或者另一适当转发表)的索引。如果与第一哈希值和第二哈希值关联的偏移尚未存在于查找表中,则使用第三哈希值访问转发表,并且在可用偏移存在于转发表中时确定转发表中的这样的可用偏移。在一个实施例中,如果可用偏移未存在于(例如,受最大偏移值限制的)转发表中,则根据适当重排技术(比如图5A-图5B的技术500)重排转发表中的条目。在一个实施例中,在这一情况下,确定偏移为作为重排的结果而变成可用的偏移。在一个实施例中,在查找表无法支持插入具有第一哈希值的附加关键字时,将偏移设置成默认偏移。在至少一些实施例中,这些数据库填充技术高效地解决可能在向转发表中插入关键字期间产生的各种冲突,由此增加查找表的存储器利用率。
在块706,基于第三哈希和在块706确定的偏移确定转发表中的位置。在块708,确定是否可以向确定的位置上插入查找关键字而未与先前存储于转发表中的另一查找关键字冲突。在确定可以在转发表中的确定的位置插入查找关键字时,在块710在确定的位置插入查找关键字和与查找关键字关联的信息。
在一个实施例中,当在块708确定无法向确定的位置上插入查找关键字而未与先前存储于转发表中的另一查找关键字冲突时,访问附加存储器(比如CAM(例如,图1的CAM108))以确定附加存储器是否可以容纳查找关键字。在确定附加存储器可以容纳查找关键字时,查找关键字(并且在一些实施例中与查找关键字关联的转发信息)被存储于附加存储器中。在一些实施例中,在附加存储器无法容纳查找关键字时,查找关键字的插入失败。在一个实施例中,根据方法700的插入技术在至少一些情形中增加转发表的利用率并且减少失败插入的概率。
可以在硬件中(比如在一个或者定制集成电路、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等中)实施以上关于图2-图4描述的各种块、操作等。可以全部或者部分使用执行机器可读软件和/或固件指令的处理器实施以上关于图5描述的各种块、操作等。
尽管已经参照如下具体示例描述了本发明(这些具体示例旨在于仅为举例说明而不是限制本发明),但是本领域普通技术人员将清楚,还可以对公开的实施例进行除了以上明确描述的改变、添加或者修改之外的改变、添加或者修改而不脱离本发明的精神实质和范围。
Claims (21)
1.一种用于在网络设备中转发包的方法,所述方法包括:
在哈希值生成器并且基于与包对应的查找关键字生成多个哈希值,至少包括使用第一哈希函数生成第一哈希值、使用第二哈希函数生成第二哈希值和使用第三哈希函数生成第三哈希值,所述第三哈希函数不同于所述第一哈希函数和所述第二哈希函数;
使用所述第一哈希值和所述第二哈希值搜索查找表以确定用于所述查找关键字的偏移;以及
使用所述第三哈希值和为所述查找关键字确定的所述偏移搜索转发表以选择与所述查找关键字对应的转发条目;以及
基于选择的所述转发条目向所述网络设备的一个或者多个端口转发所述包。
2.根据权利要求1所述的方法,其中使用所述第一哈希值和所述第二哈希值搜索所述查找表以确定用于所述查找关键字的所述偏移包括:
使用所述第一哈希值作为进入所述查找表的索引以标识所述查找表中的对应条目,其中标识的所述条目包括与所述第一哈希值关联的多个冲突桶,以及
用所述第二哈希值从与所述第一哈希值关联的所述多个冲突桶选择冲突桶以确定所述偏移。
3.根据权利要求1所述的方法,其中使用所述第一哈希值和所述第二哈希值搜索所述查找表以确定用于所述查找关键字的所述偏移包括:
使用所述第一哈希值作为进入所述查找表的索引以标识所述查找表中的对应条目,其中标识的所述条目包括与所述第一哈希值关联的多个冲突桶;
使用所述第二哈希值搜索所述多个冲突桶以标识所述多个冲突桶中的与所述第二哈希值关联的冲突桶;以及
在标识与所述第二哈希值关联的冲突桶时,选择标识的所述冲突桶以确定所述偏移,以及
在未标识与所述第二哈希值关联的冲突桶时,使用默认偏移作为所述偏移。
4.根据权利要求2所述的方法,其中所述多个冲突桶中的每个冲突桶包括相应签名字段和相应偏移字段,并且其中确定所述偏移包括:
比较所述第二哈希值与所述多个冲突桶中的至少一些冲突桶的相应签名字段,
在所述第二哈希值与所述冲突桶中的一个冲突桶的签名字段的值匹配时,将所述偏移设置成所述一个冲突桶的所述偏移字段的值,以及
在所述第二哈希值不与所述多个冲突桶的所述签名字段的任何值匹配时,将所述偏移设置成预定全局偏移值。
5.根据权利要求1所述的方法,其中使用所述第三哈希值和为所述查找关键字确定的所述偏移搜索所述转发表以选择与所述查找关键字对应的转发条目包括:
将确定的所述偏移应用于所述第三哈希值以获得进入所述转发表的索引,以及
选择具有获得的所述索引的所述转发条目。
6.根据权利要求4所述的方法,其中所述转发表的每个条目包括用于存储关键字的关键字字段和用于存储与所述关键字关联的转发信息的信息字段,其中向所述网络设备的所述端口转发所述包包括:
比较选择的所述转发条目的所述关键字字段的值与所述查找关键字,以及
如果所述关键字字段的所述值与所述查找关键字匹配,则基于选择的所述转发条目的信息字段转发所述包。
7.根据权利要求5所述的方法,其中所述网络设备包括用于存储无法被向所述转发表中插入的查找关键字的内容可寻址存储器(CAM)表,所述方法还包括,如果所述关键字字段的所述值不与所述查找关键字匹配,则:
使用所述查找关键字以搜索所述CAM表,并且其中:
如果在所述CAM表中发现用于所述查找关键字的匹配,则向所述端口转发所述包包括基于所述CAM表条目转发所述包,以及
如果在所述CAM表中未发现用于所述查找关键字的匹配,则向所述端口转发所述包包括向所述网络设备的多个端口传涌所述包。
8.一种用于在网络中转发包的网络设备,包括:
多个端口;
耦合到所述多个端口的包处理器,所述包处理器被配置用于向所述多个端口中的一个或者多个适当端口传送经由所述多个端口中的至少一些端口接收的包,所述包处理器包括:
哈希值生成器,被配置用于基于与包对应的查找关键字生成多个哈希值,所述多个哈希值至少包括使用第一哈希函数生成的第一哈希值、使用第二哈希函数生成的第二哈希值和使用第三哈希函数生成的第三哈希值,所述第三哈希函数不同于所述第一哈希函数和所述第二哈希函数;以及
耦合到查找表和转发表的查找单元,所述查找单元被配置用于:
使用所述第一哈希值和所述第二哈希值搜索所述查找表以确定用于所述查找关键字的偏移;以及
使用所述第三哈希值和为所述查找关键字确定的所述偏移搜索所述转发表以选择与所述查找关键字对应的转发条目;以及
转发引擎,被配置用于基于选择的所述转发条目向所述多个端口中的一个或者多个端口转发所述包。
9.根据权利要求8所述的装置,其中所述查找单元被配置用于:
使用所述第一哈希值作为进入所述查找表的索引标识所述查找表的条目,其中标识的所述条目包括与所述第一哈希值关联的多个冲突桶,以及
使用所述第二哈希值选择所述多个冲突桶中的冲突桶以用于为所述查找关键字确定所述偏移。
10.根据权利要求9所述的装置,其中每个冲突桶包括相应签名字段和相应偏移字段,并且其中所述查找单元被配置用于:
比较所述第二哈希值与所述多个冲突桶中的至少一些冲突桶的相应签名字段;
在所述第二哈希值与所述冲突桶中的一个冲突桶的签名字段的值匹配时,将所述偏移设置成所述一个冲突桶的所述偏移字段的值;以及
在所述第二哈希值不与所述多个冲突桶的所述签名字段的任何值匹配时,将所述偏移设置成预定全局偏移值。
11.根据权利要求8所述的装置,其中所述查找单元被配置用于:
将确定的所述偏移应用于所述第三哈希值以获得进入所述转发表的索引,以及
选择具有进入所述转发表的获得的所述索引的所述转发条目。
12.根据权利要求11所述的装置,其中所述转发表的每个条目包括用于存储关键字的关键字字段和用于存储与所述关键字关联的转发信息的信息字段,并且其中:
所述查找单元被配置用于比较选择的所述转发条目的所述关键字字段中存储的值与所述查找关键字,以及
所述转发引擎被配置用于在所述关键字字段的所述值与所述查找关键字匹配时,基于选择的所述转发条目的所述信息字段执行转发动作。
13.根据权利要求12所述的装置,还包括被配置用于存储与无法被向所述转发表中插入的查找关键字关联的转发信息的内容可寻址存储器(CAM),其中所述转发查找单元被配置用于在所述关键字字段的所述值不与所述查找关键字匹配时,使用所述查找关键字搜索所述CAM。
14.一种用于在网络设备中填充转发数据库的方法,所述方法包括:
在哈希值生成器并且基于查找关键字生成与包对应的多个哈希值,至少包括使用第一哈希函数生成第一哈希值、使用第二哈希函数生成第二哈希值和使用第三哈希函数生成第三哈希值,所述第三哈希函数不同于所述第一哈希函数和所述第二哈希函数;
用所述网络设备并且至少基于所述第一哈希值和所述第二哈希值为所述查找关键字确定进入转发表的偏移;
用所述网络设备并且基于所述第三哈希值和所述偏移确定所述转发表中的用于插入所述查找关键字的位置;
用所述网络设备确定是否可以在确定的所述位置向所述转发表中插入所述查找关键字而不与在确定的所述位置先前存储的关键字冲突;以及
在确定可以向所述转发表中插入所述查找关键字时,在确定的所述位置向所述转发表中插入所述查找关键字和与所述查找关键字关联的转发信息。
15.根据权利要求14所述的方法,其中基于所述第一哈希值和所述第二哈希值为所述查找关键字确定进入所述转发表的所述偏移包括:
基于所述第一哈希值标识查找表条目,其中所述查找表条目包括与所述第一哈希值关联的多个冲突桶;以及
使用所述第二哈希值以选择所述多个冲突桶中的一个冲突桶以用于确定所述偏移。
16.根据权利要求15所述的方法,其中所述查找表条目中的每个冲突桶包括相应签名字段和相应偏移字段,并且其中确定所述偏移包括:
比较所述第二哈希值与标识的所述查找表条目中的至少一些冲突桶的相应签名字段;
在所述第二哈希值与所述冲突桶中的一个冲突桶的签名字段的值匹配时,从所述一个冲突桶的所述偏移字段取回所述偏移;以及
在所述第二哈希值不与标识的所述查找表条目中的所述签名字段中的任何签名字段匹配时,使用所述第三哈希函数作为进入所述转发表的索引搜索所述转发表以对所述转发表中的可用条目定位并且执行以下各项之一:
(i)在搜索所述转发表对所述转发表中的可用条目定位时,将所述偏移设置成所述转发表中的所述可用条目相对于由所述第三哈希函数值编索引的表条目的偏移的值,或者
(ii)在搜索所述转发表未对所述转发表中的可用条目定位时,将所述偏移设置成默认偏移值。
17.根据权利要求16所述的方法,其中使用所述第三哈希函数作为进入所述转发表的所述索引搜索所述转发表以对所述转发表中的所述可用条目定位包括对在从所述索引的最大偏移内的所述可用条目定位,并且其中确定所述偏移还包括在搜索所述转发表未对所述转发表中的所述可用条目定位时重排所述转发表中的条目,其中重排条目产生在所述最大偏移内的可用条目。
18.一种用于在网络设备中填充转发数据库的装置,包括:
哈希值生成器,被配置用于基于查找关键字生成多个哈希值,至少包括使用第一哈希函数生成的第一哈希值、使用第二哈希函数生成的第二哈希值和使用第三哈希函数来生成的第三哈希值,所述第三哈希函数不同于所述第一哈希函数和所述第二哈希函数;以及
更新单元,被配置用于:
至少基于所述第一哈希值和所述第二哈希值为所述查找关键字确定进入转发表的偏移,
基于所述第三哈希值和为所述查找关键字确定的所述偏移确定所述转发表中的用于插入所述查找关键字的位置,
确定是否可以在确定的所述位置向所述转发表中插入所述查找关键字而不与在确定的所述位置先前存储的关键字冲突,以及
在确定可以向所述转发表中插入所述查找关键字时,在确定的所述位置向所述转发表中插入所述查找关键字和与所述查找关键字关联的转发信息。
19.根据权利要求18所述的装置,其中所述更新单元被配置用于:
基于所述第一哈希值标识查找表条目,其中所述查找表条目包括与所述第一哈希值关联的多个冲突桶,以及
基于所述第二哈希值选择所述冲突桶中的一个冲突桶以用于确定所述偏移。
20.根据权利要求18所述的装置,其中所述查找表条目中的每个冲突桶包括签名字段和偏移字段,并且其中所述更新单元被配置用于:
比较所述第二哈希值与标识的所述查找表条目中的至少一些冲突桶的相应签名字段,
在所述第二哈希值与所述冲突桶中的一个冲突桶的签名字段的值匹配时,将所述偏移设置成所述一个冲突桶的所述偏移字段的值,以及
在所述第二哈希值不与标识的所述查找表条目中的所述签名字段中的任何签名字段匹配时,使用所述第三哈希函数作为进入所述转发表的索引搜索所述转发表,以对所述转发表中的可用条目定位,并且执行以下各项之一:
(i)在搜索所述转发表对所述转发表中的可用条目定位时,将所述偏移设置成所述转发表中的所述可用条目相对于由所述第三哈希函数值编索引的表条目的偏移的值,或者
(ii)在搜索所述转发表未对所述转发表中的可用条目定位时,将所述偏移设置成预定全局偏移值。
21.根据权利要求20所述的装置,其中所述更新单元被配置用于对在从所述索引的最大偏移内的所述可用条目定位,并且其中所述转发引擎还被配置用于在搜索所述转发表未对所述转发表中的所述可用条目定位时重排所述转发表中的条目,其中重排条目产生在所述最大偏移内的可用条目。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361808323P | 2013-04-04 | 2013-04-04 | |
US61/808,323 | 2013-04-04 | ||
US14/012,834 US9537771B2 (en) | 2013-04-04 | 2013-08-28 | Exact match hash lookup databases in network switch devices |
US14/012,834 | 2013-08-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104104604A true CN104104604A (zh) | 2014-10-15 |
CN104104604B CN104104604B (zh) | 2018-10-02 |
Family
ID=51654414
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310394776.1A Active CN104104604B (zh) | 2013-04-04 | 2013-08-30 | 网络交换机设备中的准确匹配哈希查找数据库的方法及装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9537771B2 (zh) |
CN (1) | CN104104604B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104504038A (zh) * | 2014-12-15 | 2015-04-08 | 北京更快互联网技术有限公司 | 一种减少哈希冲突的哈希查找方法 |
CN106095770A (zh) * | 2016-05-05 | 2016-11-09 | 邦彦技术股份有限公司 | 数据快速查找装置、查找方法、添加方法及删除方法 |
CN109245879A (zh) * | 2018-09-06 | 2019-01-18 | 杭州光芯科技有限公司 | 一种存储和查找ip地址映射关系的双哈希算法 |
CN112491723A (zh) * | 2020-12-07 | 2021-03-12 | 上海励驰半导体有限公司 | 网关报文转发方法、装置、存储介质及网关 |
CN113542210A (zh) * | 2020-04-21 | 2021-10-22 | 迈络思科技有限公司 | 网络设备和联网方法 |
CN116600031A (zh) * | 2023-07-18 | 2023-08-15 | 无锡沐创集成电路设计有限公司 | 报文处理方法、装置、设备及存储介质 |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9237100B1 (en) | 2008-08-06 | 2016-01-12 | Marvell Israel (M.I.S.L.) Ltd. | Hash computation for network switches |
US8614950B2 (en) | 2010-11-30 | 2013-12-24 | Marvell Israel (M.I.S.L) Ltd. | Load balancing hash computation for network switches |
CN103858386B (zh) | 2011-08-02 | 2017-08-25 | 凯为公司 | 用于通过优化的决策树执行包分类的方法和装置 |
US9171030B1 (en) | 2012-01-09 | 2015-10-27 | Marvell Israel (M.I.S.L.) Ltd. | Exact match lookup in network switch devices |
US9819637B2 (en) | 2013-02-27 | 2017-11-14 | Marvell World Trade Ltd. | Efficient longest prefix matching techniques for network devices |
US9276846B2 (en) * | 2013-03-15 | 2016-03-01 | Cavium, Inc. | Packet extraction optimization in a network processor |
US9537771B2 (en) | 2013-04-04 | 2017-01-03 | Marvell Israel (M.I.S.L) Ltd. | Exact match hash lookup databases in network switch devices |
US9135833B2 (en) * | 2013-04-09 | 2015-09-15 | Telefonaktiebolaget L M Ericsson (Publ) | Process for selecting compressed key bits for collision resolution in hash lookup table |
US10110492B2 (en) | 2013-04-11 | 2018-10-23 | Marvell Israel (M.I.S.L.) Ltd. | Exact match lookup with variable key sizes |
WO2015024215A1 (en) * | 2013-08-21 | 2015-02-26 | Qualcomm Incorporated | Pucch resource mapping an harq-ack feedback |
US9363178B2 (en) | 2013-12-18 | 2016-06-07 | Telefonaktiebolaget L M Ericsson (Publ) | Method, apparatus, and system for supporting flexible lookup keys in software-defined networks |
US9565114B1 (en) * | 2014-03-08 | 2017-02-07 | Google Inc. | Weighted load balancing using scaled parallel hashing |
US9906592B1 (en) | 2014-03-13 | 2018-02-27 | Marvell Israel (M.I.S.L.) Ltd. | Resilient hash computation for load balancing in network switches |
EP3149903A4 (en) * | 2014-05-30 | 2017-11-22 | Qualcomm Incorporated | Multi-table hash-based lookups for packet processing |
US9935831B1 (en) * | 2014-06-03 | 2018-04-03 | Big Switch Networks, Inc. | Systems and methods for controlling network switches using a switch modeling interface at a controller |
WO2016030757A1 (en) | 2014-08-25 | 2016-03-03 | Marvell World Trade Ltd. | Packet buffer with dynamic bypass |
WO2016122549A1 (en) * | 2015-01-29 | 2016-08-04 | Hewlett Packard Enterprise Development Lp | Read only bufferpool |
WO2016142774A1 (en) | 2015-03-06 | 2016-09-15 | Marvell Israel (M.I.S.L) Ltd. | Method and apparatus for load balancing in network switches |
US10320568B1 (en) | 2015-06-09 | 2019-06-11 | Google Llc | Protocol-independent multi-table packet routing using shared memory resource |
US11269884B2 (en) * | 2015-09-04 | 2022-03-08 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US10762074B2 (en) * | 2015-10-20 | 2020-09-01 | Sanjay JAYARAM | System for managing data |
US10904150B1 (en) | 2016-02-02 | 2021-01-26 | Marvell Israel (M.I.S.L) Ltd. | Distributed dynamic load balancing in network systems |
US10545832B2 (en) * | 2016-03-01 | 2020-01-28 | International Business Machines Corporation | Similarity based deduplication for secondary storage |
US10496543B2 (en) | 2016-03-31 | 2019-12-03 | Samsung Electronics Co., Ltd. | Virtual bucket multiple hash tables for efficient memory in-line deduplication application |
US10678704B2 (en) | 2016-03-29 | 2020-06-09 | Samsung Electronics Co., Ltd. | Method and apparatus for enabling larger memory capacity than physical memory size |
US9983821B2 (en) | 2016-03-29 | 2018-05-29 | Samsung Electronics Co., Ltd. | Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application |
US10528284B2 (en) | 2016-03-29 | 2020-01-07 | Samsung Electronics Co., Ltd. | Method and apparatus for enabling larger memory capacity than physical memory size |
US10437684B2 (en) * | 2016-03-29 | 2019-10-08 | International Business Machines Corporation | Similarity based deduplication for secondary storage |
US9966152B2 (en) | 2016-03-31 | 2018-05-08 | Samsung Electronics Co., Ltd. | Dedupe DRAM system algorithm architecture |
CN106250286A (zh) * | 2016-07-18 | 2016-12-21 | 合肥赑歌数据科技有限公司 | 用于分布式机房监控的内数据库体系系统 |
US10243857B1 (en) | 2016-09-09 | 2019-03-26 | Marvell Israel (M.I.S.L) Ltd. | Method and apparatus for multipath group updates |
TWI635726B (zh) * | 2017-06-14 | 2018-09-11 | 中原大學 | 巨網路流量偵測方法與軟體定義網路交換器 |
CN107330047B (zh) * | 2017-06-28 | 2020-06-30 | 华信塞姆(成都)科技有限公司 | 一种基于完美哈希算法的fpga训练及查询电路实现方法 |
CN108270699B (zh) * | 2017-12-14 | 2020-11-24 | 中国银联股份有限公司 | 报文处理方法、分流交换机及聚合网络 |
US10700974B2 (en) * | 2018-01-30 | 2020-06-30 | Marvell Israel (M.I.S.L) Ltd. | Dynamic allocation of memory for packet processing instruction tables in a network device |
US11362948B2 (en) | 2019-01-10 | 2022-06-14 | Marvell Israel (M.I.S.L) Ltd. | Exact match and ternary content addressable memory (TCAM) hybrid lookup for network device |
US11444877B2 (en) * | 2019-03-18 | 2022-09-13 | At&T Intellectual Property I, L.P. | Packet flow identification with reduced decode operations |
US20200136971A1 (en) * | 2019-06-07 | 2020-04-30 | Intel Corporation | Hash-table lookup with controlled latency |
US11520738B2 (en) * | 2019-09-20 | 2022-12-06 | Samsung Electronics Co., Ltd. | Internal key hash directory in table |
US11838265B1 (en) * | 2021-06-18 | 2023-12-05 | Marvell Asia Pte Ltd | Managing address collision in a network device |
US12028254B2 (en) * | 2022-01-31 | 2024-07-02 | Avago Technologies International Sales Pte. Limited | Systems for and methods of flow table management |
US11829341B2 (en) * | 2022-03-31 | 2023-11-28 | Dell Products L.P. | Space-efficient persistent hash table data structure |
US11924102B2 (en) | 2022-04-05 | 2024-03-05 | Nxp B.V. | Minimizing deviation from average latency of table lookups |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5032987A (en) | 1988-08-04 | 1991-07-16 | Digital Equipment Corporation | System with a plurality of hash tables each using different adaptive hashing functions |
US6178483B1 (en) | 1997-02-14 | 2001-01-23 | Advanced Micro Devices, Inc. | Method and apparatus for prefetching data read by PCI host |
US6035107A (en) | 1997-08-28 | 2000-03-07 | International Bunsiness Machines Corporation | Method for performing functional comparison of combinational circuits |
US6363077B1 (en) | 1998-02-13 | 2002-03-26 | Broadcom Corporation | Load balancing in link aggregation and trunking |
US6363396B1 (en) | 1998-12-21 | 2002-03-26 | Oracle Corporation | Object hashing with incremental changes |
US6430170B1 (en) | 1999-05-27 | 2002-08-06 | Qualcomm Inc. | Method and apparatus for generating random numbers from a communication signal |
US6735670B1 (en) | 2000-05-12 | 2004-05-11 | 3Com Corporation | Forwarding table incorporating hash table and content addressable memory |
EP1168710B1 (en) | 2000-06-19 | 2005-11-23 | Broadcom Corporation | Method and device for frame forwarding in a switch fabric |
US20020093952A1 (en) | 2000-06-30 | 2002-07-18 | Gonda Rumi Sheryar | Method for managing circuits in a multistage cross connect |
US6973082B2 (en) | 2002-02-01 | 2005-12-06 | Fujitsu Limited | Forwarding packets to aggregated links using distributed ingress card processing |
US7190696B1 (en) | 2002-03-05 | 2007-03-13 | Force10 Networks, Inc. | System and method for distributing packets among a plurality of paths to a destination |
US7280527B2 (en) | 2002-05-13 | 2007-10-09 | International Business Machines Corporation | Logically grouping physical ports into logical interfaces to expand bandwidth |
US7554914B1 (en) | 2002-07-10 | 2009-06-30 | Cisco Technology, Inc. | System and method for adaptively balancing network traffic over router output ports |
US20040073640A1 (en) | 2002-09-23 | 2004-04-15 | Cricket Technologies Llc | Network load management apparatus, system, method, and electronically stored computer product |
US7346706B2 (en) | 2003-05-02 | 2008-03-18 | Alcatel | Equivalent multiple path traffic distribution in communications networks |
US7613209B1 (en) | 2004-03-30 | 2009-11-03 | Extreme Networks, Inc. | System and method for egress packet marking |
US7304996B1 (en) | 2004-03-30 | 2007-12-04 | Extreme Networks, Inc. | System and method for assembling a data packet |
US7539750B1 (en) | 2004-03-30 | 2009-05-26 | Extreme Networks, Inc. | System and method for packet processor status monitoring |
US7623455B2 (en) | 2005-04-02 | 2009-11-24 | Cisco Technology, Inc. | Method and apparatus for dynamic load balancing over a network link bundle |
US7567567B2 (en) | 2005-04-05 | 2009-07-28 | Sun Microsystems, Inc. | Network system including packet classification for partitioned resources |
US7639614B2 (en) | 2005-04-12 | 2009-12-29 | Fujitsu Limited | Distribution-tuning mechanism for link aggregation group management |
US7852850B2 (en) * | 2006-04-26 | 2010-12-14 | Marvell Israel (M.I.S.L.) Ltd. | Double-hash lookup mechanism for searching addresses in a network device |
US8364711B2 (en) | 2006-05-09 | 2013-01-29 | John Wilkins | Contact management system and method |
US20080052488A1 (en) | 2006-05-10 | 2008-02-28 | International Business Machines Corporation | Method for a Hash Table Lookup and Processor Cache |
US8792497B2 (en) | 2006-06-05 | 2014-07-29 | Tellabs Operations, Inc. | Method and apparatus for performing link aggregation |
US7580417B2 (en) | 2006-08-07 | 2009-08-25 | Cisco Technology, Inc. | Method and apparatus for load balancing over virtual network links |
JP5086585B2 (ja) | 2006-08-11 | 2012-11-28 | アラクサラネットワークス株式会社 | ネットワーク中継装置 |
US7821925B2 (en) * | 2007-01-29 | 2010-10-26 | Fulcrum Microsystems, Inc. | Traffic distribution techniques utilizing initial and scrambled hash values |
IL189514A (en) | 2007-02-14 | 2011-12-29 | Marvell Israel Misl Ltd | Logical mediation system and method |
US7898959B1 (en) | 2007-06-28 | 2011-03-01 | Marvell Israel (Misl) Ltd. | Method for weighted load-balancing among network interfaces |
CN101140592A (zh) * | 2007-09-30 | 2008-03-12 | 华为技术有限公司 | 关键字存储、查找方法和设备 |
US8243594B1 (en) | 2007-12-10 | 2012-08-14 | Force10 Networks, Inc. | Coordinated control of multiple parallel links or link aggregations |
JP4969508B2 (ja) | 2008-04-25 | 2012-07-04 | オンセミコンダクター・トレーディング・リミテッド | 振動補正制御回路およびそれを搭載する撮像装置 |
US7979671B2 (en) | 2008-07-28 | 2011-07-12 | CacheIQ, Inc. | Dual hash indexing system and methodology |
US9237100B1 (en) | 2008-08-06 | 2016-01-12 | Marvell Israel (M.I.S.L.) Ltd. | Hash computation for network switches |
CN101350788B (zh) * | 2008-08-25 | 2011-10-26 | 中兴通讯股份有限公司 | 一种网络处理器内外混合查表方法 |
CN101483605B (zh) * | 2009-02-25 | 2011-04-06 | 北京星网锐捷网络技术有限公司 | 数据报文的存储、查找方法和装置 |
CN101540723B (zh) * | 2009-04-20 | 2011-07-06 | 杭州华三通信技术有限公司 | 一种流表查找方法和装置 |
US8565239B2 (en) * | 2009-07-14 | 2013-10-22 | Broadcom Corporation | Node based path selection randomization |
US8665879B2 (en) * | 2009-07-14 | 2014-03-04 | Broadcom Corporation | Flow based path selection randomization using parallel hash functions |
US8355328B2 (en) | 2009-08-27 | 2013-01-15 | Broadcom Corporation | Dynamic load balancing |
CN101692651B (zh) * | 2009-09-27 | 2014-12-31 | 中兴通讯股份有限公司 | 一种哈希查找表的方法和装置 |
US8238250B2 (en) | 2009-10-16 | 2012-08-07 | Hei Tao Fung | QoS-aware flow-based dynamic load balancing for link aggregation |
CN102474449B (zh) | 2009-11-02 | 2016-05-04 | 马维尔国际贸易有限公司 | 基于虚拟接口的交换装置和方法 |
US8848728B1 (en) | 2010-04-08 | 2014-09-30 | Marvell Israel (M.I.S.L) Ltd. | Dynamic load balancing switch architecture |
US9392005B2 (en) * | 2010-05-27 | 2016-07-12 | Samsung Sds Co., Ltd. | System and method for matching pattern |
US8339951B2 (en) | 2010-07-28 | 2012-12-25 | Hewlett-Packard Development Company, L.P. | Method for configuration of a load balancing algorithm in a network device |
US8614950B2 (en) | 2010-11-30 | 2013-12-24 | Marvell Israel (M.I.S.L) Ltd. | Load balancing hash computation for network switches |
US20120136846A1 (en) * | 2010-11-30 | 2012-05-31 | Haoyu Song | Methods of hashing for networks and systems thereof |
US20130013880A1 (en) * | 2011-07-08 | 2013-01-10 | Hitachi Computer Peripherals Co., Ltd. | Storage system and its data processing method |
US9171030B1 (en) | 2012-01-09 | 2015-10-27 | Marvell Israel (M.I.S.L.) Ltd. | Exact match lookup in network switch devices |
US9137013B2 (en) * | 2012-09-28 | 2015-09-15 | Broadcom Corporation | Method and system for a hardware-efficient universal hash function |
CN102882810B (zh) * | 2012-10-26 | 2016-02-10 | 杭州迪普科技有限公司 | 一种报文快速转发方法及装置 |
US9537771B2 (en) | 2013-04-04 | 2017-01-03 | Marvell Israel (M.I.S.L) Ltd. | Exact match hash lookup databases in network switch devices |
-
2013
- 2013-08-28 US US14/012,834 patent/US9537771B2/en active Active
- 2013-08-30 CN CN201310394776.1A patent/CN104104604B/zh active Active
-
2016
- 2016-11-29 US US15/363,859 patent/US9871728B2/en active Active
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104504038A (zh) * | 2014-12-15 | 2015-04-08 | 北京更快互联网技术有限公司 | 一种减少哈希冲突的哈希查找方法 |
CN106095770A (zh) * | 2016-05-05 | 2016-11-09 | 邦彦技术股份有限公司 | 数据快速查找装置、查找方法、添加方法及删除方法 |
WO2017190409A1 (zh) * | 2016-05-05 | 2017-11-09 | 邦彦技术股份有限公司 | 数据快速查找装置、查找方法、添加方法及删除方法 |
CN106095770B (zh) * | 2016-05-05 | 2019-10-11 | 邦彦技术股份有限公司 | 数据快速查找装置、查找方法、添加方法及删除方法 |
CN109245879A (zh) * | 2018-09-06 | 2019-01-18 | 杭州光芯科技有限公司 | 一种存储和查找ip地址映射关系的双哈希算法 |
CN113542210A (zh) * | 2020-04-21 | 2021-10-22 | 迈络思科技有限公司 | 网络设备和联网方法 |
CN113542210B (zh) * | 2020-04-21 | 2022-12-20 | 迈络思科技有限公司 | 网络设备和联网方法 |
CN112491723A (zh) * | 2020-12-07 | 2021-03-12 | 上海励驰半导体有限公司 | 网关报文转发方法、装置、存储介质及网关 |
CN112491723B (zh) * | 2020-12-07 | 2022-03-01 | 上海励驰半导体有限公司 | 网关报文转发方法、装置、存储介质及网关 |
CN116600031A (zh) * | 2023-07-18 | 2023-08-15 | 无锡沐创集成电路设计有限公司 | 报文处理方法、装置、设备及存储介质 |
CN116600031B (zh) * | 2023-07-18 | 2023-10-31 | 无锡沐创集成电路设计有限公司 | 报文处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US9871728B2 (en) | 2018-01-16 |
CN104104604B (zh) | 2018-10-02 |
US20140301394A1 (en) | 2014-10-09 |
US9537771B2 (en) | 2017-01-03 |
US20170085482A1 (en) | 2017-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104104604A (zh) | 网络交换机设备中的准确匹配哈希查找数据库 | |
EP2214357B1 (en) | Method and system for facilitating forwarding a packet in a content-centric network | |
US8792494B2 (en) | Facilitating insertion of device MAC addresses into a forwarding database | |
US8848707B2 (en) | Method for IP longest prefix match using prefix length sorting | |
US8798066B2 (en) | Method for IPv6 longest prefix match | |
CN105229980A (zh) | 利用可变关键字大小的精确匹配查找 | |
US20220045950A1 (en) | Single lookup entry for symmetric flows | |
US10574570B2 (en) | Communication processing method and apparatus | |
Pontarelli et al. | Parallel d-pipeline: a cuckoo hashing implementation for increased throughput | |
US9485179B2 (en) | Apparatus and method for scalable and flexible table search in a network switch | |
US10404598B1 (en) | Managing next hop groups in routers | |
CN106487769B (zh) | 一种访问控制列表acl的实现方法及装置 | |
CN104641607A (zh) | 超低延迟多协议网络设备 | |
US20170012874A1 (en) | Software router and methods for looking up routing table and for updating routing entry of the software router | |
US20050055457A1 (en) | Apparatus and method for performing high-speed lookups in a routing table | |
US8755386B2 (en) | Traceback packet transport protocol | |
US9088476B2 (en) | Network communication system with packet forwarding and method of operation thereof | |
CN101494603B (zh) | 一种128位因特网地址并行高速路由寻址方法 | |
CN102413038B (zh) | 一种路由下一跳不可达的处理方法及系统 | |
US12010008B2 (en) | Network communication method and apparatus | |
WO2024078011A1 (zh) | 并行查表装置、方法及设备、计算机可读存储介质 | |
US11924102B2 (en) | Minimizing deviation from average latency of table lookups | |
KR102110524B1 (ko) | 컨텐츠 중심 네트워크에서 블룸 필터를 이용하여 라우팅을 수행하는 노드 및 그 방법 | |
WO2016045316A1 (zh) | 控制软复位后数据恢复的方法、装置及分组传送网设备 | |
JP2010098554A (ja) | ネットワーク間接続装置および管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |