首页> 中国专利> 用于首选数据包的选择性多数据包传输的装置和方法

用于首选数据包的选择性多数据包传输的装置和方法

摘要

公开了一种用于首选数据包的选择性多数据包传输的设备和方法。在本公开中,该设备用于从待发送的多个连续数据包中识别数据包;以及,与多个连续数据包中的其他数据包一起,通过网络多次重复发送该识别出的数据包。该识别出的数据包(也称为“首选数据包”)对于发送该数据包的应用,是包含关键数据的数据包。举例来说,识别出的数据包可以对应于每个远程直接内存访问(remote direct memory access,RDMA)事务的第一个数据包,或者在基于远程直接内存访问(RDMA)的无限带宽(InfiniBand)中对应于包括扩展传输头(extended transport header,ETH)的数据包。通过提前对该识别出的数据包进行多次重复发送,可以在对该识别出的数据包的较大接收概率下实现较低的递送时间。

著录项

  • 公开/公告号CN114521317A

    专利类型发明专利

  • 公开/公告日2022-05-20

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN202080066920.7

  • 申请日2020-04-20

  • 分类号H04L1/08;H04L1/18;

  • 代理机构广州三环专利商标代理有限公司;

  • 代理人易浩球

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-06-19 15:22:57

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-05-20

    公开

    国际专利申请公布

说明书

技术领域

本公开涉及通信系统,并且更具体地但非排他地,涉及一种用于首选数据包的选择性多数据包传输的装置和方法。

背景技术

诸如传输控制协议(transport control protocol,TCP)的可靠传输协议已经部署了许多年。通过使用从接收方到发送方(transmitter/sender)的肯定应答(acknowledgment,ACK)消息保证这些协议的可靠性,该ACK消息用于已经被接收器成功接收的数据包。对未被肯定应答的数据包进行重传。

现有常见的重传方法有回退n帧(Go-back-N)和选择性重传(selective repeat)。在Go-Back-N方法中,发射器保留未被肯定应答的(最多N个)数据包的集合,其中N是预定义的数据包数量。在特定数据包发生超时且未接收到ACK时,或者是在接收到对特定数据包的否定应答(negative ACK,NACK)时,将重传全部的(最多)N个未被肯定应答的数据包。

图1A示意性地示出了Go-back-N重传方法的示例,其中以N=3为例。发射器110向接收器111发送多个数据包101、102、103、和104。数据包101在接收器111处被成功接收,并且对于数据包101的ACK被发送到发射器110。数据包102没有被接收器111接收到,并且由于数据包102丢失,数据包103和104被接收器111接收到但是未被肯定应答。因此,发射器重传未被肯定应答的最后三个数据包,即数据包102、103、和104。在重传后,全部的三个数据包102、103、和104都在接收器111处被成功接收并被肯定应答。

在选择性重传方法中,接收器使用NACK消息或选择性肯定应答(selective ACK,SACK)消息指示丢失的数据包,该NACK消息或SACK消息告知接收到哪些数据包以及丢失了哪些数据包。作为回应,发射器选择性地仅重传接收到对于该数据包的NACK消息的数据包。在Go-Back-N方法和选择性重传方法中,重传都是由超时(在没有接收到ACK时),或接收到NACK消息或SACK消息所触发的。然而,在选择性重传方法中,只对未被肯定应答的特定数据包执行重传,而非对N个数据包的整个集合执行重传。

图1B示意性地示出了选择性重传方法的示例。发射器160向接收器161发送多个数据包151、152、153、154、155、和156。数据包151在接收器161处被成功接收,并且对于数据包151的ACK被发送到发射器160。数据包152没有被接收器161接收到。数据包153、154、和155在接收器161处被接收到,并且数据包153、154、和155分别通过每个数据包对应的ACK被肯定应答,其中该ACK包括对于数据包152的NACK。该包括NACK的ACK消息是SACK消息。因此,发射器160在接收到第一个NACK后(即在发送数据包155后)仅重传数据包152。

发明内容

本公开的目的是提供一种数据包发送设备、一种数据包接收设备、一种数据包发送方法、一种数据包接收方法、以及一种包括程序代码的计算机程序产品,当该程序代码在处理器中实现时,用于执行上述数据包发送方法和/或数据包接收方法。

通过独立权利要求的特征实现上述目的和其他目的。在从属权利要求、说明书、以及附图中,进一步的实施方式是显而易见的。

根据本公开的第一方面,公开了一种数据包发送设备。该设备用于从待发送的多个连续数据包中识别数据包;以及,与多个连续数据包中的其他数据包一起,通过网络多次重复发送该识别出的数据包。该识别出的数据包(也称为“首选数据包”)对于发送该数据包的应用,是包含关键数据的数据包。当该识别出的数据包丢失时,应用的性能损失很大。通过提前将识别出的数据包进行多次重复发送,可以以对该识别出的数据包的较大接收概率实现较低的递送时间。在实施方式中,该设备可以是网络接口卡(network interfacecard,NIC),或部署有NIC的网络设备。

在第一方面的进一步实施方式中,该设备还用于动态监测网络的至少一个网络参数,其中,对识别出的数据包的重复发送是响应于该至少一个网络参数不符合预定义的服务质量(quality of service,QoS)值而执行的。因此,不同的重复发送适用于由不符合预定义的QoS值的至少一个网络参数指示出的不同问题。预定义的QoS值可以是例如待发送的应用数据的特定优先级。

在第一方面的进一步实施方式中,该设备用于与多个连续数据包中的其他数据包一起,通过网络连续多次重复发送该识别出的数据包。这种实施方式克服了例如网络的丢包率问题,该丢包率将导致随机的数据包丢失。例如,任何网络都有百分之一到百分之五的丢包率,因此连续重复发送识别出的数据包可以保证在接收器处接收到重复的数据包。

在第一方面的进一步实施方式中,该设备用于计算多个发送间隔,该多个发送间隔是重复发送选自多个连续数据包中的识别出的数据包的发送间隔;以及,与多个连续数据包中的其他数据包一起,通过网络以该多个发送间隔重复发送识别出的数据包。以此方式,计算结果可以为重复发送提供合适的发送间隔,从而提高重复重传的适用性。

在第一方面的进一步实施方式中,该设备用于根据以下准则中的至少一项计算重复发送选自多个连续数据包中的识别出的数据包的多个发送间隔:网络的往返时延(round-trip-time,RTT)、突发大小、和丢包率。以此方式,可以根据网络的固有参数确定计算的发送间隔,从而可以更容易地实现实施方式。

在第一方面的进一步实施方式中,发送间隔是连续数据包之间的位置间隔和/或时间间隔。网络中的问题有时候是与时间有关的问题,则每个计算出的重复发送的时间间隔允许更高的接收概率。网络中的问题有时候与连续数据包之间的位置有关,则每个计算出的重复发送的位置间隔允许更高的接收概率。例如,在每10个数据包中就有一个数据包丢失的情况下,计算出的位置间隔可以是5,从而每5个数据包就发送一次识别出的数据包,以确保该识别出的数据包被接收到。在另一种情况下,每10毫秒就有一个数据包丢失,计算出的时间间隔可以是5毫秒,从而每5毫秒就发送一次识别出的数据包,以确保该识别出的数据包被接收到。

在第一方面的进一步实施方式中,重复次数为正整数x,该正整数x是预定义的或动态变化的。以此方式,重复次数动态地适应变化的网络条件,以允许对该识别出的数据包的更高的接收概率。

在第一方面的进一步实施方式中,该设备还用于响应于以下至少之一,停止该识别出的数据包的重复发送:在完成对识别出的数据包的所有重复发送之前,接收到对于识别出的数据包的至少一个重复发送的成功发送的肯定应答ACK;接收到对于在识别出的数据包之后发送的任何数据包序列的成功发送的肯定应答ACK;以及,没有选择性ACK机制的指示通知未接收到识别出的数据包。因此,一旦识别出的数据包被指示接收到,可以节省网络中的冗余数据包,从而可以节省设备的算力。

在第一方面的进一步实施方式中,该设备还用于响应于以下至少之一,重传识别出的数据包的重复发送:接收到对于识别出的数据包的否定应答NACK;发送识别出的数据包之后,但没有接收到对于识别出的数据包的肯定应答ACK而发生超时;接收到对于在识别出的数据包之后发送的数据包序列的否定应答NACK;以及,选择性ACK机制的指示通知未接收到识别出的数据包。

在第一方面的进一步实施方式中,识别出的数据包被定义为每个远程直接内存访问(remote direct memory access,RDMA)事务的第一个数据包,或基于RDMA的无限带宽中的包括扩展传输头(ETH)的数据包。

根据本公开的第二方面,公开了一种数据包接收设备。该设备用于通过网络接收多个连续数据包的传输。多个连续数据包包括识别出的数据包,识别出的数据包与其他数据包一起发送被多次重复发送。该设备还用于,只要没有接收到识别出的数据包,就存储预定数量的接收到的数据包,以及一旦接收到识别出的数据包,则根据存储在接收到的数据包中的数据,处理存储的接收到的数据包。由于识别出的数据包包含用于处理连续数据包的关键数据,因此在接收到识别出的数据包之前无法处理这些连续数据包。存储而非丢弃这些连续数据包,直到接收到识别出的数据包,允许在接收到识别出的数据包之后立即处理这些连续数据包,从而节省了再次请求和接收连续数据包的时间。

在第二方面的进一步实施方式中,该设备还用于只要没有接收到识别出的数据包,就发送对于接收到的多个连续数据包中的每个数据包的肯定应答ACK,其中,这些ACK中的至少一个包括对于未接收到的识别出的数据包的否定应答NACK。从而指示发送数据包的设备重传识别出的数据包而不重传接收到的连续数据包。

根据本公开的第三方面,公开了一种数据包发送方法。该方法包括:从待发送的多个连续数据包中识别数据包;以及,与多个连续数据包中的其他数据包一起,通过网络多次重复发送识别出的数据包。

根据第三方面的方法可以扩展为与根据第一方面的数据包发送设备的实施方式对应的实施方式。因此,该方法的实施方式包括数据包发送设备的相应实施方式的特征。

根据第三方面的方法的优点与根据第一方面的数据包发送设备的相应实施方式的优点相同。

根据本公开的第四方面,公开了一种数据包接收方法。该方法包括:通过网络接收多个连续数据包的传输,多个连续数据包包括识别出的数据包,识别出的数据包与其他数据包被一起多次重复发送;只要没有接收到识别出的数据包,就存储预定数量的接收到的数据包;以及,一旦接收到识别出的数据包,则根据存储在接收到的数据包中的数据,处理存储的接收到的数据包。

在第三方面和第四方面的进一步实施方式中,一种计算机程序产品包括程序代码,当该程序代码在处理器中实现时用于执行本公开第三方面的方法和/或本公开第四方面的方法。此外,本公开还涉及一种计算机程序产品,包括计算机可读介质和前述计算机程序,其中计算机程序包括在计算机可读介质中,并且包括以下一组中的一个或多个:只读存储器(read-only memory,ROM)、可编程ROM(programmable ROM,PROM)、可擦除PROM(erasable PROM,EPROM)、闪存、电子EPROM(electrically EPROM,EEPROM)、和硬盘驱动器。

根据本公开的第五方面,公开了一种数据包发送设备。该设备包括处理器、通信接口、存储器、和系统总线。存储器和通信接口通过使用系统总线与处理器连接,并相互通信。存储器用于存储计算机可执行指令,通信接口用于经由通信网络与另一设备通信,处理器用于执行存储在存储器中的计算机可执行指令,以实现本公开第三方面的方法和/或本公开第四方面的方法中示出的解决方案。

在研究附图和具体实施方式之后,本公开的其他系统、方法、特征、和优点对于本领域技术人员来说是或变得显而易见。预期所有这些其他装置、方法、特征、和优点包括在本说明书中及本公开的范围内,并且受所附权利要求的保护。

除非另有定义,否则本文所使用的所有技术和/或科学术语的含义与实施例领域的普通技术人员所公知的含义相同。与本文所描述的方法和材料类似或等同的方法和材料可以用于实施例的实践或测试,下文描述示例性的方法和/或材料。若存在冲突,则以包括定义在内的专利说明书为准。此外,材料、方法、以及示例都只用于说明,并非必要限定。

附图说明

本文仅通过举例的方式结合附图描述了一些实施例。现在具体结合附图,需要强调的是所示细节是作为示例,并且是为了说明性讨论实施例。就这点而言,根据说明书和附图,如何实践实施例对于本领域技术人员而言是显而易见的。

在附图中:

图1A和图1B分别是Go-back-N重传方法和选择性重传的重传方法的示例;

图2A和图2B示意性地示出了根据本公开一些实施例的用于首选数据包的选择性多数据包传输的装置的两个示例;

图3是根据本公开一些实施例的用于首选数据包的选择性多数据包传输的示例,其中首选数据包是连续传输的;

图4是根据本公开一些实施例的用于首选数据包的选择性多数据包传输的示例,其中首选数据包是间歇传输的;

图5示意性地示出了根据本公开一些实施例的用于将识别出的首选数据包从发射器多次发送到接收器的方法的流程图;

图6示意性地示出了根据本公开一些实施例的用于接收从发射器到接收器的首选数据包的选择性多数据包传输的方法的流程图;以及

图7是根据本公开一些实施例的用于首选数据包的选择性多数据包传输的示例,其中首选数据包的所有副本丢失。

具体实施方式

将参照附图描述用于首选数据包的选择性多次发送方法、装置、和程序产品的说明性实施例。尽管说明书中提供了可能实施方式的具体示例,但应指出的是,这些细节旨在是示例性的,而非是限制本专利申请的范围。

此外,实施例/示例可以适用其他实施例/示例。例如,在一个实施例/示例中提到的包括但不限于术语、元素、过程、解释、和/或技术优势的任何描述,都适用于其他实施例/示例。

本公开描述的一些实施例涉及用于首选数据包的选择性多次发送的装置和方法。更具体地但非排他地,涉及用于从多个连续数据包中识别数据包,并根据网络条件,与该多个连续数据包中的其他数据包一起,通过网络多次重复发送该识别出的数据包的装置和方法。

在一些情况下,在从发射器发送数据包到接收器时,有些数据包包含重要数据,这些数据包被定义为首选数据包。这些数据包对于发送数据的应用来说是至关重要的。可能的首选数据包示例可以是连接的第一个数据包,该数据包提供了有关其余数据包的上下文。另一个示例是数据流生命周期期间的特定数据包,其中包括应用程序的关键信息。第三个示例是远程直接内存访问(RDMA)事务的第一个数据包,该数据包包括RDMA操作码和内存地址。

在首选数据包丢失时,应用程序的性能损失很大。即使采用现有的方法重传没有接收到的数据包,应用程序的性能也会严重受损。在Go-Back-N方法中,首选数据包的丢失是在至少一个往返时延(round-trip-time,RTT)后检测到的,这个时延过长并且首选数据包之后的N-1个数据包都会丢失。在选择性重传方法中,在至少一个往返时延后检测到丢失,这个时延过长。

在RDMA中丢失首选数据包是严重的丢失首选数据包的情况示例,由于RDMA中每个事务(操作)的第一个数据包包含要在何处放置其余后续数据包的完整数据,因此该第一个数据包是首选数据包。丢失首选数据包(即在这种情况下的第一个数据包)意味着丢失第一个数据包之后的所有数据包。然而,如果接收到首选数据包,那么首选数据包之后的所有数据包都可以被处理,并且选择性重传算法仅发送丢失的数据包。

另一个示例有关超文本传输协议(hypertext transfer protocol,HTTP)安全连接(HTTP secure connection,HTTPS)的建立。为了建立该连接,有必要对密钥进行握手(传输层安全(transport layer security,TLS)协议),并且假如携带密钥的数据包丢失,则安全连接就无法打开,所以携带密钥的数据包很重要,不能丢失,因此是首选数据包。

因此有必要提供一种用于尽可能快地递送一个或多个首选数据包的装置和方法,并且即使在网络中存在较高的丢包率时,接收器也有较大概率接收到该一个或多个首选数据包。

根据本公开的一些实施例,提供了用于识别首选数据包以及提前多次重复发送该首选数据包的装置和方法。根据网络条件对该首选数据包进行多次重复发送,允许在较大的接收概率下实现较低的递送时间。

在详细解释至少一个实施例之前,应理解,实施例的应用不必限于以下描述中阐述的和/或附图和/或示例中示出的组件和/或方法的构造和排布的细节。实施方式能够具有其他实施例,或能够以各种方式实践或执行。

实施例可以是装置、方法、和/或计算机程序产品。该计算机程序产品可以包括计算机可读存储介质,该计算机可读存储介质上具有用于使处理器执行实施例的方面的计算机可读程序指令。

计算机可读存储介质可以是可以保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或前述的任何合适的组合。计算机可读存储介质的更具体示例的非详尽列表包括:便携式计算机磁盘、硬盘、随机存取存储器(random accessmemory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasableprogrammable read-only memory,EPROM或闪存)、静态随机存取存储器(static randomaccess memory,SRAM)、便携式压缩盘只读存储器(portable compact disc read-onlymemory,CD-ROM)、数字多功能盘(digital versatile disk,DVD)、记忆棒、软盘,以及上述任意适当组合。本文所使用的计算机可读存储介质本身不应被解释为瞬态信号本身,例如无线电波或其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆的光脉冲),或者通过电线传输的电信号。

本文中描述的计算机可读程序指令可以从计算机可读存储介质下载到相应计算/处理装置,或通过例如因特网、局域网、广域网和/或无线网络等网络下载到外部计算机或外部存储装置。网络可包括铜传输电缆、光学传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理装置中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发所述计算机可读程序指令以存储在相应计算/处理装置内的计算机可读存储介质中。

用于执行实施例的操作的计算机可读程序指令可以是以一种或多种编程语言的任何组合编写的汇编指令、指令集架构(instruction-set-architecture,ISA)指令、机器指令、机器相关指令、微码、固件指令、状态设定数据或源码或目标代码,该一种或多种编程语言包括例如Smalltalk、C++等的面向对象的编程语言,以及例如“C”编程语言或类似编程语言的常规程序编程语言。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上作为独立软件包执行,部分在用户的计算机上和部分在远程计算机或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过包括局域网(localarea network,LAN)或广域网(wide area network,WAN)的任何类型的网络而连接到用户的计算机,或者可以对外部计算机进行连接(例如,使用因特网服务供应商通过因特网连接)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(field-programmablegate array,FPGA)或可编程逻辑阵列(programmable logic array,PLA)的电子电路可以通过利用计算机可读程序指令的状态信息将电子电路个性化而执行计算机可读程序指令,以便执行实施例的各方面。

本文参考根据实施例的方法、(多个)装置、和计算机程序产品的流程图图示和/或框图来描述实施例的各方面。应理解,可以通过计算机可读程序指令实施流程图图示和/或框图中的每个框,以及流程图图示和/或框图中的框的组合。

这些计算机可读程序指令可以被提供给通用计算机、专用计算机,或者其他可编程数据处理装置的处理器,以制造机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图框中指定的功能/动作的手段。这些计算机可读程序指令也可以存储在计算机可读存储介质中,可以控制计算机、可编程数据处理装置、和/或其他设备以特定的方式运行,使得有指令存储于其中的计算机可读存储介质包括制造品,其中包括实现流程图和/或框图框中指定的功能/动作的方面的指令。

计算机程序指令还可以被加载到计算机、其他可编程数据处理装置、或其他装置上,以使得在计算机、其他可编程装置、或其他装置上执行一系列操作步骤以产生计算机实现的处理,从而在计算机、其他可编程装置、或其他装置上执行的指令实现流程图和/或框图框中特定的功能/动作。

图中的流程图和框图示出了根据各实施例的系统、方法和计算机程序产品的架构、功能和操作的可能实施方式。就这点而言,流程图或框图中的每个框可以表示指令的模块、片段或部分,其中包括用于实现指定逻辑功能的一个或多个可执行指令。在一些替代性实施方式中,框中指出的功能可能不按图中指出的顺序进行。例如,连续显示的两个框实际上可以基本同时执行,或者根据所涉及的功能,有时可以以相反的顺序执行该框。还应指出的是,框图和/或流程图图示中的每个框,以及框图和/或流程图图示中的框的组合可以通过专用的基于硬件的系统实施,该系统执行指定功能或动作,或执行专用硬件和计算机指令的组合。

现在参考图2A和图2B,图2A和图2B示意性地示出了根据本公开一些实施例的用于首选数据包的选择性多数据包传输的装置的两个示例。

在图2A中,装置200A包括发射器210A和接收器211A。发射器210A具有存储器221A和处理器222A。接收器211A具有存储器223A和处理器224A。发射器210A可以包括处理电路(图中未示出),该处理电路用于执行或引致本申请中描述的发射器侧的操作。该处理电路可以包括硬件和软件。硬件可以包括模拟电路或数字电路,或同时包括模拟电路和数字电路。模拟电路可以包括射频(radio frequency,RF)信号生成和处理装置,例如压控振荡器、放大器、和混合器。数字电路可以包括专用集成电路(application-specific integratedcircuit,ASIC)、FPGA、数字信号处理器(digital signal processor,DSP)、或通用处理器等组件。在一些实施例中,处理电路包括一个或多个处理器和连接到该一个或多个处理器的非瞬时性存储器。该非瞬时性存储器可以携带可执行程序代码,当该可执行执行代码由一个或多个处理器执行时,使发射器210A执行本文描述的操作或方法。接收器211A可以包括处理电路(图中未示出),该处理电路用于执行或引致本申请中描述的发射器侧的操作。该处理电路可以包括硬件和软件。硬件可以包括模拟电路或数字电路,或同时包括模拟电路和数字电路。模拟电路可以包括RF信号生成和处理装置,例如压控振荡器、放大器、和混合器。数字电路可以包括ASIC、FPGA、DSP、或通用处理器等组件。在一个实施例中,处理电路包括一个或多个处理器和连接到该一个或多个处理器的非瞬时性存储器。该非瞬时性存储器可以携带可执行程序代码,当该可执行程序代码由一个或多个处理器执行时,使接收器211A执行本文描述的操作或方法。

根据本公开的一些实施例,发射器的处理器222A在网络适配器上或在发射器210A的路径上的任何其他处理器上,该网络适配器是网络接口卡(network interface card,NIC)。

根据本公开的一些实施例,发射器210A的处理器221A从待发送的多个连续数据包中识别至少一个数据包作为首选数据包。处理器221A动态监测网络的至少一个网络参数。当至少一个网络参数不符合预定义的服务质量(quality of service,QoS)值时,发射器210A重复发送该识别出的首选数据包。

根据本公开的一些实施例,发射器210A的处理器221A确定发送识别出的首选数据包的预定时刻(或时隙),并且在预定时刻(或时隙),发射器210A与多个连续数据包中的其他数据包一起,通过网络重复发送识别出的首选数据包。作为替代,发射器210A与多个连续数据包中的其他数据包一起,通过网络随机地多次重复发送识别出的首选数据包。

根据本公开的一些实施例,发射器210A的处理器221A计算用于重复发送识别出的首选数据包的多个发送间隔,该首选数据包选自多个连续数据包。发射器210A与多个连续数据包中的其他数据包一起,通过网络以该多个发送间隔重复发送识别出的首选数据包。可以与多个连续数据包中的其他数据包一起,通过网络连续地对该首选数据包进行多次重复发送。例如,当间隔计算结果为零时。替代地,可以根据间隔计算结果,按每个时间间隔间歇地对该首选数据包进行多次重复发送,或者根据间隔计算结果,按连续数据包之间的每个位置间隔间歇地对该首选数据包进行多次重复发送。位置间隔是指放置首选数据包的位置,例如,在每个连续数据包之后、在每两个连续数据包之后、在每三个连续数据包之后等等。例如,在每10个数据包中有5个数据包突发丢失的情况下,位置间隔的计算结果可以是5,从而在每5个数据包之后发送首选数据包,则至少有一个首选数据包被接收到。

根据本公开的一些实施例,根据以下至少一个准则,计算用于重复发送识别出的首选数据包的多个发送间隔:往返时延(RTT)、突发大小、和网络的丢包率。

根据本公开的一些实施例,计算出的间隔可以是时间间隔和/或位置间隔。根据本公开的一些实施例,重复次数是正整数x,该正整数x是预定义的或动态变化的,该正整数x根据网络条件确定。

作为用于首选数据包的选择性多数据包传输的装置的替代实施方式,在图2B中,装置200B可以包括用于接收数据的一个或多个入口端口210B和/或接收器(receiver,Rx)220B;用于处理数据的处理器、逻辑单元、或中央处理单元(central processing unit,CPU)230B;用于发送数据的发射器(transmitter,Tx)240B和/或一个或多个出口端口250B;以及,用于存储数据的存储器260B。装置200B适合于实现所公开的任何技术、方法、和设备。

接收器220B可以包括处理电路,该处理电路用于执行或引致本申请中描述的发射器侧操作。该处理电路可包括硬件和软件。硬件可以包括模拟电路或数字电路,或同时包括模拟电路和数字电路。模拟电路可以包括RF信号生成和处理装置,例如压控振荡器、放大器、和混合器。数字电路可以包括ASIC、FPGA、DSP、或通用处理器等组件。在一个实施例中,处理电路包括一个或多个处理器和连接到该一个或多个处理器的非瞬时性存储器。该非瞬时性存储器可以携带可执行程序代码,当该可执行代码由一个或多个处理器执行时,使接收器220B执行本文描述的操作或方法。

处理器230B可以由硬件和/或软件实现。处理器230B可以与入口端口210B、接收器220B、发射器240B、出口端口250B、和存储器260B进行通信。处理器230B可以实现为一个或多个CPU芯片、核(例如,实现为多核处理器)、FPGA、ASIC、和/或DSP。

存储器260B可以包括一个或多个磁盘、磁带驱动器、或固态驱动器;可以用作溢出数据存储设备;在程序被选择执行时,可以用于存储此类程序;以及,可以用于存储程序执行期间被读取的指令和数据。存储器260B可以是易失性和/或非易失性的,可以是ROM、RAM、三态内容寻址存储器(ternary content-addressable memory,TCAM)、SRAM、或其任意组合。

装置200A或200B(或网络设备)可以用固定终端或移动终端实现。

图3示意性地示出了根据本公开一些实施例的对首选数据包进行选择性多数据包发送的示例,其中首选数据包被连续发送例如三次(即x=3)。发射器310向接收器311发送五个连续的数据包301、302、303、304、和305。第一个数据包,即数据包301被发射器310确定为首选数据包,因此被主动地重复发送三次。发射器310的处理器计算发送首选数据包的发送间隔,在本例中,计算结果为零。这意味着在发送其余的连续数据包302至305之前,将连续发送首选数据包多次。该计算由发射器310的处理器执行,该计算也用于定义多次发送首选数据包的重复次数。在这种情况下,作为示例,发送的重复次数为x=3。通过重复发送首选数据包,增加了成功接收重复发送的首选数据包中的至少一份副本的概率。从图3中可以看出,在第一次发送数据包301时,在接收器311处没有接收到数据包301。然而,根据本公开的一些实施例,由于首选数据包的选择性多次发送,在第二次和第三次发送数据包301时,在接收器311处成功接收到数据包301。按照这种方式,成功接收到首选数据包的时间要比发射器310接收到NACK的时间早得多,其中,发射器310接收到的NACK指示接收器311没有接收到第一数据包301并且要求重传数据包301。一旦在接收器311处第一次接收到数据包301,则接收器311向发射器310发送ACK。然而,对于重复发送的首选数据包中的其他副本,在本例中是数据包301的第三份副本,不会向发射器310发送ACK。这是因为已经对数据包301的第二份副本进行了肯定应答,该第二份副本是接收器311第一次接收到的数据包301。作为实施方式的示例,接收器311丢弃数据包301的第三份副本。

图4示意性地示出了根据本公开一些实施例的对首选数据包进行选择性多数据包发送的示例,其中首选数据包被间歇地发送例如三次(即x=3)。发射器410向接收器411发送五个连续的数据包401、402、403、404、和405。第一个数据包,即数据包401被发射器410确定为首选数据包,因此被主动地重复发送(例如)三次。发射器410的处理器计算发送首选数据包的连续数据包之中的位置发送间隔,在本例中,计算结果是(例如)一。这意味着间歇地发送首选数据包(例如)三次,在每个连续数据包之后发送首选数据包。因此,发射器按照如下顺序发送重复的首选数据包与连续数据包:数据包401、数据包402、数据包401、数据包403、数据包401、数据包404、和数据包405。在每个连续数据包之后间歇地发送三次首选数据包401。一旦发送了首选数据包的三份副本,则继续发送其余的连续数据包。从图4中可以看出,数据包401的第一份副本没有被接收到。数据包402被接收到,接收器411向发射器410发送SACK消息,该SACK消息指示接收到数据包402但没有接收到数据包401(即对数据包402发送了ACK,其中该ACK包括对于丢失数据包401的NACK)。在接收器411处接收到数据包401的第二份副本,接收器411向发射器410发送ACK作为回应。然而,接收器411在接收到数据包401的第三份副本时,不会向发射器410发送ACK,这是因为已经对数据包401的第二份副本进行了肯定应答,并且作为实施方式的替代,接收器411可以丢弃数据包401的第三份副本。

根据本公开的一些实施例,按照发射器的处理器根据网络条件计算出的每个时间间隔发送首选数据包。例如,在x=3且时间间隔的计算结果为5毫秒时,每隔5毫秒发送一次首选数据包,发送三次,即发送三份首选数据包的副本,并且每5毫秒发送一份副本。

图5示意性地示出了根据本公开一些实施例的用于将识别出的首选数据包从发射器多次发送到接收器的方法的流程图。在501,由发射器(例如,发射器的处理器)从将被发射器发送的多个连续数据包中识别出至少一个首选数据包。在502,动态监测网络的至少一个网络参数,以检查在何时该网络的网络参数不符合预定义的QoS值。在503,在网络参数不符合预定义的QoS的情况下,由发射器(例如,发射器的处理器)计算重复发送至少一个识别出的首选数据包的多个发送间隔,该首选数据包选自多个连续数据包。在本公开的一些实施例中,根据被监测的网络参数计算发送间隔。根据本公开的一些实施例,发送间隔是连续数据包之间的位置间隔和/或时间间隔。在本公开的一些实施例中,被监测的网络参数是网络的RTT、突发大小、和丢包率,并且根据这些网络参数计算发送间隔。在504,由发射器的处理器根据网络条件定义重复至少一个首选数据包的次数x。根据本公开的一些实施例,该至少一个首选数据包的重复次数是正整数x,该正整数x是预定义的或动态变化的。在505,根据被监测的网络参数和网络条件,与多个连续数据包中的其他数据包一起,通过网络多次重复发送该首选数据包。

在本公开的一些实施例中,连同其他连续数据包,连续地多次重复发送首选数据包,在本公开的其他一些实施例中,连同其他连续数据包,间歇地多次重复发送首选数据包。

根据本公开的一些实施例,提供了一种计算机程序产品。该计算机程序产品包括程序代码,当该程序代码在处理器上实现时执行图5所述的方法。

根据本公开的一些实施例,响应于以下至少之一,发射器停止首选数据包的重复发送:

·在完成首选数据包的x次重复发送之前,发射器接收到对首选数据包的重复发送中的至少一份副本的ACK,在这种情况下,发射器停止首选数据包的其余重复发送,继续发送连续数据包;

·发射器接收到对于任何在首选数据包之后发送的数据包序列的成功发送的ACK,这是因为首选数据包包含了对于首选数据包之后的连续数据包的正确接收来说关键的数据。这意味着,如果在首选数据包之后发送的数据包序列被正确接收,则首选数据包也被正确接收;以及,

·没有选择性ACK机制的指示来通知未接收到识别出的数据包。

根据本公开的一些实施例,响应于以下至少之一,发射器重传首选数据包的重复发送:

·发射器接收到对于首选数据包的NACK;

·发送首选数据包的最后一份副本之后,但没有接收到对于首选数据包的ACK,而发生了预定义的超时;

·接收到对于在首选数据包之后发送的数据包序列的NACK;以及,

·选择性ACK机制的指示通知未接收到首选数据包。

图6示意性地示出了根据本公开一些实施例的用于接收从发射器到接收器的首选数据包的选择性多数据包传输的方法的流程图。在601,接收器接收到多个连续数据包的传输,其中该多个连续数据包中包括与其他数据包一起的被多次重复发送的首选数据包。在602,只要没有接收到首选数据包,接收器就存储预定义数量M个的接收到的数据包。在603,一旦接收到首选数据包,则接收器的处理器根据存储在接收到的首选数据包中的数据,处理存储的接收到的数据包。

根据本公开的一些实施例,接收器发送对于在丢失的首选数据包之后接收到的数据包的ACK,而该ACK包括对于丢失的首选数据包的NACK。在本公开的一些实施例中,当接收器在接收器的存储器中存储在丢失的首选数据包之后发送的M个数据包时,发送给接收器的其他数据包被丢弃(因为接收器无法存储超过M个数据包)。

根据本公开的一些实施例,提供了一种计算机程序产品。该计算机程序产品包括程序代码,当该程序代码在处理器上实现时执行图6所述的方法。

根据本公开的一些实施例,(在传输层之上的)应用层使用RDMA方法。在这种情况下,由于RDMA事务的第一个数据包中包括RDMA操作码和相应的内存地址,因此将每个RDMA事务的第一个数据包定义为首选数据包。特别地,当使用基于RDMA的无限带宽(InfiniBand)时,事务的第一个数据包中包括扩展传输头(extended transport header,ETH)、相应的内存地址、和事务长度,其他数据包中不包括这些。在这种情况下,接收器能够对写(WRITE)操作执行错序放置,从而只要满足以下两个条件,即使是错序接收到数据包,也能将相应的数据存储在接收器的内存中:

·尽可能早地接收到第一个数据包,该第一个数据包指示存储数据包有效载荷所需的确切地址;以及,

·可以从第一个数据包的地址(例如,连续数据包的地址是首选数据包地址加上偏移量)和从每个连续数据包的传输层序列号码增加得到连续数据包的地址。

图7示意性地示出了根据本公开一些实施例的首选数据包的选择性多数据包传输的示例,其中首选数据包的所有副本丢失。在这个示例中,首选数据包被连续发送(例如)三次,因此x=3。发射器710向接收器711发送五个连续的数据包701、702、703、704、和705。第一个数据包,即数据包701被发射器710识别为首选数据包,因此被主动地重复发送了三次。从图7中可以看出,首选数据包701的所有三份副本都没有在接收器711处被接收到。然而,在首选数据包701之后发送的数据包702、703、和704都在接收器711处被接收到。由于首选数据包701丢失,连续数据包702、703、和704无法被接收器711的处理器处理。然而,数据包702、703、和704被存储在接收器711的存储器中,并且从接收器711向发射器710发送对于每个数据包702、703、和704的ACK,其中该ACK包括对于丢失的首选数据包701的NACK。一旦包括首选数据包701的NACK的第一个ACK在发射器710处被接收到,发射器710将重传首选数据包701(例如)三次,之后才继续发送其余的连续数据包(在本例中是数据包705)。在满足以下条件时,在接收器711处成功接收到首选数据包701后,由接收器的处理器对存储的连续数据包702、703、和704进行处理:

a.首选数据包701指示缓冲器的地址;以及,

b.可以从第一个数据包中的地址和每个连续数据包的传输层序列号增加得到数据包702、703、和704的地址。

根据本公开的一些实施例,本公开装置的可能实施方式是为首选数据包分配专用的QoS属性(例如,特定的优先级),并且在使用不同重传方案的不同流量类别上发送首选数据包,以确保在接收器接收到该首选数据包。需要指出的是,由于在这种情况下,首选数据包与其他(非首选)数据包不一定是按顺序接收的,因此这种实施方式无法产生与其他实施方式相同的结果。

对各个实施例的描述只是为了说明的目的,并不旨在穷举或限于所公开的实施例。在不脱离所描述实施例的范围和精神的情况下,许多修改和变化对本领域普通技术人员显而易见。在本文中使用的术语经选择以尽可能地解释本文实施例的原理、实际应用、或与市场上可找到的技术相比的技术进步,或能使本领域的其他普通技术人员理解本文所公开的实施例。

预期在从本申请走向成熟的专利有效期间,将开发许多用于首选数据包的选择性多次传输的相关方法和装置,并且用于首选数据包的选择性多次传输这一术语的范围旨在先验地包括所有这些新技术。

本文所使用的术语“约”是指±10%。

术语“包括”、“包含”、“有”、“具有”表示“包括但不限于”。这个术语包括了术语“由……组成”和“基本上由……组成”。

短语“基本上由……组成”表示组成物或方法可以包括额外成分和/或步骤,但前提是上述额外成分和/或步骤不会实质上改变所要求的组成物或方法的基本和新颖特性。

除非上下文中另有明确说明,本文使用的单数形式“一个”和“所述”包括复数含义。例如,术语“一个复合物”或“至少一个复合物”可以包括多个复合物,包括其混合物。

本文使用的词语“示例性的”表示“用作示例、实例、或说明”。任何描述为“示例性的”实施例并不一定理解为优先于或优于其他实施例和/或排除其他实施例的特征的组合。

本文使用的词语“可选地”表示“在一些实施例中提供且在其他实施例中没有提供”。任何特定实施例可以包括多个“可选的”特征,除非这些特征相互冲突。

在整个申请中,各种实施例可以以范围格式呈现。应理解,以范围格式的描述仅为了方便和简洁,并且不应该解释为对实施例范围的固化限制。因此,对范围的描述应认为是已经具体地公开所有可能的子范围以及上述范围内的单独的数值。例如,对例如从1到6的范围的描述应当认为已经具体公开了例如从1到3、从1到4、从1到5、从2到4、从2到6、从3到6等的子范围,以及上述范围内的单独的数字,例如1、2、3、4、5、6。不管范围的宽度如何,这都适用。

无论何时当在本文中指示数字范围时,表示包括了所指示的这个范围内任何列举的数字(分数或整数)。短语“在第一指示数和第二指示数之间的范围内”以及“从第一指示数到第二指示数的范围内”在本文中可互换使用并且表示包括第一指示数和第二指示数以及其之间的所有分数和整数。

应理解,为简洁起见,在不同实施例的上下文中描述的实施例的某些特征还可以组合提供于单个实施例中。相反地,为简洁起见,在单个实施例的上下文中描述的实施例的各个特征也可以单独地或以任何适合的子组合或以合适的方式提供于任何其他所描述的实施例中。在各个实施例的上下文中描述的某些特征不视为那些实施例的基本特征,除非没有这些元素时上述实施例无效。

尽管已经结合具体的实施例对实施例进行了描述,但许多替代性方案、修改、和变化对于本领域的技术人员来说,显然是显而易见的。因此,所附权利要求的精神和广泛范围旨在包括所有这些替代性方案、修改、和变化。

说明书中提及的所有出版物、专利、和专利申请通过引用全部并入本说明书,如同每个单独的出版物、专利、或专利申请被具体且单独地指示为通过引用并入本文。此外,在本申请中对任何参考文献的引用或标识都不应解释为承认该参考文献可作为实施例的现有技术。就节标题的使用而言,不应将节标题解释为必要的限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号