CN101547153B - 数据接收设备和数据接收方法 - Google Patents
数据接收设备和数据接收方法 Download PDFInfo
- Publication number
- CN101547153B CN101547153B CN2009101324365A CN200910132436A CN101547153B CN 101547153 B CN101547153 B CN 101547153B CN 2009101324365 A CN2009101324365 A CN 2009101324365A CN 200910132436 A CN200910132436 A CN 200910132436A CN 101547153 B CN101547153 B CN 101547153B
- Authority
- CN
- China
- Prior art keywords
- data
- sequence number
- buffering area
- range
- identification
- 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
Images
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/10—Flow control; Congestion control
-
- 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/19—Flow control; Congestion control at layers above the network layer
- H04L47/193—Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
-
- 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/27—Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
-
- 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/9084—Reactions to storage capacity overflow
- H04L49/9089—Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
- H04L49/9094—Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
- Computer And Data Communications (AREA)
Abstract
一种设备包括:接收数据序列的接收器;在数据存储器中指定临时缓冲区和在数据存储器中指定目的缓冲区的指定单元;第一识别单元,依靠指定的目的缓冲区的大小识别目的号范围以便该范围跟踪上一次被识别的范围;写入单元,在对应于该数据的序号的目的缓冲区中写入属于该区域范围中的一个范围的数据,并且在临时缓冲区中写入不属于它的数据;复制单元,从临时缓冲区读出属于识别的范围的数据,并且在与该数据的序号相关联的目的缓冲区中的区域中写入该读出的数据。
Description
技术领域
本发明涉及一种数据接收设备和一种使用预定协议接收从网络发送的数据的接收方法。
背景技术
TCP/IP是用于互联网通信的主要协议之一。例如,传统的TCP/IP主要是在个人计算机或者嵌入式设备中通过软件处理和CPU执行而实现的。在这种情况下,使用网络接口卡(NIC)接收来自网络的数据,并且接收到的帧被NIC本身或者CPU一次写入到存储器的堆栈缓冲区中,然后由CPU的协议栈软件进行协议处理。CPU通常除执行协议处理外还执行应用程序处理,并且在执行完协议处理后数据被复制到由应用程序指定的应用程序缓冲区。该存储的数据由应用程序等读出。这种数据流如图31所示。
但是,在这种模式下,接收的数据在从NIC移动到应用程序缓冲区的同时被一次缓冲,这意味着数据在存储器中总共进行了两次循环。为解决这个问题,美国专利公开号2004-0078462公开了一种通过在NIC中执行部分协议处理而直接将来自NIC的数据写入到应用程序缓冲区中的模式。在这种模式下的数据流如图32所示。在这种布置中,数据流仅在存储器中循环一次,因此可以避免性能方面的开销和与数据复制有关的功耗。
但是,当使用美国专利公开号2004-0078462的技术时将会遇到以下问题:
(1)应用问题
典型的应用程序经常是使用套接字API而运行。例如,这种情况下经常使用的方法是在select()函数中等待数据的接收,并且根据接收端的确认调用recv()函数。应用程序在应用程序缓冲区中指定地址,并且协议处理单元在该指定的地址写入数据,但是在这种方法中,应用程序通过recv()函数通知该地址。因此,当处理这样的应用程序时,因为需要接收没有指定的应用程序缓冲区的数据,也就是说不存在应用程序缓冲区,所以数据必须在传输中被一次缓冲。
(2)性能问题
因为直到在数据接收后recv()调用返回并且下一个recv()调用被唤醒时才存在应用程序缓冲区,所以即使在“recv()”中等待接收,数据还是不能被接收,这将如图33所示使数据接收中断并且降低性能。
(3)窗口大小通知问题
美国专利公开号2004-0078462说明了一种将接收窗口的大小作为应用程序缓冲区的大小通知对方的模式,但是实际上如下所述必须通知更大的容量。
当使用窗口缩放选项时,通知的窗口大小必须指定为是2n的倍数(n>=1)。因此,必须通知比应用程序缓冲区更大的容量。
由于当接收窗口大小已经降低到最大分段大小(MSS)以下时,发送端根据TCP的糊涂窗口综合症(Silly Window Syndrome)避免算法停止数据发送,所以需要通知窗口大小至少要大于MSS。
当通知了更大的窗口大小时,对方可以发送比应用程序缓冲区容量大的数据。如果溢出应用程序缓冲区的数据没有被缓冲,将需要对方在下一个应用程序缓冲区被指定时重新发送数据。在TCP的发送端,重传减小了拥塞窗口大小并且显著地降低了吞吐量。因此,为防止这种重传,溢出的数据必须以某种方式被缓冲。
如上所述,美国专利公开号2004-0078462至少引起问题(1)到(3)中的一个问题。为了避免这些问题就需要数据缓冲,但是美国专利公开号2004-0078462在其中没有公开该方法。
也就是说,当应用上述第一个传统的基于软件的模式时,执行缓冲并且不会引起问题(1)到(3)。但是,将始终产生与复制有关的开销。而当使用美国专利公开号2004-0078462的技术避免这种与复制有关的开销时,将遇到问题(1)到(3)。
发明内容
根据本发明的一个方面,提供一种数据接收设备,包括:
配置为通过网络接收数据序列的接收单元,该数据序列是一系列数据,其中每个数据都与一个序号相关联;
配置为存储数据的数据存储器;
第一指定单元,配置为在数据存储器中指定临时缓冲区用于临时存储数据序列中包含的数据;
第二指定单元,配置为在数据存储器中指定目的缓冲区用于存储数据序列中包含的数据;
第一识别单元,配置为当目的缓冲区被第二指定单元指定时,依靠指定的目的缓冲区大小识别目的号范围,以便该目的号范围跟随(follow)上一次被识别的目的号范围,识别的目的号范围中包含的每个序号在指定目的缓冲区中被分配一个位置,该位置对应于识别的目的号范围中的序号的相对位置;
数据写入单元,配置为当数据序列已经被接收单元接收到时,在对应于该数据的序号的目的缓冲区中被分配的位置中写入属于已经被第一识别单元识别的一个目的号范围的数据,并且在临时缓冲区中写入不属于任何一个目的号范围的数据;和
数据复制单元,配置为当目的缓冲区被第二指定单元指定时,从临时缓冲区中读出数据并且在对应于该读出的数据的序号的目的缓冲区中分配的位置写入该读出的数据,该数据具有属于对应于目的缓冲区的规范识别的目的号范围的序号。
附图说明
图1显示根据第一实施例的数据接收设备的结构;
图2显示根据第二实施例的数据接收设备的结构;
图3显示根据第二实施例的数据接收设备的另一种结构;
图4显示根据第四实施例的数据接收设备的结构;
图5是说明被第一实施例的数据接收设备执行的实例处理流程的流程图;
图6是说明被第二实施例的数据接收设备执行的实例操作流程的流程图;
图7是说明被第三实施例的数据接收设备执行的实例操作流程的流程图;
图8是说明被第四实施例的数据接收设备执行的实例处理流程的流程图;
图9说明根据第二实施例的数据接收设备的操作;
图10说明根据第二实施例的数据接收设备的操作;
图11说明根据第二实施例的数据接收设备的操作;
图12说明根据第二实施例的数据接收设备的操作;
图13说明根据第二实施例的数据接收设备的操作;
图14说明根据第二实施例的数据接收设备的操作;
图15说明根据第三实施例的数据接收设备的操作;
图16图解用于分配临时缓冲区的方案(第一方法);
图17图解用于分配临时缓冲区的方案(该第一方法);
图18图解用于分配临时缓冲区的方案(该第一方法);
图19图解用于分配临时缓冲区的方案(第二方法);
图20说明根据第四实施例的数据接收设备的操作;
图21说明根据第四实施例的数据接收设备的操作;
图22说明根据第四实施例的数据接收设备的操作;
图23说明根据第四实施例的数据接收设备的操作;
图24显示根据第四实施例的数据接收设备的另一种结构;
图25是说明图24的数据接收设备操作流程的流程图;
图26说明图24的数据接收设备的操作;
图27显示数据接收设备的执行的具体实例;
图28显示主机CPU、NIC、硬件和存储器的示范的配置;
图29显示主机CPU、NIC、硬件和存储器的另一种示范的配置;
图30显示主机CPU、NIC、硬件和存储器的又一种示范的配置;
图31说明传统的数据接收设备的操作;
图32说明传统的数据接收设备的操作;和
图33说明传统的数据接收设备的操作。
具体实施方式
(第一实施例)
图1显示根据本发明的第一实施例的数据接收设备的结构。
该数据接收设备包括网络接口单元11,数据存储器12,帧分析单元13,数据写入单元14,数据复制单元15,临时缓冲区指定单元(第一指定单元)16,目的缓冲区指定单元(第二指定单元)17和目的序号范围识别单元(第一识别单元)18。
网络接口单元11从网络接收帧。该网络可以是诸如因特网的执行TCP/IP通信的网络,该网络接口单元11为以太网(Ethernet)和/或无线局域网(LAN)接收帧。
数据存储器12具有用于存储数据的数据区域。
帧分析单元13分析接收帧的以太网、IP和TCP报头并且提取排除了报头的TCP数据部分(数据序列)。序号与TCP数据(数据序列)的每个字节相关联。
临时缓冲区指定单元16在数据存储器12中指定一临时缓冲区用于临时存储由帧分析单元13提取的数据(TCP数据)。
例如,目的缓冲区指定单元17可以是软件应用程序(能够处理TCP的应用程序),并且多次在数据存储器12中指定目的缓冲区,被帧分析单元13提取的TCP数据应写入目的缓冲区中。目的缓冲区例如由该区域的起始和结束地址或者区域的起始地址及长度表示。例如,在套接字API中,目的缓冲区是通过recv()调用等寻址的。例如,每当数据写入上一次指定的目的缓冲区完成时,目的缓冲区被指定。
当目的缓冲区已经被目的缓冲区指定单元17指定时,目的序号范围识别单元18识别对应于指定的目的缓冲区的序号范围(即,目的序号范围或者目的号范围),以便该范围跟随上一次被指定的序号范围。在序号范围中识别的每个序号在指定的目的缓冲区中被分配一个位置(即地址或者区域部分),该位置相对于目的序号范围(目的号范围)中的那个号码的相对位置具有一偏移量。用于偏移量的引用例如可以是指定目的缓冲区的起始地址。
数据写入单元14或者在临时缓冲区或者在目的缓冲区中写入通过由帧分析单元13分析而提取的TCP数据。具体地,关于提取的数据(数据序列),数据写入单元14在对应于该数据序号的目的缓冲区中的位置(地址)写入属于识别的目的序号范围的数据,并且在临时缓冲区中写入不属于识别的目的序号范围的数据。
数据复制单元15将写入临时缓冲区的数据复制到目的缓冲区。更具体地,当目的缓冲区被目的缓冲区指定单元17指定时,数据复制单元15从临时缓冲区存储的数据中读出属于由目的序号范围识别单元18重新识别的序号范围的所有数据,并且在对应于那个数据的序号的目的缓冲区的位置中(区域部分)写入该读出的数据。
下文将使用具体的例子详细说明图1的数据接收设备的操作。
图5是说明图1的数据接收设备执行的示范的处理流程的流程图。
首先,确定网络接口单元11是否已经从网络接收到帧(例如,以太网帧)(S11)。如果已经接收到帧(S11是),帧分析单元13分析该帧的以太网、IP和TCP报头(S12)。根据分析的结果,数据写入单元14在数据存储器12的临时缓冲区或者目的缓冲区中写入除去报头的TCP数据部分(S13到S16)。下文将对步骤S13到S16进行更详细的说明。
如上所述,序号与TCP数据的每个字节相关联。初始数据的序号可以被识别为跟随在连接建立时从对方发送过来的同步(SYN)信号段的序号后的号码。例如,当初始同步信号段的序号是0时,下一个将被发送的第一数据的序号是1。数据接收设备通过接收具有序号是0的同步信号段而知道初始数据的序号将是1,并因此当随后收到的帧具有序号1时识别出初始数据已经被接收到。下次将要接收的数据的序号是初始帧的开始数据的序号与初始帧的数据长度的总和。例如,当数据长度是1460时,下个数据的序号就是1461。由于IP通信的数据包在传输过程中可能改变了其序列才到达对方,但是由序号指示的数据的交换能够使接收端检测到序列的改变和/或数据的丢失,并且因此以正确顺序重排该数据包或者请求发送端重传。
当目的缓冲区指定单元17已经指定一个目的缓冲区时,目的序号范围识别单元18从上述初始序号加上区域的长度识别范围,作为目的序号范围。换句或说,作为起始于初始数据并且具有区域的长度的数据将被写入目的缓冲区,区域的序号范围被识别。例如,当目的缓冲区是从0x80000000到0x80000fff时,它的长度是4096(0x1000),所以目的序号范围是从1到4096。
当数据被接收时如果目的缓冲区没有被指定(S13否),数据写入单元14首先在临时缓冲区中存储所有的数据。例如,当接收到的数据的数据长度是1460(0x05b4)并且临时缓冲区被指定为从0x70000000到0x7000ffff时,则该数据被存储在从0x70000000到0x700005b3。
如果目的缓冲区被指定(S13是),假设它的地址例如是如上所述的从0x80000000到0x80000fff,目的序号范围是从1到4096并且接收的数据的序号从1到1460都属于该范围,因此数据全部被写入目的缓冲区中(S15是,和S16)。更确切地说,数据被存储在0x80000000到0x800005b3。
但是,例如如果目的缓冲区的地址是从0x80000000到0x800000ff,则目的缓冲区的长度是256(0x100)并且目的序号范围是从1到256。因为接收到的数据具有从1到1460的序号,具有序号从1到256的数据即第一个256字节被写入到目的缓冲区0x80000000到0x800000ff并且剩下的1204(0x04b4)字节被写入到临时缓冲区(S15是,和S16)。在这种情况下,例如具有序号从257到1460的数据被写入0x70000000到0x700004b3。
然后,如果在步骤S11确定没有已经接收到的帧(S11否),它将确定目的缓冲区是否已经被指定(S17)。如果目的缓冲区没有被指定(S17否),则流程返回到步骤S11。如果目的缓冲区已经被指定(S17是),它将确定临时缓冲区是否包含其序号属于被重新识别的目的序号范围的数据(S18)。如果不存在这样的数据,则流程返回到步骤S11而不执行任何处理。
另一方面,如果数据已经被接收了并且这种数据被存储在临时缓冲区,数据复制单元15从临时缓冲区存储的数据中读出属于重新识别的目的序号范围的数据,并在目的缓冲区中写入该读出的数据(S19)。
例如,当具有序号从1到4096的数据在临时缓冲区的0x70000000到0x70000fff被缓冲时,如果目的缓冲区被重新指定为0x80000000到0x800000ff,则缓冲的长度是256(0x100),那么数据复制单元15从临时缓冲区中的数据提取具有序号从1到256的数据并且将其复制到目的缓冲区。当目的缓冲区被指定为0x80000000到0x8000ffff时,则它的长度是65536(0x10000)并且目的序号范围是从1到65536。因此,临时缓冲区中的数据的序号从1到4096全部属于该范围并且所有的数据被复制到目的缓冲区的0x80000000到0x80000fff。稍后从网络新接收的具有序号从4097到65536的数据将被直接写入目的缓冲区的从0x80001000到0x8000ffff的剩余区域中。
在IP通信中,发送的数据可能没有以正确的顺序到达接收端。在这种情况下,接收到的数据不是以接收的顺序而是以对应于其序号的偏移量被写入到目的缓冲区中,以便能以序号的顺序被写入。如上所述当目的缓冲区被指定为0x80001000到0x8000ffff并且它的序号范围是从4097到65536时,起始于序号4097的数据帧就是下一个预期被接收的,但是实际接收到的例如可能是具有序号从5557到7016的数据帧。在这种情况下,不是被写入始于0x80001000的区域而使被写入始于0x80001000+(5557-4097)=0x800015b4的区域。当数据的长度是1460(0x05b4)时,数据被写入0x800015b4到0x80001b67。如果晚到达的具有序号4097到5556的数据在其后被接收,则该数据被写入x80001000到0x800015b3。因此,具有序号从4097到7106的数据按顺序被正确地写入x80001000到0x80001b67。在这种方式下,实现了数据的重排。处理帧丢失的重传与处理延时到达的方式相类似。因为相同的数据只是简单地被重写在相同的位置所以发送重复的帧也不会引起问题。
在具有序号从1到65536的数据被写入目的缓冲区的0x80000000到0x8000ffff后,如果目的缓冲区下一次被指定为0x90000000到0x90000fff,目的序号范围被识别以便使其跟随前面的范围。也就是说,因为长度是4096(0x1000)并且65537+4096-1=69632,所以目的序号范围是从65537到69632。后面的操作是相似的。
在TCP中,在数据接收时执行确认。正如对写入目的存储区的接收的数据执行确认一样,对写入临时缓冲区的接收的数据也执行确认。但是,由于临时缓冲区也是有限的,可能出现临时缓冲区耗尽并且不能接收数据的情况。在这种情况下,例如数据可能被简单地丢弃并且不执行确认(即等待重传)。但是在TCP中,接收缓冲区的大小能作为窗口大小被指示给对方。因此,通过通知对方目的缓冲区和临时缓冲区大小的总和,当临时缓冲区溢出时,可以阻止数据被发送到该点。更具体地,当已经指定目的缓冲区时,将指定的目的缓冲区的大小与临时缓冲区中可用区域的大小的总和(或者,在指定目的缓冲区并执行复制后目的缓冲区的可用区域大小与临时缓冲区的大小的总和)作为接收缓冲区的大小指示给对方。根据本实施例的数据接收设备可以具有接收缓冲区大小通知器(缓冲区大小通知器)用于通知该总的大小。
通过这种操作,可以执行所需的对接收到的数据的临时缓冲并且当不需要缓冲时接收到的数据可以被直接写入目的缓冲区。换句话说,通过具有临时缓冲区能够解决相关技术中的上述问题(1)到(3),此外,通过在目的缓冲区中写入而将临时缓冲区的使用最小化,数据可以随时被直接写入到目的缓冲区,可以避免向超出区域复制(extent),这样可以实现改进的性能并减少功耗。
(第二实施例)
虽然第一实施例说明了用于在目的缓冲区中写入数据的基本操作,但有时还需要检测在目的缓冲区中所有数据的写入的完成,也就是数据接收的完成。第二实施例显示了用于实现这种检测的模式。
图2显示根据本发明的第二实施例的数据接收设备的结构。在图2中,与图1中的元件同名的元件用相同的参考数字表示,并且,除了还有扩展的处理否则省略对它们的说明。
图2的数据接收设备除了包括图1的结构,还包括用于存储序号已经被接收的数据的接收序号存储器(序号存储器)21;用于更新接收序号存储器21中的接收序号的接收序号更新器(序号更新器)22;和用于确定接收完成的接收完成确定单元(确定单元)23。数据复制单元15使用接收序号存储器21中的信息来识别数据进行复制。
图6是说明图2的数据接收设备的操作流程的流程图。
首先,假设与通信的对方已经建立了连接并且初始序号通过同步信号段的交换被设置为10000。同时也假设目的缓冲区被指定并且目的序号范围被设置为10000到14999。由于在IP通信中不需要按顺序接收数据,所以接收序号存储器21也可以存储离散的接收序号。接收序号存储器21在具有链表结构的数据结构中管理离散的接收序号,该离散的接收序号被称作接收序号范围信息(或者接收范围信息)。每当接收到数据时,这种接收序号范围信息被接收序号更新器22更新。
图9显示了在连接建立后没有接收到数据时的接收序号范围信息。该接收序号范围信息由三部分组成:起始序号,结束序号和下一接收序号范围信息的地址。但是,因为第一接收序号范围信息的起始序号不需要被专门地存储,所以可以对其如图所示进行省略。同样,此时在这个时间点上还没有接收到任何数据并且预期接收始于序号10000的数据,此时与当数据达到序号9999时被接收的情况相同。因此,为了方便接收序号范围信息如图所示表示。这就是图中结束序号是9999的原因。从“下一个”指向“空”表示没有更多的接收序号范围信息。
例如,数据以1460字节块被发送,并且具有序号从10000到11459的数据被第一个接收到(S21是)。然后,接收序号更新器22更新接收序号存储器21中的接收序号范围信息。图10显示更新后的信息,指示达到序号11459的数据已经被接收(S22到S30)。
当接收序号范围信息已经被这样更新时,接收完成确定单元23检查目的序号范围是否属于接收序号范围信息的任何一个片段(S31是,和S32)。例如,这种检查可以通过查看第一接收序号范围信息的结束序号是否与目的序号范围的序号相等或者是否比目的序号范围的序号大而实现。由于在这个阶段第一接收序号范围信息的结束序号11459不会大于目的序号范围的结束数值14999,所以接收完成确定单元23不会确定接收完成(S32否)。
当具有序号从11460到12919的数据已经被重新接收时(S21是),接收序号范围信息立刻指示达到12919的数据已经被接收到,如图11所示(S22到S30)。因为第一接收序号范围信息的结束序号12919不比目的序号范围的结束号码14999大,所以接收完成确定单元23仍然不能确定接收完成(S31是,S32否)。
当具有序号从14380到15839的数据被进一步接收时(S21是),序号14380到15839作为第二接收序号范围信息被重新添加,如图12所示(S22到S30)。因为第一接收序号范围信息的结束号码12919不比目的序号范围的结束号码14999大,所以在这个阶段接收完成确定单元23仍然不能确定接收完成(S31是,S32否)。
当具有序号从12920到14379的数据被进一步接收时(S21是),第一接收序号范围信息与第二接收序号范围信息合并以便指示达到序号15839的数据已经被接收到,如图13所示(S22到S30)。然后,因为第一接收序号范围信息的结束数值15839比目的序号范围结束数值14999大,所以在这点上接收完成确定单元23确定接收完成(S31是,S32是)。当确定了接收完成时,接收完成确定单元23将该完成通知目的缓冲区指定单元17。直到目的缓冲区被目的缓冲区指定单元17稍后重新指定时才再次具有目的缓冲区。
尽管上述例子显示了连续序号范围信息的合并,但是信息片段也可以不必合并,并且可以以离散的信息片段保存。但是,合并可以节省用于存储接收序号范围信息所需的存储空间并且也能使处理简化,这是因为只有第一接收序号范围信息的结束序号才必须被接收完成确定单元23在接收完成的确定中检查。当不执行合并时,接收完成的确定检查多个接收序号范围信息片段以便顺序地查看是否目的序号范围中的所有序号都属于接收序号范围。
同样,接收序号范围信息的数据结构也不是必须是链表结构,可以是诸如表结构(或者数组结构)的其它结构。这里节点用于存储离散的范围信息并且因此数据结构无关紧要。
现在,我们说明图6中的在连接建立后并且目的缓冲区没有被指定前接收到帧的情况。
如果没有指定的目的缓冲区而接收到帧(S21是,S22,和S23否),帧中的所有数据都被存储在临时缓冲区中(S24),并且接收序号更新器22与前面例子相同更新接收序号存储器21中的接收序号范围信息(S30)。但是,当没有指定目的缓冲区时,在更新后接收完成确定单元23不执行接收完成的确定(S31否)。
当目的缓冲区被顺序地指定(S27是)并且目的序号范围被识别时,接收序号存储器21中的接收序号范围信息首先被检查(S33),并且检查哪些数据被存储在临时缓冲区中(S34)。然后,如果存在任何属于目的序号范围的数据(S34是),就将该数据复制到目的缓冲区(S35),并且在复制完成后,接收完成确定单元23确定接收是否完成(S32)。如果数据不属于目的序号范围(S34否),什么也不执行并且等待数据的接收。例如,图14说明了在如图12所示的位置指定目的缓冲区、稍后接收剩余数据和确定接收完成的情况下的操作。
通过如上所述的本实施例的这种操作,可以正确地确定接收的完成。
现在,我们说明临时缓冲区指定单元16如何分配临时缓冲区。
一种方式是为每个帧独立地分配一个存储区(第一方法)。更具体地,临时缓冲区指定单元16例如分配32个1500字节的区域(或者部分区域),并且数据写入单元14在32个区域中的每个区域中(部分区域)存储接收到的数据帧。这里,该区域的地址必须与接收序号范围信息关联地存储。例如,如图10所示,当接收到具有序号从10000到11459的数据并且存储在临时缓冲区中的0x80000000时,该地址以图16所示的关联被存储。然后,如图11所示当进一步接收到序号从11460到12919的数据并且存储在临时缓冲区的0x9000000时,该地址以图17所示的关联被存储。当用于多个帧的接收序号范围信息如图17所示合并时,需要存储多个地址信息片段用于关联的临时缓冲区。因此,这种多个信息片段可以以如图18所示的相互关联的链表格式存储。由于部分区域的号码是有限的,例如,数据从其已经被复制到目的缓冲区的部分区域被释放并且被重新使用。
另一种通过临时缓冲区指定单元16分配临时缓冲区的方式(第二方法)是以目的缓冲区中序号的顺序在单独的缓冲区中存储数据。也就是,用于临时缓冲区的序号范围识别与用于目的缓冲区的序号范围识别相同,并且数据被写入相对于序号范围的偏移量位置,以便以临时缓冲区中序号的顺序写数据。用于这种情况的数据接收设备的结构如图3所示。
图3的数据接收设备具有临时序号范围识别单元(第二识别单元)31,该临时序号范围识别单元就像为目的缓冲区那样为临时缓冲区确定相应的序号范围。例如,假设临时缓冲区指定单元16指定始于0x80000000的64k字节的临时缓冲区,即0x80000000到0x8000ffff,当序号起始于10000时,临时序号范围识别单元31识别对应于这个临时缓冲区的序号范围是10000到75535(长度64k=65536,75535=10000+65536-1)。使用这个信息,能够从序号之间的偏移量中识别出地址区域,例如在图12所示的情况,具有序号从10000到12919的数据位于0x80000000到0x80000b67(0x0b67=2919),具有序号从14380到15839的数据位于0x8000111c到0x800016cf(0x111c=4380,0x16cf=5839),等等。也就是说,这种方法消除了前面方法中说明的如图16到18所示的在临时缓冲区中为每个帧数据都存储一个地址的必要性,因此可以节省存储区和/或使处理简化。
例如,在这种情况下临时缓冲区优选环形缓冲区。作为具体例子,假设当临时缓冲区是从0x80000000到0x8000ffff时,目的缓冲区被指定并且序号从10000到14999的目的序号范围被识别,并且临时缓冲区中从0x80000000到0x80001387的数据复制被完成。在这种情况下,从0x80000000到0x80001387(0x1387=4999)的临时缓冲区被释放,这是因为它将不再被用于允许在0x8000ffff之后写入数据。也就是,从0x80001388到0x8000ffff的区域和从0x80000000到0x80001387的区域以此顺序成为新的64k字节区域。但是,这里临时序号范围(或临时号码范围)也被更新以便跟随目的序号范围,即15000到80535(80535=15000+65536-1)。
通过这样做,例如,尽管具有序号从15000到15839的数据在图14中第二阶段所示的复制完成时仍然剩余在临时缓冲区中,但是即使不移动该剩余数据在更新前后也能保持区域地址与序号之间的一致性。这种情况在图19中说明,图19中上部表示更新前下部表示更新后,并且编号线上面显示的是临时缓冲区中的地址下面显示的是对应的序号。
当临时缓冲区小于指定目的缓冲区时,临时缓冲区不必是环形缓冲区。具体而言,当临时缓冲区是从0x80000000到0x800000ff(大小:256字节)时,并且如果目的数值范围又被再次识别为从10000到14999,当完成数据复制时临时缓冲区可以仍旧是从0x80000000到0x800000ff。但是,对应的临时序号范围还是被更新以便跟随目的序号,即成为从15000到15255。
上述这种操作能够适当地分配临时缓冲区。
(第三实施例)
在第二实施例中,在数据复制单元15复制后(图6中S35至S32)执行接收完成的确定,但是在数据复制单元15复制数据的同时也可以接收数据。由于数据存储器12的存储器通常只有一个写入端口,在用于复制的写入操作和用于数据接收的写入操作之间以及它们中的任一个必须被暂停的情况下,将需要仲裁。因为将要被复制的数据被存储在临时缓冲区中,所以复制的延时不会引起严重问题。另一方面,如果数据接收被延时,传输过程中的缓冲区(特别是网络接口单元11的内部缓冲区等)可能溢出并且数据顺序发送时可能丢失。因此,在这种情况下需要为用于数据接收的写入赋予比用于数据复制的写入更高的优先级,但是在那种情况下数据接收经常在数据复制完成前发生。第三实施例处理这种情况。
图7是说明根据第三实施例的数据接收设备操作流程的流程图。根据第三实施例的数据接收设备的框图与图2或图3所示的相似。
如果当数据复制单元15执行复制时具有指定目的缓冲区的数据被接收(S41是,S43是,和S44是),接收序号更新器22与前述实施例一样首先更新接收序号存储器21中的接收序号范围信息。但是,如果数据只是如前述实施例一样被简单地写入目的缓冲区,则当数据复制单元15还没有为了复制而扫描数据的序号时,接收序号范围信息存储具有那个序号的数据接收。因此,当随后扫描以便从对应的接收到的数据没有被真正写入的临时缓冲区中的区域读取数据并且将该数据复制到目的缓冲区时,数据复制单元15查看更新的接收序号范围信息。换句话说,写入目的缓冲区的接收到的数据被在那时碰巧存储于临时缓冲区中的无效数据盖写。
因此,在这种情况下,也就是当数据复制单元15执行复制的同时接收到数据时,如果数据复制单元15没有为了复制而扫描接收到的数据的序号(S46否),即使指定了目的缓冲区接收到的数据也被写入临时缓冲区(S49)。通过这样做,当数据复制单元15随后执行扫描时数据将从临时缓冲区被正确地复制到目的缓冲区。换句话说,如果数据复制单元15为了复制而扫描了接收到的数据的序号(S46是),因为没有关于复制的盖写问题而将接收到的数据写入目的缓冲区(S47)。
同样,在第二实施例中,当接收到帧时如果已经指定了用于存储帧序号的目的缓冲区,接收完成确定单元23确定接收是否完成。但是,在这个实施例中,如果复制还没有完成(S52是),由接收序号存储器21指示的数据可能在目的缓冲区中还不存在,并因此即使指定了目的缓冲区接收完成确定单元23也不执行确定。当复制稍后完成时接收完成确定单元23确定接收是否完成(S56,S52和S53否)。
上述操作的例子如图15所示。与图14一样,图15显示了目的缓冲区被指定为图12所示的状态下的状态。但是,该图显示了当数据复制单元15已经复制了达到序号12919的数据时重新接收具有序号从12920到14379的数据。这里,因为数据复制单元15的扫描还没有经过接收到的数据,该数据被写入临时缓冲区,并且接着数据复制单元15将该数据与随后的数据一起复制到目的缓冲区,然后接收完成确定单元23确定接收是否完成。通过这种操作,即使当数据复制单元15正在复制数据时,数据也能被恰当地接收。
(第四实施例)
在第三实施例中,如果在数据复制单元15复制数据时接收到数据,如果该接收到的数据的序号还没有被扫描则该数据被写入临时缓冲区。但是,当接收到的数据的序号属于目的序号范围,因为不需要复制数据所以直接将数据写入目的缓冲区比写入临时缓冲区更有效率。本实施例说明实现这种方式的数据接收设备。
图4是显示根据本发明的第四实施例的数据接收设备的结构的框图。
图4的数据接收设备与图3的数据接收设备的不同之处在于:它具有两个(即,第一和第二)接收序号更新器和两个(即,第一和第二)接收序号存储器。就是说图4的数据接收设备不仅包括第一接收序号存储器21a和第二接收序号存储器21b而且还包括第一接收序号更新器22a和第二接收序号更新器22b。第一接收序号存储器21a存储对应于写入临时缓冲区中的数据的接收序号范围信息。第二接收序号存储器21b存储对应于写入目的缓冲区中的数据的接收序号范围信息。第一和第二接收序号更新器22a和22b在第一和第二接收序号存储器21a和21b中更新接收序号范围信息。例如,第一接收序号存储器21a中的接收序号范围信息对应于本发明的临时范围信息;第二接收序号存储器21b中的接收序号范围信息对应于本发明的目的范围信息。
因为对应于在临时缓冲区中存储的数据的接收序号范围信息被存储在第一接收序号存储器21a中,所以当复制数据时数据复制单元15通过检查该信息而识别数据以便复制。对应于该复制的数据的接收序号范围从第一接收序号存储器21a被移动到第二接收序号存储器21b。
当重新接收到数据时,以第一实施例说明的方式确定是否应将数据写入临时缓冲区还是写入目的缓冲区。写入临时缓冲区的数据的序号范围被第一接收序号更新器22a添加到第一接收序号存储器21a,并且写入目的缓冲区的数据的序号范围被第二接收序号更新器22b添加到第二接收序号存储器21b。
当第二接收序号存储器21b中的接收序号范围信息根据数据复制或者新数据的接收被更新时,接收完成确定单元23检查更新的接收序号范围信息是否属于目的序号范围,并且如果该信息属于该范围则确定接收完成。
例如,考虑到下面的情况。图21显示从目的缓冲区的指定到接收完成的操作的例子。
假设在初始状态当序号始于10000(临时序号范围的开始是10000)并且没有指定目的缓冲区时,临时缓冲区最初包含具有序号从10000到12919和从15840到17299的数据。当目的序号范围从10000到16999的目的缓冲区被指定时,具有序号从10000到11459的数据被首先复制。然后,在具有序号从12920到15839的数据被重新接收并在目的缓冲区中被写入期间,复制操作继续。最后,具有序号从11460到12919的数据和从15840到16999的数据,也就是通过继续复制操作将被复制的剩余数据都被复制。此时,具有序号10000到16999的所有数据都已经被存储在目的缓冲区中。下文将说明图20所示情况的本实施例的数据接收设备的详细操作。
图8是说明根据第四实施例的数据接收设备执行的处理流程的流程图。出于方便,在下文中假设在第一接收序号存储器21a中存储的接收序号范围信息属于第一组并且在第一接收序号存储器21b中存储的属于第二组。
首先,初始状态下的接收序号信息如图21所示。在这种状态下,还没有接收到数据。当在这种状态下接收到具有序号从10000到12919的数据和从15840到17299的数据时(S61是),该状态转换到图20的第一状态(S62,S63否,和S67)。对应于图20的接收序号范围信息如图22所示。图22的每个状态对应于图20的每个状态。在初始状态下,序号到12919和序号从15840到17299的接收序号范围信息被存储于第一组(S68)。因为由临时序号范围识别单元31识别的范围信息的起始指示为10000,所以确认数据始于10000。由于没有目的缓冲区,所以在第二组中不存在接收序号范围信息。
接下来,目的缓冲区被指定(S61否,和S71是)。但是,即使指定目的缓冲区,接收序号范围信息也不会改变。
然后,当复制具有序号从10000到11459的数据时(S75,S76是,S77和S73),该序号从第一组中被删除并且被添加到第二组。结果,达到9999的序号,从11460到12919和从15840到17299的序号都在第一组中,并且达到11459的序号在第二组中(S74)。此时,接收完成确定单元23检查从10000到16999的目的序号范围是否属于第二组的接收序号范围信息(S69是,S70)。但是,这里范围不属于该范围信息(S70否),因此不能确定接收完成。
当具有序号从12920到15839的数据被重新接收时(S61是),那个范围被添加到第二组,从而达到11459的序号和从12920到15839的序号在第二组中(S62,S63是,S64是,S65和S66)。接收完成确定单元23再一次检查从10000到16999的目的序号范围是否属于第二组的接收序号范围信息(S69是,S70)。但是,该范围仍不属于该范围信息(S70否),因此不能确定接收完成。
然后,当复制具有序号从11460到12919和从15840到16999的数据也就是将要被复制的剩余数据时(S73),这些位置从第一组中被删除。结果,第一组包含达到9999的序号和从17000到17299的序号,并且第二组包含达到16999的序号(S74)。此时,接收完成确定单元23再一次检查从10000到16999的目的序号范围是否属于第二组的接收序号范围信息(S69是,S70)。这里该范围确实属于该范围信息(S70是),则接收完成确定单元23确定接收完成。
数据复制完成后,例如期望释放临时缓冲区数据已经被复制的部分,这是因为如上所述在第二实施例的结尾不再需要该部分。例如,通过这种释放,第一组的相应的接收序号范围信息也不是必要的,并因此也可以被删除如图23所示。更确切地说,在图23的上部,第一组的第一接收序号范围信息的结束序号是16999,该结束序号指示了从图22中上一个的状态关于序号范围从10000到16999的信息的删除。此外,由于该范围与17000到17299的第二接收序号范围相邻,所以这些范围可以被合并为如下部所示的达到17299的接收序号范围。此时,临时序号范围的起始也变成17000,显示数据始于17000。在这种状态下,等待新目的缓冲区的指定和/或数据接收。
通过上述操作,当在数据复制单元15复制数据期间接收到新数据时,可以避免数据的复制,并且通过将数据直接写入目的缓冲区而不是写入临时缓冲区可以提高处理的效率。
现在说明能提供与上述实施例效果相同的另一种方式。根据这种方式的数据接收设备的结构如图24所示。与图2或者图3相比较,图24包括用于临时存储接收序号范围信息的接收序号临时存储器(接收序号临时存储器)32。
由图24的数据接收设备处理的流程如图25所示。对数据接收执行的操作与第二实施例中的处理相似,但是在目的缓冲区指定后的处理不同。
当目的缓冲区被指定并且目的序列范围信息被识别时(S91是),接收序号临时存储器32存储到那时为止的接收序号范围信息(S93)。然后数据扫描单元15顺序扫描存储于接收序号临时存储器32中的接收序号范围信息,而不是扫描存储于接收序号存储器21的接收序号范围信息,以便复制属于目的序号范围的数据(S93)。
如果在数据复制期间重新接收到数据(S81是),存储于接收序号存储器21中的信息和与该数据有关的信息一起被更新(S87),但是该信息不影响被数据复制单元15引用的接收序号临时存储器32中的信息,并因此也不影响复制。
如果复制完成(S89否)并且如果目的序列范围信息属于接收序号范围信息(S90是),则确定接收完成。
对应于图20的接收序号范围信息中的改变如图26所示。“原始信息”是在接收序号存储器21中存储的信息,并且“临时信息”是在接收序号临时存储器32中存储的信息。
首先,在没有指定目的缓冲区的阶段中(第一阶段),临时信息中没有数据。如果此时在上次处理中使用过的数据残留在临时信息中,该数据在下一个阶段将被复制盖写。
当指定目的缓冲区时(第二阶段),此时接收序号范围信息被存储于临时信息中并且开始数据复制。通过参考临时信息复制被顺序地执行:第一接收序号范围信息被首先扫描并执行复制(第三阶段)。
接下来,当重新接收到数据时(第四阶段),关于该数据的信息被映射到原始信息中而不是被映射到临时信息中,因此该信息不影响复制。此时,目的序号范围刚好属于接收序号范围信息,但因为复制还没有完成所以不能确定接收被完成。
此后,复制继续扫描上一次的接收序号范围信息(第五阶段),直到复制完成并且接收被确认完成。
通过这种操作,当在数据复制单元15复制数据期间重新接收到新数据时,可以避免数据的复制,并且通过将数据直接写入目的缓冲区而不是如前面的实施例写入临时缓冲区可以提高处理的效率。
(第五实施例)
在第五实施例中将说明执行的具体形式。图27显示了它的一个例子。
网络接口单元11由诸如网络接口卡(NIC)的网络接口装置实现。
帧分析单元13,数据写入单元14,数据复制单元15,第一和第二序号更新单元22a和22b,以及接收完成确定单元23都在被作为动态可重配置处理器、FPGA等执行的硬件(专用线路)52中实现。
临时缓冲区指定单元16、临时序号范围识别单元31、目的缓冲区指定单元17、目的序号范围识别单元18等等都在由主机CPU 53等执行的软件中实现。
第一和第二接收序号存储器21a、21b,数据存储器12在诸如SDRAM和SRAM的存储器54中实现。该存储器可以实际上被构造为多个存储器装置或者单个存储器装置。当存储器构造为多个存储器设备时,它们可以是独立的存储器装置。
上述结构仅是一个例子,但是因为每当接收到帧时都需要处理,所以在硬件中至少需要配置帧分析单元13,数据写入单元14,数据复制单元15和第一及第二接收序号更新器22a和22b。
同样,主机CPU53,NIC51,硬件52和存储器54的典型配置如图28到图30所示。图28显示硬件52通过专用总线61与NIC51连接的情况;图29显示它们通过共享总线62相连接的情况;以及图30显示硬件在NIC51中被执行的情况。本发明可以应用到这些情况中的任何一种情况。
它们可以被配置在不同的LSI中,或者配置在诸如硬件的多个块中,同时主机CPU可以被配置在单个LSI中。
当临时缓冲区和目的缓冲区被配置在公用存储器中时,全部的三种访问即接收数据的写入、通过复制读取和通过复制写入可以被同时请求。因此要求存储器的带宽至少是网络带宽的三倍。
如上所述,利用本发明的实施例,接收到的数据可以根据需要被临时地缓冲或者当不需要缓冲时直接写入目的缓冲区。因此,上述相关技术中的问题(1)到(3)可以被解决同时使接收的数据到临时缓冲区的复制最小化,这又将实现改进的性能并减少功耗。
Claims (11)
1.一种数据接收设备,其特征在于,包含:
配置为通过网络接收数据序列的接收单元,所述数据序列是一系列数据,其中所述每个数据都与一个序号相关联;
第一指定单元,配置为在数据存储器中指定临时缓冲区,用于临时存储所述数据序列中包含的数据;
第二指定单元,配置为在所述数据存储器中指定目的缓冲区,用于存储所述数据序列中包含的数据;
第一识别单元,配置为当所述目的缓冲区被所述第二指定单元指定时,依靠所述指定的目的缓冲区大小来识别目的号范围,以便所述目的号范围跟随上一次被识别的目的号范围,识别的目的号范围中包含的每个序号在所述指定的目的缓冲区中被分配一个位置,所述位置对应于所述识别的目的号范围内的序号的相对位置;
数据写入单元,配置为当所述数据序列已经被所述接收单元接收到时,在对应于所述数据的序号的所述目的缓冲区中的被分配的位置中,写入属于已经被所述第一识别单元识别的目的号范围之一的数据,并且在所述临时缓冲区中写入不属于任何一个所述目的号范围的数据;和
数据复制单元,配置为当所述目的缓冲区被所述第二指定单元指定时,从所述临时缓冲区中读出数据,所述数据具有属于响应所述目的缓冲区的指定而被识别的所述目的号范围内的序号,并且在对应于所述读出的数据的序号的所述目的缓冲区中分配的位置中写入所述读出的数据。
2.根据权利要求1所述的设备,其特征在于,进一步包括:
配置为存储接收范围信息的序号存储器,所述接收范围信息表示被所述接收单元接收的数据序列的一组序号范围;
序号更新器,配置为当所述数据序列将被所述数据写入单元写入时,通过添加将被写入的所述数据序列的所述序号范围来更新所述接收范围信息;和
确定单元,配置为检查所述识别的目的号范围是否属于所述接收范围信息,以及,如果检测到所述范围属于所述信息,则确定用于所述识别的目的号范围的接收被完成,其中
在所述数据复制单元响应所述目的缓冲区的指定而执行所述数据复制的情况下,即使检测到所述识别的目的号范围属于所述接收范围信息,所述确定单元也能在所述数据复制终止后确定接收已经完成,和
所述数据复制单元识别既属于由所述接收范围信息指示的序号范围又属于所述识别的目的号范围的序号,并复制具有所述识别的序号的数据。
3.根据权利要求2所述的设备,其特征在于,
所述数据复制单元顺序地扫描所述接收范围信息,并且复制属于所述识别的目的号范围的数据,和
当所述复制单元执行数据复制的同时接收到属于所述识别的序号范围的数据时,如果所述数据的序号还没有被扫描,则所述写入单元在所述临时缓冲区中写入所述数据,而如果所述数据的序号已经被扫描,则在对应于所述数据的序号的所述目的缓冲区中分配的位置写入所述数据。
4.根据权利要求2所述的设备,其特征在于,
所述序号存储器存储作为所述接收范围信息的临时范围信息和目的范围信息,所述临时范围信息表示在所述临时缓冲区中写入的数据的所述序号范围,所述目的范围信息表示在所述目的缓冲区中写入的数据的所述序号范围,
所述序号更新器将在所述目的缓冲区中写入的数据的所述序号范围添加到所述目的范围信息,并且将所述临时缓冲区中写入的数据的所述序号范围添加到所述临时范围信息,
所述数据复制单元识别既属于由所述临时范围信息指示的序号范围又属于所述识别的序号范围的序号,并复制具有所述识别的序号的数据,
当所述数据复制单元执行数据复制时,所述序号更新器将所述复制的数据的序号从所述临时范围信息移动到所述目的范围信息,和
当检测到所述识别的目的号范围属于所述目的范围信息时,所述确定单元确定用于所述识别的目的号范围的接收已经完成。
5.根据权利要求2所述的设备,其特征在于,进一步包括
序号临时存储器,配置为存储所述接收范围信息直到所述第一识别单元已经识别目的号范围为止,其中
所述数据复制单元顺序地扫描在所述序号临时存储器中存储的接收范围信息,并且复制属于所述识别的目的号范围的数据。
6.根据权利要求2所述的设备,其特征在于,
所述临时缓冲区包含多个部分区域,每个部分区域具有能通过网络被接收到的数据序列的最大长度(size);
当在所述临时缓冲区中写入时,所述数据写入单元在所述多个部分区域中的可用的一个中写入;
当所述数据已经被写入所述可用的部分区域中时,所述序号存储器存储所述数据被写入的地址,所述地址与所述接收范围信息中的所述数据的序号范围相关联;
当所述数据复制单元已经识别了将要被复制的数据的序号时,所述数据复制单元基于所述接收范围信息识别对应于所述识别的序号的一个地址,并读取在所述识别的地址存储的数据作为将要被复制的数据;和
当写入所述部分区域的所有数据的复制完成时,所述第一指定单元释放所述部分区域。
7.根据权利要求2所述的设备,其特征在于,进一步包括
第二识别单元,配置为每当响应所述目的缓冲区的指定而识别所述目的号范围并且进一步地所述复制被完成时,识别对应于所述临时缓冲区的临时号范围以便所述临时号范围跟随所述识别的目的号范围,其中
当在所述临时缓冲区中写入数据时,所述数据写入单元在与所述临时号范围中的数据的相对位置对应的位置写入数据,和
所述复制单元将与所述临时号范围中的所述识别的序号的相对位置对应的位置存储的数据识别为将要被复制的数据。
8.根据权利要求1所述的设备,其特征在于,
所述数据写入单元和所述数据复制单元至少被配置在硬件中。
9.根据权利要求1所述的设备,其特征在于,进一步包括
缓冲区大小通知器,配置为通知发送端所述目的缓冲区与所述临时缓冲区的总和中的可用区域的大小的所述数据序列。
10.根据权利要求1所述的设备,其特征在于,
所述数据存储器是单个存储器装置,以及
所述存储器装置的带宽至少是所述网络带宽的三倍。
11.一种数据接收方法,其特征在于,包含:
通过网络接收数据序列,所述数据序列是一系列数据,其中每个数据都与一个序号相关联;
指定临时缓冲区用于临时存储数据,该数据是配置为存储数据的数据存储器中的所述数据序列中包含的数据;
在所述数据存储器中指定目的缓冲区,用于存储所述数据序列中包含的数据;
当所述目的缓冲区被指定时,依靠所述指定的目的缓冲区的大小来识别目的号范围,以便所述目的号范围跟随上一次识别的目的号范围,识别的目的号范围中包含的每个序号被分配给一部分指定的目的缓冲区,所述部分目的缓冲区与所述识别的目的号范围内的序号的相对位置相关联;
当接收到所述数据时,在对应于所述数据的序号的目的缓冲区中分配的位置中写入属于已经被识别的一个目的号范围的数据,并且在所述临时缓冲区中写入所述数据序列包含的不属于任何所述目的号范围的数据;和
当所述目的缓冲区被指定时,从所述临时缓冲区中读出数据,所述数据具有属于响应所述目的缓冲区的指定而被识别的目的号范围的序号,并且在与所述读出的数据的序号相关联的所述目的缓冲区中的分配的位置写入所述读出的数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008081097A JP5049834B2 (ja) | 2008-03-26 | 2008-03-26 | データ受信装置、データ受信方法およびデータ処理プログラム |
JP2008-081097 | 2008-03-26 | ||
JP2008081097 | 2008-03-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101547153A CN101547153A (zh) | 2009-09-30 |
CN101547153B true CN101547153B (zh) | 2012-10-03 |
Family
ID=41118817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101324365A Active CN101547153B (zh) | 2008-03-26 | 2009-03-26 | 数据接收设备和数据接收方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9071525B2 (zh) |
JP (1) | JP5049834B2 (zh) |
CN (1) | CN101547153B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011016087A1 (ja) | 2009-08-05 | 2011-02-10 | 株式会社 東芝 | 通信装置 |
WO2011033562A1 (ja) | 2009-09-16 | 2011-03-24 | 株式会社 東芝 | 通信装置 |
JP5795592B2 (ja) * | 2009-12-04 | 2015-10-14 | ナパテック アクティーゼルスカブ | 中央制御装置により制御されるデータパケットを受信し記憶する装置および方法 |
JP5060572B2 (ja) * | 2010-03-09 | 2012-10-31 | 株式会社東芝 | データ通信装置及び方法 |
DE102010044208A1 (de) * | 2010-11-22 | 2012-05-24 | Robert Bosch Gmbh | Netzknoten, insbesondere für ein Sensornetzwerk, und Betriebsverfahren für einen Netzknoten |
JP5361924B2 (ja) * | 2011-02-28 | 2013-12-04 | 株式会社東芝 | データ送信装置、データ通信装置および通信プログラム |
US9124541B2 (en) * | 2011-06-30 | 2015-09-01 | Cisco Technology, Inc. | Zero copy acceleration for session oriented protocols |
JP5788308B2 (ja) * | 2011-12-22 | 2015-09-30 | ルネサスエレクトロニクス株式会社 | 整列回路及び受信装置 |
JP2018064187A (ja) | 2016-10-12 | 2018-04-19 | キヤノン株式会社 | 通信装置、通信方法およびプログラム |
EP4054140A4 (en) * | 2019-11-22 | 2022-11-16 | Huawei Technologies Co., Ltd. | METHOD OF PROCESSING A NON-BUFFER DATA WRITE REQUEST, BUFFER AND NODE |
CN111953618B (zh) * | 2020-08-21 | 2022-07-19 | 锐捷网络股份有限公司 | 一种多级并行交换架构下的解乱序方法、装置及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040078462A1 (en) * | 2002-10-18 | 2004-04-22 | Philbrick Clive M. | Providing window updates from a computer to a network interface device |
CN1540523A (zh) * | 2003-10-30 | 2004-10-27 | 中兴通讯股份有限公司 | 单任务快速缓冲读写方法 |
US20050100048A1 (en) * | 2003-11-10 | 2005-05-12 | Lg Electronics Inc. | Updating next-expected TSN and receiver window to avoid stall conditions |
CN1875557A (zh) * | 2003-11-10 | 2006-12-06 | Lg电子株式会社 | 更新下一个期望的tsn和接收机窗口以避免停顿状态 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1051491A (ja) * | 1996-08-01 | 1998-02-20 | Hitachi Ltd | 通信システム、クライアント端末及びデータ送信方法 |
CN1276372C (zh) * | 2000-09-29 | 2006-09-20 | 艾拉克瑞技术公司 | 智能网络存储接口系统和装置 |
US6741603B2 (en) * | 2001-07-09 | 2004-05-25 | Overture Networks, Inc. | Use of a circular buffer to assure in-order delivery of packets |
EP1421494A1 (en) * | 2001-08-31 | 2004-05-26 | Adaptec, Inc. | Systems and methods for implementing host-based security in a computer network |
US7007103B2 (en) * | 2002-04-30 | 2006-02-28 | Microsoft Corporation | Method to offload a network stack |
US7142540B2 (en) * | 2002-07-18 | 2006-11-28 | Sun Microsystems, Inc. | Method and apparatus for zero-copy receive buffer management |
US7336678B2 (en) * | 2002-07-31 | 2008-02-26 | Intel Corporation | State-based jitter buffer and method of operation |
US7346701B2 (en) | 2002-08-30 | 2008-03-18 | Broadcom Corporation | System and method for TCP offload |
US20040044796A1 (en) | 2002-09-03 | 2004-03-04 | Vangal Sriram R. | Tracking out-of-order packets |
CA2542365C (en) * | 2003-12-31 | 2011-05-31 | Samsung Electronics Co., Ltd. | Selective combining method and apparatus in a mobile communication system |
US7522606B1 (en) * | 2004-11-09 | 2009-04-21 | Network Equipment Technologies, Inc. | Passive packet re-ordering and packet loss detection |
US7573884B2 (en) * | 2006-03-06 | 2009-08-11 | Texas Instruments Incorporated | Cable modem downstream channel bonding re-sequencing mechanism |
-
2008
- 2008-03-26 JP JP2008081097A patent/JP5049834B2/ja active Active
-
2009
- 2009-03-16 US US12/404,616 patent/US9071525B2/en active Active
- 2009-03-26 CN CN2009101324365A patent/CN101547153B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040078462A1 (en) * | 2002-10-18 | 2004-04-22 | Philbrick Clive M. | Providing window updates from a computer to a network interface device |
CN1540523A (zh) * | 2003-10-30 | 2004-10-27 | 中兴通讯股份有限公司 | 单任务快速缓冲读写方法 |
US20050100048A1 (en) * | 2003-11-10 | 2005-05-12 | Lg Electronics Inc. | Updating next-expected TSN and receiver window to avoid stall conditions |
CN1875557A (zh) * | 2003-11-10 | 2006-12-06 | Lg电子株式会社 | 更新下一个期望的tsn和接收机窗口以避免停顿状态 |
Also Published As
Publication number | Publication date |
---|---|
JP5049834B2 (ja) | 2012-10-17 |
US20090248891A1 (en) | 2009-10-01 |
CN101547153A (zh) | 2009-09-30 |
US9071525B2 (en) | 2015-06-30 |
JP2009237768A (ja) | 2009-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101547153B (zh) | 数据接收设备和数据接收方法 | |
KR950002709B1 (ko) | 데이타 전송 방법 | |
US7908335B1 (en) | Methods and apparatus for bridging a USB connection | |
EP1814035A2 (en) | Storage controller and data management method | |
JP4415023B2 (ja) | Pppマルチリンクをサポートするシステムにおけるマルチキャストトラフィックフォーワーディング装置及び制御方法 | |
US7143176B2 (en) | Data communication with a protocol that supports a given logical address range | |
CN112817887A (zh) | 分离可组合式架构下的远内存访问优化方法及系统 | |
JP2778893B2 (ja) | 通信制御装置 | |
CN103678163A (zh) | 数据流的切换方法、装置及系统 | |
US20080147906A1 (en) | DMA Transferring System, DMA Controller, and DMA Transferring Method | |
US20050188070A1 (en) | Vertical perimeter framework for providing application services | |
JP2007128385A (ja) | 伝送装置、伝送システムおよび更新データの排他制御方法 | |
CN109861967A (zh) | 基于Spark Shuffle的远程直接内存访问系统 | |
US20080126472A1 (en) | Computer communication | |
TW202010293A (zh) | 使用中央學習來處理網路交換器堆疊系統的多個轉送資料庫同步的方法 | |
JP3024345B2 (ja) | データリンク方法 | |
KR100591243B1 (ko) | 온-칩 직렬 주변장치 버스 시스템 및 그 운용방법 | |
CN110990313A (zh) | 一种i3c总线处理时钟拉伸的方法、设备以及存储介质 | |
JP2009253723A (ja) | 通信プロトコル処理回路及び通信プロトコル処理方法ならびに通信端末 | |
CN100518141C (zh) | 解决wlan中分段发送问题的方法和装置 | |
US20090031045A1 (en) | Information relay device, information relay method, information relay program and information recording medium | |
TWI411922B (zh) | 通用串列匯流排主機控制器和通用串列匯流排主機控制方法 | |
KR100677914B1 (ko) | 주기적으로 입출력을 검사하는 시스템에서 epmcq2를원격 모드로 사용할 때 속도를 향상시키는 방법 | |
KR100622621B1 (ko) | 운영-대기(Active-Standby) 모드로이중화된 IP 통신 시스템에서 주 시스템과 부 시스템간구성 데이터를 동기화하기 위한 방법 및 그 시스템 | |
JP5076348B2 (ja) | 共有メモリのアクセス方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |