掌桥专利:专业的专利平台
掌桥专利
首页

用于在网络传输协议中传送确认的设备和方法

文献发布时间:2023-06-19 19:00:17


用于在网络传输协议中传送确认的设备和方法

技术领域

本发明涉及通信网络,尤其涉及通信网络中数据传输的数据可靠性。本发明提出了一种用于请求和传送确认信息的设备和方法,尤其适用于数据的乱序发送。

背景技术

在数据网络中,当两台计算机相互通信时,通常需要确保数据可靠性。为此,发送器为每个数据包添加序列号,接收器通知发送器哪些数据包已经接收,哪些数据包丢失。发送器必须重传丢失数据包,直到接收器接收到所有数据包。

确保数据可靠性的协议可分为三大类:停止等待(Stop-and-Wait)协议、回退N(go-back-N)协议和选择性重复(Selective-Repeat)协议。

在停止等待协议中,发送器发送数据包并等待数据包的确认(acknowledgement,ACK)。一旦ACK到达发送器,发送器就会传输下一个数据包。如果没有接收到ACK,发送器将再次重传上一个数据包。

在回退N协议中,接收到所有数据包直至数据包编号N的接收器愿意只接受数据包编号N+1。如果没有接收到数据包N+1,但接收到了序列号较大(例如N+2)的数据包,则接收器丢弃此乱序数据包。当发送器被告知数据包N+1丢失时,发送器知道不仅必须重传此数据包,还必须重传所有后续数据包。停止等待协议实际上是回退N协议的一个特例,其中,N=1。

在选择性重复协议中,接收器愿意接受乱序接收的数据包。接收器将这些数据包放置在重新排序缓冲区中。然后,接收器只通知发送器丢失数据包,发送器只重传丢失数据包。

但是,现有的技术方案只适用于点对点的层2网络,在这种网络中,延迟是恒定的,数据包按顺序发送。

发明内容

鉴于上述限制,本发明的实施例旨在引入现有协议的扩展版本,以确保数据可靠性,特别是在数据包被乱序接收的情况下。具体地,目的是为网络传输协议提供乱序容许。

通过所附独立权利要求中提供的实施例实现该目的。实施例的有利实现方式在从属权利要求中进一步定义。

本发明在两个主要方面做出了贡献。具体地,本发明的实施例提出了用于发送轮询消息的动态方法。此外,本发明的实施例还提出了用于发送状态消息的动态方法。

本发明第一方面提供了一种第一网络设备,用于:获取参数K,其中,K为正整数;从第二网络设备接收数据包序列;当在序列号为j的数据包之前接收到序列号为i的数据包时,确定所述序列号为j的数据包丢失,其中,i和j为正整数,i>j+K;当确定所述序列号为j的数据包丢失时,向所述第二网络设备发送主动状态消息。

所述第一网络设备(接收器)通过根据参数K决定传输主动状态消息,启用乱序容许,即接收乱序数据包的容许。具体地,参数K可以表示乱序容许距离(数据包之间)。即,数据包可以乱序接收,例如,在接收到序列号为2的数据包之后,可以接收序列号为1的数据包。为了确定数据包j是否真的丢失,所述第一网络设备将等待直到接收到数据包j+K+1。

在所述第一方面的一种实现方式中,所述第一网络设备用于:从所述第二网络设备接收第一轮询消息,其中,所述第一轮询消息包括所述参数K和正整数M,M为所述数据包序列中的最大序列号,所述第一轮询消息指示所述第一网络设备上报序列号为M–K的数据包之前的丢失数据包;响应于所述第一轮询消息,向所述第二网络设备发送第一状态消息,其中,所述第一状态消息指示在所述序列号为M–K的数据包之前发送的哪些数据包在所述第一网络设备丢失。

传统上,所述发送器将所述数据包序列中的最大序列号M添加到轮询消息中,以请求接收器上报序列号M之前的丢失数据包。为了容许乱序距离K,本发明的实现方式建议将M的值和所述参数K添加到所述轮询消息中,而不是M的值。响应于所述轮询消息,所述第一网络设备(接收器)可以上报序列号M–K之前的丢失数据包。

在所述第一方面的一种实现方式中,所述第一网络设备用于:从所述第二网络设备接收第二轮询消息,其中,所述第二轮询消息包括正整数M,M为所述数据包序列中的最大序列号,所述第二轮询消息指示所述第一网络设备上报序列号为M的数据包之前的丢失数据包;响应于所述第二轮询消息,在接收到另外K个数据包之后,向所述第二网络设备发送第二状态消息,其中,所述第二状态消息指示在所述序列号为M的数据包之前发送的哪些数据包在所述第一网络设备丢失。

可选地,上述考虑乱序距离K的实现方式也可以在所述接收端实现。具体地,所述轮询消息可以以传统的方式发送,即可以在所述轮询消息中指示所述数据包序列中的最大序列号M。所述第一网络设备在接收到所述轮询消息后不立即上报所述丢失数据包。所述第一网络设备可以上报所述丢失数据包,直到接收到另外K个数据包。这样,即使所述数据包序列中的最后一个数据包被乱序接收,但在所述乱序距离K内,它仍然可以在所述状态消息中上报。

在所述第一方面的一种实现方式中,所述第一轮询消息或所述第二轮询消息包括序列号s,其中,s为正整数,所述第一网络设备还用于:从所述第二网络设备接收第三轮询消息;如果所述第三轮询消息的序列号小于s,则忽略所述第三轮询消息。

理论上,可以乱序接收两个轮询消息。可选地,如果在序列号较大的轮询消息之后接收到序列号较小的轮询消息,则所述第一网络设备可以忽略后来接收到的轮询消息,例如,可以不响应状态消息。

在所述第一方面的一种实现方式中,所述参数K是在所述第一网络设备与所述第二网络设备建立连接时协商的。

可选地,所述参数K可以在连接建立时协商。例如,K可以在所述第一网络设备和所述第二网络设备之间的连接建立过程中协商。或者,所述参数K也可以在所述第一网络设备/所述第二网络设备与网络控制器等另一网络设备建立连接时协商。

在所述第一方面的一种实现方式中,所述参数K为静态参数,或者为动态参数。

需要说明的是,所述参数K可以是固定的数字。或者,所述参数K可以是动态更新的数字,该数字可以在变化时通知所述发送器和所述接收器。

在所述第一方面的一种实现方式中,所述第一网络设备用于获取更新后的参数K,并将所述更新后的参数K指示给所述第二网络设备。

在所述第一方面的一种实现方式中,所述第一网络设备用于从网络控制器获取所述参数K。

可选地,所述参数K可以由所述网络控制器传递给所述发送器和所述接收器。

本发明的第二方面提供了一种第二网络设备,用于:获取参数K,其中,K为正整数;向第一网络设备发送数据包序列;向所述第一网络设备发送第一轮询消息,其中,所述第一轮询消息包括参数K和正整数M,M是所述数据包序列中的最大序列号,所述第一轮询消息指示所述第一网络设备上报序列号为M–K的数据包之前的丢失数据包;响应于所述第一轮询消息,从所述第一网络设备接收第一状态消息,其中,所述第一状态消息指示在所述序列号为M–K的数据包之前发送的哪些数据包在所述第一网络设备丢失。

传统上,所述发送器将所述数据包序列中的最大序列号M添加到轮询消息中,以请求所述接收器上报序列号M之前的丢失数据包。为了容许乱序距离K,本发明的一种实现方式提出将M的值和所述参数K添加到所述轮询消息中,而不是所述M的值。所述轮询消息用于指示所述接收器(即第一网络设备)上报序列号M–K之前的丢失数据包。

在所述第二方面的一种实现方式中,所述第二网络设备还用于:响应于所述第一状态消息,将所述丢失数据包重传到所述第一网络设备。

当接收到状态消息时,所述状态消息是否重传上报丢失数据包的决定与传统的CPM协议类似。

在所述第二方面的一种实现方式中,所述第二网络设备还用于:从所述第一网络设备接收一个或多个主动状态消息,其中,所述一个或多个主动状态消息指示所述第一网络设备中的一个或多个丢失数据包;响应于所述一个或多个主动状态消息,将所述一个或多个丢失数据包重传到所述第一网络设备。

需要说明的是,当接收到主动状态消息时,所述主动状态消息是否重传上报丢失数据包的决定也与传统的CPM协议类似。

在所述第二方面的一种实现方式中,所述第二网络设备在发送所述第一轮询消息之后,还用于:在重传丢失数据包后至少K–1个新数据包已经发送到第一网络设备之后,向所述第一网络设备发送另一轮询消息。

需要说明的是,所述发送器发送重传数据包之后,所述发送器还可以发送轮询消息。然而,所述轮询消息可以在接收所述重传数据包之前由所述接收器接收。在这种情况下,所述接收器可以再次上报相同的重传数据包,该数据包可能很快被接收。为了避免不必要地重传同一数据包,所述发送器(即第二网络设备)可以在最后一次重传和下一次轮询消息之间发送至少K–1个新数据包。

在所述第二方面的一种实现方式中,所述第二网络设备在发送所述第一轮询消息之后,还用于:在重传丢失数据包后至少T毫秒之后,向所述第一网络设备发送另一轮询消息,其中,T是正数。

如果所述发送器(即第二网络设备)在最后一次重传和下一次轮询消息之间没有K–1个新数据包要发送,则它可以等待至少T毫秒。

在所述第二方面的一种实现方式中,T为最大往返时间(round-trip-time,RTT)和最小RTT之间的差值,其中,所述最大RTT和所述最小RTT为网络RTT,或者为所述第一网络设备和所述第二网络设备之间的RTT。

本发明的第三方面提供了一种由第一网络设备执行的方法,所述方法包括:获取参数K,其中,K为正整数;从第二网络设备接收数据包序列;当在序列号为j的数据包之前接收到序列号为i的数据包时,确定所述序列号为j的数据包丢失,其中,i和j为正整数,i>j+K;当确定所述序列号为j的数据包丢失时,向所述第二网络设备发送主动状态消息。

