买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】使用故意延迟发送的网络超时_谷歌有限责任公司_201580024137.3 

申请/专利权人:谷歌有限责任公司

申请日:2015-05-07

公开(公告)日:2020-03-31

公开(公告)号:CN106462474B

主分类号:G06F9/54(20060101)

分类号:G06F9/54(20060101)

优先权:["20140508 US 61/990,378","20140602 US 14/293,438"]

专利状态码:有效-授权

法律状态:2020.03.31#授权;2018.03.13#著录事项变更;2017.03.22#实质审查的生效;2017.02.22#公开

摘要:提供了一种用于通过利用向网络控制器140内部发送故意延迟的信息发送而生成网络超时的系统和方法。例如,根据这一系统和方法,网络控制器140在网络510上向外部发送数据消息并且数据消息激发响应网络消息。网络控制器140还发送与数据消息对应的超时消息;然而,超时消息在被内部发送之前被故意延迟预定的持续时间520。控制器主机设备接收响应消息和超时消息的至少一个并且确定哪个是最先被接收到的。如果超时消息被接收到540,则与发送的数据消息关联的请求被认为已超时550。

主权项:1.一种用于发送数据的方法,包含:由一个或多个计算设备通过网络向外部发送一个或多个数据消息,所述一个或多个数据消息与请求关联并且激发响应消息;由所述一个或多个计算设备在内部发送来自所述一个或多个计算设备的发送队列的超时消息,所述超时消息与所述一个或多个数据消息对应并且被故意延迟预定的持续时间;由所述一个或多个计算设备在所述一个或多个计算设备的接收队列中接收所述响应消息和所述超时消息中的至少一个;由所述一个或多个计算设备确定所述响应消息或所述超时消息中的至少一个的哪个被最先接收;以及当所述超时消息被最先接收时,由所述一个或多个计算设备将所述请求识别为已超时。

