CN116073962A - 用于硬件可靠传送的早期重传 - Google Patents

用于硬件可靠传送的早期重传 Download PDF

Info

Publication number
CN116073962A
CN116073962A CN202310083980.5A CN202310083980A CN116073962A CN 116073962 A CN116073962 A CN 116073962A CN 202310083980 A CN202310083980 A CN 202310083980A CN 116073962 A CN116073962 A CN 116073962A
Authority
CN
China
Prior art keywords
network device
data
data packets
received
bitmap
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.)
Pending
Application number
CN202310083980.5A
Other languages
English (en)
Inventor
李宇亮
哈桑·穆罕默德·加马尔·哈桑·瓦塞尔
贝南·蒙塔泽里
王炜煌
斯里尼瓦斯·瓦杜瓦塔
南迪塔·杜基帕蒂
普拉尚特·R·钱德拉
玛绍德·莫什雷福贾瓦迪
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of CN116073962A publication Critical patent/CN116073962A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1671Details of the supervisory signal the supervisory signal being transmitted together with control information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1614Details of the supervisory signal using bitmaps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1671Details of the supervisory signal the supervisory signal being transmitted together with control information
    • H04L1/1678Details of the supervisory signal the supervisory signal being transmitted together with control information where the control information is for timing, e.g. time stamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/189Transmission or retransmission of more than one copy of a message
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • H04L43/106Active monitoring, e.g. heartbeat, ping or trace-route using time related information in packets, e.g. by adding timestamps

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Communication Control (AREA)

Abstract

本公开涉及用于硬件可靠传送的早期重传。本公开的技术涉及使用在接收器处生成的位图来跟踪发射器发送的接收到的分组的状态。所述技术可以包括网络设备,所述网络设备包括输入端口、输出端口以及电路。所述电路可以生成发射器位图,所述发射器位图跟踪被发送到另一网络设备的每个数据分组。所述网络设备的所述电路从所述另一网络设备接收接收器位图,所述接收器位图标识从所述网络设备接收到和未接收到的每个数据分组。然后,所述电路可以通过将所述发射器位图与所述接收器位图进行比较,确定重传哪个数据分组。

Description