所述第三方面的方法的实现方式可以对应于上述第一方面的网络设备的实现方式。所述第三方面及其实现方式所述的方法实现了与所述第一方面及其相应的实现方式所述的网络设备相同的优点和效果。

本发明的第四方面提供了一种由第二网络设备执行的方法,所述方法包括:获取参数K,其中,K为正整数;向第一网络设备发送数据包序列;向所述第一网络设备发送第一轮询消息,其中,所述第一轮询消息包括参数K和正整数M,M是所述数据包序列中的最大序列号,所述第一轮询消息指示所述第一网络设备上报序列号为M–K的数据包之前的丢失数据包;响应于所述第一轮询消息,从所述第一网络设备接收第一状态消息,其中,所述第一状态消息指示在所述序列号为M–K的数据包之前发送的哪些数据包在所述第一网络设备中丢失。

所述第四方面的方法的实现方式可以对应于上述第二方面的网络设备的实现方式。所述第四方面及其实现方式所述的方法实现了与所述第二方面及其相应的实现方式所述的网络设备相同的优点和效果。

本发明的第五方面提供了一种计算机程序产品,所述计算机程序产品包括程序代码,所述程序代码用于在处理器上实现时执行根据第三方面和第三方面的任何实现方式,或第四方面和第四方面的任何实现方式所述的方法。

需要说明的是,本申请所描述的所有设备、元件、单元和模块可以在软件或硬件元件或其任何组合中实现。本申请中描述的各种实体所执行的步骤以及所描述的各种实体要执行的功能均意在指各个实体用于执行各个步骤和功能。即使在以下具体实施例的描述中,外部实体要执行的特定功能或步骤未反映在执行该特定步骤或功能的实体的特定详细元件的描述中,技术人员应清楚,这些方法和功能可以在相应的软件或硬件元件中实现,或以此类元件的任何种组合实现。

附图说明

结合所附附图,下文具体实施例的描述将阐述上述本发明的各方面及其实现方式,其中:

图1示出了回退N协议方法的示例;

图2示出了选择性重复协议方法的示例;

图3示出了选择性重复协议方法的模糊性问题;

图4示出了选择性重复协议方法的示例;

图5示出了选择性重复协议方法的示例;

图6示出了检查点模式方法的示例;

图7示出了不保证按顺序传送的示例;

图8示出了本发明的一个实施例提供的第一网络设备;

图9示出了本发明的一个实施例提供的第二网络设备;

图10示出了本发明的一个实施例提供的方法;

图11示出了本发明的一个实施例提供的方法。

具体实施方式

参考附图描述了用于在通信系统中高效数据包传输的方法、设备和程序产品的说明性实施例。虽然本描述提供了可能实现的详细示例,但应该注意的是,这些细节旨在是示例性的,并且绝不限制应用的范围。

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

确保数据可靠性的协议可分为三大类:停止等待协议、回退N协议和选择性重复协议。

例如,发送器发送了数据包1至5,只有数据包3丢失。在回退N协议场景中,发送器会重传数据包3至5,而在选择性重复协议场景中,发送器只会重传数据包3。

图1示出了在回退N协议中,发送器在收到否定ACK(negative ACK,NACK)通知数据包2丢失之前发送103个数据包的情况。因此,发送器不仅必须重传数据包2,还必须重传数据包3至103。只有在这之后,发送器才能继续传输新的数据包(从104及以上)。

图2中描述的示例示出了类似的情况,但通过选择性重复协议。这里,当发送器被告知数据包2丢失时,它只重传此数据包(即数据包2),然后可以继续传输新的数据包。

需要说明的是,选择性重复协议是一种更高效的协议,因为只有未能到达接收器的数据包才会重传。然而,选择性重复协议的实现比回退N协议的实现更困难,主要原因有两个。首先,选择性重复协议要求接收器将乱序数据包存储在特殊的缓冲区中,直到接收到丢失数据包(它不能将乱序数据包传送到应用程序)。其次,在异步和不可靠的网络中,通知发送器哪些数据包已经收到,哪些数据包丢失是一项困难的任务。具体地,接收器可以向发送器通知数据包丢失,而该数据包的(重新)传输很快就会到达接收器。因此,选择性重复发送器总是难以决定是否服从重传请求。

例如,情况如图3所示。具体地,在接收到数据包4之后,接收器理解数据包3丢失了,因为如果它没有丢失,它应该在数据包4之前接收到。接收器可以向发送器通知这个情况。接收器可以发送NACK,可选地,接收器可以向发送器通知接收器已经接收到的所有数据包和尚未接收到的数据包。此消息可以称为ACK/NACK。当发送器接收到此ACK/NACK消息时,会重传数据包3。但过了一段时间,接收器接到了另一个ACK/NACK,这表明数据包5和6也丢失了。此ACK/NACK还通知数据包3(仍然)丢失。当发送器接收到此ACK/NACK时,发送器不知道数据包3的重传副本的状态是什么。一方面,如果发送器忽略了这个ACK/NACK指示数据包3(仍然)丢失这一事实,那么发送器将永远无法知道数据包3的重传副本丢失。另一方面,如果发送器再次重传数据包3,但上一次重传是由接收器接收的,那么第二次重传就是浪费资源。

解决上述“ACK/NACK”模糊性的一种方法是,每个ACK/NACK只上报每个丢失数据包一次,并说明接收器正确接收了哪些数据包。图4示出了发送器仅针对新的间隙发送NACK的情况。需要说明的是,当数据包不连续时,就会出现间隙。

此外,发送器需要知道之前NACK的数据包(即NACK中指示的数据包)的重传是否也丢失。实现这一目标的一个有希望的方法是将逻辑计时器与每次重传关联起来。也就是说,如果特定重传在超时时间内没有被ACK(即ACK中指示的数据包),则将重复重传。示例见图5。需要说明的是,图5并没有示出所有发送或可以发送的ACK消息。发送器通常在检测到序列号中的新间隙时发送NACK。发送器可以在接收到数据包时发送ACK。

然而,上述方法存在两个问题。首先,它需要许多逻辑计时器。这些计时器的操作很困难,特别是在硬件上实现协议时。其次,协议需要调整超时,这是一项非常困难的任务。尤其是RTT在实践中可能会经常变化。对RTT的错误估计可能导致不必要的重传(如果超时太短),或者导致额外的延迟(如果超时太长)。

检查点模式(Checkpoint Mode,CPM)是实现选择性重复协议的不同方法。具体地,CPM使用三种类型的控制消息:(1)轮询消息,由发送器定期发送;(2)状态(STAT)消息,由接收器发送,作为对接收到的轮询消息的响应;(3)主动状态(USTAT)消息,每当检测到接收到的数据包的序列号中出现新的间隙时,接收器就发送。

通常,发送器维护两个序列号计数器。第一个计数器用于分配给数据包的序列号,称为消息序列号(message sequence number,MSN)。第二个计数器用于分配给轮询消息的序列号,因此,称为轮询消息序列号(poll message sequence number,PMSN)。

当发送器发送新的数据包时,将新的MSN附加到新的数据包上,并增加MSN计数器。如果接收器在接收到的数据包中检测到新的间隙,则发送USTAT消息,并告诉发送器检测到的间隙是什么。然后,发送器使用其原始MSN重新发送丢失数据包。发送器不时创建新的轮询消息,并将其发送到接收器。轮询消息被分配一个PMSN,该PMSN等于最后一个轮询消息的PMSN+1。轮询消息还包含一个Max-MSN字段,该字段是最后传输的新数据包的MSN。

当发送器第一次或作为重传发送数据包时,它将最后发送的轮询消息的PMSN与此数据包的MSN关联。这种关联可以保存在发送器的存储器中。

当接收器接收到轮询消息时,它将通过STAT消息进行响应。STAT消息的目的是通知发送器在轮询消息之前发送的数据包中,哪些已正确接收,哪些已丢失。一般情况下,STAT消息有三个字段:(a)从STAT响应的轮询消息中复制的PMSN;(b)也是从轮询消息中复制的Max-MSN值;(c)序列号小于Max-MSN且接收器尚未接收的数据包列表。

协议的一些重传规则如下所示。首先,发送器总是服从每个USTAT消息,即发送器重传USTAT消息上报丢失数据包。这是为了保证,对于接收器接收到的这些重传数据包中的每一个,它将是接收器第一次接收到此数据包。其次,当接收到STAT消息时,对于每个上报丢失数据包,当且仅当与此数据包关联的PMSN小于与轮询/STAT握手关联的PMSN时,发送器才重传此数据包。

上述协议是作为点对点第2层数据链路控制(data link control,DLC)协议开发的,假设数据包是按顺序接收的。在这种假设下,上述重传规则保证所有数据包最终都被接收器接收,并且发送器没有不必要的重传数据包。

图6示出了CPM方法的示例。在本示例中,USTAT消息不仅用于上报新的间隙,还用于上报正确接受的数据包。例如,数据包3丢失,当接收器接收到数据包4时,发送上报此丢失的USTAT消息。当接收到USTAT消息时,发送器立即重传数据包3。另一方面,上报丢失数据包5和6的USTAT消息丢失,因此这些数据包只有在下一次成功的轮询/STAT握手后才会重传。第一轮询消息接收到PMSN=1,并请求接收器上报序列号7之前的丢失数据包。当发送器接收到响应此轮询消息的STAT消息时,发送器正在等待关于数据包1至8的ACK。所有这些数据包都在PMSN=1的发送器处关联,但PMSN=2的数据包3和8除外,因为它们的最后一次传输发生在发送第一轮询消息之后。表1示出了这一点。

表1:发送器窗口的状态

当发送器接收到响应第一轮询消息的STAT消息时,该STAT消息上报数据包3、5和6丢失。通过比较该STAT消息的PMSN(即PMSN=1)与和数据包3、5和6关联的PMSN(即分别为2、1和1),发送器得知数据包3的最后一次传输发生在该STAT消息响应的轮询消息的传输之后。这意味着此STAT消息并不真正指示3的最后一次传输是否成功。因此,发送器忽略了数据包3的重传请求(事实上,没有必要重传此数据包,因为最后一次传输是正确接收的),但它服从数据包5和6的重传请求。数据包6的重传丢失。但是,在此丢失之后不会发送USTAT,因为USTAT仅在每个数据包的第一次传输时发送。然后,发送器继续发送新的数据包(例如,数据包9)。当最大MSN为9时,发送第二STAT消息。响应的STAT消息指示数据包6仍然丢失。通过将第二STAT消息的PMSN(即PMSN=2)与接收到STAT消息时与数据包6关联的PMSN(即PMSN=1)进行比较,发送器得知上次传输已经丢失,并第三次传输该数据包。

在下面的讨论中,假设发送器和接收器交换协议数据单元(protocol data unit,PDU)。PDU是从发送器发送到接收器的数据包,或从发送器发送到接收器的控制消息(例如,轮询消息),反之亦然(STAT或USTAT消息)。

如前所述,CPM协议被设计为点对点第2层DLC协议。在假设所有未丢失的PDU都以与发送的顺序相同的顺序接收的情况下进行该协议。例如,如图6所示,可以看到发送器发送数据包1至7,然后发送轮询消息。有些数据包被接收,有些数据包丢失,稍后重传。但是,已接收到的数据包保留其传输顺序。类似地,在轮询消息之前发送且没有丢失的所有数据包之后接收轮询消息。

但是,并不总是保证PDU按顺序传送。具体地,CPM协议可以用作传输(第4层)协议的一部分,如用户数据报协议(User Datagram Protocol,UDP)。CPM协议位于网络层(如IP)上。在这种情况下,路由表的更改可能会违反PDU的按顺序传送。

图7示出了一个不保证PDU按顺序传送的示例。需要说明的是,对于发送器发送的PDU,在图7中示出,但对于接收器发送的PDU也存在同样的问题。可以看出,数据包1在数据包2至4之后被接收,尽管它是在数据包2至4之前传输的。此外,轮询消息在数据包1至7之后发送,但在数据包7之前被接收。

乱序接收PDU的主要原因是路由层可能会路由不同的PDU,而不一定是在同一路由上。例如,数据包1沿着一条路由进行路由,数据包2至4沿着不同的路由进行路由。如果第二路由比第一路由更快,例如,因为第二路由较少拥塞或较短,则有可能在数据包1之前接收数据包2至4(或它们的任何前缀)。

应当指出,CPM是一种协议,其作用是保证数据包以发送器应用程序发出的相同顺序传送给接收器应用程序,并且不丢失、重复或混乱。因此,CPM协议应该能够应对PDU的丢失和PDU乱序接收。然而,CPM的设计方式是,假设PDU可能丢失,但当PDU被接收时,必须按顺序接收。

在以下情况中,CPM协议依赖于PDU的有序传送:

1.在接收到的数据包之间:例如,如果数据包5在数据包3之后被接收,则针对数据包4发送USTAT,因为如果该数据包没有丢失,它就会在数据包5之前被接收;

2.在接收到的轮询消息和数据包之间:例如,如果发送器发送了Max-MSN=10的轮询消息,但接收器接收到的最后一个数据包是9,则接收器上报数据包10丢失,因为如果它没有丢失,将在轮询消息之前被接收;

3.在接收到的轮询消息和重传的数据包之间:例如,如果接收器发送了数据包8的重传,然后发送了轮询消息,但在数据包8的重传之前接收到了轮询消息,则接收器通知数据包8仍然丢失,发送器有必要重传此数据包。

为了解决上述限制和缺点,本发明的实施例提出了CPM协议扩展到PDU可能被乱序接收的情况,这为CPM协议提供了乱序容许,从而允许CPM协议在更高层(例如,第4层)中使用。

例如,有两个PDU:PDU(i)和PDU(j),其中i>j。即,发送器在PDU(i)之前发送PDU(j),而接收器在PDU(j)之前接收PDU(i)。将乱序距离定义为i–j。例如,如果PDU(6)在PDU(4)之前被接收,则乱序距离为2。这意味着一个PDU已经绕过了两个之前发送的PDU。

需要说明的是,假设PDU可以被乱序接收,但每两个乱序接收的PDU之间有最大距离。最大距离的值为变量K,其中,K≥0。K=0是PDU始终按顺序接收的特殊情况。在接收器接收PDU(2)然后接收PDU(6)的情况下,如果K=2,则PDU(6)可能在PDU(4)和PDU(5)之前被接收,但不能在PDU(3)之前被接收。因此,接收器可以确定PDU(3)已经丢失。但是,如果K=3,当接收到PDU(6)时,接收器还不能决定PDU(3)还是PDU(4)或PDU(5)丢失。

图8示出了本发明实施例提供的第一网络设备800。第一网络设备800可以包括处理电路(未示出),该处理电路用于执行、进行或启动本文所述的第一网络设备800的各种操作。处理电路可以包括硬件和软件。硬件可以包括模拟电路或数字电路,或模拟电路和数字电路两者。数字电路可以包括专用集成电路(application-specific integratedcircuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)、数字信号处理器(digital signal processor,DSP)或多用途处理器等组件。第一网络设备800还可以包括存储电路,存储可以由处理器或处理电路执行的一个或多个指令,特别是在软件的控制下。例如,存储电路可以包括存储可执行软件代码的非瞬时性存储介质,当由处理器或处理电路执行时,该软件代码使得第一网络设备800的各种操作被执行。在一个实施例中,处理电路包括一个或多个处理器和连接到一个或多个处理器的非瞬时性存储器。所述非瞬时性存储器可携带可执行程序代码,所述可执行程序代码当由所述一个或多个处理器执行时,使第一网络设备800执行、进行或启动本文所述的操作或方法。

具体地,第一网络设备800用于获取参数K 801,其中,K为正整数。此外,第一网络设备800用于从第二网络设备900接收数据包序列802。因此,第一网络设备800可以称为“接收器”,第二网络设备900可以称为“发送器”,尤其是与前面图中所示的发送器和接收器相比。第一网络设备800用于:当在序列号为j的数据包之前接收到序列号为i的数据包时,确定所述序列号为j的数据包丢失,其中,i和j为正整数,i>j+K。然后,第一网络设备800用于:当确定所述序列号为j的数据包丢失时,向所述第二网络设备900发送主动状态消息803。

为了处理最大为K的乱序距离,CPM协议可以通过以下方式修改:在接收器侧,当数据包i在数据包j之前被接收时,其中,i>j,如果i–j>K,则向接收器发送通知数据包j应该重传的USTAT;如果i–j≤K,则不发送USTAT。

例如,假设K=2。第一网络设备800接收数据包1,然后接收数据包4,然后接收数据包5。根据本发明的一个实施例,当第一网络设备800接收到数据包4时,不针对数据包2发送USTAT,显然也不针对数据包3发送USTAT。但是当第一网络设备800接收到数据包5时,针对数据包2发送USTAT,因为5–2>2。

在标准CPM协议(K=0)中,发送器在轮询消息中添加Max-MSN,即轮询消息指示数据包序列中最大数据包的序列号M,以便获得指示数据包M之前的所有数据包状态的STAT。

为了容许乱序距离K,根据本发明的实施例,第二网络设备900可以在轮询消息中指示M的值和参数K。相应地,CPM协议也可以以发送轮询消息和/或发送STAT消息的方式进行修改。

可选地,第一网络设备800还可以用于从第二网络设备900接收第一轮询消息。具体地,第一轮询消息包括参数K 801和正整数M,其中,M为数据包序列中的最大序列号。第一轮询消息指示第一网络设备800上报序列号为M–K的数据包之前的丢失数据包。相应地,第一网络设备800可以用于:响应于第一轮询消息,向第二网络设备900发送第一状态消息,其中,所述第一状态消息指示在序列号为M–K的数据包之前发送的哪些数据包在第一网络设备800丢失。

可选地,根据本发明的一个实施例,第一网络设备800还可以用于:从第二网络设备900接收第二轮询消息,其中,所述第二轮询消息包括正整数M,M为数据包序列中的最大序列号。第二轮询消息用于指示第一网络设备800上报序列号为M的数据包之前的丢失数据包。需要说明的是,第二轮询消息是以传统方式发送的。然而,第一网络设备800在接收到轮询消息后不会立即上报丢失数据包。具体地,第一网络设备800可以用于:在接收到另外K个数据包之后,向第二网络设备900发送第二状态消息,其中,所述第二状态消息指示在序列号为M的数据包之前发送的数据包中哪些数据包在第一网络设备800丢失。

即,第一网络设备800会上报丢失数据包,直到接收到另外K个数据包。这样,即使数据包序列中的最后一个数据包被乱序接收,但在乱序距离K内,它仍然可以在状态消息中上报。

图9示出了本发明实施例提供的第二网络设备900。具体地,第二网络设备900用于获取参数K 801,其中,K为正整数。然后,第二网络设备900还用于向第一网络设备800发送数据包序列802。因此,第二网络设备900可以称为“发送器”,第一网络设备800可以称为“接收器”,尤其是与前面图中所示的发送器和接收器相比。此外,第二网络设备900用于向第一网络设备800发送第一轮询消息901。具体地,第一轮询消息901包括参数K 801和正整数M,其中,M为数据包序列802中的最大序列号。第一轮询消息901用于指示第一网络设备800上报序列号为M–K的数据包之前的丢失数据包。此外,第二网络设备900用于响应于第一轮询消息901,从第一网络设备800接收第一状态消息902,其中,所述第一状态消息902指示在序列号为M–K的数据包之前发送的哪些数据包在第一网络设备800丢失。可能地,第一网络设备800是如图8所示的第一网络设备。

如上所述,在标准CPM协议(K=0)中,发送方在轮询消息中添加Max-MSN,即轮询消息指示数据包序列中最大数据包的序列号M,为了获得指示数据包M之前的所有数据包的状态的STAT。为了容许乱序距离K,根据本发明的实施例,第二网络设备900可以在轮询消息中指示M的值和参数K。可选地,第二网络设备900可以发送轮询消息中的Max-MSN减去K的值,而不是Max-MSN的值。所述轮询消息用于指示接收器(即第一网络设备800)上报序列号M–K之前的丢失数据包。

在发送器(即第二网络设备900)侧,当接收到STAT或USTAT时,是否重传STAT或USTAT上报丢失数据包的决定与传统CPM协议的决定类似。

例如,发送器(即第二网络设备900)总是服从每个USTAT消息,除非发送器已经重传上报为丢失数据包。具体地,当数据包X丢失时,这可能发生,并且在发送数据包X+1之前,发送器发送轮询消息;因此,关于丢失数据包X的第一报告是由STAT接收的,而不是由USTAT接收的。这是为了保证,对于这些重传的数据包中的每一个,如果它被接收器接收,这是接收器第一次接收该数据包。

当接收到STAT消息时,对于每个上报丢失数据包,当且仅当与该数据包关联的PMSN小于与轮询/STAT握手关联的PMSN时,发送器(即第二网络设备900)重传该数据包。

可选地,根据本发明的一个实施例,第二网络设备900还可以用于响应于第一状态消息902,向第一网络设备800重传丢失数据包。

可选地,根据本发明的一个实施例,第二网络设备900还可以用于从第一网络设备800接收一个或多个主动状态消息803。一个或多个主动状态消息803指示第一网络设备800侧的一个或多个丢失数据包。此外,第二网络设备900还可以用于响应于一个或多个主动状态消息803,向第一网络设备800重传一个或多个丢失数据包。

需要说明的是,发送器(即第二网络设备900)发送重传数据包之后,还可以发送轮询消息。然而,轮询消息可以由接收器(即第一网络设备800)在接收到重传的数据包之前接收。在这种情况下,接收器可以在STAT中上报重传的数据包仍然丢失,然后发送器会不必要地再次重传该数据包。

为了避免不必要地重传相同的数据包,发送器(即第二网络设备900)可以在最后一次重传和下一次轮询消息之间发送至少K–1个新数据包。即,第二网络设备900在发送第一轮询消息901之后,还可以用于在重传丢失数据包后至少K–1个新数据包已经传输到第一网络设备800之后,向第一网络设备800发送另一轮询消息。

如果发送器(即第二网络设备900)在最后一次重传和下一次轮询消息之间没有K–1个新数据包要发送,则可以在最后一次重传和下一次轮询消息之间等待至少T毫秒,其中,T是正数。T是一个足够大的网络参数,可以保证在t+T之后发送的PDU之后无法接收到时间t之前发送的PDU。确定T的一种方法是作为最大RTT和最小RTT之间的差值。RTT是网络RTT,或每个特定的发送器-接收器对之间(即第一网络设备800和第二网络设备900之间)的RTT。

理论上,两个轮询消息也可能被乱序接收。有两种方法可以解决这个问题。第一种方法是,轮询消息将以彼此之间的最小延迟t毫秒传输。这保证了它们将按顺序接收。第二种方法是,接收器会忽略乱序轮询消息。例如,发送器可以发送轮询消息(PMSN=i),然后发送另一个轮询消息(PMSN=i+1)。在接收器先接收到第二轮询消息(PMSN=i+1)的情况下,当接收器接收到轮询消息(PMSN=i)时,这个轮询消息不会通过STAT响应。

可选地,根据本发明的一个实施例,第一或第二轮询消息可以包括序列号s,其中,s为正整数。然后,第一网络设备800还可以用于从第二网络设备接收第三轮询消息,如果第三轮询消息的序列号小于s,则忽略第三轮询消息。

需要说明的是,在本发明的一些实施例中,K的值是双方(接收器和发送器(即第一网络设备800和第二网络设备900))已知的。双方就K值达成一致的一些可能方法包括:

1.可以在连接建立过程中协商。

2.可以是静态网络参数。

3.可以是一个动态变化的数字,在变化时通知端点。

4.可以通过网络控制器与双方通信。

例如,参数K 801可以在第一网络设备与第二网络设备建立连接时协商。或者,参数K也可以在第一网络设备/第二网络设备与网络控制器等其它网络设备建立连接时协商。需要说明的是,参数K可以是固定的数字。或者,参数K可以是动态更新的数字,该数字可以在变化时通知发送器和接收器。可选地,第一网络设备800可以用于获取更新后的参数K,并向第二网络设备900指示更新后的参数K。可选地,第二网络设备900可以用于获取更新后的参数K,并向第一网络设备800指示更新后的参数K。

在可选的实施例中,可能只有接收器(即第一网络设备800)知道参数K,即它愿意容许的乱序数据包的数量。在这种情况下,发送器(即第二网络设备900)不从Max-MSN的值中减去K。相反,第一网络设备800在接收到轮询消息时,仅包括关于Max-MSN-K的信息。

需要说明的是,通信是双向的,因此每个端点既是发送器,也是接收器。可能地,图8所示的第一网络设备800在具体实现中可以是图9所示的第二网络设备900。

图10示出了本发明实施例提供的方法1000。在本发明的一个特定实施例中,方法1000由图8所示的第一网络设备800执行。方法1000包括:步骤1001:获取参数K 801,其中,K为正整数;步骤1002:从第二网络设备900接收数据包序列802;步骤1003:当在序列号j的数据包之前接收到序列号i的数据包时,确定序列号j的数据包丢失,其中,i和j为正整数,i>j+K;步骤1004:当确定序列号为j的数据包丢失时,向第二网络设备900发送主动状态消息803。可能地,网络节点900是图8或图9所示的网络节点。

图11示出了本发明实施例提供的方法1100。在本发明的一个特定实施例中,方法1100由图9所示的第二网络设备900执行。方法1100包括:步骤1101:获取参数K 801,其中,K为正整数;步骤1102:向第一网络设备800发送数据包序列802;步骤1103:向第一网络设备800发送第一轮询消息901,其中,所述第一轮询消息901包括参数K 801和正整数M,M为数据包序列802中的最大序列号,第一轮询消息901指示第一网络设备800上报序列号为M–K的数据包之前的丢失数据包;步骤1104:响应于第一轮询消息901,从第一网络设备800接收第一状态消息902,其中,所述第一状态消息902指示在序列号为M–K的数据包之前发送的哪些数据包在第一网络设备800丢失。可能地,第一网络设备800是图8或图9种所示的第一网络设备。

已经结合作为示例的各种实施例以及实现方式对本申请进行了描述。但是,根据对附图、本发明和所附权利要求书的研究,本领域技术人员在实践所要求保护的发明时,能够理解和实现其它变化。在权利要求书以及说明书中,词语“包括”不排除其它元件或步骤,“一”不排除多个元件或步骤。单个元件或其它单元可满足权利要求中描述的若干实体或项目的功能。在仅凭某些措施被记载在相互不同的从属权利要求书中这个单纯的事实并不意味着这些措施的结合不能被有效地使用。

另外,根据本发明实施例的任意方法可以在具有编码模块的计算机程序中实现,当处理模块运行该计算机程序时,使处理模块执行方法步骤。计算机程序包括在计算机程序产品的计算机可读介质中。计算机可读介质基本上可以包括任何存储器,例如只读存储器(read-only memory,ROM)、可编程只读存储器(programmable read-only memory,PROM)、可擦除PROM(erasable PROM,EPROM)、闪存,电可擦除EPROM(electricallyerasable PROM,EEPROM)或硬盘驱动器。

此外,技术人员认识到,第一网络设备800和第二网络设备900的实施例分别包括用于执行技术方案的功能、模块、单元、元件等形式的必要通信能力。其它此类模块、单元、元件和功能的示例为:处理器、存储器、缓冲器、控制逻辑、编码器、解码器、速率匹配器、解速率匹配器、映射单元、乘法器、决策单元、选择单元、开关、交织器、解交织器、调制器、解调器、输入端、输出端、天线、放大器、接收单元、发射单元、DSP、格码调制(trellis-codedmodulation,TCM)、TCM编码器、TCM解码器、电源单元、电源馈线、通信接口、通信协议等,它们适当地布置在一起以执行技术方案。

特别地,第一网络设备800和第二网络设备900的处理器分别可以包括中央处理单元(Central Processing Unit,CPU)、处理单元、处理电路、处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、微处理器,或其它可以解释和执行指令的处理逻辑的一个或多个实例。表述“处理器”因此可表示包括多个处理电路的处理电路,所述多个处理电路例如以上列举项中的任何、一些或所有项。处理电路还可以执行用于输入、输出以及处理数据的数据处理功能,所述数据处理功能包括数据缓冲和设备控制功能,例如呼叫处理控制、用户界面控制等。

相关技术
  • 用于在真空沉积工艺中在基板上进行材料沉积的设备、用于在基板上进行溅射沉积的系统和用于制造用于在基板上进行材料沉积的设备的方法
  • 用于在车辆中喷水的设备以及用于运行这样的设备的方法
  • 用于在混合网络中传送多媒体数据的装置和方法
  • 用于在压片机的模具中传送、插入和定位薄膜的方法
  • 一种光传送网络中的传输速率调整方法及网络设备
  • 用于在网络传输协议中传送应答的设备和方法
  • 在网络传输协议中传递确认的设备和方法
技术分类

06120115761602