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

可预测的虚拟化网络接口卡

文献发布时间:2023-06-19 09:26:02


可预测的虚拟化网络接口卡

相关申请

本申请要求2019年7月3日提交的题为“可预测的虚拟化网络接口卡”的美国临时专利申请No.62/870,331的优先权和权益,其全部内容通过引用结合于此以用于所有目的。

背景技术

在云计算环境中,单个宿主机或服务器可以在共享计算平台上托管多个虚拟机。在这种共享基础设施上,可以根据承租人和宿主机之间的服务级别协议或预置策略,将基础设施上可用的资源(例如,宿主机处理器周期,存储器以及发送和接收带宽)分配给用户,也称为承租人。当前的分配机制在许多情况下是不适当的或次优的,并且当前使用的虚拟化处理通常不允许资源的有效共享,因为宿主机通常缺乏对承租人应用的可见性并且通常可以通过过度供应来补偿。因此,需要一种在虚拟化计算环境中共享处理资源的改进方法,用于更有效地提供云计算资源。

发明内容

本技术的各方面涉及控制数据中心环境中的拥塞。至少一个方面涉及服务器。该服务器包括被配置为对多个虚拟机进行托管的处理器和入口引擎。入口引擎被配置为维护多个每虚拟机(每VM)队列,所述每虚拟机(每VM)队列被配置为存储与由处理器托管的多个虚拟机中的相应虚拟机相关联的接收到的数据包。处理器还被配置为执行CPU公平的公平排队处理,以控制所述处理器对所述每虚拟机队列中存储的所述数据包的处理。CPU公平的公平排队处理被配置为在每个虚拟机所需的程度上,确保用于处理在对应的每虚拟机队列中所存储的数据包的最小处理器周期分配。响应于检测到来自每虚拟机队列中的至少一个的丢包的阈值数量,向至少一个远程计算设备传输每秒数据包传输限制,所述至少一个远程计算设备向与经历所述丢包的每虚拟机队列相关联的虚拟机传输数据包。

在一些实施方式中,服务器包括网络接口卡,并且入口引擎在网络接口卡上执行。在一些实施方式中,在网络接口卡上维护每虚拟机队列。在一些实施方式中,处理器还被配置为向至少一个远程计算设备传输每秒比特传输限制,所述至少一个远程计算设备向由处理器托管的虚拟机中的至少一个传输数据包。

在一些实施方式中,服务器包括多核处理器,并且多核处理器的至少一个核专用于处理存储在每VM队列中的数据包。在一些实施方式中,处理存储在每VM队列中的数据包包括对数据包执行多个网络功能中的至少一个。网络功能可以包括物理地址转换,解密或防火墙处理。

在一些实施方式中,处理器被配置为将传输到至少一个远程计算设备的每秒数据包传输限制包括在相应的数据包确认消息中。在一些实施方式中,处理器被配置为将传输到至少一个远程计算设备的每秒数据包传输限制包括在相应的独立控制包中。

在一些实施方式中,用于第一虚拟机的至少一个最小处理器周期分配不同于用于第二虚拟机的最小数据包处理器周期分配。在一些实施方式中,响应于检测到与第一虚拟机相关联的空的每VM队列,将处理器配置为将分配给第一虚拟机的处理器周期分配的至少一部分重新分配给至少一个其他虚拟机。

至少一个方面涉及一种管理拥塞的方法。该方法包括提供包括处理器和入口引擎的服务器。处理器被配置为托管多个虚拟机。该方法包括由入口引擎维护多个每VM队列,所述每VM队列被配置为存储与由处理器托管的多个虚拟机中的相应虚拟机相关联的接收到的数据包。该方法还包括由处理器执行CPU公平的公平排队处理,以控制处理器对存储在每VM队列中的数据包的处理,其中CPU公平的公平排队处理被配置成在每个虚拟机所需的程度上,确保用于处理存储在对应的每VM队列中的数据包的最小处理器循环分配。该方法还包括响应于检测到来自每虚拟机队列中的至少一个的丢包的阈值数量,向至少一个远程计算设备传输每秒数据包传输限制,该远程计算设备向与经历丢包的每虚拟机队列相关联的虚拟机传输数据包。

