CN102754395B - 由中央控制器控制的接收和存储数据分组的设备和方法 - Google Patents
由中央控制器控制的接收和存储数据分组的设备和方法 Download PDFInfo
- Publication number
- CN102754395B CN102754395B CN201080063130.XA CN201080063130A CN102754395B CN 102754395 B CN102754395 B CN 102754395B CN 201080063130 A CN201080063130 A CN 201080063130A CN 102754395 B CN102754395 B CN 102754395B
- Authority
- CN
- China
- Prior art keywords
- queue
- address
- packet
- processor
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 124
- 230000008569 process Effects 0.000 claims abstract description 107
- 238000012545 processing Methods 0.000 claims description 12
- 230000009471 action Effects 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 description 15
- 230000001360 synchronised effect Effects 0.000 description 14
- 230000008859 change Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 238000012163 sequencing technique Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6255—Queue scheduling characterised by scheduling criteria for service slots or service orders queue load conditions, e.g. longest queue first
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/622—Queue service order
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/78—Architectures of resource allocation
- H04L47/781—Centralised allocation of resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/82—Miscellaneous aspects
- H04L47/828—Allocation of resources per group of connections, e.g. per group of users
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9047—Buffering arrangements including multiple buffers, e.g. buffer pools
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/56—Queue scheduling implementing delay-aware scheduling
- H04L47/568—Calendar queues or timing rings
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了组件和方法,其中,一定数目的接收单元接收并存储由多个处理器/过程进行出队的一定数目的队列中的数据。如果针对一个处理器的所选队列具有超过限制的填充级别,则向另一个处理器的队列转发分组,指示该另一个处理器直到已将超过填充级别的队列清空才处理该队列。从而,可以获得过程/处理器之间的负载平衡,同时保持了分组之间的排序。
Description
技术领域
本发明涉及一种使用并行接收技术来接收数据分组并提供对存储地址的中央确定及其中央存储的方式。
背景技术
发明内容
在第一方面中,本发明涉及一种组件,包括:用于接收并存储数据分组的设备;以及多个出队处理器或过程,所述设备包括:存储单元、控制单元以及多个数据接收和存储单元,其中:
-所述存储单元适于在其多个队列中保持多个数据分组的至少一部分,每个队列包括一定数目的存储元件,每个存储元件由地址来定义,
-每个处理器或过程适于使数据从第一组队列中出队,各个第一组中的队列是非重叠的,所述处理器/过程适于向所述控制单元转发与使数据从队列中出队相关的信息,
-每个数据接收和存储单元包括:
-用于访问或接收数据分组的装置,
-用于从所述控制单元接收用于存储所述数据分组的至少一部分的地址的装置,
-用于辅助完成在存储单元中在所接收到的地址处存储所述数据分组的至少一部分的装置,
-所述控制单元包括:
-用于确定与所述队列的填充级别相关的信息的装置,
-用于通过以下动作来选择地址的装置:
-针对接收/访问的数据分组,确定第二组队列,每个第二组队列包括来自每个第一组队列的队列,所述第二组队列中的队列是非重叠的,
-如果所确定的第二组中的当前选择的第一队列的填充级别超过预定级别,选择所确定的第二组中的第二队列,
-将所述地址选择为所述第二组的所选队列的地址,
-用于向已接收/访问了所述数据分组的接收和存储单元转发所选地址的装置,
与所选第二队列相关的过程/处理器适于:直到超过预定级别的所选第一队列为空,才处理该队列。
在本上下文中,所述设备可以是单一外壳内的单个硬件,或者可以由一定数目的分离单元来形成,比如,所述存储单元和/或所述控制单元与所述接收/存储单元分离,它们可以是与其他元件可拆卸式互联的分离元件,但是它们互联以交换数据。其优点是可以改变或替换接收/存储单元的数目,以适合不同的需求或要求。该交换可以在任何数据传输协议(比如TCP、以太网、蓝牙等)下进行,且使用任何类型的数据传输(有线或无线)。
从而,可以将所述接收/存储单元提供为分离的多块硬件,比如用分离的PCB、处理器、FPGA等来实现各块。备选地,相同的PCB/处理器/FPGA可以形成多个接收/存储单元。控制单元可以与接收/存储单元分离,或者可以形成一个或多个接收/存储单元的一部分。
自然地,可以将接收/存储单元的各个装置获得或成形为单独的单元,比如(软件控制的或硬连线的)处理器、FPGA、专用电路、ASICS等。备选地,可以将多个这种装置组合为单个这种处理器等等。
数据分组可以是要在网络、数据线缆、数据总线、干线等上发送的或要由网络、数据线缆、数据总线、干线等传输的任何类型的数据单元。一般而言,数据单元符合一个或多个数据标准(比如以太网标准),在以太网标准这一统称下,存在一定数目的不同标准或数据分组类型,比如UDP和TCP数据分组。数据分组通常具有一定数目的不同信息项或类型,比如地址数据、有效载荷等等,它们各自位于数据分组中已经定义的或已知的位置上。这种位置和类型对于不同的数据分组类型通常将不同,但是在分析中可以导出、改变和/或使用各个数据项(比如地址数据和/或有效载荷)之后,通常可以根据实际数据分组来确定数据分组类型,且从而确定其各个内容的位置。可以根据数据分组直接导出类型或标准,比如当分组的特定数据项标识类型/标准时,或者可以根据从数据分组导出的数据来导出类型或标准,比如基于对数据分组的数据项的类型和位置进行识别以及后续对可以在这样的位置上发现这样的数据的数据分组的类型或标准进行确定。
可以存储数据分组的任何部分。如果不再需要输出数据分组,则可以例如删除其中的寻址信息,以不占用空间。
可以对数据分组排序,且如果这样做,可以按多种方式并出于多种理由对数据分组排序。通常,在计算机之间的数据交换是文件传输、TCP传输、VoIP等,其中,各个分组的顺序是重要的。通常,这种传输被称为流。
数据分组的流一般是从单一发射机向一个或多个接收机发送的数据分组序列。这些数据分组涉及例如以较小部分发送的作为分组的有效载荷的单一文件等。此时,发射机和接收机、或任何中间网络单元通常将具有也在分组中表示的地址。此外,取决于各个数据分组标准,其他流识别信息可以存在于数据分组中。
从而,可以基于例如地址和/或流识别信息来识别流,由此如果使用一致,可以导出相同的信息,且任何后续过程可以仅根据该信息来识别流。
在另一情况下,数据分组中可以具有确定其顺序的信息,比如序列号或时间戳。从而,该信息可以用于对分组排序。
所述存储单元包括一定数目的队列,每个队列包括一定数目的存储元件,每个存储元件由地址来定义。通常,存储单元具有分离的可寻址的元件,且一定数目的这种元件可以形成队列。优选地,队列包括多个连续地址,但这不是必要条件。
数据分组可以具有不同的大小,然后可以占用变化数目的地址。
自然地,所述存储单元可以是任何形式的存储单元,比如单片存储单元或由在空间上分离的一定数目的存储单元构成的一个存储单元。常用的存储技术基于硬盘、软盘、RAM、ROM、PROM、EPROM、EEPROM、闪存、存储卡、CD-ROM、DVD、存储卡等。
如果提供分离的存储单元,所述地址将描述实际存储单元的标识及其中的“本地地址”。
控制单元可以由任何类型的(硬连线或软件控制的)处理器来形成,或可以是专用电路。所述控制单元的操作是确定用于各个数据分组的地址。这样,如果需要,则可以获得数据分组的排序。
所述控制单元能够确定队列的填充级别。在本上下文中,填充级别可以涉及在队列中存在的数据分组的数目或由队列占用的可寻址单元的数目。当将该数目/量与最大数目/量相比时,可以将该填充级别表示为数据/分组/地址的量/数目或表示为百分比。
自然地,可以使用任意数目的接收/存储单元。当使用多个接收/存储单元时,可以执行并行接收和存储。可以使用任何数目的接收/存储单元,比如2、3、4、5、6、7、8、10、15、20或更多个。如下面进一步描述的,所有这些接收/存储单元可以是相同或接近相同的,或者可以将它们具体实现或创建为具有不同操作的不同电路。每个接收/存储单元可以具有控制单元,但是仅需要一个。在另一情况下,仅一个接收/存储单元包括控制单元,但是其其它方面与其余的接收/存储单元相同。
访问/接收装置可以实际接收和/或存储数据或数据分组。备选地,可以在另一位置处或在与该接收/存储单元通信的设备中接收或存储数据分组,从而通过读取同时存储在另一设备中的数据来远程访问数据分组的数据。由于远程访问数据分组,后者通常将提供较慢的处理。
即使没那么优选,接收的地址也可以不是要存储数据分组的存储单元中的实际地址。备选地,可以接收根据其可以导出该地址的信息。
优选地,通过DMA来执行在所述存储单元中对数据分组的存储,这是在存储单元中存储数据的最快方式。
所述辅助完成装置可以直接在存储单元中存储数据分组的至少一部分,比如通过数据连接,或者如果存储在另一位置,其可以辅助完成存储数据分组。然后,可以向该另一位置传输该地址,然后该另一位置处理对数据分组的存储。
自然地,所述接收装置、所述转发装置和所述辅助完成装置可以包括:用于根据需要来处理该操作并传输数据所需的驱动器、连接器等等。
在该上下文中,处理器或过程可以是辅助完成使数据出队并可能对其进行处理的任何类型的电路或程序。该处理可以是任何类型的处理,比如,对数据业务的监控、将数据分组分给不同的收信人等等。此外,该处理可以是从组件输出数据分组并向后续联网单元(比如服务器等)转发。
各个第一和第二组中的队列是非重叠的,从而,任何队列仅属于一个第一组和/或一个第二组,且由一个过程/处理器来出队。从而,根据由过程/处理器出队的所有队列的填充级别,可以导出对该过程/处理器的忙碌程度的指示。然后,如果过程/处理器过忙,则可以向另一过程/处理器转发数据分组/流/类型。
此外,第一组中的队列可以用于服务质量操作,使得每个队列例如仅处理单一优先级,且不同的队列处理不同的优先级。该优先级可以根据数据分组或时间戳来确定。
当过程/处理器使在存储单元中存储的数据分组或其一部分出队时,相应地通知控制单元,使得控制单元能够确定该队列的此时已降低的正确填充级别。
与所选第二队列相关的过程/处理器适于:直到超过预定级别的所选第一队列为空,才处理该队列。这可以是其编程特征,或者可以由存储器或指令来控制,可以向该过程/处理器馈送该指令,或者可以读取该指令,所述指令确定了该过程/处理器是否可以从给定队列中出队。
在优选实施例中,每个数据接收和存储单元还包括用于产生与所接收/访问的数据分组相关的信息并将所产生的信息转发给控制单元的装置,所述控制单元还包括:用于接收所产生的信息的装置;然后所述选择装置适于还基于接收到的所产生的信息来选择所述地址。
从而,可以根据所产生的信息来确定所述地址,以及如果希望,确定所述队列。如上所述,可以将数据分组分为流、类型等,且可能希望将相同类型/流等的数据分组提供到相同的队列中。
一般而言,所述产生装置可以适于产生与接收数据分组的时间点(时间戳)相关的信息,作为所产生的信息的至少一部分。在该实施例中,所述接收/存储单元优选地具有同步的定时单元,使得来自不同接收/存储单元的数据分组的时间戳可比。
本实施例的优点是:如果在不同接收/存储单元处接收到例如流的数据分组,则可以根据分组以及转发到控制单元的所产生的信息来确定流的标识,且可以根据时间戳来确定接收顺序,使得可以在所需队列中以及例如按照所需顺序来存储数据分组。
在优选实施例中,作为一定数目的连续地址,来实现每个队列,并且所述控制装置:
-适于针对每个队列,保持写指针和读指针,所述写指针标识要添加数据的下一个地址或添加了数据的上一个地址,所述读指针标识要从队列中读取/出队的下一个地址或已读取/出队的上一个地址,以及
-包括以下装置:
-用于当选择了地址时,更新与所选地址相关的队列的写指针的装置,
-用于基于从处理器/过程转发来的信息,更新数据已出队的队列的读指针的装置。
将读/写指针用作端点指针使得处理队列非常简单。当地址是连续的时,这是特别简单的。可以通过将一个指针减去另一个指针而简单地得到占用的地址数目,例如填充级别的指示。
由于不同大小的数据可以占用不同数量的空间,且从而占用不同数目的地址,因此对写指针的更新可能需要知道要存储的数据分组或其一部分的大小。
对读指针的更新可以基于数据已出队的所有地址的列表,或简单地仍包含数据的最后地址或第一个空闲的地址。
然而,提供大量连续地址在现实系统中可能是成问题的。在标准的存储系统中,分配最大大小例如4MB的块或段。在段/块中,地址是连续的,但是由于段/块可以在存储器中随机分配,因此全部地址可以不是连续的。
在这种情况下,将所述存储单元的队列的地址分为具有预定数目个物理地址的组,这些组位于非连续的位置。在该方面,“非连续”意味着在存储器空间中,这些组不是相邻位置的(具有连续地址)。此时,实现队列的地址优选地是被定义为连续地址的虚拟地址,所述控制单元还包括用于在虚拟地址和物理地址之间进行转换的装置。
从而,可以分配任何数目的连续虚拟地址,然后将虚拟地址转换为实际的物理地址。
获得此目的的一种方式如下:所述存储单元具有一定数目的可分配段/块,每个物理地址组定义了可分配块/段之一中的地址,可用第一数目个比特的地址来识别每个块/段,可使用第二数目个比特来寻址块/段中的所有地址,物理地址具有与第一数目个比特和第二数目个之和相对应的数目个比特,虚拟地址均包括第一部分和第二部分,所述第一部分至少具有所述第一数目个比特,所述第二部分至少具有所述第二数目个比特,其中,所述转换装置适于将所述虚拟地址的第一部分转换为第三部分,所述第三部分具有所述第一数目个比特,并标识已分配的块/段,以及产生物理地址,作为具有所述第三部分和所述第一部分的地址。
在一个情况下,所述组件可以包括:指示装置,用于指示过程/处理器是否对队列进行出队。这些指示装置可以包括在存储单元中存储的数据,过程/处理器适于:根据该数据,确定是否处理队列,且处理器适于:当清空队列时,改变该数据。
在该情况下,所述指示装置优选地由过程/处理器和数据来形成,基于该数据,过程/处理器能够确定要对哪个队列进行出队。
备选地,分离的单元(比如处理器),可以监督队列长度并更新该数据。
在该情况下,由所述设备将对数据的读取/出队与存储分离。所述设备或控制单元可以读取存储装置中的数据,以了解要向哪个队列添加数据,但是过程/处理器本身更新数据并对其操作,使得仅得到允许的过程/处理器将使数据从第二组的队列中出队。
自然地,可以在其他时间点更新该数据,或可以由已将队列清空的另一处理器/过程来更新该数据。这是最简单的方式,因为过程/处理器将了解何时清空了队列,并且也可以更新该数据,使得由另一个过程/处理器对下一个队列进行出队。
在该实施例中,可以获得在过程/处理器之间的负载平衡,同时维持任何第二组中的分组的处理/出队的排序。
特别在出队和/或分析/处理数据分组时所存储的数据分组(或至少其一部分)的排序很重要时,一旦处理器/过程已开始使数据分组出队/处理数据分组,难以向另一处理器/过程分配这种数据分组。使用本实施例,将每个这样的数据分组的组(通常是流)分配给第二组队列,每个第二组队列具有由分离的所述处理器/过程来出队/处理的分离队列。从而,如果当前存储数据分组的且由第一处理器/过程出队的队列变得过长,即,第一处理器/过程过于忙碌,则判定从相同的第二组中识别由第二处理器/过程出队的另一队列,但是在第一处理器/过程将所有数据分组从相关第二组中的其队列中出队之前,不允许第二处理器/过程使数据分组出队。这样,在处理器/过程之间维持了数据分组的出队排序。
本发明的另一方面涉及一种操作组件的方法,所述组件包括:多个出队处理器或过程;以及设备,所述设备包括:存储单元、控制单元以及多个数据接收和存储单元,所述方法包括以下步骤:
所述存储单元在其多个队列中保持多个数据分组的至少一部分,每个队列包括一定数目的存储元件,每个存储元件由地址来定义,
每个处理器或过程使数据从第一组队列中出队,各个第一组中的队列是非重叠的,所述处理器/过程向所述控制单元转发与使数据从队列中出队相关的信息,
每个数据接收和存储单元:
-访问或接收数据分组,
-从所述控制单元接收用于存储所述数据分组的至少一部分的地址,
-辅助完成在存储单元中在所接收到的地址处存储所述数据分组的至少一部分,
所述控制单元:
-确定与所述队列的填充级别相关的信息,
-通过以下动作来选择地址:
○针对接收/访问的数据分组,确定第二组队列,每个第二组队列包括来自每个第一组队列的队列,所述第二组队列的队列是非重叠的,
○如果所确定的第二组中的当前选择的第一队列的填充级别超过预定级别,选择所确定的第二组中的第二队列,
○将所述地址选择为所述第二组的所选队列的地址,
-向已接收/访问了所述数据分组的接收和存储单元转发所选地址,
所述方法还包括以下步骤:指示与第二组的所选第二队列相关的过程/处理器,直到超过预定级别的第二组的所选第一队列为空才处理该队列。
如上所述,对数据分组的访问可以不要求在设备中对其接收,而可以是在与该设备通信的远程单元处接收和/或存储时访问该数据分组。
在一个实施例中,每个数据接收和存储单元还产生与所接收/访问的数据分组相关的信息,并将所产生的信息转发给控制单元,所述控制单元还接收所产生的信息,然后所述选择装置还基于接收到的所产生的信息来选择所述地址。可以使用任何类型的分组分析以及导出任何类型的信息,来处理该信息的产生。如上所述,属于某一流或类型/协议通常是相关的。
在特定情况下,所述产生装置产生与接收数据分组的时间点相关的信息,作为所产生信息的至少一部分。从而,优选地执行加时间戳。这样,接收/存储单元的加时间戳过程优选地是同步的。
可以作为一定数目的连续地址,实现每个队列,并且所述控制装置:
-针对每个队列,保持写指针和读指针,所述写指针标识要添加数据的下一个地址或添加了数据的上一个地址,所述读指针标识要从队列中读取/出队的下一个地址或已读取/出队的上一个地址,以及
-当选择了地址时,更新与所选地址相关的队列的写指针,
-基于从处理器/过程转发来的信息,更新数据已出队的队列的读指针。
如上所述,对写指针的更新可能需要知道存储多少数据或数据分组占用多少地址。
此外,可以基于标识数据已出队的所有地址的信息,或基于简单的一个地址,来进行对读指针的更新。
优选地,将所述存储单元的队列的地址分为具有预定数目个物理地址的组,这些组位于非连续的位置,并且,实现队列的地址是被定义为连续地址的虚拟地址,所述控制单元还在虚拟地址和物理地址之间进行转换。
如上所述,优选地所述指示步骤包括:过程/处理器根据在存储单元中存储的数据,确定是否处理队列,以及处理器/过程或另一单元在清空队列时改变该数据。
附图说明
下面,将参照附图来描述本发明的优选实施例,在附图中:
-图1示出了根据本发明的第一实施例,
-图2示出了从虚拟地址到物理地址的转换,
-图3示出了在图1的分配器和适配器之间的时钟同步,
-图4示出了按时间顺序对随机接收的分组进行排序的方式,
-图5示出了在维持数据分组之间的顺序的同时在处理器之间的负载平衡,以及
-图6示出了适配器中的负载平衡。
具体实施方式
在图1中,示出了用于分析和转发数据帧的装置的实施例10,其具有若干适配器12,适配器12均连接到网络(比如WWW)并从网络接收数据。
一般而言,该类型的系统可以用于接收大量的数据分组,且辅助完成以合适的方式对其进行存储和/或转发。通常在由本系统监测的数据连接上,在计算机或网络的对之间发送这些数据分组。从而,数据分组一般不寻址到本系统或来自本系统。
当存储时,该数据可以由一个或多个后续过程或处理器(未示出)来处理。为了能够处理非常大量的数据,期望结构化的存储,以实现对数据快速但是结构化的检索。此外,当单一处理器不够用时,提供多个处理器,从而期望针对每个处理器对数据分离存储。
处理器可以用于分析数据业务,以取决于处理器中的处理的结果,存储数据和/或向其他网络单元、计算机等发送数据。
备选地或附加地,可能期望后续再次输出数据,从而还可以或备选地期望以输出所需的方式或顺序来存储数据。
一般而言,数据分组是数据分组流的一部分。当两个处理器或计算机交互时,交换数据分组的流。该流可以是文件传输或音频/视频的交换,比如基于IP的语音。流是相似的数据分组的序列,且可确定数据分组属于流,并且期望将流的所有数据分组按照期望顺序存储在一起,由相同后续过程或处理器来按该顺序处理和/或按该顺序输出。
根据对帧的分析来确定接收到的数据帧属于流。下面更详细地描述该分析。
本实施例的目的是提供一种结构,其中,多个适配器12将分析帧/包和/或存储这些帧/包的任务加以划分。
更具体地,适配器12从网络14(比如WWW、干线或任何合适类型的网络)接收数据帧。每个适配器12与其他适配器12无关地接收若干帧。
优选地,所有适配器(可能除了一个适配器之外)是相同的,且均包括所谓的PHY 20和所谓的MAC电路22,PHY 20是适于从网络或数据线缆接收数据帧的单元,MAC电路22将接收到的帧转换为通常在例如计算机上的数据总线上使用的标准。
在已接收到数据帧的情况下,在电路24中向其提供时间戳,其中,在向分析电路26馈送了该帧之后,分析电路26导出与数据帧相关的数据,比如与该帧符合的标准相关的数据,比如其是否具有VLAN和/或MPLS标签,以及可能地数据帧来自的地址数据。已知多个不同类型的标准,每个标准定义了在帧中存在哪些类型的数据(地址、封装、有效载荷、纠错等等)以及这种数据出现在哪里。取决于分组的具体类型,可以导出不同类型的数据。
电路26输出标识数据帧的数据,比如其属于数据分组流,或中央存储中的队列。然后,在请求电路28中,向中央服务器存储器分配器或控制器16发送数据帧的长度、数据帧的ID/队列标识和时间戳,中央服务器存储器分配器或控制器16返回存储器18中要存储数据帧的地址。向传输电路30返回该地址,传输电路30也接收数据帧,且随后经由公共数据总线32(比如运行PCI Express(PCIe)协议)向所标识的地址发送数据帧。该存储可以使用直接存储器寻址,直接存储器寻址意味着在期望地址处直接存储该帧,且不要求其他分析。这是在数据存储器中存储数据的最快速的方式,但是其要求物理地址已知。
自然地,电路28可以备选地输出或不输出分组的时间戳和长度,以及输出标识该帧的其他信息(类型、地址等),从而分配器本身将确定要添加该帧的队列,且从而导出要存储该帧的地址。
在分配器16和适配器12之间的“带外”通信可以是低带宽点对点通信、菊花链拓扑结构、或环状拓扑结构。如下面进一步描述的,该通信还用于同步时间戳电路24的时钟。用于该通信的合适协议可以是标准的64b/66b编解码器,每10Gbps以太网前端口(PHY)带宽,其要求大约1Gbps全双工带宽。
注意到,上述实施例10可以在存储器18中任意数目的队列中存储数据帧。向哪个队列转发数据分组可以取决于帧的未来命运。如果一个或多个处理器要分析帧,可以针对每个处理器提供一个队列,且向队列转发帧可以取决于在添加分组之前队列有多长。如果队列很长,且处理器从而很忙,则可以在较不忙碌的处理器的较短队列中提供该分组。
注意到,如果大多数数据帧涉及流,可能不希望向不同的队列发送与相同流相关的帧,以由不同处理器来分析。这样,优选地通过将来自新启动的流的所有将来帧分配给“饥饿”的处理器,来实现处理器之间的任何负载平衡。如该负载平衡一样,下面进一步描述该方式的备选。
此外,如果要在稍晚的时间点从存储器18输出帧,可以在特定队列中、按照要输出帧的顺序来提供要输出的帧。下面进一步描述这种输出。
如果期望给定的服务质量,可以将任何队列划分为具有不同优先级的若干队列,使得较高优先级的帧可以超过较低优先级的帧,然后被更快速的应对(处理、输出、分析等)。
适配器12中的负载平衡
在图6中,看到一部分单元(比如适配器12的PHY 20、MAC 22和时间戳分配24)可能以比其他单元(比如,分析器26、请求器28和传输电路30)更高的速度工作。在该情况下,可以形成这些较慢单元的多个“实例”,以将从单元20至24接收到的并加上时间戳的数据分组流分为多个并行流。在图6中,将在单一PHY 20上接收到的数据分组分为4个并行流。未直接示出单元20至30,但是直接示出了它们在流中的位置。
自然地,如果需要,可以实现在各个流之间的负载平衡。
图6中较低的线示出了备选,其中,高速PHY 20接收在适配器12中单一流中处理的数据分组。
使用多个队列的外部过程或处理器的负载平衡
可以用多种方式来执行从存储器18的队列中读取数据的处理器或过程(未示出)的负载平衡。如果流等中的数据分组的排序(接收顺序或由各个数据分组中的数据定义的顺序)不相关,可以为每个处理器提供单一队列。如果一个处理器的队列满了(下面进一步描述如何可以确定这点),则分配器16可以简单地实现将更多的数据分组发送至其他队列。
如果需要服务质量,则不同的队列可以用于不同的优先级。
如果需要维持例如流的数据分组的排序,在图5中示出了方案,其中,示出了2个适配器12接收总共4个数据流(flow)/流(stream)。
适配器12向在存储器18中存储的总共8个队列(编号#0至#7)发送数据分组,以由2个处理器(编号#0至#1)使用以下方案来执行出队操作:由处理器#0来处理队列#0至#3,且由处理器#1来处理队列#4至#7。此外,队列#0和#4一般用于流#0,队列#1和#5用于流#1等等。
初始时,向队列#0发送流#0的数据分组,但是随着该队列变满,分配器16开始向队列#4发送来自流#0的数据分组。然而,不允许处理器#1对这种分组进行出队操作和分析,直到处理器#0已将队列#0清空。为了对此进行控制,分配4个比特,每个流一个比特,其值确定了哪个处理器可以处理来自各个队列的分组。在图5中,最上面的比特控制对流#0的访问,且在其值为“0”时,这意味着处理器#0可以处理该队列,且从而使分组从队列#0出队。
看到:2个最下面的比特是“1”,指示允许处理器#1处理流#2和#3,且从而从队列#6和#7出队。当允许处理器处理多于一个队列时,其可以用任何合适的方式(比如循环、优先级、队列长度等等)来选择要处理的下一个队列。
由处理器控制这4个比特并存储在存储器18中。当使用多于2个处理器时,判定其排序或顺序,使得当处理器#1已清空队列时,要么其将修改对应的比特,要么处理器#2将注意到处理器#1的队列是空的,改变对应的比特,然后开始对其对应队列进行出队操作。由控制器使用相同的顺序来确定:如果队列满了,向哪个队列添加下一个数据。
然后,为了维持队列中的数据的排序,如果改变了队列,分配器16将始终选择空的新队列。
自然地,如果多于2个处理器能够处理单一队列,针对每个流使用更多比特,以指示当前允许哪个处理器来处理流。
虚拟地址-物理地址
为了使该结构更容易地适于不同系统,优选地让请求电路28、传输电路30、分配器16以及存储器18中的或连接到存储器18的任何出队电路工作在虚拟地址空间中。
由于针对DMA仅可以分配给定最大块大小这一标准要求,以及如此分配的块在不同系统中或有时操作相同设备时可以位于存储器中不同或随机的位置这一事实,使用物理地址的直接操作变得麻烦。因此,优选虚拟地址。
当前,将具有总长度32比特的地址(参见图2)分为2个部分,其中一个部分具有适于对最大大小可分配块中的所有地址进行寻址的若干比特。在本示例中,最大大小块或段具有4MB大小,要求22个比特用于寻址。该部分的虚拟和物理地址是相同的,且用于在单一块/段中寻址。
为了避免物理块/段可能位于存储器18中不同地址处这一事实,将虚拟地址全部(至少针对每个队列)定义为连续地址,而不管它们可能位于不同块/段中这一事实。从而,将32个比特解释为若干连续地址。可以将其细分为若干4M字节块/段,但是虚拟地连续布置。从而,可以将该虚拟地址视为指示连续虚拟块/段之一的初始10比特部分和作为在该块/段内内部寻址的后22个比特。
在存储器18中的物理现实中,可以维护在段/块中寻址的后22个比特,但是将虚拟地址的头10比特部分简单地转换为对物理分配的块/段之一的寻址或标识。
对于该用途,提供查找表,以将虚拟地址的头10个比特转换为实际分配的块/段的实际标识-即10比特地址。可以在实施例的初始化时,建立该查找表(LUT)。在图2中对此进行了示意。
还注意到:可以在虚拟地址空间中使用如下描述的读/写指针,当将虚拟地址定义为连续地址时,其同样使得例如对队列长度的确定更容易。
自然地,如下面将进一步看到的,如果过程/处理器使数据项从存储器18中出队,可以向分配器16返回其地址和大小(或占用的可寻址单元的数目),作为物理地址或虚拟地址。在任一情况下,分配器16能够相应地确定虚拟地址并相应更新指针。
定时-在分配器16和适配器12之间的时钟同步
为了让接收到的帧具有可靠和可比较的时间戳,期望在适配器12和分配器16中具有同步的时钟。
与本领域通常做法一样,当前通过与从分配器16向传输电路30传输的数据一起,转发在传输的数据中编码的但是可恢复的时钟信号,来获得时钟相位同步。适配器12适于导出该时钟信号,并将其既用在传输电路30中,也用在请求电路28中,如图3所示。
在已将相位同步的情况下,分两个步骤来同步实际的时钟时间。在步骤1中,分配器16向每个适配器12发送指令,以向分配器16发送消息,然后分配器16在接收到该消息时确定总的往返时间。在步骤2中,分配器16指示适配器12将其时间适配为分配器16的时钟时间。
更具体地,步骤1包括:分配器16在记录本地分配器发送时间的同时,向各个适配器12发送指令。适配器12在接收到该指令时,立刻向分配器16发送消息,分配器16记录接收时间。指令和消息的内容并不重要。分配器16此时将接收时间减去发送时间,并导出往返时间。假定该时间的一半是在分配器16和相关适配器12之间的数据传输的时间延迟。自然地,分配器16和不同的适配器12之间可以存在不同的时间延迟。
步骤2是从分配器16向适配器12发送指令,以将本地适配器时间设为分配器16的当前本地时间加上所确定的时间延迟的值。从而,当适配器12接收到该指令时,其将其本地时间设为分配器16处的本地时间同时已推进到的时间。然后,将分配器16和适配器12的时钟时间同步为在时钟信号的时钟周期内。由于相位或时钟脉冲也同步,时钟将保持同步。
然后,还将该恢复的时钟用于对接收到的数据分组加时间戳。从而,将所有时间戳同步在时钟周期内。
由于在分配器16和任何适配器12之间可以存在未决的若干指令,在每个指令/请求中提供标识符。当前,标识符是在0和7之间的时间戳(3个比特),其与时钟同步移位并环回。从而,分配器16在发送指令时,将添加时间戳,且适配器12在应答该指令时,将该时间戳复制到应答中,使得分配器16能够确定该应答涉及哪个指令。
自然地,可以针对任何数目的适配器12来执行适配器12与分配器16的该同步。适配器12可以用星型配置、环形拓扑结构或菊花链配置连接到分配器16,在星型配置中,所有适配器12直接与分配器16通信,菊花链配置让分配器16在适配器12的串的末尾,然后适配器12与分配器通过一个或多个其他适配器12通信。
分配器16的操作
对于存储器18的每个队列,分配器16具有2个队列(参见图4):RIFO(随机入先出)和FIRO(先入随机出)队列。
FIRO队列保持来自所有适配器12的与存储器18的有关队列相关的未决请求。写指针指向FIRO队列的下一个空闲位置。在该位置中接收并提供从适配器12接收的请求。
RIFO队列保持与何时要输出存储器队列的帧及其顺序相关的信息。RIFO队列中的每一项涉及时钟的时间点,且读指针指向RIFO队列的当前时间点。
当接收到请求时,导出其时间戳,且在RIFO队列中,在对应位置或时间点上提供标识符。注意到:由于来自某些适配器12的信息或这些适配器12中的处理可能比来自其他适配器的信息或其他适配器中的处理占用更长时间这一事实,该位置或时间点可以早于相同存储队列中的其他帧。
在图4中,看到FIRO队列中的第一帧具有比下一帧更晚的发送时间。
RIFO队列的读指针每个时钟周期前进一次,且如果在读指针的新位置上看到标识符,则寻址FIRO队列的对应位置,并向相关适配器12发送传输指令。然后,移除FIRO队列的对应项(或使结束指针前进至该位置)。
自然地,可以将FIRO和RIFO队列实现为循环队列。
为了考虑到由例如在适配器12和分配器16之间的数据传输以及在适配器12中的处理时间所引起的任何时间延迟,读指针优选地与相对于实际时间点而延迟的时间点相关,所述实际时间点由同步时钟定义,且用于提供帧的时间戳(其也在FIRO中存储的请求中被转发)。就此而言,当在RIFO队列中的正确位置上提供项时,不再需要相关请求的时间戳,且丢弃该时间戳以不占用表中的空间。
从而,读指针的时间可以落后于实际时钟多个时钟周期,比如3、4、5、6、7、8、9、10或更多个时钟周期。然后,可以将在例如时间120处加时间戳的帧转发到FIRO队列,并将其在时间120处输入RIFO队列,在时间130处对其进行寻址(读指针前进至该位置)。
在所有时间且针对存储器18中的每个队列,分配器16具有写指针和读指针2个指针:所述写指针标识要存储的来自适配器12的下一个帧的下一个地址,所述读指针标识要出队用于进一步分析、转发等的该队列的下一存储帧的地址。当要存储新的帧时,向相关传输电路30转发写地址,即,将下一个虚拟地址转换为被转发的其物理地址,然后传输电路30辅助完成帧的存储。同时,分配器16将相关写指针增加与帧的大小相对应的值。
在一个或多个队列保持帧以供例如处理器进一步分析的情况下,在这种队列中的帧的数目或队列的填充级别将说明该处理器有多忙碌。当使用虚拟地址时,这是由队列的写指针和读指针之间的地址差来简单确定的。
可以由任何设备或过程/处理器(比如连接到存储器的一个设备或过程/处理器)辅助完成使帧从存储器18出队。使帧从存储器18中出队使该设备/过程/处理器相应地改变该队列的读指针。
一般而言,向存储器18添加帧使得分配器16改变写指针,且使帧出队使得过程/处理器改变读指针。自然地,需要交换该信息。存在若干种方法和方案。
在一个情况下,期望不过分频繁地交换该数据,以保留DMA总线上的带宽用于数据分组交换。在该情况下,由分配器16来发起镜像或同步。每次在存储器18中写入数据分组时,分配器16可以更新写指针,从而由于不更新读指针,各个队列(的数据帧的数目或填充级别)对于分配器16看起来增长了。
自然地,可以偶尔交换已更新的写指针,但是优选地直到队列的大小超过预定限制才更新这些写指针。此时,分配器16将更新来自存储器18或过程/处理器的读指针,以获得与队列的实际大小相关的更新数据,且从而获得过程/处理器有多忙碌的更新数据。
在一个情况下,过程/处理器可以同时接收更新的写指针。这样,如果过程/处理器在已存储了附加分组且附加分组准备好用于分析/出队的信息之前清空了所有队列,则过程/处理器可能饥饿。当在分配器18中更新写指针时,可以通过在过程/处理器或存储器18中更新写指针来避免这点。然后,过程/处理器更新了队列信息,且只要数据分组存在,就保持工作。
备选地,读指针的更新也可以是更频繁的,以保持分配器16和过程/处理器更好的“得到通知”。可以在总线32不忙碌时,或例如在从上一次同步起已经过最大延迟时,执行对写/读指针的该同步。
自然地,队列或存储器18可以是循环的,且如果需要,可以将特定空间分配给队列。
自然地,如果适配器12背靠背地接收到与相同流相关的多个数据帧,请求电路28将发送若干请求,然后分配器16将在RIFO队列中相关位置上提供该若干请求。如果在RIFO队列中的每个项中识别出相关适配器12,分配器16可以识别出RIFO中与相同适配器12相关的多个相邻项,且从而仅向该适配器12回复具有一个传输的传输电路30,该一个传输基于该简单的请求不仅识别队列(地址数据),还识别要转发的分组的数目。
从存储器18经由适配器12的数据传输
自然地,可以使存储器18中一个或多个队列中存储的数据分组出队,通过总线32发送,并经由适配器12输出。如存储在存储器18中存储的数据分组的情况一样,这可以经由DMA来执行,从而,适配器12直接读取存储器18中的数据分组,在存储器18处没有例如来自处理器的干扰。
使分组出队的方案如同上述用于在存储器18中存储分组的方案:
可以经由相同适配器12输出来自存储器18中的若干队列的数据分组。这可以使用任意期望方案(比如循环、优先级或任何其他优先排序)来实现。在适配器12中,可以针对不同的流、队列、优先级等提供任意数目的Tx端口或FIFO,且可以经由单一PHY或经由不同PHY来输出来自这些Tx端口或FIFO的分组。
在一个情况下,如在存储器18中存储数据的情况相同,在存储器18中存储队列的读/写指针。以相同的方式,适配器12可以对读/写指针进行镜像处理,且只要数据看起来存在,就保持使数据从队列中出队。如上所述,镜像处理可以固定的最大时间间隔发生,在队列看起来过满或过空时发生,等等。
过程/处理器可以跟踪读和写指针,且如上所述,确定适配器12是否过于忙碌,以至于应当向另一队列和另一适配器12转发相关队列的数据分组。
在另一情况下,处理器或过程可以定义应当经由适配器12输出哪些数据分组或地址,以及可以向适配器12转发对这些地址的指示。
一种方式是让过程或处理器将这种分组复制到特定队列中,该特定队列由适配器使用过程/处理器所更新的读/写指针的特定集合来进行出队,且该特定队列被镜像到适配器12上。
另一方式关注于不复制数据分组。在该情况下,在原始队列中维护数据分组,但是可以提供另一组读/写指针,已用于使数据分组出队。事实上,如果维护队列的原始读/写指针,需要单一附加指针。附加指针指示:在队列中,过程/处理器分析到了哪里,且从而指示可以使读和写指针之间的地址中的哪个地址出队。由处理器/过程来维护该附加指针,并通过使用例如DMA来转发至适配器或由适配器读取,且相关适配器向处理器/过程或控制电路16通知何时已使地址出队。
Claims (12)
1.一种组件,包括:用于接收并存储数据分组的设备;以及多个出队处理器或过程,
所述设备包括:存储单元、控制单元以及多个数据接收和存储单元,其中:
-所述存储单元适于在其多个队列中保持多个数据分组的至少一部分,每个队列包括一定数目的存储元件,每个存储元件由地址来定义,
-每个处理器或过程适于使数据从第一组队列中出队,各个第一组中的队列是非重叠的,所述处理器/过程适于向所述控制单元转发与使数据从队列中出队相关的信息,
-每个数据接收和存储单元包括:
-用于访问或接收数据分组的装置,
-用于从所述控制单元接收用于存储所述数据分组的至少一部分的地址的装置,
-用于辅助完成在存储单元中在所接收到的地址处存储所述数据分组的至少一部分的装置,
-所述控制单元包括:
-用于确定与所述队列的填充级别相关的信息的装置,
-用于通过以下动作来选择地址的装置:
-针对接收/访问的数据分组,确定第二组队列,每个第二组队列包括来自每个第一组队列的队列,所述第二组队列中的队列是非重叠的,
-如果所确定的第二组中的当前选择的第一队列的填充级别超过预定级别,选择所确定的第二组中的第二队列,
-将所述地址选择为所述第二组的所选队列的地址,
-用于向已接收/访问了所述数据分组的接收和存储单元转发所选地址的装置,
与所选第二队列相关的过程/处理器适于:直到超过预定级别的所选第一队列为空,才处理该队列。
2.根据权利要求1所述的组件,其中,每个数据接收和存储单元还包括:用于产生与所接收/访问的数据分组相关的信息并将所产生的信息转发给控制单元的装置,
所述控制单元还包括:用于接收所产生的信息的装置;然后,所述选择装置适于还基于接收到的所产生的信息来选择所述地址。
3.根据权利要求2所述的组件,其中,所述产生装置适于:产生与接收数据分组的时间点相关的信息,作为所产生的信息的至少一部分。
4.根据权利要求1所述的组件,其中,作为一定数目的连续地址,实现每个队列,并且所述控制装置:
-适于针对每个队列,保持写指针和读指针,所述写指针标识要添加数据的下一个地址,所述读指针标识要从队列中读取/出队的下一个地址,以及
-包括以下装置:
-用于当选择了地址时,更新与所选地址相关的队列的写指针的装置,
-用于基于从处理器/过程转发来的信息,更新数据已出队的队列的读指针的装置。
5.根据权利要求4所述的组件,其中,将所述存储单元的队列的地址分为具有预定数目个物理地址的组,这些组位于非连续的位置,并且,实现队列的地址是被定义为连续地址的虚拟地址,所述控制单元还包括:用于在虚拟地址和物理地址之间进行转换的装置。
6.根据权利要求1所述的组件,其中,所述处理器包括在存储单元中存储的数据,过程/处理器适于:根据该数据,确定是否处理队列,且处理器适于:当清空队列时,改变该数据。
7.一种操作组件的方法,所述组件包括:多个出队处理器或过程;以及设备,所述设备包括:存储单元、控制单元以及多个数据接收和存储单元,所述方法包括以下步骤:
所述存储单元在其多个队列中保持多个数据分组的至少一部分,每个队列包括一定数目的存储元件,每个存储元件由地址来定义,
每个处理器或过程使数据从第一组队列中出队,各个第一组中的队列是非重叠的,所述处理器/过程向所述控制单元转发与使数据从队列中出队相关的信息,
每个数据接收和存储单元:
-访问或接收数据分组,
-从所述控制单元接收用于存储所述数据分组的至少一部分的地址,
-辅助完成在存储单元中在所接收到的地址处的存储所述数据分组的至少一部分,
所述控制单元:
-确定与所述队列的填充级别相关的信息,
-通过以下步骤选择地址:
○针对接收/访问的数据分组,确定第二组队列,每个第二组队列包括来自每个第一组队列的队列,所述第二组中的队列是非重叠的,
○如果所确定的第二组中的当前选择的第一队列的填充级别超过预定级别,选择所确定的第二组中的第二队列,
○将所述地址选择为所述第二组的所选队列的地址,
-向已接收/访问了所述数据分组的接收和存储单元转发所选地址,
所述方法还包括以下步骤:指示与第二组的所选第二队列相关的过程/处理器,直到超过预定级别的第二组的所选第一队列为空才处理该队列。
8.根据权利要求7所述的方法,其中,每个数据接收和存储单元还产生与所接收/访问的数据分组相关的信息,并将所产生的信息转发给控制单元,
所述控制单元还接收所产生的信息;所述选择地址包括:然后,还基于接收到的所产生的信息来选择所述地址。
9.根据权利要求8所述的方法,其中,所述产生与所接收/访问的数据分组相关的信息包括:产生与接收数据分组的时间点相关的信息,作为所产生信息的至少一部分。
10.根据权利要求9所述的方法,其中,作为一定数目的连续地址,实现每个队列,并且所述控制装置:
-针对每个队列,保持写指针和读指针,所述写指针标识要添加数据的下一个地址,所述读指针标识要从队列中读取/出队的下一个地址,以及
-当选择了地址时,更新与所选地址相关的队列的写指针,
-基于从处理器/过程转发来的信息,更新数据已出队的队列的读指针。
11.根据权利要求10所述的方法,其中,将所述存储单元的队列的地址分为具有预定数目个物理地址的组,这些组位于非连续的位置,并且,实现队列的地址是被定义为连续地址的虚拟地址,所述控制单元还在虚拟地址和物理地址之间进行转换。
12.根据权利要求11所述的方法,其中,所述指示步骤包括:过程/处理器根据在存储单元中存储的数据,确定是否处理队列,以及处理器/过程在清空队列时改变该数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US26678809P | 2009-12-04 | 2009-12-04 | |
US61/266,788 | 2009-12-04 | ||
PCT/EP2010/068964 WO2011067408A1 (en) | 2009-12-04 | 2010-12-06 | An apparatus and a method of receiving and storing data packets controlled by a central controller |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102754395A CN102754395A (zh) | 2012-10-24 |
CN102754395B true CN102754395B (zh) | 2015-03-04 |
Family
ID=43639962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080063130.XA Active CN102754395B (zh) | 2009-12-04 | 2010-12-06 | 由中央控制器控制的接收和存储数据分组的设备和方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US8934341B2 (zh) |
EP (1) | EP2507951B1 (zh) |
JP (1) | JP5795592B2 (zh) |
KR (1) | KR101720259B1 (zh) |
CN (1) | CN102754395B (zh) |
BR (1) | BR112012013383A2 (zh) |
DK (1) | DK2507951T5 (zh) |
WO (1) | WO2011067408A1 (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101720259B1 (ko) * | 2009-12-04 | 2017-04-10 | 나파테크 에이/에스 | 중앙 제어기에 의해 제어되는 데이터 패킷들을 수신 및 저장하는 장치 및 방법 |
US20130311609A1 (en) * | 2011-01-28 | 2013-11-21 | Napatech A/S | An apparatus and a method for receiving and forwarding data packets |
ES2650498T3 (es) | 2013-09-09 | 2018-01-18 | Intercapital Services North America Llc | Método y aparato para entrada de órdenes en un sistema de negociación electrónico |
US9374294B1 (en) | 2013-11-05 | 2016-06-21 | Cisco Technology, Inc. | On-demand learning in overlay networks |
US9502111B2 (en) | 2013-11-05 | 2016-11-22 | Cisco Technology, Inc. | Weighted equal cost multipath routing |
US9674086B2 (en) * | 2013-11-05 | 2017-06-06 | Cisco Technology, Inc. | Work conserving schedular based on ranking |
US9825857B2 (en) | 2013-11-05 | 2017-11-21 | Cisco Technology, Inc. | Method for increasing Layer-3 longest prefix match scale |
US10951522B2 (en) | 2013-11-05 | 2021-03-16 | Cisco Technology, Inc. | IP-based forwarding of bridged and routed IP packets and unicast ARP |
US9655232B2 (en) | 2013-11-05 | 2017-05-16 | Cisco Technology, Inc. | Spanning tree protocol (STP) optimization techniques |
US9686180B2 (en) | 2013-11-05 | 2017-06-20 | Cisco Technology, Inc. | Managing routing information for tunnel endpoints in overlay networks |
US10778584B2 (en) | 2013-11-05 | 2020-09-15 | Cisco Technology, Inc. | System and method for multi-path load balancing in network fabrics |
US9397946B1 (en) | 2013-11-05 | 2016-07-19 | Cisco Technology, Inc. | Forwarding to clusters of service nodes |
US9769078B2 (en) | 2013-11-05 | 2017-09-19 | Cisco Technology, Inc. | Dynamic flowlet prioritization |
US9509092B2 (en) | 2013-11-06 | 2016-11-29 | Cisco Technology, Inc. | System and apparatus for network device heat management |
US10116493B2 (en) | 2014-11-21 | 2018-10-30 | Cisco Technology, Inc. | Recovering from virtual port channel peer failure |
US10142163B2 (en) | 2016-03-07 | 2018-11-27 | Cisco Technology, Inc | BFD over VxLAN on vPC uplinks |
US10333828B2 (en) | 2016-05-31 | 2019-06-25 | Cisco Technology, Inc. | Bidirectional multicasting over virtual port channel |
US11509501B2 (en) | 2016-07-20 | 2022-11-22 | Cisco Technology, Inc. | Automatic port verification and policy application for rogue devices |
US10193750B2 (en) | 2016-09-07 | 2019-01-29 | Cisco Technology, Inc. | Managing virtual port channel switch peers from software-defined network controller |
CN108108148B (zh) * | 2016-11-24 | 2021-11-16 | 舒尔电子(苏州)有限公司 | 一种数据处理方法和装置 |
US10547509B2 (en) | 2017-06-19 | 2020-01-28 | Cisco Technology, Inc. | Validation of a virtual port channel (VPC) endpoint in the network fabric |
CN108259369B (zh) * | 2018-01-26 | 2022-04-05 | 迈普通信技术股份有限公司 | 一种数据报文的转发方法及装置 |
US20220043588A1 (en) * | 2020-08-06 | 2022-02-10 | Micron Technology, Inc. | Localized memory traffic control for high-speed memory devices |
US11789859B1 (en) | 2021-09-30 | 2023-10-17 | Amazon Technologies, Inc. | Address generation for page collision prevention |
US11748253B1 (en) * | 2021-09-30 | 2023-09-05 | Amazon Technologies, Inc. | Address generation for page collision prevention in memory regions |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1786917A (zh) * | 2004-12-07 | 2006-06-14 | 国际商业机器公司 | 在多处理器数据处理系统中借入线程作为负载平衡的形式 |
CN1787588A (zh) * | 2005-12-01 | 2006-06-14 | 大唐软件技术有限责任公司 | 多进程消息处理方法以及多进程话单处理的方法 |
CN101014002A (zh) * | 2006-12-12 | 2007-08-08 | 华为技术有限公司 | 集群消息传送方法及分布式集群系统 |
CN101069170A (zh) * | 2004-09-10 | 2007-11-07 | 卡威姆网络有限公司 | 数据包队列、调度和排序 |
CN101547153A (zh) * | 2008-03-26 | 2009-09-30 | 株式会社东芝 | 数据接收设备和数据接收方法 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4025903A (en) | 1973-09-10 | 1977-05-24 | Computer Automation, Inc. | Automatic modular memory address allocation system |
FR2443735A1 (fr) | 1978-12-06 | 1980-07-04 | Cii Honeywell Bull | Dispositif de controle automatique de la capacite memoire mise en oeuvre dans les systemes de traitements de l'information |
US6141323A (en) | 1996-06-03 | 2000-10-31 | Whittaker Corporation | Closed loop congestion control using a queue measurement system |
US6430191B1 (en) | 1997-06-30 | 2002-08-06 | Cisco Technology, Inc. | Multi-stage queuing discipline |
JP3666258B2 (ja) | 1997-08-28 | 2005-06-29 | セイコーエプソン株式会社 | プリンタ |
US6735679B1 (en) | 1998-07-08 | 2004-05-11 | Broadcom Corporation | Apparatus and method for optimizing access to memory |
US6671747B1 (en) | 2000-08-03 | 2003-12-30 | Apple Computer, Inc. | System, apparatus, method, and computer program for execution-order preserving uncached write combine operation |
US6990598B2 (en) | 2001-03-21 | 2006-01-24 | Gallitzin Allegheny Llc | Low power reconfigurable systems and methods |
US6594234B1 (en) | 2001-05-31 | 2003-07-15 | Fujitsu Network Communications, Inc. | System and method for scheduling traffic for different classes of service |
US7787370B1 (en) | 2001-09-06 | 2010-08-31 | Nortel Networks Limited | Technique for adaptively load balancing connections in multi-link trunks |
US20030056073A1 (en) | 2001-09-18 | 2003-03-20 | Terachip, Inc. | Queue management method and system for a shared memory switch |
US6967951B2 (en) * | 2002-01-11 | 2005-11-22 | Internet Machines Corp. | System for reordering sequenced based packets in a switching network |
AU2002237171A1 (en) | 2002-02-22 | 2003-09-09 | Linkair Communications, Inc. | A method of priority control in wireless packet data communications |
US7463585B2 (en) | 2002-05-16 | 2008-12-09 | Broadcom Corporation | System, method, and apparatus for load-balancing to a plurality of ports |
US7289442B1 (en) | 2002-07-03 | 2007-10-30 | Netlogic Microsystems, Inc | Method and apparatus for terminating selected traffic flows |
US7711006B2 (en) * | 2003-08-15 | 2010-05-04 | Napatech A/S | Data merge unit, a method of producing an interleaved data stream, a network analyser and a method of analysing a network |
US7680139B1 (en) | 2004-03-25 | 2010-03-16 | Verizon Patent And Licensing Inc. | Systems and methods for queue management in packet-switched networks |
US7359383B2 (en) | 2004-03-29 | 2008-04-15 | Hewlett-Packard Development Company, L.P. | Load balancing with mesh tagging |
JP2006189937A (ja) | 2004-12-28 | 2006-07-20 | Toshiba Corp | 受信装置、送受信装置、受信方法及び送受信方法 |
US7623455B2 (en) | 2005-04-02 | 2009-11-24 | Cisco Technology, Inc. | Method and apparatus for dynamic load balancing over a network link bundle |
EP1804159B1 (en) | 2005-12-30 | 2009-12-09 | STMicroelectronics Belgium N.V. | Serial in random out memory |
JP4878185B2 (ja) | 2006-03-17 | 2012-02-15 | 株式会社リコー | データ通信回路および調停方法 |
US20080120480A1 (en) | 2006-11-22 | 2008-05-22 | International Business Machines Corporation | Method and System For Preserving Critical Storage Contents Across A System Restart |
KR100887417B1 (ko) | 2007-04-11 | 2009-03-06 | 삼성전자주식회사 | 멀티 프로세서 시스템에서 불휘발성 메모리의 공유적사용을 제공하기 위한 멀티패쓰 억세스블 반도체 메모리장치 |
JP2008287600A (ja) | 2007-05-18 | 2008-11-27 | Seiko Epson Corp | ホスト装置、情報処理装置、電子機器、プログラム及びリード制御方法 |
US8799620B2 (en) | 2007-06-01 | 2014-08-05 | Intel Corporation | Linear to physical address translation with support for page attributes |
US8078928B2 (en) | 2007-10-12 | 2011-12-13 | Oracle America, Inc. | System and method for verifying the transmit path of an input/output component |
WO2009093299A1 (ja) | 2008-01-21 | 2009-07-30 | Fujitsu Limited | パケット処理装置およびパケット処理プログラム |
US8356125B1 (en) * | 2008-05-15 | 2013-01-15 | Xilinx, Inc. | Method and apparatus for providing a channelized buffer |
WO2010076649A2 (en) | 2008-12-31 | 2010-07-08 | Transwitch India Pvt. Ltd. | Packet processing system on chip device |
KR101720259B1 (ko) | 2009-12-04 | 2017-04-10 | 나파테크 에이/에스 | 중앙 제어기에 의해 제어되는 데이터 패킷들을 수신 및 저장하는 장치 및 방법 |
-
2010
- 2010-12-06 KR KR1020127016756A patent/KR101720259B1/ko active IP Right Grant
- 2010-12-06 BR BR112012013383A patent/BR112012013383A2/pt not_active IP Right Cessation
- 2010-12-06 WO PCT/EP2010/068964 patent/WO2011067408A1/en active Application Filing
- 2010-12-06 CN CN201080063130.XA patent/CN102754395B/zh active Active
- 2010-12-06 JP JP2012541530A patent/JP5795592B2/ja active Active
- 2010-12-06 DK DK10795649.2T patent/DK2507951T5/da active
- 2010-12-06 US US13/513,522 patent/US8934341B2/en active Active
- 2010-12-06 EP EP10795649.2A patent/EP2507951B1/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101069170A (zh) * | 2004-09-10 | 2007-11-07 | 卡威姆网络有限公司 | 数据包队列、调度和排序 |
CN1786917A (zh) * | 2004-12-07 | 2006-06-14 | 国际商业机器公司 | 在多处理器数据处理系统中借入线程作为负载平衡的形式 |
CN1787588A (zh) * | 2005-12-01 | 2006-06-14 | 大唐软件技术有限责任公司 | 多进程消息处理方法以及多进程话单处理的方法 |
CN101014002A (zh) * | 2006-12-12 | 2007-08-08 | 华为技术有限公司 | 集群消息传送方法及分布式集群系统 |
CN101547153A (zh) * | 2008-03-26 | 2009-09-30 | 株式会社东芝 | 数据接收设备和数据接收方法 |
Also Published As
Publication number | Publication date |
---|---|
US20120300787A1 (en) | 2012-11-29 |
CN102754395A (zh) | 2012-10-24 |
JP2013513272A (ja) | 2013-04-18 |
EP2507951B1 (en) | 2013-08-14 |
WO2011067408A1 (en) | 2011-06-09 |
US8934341B2 (en) | 2015-01-13 |
KR20120102732A (ko) | 2012-09-18 |
JP5795592B2 (ja) | 2015-10-14 |
DK2507951T3 (da) | 2013-11-25 |
EP2507951A1 (en) | 2012-10-10 |
KR101720259B1 (ko) | 2017-04-10 |
DK2507951T5 (da) | 2013-12-02 |
BR112012013383A2 (pt) | 2016-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102754395B (zh) | 由中央控制器控制的接收和存储数据分组的设备和方法 | |
CN102763381B (zh) | 在通过控制对队列填充程度进行更新来节省带宽的同时接收并存储数据的组件和方法 | |
CN102742220B (zh) | 使用加时间戳和中央控制器由多个适配器对数据帧进行的分布式处理 | |
EP2668753B1 (en) | An apparatus and a method for receiving and forwarding data packets | |
JP3168235B2 (ja) | 高速パケット交換装置およびデータパケットの経路指定方法 | |
JP2000503828A (ja) | データネットワーク上でデータパケットをスイッチングする方法および装置 | |
WO2014115207A1 (ja) | バスインタフェース装置、中継装置、およびそれらを備えたバスシステム | |
WO2012163395A1 (en) | An apparatus and a method of parallel receipt, forwarding and time stamping data packets using synchronized clocks | |
CN102696201B (zh) | 对读取和排序数据分组的多个分析装置进行操作的设备、组件和方法 | |
US6628669B1 (en) | LAN relaying/switching apparatus | |
WO2011067404A1 (en) | An apparatus and a method of parallel receipt, forwarding and time stamping data packets using synchronized clocks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |