CN102742220A - 使用加时间戳和中央控制器由多个适配器对数据帧进行的分布式处理 - Google Patents

使用加时间戳和中央控制器由多个适配器对数据帧进行的分布式处理 Download PDF

Info

Publication number
CN102742220A
CN102742220A CN201080062899XA CN201080062899A CN102742220A CN 102742220 A CN102742220 A CN 102742220A CN 201080062899X A CN201080062899X A CN 201080062899XA CN 201080062899 A CN201080062899 A CN 201080062899A CN 102742220 A CN102742220 A CN 102742220A
Authority
CN
China
Prior art keywords
address
formation
data
packet
information
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
CN201080062899XA
Other languages
English (en)
Other versions
CN102742220B (zh
Inventor
彼得·克罗格
彼得·埃克奈尔
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.)
Napatech AS
Original Assignee
Napatech AS
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 Napatech AS filed Critical Napatech AS
Publication of CN102742220A publication Critical patent/CN102742220A/zh
Application granted granted Critical
Publication of CN102742220B publication Critical patent/CN102742220B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/10Mapping addresses of different types
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

本发明提供了设备和方法,其中,多个物理上分离的数据接收/分析单元接收数据分组并对其加时间戳。控制单元至少基于该时间戳来确定每个数据分组的存储地址,其中,该控制单元直到在接收时间之后经过预定时间延迟才执行对地址的确定。

Description

使用加时间戳和中央控制器由多个适配器对数据帧进行的分布式处理
技术领域
本发明涉及辅助完成并行接收若干数据分组,同时确保其集中式地址产生的设备。
发明内容
在第一方面,本发明涉及一种用于接收和转发数据分组的设备,所述设备包括控制单元和多个物理上分离的数据接收和转发单元,每个数据接收和转发单元包括:
-用于接收或访问数据分组的装置,
-用于确定接收/访问所述数据分组的时间点的装置,所述确定装置包括时钟装置,所有确定装置的时钟装置是同步的,
-用于输出包括所述时间点在内的第一信息的装置,
-用于接收地址的装置,所述地址用于存储所述数据分组的至少一部分;以及
-用于辅助完成在所述地址处存储所述数据分组的至少一部分的装置,
所述控制单元包括:
-用于接收所述第一信息并导出接收/访问所述数据分组的时间点的装置,
-与所述确定装置的时钟装置同步的时钟,以及
用于针对接收到的每一条第一信息,在所导出的时间点加上预定时间延迟所在的时间点或之后的时间点,确定地址,并将所述地址返回给相关的数据接收和转发单元的接收装置的装置。
在本上下文中,由若干分离单元来形成所述设备,比如,所述控制单元与所述接收/转发单元分离,但是它们互联以交换数据。该交换可以在任何数据传输协议(比如TCP、以太网、蓝牙等)下进行,且使用任何类型的数据传输(有线或无线)。
此外,将所述接收/转发单元提供为物理上分离的多块硬件,比如用分离的PCB、处理器、FPGA等来实现各块。在这方面,物理上分离意味着单元是可互联,从而能够通信(通过有线或无线),但是连接可被打断,且可以替换或添加/移除接收/转发单元,以改变装置的能力。自然地,一个PCB/处理器/FPGA可以形成多个接收/转发单元,其中,可以替换/移除/添加这样的接收/转发单元组。控制单元可以与接收/转发单元分离,或者可以形成一个或多个接收/转发单元的一部分。
自然地,可以将接收/转发单元的各个装置获得或成形为单独的单元,比如(软件控制的或硬连线的)处理器、FPGA、专用电路、ASICS等。备选地,可以将多个这种装置组合为单个这种处理器等等。
自然地,可以使用任意数目的接收/转发单元。当使用多个接收/转发单元时,可以执行并行接收和存储。可以使用任何数目的接收/转发单元,比如2、3、4、5、6、7、8、10、15、20或更多个。如下面进一步描述的,所有这些接收/转发单元可以是相同或接近相同的,或者可以将它们具体实现或创建为具有不同操作的不同电路。每个接收/转发单元可以具有控制单元,但是仅需要一个。在另一情况下,仅一个接收/转发单元包括控制单元,但是其其它方面与其余的接收/转发单元相同。
访问/接收装置可以实际接收和/或存储数据或数据分组。备选地,可以在另一位置处或在与该接收/转发单元通信的设备中接收或存储数据分组,从而通过读取同时存储在另一设备中的数据来远程访问数据分组的数据。由于远程访问数据分组,后者通常将提供较慢的处理。
即使没那么优选,接收的地址也可以不是要存储数据分组的存储单元中的实际地址。备选地,可以接收根据其可以导出该地址的信息。
所述接收和转发单元的确定装置均包括时钟装置,所有确定装置的时钟装置是同步的。在该方面,“同步”将意味着:所有时钟装置同时将在预定容限内输出相同时间点。从而,不同时钟装置的时间点是可比的。可以通过在时钟装置和/或控制单元之间交换时钟信号来确保该同步。在该方面,“容限”可以在1、2、3、5、10或更多时钟周期内,或者可以在由时钟装置定义的定时单位内。
在一个实施例中,可以简单地将全局时钟输出到所有确定装置,然后时钟装置接收该时钟。备选地,所述确定装置均包括用于产生时钟信号的装置。从而,接着使用用于同步该时钟信号的策略。
一般而言,可以将时间点表示为时间和日期,或者可以表示为数字,比如以等距时间点递增/递减的数字。自然地,如果需要,该数目可以环回。
所述辅助完成装置可以直接在例如存储单元中存储数据分组的至少一部分,比如通过数据连接,或者如果存储在另一位置,其可以辅助完成存储数据分组。然后,可以向该另一位置传输该地址,然后该另一位置处理对数据分组的存储。
自然地,所述接收/访问装置、所述转发装置和所述辅助完成装置可以包括:用于根据需要来处理该操作并传输数据所需的驱动器、连接器等等。
可以由任何类型的(硬连线或软件控制的)处理器来形成所述控制单元,或者所述控制单元可以是专用电路。所述控制单元的操作是确定各个数据分组的地址。这样,如果需要,则可以获得数据分组的排序。
至少根据时间点来确定地址,且其目的可以是按照接收顺序来拥有数据分组或其一部分。在另一情况下,所述第一信息包括与数据分组相关的附加信息(下面将进一步描述),以确定数据分组的流/类型等。从而,不仅时间点可以用于确定地址,特定流或类型的数据分组也可以一起存储。
然而,直到在接收/访问时间点之后经过预定时间延迟才执行对地址的实际确定,以确保更晚接收到的第一信息不涉及实际比相关数据分组更早接收到的数据分组或至少提高其概率。从而,已收集了更多知识,从而提高了提供正确地址的概率。
从而,所述控制单元还具有要么作为全局时钟信号的接收机,要么作为本地时钟信号提供器的时钟装置。自然地,一些控制器单元以及接收和转发单元可以接收全局时钟,且其他控制器单元以及接收和转发单元可以具有接着与全局时钟同步的本地时钟信号提供器。
与较早接收到的数据分组相关的第一信息不在较晚时间点到达控制单元的原因可以是:处理延迟(忙碌的数据接收和转发单元)或在该数据接收和转发单元以及该控制单元之间的通信的延迟。该预定延迟可以是任意数目的时钟周期,比如1、2、3、4、5、6、7、8、19、15、29、39、40或更多的时钟周期,或任意时间周期,比如100ns、200ns、300ns、500ns、750ns、1ms、5ms、10ms或更多。
控制单元将针对每条第一信息且从而针对每个数据分组,返回地址。
在该方面,数据分组可以是要在网络、数据线缆、数据总线、干线等上发送的或要由网络、数据线缆、数据总线、干线等传输的任何类型的数据单元。一般而言,数据单元符合一个或多个数据标准(比如以太网标准),在以太网标准这一统称下,存在若干不同标准或数据分组类型,比如UDP和TCP数据分组。数据分组通常具有若干不同信息项或类型,比如地址数据、有效载荷等等,它们各自位于数据分组中已经定义的或已知的位置上。这种位置和类型对于不同的数据分组类型通常将不同,但是在分析中可以导出、改变和/或使用各个数据项(比如地址数据和/或有效载荷)之后,通常可以根据实际数据分组来确定数据分组类型,且从而确定其各个内容的位置。可以根据数据分组直接导出类型或标准,比如当分组的特定数据项标识类型/标准时,或者可以根据从数据分组导出的数据来导出类型或标准,比如基于对数据分组的数据项的类型和位置进行识别以及后续对可以在这样的位置上发现这样的数据的数据分组的类型或标准进行确定。
可以存储数据分组的任何部分。如果不再需要输出数据分组,则可以例如删除其中的寻址信息,以不占用空间。
可以对数据分组排序,且如果这样做,可以按多种方式并出于多种理由对数据分组排序。通常,在计算机之间的数据交换是文件传输、TCP传输、VoIP等,其中,各个分组的顺序是重要的。通常,这种传输被称为流。
数据分组的流一般是从单一发射机向一个或多个接收机发送的数据分组序列。这些数据分组涉及例如以较小部分发送的作为分组的有效载荷的单一文件等。此时,发射机和接收机、或任何中间网络单元通常将具有也在分组中表示的地址。此外,取决于各个数据分组标准,其他流识别信息可以存在于数据分组中。
从而,可以基于例如地址和/或流识别信息来识别流,由此如果使用一致,可以导出相同的信息,且任何后续过程可以仅根据该信息来识别流。然后,可以在分别的队列中存储每个流的分组。
在另一情况下,数据分组中可以具有确定其顺序的信息,比如序列号。从而,该信息可以用于对分组排序。
本发明的第二方面涉及一种组件(assembly),其包括根据第一方面的设备和存储器,所述存储器包括可以存储数据的多个地址,所述辅助完成装置适于在所述存储器中接收到的地址处存储所述数据分组的至少一部分。
自然地,所述存储单元可以是任何形式的存储单元,比如单片存储单元或由在空间上分离的若干存储单元构成的一个存储单元。常用的存储技术基于硬盘、软盘、RAM、ROM、PROM、EPROM、EEPROM、闪存、存储卡、CD-ROM、DVD、存储卡等。
如果提供分离的存储单元,所述地址将描述实际存储单元的标识及其中的“本地地址”。
数据分组可以具有不同的大小,然后可以占用不同数目的地址。
优选地,在存储器中将多个队列定义为分离的或不重叠的地址组,所述控制单元的确定装置适于根据所述第一信息来确定要将相关数据分组添加至的队列,并从相关队列的地址组中选择地址。
在该方面,当没有地址是2个组或2个队列的一部分时,地址组是不重叠的。
优选地,队列包括多个连续地址,但这不是必要条件。
优选地,所述控制单元的确定装置适于在所确定的队列中确定地址,使得按照接收/访问的顺序在所述队列中存储数据分组。从而,预定的时间延迟用于确保与可能发生的任何延迟无关地按照接收/访问顺序来存储数据分组或至少提高其概率。
特别让人感兴趣的实施例是还包括用于从存储器中读取数据或使数据从存储器中出队的装置,所述读取/出队装置包括用于输出第二信息的装置,所述第二信息与数据已被读取/移出队列或将被读取/移出队列的存储装置的一个或多个地址相关。从而,当确定了地址时,将数据添加到队列发生,且在读取/出队时,移除数据。基于该信息,可以确定并更新队列的内容。
在一个实施例中,控制单元适于:针对每个队列,保持写指针和读指针,所述写指针标识要添加数据的下一个地址或添加了数据的上一个地址,所述读指针标识要从队列中读取/出队的下一个地址或已读取/出队的上一个地址。
所述控制装置适于:
-当确定了地址时,更新与所确定地址相关的队列的写指针,
-基于所接收的第二信息(比如,根据上述第二信息),更新已从中移出数据的队列的读指针,以及
-还基于所述队列的读指针和写指针来确定所述地址。
在一个情况下,还可以基于对队列的填充级别的确定,来基于所述读/写指针确定所述地址。明显地,可以根据队列的读和写指针来确定队列的数据量。在本上下文中,填充级别可以涉及在队列中存在的数据分组的数目或由队列占用的可寻址单元的数目。当将该数目/量与最大数目/量相比时,可以将该填充级别表示为数据/分组/地址的量/数目或表示为百分比。可以针对每个队列、队列组或针对所有队列来确定该填充级别。
在优选实施例中,所述控制装置适于:当队列的填充级别超过预定值时,指示所述读取/出队装置的输出装置输出第二信息,所述第二信息与已被读取或将被读取的地址相关。
在该情况下,当确定了地址时,可能希望知道数据分组或至少其一部分的大小,因为该大小将确定其占用的可寻址单元的数目。从而下一个数据分组的地址将取决于此。
当更新读指针时,可能希望第二信息标识所有已释放的可寻址单元的地址,或仅标识在要读取的下一个数据分组或新释放的地址之间的边界处的地址。该地址可以是下一个数据分组的第一地址或已释放的地址中的最后一个地址。
在该情况下,不过于频繁地输出第二信息,从而不过于频繁地输出读指针。该数据传输可以占用数据路径上的带宽,经由该数据路径将数据存储在存储装置中。
在存储期间,由控制单元来更新写指针,且当不更新读指针时,队列从而看起来增长。自然地,可以经常向读取/出队装置转发写指针,以确保这些写指针不变为空闲,如果队列的已更新的读指针和未更新的写指针一起指示队列为空,则将是这种情况。从而,所述控制装置可以:当确定了地址时,向所述读取/出队装置输出与更新后的写指针相关的信息。从而,可以完全更新所述读取/出队装置。
最优选的是:所述辅助完成装置适于向所述控制单元通知何时存储了所述数据分组的至少一部分,且所述控制单元适于:当已被所述辅助完成装置通知时,向所述读取/出队装置输出与更新后的写指针相关的信息。从而,仅在已存储了数据时,才更新所述写指针。此时,避免了:所述读取/出队装置对具有更新后的写指针但尚未接收到数据的地址进行读取/出队。
当一个或多个队列或所有队列或全部存储器的填充级别超过限制时,更新所述读指针,使得所述队列的实际填充级别对于所述控制单元可用。
优选地,每次存储了数据分组(或其一部分)时,更新写指针,且通知所述读取/出队装置。然而,由于为了将数据存储/读取/出队,优选地保留了在所述存储装置和所述数据接收/转发单元之间的带宽,因此每次保存数据分组时可能不希望转发更新后的写指针,而希望(通过在更新读取/出队装置之前,多次更新本地写指针)将这种信息加以蓄积,且例如在去往/来自所述存储装置的带宽要求允许发送时,发送该更新。然而,可以确定:必须在从上一次更新起已经过最大时间限制之前发送更新。
优选地,将存储队列的地址分配为连续地址。这样,通过简单地将读和写指针彼此相减,来确定队列中当前占用的地址数目,从而容易地确定填充级别等。
然而,提供大量连续地址在现实系统中可能是成问题的。在标准的存储系统中,分配最大大小例如4MB的块或段。在段/块中,地址是连续的,但是由于段/块可以在存储器中随机分配,因此全部地址可以不是连续的。
在这种情况下,将所述存储单元的队列的地址分为具有预定数目个物理地址的组,这些组位于非连续的位置。在该方面,“非连续”意味着在存储器空间中,这些组不是相邻位置的(具有跨组边界的连续地址)。此时,实现队列的地址优选地是被定义为连续地址的虚拟地址,所述控制单元还包括用于在虚拟地址和物理地址之间进行转换的装置。
从而,可以分配任何数目的连续虚拟地址,然后将虚拟地址转换为实际的物理地址。
获得此目的的一种方式如下:所述存储单元具有若干可分配段/块,每个物理地址组定义了可分配块/段之一中的地址,可用第一数目个比特的地址来识别每个块/段,可使用第二数目个比特来寻址块/段中的所有地址,物理地址具有与第一数目个比特和第二数目个比特之和相对应的数目个比特,虚拟地址均包括第一部分和第二部分,所述第一部分至少具有所述第一数目个比特,所述第二部分至少具有所述第二数目个比特,其中,所述转换装置适于将所述虚拟地址的第一部分转换为第三部分,所述第三部分具有所述第一数目个比特,并标识已分配的块/段,以及产生所述物理地址,作为具有所述第三部分和所述第一部分的地址。
在优选实施例中,所述确定装置适于通过以下步骤来选择地址:
-针对接收/访问的数据分组,比如根据第一信息,确定第二队列组,每个第二队列组包括来自每个第一队列组的一个队列,所述第二队列组的队列是不重叠的,
-如果所确定的第二组的当前选择的第一队列的填充级别超过预定级别,识别并选择所确定的第二组的第二队列,
-选择所述地址,作为所识别的第二队列的地址,
所述组件还包括:用于指示与所识别并选择的第二队列相关的所述读取/出队装置直到具有超过预定级别的第一队列为空才处理该队列的装置。
在该实施例中,可以获得在过程/处理器之间的负载平衡,同时维持任何第二组中的分组的处理/出队的排序。
特别在出队和/或分析/处理数据分组时所存储的数据分组(或至少其一部分)的排序很重要时,一旦读取/出队装置已开始使数据分组出队/处理数据分组,难以向另一读取/出队装置分配这种数据分组。使用本实施例,将每个这样的数据分组的组(通常是流)分配给第二队列组,每个第二队列组具有由分离的读取/出队装置来出队/处理的分离队列。从而,如果当前存储数据分组的且由第一读取/出队装置出队的队列变得过长,即,第一读取/出队装置过于忙碌,则判定从相同的第二组中识别由第二读取/出队装置出队的另一队列,但是在第一读取/出队装置将所有数据分组从相关第二组中的其队列中出队之前,不允许第二读取/出队装置使数据分组出队。这样,在读取/出队装置之间维持了数据分组的出队排序。
在第三方面中,本发明涉及根据第一方面来操作设备的方法,所述方法包括:
初始时,同步所有确定装置的时钟装置,
随后:
每个数据接收和转发单元:
-接收或访问数据分组,
-确定接收/访问所述数据分组的时间点,所述确定步骤包括:从所述数据接收和转发单元的时钟装置接收接收时间,
-输出包括所述时间点的第一信息,
-接收用于存储所述数据分组的至少一部分的地址,以及
-辅助完成在所述地址处存储所述数据分组的至少一部分,以及
所述控制单元:
-接收所述第一信息,并导出接收/访问所述数据分组的时间,以及
针对接收到的每条第一信息,在所述接收/访问时间点加上预定时间延迟所在的时间点或之后的时间点,确定地址,并将所述地址返回给相关数据接收和转发单元的接收装置。
如上所述,对数据分组的访问可以不要求在设备中对其接收,而可以是在与该设备通信的远程单元处接收和/或存储时访问该数据分组。
该同步步骤可以是任何所需同步。全局时钟可以是分布式的,和/或读取/转发单元具有分离的时钟,其中,同步可以是将所有其他时钟与一个读取/转发单元的时钟、控制单元的时钟信号、或全局时钟同步。
在一个实施例中,所述辅助完成步骤包括:在包括多个地址的存储器中在接收到的地址处存储所述数据分组的至少一部分,在所述多个地址处可以存储数据。该存储优选地作为DMA通信来处理。
然后,可以在存储器中将多个队列定义为分离或不重叠的地址组,所述确定步骤包括:根据所述第一信息来确定要添加相关数据分组的队列,并从相关队列的地址组中选择地址。
优选地,确定所述地址的步骤包括:确定地址,使得在一个或多个队列中,按照对数据分组的接收/访问顺序来存储所述数据分组的至少一部分。
在一个情况下,所述方法还包括从所述存储器中读取数据或使数据从存储器中出队的步骤,所述读取步骤包括:输出第二信息,所述第二信息与数据已被读取/移出队列或将被读取/移出队列的存储装置的一个或多个地址相关。
在优选实施例中,所述控制单元针对每个队列保持写指针和读指针,所述写指针标识要添加数据的下一个地址或添加了数据的上一个地址,以及所述读指针标识要从队列中读取/出队的下一个地址或已读取/出队的上一个地址。
所述控制装置:
-在确定了地址时,更新与所确定地址相关的队列的写指针,
-基于所接收的第二信息(比如,根据上述第二信息),更新已从中移出数据的队列的读指针,以及
-还基于所述队列的读和写指针,确定所述地址。
如上所述,还可以基于所述队列的填充级别来执行该确定。
在一个情况下,当队列的填充级别超过预定值时,所述控制装置指示读取/出队装置输出与数据已被读取或将被读取的地址相关的第二信息。
然后,所述确定步骤可以包括:向所述读取/出队装置输出与更新后的写指针相关的信息。
在一个情况下,确定步骤包括:当确定了地址时,向所述读取/出队装置输出与更新后的写指针相关的信息。然而优选地,所述辅助完成步骤包括:向所述控制单元通知何时存储了所述数据分组的至少一部分,且其中,当已被所述方便装置通知时,所述控制单元向所述读取/出队装置输出与更新后的写指针相关的信息。从而,直到已在所确定的地址中存储了数据才更新写指针。
在一个实施例中,将所述存储器的队列的地址分为具有预定数目个物理地址的组,这些组位于非连续的位置,并且其中,实现队列的地址优选地是被定义为连续地址的虚拟地址,所述确定步骤还包括:在虚拟地址和物理地址之间进行转换。
附图说明
下面,将参照附图来描述本发明的优选实施例,在附图中:
-图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将相关写指针增加与帧的大小相对应的值。
由于分配器16向适配器12返回地址,然后适配器12以其自己的步调在其中存储数据分组这一事实,即使存储了数据,也可以不总是更新写指针。
当适配器12已在存储器18中存储了数据分组时,其将相应通知分配器16。然而,如果要将分组X紧挨在分组Y之前(较低地址)存储,但是更快速地存储分组Y,则分配器18将意识到这点,且从而直到也存储了数据分组X才更新写指针,这是因为此时队列中存在“洞”。当已存储了数据分组X时,可以将该队列的写指针更新到数据分组Y之后的第一地址。
在一个或多个队列保持帧以供例如处理器进一步分析的情况下,在这种队列中的帧的数目或队列的填充级别将说明该处理器有多忙碌。当使用虚拟地址时,这是由队列的写指针和读指针之间的地址差来简单确定的。
可以由任何设备或过程/处理器(比如连接到存储器的一个设备或过程/处理器)辅助完成使帧从存储器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 (20)

1.一种用于接收和转发数据分组的设备,所述设备包括控制单元和多个物理上分离的数据接收和转发单元,每个数据接收和转发单元包括:
-用于接收或访问数据分组的装置,
-用于确定接收/访问所述数据分组的时间点的装置,所述确定装置包括时钟装置,所有确定装置的时钟装置是同步的,
-用于输出包括所述时间点在内的第一信息的装置,
-用于接收地址的装置,所述地址用于存储所述数据分组的至少一部分;以及
-用于辅助完成在所述地址处存储所述数据分组的至少一部分的装置,
所述控制单元包括:
-用于接收所述第一信息并导出接收/访问所述数据分组的时间点的装置,
-与所述确定装置的时钟装置同步的时钟,以及
-用于针对接收到的每一条第一信息,在所导出的时间点加上预定时间延迟所在的时间点或之后的时间点,确定地址,并将所述地址返回给相关的数据接收和转发单元的接收装置的装置。
2.一种组件,包括:根据权利要求1所述的设备以及存储器,所述存储器包括能够存储数据的多个地址,所述辅助完成装置适于在所述存储器中在所接收到的地址处存储所述数据分组的至少一部分。
3.根据权利要求2所述的组件,其中,作为分离的地址组,在存储器中定义多个队列,所述控制单元的确定装置适于:根据所述第一信息,确定要添加相关数据分组的队列,并从相关队列的地址组中选择地址。
4.根据权利要求3所述的组件,其中,所述控制单元的确定装置适于:在所确定的队列中确定地址,使得按照接收/访问的顺序在所述队列中存储数据分组。
5.根据权利要求3或4所述的组件,所述组件还包括用于从存储器中读取数据或使数据从存储器中出队的装置,所述读取/出队装置包括用于输出第二信息的装置,所述第二信息与数据已被读取/出队的存储装置的一个或多个地址相关。
6.根据权利要求4或5所述的组件,其中,所述控制单元适于:针对每个队列,保持写指针和读指针,所述写指针标识要添加数据的下一个地址,所述读指针标识要从队列中读取/出队的下一个地址,
所述控制装置适于:
-当确定了地址时,更新与所确定的地址相关的队列的写指针,
-基于所接收的第二信息,更新数据已出队的队列的读指针,
-还基于所述队列的读指针和写指针,确定所述地址。
7.根据权利要求6所述的组件,其中,所述控制装置适于:当队列的填充级别超过预定值时,指示所述读取/出队装置的输出装置输出与数据已被读取的地址相关的第二信息。
8.根据权利要求5至7中任一项所述的组件,其中,所述控制装置适于:当确定了地址时,向所述读取/出队装置输出与更新后的写指针相关的信息。
9.根据权利要求5至8中任一项所述的组件,其中,所述辅助完成装置适于向所述控制单元通知何时存储了所述数据分组的至少一部分,且所述控制单元适于:当已被所述辅助完成装置通知时,向所述读取/出队装置输出与更新后的写指针相关的信息。
10.根据权利要求3至9中任一项所述的组件,其中,将所述存储器的队列的地址分为具有预定数目个物理地址的组,这些组位于非连续的位置,并且实现队列的地址是被定义为连续地址的虚拟地址,所述控制装置还包括:用于在虚拟地址和物理地址之间进行转换的装置。
11.一种操作根据权利要求1所述的设备的方法,所述方法包括:
初始时,同步所有确定装置的时钟装置,
随后:
每个数据接收和转发单元:
-接收或访问数据分组,
-确定接收/访问所述数据分组的时间点,所述确定步骤包括:从所述数据接收和转发单元的时钟装置接收接收时间,
-输出包括所述时间点在内的第一信息,
-接收用于存储所述数据分组的至少一部分的地址,以及
-辅助完成在所述地址处存储所述数据分组的至少一部分,以及
所述控制单元:
-接收所述第一信息,并导出接收/访问所述数据分组的时间,以及
-针对接收到的每条第一信息,在所述接收/访问时间点加上预定时间延迟所在的时间点或之后的时间点,确定地址,并将所述地址返回给相关数据接收和转发单元的接收装置。
12.根据权利要求11所述的方法,其中,所述辅助完成步骤包括:在存储器中在所接收到的地址处存储所述数据分组的至少一部分,所述存储器包括能够存储数据的多个地址。
13.根据权利要求12所述的方法,其中,作为分离的地址组,在存储器中定义多个队列,所述确定步骤包括:根据所述第一信息,确定要添加相关数据分组的队列,并从相关队列的地址组中选择地址。
14.根据权利要求13所述的方法,其中,确定所述地址的步骤包括:确定地址,使得在一个或多个队列中,按照对数据分组的至少一部分的接收/访问顺序来存储所述数据分组的所述至少一部分。
15.根据权利要求12或13所述的方法,还包括:从所述存储器中读取数据或使数据从存储器中出队的步骤,所述读取步骤包括:输出第二信息,所述第二信息与数据已被读取/出队的存储装置的一个或多个地址相关。
16.根据权利要求13或15所述的方法,其中,所述控制单元针对每个队列保持写指针和读指针,所述写指针标识要添加数据的下一个地址,以及所述读指针标识要从队列中读取/出队的下一个地址,
所述控制装置:
-在确定了地址时,更新与所确定的地址相关的队列的写指针,
-基于所接收的第二信息,更新数据已出队的队列的读指针,以及
-还基于所述队列的读指针和写指针,确定所述地址。
17.根据权利要求16所述的方法,其中,当队列的填充级别超过预定值时,所述控制装置指示读取/出队装置输出与数据已被读取的地址相关的第二信息。
18.根据权利要求15至17中任一项所述的方法,其中,所述确定步骤包括:向所述读取/出队装置输出与更新后的写指针相关的信息。
19.根据权利要求15至18中任一项所述的方法,其中,所述辅助完成步骤包括:向所述控制单元通知何时存储了所述数据分组的至少一部分,且当已被所述辅助完成装置通知时,所述控制单元向所述读取/出队装置输出与更新后的写指针相关的信息。
20.根据权利要求12至19中任一项所述的方法,其中,将所述存储器的队列的地址分为具有预定数目个物理地址的组,这些组位于非连续的位置,并且实现队列的地址是被定义为连续地址的虚拟地址,所述确定步骤还包括:在虚拟地址和物理地址之间进行转换。
CN201080062899.XA 2009-12-04 2010-12-06 使用加时间戳和中央控制器由多个适配器对数据帧进行的分布式处理 Active CN102742220B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US26678109P 2009-12-04 2009-12-04
US61/266,781 2009-12-04
PCT/EP2010/068959 WO2011067405A1 (en) 2009-12-04 2010-12-06 Distributed processing of data frames by mulitiple adapters using time stamping and a central controller

Publications (2)

Publication Number Publication Date
CN102742220A true CN102742220A (zh) 2012-10-17
CN102742220B CN102742220B (zh) 2015-09-09

Family

ID=43754693

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080062899.XA Active CN102742220B (zh) 2009-12-04 2010-12-06 使用加时间戳和中央控制器由多个适配器对数据帧进行的分布式处理

Country Status (8)

Country Link
US (1) US9407581B2 (zh)
EP (1) EP2507950B1 (zh)
JP (1) JP5711257B2 (zh)
KR (1) KR101738620B1 (zh)
CN (1) CN102742220B (zh)
BR (1) BR112012013507A2 (zh)
DK (1) DK2507950T3 (zh)
WO (1) WO2011067405A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104052831A (zh) * 2014-06-11 2014-09-17 华为技术有限公司 一种基于队列的数据传输方法、装置及通信系统
CN106921996A (zh) * 2017-05-12 2017-07-04 电信科学技术研究院 一种层2统计量的统计方法、cu及du
CN108108148A (zh) * 2016-11-24 2018-06-01 舒尔电子(苏州)有限公司 一种数据处理方法和装置

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102742220B (zh) 2009-12-04 2015-09-09 纳派泰克股份公司 使用加时间戳和中央控制器由多个适配器对数据帧进行的分布式处理
JP5816301B2 (ja) * 2011-01-28 2015-11-18 ナパテック アクティーゼルスカブ データパケットを受信及び転送する装置及び方法
US9571215B2 (en) * 2012-07-18 2017-02-14 Intel Corporation Measuring time offsets between devices with independent silicon clocks
CN104025549B (zh) * 2012-12-18 2017-04-05 英特尔公司 与服务器事务延迟信息相关的技术
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
DE102015121940A1 (de) * 2015-12-16 2017-06-22 Intel IP Corporation Eine Schaltung und ein Verfahren zum Anhängen eines Zeitstempels an eine Tracenachricht
CN110247750B (zh) * 2018-09-27 2022-07-08 浙江大华技术股份有限公司 一种网络传输装置及其状态同步方法
US20220043588A1 (en) * 2020-08-06 2022-02-10 Micron Technology, Inc. Localized memory traffic control for high-speed memory devices

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060039393A1 (en) * 2004-08-18 2006-02-23 Victor Firoiu Traffic multiplexing using timestamping
US20060067325A1 (en) * 2004-09-30 2006-03-30 Michael Kounavis Method and apparatus for sorting packets in packet schedulers using a connected trie data structure
US20060072578A1 (en) * 2002-01-11 2006-04-06 Vic Alfano Reordering packets
US20060268939A1 (en) * 2003-08-15 2006-11-30 Xyratex Technology Limited Data merge unit , a method of producing an interleaved data stream, a network analyser and a method of analysing a network
WO2007011130A1 (en) * 2005-07-15 2007-01-25 Samsung Electronics Co., Ltd. Time synchronizing method and apparatus based on time stamp
US7284111B1 (en) * 2002-04-17 2007-10-16 Dinochip, Inc. Integrated multidimensional sorter
WO2009093299A1 (ja) * 2008-01-21 2009-07-30 Fujitsu Limited パケット処理装置およびパケット処理プログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61233899A (ja) * 1985-04-09 1986-10-18 富士通株式会社 デ−タ通信システム
JPS62133555A (ja) * 1985-12-06 1987-06-16 Nippon Telegr & Teleph Corp <Ntt> Dmaアドレス制御方式
JPH03283745A (ja) * 1990-03-30 1991-12-13 Fujitsu Denso Ltd データ収集制御方式
JPH08223781A (ja) * 1995-02-08 1996-08-30 Fuji Electric Co Ltd 非同期受信データの読込方法
JP3072649B2 (ja) * 1996-07-09 2000-07-31 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン スイッチング・デバイス及び装置
JP2000174723A (ja) * 1998-12-08 2000-06-23 Ando Electric Co Ltd 通信制御方法及びその装置
US7200146B2 (en) * 2001-08-17 2007-04-03 Intel Corporation System and method of IP packet forwarding across directly connected forwarding elements
US20070237146A1 (en) * 2006-03-31 2007-10-11 Ilija Hadzic Methods and apparatus for modeling and synthesizing packet processing pipelines
US8205064B2 (en) 2007-05-11 2012-06-19 Advanced Micro Devices, Inc. Latency hiding for a memory management unit page table lookup
US20090172212A1 (en) 2007-12-31 2009-07-02 Stanton Michael F System and method for managing input/output requests in data processing systems
CN102742220B (zh) 2009-12-04 2015-09-09 纳派泰克股份公司 使用加时间戳和中央控制器由多个适配器对数据帧进行的分布式处理

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060072578A1 (en) * 2002-01-11 2006-04-06 Vic Alfano Reordering packets
US7284111B1 (en) * 2002-04-17 2007-10-16 Dinochip, Inc. Integrated multidimensional sorter
US20060268939A1 (en) * 2003-08-15 2006-11-30 Xyratex Technology Limited Data merge unit , a method of producing an interleaved data stream, a network analyser and a method of analysing a network
US20060039393A1 (en) * 2004-08-18 2006-02-23 Victor Firoiu Traffic multiplexing using timestamping
US20060067325A1 (en) * 2004-09-30 2006-03-30 Michael Kounavis Method and apparatus for sorting packets in packet schedulers using a connected trie data structure
WO2007011130A1 (en) * 2005-07-15 2007-01-25 Samsung Electronics Co., Ltd. Time synchronizing method and apparatus based on time stamp
WO2009093299A1 (ja) * 2008-01-21 2009-07-30 Fujitsu Limited パケット処理装置およびパケット処理プログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104052831A (zh) * 2014-06-11 2014-09-17 华为技术有限公司 一种基于队列的数据传输方法、装置及通信系统
CN108108148A (zh) * 2016-11-24 2018-06-01 舒尔电子(苏州)有限公司 一种数据处理方法和装置
CN108108148B (zh) * 2016-11-24 2021-11-16 舒尔电子(苏州)有限公司 一种数据处理方法和装置
CN106921996A (zh) * 2017-05-12 2017-07-04 电信科学技术研究院 一种层2统计量的统计方法、cu及du
CN106921996B (zh) * 2017-05-12 2019-07-26 电信科学技术研究院 一种层2统计量的统计方法、cu及du

Also Published As

Publication number Publication date
KR20120113744A (ko) 2012-10-15
DK2507950T3 (en) 2018-05-28
EP2507950A1 (en) 2012-10-10
KR101738620B1 (ko) 2017-05-22
US20120327949A1 (en) 2012-12-27
JP5711257B2 (ja) 2015-04-30
JP2013513270A (ja) 2013-04-18
US9407581B2 (en) 2016-08-02
WO2011067405A1 (en) 2011-06-09
BR112012013507A2 (pt) 2016-06-07
CN102742220B (zh) 2015-09-09
EP2507950B1 (en) 2018-02-21

Similar Documents

Publication Publication Date Title
CN102754395B (zh) 由中央控制器控制的接收和存储数据分组的设备和方法
CN102742220A (zh) 使用加时间戳和中央控制器由多个适配器对数据帧进行的分布式处理
CN102763381B (zh) 在通过控制对队列填充程度进行更新来节省带宽的同时接收并存储数据的组件和方法
EP2668753B1 (en) An apparatus and a method for receiving and forwarding data packets
JP6266982B2 (ja) データを受信しフォワードするための装置および方法
JP2014504817A5 (zh)
WO2012163395A1 (en) An apparatus and a method of parallel receipt, forwarding and time stamping data packets using synchronized clocks
CN102696201B (zh) 对读取和排序数据分组的多个分析装置进行操作的设备、组件和方法

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