CN108234089B - 用于低时延通信的方法和系统 - Google Patents
用于低时延通信的方法和系统 Download PDFInfo
- Publication number
- CN108234089B CN108234089B CN201711289554.8A CN201711289554A CN108234089B CN 108234089 B CN108234089 B CN 108234089B CN 201711289554 A CN201711289554 A CN 201711289554A CN 108234089 B CN108234089 B CN 108234089B
- Authority
- CN
- China
- Prior art keywords
- packet
- packets
- loss detection
- message packet
- remote device
- 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
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/08—Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements 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/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1867—Arrangements specially adapted for the transmitter end
- H04L1/189—Transmission or retransmission of more than one copy of a message
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0823—Errors, e.g. transmission errors
- H04L43/0829—Packet loss
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0078—Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
- H04L1/0086—Unequal error protection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements 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/1607—Details of the supervisory signal
- H04L1/1685—Details of the supervisory signal the supervisory signal being transmitted in response to a specific request, e.g. to a polling signal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements 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/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1867—Arrangements specially adapted for the transmitter end
- H04L1/188—Time-out mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements 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/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1867—Arrangements specially adapted for the transmitter end
- H04L1/1896—ARQ related signaling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
-
- 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/34—Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本申请涉及低时延通信。提供了用于降低通信时延的系统和方法。与远程设备的通信会话被发起。一个或多个消息分组被发送到远程设备。随后,确定是否有任何附加消息分组被调度为发送到远程设备。在没有附加消息分组被调度为发送到远程设备的情况下,将丢失检测分组追加到最后一个消息分组。最后一个消息分组和丢失检测分组被发送到远程设备。基于确认消息的接收,进一步确定最后一个消息分组是否由远程设备成功接收。在最后一个消息分组没有被成功发送的情况下,执行最后一个消息分组的重传。
Description
技术领域
本发明的实施例一般而言涉及通信网络,并且更具体地涉及检测和重传在通信网络上被丢弃的数据分组。
背景技术
常规的基于分组的网络被设计为支持经不可靠的通信网络进行可靠的数据传送。虽然这种网络可以以合理的成本实现高性能,但是系统设计者和终端用户都预料到一些分组偶尔会被丢弃。虽然存在用于被丢弃的分组的重传的一些恢复机制,但是仍然会出现很长的延迟并且应用性能受损。
在一些实例中,被丢弃的分组可以造成大约250-300ms的延迟。对于时延关键的操作(诸如块存取存储),已经开发了各种解决方案。但是,由于这些解决方案的显著的缺点,这些解决方案还没有被广泛实现。例如,已经开发出很少丢弃数据分组的专用网络,诸如数据中心以太网(“DCE”)、InfiniBand等。但是,这些实现当前具有规模限制、需要专门的交换机、以及要不然就是实现起来昂贵。因此,这些专用网络还没有被广泛部署。
发明内容
本发明的实施例一般而言涉及用于降低分组时延的系统和方法,这些系统和方法大大改进了现有技术通信网络。
实施例的特征和优点在下面的描述中阐述、或者从描述中将是明显的、或者可以通过实践本发明而得知。
例如,提供了用于降低通信时延的系统和方法。与远程设备的通信会话被发起。一个或多个消息分组被发送到远程设备。随后,确定附加消息分组是否被调度为发送到远程设备。在没有附加消息分组被调度为发送到远程设备的情况下,两个丢失检测分组被追加到最后一个消息分组。最后一个消息分组和丢失检测分组被发送到远程设备。基于确认消息,进一步确定最后一个消息分组是否由远程设备成功接收到。在消息分组没有被成功发送的情况下,执行丢失的消息分组的重传。
附图说明
结合附图,根据以下对优选实施例的详细描述,其它实施例、细节、优点和修改将变得明显。
图1是包括实现本发明的实施例和/或与本发明的实施例交互的网络元件的网络系统的概况图。
图2是根据本发明的示例实施例的计算机服务器/系统的框图。
图3示出了根据本发明的示例实施例的示例分组流。
图4示出了根据本发明的示例实施例的、用于降低通信时延的流程图。
图5是根据示例实施例的、包括在客户端和服务器之间交换的请求分组和响应分组的示例序列的分组时序图。
图6是根据示例实施例的、包括在客户端和服务器之间交换的消息分组的示例序列的分组时序图。
具体实施方式
提供了用于降低通信时延的系统和方法。如果在通信会话中没有其它消息分组被调度以被发送,那么本发明的实施例将一个或多个丢失检测分组追加(append)到消息分组(例如,会话层请求或响应)。丢失检测分组被用来快速识别时间敏感的分组和/或其它重要分组的丢失。如果丢失检测分组中的任何丢失检测分组在通信信道内实际上丢失或被丢弃,那么它对于应用几乎没有影响或者没有影响,因为丢失检测分组通常是不携带时延关键的应用数据的诱饵(decoy)分组。但是,如果网络丢弃通信会话流中的最后一个数据分组或倒数第二个数据分组,那么丢失检测分组的接收触发在通信网络中正被使用的适用的通信协议的重传过程。
在各种实施例中,与远程设备的通信会话被发起。一个或多个消息分组被发送到远程设备。随后,确定是否有任何附加消息分组被调度为发送到远程设备。在没有附加消息分组被调度为发送到远程设备的情况下,丢失检测分组被追加到最后一个消息分组。最后一个消息分组和丢失检测分组被发送到远程设备。基于确认消息的接收,进一步确定最后一个消息分组是否由远程设备成功接收。在最后一个检测分组没有被成功接收的情况下,执行最后一个消息分组的重传。因此,示例实施例可以较容易地检测丢失的消息分组,并且由此提高通信网络的吞吐量。
本发明的实施例提供了在使用现有的且广泛实现的通信网络的同时降低通信时延的系统和方法。被称为尾部丢失探测(“TLP”)的另一种技术也已经被提出。在TLP中,发送方设置针对来自接收方的确认的超时。如果发送方在预定时间内没有接收到确认,那么发送方重新发送第一个未被确认的分组。TLP具有仅发送方做出任何改变的优点,但是具有发送方不能针对短持续时间来设置其定时器的缺点。定时器必须被设置为连接的平滑往返时间的持续时间的至少两倍,以考虑延迟确认。此外,设置和测试短截止期限定时器是昂贵的。最后,TLP对接收方使用的延迟确认算法敏感。相比之下,本发明的实施例显著更快地从分组丢失中恢复,并且没有设置和取消定时器的开销,并且对接收方的延迟确认算法没有任何要求。
在各种实施例中,术语“消息分组”被使用,并且可以被普通技术人员理解为包括在网络上的通信装备之间交换的请求分组、响应分组以及任何分组数据。例如,消息分组可以包括协议数据单元(“PDU”)或会话层PDU。在分层系统内,消息分组可以包括经由下一个较低层提供的服务在给定层的实体之间交换的信息,以协调它们的联合操作。在另一个示例中,消息分组可以表示会话层消息以及传输控制协议段。
图1是包括实现本发明的实施例和/或与本发明的实施例交互的网络元件的网络系统100的概况图。
网络系统100包括客户端设备102、网络114和服务提供商网络122,客户端设备102被配置为使用一个或多个通信协议与服务器116交换分组数据。在客户端设备102内,分组数据可以由一个或多个应用104生成。示例应用包括块存取存储、音频和/或视频流传输、音频和/或视频电话、应用流传输等。此外,例如,可以使用提供根据各种通信协议的通信功能的一个或多个网络协议层110来对分组数据进行编码、解码或以其它方式进行配置。
服务器116被配置为与客户端设备102交换分组数据。例如,服务器116可以被配置为响应客户端设备102的请求。此外,客户端设备102可以经由服务器116与服务提供商网络122中的相应的后端服务器124传送分组数据。后端服务器124可以包括用于数据存储、块存取存储、云计算等的各种服务器。在服务器侧,例如,可以使用提供根据各种通信协议的通信功能的一个或多个网络协议层120来对分组数据进行编码、解码或以其它方式进行配置。
客户端设备102和服务器116中的每一个可以是用于通信的任何电子设备,诸如智能手机、平板电脑、膝上型计算机、服务器、电视机等。从纯数据到实时媒体的不同类型的分组数据可以穿过网络系统100。一般而言,一些数据可以对吞吐量敏感,而其它数据(诸如实时媒体)可以对时延敏感。在通常被称为TCP/IP的传输控制协议(“TCP”)和互联网协议(“IP”)内,只要客户端设备102继续产生请求,服务器116就可以快速地检测丢失的分组。例如,通过使用TCP/IP快速重传算法,服务器116检测分组的丢失并且向客户端设备102确认最后接收到的序列号。如果客户端设备102接收到同一序列号的多个(例如,三个)确认,那么客户端设备102重传缺失的分组。如果客户端设备102在发送请求时暂停,那么会话流中的最后一个分组或倒数第二个分组的丢失会阻止服务器116接收完整的请求,直到TCP/IP重传定时器到期为止,这通常是几百毫秒(例如,300ms)。重传定时器通常被设置为具有如此长的持续时间,因为它应当比延迟确认定时器(例如,150ms)长。因此,比通常的时延高几个数量级(例如,数千倍)的偶尔的时延频繁发生。
网络114、服务提供商网络122和网络系统100的其它部件可以利用各种通信协议,这些通信协议包括互联网、以太网、广域网(“WAN”)、存储系统中的架构(fabrics)、有线协议和无线协议、以及其它已知或预期的网络系统。此外,这些实施例使得时延关键应用能够使用常规网络,诸如以太网网络。通信协议可以包括TCP/IP。通过引用并入本文的互联网RFC 793一般性地描述了TCP/IP功能,并且同样通过引用并入本文的互联网RFC 5681一般性地描述了TCP拥塞控制。虽然本发明的实施例一般而言是结合TCP/IP进行描述的,但是本发明不限于此,而是可以应用于各种网络类型。
作为TCP/IP内的直接实现的替代,可以使用结合TCP/IP的其它实现。例如,远程直接存储器访问(“RDMA”)实现可以被分层(layer)在TCP/IP上,诸如互联网广域RDMA协议(“iWARP”)。通过引用并入本文的RFC 5040一般性地描述RDMA功能。在不实现本发明的实施例的情况下,由于丢失的分组iWARP请求偶尔可以产生正常情况的数千倍的时延。因此,可以将实施例应用于iWARP,以提供更可靠的通信并且一致地改进通信时延。
可替代地,可以使用互联网小型计算机系统接口(“iSCSI”)。通过引用并入本文的RFC 3720一般性地描述了iSCSI功能。对于iSCSI,只要iSCSI实现在每个请求和响应结束时断言(assert)推送确认(“PSH”),丢失检测分组就可以作为TCP/IP会话选项被追加。此外,可以使用架构上的非易失性存储器(“NVMe”)。NVMe存储协议可以在诸如InfiniBand、融合以太网上的RDMA(“RoCE”)和iWARP之类的RDMA架构上执行。
在又一个替代方案中,网络文件系统(“NFS”)协议可以经TCP/IP来实现。在NFS实施例中,基于NFS的客户端设备可以插入一个或多个空协议请求,并且基于NFS的服务器可以插入一个或多个空协议响应,以生成丢失检测分组。因此,丢失检测分组阻止基于NFS的客户端经历由于数据分组的丢失引起的TCP重传定时器到期导致的非常长的延迟。
大多数以太网网络接口控制器(“NIC”)和TCP卸载(offload)引擎(“TOE”)实现一组无状态卸载。例如,典型的卸载包括校验和卸载、分段卸载、接收侧缩放和接收侧聚合(coalescing)(“RSC”,也被称为大接收卸载(“LRO”))。Linux还利用被称为广义接收卸载(“GRO”)的软件实现。本发明的实施例可以结合这些卸载机制中的任何卸载机制来实现。例如,RSC在接收TCP/IP堆栈接收到数据包之前合并数据包。如果RSC将两个丢失检测分组合并或者将流的最后一个分组与丢失检测分组合并,那么接收侧将不发送足够数量的重复ACK分组来触发快速重传。为了克服这个问题,丢失检测分组与RSC的互操作需要设置流的最后一个分组和两个丢失检测分组上的PSH位。
对于在TCP/IP级别以上的实现,实施例可以控制或修改会话的分组结构,以确保TCP实现在需要时生成多个丢失检测分组。常规的TCP/IP套接字应用程序接口(“API”)不提供对应用流的跨分组的划分的控制。但是,实施例可以在可以对分组划分施加控制的内核空间应用内应用、在使用专用TCP/IP实现(诸如Intel数据平面开发套件(“DPDK”))的用户空间应用内应用或者在实现高级别协议(诸如iWARP或iSCSI)的专用NIC上应用。这些网络环境中的每个网络环境都提供了对分组中的数据放置的充分控制,以生成丢失检测分组。
不管使用的通信协议如何,当没有附加请求被调度时,在一些实施例中,小的丢失检测分组都可以被追加到请求,每个丢失检测分组在单个单独的分组中被编码。如果网络114丢弃包括丢失检测分组的数据分组,那么触发重传过程(例如,TCP/IP快速重传)。通过引用并入本文的RFC 6298一般性地描述了重传超时过程。在这样的实现中,丢失检测分组可以被丢弃。可替代地,可以使用丢失检测分组来发送非时间敏感的非关键数据和/或其它数据。如果使用丢失检测分组来发送分组数据,那么不轻易丢弃丢失检测分组。
图2是根据本发明的实施例的计算机服务器/系统(即,系统10)的框图。系统10可以被用来根据需要实现图1中所示的网络元件中的任何网络元件,以便实现下面详细公开的本发明实施例的功能中的任何功能。虽然被示为单个系统,但是系统10的功能可以被实现为分布式系统。另外,本文公开的功能可以在可以通过网络耦接在一起的分开的服务器或设备上实现。附加地,可以不包括系统10的一个或多个部件,并且可以使用替代配置。例如,对于图1的服务器116的功能而言,系统10可以是一般不需要图2中所示的显示器24或一个或多个其它部件的服务器。
系统10包括用于传送信息的总线12或其它通信机制、以及耦接到总线12用于处理信息的处理器22。处理器22可以是任何类型的通用或专用处理器。系统10还包括用于存储信息和要由处理器22执行的指令的存储器14。存储器14可以包括随机存取存储器(“RAM”)、只读存储器(“ROM”)、静态存储装置(诸如磁盘或光盘)或任何其它类型的非暂态介质或计算机可读介质的任何组合。系统10还包括通信设备20(诸如网络接口卡),以提供对网络的访问。因此,用户可以直接与系统10对接,或者通过网络或任何其它方法远程对接。
计算机可读介质可以是可以由处理器22访问的任何可用介质,并且计算机可读介质包括易失性介质和非易失性介质、可移动介质和不可移动介质以及通信介质。通信介质可以包括计算机可读指令、数据结构、程序模块或者经调制的数据信号(诸如载波或其它运输机制)中的其它数据,并且包括任何信息递送介质。
处理器22还可以经由总线12耦接到显示器24,诸如液晶显示器(“LCD”)。键盘26和光标控制设备28(诸如计算机鼠标)还可以耦接到总线12,以使得用户能够根据需要与系统10对接。
在一个实施例中,存储器14存储在由处理器22执行时提供功能的软件模块。模块包括为系统10提供操作系统功能的操作系统15。模块还包括用于提供诱饵或丢失检测分组以及本文公开的所有其它功能的丢失检测模块16。在一个示例实施例中,丢失检测模块16可以结合图2的一个或多个其余元件来实现图1的服务器116。系统10可以是较大系统(诸如来自Oracle公司的“闪存存储系统”的添加的功能)的一部分。因此,系统10可以包括一个或多个附加功能模块18,以包括附加功能。数据库17耦接到总线12,以便为丢失检测模块16和附加功能模块18提供集中式存储。
在一个实施例中,丢失检测模块16和/或附加功能模块18可以包括建立模块,该建立模块使用一个或多个丢失检测分组在客户端设备与服务器之间建立通信会话。例如,丢失检测模块16可以被配置为如果在通信会话中没有其它消息分组被调度以被发送,则将一个或多个丢失检测分组追加到消息分组。丢失检测分组被用来更快地识别对时间敏感的消息分组和/或其它重要消息分组的丢失。丢失检测分组被用来触发在通信网络中正在使用的适用的通信协议的重传过程。
图3示出了根据本发明的示例实施例的示例分组流。
如图3所示,数据分组流300包括消息分组310.0-310.N以及丢失检测分组320.1和320.2。每个分组可以包括目的地地址311、321,源地址312、322,序列号313、323和数据负载314、324。对于丢失检测分组320.1和320.2,包括数据负载324是可选的。例如,丢失检测分组320.1和320.2可以被用来发送对时间不敏感的非关键数据和/或其它数据。可替代地,丢失检测分组320.1和320.2可以是简化的诱饵分组,这些诱饵分组仅被用来确定消息分组310.0-310.N是否已被丢弃。
依赖于正在使用的通信协议,通信会话的客户端侧设备和服务器侧设备协商丢失检测分组的格式。在TCP/IP中,例如,当TCP/IP客户端发送设置了PSH标志的数据分组时,TCP/IP通信协议可以追加接收服务器默默丢弃的多个(例如,两个)附加的一字节丢失检测分组。使用两个丢失检测分组可以是优选的,以确保接收到足够数量的确认消息来触发快速重传。使用两个或更多个丢失检测分组不会妨碍网络性能,这是因为它们的尺寸小。在这样的实现中,防止丢失分组中的每个防止丢失分组包含一个字节,以便增加TCP/IP序列号以及引发分组丢失重传算法。在TCP/IP中,序列号313、323被计算为添加到最后一个分组的长度的最后一个序列号。
虽然实施例介绍了附加丢失检测分组320.0和320.1的使用,但是它们的使用对于网络性能的影响可以忽略不计。现代以太网NIC和TOE每秒容易地处理数百万个分组。因此,以太网NIC或TOE可以容易地处理附加的丢失检测分组而不会损害数据传输速率。
图4示出了根据本发明的示例实施例的、用于减少通信时延的功能400的流程图。在一些实例中,图4的流程图的功能由存储在存储器或其它计算机可读或有形介质中的软件来实现,并且由处理器执行。在其它实例中,功能可以由硬件(例如,通过使用专用集成电路(“ASIC”)、可编程门阵列(“PGA”)、现场可编程门阵列(“FPGA”)等)或硬件和软件的任何组合来执行。
在410,功能400发起客户端设备和远程设备之间的通信会话。本发明的实施例可以与各种通信协议结合使用。这些通信协议可以包括TCP/IP、RDMA、iSCSI、架构上的NVMe(NVMe over fabrics)、架构上的RDMA(诸如InfiniBand、RoCE和iWARP)以及其它通信协议。
一旦通信会话已经建立,功能400就从客户端设备向远程设备发送一个或多个消息分组。在客户端设备和远程设备之间交换的请求和响应数据分组可以是各种应用的一部分,这些应用诸如块存取存储、音频和/或视频流、音频和/或视频电话、应用流传输以及任何其它响应/请求类型应用。
随后,在430,功能400(例如,图2的丢失检测模块16)确定是否有任何附加消息分组被调度为发送到远程设备。在一个或多个附加消息分组被调度为发送到远程设备的情况下,功能400返回到420,以用于将消息分组从客户端设备发送到远程设备。否则,在没有附加消息分组被调度为发送到远程设备的情况下,在440,一个或多个丢失检测分组被追加到最后一个消息分组。在这里,最后一个消息分组和丢失检测分组被发送到远程设备。
在450,功能400进一步确定最后一个消息分组是否由远程设备成功接收。功能400可以基于确认消息来确定丢失检测分组是否被成功接收。在丢失检测分组没有被成功接收的情况下,在455,执行最后一个消息分组和丢失检测分组的重传。例如,如果客户端设备接收到具有相同序号的多个(例如,三个)确认,那么客户端设备重传被认为缺失的消息分组。最后一个消息分组可以在它的前一次传输的100微秒或更少的时间内被重传。例如,重传过程可以包括TCP/IP快速重传。否则,在丢失检测分组被成功发送的情况下,功能460在460终止通信会话。
图5是根据示例实施例的、包括在客户端设备502和服务器516之间交换的请求分组和响应分组的示例序列的分组时序图500。图5包括网络元件,诸如客户端设备502和服务器516,如本文参考图1所描述的(图1中的客户端设备102和服务器116)。
在510,客户端设备502向服务器516发送一个或多个配置请求分组520(例如,消息分组)。进而,服务器516用一个或多个配置响应消息521来响应配置请求分组520。配置请求分组520和配置响应分组521使得客户端502和服务器516能够建立通信会话523。本发明的实施例可以结合各种通信协议使用,这些通信协议诸如TCP/IP、RDMA、iSCSI、架构上的NVMe、架构上的RDMA(诸如InfiniBand、RoCE和iWARP)和其它通信协议。
一旦建立了通信会话523,客户端设备502就向服务器516发送一个或多个请求分组524。进而,服务器516用一个或多个响应消息525来响应请求分组524。请求分组524和响应消息525可以是各种应用的一部分,这些应用诸如块存取存储、音频和/或视频流传输、音频和/或视频电话、应用流传输以及任何其它响应/请求应用。
随后,客户端设备502的丢失检测模块确定是否有任何附加请求分组被调度为发送到远程设备。如果没有附加请求分组被调度,那么将一个或多个丢失检测分组追加到最后一个请求分组526。在这里,最后一个请求分组和丢失检测分组256被发送到服务器516。
最后,客户端设备502的丢失检测模块进一步确定丢失检测分组526是否被服务器516成功接收。例如,当相同序列号的多个(例如,三个)确认被接收时,客户端设备502确定丢失检测分组526是否没有被成功接收。在丢失检测分组526没有被成功接收的情况下,在528,重传最后一个请求分组和追加的丢失检测分组。在这里,例如,可以使用TCP/IP快速重传算法。
图6是根据示例实施例的、包括在客户端设备602和服务器616之间交换的消息分组的示例序列的分组时序图600。图6包括网络元件,诸如客户端设备602和服务器616,如本文参考图1所描述的(图1中的客户端设备102和服务器116)。
每个消息分组610、620、630可以包括用于序列号(图6中的“SN”)和长度(图6中的“L”)(诸如字节数)的字段。确认消息640、660、680还包括被确认的消息分组或由服务器616接收的最后一个消息分组的序列号。此外,每个丢失检测分组650、670可以包括用于序列号和长度(例如,一个字节)的字段。虽然在图6中未示出,但是各种消息分组类型中的每个消息分组类型还包括如上面在图3中描述的用于源地址、目的地地址的字段和其它字段。
客户端设备602可以将消息分组610、620、630发送到服务器616。客户端设备602还发送丢失检测分组650、670。进而,服务器616用一个或多个确认消息640、650、660来响应消息分组610、620、630。在这里,在这个特定示例中,消息分组630在向服务器616的传输期间被丢弃。因此,客户端602接收到消息分组620的多个确认。当相同序列号的多个(例如,三个)确认被接收时,客户端设备602确定消息分组(例如,消息分组620)是否没有被成功接收。接收到第三个重复的确认消息导致具有在1040之后的序列号的消息分组(包括消息分组630)的快速重传。
在示例分组序列600中,在接收到消息分组610、620之后,服务器616用确认分组640来确认它们,从而指示服务器616已经接收到直至序列号1040。服务器616从未接收到消息分组630。一旦接收到具有序列号1117的丢失检测分组650,服务器616就发送重复确认分组660,从而再次指示它仅接收到直到序列号1040的数据。客户端设备602发送丢失检测分组670。在接收到丢失检测分组670后,服务器616发送针对序列号1040的另一个重复确认分组680。客户端设备602现在已经接收到针对序列号1040的三个确认,并且通过重传在序列号1040之后的缺失的(一个或多个)分组消息和/或丢失检测分组来进行响应。通过应用本发明的实施例,尽管消息分组630丢失,但是客户端设备602以最小的延迟将消息分组610、620、630传送到服务器616。
本文描述的各种实施例可以使用硬件和软件的组合来实现。例如,可以使用C语言应用来实现实施例,该C语言应用经TCP套接字生成从客户端设备到服务器的一个或多个消息。在这个示例中,C语言应用设置TCP_NODELAY参数,以禁用将小传送聚集为分组的标准Nagle算法。C语言应用生成从客户端设备到服务器的消息,并且等待一个字节的响应。可选地,客户端设备可以生成两个虚拟的一字节分组。用于发送丢失检测分组的示例伪代码如下:
while(有PDU要发送)then
发送下一个PDU的分组;
发送两个丢失检测分组;
if(接收到指示丢失分组的确认分组)then
重传缺失的分组;
如本文所描述的,提供了用于降低通信时延的系统和方法。如果在通信会话中没有其它消息分组被调度以被发送,那么本发明的实施例将一个或多个丢失检测分组追加到消息分组。丢失检测分组被用来更快地识别时间敏感的分组和/或其它重要分组的丢失。如果丢失检测分组中的任何丢失检测分组在通信信道内实际上丢失或被丢弃,那么它对于应用几乎没有影响或没有影响,因为丢失检测分组通常是诱饵分组。但是,如果网络丢弃通信会话流中的最后一个数据分组或倒数第二个数据分组,那么丢失检测分组被用来触发在通信网络中正在使用的适用的通信协议的(例如,在100微秒或更少的时间内的)重传过程。
对于本领域技术人员而言将明显的是,在不背离本公开的精神或范围的情况下,可以对本公开的丢失检测分组的添加进行各种修改和变型。因此,旨在本公开覆盖本公开的修改和变型,只要它们落入所附权利要求及其等价物的范围内。
Claims (10)
1.一种计算机实现的方法,包括:
发起与远程设备的通信会话;
向所述远程设备发送多个消息分组;
确定是否有任何附加消息分组被调度为发送到所述远程设备;
在没有附加消息分组被调度为发送到所述远程设备的情况下,将两个或更多个丢失检测分组追加到最后一个消息分组并且将所述最后一个消息分组和所述两个或更多个丢失检测分组发送到所述远程设备,其中所述丢失检测分组包括传输控制协议/因特网协议(TCP/IP)层丢失检测分组;
基于接收到一个或多个确认消息,确定所述最后一个消息分组是否由所述远程设备成功接收;以及
在所述最后一个消息分组没有被成功接收的情况下,执行所述最后一个消息分组的重传,其中当识别在所述最后一个消息分组紧前的消息的至少三个确认消息被接收到时,确定所述最后一个消息分组没有被成功接收到。
2.如权利要求1所述的方法,其中发送的消息分组、丢失检测分组和接收的确认消息是经由TCP套接字传送的,确定是否有任何附加消息分组被调度为发送到所述远程设备包括确定是否有任何附加协议数据单元(PDU)被调度为发送到所述远程设备。
3.如权利要求1所述的方法,其中所述重传基于接收到的识别在所述最后一个消息分组紧前的消息的所述至少三个确认消息而使用TCP/IP快速重传来执行,并且所述最后一个消息分组在前一次传输的100ms以内被重传。
4.如权利要求1所述的方法,其中所述两个或更多个丢失检测分组不追加到所述最后一个消息分组之前的传输的消息分组。
5.如权利要求1所述的方法,其中所述通信会话利用以下通信协议之一:TCP/IP、RDMA、iSCSI、架构上的NVMe、架构上的RDMA、InfiniBand、RoCE或iWARP。
6.如权利要求1所述的方法,其中所述至少三个确认消息基于分组序列号来识别所述最后一个消息分组紧前的消息。
7.如权利要求1所述的方法,其中所述丢失检测分组由一字节分组组成。
8.如权利要求1所述的方法,其中,发送的所述最后一个消息分组被丢弃使得所述远程设备不能成功接收所述最后一个消息分组,并且识别在所述最后一个消息分组紧前的消息的所述至少三个确认消息指示发送的所述最后一个消息分组已被丢弃。
9.一种存储一个或多个程序的非暂态计算机可读存储介质,所述一个或多个程序在由处理器执行时使得所述处理器执行如权利要求1-8中的任一项所述的方法。
10.一种计算机实现的系统,包括:
处理器;以及
存储器,所述存储器存储一个或多个程序,所述一个或多个程序在由处理器执行时使得所述处理器执行如权利要求1-8中的任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/374,351 US10461892B2 (en) | 2016-12-09 | 2016-12-09 | Low latency communications |
US15/374,351 | 2016-12-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108234089A CN108234089A (zh) | 2018-06-29 |
CN108234089B true CN108234089B (zh) | 2022-01-25 |
Family
ID=62201598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711289554.8A Active CN108234089B (zh) | 2016-12-09 | 2017-12-08 | 用于低时延通信的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10461892B2 (zh) |
CN (1) | CN108234089B (zh) |
DE (1) | DE102017222299A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114521317B (zh) * | 2020-04-20 | 2024-06-21 | 华为技术有限公司 | 用于首选数据包的选择性多数据包传输的装置和方法 |
US11595472B2 (en) | 2021-01-19 | 2023-02-28 | Mellanox Technologies, Ltd. | Controlling packet delivery based on application level information |
US11792139B2 (en) | 2022-01-24 | 2023-10-17 | Mellanox Technologies, Ltd. | Efficient packet reordering using hints |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU4478697A (en) * | 1996-09-30 | 1998-04-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for selectively transmitting packets of message data to a remote communication station |
EP0973294A2 (en) * | 1998-06-29 | 2000-01-19 | Microsoft Corporation | Method and computer program product for efficiently and reliably sending small data messages from a sending system to a large number of receiving systems |
EA199900806A1 (ru) * | 1998-01-07 | 2000-04-24 | Покетсайенс, Инк. | Система и способ для обмена данными (варианты) и способ связи |
CN1914844A (zh) * | 2003-12-29 | 2007-02-14 | 韩国电子通信研究院 | 移动通信系统中重传分组的方法和其上记录程序的计算机可读介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6611519B1 (en) * | 1998-08-19 | 2003-08-26 | Swxtch The Rules, Llc | Layer one switching in a packet, cell, or frame-based network |
US20050058149A1 (en) * | 1998-08-19 | 2005-03-17 | Howe Wayne Richard | Time-scheduled and time-reservation packet switching |
US6999465B2 (en) * | 2001-02-22 | 2006-02-14 | Motorola, Inc. | Methods for reliably sending IP multicast packets to multiple endpoints of a local area network |
WO2003083679A1 (en) * | 2002-03-25 | 2003-10-09 | Netli, Inc. | System for fast recovery from losses for reliable data communication protocols |
US8451817B2 (en) * | 2003-07-24 | 2013-05-28 | Cisco Technology, Inc. | Method and apparatus for processing duplicate packets |
US7477675B2 (en) * | 2004-09-30 | 2009-01-13 | Kyocera Corporation | Data communication apparatus |
US7496038B2 (en) * | 2005-12-12 | 2009-02-24 | International Business Machines Corporation | Method for faster detection and retransmission of lost TCP segments |
US8819512B1 (en) * | 2008-01-19 | 2014-08-26 | Appex Networks Holding Limited | Method for detecting TCP packet losses and expediting packet retransmission |
FR2926939A1 (fr) * | 2008-01-30 | 2009-07-31 | Canon Kk | Procede de transmission de donnees avec anticipation des acquittements, dispositif d'entree, produit programme d'ordinateur et moyen de stockage correspondants |
CN102143137A (zh) * | 2010-09-10 | 2011-08-03 | 华为技术有限公司 | 媒体流发送及接收方法、装置和系统 |
US9432251B2 (en) * | 2013-03-08 | 2016-08-30 | Qualcomm Incorporated | Enhanced acknowledgement and retransmission mechanism |
KR102025757B1 (ko) * | 2013-07-10 | 2019-09-27 | 삼성전자주식회사 | 데이터 전송 방법 및 장치, 데이터 수신 방법 및 장치 및 기록 매체 |
US9843530B2 (en) * | 2015-12-15 | 2017-12-12 | International Business Machines Corporation | System, method, and recording medium for queue management in a forwarder |
-
2016
- 2016-12-09 US US15/374,351 patent/US10461892B2/en active Active
-
2017
- 2017-12-08 CN CN201711289554.8A patent/CN108234089B/zh active Active
- 2017-12-08 DE DE102017222299.9A patent/DE102017222299A1/de active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU4478697A (en) * | 1996-09-30 | 1998-04-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for selectively transmitting packets of message data to a remote communication station |
EA199900806A1 (ru) * | 1998-01-07 | 2000-04-24 | Покетсайенс, Инк. | Система и способ для обмена данными (варианты) и способ связи |
EP0973294A2 (en) * | 1998-06-29 | 2000-01-19 | Microsoft Corporation | Method and computer program product for efficiently and reliably sending small data messages from a sending system to a large number of receiving systems |
CN1914844A (zh) * | 2003-12-29 | 2007-02-14 | 韩国电子通信研究院 | 移动通信系统中重传分组的方法和其上记录程序的计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
DE102017222299A1 (de) | 2018-06-14 |
US20180167168A1 (en) | 2018-06-14 |
CN108234089A (zh) | 2018-06-29 |
US10461892B2 (en) | 2019-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11641387B2 (en) | Timely delivery of real-time media problem when TCP must be used | |
US11934340B2 (en) | Multi-path RDMA transmission | |
CN108494782B (zh) | 一种基于udp的数据传输方法、终端设备及存储介质 | |
JP6023368B1 (ja) | インタラクティブなリアルタイムメディアの転送プロトコル | |
WO2017050216A1 (zh) | 一种报文传输方法及用户设备 | |
EP2661029B1 (en) | Avoiding Delayed Data | |
CN108234089B (zh) | 用于低时延通信的方法和系统 | |
WO2019128964A1 (zh) | 一种实现丢包检测的方法、装置和系统 | |
US9049015B2 (en) | Allowing TCP ACK to pass a gateway while queuing data for parsing | |
CN112383622B (zh) | 用于数据中心联网的可靠传输协议和硬件架构 | |
US8607114B2 (en) | Communication device and communication method | |
CN104104608B (zh) | 接收报文的方法及装置 | |
US20240056224A1 (en) | Dynamic management of packet loss | |
JP7067544B2 (ja) | 通信システム、通信装置、方法およびプログラム | |
EP3939191B1 (en) | Device and method for delivering acknowledgment in network transport protocols | |
CN102917076A (zh) | 基于冗余编码的http报文传输、发送和接收方法 | |
WO2023078222A1 (zh) | 数据传输方法、装置、设备和介质 | |
US20210359787A1 (en) | Communication protocol packet retransmission | |
EP3613164B1 (en) | Device and method for monitoring a tcp connection | |
WO2023011712A1 (en) | A device and method for remote direct memory access |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |