向数据中心应用提供服务质量的制作方法

文档序号:11455818阅读:330来源:国知局
向数据中心应用提供服务质量的制造方法与工艺

优先权申明

本申请要求2015年2月10日提交的美国专利申请no.14/619,008;和2015年2月9日提交的美国专利申请no.14/617,876的优先权益;两者均要求于2014年9月17日提交的题为“用于向数据中心应用提供服务质量的系统和方法”的62/051,674的优先权,所有这些都通过引用整体并入本文。

本申请涉及根据一个实施方式的用于在虚拟化计算环境中使用的方法和系统,并且更具体地涉及用于改善虚拟化计算环境中的网络协议性能的方法和系统。



背景技术:

调制解调器数据中心已经进入虚拟化领域,其中像cpu、存储器和磁盘这样的资源在虚拟机之间进行虚拟化和共享。通常,为了提供可预测和有保证的性能,尽力向虚拟机分配这些资源的固定量。网络是已经做了大量工作来提供性能隔离的这样一种资源。

软件定义网络(sdn)在虚拟化网络层并提供控制平面的更好可管理性方面取得了长足的进步。但是在互联网协议(ip)/网络层(通常不具有端到端连接语义的可视性)提供保证并不一定意味着转化为数据中心应用的性能提高,也不会最佳地利用数据中心的网络资源。最终,数据中心管理员关心其应用的性能,并为应用提供性能保证。

现有的网络性能隔离机制可以大致分为限制给定流的带宽的速率限制技术。尽管这些技术可以限制总体带宽使用,但这些技术无法增加流的带宽份额,浪费网络资源。

附图说明

各种实施方式通过示例的方式而非限制的方式在附图的各图中示出,附图中:

图1a示出根据示例性实施方式的具有用于发送和接收数据包的多主机的数据中心。

图1b示出根据示例性实施方式的具有驻留在虚拟化主机上的传输控制协议(tcp)发送器与tcp接收器之间的流的数据中心。

图1c示出根据另一示例性实施方式的在tcp发送器与驻留在虚拟化主机上的tcp接收器之间的流的数据中心。

图1d示出根据示例性实施方式的没有分层带宽管理器的两个流的初始带宽使用。

图1e示出根据示例性实施方式的没有分层带宽管理器的两个流的当前带宽使用。

图1f示出根据示例性实施方式的具有从分层带宽管理器分配的附加带宽的两个流的当前带宽使用。

图2a是示出根据示例性实施方式的在虚拟化系统内的虚拟机管理(vmm)之上操作的虚拟传输控制协议(vtcp)模块的框图。

图2b是示出根据示例性实施方式的在虚拟化系统内作为应用操作的vtcp模块的框图。

图2c是示出根据示例性实施方式的在主机操作系统内作为容器操作的vtcp模块的框图。

图2d是示出根据示例性实施方式的在虚拟化系统内的客户操作系统内作为容器操作的vtcp模块的框图。

图2e是示出根据示例性实施方式的在虚拟化系统内作为虚拟机操作的vtcp模块的框图。

图3a示出根据示例性实施方式的带宽(bw)管理系统的框图。

图3b示出根据另一示例性实施方式的bw管理系统的框图。

图3c示出根据示例性实施方式的bw管理系统的框图。

图3d示出根据示例性实施方式的bw管理器的框图。

图3e示出根据示例性实施方式的服务质量(qos)管理器的框图。

图3f示出根据示例性实施方式的窗口管理器(wm)的框图。

图4a示出根据示例性实施方式的具有带有多个虚拟机(vm)的多个租户的服务器的框图。

图4b示出根据示例性实施方式的运行多个应用的服务器的框图。

图4c示出在多个服务器之间分配带宽资源的服务器的框图。

图4d示出根据示例性实施方式的其带宽份额由两个应用使用的vm的框图。

图5a示出根据示例性实施方式的tcp报头字段。

图5b示出根据示例性实施方式的用于业务的分类的示例性字段。

图6a示出根据示例性实施方式的用于显示由分层带宽管理器分配的带宽份额的分层带宽树(hbt)。

图6b示出根据示例性实施方式的对应于图6a的hbt的bw管理器模块。

图6c示出了根据示例性实施方式的图6a中示出的hbt细分为多个子树。

图6d示出了根据示例性实施方式的图6a中示出的hbt具有多个分层级别。

图6e示出了根据示例性实施方式的图6a中示出的hbt具有由bw管理器模块分配的带宽份额。

图6f示出根据示例性实施方式的通过各种分类参数过滤的hbt。

图6g示出根据示例性实施方式的具有父节点和配置用于最低保证的子节点的子树的实例。

图7a示出根据示例性实施方式的与叶节点相关联的bw管理系统的一部分。

图7b示出根据示例性实施方式的具有由qos管理器分配和优先化的带宽份额的hbt。

图7c示出根据示例性实施方式的与具有分配的应用优先级份额的叶节点相关联的bw管理系统的一部分。

图7d示出根据示例性实施方式的bw管理系统的一部分,其与具有分配的流份额的叶节点相关联,所分配的流份额用于所分配的优先级份额中的一个。

图8a示出根据示例性实施方式的在具有wm流请求的无压模式下操作的qos管理器的实例。

图8b示出根据示例性实施方式的在具有qos流响应的无压模式下操作的qos管理器的实例。

图9a示出根据示例性实施方式的在具有wm流请求的欠压模式下操作的qos管理器的实例。

图9b示出根据示例性实施方式的在具有qos流响应的欠压模式下操作的qos管理器的实例。

图10a示出在两个主机之间传输的tcp数据包。

图10b示出根据示例性实施方式的以由分层带宽管理器管理的数据流在两个主机之间传输的tcp数据包。

图10c示出了根据示例性实施方式的针对流1在两个主机之间传输的tcp数据包。

图10d示出了根据示例性实施方式的针对流2在两个主机之间传输的tcp数据包。

图10e示出根据示例性实施方式的具有随时间增加的流1和2的输出流速的表格。

图10f示出根据示例性实施方式的用于具有流1和2的叶节点的分层带宽管理器的一部分。

图11a示出了代表tcp接收器从tcp发送器接受数据包的方法的示例性流程图。

图11b示出根据一个实施方式的用于控制发送主机使用滑动窗口协议传输数据包的速率的方法的示例性流程图。

图11c示出根据另一实施方式的用于控制发送主机使用滑动窗口协议传输数据包的速率的方法的示例性流程图。

图11d示出根据一个实施方式的用于确定每个流的带宽请求的方法的示例性流程图。

图11e示出根据一个实施方式的用于确定针对流的集合的带宽请求的方法的示例性流程图。

图11f示出根据一个实施方式的用于确定流的每个集合的带宽响应的方法的示例性流程图。

图11g示出根据一个实施方式的用于确定每个流的带宽响应的方法的示例性流程图。

图11h示出根据一个实施方式的用于为单独流生成窗口大小的方法的示例性流程图。

图12示出根据一个实施方式的用于管理用于与服务器机器相关联的流的集合的带宽的方法的示例性流程图。

图13是示出了根据一些示例性实施方式的可以安装在机器上的软件体系结构的实例的框图。

图14示出根据示例性实施方式的以计算机系统的形式的机器的示意性表示,在该计算机系统中,可执行一组指令以使机器执行本文所讨论的任何一个或多个方法。

在本文中提供的标题仅为了方便起见,并不一定影响所使用的术语的范围或含义。

具体实施方式

下面的描述包括体现本发明的说明性实施方式的系统、方法、技术、指令序列和计算机程序产品。在以下描述中,为了说明的目的,阐述了很多具体细节以便提供对发明主题的各种实施方式的理解。然而,对于本领域的技术人员明显的是,可在没有这些具体细节的情况下,实践发明主题的实施方式。一般来说,未详细示出众所周知的指令实例、协议、结构和技术。

服务器虚拟化是使用虚拟化软件将it硬件抽象到虚拟服务器的过程。通过分配物理it资源并安装操作系统,通过虚拟化软件创建虚拟服务器。虚拟服务器使用自己的客户操作系统,这些操作系统与创建它们所在的操作系统无关。

描述了以有效地使用网络资源的方式向数据中心应用提供传输层(层4)服务质量(qos)的方法和系统。在各种示例性实施方式中,公开了用于控制由tcp发送器向tcp接收器发送数据包的速率的系统和方法。bw管理系统代表tcp接收器以流速接受来自tcp发送器的数据包。bw管理系统基于接收主机从bw管理系统接收所接受的数据包的估计速率来计算要向tcp发送器通告的窗口大小wa。bw管理系统向tcp发送器通告窗口大小wa以控制由tcp发送器传输的数据包的流速。bw管理系统以基于向tcp发送器通告的窗口大小的调整的流速,代表tcp接收器接受来自tcp发送器的数据包。

在各种实施方式中,公开了通过管理两个主机之间的数据流来为应用提供端到端qos保证的系统和方法。bw管理器模块通过对业务类别分配带宽限制来管理关联的业务类别的流的集合的带宽。qos管理器模块基于对业务类别所分配的带宽限制来将应用优先级份额分配给业务类别并且分配与应用优先级份额相关联的流份额。wm模块通过调整通告给第一主机的窗口大小来管理各个单独流的带宽。通告的窗口大小控制第一主机向第二主机传输数据包的速率。通告的窗口大小基于来自qos管理器的分配的流份额。

在数据中心网络中的虚拟机上运行的应用的性能取决于系统和网络资源的可用性。已经开发了大量的机制来在竞争的应用之间分配系统资源以提供可预测的性能。但是,仅此并不能保证应用所需的qos。需要对网络资源进行智能管理,以帮助应用实现其预期的性能水平。软件定义网络(sdn)领域的研究和开发改善了网络层的控制平面的可管理性,确保主机可以相互通信。然而,sdn解决方案没有提供应用层qos所需的信息或机制。

数据中心应用的网络工作量包含在流中。流传统上被定义为从源到目的地的数据包序列,并且由源和目的地的网络地址和端口号唯一地标识。源和目的地还可以分别称为发送主机和接收主机。这些流的大部分遵循用于将数据从源(例如,tcp发送器)传送到目的地(例如,tcp接收器)的tcp协议。在控制端到端连接语义的网络传输层(例如,tcp/ip)操作允许用于数据中心应用的真正的qos。协议加速模块(也称为vtcp模块或tcp加速模块)是通过在tcp和用户数据报协议(udp)流的使用期内主动地管理会话来为应用提供端到端qos保证的网络机制。

本文描述的示例性实施方式提供用于在云环境中的协议发送器和协议接收器之间传输数据包的系统和方法,云环境具有驻留在虚拟化主机内的协议发送器或协议接收器。对于一个实施方式,所传输的数据包可以是tcp数据包,使得协议发送器和接收器可以是tcp协议发送器和接收器。协议加速模块(在各种实施方式中也称为vtcp模块或tcp加速模块)可以沿着从客户os内的协议发送器/接收器到物理网络接口卡(nic)的数据路径的任何地方安装和维护。对于一些实施方式,协议加速模块可以插入或集成在管理程序内。在其他实施方式中,vtcp模块可以在操作系统(主机os或客户os)内运行,作为应用运行或部署为服务器。在示例性实施方式中,协议加速模块包括用于为与物理服务器相关联的流的集合分配带宽的bw管理系统。在各种实施方式中,物理服务器还可以称为服务器机器。

图1a示出根据示例性实施方式的具有用于发送和接收数据包的多个主机的数据中心。数据中心100包括用于在两个主机之间传输数据的数据中心网络105。每一个主机可以表示数据流(也称作流)中的端点。在数据中心网络105内,流表示在两个端点之间交换的一系列数据包。在示例性实施方式中,每个端点包含相同的唯一地址和端口。业务类别表示流的集合。业务类别内的流的集合与一些用户定义的分类规则(例如,端口号、ip地址、vlan等)匹配。

物理服务器104使用物理网络接口卡(nic)103与数据中心网络105通信,并且物理服务器106使用物理nic107与数据中心网络105通信。物理服务器104与其上运行的操作系统101可以称作物理主机。物理主机可以是tcp发送器或tcp接收器,也称为tcp发送器/接收器102。在示例性实施方式中,物理服务器106表示包含两个vm的实例化(vm119和vm120)的单个物理计算机系统。在该实施方式中,物理服务器106具有安装其上的被称为管理程序110的软件层,该软件层提供虚拟化平台并且可用于管理和监测vm119和120的一个或多个实例化。具有虚拟化软件(例如,管理程序110)的物理服务器106可以被称为具有vm的多个实例化的虚拟化主机。管理程序110用于生成物理服务器106的虚拟服务器实例。在示例性实施方式中,管理程序110限于一个物理服务器,并且因此可以仅创建物理服务器106的虚拟图像。

管理程序110或其他虚拟机管理软件(未示出)允许创建多个虚拟机以在相同的物理机器(即,物理服务器106)上并行地单独运行。每个虚拟机vm119和120具有其自身的一组虚拟硬件(ram、cpu、nic),操作系统(例如,客户操作系统115和116)和完整配置的应用(例如,应用软件117和118)装载于该组虚拟硬件上。

管理程序110包括vtcp模块109,也称为协议加速模块或tcp加速模块。在示例性实施方式中,vtcp模块109可以用于加速tcp发送器与tcp接收器之间的数据包的传输,而不改变发送tcp数据包的主机的tcp配置。

在图1a中,vtcp模块109包括bw管理系统125。bw管理系统125负责管理与物理服务器106或虚拟化主机相关联的数据流的带宽。参考图1b,数据流130表示在物理服务器106上运行的vm119与物理服务器104之间的端到端连接。更具体地,图1b示出tcp发送器/接收器113传输tcp数据包至tcp发送器/接收器102。参考图1c,数据流140表示在物理服务器106上运行的vm120与物理服务器104之间的端到端连接。更具体地,图1c示出tcp发送器/接收器102传输tcp数据包至tcp发送器/接收器114。在替代实施方式中,tcp发送器和tcp接收器都可以驻留在虚拟化主机上。

参考回图1a,与物理服务器相关联的数据流可以被称为全面业务类别。对于示例性实施方式,物理服务器可以是物理服务器106。在可替换的实施方式中,bw管理系统125可以不与虚拟化主机相关联。全面业务类别指用于物理服务器的所有流。在一些实施方式中,物理服务器的带宽受该服务器的整个链路容量的限制。换言之,与物理服务器106相关联的数据流的最大带宽由物理nic107与物理服务器106之间的数据链路的最大容量确定。hbt用于示出bw管理系统125如何管理物理服务器的流的带宽。图6a至图6b示出hbt的实例。根节点表示物理服务器106和与服务器相关联的所有流(也称为全面业务类别)。其他节点表示与虚拟资源相关联的业务类别,虚拟资源和物理服务器106相关联。虚拟资源可以表示单个vm或多个vm,其被称为vm的租户或池。虚拟资源的实例在图4a、图4c和图4d中示出。hbt表示可以由不同等级的不同业务类别过滤的流的全面业务类别。以下对bw管理系统125和hbt进行更详细地描述。bw管理系统125内的各种组件和模块在下面描述的几个其他附图中讨论,例如图3a至图3f。

虚拟nic(vnic)111将vm119逻辑连接至管理程序110,并且vnic112将vm120逻辑连接至管理程序110。第一虚拟数据路径包括vnic111、vtcp模块109、及虚拟交换机108。第二虚拟数据路径包括vnic112、vtcp模块109、及虚拟交换机108。在可替换的实施方式中,vtcp模块109可以沿着虚拟数据路径位于别处。在另一实施方式中,vtcp模块109可以操作为在vm上运行的应用(参见图2b),驻留在主机操作系统内(参见图2c),驻留在客户操作系统(参见图2d)或者部署为服务器(参见图2e)。在其他实施方式中,bw管理系统125可以不驻留在vtcp模块109内。在另一实施方式中,bw管理系统125可以不与虚拟化主机相关联。

物理服务器104的tcp发送器和/或接收器102驻留在操作系统101中。tcp发送器和/或接收器113驻留在客户操作系统115中,并且tcp发送器和/或接收器114驻留在客户操作系统116中。诸如tcp数据包的数据包从在图1a中示出的主机传输并接收。虽然在图1a中示出两个vm,替换实施方式可包括任意数量的vm。在另一实施方式中,数据包可以在两个虚拟化主机或者两个物理主机之间传输。在其他实施方式中,可以传输使用其他协议(诸如udp)的数据包。

图1d示出两个流的初始带宽使用。系统150示出两个流,每个具有500mbps的初始带宽使用。流155在主机151与主机152之间,并且流156在主机151与主机153之间。

图1e和图1f示出了如图1d所示的相同的两个流,除了流155已将其当前带宽使用降低到200mbps,并且流156具有800mbps的增加的带宽速率之外。图1e中示出的系统160不具有bw管理系统;图1f中示出的系统170包括bw管理系统125。因为系统160不具有bw管理系统125以在流155和156(在图1e中示为流165和166)之间重新分配指派的带宽,所以流165以200mbps操作,并且流166以500mbps操作,以及在当前使用为500mbps之后丢弃接收的数据包。另一方面,图1f所示的bw管理系统125能够将带宽从流155分配到流156,流155在图1f中示出为流175,流175未充分利用其500mbps的初始带宽分配,流156在图1f中示出为流176,流176过度使用其500mbps的初始带宽分配。

图2a是示出了基于硬件的虚拟化系统200的示例性实施方式的框图。在该实施方式中,称为硬件250的单个物理计算机系统可包含虚拟机(vm)的一个或多个实例化,诸如vm210、220和230。在该实施方式中,硬件250具有称为管理程序240的软件层(也可称为安装在硬件250上的vmm),其提供虚拟化平台。管理程序240可以用于管理并监测硬件250上的vm210、220和230的一个或多个实例化。在该示例中,管理程序240直接安装在硬件250的本地硬件上;然而,管理程序还可以作为软件层安装在称为主机操作系统的本机操作系统中。bw管理系统(未示出)是vtcp模块109的一部分并且在管理程序240上运行。

在这个实施方式中,管理程序240具有安装在硬件250上的vm(例如,vm210、220和230)的三个实例化。各个vm210、220、230具有操作系统(诸如客户操作系统212、222和232)以及各种程序应用(诸如应用软件211、221和231)。在各种实施方式中,操作系统212、222、223和应用软件211、221、231基本上与共同位于相同物理硬件250上的其他vm隔离运行。

图2b是示出根据示例性实施方式的在虚拟化系统内作为应用软件操作的vtcp模块109a-109c的框图。在图2b中,系统201内的vm(210、220、230)中的每一个包括操作为软件应用的vtcp模块(分别为109a、109b、109c)。vm210包括具有app211a、211b和vtcp模块109a的应用软件211。vm220包括具有app221a、221b和vtcp模块109b的应用软件221。vm230包括具有app231a、231b和vtcp模块109c的应用软件231。bw管理系统125a、125b、及125c分别驻留在vtcp模块109a、109b、及109c内。

图2c是示出根据示例性实施方式的驻留在主机操作系统101内的vtcp模块的框图。系统202包括硬件250和在硬件250上运行的软件260。软件206包括操作系统101(也称作主机os)、容器引擎263(例如,docker)、多个容器(例如,容器261和262)。在示例性实施方式中,docker(即,容器引擎)可以用于通过提供附加抽象层以及操作系统级虚拟化(例如,在linux上)的自动化来使软件容器内的应用的部署自动化。因此,可以避免或者最小化启动vm的开销。参考图2c,每个容器261、262内分别是应用软件267、268。应用软件267包括在容器261内,并且应用软件268包括在容器262内。vtcp模块109位于操作系统101(即,主机os)内。在示例性实施方式中,bw管理系统125是vtcp模块109的组件。

图2d是示出了分别驻留在客户操作系统212、222内的vtcp模块109a、109b的框图,客户操作系统212、222驻留在虚拟化系统内。vtcp模块109a驻留在客户操作系统212内并且vtcp模块109b驻留在客户操作系统222内。在这个实施方式中,管理程序240具有安装在硬件250上的vm的两个实例化(例如,vm210和220)。在各种实施方式中,vtcp模块109a和109b分别各自包括bw管理系统125a和125b。vm210包括客户操作系统212、容器引擎279、容器275(包括应用软件271)和容器276(包括应用软件272)。vm220包括客户操作系统222、容器引擎280、容器277(包括应用软件273)和容器278(包括应用软件274)。用户可以通过创建经由ip地址和/或协议端口号过滤的业务类别来基于每个容器设置最小带宽预留和/或最大带宽容量。

图2e是示出根据示例性实施方式的操作为vm并且部署为服务器的vtcp模块的框图。在系统204中所示的实施方式中,管理程序240具有安装在硬件250上的vm的四个实例化。四个vm包括vm210、vm220、vm230和vm235,其被称为部署为服务器的vtcp模块。

图3a示出根据示例性实施方式的bw管理系统125。在各种实施方式中,bw管理系统125在vtcp模块109中实现。在可替换的实施方式中,bw管理系统125可以驻留在其他类型的加速协议模块中。例如,协议加速模块可以不必局限于tcp协议或者用于虚拟化环境中。如在图2a至图2e中所示,vtcp模块109可以驻留在vmm管理程序240、vm(例如,vm210、vm220、或者vm230)、主机操作系统101、客户操作系统212或者222、或者具有部署为服务器的vtcp模块109的vm235内。在一些实施方式中,bw管理系统125被配置为接受来自发送主机的数据包(例如,图3a中311处,来自tcp发送器的数据包)。bw管理系统125代表接收主机接受数据包(例如,312处至tcp接收器的数据包)。由bw管理系统125接受的数据包在bw管理系统125将数据包转发至接收主机之前可以暂时由bw管理系统125存储。

bw管理系统125可以被称为网络机构,其通过在tcp流以及使用其他协议的流(诸如用户数据报协议(udp)流)的使用期(或使用期的至少一部分)中主动地管理会话来为应用提供端到端服务质量(qos)保证。在各种实施方式中,可以分类业务流(也称为“业务类别”或“流的业务类别”或“业务子类别”)以使用特定标准将具有不同特性的数据包组织成不同的类别。由另一参数过滤的业务类别可称为业务子类别。

图5b提供可以用于对流的业务类别进行分类的过滤器的一些实例。用于对业务进行分类的表525包括用于提供与列531中的过滤器相对应的数据源的列521。列531中的过滤器表示可用于配置与hbt中的节点相关联的业务类别的业务分类参数。hbt的实例在图6a-图6g中示出。图5b中示出的过滤器包括列531中的以下过滤器:物理端口532、虚拟端口533、vlan534、vn535、ip源536、ip目的地537、协议538、端口源539和端口目的地540。其他示例性实施方式可以使用其他过滤器来对业务进行分类。

bw管理系统125通过对针对在服务器机器上运行的软件应用的入站和出站数据流(与业务的类别相关联)进行速率限制来解决qos。在示例性实施方式中,服务器机器可以驻留在具有虚拟化资源的云计算环境中。在其他实施方式中,服务器机器可以不表示虚拟化资源。bw管理系统125可以用于通过影响对发送主机(例如,tcp发送器)可以向接收主机(例如,tcp接收器)传输的数据量的控制,来控制业务类别的业务的入站速率。在各种实施方式中,从发送主机发送数据包的速率由诸如tcp数据包的窗口大小的参数控制。在使用非tcp协议的其他实施方式中,其他参数可以用于控制从发送主机发送数据包的速率。各种滑动窗口协议可用于控制发送主机传输数据包的速率。

再次参考图3a,bw管理系统125使用三组件结构来管理针对物理服务器的所有流的带宽,该三组件结构包括示例性实施方式中的bw管理器模块320、qos管理器模块330和wm模块340。在可替换的实施方式中,模块320、330及340可以单独使用,或者以不同组合一起使用以实现bw管理系统125。在各种实施方式中,与物理服务器相关联的流可以称为由全面业务类别表示的流的集合。

在示例性实施方式中,bw管理器模块320将带宽预留(也称作min值)分配给业务类别。在另外的实施方式中,bw管理器模块分配max值,用于定义对可以由业务类别实现的最大带宽的限制。业务类别的子分类可以以分层方式(如图6a至图6g中的hbt所示)进一步划分带宽预留(min值)和对可实现的最大带宽的限制(max值)。子分类可以通过由一个或多个参数过滤业务类别完成。在各种实施方式中,业务类别的子分类还可以称为业务子类别。在各种实施方式中,管理器模块320通过控制与全面业务类别相关联的各个单独流的集合的带宽使用以符合分配给hbt中的节点的带宽限制来主动地管理各个单独流(individualflow)。

qos管理器模块330与和hbt中的叶节点相关联的bw管理器模块320通信。qos管理器模块330还与wm模块340通信。更具体地,qos管理器模块330从wm模块340接收每个流的带宽请求,并且向wm模块340提供每个流的带宽响应。qos管理器模块330将与业务类别相关联的流的集合的带宽请求发送到bm管理器模块320,并从bm管理器模块320接收用于与业务类别相关联的流的集合的带宽响应。在下面结合图3b更详细描述各种模块320、330及340之间的通信。

wm模块340基于每个流向qos管理器模块330做出带宽请求,并且从qos管理器模块330接收每个流的带宽响应,以基于每个流管理带宽。该bw管理系统125可以通过使用这三个组件(bw管理器模块320、qos管理器模块330和wm模块340)来帮助在各个单独流等级和业务类别等级上实现期望的带宽。在各种实施方式中,数据中心管理员可以使用bw管理系统125来配置网络中在多个主机上运行的多个应用的qos。

在示例性实施方式中,如图3a中所示,bw管理系统125配置有位于顶部的bw管理器模块320、位于bw管理器模块320下面的qos管理器模块330、以及在底部的wm模块340。bw管理器模块320分配并管理与hbt中的节点相关联的各种业务类别的带宽限制。在示例性实施方式中,qos管理器模块330将qos策略应用于基于应用优先级的业务类别中的流。在示例性实施方式中,wm模块340使用滑动窗口协议控制各个单独流的带宽。以下还将更详细地论述这些模块320、330和340中的每个。

在示例性实施方式中,bw管理器模块320为hbt中的每个节点创建带宽管理器。对于各种实施方式,hbt表示与物理服务器或者服务器机器相关联的流的集合。如上所述,节点可以是由一个或多个流分类参数过滤的流的集合的表示,也称为业务类别或业务子类别。

图3a中示出的bw管理器模块320包括九个bw管理器321-329。bw管理器321-323与根节点相关联,bw管理器324-326与其他节点(即,非根节点或者非叶节点)相关联,以及bw管理器327-329与叶节点相关联。bw管理器模块320可包括用于为一个或多个hbt创建表示节点的业务类别(以及称为业务子类别的业务类别的子分类)的节点创建模块(未示出)。每个业务类别和子类别可以表示hbt中的节点。对于图3a中示出的实例,bw管理器模块320可以管理用于与三个物理服务器相关联并由三个单独的hbt表示的流的集合的带宽。bw管理器321、322及323各自对应于不同的hbt的根节点。

在各种实施方式中,bw管理器模块320被配置为根据业务类别管理与服务器机器相关联的流的集合的带宽。业务类别布置在hbt中,其中,流的集合表示最高级别的全面业务类别。hbt中的根节点表示全面业务类别。与全面业务类别相关联的流的集合划分为表示业务类别的更小的集合。叶业务类别表示hbt的最低级别的业务类别。每个叶业务类别由至少一个业务类别参数过滤。业务类别中的流表示两个主机之间的端到端的连接。在一些实施方式中,主机中的至少一个表示虚拟化主机。在其他实施方式中,没有主机表示虚拟化主机。

结合图6a-图6g描述hbt的实例。在图3a中示出的bw管理系统125示出bw管理器模块320、qos管理器模块330和wm模块340,各自具有称作管理器(例如,bw管理器、qos管理器、及wm)的多个组件。在各种实施方式中,模块320、330及340可以看作是彼此独立操作,即使它们彼此通信。

在图3a中示出的实例中,bw管理器模块320包括多个bw管理器321-329,每个管理器与各种节点(例如,根节点、叶节点、或者其他节点)相关联。qos管理器模块330包括qos管理器331-333。wm模块340包括分别布置在wm子模块341、344及347内的wm342-343、345-346及348-349。与叶节点相关联的bw管理器模块(例如,327-329)与qos管理器和wm通信。在一些实施方式中,叶节点中的每一个与bw管理器相关联。在叶节点处与bw管理器相关联的是qos管理器和wm。bw管理器的示例性实施方式在图3d中示出,qos管理器的示例性实施方式在图3e中示出,并且wm的示例性实施方式在图3f中示出。下面将连同图3d-图3f论述关于bw管理器、qos管理器及wm的更多细节。应当理解,包括在bw管理器模块320、qos管理器模块330和wm模块340内的管理器的数量可以根据与一个或多个全面业务类别相关联的流的集合中的流的数量以及全面业务类别如何过滤为由节点表示的业务类别而变化。

图3b示出bw管理系统125的另一实施方式。在图3b中示出的bw管理系统125示出bw管理器模块320、qos管理器模块330、及wm模块340之间的通信和交互的实例。在各种实施方式中,当数据包从发送主机发送时,通信从wm模块340发送到qos管理器模块330,从qos管理器模块330发送到bw管理器模块320,然后从bw管理器模块320发送到qos管理器模块330,从qos管理器模块330发送到wm模块340。bw管理系统125通过控制针对流的集合中的单独流传输数据包的速率来主动地管理与全面业务类别相关联的流的集合。在示例性实施方式中,模块340、330及320之间的通信包括wm流请求3401、qos集合请求3301(响应于wm流请求3401)、bw集合响应3302(响应于qos集合请求3301)、及qos流响应3402(响应于wm流请求3302)。在一些实施方式中,qos流响应3402在qos管理器模块330接收到wm流请求3401之后几乎是瞬时的。在各种示例性实施方式中,请求包括基于每个流或者针对流的集合的带宽请求量。wm流请求3401表示每个流的带宽请求。qos集合请求3301表示与业务类别相关联的流的集合的带宽请求。在其他示例性实施方式中,响应可包括基于每个流或者针对流的集合的分配的带宽量。qos流响应3402表示每个流的带宽响应。bw集合响应3302表示针对与业务类别相关联的流的集合的带宽响应。

在示例性实施方式中,模块340、330和320之间的通信流可以是多个wm和与bw管理器相关联的qos管理器之间的通信,bw管理器与表示hbt中的叶节点的业务类别相关联。例如,参考图7b,wm775-780和qos管理器331与bw管理器327相关联,bw管理器327与由叶节点327表示的业务类别相关联。在图7b所示的示例性实施方式中,在与流的集合相关联的管理器(wm775-780、qos管理器331和bw管理器327)之间通信请求(3401和3301)和响应(3402和3302),流的集合与叶节点720相关联。

bw管理器模块320包括bw逻辑模块360,qos管理器模块330包括qos逻辑模块361,以及wm模块340包括流逻辑模块362。在各种实施方式中,bw逻辑模块360可以分布在一个或多个bw管理器321-329之间。bw管理器321-329可以彼此通信以管理与hbt中的节点相关联的各种业务类别的带宽限制。对于各种实施方式,带宽限制可称为分配给hbt中的各个节点的min值和max值。

对于示例性实施方式,qos逻辑模块361可以表示qos管理器331-333中包括的qos逻辑模块3610。例如,在图3e中示出qos管理器331内包括的qos逻辑模块3610。在各种实施方式中,qos管理器模块内的qos管理器互相不通信。

对于示例性实施方式,流逻辑模块362可以表示wm342-343、345-346、及348-349内的一个或多个流逻辑模块3620。在各种实施方式中,wm互相不通信。图3f示出wm342中的流逻辑模块3620的实例。逻辑模块360、361和362的功能也将在下面分别结合图3d、图3e和图3f进行进一步详细描述。

wm模块340将表示每个流的带宽请求的wm流请求3401发送至qos管理器模块330。流逻辑模块362确定wm流请求3401中请求的带宽量。在各种实施方式中,wm流请求3401中请求的带宽量等于针对单独流的wmax/rtt2。在各种实施方式中,计算第一单独流的wmax/rtt2的带宽请求是基于接收主机从bw管理系统125接收针对单独流的数据包的估计速率。

关于图10a-图10f更详细地描述wmax/rtt2的公式。qos逻辑模块361处理wm流请求3401,并且计算表示与业务类别相关联的流的集合的聚集带宽量的qos集合请求3301。qos逻辑模块361聚集跨所有应用优先级别针对应用优先级别的总请求大小(称为r),所有应用优先级别与关联于业务类别的集合流相关联。聚集的总请求大小r表示qos集合请求3301中请求或者指示的聚集带宽量。在一些实施方式中,qos逻辑模块361跟踪每个应用优先级别(对于与业务类别相关联的流的集合)的wm流请求3401的带宽量,然后跨所有应用优先级别(对于与业务类别相关联的流的集合)聚集关于每个流所请求的带宽来计算r。

在示例性实施方式中,可能有称作p1、p2和p3的三个应用优先级别。p1可以表示高应用优先级别,p2可以表示中等优先级别以及p3可以表示低应用优先级别。每个应用优先级别具有称为用于p1的rp1、用于p2的rp2和用于p3的rp3的聚集总请求大小,其中所有三个应用优先级别的聚集总请求大小r等于rp1+rp2+rp3。图7c示出具有三个应用优先级别p1、p2、及p3的qos管理器331的一部分的实例。

bw逻辑模块360处理由bw管理器模块320接收的qos集合请求3301。在各种实施方式中,可以在bw管理器模块320响应于qos集合请求3301发送bw集合响应3302之前,在与hbt相关联的bw管理器(例如,321-329)之间发送多个通信。

在各种实例中,bw逻辑模块360负责通过控制与业务类别中的每一个相关联的单独流的集合的带宽使用,来控制与全面业务类别相关联的各个单独流的集合的带宽使用,使得业务类别中的每一个符合分配给表示业务类别的节点的带宽限制。在各种实施方式中,在wm流请求3401中指定的带宽量表示在特定时间点的各个单独流的当前使用,并且在qos集合请求3301中指定的聚集的带宽请求量表示在特定时间点针对业务类别的流的集合的当前使用,其中,业务类别表示具有分配的带宽限制的节点。

qos集合请求3301和bw集合响应3302表示与流的集合相关联的通信,流的集合与业务类别(或者全面业务类别的业务子类别)相关联。bw逻辑模块360确定在bw集合响应3302中分配的带宽量,并将bw集合响应3302发送至qos管理器模块330。由bw管理器模块320分配至qos管理器模块330的带宽量称作分配带宽(b)。qos逻辑模块361基于应用优先级信息来处理指定由qos管理器模块330接收的分配带宽(b)的bw集合响应3302。在各种实施方式中,用户配置或者指派应用优先级,例如,高优先级、中优先级或者低优先级。通常,与较高优先级应用相关联的流被分配有分配带宽(b)的较大份额。qos逻辑模块361确定应用优先级份额和流份额的分配。在各种实施方式中,分配给应用优先级别中的每一个的分配带宽(b)的部分可以称为分配带宽(b)的百分比份额。百分比份额的分配将与图7c一起进一步论述。

在各种实施方式中,每个应用优先级别(也称为应用优先级份额)的分配的带宽限制的百分比份额是当bw管理系统125接收新的数据包时可以修改的动态值。在各种实施方式中,qos逻辑模块361负责将流份额分配给应用优先级份额的各个单独流。在一些实施方式中,qos流响应3402指定具有qos分配的带宽量的流份额。结合图3e进一步论述确定分配给每个流份额的带宽量的各种因素。

针对来自与业务类别相关联的流的集合的流,qos管理器模块330将qos流响应3402提供至wm模块340。qos流响应3042指定分配给与业务类别相关联的流的集合中的流的带宽。如图3b中所示,针对流份额的分配的带宽可称为qos分配。

qos流响应3402由wm模块340接收。在示例性实施方式中,对于tcp流,流逻辑模块362确定每个流的窗口大小wa,该窗口大小wa被通告给发送主机(例如,tcp发送主机)以代表接收主机控制数据包被发送到接收主机的速率(并且由bw管理系统125接受)。如图3b中所示,qos流响应3402表示每个流的带宽响应,其指示称作qos分配的带宽值。qos分配量可以等于、大于或小于wm流请求3401的量。

wm流请求3401中指示的带宽量可以由等式wmax/rtt2表示。如以上讨论的,响应于wm流请求3401中指示的带宽量(wmax/rtt2)计算qos分配。qos分配(表示qos流响应3402中指示的带宽量)用于计算通告的窗口大小wa。在各种实施方式中,通告的窗口大小wa等于qos分配×rtt1。在下面结合图10a-图10f更详细地论述两个主机之间的数据流、以及wm流请求3401wmax/rtt2和窗口大小wa的计算。

在各种实施方式中,模块320、330及340之间的通信在相关联的管理器之间。例如,在一个实施方式中,各个叶节点(表示用于hbt中最低级别的业务类别的流的集合)与bw管理器相关联。与叶节点相关联的bw管理器中的每一个还与qos管理器和多个wm相关联。wm管理器中的每一个与来自与业务类别相关联的流的集合的各个单独流相关联。

例如,参考图7a,叶节点701与bw管理器327以及用于业务类别的流735-738、745-748和755-758的集合相关联。qos管理器331与bw管理器327以及用于业务类别的流735-738、745-748和755-758的集合相关联。wm731-734、wm741-744和wm751-754各自与来自用于业务类别的流735-738、745-748和755-758的集合的单独流相关联。

对于各种实施方式,bw管理系统125代表接收主机以由发送主机发送的流速接受第一单独流的数据包。bw管理系统125被配置为管理业务类别的带宽,该业务类别表示与分层带宽(hbt)中的节点相关联的流的集合。第一单独流包括在与一个或多个业务类别相关联的单独流的集合内。在另一实施方式中,bw管理系统125通过管理节点的带宽使用来符合分配给节点的带宽限制,来控制发送主机使用滑动窗口协议传输第一单独流的数据包的速率。bw管理系统125以基于滑动窗口协议调整的流速接收第一单独流的数据包。

在其他实施方式中,权利要求1的方法,其中,bw管理系统125的控制通过基于分配给与业务类别相关联的单独流的集合中的单独流的应用优先级别管理与该业务类别相关联的带宽分配,来控制发送主机使用滑动窗口协议传输第一单独流的数据包的速率。

在一些实施方式中,业务类别包括表示与来自hbt中的节点的多个节点相关联的单独流的集合的多个业务类别,并且全面业务类别表示来自hbt中的节点的根节点。在另一实施方式中,全面业务类别表示具有与服务器机器相关联的流的集合的根节点。全面业务类别划分为由多个节点表示的多个业务类别。多个节点表示与全面业务类别相关联的单独流的集合的子集。

在一些实施方式中,接收主机表示传输控制协议(tcp)接收器,并且发送主机表示tcp发送器。

在示例性实施方式中,bw管理系统125通过由bw管理系统计算要通告给发送主机的窗口大小,来控制发送主机使用滑动窗口协议传输第一单独流的数据包的速率,所通告的窗口大小基于对针对第一单独流的带宽请求的带宽响应。

在又一实施方式中,bw管理系统125通过基于接收主机针对第一单独流的从bw管理系统接收所接受的数据包的估计的速率计算第一单独流的带宽请求,来计算要通告给发送主机的窗口大小。

在一些实施方式中,接收主机正在接收所接受的数据包的估计速率基于bw管理系统125用来向接收主机发送所接受的数据包的拥塞窗口和接收主机通告的窗口的最小值以及bw管理系统125与用于第一单独流的接收主机之间的往返时间。

在其他实施方式中,bw管理系统125向发送主机传输确认数据包,其中确认数据包包括计算的窗口大小;并且基于计算的窗口大小以调整的流速接收第一单独流的数据包。

在各种示例性实施方式中,bw管理系统125包括窗口管理器(wm)模块320、服务质量(qos)管理器模块330和带宽(bw)管理器模块340。bw管理系统125进一步通过使wm模块340生成带宽请求,使用滑动窗口协议控制发送主机传输用于第一单独流的数据包的速率,该带宽请求指示用于与业务类别相关联的单独流的集合中的单独流的带宽量。带宽量基于接收主机针对单独流之一从bw管理系统125接收所接受的数据包的估计速率。qos管理器模块330发送指示带宽量的带宽请求。

在另一示例性实施方式中,qos管理器模块330接收指示带宽量的带宽请求;聚集与业务类别相关联的单独流的集合中的单独流的带宽量,以产生聚集的带宽量;并将指示聚集的带宽量的带宽请求发送至bw管理器模块320。

在又一示例性实施方式中,bw管理器模块320接收指示聚集带宽量的带宽请求;基于与业务类别相关联的单独流的集合的带宽使用和分配给hbt中的根节点和多个节点的带宽限制,来确定用于与业务类别相关联的单独流的集合的可用带宽;并且基于用于与业务类别相关联的单独流的集合的可用带宽来向与业务类别相关联的单独流的集合分配带宽。bw管理器模块320将指示分配的带宽的带宽响应发送至qos管理器模块。

在又一示例性实施方式中,qos管理器模块330接收指示分配的带宽的带宽响应;基于与来自单独流的集合的单独流相关联的应用优先级别,对分配给与业务类别相关联的单独流的集合的带宽的百分比份额进行分配,单独流的集合与业务类别相关联;并将来自所分配的百分比份额的流份额分配给来自与业务类别相关联的单独流的集合的单独流。wm模块发送指示所分配的流份额的带宽响应。

在另一示例性实施方式中,qos管理器模块320通过确定与业务类别相关联的单独流的集合中的单独流的操作模式,将来自分配的百分比份额的流份额分配给来自与业务类别相关联的单独流的集合的单独流;以及基于操作模式分配流份额。

在其他示例性实施方式中,wm模块340接收指示所分配的流份额的带宽响应;并且基于第一单独流的分配的流份额生成用于第一单独流的窗口大小以通告至发送主机。

在一些实施方式中,wm管理器340通过基于指示第一单独流的所分配的流份额的带宽响应以及针对第一单独流在发送主机和bw管理系统之间的往返时间生成用于第一单独流的窗口大小,基于第一单独流的分配的流份额生成第一单独流的窗口大小以通告给发送主机。

在各种实施方式中,发送主机和接收主机中的至少一个表示与服务器机器相关联的虚拟化资源。在其他实施方式中,发送主机和接收主机中的至少一个表示docker实例。

在各种示例性实施方式中,bw管理系统125代表接收主机以发送主机发送的流速接受第一单独流的数据包,带宽管理系统125被配置为管理业务类别的带宽,业务类别表示与分层带宽(hbt)中的节点相关联的流的集合。第一单独流包括在与一个或多个业务类别相关联的单独流的集合内。bw管理系统125通过基于分配给与业务类别相关联的单独流的集合中的单独流的应用优先级别来管理与业务类别相关联的单独流的带宽分配,来控制发送主机使用滑动窗口协议传输第一单独流的数据包的速率,并且基于滑动窗口协议以调整的流速接收第一单独流的数据包。在又一实施方式中,bw管理系统125通过管理节点的带宽使用以符合分配给节点的带宽限制来控制发送主机传输第一单独流的数据包的速率,由此控制发送主机使用滑动窗口协议传输第一单独流的数据包的速率。

图3c示出bw管理系统125的另一实施方式。图3c中示出的bw管理系统125包括bw管理器模块320、qos管理器模块330、wm模块340、流缓冲器354、流表355、配置接口模块356、以及带宽使用跟踪模块357。bw管理系统125可以托管在通信地耦合以允许服务器机器之间的通信的专用或共享服务器机器上。服务器机器还可以称为一个或多个物理服务器。组件本身通信地彼此耦合并且与各种数据源通信地耦合(例如,经由适当的接口),以允许在组件之间传递信息或者以便允许组件共享和访问公用数据。此外,组件可以经由数据库服务器(未示出)访问一个或多个数据库。

应当理解,图3c中所示的模块的每个模块可以实现为单个模块,组合成其他模块,或进一步细分为多个模块。例如,在示例性实施方式中,bw管理器模块320可包括bw管理器321-329,qos管理器模块330可包括qos管理器331-333,并且wm模块340可包括wm342-343、wm345-346和wm348-349。还将理解,bw管理系统125的一个或多个模块或功能可以在vtcp模块109中实现。在其他实施方式中,bw管理系统125可以被配置为管理与一个或多个物理服务器或者服务器机器相关联的带宽。也可包括与示例性实施方式不相关的其他模块,但是未示出。

对于各种实施方式,bw管理器模块320包括bw逻辑模块360,qos管理器模块330包括qos逻辑模块361,以及wm模块340包括流逻辑模块362。这些逻辑模块本质上是事件驱动的。在示例性实施方式中,bw管理系统125的逻辑可包括以下模块中的一个或多个:bw逻辑模块360、qos逻辑模块361和流逻辑模块362。在一些实施方式中,图3b中未示出的其他逻辑可包括在bw管理系统125中。

在bw管理系统125的配置期间,bw逻辑模块360的一个功能是向hbt内的各个节点分配min值、max值或min值和max值。如果min和max值由用户配置,那么这些值将分配给节点。如果未配置min和max值,则bw管理器模块320向min值分配0,并分配从父节点继承的max值。在图3d所示的示例性实施方式中,与带宽分配模块3202组合的带宽逻辑模块3600可以用于向hbt中的各个节点分配min值和max值的带宽限制。参考回至图3c,存在bw逻辑模块360实现帮助管理分配给hbt中的节点的带宽的多个规则。

bw逻辑模块360可以在bw管理系统125的配置期间实现各种其他规则,例如,第一规则可以描述为:子树中的子节点的分配的min值的总和等于或小于子树中的父节点的分配的min值;并且第二规则可以描述为:子树中的子节点的分配的max值等于或小于子树中的父节点的分配的max值。将参考图3d更详细地论述这些规则。

一旦已经配置了bw管理系统125,分配给节点的min值表示预留的带宽,使得节点保证所预留的带宽。在节点处不能保证超过min值的带宽。在bw管理器模块320积极地管理与业务类别相关联的流的集合的带宽的同时,bw管理器模块320可以尽力提供额外的带宽直到max值,但它不由bw管理器模块320保证。例如,一个或多个节点可以请求相同的可用带宽。如果可以将服务器内的可用带宽重新分配给请求额外带宽(即,高于其min值的带宽)的节点,则可以改善(对于特定服务器的)业务流(或者与改善的业务流相关的性能)。在一些实施方式中,bw逻辑模块360可以确定分配给节点的可用带宽。

下面是在bw逻辑模块360积极管理与一个或多个节点相关联的流的集合的同时,由bw逻辑模块360实现以向请求节点分配带宽的规则的实例。该规则可称为当前使用规则。在各种实施方式中,当前使用规则规定子树中的子节点处的当前带宽使用的总和不能超过子树中的父节点的max值。在各种实施方式中,bw逻辑模块360可以用于实现当前使用规则。

在其他实施方式中,bw逻辑模块360可以用于确定与流的业务类别相关联的节点(称为父节点)处的可用带宽。例如,父节点具有相关联的bw管理器,该相关联的bw管理器从请求节点(其为父节点的子节点)接收低于该父节点处所分配的min值的带宽请求(也称为聚集带宽请求b)。与父节点相关联的bw管理器知道它已经分配给其子节点多少min值,并且可以确定存在可用带宽。另一方面,如果从请求节点到父节点的带宽请求高于分配给父节点的min值,则与父节点相关联的bw管理器向其父节点请求来自其父节点的可用带宽。只要父节点已经超过其分配的min值,并且另一父节点可用于接收带宽请求,则在hbt中的父节点上的请求继续向上。

在各种实施方式中,qos逻辑模块361的功能中的一个是限定阈值(根据分配带宽(b)的分数)。qos管理器模块330在bw集合响应3302中从bw管理器模块320接收分配带宽b。在一些实施方式中,用户可以提供可以由qos逻辑模块361用来计算阈值的配置信息。配置信息可包括分配到各种应用优先级别的百分比。在操作期间,qos逻辑模块361基于阈值确定应该激活哪个模式(无压或者欠压模式)。阈值确定哪种操作模式可以用于分配流份额。基于操作模式,在qos逻辑模块361分配流份额期间,qos逻辑模块361将不同的规则应用于bw集合响应3302中指定的带宽分配b。qos逻辑模块361的另一功能是基于应用优先级别或分级来为优先级应用份额和单独流份额分配带宽。图7c至图7d示出了由qos管理器模块330分配的25个应用优先级份额和流份额的实例。qos逻辑模块361从bw管理器模块320接收bw集合响应3302。如以上关于图3b所述,bw集合响应3302在与bw管理器模块320和qos管理器模块330相关联的流的集合的特定时间点,提供由bw管理器模块320向qos管理器模块330分配的带宽量(也称为分配带宽(b))。由bw管理器模块320分配的带宽量是基于bw管理器模块320从qos管理器模块330接收的qos集合请求3301随时间变化的计算量。

如上所述,qos逻辑模块361基于(用于业务类别的)流的应用优先级别确定应用优先级份额和流份额的分配。在示例性实施方式中,bw集合响应3302将称为分配带宽(b)的量分配给qos管理器模块330,并且qos逻辑模块361通过分配应用优先级百分比份额(到每个应用优先级别)来划分各种应用优先级别中的分配带宽(b)。分配给应用优先级别中的每一个的分配带宽(b)的部分(或分配给应用优先级别的百分比份额)可以被称为应用优先级份额。在各种实施方式中,每个优先级应用份额的百分比份额是当bw管理系统125接收新的数据包(与用于业务类别或者子类别的流的集合相关联)时可以修改的动态值。一旦已经分配了应用优先级份额,则qos逻辑模块361然后确定要分配给与应用优先级份额相关联的流份额中的每一个的带宽量。如上所述,流份额的分配基于单独流的操作模式,例如无压模式或欠压模式。不同的规则或者公式可以用于基于与单独流相关联的操作模式计算流份额。

与图8a-图8b和图9a-图b一起论述用于确定分配给每个流份额的带宽量的各种因素。qos管理器模块330以分配的流份额向一个或多个流提供qos流响应3402。流份额的分配的带宽可称为qos分配,如图3b中所示。将参考图3e和图7a-图7d、图8a-图8b、及图9a-图9b进一步讨论用于qos管理器330的qos逻辑模块361。

流逻辑模块362的主要功能之一是确定bw管理系统125期望向tcp发送器通告的窗口大小。在各种实施方式中,流逻辑模块362计算wm流请求3401和要为单独流向发送主机通告的窗口大小wa。由wm流请求3401请求的单独流的带宽量由等式wmax/rtt2表示。一旦由流逻辑模块362为单独流计算wmax/rtt2,bw管理系统125计算单独流的qos分配。流逻辑模块362可以使用qos分配计算通告的窗口wa。图10b-图10f示出wm模块340计算wm流请求3401(在图3b中示出)使用的示图。

bw管理器模块320、qos管理器模块330和wm模块340彼此通信以主动地管理用于流集合的带宽。流的集合可以表示一个或多个业务类别或业务的子类别(也称为业务子类别)。图3b中描述的实例可以示出模块320、330和340之间的各种通信,以管理表示与hbt中的叶节点相关联的流的集合的业务子类别。在示例性实施方式中,通信包括wm流请求3401、qos集合请求3301、bw集合响应3302和qos流响应3402。

在示例性实施方式中,与带宽请求(针对单独流和流的集合)相关的这些通信表示在特定时间点请求的带宽或分配的带宽。在一个实施方式中,带宽请求随着与业务子类别相关联的流集合中的流的每一个改变而改变。在一些实施方式中,响应(基于请求)几乎瞬间生成。一旦通信由模块320、330和340接收,则它们各自的逻辑模块360、361和362执行处理请求并生成响应。在各种示例性实施方式中,与wm模块340相关联的流逻辑模块362计算wm流请求3401。由qos逻辑模块361和bw逻辑模块360执行的计算用于响应于wm流请求3401生成qos流响应3402。流逻辑模块362接收qos流响应3402,其可以是等于、小于或大于wm流请求3401的值。表示从qos响应3402分配给单独流的带宽的qos分配由流逻辑模块362用来计算通告给发送主机的窗口大小wa。

更具体地,如图3b中描述的,wm流请求3401向qos管理器模块330发送针对与业务子类别相关联的单独流的带宽量wmax/rtt2的请求。与业务子类别相关联的单独流所请求的该带宽可以由qos逻辑模块361加速或减速,然后在发送到bw管理器模块320的qos集合请求3301中聚集。qos集合请求3301表示用于业务子类别的流的集合的总带宽请求。bw逻辑模块360基于分配给bw管理系统125中的一个或多个节点的min和max值来计算bw集合响应3302。如上所述,如果超过或预期超过min值,与来自业务子类别的流的集合相关联的bw管理器请求来自其父节点的许可。bw管理器评估来自qos集合请求3301的聚集带宽请求(用于与业务子类别相关联的流的集合),以确定相关bw管理器是否请求来自其父节点的许可。然后使用类似的标准来确定其父节点是否请求来自其父节点的许可等。在bw管理器模块320主动管理与一个或多个节点相关联的流的集合的带宽的同时,各种bw管理器彼此通信以向请求节点分配带宽。如上所述,一个规则可以是子树中的子节点处的当前带宽使用的总和不能超过子树中的父节点的max值。在图6c和图6g中示出子树的一些实例。

在示例性实施方式中,qos集合请求3301(其表示针对业务子类别的流的集合所请求的聚集带宽)还可以表示子节点的当前带宽使用的总和。单独的或与其他bw管理器通信的bw管理器可以确定是否存在与一个或多个父节点相关联的可用带宽。bw逻辑模块360然后基于请求节点的一个或多个父节点的可用带宽来计算bw集合响应3302,请求节点是与业务子类别的流的集合相关联的子节点。

bw集合响应3302由qos管理器模块330接收并且表示称作分配带宽(b)的量。分配带宽(b)表示由bw管理器模块320分配给业务子类别的流的集合的带宽。qos逻辑模块361然后将分配带宽(b)的份额分配给用于业务子类别中的流的集合的各种应用优先级别。所分配的份额可以称为应用优先级份额的应用优先级别的百分比份额。然后,qos逻辑模块361将来自应用优先级别的百分比份额(与应用优先级别相关联)的份额分配给业务子类别中的流的集合中的单独流。

在另外的实施方式中,qos管理器模块330向wm模块340发送qos流响应3402以用于业务子类别的流的集合内的单独流。在qos流响应3402中向单独流分配的带宽的量称为qos分配。在各种实施方式中,通告的窗口大小wa等于qos分配×rtt1。值rtt1表示发送主机和bw管理系统125之间的往返时间。

如上所述,bw集合响应3302是随着wm流请求3401改变而随时间改变的动态值。在示例性实施方式中,qos流响应3402也是随时间改变的动态值。在各种实施方式中,qos流响应基于wm流请求3401中请求的带宽wmax/rtt2,其可以由qos管理器模块330或bw管理器模块320,或者qos管理器模块330和bw管理器模块320修改。在一些实施方式中,qos分配可以等于、小于或者大于wm流请求3401中请求的带宽wmax/rtt2。在各种实施方式中,bw管理系统125向tcp发送器通告期望的窗口大小wa,使得从tcp发送器和tcp接收器发送的tcp数据包以bw管理系统125期望的速率发送。bw管理系统期望的速率可以表示可能不丢弃tcp数据包的速率。将参考图3f进一步论述用于wm的流逻辑模块362。

流缓冲器354可包括接收侧缓冲器(未示出)和传输侧缓冲器(未示出)。在一些实施方式中,接收侧缓冲器可以保存需要由vtcp模块109加速或由bw管理系统125管理的每个tcp连接的所有数据包。接收侧缓冲器沿着接收路径(从网络105至客户os)保存数据包。在其他实施方式中,传输侧缓冲器应用于从客户os向网络105发送的数据包。客户os可以是在图1a中示出的客户os115或者116。

流表355可以表示存储tcp连接信息和每个连接的状态的一个或多个表。在各种实施方式中,tcp连接的tcp连接信息和状态可以由一个或多个tcp报头字段中的数据来定义。在另一实施方式中,流表355可以存储未包括在来自tcp报头字段的数据中的附加tcp连接和状态信息,诸如用于存储在流缓冲器354中的tcp数据包的副本的位置信息。在各种实施方式中,vtcp模块109接收并存储tcp数据包数据的副本(在缓冲器354和/或流表355中),并且在不改变将由tcp接收器接收的实际tcp数据包数据的情况下还允许改变存储在流表355中的tcp报头信息的副本。

在各种实施方式中,vtcp模块109可以略过tcp发送器的tcp堆栈配置信息,例如窗口大小,而tcp数据包在vtcp模块109和tcp接收器之间传输。可以通过修改、添加或删除在vtcp模块109和tcp发送器之间的数据路径的一部分之间传输的数据包的tcp报头值来覆盖一个或多个tcp报头值。在一些实施方式中,可以基于每个流或每个vm针对tcp数据包而覆盖一个或多个报头值。该tcp报头信息(包括窗口大小)可以存储在流表355中。

配置接口模块356被配置为向用户提供接口以配置由bw管理系统125使用的各种可配置参数。配置接口模块356从用户接收配置参数或者设置。可配置的tcp参数或设置可以由用户在每个虚拟机、每个流或每个应用的基础上配置,其中,流可以是来自数据包的字段的任何组合(包括通配符),包括源ip地址、目的地ip地址、端口及其他协议字段。此外,这些调节符(knob)的配置值可以在tcp连接的生命周期,例如在连接开始期间,或者对于第一兆字节(mb)的数据传送,或连接的生命周期内的任何这种任意周期内改变一次或多次。

配置接口模块356接收配置参数,然后存储这些参数或使它们可被bw管理系统125内的相关逻辑访问以用于进一步处理。

可配置参数的一个实例包括用于hbt中的节点中的每一个的min值和max值。在各种实施方式中,min值和max值是由bw逻辑模块360使用以向各种节点分配min值和max值的配置参数。

可配置参数的另一实例包括将优先级别分配给在服务器机器上运行的应用。应用优先级别参数由qos管理器模块330用于基于流的应用优先级别来在与叶节点相关联的各种流之间分配带宽份额。例如,来自http应用的流可以优先高于来自ftp应用的流。结果,与http应用相关联的流比与ftp应用相关联的流获得叶节点的带宽更大的份额。由qos管理器模块330使用的一些其他可配置参数包括缩放因子(a),其指示如果存在一些备用容量,则加速或减速属于给定优先级别的流的速度有多快。qos管理器模块330还可以配置有分配给应用优先级份额的带宽的百分比。该分配的带宽规定应当分配给给定应用优先级别的流的总带宽的份额。

在各种实施方式中,配置接口模块356可包括用于存储配置参数的表。在可替换的实施方式中,配置参数可以存储在流表355中。

图10a-图10f提供两个主机之间的流的实例。在各种实施中,vtcp模块109或者bw管理系统125代表接收主机接受来自发送主机的数据包。如图2a-2e中所示,并且参考图3c,bw管理系统125(或125a-125c)驻留在沿着主机之间的数据路径的各种位置。当数据包从发送主机发送到接收主机时,数据包被bw管理系统125接受,并且在bw管理系统125将数据包发送到接收主机之前至少临时地存储在流缓冲器354中。流表355被配置为将与数据包相关的数据包信息和其他配置信息存储在流缓冲器354中。配置接口模块356被配置为接收来自用户的配置信息和设置。

在各种实施方式中,图3c的带宽使用跟踪模块357被配置为跟踪流的集合的带宽使用。带宽使用跟踪模块357可包括业务类别带宽使用跟踪模块3203(在图3d中示出)或状态跟踪模块3303的至少一部分(在图3e中示出)或流使用跟踪模块3406(如图3f中示出)。带宽使用跟踪模块357跟踪服务器的流的集合的带宽使用。这些跟踪值可以表示估计值或实际值。

还可以在各个等级跟踪带宽使用,例如基于应用优先级的每个流、每个流的集合,基于业务子类别的每个流的集合,或基于业务类别的每个流的集合的跟踪。在示例性实施方式中,流使用跟踪模块3406驻留在wm342(如图3f中所示)内并跟踪单独流的当前使用。在各种实施方式中,当前带宽使用由wmax/rtt2表示。wmax/rtt2的带宽请求量可以表示特定时间点的带宽使用值。当前带宽使用可以参考估计的或者实际的带宽值。在示例性实施方式中,当前带宽使用随着从发送主机发送数据包的速率改变而随时间改变。在其他实施方式中,状态跟踪模块3303驻留在qos管理器331(图3e中所示)内,并且通过应用优先级别跟踪流的集合的当前使用。在一些实施方式中,状态跟踪模块3303跟踪qos逻辑模块361缩放单独流之前和之后的当前使用,然后聚集应用优先级别的缩放值,然后将应用优先级别合计到qos集合请求3301中。缩放值可以表示通过缩放因子缩放wm流请求3401或基于等份额或比例份额的分配类型进行调整。

在各种实施方式中,在节点级别,bw管理器模块320跟踪hbt内的各个等级处与服务器相关联的流的集合的当前使用。hbt内的节点中的每一个表示业务类别或者子类别的流的集合。bw管理器模块320使用该带宽使用跟踪信息来确定是否向请求带宽的节点重新分配带宽。

在各种实施方式中,带宽使用跟踪模块357包括或可访问用于跟踪当前带宽使用的跟踪表。

在各种实施方式中,bw管理器模块320被配置为通过向业务类别分配带宽限制,管理与虚拟资源相关联的业务类别的、与服务器相关联的流的集合的带宽。业务类别布置在hbt中,其中,流的集合表示最高级别的全面业务类别。hbt中的根节点表示全面业务类别。与全面业务类别相关联的流的集合被细分为表示也称为叶业务子类别的业务类别的较小集合。叶业务子类别表示hbt的最低级别的业务类别。叶业务子类别中的每一个由至少一个业务类别参数过滤。业务类别中的流表示两个主机之间的端到端的连接。

在一些实施方式中,qos管理器模块330被配置为基于所分配的带宽限制为业务类别分配叶业务子类别的应用优先级份额和应用优先级份额的流份额。应用优先级份额表示基于应用优先级别分配给流的优先级组的带宽份额。流份额表示基于所选择的操作模式分配给流的优先级组中的单独流的带宽份额。图7c-图7d提供分配的优先级份额和分配的流份额的实例。

在示例性实施方式中,wm342(在图3a中示出并且在图3f中进一步示出)被配置为通过调整通告给第一主机的窗口大小来管理针对单独流的带宽。通告的窗口大小控制第一主机向第二主机传输数据包的速率。通告的窗口大小基于来自qos管理器模块330的分配的流份额。

图3d示出根据示例性实施方式的带宽管理器的框图。在图3d中示出的bw管理器327与hbt中的节点相关联。bw管理器327包括带宽分配模块3202、业务类别带宽使用跟踪模块3203、bw逻辑模块3600、及批准跟踪模块3206。bw逻辑模块3600包括以下模块的一个或多个:规则管理模块3204、带宽请求批准模块3205、及批准跟踪模块3206。在各种实施方式中,bw逻辑模块3600提供功能以管理与由叶节点(也称为业务子类别)表示的业务类别相关联的流的带宽。尽管bw管理器327表示叶节点,但是其它节点和根节点的bw管理器还可包括图3d中所示的一个或多个模块或组件。

在示例性实施方式中,节点创建模块(未示出)被配置为创建多个节点。hbt中的节点的每一个表示hbt中的业务类别中的一个。hbt包括具有来自多个节点的父节点的至少一个子树以及来自多个节点的至少一个子节点。在另一实施方式中,节点创建模块3201被配置为创建与多个节点中的每一个相关联的bw管理器。

在各种实施方式中,bw逻辑模块3600被配置为基于min值和max值应用各种规则,以控制与节点处的业务类别相关联的流的集合的带宽。

在一些实施方式中,带宽分配模块3202被配置为在hbt的配置期间将min值分配给hbt中的节点。min值表示分配给与节点处的业务类别相关联的流的集合的带宽预留。在其他实施方式中,带宽分配模块3202被配置为向节点分配max值,max值表示可用于与节点处的业务类别相关联的流的集合的最大容量。带宽分配模块3202对min值和max值的分配可以用于实现分配的聚集总和min值规则和配置的max值规则。

在另一实施方式中,子类别带宽使用跟踪模块3203被配置为将与节点处的业务类别相关联的流的集合的当前使用与分配给节点的min值进行比较。业务类别带宽使用跟踪模块3203还被配置为识别何时期望与节点处的业务类别相关联的流的集合的当前使用超过分配给节点的min值。业务类别带宽使用跟踪模块3203可以用于实现当前使用规则。在各种实施方式中,业务类别带宽使用跟踪模块3203和带宽分配模块3202结合规则管理模块3204可以用于实现上述第一、第二和第三规则。

在示例性实施方式中,bw逻辑模块3600包括规则管理模块3204,其被配置为由与第一子树中的父节点相关联的bw管理器从与第一子树中的子节点相关联的bw管理器接收第一带宽请求。规则管理模块3204还被配置为由与第一子树中的父节点相关联的bw管理器确定来自第一子树中的子节点的第一带宽请求是否不将第一子树中所有子节点的min值的聚集总和增加为高于第一子树中父节点的min值。bw逻辑模块3600还可包括带宽请求批准模块3205,其被配置为通过与第一子树中的父节点相关联的bw管理器批准用于来自第一子树中的子节点的第一带宽请求的带宽值。带宽请求批准模块3205还可以被配置为将批准的带宽值通信到与第一子树中的子节点相关联的bw管理器。bw逻辑模块3600还可包括批准跟踪模块3206,其被配置为利用批准的带宽值更新第一子树中的父节点的分配的带宽。

在另一示例性实施方式中,bw逻辑模块3600包括规则管理模块3204,其被配置为由与第一子树中的父节点相关联的bw管理器接收来自与第一子树中的子节点相关联的bw管理器的第一带宽请求(例如,qos集合请求3301)。规则管理模块3204还可配置为由与第一子树中的父节点相关联的bw管理器确定来自第一子树中的子节点的第一带宽请求是否增加第一子树中所有子节点的min值的聚集总和而高于第一子树中父节点的min值。bw逻辑模块3600可包括带宽请求批准模块3205,该带宽请求批准模块被配置为发送第二带宽请求至第一子树中的父节点的父节点。第一子树中的父节点的父节点表示第二子树中的子节点。带宽请求批准模块3205还可配置为由与第二子树中的父节点相关联的bw管理器确定来自第二子树的子节点的第二带宽请求是否不增加第二子树中所有子节点的min值的聚集总和而高于第二子树中的父节点的min值。带宽请求批准模块3205还可配置为通过与第二子树中的父节点相关联的bw管理器批准用于来自第二子树中的子节点的第二带宽请求的带宽值。带宽请求批准模块3205还可以被配置为将批准的带宽值通信到与第二子树中的子节点和第一子树中的子节点相关联的bw管理器。bw逻辑模块3600还可包括批准跟踪模块3206,该批准跟踪模块被配置为利用第一子树中的父节点的批准的带宽值更新第二子树中的父节点的所分配的带宽。

图3e示出根据示例性实施方式的qos管理器331的框图。qos管理器331包括状态跟踪模块3303、接口模块3304、及qos逻辑模块3610。在示例性实施方式中,qos逻辑模块3610包括流份额逻辑模块3305和优先级份额逻辑模块3309。

状态跟踪模块3303被配置为跟踪应用优先级别(例如,p1、p2、及p3)的状态。对于示例性实施方式,状态跟踪模块3303跟踪每个应用优先级别(例如,高优先级应用、中优先级应用和低优先级应用)的状态。在各种实施方式中,状态跟踪模块3303跟踪total_request_sizerpx、比例因子(a)和针对应用优先级别b的百分比(%)份额(向与业务类别相关联的流的集合分配的带宽)。对于各种实施方式,这三个参数称作状态跟踪信息或者参数。在一些实施方式中,应用优先级别各自与优先级等级相关联,例如,p1表示高优先级应用,p2表示中优先级应用或p3表示低优先级应用。图7a示出了状态跟踪模块715,该状态跟踪模块可以在示例性实施方式中使用状态跟踪模块3303来实现。

将在下面结合图7a-图7d、图8a-图8b(无压模式)和图9a-图9b(欠压模式)的描述更详细论述状态跟踪模块3303。进一步结合图8a-图8b和图9a-图9b的描述来描述接口模块3304。将在下面结合图8a-图8b(无压模式)和图9a-图9b(欠压模式)更详细论述与状态跟踪模块3303结合的qos逻辑模块3610。图7c示出了hbt703的一部分,其包括用于在应用优先级别之间分配带宽的优先级份额逻辑模块3309。图7d示出hbt704的一部分,其包括用于在应用优先级别中的流份额当中分配带宽的流份额逻辑模块3305。流份额基于操作模式(诸如无压模式或者欠压模式)分配。当分配流份额时,不同的规则可以应用于各种实施方式中的不同的模式。

再次参考图3e,接口模块3304被配置以为qos管理器模块330提供接口以用于与bw管理器模块320和wm模块340通信。参考图3b,例如,接口模块3304可以从wm模块340接收wm流请求3401,并且向wm模块340发送qos流响应3402(响应于接收wm流请求3401)。在另一实例中,接口模块3304可以接收bw集合响应3302并且发送qos流响应3402(响应于接收到bw集合响应3302)。在一个实例中,流份额逻辑模块3305包括模式选择模块3306、无压模式模块3307、及欠压模式模块3308中至少一个。模式选择模块3306确定是应用第一操作模式(例如,无压模式)还是第二操作模式(例如,欠压模式)。在一个实施方式中,如果total_request_size(r)小于或者等于阈值选择无压模式,并且如果total_request_size(r)大于阈值选择欠压模式。如果模式选择模块3306确定应用无压模式,那么无压模式模块3307应用第一组模式操作规则。如果模式选择模块3306确定应用欠压模式,那么欠压模式模块3308应用第二组模式操作规则。以下分别结合图8a-图8b和图9a-图9b更详细地描述无压模式和欠压模式。

对于各种实施方式,优先级份额逻辑模块3309确定用于应用优先级份额的所分配的带宽,并且流份额逻辑模块3305确定用于流份额的所分配的带宽。图7d示出了应用优先级份额的分配的带宽和用于应用优先级份额中的一个的流份额的分配的带宽的实例。

图3f示出根据示例性实施方式的wm342的框图。wm342包括接口模块3406和流逻辑模块3620。接口模块3406为wm342提供用于在wm342和与其相关联的qos管理器(例如,qos管理器331)之间提供和接收通信的功能。接口模块3406可包括流请求模块3403和流响应分配模块3404。在示例性实施方式中,流请求模块3403提供wm流请求(例如,图3b中所示的wm流请求3401),并且流响应分配模块3404提供qos流响应(例如,图3b中示出的qos流响应3402),并且流响应分配模块3404提供qos流响应(例如,图3b所示的qos流响应3402)。在示例性实施方式中,通常为发送到qos管理器模块330的每个wm流请求提供qos流响应。在各种实施方式中,接口模块3406基于每个流提供通信。

流逻辑模块3620包括窗口大小生成模块3405。在各种实施方式中,wm模块340包括多个wm(例如,wm342)。wm中的每一个可包括窗口大小生成模块3405,该窗口大小生成模块配置为生成由bw管理系统125发送主机(例如,tcp发送器)通告的用于单独流的窗口大小wa。在各种实施方式中,流逻辑模块362计算wm流请求3401和针对单独流向发送主机通告的窗口大小wa。由wm流请求3401请求的单独流的带宽量由等式wmax/rtt2表示。一旦由流逻辑模块362针对单独流计算wmax/rtt2,bw管理系统125计算单独流的qos分配。流逻辑模块362可以使用qos分配计算通告的窗口wa。与图10a-图10f一起更详细地描述包括窗口大小生成模块3405的流逻辑模块3620。

在示例性实施方式中,wm模块340包括多个wm342。每个wm342包括窗口大小生成模块3405,该窗口大小生成模块被配置为:基于tcp接收器正在接收针对单独流的数据包的估计速率以及第一主机和用于单独流的系统之间的往返时间,生成bw管理系统125向tcp发送器通告的单独流的窗口大小。

在另一实施方式中,每个wm342包括接口模块3406,其被配置为:基于向tcp发送器通告的窗口大小发送用于估计的当前流使用的wm流请求;以及接收对wm流请求的qos流响应,其指示所分配的流份额。

hbt可以用于可视地解释bw管理系统125基于业务类别为与服务器相关联的流提供qos的方式。在图6a中示出hbt600的实例。在示例性实施方式中,每个hbt(例如,hbt600)对应于运行虚拟化软件以创建vm的多个实例的物理服务器(例如图1a所示的服务器106)。在可替换的实施方式中,例如docker环境,虚拟化软件可以不用于创建多个vm实例。

hbt中的节点(除根节点之外)表示示例性实施方式中与虚拟化资源相关联的业务类别。在其他实施方式中,业务类别可以表示未虚拟化的资源。例如,虚拟资源可以是vm,具有一个或多个vm的租户或vm池。图4a示出了具有两个租户410和420的服务器401,其中每个租户410、420各自具有两个vm。如根节点所表示的,hbt中的最高级别表示服务器401的流的全面业务类别,如图4a所示。与服务器401相关联的虚拟资源被细分为两个租户410和420。在该实例中,租户410、420中的每一个分配5gpbs的带宽。租户410、420可以表示具有分配有一个或多个vm的实体或组织。例如,从分配给租户410的总共5gbps中,vm411分配3gbps并且vm412分配2gbps。另外,从分配给租户420的总共5gbps中,vm413分配3gbps并且vm414分配2gbps。每个vm由图4a中的叶节点表示。可能不是服务器的所有虚拟资源都可以分配资源。这些资源可用于未来的租户。应当理解,与服务器相关联的vm和租户的数量可以改变。

参考图4a和图6a,在一个实例中,服务器401对应于根节点601。租户410对应于节点610,并且租户420对应于节点620。vm411、vm412、vm413、及vm401各自分别对应于节点611、612、621、及622。节点611、612、621、及622各自是叶节点。叶节点表示hbt中最低级别的节点。根节点601下方的每个节点对应于一个或多个虚拟化资源。

对应于服务器的根节点601与表示与物理服务器相关联的所有流的全面业务类别相关联。hbt中的叶节点和其他节点各自与业务类别相关联。每个业务类别由一个或多个标准或参数(通常由用户配置)过滤。物理服务器可以在用于多个流的端到端连接中与主机中的一个相关联。例如,主机可以表示vm、docker或其他类似的对象。vm411、412、413或414中的任一个内的客户操作系统可以表示tcp发送器、tcp接收器或两者。在各种实施方式中,tcp接收器可以称为接收主机,并且tcp发送器可以称为发送主机。流可包括活动和非活动会话。bw管理系统125可以在两个主机之间创建的会话的整个有效期内管理流的带宽。流中的每一个与在服务器401上运行的应用相关联。参考图4b,服务器401可以具有安装其上的多个应用。例如,服务器401可以关于与应用421、422、423中的每一个相关联的多个流运行http应用421、ssh应用422和ftp应用423。

hbt内的每个节点表示业务类别。除根节点之外,不同分层级别的节点可以以不同的业务类别进行过滤。图6f示出了通过与分层级别0上的ip地址(例如,服务器)相关联的业务类别、与分层级别i相关联的端口以及然后分层级别2的协议过滤的hbt660的实例。用于过滤业务类别的参数的其他实例以业务类别表525在图5b中示出。

hbt中的最低节点称作叶节点。参考图6a,叶节点由节点611、612、621及622表示。bw管理系统125内的bw管理器模块320包括多个bw管理器,如图3a所示。bw管理器模块320可以用于管理一个或多个树的带宽,其中每个树具有一个根节点。例如,图6b示出了对应于单个hbt600的bw管理器模块607。bw管理器模块607包括多个bw管理器,其中bw管理器602、615、616、617、625、626和627中的每一个对应于hbt600中的节点。在其他实施方式中,bw管理器模块320可以用于管理与多个服务器相关联的流。

如上所述,hbt中的每个节点可以具有对应的bw管理器。参考回图3a,bw管理器321、322、及323表示用于根节点的bw管理器。bw管理器324、325和326表示用于其他节点(即,除了根节点和叶节点之外的所有节点)的bw管理器。bw管理器327、328和329表示叶节点的bw管理器。对于可替换实施方式,bw管理器根节点、bw管理器其他节点、及bw管理器叶节点的数目可以改变。与节点相对应的bw管理器负责管理该节点处的带宽,其包括管理分配给该节点的所有虚拟资源的带宽。

如上所述,在各种实施方式中,bw管理系统125创建与分层树中的每个节点相关联的bw管理器。bw管理器模块320可包括用于创建与用于一个或多个树的子类别相关联的节点的节点创建模块(未示出)。在一些实施方式中,每个业务类别具有为其创建的对应节点。如果业务类别已配置有最小带宽预留(min),则bw管理器确保可用于该类别中的所有流的聚集带宽大于或等于预留的带宽。类似地,如果业务类别配置有最大允许带宽或带宽上限(max),则bw管理器有责任确保流(在此业务类别中)的聚集带宽不超过带宽上限。min值和max值称作分配到节点的带宽限制。节点处的带宽的当前使用由带宽管理器模块320管理以确认所分配的带宽限制。

分层树内的节点可以具有用户配置的最小值(min)和/或最大值(max)。在示例性实施方式中,在bw管理系统125配置一个或多个hbt时,分配min值和max值,而不是当bw管理系统125主动管理与一个或多个hbt相关联的一个或多个业务类别或子类别(也称作业务子类别)的带宽时。对于各种实施方式,在整个说明书中,业务类别和业务子类别可以可互换地使用,除了业务类别与根节点相关联(其称作全面业务类别而不是业务子类别)之外。

min是指针对特定节点的预留或保证的带宽量。max指用于特定节点的上限。如果配置了节点的min值和max值,则将这些值分配给该节点。如果没有为节点配置min值,则在示例性实施方式中对应的bw管理器分配值“0”。如果没有为节点配置max值,则在示例性实施方式中对应的bw管理器分配从该节点的父继承的值。在一些实施方式中,min值总是小于或等于max值,使得不允许配置min值>max值。在一些实施方式中,与每个节点或节点创建模块(未示出)相关联的带宽管理器负责如上所论述的分配min值和max值。此外,与父节点相关联的带宽管理器可以在其子节点(如果被请求)之间重新分配带宽,并且假定满足某些标准。标准可以由一个或多个规则限定。

在各种实施方式中,bw管理系统125为分层树中的每个节点创建bw管理器。bw管理器模块320可包括用于创建与用于一个或多个树的子类别相关联的节点的节点创建模块(未示出)。在一些实施方式中,每个业务类别具有为其创建的对应节点。如果业务类别已配置有最小带宽预留(min),则bw管理器确保可用于该类别中的所有流的聚集带宽大于或等于预留的带宽。类似地,如果业务类别配置有最大允许带宽或带宽上限(max),则bw管理器有责任确保流(在此业务类别中)的聚集带宽不超过带宽上限。

在下面的实例中,假设min值等于b(min=b),并且max值等于a(max=a)。最小预留(min值)和最大值(max值)可以独立配置,并且对于每个业务类别可以不同。最小预留的配置意味着业务类别将始终保证带宽b。在一些实施方式中,没有其它业务类别将获得该带宽的任何份额。然而,如果剩余带宽可用,则这种业务类别总是可以有机会获得比b更多的带宽。最大带宽的配置将此业务类别可以使用的最大带宽限制为a。bw管理器不保证高于b的任何带宽。可能由于网络带宽的争用,业务类别可能不接收带宽b以上的带宽a。

在一些实施方式中,给定节点的min值可以表示其他节点不能使用的用于节点的预留带宽,即使给定节点没有完全利用预留的带宽。在其他实施方式中,为给定节点预留的带宽对于该节点在任何时候想要使用时是可用的,但是当给定节点没有完全利用其预留的带宽时,可以与其他节点共享。在一些实施方式中,当预留的带宽被共享,然后被返回时,返回中可能存在延迟。

如上所述,可以为与服务器相对应的全面业务类别创建bw管理器模块320。根节点与服务器的全面业务类别相关联。hbt600内的所有其他节点可以与通过一个或多个标准或参数过滤的业务类别相关联。在一些实施方式中,根节点具有表示其相应服务器的最大链路容量的max值。在根节点中,min值还被配置为等于最大链路容量。如图6c所示,每个hbt600可以细分为多个子树。每个子树包括父节点和一个或多个子节点。hbt600包括三个子树。子树603包括根节点601和两个子节点610和620。子树604包括父节点610(其为子树603中的子节点)和两个子节点611和612。子树605包括父节点620(其为子树603中的子节点)和两个子节点621和622。

bw管理器模块320可以使用多个规则来管理hbt600及其相关联的子树603、604、605的各个节点处的带宽。一些规则可以称为配置规则,并且其他规则可以在bw管理器模块320的操作期间使用,同时bw管理器模块320主动地管理来自与一个或多个业务类别或子类别相关联的流的集合的带宽。图3d的bw管理器327中所示的一个或多个模块可以用于配置和实现bw管理器327使用的操作规则。例如,带宽分配模块3202可以用于配置min值和max值。业务类别带宽使用跟踪模块3203结合规则管理模块3204可以用于在bw管理系统125主动管理流时实现规则。

在一些实施方式中,在配置模式(图3d所示)期间,带宽分配模块3202可以提供用于配置分配的min值的聚集总和规则(也称为配置规则1)和配置的max值规则(也称为配置规则2)的功能。当bw管理系统125主动管理与用于业务类别(或子类别)的流的集合相关联的带宽时,规则管理模块3204可以负责结合业务类别带宽使用跟踪模块3203实现的一个规则称为当前使用规则。

配置规则1指定子树中的子节点的分配的min值的聚集总和应该小于或等于子树中的父节点的分配的min值。

配置规则2指定给定的子树中的每个节点处配置的max值应该小于或等于给定的子树中的父节点处配置的max值。在一些实施方式中,可能的是,给定的子树中的子节点的分配的max值的聚集总和大于给定的子树中的父节点的max值。

配置规则(称作配置规则3)的另一实例是对于节点,min值小于或者等于max值。带宽分配模块3202可以用于实现该规则。

在主动带宽管理期间,规则管理模块3204实施当前使用规则,当前使用规则指定子树中所有子节点的当前带宽使用应小于或等于子树中的父节点的max值。

在主动带宽管理期间实现的规则的另一实例是子节点不能超过其预留的带宽或min值,而没有来自子树中的其父节点的许可。在一些情况下,子树中的父节点还可以表示另一树中的子节点不能超过其预留的带宽或min值,而没有来自另一子树中的其父节点的许可。

在主动带宽管理期间,bw管理器327在与和用于hbt的业务类别(或子类别)相关联的其他bw管理器通信时,负责在由bw管理器模块320实现的各种规则的约束内操作的同时确定可用带宽和在bw集合响应3302中为每个qos集合请求3301分配多少。在bw集合响应3302中分配的量可以称为分配带宽(b)。图6g提供了确定子树中的父节点处的可用带宽的示例。

图6g示出了bw管理系统125可以被配置为提供最小保证预留。如上所述,如果节点未被配置为具有min值,则将min值0分配给该节点。图6g示出了具有父节点671和两个子节点673和674的子树670。假设父节点671的总带宽容量为b。对于示例性实施方式,值b可以表示在图3b中所示的bw集合响应3302中指示的分配带宽b。子节点673分配min值b1并且子节点674分配min值b2。父节点671的可用带宽是b-(b1+b2)。当(与节点相关联的)给定业务类别完全利用其预留带宽(即,min值)时,其相关联的bw管理器可向其父节点671请求带宽。如果存在可用带宽,则与父节点671相关联的bw管理器将准许该请求,并且该请求将不会超过父节点671的最大带宽(即,max值)。对于各种实施方式,如果父节点671是子树的父节点(而不是树的根节点),则父节点671向其父节点(未示出)请求对所请求的高于父节点671的min值的任何量的许可。由父节点671授予或分配的量可以基于标准份额算法(例如,成比例的份额、加权份额等)以在请求来自父节点的额外带宽的一个或多个子节点之间分配可用带宽。父节点671例如通过业务类别带宽使用跟踪模块3203跟踪其分配给其各个子节点673和674的带宽量。如果父节点671先前已向其子节点673和674中的任一个分配了带宽,则可以修改可用带宽的公式。

bw管理系统125负责跟踪每个节点或(每个业务类别)的总带宽使用,以确保它不超过最大量。

图6a示出hbt600,其中bw管理器中的每一个分配min值。根据上述规则,子树中的子节点的分配的min值的聚集总和应当小于或等于子树中父节点的分配的min值。参考图6c的子树603,子节点610和620的min的聚集总和为10gbps,其等于根节点601的min值。参考子树604,子节点611和612的聚集总和是5gbps,其等于父节点610的min值。参考子树605,子节点621和622的聚集总和是5gbps,其等于父节点620的min值。在图6c中示出的节点的min值与在图6a中示出的min值相同。

图6d示出hbt600的替代图。图6d中示出的hbt600的节点布置在不同的分层级别中。分层级别0(606)称作最高级别,分层级别1(607)称作第二最高级别,分层级别2(608)称作最低分层级别。分层级别0(606)包括根节点601并且具有分配的min值10gbps。分层级别1(607)包括节点610和620并且具有聚集min值10gbps。分层级别2(608)包括叶节点611、612、621及622,并且具有聚集min值10gbps。对于图6d所示的实施方式,hbt600是对称的(在级别1和级别2处),因此分配给级别1的节点的聚集min值等于分配给级别0的min值,并且分配给级别2处的节点的聚集min值等于分配给级别0的min值。

图6e示出具有分配给节点中的每一个的min值和max值的hbt600的实例。当叶节点(例如,节点611、612、621或622)确定其对带宽资源的当前使用接近其min值时,与叶节点相关联的bw管理器可以向与其父节点相关联的bw管理器发送对额外带宽资源的请求。叶节点处的带宽资源的当前使用包括与叶节点相关联的所有流当前利用的带宽资源。例如,如果叶节点611确定其所有流的当前使用接近其min值3gbps,则bw管理器616向与父节点610相关联的bw管理器615发送请求。与父节点610相关联的bw管理器615评估是否准许与其子节点611相关联的bw管理器616请求的额外资源的请求。如果bw管理器615准许bw管理器616的请求,则所准许的额外资源可以与所请求的额外资源相同,多于所请求的额外资源,或者少于所请求的额外资源。

如上所述,子树中所有子节点的当前带宽使用应小于或等于子树中父节点的max值。参考子树603,子节点610和620的当前使用应当小于或等于10gbps,该值是分配给根节点601的max值。参考子树604,子节点611和612的当前使用应当小于或等于8gbps,该值是分配给父节点610的max值。参考子树605,子节点621和622的当前使用应当小于或等于7gbps,该值是分配给父节点620的max值。

如上所述,给定的子树中的每个节点处配置的max值应该小于给定的子树中的父节点处配置(或分配)的max值。参考子树603,分配给子节点610和620的max值小于10gbps,该值是分配给父节点601的max值。参考子树604,分配给子节点611和612的max值小于8gbps,该值是分配给父节点610的max值。参考子树605,分配给子节点621和622的max值小于7gbps,该值是分配给父节点620的max值。

如上所述,可能的是,给定的子树中的子节点的分配的max值的聚集总和大于给定的子树中的父节点的max值。例如,子树603具有等于15gbps的子节点610和620的分配的max值的聚集总和,其大于分配给根节点601的分配的max值10gbps。在另一实例中,子树604具有等于9gbps的子节点611和612的分配的max值的聚集总和,其大于分配给父节点610的8gbps的分配的max值。

参考回图3a,bw管理系统125包括具有多个bw管理器的bw管理器模块320。在各种实施方式中,bw管理器与hbt中的节点相关联。bw管理器负责在每个节点分配min值和max值,然后监视节点处的带宽使用。如果子节点处的当前使用低于min值(即,未充分利用为给定节点预留的带宽),则在一个或多个其他子节点请求额外带宽的情况下,与其父节点相关联的bw管理器可能将一些预留带宽重新分配给其子树中的其他子节点。子树中的子节点可能不具有超过其min值的当前带宽使用(即,过度利用为给定节点预留的带宽),除非其接收子树中的其父节点对分配指定量的额外带宽的许可。在一些实施方式中,一旦min值和max值分配给节点,则这些值不改变。在其他实施方式中,可以改变min值和max值,只要它们在由上述各种配置规则描述的约束下改变即可。然而,bw管理器跟踪节点已经分配给其子树内的其他子节点的额外带宽,以确保与bw管理器相关联的父节点的当前使用不超过分配给父节点的bw管理器的max值。

在各种实施方式中,多个vm共享服务器。当服务器由许多不同的vm共享时,可能变得重要的是,基于每个vm预留带宽,使得在vm之间存在性能隔离。例如,如果服务器正由四个vm共享,则用户可以通过配置min值和max值来设置最小预留带宽和最大容量。策略的一个实例是将服务器的25%的带宽资源分配给四个vm中的每一个。在该实例中,每个vm具有服务器的带宽资源的相等份额。

在其他实例中,用户可以选择将更大或更小的带宽份额给予一个或多个vm。参考图4c,对应于分层树(未示出)中的根节点的服务器450在四个vm之间分配了其10gbps的带宽。vm451分配40%的份额,vm452分配30%的份额,vm453分配15%的份额,以及vm454分配15%的份额。vm451、452、453、及454可以表示虚拟资源池。

图4d示出了分配给图4c中示出的vm451的资源可以在不同应用之间对其分配的资源进行优先化的方式。在这个实例中,用户可以选择性地使在vm内运行的一个应用比在同一vm上运行的其他应用执行得更好。在该实例中,至少两个应用(邮件服务器应用460和网络服务器应用465)在vm451上运行。邮件服务器应用460表示高优先级应用以及网络服务器应用465表示中优先级应用。优先级是预先确定的并且基于带宽优先级。换言之,来自邮件服务器应用460的流被认为比来自网络服务器应用465的流具有更高的优先级,并且可以获得分配给vm451的40%带宽中更大的份额。图4d还示出了与邮件服务器应用460和网络服务器应用465相关联的流可以属于业务类别tcp。tcp业务类别可以利用端口进一步过滤。邮件服务器应用460与端口25相关联,并且网络服务器应用465与端口80相关联。在该实例中,向vm451分配服务器的带宽资源(或总链路容量)的40%的份额。具有比网络服务器应用465更高的优先级的邮件服务器应用460将获得分配给vm451的带宽的更大的份额。

图6f进一步示出了共享服务器的许多应用之间的带宽管理。hbt660包括根节点6010、其他节点6100和6200、及叶节点6120和6210。hbt660包括三个分层级别(由框661示出的级别0,由框662示出的级别1和由框663示出的级别2)。在该实例中,用户可以通过配置min值和max值来设置最小带宽预留和最大容量。min值和max值可以基于每个应用进行配置,创建通过ip地址、端口和协议过滤的业务类别。例如,在tcp端口80上运行的网络服务器获得50%的最小带宽预留,并且tcp端口3306上的mysql服务器获得30%的最小带宽预留。如图6f所示,分层级别1由端口号过滤,分层级别2由协议类型(例如,tcp)过滤。

对于示例性实施方式,bw管理系统125包括bw管理器模块320,该bw管理器模块被配置为向由hbt中的节点表示的业务类别分配带宽预留。hbt包括作为hbt中最高节点的根节点和一个或多个子树,每个子树具有父节点和一个或多个子节点。根节点表示全面业务类别,其包括用于与虚拟资源相关联的服务器机器的集合流。根节点作为单个子树的父节点包括在单个子树内。作为单个子树中的子节点而包括在单个子树内的一个或多个子节点被称为叶节点。hbt中根节点下面的节点各自与业务类别(也称为业务子类别)中的一个相关联。业务类别中的每一个表示通过至少一个业务分类参数过滤的来自全面业务类别的流的集合。在该示例性实施方式中,bw管理器模块320还被配置为对于hbt中的每个子树,确保子树中的一个或多个子节点的分配的带宽预留的和不超过子树中父节点的所分配的带宽预留,而没有来自子树中的父节点的分配带宽。

在又一个实施方式中,根节点具有等于服务器的总链路容量的分配的带宽预留。在另一实施方式中,hbt中的节点的分配的带宽预留表示为hbt中的节点保证的带宽。在其他实施方式中,来自子树中的父节点的带宽分配表示基于可用带宽在子树内的子节点之间进行带宽的重新分配。

在其他示例性实施方式中,bw管理器模块320包括多个带宽管理器(bw管理器)327。bw管理器327中的每一个与hbt中的节点中的一个相关联以管理与节点相关联的业务类别的带宽。多个bw管理器327包括用于第一子树中的叶节点的叶bw管理器、用于第一子树中的父节点的父节点bw管理器、及一个或多个其他子节点bw管理器。在一些实施方式中,叶节点bw管理器被配置为:确定与叶节点相关联的业务类别何时利用接近第一子树的叶节点的分配的带宽预留的带宽;并向父节点bw管理器发送对额外带宽的请求,请求包括第一请求的带宽量。在其他实施方式中,第一子树的父节点bw管理器被配置为:确定第一子树的父节点是否具有可用带宽以向第一子树中的叶节点分配额外带宽;并且向叶节点分配可用带宽的至少一部分。在另一实施方式中,第一子树的父节点的父节点bw管理器被配置为:确定第一子树内的子节点的分配的带宽预留的总和何时小于或等于第一子树中的父节点的分配的带宽预留;并且向叶节点分配未分配的带宽的至少一部分。在又一实施方式中,第一子树的父节点bw管理器47被配置为:确定第一子树内的子节点的分配的带宽预留的当前使用的总和何时小于或等于第一子树中的父节点的分配的max值或者带宽上限;向叶节点分配未利用的分配的带宽的至少一部分;以及向第一子树的叶节点的bw管理器发送已经向叶节点分配了第一指定量的带宽的响应。

在另一示例性实施方式中,第一子树的父节点bw管理器被配置为:确定第一子树内的子节点的分配的带宽预留的当前使用的总和何时接近父节点的分配的带宽预留;以及向第二子树的父节点的bw管理器发送额外带宽的请求,请求包括第二请求带宽量,第一子树的父节点表示第二子树中的子节点。在一些实施方式中,第二子树的父节点的父节点bw管理器被配置为:确定第二子树内的子节点的分配的带宽预留的当前使用的总和何时小于或者等于第二子树中的父节点的分配的带宽预留;向第一子树的父节点分配未利用的分配的带宽的至少一部分;以及向第一子树的父节点的bw管理器发送响应,其指示已经向第一子树的父节点的bw管理器分配了第二指定量的带宽。在其他实例中,第一子树的父节点bw管理器被配置为向叶节点bw管理器发送已经向叶节点分配了第三指定量的带宽的响应。在另一实例中,第一指定量等于、小于或者大于第一请求带宽量。在其他实施方式中,第三指定量等于、小于或者大于第一请求带宽量。

在各种示例性实施方式中,hbt中非根节点或叶节点的节点可以作为父节点或子节点包括在多个子树内。在另一实施方式中,hbt中根节点以下的节点各自与不同的业务类别相关联。在另一实例中,hbt中相同等级的父节点使用相同的业务类别参数来过滤与全面业务类别相关联的流。在其他实例中,叶节点由来自多个子树的多于一个父节点的多个分类参数过滤。

在其他示例性实施方式中,bw管理器模块320被配置为:将用户配置的带宽值分配给由用户配置的节点的带宽预留;并且将零分配给未由用户配置的节点的带宽预留。

在一些实施方式中,bw管理器模块320被配置为:向由hbt中的节点表示的业务类别分配最大容量。在其他实施方式中,bw管理器模块320被配置为将等于服务器的整个链路容量的最大容量分配给由根节点表示的全面业务类别。在一些实例中,hbt中的子树中的每个子节点的分配的最大容量小于或等于子树中父节点的分配的最大容量。在其他实例中,bw管理器模块320被配置为:对于hbt中的子树中的每个,确保子树中所有子节点的带宽的当前使用小于或等于子树中的父节点的分配的最大容量。在另外的实例中,bw管理器模块320被配置为:将用户配置的带宽值分配给由用户配置的节点的最大容量;并将分配给父节点的最大容量分配给未由用户配置的节点的最大容量。

参考图3a,qos管理器模块330包括多个qos管理器331、332、及333。hbt内的叶节点具有相关联的qos管理器。qos管理器331、332和333负责分配与叶节点相关联的bw管理器分配给叶节点的带宽的份额(例如,优先级应用级别份额和流份额)。带宽的份额基于分配给服务器上运行的应用的优先级来分配。wm模块340包括多个wm子模块341、344及347。子模块341、344及347中的每一个对应于服务器上运行的特定应用(或者应用优先级)。多个wm342、343、345、346、348、349在子模块341、344、及347中的每一个内。与根节点相关联的用于服务器的所有流具有对应的wm。wm管理单个流(例如,tcp流)的带宽,并向qos管理器请求带宽。图3f示出wm342的示例性实施方式。图10a-图10f示出wm如何调整两个主机之间的特定流的窗口大小的实例。

图7a示出根据示例性实施方式的与叶节点701相关联的hbt700的一部分。叶节点701具有相关联的bw管理器327。bw管理器327与叶节点701相关联并向qos管理器331分配2gbps。qos管理器331负责基于应用优先级别信息在与业务类别相关联的流的集合中的流之间分配带宽。叶节点701可以表示图6a中示出的hbt600中的节点中的一个。qos管理器331和wm子模块341与叶节点701相关联。wm子模块341包括用于高优先级应用730的wm(包括wm731-734),用于中优先级应用740的wm(包括wm741-744)和用于低优先级应用750的wm(包括wm751-754)。wm中的每一个与流735-738、745-748、及755-758中的一个相关联。

qos管理器331负责基于用户配置的应用优先级信息来在流之间分配2gbps带宽预留的份额。如图4b所示,服务器401可以运行多个应用(诸如http应用421、ssh应用422和ftp应用423)。在各种实施方式中,用户可以将这些应用中的一个或多个优先化为高优先级、中优先级或低优先级。这些应用421、422、423可被称为优先级应用级别。较高优先级的应用通常获得分配给叶节点的带宽(例如,分配给节点612的2gbps)的更大的份额。在其他实施方式中,用户可以提供分配给叶节点的带宽的总份额的百分比(%),其被分配给高优先级流、中优先级流和低优先级流的集合。在一些实施方式中,带宽管理器系统125可以自动分配分配给高、中和低优先级流集合中的每一个的份额。

状态跟踪模块3303(图3e中所示)可以至少部分地利用图7a的状态跟踪模块711、712和713来实现。在图7a中示出的实例中,状态跟踪模块711与来自高应用优先级别p1的应用相关联,状态跟踪模块712与来自中应用优先级别p2的应用相关联,并且状态跟踪模块713与来自低应用优先级别p3的应用相关联。在各种实施方式中,状态跟踪模块3303与qos逻辑模块3610内的各种组件交互,以基于应用优先级别(与业务类别相关联)分配带宽,也称为分配的带宽b的%份额,以及流份额(与分配的带宽b的%份额相关联)。

qos管理器331基于应用优先级别来跟踪各种应用的状态跟踪信息。在一些实施方式中,状态跟踪信息包括应用优先级别(px)的total_request_size(rpx)、scale_factor(a)和b的%份额,其中x表示优先级应用级别号。例如,如果存在三个优先级应用级别,则所有应用优先级别(与给定节点的业务类别相关联)的总计的总请求大小r等于rp1+rp2+rp3,并且所有应用优先级别的分配带宽b(与给定节点的业务类别相关联)被分成称为%份额p1,%份额p2和%份额p3的b的百分比(%)份额px。在各种实施方式中,分配给应用优先级别的%份额可以通过用户配置。在一些实施方式中,p1的%份额50与p2的%份额和p3的%份额的总和等于b的100%。例如,%份额p1=60%,%份额p2=30%和%份额p3等于10%。

在示例性实施方式中,状态跟踪模块711跟踪高优先级应用(称作p1)的状态。状态跟踪模块712跟踪中优先级应用(称作p2)的状态。状态跟踪模块713跟踪低优先级应用(称作p3)的状态。与高优先级应用相关联的流称为高优先级流(p1流),与中优先级应用相关联的流称为中优先级流(p2流),并且与低优先级应用相关联的流称为低优先级流(p3流)。p1、p2及p3可被称为高、中、及低应用优先级别或者应用优先级等级。

状态跟踪模块715示出不同应用优先级别(p1、p2及p3)的模块(例如,711、712及713)。在该实例中,应用优先级p1表示高优先级应用,应用优先级p2表示中等优先级应用,并且应用优先级p3表示低优先级应用。状态跟踪模块711跟踪与p1相关联的流(例如,流735-738)的状态。状态跟踪模块712跟踪与p2相关联的流(例如,流745-748)的状态。状态跟踪模块713跟踪与p3相关联的流(例如,流755-758)的状态。应当理解,优先级应用级别的数量可以改变,并且与每个优先级应用级别相关联的流的数量可以改变。在可替换的实施方式中,与p1、p2和p3相关联的流的状态由单个状态跟踪模块而不是分离的模块711、712和713跟踪。在各种实施方式中,状态跟踪数据存储在可由qos管理器331访问的一个或多个存储设备中。在各种实施方式中,状态跟踪数据包括应用优先级别(px)的total_request_size(rpx)、scale_factor(a)和b的%份额,其中x表示优先级应用级别号,以及用于计算这三个值的值。

状态跟踪模块711、712和713中的每一个跟踪以下信息:(1)用于跟踪来自属于应用的优先级别的所有活动流的请求的总和(在带宽方面)的total_request_size(rpx);(2)用于提供带宽乘法器的scale_factor(a),通过其加速(或减速)应用的优先级别中的流(例如,如果流接收bmbps的带宽并且加速因子为a,则该流的带宽增加a×b);以及(3)对于应用的优先级别中的所有流实现的带宽的总和,用于应用优先级别(px)的b的%份额。x表示示例性实施方式中的优先级别应用号。以下模块中的一个或多个可以用于至少部分地实现状态跟踪模块711、712和713,或者与状态跟踪模块711、712和713结合使用:流使用跟踪模块3406、状态跟踪模块3303和业务类别带宽使用跟踪模块3203。

在各种实施方式中,百分比份额对于不同的优先级别可以是不同的并且由bw管理器327分配给qos管理器331的总带宽的百分比份额(或者分数)确定。由bw管理器327分配的带宽b可以在bw集合响应3302中提供为分配带宽(b)。分配带宽(b)与关联于业务类别的流的集合相关联,例如与叶业务类别相关联的流的集合。在一些实施方式中,百分比份额(或者分数)可以由用户或者由qos管理器331配置。在图7a所示的实例,对于优先级应用级别p1,百分比份额可以是b的60%,对于优先级应用级别p2,百分比份额可以是b的30%,并且对于优先级应用级别p3,百分比份额可以是b的10%。

在一些实施方式中,如果应用优先级别中的一个不使用其整个百分比份额,则份额的未使用部分可以分配给属于其他应用优先级别的流。例如,假设应用优先级别p1的百分比份额仅利用50%,而不是60%。在该情况下,未使用的10%可以分配至应用优先级别p2。

高优先级流、中优先级流和低优先级流根据分配给优先级应用级别(px,例如p1、p2、p3)的比例因子(a)和百分比份额(px的%份额)的值而变化,并且可称为可配置参数。

在各种实施方式中,高优先级流和中等优先级流具有等于由qos管理器331管理的总带宽(即,在一些实施方式中的分配的带宽b)的优先级应用级别的百分比份额。在其他实施方式中,低优先级流局限于对qos管理器331可用的总带宽的一部分(即,一些实施方式中的分配的带宽b)。

在一些实施方式中,高级流和中级流在分配给比例因子(a)的值中可以不同。高优先级流可以具有比中级流更大的比例因子(a)。在各种实施方式中,这些可配置参数由图3c中示出的配置界面模块356接收。在其他实施方式中,bw管理系统125可以为这些可配置参数自动分配值。

在各种实施方式中,qos管理器331针对应用的每个应用优先级别(例如,高、中或低)以两种模式操作。这两种操作模式(即,无压模式和欠压模式)由qos管理器331用于与应用优先级别(例如,p1、p2或p3)相关联的52份分配流份额。模式选择模块3306可以配置为提供基于阈值选择无压模式或欠压模式的功能。

qos管理器331定义确定哪个模式应当是激活的阈值。预定阈值表示分配带宽b的百分比。在各种实施方式中,百分比针对各种应用优先级别可以是不同的。阈值可以是可配置的参数。在一些实施方式中,当总计的总请求大小(r)小于或等于预定阈值时,无压模式是激活的。当总计的总请求大小(r)大于预定阈值时,欠压模式是激活的。qos管理器331在提供给wm子模块341的流响应(例如,qos流响应3402)中为单独流(对于与业务类别相关联的流的集合)提供流份额。图8a-图8b示出bw管理系统125在无压模式下操作的一部分,以及图9a-图9示出bw管理系统125在欠压模式下操作的一部分。

当qos管理器331以无压模式操作时,当基于第一组操作模式规则分配流份额时,qos管理器尝试加速(或减速)单独流的带宽请求(例如,wm流请求3401)。以下描述涉及无压模式的第一组操作模式规则的实例。如果在无压模式下操作,则qos响应=带宽请求bora×wm流请求的最小值,其中b表示与包括单独流的业务类别相关联的流的集合的分配带宽b,a表示与单独流的应用优先级别相关联的比例因子。qos响应表示分配给单独份额的流份额,然后用于计算窗口大小wa。

当qos管理器331在欠压模式下操作时,它尝试基于第二组模式操作规则在给定应用优先级别中的所有流(与业务类别相关联)之间分配带宽。第二组模式操作规则可以用于称作成比例_份额和均等_份额的分配类型。以下描述第二组操作模式规则的实例。

例如,假设在给定优先级别中有n个流,r的总计的总请求大小以及b(其表示所分配的带宽)的优先级应用级别的百分比份额(例如,p1的%份额)。对于具有请求大小r(r表示来自wm流请求3401的接收量)的流,qos管理器331计算:均等_份额=b/n成比例_份额=(r/r)*b。qos管理器331使用以下算法来为单独流分配流份额(即,给请求流分配带宽):如果(r<均等_份额),则分配r,否则如果(成比例_份额<均等_份额),则分配均等_份额,否则分配min(r,成比例_份额)。

图8a示出了对于wm流请求7411-7441,bw管理系统125的在无压模式下操作的部分s01。图8a示出分别用于带宽请求rl-r4的wm流请求7411-7441。r1带宽请求与流735相关联,r2带宽请求与流736相关联,r3带宽请求与流737相关联,并且r4带宽请求与流73s相关联。在示例性实施方式中,用户接口模块3304(图3e中所示)用于将来自wm731-734的wm流请求7411-7441提供至qos管理器331。

qos管理器331包括用于p1的无压模式模块3307、模式选择模块3306和状态跟踪模块711。在一些实施方式中,模块3307和3306可包括在qos逻辑模块361内。无压模式模块3307指示已选择了无压模式,因为r小于或等于阈值。在各种实施方式中,阈值可以针对不同的应用优先级别而不同。p1的状态跟踪模块711跟踪total_request_size(rp1)。在示例性实施方式中,对于具有3个应用优先级别的带宽管理器模块125,聚集总请求大小(r)表示总计的rp1+rp2+rp3。在示例性实施方式中,qos集合请求(例如,图3b中所示的3301)表示所有应用优先级别的总计的总请求r。

图8b示出了bw管理系统125对于wm流响应在无压模式下操作的部分802。图8b示出来自qos管理器331的对wm流请求7411-7441的响应。在示例性实施方式中,用户接口模块3304(图3e中所示)用于将来自qos管理器331的qos流响应7410-7440提供至wm731-734。在图8b所示的bw管理系统125的部分802中,qos流响应7410-7440示出了称作qos分配的分配的带宽量。无压模式模块3307基于分配带宽b的最小值或通过将针对单独流的带宽请求(r)乘以各种应用优先级别中的流的比例因子(a)来计算无压模式中的qos流请求(例如,3301)。在各种实施方式中,各种应用优先级别的比例因子(a)可以是不同的。用户接口模块3304基于每个流提供wm和qos管理器之间的通信,以及针对与业务类别(或业务子类别)相关联的流的集合提供qos管理器和bw管理器之间的通信。

图9a示出在示例性实施方式中带宽管理树125的以欠压模式操作的部分901。图9a示出了在欠压模式下操作的qos管理器331的实例,其中qos管理器331尝试在给定的应用优先级别中的所有流之间共享带宽。图9a示出了针对与流735相关联的r1带宽,与流736相关联的r2带宽,与流737相关联的r3带宽和与流738相关联的r4带宽的wm流请求7411-7441。在示例性实施方式中,用户接口模块3304(图3e中所示)用于将来自wm731-734的wm流请求7411-7441提供至qos管理器331。rl、r2、r3和r4的值表示在特定时间(t)时流的估计的当前带宽。

在图9a中,qos管理器331包括欠压模式模块3308、模式选择模块3306及p1状态跟踪模块711。在一些实施方式中,模块3308和3306可以在qos逻辑模块361中实现。在各种实施方式中,p1状态跟踪模块711跟踪在图9a-图9b所示的实施方式中等于r1+r2+r3+r4的总_请求_大小(rp1)。wm请求7411-7441分别表示rl-r4的带宽请求。在示例性实施方式中,rl-r4的带宽请求基于等式wmax/rtt2。如果存在3个应用优先级别以计算聚集总请求大小r,则qos逻辑模块361将请求rp1与来自其它应用优先级别(例如rp2和rp3)的其他total_request_size进行聚集。

图9b示出了在由带宽管理器模块(例如,327)处理之后,来自qos管理器331对wm流请求7411-7441的响应。在示例性实施方式中,用户接口模块3304(图3e中所示)用于将来自qos管理器331的qos流响应7410-7440提供至wm731-734。一旦由qos管理器331接收到分配的带宽b,则qos管理器331在分配流份额之前向各种应用优先级别分配百分比份额。欠压模式应用于各种%份额的流份额分配。在示例性实施方式中,欠压模式模块3308基于成比例_份额或者相等_份额的分配类型中的一个来计算qos响应7410-7440。qos响应7410-7440基于成比例_份额或者相等_份额的分配类型。qos响应7410-7440指示流735-738的qos分配。

在图9b所示的bw管理系统125的部分902中,qos流响应7410-7440示出了也称作qos分配的每个流的分配带宽。由qos管理器331发送至其相关联的bw管理器327(图7a所示)的请求包括针对优先级应用级别p1、p2和p3的聚集总请求大小(r),优先级应用级别分别由p1状态跟踪模块711、p2状态跟踪模块712和p3状态跟踪模块713计算。

一旦为流分配了被称为流份额的带宽,则需要在协议发送器和协议接收器(也分别称为发送主机和接收主机)之间传送该信息。在各种实施方式中,如结合图10a-图10f的描述进一步详细描述的,通过操纵tcp窗口(例如,通告窗口wa),信息传送到协议发送器和协议接收器,。

参考回图7a,wm子模块341包括三组wm。用于高优先级应用730的wm组包括wm731-734。用于中优先级应用740的wm组包括wm741-744。用于低优先级应用750的wm组包括wm751-754。流735-738表示p1流。流745-748表示p2流。流755-758表示p3流。

图7b示出根据示例性实施方式的具有三个分层级别的hbt702的一部分的实例。第一级别表示根节点764。根节点764对应于包含用于服务器的所有流的业务类别,并且被配置为具有服务器的网络接口的整个链路容量的max值。在一些实施方式中,根节点764的min值还设置为服务器的网络接口的整个链路容量。分层级别1包括节点765和766,其表示由vlan#过滤的两个业务类别。节点765对应于由vlan1定义的业务类别并且节点766对应于vlan2定义的业务类别。

节点765配置有min值600mbps和max值600mbps。节点766被配置为具有min值100mbps和max值200mbps。带宽管理器324和328负责对供属于由vlan1和vlan2限定的业务类别的所有流使用的合适的带宽使用进行保持。

分层级别2表示层级的第三级别。对于vlan1,由协议过滤的业务类别由节点770和769表示。用于节点770的业务类别由vlan1和tcp协议限定。用于节点769的业务类别由vlan1和udp协议限定。对应于节点770的tcp业务类别配置有min值100mbps。对应于节点769的udp业务类别配置有max值100mbps。这种特定配置导致vlan1tcp业务至少接收100mbps,并且高达600mbps。vlan1udp业务最多接收100mbps。对于vlan2,tcp业务和udp业务总共接收至少100mbps和最多200mbps。对于图7b所示的实例,因为节点769未配置有min值,所以bw管理器329将min值0(未示出)分配给节点769。此外,因为没有为节点770配置max值,所以bw管理器327分配了从节点770的父节点继承的600mbps的值。

图7b中的叶节点中的每一个与bw管理器相关联,该bw管理器与qos管理器相关联。节点769、766及770表示叶节点。与bw管理器328和329相关联的qos管理器未示出。qos管理器331与表示vlan1的tcp流的bw管理器327相关联。可以将qos管理器331配置为在应用的不同优先级别分割分配给业务类别(与节点770相关联)的带宽。例如,vlan1tcp的qos管理器331可以配置为将http业务视为高优先级业务(或p1),将ssh业务视为中优先级业务(p2)和将ftp业务视为低优先级业务(p3)。qos管理器331向p1流7741分配称作p1份额3311的优先级应用份额,向p2流7742分配称作p2份额3312的优先级应用份额以及向p3流7743分配称作p3份额3313的优先级应用份额。p1流7741分别包括两个http流7750和7760以及相关联的wm775和776。p2流7742包括两个ssh流7770和7780以及分别相关联的wm777和778。p3流7743包括两个ftp流7790和7800以及分别相关联的wm779和780。

图7c示出根据示例性实施方式的与叶节点701相关联的bw管理系统125的一部分703。qos管理器331包括优先级份额逻辑模块3309(图3e中也示出)。优先级份额逻辑模块3309在优先级应用级别p1、p2和p3之间分配带宽(由bw管理器327分配给叶节点701)。bw管理器327分配的带宽(b)可称为分配带宽(b)。对于图7c所示的实施方式,总分配带宽(b)由qos管理器311划分为3份额,其中b的60%分配给p1份额3311,b的30%分配给p2份额3312,以及b的10%分配给p3份额3313。

图7d示出根据示例性实施方式的与叶节点701相关联的hbt704的一部分。流份额逻辑模块3305(也在图3e中示出)在流735-738中分配b的p1份额3311,在流745-748中分配b的p2份额3312,及在流755-758中分配b的p3份额3313。p1份额3311在流份额7350-7380之间分割。分配给来自p1、p2和p3份额的每个流(也称为流份额)的带宽量由与关联于业务类别的流的集合相关联的流的操作模式确定,并且在一些实施方式中,基于p1、p2或p3的应用优先级别(或分级)确定。在一些实施方式中,应用优先级别还可以称为应用优先级等级。操作模式的实例包括无压模式和欠压模式。

在示例性实施方式中,qos管理器模块330包括多个qos管理器,每个管理器与叶业务子类别的bw管理器327相关联。叶业务子类别指与hbt中的叶节点相关联的流的业务类别。多个qos管理器331可以各自包括优先级份额逻辑模块3309(图3e所示),被配置为确定与叶业务子类别的bw管理器327相关联的应用优先级等级的数量。应用优先级等级的数量至少包括第一优先级等级和第二优先级等级。在一些实施方式中,与第一优先级等级相关联的流的应用优先级别可以表示第一应用优先级别(也称为p1),并且与第二优先级等级相关联的流的应用优先级别可以表示第二应用优先级别(也称为p2)。优先级份额逻辑模块3309(图3e所示)可以被配置为将分配给叶业务子类别的bw管理器327的带宽的第一部分分配给流的第一应用优先级别(p1),并且将分配给叶业务子类别的bw管理器327的带宽的第二部分分配给流的第二应用优先级别(p2)。

参考图3e,在另一实施方式中,多个qos管理器的每个qos管理器331还可包括模式选择模块3306,其被配置为针对与第一应用优先级别和第二应用优先级别相关联的流分别确定第一操作模式或第二操作模式。在另一实施方式中,多个qos管理器331可以各自还包括流份额逻辑模块3305,其被配置为基于与应用优先级别相关联的操作模式来为第一应用优先级别分配流份额。操作模式的实例包括无压模式和欠压模式。第一应用优先级别和第二应用优先级别可以与相同或不同的操作模式相关联。不同组的模式操作规则可以适用于不同的操作模式。

在一些实施方式中,多个qos管理器331可以各自包括状态跟踪模块3303,该状态跟踪模块被配置为跟踪每个优先级组的一组优先级等级值。由模式选择模块3306和流份额逻辑模块3305使用的一组优先级等级值可以确定针对来自每个优先级组的流的分配的流份额。在其他实施方式中,多个qos管理器331可以各自包括被配置为与wm模块340和bw管理器模块320通信的接口模块3304。

tcp协议使用端到端流控制协议来防止tcp发送器发送数据过快,以便tcp接收器接收和处理。换言之,使用流控制来限制来自服务器的流业务的速率。tcp协议通常实现滑动窗口流控制协议,其中,tcp接收器在接收窗口字段中指定(对于每个tcp分段)将针对tcp发送器与tcp接收器之间的连接缓冲的额外接收的数据量(以字节为单位)。在tcp发送器等待来自tcp接收器的确认和窗口更新之前,tcp发送器只能发送高达该数据量。每次tcp接收器接收并确认新的数据段时,接收窗口移动。一旦tcp接收器用尽序列号,序列号将循环回0。

tcp报头字段在图5a中示出并包括确认号字段571(用于存储确认号码)、ack字段572(用于存储ack标志)、窗口大小字段573(用于存储窗口大小)和序列号字段574(用于存储序列号)。当发送窗口确认数据包(例如,图10b中示出的1019)时,使用这些字段。

如果设置了ack标志,则确认号(32位)表示tcp接收器期望的下一个序列号。ack标志指示确认号是有效的。确认号确认收到所有先前的字节(如果有的话)。每个端发送的第一确认号(端到端连接)确认另一端的初始序列号本身,但不是数据。传输控制协议(tcp)窗口大小是指可以在连接的接收端一次能够缓冲的最大接收数据量(以字节为单位)。tcp发送器在等待来自tcp接收器的确认和窗口更新之前只能发送该数据量。当tcp接收器通告窗口大小为0时,tcp发送器不能发送更多数据,直到从tcp接收器接收到新的窗口大小更新。各种实施方式可以实现除tcp协议之外的协议,并且可以使用其他字段和参数来实现滑动窗口以控制发送主机正在传输数据包的速率。

图10a示出通过主机1001(称作tcp发送器)向主机1002(在示例性实施方式中称作tcp接收器)发送数据包1005的图表1000。主机1002发送窗口确认数据包1006以通告tcp接收器的窗口大小。rtt1003是指主机1001和主机1002之间的估计往返时间。

图10b示出了利用位于两个主机1001、1002之间的vtcp模块109从主机1001传输到主机1002的数据包1011。在各种实施方式中,vtcp模块109包括bw管理系统125,可以如图2a-图2e中所示定位。图表1010示出部署在两个主机(即,主机1001和1002)之间的vtcp模块109,使得bw管理系统125代表主机1002(tcp接收器)接受数据包并向主机1001(tcp发送器)通告窗口(也称为wa),其指示将来接受的数据量。rtt发送器1014(也称作rtt1)表示主机1001与vtcp模块109(或者bw管理系统125)之间的估计往返时间。rtt接收器1015(也称作rtt2)表示vtcp模块109(或者bw管理系统125)与主机1002之间的估计往返时间。

通告窗口wa的大小由bw管理系统125计算,并且在控制主机(tcp发送器)能够向分层bw管理系统125发送数据的速率方面发挥重要作用。如上所述,在示例性实施方式中,图3f中示出的与wm342相关联的窗口大小生成模块3405可以用于计算通告窗口wa的大小。在各种实施方式中,为每个流创建一个wm(例如,wm342),其负责计算从相关联的qos管理器(例如,qos管理器331)请求多少带宽(也称为wm流请求3401)。流请求(例如,wm流请求3401)中请求的带宽量如下所述。

在各种实施方式中,wm管理bw管理系统125针对tcp发送器(例如,主机1001)与tcp接收器(例如,主机1002)之间的端到端连接中的每个流通告的窗口大小wa。在各种实施方式中,与发送主机1001和接收主机1002之间的流相关联的wm计算将通告给tcp发送器(例如,主机1001)的窗口大小(也称为wa)。在另一实施方式中,wm还计算从qos管理器请求多少带宽。由wm代表的请求的带宽量可以由公式wmax/rtt2表示。所请求的带宽量基于tcp接收器(例如,主机1002)正在接收数据包(例如,数据包1011')的估计速率。在各种实施方式中,流逻辑模块3620(图3f中所示)计算wa和wmax/rtt2。这些计算将在以下更详细地描述。

参考图10b,bw管理系统125向主机1001发送窗口确认数据包1019,该窗口确认数据包包括tcp报头字段和有效载荷(或者数据)。tcp报头字段在图5a中示出,并且包括确认号字段571、ack字段572、窗口大小字段573、及序列号字段574。窗口确认数据包1019(也称作vtcp窗口确认数据包1019)包括用于通告vtcp模块109或bw管理系统125的可用窗口大小(wa)的这些字段中的值。窗口确认数据包1016(也称作接收窗口确认数据包1016)包括用于通告接收主机1002的可用窗口大小(wa)的这些字段中的值。

数据包1011和1011'也包括窗口大小。数据包1011'中的窗口大小可以不同于数据包1011中的窗口大小。数据包1011'中的窗口大小由bw管理系统125基于bw管理系统125想要向主机1002通告的窗口大小的量来确定。在作为数据包1011'被转发到接收主机1002之前,数据包1011临时存储在流缓冲器354(图3c所示)中。bw管理系统125控制数据包准备好被转发到接收主机1002的时间。在各种实施方式中,数据包1011'基于tcp协议转发至接收主机1002。

bw管理系统125发送至发送主机1001的通告窗口大小被称作wa。由bw管理系统125通告的窗口称作wa并且可以是通过以下等式计算:

wa=qos分配×rtt1,其中,qos分配是qos流响应3402中分配的带宽量。

wmax=基于(l)bw管理系统125正在用于向接收主机1002发送数据包(例如,数据包1011')所使用的拥塞窗口(we)以及(2)由接收主机1002(例如,在数据包1016中)通告的窗口(wr)中的最小值的估计窗口大小。

rtt1=发送主机1001和bw管理系统125之间的往返时间。1002

rtt2=bw管理系统125和主机1002之间的往返时间。

一旦bw管理系统125的通告窗口(wa)被确定并传输到发送主机1001,则发送主机1001以数据包几乎没有被丢弃的可能性的速率向接收主机1002传输数据包。在窗口确认数据包1019中提供的bw管理系统125的通告窗口确保用于该数据流的缓冲器(例如,流缓冲器354)能够接收或缓冲数据包1011和1011',而不必丢弃数据包。流缓冲器(例如,流缓冲器354)的大小是来自bw管理系统125的窗口确认数据包1019中其通告的窗口大小的函数。

如上所述,通告给发送主机1001的窗口wa由wa=qos分配×rtt1表示。接收主机1002接收数据包的估计速率称作wmax/rtt2。wm从与流相关联的qos管理器请求等于wmax/rtt2的量的带宽(称作图3b所示的wm流请求3401)。在各种实施方式中,如上文更详细地描述的,由bw管理系统125计算qos分配。

wm发送wm流请求3401以请求带宽量wmax/rtt2。如上所述,wmax/rtt2的量由wm计算。响应于wm流请求3401,与流相关联的qos管理器提供qos流响应3402。qos流响应3402可包括分配带宽(例如,qos分配),该分配带宽等于wm流请求3401中请求的带宽,大于wm流请求3401中请求的带宽,或小于wm流请求3401中请求的带宽。在各种实施方式中,根据qos管理器正在操作的模式(例如,无压模式或欠压模式),qos管理器可以分配小于、等于或大于与关联于业务类别的流的集合相关联的wm流请求3401。如上所述,第一组模式操作规则可以用于第一操作模式(例如,无压模式),并且第二组模式操作规则可以用于第二操作模式(例如,欠压模式)。由qos管理器331分配给对wm模块340的qos流响应3402中的流的带宽的量称为qos分配。

图8a-图8d示出无压模式的wm流请求3401的实例。图9a-图9d示出欠压模式的qos流响应3402的实例。

与流相关联的wm计算可以通告回至发送主机1001的总窗口(wa)。在各种实施方式中,wa=(qos分配)×(rtt1)。在各种实施方式中,qos管理器331中的qos逻辑模块3610基于操作模式计算qos分配,如图8a-图8d和图9a-图9d中论述的。qos分配的计算将在下面结合图8a-图8b针对无压模式进行详细讨论,以及结合图9a-图9d针对欠压模式进行详细讨论。对于示例性实施方式,为主机1001与主机1002之间的流请求的带宽的量(例如,wm流请求3401)基于wmax/rtt2。在各种实施方式中,wmax/rtt2表示单独流请求的全部带宽量。在各种实施方式中,qos管理器基于每个流跟踪wmax/rtt2随时间的变化以及针对与应用优先级级别相关联的优先级等级的所有流的wmax/rtt2的总和。一旦qos管理器331聚集用于各种应用优先级别的流的wmax/rtt2,qos管理器331生成由qos管理器331在qos集合请求3301中发送至其相关联的带宽管理器的聚集带宽量(例如,称作聚集总请求大小(r))。

图10c-图10f提供了基于w/rtt2跟踪流1和2的当前使用以确定要请求的额外带宽的量的实例。在图10e中示出的表1060中,公式w/rtt2中的w等于wmax。

参考图10f,叶节点1070与两个流(流1和流2)相关联。应理解的是,与叶节点相关联的流的数目可以改变。流1和2中的每一个与wm107相关联。bw管理器1071与叶节点1070相关联,其分配有1gbps的min值和2gbps的max值。流1的窗口大小由wm1073管理并且流2的窗口大小由wm1074管理。wm1073跟踪流1的估计的当前使用并且wm1074跟踪流2的估计的当前使用。对于示例性实施方式,带宽使用跟踪模块357可以跟踪流1和2的估计的当前使用。qos管理器1072为两个流中的节点1070分配1gbps(例如,min值)的分配带宽。bw管理器1071监测与叶节点1070相关联的业务类别的带宽的估计的当前使用。在该实例中,叶节点1070处的带宽的当前使用等于流1和流2的wmax/rtt2的总和。

图10c示出了来自bw管理系统125接受的流1的数据包的输入速率1032和自bw管理系统125的来自流1的数据包的输出速率1042的图105。输出速率1042表示接收主机1043从bw管理系统125接收数据包的速率并且可以由wmax/rtt2表示。在图10c中,流1的数据包从发送主机1001发送至接收主机1043。

图10d示出了显示来自由bw管理系统125接受的流2的数据包的输入速率1033和自bw管理系统125的来自流2的数据包的输出速率1044的图1051。在图10d中,数据包从发送主机1001发送至接收主机1044。输出速率1043表示接收主机1044从bw管理系统125接收数据包的速率并且可以由wmax/rtt2表示。

图10e示出了用于跟踪流1和2的带宽的估计当前使用以确定qos管理器1072何时请求带宽的表1060。报头字段1061、1062、1063、1064和1065分别表示指定时间的输出速率(wmax/rtt2)、流1的估计当前使用、流2的估计当前使用,流1和2的(估计当前使用)的总和,以及总和与min的比较。

在该示例中,在t=1处,流1和流2的总和低于bw管理器1071的min量1gbps。bw管理器1071向qos管理器1072分配所请求的带宽(例如,在其bw集合响应3302中称为分配带宽(b)的量)。qos管理器1072进而将分配至wm1073和1074的带宽量分别分配给流1和流2。

根据表1060,流1和2在t=2处的总和是(1.4gbps),高于最小值1gbps。因此,qos管理器1072可以请求要分配给流1和2的带宽。根据示例性实施方式,请求的带宽量是1.4gbps。在一个实施方式中,qos管理器1072将带宽的该请求发送至bw管理器1071。qos管理器1072负责确保对来自wm1073和1074的该带宽请求的响应在分配给叶节点1070的限制(例如,min值和max值)内。

尽管图10a-图10d示出了在一个方向上流动的数据包,替换实施方式可包括以双向方式流动的数据包,使得主机中的每一个都发送和接收数据包。

在示例性实施方式中,系统包括至少一个处理器,其被配置为执行用于处理器实现的模块的操作,所述模块包括用于为一组流分配带宽的bw管理系统125。bw管理系统125被配置为代表接收主机以发送主机发送的流速接受第一单独流的数据包,该流的组包括第一单独流;计算要通告至发送主机的窗口大小,通告的窗口大小基于第一单独流的分配的流份额;将确认数据包传输至发送主机,确认数据包包括计算的窗口大小;并且基于计算的窗口大小以调整的流速接收第一单独流的数据包。

在一些实施方式中,接收主机1002表示tcp接收器,并且发送主机1001表示tcp发送器。在示例性实施方式中,第一单独流表示与来自与主机之一相关联的流的集合的流的业务类别相关联的数据流,流的业务类别与多个应用优先级别相关联。

在另一实施方式中,bw管理系统125包括与流的业务类别相关联的多个wm。流的业务类别中的每个单独流具有多个wm中的对应的wm。多个wm被配置为计算通告至发送主机1001的单独流的窗口大小。

在其他实施方式中,接收主机1002接收数据包的估计速率基于窗口大小(wmax)和bw管理系统125与接收主机1002之间的往返时间(rtt2)。窗口大小wmax基于以下的最小值:(l)bw管理系统125向接收主机1002发送数据包所使用的拥塞窗口大小和接收主机1002通告的窗口大小。在一个示例性实施方式中,bw管理系统125包括bw管理器327、qos管理器331、及与流的业务类别相关联的多个wm。bw管理器327被配置为管理分配给业务类别的带宽,qos管理器331被配置为基于应用优先级别管理流的业务类别,并且多个wm被配置为计算针对流的业务类别中的单独流通告至发送主机的窗口大小。接收主机1002接收第一单独流的数据包的估计速率表示第一单独流的wm流请求量。在该示例性实施方式中,bw管理系统125进一步配置为:将wm流请求3401从与第一单独流相关联的wm发送至与流的业务类别相关联的qos管理器331;并且从与流的业务类别相关联的qos管理器331接收qos流响应3402。qos流响应3402包括等于、大于、或者小于wm流请求3401量的分配带宽流份额(还称作qos分配)。

在另一示例性实施方式中,bw管理系统125包括bw管理器327、qos管理器331、及与流的业务类别相关联的多个wm。bw管理器327被配置为管理分配给业务类别的带宽,qos管理器331被配置为基于应用优先级别管理流的业务类别,并且多个wm被配置为计算针对流的业务类别中的单独流通告至发送主机的窗口大小。接收主机1002接收第一单独流的数据包的估计速率表示第一单独流的wm流请求3401中的带宽请求。在该示例性实施方式中,bw管理系统125进一步被配置为:将wm流请求3401从与第一单独流相关联的wm发送至与流的业务类别相关联的qos管理器331;将流的集合的qos集合请求3301发送至与流的业务类别相关联的bw管理器327;从与流的业务类别相关联的bw管理器327接收针对流的集合的bw集合响应3302;并且从qos管理器331接收针对与流的业务类别相关联的单独流的qos流响应3402,qos流响应3402包括等于、大于、或者小于wm流请求3401中指示的带宽的分配的带宽流份额。

在另一实施方式中,与第一单独流相关联的wm被配置为基于来自qos流响应3402的分配的带宽流份额(即,qos分配)和发送主机1001与bw管理系统125之间的往返时间(rtt1),来计算要通告给发送主机1001的新窗口大小;向发送主机1001传输新的确认数据包,新的确认数据包包括所计算的新窗口大小;并基于所计算的新窗口大小以新调整的流速接收数据包。

图11a-图11h示出各种实施方式的流程图。在各种实施方式中,可以向流程图1100-1170中的每一个添加额外操作,或者可以从流程图1100-1170中的每一个删除一个或多个操作。在另一实施方式中,流程图1100-1170的操作,或者这些流程图1100-1170的变形可以结合。在流程图1100-1170中执行的操作可以由bw管理系统125或vtcp模块109内的一个或多个组件或模块执行。

图11a是示出了根据示例性实施方式的用于控制tcp发送器(主机1001)传输至tcp接收器(主机1002)的数据包的速率的示例性方法的流程图1100。流程图1100包括操作1101-1104。在操作1101处,bw管理系统125代表tcp接收器(主机1002)以流速接受来自tcp发送器(主机1001)的数据包。在操作1102处,bw管理系统125计算要通告至tcp发送器(主机1001)的窗口大小。在操作1103处,bw管理系统125将窗口大小通告至tcp发送器(主机1001)以控制tcp发送器(主机1001)传输的数据包的流速。在操作1104处,bw管理系统125代表tcp接收器(主机1002)基于通告到tcp发送器(主机1001)的窗口大小以所调整的流速接受来自tcp发送器(主机1001)的数据包。

图11b是示出了根据一个实施方式的用于控制发送主机使用滑动窗口协议传输数据包的速率的示例性方法的流程图1110。流程图1110包括操作1111-1113。在操作1111处,bw管理系统代表接收主机以发送主机发送的流速接受第一单独流的数据包,带宽管理系统被配置为管理表示与hbt中的节点相关联的流的集合的业务类别的带宽。第一单独流包括在与一个或多个业务类别相关联的单独流的集合内。在操作1112处,bw管理系统125使用机器的处理器通过管理节点的带宽使用以符合分配给节点的带宽限制,来控制发送主机使用滑动窗口协议传输第一单独流的数据包的速率。在操作1113处,基于滑动窗口协议以调整的流速接收第一单独流的数据包。在示例性实施方式中,由bw管理系统125控制发送主机使用滑动窗口协议传输用于第一单独流的数据包的速率包括:基于分配给与业务类别相关联的单独流的集合中的单独流的应用优先级分类,来管理与业务类别相关联的带宽分配。

在其他实施方式中,业务类别包括表示与来自hbt中的节点的多个节点相关联的单独流的集合的多个业务类别,并且全面业务类别表示hbt中的节点中的根节点。在另一实施方式中,全面业务类别表示具有与服务器机器相关联的流的集合的根节点。全面业务类别划分为由多个节点表示的多个业务类别。多个节点表示与全面业务类别相关联的单独流的集合的子集。

在一些实施方式中,接收主机表示传输控制协议(tcp)接收器,并且发送主机表示tcp发送器。在其他实施方式中,发送主机和接收主机中至少一个表示与服务器机器相关联的虚拟化资源。在可替换的实施方式中,发送主机和接收主机中至少一个表示docker实例。

在示例性实施方式中,由bw管理系统125控制发送主机使用滑动窗口协议传输用于第一单独流的数据包的速率包括:由bw管理系统125计算要通告至发送主机的窗口大小wa。通告的窗口大小wa基于对第一单独流的带宽请求的带宽响应。在其他实例中,bw管理系统125计算通告至发送主机的窗口大小wa包括:基于接收主机从bw管理系统125接受针对第一单独流的接受的数据包的估计的速率,计算第一单独流的带宽请求(例如,wm流请求3401)。在其他实例中,接收主机接收所接受的数据包的估计速率基于拥塞窗口wc和接收主机wr通告的窗口中的最小值以及针对第一单独流在bw管理系统125和接收主机之间的往返时间rtt2,bw管理系统125使用拥塞窗口wc向接收主机发送所接受的数据包。在其他示例性实施方式中,确定单独流的窗口大小wa包括向发送主机传输确认数据包,确认数据包包括计算的窗口大小wa;以及基于计算的窗口大小wa以调整的流速接收第一单独流的数据包。

图11c是示出了根据另一实施方式的用于控制发送主机使用滑动窗口协议传输数据包的速率的示例性方法的流程图1120。流程图1120包括操作1121-1123。在操作1121处,bw管理系统125代表接收主机以由发送主机发送的流速接受第一单独流的数据包。带宽管理系统125被配置为管理表示与hbt中的节点相关联的流的集合的业务类别的带宽。第一单独流包括在与一个或多个业务类别相关联的各个单独流的集合内。在操作1122处,通过基于分配给与业务类别相关联的各个单独流的集合中的各个单独流的应用优先级分类管理与业务类别相关联的各个单独流的带宽分配,bw管理系统125控制发送主机使用滑动窗口协议传输用于第一单独流的数据包的速率。在操作1123处,基于滑动窗口协议以调整的流速接收第一单独流的数据包。

在又一示例性实施方式中,bw管理系统125控制发送主机使用滑动窗口协议传输第一单独流的数据包的速率包括:bw管理系统125通过管理节点的带宽使用以符合分配给节点的带宽限制,来控制发送主机使用滑动窗口协议传输第一单独流的数据包的速率。在其他示例性实施方式中,业务类别包括表示与来自hbt中的节点的多个节点相关联的各个单独流的集合的多个业务类别,并且全面业务类别表示来自hbt中的节点的根节点。全面业务类别表示具有与服务器机器相关联的流的集合的根节点。全面业务类别划分为由多个节点表示的多个业务类别。多个节点表示与全面业务类别相关联的各个单独流的集合的子集。

图11d是示出了根据一个实施方式的用于确定每个流的带宽请求的示例性方法的流程图1130。流程图1130包括操作1131-1132。在操作1131处,由wm模块340生成指示与业务类别相关联的各个单独流的集合中各个单独流的带宽量的带宽请求。在各种实施方式中,wm流请求3401表示带宽请求。带宽量基于接收主机从bw管理系统125针对各个单独流之一接收接受的数据包的估计速率。在操作1132,向qos管理器模块330发送指示带宽量的带宽请求。

图11e是示出了根据一个实施方式的用于确定针对流的集合的带宽请求的示例性方法的流程图1140。流程图1140包括操作1141-1143。在操作1141处,qos管理器模块330接收指示带宽量的带宽请求。在各种实施方式中,wm流请求3401表示带宽请求。在操作1142处,聚集与业务类别相关联的各个单独流的集合中的各个单独流的带宽量,以创建聚集带宽量。在操作1143处,将指示聚集带宽量的带宽请求发送至bw管理器模块320。在各种实施方式中,qos集合请求3301表示指示聚集的带宽量的带宽请求。

图11f是示出了根据一个实施方式的用于确定流的每个集合的带宽响应的示例性方法的流程图1150。流程图1150包括操作1151-1154。在操作1151处,bw管理器模块320接收指示聚集带宽量的带宽请求。对于各种实施方式,qos集合请求3301表示指示聚集带宽量的带宽请求。在操作1152处,基于与业务类别相关联的各个单独流的集合的带宽使用和分配给hbt中的根节点和多个节点的带宽限制,来确定用于与业务类别相关联的各个单独流的集合的可用带宽。在操作1153处,基于用于与业务类别相关联的各个单独流的集合的可用带宽来向与业务类别相关联的各个单独流的集合分配带宽。在操作1154处,向qos管理器模块330发送指示分配的带宽的带宽响应。对于各种实施方式,qos流响应3402表示指示分配的带宽的带宽响应。

图11g是示出了根据一个实施方式的用于确定每个流的带宽响应的示例性方法的流程图1160。流程图1160包括操作1161-1164。在操作1161处,qos管理器模块330接收指示分配的带宽的带宽响应。在各种实施方式中,bw集合响应3302表示指示分配的带宽的带宽响应。在操作1162处,基于应用优先级分类,对分配给与业务类别相关联的各个单独流的集合的带宽的百分比份额进行分配,该应用优先级分类与关联于业务类别的各个单独流的集合中的各个单独流相关联。在操作1163处,将来自所分配的百分比份额的流份额分配给来自与业务类别相关联的各个单独流的集合的各个单独流。在操作1164处,将指示分配的流份额的带宽响应发送至wm模块340。在各种实施方式中,qos流响应3402表示指示分配的流份额的带宽响应。

图11h是示出了根据一个实施方式的用于为单独流生成窗口大小的示例性方法的流程图。流程图1170包括操作1171-1172。在操作1171处,wm模块340接收指示分配的流份额的带宽响应。在各种实施方式中,qos流响应3402表示指示分配的流份额的带宽响应。在操作1172处,针对第一单独流生成要通告至发送主机的窗口大小wa。在各种实施方式中,wa表示要通告至发送主机的窗口大小。

图12是示出了根据一个实施方式的用于管理与服务器机器相关联的流的集合的带宽的示例性方法的流程图1200。流程图1200包括操作1201-1203。

操作1201包括由bw管理器模块通过向业务类别分配带宽限制来管理与服务器机器相关联的流的集合的、业务类别带宽。在各种实施方式中,流中的每一个表示第一主机与第二主机之间的端到端连接。在另一实施方式中,业务类别包括表示hbt的最低级别的业务类别的叶业务子类别。

在操作1202处,qos管理器模块330使用机器的处理器基于对业务类别的分配的带宽限制,将应用优先级份额分配给叶业务子类别和与应用优先级份额相关联的流份额。

在操作1203,wm模块340通过调整通告至第一主机的窗口大小wa管理单独流的带宽,通告的窗口大小wa控制第一主机向第二主机传输数据包的速率,通告的窗口大小wa基于来自qos管理器模块330的分配的流份额。

在示例性实施方式中,通过bw管理器模块330管理流的集合的带宽包括:创建多个节点,节点中的每一个表示hbt中的业务类别中的一个;创建与多个节点中的每一个相关联的bw管理器;向节点分配min值,min值表示在配置期间分配给与节点处的业务类别相关联的流的集合的带宽预留。在其他实施方式中,在操作期间,bw管理器模块330比较与节点处的业务类别相关联的流的集合的当前使用与分配给节点的min值;并且识别预计何时与节点处的业务类别相关联的流的集合的当前使用超过分配给节点的min值。

在另一示例性实施方式中,通过bw管理器模块330管理流的集合的带宽包括从与关联于第一业务类别相关联的第一节点的带宽管理器接收带宽请求(例如,qos集合请求3301);从与第一业务类别相关联的分配的带宽限制确定可用带宽;并且将来自第一业务类别的可用带宽重新分配给与第一节点相关联的带宽管理器。

某些实施方式在本文中描述为包括逻辑或多个组件、模块或机构。模块可以构成软件模块(例如,在机器可读介质上或传输信号中实现的代码)或硬件模块。在各种实施方式中,图1-图10中描述的模块例如特别地配置为执行说明书中描述的操作。“硬件模块”是能够执行某些操作的有形单元并且可以以某种物理方式配置或布置。在各种示例性实施方式中,一个或多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或多个硬件模块(例如,处理器或一组处理器)可以由软件(例如,应用或应用部分)配置为操作以执行如本文所述的某些操作的硬件模块。

在一些实施方式中,硬件模块可以以机械、电子或其任何合适的组合的方式来实现。例如,硬件模块可包括永久配置为执行某些操作的专用电路或逻辑。例如,硬件模块可以是专用处理器,诸如现场可编程门阵列(fpga)或专用集成电路(asic)。硬件模块还可包括由软件临时配置以执行某些操作的可编程逻辑或电路。例如,硬件模块可包括包含在通用处理器或其他可编程处理器内的软件。应当理解,在专用和永久配置的电路中或在临时配置的电路(例如,由软件配置)中机械地实现硬件模块的决定可以基于成本和时间考虑来驱动。

因此,短语“硬件模块”应理解为包括有形实体,即物理构造、永久配置(例如,硬连线)或临时配置(例如,编程)从而以某种方式操作或执行本文所述的某些操作的实体。如本文中使用的,“硬件实现模块”指硬件模块。考虑到其中硬件模块是临时配置(例如,编程)的实施方式,硬件模块中的每一个不需要在任何一个时间段配置或实例化。例如,在硬件模块包括由软件配置成为专用处理器的通用处理器的情况下,通用处理器可以配置为在不同时间分别为不同的专用处理器(例如,包括不同的硬件模块)。因此,软件可以配置特定的处理器或者多个处理器,例如,以在一个时间段构成特定的硬件模块,并在不同的时间段构成不同的硬件模块。

硬件模块可以向其他硬件模块提供信息和从其他硬件模块接收信息。因此,所描述的硬件模块可以认为是通信耦合的。在多个硬件模块同时存在的情况下,可以通过在两个或多个硬件模块之间的信号传输(例如,通过适当的电路和总线)获得通信。在其中多个硬件模块在不同时间配置或实例化的实施方式中,可以例如通过存储和检索多个硬件模块访问的存储器结构中的信息来实现这种硬件模块之间的通信。例如,一个硬件模块可以执行操作并将该操作的输出存储在其通信耦合到的存储器设备中。然后,另外的硬件模块可以在稍后的时间访问存储器设备以检索和处理存储的输出。硬件模块还可以发起与输入或输出设备的通信,并且可以对资源(例如,信息的集合)进行操作。

至少部分地由临时配置(例如,通过软件)或永久配置为执行相关操作的一个或多个处理器来执行本文描述的示例性方法的各种操作。无论是临时还是永久配置,这些处理器可以构成操作以执行本文所述的一个或多个操作或功能的处理器实现的模块。如本文所使用的,“处理器实现的模块”是指使用一个或多个处理器实现的硬件模块。

类似地,本文描述的方法可以至少部分地由处理器实现,其中,特定处理器或多个处理器是硬件的实例。例如,方法的至少一些操作可以由一个或多个处理器或处理器实现的模块执行。此外,一个或多个处理器还可以操作以支持在“云计算”环境中或作为“软件即服务”(saas)的相关操作的性能。例如,至少一些操作可以由一组计算机(作为包括处理器的机器的实例)来执行,这些操作可以经由网络(例如,互联网)以及经由一个或多个适当的接口(例如,api)访问。

某些操作的性能可在处理器之间分配,不仅驻留在单个机器内,而且部署在多台机器上。在一些示例性实施方式中,处理器或处理器实现的模块可以位于单个地理位置(例如,在家庭环境、办公环境或服务器群内)。在其他示例性实施方式中,处理器或者处理器实现的模块可以分布在多个地理位置处。

图13是示出了可以安装在上述任何一个或多个设备上的软件1302的架构的框图1300。图13仅是软件架构的非限制性实例,并且应当理解,可以实现许多其他架构以促进本文所描述的功能。软件1302可以在诸如图14的包括处理器1410、存储器1430和i/o组件1450的机器1400的硬件上执行。在图13的示例性架构中,软件1302可以概念化为每层可以提供特定功能的叠层。例如,软件1302可包括诸如操作系统1304、库1306、架构1308和应用1310的层。在操作上,应用1310可以通过软件栈来启用api调用1312,并响应于api调用1312接收消息1314。

操作系统1304可以管理硬件资源并且提供公共服务。例如,操作系统1304可包括kemel1320、服务1322、及驱动器1324。kemel1320可以作为硬件与其他软件层之间的抽象层。例如,kemel1320可以负责存储器管理、处理器管理(例如,调度)、组件管理、网络、安全设置等。服务1322可以为其他软件层提供其他共用服务。驱动器1324可以负责控制或与下层硬件相接。例如,驱动器1324可包括显示驱动器、相机驱动器、驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(usb)驱动器)、驱动器、音频驱动器、电源管理驱动器等。

库1306可以提供应用1310可利用的低级公共基础设施。库1306可包括可以提供诸如存储器分配功能、字符串操纵功能、数学功能等功能的系统库1330(例如,c标准库)。此外,库1306可包括诸如媒体库(例如,支持诸如mpreg4、h.264、mp3、aac、amr、jpg、png的各种媒体格式的呈现和操纵的库);图形库(例如,可用于在显示器上呈现2d和3d图形内容的opengl架构)、数据库库(例如,可能提供各种相关数据库功能的sqlite)、web库(例如,可提供web浏览功能的webkit)等的api库1332。库1306还可包括各种各样的其他库1334,以向应用1310提供许多其他api。

架构1308可以提供应用1310可利用的高级公共基础设施。例如,架构1308可以提供各种图形用户界面(gui)功能、高级资源管理、高级定位服务等。架构1308可以提供可由应用1310利用的各种其他api,其中一些应用可以是专用于特定的操作系统或平台的。

应用1310包括家庭应用1350、联系人应用1352、浏览器应用1354、书籍阅读器应用1356、定位应用1358、媒体应用1360、消息应用1362、游戏应用1364以及各种种类的其他应用,如第三方应用1366。在具体实例中,第三方应用1366(例如,由特定平台的供应商之外的实体使用androidtm或iostm软件开发工具包(sdk)开发的应用)可以是在移动操作系统(诸如iostm,androidtm)或其他移动操作系统上运行的移动软件。在该实例中,第三方应用1366可以启用由移动操作系统1304提供的api调用1312以促进本文所描述的功能。

图14是示出根据一些示例性实施方式的机器1400的组件的框图,这些组件能够从机器可读介质(例如,机器可读存储介质)读取指令并执行本文所论述的任何一种或多种方法。具体地,图14示出了计算机系统的示例性形式的机器1400的示意图,在计算机系统内,可以执行用于使机器1400执行本文论述的任何一种或多种方法的指令1416(例如,软件、程序、应用、小程序,应用软件或其他可执行代码)。在可替代的实施方式中,机器1400作为单机设备操作或者与其他机器耦合(例如,网络化)。在联网部署中,机器1400可以在服务器-客户端网络环境中以服务器机器或客户端机器的能力操作,或在对等(或分布式)网络环境中作为对等机器操作。机器1400可包括但不限于服务器计算机、客户端计算机、pc、平板计算机、膝上型计算机、上网本、机顶盒(stb)、pda、娱乐媒体系统、蜂窝电话、智能电话、移动设备、可穿戴设备(例如,智能手表)、智能家居设备(例如,智能电器)、其他智能设备、网络设备、网络路由器、网络交换机、网桥或能够顺序地或以其他方式执行指令1416的任何机器,指令指定由机器1400采取的动作。此外,虽然仅示出了单个机器1400,但是术语“机器”还应认为包括单独地或共同执行指令1416以执行本文所论述的任何一种或多种方法的机器1400的集合。

机器1400可包括处理器1410、存储器1430和输入/输出(i/o)组件1450,其可被配置为经由总线1402彼此通信。在示例性实施方式中,处理器1410(例如,中央处理单元(cpu)、精简指令集计算(risc)处理器、复杂指令集计算(cisc)处理器、图形处理单元(gpu)、数字信号处理器(dsp)、专用集成电路(asic)、射频集成电路(rfic)、其他处理器或其任何合适的组合)可包括例如可以执行指令1416的处理器1412和处理器1414。术语“处理器”旨在包括可包括可同时执行指令的两个或多个独立处理器(也称为“核”)的多核处理器。尽管图14示出了多个处理器1410,但机器1400可包括具有单个核的单个处理器、具有多个核的单个处理器(例如,多核处理器)、具有单个核的多个处理器、具有多个核的多个处理器或其任何组合。

存储器1430可包括经由总线1402可访问处理器1410的主存储器1432、静态存储器1434和存储单元1436。存储单元1436可包括机器可读介质1438,在其上存储了体现本文所述的任何一种或多种方法或功能的指令1416。指令1416在其由机器1400执行期间还可以完全或者至少部分地驻留在主存储器1432内、在静态存储器1434内、在至少一个处理器1410(例如,在处理器的高速缓冲存储器内)内或其任何适当的组合中。因此,主存储器1432、静态存储器1434以及处理器1410可以认为是机器可读介质1438。

如本文所使用的,术语“存储器”是指能够临时或永久地存储数据的机器可读介质1438,并且可认为包括但不限于随机存取存储器(ram)、只读存储器(rom)、缓冲存储器、闪存和高速缓冲存储器。虽然机器可读介质1438在示例性实施方式中示出为单个介质,但是术语“机器可读介质”应被视为包括能够存储指令1416的单个介质或多个介质(例如,集中式或分布式数据库或相关联的高速缓存存储器和服务器)。术语“机器可读介质”还应视为包括能够存储由机器(例如,机器1400)执行的指令(例如,指令1416)的任何介质或多个介质的组合,使得当由机器1400的一个或多个处理器(例如,处理器1410)执行指令时,指令使机器1400执行本文所描述的任何一种或多种方法。因此,“机器可读介质”是指单个存储装置或设备,以及包括多个存储装置或设备的“基于云”的存储系统或存储网络。因此,术语“机器可读介质”应视为包括但不限于以固态存储器(例如,闪存)、光学介质、磁性介质、其他非易失性存储器(例如,可擦除可编程只读存储器(eprom))或其任何合适的组合的形式的一个或多个数据储存库。术语“机器可读介质”特别排除非法定信号本身。

i/o组件1450可包括用于接收输入、提供输出、产生输出、传输信息、交换信息、捕获测量等的各种各样的组件。将理解的是,i/o组件1450可包括图14中未示出的许多其他组件。i/o组件1450根据功能数据包,其仅用于简化以下讨论,并且数据包绝不是限制性的。在各种示例性实施方式中,i/o组件1450可包括输出组件1452和输入组件1454。输出组件1452可包括视觉组件(例如,诸如等离子体显示板(pdp)、发光二极管(led)显示器、液晶显示器(lcd)、投影仪或阴极射线管(crt)的显示器)、声学组件(例如,扬声器)、触觉组件(例如,振动马达)、其他信号发生器等。输入组件1454可包括字母数字输入组件(例如,键盘、配置为接收字母数字输入的触摸屏、照片光学键盘或其他字母数字输入组件)、基于点的输入组件(例如,鼠标、触摸板、跟踪球、操纵杆、运动传感器或其他指示仪器)、触觉输入组件(例如,物理按钮、提供触摸或触摸手势的位置和力量的触摸屏、或其他触觉输入组件)、音频输入组件(例如,麦克风)等。

在又一示例性实施方式中,i/o组件1450可包括生物测定组件1456、运动组件1458、环境组件1460、或位置组件1462、或各种其他组件。例如,生物测定组件1456可包括检测表达(例如手表达、面部表情、声音表达、身体手势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、汗液、或脑电波)、识别人(例如,语音识别、视网膜识别、面部识别、指纹识别、或基于脑电图的识别)等的组件。运动组件1458可包括加速度传感器组件(例如,加速计)、重力传感器组件、旋转传感器组件(例如,陀螺仪)等。环境组件1460可包括例如亮度传感器组件(例如,光度计)、温度传感器组件(例如,检测环境温度的一个或多个温度计)、湿度传感器组件、压力传感器组件(例如,气压计)、声学传感器组件(例如,检测背景噪声的一个或多个麦克风)、接近传感器组件(例如,检测附近物体的红外传感器)、气体传感器(例如,气体检测传感器,为安全起见检测危险气体的浓度或测量大气中的污染物)、或可以提供对应于周围物理环境的指示、测量或信号的其他组件。位置组件1462可包括位置传感器组件(例如,gps接收器组件)、高度传感器组件(例如,高度计或检测气压的气压计,可以从气压得出高度)、方位传感器组件(例如,磁力计)等。

通信可以使用多种技术实现。i/o组件1450可包括可操作以分别通过耦合1482和耦合1472将机器1400耦合到网络1480或设备1470的通信组件1464。例如,通信组件1464可包括网络接口组件或者与网络1480相连接的其他合适的设备。在又一实例中,通信组件1464可包括有线通信组件、无线通信组件、蜂窝通信组件、近场通信(nfc)组件、组件(例如,)、组件和经由其他模式提供通信的其他通信组件。设备1470可以是另一机器或者各种外围设备中的任一种(例如,经由usb耦合的外围设备)。

此外,通信组件1464可以检测标识符或包括可操作以检测标识符的组件。例如,通信组件1464可包括射频识别(rfid)标签读取器组件、nfc智能标签检测组件、光学读取器组件(例如,用于检测一维条形码(例如通用产品代码(upc)条形码)、多维条形码(诸如快速响应(qr)码,阿兹台克码,数据矩阵,数据图,最大码,pdf417,超码,压缩空间符号法(rss)-2d条形码和其他光码)的光学传感器)、声测组件(例如,用于识别标记音频信号的麦克风)。此外,可以经由通信组件1464得出各种信息,诸如经由互联网协议(ip)地理位置的位置、经由信号三角测量的位置、经由检测可以指示特定位置的nfc信标信号的位置等。

在各种示例性实施方式中,网络1480的一个或多个部分可以是自组织网络、内联网、外联网、vpn、lan、wlan、wan、wwan、man、互联网、互联网的一部分、pstn的一部分、pots网络、蜂窝电话网络、无线网络、网络、其他类型的网络、或两个或多个这样的网络的组合。例如,网络1480或网络1480的一部分可包括无线网络或蜂窝网络,并且耦合1482可以是码分多址(cdma)连接、全球移动通信系统(gsm)连接或其他类型的蜂窝或无线耦合。在该实例中,耦合1482可以实现各种类型的数据传输技术中的任何一种,诸如单载波无线电传输技术(1xrtt)、演进数据优化(evdo)技术、通用数据包无线电业务(gprs)技术、gsm演进(edge)的增强数据速率技术、包括3g的第三代伙伴计划(3gpp)、第四代无线(4g)网络、通用移动通信系统(umts)、高速数据包接入(hspa)、微波存取全球互通(wimax)、长期演进(lte)标准、由各种标准设定组织定义的其他标准、其他远程协议或其他数据传输技术。

指令1416可以经由网络接口设备(例如,包括在通信组件1464中的网络接口组件)使用传输介质并且利用多个公知的传输协议(例如,超文本传输协议(http))中的任何一个通过网络1480传输或接收。类似地,指令1416可以经由与设备1470的耦合1472(例如,对等耦合)使用传输介质传输或接收。术语“传输介质”应视为包括能够存储、编码或携带供机器1400执行的指令1416的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以促进这种软件的通信。

此外,机器可读介质1438是非暂时性的(换言之,不具有任何短暂信号),因为它不体现传播信号。然而,将机器可读介质1438标记为“非暂时”不应解释为意味着介质1438不能移动;应该认为介质1438是可从一个物理位置运送到另一个物理位置。另外,由于机器可读介质1438是有形的,所以可以认为介质1438是机器可读设备。

在本说明书中,多个实例可以实现被描述为单个实例的组件、操作或结构。虽然将一个或多个方法的单独操作示出和描述为分离的操作,但可以并行地执行单独操作中的一个或多个,并且不需要以所示的顺序执行操作。在示例性配置中呈现为分离组件的结构和功能可以实现为组合结构或组件。类似地,呈现为单个组件的结构和功能可以实现为分离组件。这些和其他变化、修改、添加和改进落入本文主题的范围内。

虽然已经参考具体示例性实施方式描述了本发明主题的概述,但是在不脱离本公开内容的实施方式的更广泛范围的情况下,可以对这些实施方式进行各种修改和改变。仅为了方便起见,本发明主题的这些实施方式在本文中可以单独地或集体地称为术语“发明”,而不意指在事实上公开了多于一个发明的情况下,将本申请的范围自愿地限制为任何单个公开内容或者发明构思。

本文示出的实施方式足够详细地描述,以使本领域技术人员能够实践所公开的教导。可以使用并从其中导出其他实施方式,使得可以在不脱离本公开内容的范围的情况下进行结构和逻辑替换和改变。因此,不应认为具体描述是限制性的,并且各种实施方式的范围仅由所附权利要求以及这些权利要求所赋予的等同物的完整范围来限定。

如本文所使用的,术语“或”可以解释为包含或排他的意义。此外,针对本文中所描述的资源、操作或结构提供的多个实例可以作为单个实例。此外,各种资源、操作、模块、引擎、和数据存储之间的边界有些是任意的,并且在特定说明性配置的上下文中示出了特定的操作。可以设想功能的其他配置,并且这些可以落入本公开内容的各种实施方式的范围内。通常,示例性配置中作为分离资源呈现的结构和功能可以实现为组合结构或资源。类似地,呈现为单个资源的结构和功能可以实现为分离资源。这些和其他变化、修改、添加和改进落入由所附权利要求所表示的本公开内容的实施方式的范围内。因此,说明书和附图应被看作是示例性的,而不是限制性意义的。

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