CN112737737B - 一种确认报文的处理方法和通信装置以及存储介质 - Google Patents
一种确认报文的处理方法和通信装置以及存储介质 Download PDFInfo
- Publication number
- CN112737737B CN112737737B CN201911033773.9A CN201911033773A CN112737737B CN 112737737 B CN112737737 B CN 112737737B CN 201911033773 A CN201911033773 A CN 201911033773A CN 112737737 B CN112737737 B CN 112737737B
- Authority
- CN
- China
- Prior art keywords
- ack
- communication device
- packet
- message
- option
- 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
- 238000004891 communication Methods 0.000 title claims abstract description 861
- 238000012790 confirmation Methods 0.000 title claims abstract description 29
- 238000003672 processing method Methods 0.000 title abstract description 5
- 230000007246 mechanism Effects 0.000 claims abstract description 253
- 238000000034 method Methods 0.000 claims abstract description 110
- 238000012545 processing Methods 0.000 claims abstract description 40
- 230000000875 corresponding effect Effects 0.000 claims description 59
- 230000015654 memory Effects 0.000 claims description 27
- 238000004458 analytical method Methods 0.000 claims description 15
- 230000002596 correlated effect Effects 0.000 claims description 11
- 230000001960 triggered effect Effects 0.000 claims description 11
- 230000010365 information processing Effects 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 abstract description 61
- 238000010586 diagram Methods 0.000 description 34
- 230000008569 process Effects 0.000 description 27
- 230000006870 function Effects 0.000 description 11
- 230000003993 interaction Effects 0.000 description 11
- 238000011084 recovery Methods 0.000 description 9
- 238000010276 construction Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000011022 operating instruction Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 4
- 239000000470 constituent Substances 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/003—Arrangements for allocating sub-channels of the transmission path
- H04L5/0044—Arrangements for allocating sub-channels of the transmission path allocation of payload
-
- 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
-
- 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/1809—Selective-repeat protocols
-
- 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/20—Arrangements for detecting or preventing errors in the information received using signal quality detector
- H04L1/203—Details of error rate determination, e.g. BER, FER or WER
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/003—Arrangements for allocating sub-channels of the transmission path
- H04L5/0053—Allocation of signaling, i.e. of overhead other than pilot signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/003—Arrangements for allocating sub-channels of the transmission path
- H04L5/0053—Allocation of signaling, i.e. of overhead other than pilot signals
- H04L5/0055—Physical resource allocation for ACK/NACK
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/003—Arrangements for allocating sub-channels of the transmission path
- H04L5/0044—Arrangements for allocating sub-channels of the transmission path allocation of payload
- H04L5/0046—Determination of how many bits are transmitted on different sub-channels
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Quality & Reliability (AREA)
- Communication Control (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请实施例公开了一种确认报文的处理方法和通信装置以及存储介质,用于减少ACK发送频率,提高数据传输效率。其中,一种确认报文的处理方法应用于第一通信装置,所述方法包括:根据所述第一通信装置支持的确认ACK机制生成第一ACK报文,所述ACK机制用于指示N种ACK报文对应的N种ACK类型、发送所述N种ACK报文各自所需的触发条件、和所述N种ACK报文分别携带的反馈信息,所述第一ACK报文属于所述N种ACK报文的一种,所述N为大于或等于2的正整数;向所述第二通信装置发送所述第一ACK报文。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种确认报文的处理方法和通信装置以及存储介质。
背景技术
在数据传输场景中,发送方和接收方通过传输控制协议(transport controlprotocol,TCP)报文进行交互,发送方每发送一个数据报文,接收方回复一个确认(acknowledgement,ACK)报文。其中,TCP报文中携带一个ACK标记位,该ACK标记位用于标记TCP报文是一个ACK报文还是数据报文,当TCP报文是ACK报文时,TCP报文携带的确认号包括反馈信息,该反馈信息用于反馈接收方已收到的、有序的最大序列号。
在基于TCP报文实现的上述ACK机制中,每发送一个数据报文就需要对端回复ACK报文,因此存在ACK发送频率高和数据传输效率低下的问题,无法适应多样化的数据传输场景。例如,ACK发送频率高,无法适用于无线局域网中的数据传输,因为在频谱使用前必须有一段空闲时间和随机退避时间,而无线传输的开销,不是以报文大小计数,而是以报文个数来计数,因此,ACK报文与数据报文开销相近,消耗传输资源较多。
接下来,举例说明TCP报文的一种典型的传输和确认过程:发送方发送5个数据报文:data-1、data-2、data-3、data-4、data-5,如果data-2丢失,接收方会回复三个ACK报文:ack-data-1、ack-data-1、ack-data-1,如果仅有data-2丢失,虽然接收方已经收到其他的数据报文(即接收方接收到了data-3、data-4、data-5),但是发送方却要将data-2以及data-2之后的其他数据报文重传一次,导致数据传输效率低下。
综上描述可知,目前的ACK机制存在ACK发送频率高和数据传输效率低下的问题。
发明内容
本申请实施例提供了一种确认报文的处理方法和通信装置以及存储介质,用于减少ACK发送频率,提高数据传输效率。
为解决上述技术问题,本申请实施例提供以下技术方案:
第一方面,本申请实施例提供一种确认报文的处理方法,所述方法应用于第一通信装置,所述方法包括:根据所述第一通信装置支持的确认ACK机制生成第一ACK报文,所述ACK机制用于指示N种ACK报文对应的N种ACK类型、发送所述N种ACK报文各自所需的触发条件、和所述N种ACK报文分别携带的反馈信息,所述第一ACK报文属于所述N种ACK报文的一种,所述N为大于或等于2的正整数;向所述第二通信装置发送所述第一ACK报文。在本申请实施例中,第一通信装置根据第一通信装置支持的确认ACK机制生成第一ACK报文,该ACK机制用于指示N种ACK报文对应的N种ACK类型、发送N种ACK报文各自所需的触发条件、和N种ACK报文分别携带的反馈信息,第一ACK报文属于N种ACK报文的一种,N大于或等于2,由于第一通信装置使用的ACK机制包括了ACK类型、触发条件以及反馈信息,因此第一通信装置在生成第一ACK报文时需要按照该ACK机制包括的ACK类型和反馈信息来生成第一ACK报文,并且是否需要生成第一ACK报文还需要判断是否满足第一ACK报文所需要的触发条件,然后第一通信装置向第二通信装置发送第一ACK报文。第二通信装置首先根据第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文,第二通信装置根据第二通信装置支持的ACK机制确定第一ACK报文对应的第一ACK类型,第二通信装置最后使用第一ACK类型解析第一ACK报文,以生成ACK解析结果。本申请实施例中可以从ACK类型、触发条件以及反馈信息来定义ACK机制,因此实现了ACK报文的多种ACK类型的灵活自定义,以及按照触发条件发送ACK报文,减少ACK发送频率,提高数据传输效率。
在一种可能的实现方式中,所述第一ACK报文包括:第一ACK类型和第一反馈信息,所述第一ACK类型属于所述N种ACK类型的一种。在该方案中,若满足第一ACK报文的触发条件,则第一通信装置可以按照第一通信装置支持的ACK机制生成第一ACK报文,该ACK机制指示了ACK类型和反馈信息,则第一通信装置生成的第一ACK报文中可以包括第一ACK类型和第一反馈信息。第一ACK类型是指第一ACK报文对应的ACK类型,该第一ACK类型是N种ACK类型中的一种类型,第一反馈信息是指第一ACK报文所携带的反馈信息,对于第一反馈信息所需要携带的反馈信息内容,可以根据具体的ACK机制来确定,此处不做限定。第一通信装置生成的第一ACK报文中携带有第一ACK类型和第一反馈信息,从而使得接收该第一ACK报文的第二通信装置可以确定出第一ACK报文所属的ACK类型,以及该第一ACK报文所携带的具体反馈信息内容,从而第二通信装置可以确定:第一通信装置是否接收到了第二通信装置发送的数据报文,以及第一通信装置针对该接收的数据报文的反馈情况。
在一种可能的实现方式中,所述第一ACK报文包括:ACK类型选项,其中,所述ACK类型选项的大小为(2+m)个字节,所述m的取值为正整数,所述m的大小与所述N的大小正相关;所述(2+m)个字节中的1个字节用于指示所述ACK类型选项的序号;所述(2+m)个字节中的另1个字节用于指示所述ACK类型选项的长度;所述(2+m)个字节中的剩余m个字节用于指示所述第一ACK类型。在该方案中,第一ACK报文的ACK类型选项可用于指示该第一ACK报文对应的第一ACK类型,例如ACK类型选项可以包括如下三个部分:序号、长度和ACK类型,其中,序号、长度分别占用1个字节,ACK类型占用m个字节,通过ACK类型可以指示第一ACK报文对应的ACK类型为第一ACK类型,从而第一通信装置可以在ACK类型携带第一ACK类型,从而第二通信装置根据ACK类型选项中的ACK类型的具体取值确定出第一ACK类型。
在一种可能的实现方式中,所述第一ACK报文还包括:数据域;所述数据域携带所述第一反馈信息的至少一部分。在该方案中,第一反馈信息可以包括多个反馈子信息,该第一反馈信息的一部分或者全部都可以携带在数据域中,因此增加了数据域中携带的信息量,提高了反馈信息的传输效率,另外在数据域中还可以携带多种更丰富的反馈信息,因此本申请实施例提高了ACK报文携带的信息量。
在一种可能的实现方式中,所述根据所述第一通信装置支持的确认ACK机制生成第一ACK报文之前,所述方法还包括:向所述第二通信装置发送第一协商报文,所述第一协商报文用于指示所述第一通信装置支持的ACK机制;接收所述第二通信装置发送的第二协商报文,所述第二协商报文用于指示所述第二通信装置支持的ACK机制;当所述第一通信装置和所述第二通信装置使用相互匹配的ACK机制时,触发执行如下步骤:根据所述第一通信装置支持的确认ACK机制生成第一ACK报文。在该方案中,在第一通信装置和第二通信装置开始进行数据传输以及确认报文的发送之前,第一通信装置和第二通信装置还可以先进行各自支持的ACK机制的协商,例如通信双方(第一通信装置和第二通信装置)通过握手进行建链和协商。其中,第一通信装置在构造协商报文的过程中,通过协商报文表征自己已支持指定的ACK机制。第二通信装置构造协商报文的过程中,通过协商报文表征自己是否支持指定的ACK机制。如果第一通信装置和第二通信装置都支持同样的ACK机制,则第一通信装置和第二通信装置协商成功,后续数据报文传输过程中,使用该ACK机制进行ACK报文的发送与接收。若第一通信装置和第二通信装置协商失败,不使用本申请实施例提供的方案进行ACK报文的发送与接收。通过通信双方分别发送协商报文,以进行ACK机制的协商,可以使得通信双方能够正确的进行ACK报文的发送与接收。
在一种可能的实现方式中,所述第一协商报文包括:第一准许选项,所述第二协商报文包括:第二准许选项,其中,所述第一准许选项的大小为2个字节,所述第一准许选项中的1个字节用于指示所述第一准许选项的序号,所述第一准许选项中的另1个字节用于指示所述第一准许选项的长度;所述第二准许选项的大小为2个字节,所述第二准许选项中的1个字节用于指示所述第二准许选项的序号,所述第二准许选项中的另1个字节用于指示所述第二准许选项的长度。在该方案中,通过第一准许选项可以指示第一协商报文,从而第一通信装置可以在第一协商报文中通过第一准许选项携带该第一通信装置支持的ACK类型,从而第二通信装置接收到第一协商报文之后,通过解析第一准许选项就可以确定第一通信装置支持的ACK类型。同理,第一通信装置接收到第二协商报文之后,通过解析第二准许选项就可以确定第二通信装置支持的ACK类型。通过通信双方分别发送协商报文,可以完成ACK机制的协商,以保证通信双方使用相同的ACK机制进行ACK报文的发送与接收。
在一种可能的实现方式中,生成所述第一ACK报文的触发条件包括如下的至少一种:按照预设的ACK发送频率发送所述第一ACK报文、在预设的即时事件产生时发送所述第一ACK报文。在该方案中,ACK机制中可以指示N种ACK报文分别对应的触发条件,以生成第一ACK报文的触发条件为例进行说明,触发条件可以分为两种:ACK发送频率和即时事件。其中,ACK发送频率是指发送ACK的发送频率,只有满足该ACK发送频率时才能生成ACK报文并发送,例如ACK发送频率可以是每间隔一定的时间段发送一个ACK报文,或者该ACK发送频率可以是每接收到一定数量的数据报文时发送一个ACK报文。即时事件是指能够触发ACK报文的发送的事件信息,只有ACK机制中指示的即时事件产生时才能够生成ACK报文并发送,即时事件也可以根据具体的应用场景来配置,例如即时事件可以是丢包事件或者接收缓存满事件等。根据上述的触发条件,本申请实施例可以实现按需生成ACK报文,从而实现ACK报文的动态可调整。
在一种可能的实现方式中,所述按照预设的ACK发送频率发送所述第一ACK报文,包括如下至少一种:每接收到预设个数的数据报文时发送所述第一ACK报文,每经过预设的一个时间段时发送所述第一ACK报文。在该方案中,ACK发送频率可以作为发送第一ACK报文的触发条件,按照预设的ACK发送频率发送第一ACK报文可以包括:每接收到预设个数的数据报文时发送第一ACK报文。另外,按照预设的ACK发送频率发送第一ACK报文还可以包括:每经过预设的一个时间段时发送第一ACK报文,第一通信装置不管有没有数据报文到达接收方,第一通信装置都需要按照预设的时间段发送第一ACK报文。根据上述的触发条件,本申请实施例可以实现按需生成ACK报文,从而实现ACK报文的动态可调整。
在一种可能的实现方式中,所述第一通信装置通过所述第一通信装置与所述第二通信装置之间的连接通信,所述每接收到预设个数的数据报文时发送所述第一ACK报文包括:获取所述连接的带宽时延积;当所述带宽时延积小于预设的阈值时,每接收到预设个数的数据报文时发送所述第一ACK报文;或者,当所述带宽时延积小于或等于预设的阈值时,每接收到预设个数的数据报文时发送所述第一ACK报文。在该方案中,本申请实施例中第一通信装置可以根据带宽时延积是否小于阈值来确定ACK发送频率,实现了按需生成ACK报文,从而实现ACK报文的动态可调整。
在一种可能的实现方式中,所述阈值为β×L×MSS,所述预设个数为L×MSS;其中,所述β表示所述第一通信装置在RTTmin内发送的ACK报文个数,所述L表示所述第一通信装置在每发送一个ACK报文之前需要接收到的数据报文个数,所述MSS表示传输层协议的最大段长度,所述RTTmin表示所述第一通信装置和所述第二通信装置之间的最小往返时延。在该方案中,通过上述阈值和预设个数的计算方式,第一通信装置可以准确的获取到带宽时延积,还可以根据上述预设个数实现ACK报文的动态可调整。
在一种可能的实现方式中,所述第一通信装置通过所述第一通信装置与所述第二通信装置之间的连接通信,所述每经过预设的一个时间段时发送所述第一ACK报文包括:获取所述连接的带宽时延积;当所述带宽时延积大于或等于预设的阈值时,每经过预设的一个时间段时发送所述第一ACK报文;或者,当所述带宽时延积大于预设的阈值时,每经过预设的一个时间段时发送所述第一ACK报文。在该方案中,本申请实施例中第一通信装置可以根据带宽时延积是否小于阈值来确定ACK发送频率,实现了按需生成ACK报文,从而实现ACK报文的动态可调整。
在一种可能的实现方式中,所述阈值为β×L×MSS,所述预设的一个时间段为其中,所述β表示所述第一通信装置在RTTmin内发送的ACK报文个数,所述L表示所述第一通信装置在每发送一个ACK报文之前需要接收到的数据报文个数,所述MSS表示传输层协议的最大段长度,所述RTTmin表示所述第一通信装置和所述第二通信装置之间的最小往返时延。在该方案中,通过上述阈值和预设的时间段的计算方式,第一通信装置可以准确的获取到带宽时延积,还可以根据上述预设的时间段实现ACK报文的动态可调整。
在一种可能的实现方式中,所述获取所述连接的带宽时延积,包括:获取所述第一通信装置和第二通信装置之间的连接的最大带宽、以及所述第一通信装置和所述第二通信装置之间的最小往返时延,确定所述带宽时延积等于所述最大带宽与所述最小往返时延的相乘结果;或者,获取所述第一通信装置和第二通信装置之间的连接的平均带宽、以及所述第一通信装置和所述第二通信装置之间的平均往返时延,确定所述带宽时延积等于所述平均带宽与所述平均往返时延的相乘结果。在该方案中,带宽时延积的计算方法多种,例如第一通信装置可以采用最大带宽与最小往返时延的相乘结果作为带宽时延积。又如,第一通信装置可以采用平均带宽与平均往返时延的相乘结果作为带宽时延积,通过上述多种计算方式,第一通信装置都可以计算出带宽时延积,从而第一通信装置可以根据带宽时延积是否小于阈值来确定ACK发送频率,实现了按需生成ACK报文,从而实现ACK报文的动态可调整。
在一种可能的实现方式中,所述即时事件包括如下至少一种:丢包事件、所述第一通信装置的接收缓存没有剩余容量的事件。在该方案中,第一通信装置可以在ACK机制中自定义多种的即时事件,丢包事件(loss event)、第一通信装置的接收缓存没有剩余容量的事件。接收缓存没有剩余容量是指第一通信装置的接收缓存满。例如第一通信装置作为接收方,可以根据网络状态的变化,例如时延或带宽变化达到一个阈值,或者丢包率、丢包数目、或乱序程度达到一个阈值,又或者接收缓存剩余容量达到一个阈值等等,按需生成ACK报文。本申请实施例中第一通信装置可以根据自定义的即时事件发送ACK报文,实现了按需生成ACK报文,从而实现ACK报文的动态可调整。
在一种可能的实现方式中,所述N种ACK报文分别携带的反馈信息包括如下至少一种:所述第一通信装置和第二通信装置之间的连接的时延信息、所述第一通信装置和第二通信装置之间的连接的带宽信息、所述第一通信装置和第二通信装置之间的连接的抖动信息、所述第一通信装置和第二通信装置之间的连接的丢包信息、所述第一通信装置和第二通信装置之间的连接的状态标记信息。在该方案中,具体的,本申请实施例中第一通信装置可以在ACK机制中灵活自定义多种的反馈信息,则第一通信装置生成的第一ACK报文可以携带各种的反馈信息,以使得第二通信装置可以接收到第一通信装置发送的多种反馈信息,实现更全面的信息反馈。
在一种可能的实现方式中,所述根据所述第一通信装置支持的确认ACK机制生成第一ACK报文之前,所述方法包括:接收所述第二通信装置发送的第一数据报文,所述第一数据报文携带数据内容和第一包序号,当所述第一通信装置确定所述第一数据报文发生丢包时,所述第一ACK报文用于指示所述第一数据报文发生丢包;接收所述第二通信装置发送的第二数据报文,所述第二数据报文携带所述数据内容和第二包序号,所述第二包序号和所述第一包序号是不相同的包序号。在该方案中,第一通信装置接收第二通信装置发送的第一数据报文和第二数据报文,第一通信装置可以根据该两个数据报文中携带的包序号的差异确定是哪个数据报文丢失后重传的,从而提高丢包恢复效率。
第二方面,本申请实施例还提供一种确认报文的处理方法,所述方法应用于第二通信装置,所述方法包括:根据所述第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文,所述ACK机制用于指示N种ACK报文对应的N种ACK类型、和所述N种ACK报文分别携带的反馈信息,所述第一ACK报文属于所述N种ACK报文的一种,所述N为大于或等于2的正整数;根据所述第二通信装置支持的ACK机制确定所述第一ACK报文对应的第一ACK类型,所述第一ACK类型属于所述N种ACK类型的一种;使用所述第一ACK类型解析所述第一ACK报文,以生成ACK解析结果。在本申请实施例中,第二通信装置首先根据第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文,第二通信装置根据第二通信装置支持的ACK机制确定第一ACK报文对应的第一ACK类型,第二通信装置最后使用第一ACK类型解析第一ACK报文,以生成ACK解析结果。本申请实施例中可以从ACK类型、触发条件以及反馈信息来定义ACK机制,因此实现了ACK报文的多种ACK类型的灵活自定义,以及按照触发条件发送ACK报文,减少ACK发送频率,提高数据传输效率。
在一种可能的实现方式中,所述第一ACK报文包括:所述第一ACK类型和第一反馈信息。在该方案中,若满足第一ACK报文的触发条件,则第一通信装置可以按照第一通信装置支持的ACK机制生成第一ACK报文,该ACK机制指示了ACK类型和反馈信息,则第一通信装置生成的第一ACK报文中可以包括第一ACK类型和第一反馈信息。第一ACK类型是指第一ACK报文对应的ACK类型,该第一ACK类型是N种ACK类型中的一种类型,第一反馈信息是指第一ACK报文所携带的反馈信息,对于第一反馈信息所需要携带的反馈信息内容,可以根据具体的ACK机制来确定,此处不做限定。第一通信装置生成的第一ACK报文中携带有第一ACK类型和第一反馈信息,从而使得接收该第一ACK报文的第二通信装置可以确定出第一ACK报文所属的ACK类型,以及该第一ACK报文所携带的具体反馈信息内容,从而第二通信装置可以确定:第一通信装置是否接收到了第二通信装置发送的数据报文,以及第一通信装置针对该接收的数据报文的反馈情况。
在一种可能的实现方式中,所述第一ACK报文包括:ACK类型选项,其中,所述ACK类型选项的大小为(2+m)个字节,所述m的取值为正整数,所述m的大小与所述N的大小正相关;所述(2+m)个字节中的1个字节用于指示所述ACK类型选项的序号;所述(2+m)个字节中的另1个字节用于指示所述ACK类型选项的长度;所述(2+m)个字节中的剩余m个字节用于指示所述第一ACK类型。在该方案中,第一ACK报文的ACK类型选项可用于指示该第一ACK报文对应的第一ACK类型,例如ACK类型选项可以包括如下三个部分:序号、长度和ACK类型,其中,序号、长度分别占用1个字节,ACK类型占用m个字节,通过ACK类型可以指示第一ACK报文对应的ACK类型为第一ACK类型,从而第一通信装置可以在ACK类型携带第一ACK类型,从而第二通信装置根据ACK类型选项中的ACK类型的具体取值确定出第一ACK类型。
在一种可能的实现方式中,所述第一ACK报文还包括:数据域;所述数据域携带所述第一反馈信息的至少一部分。
在一种可能的实现方式中,所述根据所述第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文之前,所述方法还包括:接收所述第一通信装置发送的第一协商报文,所述第一协商报文用于指示所述第一通信装置支持的ACK机制;向所述第一通信装置发送第二协商报文,所述第二协商报文用于指示所述第二通信装置支持的ACK机制;当所述第一通信装置和所述第二通信装置使用相互匹配的ACK机制时,触发执行如下步骤:根据所述第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文。在该方案中,通过通信双方分别发送协商报文,以进行ACK机制的协商,可以使得通信双方能够正确的进行ACK报文的发送与接收。
在一种可能的实现方式中,所述第一协商报文包括:第一准许选项,所述第二协商报文包括:第二准许选项,其中,所述第一准许选项的大小为2个字节,所述第一准许选项中的1个字节用于指示所述第一准许选项的序号,所述第一准许选项中的另1个字节用于指示所述第一准许选项的长度;所述第二准许选项的大小为2个字节,所述第二准许选项中的1个字节用于指示所述第二准许选项的序号,所述第二准许选项中的另1个字节用于指示所述第二准许选项的长度。
在一种可能的实现方式中,所述根据所述第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文之前,所述方法还包括:向所述第一通信装置发送第一数据报文,所述第一数据报文携带数据内容和第一包序号;根据所述第一ACK报文确定所述第一数据报文发生丢包时,向所述第一通信装置发送第二数据报文,所述第二数据报文携带所述数据内容和第二包序号,所述第二包序号和所述第一包序号是不相同的包序号。在该方案中,第二通信装置分别向第一通信装置发送第一数据报文和第二数据报文,以使得第一通信装置可以根据该两个数据报文中携带的包序号的差异确定是哪个数据报文丢失后重传的,从而提高丢包恢复效率。
第三方面,本申请实施例还提供一种通信装置,包括:处理模块,用于根据所述第一通信装置支持的确认ACK机制生成第一ACK报文,所述ACK机制用于指示N种ACK报文对应的N种ACK类型、发送所述N种ACK报文各自所需的触发条件、和所述N种ACK报文分别携带的反馈信息,所述第一ACK报文属于所述N种ACK报文的一种,所述N为大于或等于2的正整数;收发模块,用于向所述第二通信装置发送所述第一ACK报文。
在本申请的一些实施例中,所述第一ACK报文包括:第一ACK类型和第一反馈信息,所述第一ACK类型属于所述N种ACK类型的一种。
在本申请的一些实施例中,所述第一ACK报文包括:ACK类型选项,其中,所述ACK类型选项的大小为(2+m)个字节,所述m的取值为正整数,所述m的大小与所述N的大小正相关;所述(2+m)个字节中的1个字节用于指示所述ACK类型选项的序号;所述(2+m)个字节中的另1个字节用于指示所述ACK类型选项的长度;所述(2+m)个字节中的剩余m个字节用于指示所述第一ACK类型。
在本申请的一些实施例中,所述第一ACK报文还包括:数据域;所述数据域携带所述第一反馈信息的至少一部分。
在本申请的一些实施例中,所述收发模块,还用于所述处理模块根据所述第一通信装置支持的确认ACK机制生成第一ACK报文之前,向所述第二通信装置发送第一协商报文,所述第一协商报文用于指示所述第一通信装置支持的ACK机制;所述收发模块,还用于接收所述第二通信装置发送的第二协商报文,所述第二协商报文用于指示所述第二通信装置支持的ACK机制;当所述第一通信装置和所述第二通信装置使用相互匹配的ACK机制时,触发所述处理模块根据所述第一通信装置支持的确认ACK机制生成第一ACK报文。
在本申请的一些实施例中,所述第一协商报文包括:第一准许选项,所述第二协商报文包括:第二准许选项,其中,所述第一准许选项的大小为2个字节,所述第一准许选项中的1个字节用于指示所述第一准许选项的序号,所述第一准许选项中的另1个字节用于指示所述第一准许选项的长度;所述第二准许选项的大小为2个字节,所述第二准许选项中的1个字节用于指示所述第二准许选项的序号,所述第二准许选项中的另1个字节用于指示所述第二准许选项的长度。
在本申请的一些实施例中,生成所述第一ACK报文的触发条件包括如下的至少一种:按照预设的ACK发送频率发送所述第一ACK报文、在预设的即时事件产生时发送所述第一ACK报文。
在本申请的一些实施例中,所述按照预设的ACK发送频率发送所述第一ACK报文,包括如下至少一种:每接收到预设个数的数据报文时发送所述第一ACK报文,每经过预设的一个时间段时发送所述第一ACK报文。
在本申请的一些实施例中,所述第一通信装置通过所述第一通信装置与所述第二通信装置之间的连接通信,所述每接收到预设个数的数据报文时发送所述第一ACK报文包括:获取所述连接的带宽时延积;当所述带宽时延积小于预设的阈值时,每接收到预设个数的数据报文时发送所述第一ACK报文;或者,当所述带宽时延积小于或等于预设的阈值时,每接收到预设个数的数据报文时发送所述第一ACK报文。
在本申请的一些实施例中,所述阈值为β×L×MSS,所述预设个数为L×MSS;其中,
所述β表示所述第一通信装置在RTTmin内发送的ACK报文个数,所述L表示所述第一通信装置在每发送一个ACK报文之前需要接收到的数据报文个数,所述MSS表示传输层协议的最大段长度,所述RTTmin表示所述第一通信装置和所述第二通信装置之间的最小往返时延。
在本申请的一些实施例中,所述第一通信装置通过所述第一通信装置与所述第二通信装置之间的连接通信,所述每经过预设的一个时间段时发送所述第一ACK报文包括:获取所述连接的带宽时延积;当所述带宽时延积大于或等于预设的阈值时,每经过预设的一个时间段时发送所述第一ACK报文;或者,当所述带宽时延积大于预设的阈值时,每经过预设的一个时间段时发送所述第一ACK报文。
在本申请的一些实施例中,所述阈值为β×L×MSS,所述预设的一个时间段为其中,所述β表示所述第一通信装置在RTTmin内发送的ACK报文个数,所述L表示所述第一通信装置在每发送一个ACK报文之前需要接收到的数据报文个数,所述MSS表示传输层协议的最大段长度,所述RTTmin表示所述第一通信装置和所述第二通信装置之间的最小往返时延。
在本申请的一些实施例中,所述获取所述连接的带宽时延积,包括:获取所述第一通信装置和第二通信装置之间的连接的最大带宽、以及所述第一通信装置和所述第二通信装置之间的最小往返时延,确定所述带宽时延积等于所述最大带宽与所述最小往返时延的相乘结果;或者,获取所述第一通信装置和第二通信装置之间的连接的平均带宽、以及所述第一通信装置和所述第二通信装置之间的平均往返时延,确定所述带宽时延积等于所述平均带宽与所述平均往返时延的相乘结果。
在本申请的一些实施例中,所述即时事件包括如下至少一种:丢包事件、所述第一通信装置的接收缓存没有剩余容量的事件。
在本申请的一些实施例中,所述N种ACK报文分别携带的反馈信息包括如下至少一种:所述第一通信装置和第二通信装置之间的连接的时延信息、所述第一通信装置和第二通信装置之间的连接的带宽信息、所述第一通信装置和第二通信装置之间的连接的抖动信息、所述第一通信装置和第二通信装置之间的连接的丢包信息、所述第一通信装置和第二通信装置之间的连接的状态标记信息。
在本申请的一些实施例中,所述收发模块,还用于所述处理模块根据所述第一通信装置支持的确认ACK机制生成第一ACK报文之前,接收所述第二通信装置发送的第一数据报文,所述第一数据报文携带数据内容和第一包序号,当所述第一通信装置确定所述第一数据报文发生丢包时,所述第一ACK报文用于指示所述第一数据报文发生丢包;所述收发模块,还用于接收所述第二通信装置发送的第二数据报文,所述第二数据报文携带所述数据内容和第二包序号,所述第二包序号和所述第一包序号是不相同的包序号。
在本申请的第三方面中,第一通信装置的组成模块还可以执行前述第一方面以及各种可能的实现方式中所描述的步骤,详见前述对第一方面以及各种可能的实现方式中的说明。
第四方面,本申请实施例还提供一种通信装置,包括:处理模块和收发模块,其中,收发模块,用于根据所述第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文,所述ACK机制用于指示N种ACK报文对应的N种ACK类型、和所述N种ACK报文分别携带的反馈信息,所述第一ACK报文属于所述N种ACK报文的一种,所述N为大于或等于2的正整数;处理模块,用于根据所述第二通信装置支持的ACK机制确定所述第一ACK报文对应的第一ACK类型,所述第一ACK类型属于所述N种ACK类型的一种;所述处理模块,还用于使用所述第一ACK类型解析所述第一ACK报文,以生成ACK解析结果。
在本申请的一些实施例中,所述第一ACK报文包括:所述第一ACK类型和第一反馈信息。
在本申请的一些实施例中,所述第一ACK报文包括:ACK类型选项,其中,所述ACK类型选项的大小为(2+m)个字节,所述m的取值为正整数,所述m的大小与所述N的大小正相关;所述(2+m)个字节中的1个字节用于指示所述ACK类型选项的序号;所述(2+m)个字节中的另1个字节用于指示所述ACK类型选项的长度;所述(2+m)个字节中的剩余m个字节用于指示所述第一ACK类型。
在本申请的一些实施例中,所述第一ACK报文还包括:数据域;所述数据域携带所述第一反馈信息的至少一部分。
在本申请的一些实施例中,所述收发模块,还用于根据所述第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文之前,接收所述第一通信装置发送的第一协商报文,所述第一协商报文用于指示所述第一通信装置支持的ACK机制;所述收发模块,还用于向所述第一通信装置发送第二协商报文,所述第二协商报文用于指示所述第二通信装置支持的ACK机制;所述收发模块,还用于当所述第一通信装置和所述第二通信装置使用相互匹配的ACK机制时,触发执行如下步骤:根据所述第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文。
在本申请的一些实施例中,所述第一协商报文包括:第一准许选项,所述第二协商报文包括:第二准许选项,其中,所述第一准许选项的大小为2个字节,所述第一准许选项中的1个字节用于指示所述第一准许选项的序号,所述第一准许选项中的另1个字节用于指示所述第一准许选项的长度;所述第二准许选项的大小为2个字节,所述第二准许选项中的1个字节用于指示所述第二准许选项的序号,所述第二准许选项中的另1个字节用于指示所述第二准许选项的长度。
在本申请的一些实施例中,所述收发模块,还用于根据所述第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文之前,向所述第一通信装置发送第一数据报文,所述第一数据报文携带数据内容和第一包序号;所述收发模块,还用于根据所述第一ACK报文确定所述第一数据报文发生丢包时,向所述第一通信装置发送第二数据报文,所述第二数据报文携带所述数据内容和第二包序号,所述第二包序号和所述第一包序号是不相同的包序号。
在本申请的第四方面中,第二通信装置的组成模块还可以执行前述第二方面以及各种可能的实现方式中所描述的步骤,详见前述对第二方面以及各种可能的实现方式中的说明。
第五方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面所述的方法。
第六方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面所述的方法。
第七方面,本申请实施例提供一种通信装置,该通信装置可以包括终端设备或者芯片等实体,所述通信装置包括:处理器和通信接口,所述通信接口用于与另一个通信装置进行通信,所述处理器用于执行所述存储器中的所述指令,使得所述通信装置执行如前述第一方面或第二方面中任一项所述的方法。可选的,所述通信装置还可以包括存储器;所述存储器用于存储指令。具体的,通信接口可以包括收发模块,或者通信接口可以包括发射器和接收器,详见后续实施例中对通信装置中的收发模块的说明,以及对通信装置中的发射器和接收器的说明。
第八方面,本申请提供了一种芯片系统,该芯片系统包括处理器,用于支持第一通信装置或者第二通信装置实现上述方面中所涉及的功能,例如,发送或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存第一通信装置或者第二通信装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
附图说明
图1为本申请实施例提供的一种通信系统的组成结构示意图;
图2为本申请实施例提供的第一通信装置和第二通信装置之间的一种交互流程示意图;
图3为本申请实施例提供的ACK类型选项的组成结构示意图;
图4为本申请实施例提供的第一ACK报文的组成结构示意图;
图5为本申请实施例提供的第一协商报文的组成结构示意图;
图6为本申请实施例提供的第二协商报文的组成结构示意图;
图7a至图7c为本申请实施例提供的触发条件的三种设置方式的示意图;
图8为本申请实施例提供的一种自定义的ACK报文的结构示意图;
图9为本申请实施例提供的一种发送方和接收方各自的组成结构示意图;
图10为本申请实施例提供接收方和发送方之间的交互流程示意图;
图11a为本申请实施例提供的X-Permitted选项字段的结构示意图;
图11b为本申请实施例提供的ACK-Type选项字段的结构示意图;
图11c为本申请实施例提供的PKT.SEQ选项字段的结构示意图;
图12为本申请实施例提供的TACK报文结构示意图;
图13为本申请实施例提供的丢包驱动的IACK报文结构示意图;
图14为本申请实施例提供的一种通信双方的ACK机制的协商流程示意图;
图15为本申请实施例提供的一种通信双方的ACK机制的数据交互流程示意图;
图16为本申请实施例提供的一种第一通信装置的组成结构示意图;
图17为本申请实施例提供的一种第二通信装置的组成结构示意图;
图18为本申请实施例提供的另一种第一通信装置的组成结构示意图;
图19为本申请实施例提供的另一种第二通信装置的组成结构示意图。
具体实施方式
本申请实施例提供了一种确认报文的处理方法和通信装置以及存储介质,用于减少ACK发送频率,提高数据传输效率。
下面结合附图,对本申请的实施例进行描述。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
本申请实施例的技术方案可以应用于各种通信系统,通信系统可以适用于当前移动网络的通信技术,还适用于面向未来的通信技术,都可基于本申请实施例提供的技术方案。本申请实施例描述的系统架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
如图1所示,本申请实施例提供的通信系统100中至少包括:第一通信装置101和第二通信装置102。第一通信装置和第二通信装置之间存在连接,例如该连接可以是有线链路、或者无线链路,或者有线和无线相结合的链路。本申请实施例提供的第一通信装置和第二通信装置是指进行相互通信的双方,例如第一通信装置和第二通信装置进行数据传输,第一通信装置向第二通信装置发送数据报文,第二通信装置向第一通信装置发送确认(ACK)报文,第一通信装置可以是数据的接收方(receiver),第二通信装置可以是数据的发送方(sender)。举例说明如下,数据报文从发送节点发出,到达接收节点,这个发送节点称为发送方,这个接收节点称为接收方。数据报文从发送方发送给接收方,而ACK报文从接收方回复给发送方。
在实际应用场景中,第一通信装置可以是终端设备,第二通信装置可以是服务器,或者第一通信装置可以是服务器,第二通信装置可以是终端设备,或者第一通信装置和第二通信装置都可以是终端设备,或者第一通信装置和第二通信装置都可以是服务器,具体可以结合应用场景来确定第一通信装置和第二通信装置的实现方式,此处不做限定。
本申请实施例中,第一通信装置可以使用多种传输协议进行数据传输,例如第一通信装置和第二通信装置之间可以传输TCP报文,或者实时传输协议(realtime transportprotocol、RTP)报文,或者实时传输控制协议(realtime transport control protocol、RTCP)报文,具体可以应用场景来确定报文采用的传输协议,此处不做限定。
本申请实施例提出确认报文的处理方法,适用于ACK报文的传输场景中,请参阅图2所示,为本申请实施例提供的第一通信装置和第二通信装置之间的一种交互流程示意图,以第一通信装置是数据的接收方(receiver),第二通信装置是数据的发送方(sender)进行示例说明,第一通信装置执行后续步骤201至步骤202,第二通信装置执行后续步骤211至步骤213,本申请实施例提供的确认报文的处理方法,主要包括如下步骤:
201、第一通信装置根据第一通信装置支持的确认ACK机制(acknowledgementmechanism)生成第一ACK报文,ACK机制用于指示N种ACK报文对应的N种ACK类型、发送N种ACK报文各自所需的触发条件(trigger condition)、和N种ACK报文分别携带的反馈信息(feedback information),第一ACK报文属于N种ACK报文的一种,N为大于或等于2的正整数。
在本申请实施例中,第一通信装置可支持一种或多种的ACK机制(acknowledgement mechanism),每一种ACK机制包括了ACK类型、触发条件以及反馈信息。其中,ACK类型是指一种ACK报文对应的ACK类型,若ACK机制可用于指示N种ACK报文,则N种ACK报文对应N种ACK类型,即每一种ACK报文对应一种ACK类型,N的取值为正整数,例如N的取值为大于或等于2的正整数,具体可以根据应用场景确定N的取值。N种ACK类型具体可以包括:ACK类型1、ACK类型2、…、ACK类型N,对于每一种ACK类型的类型名称可以根据具体场景确定,此处不做限定。
需要说明的是,本申请实施例中ACK机制指示了N种ACK报文中每一种ACK报文对应的ACK类型、触发条件和反馈信息,因此第一通信装置只需要确定所采用的ACK机制指示了哪一种ACK报文,就可以确定出该种类型的ACK报文对应的ACK类型、触发条件和反馈信息。
具体的,触发条件是指发送一种ACK报文所需要的条件,在ACK机制中还指示了在满足什么样的触发条件下才能发送一种ACK报文,若ACK机制可指示生成N种ACK报文,则N种ACK报文中每一种ACK报文对应一种触发条件,即在什么样的触发条件下能够发送相应的ACK报文。例如,N的取值为2,则ACK报文1对应触发条件1,ACK报文2对应触发条件2。若第一通信装置检测到满足当前的触发条件1,则生成ACK报文1,若第一通信装置检测到满足当前的触发条件2,则生成ACK报文2。对于触发条件所包括的具体条件内容,此处不做限定,详见后续实施例中的举例说明。
可以理解的是,本申请实施例中ACK机制指示的触发条件可用于触发ACK报文的发送,在发送ACK报文之前需要先生成ACK报文,另外,触发条件还可以用于触发ACK报文的生成与发送,此处不做限定。
反馈信息是一种ACK报文中所携带的反馈内容,该反馈信息用于指示数据接收方对数据的接收情况,若ACK机制可指示生成N种ACK报文,则N种ACK报文中每一种ACK报文对应一种反馈信息,即每一种ACK报文所需要携带的具体反馈信息内容。例如,N的取值为2,则ACK报文1对应反馈信息1,ACK报文2对应反馈信息2。若第一通信装置检测到满足当前的反馈信息1,则生成ACK报文1,若第一通信装置检测到满足当前的反馈信息2,则生成ACK报文2。对于反馈信息所包括的具体内容,此处不做限定,详见后续实施例中的举例说明。
选择确认(selective acknowledgment,SACK)是TCP的一种确认机制。SACK机制允许TCP单独确认非连续的片段,用于告知发送方哪些包收到了,从而确认真正丢失的包,TCP只重传丢失的片段。SACK可以使用TCP选项,SACK选项扩展了ACK的反馈信息量,SACK选项中,Type=5表示这是选择确认(SACK),该字段占用一个字节。Length表示TCP选项长度,占用一个字节,左边界和右边界各占用4字节,总共用掉了10字节。每新增加一个块(block),将占用8字节。TCP首部长度字段长4位,所能表示的最大十进制为15,15*32/8=60,故报文首部最大长度为60字节,从而TCP选项字段最大长度为40字节。因此,SACK选项最多携带4组block。实际上,TCP默认开启一些重要的TCP扩展选项(如时间戳(Timestamp)选项,占用10字节),所以SACK通常最多携带3组block。由于TCP选项的长度限制,导致SACK携带的block数量有限,在极端网络丢包和抖动场景下,收益有限。例如,面对反向丢包时,选择重传无法精确表达,不必要的重传无法避免,导致带宽浪费。
相比目前的SACK及基于SACK选项的演进方案,本申请实施例提供的ACK机制指示了N种ACK报文中每一种ACK报文对应的ACK类型、触发条件和反馈信息,因此第一通信装置只需要确定所采用的ACK机制指示了哪一种ACK报文,就可以确定出该种类型的ACK报文对应的ACK类型、触发条件和反馈信息。本申请实施例在兼容TCP的前提下,实现了ACK机制的高度灵活性。具体来说,丢包检测在接收方进行,接收方拥有比发送方更全面的数据包到达信息,因此可以保证在ACK数目稀少的前提下,准确并及时的检测丢包事件。一旦发生丢包,则通过本申请实施例定义的ACK报文通知发送方重传相应的数据报文,实现及时的丢包恢复。另一方面,SACK的反馈信息全部在报文头中携带,因此能够携带的信息量很少,而本申请实施例定义的ACK报文的数据域携带更为丰富的反馈信息,支撑动态调整的ACK频率的方式,减少ACK发送频率,提高数据传输效率。假设每个数据报文的长度都是最大段长度(MSS),那么,在SACK机制中,ACK的数目最多可减少50%;而在本申请实施例提供的ACK机制中,ACK的数目可以减少95%以上。
在本申请实施例中,第一通信装置在生成第一ACK报文时需要按照该第一通信装置所支持的ACK机制包括的ACK类型和反馈信息来生成第一ACK报文,并且是否需要生成第一ACK报文还需要判断是否满足第一ACK报文所需要的触发条件。因此本申请实施例中第一通信装置可以控制ACK报文的生成频率,还可以根据需要确定所生成的ACK报文的ACK类型以及该ACK报文所携带的反馈信息,通过灵活自定义多种不同功能的ACK报文,并且丰富各类ACK报文所携带的反馈信息,来支撑动态调整的ACK频率的方式。
在本申请实施例中,第一通信装置作为数据接收方,第二通信装置作为数据发送方,第二通信装置可以向第一通信装置发送数据报文,第一通信装置通过该第一通信装置所支持的ACK机制判断是否需要生成ACK报文,若第一通信装置确定可以生成ACK报文时,该第一通信装置根据ACK机制生成第一ACK报文,则第一通信装置所生成的第一ACK报文属于N种ACK报文的一种,对于第一ACK报文属于N种ACK报文中的哪一种,此处不做限定。在第一通信装置生成第一ACK报文之后,第一通信装置触发执行后续步骤202。
在本申请的一些实施例中,第一通信装置生成的第一ACK报文包括:第一ACK类型和第一反馈信息,第一ACK类型属于N种ACK类型的一种。
其中,若满足第一ACK报文的触发条件,则第一通信装置可以按照第一通信装置支持的ACK机制生成第一ACK报文,该ACK机制指示了ACK类型和反馈信息,则第一通信装置生成的第一ACK报文中可以包括第一ACK类型和第一反馈信息。第一ACK类型是指第一ACK报文对应的ACK类型,该第一ACK类型是N种ACK类型中的一种类型,第一反馈信息是指第一ACK报文所携带的反馈信息,对于第一反馈信息所需要携带的反馈信息内容,可以根据具体的ACK机制来确定,此处不做限定。第一通信装置生成的第一ACK报文中携带有第一ACK类型和第一反馈信息,从而使得接收该第一ACK报文的第二通信装置可以确定出第一ACK报文所属的ACK类型,以及该第一ACK报文所携带的具体反馈信息内容,从而第二通信装置可以确定:第一通信装置是否接收到了第二通信装置发送的数据报文,以及第一通信装置针对该接收的数据报文的反馈情况。
在本申请的一些实施例中,如图3所示,为本申请实施例提供的ACK类型选项的组成结构示意图。第一ACK报文包括:ACK类型选项(ACK type option),其中,
ACK类型选项(ACK type option)的大小为(2+m)个字节,m的取值为正整数,m的大小与N的大小正相关;
(2+m)个字节中的1个字节用于指示ACK类型选项(ACK type option)的序号(kind),(2+m)个字节中的另1个字节用于指示ACK类型选项(ACK type option)的长度(length),(2+m)个字节中的剩余m个字节用于指示第一ACK类型(ACK type)。
具体的,ACK类型选项可以占用(2+m)个字节,m的取值不做限定。若ACK机制需要指示的ACK报文的个数N越大,则m的取值越大,若ACK机制需要指示的ACK报文的个数N越小,则m的取值越小。
第一ACK报文的ACK类型选项可用于指示该第一ACK报文对应的第一ACK类型,例如ACK类型选项可以包括如下三个部分:序号(kind)、长度(length)和ACK类型(ACK type),其中,序号(kind)、长度(length)分别占用1个字节,ACK类型(ACK type)占用m个字节,通过ACK类型(ACK type)可以指示第一ACK报文对应的ACK类型为第一ACK类型,从而第一通信装置可以在ACK类型(ACK type)携带第一ACK类型,从而第二通信装置根据ACK类型选项中的ACK类型的具体取值确定出第一ACK类型。
在本申请的一些实施例中,第一反馈信息是指第一ACK报文所携带的反馈信息。第一ACK报文还包括:数据域;数据域携带第一反馈信息的至少一部分。其中,第一反馈信息可以包括多个反馈子信息,该第一反馈信息的一部分或者全部都可以携带在数据域中,因此增加了数据域中携带的信息量,提高了反馈信息的传输效率,另外在数据域中还可以携带多种更丰富的反馈信息,因此本申请实施例提高了ACK报文携带的信息量。
需要说明的是,本申请实施例中,第一ACK报文包括报文头部域和数据域,其中,报文头部域用于携带报文头部信息,数据域可用于携带第一反馈信息的至少一部分,在第一ACK报文中报文头部域和数据域的划分,可以根据第一ACK报文中的报文头部域中长度(Length)字段的大小来确定,例如根据该长度字段的长度取值大小,从第一ACK报文中确定出该长度取值大小确定出对应于该长度的报文头部域,第一ACK报文中除报文头部域之外的部分属于数据域。
在本申请的一些实施例中,该第一反馈信息包括:第一反馈子信息和第二反馈子信息,如图4所示,为本申请实施例提供的第一ACK报文的组成结构示意图。其中,
第一ACK报文包括:报文头部域(header field)和数据域(data field);
报文头部域携带第一反馈子信息;
数据域携带第二反馈子信息。
其中,第一反馈信息可以包括多种反馈内容,第一ACK报文中携带有第一反馈信息,根据第一反馈信息在第一ACK报文中的携带位置的不同,该第一反馈信息可以分为第一反馈子信息和第二反馈子信息,对于第一反馈子信息和第二反馈子信息的组成内容,此处不做限定。举例说明如下,第一反馈信息可以包括:确认序号、时延信息、抖动信息,则第一反馈子信息可以是确认序号,第二反馈子信息可以是时延信息和抖动信息,不同类型的ACK报文,其报文头部域和数据域中携带的反馈信息也可以不相同。由于本申请实施例中ACK报文的报文头部域和数据域都可以携带反馈信息,因此本申请实施例中ACK报文携带有丰富的反馈信息,提高了ACK报文携带的信息量。
在本申请的一些实施例中,步骤201第一通信装置根据第一通信装置支持的确认ACK机制生成第一ACK报文之前,本申请实施例提供的确认报文的处理方法还包括:
第一通信装置向第二通信装置发送第一协商报文(negotiation packet),第一协商报文用于指示第一通信装置支持的ACK机制;
第一通信装置接收第二通信装置发送的第二协商报文,第二协商报文用于指示第二通信装置支持的ACK机制;
当第一通信装置和第二通信装置使用相互匹配的ACK机制时,触发执行前述步骤201:第一通信装置根据第一通信装置支持的确认ACK机制生成第一ACK报文。
其中,在第一通信装置和第二通信装置开始进行数据传输以及确认报文的发送之前,第一通信装置和第二通信装置还可以先进行各自支持的ACK机制的协商,例如通信双方(第一通信装置和第二通信装置)通过握手进行建链和协商。其中,第一通信装置在构造协商报文的过程中,通过协商报文表征自己已支持指定的ACK机制。第二通信装置构造协商报文的过程中,通过协商报文表征自己是否支持指定的ACK机制。如果第一通信装置和第二通信装置都支持同样的ACK机制,则第一通信装置和第二通信装置协商成功,后续数据报文传输过程中,使用该ACK机制进行ACK报文的发送与接收。若第一通信装置和第二通信装置协商失败,不使用本申请实施例提供的方案进行ACK报文的发送与接收。通过通信双方分别发送协商报文,以进行ACK机制的协商,可以使得通信双方能够正确的进行ACK报文的发送与接收。
在本申请的一些实施例中,如图5所示,为本申请实施例提供的第一协商报文的组成结构示意图,如图6所示,为本申请实施例提供的第二协商报文的组成结构示意图,第一协商报文包括:第一准许选项(permitted option),第二协商报文包括:第二准许选项(permitted option),其中,
第一准许选项(permitted option)的大小为2个字节,第一准许选项(permittedoption)中的1个字节用于指示第一准许选项(permitted option)的序号(kind),第一准许选项(permitted option)中的另1个字节用于指示第一准许选项(permitted option)的长度(length);
第二准许选项(permitted option)的大小为2个字节,第二准许选项(permittedoption)中的1个字节用于指示第二准许选项(permitted option)的序号,第二准许选项(permitted option)中的另1个字节用于指示第二准许选项(permitted option)的长度。
其中,第一协商报文和第二协商报文的组成结构类似,接下来以第一协商报文为例进行说明,如图5所示,第一准许选项的大小为2个字节,序号(kind)、长度(length)分别占用1个字节,第一准许选项中的1个字节用于指示第一准许选项的序号(kind),第一准许选项中的另1个字节用于指示第一准许选项的长度(length),通过第一准许选项可以指示第一协商报文,从而第一通信装置可以在第一协商报文中通过第一准许选项携带该第一通信装置支持的ACK类型,从而第二通信装置接收到第一协商报文之后,通过解析第一准许选项就可以确定第一通信装置支持的ACK类型。同理,第一通信装置接收到第二协商报文之后,通过解析第二准许选项就可以确定第二通信装置支持的ACK类型。通过通信双方分别发送协商报文,可以完成ACK机制的协商,以保证通信双方使用相同的ACK机制进行ACK报文的发送与接收。
接下来以第一通信装置采用TCP生成ACK报文的方式进行举例说明,在TCP选项字段中进行多种ACK报文的识别和协商。如下表1所示,为TCP选项字段中增加的相关选项字段的说明:
其中,本申请实施例提供的ACK机制在TCP中的实现过程中,ACK识别和协商的过程如下:
首先说明ACK报文的识别功能,通过在TCP报文中携带ACK类型选项来识别多种不同的ACK报文。本申请实施例一种可能的实现方式,通过在TCP报文中携带一个“ACK类型选项(ACK-Type)”来识别多种不同的ACK报文,ACK类型选项通过m字节来指示ACK的类别。例如,ACK类型选项采用TCP选项字段中的TLV(Type-Length-Value)数据结构。
在本申请实施例一种可能的实现方式中,将ACK类型选项放在TCP选项字段中,实现与TCP兼容。如上述表1所示,TCP选项字段中增加一个2+m(m≥1,m为整数)字节的“ACK类型选项”。该选项字段不仅包含1字节的Type值和1字节的Length值,还包含m字节的Value值,用于指示ACK类型。
接下来说明ACK协商功能,例如通过在同步序列编号(synchronize sequencenumbers,SYN)报文中携带2字节的准许选项(用X-Permitted表示)来指示该通信装置(例如第一通信装置或第二通信装置)支持指定的ACK机制(用代号X表示)。协商过程可以发生在传输层,也可以发生在传输层以上,如会话层和应用层等。另外,协商过程可以发生在建链阶段,也可以发生在数据传输过程中。本申请实施例对此不作任何限制。
一种可能的实现方式为,准许选项放在TCP选项字段中,实现与TCP兼容。如上述表1所示,准许选项用于TCP三次握手时进行ACK机制的协商,该字段被携带在SYN报文中。
需要说明的是,在前述举例说明中,在TCP中,准许选项可以在SYN报文中携带,ACK类型选项可以在ACK报文中携带。表1中的i和j是类型标识符,作为字段的一部分,用于识别这个字段是ACK类型选项还是准许选项。
在本申请的一些实施例中,生成第一ACK报文的触发条件包括如下的至少一种:
按照预设的ACK发送频率发送第一ACK报文、在预设的即时事件产生时发送第一ACK报文。
其中,ACK机制中可以指示N种ACK报文分别对应的触发条件,以生成第一ACK报文的触发条件为例进行说明,触发条件可以分为两种:ACK发送频率和即时事件。其中,ACK发送频率是指发送ACK的发送频率,只有满足该ACK发送频率时才能生成ACK报文并发送,例如ACK发送频率可以是每间隔一定的时间段发送一个ACK报文,或者该ACK发送频率可以是每接收到一定数量的数据报文时发送一个ACK报文。即时事件是指能够触发ACK报文的发送的事件信息,只有ACK机制中指示的即时事件产生时才能够生成ACK报文并发送,即时事件也可以根据具体的应用场景来配置,例如即时事件可以是丢包事件或者接收缓存满事件等。根据上述的触发条件,本申请实施例可以实现按需生成ACK报文,从而实现ACK报文的动态可调整。
在本申请的一些实施例中,按照预设的ACK发送频率发送第一ACK报文,包括如下至少一种:每接收到预设个数的数据报文时发送第一ACK报文,每经过预设的一个时间段时发送第一ACK报文。
其中,ACK发送频率可以作为发送第一ACK报文的触发条件,按照预设的ACK发送频率发送第一ACK报文可以包括:每接收到预设个数的数据报文时发送第一ACK报文,例如第一通信装置作为接收方,每接收到Y(Y>1)个数据报文后,立即回复一个第一ACK报文,第一通信装置可以实时统计从发送一个第一ACK报文开始,该第一通信装置接收到的数据报文的个数,根据数据报文的接收个数来判断是否发送第一ACK报文。另外,按照预设的ACK发送频率发送第一ACK报文还可以包括:每经过预设的一个时间段时发送第一ACK报文,例如第一通信装置作为接收方,第一通信装置在发送一个第一ACK报文时开始计时,当经过预设的时间段时再发送下一个第一ACK报文,因此在这种实现场景下,第一通信装置不管有没有数据报文到达接收方,第一通信装置都需要按照预设的时间段发送第一ACK报文。根据上述的触发条件,本申请实施例可以实现按需生成ACK报文,从而实现ACK报文的动态可调整。
接下来针对不同触发条件发送ACK报文的方式进行举例说明,本申请实施例中的触发条件可以由以下一种或者多种方式进行组合。
在本申请实施例中,一种可能的方式是,当不存在丢包或乱序时,则不回复ACK报文。
一种可能的方式,如图7a所示,第一通信装置作为接收方,每接收到Y(Y>1)个数据报文后,立即回复ACK报文。另一种可能的方式,如图7b所示,不管有没有数据报文到达,第一通信装置作为接收方,第一通信装置均按指定的ACK发送频率回复ACK报文。另一种可能的方式,如图7c所示,第一通信装置作为接收方,第一通信装置根据网络状态的变化,例如时延或带宽变化达到一个阈值,或者丢包率、丢包数目、或乱序程度达到一个阈值,又或者接收缓存剩余容量达到一个阈值等等,按需回复ACK报文。另一种可能的方式,也可以是图7a至图7c的组合,即任意满足“每接收到Y(Y>1)个数据报文”、“间隔一段时间”、“网络状态变化达到一个阈值”其中一个或多个条件时,回复ACK报文。
进一步的,在本申请的一些实施例中,第一通信装置通过第一通信装置与第二通信装置之间的连接通信,每接收到预设个数的数据报文时发送第一ACK报文包括:
第一通信装置获取第一通信装置和第二通信装置之间的连接的带宽时延积(bandwidth and delay product);
当带宽时延积小于预设的阈值时,每接收到预设个数的数据报文时发送第一ACK报文;或者,
当带宽时延积小于或等于预设的阈值时,每接收到预设个数的数据报文时发送第一ACK报文。
其中,本申请实施例中第一通信装置还可以根据连接的带宽时延积来确定ACK发送频率,第一通信装置可以基于带宽时延积是否小于预设的阈值来计算ACK发送频率。带宽时延积是指第一通信装置和第二通信装置之间的连接的最大带宽和最下往返时延的乘积。只有该带宽时延积满足预设的阈值条件,才能按照每接收到预设个数的数据报文时发送第一ACK报文。该阈值条件可以是:带宽时延积小于预设的阈值,或者,带宽时延积小于或等于预设的阈值。对于该阈值的取值大小不作限定。本申请实施例中第一通信装置可以根据带宽时延积是否小于阈值来确定ACK发送频率,实现了按需生成ACK报文,从而实现ACK报文的动态可调整。
需要说明的是,第一通信装置通过第一通信装置与第二通信装置之间的连接通信,该连接可以用于发送数据报文和控制报文,另外,该连接可以包括数据链路和控制链路,通信包括发送数据报文,也包括发送控制报文,例如本文中提到的各种ACK报文,其中,数据链路可用于发送数据报文,控制链路可用于发送控制报文。
进一步的,在本申请的一些实施例中,阈值为β×L×MSS,预设个数为L×MSS;其中,
β表示第一通信装置在RTTmin内发送的ACK报文个数,L表示第一通信装置在每发送一个ACK报文之前需要接收到的数据报文个数,MSS表示传输层协议的最大段长度(maximumsegment size),RTTnim表示第一通信装置和第二通信装置之间的最小往返时延(minimumround-trip time)。
在本申请的一些实施例中,第一通信装置通过所述第一通信装置与所述第二通信装置之间的连接通信,每经过预设的一个时间段时发送第一ACK报文包括:
第一通信装置获取第一通信装置和第二通信装置之间的连接的带宽时延积;
当带宽时延积大于或等于预设的阈值时,每经过预设的一个时间段时发送第一ACK报文;或者,
当带宽时延积大于预设的阈值时,每经过预设的一个时间段时发送第一ACK报文。
其中,本申请实施例中第一通信装置还可以根据连接的带宽时延积来确定ACK发送频率,第一通信装置可以基于带宽时延积是否大于预设的阈值来计算ACK发送频率。带宽时延积是指第一通信装置和第二通信装置之间的连接的最大带宽和最下往返时延的乘积。只有该带宽时延积满足预设的阈值条件,才能按照每经过预设的一个时间段时发送第一ACK报文。该阈值条件可以是:带宽时延积大于预设的阈值,或者,带宽时延积大于或等于预设的阈值。对于该阈值的取值大小不作限定。本申请实施例中第一通信装置可以根据带宽时延积是否小于阈值来确定ACK发送频率,实现了按需生成ACK报文,从而实现ACK报文的动态可调整。
β表示第一通信装置在RTTmin内发送的ACK报文个数,L表示第一通信装置在每发送一个ACK报文之前需要接收到的数据报文个数,MSS表示传输层协议的最大段长度,RTTmin表示第一通信装置和第二通信装置之间的最小往返时延。
接下来针对第一通信装置基于带宽时延积的ACK发送频率的计算过程进行举例说明。
例如,当带宽时延积大于或等于β×L×MSS时,该ACK发送频率为:每经过RTTmin时间发送β个ACK,即当带宽时延积大于指定阈值(例如β×L×MSS)时,采用每经过指定时长(例如)后发送1个ACK报文。
当带宽时延积小于β×L×MSS时,该ACK发送频率为:每收到L×MSS字节的数据报文后,发送1个ACK报文,即当带宽时延积小于上述指定的阈值时,采用每累计接收指定量(例如L×MSS)的数据报文后,发送1个ACK报文。
在本申请的一些实施例中,第一通信装置获取第一通信装置和第二通信装置之间的连接的带宽时延积,包括:
第一通信装置获取第一通信装置和第二通信装置之间的连接的最大带宽(maximum bandwidth)、以及第一通信装置和第二通信装置之间的最小往返时延,确定带宽时延积等于最大带宽与最小往返时延的相乘结果;或者,
第一通信装置获取第一通信装置和第二通信装置之间的连接的平均带宽、以及第一通信装置和第二通信装置之间的平均往返时延,确定带宽时延积等于平均带宽与平均往返时延的相乘结果。
其中,带宽时延积的计算方法多种,例如第一通信装置可以采用最大带宽与最小往返时延的相乘结果作为带宽时延积。又如,第一通信装置可以采用平均带宽与平均往返时延的相乘结果作为带宽时延积,通过上述多种计算方式,第一通信装置都可以计算出带宽时延积,从而第一通信装置可以根据带宽时延积是否小于阈值来确定ACK发送频率,实现了按需生成ACK报文,从而实现ACK报文的动态可调整。
在本申请的一些实施例中,即时事件(instant event)包括如下至少一种:丢包事件(loss event)、第一通信装置的接收缓存没有剩余容量的事件。
其中,第一通信装置可以在ACK机制中自定义多种的即时事件,丢包事件(lossevent)、第一通信装置的接收缓存没有剩余容量的事件。接收缓存没有剩余容量是指第一通信装置的接收缓存满。例如第一通信装置作为接收方,可以根据网络状态的变化,例如时延或带宽变化达到一个阈值,或者丢包率、丢包数目、或乱序程度达到一个阈值,又或者接收缓存剩余容量达到一个阈值等等,按需生成ACK报文。本申请实施例中第一通信装置可以根据自定义的即时事件发送ACK报文,实现了按需生成ACK报文,从而实现ACK报文的动态可调整。
在本申请的一些实施例中,N种ACK报文分别携带的反馈信息包括如下至少一种:第一通信装置和第二通信装置之间的连接的时延信息、第一通信装置和第二通信装置之间的连接的带宽信息、第一通信装置和第二通信装置之间的连接的抖动信息、第一通信装置和第二通信装置之间的连接的丢包信息、第一通信装置和第二通信装置之间的连接的状态标记信息。
具体的,本申请实施例中第一通信装置可以在ACK机制中灵活自定义多种的反馈信息,则第一通信装置生成的第一ACK报文可以携带各种的反馈信息,以使得第二通信装置可以接收到第一通信装置发送的多种反馈信息,实现更全面的信息反馈。
本申请实施例中,ACK携带多种的反馈信息。反馈信息可以是ACK携带时延相关的信息。其中,时延相关的信息包括往返时延、单向时延、排队时延、截止时间等其中的一种或多种。单向时延是指一个报文从发送方发出到接收方收到该报文期间的时延。当数据在通信装置的缓存中排队等待处理时,就会产生排队时延,排队时延产生在瓶颈链路上。
反馈信息还可以是ACK携带带宽相关的信息。带宽相关的信息包括发送速率、接收速率、网络带宽等其中的一种或多种。
反馈信息还可以是ACK携带抖动相关的信息。抖动相关的信息包括时延抖动、带宽抖动等其中的一种或多种。
反馈信息还可以是ACK携带丢包信息。携带丢包信息的ACK又可以细分为携带最新丢包信息的ACK报文和携带冗余历史丢包信息的ACK报文。丢包信息是指接收方的接收缓存中不连续的数据段序列之间的间隔。例如,接收方缓存有(2,5,6,8,9)五个报文,则最新丢包信息为7这个报文的序列号,历史丢包信息为1,3和4共三个报文的序列号。这些序列号表示的丢包信息,可以通过编码的方式来减少ACK携带的字节数,本申请实施例不限制所使用的编码方式,以及是否使用编码。
反馈信息还可以是ACK携带其它网络状态信息。包括接收方缓存中已接收但未提交到上层应用的数据量、接收方缓存剩余大小、乱序程度、用于发送方进行决策的控制参数等其中的一种或多种。例如反馈信息还可以是ACK携带标记信息,用于发送方进行决策的控制参数可以是一个阈值参数,也可能是一个指示某种状态的标记。
接下来针对通过ACK报文的数据域携带反馈信息的方法进行举例说明,请参阅图8所示,为本申请实施例提供的一种自定义的ACK报文的结构示意图,ACK报文包括:报文头部域和数据域,其中,报文头部域又可以称为报文首部,数据域又可以称为数据部分,数据域可以包括:INFO_1、INFO_2、INFO_3、…、INFO_M,即数据域可以包括M个子字段,自定义的ACK报文,除了报文首部中的必要字段以外,数据部分允许携带更多反馈信息,该信息包括但不限于时延、带宽、抖动、报文序列号、数据量等,不同类型的ACK,其数据部分携带的反馈信息不同,详见前述实施例中对反馈信息的说明,此处不再赘述。
在本申请的一些实施例中,步骤201第一通信装置根据第一通信装置支持的确认ACK机制生成第一ACK报文之前,本申请实施例提供的确认报文的处理方法包括:
第一通信装置接收第二通信装置发送的第一数据报文,第一数据报文携带数据内容和第一包序号(packet number),当第一通信装置确定第一数据报文发生丢包时,第一ACK报文用于指示第一数据报文发生丢包;
第一通信装置接收第二通信装置发送的第二数据报文,第二数据报文携带数据内容和第二包序号(packet number),第二包序号(packet number)和第一包序号(packetnumber)是不相同的包序号(packet number)。
其中,第二通信装置可以向第一通信装置发送第一数据报文,该第一数据报文携带数据内容和第一包序号(packet number),第二通信装置每次发送的数据报文中携带的包序号是不相同的,例如第二通信装置向第一通信装置发送的数据报文中携带有包序号,并且该包序号是单调递增的,即第二通信装置每发送一个数据报文,该数据报文中就可以携带一个包序号,当前发送的数据报文的包序号与之前发送的数据报文的包序号是增加的。
第一通信装置在确定是否生成第一ACK报文之前,第一通信装置可以接收第二通信装置发送的第一数据报文,当第一通信装置确定第一数据报文发生丢包时,第一通信装置生成第一ACK报文,该第一ACK报文用于指示第一数据报文发生丢包。第二通信装置接收第一通信装置发送的第一ACK报文,第二通信装置根据该第一ACK报文确定第一数据报文发生丢包,因此第二通信装置需要重发第一数据报文携带的数据内容,此时第二通信装置生成第二数据报文,第二数据报文携带数据内容和第二包序号(packet number),第二包序号(packet number)和第一包序号(packet number)是不相同的包序号(packet number),例如第二包序号是在第一包序号的基础上递增的包序号,则第一通信装置接收第二通信装置发送的第二数据报文,第一通信装置可以根据该第二数据报文中携带的第二包序号(packet number)确定是哪个数据报文丢失后重传的,从而提高丢包恢复效率。
举例说明如下,第一通信装置是接收方,第一通信装置接收第二通信装置发送的数据报文,若该数据报文丢失后会重传,但重传包也可能会丢失。为了在第一通信装置侧能够成功地检测丢失的重传包数目,本申请实施例引入一个严格递增的包序号(用PKT.SEQ表示),作为每个报文的一个属性。也就是说,先发的包PKT.SEQ小,后发的包PKT.SEQ大。结合PKT.SEQ这一新的数据报文属性,第二通信装置作为发送方,在收到丢包驱动的ACK报文时,就可以明确地知道具体哪个数据包(包括是否是重传包)已丢失,从而提高丢包恢复效率。
202、第一通信装置向第二通信装置发送第一ACK报文。
在本申请实施例中,在第一通信装置生成第一ACK报文之后,第一通信装置可以向第二通信装置发送第一ACK报文,从而使得第二通信装置可以接收该第一ACK报文,并基于接收到的第一ACK报文确定第一通信装置是否接收到了第二通信装置发送的数据报文,以及第一通信装置针对该接收的数据报文的反馈情况。
211、第二通信装置根据第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文,ACK机制用于指示N种ACK报文对应的N种ACK类型、和N种ACK报文分别携带的反馈信息,第一ACK报文属于N种ACK报文的一种,N为大于或等于2的正整数。
在本申请实施例中,第二通信装置和第一通信装置需要使用相互匹配的ACK机制,以实现第二通信装置和第一通信装置之间的ACK反馈。例如第一通信装置使用该第一通信装置支持的ACK机制发送了第一ACK报文,则第二通信装置也需要支持第一通信装置所使用的ACK机制,否则,第二通信装置不支持第一通信装置所使用的ACK机制时,第二通信装置无法正确接收第一通信装置发送的第一ACK报文。
需要说明的是,本申请实施例中ACK机制指示了N种ACK报文中每一种ACK报文对应的ACK类型和反馈信息,因此第一通信装置只需要确定所采用的ACK机制指示了哪一种ACK报文,就可以确定出该种类型的ACK报文对应的ACK类型和反馈信息,因此可以实现减少ACK发送频率,提高数据传输效率。
在本申请实施例中,第二通信装置能够支持一种或多种的ACK机制(acknowledgement mechanism),每一种ACK机制至少包括了ACK类型以及反馈信息。其中,ACK类型是指一种ACK报文对应的ACK类型,若ACK机制可用于指示N种ACK报文,则N种ACK报文对应N种ACK类型,即每一种ACK报文对应一种ACK类型,N的取值为正整数,例如N的取值为大于或等于2吃的正整数,具体可以根据应用场景确定N的取值。N种ACK类型具体可以包括:ACK类型1、ACK类型2、…、ACK类型N,对于每一种ACK类型的类型名称可以根据具体场景确定,此处不做限定。
反馈信息是一种ACK报文中所携带的反馈内容,该反馈信息用于指示数据接收方对数据的接收情况,若ACK机制可指示生成N种ACK报文,则N种ACK报文中每一种ACK报文对应一种反馈信息,即每一种ACK报文所需要携带的具体反馈信息内容。例如,N的取值为2,则ACK报文1对应反馈信息1,ACK报文2对应反馈信息2。若第一通信装置检测到满足当前的反馈信息1,则生成ACK报文1,若第一通信装置检测到满足当前的反馈信息2,则生成ACK报文2。对于反馈信息所包括的具体条件内容,此处不做限定,详见前述实施例中对反馈信息的举例说明。
在本申请的一些实施例中,步骤211第二通信装置根据第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文之前,本申请实施例提供的确认报文的处理方法还包括:
第二通信装置接收第一通信装置发送的第一协商报文,第一协商报文用于指示第一通信装置支持的ACK机制;
第二通信装置向第一通信装置发送第二协商报文,第二协商报文用于指示第二通信装置支持的ACK机制;
当第一通信装置和第二通信装置使用相互匹配的ACK机制时,触发执行如下步骤:第二通信装置根据第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文。
其中,在第一通信装置和第二通信装置开始进行数据传输以及确认报文的发送之前,第一通信装置和第二通信装置还可以先进行各自支持的ACK机制的协商,例如通信双方(第一通信装置和第二通信装置)通过握手进行建链和协商。其中,第一通信装置在构造协商报文的过程中,通过协商报文表征自己已支持指定的ACK机制。第二通信装置构造协商报文的过程中,通过协商报文表征自己是否支持指定的ACK机制。如果第一通信装置和第二通信装置都支持同样的ACK机制,则第一通信装置和第二通信装置协商成功,后续数据报文传输过程中,使用该ACK机制进行ACK报文的发送与接收。若第一通信装置和第二通信装置协商失败,不使用本申请实施例提供的方案进行ACK报文的发送与接收。通过通信双方分别发送协商报文,以进行ACK机制的协商,可以使得通信双方能够正确的进行ACK报文的发送与接收。
在本申请的一些实施例中,步骤211第二通信装置根据第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文之前,本申请实施例提供的确认报文的处理方法还包括:
第二通信装置向第一通信装置发送第一数据报文,第一数据报文携带数据内容和第一包序号;
第二通信装置根据第一ACK报文确定第一数据报文发生丢包时,第二通信装置向第一通信装置发送第二数据报文,第二数据报文携带数据内容和第二包序号,第二包序号和第一包序号是不相同的包序号。
其中,第二通信装置可以向第一通信装置发送第一数据报文,该第一数据报文携带数据内容和第一包序号(packet number),第二通信装置每次发送的数据报文中携带的包序号是不相同的,例如第二通信装置向第一通信装置发送的数据报文中携带有包序号,并且该包序号是单调递增的,即第二通信装置每发送一个数据报文,该数据报文中就可以携带一个包序号,当前发送的数据报文的包序号与之前发送的数据报文的包序号是增加的。
第一通信装置在确定是否生成第一ACK报文之前,第一通信装置可以接收第二通信装置发送的第一数据报文,当第一通信装置确定第一数据报文发生丢包时,第一通信装置生成第一ACK报文,该第一ACK报文用于指示第一数据报文发生丢包。第二通信装置接收第一通信装置发送的第一ACK报文,第二通信装置根据该第一ACK报文确定第一数据报文发生丢包,因此第二通信装置需要重发第一数据报文携带的数据内容,此时第二通信装置生成第二数据报文,第二数据报文携带数据内容和第二包序号(packet number),第二包序号(packet number)和第一包序号(packet number)是不相同的包序号(packet number),例如第二包序号是在第一包序号的基础上递增的包序号,则第一通信装置接收第二通信装置发送的第二数据报文,第一通信装置可以根据该第二数据报文中携带的第二包序号(packet number)确定是哪个数据报文丢失后重传的,从而提高丢包恢复效率。
举例说明如下,第一通信装置是接收方,第一通信装置接收第二通信装置发送的数据报文,若该数据报文丢失后会重传,但重传包也可能会丢失。为了在第一通信装置侧能够成功地检测丢失的重传包数目,本申请实施例引入一个严格递增的包序号(用PKT.SEQ表示),作为每个报文的一个属性。也就是说,先发的包PKT.SEQ小,后发的包PKT.SEQ大。结合PKT.SEQ这一新的数据报文属性,第二通信装置作为发送方,在收到丢包驱动的ACK报文时,就可以明确地知道具体哪个数据包(包括是否是重传包)已丢失,从而提高丢包恢复效率。
212、第二通信装置根据第二通信装置支持的ACK机制确定第一ACK报文对应的第一ACK类型,第一ACK类型属于N种ACK类型的一种。
在本申请实施例中,第二通信装置根据第二通信装置支持的确认ACK机制接收到第一通信装置发送的第一ACK报文之后,第二通信装置与第一通信装置使用相互匹配的ACK机制,因此第二通信装置需要先识别出接收到的第一ACK报文的ACK类型,此时第二通信装置需要根据第二通信装置支持的ACK机制就可以确定第一ACK报文对应的ACK类型为第一ACK类型,该第一ACK类型可以是前述的ACK机制指示的N种ACK类型的一种。
213、第二通信装置使用第一ACK类型解析第一ACK报文,以生成ACK解析结果。
在本申请实施例中,第二通信装置需要根据第二通信装置支持的ACK机制就可以确定第一ACK报文对应的ACK类型为第一ACK类型,第二通信装置可以使用该第一ACK类型来解析第一ACK报文,由于第一通信装置和第二通信装置可以使用相互匹配的ACK机制进行ACK报文的发送与接收,因此第二通信装置使用第一ACK类型就可以成功的解析第一ACK报文,从而第二通信装置可以生成ACK解析结果,该ACK解析结果中包括了第一通信装置是否接收到了第二通信装置发送的数据报文,以及第一通信装置针对该接收的数据报文的反馈情况。
通过前述实施例对本申请的举例说明可知,第一通信装置根据第一通信装置支持的确认ACK机制生成第一ACK报文,该ACK机制用于指示N种ACK报文对应的N种ACK类型、发送N种ACK报文各自所需的触发条件、和N种ACK报文分别携带的反馈信息,第一ACK报文属于N种ACK报文的一种,N大于或等于2,由于第一通信装置使用的ACK机制包括了ACK类型、触发条件以及反馈信息,因此第一通信装置在生成第一ACK报文时需要按照该ACK机制包括的ACK类型和反馈信息来生成第一ACK报文,并且是否需要生成第一ACK报文还需要判断是否满足第一ACK报文所需要的触发条件,然后第一通信装置向第二通信装置发送第一ACK报文。第二通信装置首先根据第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文,第二通信装置根据第二通信装置支持的ACK机制确定第一ACK报文对应的第一ACK类型,第二通信装置最后使用第一ACK类型解析第一ACK报文,以生成ACK解析结果。本申请实施例中可以从ACK类型、触发条件以及反馈信息来定义ACK机制,因此实现了ACK报文的多种类型的灵活自定义,以及按照触发条件发送ACK报文,减少ACK发送频率,提高数据传输效率。
为便于更好的理解和实施本申请实施例的上述方案,下面举例相应的应用场景来进行具体说明。
本申请实施例提供的第一通信装置可以是数据报文的接收方(简称接收方),第二通信装置可以是数据报文的发送方(简称发送方),接收方和发送方之间基于可扩展的ACK机制进行ACK报文的处理,接收方和发送方可以通过TCP进行报文处理,可消除TCP扩展的瓶颈。本申请实施例中,利用TCP选项可以定义多种ACK类型,利用报文选项和数据部分重定义ACK报文(后续简称为ACK或者ACK包)的格式,修改发送方和接收方的双端报文处理方式,实现按需触发的ACK机制。本申请实施例允许自定义多种ACK类,还可以将ACK包反馈信息放在数据报文中的数据部分。另外,本申请实施例允许按需进行延迟确认,可以按需减少ACK的频率。
当前TCP的ACK机制可扩展性差,其灵活性无法满足多样的业务场景。本申请实施例在兼容当前TCP实现的基础上,通过灵活自定义多种不同功能的ACK,并且丰富各类ACK所携带的信息量,来支撑灵活伸缩的ACK频率,从而提高TCPACK机制的可扩展性,提高传输协议对多样业务场景的适应性,提升传输效率。
本申请实施例通过灵活自定义多种不同功能的ACK,并且丰富各类ACK所携带的信息量,从而可以支撑动态调整的ACK发送频率。
例如,本申请实施例提供的ACK报文的种类有N种,N≥2。一种可行的分类方式为,按触发条件分类,例如按指定的ACK发送频率发送ACK,和根据即时(Instant)事件回复ACK。例如,即时事件可以是丢包事件或者接收缓存满事件等。具体的,针对ACK发送频率,还可以进一步的分类,例如每收到A个报文触发的ACK和每收到B(A≠B)个报文触发的ACK。又如,针对即时事件触发的ACK,还可以按ACK中携带的信息内容分类,例如携带时延信息的ACK和携带丢包信息的ACK。
本申请实施例提供的ACK携带丰富的反馈信息。该反馈信息包括但不限于如下的至少一种:时间戳、标记、时延、带宽、抖动、报文序列号、数据量等。其中,时延包括但不限于排队时延(queueing delay)、往返时延(round-trip time)、单向时延(one-way delay)等。ACK携带的反馈信息与ACK的类型相关,因此,收发双方进行协商时,只需要协商收发双方各自支持的ACK机制。例如,一种ACK机制包含特定的几种ACK的类型,每种ACK携带的反馈信息以及该信息在报文中的偏移地址也是确定的。
本申请实施例可以实现动态调整的ACK频率。例如,在目前的无线局域网中,ACK与数据包消耗的接口资源和空口资源是相近的,而目前的延迟ACK机制最多降低50%的ACK数量,在高吞吐场景,其ACK数量仍然是巨大的,ACK带来的通信开销仍然不可忽略,导致带宽利用率低下。本申请实施例可以极大的降低ACK发送频率,比如降低到每报文确认下的5%的数量,将减少95%的通信开销。
接下来对本申请实施例应用的系统架构或场景进行详细说明,本申请实施例中ACK机制可指示的ACK报文是自定义的,因此,本申请实施例的方案需要同时部署在通信双方节点上。本申请实施例通过协商机制,在通信双方之间使能本申请实施例的ACK机制。在通信双方协商完成后,发送方发送数据报文到接收方,接收方根据ACK机制中规定的触发条件和构造规则,生成相应的ACK,回复给发送方,以使得发送方获取到ACK报文,然后发送方根据接收到的ACK报文进行决策,调整发送行为和逻辑,继续发送数据报文,形成闭环控制。
本申请实施例适用于要求ACK按需反馈的场景中。无线局域网的可靠数据传输,如文件分发、无线投屏等。应用本申请实施例的ACK机制及其实现方法,可以在保证传输性能的前提下,减少ACK发送频率,从而降低通信双方和中间网络设备的开销。
接下来对本申请实施例提供的通信双方的组成结构进行说明,本申请实施例提供的接收方可以是传感器、手机、平板、笔记本电脑、个人计算机、服务器等;本申请实施例提供的发送方也可以是网关、接入路由器、核心路由器、前端路由器、负载均衡器等。本申请实施例对通信双方的装置部分进行改造,具体的功能模块,部分实现在发送方,部分实现在接收方。如图9所示,为本申请实施例提供的一种发送方和接收方各自的组成结构示意图。在发送方一侧可以包括:机制协商模块、数据报文构造模块和ACK解析模块,在接收方一侧可以包括:机制协商模块、网络状态解析模块、ACK触发管理模块和ACK构造模块。这些模块相互协同,完成本申请实施例ACK机制下的数据交互流程。其中,发送方的机制协商模块和接收方的机制协商模块可以通过SYN报文,或者SYN报文和ACK报文进行ACK机制协商,发送方的数据报文构造模块可以向接收方发送数据报文,接收方的ACK构造模块构造出ACK报文之后,可以向发送方发送该ACK报文。
需要说明的是,发送方和接收方还可以包含其它本申请实施例未说明的模块,本申请实施例并不对通信双方包括的模块数目做任何限制。
如图10所示,为本申请实施例提供接收方和发送方之间的交互流程示意图,主要包括:
S01、通信双方通过握手进行建链和协商。通信双方(客户端和服务器)上的机制协商模块,通过握手进行建链和协商。其中,客户端在构造协商报文的过程中,机制协商模块在协商报文中包含“准许选项”,表征自己已支持指定的ACK机制。服务器构造协商报文的过程中,机制协商模块在协商报文中,同样包含所述“准许选项”,表征自己是否支持指定的ACK机制。如果都支持,则协商成功,后续数据报文传输过程中,使用ACK机制,进入步骤S02。否则,执行步骤S10使用默认的ACK机制,进行TCP数据交互流程。
S02、通信双方判断是否支持指定ACK机制。
S03、发送方构造数据报文,并将数据报文经过通信链路发送给接收方。
例如,发送方的数据报文构造模块构造数据报文,然后发送方将数据报文经过通信链路发送给接收方。
S04、接收方接收数据报文,根据数据报文的到达情况,计算网络状态相关信息。
例如,接收方接收数据报文,通过网络状态解析模块,根据数据报文的到达情况,计算网络状态相关的反馈信息,包括但不限于时延、速率和丢包等信息,详见前述实施例中对反馈信息的说明。
S05、接收方接收数据,决策是否触发ACK。
例如,接收方通过ACK触发管理模块,基于网络状态解析模块获得的信息,对信息进行处理后,根据ACK的类型及其对应的触发条件,决策是否触发ACK,详见前述实施例中对触发条件的说明。
S06、接收方判断是否满足某种ACK触发条件。
S07、当达到某种ACK的触发条件时,接收方构成相应类似的ACK,然后回复给发送方。
例如,接收方通过ACK构造模块,将所需要反馈的信息包含到ACK的数据部分,构造相应类型的ACK,然后接收方回复该ACK给发送方。
S08、发送方对接收到的ACK进行解析,获得相应的反馈信息。
例如,发送方通过ACK解析模块,对接收到的ACK进行解析,识别ACK类型,并识别ACK中携带的所有反馈信息。
S09、发送方根据解析出来的反馈信息,对数据发送和传输控制进行调整。
其中,发送方根据解析出来的反馈信息,对数据发送和传输控制进行调整,对于调整的具体策略此处不做限定。
接下来对本申请实施例提供的ACK机制在TCP上的实现过程进行举例说明,例如ACK机制可以表示为X确认机制(X-Permitted),X确认机制按照不同的触发条件来分类,包括两种ACK类型,分别为即时的确认(Instant ACK,IACK)和驯服的确认(Tame ACK,TACK)。
接下来对TACK进行说明,不管有没有数据包到达,TACK按照指定的频率ftack发送,在接收方和发送方之间同步控制信息。ftack表示TACK频率,可以用以下表达式得到:
其中,bw表示一段时间内的最大带宽,MSS表示最大段长度(maximum segmentsize),RTTmin表示一段时间内的最小RTT。L和β是可调参数。表示每累计收到L个MSS大小的数据报文后回复1个ACK报文。β用于控制每个RTT回复的TACK的数目,表示每经过RTTmin回复β个ACK。具体的,β≥2,例如,本申请实施例中,β=4。
接下来对ACK发送频率的计算过程进行举例说明:
带宽时延积可以用BDP=RTTmin×bw表示,当带宽时延积大于或等于β×L×MSS时,该ACK发送频率为:每经过RTTmin时间发送β个ACK。当带宽时延积小于β×L×MSS时,该ACK发送频率为:每收到L×MSS字节的数据报文后,发送1个ACK。
接下来对IACK进行说明。按事件类型分类,分别是丢包驱动的IACK和零窗口通告的IACK。
首先说明丢包驱动的IACK,接收方通过丢包驱动的IACK,可以主动拉取丢失的数据包。数据包丢失后会重传,但重传包也可能会丢失。为了在接收方能够成功地检测丢失的重传包数目,本申请实施例引入一个严格递增的包序号(用PKT.SEQ表示),作为每个报文的一个属性。即先发的包PKT.SEQ小,后发的包PKT.SEQ大。结合PKT.SEQ这一数据报文属性,发送方在收到丢包驱动的IACK时,就可以明确地知道具体哪个数据包(包括是否是重传包)已丢失,从而提高丢包恢复效率。
接下来对PKT.SEQ进行说明,发送方发送5个数据报文,其字节范围为[0-5999](MSS=1500byte)。假设PKT.SEQ=2的报文[1500-2999]丢失,后续PKT.SEQ=3的报文[3000-4499]到达接收方,接收方判断丢包事件后通知发送方,发送方重传PKT.SEQ=4的报文[1500-2999]。假设PKT.SEQ=4报文再次丢失,当其后续PKT.SEQ=5的报文[4500-5999]到达接收方时,接收方仍然可以通过乱序的PKT.SEQ,检测丢包事件。然而,如果没有PKT.SEQ,接收方很难检测到底有多少个重传包发生丢失。
如果接收方检测到前后两个数据报文的PKT.SEQ差值大于1,接收方进行丢包事件检测,如果检测到发生了丢包事件,就发送IACK。该IACK可以携带PKT.SEQ丢失区间,该区间指示接收缓存中最大的PKT.SEQ和第二大的PKT.SEQ,最大的PKT.SEQ和第二大的PKT.SEQ两者的差值可以指示哪些数据报文发生丢失。发送方解析最大的PKT.SEQ和第二大的PKT.SEQ,可以准确找到对应的报文并重传。
接下来对零窗口通告的IACK进行说明,当接收方缓存满时,接收方可以发送一个IACK报文,通知发送方停止发送数据。需要说明的是,TACK与IACK都带有与TCP ACK同样的报文首部,其中的确认号与TCP ACK中的确认号含义相同,确认号是当前收到的连续的顺序号的最大值,含义是告知发送方该顺序号之前的数据包都已经接收到,发送方可以释放这些数据占用的缓存,例如,顺序号用DATA.SEQ表示。
接下来对TCP选项中增加的选项字段进行说明,如下表2所示:
Type | Length | 名称 | 描述 |
40 | 2bytes | X-Permitted | 在SYN报文中,指示支持TACK确认机制 |
41 | 3bytes | ACK-Type | 指示ACK的类型 |
42 | 6bytes | PKT.SEQ | 在数据报文中,指示PKT.SEQ |
以表2为例说明ACK的识别流程,在TCP选项中,增加以下三个新定义的可选项字段。TCP选项采用TLV格式表示,选项字段都以1字节的“类型(Type)”开头,指明选项(Option)的类型,1字节的长度(Length)指明选项字段的总长度(包括Type,Length和Value的总长度)。
根据可选项TVL结构,各选项字段的定义如下,在TCP选项中,新增加两个选项字段。第一个选项字段为ACK机制,表2中ACK机制可以表示为X确认机制(X-Permitted)。在本实施例中,通过TLV数据结构进行结构化,其中Type=40,这个值可以根据TCP的剩余的未被其它参数占用的可选值而调整。例如,Type=40已经被其它选项定义占用了,假设44没有被占用,则也可以将该Type定义成44。Length=2字节,Value值为空。在建链过程中,SYN握手包携带X-Permitted选项用于指明SYN包的源节点支持TACK选项。在连接建立后,第二个选项字段为ACK-Type。在本实施例中,通过TLV数据结构进行结构化,其中Type=41,这个值可以根据TCP的剩余的未被其它参数占用的可用值而调整,Length=3字节,Value值为1字节,用来表示ACK具体类型。例如,可以定义Value=0x00表示TACK报文,Value=0x01表示丢包驱动的IACK,Value=0x02表示零窗口通告IACK。
需要说明的是,只有当TCP包头中的ACK字段为1时,才需要识别TACK选项中的ACK-Type选项字段。
为了消除“重传二义性”,需要在原有的顺序号(用DATA.SEQ表示)的基础上,引入一个严格递增的包序号(用PKT.SEQ表示)。PKT.SEQ的实施方式,可以是在TCP选项中增加PKT.SEQ选项字段,当选项字段X-Permitted指示支持ACK机制时,每个数据包中携带PKT.SEQ选项字段,用于表示该数据包的PKT.SEQ。PKT.SEQ字段包含4字节的Value字段,表示数据报文的PKT.SEQ。
如图11a所示,为本申请实施例提供的X-Permitted选项字段的结构示意图,在X-Permitted选项字段的TLV格式中,Type可以等于40,Length可以等于2,如图11b所示,为本申请实施例提供的ACK-Type选项字段的结构示意图,ACK-Type选项字段的TLV格式中,Type可以等于41,Length可以等于3,Value可以等于0x00-0xff,如图11c所示,为本申请实施例提供的PKT.SEQ选项字段的结构示意图,PKT.SEQ选项字段的TLV格式中,Type可以等于42,Length可以等于6,Value可以等于PKT.SEQ。可以理解的是,上述图11a至图11c中,TLV格式的取值只是一种示例情况,不作为对本申请实施例的限定。
需要说明的是,本申请实施例中TCP选项除了SACK选项字段(SACK-Permitted和SACK)以外,其它的选项字段依然有效,例如Timestamp选项、窗口扩展Window Scale(WSCALE或WSopt)选项和Maximum Segment Size(MSS)选项等都可以按需配置使用,不受ACK机制影响。
由于X与SACK都属于不同的ACK机制,一种可行的实施例规定,SACK-Permitted的优先级低于X-Permitted,因此,当X-Permitted指示支持TACK选项时,SACK选项默认不生效。当X-Permitted指示不支持TACK选项时,SACK选项才生效。
本申请实施例与SACK选项实现方式不同点在于,SACK选项包含一个SACK-Permitted和一个2+t(4≥t≥1,t为整数)字节的SACK选项,而本申请实施例实施例添加一个3字节的ACK-Type字段,其中一个字节用来指示不同ACK的种类。在不同的实施例中,如果ACK种类数目超过一个字节可表示的范围,也可以通过大于一个字节的字段来指示不同的ACK种类。
接下来对本申请实施例提供的ACK结构的定义,如图12所示,为本申请实施例提供的TACK报文结构示意图,对于一个TACK报文,其TCP报文头中的确认号字段与TCP ACK中的确认号含义相同,是当前收到的连续的顺序号的最大值,含义是告知发送方该顺序号之前的数据包都已经接收到,发送方可以释放这些数据占用的缓存。TACK报文与TCP ACK不同的是,TACK对报文数据部分进行扩展,其中,HOL.SEQ字段指示了接收缓存中最小的DATA.SEQ。TCP包头中的确认号字段和数据部分的HOL.SEQ字段,共同指示了接收缓存中的第一个接收缓存空洞(reveive-buffer-bubble,RBB),即最早丢失的数据报文的字节范围(ByteRange)。
TACK除了指示丢包信息以外,其报文数据部分还可以指示带宽信息(DeliveryRate)、窗口信息(Congestion Window)、ACK延迟(TACK Delay)、接收缓存中接收但未提交到上层应用的数据量(Received-inflight-bytes)。作为扩展,只要整个TACK报文不超过MSS,TACK还可以携带更多额外RBB(Additional RBB)用来指示更多的历史丢包信息等,每个Additional RBB都由左边界(Left Edge of Additional RBB)和右边界(Right Edge ofAdditional RBB)共同表示。另外,TACK尽量复用TCP报文头中的字段,用来携带尽量多的信息,例如时间戳等。
如图13所示,为本申请实施例提供的丢包驱动的IACK报文结构示意图。对于一个丢包驱动的IACK报文,其TCP报文头中的确认号字段与TCP ACK中的确认号含义相同,是当前收到的连续的顺序号的最大值,含义是告知发送方该顺序号之前的数据包都已经接收到,发送方可以释放这些数据占用的缓存。丢包驱动的IACK报文与TCP ACK不同的是,IACK对报文数据部分进行扩展,其中,Largest PKT.SEQ和Second largest PKT.SEQ分别指示了接收缓存中最大的PKT.SEQ和第二大的PKT.SEQ。
接下来对ACK机制的协商流程进行说明,如图14所示,为本申请实施例提供的一种通信双方的ACK机制的协商流程示意图。若要使用ACK机制,连接发起端必须在建立连接时,在SYN报文中附加上X-Permitted选项字段,以此告知对方自己支持TACK。连接响应端必须在SYN+ACK报文中同样附加上X-Permitted选项字段,以此告知对方自己支持TACK。
如图15所示,为本申请实施例提供的一种通信双方的ACK机制的数据交互流程示意图。数据交互流程包含以下步骤:
S11、机制协商。发送方和接收方双方的机制协商模块之间进行协议协商。
S12、是否支持ACK机制。
在建链时,通过SYN报文、SYN报文和ACK报文确定收发双方是否支持ACK机制,不支持则采用目前的TCP数据交互流程;若支持ACK机制,则触发执行步骤S13。
S13、数据发送。发送方的数据报文构造模块在TCP选项中增加PKT.SEQ选项字段,构造数据包.
S14、网络状态解析。接收方的网络状态解析模块根据数据包到达的信息,评估网络状态。例如,根据PKT.SEQ判断丢序和丢包事件;根据报文到达情况计算时延和速率等。
S15、ACK构造和触发。接收方的ACK触发管理模块根据协议规定的触发条件,判断是否需要发送指定类型的ACK。如果是,则接收方的ACK构造模块构造对应类型的ACK包,回复给发送方。例如,发生丢包事件时,回复丢包驱动的IACK;根据计算的TACK频率,回复TACK。
S16、ACK解析。发送方的ACK解析模块解析ACK报文,进行相应的控制操作。例如,发送方根据IACK和TACK解析出来的丢包信息进行数据报文重传,根据TACK反馈的时延和速率等信息,进行流量控制和拥塞控制。
通过前述的举例说明可知,本申请实施例提高协议ACK机制的灵活性,消除TCP扩展瓶颈,提高传输效率。通过灵活自定义多种不同功能的ACK,并且丰富各类ACK所携带的信息量,来支撑灵活伸缩的ACK频率,从而提高ACK机制的可扩展性,提高传输协议对多样业务场景的适应性,提升传输效率。
本实施例中自定义了两种ACK,即IACK和TACK。在发生乱序后,接收方通过判断产生了丢包事件,则会发送IACK。IACK主要用于及时反馈丢包信息,让发送方及时重传丢失的数据报文;而TACK主要用于同步传输过程中决策所需要的其它信息,TACK也可以用于IACK丢失后的补救手段。即使某个TACK发生丢失,下一个TACK会继续回复到发送方,这种反馈方式具有强鲁棒性。本申请实施例中,IACK和TACK不仅包含TCP报文首部,其数据部分同样可以携带反馈信息。
本申请实施例可以减少ACK的频率,提高带宽利用率。目前TCP的ACK数量与吞吐成正比,吞吐越大,ACK数目越多。而TACK的频率在绝大多数情况下远远小于传统TCP的ACK数目。IACK因为基于某些特定事件驱动,所以数目通常也是很少的。例如,丢包驱动的IACK的数目虽然与吞吐成正比,但其数目还与丢包率相关,而通常丢包率是一个非常小的数值,如0.1%,因此可以忽略不计。在无线局域网中,ACK与正常数据包占用几乎相同的频谱资源,减少ACK数量无疑大幅提升了无线网络的带宽利用率。
本申请实施例提高ACK机制的灵活性,提升传输效率。相比目前的SACK及基于SACK选项的演进方案,ACK机制通过两种自定义的IACK和TACK,在兼容TCP的前提下,实现了ACK机制的高度灵活性。具体来说,丢包检测在接收方进行,接收方拥有比发送方更全面的数据包到达信息,因此可以保证在ACK数目稀少的前提下,准确地检测丢包事件。一旦发生丢包,则通过IACK通知发送方重传相应的数据报文,实现及时的丢包恢复。另一方面,TACK可以进一步规律性地反馈必要的信息,因此,即使IACK丢失,反馈信息仍然可以通过TACK进行同步。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
为便于更好的实施本申请实施例的上述方案,下面还提供用于实施上述方案的相关装置。
请参阅图16所示,本申请实施例提供的一种第一通信装置1600,可以包括:处理模块1601和收发模块1602,其中,
处理模块,用于根据所述第一通信装置支持的确认ACK机制生成第一ACK报文,所述ACK机制用于指示N种ACK报文对应的N种ACK类型、发送所述N种ACK报文各自所需的触发条件、和所述N种ACK报文分别携带的反馈信息,所述第一ACK报文属于所述N种ACK报文的一种,所述N为大于或等于2的正整数;
收发模块,用于向所述第二通信装置发送所述第一ACK报文。
在本申请的一些实施例中,所述第一ACK报文包括:第一ACK类型和第一反馈信息,所述第一ACK类型属于所述N种ACK类型的一种。
在本申请的一些实施例中,所述第一ACK报文包括:ACK类型选项,其中,
所述ACK类型选项的大小为(2+m)个字节,所述m的取值为正整数,所述m的大小与所述N的大小正相关;
所述(2+m)个字节中的1个字节用于指示所述ACK类型选项的序号;
所述(2+m)个字节中的另1个字节用于指示所述ACK类型选项的长度;
所述(2+m)个字节中的剩余m个字节用于指示所述第一ACK类型。
在本申请的一些实施例中,所述第一ACK报文还包括:数据域;
所述数据域携带所述第一反馈信息的至少一部分。
在本申请的一些实施例中,所述收发模块,还用于所述处理模块根据所述第一通信装置支持的确认ACK机制生成第一ACK报文之前,向所述第二通信装置发送第一协商报文,所述第一协商报文用于指示所述第一通信装置支持的ACK机制;
所述收发模块,还用于接收所述第二通信装置发送的第二协商报文,所述第二协商报文用于指示所述第二通信装置支持的ACK机制;当所述第一通信装置和所述第二通信装置使用相互匹配的ACK机制时,触发所述处理模块根据所述第一通信装置支持的确认ACK机制生成第一ACK报文。
在本申请的一些实施例中,所述第一协商报文包括:第一准许选项,所述第二协商报文包括:第二准许选项,其中,
所述第一准许选项的大小为2个字节,所述第一准许选项中的1个字节用于指示所述第一准许选项的序号,所述第一准许选项中的另1个字节用于指示所述第一准许选项的长度;
所述第二准许选项的大小为2个字节,所述第二准许选项中的1个字节用于指示所述第二准许选项的序号,所述第二准许选项中的另1个字节用于指示所述第二准许选项的长度。
在本申请的一些实施例中,生成所述第一ACK报文的触发条件包括如下的至少一种:
按照预设的ACK发送频率发送所述第一ACK报文、在预设的即时事件产生时发送所述第一ACK报文。
在本申请的一些实施例中,所述按照预设的ACK发送频率发送所述第一ACK报文,包括如下至少一种:每接收到预设个数的数据报文时发送所述第一ACK报文,每经过预设的一个时间段时发送所述第一ACK报文。
在本申请的一些实施例中,所述第一通信装置通过所述第一通信装置与所述第二通信装置之间的连接通信,所述每接收到预设个数的数据报文时发送所述第一ACK报文包括:
获取所述连接的带宽时延积;
当所述带宽时延积小于预设的阈值时,每接收到预设个数的数据报文时发送所述第一ACK报文;或者,
当所述带宽时延积小于或等于预设的阈值时,每接收到预设个数的数据报文时发送所述第一ACK报文。
在本申请的一些实施例中,所述阈值为β×L×MSS,所述预设个数为L×MSS;其中,
所述β表示所述第一通信装置在RTTmin内发送的ACK报文个数,所述L表示所述第一通信装置在每发送一个ACK报文之前需要接收到的数据报文个数,所述MSS表示传输层协议的最大段长度,所述RTTmin表示所述第一通信装置和所述第二通信装置之间的最小往返时延。
在本申请的一些实施例中,所述第一通信装置通过所述第一通信装置与所述第二通信装置之间的连接通信,所述每经过预设的一个时间段时发送所述第一ACK报文包括:
获取所述连接的带宽时延积;
当所述带宽时延积大于或等于预设的阈值时,每经过预设的一个时间段时发送所述第一ACK报文;或者,
当所述带宽时延积大于预设的阈值时,每经过预设的一个时间段时发送所述第一ACK报文。
所述β表示所述第一通信装置在RTTmin内发送的ACK报文个数,所述L表示所述第一通信装置在每发送一个ACK报文之前需要接收到的数据报文个数,所述MSS表示传输层协议的最大段长度,所述RTTmin表示所述第一通信装置和所述第二通信装置之间的最小往返时延。
在本申请的一些实施例中,所述获取所述连接的带宽时延积,包括:
获取所述第一通信装置和第二通信装置之间的连接的最大带宽、以及所述第一通信装置和所述第二通信装置之间的最小往返时延,确定所述带宽时延积等于所述最大带宽与所述最小往返时延的相乘结果;或者,
获取所述第一通信装置和第二通信装置之间的连接的平均带宽、以及所述第一通信装置和所述第二通信装置之间的平均往返时延,确定所述带宽时延积等于所述平均带宽与所述平均往返时延的相乘结果。
在本申请的一些实施例中,所述即时事件包括如下至少一种:丢包事件、所述第一通信装置的接收缓存没有剩余容量的事件。
在本申请的一些实施例中,所述N种ACK报文分别携带的反馈信息包括如下至少一种:所述第一通信装置和第二通信装置之间的连接的时延信息、所述第一通信装置和第二通信装置之间的连接的带宽信息、所述第一通信装置和第二通信装置之间的连接的抖动信息、所述第一通信装置和第二通信装置之间的连接的丢包信息、所述第一通信装置和第二通信装置之间的连接的状态标记信息。
在本申请的一些实施例中,所述收发模块,还用于所述处理模块根据所述第一通信装置支持的确认ACK机制生成第一ACK报文之前,接收所述第二通信装置发送的第一数据报文,所述第一数据报文携带数据内容和第一包序号,当所述第一通信装置确定所述第一数据报文发生丢包时,所述第一ACK报文用于指示所述第一数据报文发生丢包;
所述收发模块,还用于接收所述第二通信装置发送的第二数据报文,所述第二数据报文携带所述数据内容和第二包序号,所述第二包序号和所述第一包序号是不相同的包序号。
请参阅图17所示,本申请实施例提供的一种第二通信装置1700,可以包括:处理模块1701和收发模块1702,其中,
收发模块,用于根据所述第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文,所述ACK机制用于指示N种ACK报文对应的N种ACK类型、和所述N种ACK报文分别携带的反馈信息,所述第一ACK报文属于所述N种ACK报文的一种,所述N为大于或等于2的正整数;
处理模块,用于根据所述第二通信装置支持的ACK机制确定所述第一ACK报文对应的第一ACK类型,所述第一ACK类型属于所述N种ACK类型的一种;
所述处理模块,还用于使用所述第一ACK类型解析所述第一ACK报文,以生成ACK解析结果。
在本申请的一些实施例中,所述第一ACK报文包括:所述第一ACK类型和第一反馈信息。
在本申请的一些实施例中,所述第一ACK报文包括:ACK类型选项,其中,
所述ACK类型选项的大小为(2+m)个字节,所述m的取值为正整数,所述m的大小与所述N的大小正相关;
所述(2+m)个字节中的1个字节用于指示所述ACK类型选项的序号;
所述(2+m)个字节中的另1个字节用于指示所述ACK类型选项的长度;
所述(2+m)个字节中的剩余m个字节用于指示所述第一ACK类型。
在本申请的一些实施例中,所述第一ACK报文还包括:数据域;
所述数据域携带所述第一反馈信息的至少一部分。
在本申请的一些实施例中,所述收发模块,还用于根据所述第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文之前,接收所述第一通信装置发送的第一协商报文,所述第一协商报文用于指示所述第一通信装置支持的ACK机制;
所述收发模块,还用于向所述第一通信装置发送第二协商报文,所述第二协商报文用于指示所述第二通信装置支持的ACK机制;
所述收发模块,还用于当所述第一通信装置和所述第二通信装置使用相互匹配的ACK机制时,触发执行如下步骤:根据所述第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文。
在本申请的一些实施例中,所述第一协商报文包括:第一准许选项,所述第二协商报文包括:第二准许选项,其中,
所述第一准许选项的大小为2个字节,所述第一准许选项中的1个字节用于指示所述第一准许选项的序号,所述第一准许选项中的另1个字节用于指示所述第一准许选项的长度;
所述第二准许选项的大小为2个字节,所述第二准许选项中的1个字节用于指示所述第二准许选项的序号,所述第二准许选项中的另1个字节用于指示所述第二准许选项的长度。
在本申请的一些实施例中,所述收发模块,还用于根据所述第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文之前,向所述第一通信装置发送第一数据报文,所述第一数据报文携带数据内容和第一包序号;
所述收发模块,还用于根据所述第一ACK报文确定所述第一数据报文发生丢包时,向所述第一通信装置发送第二数据报文,所述第二数据报文携带所述数据内容和第二包序号,所述第二包序号和所述第一包序号是不相同的包序号。
需要说明的是,上述装置各模块/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其带来的技术效果与本申请方法实施例相同,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储有程序,该程序执行包括上述方法实施例中记载的部分或全部步骤。
接下来介绍本申请实施例提供的另一种第一通信装置,请参阅图18所示,第一通信装置1800包括:
接收器1801、发射器1802、处理器1803和存储器1804(其中第一通信装置1800中的处理器1803的数量可以一个或多个,图18中以一个处理器为例)。在本申请的一些实施例中,接收器1801、发射器1802、处理器1803和存储器1804可通过总线或其它方式连接,其中,图18中以通过总线连接为例。
存储器1804可以包括只读存储器和随机存取存储器,并向处理器1803提供指令和数据。存储器1804的一部分还可以包括非易失性随机存取存储器(non-volatile randomaccess memory,NVRAM)。存储器1804存储有操作系统和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。操作系统可包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
处理器1803控制第一通信装置的操作,处理器1803还可以称为中央处理单元(central processing unit,CPU)。具体的应用中,第一通信装置的各个组件通过总线系统耦合在一起,其中总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都称为总线系统。
上述本申请实施例揭示的方法可以应用于处理器1803中,或者由处理器1803实现。处理器1803可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1803中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1803可以是通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1804,处理器1803读取存储器1804中的信息,结合其硬件完成上述方法的步骤。
接收器1801可用于接收输入的数字或字符信息,以及产生与第一通信装置的相关设置以及功能控制有关的信号输入,发射器1802可包括显示屏等显示设备,发射器1802可用于通过外接接口输出数字或字符信息。
本申请实施例中,处理器1803,用于执行前述第一通信装置执行的方法。
接下来介绍本申请实施例提供的另一种第二通信装置,请参阅图19所示,第二通信装置1900包括:
接收器1901、发射器1902、处理器1903和存储器1904(其中第二通信装置1900中的处理器1903的数量可以一个或多个,图19中以一个处理器为例)。在本申请的一些实施例中,接收器1901、发射器1902、处理器1903和存储器1904可通过总线或其它方式连接,其中,图19中以通过总线连接为例。
存储器1904可以包括只读存储器和随机存取存储器,并向处理器1903提供指令和数据。存储器1904的一部分还可以包括NVRAM。存储器1904存储有操作系统和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。操作系统可包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
处理器1903控制第二通信装置的操作,处理器1903还可以称为CPU。具体的应用中,第二通信装置的各个组件通过总线系统耦合在一起,其中总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都称为总线系统。
上述本申请实施例揭示的方法可以应用于处理器1903中,或者由处理器1903实现。处理器1903可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1903中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1903可以是通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1904,处理器1903读取存储器1904中的信息,结合其硬件完成上述方法的步骤。
本申请实施例中,处理器1903,用于执行前述第二通信装置执行的方法。
在另一种可能的设计中,当第一通信装置或第二通信装置为芯片时,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使该终端内的芯片执行上述第一方面或第二方面任意一项的无线通信方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述终端内的位于所述芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)等。
其中,上述任一处提到的处理器,可以是一个通用中央处理器,微处理器,ASIC,或一个或多个用于控制上述第一方面或第二方面的方法的程序执行的集成电路。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
Claims (43)
1.一种确认报文的处理方法,其特征在于,所述方法应用于第一通信装置,所述方法包括:
接收第二通信装置发送的第一数据报文,所述第一数据报文携带数据内容和第一包序号,当所述第一通信装置确定所述第一数据报文发生丢包时,第一ACK报文用于指示所述第一数据报文发生丢包;接收所述第二通信装置发送的第二数据报文,所述第二数据报文携带所述数据内容和第二包序号,所述第二包序号和所述第一包序号是不相同的包序号;
根据所述第一通信装置支持的确认ACK机制生成所述第一ACK报文,所述ACK机制用于指示N种ACK报文对应的N种ACK类型、发送所述N种ACK报文各自所需的触发条件、和所述N种ACK报文分别携带的反馈信息,所述第一ACK报文属于所述N种ACK报文的一种,所述N为大于或等于2的正整数;其中,生成所述第一ACK报文的触发条件包括如下的至少一种:按照预设的ACK发送频率发送所述第一ACK报文、在预设的即时事件产生时发送所述第一ACK报文;
向所述第二通信装置发送所述第一ACK报文。
2.根据权利要求1所述的方法,其特征在于,所述第一ACK报文包括:第一ACK类型和第一反馈信息,所述第一ACK类型属于所述N种ACK类型的一种。
3.根据权利要求2所述的方法,其特征在于,所述第一ACK报文包括:ACK类型选项,其中,
所述ACK类型选项的大小为(2+m)个字节,所述m的取值为正整数,所述m的大小与所述N的大小正相关;
所述(2+m)个字节中的1个字节用于指示所述ACK类型选项的序号;
所述(2+m)个字节中的另1个字节用于指示所述ACK类型选项的长度;
所述(2+m)个字节中的剩余m个字节用于指示所述第一ACK类型。
4.根据权利要求2或3所述的方法,其特征在于,所述第一ACK报文还包括:数据域;
所述数据域携带所述第一反馈信息的至少一部分。
5.根据权利要求1所述的方法,其特征在于,所述根据所述第一通信装置支持的确认ACK机制生成第一ACK报文之前,所述方法还包括:
向所述第二通信装置发送第一协商报文,所述第一协商报文用于指示所述第一通信装置支持的ACK机制;
接收所述第二通信装置发送的第二协商报文,所述第二协商报文用于指示所述第二通信装置支持的ACK机制;
当所述第一通信装置和所述第二通信装置使用相互匹配的ACK机制时,触发执行如下步骤:根据所述第一通信装置支持的确认ACK机制生成第一ACK报文。
6.根据权利要求5所述的方法,其特征在于,所述第一协商报文包括:第一准许选项,所述第二协商报文包括:第二准许选项,其中,
所述第一准许选项的大小为2个字节,所述第一准许选项中的1个字节用于指示所述第一准许选项的序号,所述第一准许选项中的另1个字节用于指示所述第一准许选项的长度;
所述第二准许选项的大小为2个字节,所述第二准许选项中的1个字节用于指示所述第二准许选项的序号,所述第二准许选项中的另1个字节用于指示所述第二准许选项的长度。
7.根据权利要求1所述的方法,其特征在于,所述按照预设的ACK发送频率发送所述第一ACK报文,包括如下至少一种:每接收到预设个数的数据报文时发送所述第一ACK报文,每经过预设的一个时间段时发送所述第一ACK报文。
8.根据权利要求7所述的方法,其特征在于,所述第一通信装置通过所述第一通信装置与所述第二通信装置之间的连接通信,所述每接收到预设个数的数据报文时发送所述第一ACK报文包括:
获取所述连接的带宽时延积;
当所述带宽时延积小于预设的阈值时,每接收到预设个数的数据报文时发送所述第一ACK报文;或者,
当所述带宽时延积小于或等于预设的阈值时,每接收到预设个数的数据报文时发送所述第一ACK报文。
9.根据权利要求8所述的方法,其特征在于,所述阈值为β×L×MSS,所述预设个数为L×MSS;其中,
所述β表示所述第一通信装置在RTTmin内发送的ACK报文个数,所述L表示所述第一通信装置在每发送一个ACK报文之前需要接收到的数据报文个数,所述MSS表示传输层协议的最大段长度,所述RTTmin表示所述第一通信装置和所述第二通信装置之间的最小往返时延。
10.根据权利要求7所述的方法,其特征在于,所述第一通信装置通过所述第一通信装置与所述第二通信装置之间的连接通信,所述每经过预设的一个时间段时发送所述第一ACK报文包括:
获取所述连接的带宽时延积;
当所述带宽时延积大于或等于预设的阈值时,每经过预设的一个时间段时发送所述第一ACK报文;或者,
当所述带宽时延积大于预设的阈值时,每经过预设的一个时间段时发送所述第一ACK报文。
12.根据权利要求8至11中任一项所述的方法,其特征在于,所述获取所述连接的带宽时延积,包括:
获取所述第一通信装置和第二通信装置之间的连接的最大带宽、以及所述第一通信装置和所述第二通信装置之间的最小往返时延,确定所述带宽时延积等于所述最大带宽与所述最小往返时延的相乘结果;或者,
获取所述第一通信装置和第二通信装置之间的连接的平均带宽、以及所述第一通信装置和所述第二通信装置之间的平均往返时延,确定所述带宽时延积等于所述平均带宽与所述平均往返时延的相乘结果。
13.根据权利要求1所述的方法,其特征在于,所述即时事件包括如下至少一种:丢包事件、所述第一通信装置的接收缓存没有剩余容量的事件。
14.根据权利要求1所述的方法,其特征在于,所述N种ACK报文分别携带的反馈信息包括如下至少一种:所述第一通信装置和第二通信装置之间的连接的时延信息、所述第一通信装置和第二通信装置之间的连接的带宽信息、所述第一通信装置和第二通信装置之间的连接的抖动信息、所述第一通信装置和第二通信装置之间的连接的丢包信息、所述第一通信装置和第二通信装置之间的连接的状态标记信息。
15.一种确认信息的处理方法,其特征在于,所述方法应用于第二通信装置,所述方法包括:
向第一通信装置发送第一数据报文,所述第一数据报文携带数据内容和第一包序号;
根据第一ACK报文确定所述第一数据报文发生丢包时,向所述第一通信装置发送第二数据报文,所述第二数据报文携带所述数据内容和第二包序号,所述第二包序号和所述第一包序号是不相同的包序号;
根据所述第二通信装置支持的确认ACK机制接收所述第一通信装置发送的所述第一ACK报文,所述ACK机制用于指示N种ACK报文对应的N种ACK类型、发送所述N种ACK报文各自所需的触发条件、和所述N种ACK报文分别携带的反馈信息,所述第一ACK报文属于所述N种ACK报文的一种,所述N为大于或等于2的正整数;其中,所述第一通信装置生成所述第一ACK报文的触发条件包括如下的至少一种:按照预设的ACK发送频率发送所述第一ACK报文、在预设的即时事件产生时发送所述第一ACK报文;
根据所述第二通信装置支持的ACK机制确定所述第一ACK报文对应的第一ACK类型,所述第一ACK类型属于所述N种ACK类型的一种;
使用所述第一ACK类型解析所述第一ACK报文,以生成ACK解析结果。
16.根据权利要求15所述的方法,其特征在于,所述第一ACK报文包括:所述第一ACK类型和第一反馈信息。
17.根据权利要求16所述的方法,其特征在于,所述第一ACK报文包括:ACK类型选项,其中,
所述ACK类型选项的大小为(2+m)个字节,所述m的取值为正整数,所述m的大小与所述N的大小正相关;
所述(2+m)个字节中的1个字节用于指示所述ACK类型选项的序号;
所述(2+m)个字节中的另1个字节用于指示所述ACK类型选项的长度;
所述(2+m)个字节中的剩余m个字节用于指示所述第一ACK类型。
18.根据权利要求16或17所述的方法,其特征在于,所述第一ACK报文还包括:数据域;
所述数据域携带所述第一反馈信息的至少一部分。
19.根据权利要求15所述的方法,其特征在于,所述根据所述第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文之前,所述方法还包括:
接收所述第一通信装置发送的第一协商报文,所述第一协商报文用于指示所述第一通信装置支持的ACK机制;
向所述第一通信装置发送第二协商报文,所述第二协商报文用于指示所述第二通信装置支持的ACK机制;
当所述第一通信装置和所述第二通信装置使用相互匹配的ACK机制时,触发执行如下步骤:根据所述第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文。
20.根据权利要求19所述的方法,其特征在于,所述第一协商报文包括:第一准许选项,所述第二协商报文包括:第二准许选项,其中,
所述第一准许选项的大小为2个字节,所述第一准许选项中的1个字节用于指示所述第一准许选项的序号,所述第一准许选项中的另1个字节用于指示所述第一准许选项的长度;
所述第二准许选项的大小为2个字节,所述第二准许选项中的1个字节用于指示所述第二准许选项的序号,所述第二准许选项中的另1个字节用于指示所述第二准许选项的长度。
21.一种通信装置,其特征在于,所述通信装置为第一通信装置,所述第一通信装置包括:
处理模块,用于根据所述第一通信装置支持的确认ACK机制生成第一ACK报文,所述ACK机制用于指示N种ACK报文对应的N种ACK类型、发送所述N种ACK报文各自所需的触发条件、和所述N种ACK报文分别携带的反馈信息,所述第一ACK报文属于所述N种ACK报文的一种,所述N为大于或等于2的正整数;其中,生成所述第一ACK报文的触发条件包括如下的至少一种:按照预设的ACK发送频率发送所述第一ACK报文、在预设的即时事件产生时发送所述第一ACK报文;
收发模块,用于向第二通信装置发送所述第一ACK报文;
其中,所述收发模块,还用于所述处理模块根据所述第一通信装置支持的确认ACK机制生成第一ACK报文之前,接收所述第二通信装置发送的第一数据报文,所述第一数据报文携带数据内容和第一包序号,当所述第一通信装置确定所述第一数据报文发生丢包时,所述第一ACK报文用于指示所述第一数据报文发生丢包;
所述收发模块,还用于接收所述第二通信装置发送的第二数据报文,所述第二数据报文携带所述数据内容和第二包序号,所述第二包序号和所述第一包序号是不相同的包序号。
22.根据权利要求21所述的通信装置,其特征在于,所述第一ACK报文包括:第一ACK类型和第一反馈信息,所述第一ACK类型属于所述N种ACK类型的一种。
23.根据权利要求22所述的通信装置,其特征在于,所述第一ACK报文包括:ACK类型选项,其中,
所述ACK类型选项的大小为(2+m)个字节,所述m的取值为正整数,所述m的大小与所述N的大小正相关;
所述(2+m)个字节中的1个字节用于指示所述ACK类型选项的序号;
所述(2+m)个字节中的另1个字节用于指示所述ACK类型选项的长度;
所述(2+m)个字节中的剩余m个字节用于指示所述第一ACK类型。
24.根据权利要求22或23所述的通信装置,其特征在于,所述第一ACK报文还包括:数据域;
所述数据域携带所述第一反馈信息的至少一部分。
25.根据权利要求21所述的通信装置,其特征在于,所述收发模块,还用于所述处理模块根据所述第一通信装置支持的确认ACK机制生成第一ACK报文之前,向所述第二通信装置发送第一协商报文,所述第一协商报文用于指示所述第一通信装置支持的ACK机制;
所述收发模块,还用于接收所述第二通信装置发送的第二协商报文,所述第二协商报文用于指示所述第二通信装置支持的ACK机制;当所述第一通信装置和所述第二通信装置使用相互匹配的ACK机制时,触发所述处理模块根据所述第一通信装置支持的确认ACK机制生成第一ACK报文。
26.根据权利要求25所述的通信装置,其特征在于,所述第一协商报文包括:第一准许选项,所述第二协商报文包括:第二准许选项,其中,
所述第一准许选项的大小为2个字节,所述第一准许选项中的1个字节用于指示所述第一准许选项的序号,所述第一准许选项中的另1个字节用于指示所述第一准许选项的长度;
所述第二准许选项的大小为2个字节,所述第二准许选项中的1个字节用于指示所述第二准许选项的序号,所述第二准许选项中的另1个字节用于指示所述第二准许选项的长度。
27.根据权利要求21所述的通信装置,其特征在于,所述按照预设的ACK发送频率发送所述第一ACK报文,包括如下至少一种:每接收到预设个数的数据报文时发送所述第一ACK报文,每经过预设的一个时间段时发送所述第一ACK报文。
28.根据权利要求27所述的通信装置,其特征在于,所述第一通信装置通过所述第一通信装置与所述第二通信装置之间的连接通信,所述每接收到预设个数的数据报文时发送所述第一ACK报文包括:
获取所述连接的带宽时延积;
当所述带宽时延积小于预设的阈值时,每接收到预设个数的数据报文时发送所述第一ACK报文;或者,
当所述带宽时延积小于或等于预设的阈值时,每接收到预设个数的数据报文时发送所述第一ACK报文。
29.根据权利要求28所述的通信装置,其特征在于,所述阈值为β×L×MSS,所述预设个数为L×MSS;其中,
所述β表示所述第一通信装置在RTTmin内发送的ACK报文个数,所述L表示所述第一通信装置在每发送一个ACK报文之前需要接收到的数据报文个数,所述MSS表示传输层协议的最大段长度,所述RTTmin表示所述第一通信装置和所述第二通信装置之间的最小往返时延。
30.根据权利要求27所述的通信装置,其特征在于,所述第一通信装置通过所述第一通信装置与所述第二通信装置之间的连接通信,所述每经过预设的一个时间段时发送所述第一ACK报文包括:
获取所述连接的带宽时延积;
当所述带宽时延积大于或等于预设的阈值时,每经过预设的一个时间段时发送所述第一ACK报文;或者,
当所述带宽时延积大于预设的阈值时,每经过预设的一个时间段时发送所述第一ACK报文。
32.根据权利要求28至31中任一项所述的通信装置,其特征在于,所述获取所述连接的带宽时延积,包括:
获取所述第一通信装置和第二通信装置之间的连接的最大带宽、以及所述第一通信装置和所述第二通信装置之间的最小往返时延,确定所述带宽时延积等于所述最大带宽与所述最小往返时延的相乘结果;或者,
获取所述第一通信装置和第二通信装置之间的连接的平均带宽、以及所述第一通信装置和所述第二通信装置之间的平均往返时延,确定所述带宽时延积等于所述平均带宽与所述平均往返时延的相乘结果。
33.根据权利要求21所述的通信装置,其特征在于,所述即时事件包括如下至少一种:丢包事件、所述第一通信装置的接收缓存没有剩余容量的事件。
34.根据权利要求21所述的通信装置,其特征在于,所述N种ACK报文分别携带的反馈信息包括如下至少一种:所述第一通信装置和第二通信装置之间的连接的时延信息、所述第一通信装置和第二通信装置之间的连接的带宽信息、所述第一通信装置和第二通信装置之间的连接的抖动信息、所述第一通信装置和第二通信装置之间的连接的丢包信息、所述第一通信装置和第二通信装置之间的连接的状态标记信息。
35.一种通信装置,其特征在于,所述通信装置为第二通信装置,所述第二通信装置包括:
收发模块,用于根据所述第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文,所述ACK机制用于指示N种ACK报文对应的N种ACK类型、和所述N种ACK报文分别携带的反馈信息,所述第一ACK报文属于所述N种ACK报文的一种,所述N为大于或等于2的正整数;
处理模块,用于根据所述第二通信装置支持的ACK机制确定所述第一ACK报文对应的第一ACK类型,所述第一ACK类型属于所述N种ACK类型的一种;
所述处理模块,还用于使用所述第一ACK类型解析所述第一ACK报文,以生成ACK解析结果;
其中,所述收发模块,还用于根据所述第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文之前,向所述第一通信装置发送第一数据报文,所述第一数据报文携带数据内容和第一包序号;
所述收发模块,还用于根据所述第一ACK报文确定所述第一数据报文发生丢包时,向所述第一通信装置发送第二数据报文,所述第二数据报文携带所述数据内容和第二包序号,所述第二包序号和所述第一包序号是不相同的包序号。
36.根据权利要求35所述的通信装置,其特征在于,所述第一ACK报文包括:所述第一ACK类型和第一反馈信息。
37.根据权利要求36所述的通信装置,其特征在于,所述第一ACK报文包括:ACK类型选项,其中,
所述ACK类型选项的大小为(2+m)个字节,所述m的取值为正整数,所述m的大小与所述N的大小正相关;
所述(2+m)个字节中的1个字节用于指示所述ACK类型选项的序号;
所述(2+m)个字节中的另1个字节用于指示所述ACK类型选项的长度;
所述(2+m)个字节中的剩余m个字节用于指示所述第一ACK类型。
38.根据权利要求36或37所述的通信装置,其特征在于,所述第一ACK报文还包括:数据域;
所述数据域携带所述第一反馈信息的至少一部分。
39.根据权利要求35所述的通信装置,其特征在于,所述收发模块,还用于根据所述第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文之前,接收所述第一通信装置发送的第一协商报文,所述第一协商报文用于指示所述第一通信装置支持的ACK机制;
所述收发模块,还用于向所述第一通信装置发送第二协商报文,所述第二协商报文用于指示所述第二通信装置支持的ACK机制;
所述收发模块,还用于当所述第一通信装置和所述第二通信装置使用相互匹配的ACK机制时,触发执行如下步骤:根据所述第二通信装置支持的确认ACK机制接收第一通信装置发送的第一ACK报文。
40.根据权利要求39所述的通信装置,其特征在于,所述第一协商报文包括:第一准许选项,所述第二协商报文包括:第二准许选项,其中,
所述第一准许选项的大小为2个字节,所述第一准许选项中的1个字节用于指示所述第一准许选项的序号,所述第一准许选项中的另1个字节用于指示所述第一准许选项的长度;
所述第二准许选项的大小为2个字节,所述第二准许选项中的1个字节用于指示所述第二准许选项的序号,所述第二准许选项中的另1个字节用于指示所述第二准许选项的长度。
41.一种通信装置,其特征在于,包括至少一个处理器和通信接口,所述通信接口用于与另一个通信装置进行通信,所述至少一个处理器用于与存储器耦合,读取并执行所述存储器中的指令,以实现如权利要求1至14,或者15至20中任一项所述的方法。
42.根据权利要求41所述的通信装置,其特征在于,所述通信装置还包括:所述存储器。
43.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1至14,或者15至20中任意一项所述的方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911033773.9A CN112737737B (zh) | 2019-10-28 | 2019-10-28 | 一种确认报文的处理方法和通信装置以及存储介质 |
CN202211175061.2A CN115801199A (zh) | 2019-10-28 | 2019-10-28 | 一种确认报文的处理方法和通信装置以及存储介质 |
PCT/CN2020/124291 WO2021083181A1 (zh) | 2019-10-28 | 2020-10-28 | 一种确认报文的处理方法和通信装置以及存储介质 |
EP20880862.6A EP4037232A4 (en) | 2019-10-28 | 2020-10-28 | METHOD OF PROCESSING CONFIRMATION MESSAGES, COMMUNICATION DEVICE AND STORAGE MEDIA |
US17/730,272 US20220255692A1 (en) | 2019-10-28 | 2022-04-27 | Acknowledgement packet processing method, communications apparatus, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911033773.9A CN112737737B (zh) | 2019-10-28 | 2019-10-28 | 一种确认报文的处理方法和通信装置以及存储介质 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211175061.2A Division CN115801199A (zh) | 2019-10-28 | 2019-10-28 | 一种确认报文的处理方法和通信装置以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112737737A CN112737737A (zh) | 2021-04-30 |
CN112737737B true CN112737737B (zh) | 2022-10-11 |
Family
ID=75589421
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911033773.9A Active CN112737737B (zh) | 2019-10-28 | 2019-10-28 | 一种确认报文的处理方法和通信装置以及存储介质 |
CN202211175061.2A Pending CN115801199A (zh) | 2019-10-28 | 2019-10-28 | 一种确认报文的处理方法和通信装置以及存储介质 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211175061.2A Pending CN115801199A (zh) | 2019-10-28 | 2019-10-28 | 一种确认报文的处理方法和通信装置以及存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220255692A1 (zh) |
EP (1) | EP4037232A4 (zh) |
CN (2) | CN112737737B (zh) |
WO (1) | WO2021083181A1 (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015154523A1 (zh) * | 2014-09-03 | 2015-10-15 | 中兴通讯股份有限公司 | 丢失数据的恢复处理方法及装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100899823B1 (ko) * | 2007-05-10 | 2009-05-27 | 포스데이타 주식회사 | 무선 통신시스템의 arq 피드백 방법 및 장치 |
EP2840854B1 (en) * | 2012-04-15 | 2021-06-09 | LG Electronics Inc. | Method and apparatus for transmitting and receiving feedback trigger frames in wireless lan systems |
CN104704763B (zh) * | 2012-09-06 | 2017-12-12 | Lg 电子株式会社 | 在使用载波聚合技术的无线通信系统中使终端发送上行链路ack/nack信号的方法及其装置 |
SG11201501898PA (en) * | 2012-09-12 | 2015-04-29 | Agency Science Tech & Res | Communication methods and communication devices |
US9853794B2 (en) * | 2013-02-20 | 2017-12-26 | Qualcomm, Incorporated | Acknowledgement (ACK) type indication and deferral time determination |
WO2016024750A1 (ko) * | 2014-08-12 | 2016-02-18 | 엘지전자(주) | 무선 통신 시스템에서 하향링크 다중 사용자 전송 방법 및 이를 위한 장치 |
CN106656431B (zh) * | 2015-09-21 | 2020-09-29 | 华为技术有限公司 | 一种报文传输方法及用户设备 |
US10298370B1 (en) * | 2016-03-24 | 2019-05-21 | Marvell International Ltd. | Response rules of trigger frame |
US10205578B2 (en) * | 2016-09-05 | 2019-02-12 | Lg Electronics Inc. | Acknowledgement procedure in WLAN |
CN109804584B (zh) * | 2016-09-28 | 2020-07-28 | 华为技术有限公司 | 下行数据的ack/nack信息反馈方法及相关设备 |
KR102356912B1 (ko) * | 2017-06-16 | 2022-01-28 | 삼성전자 주식회사 | 통신 시스템에서 tcp ack 전송 방법 및 장치 |
CN107592185B (zh) * | 2017-07-19 | 2020-03-20 | 西南交通大学 | 一种适用于网络编码传输控制协议的前向重传方法 |
US11153218B2 (en) * | 2018-03-22 | 2021-10-19 | Qualcomm Incorporated | Transmission control protocol acknowledgement management |
-
2019
- 2019-10-28 CN CN201911033773.9A patent/CN112737737B/zh active Active
- 2019-10-28 CN CN202211175061.2A patent/CN115801199A/zh active Pending
-
2020
- 2020-10-28 WO PCT/CN2020/124291 patent/WO2021083181A1/zh unknown
- 2020-10-28 EP EP20880862.6A patent/EP4037232A4/en active Pending
-
2022
- 2022-04-27 US US17/730,272 patent/US20220255692A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015154523A1 (zh) * | 2014-09-03 | 2015-10-15 | 中兴通讯股份有限公司 | 丢失数据的恢复处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2021083181A1 (zh) | 2021-05-06 |
US20220255692A1 (en) | 2022-08-11 |
EP4037232A4 (en) | 2022-11-16 |
CN115801199A (zh) | 2023-03-14 |
CN112737737A (zh) | 2021-04-30 |
EP4037232A1 (en) | 2022-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10237153B2 (en) | Packet retransmission method and apparatus | |
US20190268797A1 (en) | Data transmission method and apparatus | |
US20200358886A1 (en) | Data Transmission Method, Apparatus, And System | |
JP4829896B2 (ja) | データ破壊を避けることによる改善されたネットワーク性能のための方法、システム及び物品 | |
WO2018210117A1 (zh) | 一种拥塞控制方法、网络设备及其网络接口控制器 | |
CN102045362B (zh) | 一种基于udp协议的数据传输方法和系统 | |
EP1427146B1 (en) | Packet transmission system and packet reception system | |
US20070064631A1 (en) | Method and apparatus for transmitting signaling data messages in a wireless communications system | |
US20230216767A1 (en) | Technologies for out-of-order network packet management and selective data flow splitting | |
US9325628B2 (en) | Packet handling method, forwarding device and system | |
US9456384B2 (en) | Message processing method, device, and system | |
US10439940B2 (en) | Latency correction between transport layer host and deterministic interface circuit | |
EP2978171B1 (en) | Communication method, communication device, and communication program | |
UA82886C2 (en) | Method for transmission data packages and a transmitter for transmission data packages | |
US10461886B2 (en) | Transport layer identifying failure cause and mitigation for deterministic transport across multiple deterministic data links | |
EP3490293B1 (en) | Data receiving method, data sending method, receiving device and system | |
CN112242956A (zh) | 流速控制方法和装置 | |
EP3672189B1 (en) | Data transmission method, device and system | |
US8391285B2 (en) | Communication apparatus, communication system, and communication method | |
CN112737737B (zh) | 一种确认报文的处理方法和通信装置以及存储介质 | |
CN108322402B (zh) | 报文处理方法、设备及系统 | |
US20220368765A1 (en) | Universal Transport Framework For Heterogeneous Data Streams | |
CN114124833A (zh) | 一种控制报文发送的方法、网路设备和系统 | |
US11811877B2 (en) | Universal transport framework for heterogeneous data streams | |
CN118611833A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |