一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于在网络传输协议中传送应答的设备和方法与流程

2023-02-06 22:59:45 来源:中国专利 TAG:


1.本发明涉及通信网络,更具体涉及通信网络数据传输的数据可靠性。本发明提出了一种用于以动态方式自适应地请求和传送应答信息的设备和方法。


背景技术:

2.在数据网络中,当两台计算机相互通信时,通常需要确保数据可靠性。为此,发送方为每个数据包附加序列号,接收方通知发送方哪些数据包已经被接收,哪些数据包丢失。发送方必须重新发送丢失的数据包,直到接收方接收到所有数据包。
3.确保数据可靠性的协议可分为三大类:停止等待,返回n和选择性重复。
4.在停止等待中,发送方发送数据包并等待数据包的应答(ack)。一旦ack到达发送方,发送方就会发送下一个数据包。如果没有收到ack,则发送方将再次重传上一个数据包。
5.在返回n中,已经接收到数据包n之前的所有数据包的接收方只愿意接受数据包n 1。如果没有接收到数据包n 1,但接收到了序列号更高的数据包,例如n 2,则接收方丢弃此乱序数据包。当发送方被告知数据包n 1丢失时,发送方知道不仅必须重传此数据包,而且必须重传所有后续数据包。停止等待实际上是返回n的一个特例,n=1。
6.在选择性重复中,接收方愿意接受乱序接收的数据包。接收方将这些数据包放置在重新排序缓冲区中。然后,接收方只通知发送方丢失的数据包,发送方只重传丢失的数据包。
7.但是,现有的方案只适用于二层网络,在二层网络中,延迟是恒定的,数据包按序传送。


技术实现要素:

8.鉴于上述限制,所公开实施例的方面旨在引入用于确保数据可靠性的动态方案。具体地,目标是提供一个通用协议,以确保数据可靠性,并使其适用于较大的网络。一个目标是使该协议可以在现代数据中心中高效地使用。
9.通过所附独立权利要求中提供的实施例实现所述目标。实施例的有利实现方式在从属权利要求中进一步定义。
10.本发明在两个主要方面做出了贡献。具体地,所公开实施例的方面提出了用于发送轮询消息的动态方法。此外,所公开实施例的方面还提出了用于发送状态消息的动态方法。
11.所公开实施例的第一方面提供了一种第一网络设备,所述第一网络设备用于:向第二网络设备发送数据包;向所述第二网络设备发送轮询消息;响应于每个轮询消息,从所述第二网络设备接收至少一个状态消息,所述至少一个状态消息指示在所述轮询消息之前发送的所述数据包中的哪些数据包已经在所述第二网络设备处被正确接收和/或已经丢失;其中,所述第一网络设备用于基于参数集调整发送所述轮询消息的速率。
12.第一网络设备(发送方)通过用于调整发送轮询消息的速率,提供了确保数据可靠
性的动态方案。具体地,该方案保证了数据可靠性,并且适用于较大的网络。
13.在所述第一方面的一种实现方式中,所述第一网络设备用于通过基于所述参数集执行确定性算法和/或概率算法来调整发送所述轮询消息的所述速率。
14.这与现有技术中使用的算法形成了鲜明对比,现有技术中使用的算法通常是确定性的。第一网络设备使用确定性或概率考虑。在概率算法中,第一网络设备可以使用概率考虑来决定是否发送轮询消息。
15.在所述第一方面的一种实现方式中,所述第一网络设备用于基于所述参数集,决定是否在给定的发送数据包之后发送轮询消息。
16.可选地,第一网络设备可以使用概率考虑来决定是否发送轮询消息,特别是在某个数据包之后。
17.在所述第一方面的一种实现方式中,所述参数集包括概率参数。
18.例如,概率算法可以是在具有概率p的每个数据包之后发送轮询消息。
19.在所述第一方面的一种实现方式中,所述参数集包括指示网络拥塞的拥塞参数。
20.需要说明的是,在现代数据中心中,几乎所有丢失的数据包事件都归因于网络拥塞。因此,也可以考虑发送轮询消息的速率与网络拥塞之间的关系。
21.在所述第一方面的一种实现方式中,所述参数集包括所述第一网络设备与所述第二网络设备之间的往返时间(round trip time,rtt)。
22.需要说明的是,rtt是发送信号所需的时间长度加上接收该信号的ack所需的时间长度。
23.在所述第一方面的一种实现方式中,所述第一网络设备用于:如果所述拥塞参数指示高网络拥塞,则提高发送所述轮询消息的所述速率;和/或,如果所述拥塞参数指示低网络拥塞,则降低发送所述轮询消息的所述速率。
24.可以看出,当拥塞较高时,丢失的数据包较多,因此,第一网络设备可以提高发送轮询消息的速率。另一方面,当拥塞较低时,第一网络设备可以降低发送轮询消息的速率。
25.在所述第一方面的一种实现方式中,所述第一网络设备用于与沿着所述第一网络设备与所述第二网络设备之间的传输路径的网络拥塞成比例地调整发送所述轮询消息的所述速率。
26.在所述第一方面的一种实现方式中,所述参数集包括第一接近度参数,所述第一接近度参数指示所述发送数据包与事务的结束的接近度,其中,所述事务包括多个数据包。
27.需要说明的是,与远离事务的结束时相比,第一网络设备在接近事务的结束时意识到丢失的数据包可能更重要。优选地,在调整发送轮询消息的速率时,也应考虑此信息。
28.在所述第一方面的一种实现方式中,所述第一网络设备用于,如果所述第一接近度参数指示所述数据包在接近所述事务的结束时被发送,则提高发送所述轮询消息的所述速率。
29.这使得在接近事务的结束时增强对丢失数据包的感知,并且轮询消息可以以更高的速率发送。
30.在所述第一方面的一种实现方式中,所述参数集包括第二接近度参数,所述第二接近度参数指示所述发送数据包与所述第一网络设备的传输窗口的结束的接近度。
31.在所述第一方面的一种实现方式中,所述第一网络设备用于,如果所述第二接近
度参数指示所述数据包在接近所述传输窗口的结束时被发送,则提高发送所述轮询消息的所述速率。
32.也就是说,当第一网络设备更接近其窗口的结束时,将发送更多的轮询消息。
33.在第一方面的一种实现方式中,所述轮询消息通过附加到所述数据包上被发送到所述第二网络设备。
34.可选地,轮询消息可以不必是单独的消息,而是可以附加到数据包上。
35.所公开实施例的第二方面提供了一种第二网络设备,所述第二网络设备用于:从第一网络设备接收数据包;在以下条件中的一个或多个的情况下,向所述第一网络设备发送至少一个主动状态(ustat)消息:所述第二网络设备识别出新的拥塞控制事件,所述第二网络设备在确定的时间量内没有接收到轮询消息,所述第二网络设备接收到事务的所有数据包。
36.所述第二网络设备(接收方)可以使用ustat消息将重要信息传递到第一发送设备(发送方),具体地不仅在检测到新的序列号间隙时,而且在其它情况下。
37.在所述第二方面的一种实现方式中,所述第二网络设备还用于,如果检测到没有接收到一个或多个数据包,则向所述第一网络设备发送至少一个ustat消息。
38.在所述第二方面的一种实现方式中,所述拥塞控制事件包括沿着所述第一网络设备与所述第二网络设备之间的传输路径的网络拥塞。
39.例如,即使第二网络设备正确接收到数据包,但该数据包指示沿着路径的一个交换机拥塞,该信息也可以提供给第一网络设备。
40.在所述第二方面的一种实现方式中,如果所述第二网络设备在所述确定的时间量内没有接收到轮询消息,则所述第二网络设备用于在所述至少一个ustat消息中包括按序接收的数据包的最大序列号。
41.在所述第二方面的一种实现方式中,如果所述第二网络设备在所述确定的时间量内没有接收到轮询消息,则所述第二网络设备用于在所述至少一个ustat消息中包括数据包接受信息,所述数据包接受信息指示已接收的一个或多个数据包和/或未接收的一个或多个数据包的状态。
42.可选地,ustat消息不仅可以报告按序接收的数据包的最大序列号,而且还可以发送数据包接受信息,所述数据包接受信息指示哪个数据包已被接收和哪个数据包丢失的状态。例如,数据包接受信息可以包括位图、表或任何其它可能的方式,这些方式可以指示每个数据包是否被接收。
43.所公开实施例的第三方面提供了一种由第一网络设备执行的方法,所述方法包括:向第二网络设备发送数据包;
44.向所述第二网络设备发送轮询消息;响应于每个轮询消息,从所述第二网络设备接收至少一个状态消息,所述至少一个状态消息指示在所述轮询消息之前发送的所述数据包中的哪些数据包已经在所述第二网络设备处被正确接收和/或已经丢失;其中,所述第一网络设备用于基于参数集调整发送所述轮询消息的速率。
45.所述第三方面的方法的实现方式可以对应所述第一方面的第一网络设备的实现方式。所述第三方面及其实现方式所述的方法实现了与上述第一方面及其实现方式所述的第一网络设备相同的优点和效果。
46.所公开实施例的第四方面提供了一种由第二网络设备执行的方法,所述方法包括:从第一网络设备接收数据包;
47.在以下条件中的一个或多个的情况下,向所述第一网络设备发送至少一个ustat消息:所述第二网络设备识别出新的拥塞控制事件,所述第二网络设备在确定的时间量内没有接收到轮询消息,所述第二网络设备接收到事务的所有数据包。
48.所述第四方面的方法的实现方式可以对应所述第二方面的第二网络设备的实现方式。所述第四方面及其实现方式所述的方法实现了与上述第二方面及其实现方式所述的第二网络设备相同的优点和效果。
49.所公开实施例的第五方面提供了一种计算机程序产品,所述计算机程序产品包括程序代码,所述程序代码用于当在处理器上实现时执行根据所述第三方面和所述第三方面的任何实现方式,或所述第四方面和所述第四方面的任何实现方式所述的方法。
50.需要说明的是,本技术中所述的所有设备、元件、单元和模块都可以在软件或硬件元件或其任何种类的组合中实现。本技术中描述的各种实体所执行的所有步骤以及所描述的各种实体要执行的功能均意在指相应实体用于执行相应步骤和功能。虽然在以下具体实施例的描述中,外部实体执行的具体功能或步骤没有在执行具体步骤或功能的实体的具体详述元件的描述中反映,但是技术人员应清楚,这些方法和功能可以通过相应的硬件或软件元件或其任何组合实现。
附图说明
51.结合所附附图,下面具体实施例的描述阐述上述所公开实施例的各方面及实现方式。
52.图1示出了返回n方法的示例。
53.图2示出了选择性重复方法的示例。
54.图3示出了选择性重复方法的模糊性问题。
55.图4示出了选择性重复方法的示例。
56.图5示出了选择性重复方法的示例。
57.图6示出了检查点模式方法的示例。
58.图7示出了实施例提供的第一网络设备。
59.图8示出了实施例提供的第二网络设备。
60.图9示出了实施例提供的方法。
61.图10示出了实施例提供的方法。
具体实施方式
62.参考附图描述了用于在通信系统中进行高效数据包传输的方法、设备和程序产品的说明性实施例。尽管该描述提供了可能实现方式的详细示例,但需要说明的是,这些细节旨在是示例性的,并且不会限制本技术的范围。
63.此外,一个实施例/示例可以指其它多个实施例/示例。例如,一个实施例/示例中提及的任何描述,包括但不限于术语、元件、过程、解释和/或技术优势均适用于其它多个实施例/示例。
64.众所周知,确保数据可靠性的协议可分为三大类:停止等待,返回n和选择性重复。
65.例如,发送方发送了数据包1至5,只有数据包3丢失。在返回n场景中,发送方将重传数据包3至5,而在选择性重复场景中,发送方将只重传数据包3。
66.图1示出了在返回n中,发送方在nack通知数据包2丢失之前发送103个数据包的情况。因此,它不仅必须重传数据包2,而且必须重传数据包3至103。只有在此之后,发送方才能继续发送新的数据包(104及以上)。
67.图2中描述的示例使用选择性重复示出了类似的情况。此处,当发送方被告知数据包2丢失时,它只重传此数据包(即数据包2),然后它可以继续发送新的数据包。
68.需要说明的是,选择性重复是一种更高效的协议,因为只有未能到达接收方的数据包才会被重传。但是,选择性重复的实现比返回n的实现更困难,主要原因有两个。首先,选择性重复要求接收方将乱序数据包存储在特殊的缓冲区中,直到接收到丢失的数据包(它不能将乱序数据包传送到应用程序)。第二,在异步和不可靠的网络中,通知发送方哪些数据包已经被接收和哪些数据包丢失是一项困难的任务。具体地,接收方可能通知发送方数据包丢失,而该数据包的(重新)传输将很快到达接收方。因此,选择性重复发送方总是难以决定是否服从重传请求。
69.例如,情况如图3所示。具体地,在接收到数据包4之后,接收方理解数据包3丢失了,因为如果它没有丢失,它应该在数据包4之前被接收到。接收方需要通知发送方。它可以发送否定ack(negative ack,nack),可选地,接收方可以通知发送方已经接收到的所有数据包和尚未接收到的数据包。该消息可以命名为ack/nack。
70.当发送方接收到该ack/nack消息时,它将重传数据包3。但过了一段时间,它接收到了另一个ack/nack,这表明数据包5和6也丢失了。该ack/nack还通知数据包3(仍然)丢失。当发送方接收到该ack/nack时,它不知道数据包3的重传副本的状态如何。一方面,如果它忽略了该ack/nack指示数据包3(仍然)丢失这一事实,则它将永远无法知道数据包3的重传副本丢失。另一方面,如果它再次重传数据包3,但上一次重传是被接收方接收到的,则第二次重传是浪费资源。
71.解决上述“ack/nack”模糊性的一种方法是,每个ack/nack只报告每个丢失的数据包一次,并说明哪些数据包已经被接收方正确接收。图4示出了发送方仅为新的间隙发送nack的情况。需要说明的是,当数据包不连续时,就会出现间隙。
72.此外,发送方需要知道先前被nack的数据包(即nack中指示的数据包)的重传是否也丢失。实现这一目标的一个有前景的方法是将逻辑计时器与每次重传关联。也就是说,如果特定重传在超时时间内没有被ack(即ack中指示的数据包),则将重复重传。图5示出了一个示例。需要说明的是,图5并没有示出被发送或可以被发送的所有ack消息。发送方通常在检测到序列号中的新间隙时发送nack。发送方可以在接收到数据包时发送ack。
73.但是,上述方法存在两个问题。首先,它需要许多逻辑计时器。这些计时器的操作很困难,特别是在硬件上实现协议时。其次,协议需要调整超时,这是一项非常困难的任务。这特别是因为rtt在实践中可能会经常变化。对rtt的错误估计可能导致不必要的重传(如果超时太短),或者导致额外的延迟(如果超时太长)。
74.检查点模式(checkpoint mode,cpm)是实现选择性重复的不同方法。具体地,cpm使用三种类型的控制消息:(1)由发送方定期发送的轮询消息;(2)状态(stat)消息,由接收
方作为对接收轮询消息的响应发送;(3)主动状态(ustat)消息,每当检测到接收数据包的序列号中出现新的间隙时由接收方发送。
75.通常,发送方维护两个序列号计数器。第一计数器用于分配给数据包的序列号。它被称为消息序列号(message sequence number,msn)。第二计数器用于分配给轮询消息的序列号。因此,它被称为轮询消息序列号(poll message sequence number,pmsn)。
76.当发送方发送新的数据包时,它将新的msn附加到新的数据包上,并增加msn计数器。如果接收方在接收数据包中检测到新的间隙,则发送ustat消息,并告诉发送方检测到的间隙是什么。然后,发送方使用其原始msn重新发送丢失的一个或多个数据包。发送方不时创建新的轮询消息,并将新的轮询消息发送给接收方。轮询消息被分配一个pmsn,该pmsn等于最后一个轮询消息的pmsn 1。轮询消息还包含一个max-msn字段,该字段是最后传输的数据包的msn。
77.当发送方第一次或作为重传发送数据包时,它将最后发送的轮询消息的pmsn与该数据包的msn关联。这种关联可以保存在发送方的存储器中。
78.当接收方接收到轮询消息时,它将以stat消息响应。stat消息的目的是通知发送方在轮询消息之前发送的数据包中,哪些已被正确接收,哪些已经丢失。通常,stat消息有三个字段:(a)pmsn,从stat响应的轮询消息中复制;(b)max-msn值,也从轮询消息中复制;(c)数据包列表,其序列号小于max-msn且尚未被接收方接收。
79.协议的一些重传规则如下所示。首先,每个ustat消息总是被发送方服从,即发送方重传ustat消息报告为丢失的数据包。这是为了保证,对于接收方接收到的这些重传数据包中的每一个,这将是接收方第一次接收到该数据包。其次,当接收到stat消息时,对于报告丢失为的每个数据包,当且仅当与该数据包关联的pmsn小于与轮询/stat握手关联的pmsn时,发送方才重传该数据包。
80.上述协议是作为第2层协议开发的,它假设数据包是按序接收的。在这种假设下,上述重传规则保证所有数据包最终都被接收方接收,并且发送方没有不必要的重传数据包。
81.图6示出了cpm方法的示例。在该示例中,ustat消息不仅用于报告新的间隙,还用于报告被正确接受的数据包。例如,数据包3丢失,当接收方收到数据包4时,发送报告此丢失的ustat消息。当接收到ustat消息时,发送方立即重传数据包3。另一方面,报告数据包5和6丢失的ustat消息丢失,因此这些数据包只有在下一次成功的轮询/stat握手后才会重传。
82.第一轮询消息接收pmsn=1,并请求接收方报告丢失的数据包,直到序列号7。当发送方接收到响应该轮询消息的stat消息时,发送方正在等待数据包1至8的ack。所有这些数据包都在发送方处与pmsn=1关联,但pmsn=2的3和8除外,因为它们的最后一次传输发生在发送第一轮询消息之后。表1示出了这一点。
83.表1:发送方的窗口的状态
84.数据包号(msn)12345678pmsn11211112
85.当发送方接收到响应第一轮询消息的stat消息时,该stat消息报告数据包3、5和6丢失。通过比较该stat消息的pmsn(即pmsn=1)与和数据包3、5和6相关联的pmsn(即分别为
2、1和1),发送方得知数据包3的最后一次传输发生在该stat消息响应的轮询消息的传输之后。这意味着该stat消息并不真正指示3的最后一次传输是否成功。因此,发送方忽略了数据包3的重传请求(事实上,没有必要重传该数据包,因为最后一次传输是被正确接收的),但它服从了数据包5和6的重传请求。
86.数据包6的重传丢失。但是,在该丢失之后不会发送ustat,因为ustat仅在每个数据包的第一次传输时发送。然后,发送方继续发送新的数据包(例如,数据包9)。当最大msn为9时,发送第二stat消息。响应的stat消息指示数据包6仍然丢失。通过将第二stat消息的pmsn(即pmsn=2)与接收到stat消息时与数据包6关联的pmsn(即pmsn=1)进行比较,发送方得知最后一次传输已经丢失,并第三次传输该数据包。
87.可以看出,在实现cpm方法时,一个重要的问题是,发送方何时应该发送轮询消息。这里有一个明确的权衡:如果轮询消息发送太频繁,则发送方和接收方的处理负担会因为额外的轮询和stat消息而增加。此外,带宽开销也会增加。另一方面,如果轮询消息的发送相对不太频繁,则发送方需要很长时间才能知道必须重传的数据包。这可能会显著增加完成文件传输所需的时间。
88.在现有技术中,已经提出了两种发送轮询消息的方法:在n个数据包之后发送轮询消息;以及每t个时间单元发送一次轮询消息。但是,这两种方法都是静态的。
89.图7示出了所公开实施例提供的第一网络设备700。第一网络设备700可以包括处理电路(未示出),该处理电路用于执行、进行或启动本文所述的第一网络设备700的各种操作。处理电路可以包括硬件和软件。硬件可以包括模拟电路或数字电路,或模拟电路和数字电路两者。数字电路可以包括专用集成电路(application-specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)、数字信号处理器(digital signal processor,dsp)或多用途处理器等组件。第一网络设备700还可以包括存储器电路,该存储器电路存储可以由处理器或处理电路执行(具体地,在软件的控制下执行)的一个或多个指令。例如,存储器电路可以包括存储可执行软件代码的非瞬时性存储介质,所述可执行软件代码当由处理器或处理电路执行时,使第一网络设备700执行各种操作。在一个实施例中,处理电路包括一个或多个处理器和连接到一个或多个处理器的非瞬时性存储器。所述非瞬时性存储器可携带可执行程序代码,所述可执行程序代码当由所述一个或多个处理器执行时,使第一网络设备700执行、进行或启动本文所述的操作或方法。
90.为了解决上述限制和缺陷,所公开实施例的方面提出了用于发送轮询消息的动态方法,这使得cpm在现代数据中心中高效地使用,特别是用于远程直接存储器访问(remote direct memory access,rdma)。此外,所公开实施例的各方面还提出了用于发送ustat消息的动态方法,特别是不仅当接收方识别序列号空间中的新间隙时。
91.具体地,第一网络设备700用于向第二网络设备800发送数据包701。因此,第一网络设备700可以被称为“发送方”,第二网络设备800可以被称为“接收方”,特别是与前面图中所示的发送方和接收方相比。第一网络设备700还用于向第二网络设备800发送轮询消息702。然后,第一网络设备700用于响应于每个轮询消息702,从第二网络设备800接收至少一个状态消息703,该至少一个状态消息703指示在该轮询消息702之前发送的数据包701中哪些数据包已经在第二网络设备800处被正确接收和/或已经丢失。此外,第一网络设备700具
体用于基于参数集调整发送轮询消息702的速率。
92.所公开实施例的方面提供了关于如何发送轮询消息702的设计和规则。具体地,建议发送方的算法将使用确定性考虑或概率性考虑。根据所公开实施例的一方面,如图7所示的第一网络设备700可用于通过基于参数集执行确定性算法和/或概率算法来调整发送轮询消息702的速率。这与过去使用的确定性算法形成了鲜明对比。
93.可选地,第一网络设备700可以用于基于参数集决定是否在给定的发送数据包之后发送轮询消息702。具体地,参数集可以包括概率参数。
94.在概率算法中,第一网络设备700可以使用概率考虑来决定是否在某个数据包701之后发送轮询消息702。最简单的概率算法是以概率p在每个数据包之后发送轮询消息702,或者以概率p在每t个时间单元之后发送轮询消息702。但概率算法可以考虑更多的考虑因素,例如轮询速率(发送轮询消息702的速率)与拥塞之间的关系,轮询速率与发送方对事务的结束的接近度之间的关系,以及轮询速率与发送方对其拥塞控制和/或流量控制窗口的结束的接近度之间的关系。
95.如上所述,轮询消息702的主要作用是要求接收方报告丢失的数据包701。在现代数据中心中,几乎所有丢失的数据包701事件都归因于网络拥塞。因此,当拥塞较高时,丢失的数据包较多,第一网络设备700可以提高发送轮询消息702的速率。另一方面,当拥塞较低时,可能期望第一网络设备700降低发送轮询消息702的速率。
96.在现代数据中心中,对于每个连接,第一网络设备700或任何其它发送节点可以被告知沿其传出数据包701的传输路径的拥塞。这可以通过被告知丢失的数据包701,或者通过使用特殊控制消息被告知早期拥塞来完成。
97.在所公开实施例的一方面中,所提出的算法可以是第一网络设备700将在高拥塞时提高发送轮询消息702的速率,并在低拥塞时降低发送轮询消息702的速率。根据所公开实施例的一方面,所述参数集可以包括指示网络拥塞的拥塞参数。可能的是,参数集可以包括第一网络设备700与第二网络设备800之间的rtt。
98.可选地,根据一个实施例,第一网络设备700可以用于,如果拥塞参数指示高网络拥塞,则提高发送轮询消息702的速率。可选地或附加地,第一网络设备700可以用于,如果拥塞参数指示低网络拥塞,则降低发送轮询消息702的速率。
99.可能的是,在该算法中,沿着发送方(第一网络设备700)与接收方(第二网络设备800)之间的传输路径发送轮询消息702的速率与拥塞成比例。也就是说,根据所公开实施例的一方面,第一网络设备700还可以用于与沿着第一网络设备700与第二网络设备800之间的传输路径的网络拥塞成比例地调整发送轮询消息702的速率。
100.定义该算法的另一种方法是,轮询消息702的数量与数据包丢失的百分比成比例。第三种方式是说,轮询消息702的数量与数据包701将丢失的概率成比例。
101.通常,由第一网络设备700进行的传输可以被视为一系列事务的传输。例如,rdma中的情况就是这样,其中,发送方可以执行一系列写入操作,每个操作都可以被视为事务(也称为“消息”)。
102.在许多情况下,第二网络设备800在接收到事务i

1的所有数据包之前不能处理事务i的第一数据包。这是因为在这些情况下,所有先前的事务都必须成功完成,然后才能开始下一个事务。此外,有时接收方将不得不丢弃在事务i

1的任何数据包之前接收到的事务
i的所有数据包。这可能会导致严重的数据包丢失,因为接收方必须丢弃好的数据包,类似于返回n。
103.在这些情况下,与远离事务的结束时相比,第一网络设备700在接近事务的结束时意识到丢失的数据包可能是有益的。这是因为当第一网络设备700接近事务的结束时,丢失的数据包701可能会延迟事务完成时间。
104.根据所公开实施例的一方面,所述参数集可以包括第一接近度参数,所述第一接近度参数指示发送数据包701与事务的结束的接近度,其中,事务包括多个数据包。相应地,第一网络设备700可以用于,如果第一接近度参数指示数据包701在接近事务的结束时被发送,则提高发送轮询消息702的速率。
105.如本发明所提出,这种算法可以是,轮询速率将与在事务的结束之前剩余的数据包701的分数成反比。例如,第一网络设备700以等于(1

(n

i)/n)*α的概率发送轮询消息702,其中,α《1,以用于在由n个数据包701组成的事务中在i个数据包之后发送轮询消息。
106.此外,考虑发送数据包1
……
n的第一网络设备700,在某一时刻,第一网络设备700接收到数据包1至3和n的ack。此时,发送方等待数据包4
……n–
1的ack,但“发送方窗口”包含数据包[4

n],即所有数据包701,从尚未接收到ack的最早数据包到最新数据包,无论是否接收到ack。在这种情况下,发送方(第一网络设备)窗口的宽度为n

3。
[0107]
这种发送方窗口的宽度经常用于流量控制和拥塞控制。在这些情况下,发送方的窗口宽度不允许大于某个阈值。例如,如果最大窗口宽度为n,则在上述场景下,允许发送方发送数据包n 1、n 2和n 3,但不允许发送任何额外的数据包。
[0108]
根据所公开实施例的一方面,所述参数集可以包括第二接近度参数,所述第二接近度参数指示发送数据包701与第一网络设备700的传输窗口的结束的接近度。相应地,第一网络设备700可以用于,如果第二接近度参数指示数据包701在接近传输窗口的结束时被发送,则提高发送轮询消息702的速率。
[0109]
针对第一网络设备700的窗口宽度的这种算法可以是,当第一网络设备700更接近其窗口的结束时,发送更多的轮询消息702。例如,第一网络设备700以等于(1

(n

i)/n)*α的概率发送轮询消息702,其中,α《1,以用于在最大宽度为n的窗口中在i个数据包之后发送轮询消息。
[0110]
在一个示例中,根据等式自适应更新发送轮询消息702的速率:p=max{α*(β/w)*(p*β),c},其中,p=丢包率,β=带宽延迟乘积,p*β=rtt期间丢失的数据包701的平均数,α=“攻击性”参数,w=(第一网络设备700的)发送方窗口的长度与(第二网络设备800的)接收方窗口的长度之间的最小值,c=每rtt的轮询消息702的最小数量(常数),即没有数据包丢失时的轮询速率,p=每rtt发送的轮询消息的数量。
[0111]
可以说明的是,在rtt期间发送的轮询消息702的数量p与在rtt期间丢失的数据包的预期数量成比例。比例常数等于α*r,其中,r是发送方在rtt期间可以发送的数据包的总数(即β)与发送方窗口的实际长度之间的比率。β是固定的数字,或者是根据拥塞控制信息动态变化的。
[0112]
当上述比率r小于1时,即使数据包701丢失,发送方窗口也足够长,以利用可用带宽,因此不能从窗口中删除。因此,不需要太频繁地发送轮询消息702。当比率r大于1时,发送方窗口与可用带宽相比较短。这意味着,如果丢失的数据包701没有尽早恢复,则第一网
络设备700将不得不停止发送新的数据包701,并且带宽将无法被高效利用。
[0113]
攻击性参数α通常在0.1到10之间,默认值为1。它的值取决于连接的重要性(根据最小化其延迟的期望),以及连接到结束的接近度。当连接更重要,当发送方接近应用层数据的结束(“文件的结束”)时,α的值增加到1以上,反之亦然。
[0114]
图8示出了所公开实施例的一方面提供的第二网络设备800。具体地,第二网络设备800用于从第一网络设备700接收数据包701。因此,第二网络设备800可以被称为“接收方”,第一网络设备700可以被称为“发送方”,特别是与前面图中所示的发送方和接收方相比。此外,第二网络设备800用于在以下条件中的一个或多个的情况下,向第一网络设备700发送至少一个ustat消息801:第二网络设备800识别出新的拥塞控制事件,第二网络设备800在确定的时间量内没有接收到轮询消息,第二网络设备800接收到事务的所有数据包。可能的是,网络设备700是图7中所示的第一网络设备。
[0115]
所公开实施例的各方面还提出使用ustat消息801将其它重要信息传递到第一网络设备700,并且不仅在检测到新的序列号间隙时,而且在以下事件中的至少一个中。
[0116]
当接收方希望通知第一网络设备700新的拥塞控制事件时,第二网络设备800可以决定向发送方(即第一网络设备700)发送ustat消息801。例如,如果第二网络设备800正确接收到数据包701,但该数据包指示沿路径的一个交换机拥塞。
[0117]
可能的是,根据所公开实施例的一方面,拥塞控制事件包括沿着第一网络设备700与第二网络设备800之间的传输路径的网络拥塞。
[0118]
当接收方在相当长的时间内没有接收到轮询消息702时,接收方(即第二网络设备800)可以发送ustat消息801,并告知第一网络设备700按序接收的数据包701的最大序列号。例如,第二网络设备800接收数据包1、2、3和5。cpm在接收到数据包5后,要求接收方发送ustat消息,通知发送方数据包4丢失。随后,如果第二网络设备800长时间(例如,超过超时时间)没有接收到轮询消息,则它发送ustat消息801,告知第一网络设备700按序接收的数据包701的最大序列号是3。
[0119]
可选地,如果第二网络设备800在确定的时间量内没有接收到轮询消息,则第二网络设备800用于在至少一个ustat消息801中包括按序接收的数据包的最大序列号。
[0120]
如前所述,在许多情况下,第一网络设备700的传输可以被视为一系列事务的传输。在这些情况下,第一网络设备700知道第二网络设备800已经接收到事务的所有数据包701是有益的。一个选项是在考虑的事务的最后一个数据包701之后发送轮询消息702,但该轮询消息702可能会丢失。因此,第二网络设备800可以在接收到事务的所有数据包701后发送ustat消息801。
[0121]
可选地,根据所公开实施例的一方面,第二网络设备800还可以用于,如果检测到没有接收到一个或多个数据包,则向第一网络设备700发送至少一个ustat消息801。需要说明的是,这是指发送ustat消息的传统方式。
[0122]
可选地,根据所公开实施例的一方面,如果第二网络设备800在确定的时间量内没有接收到轮询消息702,则第二网络设备800可以用于包括数据包接受信息,例如位图、表或任何其它方式,所述数据包接受信息可以指示在至少一个ustat消息801中已接收到的一个或多个数据包701和/或未接收到的一个或多个数据包701的状态。
[0123]
需要说明的是,对于轮询消息,在现有方案中,发送方以静态方式轮询对等端点。
该属性是由于现有方案应用于二层网络,在二层网络中,延迟是恒定的,数据包按序传送。
[0124]
所公开实施例的一方面提供了第一网络设备700根据系统行为自适应轮询对等端点的方案。需要说明的是,这种差异概括了协议,并使其适用于较大的网络,在这些网络中,延迟是可变的,数据包不一定按序传送。
[0125]
关于ustat消息,在现有方案中,接收方发送这些消息仅用于报告序列号中的新间隙或通知流控事件。根据本发明,ustat消息801也可以用于其它事件。
[0126]
在所公开实施例的一方面中描述的方法使用轮询消息702、stat和ustat消息801。或者,这些消息可以被附加到数据包701上,并且不必是单独的消息。此外,可以使用这些消息的子集,而不是使用所有三种类型的消息(例如,可以使用轮询消息702和stat消息,而不使用ustat消息801)。
[0127]
需要说明的是,流量是双向的,因此每个端点既是发送方,也是接收方。可能的是,图7所示的第一网络设备700在具体实现中可以是图8所示的第二网络设备800。
[0128]
图9示出了所公开实施例的一方面提供的方法900。在所公开实施例的特定方面中,方法900由图7所示的第一网络设备700执行。方法900包括:步骤901,向第二网络设备800发送数据包701;步骤902,向第二网络设备800发送轮询消息702;步骤903,响应于每个轮询消息702,从第二网络设备800接收至少一个状态消息703,所述至少一个状态消息703指示在所述轮询消息702之前发送的数据包701中的哪些数据包已经在所述第二网络设备800处被正确接收和/或已经丢失;其中,第一网络设备700用于基于参数集调整发送轮询消息702的速率。可能的是,第二网络设备800是图7或图8所示的第二网络设备。
[0129]
图10示出了所公开实施例的一方面提供的方法1000。在所公开实施例的特定方面中,方法1000由图8所示的第二网络设备800执行。方法1000包括:步骤1001,从第一网络设备700接收数据包701;步骤1002,在以下条件的一个或多个的情况下,向第一网络设备700发送至少一个ustat消息801:第二网络设备800识别出新的拥塞控制事件,第二网络设备800在确定的时间量内没有接收到轮询消息,第二网络设备800接收到事务的所有数据包。可能的是,第一网络设备700是图7或图8所示的第一网络设备。
[0130]
已经结合作为实例的各种实施例以及实现方式描述了本发明。但是,根据对附图、本发明和独立权利要求的研究,本领域技术人员在实践所要求保护的发明时,能够理解和实现其它变化。在权利要求书以及说明书中,词语“包括”不排除其它元件或步骤,且“一个”不排除多个。单个元件或其它单元可满足权利要求中描述的若干实体或项目的功能。在互不相同的从属权利要求中列举某些措施并不表示这些措施的组合不能被有效地使用。
[0131]
另外,所公开实施例的各方面提供的任一方法可以在具有编解码模块的计算机程序中实现,该计算机程序当由处理模块运行时,使处理模块执行方法步骤。计算机程序包括在计算机程序产品的计算机可读介质中。计算机可读介质基本上可以包括任何存储器,例如只读存储器(read-only memory,rom)、可编程只读存储器(programmable read-only memory,prom)、可擦除prom(erasable prom,eprom)、闪存、电可擦除eprom(electrically erasable prom,eeprom)或硬盘驱动器。
[0132]
此外,技术人员认识到,第一网络设备700和第二网络设备800的实施例分别包括用于执行方案的功能、模块、单元、元件等形式的必要通信能力。其它此类模块、单元、元件和功能的示例为:处理器、存储器、缓冲器、控制逻辑、编码器、解码器、速率匹配器、降速率
匹配器、映射单元、乘法器、决策单元、选择单元、交换机、交织器、解交织器、调制器、解调器、输入端、输出端、天线、放大器、接收单元、发送单元、dsp、格码调制(trellis-coded modulation,tcm)编码器、tcm解码器、电源单元、电源馈线、通信接口、通信协议等,它们适当地布置在一起以执行方案。
[0133]
具体地,第一网络设备700和第二网络设备800的一个或多个处理器可以包括例如中央处理单元(central processing unit,cpu)、处理单元、处理电路、处理器、专用集成电路(application specific integrated circuit,asic)、微处理器,或可以解释和执行指令的其它处理逻辑的一个或多个实例。表述“处理器”因此可表示包括多个处理电路的处理电路,所述多个处理电路例如以上列举项中的任何、一些或所有项。处理电路系统还可以执行用于输入、输出和处理数据的数据处理功能,数据处理功能包括数据缓冲和设备控制功能,例如呼叫处理控制、用户界面控制等。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献