CN110096225A - 针对网络设备中的分组处理指令表的存储器的动态分配 - Google Patents

针对网络设备中的分组处理指令表的存储器的动态分配 Download PDF

Info

Publication number
CN110096225A
CN110096225A CN201910094138.5A CN201910094138A CN110096225A CN 110096225 A CN110096225 A CN 110096225A CN 201910094138 A CN201910094138 A CN 201910094138A CN 110096225 A CN110096225 A CN 110096225A
Authority
CN
China
Prior art keywords
memory block
additional
data
hash function
packet
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
Application number
CN201910094138.5A
Other languages
English (en)
Other versions
CN110096225B (zh
Inventor
Z·S·利布
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Marvell Israel MISL Ltd
Original Assignee
Marvell Israel MISL Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Marvell Israel MISL Ltd filed Critical Marvell Israel MISL Ltd
Publication of CN110096225A publication Critical patent/CN110096225A/zh
Application granted granted Critical
Publication of CN110096225B publication Critical patent/CN110096225B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/748Address table lookup; Address filtering using longest matching prefix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种用于操作具有数据存储装置的网络设备的方法,该数据存储装置具有用于存储分组处理操作的指令数据的可选择地可修改的容量,该方法包括:检测对用于指令数据的附加的存储需求;在不中断网络设备操作的情况下,分配附加的存储块;将附加的存储块与附加的地址散列函数相关联,该附加的地址散列函数不同于与任何先前分配的存储块相关联的至少一个相应的先前的地址散列函数中的每个地址散列函数。每个相应的先前的地址散列函数将查找键转换为先前分配的存储块中的相应的可寻址位置,并且附加的地址散列函数将查找键转换为附加的存储块中的可寻址位置。当释放分配块时,通过指令数据的每个单元要移动到的不同块的散列函数来重新处理指令数据的单元。

Description

针对网络设备中的分组处理指令表的存储器的动态分配
相关申请的交叉引用
本申请要求于2018年1月30日递交的共同待决、共同受让的美国临时专利申请号62/623,957的权益,其在此通过整体引用并入本文中。
技术领域
本公开涉及在网络数据设备中对用于存储分组处理指令表的存储器的分配。更具体地,本公开涉及对用于网络数据设备的分组处理指令表的存储器的动态分配和释放分配(de-allocation),以适应网络设备操作期间分组处理指令表的变化的容量需求。
背景技术
在本文中提供的背景描述是出于总体上呈现本公开的上下文的目的。本发明人的工作(到本背景技术部分中描述的工作的程度),以及在递交时可能不以其他方式被算作是现有技术的该描述的方面,既不明确地也不暗示地被承认是本公开的现有技术。
诸如交换设备之类的网络数据设备使用分组处理指令表(例如,转发表)来定义对通过该设备处理的网络分组可能将需要执行的不同类型的动作。在先前已知的网络设备中,在网络设备被启动时基于定义可能需要的动作的“简档”来配置分组处理指令表。根据不同简档的不同分组处理指令表消耗不同的存储量,并且在网络设备被启动时分配必要的存储器。在一些先前已知的网络设备中,如果在操作期间必须更改一个或多个简档,或者必须添加一个或多个新的简档,则必须停止网络设备,并且然后使用一组新的简档来重新启动该网络设备,导致网络性能降级。
发明内容
根据本公开的主题的实现方式,一种用于操作具有数据存储资源的网络设备的方法,该数据存储资源具有用于存储要在分组处理操作中采用的指令数据的可选择地可修改的容量,该方法包括:检测对用于存储要在分组处理操作中采用的指令数据的附加的存储资源的需求,在不中断网络设备的操作的情况下,分配附加的存储块,以存储要在分组处理操作中采用的指令数据,将附加的存储块与附加的地址散列函数相关联,附加的地址散列函数不同于与至少一个先前分配的存储块中相应的一个存储块相关联的至少一个相应的先前的地址散列函数中的每个相应的先前的地址散列函数,每个相应的先前的地址散列函数将查找键转换为至少一个先前分配的存储块中相应的一个存储块中的相应的可寻址位置,并且附加的地址散列函数将查找键转换为附加的存储块中的可寻址位置,通过附加的地址散列函数处理要在分组处理操作中采用的指令数据的单元,以确定附加的存储块中用于存储要在分组处理操作中采用的指令数据的单元的位置,将要在分组处理操作中采用的指令数据的单元存储在由附加的地址散列函数确定的位置处,接收来自网络的传入网络分组,并且至少基于从传入网络分组的报头提取的数据,生成针对传入网络分组的传入查找键,通过至少一个相应的先前的地址散列函数中的每个先前地址散列函数处理传入查找键以生成相应的散列结果,并通过附加的地址散列函数处理传入查找键以生成附加的散列结果,以及根据与相应的散列结果之一相关联的相应的存储器地址访问每个相应的先前分配的存储块,并且根据与附加的散列结果相关联的附加的存储器地址访问附加的存储块,以取回包括指令的指令数据,该指令用于对所接收的分组执行动作。
在这样的方法的第一实现方式中,检测对用于存储要在分组处理操作中采用的指令数据的附加的存储资源的需求可以包括尝试存储要在分组处理操作中使用的指令数据,并且在尝试期间仅找到已占用的存储器位置。
在这样的方法的第二实现方式中,要在分组处理操作中采用的指令数据可以将要对传入网络分组执行的动作与网络分组的属性相关联。在第二实现方式的第一变体中,要在分组处理操作中采用的指令数据可以将要对传入网络分组执行的动作与传入网络分组的报头数据相关联。在第二实现方式的第二变体中,要在分组处理操作中采用的指令数据将要对传入网络分组执行的动作与传入网络分组的物理属性相关联。在第二实现方式的第三变体中,要在分组处理操作中采用的指令数据可以将要对传入网络分组执行的动作与接收传入网络分组的端口相关联。
在这样的方法的第三实现方式中,根据与相应的散列结果之一相关联的相应的存储器地址访问每个相应的先前分配的存储块,并且根据与附加的散列结果相关联的附加的存储器地址访问附加的存储块是并行执行的,共同返回指令数据的多个候选单元,并且该方法还包括选择指令数据的候选单元之一。
在第三实现方式的变体中,针对存储在附加的存储块和至少一个先前分配的存储块之一中的位置处的分组处理操作的类型的数据的每个单元可以连同被散列化的原始查找键一起存储,以确定存储针对分组处理操作的类型的数据的单元的位置,并且选择可以包括将原始查找键与传入查找键进行比较。
这样的方法的第四实现方式还包括确定先前分配的存储块和附加的存储块中的任何一个是网络设备的操作所不需要的多余的存储块,以及在不中断网络设备的操作的情况下通过以下步骤释放分配多余的存储块:根据相应的剩余存储块的散列函数将多余的存储块中所存储的数据重新散列化,以及根据重新散列化,将重新散列化的所存储的数据存储在相应的剩余存储块中的地址处。
在这样的第四实现方式的第一变体中,释放分配还包括保持多余的存储块处于操作中,直到多余的存储块中的所有所存储的数据已经被移动到相应的剩余存储块为止。这样的变体还包括,在保持期间,当根据与相应的散列结果中的一个散列结果相关联的相应的存储器地址访问每个相应的先前分配的存储块并且根据与附加的散列结果相关联的附加的存储器地址访问附加的存储块时,引起从多余的存储块取回指令数据的第一实例,并且从相应的剩余存储块取回指令数据的第二实例,选择指令数据的第一实例和指令数据的第二实例之一。
这样的第四实现方式可以还包括监控先前分配的存储块和附加的存储块的容量,其中确定包括检测先前分配的存储块和附加的存储块的容量已经下降到预定阈值以下。
在这样的第四实现方其中,确定可以包括检测进入到一天中的计划时间段,在计划时间段期间网络流量减少。
根据本公开的主题的实现方式,一种网络设备包括多个端口,耦合到多个端口的至少一个接收缓冲器,耦合到多个端口的至少一个发送缓冲器;可选择地可修改数量的存储块,用于存储分组处理数据,该分组处理数据表征要对在多个端口中的一个端口处接收的或从多个端口中的一个端口发送的网络分组执行的分组处理操作,以及用于操作网络设备的控制器,操作包括可选择地修改用于存储分组处理数据的存储块的数量,该控制器被配置为检测对用于存储要在分组处理操作中采用的指令数据的附加的存储资源的需求,在不中断网络设备的操作的情况下,分配附加的存储块,以存储要在分组处理操作中采用的指令数据,将附加的存储块与附加的地址散列函数相关联,附加的地址散列函数不同于与至少一个先前分配的存储块中相应的一个存储块相关联的至少一个相应的先前的地址散列函数中的每个相应的先前的地址散列函数,每个相应的先前的地址散列函数将查找键转换为至少一个先前分配的存储块中相应的一个存储块中的相应的可寻址位置,并且附加的地址散列函数将查找键转换为附加的存储块中的可寻址位置,通过附加的地址散列函数处理要在分组处理操作中采用的指令数据的单元,以确定附加的存储块中用于存储要在分组处理操作中采用的指令数据的单元的位置,将要在分组处理操作中采用的指令数据的单元存储在由附加的地址散列函数确定的位置处,接收来自网络的传入网络分组,并且至少基于从传入网络分组的报头提取的数据,生成针对传入网络分组的传入查找键,通过至少一个相应的先前的地址散列函数中的每个先前的地址散列函数处理传入查找键以生成相应的散列结果,并通过附加的地址散列函数处理传入查找键以生成附加的散列结果,以及根据与相应的散列结果之一相关联的相应的存储器地址访问每个相应的先前分配的存储块,并根据与附加的散列结果相关联的附加的存储器地址访问附加的存储块,以取回包括指令的指令数据,该指令用于对所接收的分组执行动作。
在这样的网络设备的第一实现方式中,控制器可以被配置为根据与相应的散列结果之一相关联的相应的存储器地址访问每个相应的先前分配的存储块,并且并行地,根据与附加的散列结果相关联的附加的存储器地址访问附加的存储块,以返回指令数据的多个候选单元,以及选择指令数据的候选单元之一。
在这样的实现方式中,针对存储在附加的存储块和至少一个先前分配的存储块中的一个存储块中的位置处的分组处理操作的类型的数据的每个单元连同被散列化的原始查找键一起存储,以确定存储针对类型的分组处理操作的数据的单元的位置,并且控制器被配置为通过将原始查找键与传入查找键进行比较来选择指令数据的候选单元之一。
在本公开的主题的第二实现方式中,控制器可以还被配置为确定先前分配的存储块和附加的存储块中的任何一个存储块是网络设备的操作所不需要的多余的存储块,以及在不中断网络设备的操作的情况下通过以下步骤释放分配多余的存储块:根据相应的剩余存储块的散列函数将多余存储块中所存储的数据重新散列化,以及根据重新散列化,将重新散列化的所存储的数据存储在相应的剩余存储块中的地址处。
在第二实现方式的第一变体中,控制器可以还被配置保持多余的存储块处于操作中,直到多余的存储块中的所有所存储的数据已经被移动到相应的剩余存储块为止。在这样的变体中,在保持期间,当根据与相应的散列结果中的一个散列结果相关联的相应的存储器地址访问每个相应的先前分配的存储块并且根据与附加的散列结果相关联的附加的存储器地址访问附加的存储块时,引起从多余的存储块取回指令数据的第一实例,并且从相应的剩余存储块取回指令数据的第二实例,控制器可以还被配置为选择指令数据的第一实例和指令数据的第二实例之一。
在第二实现方式的第二变体中,控制器可以还被配置为监控先前分配的存储块和附加的存储块的容量,以及通过检测先前分配的存储块和附加的存储块的容量已经下降到预定阈值以下,确定先前分配的存储块和附加的存储块中的任何一个存储块是网络设备的操作所不需要的多余的存储块。
在第二实现方式的第三变体中,控制器可以还被配置为确定通过检测进入到一天中的计划时间段来确定先前分配的存储块和附加的存储块中的任何一个存储块是网络设备的操作所不需要的多余的存储块,在计划时间段期间网络流量减少。
附图说明
通过结合附图,考虑以下具体实施方式,本公开的进一步的特征、其性质和各种优点将是明显的,其中,相同的附图标记始终表示相同的部件,并且其中:
图1是体现本公开的主题的实现方式的网络设备的相关部分的高级示图;
图2是针对网络设备中的分组处理指令表的存储块或存储库的分配的第一示例;以及
图3是针对网络设备中的分组处理指令表的存储块或存储库的分配的第二示例;
图4是根据本公开的主题的实现方式的针对网络设备中的分组处理指令表的存储块或存储库的分配的示例;
图5是根据本公开的主题的实现方式的可以在网络设备中使用的键插入结构的示例的框图;
图6是可以在本公开的主题的实现方式中使用的散列地址处理的表示;
图7是图6的处理中的命中或未命中逻辑的示例;以及
图8是根据本公开的主题的实现方式的操作网络设备的过程的流程图。
具体实施方式
如上所述,诸如交换设备之类的网络数据设备使用分组处理指令表(例如,转发表)来定义对通过该设备处理的网络分组可能将需要执行的不同类型的动作。这些动作可以包括诸如将网络分组转发到端口、丢弃网络分组、分配服务质量之类的事情。可以基于任何特定分组的属性来确定动作。属性可以包括报头信息,该报头信息包括可能影响网络分组如何被处理的源地址和目的地地址,以及网络分组的物理属性,例如,设备上接收网络分组的端口。在一些实现方式中,存储器被共享以用于存储两个或更多个不同处理指令表的数据,并且该共享存储器中的一定量的存储器空间被分配用于存储每个相应的分组处理指令表。可能发生的是,通过网络数据设备的正常操作,分组处理指令表所需的存储量可能改变——即,分组处理指令表所需的存储量可能增加或减少。
为网络设备的分组处理指令表分配和释放分配存储块或存储库由于与访问表中的分组处理指令相关联的寻址需求而变得复杂。当要将指令写入分组处理指令表时,使用指令的特征(包括例如分组报头的内容,以及诸如源端口、时间、大小等的分组元数据)来生成查找键。单独的散列函数与分配给分组处理指令表的每个存储块或存储库相关联。通过分组处理指令表中被分配给正被写入的指令的类型的每个存储块或存储库的相应散列函数来处理查找键,针对每个存储块或存储库生成可以存储指令的地址。
在一些实现方式中,检查所有产生的可能的位置。跳过任何已占用的位置。如果没有未占用的位置,则将需要分配一个或多个附加存储块或存储库,如下面结合本公开的主题的实现方式所描述的。
假设存在至少一个未占用的位置,则将指令写入该位置。如果仅存在一个未占用的位置,则决策很容易。如果存在多于一个未占用的位置,则在一些实现方式中,可以将指令存储在找到的第一个未占用的位置中。或者,在一些实现方式中,可以使用具有最高现有占用率的存储块或存储库中的未占用的位置,如例如在美国专利9,171,030中所描述的,该美国专利通过整体引用被并入于此(以促进其他存储块或存储库的潜在的释放分配,如下文结合本公开的主题的实现方式所描述的)。其他标准也可以用于从多个未占用的位置中进行选择。无论分组处理指令被存储在何处,指令都与被散列化以生成存储指令的地址的原始查找键的副本被包括在一起。
在一些其他实现方式中,可以采用“布谷鸟散列(cuckoo hashing)”算法,例如在上面合并的美国专利9,171,030中描述的算法。在这样的实现方式中,如果目标散列与占用该位置的先前值冲突,则占用该位置的先前值在可能的情况下被移动到别处,并且当前值被插入到由于移动操作而腾出的位置处。
在任一类型的实现方式中,如果不存在未占用的位置,则将需要分配一个或多个附加存储块或存储库,如下面结合本公开的主题的实现方式所描述的。
当接收到网络数据分组以用于处理时,网络数据设备基于分组报头(或分组描述符)中的数据、网络数据(诸如,入口端口)、以及该分组的元数据中的一个或多个来生成查找键。该查找键被用于在分组处理指令表中搜索适当的分组处理指令。通过与分配给分组处理指令表的每个存储块或存储库相关联的单独的散列函数来运行查找键,产生了相关的分组处理指令可能位于其中的多个潜在地址。检查每个位置。如果位置为空,则忽略该位置。散列函数的性质可以是不止一个查找键可以返回特定地址。因此,针对非空的每个位置,将存储在该位置中的原始查找键与被散列化的查找键进行比较,如果存在匹配,则使用相应的指令。在一些实现方式中(诸如下面所描述的),可能存在包含正确指令的不止一个位置。由于这样的位置中的指令将是相同的,因此可以使用任何副本。
根据本公开的主题的实现方式,当针对分组处理指令存储需要附加容量时,可以向网络数据设备的分组处理指令表分配一个或多个附加存储块或存储库。另外,在至少一些实现方式中,当存在多余的容量时,也可以从网络数据设备的分组处理指令表释放分配存储块或存储库。当释放分配多余的存储块或存储库时,例如,它可以被完全关闭,以降低网络数据设备的功耗。或者,可以从一个或多个但少于全部的分组处理指令表释放分配多余的存储块或存储库,而保持分配给一个或多个其他分组处理指令表,特别是当存在不同类型的分组处理指令表并且期望在各个不同的存储块或存储库中保持不同类型的分组处理指令表时。在这些实现方式中的任何实现方式中,在操作期间发生存储块或存储库的分配和释放分配,而不必关闭网络数据设备以加载新的简档。
根据本公开的主题的实现方式,当无法为新的分组处理指令找到空间时,向分组处理指令表分配附加的存储块或存储库。针对此目的指定现有的未使用的存储块或存储库,并且与已经在使用中的所有其他存储块或存储库的散列函数不同的新的散列函数与新分配的存储块或存储库相关联。通过该新的散列函数处理触发存储块或存储库的分配的分组处理指令的查找键,将该查找键与其原始查找键一起存储在如新的散列函数所指示的新的存储块或存储库中的位置中。当任何后续的新分组处理指令被添加到分组处理指令表时,新的存储块或存储库及其散列函数被包括在键-散列处理中。
根据本公开的主题的实现方式,出于若干可能的原因,还可以从分组处理指令表释放分配存储块或存储库。例如,网络数据设备可以位于数据中心中,并且为了降低功耗,在一天中的某些时间当数据流量降低时(比如,在晚上)数据中心运营商可能更偏好合并用于分组处理指令表的存储块或存储库。在任何情况下,这种合并都将受到容量约束——即,分组处理指令表不能被合并到比能够包含所有分组处理指令更少的存储块或存储库中。所以,即使处于一天中偏好合并的时间,对分配的存储块或存储库的占用也将与总容量进行比较,如果分组处理指令表中的空闲空间至少超过一个存储块或存储库的大小,则将执行释放分配。在其他实现方式中,每当分组处理指令表中的空闲空间至少超过一个存储块或存储库的大小时,就可以执行释放分配,而不管在一天中的什么时间。如果在释放分配之后分组处理指令表的总占用率将超过某个预定阈值,则通常不会执行释放分配,因为空间将必须保持可用于在正常操作的过程中待添加的新的分组处理指令。
当确定应当执行释放分配时,不大可能将存在可以简单地被停用的完全空白的存储块或存储库。更可能的是,在本公开的主题的实现方式中,分组处理指令将从被最少占用的一个或多个存储块移动到其他存储块或存储库中的空白空间。为了使网络数据设备保持操作,要移动的分组处理指令将被保持在它们的原始位置,直到它们可以被复制到新的位置为止。复制和移动分组处理指令的过程可能需要占用多个时钟周期。在那段时间期间,一些分组处理指令将已经被复制(并因此可以在不止一个位置处被找到),而其他分组处理指令保留待被复制。如上所述,使用任何这样的指令的哪个副本来处理该指令所适用的分组都无关紧要。只有在要释放分配的块或库(其可以被称为“多余的块”)中的所有分组处理指令都已经被复制到新的位置以使得该块或库已经被清空后,该块或库才将被释放分配。被释放分配的块或库可以被停用,或者将其重新分配给存储在共享存储器中的不同类型的分组处理指令表。
根据一些实现方式,复制过程包括:针对待被移动的每个指令,根据与该指令将被移动到的剩余块或库(“目的地块”)相关联的散列函数来重新散列化该指令,并且然后将重新散列化的指令存储在重新散列所指示的地址处的目的地块中的地址处。
在已经从分组处理指令表释放分配存储块或存储库之后,将仅相对于分配给分组处理指令表的剩余块或库来散列化后续分组的查找键。
图1中示出了体现本公开的主题的实现方式的网络设备100的相关部分的高级示图。网络设备100具有以太网端口101,其中分组在该处从计算机网络(未示出)进入和退出到计算机网络(未示出)。尽管为了便于表示,示出了用于分组入口和出口的单独端口,但是以太网端口101一般是双向的,并且同一以太网端口101可以用于分组入口和分组出口两者。
在控制器102的指导下,接收的分组111被分成其分组报头121和其分组有效负载131。分组有效负载131被存储在分组缓冲器103中,而通过分组处理器104处理分组报头121或部分地由从分组报头121提取的数据生成的描述符,以确定要对分组111执行的各种分组处理操作,包括例如确定分组111将被转发到的端口。在处理之后,描述符用于更改从存储器取回的报头,并且经修改的分组报头151在141处与分组有效负载131重新结合以重建分组161,分组161被从以太网端口101发送到网络上以路由到正确的目的地。
如上面所提到的,在一些实现方式中,不同类型的指令表被存储在共享存储器中。使用共享存储器空间有助于基于不同表的相对大小需求调整不同表的大小的灵活性,这些需求随时间并非是静态的。如果每个表都存储在专用设备中,或者如果共享内存的分区是固定的,则这将是不可能的。在所示的实现方式中,分组处理器104的不同组件使用存储在分组处理指令表存储器105中的不同分组处理指令表。例如,分类引擎114可以依赖于ACL转发表115中的访问列表(三元内容可寻址存储器、或TCAM、查找列表);第3层引擎124可以依赖于最长前缀匹配(LPM)转发表125;第2层引擎134可以依赖于L2以太网MAC转发数据库(FDB)表135;以及隧道引擎144可以依赖于存储用于添加分组报头标签(比如,VXLAN报头)的信息的隧道145。
针对此目的,将分组处理指令表105存储在网络设备100中所提供的存储块或存储库中。如上所述,在已知的实现方式中,根据用户选择的简档预先设置对各种存储块或存储库的分配。
图2示出了第一固定分区示例,其中提供了四十个存储块或存储库200以用于存储分组处理指令表105。在该示例中,针对隧道201分配四个存储块或存储库200,针对ACL 202分配八个存储块或存储库200,针对第2层FDB转发表203分配四个存储块或存储库200,以及针对第3层LPM转发表204分配二十四个存储块或存储库200。
图3示出了第二固定分区示例,其中提供相同的四十个存储块或存储库200以用于存储分组处理指令表105。在该示例中,针对隧道301分配两个存储块或存储库200,针对ACL302分配六个存储块或存储库200,针对第2层FDB转发表303分配二十个存储块或存储库200,以及针对第3层LPM转发表304分配十二个存储块或存储库200。
在图2的示例和图3的示例二者中,即使不同类型的分组处理指令表的大小要求可能随时间改变,共享存储器空间的分区也是固定的。此外,无论是否被使用,所有存储块或存储库200都消耗功率。此外,如前所述,如果网络设备100是先前已知的类型,那么如果需要改变存储块或存储库200的分配,则将不得不停止网络设备100。
根据本公开的主题的实现方式,分区是灵活的。如图4中所示,只有不同类型115、125、135、145的分组处理指令表105当前所需的那样多的存储块或存储库200被分配到组401、402、403、404中,留下空闲存储块或存储库200的池405。如果一种类型的分组处理指令表105需要附加存储器,则在操作期间(即,“动态实时的(on thefly)”)从池405分配一个或多个附加存储块或存储库200。类似地,如果在使用期间各种类型的分组处理指令表105所需的存储量减少,则可以在操作期间将一个或多个存储块或存储库200释放分配回池405。
使所分配的存储块或存储库200的数量与分组处理指令表105的实际需求相匹配的能力包括将块从一种类型的表重新分配给另一种类型的表的能力。相对于为每种类型分配固定的存储器,该能力能够降低共享存储器的大小。当存储器空间被固定时,提供保守的容限,以便调整每种存储器类型的大小来适应合理的最坏情况的场景。当存储器被共享并且可以被重新分配时,针对整个存储器的尺寸计算是不同的,因为可以依赖于如下假设:将不存在所有不同类型的表同时需要最大存储要求的情况。反而,当第一类型的表具有大尺寸要求时,第二类型的表所需的空间有可能较小,并且第二类型的表未使用的空间可以被重新分配来存储不同类型的表。另外,重新分配存储块或存储库的能力降低了功耗,因为仅需要为所分配的存储块或存储库供电。
为了降低存储器查找探针的大小,使用散列函数来生成到存储块或存储库200的索引。不同的散列函数与每个存储块或存储库200相关联。基于如上所述的报头信息和其他特性,从所处理的每个分组导出查找键,并且通过每个散列函数,或者至少通过分配给将要访问的该类型的分组处理指令表的每个存储块或存储库200的散列函数来运行查找键,从而针对每个相关的存储块或存储库200返回地址。每个存储块或存储库200中的每个分组处理指令与将调用这种指令的查找键的副本一起被存储。对于由每个相关的存储块或存储库200返回的地址,将存储在该地址处的查找键与从正被处理的分组导出的查找键(即,被散列化以生成地址的原始查找键)进行比较,并且如果所存储的查找键与原始查找键匹配,则使用也被存储在该地址处的指令。如下面更详细地描述的,在一些情况下,可能存在从查找键的散列化而被返回的两个地址,其包含所存储的匹配的查找键。在这种情况下,在两个地址处的指令将是相同的,并且因此使用任何一个都是可接受的。
在112处在控制器102的指导下可以使用任何合适的技术来填充存储块或存储库200中的表。例如,一种已知技术使用诸如图5中所示的那样的键插入结构500。分组处理指令表105可以被认为是多散列表501,其包括或被细分为多个散列表502(各自对应于存储块或存储库200),其中每个散列表502通过相应的散列函数503被访问,这可以在专用散列值生成器122中实现或由控制器102中的软件实现。在配置或设置期间,键插入单元504接收待被插入到查找表501中的查找键和与该查找键相关联的信息,向该查找键应用相应的散列函数503以生成该查找键的相应的散列值,以及使用各个散列值作为到散列表502的地址或索引。
如果散列表502中的任何一个寻址位置被占用(“冲突”),则在一些实现方式中,不使用该位置。在那些实现方式中,键插入单元504将键和相关联的转发指令存储在不存在冲突的任何位置中。在其他实现方式中,例如依赖于上面合并的美国专利9,171,030中描述的布谷鸟散列的那些实现方式,存储键的尝试次数与不同的库中的位置的数量相对应。由于诸如布谷鸟散列之类的技术,可能存在若干次迭代尝试以将值存储在特定的库中。
一旦因为所有位置都被占用或者因为超过导致高冲突概率的占用阈值而确定键无法被存储,控制器102将利用新的相关联的散列函数503分配附加的存储块或存储库200,而无需停止网络设备101的操作。控制器102将使用键插入单元504将查找键和相关联的指令插入新分配的存储块或存储库200中。
在操作期间,当正在处理分组时,键生成器106从分组报头121导出包括分组数据的查找键116。散列值生成器107(针对分类引擎114、第3层引擎124、第2层引擎134和隧道引擎144中的每个,基于每个引擎的相应的键,可以存在单独的散列值生成器)使用散列函数503将查找键116散列化,以生成在包含分组处理指令表105的不同存储块或存储库200中的候选地址。检查每个候选地址的内容,并将指令或动作存储在也包含查找键的地址处。
图6示出了在两个存储块或存储库200和四个存储块或存储库200的情况下的上述散列地址过程。如先前所述,通过散列函数503运行查找键X(601)以生成到存储块或存储库200的地址或索引。在两个块或库200的情况610中,返回两个结果611,并且命中或未命中逻辑612检查这两个结果以选择包含查找键X(601)的副本的结果。在四个块或库200的情况620中,返回四个结果621,并且命中或未命中逻辑622检查四个结果以选择包含查找键X(601)的副本的结果。
命中或未命中逻辑612和命中或未命中逻辑622基本上相同,并且图7中示出了命中或未命中逻辑612的示例700。查找键710是“MAC Y”。通过散列函数701和散列函数702二者运行值“MAC Y”,分别生成地址1(711)和地址2(712)。地址1(711)被用作到存储块1(721)的索引,以及地址2(712)被用作到存储块2(722)的索引。地址1(711)返回值“MAC X”,而地址2(712)返回值“MAC Y”。因此,在731处,命中或未命中逻辑700确定地址1(711)已产生未命中,而在732处,命中或未命中逻辑700确定地址2(712)已产生命中。
如上面所讨论的,并且如图6中所示出的,本公开的主题的实现方式可以用于在网络设备101的操作期间增加或减少存储块或存储库200的数量,以反映各种存储块或存储库200中的占用水平,或者允许将存储块或存储库200从一种类型的表重新分配给另一类型的表。如所讨论的,可以通过简单地接通附加的存储块或存储库200,并为新接通的存储块或存储库200添加散列函数,来增加存储块或存储库200的数量。
释放分配存储块或存储库200更为复杂。首先,可以做出决定以减少正在使用的存储块或存储库200的数量。如所讨论的,可以基于以下各项来做出这样的决定以降低功耗:基于一天中的时间,基于对揭示正在使用的存储块或存储库200的容量已经下降到某个阈值以下(例如,到正在使用的存储块或存储库200中的空白空间超过一个存储块或存储库200中的空间的量达预定容限的点)的容量的监控,或者一天中的时间和容量的某种组合。或者,存储块或存储库200可以从分组处理指令表中的一个或一些但非全部的分组处理指令表释放分配,以允许分组处理指令表中的一个或多个其他分组处理指令表使用该存储块或存储库200。
一旦做出决定以释放分配一个或多个存储块或存储库200,必须将与存储块或存储库200被从其释放分配的任何一个或多个表相关的所有分组处理指令和相关联的查找键复制到要保持分配给该一个或多个表的其他存储块或存储库200中的空白位置中。如果要完全停用存储块或存储库200以节省电力,则必须将存储在该存储块或存储库200中的所有分组处理指令和相关联的查找键复制到其他位置。无论哪种方式,可以通过经由键插入结构(诸如,图5的键插入结构)重新散列化受影响的查找键来找到将保持操作的存储块或存储库200中的空白位置,来确定用于正被移动的分组处理指令和相关查找键的新的位置。
为了使网络设备101在分组处理指令表105中的存储块或存储库200的数量减少的同时保持操作,正被移动的分组处理指令(及其键)必须保持在其原始位置中,直到重新散列化处理(根据特定实现方式,针对任何单个键/指令组合或针对所有键/指令组合)被完成为止。这意味着可能存在如下时刻:当散列化用于要处理的分组的查找键时,将返回不止一个(通常仅两个)有效键/指令位置,其中一个包含在正被停用的其原始存储块或存储库200中的查找键及其相关联的分组,另一个包含在其新存储块或存储库200中的查找键及其相关联的分组。如上所述,在它们是相同的情况下,可以使用任何一个。
图8描绘了根据本公开的主题的实现方式的用于增加分组处理指令表105中的存储块或存储库200的数量的过程800的流程图。过程800开始于801,其中系统等待直到确定针对分组处理指令表需要附加的存储资源为止。如上所述,这样的确定可以起因于在一些预定次数的尝试之后无法在没有冲突的情况下存储分组处理指令,或者占用水平超过所选择的将冲突的概率保持在可接收水平的预定阈值。
一旦确定需要附加的存储资源,则在802处,针对分组处理指令表分配附加的存储块或存储库而无需中断网络设备100的操作。在803处,与正用于其他存储块或存储库的其他地址散列函数中的每个不同的附加的地址散列函数与新分配的附加的存储块或存储库相关联。系统在804处继续正常的分组处理操作(在上面直到803所描述的过程期间将一直进行),其中,如上所述,对于每个传入分组,生成查找键并使用正在使用的所有存储块或存储库的散列函数进行散列化以找到适当的分组处理指令。然后,流程返回到过程800的开端以等待,直到需要另外的附加资源(或者直到检测到需要更少的资源)。
与801-803并行地,在811处,系统等待直到确定针对分组处理指令表需要更少的资源。如上所述,这样的确定可能是由于预设的时间表,根据该预设的时间表,在一天中的某些时间(例如,深夜),因为数据流量较少分配给分组处理指令表的存储块或存储库的数量减少,或者这样的确定可能是由于检测到当前分配的存储块或存储库的占用率已经下降到预定阈值以下,或者可能需要存储块或存储库用于不同类型的分组处理指令表。
一旦确定要停用存储块或存储库,则在812处,使用剩余的存储块或存储库的散列函数来重新散列化要停用的存储块或存储库中的每个键/指令对,来在剩余的存储块或存储库中为每个键/指令对找到新的位置。在813处,将每个键/指令对复制到由重新散列化确定的新的位置。
在814处,确定是否已经完成对要停用的存储块或存储库的内容的重新散列化和复制。如果没有完成,则流程根据需要返回到812和/或813,以完成重新散列化和复制。如果在814处确定已完成对要停用的存储块或存储库的内容的重新散列化和复制,则在815处,停用该存储块或存储库,并且如上所述系统在804继续正常的分组处理操作(在上面直到815所描述的过程期间将一直进行)。
尽管在图8中未被示出(其仅图示了用于分配新存储块或存储库200的方法),但是在已经分配了新存储块或存储库200之后,控制器102开始用新分组处理指令条目来填充该新存储块或存储库200。
因此,可以看出,已经提供了网络设备和相应的操作方法,在网络设备中对用于分组处理指令表的存储块或存储库进行分配和释放分配而无需中断设备操作。
如本文和所附权利要求中所使用的,“A和B中的一个”的结构应表示“A或B”。
应注意,前述内容仅是对本发明的原理的说明,并且本发明可以通过除所描述的实施例之外的其他实施例来实践,所描述的实施例是出于说明而非限制的目的而呈现的,并且本发明仅受限于所附权利要求。

Claims (21)

1.一种用于操作具有数据存储资源的网络设备的方法,所述数据存储资源具有用于存储要在分组处理操作中采用的指令数据的可选择地可修改的容量,所述方法包括:
检测对用于存储要在分组处理操作中采用的所述指令数据的附加的存储资源的需求;
在不中断所述网络设备的操作的情况下,分配附加的存储块,以存储要在所述分组处理操作中采用的所述指令数据;
将所述附加的存储块与附加的地址散列函数相关联,所述附加的地址散列函数不同于与至少一个先前分配的存储块中相应的一个存储块相关联的至少一个相应的先前的地址散列函数中的每个相应的先前的地址散列函数,每个相应的先前的地址散列函数将查找键转换为所述至少一个先前分配的存储块中相应的一个存储块中的相应的可寻址位置,并且所述附加的地址散列函数将所述查找键转换为所述附加的存储块中的可寻址位置;
通过所述附加的地址散列函数处理要在所述分组处理操作中采用的所述指令数据的单元,以确定所述附加的存储块中用于存储要在所述分组处理操作中采用的所述指令数据的所述单元的位置;
将要在所述分组处理操作中采用的所述指令数据的所述单元存储在由所述附加的地址散列函数确定的所述位置处;
接收来自网络的传入网络分组,并且至少基于从所述传入网络分组的报头提取的数据,生成针对所述传入网络分组的传入查找键;
通过所述至少一个相应的先前的地址散列函数中的每个先前的地址散列函数处理所述传入查找键以生成相应的散列结果,并通过所述附加的地址散列函数处理所述传入查找键以生成附加的散列结果;以及
根据与所述相应的散列结果中的一个散列结果相关联的相应的存储器地址访问每个相应的先前分配的存储块,并且根据与所述附加的散列结果相关联的附加的存储器地址访问所述附加的存储块,以取回包括指令的指令数据,所述指令用于对所接收的所述分组执行动作。
2.根据权利要求1所述的方法,其中检测对用于存储要在所述分组处理操作中采用的所述指令数据的附加的存储资源的需求包括:
尝试存储要在所述分组处理操作中采用的所述指令数据;以及
在所述尝试期间仅查找已占用的存储器位置。
3.根据权利要求1所述的方法,其中要在所述分组处理操作中采用的所述指令数据将要对传入网络分组执行的动作与所述网络分组的属性相关联。
4.根据权利要求3所述的方法,其中要在所述分组处理操作中采用的所述指令数据将要对传入网络分组执行的动作与所述传入网络分组的报头数据相关联。
5.根据权利要求3所述的方法,其中要在所述分组处理操作中采用的所述指令数据将要对传入网络分组执行的动作与所述传入网络分组的物理属性相关联。
6.根据权利要求3所述的方法,其中要在所述分组处理操作中采用的所述指令数据将要对传入网络分组执行的动作与接收所述传入网络分组的端口相关联。
7.根据权利要求1所述的方法,其中根据与所述相应的散列结果中的一个散列结果相关联的相应的存储器地址访问每个相应的先前分配的存储块,并且根据与所述附加的散列结果相关联的附加的存储器地址访问所述附加的存储块是并行执行的,共同返回指令数据的多个候选单元;所述方法还包括:
选择所述指令数据的所述候选单元中的一个候选单元。
8.根据权利要求7所述的方法,其中:
针对存储在所述附加的存储块和所述至少一个先前分配的存储块中的一个存储块中的位置处的分组处理操作的类型的数据的每个单元连同被散列化的原始查找键一起存储,以确定存储针对所述分组处理操作的类型的所述数据的单元的所述位置;并且
所述选择包括将所述原始查找键与所述传入查找键进行比较。
9.根据权利要求1所述的方法,还包括:
确定所述先前分配的存储块和所述附加的存储块中的任何一个存储块是所述网络设备的操作所不需要的多余的存储块;以及
在不中断所述网络设备的操作的情况下,通过以下步骤释放分配所述多余的存储块:
根据相应的剩余存储块的散列函数将所述多余的存储块中所存储的数据重新散列化,以及
根据所述重新散列化,将重新散列化的所存储的数据存储在所述相应的剩余存储块中的地址处。
10.根据权利要求9所述的方法,其中所述释放分配还包括保持所述多余的存储块处于操作中,直到所述多余的存储块中的所有所存储的数据已经被移动到所述相应的剩余存储块为止。
11.根据权利要求10所述的方法,还包括:
在所述保持期间,当根据与所述相应的散列结果中的一个散列结果相关联的相应的存储器地址访问每个相应的先前分配的存储块并且根据与所述附加的散列结果相关联的附加的存储器地址访问所述附加的存储块时,引起从所述多余的存储块取回所述指令数据的第一实例,并且从所述相应的剩余存储块取回所述指令数据的第二实例,选择所述指令数据的所述第一实例和所述指令数据的所述第二实例之一。
12.根据权利要求9所述的方法,还包括:
监控所述先前分配的存储块和所述附加的存储块的容量;其中:
所述确定包括检测所述先前分配的存储块和所述附加的存储块的容量已经下降到预定阈值以下。
13.根据权利要求9所述的方法,其中所述确定包括检测进入到一天中的计划时间段,在所述计划时间段期间网络流量减少。
14.一种网络设备,包括:
多个端口;
耦合到所述多个端口的至少一个接收缓冲器;
耦合到所述多个端口的至少一个发送缓冲器;
可选择地可修改数量的存储块,用于存储分组处理数据,所述分组处理数据表征要对在所述多个端口中的一个端口处接收的或从所述多个端口中的一个端口发送的网络分组执行的分组处理操作;以及
用于操作所述网络设备的控制器,所述操作包括可选择地修改用于存储所述分组处理数据的存储块的所述数量,所述控制器被配置为:
检测对用于存储要在分组处理操作中采用的指令数据的附加的存储资源的需求;
在不中断所述网络设备的操作的情况下,分配附加的存储块,以存储要在所述分组处理操作中采用的所述指令数据;
将所述附加的存储块与附加的地址散列函数相关联,所述附加的地址散列函数不同于与至少一个先前分配的存储块中相应的一个存储块相关联的至少一个相应的先前的地址散列函数中的每个相应的先前的地址散列函数,每个相应的先前的地址散列函数将查找键转换为所述至少一个先前分配的存储块中相应的一个存储块中的相应的可寻址位置,并且所述附加的地址散列函数将所述查找键转换为所述附加的存储块中的可寻址位置;
通过所述附加的地址散列函数处理要在所述分组处理操作中采用的所述指令数据的单元,以确定所述附加的存储块中用于存储要在所述分组处理操作中采用的所述指令数据的所述单元的位置;
将要在所述分组处理操作中采用的所述指令数据的所述单元存储在由所述附加的地址散列函数确定的所述位置处;
接收来自网络的传入网络分组,并且至少基于从所述传入网络分组的报头提取的数据,生成针对所述传入网络分组的传入查找键;
通过所述至少一个相应的先前的地址散列函数中的每个先前的地址散列函数处理所述传入查找键以生成相应的散列结果,并通过所述附加的地址散列函数处理所述传入查找键以生成附加的散列结果;以及
根据与所述相应的散列结果中的一个散列结果相关联的相应的存储器地址访问每个相应的先前分配的存储块,并且根据与所述附加的散列结果相关联的附加的存储器地址访问所述附加的存储块,以取回包括指令的指令数据,所述指令用于对所接收的所述分组执行动作。
15.根据权利要求14所述的网络设备,其中所述控制器被配置为:
根据与所述相应的散列结果中的一个散列结果相关联的相应的存储器地址访问每个相应的先前分配的存储块,并且并行地,根据与所述附加的散列结果相关联的附加的存储器地址访问所述附加的存储块,以返回指令数据的多个候选单元;以及
选择所述指令数据的所述候选单元中的一个候选单元。
16.根据权利要求15所述的网络设备,其中:
针对存储在所述附加的存储块和所述至少一个先前分配的存储块中的一个存储块中的位置处的分组处理操作的类型的数据的每个单元连同被散列化的原始查找键一起存储,以确定存储针对所述类型的分组处理操作的所述数据的单元的所述位置;并且
所述控制器被配置为通过将所述原始查找键与所述传入查找键进行比较来选择所述指令数据的所述候选单元中的一个候选单元。
17.根据权利要求14所述的网络设备,其中所述控制器还被配置为:
确定所述先前分配的存储块和所述附加的存储块中的任何一个存储块是所述网络设备的操作所不需要的多余的存储块;以及
在不中断所述网络设备的操作的情况下,通过以下步骤释放分配所述多余的存储块:
根据相应的剩余存储块的散列函数将所述多余的存储块中所存储的数据重新散列化,以及
根据所述重新散列化,将重新散列化的所存储的所述数据存储在所述相应的剩余存储块中的地址处。
18.根据权利要求17所述的网络设备,其中所述控制器还被配置保持所述多余的存储块处于操作中,直到所述多余的存储块中的所有所存储的数据已经被移动到所述相应的剩余存储块为止。
19.根据权利要求18所述的网络设备,其中所述控制器还被配置为:
在所述保持期间,当根据与所述相应的散列结果中的一个散列结果相关联的相应的存储器地址访问每个相应的先前分配的存储块并且根据与所述附加的散列结果相关联的附加的存储器地址访问所述附加的存储块时,引起从所述多余的存储块取回所述指令数据的第一实例,并且从所述相应的剩余存储块取回所述指令数据的第二实例;
选择所述指令数据的所述第一实例和所述指令数据的所述第二实例之一。
20.根据权利要求17所述的网络设备,其中所述控制器还被配置为:
监控所述先前分配的存储块和所述附加的存储块的容量;以及
通过检测所述先前分配的存储块和所述附加的存储块的容量已经下降到预定阈值以下,确定所述先前分配的存储块和所述附加的存储块中的任何一个存储块是所述网络设备的操作所不需要的多余的存储块。
21.根据权利要求17所述的网络设备,其中所述控制器还被配置为:通过检测进入到一天中的计划时间段来确定所述先前分配的存储块和所述附加的存储块中的任何一个存储块是所述网络设备的操作所不需要的多余的存储块,在所述计划时间段期间网络流量减少。
CN201910094138.5A 2018-01-30 2019-01-30 针对网络设备中的分组处理指令表的存储器的动态分配 Active CN110096225B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862623957P 2018-01-30 2018-01-30
US62/623,957 2018-01-30

Publications (2)

Publication Number Publication Date
CN110096225A true CN110096225A (zh) 2019-08-06
CN110096225B CN110096225B (zh) 2024-09-20

Family

ID=67392483

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910094138.5A Active CN110096225B (zh) 2018-01-30 2019-01-30 针对网络设备中的分组处理指令表的存储器的动态分配

Country Status (2)

Country Link
US (2) US10700974B2 (zh)
CN (1) CN110096225B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111614540A (zh) * 2020-06-04 2020-09-01 北京百度网讯科技有限公司 用于传递信息的方法及装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11018978B1 (en) * 2018-09-04 2021-05-25 Marvell Israel (M.I.S.L) Ltd. Configurable hash-based lookup in network devices
US10999207B2 (en) * 2019-05-15 2021-05-04 Rad Data Communications Ltd. Packet loss reduction using auxiliary path
EP4122171B1 (en) 2020-03-20 2024-05-01 Arris Enterprises, Llc Efficient remote phy dataplane management for a cable system
US11914647B2 (en) * 2022-06-06 2024-02-27 Google Llc Efficient hash table lookup

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103329111A (zh) * 2012-01-19 2013-09-25 华为技术有限公司 一种基于块存储的数据处理方法、装置及系统
CN104158744A (zh) * 2014-07-09 2014-11-19 中国电子科技集团公司第三十二研究所 用于网络处理器的建表和查找方法
US20170068669A1 (en) * 2015-09-06 2017-03-09 Mellanox Technologies Tlv Ltd. Cuckoo hashing with selectable hash
CN106537358A (zh) * 2013-01-08 2017-03-22 理芙麦资公司 在存储网络中的存储的管理
CN107239230A (zh) * 2016-03-29 2017-10-10 三星电子株式会社 用于高效存储器内嵌去重应用的最优化的跳房子多散列表

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL116989A (en) 1996-01-31 1999-10-28 Galileo Technology Ltd Switching ethernet controller
US8577854B1 (en) 2001-11-27 2013-11-05 Marvell Israel (M.I.S.L.) Ltd. Apparatus and method for high speed flow classification
US7571156B1 (en) * 2003-03-28 2009-08-04 Netlogic Microsystems, Inc. Network device, storage medium and methods for incrementally updating a forwarding database
US7426518B2 (en) * 2003-03-28 2008-09-16 Netlogic Microsystems, Inc. System and method for efficiently searching a forwarding database that is split into a bounded number of sub-databases having a bounded size
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
KR100745693B1 (ko) * 2006-09-29 2007-08-03 한국전자통신연구원 Tcam 테이블 관리 방법
US8923306B2 (en) * 2011-08-02 2014-12-30 Cavium, Inc. Phased bucket pre-fetch in a network processor
US9171030B1 (en) 2012-01-09 2015-10-27 Marvell Israel (M.I.S.L.) Ltd. Exact match lookup in network switch devices
US8854973B2 (en) * 2012-08-29 2014-10-07 International Business Machines Corporation Sliced routing table management with replication
CN105122745B (zh) * 2013-02-27 2019-06-28 马维尔国际贸易有限公司 用于网络设备的高效最长前缀匹配技术
US9537771B2 (en) * 2013-04-04 2017-01-03 Marvell Israel (M.I.S.L) Ltd. Exact match hash lookup databases in network switch devices
US10587516B1 (en) 2014-07-15 2020-03-10 Marvell Israel (M.I.S.L) Ltd. Hash lookup table entry management in a network device
US20160285753A1 (en) * 2015-03-27 2016-09-29 Telefonaktiebolaget L M Ericsson (Publ) Lock free flow learning in a network device
US11068469B2 (en) * 2015-09-04 2021-07-20 Arista Networks, Inc. System and method of a dynamic shared memory hash table with notifications
US9906443B1 (en) * 2016-03-28 2018-02-27 Amazon Technologies, Inc. Forwarding table updates during live packet stream processing
US10171419B2 (en) * 2016-06-19 2019-01-01 Mellanox Technologies TLC Ltd. IP route caching with two search stages on prefix length
US10031859B2 (en) * 2016-06-22 2018-07-24 Arista Networks, Inc. Pulse counters

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103329111A (zh) * 2012-01-19 2013-09-25 华为技术有限公司 一种基于块存储的数据处理方法、装置及系统
CN106537358A (zh) * 2013-01-08 2017-03-22 理芙麦资公司 在存储网络中的存储的管理
CN104158744A (zh) * 2014-07-09 2014-11-19 中国电子科技集团公司第三十二研究所 用于网络处理器的建表和查找方法
US20170068669A1 (en) * 2015-09-06 2017-03-09 Mellanox Technologies Tlv Ltd. Cuckoo hashing with selectable hash
CN107239230A (zh) * 2016-03-29 2017-10-10 三星电子株式会社 用于高效存储器内嵌去重应用的最优化的跳房子多散列表

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111614540A (zh) * 2020-06-04 2020-09-01 北京百度网讯科技有限公司 用于传递信息的方法及装置
CN111614540B (zh) * 2020-06-04 2022-04-08 北京百度网讯科技有限公司 用于传递信息的方法及装置

Also Published As

Publication number Publication date
US10700974B2 (en) 2020-06-30
US11271857B2 (en) 2022-03-08
US20200287832A1 (en) 2020-09-10
CN110096225B (zh) 2024-09-20
US20190238459A1 (en) 2019-08-01

Similar Documents

Publication Publication Date Title
CN110096225A (zh) 针对网络设备中的分组处理指令表的存储器的动态分配
US7606236B2 (en) Forwarding information base lookup method
US9892057B2 (en) Single double cuckoo hash
US10621080B2 (en) Pipelined hash table with reduced collisions
CN101309216B (zh) 一种ip包分类方法和设备
EP1551141B1 (en) Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware
CN102377664B (zh) 一种基于tcam的区域匹配装置和方法
CN108337172A (zh) 大规模OpenFlow流表分级存储架构与加速查找方法
CN107528783B (zh) 利用对前缀长度进行两个搜索阶段的ip路由缓存
CN100543687C (zh) 一种多核系统的资源管理方法和控制核
US20110058564A1 (en) Network relay device and memory control method
US20020194433A1 (en) Shared cache memory replacement control method and apparatus
US20060265370A1 (en) Method and apparatus for reducing overflow of hash table entries
CN105320608A (zh) 用于控制存储器设备处理访问请求的存储器控制器和方法
US20210067448A1 (en) TCAM with multi region lookups and a single logical lookup
US6725216B2 (en) Partitioning search key thereby distributing table across multiple non-contiguous memory segments, memory banks or memory modules
WO2006099186A2 (en) Information retrieval architecture for packet classification
CN101021814A (zh) 存储、查询方法及存储控制器和查询系统
CN108459975A (zh) 用于有效使用地址转换缓存的技术
CN1328659C (zh) 具有共享存储器的改进结构
CN101620623A (zh) 内容可寻址存储器表项管理方法和装置
CN109582600A (zh) 一种数据处理方法及装置
CN110191135B (zh) Acl配置方法、装置、电子设备
EP1212684B1 (en) Caching associative memory
WO2014195804A2 (en) Internal search engine architecture

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