在一些实施方式中,所述方法包括提供网络接口卡,其中在所述网络接口卡上执行所述入口引擎。在一些实施方式中,在网络接口卡上维护每虚拟机队列。

在一些实施方式中,所述方法还包括向至少一个远程计算设备传输每秒比特传输限制,所述至少一个远程计算设备向由所述处理器托管的虚拟机中的至少一个传输数据包。在一些实施方式中,服务器包括多核处理器,并且多核处理器的至少一个核专用于处理存储在每VM队列中的数据包。在一些实施方式中,处理存储在每VM队列中的数据包包括对数据包执行多个网络功能中的至少一个。网络功能可以包括物理地址转换,解密或防火墙处理。

在一些实施方式中,处理器被配置为将传输到至少一个远程计算设备的每秒数据包传输限制包括在相应的数据包确认消息中。在一些实施方式中,处理器被配置为将传输到至少一个远程计算设备的每秒数据包传输限制包括在相应的独立控制包中。在一些实施方式中,用于第一虚拟机的至少一个最小处理器周期分配不同于用于第二虚拟机的最小数据包处理器周期分配。

在一些实施方式中,该方法还包括响应于检测到与第一虚拟机相关联的空的每VM队列,将分配给第一虚拟机的处理器周期分配的至少一部分重新分配给至少一个其他虚拟机。

下面将详细讨论这些和其他方面以及实现。前述信息和以下详细描述包括各种方面和实现的说明性示例,并提供用于理解所要求保护的方面和实现的性质和特性的概述或框架。附图提供了对各个方面和实现的说明和进一步的理解,并且被结合在本说明书中并构成本说明书的一部分。

附图说明

附图不是按比例绘制的。在各个附图中相同的附图标记和标号表示相同的元件。为了清楚起见,在每个附图中不是每个部件都可以被标记。在附图中:

图1是根据一些实施方式的具有网络设备的网络环境的框图;

图2A是描述由示例网络设备关于接收到的数据包执行的示例处理步骤的示例框图;

图2B是描述由另一示例网络设备关于接收到的数据包执行的示例处理步骤的另一示例框图;

图3是示出根据说明性实现的用于管理到网络设备的数据传输的方法的流程图;和

图4是示出根据说明性实现的用于管理远程设备上的数据传输的方法的另一流程图。

具体实施方式

下面阐述的详细描述旨在作为主题技术的各种配置的描述,并且不旨在表示可以实践主题技术的唯一配置。附图结合于此并构成详细描述的一部分。详细描述可以包括用于提供对主题技术的彻底理解的特定细节。然而,主题技术不限于本文所述的具体细节,并且可以在没有这些具体细节的情况下实践。在一些实例中,以框图形式示出了结构和组件,以避免混淆本技术的概念。

本文描述的技术通常涉及一种管理包括虚拟化计算环境的网络中的拥塞的方法,网络例如是托管基于云的应用的数据中心网络。在数据网络中,数据包从源发送到目的地。拥塞可以采用不同的形式,特别是在云计算情境中,在云计算情境中,网络设备以虚拟机或容器化环境的形式处理与多个虚拟化计算设备相关联的流量。这里描述的拥塞涉及由源和目的地网络设备内的带宽约束引入的延迟、以及连接源和目的地设备的网络基础设施引入的延迟。例如,拥塞可能起因于由源节点处的传输队列中剩余的数据包引起的延迟,或者由数据包目的地处的入口引擎中能够处理接收到的数据包的延迟。这样的处理可以包括客户机到物理存储器地址的转换,解密,或在数据包被传送到实际的目的地计算环境之前对数据包执行的其他网络功能的执行,例如在目的地网络设备上执行的特定虚拟机或容器。特别地,在给定的网络设备可以托管多个计算环境的云计算环境中,因此与网络设备仅托管单独计算环境的计算环境相比,可以接收更多的网络流量,在数据中心环境中经历的更大百分比的拥塞是由于处理延迟而不是传输延迟所导致的。

当在网络设备处经由网络接口卡(NIC)接收到数据包时,数据包由NIC的入口引擎进行处理,该NIC通常包括入口引擎和出口引擎。入口引擎处理进的入数据包,而出口引擎处理传出的数据包。在NIC处接收到进入的数据包时,入口引擎被配置为将其分配给若干队列中的一个队列,以进行入口处理。对于这里描述的虚拟网络环境,队列被称为每虚拟机(每VM)队列。为每个虚拟机分配用于针对该虚拟机的数据包的队列。排队过程的特殊性部分地取决于已经在用户/承租人和宿主机/服务器之间确定的服务级别协议或预置策略。当分配处理资源(例如CPU时间或CPU周期)时,入口引擎可以与宿主机的处理器一起被配置为通过使用可用资源的每VM队列来控制拥塞。在一些实施方式中,处理器根据CPU公平排队处理来处理每VM队列中的数据包。

根据在此描述的各种实施方式,网络上的设备的入口引擎和出口引擎被配置为采用每秒比特速率控制算法与临时的每秒数据包速率控制算法的组合。当存在特定VM队列的队列溢出时,触发临时的每秒数据包速率控制算法。根据这里的各种实施方式,独立地实现两个拥塞控制算法。在一些实施方式中,每秒比特速率拥塞控制算法或处理总是(或基本上总是)运行。在这种情况下,为每个虚拟机设置每秒比特速率限制。在一些实施方式中,当入口引擎中存在过载时,例如,当网络或目的地设备拥塞时,每秒数据包速率拥塞控制算法或处理被开启。当过载发生时,每秒比特速率可能不再足以控制进入的网络流量,结果,在进入处理期间,一些数据包可能被丢弃。该过程可以在将数据包分配给每VM队列期间发生,例如,当数据包被分配给用于其VM的队列并且该队列已经满了并且不再接受任何附加数据包时发生。这种数据包将被丢弃,而不会被进一步处理到其预期的目的地VM。如本文所述的技术涉及通过触发每秒数据包速率拥塞控制算法或处理来补救上述问题。当一个或多个每VM队列不能再接受附加数据包时,生成通知或消息,并将其传输到正在向与溢出队列相关联的VM传输数据包流的源设备。该通知可以是包括在确认消息中的简单标志,或者是到正在过载特定溢出的每VM队列的特定源设备的独立消息,或者是到正在向目的地设备传输数据包的所有源设备的独立消息。根据本文所公开的各种实施方式,服务器的CPU可以进行检测每VM队列处的进入数据包的过载并通知源设备的过程。在一些实施方式中,可以在驻留在目的地设备的NIC中的处理器上实现检测。

图1是根据一些实施方式的具有网络设备110的网络环境100的框图。概括地说,所示网络环境100包括互连网络节点750的网络700。网络节点750作为数据源,数据目的地(或数据接收器)和/或中间节点(例如交换机,路由器和/或网关)参与网络700,该中间节点通过网络700从源向目的地传播数据。网络700包括网络设备110,网络设备110利用链路600到各种其他参与的网络节点750。

更详细地参考图1,网络700是促进参与者设备之间的交互的网络。说明性示例网络700是因特网;然而,在其他实施方式中,网络700可以是另一网络,诸如数据中心内的局域网,网络结构,或任何其他局域网或广域网。网络700可以由多个连接的子网络或自治网络组成。网络700可以是局域网(LAN),诸如公司内联网,城域网(MAN),广域网(WAN),诸如因特网的网际网络,或对等网络;例如,自组织WiFi对等网络。任何类型和/或形式的数据网络和/或通信网络可以用于网络700。它可以是公有的,私有的,或者是公有网络和私有网络的组合。通常,网络700用于在计算设备之间传送信息;例如,网络节点750和网络设备110。

如图1所示,网络设备110是在网络设备110的一个或多个CPU或多核处理器上执行一个或多个虚拟机150a,150b,150c(通常是虚拟机150)的宿主机设备或服务器。网络设备110包括网络接口驱动器120,存储器115,网络接口卡140,现实OS 220,虚拟机管理程序(hypervisor)130和虚拟机150。虚拟机管理程序130管理虚拟机150的操作,包括启动和终止虚拟机150,管理对虚拟机150的存储器115的分配,以及将虚拟机150迁移到其他网络设备。

网络设备110包括存储器115。在一些实施方式中,存储器115可以存储计算机可执行指令,用于在网络设备110的处理器上执行现实操作系统(OS)220和传输协议模块145(例如TCP协议模块或网络栈的TCP层)。在一些实施方式中,存储器115可以存储与网络接口驱动器120的操作和使用有关的计算机可执行指令。在一些其他实施方式中,存储器115可以存储用于在网络设备110的处理器上执行虚拟机管理程序130的计算机可执行指令。在一些其他实施方式中,存储器115可以存储用于在网络设备110上执行虚拟机150的计算机可执行指令。在一些其他实施方式中,存储器115可以存储用于转发到虚拟机150的数据、由虚拟机150处理的数据和/或从虚拟机150传输的数据。存储器115可以包括例如随机存取存储器(RAM),动态随机存取存储器(DRAM),静态随机存取存储器(SRAM),同步动态随机存取存储器(SDRAM),铁电随机存取存储器(FRAM),只读存储器(ROM),可编程只读存储器(PROM),可擦除可编程只读存储器(EPROM),电可擦除可编程只读存储器(EEPROM)和/或闪存。

网络接口驱动器120可以包括在现实OS上运行的网络接口驱动器软件模块。网络接口驱动器(例如网络接口驱动器120)可以是存储在存储器115中的计算机可执行指令的集合,当由处理器执行时,该指令有助于网络通信。在一些其他实施方式中,网络接口驱动器120可以实现为在硬件处理器或其他集成电路中实现的逻辑,或者实现为硬件和软件逻辑的组合。网络接口驱动器120可以经由虚拟机的客户机OS(或者在一些实施方式中,如果在虚拟机环境中操作,则经由虚拟机管理程序和客户机OS)与软件虚拟机150(或者在虚拟机150上执行的应用)之一通信。在一些实施方式中,网络接口驱动器120被包括在网络设备110的现实OS 220的传输控制协议(TCP)栈的第一层中,并且与包括在TCP栈的上层中的软件模块或应用进行通信。在一个示例中,网络接口驱动器120被包括在TCP栈的传输层中,并且与包括在TCP栈的应用层中的软件模块或应用进行通信。在另一示例中,网络接口驱动器120被包括在TCP栈的链路层中,并且与包括在TCP栈的因特网/传输层中的TCP/IP模块通信。在一些实施方式中,功能被附加地或替代地配置为从另一网络或传输层协议模块接收数据包,诸如用户数据报协议(UDP)模块,可靠数据报协议(RDP)模块,可靠用户数据报协议(RUDP)模块或数据报拥塞控制协议(DCCP)模块。在一些其他实施方式中,网络接口驱动器120可以被包括作为网络接口卡140的一部分。

网络接口卡140包括入口引擎142,出口引擎144和存储器146。入口引擎142和出口引擎144可以是网络接口卡140的一个或多个处理器的功能块,例如具有分立功能块的专用集成电路(ASIC)。在一些实施方式中,入口引擎142和出口引擎144可以是在网络接口卡140的一个或多个通用处理器上执行的软件的功能块。在一些实施方式中,入口引擎142和出口引擎144的功能可以被组合或进一步细分为不同的功能块。

存储器146可以存储由网络接口卡140执行的计算机可执行指令,例如与入口引擎142和出口引擎144的操作有关的指令。存储器146可以提供由网络接口卡140,虚拟机150和/或虚拟机管理程序130使用的高速缓存,缓冲器,转换表和/或时间索引数据结构,用于通过网络100发送和接收数据包。例如,存储器146可以为每个虚拟机150存储一个或多个接收队列和发送队列。在另一示例中,存储器146可以存储包含将与虚拟机150相关联的虚拟存储器地址转换到分别分配给虚拟机150的存储器115中的网络设备110的区域的物理存储器地址的表。存储器146可以包括例如随机存取存储器(RAM),动态随机存取存储器(DRAM),静态随机存取存储器(SRAM),同步动态随机存取存储器(SDRAM),铁电随机存取存储器(FRAM),只读存储器(ROM),可编程只读存储器(PROM),可擦除可编程只读存储器(EPROM),电可擦除可编程只读存储器(EEPROM)和/或闪存。

网络接口卡140的入口引擎142负责处理接收到的数据包。在一些实施方式中,入口引擎142可以管理在存储器146中维护的多个接收队列,用于存储接收到的数据包,直到这些数据包被网络接口驱动器120处理并被传递到目的地虚拟机150。在一些实施方式中,入口引擎142为每个虚拟机150维护单独的队列。在一些实施方式中,入口引擎142为标记有不同服务质量标志的数据包维护单独的队列。在一些实施方式中,入口引擎142执行接收到的数据包调度器,用于控制由网络接口驱动器120对相应队列中的数据包进行处理的定时。在一些实施方式中,这种调度功能被集成到网络接口驱动器120中。

出口引擎144管理由网络接口卡140从网络接口驱动器120接收的数据包的传输。这种数据包包括由执行虚拟机150的应用发送的传统数据包,以及控制数据包,例如被发送来确认数据包的接收的确认数据包,用于建立和拆除网络设备之间的通信会话的会话发起数据包和会话终止数据包。在一些实施方式中,出口引擎144在存储器146内维护多个发送队列。队列可以与单独的虚拟机150或服务质量标识符相关联,或者跨多个虚拟机150和/或服务质量标识符共享。出口引擎144还可以包括数据包构建器,其接受要由网络接口卡140发送的数据,将数据分解成多个数据包,并且在发送之前将任何必要的报头信息添加到数据包中。在一些实施方式中,这种数据包构建功能可以由网络接口驱动器120来实现,或者该功能可以在网络接口驱动器120和网络接口卡140之间被分开。

图2A是描述由示例网络设备110关于接收到的数据包182执行的示例处理步骤的示例框图180。图2A描述了由网络设备110的网络接口卡140直接执行的某些处理,以及由网络设备110本身的处理器(以及其上执行的软件)执行的处理。

如图2A所示,数据包182作为比特流181(使用光或电编码方案编码)被接收,比特流181被转换为接收到的数据包182。数据包由入口引擎142处理,并以各个队列183a,183b,183c(下文称为"队列183","每虚拟机队列183"或"每VM队列183")存储在网络接口卡140的存储器146中,队列183a,183b,183c与在网络设备110上执行的虚拟机150中的每一个相关联。如图2A所示,不同的虚拟机150可以以不同的速率接收数据包182,因此与相应虚拟机150相关联的队列183可以在其中存储不同数量的数据包。类似地,根据由网络接口驱动器120和/或入口引擎142实现的协议或策略,可以以不同的速率从相应的队列183中去除数据包,这可以导致存储在队列183中的数据包182的数量的进一步变化。CPU公平调度器(CPU-fair schedler)184控制从相应队列183处理数据包182的速率。CPU公平调度器184在图2A中被示为功能块(例如,被实现为在网络设备110的处理器185上执行的网络接口驱动器120的一部分)。然而,在其他实施方式中,CPU公平调度器184可以作为入口引擎142的一部分在网络接口卡140上实现。

在一些实施方式中,可以为每个虚拟机同等地设置数据包处理速率。在一些实施方式中,可以根据服务器/宿主机和用户/承租人之间的协议或策略来给予某些虚拟机150优先的数据包处理速率。在一些实施方式中,数据包处理速率是基于对每个虚拟机150的处理器周期分配而设置的,因为不同的数据包需要不同数量的处理器周期来处理。速率可以基于相对或绝对数据包处理分配来设置,例如,使用循环或其他调度算法。

在一些实施方式中,网络设备110或服务器还包括多核处理器,并且多核处理器的至少一个核专用于处理存储在队列183中的数据包。在一些实施方式中,当特定虚拟机150经历由于过载而导致的数据包丢失时,即,当进入的数据包超过预设数据包处理速率时,或者当达到阈值数量的数据包丢失时,网络设备110(例如,通过处理器和/或出口引擎)被配置为向被发送到特定虚拟机150的数据包的源发送已经达到每秒数据包传输限制的通知、消息或标志。在一些实施方式中,网络设备110被配置为将每秒数据包传输限制包括在相应的数据包确认消息中。在一些实施方式中,网络设备110被配置为将每秒数据包传输限制包括在相应的独立控制数据包中。

在一些实施方式中,用于第一虚拟机的至少一个最小处理器周期分配不同于用于第二虚拟机的最小数据包处理器周期分配。在一些实施方式中,CPU公平调度器184被配置为,响应于检测到与一个虚拟机150相关联的空队列183,将分配给一个虚拟机的处理器周期分配的至少一部分重新分配给至少一个其他虚拟机。

如图2A所示,处理器185被配置为执行附加的网络功能,包括解密功能186,地址转换功能187和防火墙功能188。取决于所涉及的通信的类型,不同的数据包可能需要应用这些网络功能中的不同功能。

如上所述,CPU公平调度器184基于处理数据包所需的处理器周期的数量和分配给相应虚拟机的处理器周期,经由CPU公平的公平队列处理来控制数据包182的出列和处理。结果,每个虚拟机每秒可能已经处理的数据包的数量可以基于将被应用于数据包的特定集合的网络功能而变化。因此,对于分配了相等共享的处理周期的两个虚拟机,以及所有其他事情是相等的,如果一个虚拟机需要对接收到的数据包进行解密,而另一个虚拟机不需要解密,则不需要解密的虚拟机可以具有比需要解密的虚拟机每秒处理的数据包更多的数据包。

图2B是描述由示例网络设备110关于接收到的数据包182执行的示例处理步骤的另一示例框图180。在图2B所示的实施方式中,存储每VM队列183a-183c的存储器146位于网络接口卡140的外部。存储器146可以是独立的存储器模块或主宿主机存储器115的一部分。因此,存储器146的容量和性能可以不同于图2A中所示的网络配置的存储器146,在图2A中,存储器146驻留在网络接口卡140中。由于图2B中所示的其他部件及其布置与图2A中所示的那些类似或基本类似,因此除非另有说明,否则将不对它们进行更详细的描述,并且可以参考图2A。

图3是示出根据说明性实施方式的用于管理到网络设备的数据传输的方法300的流程图。在一些实施方式中,方法300可以用于管理到类似于图2A或2B所示的网络设备的数据传输。为了说明的目的,这里参考这里描述的组件和/或过程来描述示例方法300的各个框。方法300的一个或多个框可以例如通过图1所示的网络设备110的一个或多个组件或处理器来实现。例如,方法300可以由网络设备110的网络接口驱动器120、入口引擎142和出口引擎144的某种组合来执行。在一些实施方式中,一个或多个框可以与其他框分开并且通过一个或多个不同的处理器或控制器来实现。此外,为了说明的目的,示例方法300的框被描述为串行地或线性地发生。然而,示例方法300的多个框可以并行发生。此外,不需要按照所示的顺序执行示例方法300的框,和/或不需要执行示例方法300的一个或多个框。

如图3的框310所示,方法300包括在图1所示的网络设备110上托管多个虚拟机。网络设备110或网络控制器向连接到多个虚拟机的远程设备发送每秒比特传输速率限制,将传输速率限制通知所连接的远程设备。方法300还包括实施每秒比特网络传输速率限制,如框320所示。可以为所有虚拟机设置每秒比特速率限制,或者可以基于与相应虚拟机相关联的服务级别协议为不同虚拟机改变每秒比特速率限制。在一些实施方式中,连接到虚拟机的远程设备在从网络设备110接收到速率限制的信息时执行每秒比特网络传输速率限制的实施。在一些实施方式中,每秒比特速率限制的可以由远程设备处的网络接口卡的出口引擎来实施。在一些实施方式中,入口引擎还可以通过丢弃接收到的数据包,而该数据包的传输超过每秒比特速率限制(例如,如果远程设备违反速率限制),来实施每秒比特速率限制。在一些实施方式中,每秒特定速率比特的网络传输速率限制取决于当前连接到特定虚拟机的连接的数量。例如,如果只有一个远程设备连接到虚拟机,则该远程设备可以使用高达每秒整个预置比特的传输速率限制。如果所连接的远程设备的数量增加到例如5,则每个远程设备的传输速率限制可以被降低到在服务级别协议中已经达成一致的每秒总比特传输速率限制的一部分。

在接收到进入的数据包时,基于数据包的目的地,入口引擎142将接收到的数据包排队到对应的每虚拟机(每VM)队列,如框330中所示。在框340,根据CPU公平的公平排队处理来处理排队的数据包。方法300还包括检测每VM队列中的数据包的溢出,如框350所示。如果没有检测到队列的溢出,则该方法包括继续以由远程设备和/或入口引擎实施的每秒比特传输速率限制或低于该每秒比特传输速率限制的速率接收进入的数据包。如果检测到队列的溢出,则该方法包括从每VM队列中的至少一个队列检测丢包的阈值数量。在一些实施方式中,丢包的阈值数量的范围可以是每秒、每百微秒、每十微秒或每微秒的预定数量的丢包。在一些实施方式中,丢包的阈值数量的范围可以是在1微秒,10微秒,100微秒,1秒,10秒,100秒等的周期内的预定数量的丢包。

响应于检测到每VM队列溢出超过溢出阈值,方法300包括触发临时的每秒数据包传输速率限制,如框360所示。在网络设备110向正在向虚拟机发送数据包的远程设备发送拥塞通知、消息或标志时,每秒数据包传输速率限制的触发发生,该虚拟机与经历丢包的过载的每VM队列相关联。拥塞通知可以包括例如在向虚拟机发送数据包时要求远程设备遵守的临时的每秒数据包传输速率限制。在此阶段,远程设备遵循每秒比特传输速率限制和每秒数据包传输速率限制;远程设备在两个限制下操作,直到临时的每秒数据包速率限制要求被提升。图4讨论了用于提升每秒数据包速率限制的各种方法。

图4是示出根据说明性实施方式的用于管理远程设备上的数据传输的方法400的另一流程图。特别地,图4的流程图示出了在远程设备的出口引擎上执行的方法400的处理流程。如图4的框410所示,方法400包括当向网络设备110上的虚拟机发送输出数据包时,在远程设备的出口引擎处实现每秒比特传输速率限制。在一些实施方式中,方法400包括接收拥塞通知,如框420所示。出口引擎使用每秒比特传输速率限制来发送数据包,直到它接收到拥塞通知。如果它没有接收到网络设备110的入口引擎处的队列之一溢出的拥塞通知,则出口引擎继续使用每秒比特传输速率限制来发送数据包,如框430所示。

当触发或接收到拥塞通知时,远程设备的出口引擎以每秒比特网络传输速率限制和每秒数据包网络传输速率限制两者来发送数据包,如框440所示。在一些实施方式中,通知包括每秒数据包速率限制数据值(例如,索引值),该数据值识别出要应用多个每秒数据包速率限制中的哪一个。在一些实施方式中,出口引擎被配置为具有默认的每秒数据包速率限制,以在接收到拥塞通知时进行应用。在一些实施方式中,出口引擎被配置为具有默认的每秒数据包速率限制,除非通知包括用于应用不同的每秒数据包速率限制的指令,否则出口引擎就会应用该默认的每秒数据包速率限制。在一些实施方式中,方法400确定每秒数据包速率限制是否可以结束,如框450所示。如果每秒数据包速率限制仍然被强加,则远程设备的出口引擎继续在两个速率限制下发送数据包。如果每秒数据包限制不再适用,则远程设备的出口引擎可以返回到仅在每秒比特传输速率限制下发送数据包。

在一些实施方式中,如果预定时间量(例如,系统配置的时限)已经过去,则可以结束强加每秒数据包速率限制。在一些实施方式中,在拥塞通知本身中指示时制。例如,拥塞通知可以包括在临时的每秒数据包传输速率限制下传输30毫秒的指令。在这种情况下,远程设备可以在每秒比特速率限制和每秒数据包速率限制下操作30毫秒,之后设备返回到仅在每秒比特传输速率限制下进行操作。在一些实施方式中,如果接收到不再应用每秒数据包传输速率限制的附件通知,则每秒数据包速率限制的强加结束。也就是说,远程设备可以在两个速率限制下进行操作,直到接收到以其他方式做的通知。

根据应用,可以通过各种方式来实现这里描述的方法。例如,这些方法可以用硬件,固件,软件或其任意组合来实现。对于硬件实现,处理单元可以在一个或多个专用集成电路(ASIC),数字信号处理器(DSP),数字信号处理设备(DSPD),可编程逻辑设备(PLD),现场可编程门阵列(FPGA),处理器,控制器,微控制器,微处理器,电子设备,设计成执行本文所述功能的其他电子单元,或其组合内实现。

在各种实施例中,本教导的方法可以被实现为固件和/或诸如C,C++,Python等常规编程语言编写的软件程序和应用。如果被实现为固件和/或软件,则可以在存储有用于使计算机执行上述方法的程序的非暂时性计算机可读介质上实现本文所述的实施例。

在本说明书中描述的主题和操作的实施方式可以在数字电子电路中实现,或者在包含在有形介质,固件或硬件上的计算机软件中实现,所述有形介质,固件或硬件包括在本说明书中公开的结构及其结构等价物,或者它们中的一个或多个的组合。本说明书中描述的主题的实施方式可以被实现为包含在有形介质上的一个或多个计算机程序,即计算机程序指令的一个或多个模块,其被编码在一个或多个计算机存储介质上,用于由数据处理设备执行或控制数据处理设备的操作。计算机存储介质可以是或包括在计算机可读存储设备,计算机可读存储衬底,随机或串行存取存储器阵列或设备,或它们中的一个或多个的组合中。计算机存储介质还可以是一个或多个单独的组件或介质(例如,多个CD,磁盘或其他存储设备),或被包括在其中。计算机存储介质可以是有形的和非暂时性的。

本说明书中描述的操作可以实现为由数据处理设备对存储在一个或多个计算机可读存储设备上的数据或从其他源接收的数据执行的操作。这些操作可以在数据处理设备的本机环境内或在一个或多个虚拟机或由数据处理设备托管的容器内执行。

计算机程序(也称为程序,软件,软件应用,脚本或代码)可以以任何形式的编程语言来编写,包括编译或解释语言,声明性语言或过程语言,并且可以以任何形式来部署,包括作为独立程序或作为模块,组件,子例程,对象或适于在计算环境中使用的其他单元。计算机程序可以但不必须对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于所述程序的单个文件中,或者存储在多个协调文件(例如,存储一个或多个模块,子程序或代码部分的文件)中。计算机程序可被部署为在一个计算机上或在位于一个站点或分布在多个站点上并通过通信网络互连的多个计算机或一个或多个虚拟机或容器上执行。通信网络的示例包括局域网("LAN")和广域网("WAN"),网络间(例如,因特网)和对等网络(例如,自组织对等网络)。

本说明书中描述的处理和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器来执行,以通过对输入数据进行操作并生成输出来执行动作。处理和逻辑流程也可以由专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))来执行,并且装置也可以实现为专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))。

虽然本说明书包含许多特定的实现细节,但这些不应被解释为对任何发明的范围或所要求保护的范围的限制,而是被解释为对特定发明的特定实施方式的特定特征的描述。本说明书中在单独实现的上下文中描述的某些特征也可以在单个实现中组合地实现。相反,在单个实现的上下文中描述的各种特征也可以在多个实现中单独实现或者在任何合适的子组合中实现。此外,尽管上面可以将特征描述为在某些组合中起作用,并且甚至最初如此要求保护,但是在一些情况下,可以从组合中去除要求保护的组合中的一个或多个特征,并且要求保护的组合可以针对子组合或子组合的变型。

类似地,虽然在附图中以特定顺序描述了操作,但这不应被理解为要求以所示的特定顺序或以顺序的顺序执行这些操作,或者要求执行所有示出的操作以获得期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实现方式中的各种系统组件的分离不应被理解为在所有实现方式中需要这种分离,并且应当理解,所描述的程序组件和系统通常可以被集成在单个软件产品中或者被封装到多个软件产品中。

对"或"的引用可以被解释为包括性的,使得使用"或"描述的任何术语可以指示单个,多于一个,以及所有描述的术语中的任何一个。标签"第一","第二","第三"等不一定表示排序,并且通常仅用于区分相同或类似的项目或元素。

对于本领域的技术人员来说,对本公开中所描述的实现方式的各种修改是显而易见的,并且在不脱离本公开的精神或范围的情况下,本文所定义的一般原理可以被应用于其他实施方式。因此,权利要求不希望限于本文所示的实施方案,而是要符合与本文所揭示的本发明,原理和新颖特征相一致的最宽广的范围。

相关技术
  • 可预测的虚拟化网络接口卡
  • 虚拟化环境中多网络接口卡聚合的方法
技术分类

06120112161208