使用传输超时的网络系统通信方法及通信装置与流程

文档序号:20838781发布日期:2020-05-22 17:13阅读:257来源:国知局
使用传输超时的网络系统通信方法及通信装置与流程

相关申请的交叉引用

本申请涉及2018年11月15日提交的美国专利申请no.16/191,536,其在此通过引用整体并入本文。

本发明涉及联网系统,并且特别但非排他地涉及联网系统中的传输超时问题,尤其涉及一种使用传输超时的网络系统通信方法及通信装置。



背景技术:

使用超时来通知发送者可能未接收到传输,以使发送者可以重新发射(显然)未接收到的传输的联网系统是本领域已知的。tcp/ip中的tcp协议是使用超时的系统的一个示例。在rfc1122中描述了tcp,而在rfc6298中描述了一种机制,该机制用于计算被认为适合于在tcp中使用的重传计时器的值。从概念上讲,确定用于重传计时器tcp的值旨在尽可能地最大化带宽并最小化延迟。如在rfc6298中所述,tcp重传计时器基于往返时间(rtt)。



技术实现要素:

本发明在其某些实施方式中寻求提供一种改进的联网系统,并且特别但非排他地涉及一种使用传输超时的改进的网络系统。

通常,在一些联网系统中,最大化带宽(给定的可用传输介质)和同时最小化延迟可能是期望的结果。

roce(融合以太网上的rdma)是联网系统的一个特定的非限制性示例,其中最大化带宽同时最小化延迟可能是期望的结果。在示例性实施方式中,本发明可以例如应用到:roce,其通过以太网提供远程直接存储器访问(rdma);或infinibandtmrdma。

一般而言,当分组由roce联网系统中的发射设备进行发射时,如下面更全面地描述的那样,使用计时器和无序nack分组来检测可能的丢失分组。给定的分组流中的重传通常使用“返回n”个分组的方法来处理。通过非限制性示例的方式,如果从接收设备接收到nack分组,nack分组指示未接收到分组m并且由发射设备发射的最后一个分组是分组m+n,则通常从分组m开始进行重传并且向前移动;这是“返回n个分组”。

除了上述的nack分组机制之外也可以使用的roce中的超时机制包含对给定流使用计时器;如果计时器超时并且尚未从接收设备接收到ack分组,则发射设备“假定”(在此基础上进行)未在接收设备进行接收。roce指定可能的超时值为4μs*2m,其中m为0到31之间的整数变量;m的值通常在软件中定义。实际上,这种超时通常约为1秒,尽管用于超时的实际值可能会有很大的变化,通常是取决于应用的变化。

本专利申请的指定发明人认为,在底层传输技术包括无损以太网(例如,在www.ieee802.org/1/pages/dcbridges.html中进行了描述)或infinibandtm(根据定义是无损的)的背景下,使用大约1秒的超时可能是适当的,其中分组丢失可能以10-15的速率发生(每1015个分组中丢失1个分组),因为分组丢失非常少见。这种超时对于发现连接完全丢失也很有用。然而,在分组丢失更频繁地发生的背景下,如此长的超时可能是不合适且非最优的,至少是因为在发生超时之前可能会发送许多附加的分组。

如上所解释的,最大化带宽(给定的可用传输介质)并且同时最小化延迟可能是期望的结果。为了实现这样的目标,为超时找到良好的、接近最优的或最优的值可能是适当的。诸如rfc6298中描述的方法之类的在tcp中使用的已知方法可能不适合在roce中使用,因为通常rtt在roce中不是已知值。这是因为,通常对于rdma读取响应来说没有ack。与tcp相比,ib/roce规范也不要求rtt。因此,在roce中,rtt通常不被用于优化超时计时器的值。

应当理解,通常有损网络和无损网络之间的另一个区别是拥塞的影响。在有损网络中,通常是由于大量突发流所导致的不受约束的(不受控制的)拥塞可能导致分组丢失,而在无损网络中,不受约束的拥塞导致拥塞向后扩散到流源。尽管有损网络会经历更高的分组丢失率,但无损网络可能会产生巨大的流量阻塞,从而导致需要非常长的超时——几秒钟左右。

因此,根据本发明的示例性实施方式,提供了一种方法,该方法包括:提供具有发送设备、接收设备和通信介质的硬件实现的联网系统,提供用于传输超时的初始值,并将用于传输超时的当前值设置为所述初始值,经由所述通信介质从所述发送设备向所述接收设备发送与给定队列相关联的一个或多个分组,将与所述给定队列相关联的分组传输超时计时器设置为所述用于传输超时的当前值;和当与所述给定队列相关联的分组传输超时计时器期满时,执行以下操作:a.确定所述接收设备是否已经成功接收到一个或多个分组;和执行以下步骤b和步骤c中的一个或两个:b.如果所述接收设备已经成功接收到一个或多个分组,则减小所述用于传输超时的当前值;和c.如果所述接收设备没有成功接收到任何分组,则增大所述用于传输超时的当前值。

进一步根据本发明的示例性实施方式,该方法包括执行步骤b和步骤c。

仍然根据本发明的示例性实施方式,步骤a还包括经由所述通信介质将至少一个先前发送的分组从所述发送设备重新发送到所述接收设备。

另外,根据本发明的示例性实施方式,该方法还包括维持指示所述用于传输超时的当前值的状态的状态指示,所述状态指示包括所述用于传输超时的当前值是已经增大还是减小的指示;并且其中所述增大所述用于传输超时的当前值包括至少部分地基于所述状态指示有条件地增大所述用于传输超时的当前值,并且其中所述减小所述用于传输超时的当前值包括至少部分地基于所述状态指示有条件地减小所述用于传输超时的当前值。

此外,根据本发明的示例性实施方式,该方法还包括:维持分组传输计时器计数器的次数,该次数为分组传输计时器已期满的次数,并且其中步骤a还包括:至少部分地基于所述分组传输计时器计数器的值,经由所述通信介质有条件地将至少一个先前发送的分组从所述发送设备重新发送到所述接收设备。

进一步根据本发明的示例性实施方式,该方法还包括迭代地执行所述发送、设置以及在期满时的步骤。

仍进一步根据本发明的示例性实施方式,所述增大所述用于传输超时的当前值包括将所述用于传输超时的当前值增大2倍。

另外,根据本发明的示例性实施方式,所述减小所述用于传输超时的当前值包括将所述用于传输超时的当前值减小2倍。

此外,根据本发明的示例性实施方式,该方法还包括提供用于传输超时的最小值和最大值,并且其中所述用于传输超时的当前值具有从所述用于传输超时的最小值到所述用于传输超时的最大值的范围。

根据本发明的另一示例性实施方式,还提供了一种装置,该装置包括具有发送设备、接收设备和通信介质的硬件实现的联网系统,其中所述发送设备包括被配置为确定和修改传输超时值的传输超时计算单元,所述传输超时计算单元还被配置为确定用于传输超时的初始值并且将用于传输超时的当前值设置为所述初始值,所述发送设备被配置为经由所述通信介质向所述接收设备发送一个或多个分组,所述一个或多个分组中的每一个与给定队列相关联,以将与所述给定队列相关联的分组传输超时计时器设置为所述用于传输超时的当前值,并且当与所述给定队列相关联的分组传输超时计时器期满时,执行以下操作:a.至少部分地基于所述给定分组标识符的值,确定所述接收设备是否已成功接收一个或多个分组;和执行以下步骤b和步骤c中的一个或两个:b.如果所述接收设备已经成功接收到一个或多个分组,则所述传输超时计算单元减小所述用于传输超时的当前值;和c.如果所述接收设备没有成功接收任何分组,则所述传输超时计算单元增大所述用于传输超时的当前值。

进一步根据本发明的示例性实施方式,所述发送设备被配置为执行步骤b和步骤c两者。

仍进一步根据本发明的示例性实施方式,所述发送设备还被配置为执行以下步骤作为执行a的一部分:经由所述通信介质将至少一个先前发送的分组从所述发送设备重新发送到所述接收设备。

另外,根据本发明的示例性实施方式,所述传输超时计算单元还被配置为维持指示所述用于传输超时的当前值的状态的状态指示,所述状态指示包括所述用于传输超时的当前值是已经增大还是减小的指示;并且所述发送设备还被配置为基于所述状态指示有条件地增大所述用于传输超时的当前值;并且所述发送设备还被配置为基于所述状态指示有条件地减小所述用于传输超时的当前值。

此外,根据本发明的示例性实施方式,所述发送设备还被配置为:维持分组传输计时器计数器的次数,该次数为分组传输计时器已期满的次数,所述发送设备还被配置为执行以下操作作为执行a的一部分:至少部分地基于所述分组传输计时器计数器的值,经由所述通信介质有条件地将至少一个先前发送的分组从所述发送设备重新发送到所述接收设备。

此外,根据本发明的示例性实施方式,所述装置被配置为迭代地:发送一个或多个分组;设置所述分组传输超时计时器;并且在所述期满时执行步骤a以及步骤b和步骤c中的一个或两个。

更进一步,根据本发明的示例性实施方式,当所述用于传输超时的当前值增大时,所述用于传输超时的当前值被增大2倍。

另外,根据本发明的示例性实施方式,当所述用于传输超时的当前值减小时,所述用于传输超时的当前值被减小2倍。

此外,根据本发明的示例性实施方式,所述用于传输超时的当前值具有从用于传输超时的最小值到用于传输超时的最大值的范围。

附图说明

结合附图从下面的详细描述中将更全面地理解和领会本发明,其中:

图1是描绘了联网系统中的往返时间(rtt)的简化插图图示;

图2是描绘了联网系统中的超时的简化插图图示;

图3是描述了联网系统中的无序nack简化插图图示;

图4是根据本发明的示例性实施方式构造和操作的示例性联网系统的简化框图图示;

图5是描绘了图4的系统的示例性操作方法的简化流程图图示;

图6是描绘了图4的系统的另一示例性操作方法的简化流程图图示;和

图7是描绘了图4的系统的示例性操作方法的另一简化流程图图示。

具体实施方式

现在参考图1,图1是描绘了联网系统中的往返时间(rtt)的简化插图图示。在图1中示出了一般被指示为100的联网系统。通过示例的方式,在图1中描绘了从发送设备向接收设备(图1中均未示出)发送请求(“请求1”),以及确认(“ack1”)的发回。在发送设备处,发送“请求1”和接收“ack1”之间的时间确定了往返时间(“往返时间”)rtt。如上所解释的,尽管在一些系统(诸如,例如tcp)中rtt是已知值,但是在其他系统(诸如,例如roce)中rtt不是已知值,如上所解释的。

现在参考图2,图2是描绘了联网系统中的超时的简化插图图示。在图2中示出了一般被指示为200的联网系统。通过示例的方式,在图2中描绘了从发送设备向接收设备(在图2中均未示出)发送请求(“请求1”)。发送设备未从接收设备接收确认(“ack1”)。例如,未收到确认的原因可能是由于未收到请求(因此请求可能已丢失)、由于接收设备发生了一些故障、由于发送设备与接收设备之间的通信出现了故障等等。为了防止其中通信“掉线”的情况,发送设备设置超时(“time-out”),也称为计时器;当计时器期满但未收到适当的ack时,将重新发送计时器与之关联的请求(“重新发送请求1”)。

尽管在图2中描绘了其中计时器与单个请求相关联的相对简单的情况,但是本领域技术人员将理解,可以与单个计时器相关联地发送超过一个请求;如果针对那些超过一个请求中的任何一个请求接收到ack,则在计时器期满后通常会重新发送所有这样的请求。在本发明的某些实施方式中,如本文中所述,计时器与队列相关联而不是与单个请求相关联。

现在参考图3,图3是描绘了联网系统中的无序nack的是简化插图图示。在图3中示出了一般被指示为300的联网系统。通过示例的方式,在图3中描绘了从发送设备向接收设备(在图3中均未显示)发送第一请求(“请求1”)和第二请求(“请求2”)。通过非限制性示例,图3描绘了其中接收设备未接收到第一请求的情况。在一些时刻,接收设备将未确认第一请求的指示(“无序nack”)发送回发送设备;在图3的特定示例中,nack与第一请求相关联。本领域技术人员将理解,因为第二请求被接收设备接收到,但是第一请求未被接收设备接收,所以接收设备可以确定未接收到请求,因为(在领域中通常已知)每个请求都包括请求号或序列号。在这种情况下,通常在接收到nack之后,可以将第一请求从发送设备重新发送到接收设备,或者可以将从第一请求开始的所有请求从发送设备重新发送到接收设备。

现在参考图4,图4是根据本发明的示例性实施方式构造和操作的示例性联网系统的简化框图图示。

图4的系统包括发送设备410和接收设备420。发送设备包括传输超时计算单元430。发送设备410和接收设备420经由通信介质440可操作地通信。

发送设备410可以包括被配置为在通信介质440上发送(并且通常还接收)消息(消息通常包括诸如多个分组450之类的分组)的任何适当的设备。

在图4的特定示例中,将分组从发送设备410发送到接收设备420。接收设备420可以包括被配置为通过通信介质440接收(并且通常还发送)消息的任何适当的设备。

通信介质440可以包括任何适当的通信介质,通常是被配置为将分组从一个或多个发送器传送到一个或多个接收器的联网介质。在一个特定的非限制性示例中,通信介质440可以包括infinibandtm通信介质,其中发送设备410和接收设备420被配置为经由infinibandtm通信;在更具体的非限制性示例中,通信可以包括roce通信,如上所述。在不限制前述内容的一般性的情况下,可能适合于促进在通信介质440上的所描述和图示的通信的可商购的联网设备的某些非限制性示例包括从mellanox技术有限公司可商购的以下所有产品:connectx-4;connectx-5;connectx-6;和bluefieldtm

在图4中所示的特定示例中,多个分组450包括n个分组,在图4中通过示例的方式被示出为包括从1到n(包括1和n)编号的分组。

现在另外参考图5,图5是描绘了图4系统的示例性操作方法的简化流程图图示。在图5的特定示例中,系统(诸如,通过非限制性示例的方式,图4的系统)从一些初始状态开始(步骤510),其中超时计时器具有一些初始值。

基于roce的以上讨论,本领域技术人员将理解,在其中网络介质440促进roce通信的特定的非限制性示例中,用于超时计时器的初始值具有4μs*2m的形式,其中m是范围从0到31的整数变量。通过一个特定的非限制性示例的方式,m可以具有大约18的初始值,以使用于超时计时器的初始值将大约为1秒;然而,也可以对m使用明显更大或更小的值,并且通常在任何给定的实现中都可以基于实现具体的考虑来选择m。

从图5的步骤510转换时,发生超时。在步骤520中,进行测试(通常由上述传输超时计算单元430进行该测试;步骤530和步骤540通常也由上述传输超时计算单元430来执行)以确定是否在发射多个分组450方面已有进展。换句话说,如果在发送设备410处从接收设备420接收的ack和nack消息指示一些分组(在某些实现中是多个连续分组,诸如,通过非限制性示例的方式,是分组2至分组4(包括分组2至分组4)已经在接收设备420处被成功接收,则已有进展;否则没有进展。

通过非限制性示例的方式,在某些实施方式中,当接收到成功的ack或读取响应时,将与正在被发送的分组队列相关联的位被设置为1;通过非限制性示例的方式,该位可以由硬件来设置。在这种实施方式中,当开始或重新开始传输时(例如在超时之后),该位被重置为0;通过非限制性示例的方式,该位可以由固件来重置。本领域技术人员将理解,在随后的超时中,检查该位将指示自从上次超时以来是否发生了任何成功的传输。

如果在步骤520已有进展,则图5的方法在步骤530处继续。在步骤530,发生了未确认分组的适当重传,并且超时计时器被减小(“递减”)。在如上所述的roce的特定情况下,m可以减1;将m减小较大的整数也是可能的。然后,通过返回到步骤510继续图5的方法,其中当前状态被认为是新的初始状态。

如果在步骤520没有进展,则图5的方法在步骤540继续。在步骤540,发生未确认分组的适当重传,并且超时计时器增大(“递增”)。在如上所述的roce的特定情况下,m可以加1;m被增大一个较大的整数也是可能的。然后,通过返回到步骤510继续图5的方法,其中当前状态被认为是新的初始状态。

鉴于以上讨论,应当理解,图5的方法可以提供对图4的系统的操作的改进,其中可以达成可以是良好、接近最优或最优的超时值;这是因为当在发送分组方面取得进展时,超时被缩短了,而当没有进展时,超时被延长了。本领域技术人员将理解,在没有rtt可用的情况下实现了这种良好、接近最优或最优的值(与tcp不同)。超时值的这种改进/优化通常带来了带宽最大化和延迟最小化,从而提供了图4系统的改进操作。

现在另外参考图6,图6描绘了图4系统的另一示例性操作方法的简化流程图图示。

与在图5所描绘的上述方法相比,在图6的方法中,图4的系统可以处于以下两种状态之一:第一状态(“状态0”),其中超时计时器一直在下降,和第二个状态(“状态1”),其中超时计时器一直在上升。尽管在图6图示和下面描述的方法中,系统从状态0开始,但是本领域技术人员将认识到,系统可以经适当修改后替代地从状态1开始。通常,图6的步骤在上述传输超时计算单元430中发生。

在步骤610,系统处于状态0,计时器下降。当发生超时的时候,图6的方法转移到步骤620,其中进行测试以确定在发射多个分组450方面是否已有进展。步骤620的操作可以与如上所述的步骤520的操作相似。

如果每个步骤620都有进展,则图6的方法在步骤630继续。步骤630的操作可以类似于如上所述的步骤530的操作。然后,图6的方法继续到步骤610。

如果每个步骤620没有进展,则图6的方法在步骤640继续。在步骤640,发生未确认分组的适当重传。超时计时器的值在步骤640中没有改变,并且图6的方法然后在步骤650在状态1“计时器上升”中继续。

当从步骤650发生超时的时候,图6的方法转换到步骤660,在步骤660中进行测试以确定在发射多个分组450方面是否已有进展。步骤660的操作可以类似于如上所述的步骤520和步骤620的操作。

如果每个步骤660都有进展,则图6的方法继续步骤670。步骤670的操作可以类似于上述步骤640的操作。在步骤670之后,图6的方法然后继续步骤601。

如果每个步骤660没有进展,则图6的方法继续步骤680。步骤680的操作可以类似于上述步骤540的操作。在步骤680之后,图6的方法然后继续步骤650。

鉴于以上讨论,应当理解,图6的方法可以提供对图4系统的操作的改进,其中可以达成可以是良好、接近最优或最优的超时值;这是因为当在发射分组方面取得进展时,超时被缩短了,而当没有进展时,超时被延长了。本领域技术人员应当理解,在没有rtt可用的情况下实现了这种良好、接近最优或最优的值(与tcp不同)。超时值的这种改进/优化通常带来了带宽最大化和延迟最小化,从而提供了对图4系统的改进操作。

与图5的方法相比,图6的方法可以在抖动较小的情况下获得良好的、接近最优的或最优的超时值,因为在一些情况下,图5的方法可能会引入抖动,(通过非限制性示例的方式)使超时变短、变长、然后再次变短。

现在参考图7,图7是描绘了图4系统的示例性操作方法的另一简化流程图图示。

鉴于以上讨论,图7的方法将在很大程度上是不言自明的,其可以包括通常由发送设备410执行的以下步骤(除了下面更特别地具体说明的以外):

在步骤710中,提供了一种具有发送设备、接收设备和通信介质的硬件实现的联网系统。

在步骤720中,提供了用于传输超时的初始值,并且将用于传输超时的当前值设置为该初始值。

在步骤730中,与给定队列相关联的一个或多个分组经由通信介质从发送设备被发送到接收设备。

在步骤740中,设置与在其中发送分组的给定队列相关联的分组传输计时器;传输计时器具有用于传输超时的当前值的值。当与给定队列相关联的传输计时器期满时:

a.确定接收设备是否已经成功接收到一个或多个分组;上面描述了做出这种确定的方法。然后,执行b和c中的一个或两个(通常由上述的传输超时计算单元430来执行):

b.如果接收设备成功接收到一个或多个分组,则减小发送超时的当前值。

c.如果接收设备未成功接收任何分组,则增大传输超时的当前值。

可以理解,一般来说,在步骤740期间或在步骤740之后,通常重新发射没有成功接收的分组。

还应当理解,在图5-图7的方法中,在对用于超时传输的值已经进行了一定数量的改变之后,可能是网络连接永久不可用,或者长时间不可用。在这种情况下,可以通知系统管理员或用户。例如,对于与系统相关的某个值n,如果total_time_without_forward_progress>n*m,则可能会发生这种通知。

可以理解,如果需要,本发明的软件组件可以以rom(只读存储器)的形式实现。如果需要,通常可以使用常规技术在硬件中实现软件组件。还应当理解,软件组件可以例如作为计算机程序产品或在有形介质上被实例化。在一些情况下,可以将软件组件实例化为可由适当的计算机解释的信号,尽管在本发明的某些实施方式中可以排除这种实例化。

应当理解,为清楚起见,在分开的实施方式的背景中描述的本发明的各种特征也可以在单个实施方式中被组合提供。相反,为简洁起见,在单个实施方式的背景中描述的本发明的各种特征也可以单独地或以任何合适的子组合来提供。

本领域技术人员将认识到,本发明不限于上文已经特定示出和描述的内容。相反,本发明的范围由所附权利要求书及其等同物限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1