全文数据:使用故意延迟发送的网络超时[0001] 相关申请的交叉引用[0002] 本申请是2014年6月2日提交的美国专利申请第14293,438号的继续申请,美国专利申请第14293,438号要求了于2014年5月8日提交的美国临时专利申请第61990,378号的提交日的优先权,在此通过引用将该申请的公开内容并入。背景技术[0003] 计算机网络化和电信中,计算设备彼此发送消息并且经常在继续之前必须等待响应。为避免无限期地等待,该计算设备可以包括超时机制,当其被触发时,警告计算设备执行一些动作。例如,如果在超时期间未收到响应,则计算设备可以重发消息或关闭连接。超时的持续时间通常基于预计应有响应的时间量。[0004] 随着计算设备和网络化基础设施迅速增加,它们能够更高速地处理更多消息。因此,超时所需的持续时间已减少。这对于实现能有效、准确且可靠地设置和处理具有短持续时间的超时的网络超时机制广生了挑战。[0005] 传统的超时机制是基于实现于软件中的网络超时。一个示例是在数据结构中调度超时请求,每当发生内核时钟中断就检查超时请求。问题是内核时钟中断成本高并且可能不能足够频繁地发生以可靠地触发具有短持续时间的超时。其它超时机制利用软件中实现的忙循环。忙循环可以容纳具有较短时间持续的超时,但是它可能在所述延迟的持续时间内占用CPU线程,因而计算效率较差。发明内容[0006] 本公开涉及设置细粒度超时。例如,具有发送TX队列和接收RX队列的大集合的网络控制器可以被单独地指定给用户模式进程例如,使用现有SR-1OV硬件。用户模式或内核模式软件可以高效地轮询所述接收队列以检查传入的分组,并且可以以相对低的成本直接地将分组缓冲入队到任一种类型的队列。网络控制器还可以将分组从其TX队列中的一个高效地转移到其RX队列中的一个,而不浪费实际网络带宽如,支持“环回”。网络控制器可以将当前在TX队列头部的分组的发送延迟在该TX分组描述符中指定的间隔。例如,网络控制器可以具有能够提供微秒或更小量级的精度的内部时钟,因而可以将两个分组从TX队列中移出,并且以不短于第二个分组的分组描述符中指定的延迟来发送第二个分组。第一主机上的线程可以以零发送延迟向第二远程主机发送远程过程调用RPC消息,之后以例如137usec延迟向其自身发送短超时消息。如果第一主机首先接收到RPC响应,则该RPC被视为成功。然而,如果第一主机首先接收到其自身的超时消息,则它可以将该RPC视为已超时。[0007] 本公开的一方面提供了一种方法,包含由一个或多个处理器在网络上向外部发送数据消息,该数据消息激发响应消息,并且由一个或多个处理器在内部发送超时消息,该超时消息与数据消息对应并且故意地被延迟预定的持续时间。该方法进一步包含由一个或多个处理器接收响应消息和超时消息中的至少一个,并且由一个或多个处理器确定响应消息或超时消息中至少一个的哪个被最先接收。如果所述超时消息被最先接收,则该方法进一步包含将与数据消息关联的请求识别为已超时。[0008] 本公开的另一方面提供了一种系统,包含一个或多个处理器和与一个或多个处理器耦接的存储器。该存储器包括可由一个或多个处理器运行的指令,用以在网络上向外部发送数据消息,该数据消息激发响应消息,在内部发送超时消息,该超时消息与数据消息对应并且故意地延迟预定的持续时间,接收响应消息和超时消息的至少一者,确定响应消息或超时消息的至少一者的哪个被最先接收,并且如果超时消息被最先接收,则将与数据消息关联的请求识别为已超时。[0009] 本公开的又一方面提供了一种记录指令的非暂态计算机可读介质,当指令被一个或多个处理器运行时导致该一个或多个处理器执行方法。这种方法包含在网络上向外部发送数据消息,该数据消息激发响应消息,在内部发送超时消息,该超时消息与数据消息对应并且故意地延迟了预定的持续时间,接收响应消息和超时消息中的至少一个,确定响应消息或超时消息的至少一者中哪个被最先接收,并且如果超时消息本最先接收,则将与数据消息关联的请求识别为已超时。附图说明[0010]图1是根据本公开的方面的示例计算机系统的示意图。[0011]图2是根据本公开的方面的示例系统的图。[0012]图3A-D示出了根据本公开的方面的网络消息的示例流。[0013]图4A-D示出了根据本公开的方面的网络消息的另一示例流。[0014]图5是根据本公开的方面的实现网络超时的示例方法的框图。具体实施方式[0015] 本技术一般地涉及用于网络通信的超时机制。该机制可以通过利用在内部向网络接口控制器NIC发送的故意延迟的超时消息传输来触发超时。这可以允许,例如,计算设备利用底层网络硬件来监视流量消息并且在适当时生成超时。[0016] 该超时机制可以包括定制的超时分组customtimeoutpackets,其每一个与一个或多个传统数据分组如,RPC、HTTP对应。超时分组和数据分组一起在一个或多个发送队列上。每个超时分组可以与数据字段关联,该数据字段允许该机制将该分组的发送故意延迟预定的持续时间。一示例中,所述数据字段可以存储与延迟的持续时间关联的时间值。所述数据字段可以被包含在超时分组内如,头部字段或主体内或者可以与该分组分离,例如在该机制可访问的单独的数据结构中如,传输分组描述符。时间值可以具有次微秒分辨率并且是使用该机制生成的时基的绝对时间或相对时间如,相对于其入队的时间。[0017] 延迟的持续时间可以是可定制的并且可以非常接近于网络往返时间的长度或略微长于用于运行诸如RPC的远程交互的典型时间。当经过了延迟,NIC经其硬件环回功能向主机发送超时分组。如果超时分组先于对于相应的数据分组的响应到达,则与该数据分组关联的过程、任务、请求等被视为已超时。例如,主机可以停止等待对于该数据分组的响应,和或可以重新发送新的数据分组。另一方面,如果该响应在超时分组到达前到来,则没有超时,并且NIC可以在超时分组被发送之前中止它或者简单地当接收到超时分组时忽略它。[0018] NIC可以确定它是否应当以多种方式中的任意一种中止超时分组。例如,一个途径是将第二“门铃”与每个发送队列关联。门铃是IO地址空间的小区域,主机软件在其中写入值以告知NIC它已将N个条目添加到发送队列。一示例中,第二门铃将允许主机软件指令NIC从发送队列中移除最开始的N个条目,并且丢弃它们。这将允许主机中止一个或多个超时分组。根据另一示例,只有当最开始的N个条目携带延迟值,例如N=I时,第二门铃才将允许主机软件指令NIC移除它们。这将只从发送队列中删除超时分组而非常规分组。[0019] 一示例中,该技术可以包括具有用于处理网络分组如,RPC、HTTP的多个发送队列和接收队列的网络控制器。每个队列可以被单独地指定给内核模式或用户模式软件,其可以高效地轮询所述接收队列以检查传入的分组并且能够以相对低的计算和或时间成本将分组直接地入队到任意类型的队列。NIC可以将分组从其自身发送队列中的一个传输到其自身接收队列中的一个,而不使用实际网络带宽。NIC可以将当前在发送队列头部的超时分组的发送故意延迟在传输分组描述符如,延迟字段中指定的间隔。所述间隔定时可以利用NIC内部的时钟,该时钟与主机时钟同步并且提供微秒或更小量级的时间精度。当超时分组先于对应数据分组的响应被接收到时,NIC可以触发系统中断或设置标志以警告内核模式或用户模式软件已发生超时,以便主机可以相应地做出反应。[0020] 另一示例中,计算设备上的线程可能想要向远程计算设备发送RPC消息。该线程可以选择一一RPC消息应当在预定延迟值例如,137微秒后超时。该线程之后可以发送两个分组,第一分组可以是采用去往远程计算设备的TCPIP分组的形式的实际RPC消息并且零发送延迟。第二分组可以包括指示“你已超时”的短网络消息,并且可以根据用户数据报协议UDP而被格式化并且具有137微秒的发送延迟。[0021]图1示出了一个可能的系统100,其中这里所公开的方面可以被实现。系统100可以是包含通常存在于通用计算设备中的一个或多个处理器120、存储器130和其它组件的计算设备。尽管图1在功能上将处理器120和存储器130表示为系统100内的单一块系统100也被表示为单一±夬,但该系统可以包括并且这里所描述的方法可以涉及可以或不可以存放在同一物理外壳内的多个处理器、存储器和设备。[0022] 系统100的存储器130可以存储处理器120可访问的信息,包括可由处理器120运行的指令131。存储器130还可以包括数据135,其可由处理器120取回、操作或存储。存储器130和这里所描述的其它存储器可以是能够存储可被相关处理器访问的信息的任意类型的存储装置,诸如硬盘驱动器、固态驱动器、存储卡、RAM、DVD、可写存储器或只读存储器。此外,存储器可以包括分布式存储系统,其中诸如数据135的数据被存储在多个不同存储设备上,所述存储设备可以物理地位于相同或不同的地理位置。[0023] 指令131可以是由处理器120或其它计算设备运行的指令的任意集合。指令可被存储在用于立即由处理器处理的目标代码格式中,或者存储在包括脚本或独立源代码模块的集合的另一计算设备语言中,其按需解释或预先被编译。以下更具体地解释指令的功能、方法和例程。处理器120可以是任意传统的处理器,诸如市售CPU。替换地,处理器可以是诸如ASIC或其它基于硬件的处理器的专用组件。[0024] 计算设备100可以根据指令131取回、存储或修改数据135。数据可以包含足够识别相关信息的任意信息,诸如数字、描述性文本、专有代码、指针、对存储在诸如其它网络位置的其它存储器中的数据的引用,或由函数使用以计算相关数据的信息。[0025] 计算设备100可以是服务器计算设备106、客户端计算设备107、移动计算设备108或路由计算设备109。每个计算设备可以包括可用于通过网络125与其它计算设备通信的一个或多个控制器140。网络控制器140可以是与计算设备100耦接的单独的计算设备,诸如所图示的具有其自身的处理器160和存储器150的单独的计算模块如,PCIe卡、USB设备或子卡。替换地,网络控制器140可被集成到计算设备并且与诸如处理器120和存储器130的计算设备共享资源。[0026] 网络控制器140可以包括用于向网络通信信道提供物理接入的硬件和软件如,固件的组合。网络通信信道可以基于有线或无线连接。每个网络控制器可以包括一个或多个处理器160,其可包含专用集成电路ASIC、现场可编程门阵列FPGA、通用处理器或任何其它类型的处理器。处理器160可与存储器130耦接,存储器130能够存储计算机可读指令151和数据155。数据155可以包括用于存储网络数据如,网络消息的发送缓冲157和接收缓冲159。一示例中,网络控制器140可以是网络接口控制器NIC如,以太网、异步传输模式ATM、令牌环、光适配器如,光纤通道或无线网络适配器如,WiF1、蓝牙、LTE、GSM、CDMA或TDMA。[0027] 如图2所示,计算设备200可以包括具有用于与网络控制器140的硬件交互的设备驱动器210的操作系统或管理程序205。网络控制器140可以包括一个或多个发送缓冲157和一个或多个接收缓冲159。这些缓冲能够存储多个网络消息,诸如数据网络消息220、响应网络消息225和超时网络消息230。[0028] 缓冲157和159可以是数据结构,诸如队列、循环队列、链表、数组、堆和其它相似的存储网络消息同时保持顺序并且允许添加和移除条目的数据结构。每个缓冲如,队列可以包括多个槽slot240-242,每一槽能够存储一个或多个网络消息。一示例中,发送缓冲可以包括8个单独的优先队列,每一队列具有I,000或更多槽以存储网络消息。[0029] 网络消息如,220、225、230可以是能够或被配置为在网络通信信道上发送的任意消息。例如,网络消息可以是分组packet、帧、单元cell、数据段datasegment或数据报,并且可以准备在物理介质上发送或可以需要额外的预处理如,仍然需要目的MAC地址。网络消息可以被格式化以支持专有通信协议或工业标准协议如,IP、TCP、UDP。[0030] 数据网络消息220可以是一种类型的网络消息并且可以包括对于数据的请求。对于数据的请求当被远程计算设备接收到时可以激发响应网络消息225。响应网络消息225可以是包含与该原始数据网络消息中含有的所述请求对应的数据的一种类型的网络消息。一示例中,数据网络消息220可以是用作系统或进程之间的进程间通信的形式的网际协议IP分组如,远程过程调用RPC分组。这可由计算设备使用以与远程计算设备远程地交互。远程交互可以包括提供用于在远程计算设备上运行的指令和或参数,诸如远程方法调用如,JavaRM1、SOAP、ONC-RPC、XML-RPC。一旦指令如,数据请求已运行,结果数据就可以被包括在一个或多个响应网络消息中并且被发送回该原始计算设备。[0031] 超时消息230也可以是一种类型的网络消息,并且可以被用来指示所请求的过程、任务等已超时。一些示例中,超时消息230可被用来调度和触发网络超时。每个超时消息230可以与一个或多个数据网络分组220对应或者关联。每个超时消息230可以或者被配置为在网络125上被发送,但也可以保留在计算设备200内。例如,计算设备200可以经环回功能向其自身发送此超时消息230。[0032] 每个超时消息230还可以与预定的持续时间如,延迟值关联,该持续时间可由计算设备200使用以故意延迟超时消息230的发送。延迟值可以是大量时钟周期或按秒、毫秒、微秒、纳秒或更高分辨率量级的时间量。延迟值可以是相对值如,5微秒或50纳秒或者它可以是基于绝对起始点的绝对值如,未来时间。[0033] 延迟值如,预定的持续时间可以被定制并且可以非常近似于期望的网络超时的长度。一示例中,延迟值可以近似网络往返时间的长度。另一示例中,延迟值可以比运行诸如RPC的远程交互的典型持续时间略大。这可以考虑往返时间以及远程机器运行、分组打包和发送结果数据所需的持续时间。延迟值还可以根据通信协议动态地确定,例如超时时段可以基于RPC标准。[0034] 延迟值可被存储在系统如,网络控制器可访问的任意位置。一示例中,延迟值可被存储在超时消息230内,诸如存储在超时网络消息230的头部内或该网络消息的正文内的数据字段中。替换地,延迟值可被存储在与超时网络消息230对应或关联的网络消息外部的数据结构中。当外部数据结构被存储在任意缓冲如,发送缓冲157或接收缓冲159时,它可与超时网络消息230关联,或者,当外部数据结构在发送缓冲中时它可以只与该超时网络消息230关联并且可以在该超时消息被发送后被移除。一示例中,延迟值可以指示以微秒或纳秒测量的持续时间,并且可以被包括在消息描述符如,外部分组描述符中,当在发送队列中时,该消息描述符与超时网络消息230关联。[0035] 网络控制器140和设备驱动器210可以被配置为提供到缓冲157和159的内核模式软件和用户模式软件访问。这一访问包括轮询发送和接收缓冲以检查消息条目的状态、内容或关联的数据如,延迟值的能力,以及添加、移除或修改缓冲如,入队或出队中的条目的能力。例如,这可以通过使设备驱动器210暴露用于直接地操作缓冲的较低层的功能如,经API来进行。这还可以包括对在管理程序穿越hypervisorpass-through或管理程序绕过hypervisorby-pass的支持,如果可用的话。一示例中,这可以允许每个缓冲如,队列被独立地指定给用户模式或内核模式进程并且可被用户模式或内核模式进程访问。[0036]图3A-D示出了可以导致产生网络超时的发送缓冲157和接收缓冲159之间的网络消息的示例流。如图3A所示,设备驱动器210可以指示网络控制器140将数据网络消息320和对应的超时网络消息330入队。如所示,在该队列的头部有单一的数据网络消息320,其后跟着单一的超时网络消息330。当网络消息在该队列的头部时,它可以准备好被处理并且随后被发送。[0037] 发送可以在计算设备的外部,或者在计算设备的内部如,NIC140可以向其自身发送消息。图3A中,数据消息320在该队列的头部。如箭头370所示,数据消息320可在物理网络上向外发送。例如,消息可被从本地计算设备发送到远程计算设备。根据一示例,数据网络消息可被编码为电信号并且在有线连接如,经以太网线缆发送的以太帧上被发送。[0038]如图3B所示,在数据消息320被发送后,它从发送缓冲157上被移除并且超时消息330被移到缓冲157的头部。超时消息330由网络控制器140发送到网络控制器140如,在内部发送。超时网络消息330被故意延迟地发送,例如,网络控制器140可以等待或推迟网络消息的发送直到在发送消息前已经过延迟时段。[0039] 网络控制器140可以通过将延迟值和与网络消息关联的时间戳比较来确定已经过延迟时段。时间戳可以具有微秒或更小时间量的分辨率,并且可以指示网络消息被添加到缓冲如,被入队或被重新入队的瞬时时刻。时间戳可被网络控制器的处理器读取并且被与相关的延迟值比较以确定是否已经过该故意延迟。当经过该延迟时,网络控制器可以立即在内部发送消息或者可以将其标记为可用于随后当下层硬件有能力时在内部被发送。[0040] 如图3C所示,在内部发送延迟后,超时消息330在网络控制器140的接收缓冲159中被接收。在内部发送消息可以包括在不通过网络,或不向计算设备200和或网络控制器140外部发送的情况下发送消息。一示例中,网络控制器可被配置为具有纯硬件环回hardware-onlyloopbackpath路径,诸如箭头372所示。例如,纯硬件环回可以包括网络控制器处理器将网络消息330从发送缓冲157传输到接收缓冲159,其中这两个缓冲都被存储在网络控制器140的存储器150中。如果缓冲是队列,则这可以包括将网络消息从发送队列中移出并且将其入队到接收队列,而不向外部发送该消息。纯硬件环回可以不同于传统环回,因为传统环回只被实现于软件中,诸如操作系统的设备驱动器或网络堆栈,并且被设计为完全地绕过网络接口控制器。[0041] 如图3D所示,超时网络消息330先于响应网络消息325被接收。这一情况下,接收到的超时消息330指示请求或任务已超时。例如,计算设备200的软件可以将延迟的分组解释为超时。因而,计算设备200可以决定取消或停止等待对于请求或任务的响应。[0042] 一些示例中,网络控制器140可被设计为解释超时网络消息330的接收以生成或触发超时。超时可以表示已经过了预定的时间段而没有发生预期事件如,响应的接收。超时可以是超时信号或超时标志,其用来通知更高层软件一一网络超时已发生,从而,例如,更高层软件如,操作系统或管理程序可以采取行动以解决该问题如,重发网络消息。超时信号可以包括,例如,基于硬件的中断,其可以被设备驱动器检测或与设备驱动器接口以通知更高层软件发生了超时。超时还可以包括设置超时标志如,数据结构成员或字段,其可在轮询时被更高层软件检测到。图4A-D示出了发送缓冲157和接收缓冲159之间的网络消息流的另一示例。这一示例中,基于消息流,网络控制器140未将延迟的消息传递到计算设备200,因而计算设备200未判定所请求的过程已超时。还是这一示例所示,NIC发送多个数据消息和一个超时消息,其中一个超时消息与多个数据消息的每个对应。[0043] 如图4A所示,设备驱动器210可以指示网络控制器140将数据消息220和420加上超时消息430入队。超时消息与数据消息420和440两者对应,并且可以与诸如I秒的绝对延迟值关联。这一示例中,数据网络消息420在发送缓冲157的头部,其后跟着数据消息440和与数据消息420和440两者对应的超时消息430。数据消息420可以被发送到外部,如箭头470所示和以上关于图3A所讨论的。[0044] 移到图4B,数据消息440类似地被发送到外部,如箭头471所示。超时消息430可被故意延迟地发送,比如,故意延迟I秒。例如,超时消息将留在发送缓冲157中直到故意延迟时段已期满。如图4C所示,响应网络消息425和445可以在故意延迟的期满之前一一如,当超时网络消息430仍在发送缓冲157中时——在接收缓冲159中被接收。如果对于与超时消息430关联的数据消息420、440的响应425、445已到达,那么超时消息430可以不再是必要的。相应地,例如,计算设备200软件当接收到响应425、445时,意识到超时消息430不再是必要的。如此,当超时消息430到达时,该软件可以忽略它。替换地,该软件可以在发送之前中止超时消息430,如,使用第二门铃。中止超时消息430可以是有益的,因为其避免在等待将要发送的超时消息430时延迟后续的发送。[0045] 一些示例中,网络控制器140可被设计为识别何时超时消息430是不必要的。例如,网络控制器140可以在内部发送超时消息,但可以在接收缓冲159中接收到它时忽略它。另一示例中,网络控制器140可以在发送超时网络消息前将其移除,如480所示。这可以允许网络控制器避免浪费缓冲空间和计算容量computingpower。[0046] 如图4D所示,超时网络消息430可被从发送缓冲157中移除。该移除可以以多种方式实现,例如网络控制器140可以从发送缓冲删除该消息如,出队,或用缓冲中的另一消息盖写。另一示例中,可以将消息留在缓冲中,但可以修改消息描述符如,分组描述符,从而超时网络消息430被发送到空的目的地。[0047]尽管以上示例描述了超时消息仅与两个数据消息关联,但任意数目的数据消息都可以与一个超时消息一起发送。例如,一个超时消息可被用来对100,1000或更多数据消息设置细粒度超时。[0048]除了图2-4所示的操作,现在还将描述根据本发明的多个方面的各种操作。应当理解,以下操作不必按下述准确的顺序执行。而是,各种步骤可以按相反的顺序或同时地被处理。[0049] 图5提供了示出方法500的示例流图。例如,方法500可由主机设备的软件、网络控制器140或其一些组合来运行。以下参考图1-4的系统描述方法500。然而,应当理解,方法500可以实现在具有不同配置的多个系统中任意一个。还应当理解,以上方法中涉及的操作不需要按所述准确的顺序执行。而是,各种操作可按不同顺序或同时地处理,并且操作可以被添加或省略。[0050] 块510中,网络控制器140可以在网络通信信道上向外部发送一个或多个数据网络消息220。例如,计算设备200可以将一个或多个数据网络消息220和一个或多个对应的超时网络消息230添加到发送缓冲157。发送缓冲可被存储在网络控制器140的存储器150中,尽管其可被操作系统或管理程序访问,但只可以被网络控制器140的处理器160修改而不能被计算设备200的处理器120修改。替换地,发送缓冲157可以存储在存储器130如,主存储器中,并且可被处理器120和160访问。数据消息220的发送可以通过网络控制器140外部的有线或无线连接来进行。数据网络消息220可以包括对于数据的请求,其可以引发响应网络消息。[0051] 块520中,网络控制器140可以在故意延迟后在内部发送与一个或多个数据消息220对应的超时消息230。例如,网络控制器140可以经环回功能将超时消息230发送到计算设备200。一些示例中,网络控制器140可以检查与超时消息230关联的延迟值并且故意延迟发送直到已经过适当的持续时间。延迟期间,网络控制器可以执行其它功能,诸如发送其它网络消息。一旦已经过延迟,网络控制器140就可以在内部发送超时网络消息。[0052]如块530所示,响应于数据消息220,确定是否已接收到响应网络消息225。例如,数据消息220在RPC中时,可以确定是否已接收到一个或多个响应分组。例如,响应分组可被接收在计算设备200的接收缓冲159中。[0053] 如果接收到对于一个或多个数据消息220的响应,块535中忽略或中止相应的超时消息230。例如,网络控制器140可以从计算设备200软件接收第二门铃,其指示超时消息230应当被从发送缓冲157中移除。这可以减少缓冲上的数据量,并且减少与发送和分析关联的计算周期。作为另一示例,如果在对于一个或多个数据消息220的所有响应都被接收后才接收到对应的超时消息230,则计算设备200可被编程为忽略对应的超时消息230。[0054] 如果未接收到对于一个或多个数据消息220的响应,则块540中确定在经过了故意延迟后是否在内部接收到对应的超时网络消息230。如果超时消息230仍未被接收,则计算设备200可以等待块545并且继续寻找对于所发送的一个或多个数据消息220的响应。[0055] 块550中,如果确定已接收到超时消息230,则与一个或多个数据消息220关联的操作被视为已超时。例如,数据消息在RPC中并且超时消息先于对于RPC的响应被接收时,NIC将该RPC视为已超时。其它示例中,超时可以采用由网络控制器140发送给设备驱动器210的警报或中断的形式,其可以随后被发送到操作系统或管理程序205。[0056]上述系统、方法和示例是有益的,因为它们提供了设置细粒度超时以及精确地且以高效计算方式处理超时。如此,它们比现有网络超时机制更好地适应延时敏感的应用。这些系统和方法还可以通过检测更快地检测网络超时并且避免浪费时间来允许未来和现有的应用更快且更可靠地运行。[0057]由于以上讨论的这些和特性的其它变化及组合可在不脱离权利要求所限定的主题的情况下被使用,所以实施例前面的描述应当作为阐述而非作为限制权利要求所限定的主题。作为示例,前面的操作不必要按上述准确的顺序执行。而是,各种步骤可以不同顺序或同时地处理。除非另有所声明,步骤才可以被省略。并且,这里所述的示例的提供,以及用“诸如”、“包括”等措辞的从句,不应当被解释为将权利要求的主题限制在特定示例;而是,示例意图只阐述许多可能的实施例的一个。进一步,不同图中相同的附图标记可以示出相同或相似的元件。

权利要求:1.一种方法,包含:由一个或多个计算设备通过网络向外部发送一个或多个数据消息,所述一个或多个数据消息与请求关联并且激发响应消息;由所述一个或多个计算设备在内部发送超时消息,所述超时消息与所述一个或多个数据消息对应并且被故意延迟预定的持续时间;由所述一个或多个计算设备接收所述响应消息和所述超时消息中的至少一个;由所述一个或多个计算设备确定所述响应消息或所述超时消息中的至少一个的哪个被最先接收;以及如果所述超时消息被最先接收,则由所述一个或多个计算设备将所述请求识别为已超时。2.如权利要求1所述的方法,进一步包含:将所述数据消息和所述超时消息添加到网络控制器的发送队列;以及其中在内部发送超时消息包含将所述超时消息从发送队列中移出并且将所述超时消息入队到网络控制器的接收队列。3.如权利要求2所述的方法,进一步包含:当所述响应消息在所述超时消息的发送之前被接收时,将所述超时消息从发送队列中移出。4.如权利要求3所述的方法,进一步包含由一个或多个计算设备至少基于接收到的信号确定是否将所述超时消息从发送队列中移出,所述接收到的信号指令一个或多个计算设备将消息从发送队列的头部移出。5.如权利要求1所述的方法,其中在内部发送所述超时消息包含使用网络控制器的环回功能向主机设备发送所述超时消息。6.如权利要求1所述的方法,其中所述数据消息是被配置为远程过程调用的一个或多个IP分组,并且对于故意延迟的预定的持续时间长于运行远程过程调用的估计时间。7.如权利要求1所述的方法,其中对于故意延迟的预定的持续时间大于平均的网络消息往返时间。8.一种系统,包含:一个或多个处理器;以及与所述一个或多个处理器耦接的存储器,所述存储器包括可由一个或多个处理器运行以执行以下操作的指令:通过网络向外部发送数据消息,所述数据消息与请求关联并且激发响应消息;在内部发送超时消息,所述超时消息与所述数据消息关联并且在被内部发送之前被故意地延迟预定的持续时间;接收所述响应消息和所述超时消息中的至少一者;确定所述响应消息或所述超时消息中的至少一个的哪个被最先接收;以及如果所述超时消息被最先接收,则将所述请求识别为已超时。9.如权利要求8所述的系统,其中所述一个或多个处理器进一步被配置为:将所述数据消息和所述超时消息添加到网络控制器的发送队列;以及其中在内部发送所述超时消息包含将所述超时消息从发送队列中移出并且将所述超时消息入队到网络控制器的接收队列。10.如权利要求9所述的系统,其中所述一个或多个处理器进一步被配置为,当所述响应消息在发送所述超时消息之前被接收到时,将所述超时消息从发送队列中移出。11.如权利要求10所述的系统,其中所述一个或多个处理器进一步被配置为至少基于接收到的信号确定是否将所述超时消息从发送队列中移出,所述接收到的信号指令一个或多个处理器将消息从发送队列的头部移出。12.如权利要求8所述的系统,其中在内部发送超时消息包含使用网络控制器的环回功能向计算设备发送所述超时消息。13.如权利要求8所述的系统,其中所述数据消息是被配置为远程过程调用的一个或多个IP分组,并且对于故意延迟的预定的持续时间长于运行远程过程调用的估计时间。14.如权利要求8所述的系统,其中对于故意延迟的预定的持续时间大于平均的网络消息往返时间。15.—种非暂态计算机可读介质,其记录有指令,当指令被一个或多个处理器运行时,导致一个或多个处理器执行方法,包含:通过网络向外部发送数据消息,所述数据消息与请求关联并且激发响应消息;在内部发送超时消息,所述超时消息与所述数据消息对应并且在被内部发送之前被故意延迟预定的持续时间;接收所述响应消息和所述超时消息中的至少一个;确定响应消息或超时消息中的至少一个的哪个被最先接收;以及如果超时消息被最先接收,则将所述请求识别为已超时。16.如权利要求15所述的非暂态计算机可读介质,进一步包含:将数据消息和超时消息发送到网络控制器的发送队列;以及其中在内部发送超时消息包含将超时消息从发送队列中移出并且将超时消息入队到网络控制器的接收队列。17.如权利要求15所述的非暂态计算机可读介质,其中所述数据消息是被配置为远程过程调用的一个或多个IP分组,并且对于故意延迟的预定的持续时间长于运行远程过程调用的估计时间。18.如权利要求15所述的记录介质,其中对于故意延迟的预定的持续时间大于平均的网络消息往返时间。19.如权利要求16所述的非暂态计算机可读介质,进一步包含发送多个数据消息,所述多个数据消息的每个与超时消息对应。20.如权利要求15所述的非暂态计算机可读介质,进一步包含:当响应消息在超时消息的发送之前被接收时,将超时消息从发送队列中移出。

百度查询: 谷歌有限责任公司 使用故意延迟发送的网络超时

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。