用于硬件可靠传送的早期重传
技术领域
本公开涉及用于硬件可靠传送的早期重传。
背景技术
数据通常在被跨网络传输之前被分割成更小的数据单元,称为分组。源可以将每个数据分组传输到目的地。一旦目的地接收到所有分组,就可以从分组重建数据。互联网协议套件是通信协议集合,用于服务通过互联网或其它计算机网络进行信息通信的两个设备之间的数据传输。传输控制协议(“TCP”)是互联网协议套件的一部分,其通过局域网或广域网在例如客户端设备上运行的web浏览器应用和服务器设备上运行的web服务器应用之间提供面向连接的、可靠的和有序的数据分组流递送。在传输分组期间,诸如拥塞、网络断开、节点故障等问题可能导致分组被丢弃而未被目的地接收。数据分组丢失可以通过由源的丢失分组的重传来补救。
发明内容
本公开的多个方面提供了一种用于改进的分组丢失检测和恢复的机制。本公开的一个方面涉及一种网络设备。网络设备可以包括输入端口、输出端口以及耦合到输入端口和输出端口的电路。电路可以被配置成生成包括第一多个数据位的发射器位图,每个数据位提供多个数据分组中的给定一个被传输到第二网络设备的指示。电路还可以被配置成从第二网络设备接收包括第二多个数据位的接收器位图,每个数据位提供指示接收到或未接收到第一多个数据分组中的给定一个的指示。电路可以被进一步配置成将发射器位图的位与接收器位图的位进行比较,以标识未接收到第一多个数据分组中的一个或多个。
在一些示例中,电路被进一步配置成重传未被接收到的第一多个数据分组中的一个或多个。
在一些示例中,标识未接收到第一多个数据分组中的一个或多个包括:确定所述多个数据分组中由网络设备传输并被第二网络设备接收到的最新近数据分组;以及确定所述一个或多个数据分组包括所述多个数据分组中在所述最新近数据分组之前被传输的未被接收到的每个数据分组。
在一些示例中,电路被进一步配置成重传所述一个或多个数据分组。
在一些示例中,电路被进一步配置成重传所述一个或多个数据分组中在距最新近被传输的数据分组达阈值数目的数据分组之前被传输的数据分组。
在一些示例中,电路被进一步配置成:从输入端口接收从第二网络设备通过网络传达的确认消息,该确认消息包括提供网络设备何时发送所述多个数据分组中的给定数据分组的指示的时间戳值;比较所述时间戳值与一个或多个本地时间戳值,所述一个或多个本地时间戳值与网络设备先前发送到第二网络设备但未被确认为被第二网络设备接收到的一个或多个数据分组相关联;以及重传针对其所述比较指示具有在时间上比所述时间戳值更早的本地时间戳值的所述一个或多个数据分组。
在一些示例中,所述时间戳与嵌入在给定数据分组的报头中的rack_xmit_ts参数相关联。
在一些示例中,第二网络设备返回rack_xmit_ts参数作为时间戳值。
在一些示例中,所述时间戳值包括由网络设备发送并在第二网络设备处接收到的最新rack_xmit_ts参数的指示。
在一些示例中,所述一个或多个本地时间戳值包括嵌入在由网络设备先前发送的所述一个或多个数据分组的报头中的一个或多个本地rack_xmit_ts参数。
在一些示例中,电路被进一步配置成:确定所述一个或多个数据分组中在时间上最早被发送的未被接收到的分组;并且如果在预定时间内没有另外的数据分组被确认为被第二网络设备接收到,则向第二网络设备传输在时间上最早被发送的所述未被接收到的数据分组。
在一些示例中,确认分组包括多个数据位,所述多个数据位提供是否在远程单元处被接收到网络接口卡所发送的数据分组的指示。
在一些示例中,网络设备为交换机、路由器或网络接口卡。
在一些示例中,第二网络设备为交换机、路由器或网络接口卡。
在一些示例中,电路包括存储器控制器,存储器控制器包括存储器和一个或多个处理器。
在一些示例中,存储器存储发射器位图。
在一些示例中,输出端口经由网络通信地耦合至第二网络设备。
本公开的第二方面涉及一种网络接口卡,包括通信地耦合至网络的输入端口、通信地耦合至网络的输出端口以及耦合至输入端口和输出端口的电路。电路可以被配置成:将多个数据分组传输至网络设备;从输入端口接收从网络设备通过网络传达的确认消息,该确认消息包括时间戳值,所述时间戳值提供网络接口卡何时发送所述多个数据分组中的给定数据分组的指示;比较所述时间戳值与一个或多个本地时间戳值,所述一个或多个本地时间戳值与网络接口卡先前发送到网络设备但未被确认为被网络设备接收到的一个或多个数据分组相关联;以及重传针对其所述比较指示具有在时间上比所述时间戳值更早的本地时间戳值的所述一个或多个数据分组。
在一些示例中,电路被进一步配置成:生成包括第一多个数据位的发射器位图,每个数据位提供多个数据分组中的给定一个被传输到网络设备的指示;从网络设备接收包括第二多个数据位的接收器位图,每个数据位提供指示接收到或未接收到第一多个数据分组中的给定一个的指示;以及将发射器位图的位与接收器位图的位进行比较,以标识未接收到第一多个数据分组中的一个或多个。
在一些示例中,接收器位图中的第二多个数据位中的至少一位被设定为值0,指示未接收到所述多个数据分组中的所述给定一个。
在一些示例中,接收器位图中的第二多个数据位中的至少一位被设定为值1,指示接收到所述多个数据分组中的所述给定一个。
附图说明
图1是图示根据本公开的多个方面的接收器与发射器之间的通信的方框图。
图2是根据本公开的多个方面的示例系统的功能图。
图3图示了根据本公开的多个方面的示例网络接口卡。
图4是图示根据本公开的多个方面的接收器与发射器之间的通信的方框图。
图5是图示根据本公开的多个方面的数据分组集合的内容的表格。
图6图示了根据本公开的多个方面的示例接收器和发射器位图。
图7是概述根据本公开的多个方面的发射器的操作的流程图。
具体实施方式
所公开的技术涉及通过主动地重传数据分组来改进分组丢失检测和恢复。技术的一个方面涵盖扩展确认(EACK)方案,其涉及在接收器处使用位图来跟踪由发射器发送的接收到的分组的状态。EACK通过在接收器处并入位图来扩展常规ACK位图。该接收器位图指示接收器接收到和未接收到的分组。例如,位图中的每个位可以被赋予值“1”以指示接收到对应的分组,被赋予值“0”以指示尚未接收到对应的分组。然后,接收器可以将位图发送到发射器,这里也称为发送器,用于进一步处理。发射器在收到位图后,可以从位图中的各个值确定哪些分组被确认为被接收到,哪些没有接收到。发射器可以重传位图中未被确认的分组。
例如,并且如图1中图示的,发射器191将数据分组193从缓冲器传输到接收器195。每个数据分组可以与位图中的对应位相关联。发射器191保持跟踪所有传输的数据分组的发送器位图192(在本文中也称为“发射器位图”)。例如,在传输与位198相关联的数据分组时,发射器191可以用值“1”更新位198,以指示传输了对应的数据分组。
接收器可以更新接收器位图196中的相关联位以指示接收到数据分组。接收器195可以将接收到的数据分组存储在缓冲器中。例如,在接收到与位198相关联的数据分组时,接收器195可以用值“1”更新位198以指示接收到对应的分组。然后,接收器195然后可以将接收器位图196发送到发射器191,如箭头199图示的,用于进一步处理。
发射器可以将发送器位图192的位与接收到的接收器位图196进行比较,以从位图的位中的各个值确定哪些分组被确认为被接收到,哪些没有接收到。发射器可以重传位图中未被确认的分组。例如,基于接收器位图196与发送器位图192之间的比较,发射器191可以确定位197被传输但未被确认。因此,发射器可以向接收器195重传位197。
图2图示了包括分布式计算系统的示例系统100。多个数据中心160、170、180可以例如分别经由交换机106、107和108通过网络150通信地耦合。数据中心160、170、180可以进一步与一个或多个客户端设备通信,诸如客户端计算设备110,其经由网络接口卡(NIC)121和交换机103连接到网络150。因而,例如,客户端计算设备110可以在“云”中执行操作。
每个客户端计算设备110可以是旨在由人使用的个人计算机,具有通常在个人计算机中发现的所有内部组件,诸如中央处理单元(CPU)、CD-ROM、硬盘驱动器以及显示设备,例如,具有屏幕的监视器、投影仪、触摸屏、小型LCD屏幕、电视,或另一设备,诸如可操作以显示由处理器120处理的信息的电气设备、扬声器、NIC、用户输入端,诸如鼠标、键盘、触摸屏或麦克风,以及用于将这些元件彼此连接的所有组件。此外,根据本文所述的系统和方法的计算机可以包括能够处理指令并向人和其它计算机和从人和其它计算机传输数据的设备,包括通用计算机、PDA、平板电脑、手机、智能手表、缺乏本地存储能力的网络计算机、电视机的机顶盒以及其它联网设备。
存储器130可以存储处理器120可访问的信息,包括可以由处理器120执行的指令132。存储器130还可以包括可以由处理器120检索、操纵或存储的数据134。存储器130可以是能够存储处理器120可访问的信息的类型的非暂时性计算机可读介质,诸如硬盘驱动器、固态驱动器、闪存驱动器、磁带驱动器、光存储设备、存储器卡、ROM、RAM、DVD、CD-ROM、可写和只读存储器。处理器120可以是公知的处理器或其它不太公知类型的处理器。可替选地,处理器120可以是诸如应用专用集成电路(ASIC)、现场可编程门阵列(FPGA)等专用控制器。另外,处理器120可以包括多个处理器、多核处理器或其组合。
指令132可以是由处理器120直接执行,诸如机器代码,或间接执行,诸如脚本,的指令的集合。在这方面,术语“指令”、“步骤”和“程序”可以在本文中互换地使用。指令132可以以目标代码格式存储,用于由处理器120直接处理,或包括按需解释或预先编译的独立源代码模块的脚本或合集的其它类型的计算机语言。
数据134可以由处理器120根据指令132检索、存储或修改。例如,尽管特定数据结构不限制系统和方法,但是数据134可以作为具有多个不同字段和记录的结构或文档或缓冲器而被存储在计算机寄存器中、在分布式存储系统中。数据134还可以以诸如但不限于二进制值、ASCII或Unicode的计算机可读格式来格式化。此外,数据134可以包括足以标识相关信息的信息,诸如数字、描述性文本、专有代码、指针、对存储在其它存储器——包括其它网络位置——中的数据的引用,或由函数用于计算相关数据的信息。
尽管图2在功能上将处理器120和存储器130图示为处于同一方框内,但是处理器120和存储器130实际上可以包括多个处理器和存储器,多个处理器和存储器可以或可以不被存储在同一物理外壳内。例如,指令132和数据134中的一些可以被存储在可移除CD-ROM或外部存储系统上,而其它的可以存储在只读计算机芯片内。指令和数据中的一些或全部可以被存储在物理上远离处理器120但仍可由处理器120访问的位置处。类似地,处理器120实际上可以包括可以并行操作也可以不并行操作的处理器的合集合集。
数据中心160、170、180可以被定位成离彼此相当大的距离。例如,数据中心可以被设定在世界各地的各个国家。每个数据中心160、170、180可以包括一个或多个计算设备,诸如处理器、服务器、分片等。数据中心的计算设备可以包括关于客户端计算设备110描述的一些或全部硬件。
如图2中所示的,数据中心160包括计算设备162和164,数据中心170包括主机计算设备172和174,数据中心180包括计算设备181和182。根据一些示例,计算设备可以是执行一个或多个虚拟机的主机计算设备。例如,计算设备162被图示为执行多个虚拟机(VM)的主机计算设备,包括VM 166和167,每个VM运行操作系统和应用。虽然在图2中仅图示了几个虚拟机166、167,但是应理解,任何数目的虚拟机可以由任何数目的计算设备支持。此外,应理解,图2中图示的配置仅仅是示例,并且示例数据中心160、170、180中的每一个中的计算设备可以具有可以彼此相同或不同的各种结构和组件。
程序可以跨这些计算设备执行。例如,一些操作可以由第一数据中心的一个或多个计算设备执行,而其它操作由第二数据中心的一个或多个计算设备执行。在一些示例中,各个数据中心中的计算设备可能具有不同的能力。例如,不同计算设备可能具有不同的处理速度、工作负载能力等。虽然在图2中仅示出了这些计算设备中的几个,但是应理解,每个数据中心160、170、180可以包括任何数目的计算设备,并且第一数据中心中的计算设备的数目可以不同于第二数据中心中的计算设备的数目。此外,应理解,每个数据中心160、170、180中的计算设备的数目可以随时间而变化,例如,随着硬件的移除、替换、更新或扩展而变化。另外,虽然图2仅图示了单个客户端计算设备110和三个数据中心160,但是系统100可以包括任何数目的计算设备,包括客户端计算设备和/或数据中心。
在一些示例中,每个数据中心160、170、180还可以包括许多存储设备(未示出),诸如硬盘驱动器、闪存驱动器、闪存存储器、随机存取存储器、磁盘、磁盘阵列、磁带驱动器或任何其它类型的存储设备。数据中心160、170、180可以实施许多架构和技术中的任一种,包括但不限于直接附加存储(DAS)、网络附加存储(NAS)、存储区域网络(SAN)、光纤通道(FC)、通过以太网的光纤通道(FCoE)、混合架构网络等。除了存储设备之外,数据中心还可以包括许多其它设备,诸如布线、路由器等。另外,在一些示例中,数据中心160、170、180可以是虚拟化环境。另外,虽然仅示出了几个数据中心160、170、180,但是可以通过网络150和/或另外的网络耦合更多数据中心。
客户端计算设备110和数据中心160、170、180可以能够直接和间接通信,诸如通过网络150,经由一个或多个网络接口卡(NIC)和/或交换机。网络150和介入节点——包括交换机103、106、107和/或108——可以包括各种配置和协议,包括因特网、万维网、内联网、虚拟专用网络、广域网、本地网络、使用一个或多个公司专有的通信协议的专用网络、以太网,WiFi(例如,702.71、702.71b、g、n或其它这样的标准)和HTTP,以及前述的各种组合。
这样的直接或间接通信可以由能够向其它计算机或设备和从其它计算机或设备传输数据的设备来促进,其它计算机或设备诸如有线或无线NIC。例如,并且如图2中图示的,客户端计算设备110包括NIC121,数据中心160的计算设备162和164分别包括NIC 168和169,数据中心170的计算设备172和174分别包括NIC 173和175,而数据中心180的计算设备181和182分别包括NIC 184和185。这些NIC可以被配置成通过网络150传输和/或接收数据分组。NIC可以是能够应对各种重传协议的基于存储器的NIC,诸如本文所述的那些NIC。
数据分组可以经由一个或多个交换机在内部被引导通过数据中心并且通过网络。如图2中图示的,交换机103将客户端计算设备110连接到网络150,并且交换机106、107和108将数据中心160、170和180分别连接到网络150。虽然图2图示了将计算设备110和数据中心160、170、180中的每一个连接到网络150的单个交换机,但是任何数目的交换机可以将计算设备和数据中心连接到网络。此外,网络可以包括任何数目的交换机、路由器和能够引导数据分组和/或应对各种重传协议的其它设备,诸如本文中所述的那些设备。
此外,交换机可以被包括在每个数据中心内,用于将包括处理器、服务器、分片等的计算设备连接在一起。例如,数据中心180中的计算设备181和182可以经由NIC 184、185和交换机102连接在一起和/或连接到网络150。交换机可以是能够应对各种重传协议的基于存储器的交换机,诸如本文中所述的那些交换机。
图3图示了示例网络接口卡201,其可以与诸如NIC 121、168、169、173、175、184和185的图2中的网络接口卡进行比较。NIC 201包括输入端口221、输出端口241、缓冲器230以及存储器控制器210。虽然缓冲器230和存储器控制器210被示出为单独的组件,但是缓冲器和存储器控制器可以被实施在同一裸片或单独的裸片上。输入端口221可以从诸如另一NIC、交换机、路由器或能够传输分组的其它这样的网络设备的一个或多个源接收数据分组。输出端口241可以将数据分组传送到一个或多个目的地,目的地可以包括能够接收分组的其它网络设备。在这方面,NIC可以同时作为发射器和接收器操作。虽然未示出,但是输入端口221和输出端口241可以包括用于根据从存储器控制器210接收到的指令接收和发送分组的逻辑。此外,NIC可以包括一个以上的输入和/或输出端口。
缓冲器230总体上可以被构造成单元阵列,其被配置成保存从另一网络设备和/或计算设备接收到的数据分组。在这方面,单元作为分组缓冲器操作,缓冲器中的数据分组可以被从分组缓冲器传递到另一网络设备和/或计算设备。例如,NIC 201可以附接到客户端计算设备,诸如客户端计算设备110。因而,NIC 201可以将从发射器接收并存储在缓冲器230中的数据分组传递到客户端计算设备110的其它组件,诸如处理器110或存储器130。在另一示例中,NIC 201可以附接到另一NIC。因而,NIC 201可以将从发射器接收并存储在缓冲器230中的数据分组传递到其它NIC。
缓冲器230可以由下列构成:NIC 201内的集成存储器,包括DRAM、SRAM等中的任一种;堆叠存储器,包括被堆叠到存储器控制器上的一个或多个单独的裸片上的存储器;共同封装的存储器,包括通过中介层或衬底连接到存储器控制器210的一个或多个单独的裸片,称为高带宽存储器,和/或片外存储器——诸如DRAM模块。
存储器控制器210可以包括处理器220以及存储指令232和数据234的存储器231。处理器可以类似于处理器120,并且存储器231可以类似于存储器130。指令232可以由存储器控制器210实施,以执行利用本文所述的EACK方案来接收和传输诸如数据234的数据的算法,数据234可以包括如本文进一步所述的分组时间戳和分组位图。在一些实例中,时间戳和/或分组位图可以被存储在NIC 201的缓冲器230或其它存储器中。虽然图3图示了NIC,但是本文所述的一些或全部组件及其相应功能可以被包括在其它网络设备中,诸如交换机、路由器等。
图4图示了根据EACK方案的作为发射器操作的第一NIC 491和作为接收器操作的第二NIC 495。如图4中的箭头493图示的,发射器491将数据分组集合传输至接收器495。
图5示出了包含示例数据分组集合501的表格500,数据分组集合包括从发射器491发送到接收器495的数据分组p1-p10。虽然图5将数据分组集合501示出为包括10个数据分组p1-p10,但是数据分组集合可以包括任何数目的数据分组。
如图5中所示,每个数据分组p1-p10与数据分组被发射器491传输到接收器459的时间对应的时间戳502相关联并用该时间戳502传输。例如,数据分组p1与时间戳t1相关联,数据分组p9与时间戳t9相关联。相应的时间戳可以被嵌入每个传输的分组(例如,由发送器或发射器NIC传输的)的报头内。在一些实例中,时间戳可以被视为嵌入分组报头中的“rack_xmit_ts”参数。如本文进一步讨论的,诸如rack_xmit_ts参数的时间戳作为ACK/EACK消息的一部分被接收器495反射回发射器491。
数据分组集合501中的每个数据分组也可以包括数据503。如图5中所示,数据分组p1-p10分别包括数据d1-d10。每个数据分组中所包括的数据可以是任何类型的数据。此外,数据d1-d10可以完整的数据块和/或较大数据块的部分。
随着发射器491将数据分组传输到接收器495,发射器491可以生成发射器位图以跟踪被发送的数据分组。例如,并且如图6中图示的,发射器491可以生成(或更新)发射器位图492以跟踪被发送到接收器495的数据分组p1-p10。在这方面,发射器位图492包括具有10位的2x5矩阵,位401-405在顶行中而位406-410在底行中。虽然未示出,但是位图或其它存储位置可以跟踪与每个传输的数据分组相关联的时间戳。
在操作中,由发射器传输的每个数据分组可以被指配给发射器位图中的一位。例如,发射器491可以为每个数据分组p1-p10指配一位,诸如分别为位401-410。在从发射器491的缓冲器传输这些数据分组中的每一个时,接收器495可以用诸如“1”的值来更新发射器位图的指配的位,以指示对应的数据分组被接收到并存储在接收器495的缓冲器中。例如,在传输数据分组p1时,发射器491可以将位401从值“0”更新为“1”。虽然在本文的示例中使用了“0”和“1”,但是指示已发送和未发送位的值可以是任何值。
如图6中进一步示出的,在接收到数据分组时,接收器可以更新接收器位图496中的位以指示数据分组被接收到。例如,在接收到数据分组p1-p7和p9-p10时,接收器195可以分别以值“1”更新位421-427和429-430,从而指示对应的数据分组被接收到。在示例接收器位图496中,位428未被接收到,指示p8未被接收到。
虽然发射器位图492和接收器位图496被示出为2x5(行/列)矩阵,但是位图可以为任何大小,诸如128x128、128x64、256x128等。此外,发射器和接收器位图的大小不需要与数据分组集合的大小相同。在这方面,发射器和接收器位图可以跟踪数据分组集合或多个不同数据分组的集合的部分。
接收器可以具有固定大小的位图,这可以限制位图可以存储的位的量。在这方面,接收器可以随着最低序列号被接收而使位图移位。例如,接收器,诸如接收器195,可以接收序列中的分组,诸如序列号0、1、2、3、4和5。最初,位图可以表示分组0、1、2,然后,在接收到2之后,可以移位,使得位图表示3、4、5、6、7和8。如果发射器发送位图范围之外的分组,则接收器可以使用EACK中的另一位(例如,本文进一步讨论的OOW位)来向发射器指示接收到位图范围之外的一些分组。
接收器495可以周期性地将接收器位图496发送到发射器491,如箭头499图示的,作为EACK消息的一部分。发射器491可以将发射器位图492的位与接收到的接收器位图496进行比较,以从位图的位中的各个值确定哪些数据分组被确认为接收了,哪些没有。比较可以由NIC中的处理器执行,诸如NIC的存储器控制器内的处理器。
如图6中图示的,接收器位图496指示数据分组p8未被接收,但是发射器位图492指示数据分组p8被发送。因而,基于位图的比较,发射器491可以确定分组p8被传输但未被确认,因此重传数据分组p8。
发射器可以实施乱序(OOO)距离算法,其利用在EACK消息中提供的接收器位图来消除歧义丢失和重新排序。例如,如果接收器发送给发送器的接收器位图指示一数据分组在距所接收到的具有最大序列号的数据分组达阈值数目的数据分组之前被传输给了接收器,则未接收到的数据分组可以被标识为可能丢失。因此,未接收到的数据分组可以在下一个可用机会处或者如果可能立即重传(例如,大约一个或多个时钟周期)。
继续前述示例,发射器491可以通过比较接收器位图496与发射器位图492而确定未接收到数据分组p8。同样地,发射器也可以确定接收到数据分组p9和p10。如果用于OOO距离算法的阈值数目是两(2)个分组,则发射器491可以重传数据分组p8,因为两个数据分组p9和p10已经被接收器495接收到,由此满足阈值。类似地,如果没有接收到数据分组p9但接收到数据分组p10,则数据分组p8仍将被重传,因为数据分组p10在序列中比数据分组p8晚两个数据分组。数据分组p9将不被重传,直到发射器确定数据分组p11或更大的被发射器491接收到。
然而,假设阈值为三(3)个数据分组。在那种情况下,发射器491可以不重传数据分组p8,因为从数据分组p8被发送以来,只有两个数据分组p9和p10已经被发射器491传输。由于两个数据分组小于三个数据分组的阈值,所以发射器491将不重传数据分组p8。前述阈值是示例。数据分组的阈值可以是预定义的和/或基于网络流量可调节的。此外,数据分组的阈值可以是任何数目的数据分组,包括零(0)个数据分组。
发射器可以实施最近确认(ACK)丢失检测算法以减少或去除关于分组是否丢失和/或被乱序接收到的不确定性。例如,如果接收器位图指示没有接收到分组,但是接收到在时间上足够晚发送的分组,则未接收到的分组可能被处理为可能丢失,因此可以在下一可用机会或如果可能立即重传(例如,大约一个或多个时钟周期)。
如先前所解释的,发射器可以将时间戳参数嵌入到每个数据分组中,诸如嵌入到每个数据分组的报头中的“rack_xmit_ts”参数。该时间戳可以作为被发送到发射器的ACK/EACK消息的一部分由接收器反射回来,如图4中箭头497图示的。然后,发射器可以使用反射回来的时间戳来对照未接收到的分组(即,还未被确认为接收到的分组)的传输时间戳进行检查。时间戳早于被确认为接收到的最新时间戳的任何分组都是立即或稍后重传的候选。
因为rack_xmit_ts被设定为反射的发射器时间戳,所以发射器不需要扫描所有新接收到的分组。特别地,发射器可以具有针对其尚未接收到确认的分组的记录,如通过接收器位图与发射器位图之间的比较所确定的。然后,发射器可以针对未确认的数据分组比较反射的发射器时间戳,并且用比反射的时间戳更早的时间戳重传那些数据分组。这允许一种更硬件兼容的机制,因为在硬件中扫描所有新接收到的数据分组通常不可行,如将rack_xmit_ts设定为每个接收到的ACK/EACK/NACK消息所确认的分组当中检测到的最大发射器时间戳值的技术所要求的,如TCP最近确认(RACK)中进行的。也就是说,在RACK的过去实施方式中,接收器不反射最新接收到的分组的传输时间戳。因此,发射器需要扫描所有新确认的分组,以找到其中最大的传输时间戳,并将其用作rack_xmit_ts。相反,本文公开的RACK实施方式依赖于最新接收到的分组的反射rack_xmit_ts。因此,发射器不需要搜索最大的传输时间戳。
作为前述RACK丢失检测算法的示例,假设发射器,诸如发射器491,用时间戳502(t1,t2,t3,...,t6,t10)传输数据分组501到接收器495。接收器495可以发送一个或多个确认消息(例如,ACK/EACK),其指示在时间戳t1、t2和t4发送的数据分组的接收。在接收到与t4相关联的数据分组的确认的接收时,发射器将认识到在时间戳t3发送的分组还未被确认,因此可能丢失。然后,发射器可以用新时间戳t8重传先前在t3发送的数据分组。随后,发送器可以接收与时间戳t7相关联的数据分组的接收的确认,但是对于在t6和t5发送的数据分组没有接收到确认。然后,发射器491可以用时间戳t9和t10重传先前用时间戳t5和t6发送的分组。
在一些实例中,如果数据分组在最新近接收到的数据分组的时间戳的预定义的时间量之前被发送,则数据分组可能被重新发送。在这方面,可以定义阈值时间段。在接收到最新近接收到的数据分组的通知之后,发射器491可以确定是否有任何数据分组比[rack_xmit_ts-阈值时间段]更早地传输,并且未被确认为接收到。对于在长于阈值时间段的时间传输的所有数据分组,发射器491可以重传这些数据分组。
在一些示例中,如果未被接收到的数据分组的时间戳为T0,并且rack_xmit_ts-T0<阈值时间段,则该未被接收到的数据分组可能不被立即重传。相反,可以设定计时器以在[当前时间-rack_xmit_ts+阈值时间段+T0]处重传。
在一些实例中,发射器,诸如发射器491,可能在特定量的时间内无法从接收器,诸如接收器495接收到所接收到的数据分组的确认消息(EACK)。另外,发射器491可能在预定量的时间内没有发送数据分组。这些情况可以被认为是探测超时(PTO)。在PTO中,发射器491可以重传具有最小序列号的未接收到的数据分组作为探测分组,以触发接收器495发送ACK/EACK/NACK。由于探测分组是具有最小序列号的未接收到的分组,因此在接收器495处不将其作为乱序分组接收。因而,接收器的缓冲器不需要将该分组缓冲为乱序分组。
相反,发送最后未被接收的分组的方案(例如,TCP尾部丢失探测(TLP))可能导致重传的分组被丢弃(即,再次未被接收),因为它可能是乱序的。这可能是因为NIC缓冲器中缺乏空间。在这方面,NIC内的缓冲器通常大小有限,并且可能无法存储乱序数据分组。因而,在重传最后未接收到的分组的TCP-IP中,重传的分组可能被连续丢弃。
现有的ACK合并引擎可以针对EACK进行扩展。一种扩展可以是添加新OOO位,其在检测到OOO事件时触发合并引擎计时器和计数器。另外,可以在合并引擎之后实施ACK格式判决器,以确定是否发送ACK或EACK消息。例如,如果接收到的接收器位图中有漏洞(即,存在具有较早时间的时间戳的未确认数据分组),则可以使用EACK消息格式。另一方面,如果在接收到的接收器位图中没有漏洞或者还未接收到分组(即,位图=0),则可以发送常规ACK消息。
另外,当接收到窗外(OOW)数据分组时,可以触发EACK消息。在这方面,EACK可以包括窗外(OOW)位,以指示是否已经存在不能在接收器位图中捕捉的接收到的OOW位。在这方面,可以实施OOW分组以便直接触发EACK消息的生成和传输。本发明技术的这一方面可以如下以伪代码实施:
(1)如果存在在128位接收器窗口中接收到的OOO分组,则发送具有正确地反应接收到的状态的接收到的位图的EACK,并且设定OOW位。
(2)如果不存在在接收器窗口中接收到的其它OOO分组,则发送具有都是0的接收到的位图的EACK,并且设定OOW位。
在一些实例中,EACK方案可以向后兼容预先存在的系统。在这方面,发送器和接收器可以协商是否将使用ACK或EACK。如果任何一方不支持EACK,则可以使用ACK。在一些实例中,接收器可以发送EACK和ACK两者。
虽然前述示例描述了单个发射器与接收器之间的通信,但是每个发射器和接收器可以分别与任何数目的接收器和发射器通信。可以为每条通信线路(即,为每个发射器/接收器对)生成单独的位图。例如,如果发射器向两个接收器发射数据,则发射器可以生成两个位图,其中每个位图跟踪被传输到相应接收器的数据。
图7是图示可以由发射器实施的步骤的流程图700。如方框701所示,发射器可以将数据分组传输到接收器。发射器可以生成跟踪被发送到接收器的每个数据分组的发射器位图,如方框703所示。发射器可以接收指示哪些数据分组被接收器接收的接收器位图,如方框705所示。发射器可以通过将发射器位图与接收器位图进行比较来确定哪些传输的数据分组未被接收到,如方框707所示。然后,发射器可以重传未被接收到的数据分组,如方框709所示。
虽然本文的技术已经参考特定实施例进行了描述,但是应理解,这些实施例仅仅是说明本技术的原理和应用。因此,应理解,可以对说明性实施例进行许多修改,并且可以在不背离由所附权利要求限定的本技术的精神和范围的情况下想出其它布置。本文所述的操作不必以所述的确切顺序执行。而是,可以以不同的顺序或同时处理各种步骤,并且也可以添加或省略步骤。
除非另有说明,否则前述可替选系统、方法和示例不是相互排斥的,而是可以以各种组合实施以实现独特的优点。由于可以在不背离权利要求限定的主题的情况下利用以上讨论的特征的这些和其它变体和组合,所以实施例的前述描述应当通过说明的方式而不是通过对权利要求限定的主题的限制的方式进行。另外,提供本文所述的示例,以及措辞为“诸如”、“包括”等的条款,不应被解释为将权利要求的主题限于具体示例;相反,示例旨在仅说明许多可能实施例之一。此外,不同附图中相同的附图标记可以标识相同或相似的元件。

Claims (20)

1.一种网络设备,包括:
输入端口;
输出端口;以及
电路,所述电路耦合到所述输入端口和所述输出端口,所述电路被配置成:
生成包括第一多个数据位的发射器位图,所述第一多个数据位中的每个数据位提供多个数据分组中的相应一个经由网络被传输到第二网络设备的指示;
从所述第二网络设备接收包括第二多个数据位的接收器位图,所述第二多个数据位中的每个数据位提供接收到或未接收到所述多个数据分组中的相应一个的指示;以及
将所述发射器位图的数据位与所述接收器位图的数据位进行比较,以标识未接收到所述多个数据分组中的一个或多个数据分组。
2.根据权利要求1所述的网络设备,其中,所述电路被进一步配置成重传所述多个数据分组中未被接收到的所述一个或多个数据分组。
3.根据权利要求1所述的网络设备,其中,标识未接收到所述多个数据分组中的所述一个或多个数据分组包括:
确定由所述网络设备传输并被所述第二网络设备接收到的所述多个数据分组中的最新近数据分组;以及
将所述多个数据分组中在所述最新近数据分组之前被传输而未被接收到的数据分组标识为未接收到的所述一个或多个数据分组。
4.根据权利要求3所述的网络设备,其中,所述电路被进一步配置成重传所述一个或多个数据分组。
5.根据权利要求3所述的网络设备,其中,所述电路被进一步配置成重传所述一个或多个数据分组中在距所述最新近数据分组达阈值数目的数据分组之前被传输的数据分组。
6.根据权利要求1所述的网络设备,其中,所述电路被进一步配置成:
从所述输入端口接收从所述第二网络设备通过所述网络传达的确认消息,所述确认消息包括提供所述网络设备何时发送所述多个数据分组中的给定数据分组的指示的时间戳值;
比较所述时间戳值与一个或多个本地时间戳值,所述一个或多个本地时间戳值与所述网络设备先前发送到所述第二网络设备但未被确认为被所述第二网络设备接收到的一个或多个数据分组相关联;以及
重传所述一个或多个数据分组,针对所述一个或多个数据分组所述比较指示具有在时间上比所述时间戳值更早的本地时间戳值。
7.根据权利要求6所述的网络,其中,所述时间戳与嵌入在所述给定数据分组的报头中的rack_xmit_ts参数相关联。
8.根据权利要求7所述的网络设备,其中,所述第二网络设备返回所述rack_xmit_ts参数作为所述时间戳值。
9.根据权利要求8所述的网络设备,其中,所述时间戳值包括由所述网络设备发送并在所述第二网络设备处接收到的最新rack_xmit_ts参数的指示。
10.根据权利要求7所述的网络设备,其中,所述一个或多个本地时间戳值包括嵌入在由所述网络设备先前发送的所述一个或多个数据分组的报头中的一个或多个本地rack_xmit_ts参数。
11.根据权利要求6所述的网络设备,其中,所述电路被进一步配置成:
确定所述一个或多个数据分组中在时间上最早被发送的未被接收到的数据分组;以及
如果在预定时间内没有另外的数据分组被确认为被所述第二网络设备接收到,则向所述第二网络设备传输在时间上最早被发送的所述未被接收到的数据分组。
12.根据权利要求6所述的网络设备,其中,所述确认消息包括多个数据位,所述多个数据位提供所述网络设备发送的数据分组是否在所述第二网络设备处被接收到的指示。
13.根据权利要求1所述的网络设备,其中,所述网络设备为交换机、路由器或网络接口卡。
14.根据权利要求1所述的网络设备,其中,所述第二网络设备为交换机、路由器或网络接口卡。
15.根据权利要求1所述的网络设备,其中,所述电路包括存储器控制器,所述存储器控制器包括存储器和一个或多个处理器。
16.根据权利要求15所述的网络设备,其中,所述存储器存储所述发射器位图。
17.根据权利要求1所述的网络设备,其中,所述输出端口经由所述网络通信地耦合至所述第二网络设备。
18.一种网络接口卡,包括:
输入端口,所述输入端口通信地耦合至网络;
输出端口,所述输出端口通信地耦合至所述网络;以及
电路,所述电路耦合至所述输入端口和所述输出端口,所述电路被配置成:
将多个数据分组传输至网络设备;
从所述输入端口接收从所述网络设备通过所述网络传达的确认消息,所述确认消息包括时间戳值,所述时间戳值提供所述网络接口卡何时发送所述多个数据分组中的给定数据分组的指示;
比较所述时间戳值与一个或多个本地时间戳值,所述一个或多个本地时间戳值与所述网络接口卡先前发送到所述网络设备但未被确认为被所述网络设备接收到的一个或多个数据分组相关联;以及
重传所述一个或多个数据分组,针对所述一个或多个数据分组所述比较指示具有在时间上比所述时间戳值更早的本地时间戳值。
19.根据权利要求18所述的网络接口卡,其中,所述电路被进一步配置成:
生成包括第一多个数据位的发射器位图,所述第一多个数据位中的每个数据位提供所述多个数据分组中的相应一个被传输到所述网络设备的指示;
从所述网络设备接收包括第二多个数据位的接收器位图,所述第二多个数据位中的每个数据位提供指示接收到或未接收到所述多个数据分组中的相应一个的指示;以及
将所述发射器位图的数据位与所述接收器位图的数据位进行比较,以标识未接收到所述多个数据分组中的一个或多个数据分组。
20.根据权利要求19所述的网络接口卡,其中,所述接收器位图中的所述第二多个数据位中的至少一个数据位被设定为值0,指示未接收到所述多个数据分组中的所述给定数据分组,并且
其中,所述接收器位图中的所述第二多个数据位中的至少一数据位被设定为值1,指示接收到所述多个数据分组中的所述给定数据分组。
CN202310083980.5A 2022-08-03 2023-01-18 用于硬件可靠传送的早期重传 Pending CN116073962A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/879,853 US20240048277A1 (en) 2022-08-03 2022-08-03 Early Retransmission for Hardware Reliable Transport
US17/879,853 2022-08-03

Publications (1)

Publication Number Publication Date
CN116073962A true CN116073962A (zh) 2023-05-05

Family

ID=85251642

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310083980.5A Pending CN116073962A (zh) 2022-08-03 2023-01-18 用于硬件可靠传送的早期重传

Country Status (3)

Country Link
US (1) US20240048277A1 (zh)
EP (1) EP4318999A1 (zh)
CN (1) CN116073962A (zh)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6111892A (en) * 1998-07-29 2000-08-29 Motorola, Inc. Method and apparatus for conveying data packets in a communication system without using communication device timers to trigger data retransmission
US6928473B1 (en) * 2000-09-26 2005-08-09 Microsoft Corporation Measuring network jitter on application packet flows
US7733785B2 (en) * 2007-01-31 2010-06-08 International Business Machines Corporation Method and system for dynamically adjusting packet size to decrease delays of streaming data transmissions on noisy transmission lines
JP4924285B2 (ja) * 2007-08-23 2012-04-25 日本電気株式会社 通信装置、通信システム、転送効率向上方法及び転送効率向上プログラム
US20110228714A1 (en) * 2010-03-02 2011-09-22 Balash Akbari Method and system for retransmission in asm
US10432529B2 (en) * 2013-09-19 2019-10-01 Connectivity Systems Incorporated Enhanced large data transmissions and catastrophic congestion avoidance over IPv6 TCP/IP networks
US10511533B2 (en) * 2016-10-28 2019-12-17 Level 3 Communications, Llc Systems and methods for adjusting a congestion window value of a content delivery network
US10484146B2 (en) * 2017-03-23 2019-11-19 Qualcomm Incorporated Downlink retransmission under unreliable code block group (CBG) level ACK/NACK feedback
US10707995B2 (en) * 2017-06-29 2020-07-07 Qualcomm Incorporated Method and apparatus for downlink retransmission under unreliable code block group (CBG) level feedback
US10346226B2 (en) * 2017-08-07 2019-07-09 Time Warner Cable Enterprises Llc Methods and apparatus for transmitting time sensitive data over a tunneled bus interface
CN110677221B (zh) * 2018-07-02 2022-06-14 华为技术有限公司 重传控制方法、通信接口和电子设备
US10785161B2 (en) * 2018-07-10 2020-09-22 Cisco Technology, Inc. Automatic rate limiting based on explicit network congestion notification in smart network interface card
US11570660B2 (en) * 2020-03-18 2023-01-31 Connectify, Inc. Management of data communication connections

Also Published As

Publication number Publication date
EP4318999A1 (en) 2024-02-07
US20240048277A1 (en) 2024-02-08

Similar Documents

Publication Publication Date Title
US11934340B2 (en) Multi-path RDMA transmission
WO2021121370A1 (zh) 用于消息队列的消息丢失检测方法和装置
US9413652B2 (en) Systems and methods for path maximum transmission unit discovery
US10645176B2 (en) System and method to process packets in a transmission control protocol session
JPH11143845A (ja) ネットワークノード間のメッセージ送信用システム及び方法
CN110313138B (zh) 使用多个网元实现高可用性的相关方法和装置
US11133980B2 (en) Detecting sources of computer network failures
WO2020119347A1 (zh) 一种消息传输方法、装置、设备及介质
JP2005192216A (ja) トランスポートオフロードエンジンのための再送信システムおよび方法
US10601722B2 (en) Method and device for dynamically managing the message retransmission delay on an interconnection network
EP3235210A1 (en) Methods and first network node for managing a stream control transmission protocol association
US20050117515A1 (en) Transmitter device for controlling data transmission
US20230362098A1 (en) Rate Update Engine For Reliable Transport Protocol
US20070291782A1 (en) Acknowledgement filtering
CN114978433A (zh) 数据传输方法、装置、设备、存储介质及计算机程序产品
WO2005067258A1 (en) Method, system, and program for overrun identification
US11444882B2 (en) Methods for dynamically controlling transmission control protocol push functionality and devices thereof
EP4318999A1 (en) Early retransmission for hardware reliable transport
US10735248B2 (en) Cloudified N-way routing protection at hyper scale
JP4969421B2 (ja) 受信装置及び通信システム
EP3343875A1 (en) System and method to process packets in a transmission control protocol session
CN114760266A (zh) 虚拟地址生成方法、装置、计算机设备和计算机程序产品
CN117203627A (zh) 用于远程直接内存访问的设备和方法
CN115914144A (zh) 交换机的数据平面对存储设备的直接访问
CN116032853A (zh) 流量控制方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination