The embodiment of the invention provides a data receiving method, device and network card, which relates to the field of data transmission. The method includes: receiving data according to the TCP receiving window, reducing the TCP receiving window by shifting the left edge of the TCP receiving window to the right by moving the target distance; and when the right edge of the TCP receiving window does not reach the upper edge limit. To enlarge the reduced TCP receiving window by shifting the right edge of the TCP receiving window to the right, and perform the steps of reducing the TCP receiving window by shifting the left edge of the TCP receiving window to the right by shifting the target distance; when the right edge of the TCP receiving window reaches the upper edge limit, perform again the steps of reducing the TCP receiving window by shifting the left edge of the TCP receiving window to the right. The step of narrowing the TCP receiving window by moving the edge to the right of the target distance. When the TCP receiving window is narrowed to close, the historical received data is DMA into user space. The problem of interruption of data transmission in the existing technology is solved.
【技术实现步骤摘要】
数据接收方法、装置和网卡
本专利技术实施例涉及数据传输领域,特别涉及一种数据接收方法、装置和网卡。
技术介绍
在符合数据传输协议(英文:TransmissionControlProtocol,简称:TCP)的数据传输过程中,发送端发送TCP数据包至接收端之后,接收端中的网卡将接收该TCP数据包,并将该TCP数据包直接内存访问(英文:DirectionalMemoryAccess,简称:DMA)至中央处理器(英文,CentralProcessingUnit,简称:CPU),由CPU将该TCP数据包拷贝到用户空间。零拷贝接收技术是指网卡直接将接收到的TCP数据包DMA至用户空间,中间无需CPU参与,进而降低CPU的负载,提高CPU的性能的技术。一种基于零拷贝接收技术的数据接收方法包括:网卡根据TCP接收窗口接收TCP数据包,将TCP接收窗口的左边缘右移该TCP数据包的数据大小所对应的距离,当TCP接收窗口的左边缘右移至右边缘,也即TCP接收窗口缩小至关闭时,网卡将接收到的TCP数据包DMA至用户空间。此后,在CPU确认用户空间收到数据且用户空间中仍然可以存储数据时,CPU发送窗口开启指令至网卡,网卡接收到该窗口开启指令之后,重新打开一个TCP接收窗口,并根据重新打开的TCP接收窗口继续接收数据,直至用户空间中存满数据为止。其中,最后一次打开的TCP接收窗口关闭时,网卡累计接收到的数据的数据大小等于用户空间的空间大小。上述方案中,在用户空间中仍然可以存储数据,但是在TCP接收窗口被关闭之后,发送端将无法向网卡继续发送数据,数据传输将发生中断。
技术实现思路
为了解决 ...
【技术保护点】
1.一种数据接收方法,其特征在于,所述方法包括:根据传输控制协议TCP接收窗口接收数据,通过将所述TCP接收窗口的左边缘右移目标距离的方式缩小所述TCP接收窗口,所述目标距离为接收到的所述数据的数据大小所对应的距离,所述TCP接收窗口的窗口大小用于表示接收数据的缓冲区的大小;在所述TCP接收窗口的右边缘未达到边缘上限时,通过右移所述TCP接收窗口的右边缘的方式放大缩小后的所述TCP接收窗口,并再次执行所述根据TCP接收窗口接收数据,通过将所述TCP接收窗口的左边缘右移目标距离的方式缩小所述TCP接收窗口的步骤;所述边缘上限为根据用户空间预先设置的所述TCP接收窗口的右边缘所能达到的最大上限,所述用户空间的空间大小为所需接收的数据的数据大小;在所述TCP接收窗口的右边缘达到所述边缘上限时,再次执行所述根据TCP接收窗口接收数据,通过将所述TCP接收窗口的左边缘右移目标距离的方式缩小所述TCP接收窗口的步骤,在所述TCP接收窗口缩小至关闭时,将历史接收到的数据直接内存访问DMA到所述用户空间。
【技术特征摘要】
1.一种数据接收方法,其特征在于,所述方法包括:根据传输控制协议TCP接收窗口接收数据,通过将所述TCP接收窗口的左边缘右移目标距离的方式缩小所述TCP接收窗口,所述目标距离为接收到的所述数据的数据大小所对应的距离,所述TCP接收窗口的窗口大小用于表示接收数据的缓冲区的大小;在所述TCP接收窗口的右边缘未达到边缘上限时,通过右移所述TCP接收窗口的右边缘的方式放大缩小后的所述TCP接收窗口,并再次执行所述根据TCP接收窗口接收数据,通过将所述TCP接收窗口的左边缘右移目标距离的方式缩小所述TCP接收窗口的步骤;所述边缘上限为根据用户空间预先设置的所述TCP接收窗口的右边缘所能达到的最大上限,所述用户空间的空间大小为所需接收的数据的数据大小;在所述TCP接收窗口的右边缘达到所述边缘上限时,再次执行所述根据TCP接收窗口接收数据,通过将所述TCP接收窗口的左边缘右移目标距离的方式缩小所述TCP接收窗口的步骤,在所述TCP接收窗口缩小至关闭时,将历史接收到的数据直接内存访问DMA到所述用户空间。2.根据权利要求1所述的方法,其特征在于,所述通过右移所述TCP接收窗口的右边缘的方式放大缩小后的所述TCP接收窗口,包括:将缩小后的所述TCP接收窗口的右边缘右移接收到的所述数据的数据大小所对应的距离;根据缩小后的所述TCP接收窗口的左边缘确定放大后的所述TCP接收窗口的左边缘;或者,确定放大后的所述TCP接收窗口的窗口大小。3.根据权利要求2所述的方法,其特征在于,所述确定放大后的所述TCP接收窗口的窗口大小,包括:根据缩小后的所述TCP接收窗口的窗口大小和接收到的所述数据的数据大小的总和,确定放大后的所述TCP接收窗口的窗口大小;或者,根据缩小前的所述TCP接收窗口的窗口大小确定放大后的所述TCP接收窗口的窗口大小。4.根据权利要求2所述的方法,其特征在于,所述根据缩小后的所述TCP接收窗口的左边缘确定放大后的所述TCP接收窗口的左边缘;或者,确定放大后的所述TCP接收窗口的窗口大小之前,所述方法还包括:检测右移后的所述TCP接收窗口的右边缘是否超过所述边缘上限;若检测结果为超过所述边缘上限,则根据所述边缘上限确定放大后的所述TCP接收窗口的右边缘;根据确定的所述TCP接收窗口的右边缘以及放大前的所述TCP接收窗口的左边缘,确定放大后的所述TCP接收窗口的窗口大小。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:若检测结果为未超过所述边缘上限,则执行所述根据缩小后的所述TCP接收窗口的左边缘确定放大后的所述TCP接收窗口的左边缘;或者,确定放大后的所述TCP接收窗口的窗口大小的步骤。6.根据权利要求1至5任一所述的方法,其特征在于,所述在所述TCP接收窗口的右边缘未达到边缘上限时,通过右移所述TCP接收窗口的右边缘的方式放大缩小后的所述TCP接收窗口之前,所述方法还包括:检测是否满足所述TCP接收窗口的窗口放大条件;若满足所述窗口放大条件,则执行所述在所述TCP接收窗口的右边缘未达到边缘上限时,通过右移所述TCP接收窗口的右边缘的方式放大缩小后的所述TCP接收窗口的步骤。7.根据权利要求6所述的方法,其特征在于,所述检测是否满足所述TCP接收窗口的窗口放大条件,包括:检测数据接收模式是否为零拷贝接收模式;和/或,检测缩小后的所述TCP接收窗口的窗口大小是否低于预设阈值。8.根据权利要求1至5任一所述的方法,其特征在于,所述方法还包括:在放大所述TCP接收窗口之后,发送通知报文至所述数据的发送端,所述通知报文用于通知所述发送端放大后的所述TCP接收窗口的窗口大小。9.一种数据接收装置,其特征在于,所述装置包括:接收单元,用于根据传输控制协议TCP接收窗口接收数据,通过将所述TCP接收窗口的左边缘...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。