用于带宽分配和估计的方法和装置制造方法

文档序号:7793872阅读:370来源:国知局
用于带宽分配和估计的方法和装置制造方法
【专利摘要】公开了用于带宽分配和估计的系统和方法。计算机经由多个活动流进行通信,每个活动流具有类型。计算机确定是启用还是禁用带宽管理。当确定启用带宽管理时,计算机估计总可用带宽,针对每个流确定所请求的带宽,并在活动流之间动态地分配总可用带宽的一部分。当确定禁用带宽管理时,计算机放弃在流之间动态地分配带宽。
【专利说明】用于带宽分配和估计的方法和装置
[0001] 相关申请的交叉引用
[0002] 本申请根据35U. S. C. § 119(e)要求于2012年5月1日递交的题为"Method and Apparatus for Bandwidth Allocation and Estimation,'的美国临时申请 No. 61/641,196 的优先权,其全部内容通过引用而在此加入。

【背景技术】
[0003] 电话会议、视频会议和桌面共享会话可用来实现在处于不同地理位置的多方之间 的通信。


【发明内容】

[0004] 在一些方面中,题述技术涉及一种用于管理通信流的带宽利用的方法。所述方法 包括:在计算设备处经由通信应用中的多个活动流进行通信,其中多个活动流中的每一个 具有类型。所述方法包括:基于所述多个活动流中的至少一个的类型来确定是启用还是禁 用通信应用内的带宽管理。所述方法包括:当确定启用通信应用内的带宽管理时,估计计算 设备处的总可用带宽,基于所述多个活动流中的每一个的类型为所述多个活动流中的每一 个确定请求带宽,以及基于请求带宽在计算设备处在所述多个活动流之间经由通信应用动 态地分配总可用带宽的至少一部分。所述方法包括:当确定禁用通信应用内的带宽管理时, 放弃在计算设备处在多个活动流之间经由通信应用动态地分配带宽。
[0005] 在一些方面中,题述技术涉及一种用于管理带宽利用的非瞬时机器可读介质。所 述机器可读介质存储用于经由在连接到网络的计算机器处执行的通信应用监控一个或多 个网络度量的指令,其中通信应用被配置为在正常操作模式或紧急操作模式中运行。所述 机器可读介质存储用于基于所监控的一个或多个网络度量来估计计算机器处的总可用带 宽的指令。所述机器可读介质存储用于以第一网络数据速率在正常操作模式中运行通信应 用的指令。所述机器可读介质存储用于基于所监控的一个或多个网络度量进入紧急操作模 式的指令。所述机器可读介质存储用于基于所监控的一个或多个网络度量的改变来确定通 信应用能够针对第一方向上的通信返回正常操作模式的指令。所述机器可读介质存储用于 针对第一方向上的通信进入正常操作模式的指令。所述机器可读介质存储用于以第一网络 数据速率运行第一网络数据速率测试的指令。所述机器可读介质存储用于进行以下操作的 指令:如果第一网络数据速率测试成功,则将第一方向上的当前网络数据速率设置为第一 网络数据速率。所述机器可读介质存储用于进行以下操作的指令:如果第一网络数据速率 测试失败,则测量在第一网络数据速率测试期间的有效吞吐量(goodput)速率,以及以所 述有效吞吐量速率运行第二网络数据速率测试。所述机器可读介质存储用于进行以下操作 的指令:如果第二网络数据速率测试成功,则将当前网络数据速率调整为有效吞吐量速率。 所述机器可读介质存储用于进行以下操作的指令:如果第二网络数据速率测试失败,则从 在紧急操作模式期间实现的网络数据速率开始逐渐增加当前网络数据速率。
[0006] 在一些方面中,题述技术涉及一种用于管理带宽利用的系统。系统包括一个或多 个处理器、用于连接到网络的网络接口和存储指令的存储器。所述存储器存储用于经由通 过一个或多个处理器执行的通信应用来监控一个或多个网络度量的指令,其中通信应用被 配置为在正常操作模式或紧急操作模式中运行。所述存储器存储用于基于所监控的一个或 多个网络度量来估计网络中的总可用带宽的指令。所述存储器存储用于以第一网络数据速 率在正常操作模式中运行通信应用的指令。所述存储器存储用于基于所监控的一个或多个 网络度量进入紧急操作模式的指令。所述存储器存储用于基于所监控的一个或多个网络度 量的改变来确定通信应用能够针对第一方向上的通信返回正常操作模式的指令。所述存储 器存储用于针对第一方向上的通信进入正常操作模式的指令。所述存储器存储用于以第一 网络数据速率运行第一网络数据速率测试的指令。所述存储器存储用于进行以下操作的指 令:如果第一网络数据速率测试成功,则将第一方向上的当前网络数据速率设置为第一网 络数据速率。所述存储器存储用于进行以下操作的指令:如果第一网络数据速率测试失败, 则测量在第一网络数据速率测试期间的有效吞吐量速率,以及以所述有效吞吐量速率运行 第二网络数据速率测试。所述存储器存储用于进行以下操作的指令:如果第二网络数据速 率测试成功,则将当前网络数据速率调整为有效吞吐量速率。所述存储器存储用于进行以 下操作的指令:如果第二网络数据速率测试失败,则从在紧急操作模式期间实现的网络数 据速率开始逐渐增加当前网络数据速率。

【专利附图】

【附图说明】
[0007] 图IA是示例通信系统的框图;
[0008] 图IB是示例通信系统的框图;
[0009] 图2是示例通信设备的框图;
[0010] 图3是示例带宽管理系统的框图;
[0011] 图4示出了用于带宽分配和估计的示例系统;
[0012] 图5示出了图4的客户端计算设备的示例;
[0013] 图6示出了用于管理通信流的带宽利用的示例过程;
[0014] 图7A-7B示出了用于管理带宽利用的示例过程
[0015] 图8概念性地示出了实现了题述技术的一些实现的示例电子系统。

【具体实施方式】
[0016] 图IA是可用于这里公开的实施例的通信系统100的框图。通信系统100包括多 个通信设备120AU20B,它们经由通信网络110参与会议会话。在一些实施例中,通信设备 120A、120B可参与彼此之间的会议会话。虽然示出了两个通信设备,但任意数量的通信设备 120AU20B可参与会议会话。会议会话可以允许在通信设备120AU20B之间共享桌面屏幕 内容128A、视频145A和音频147A。在一些实施例中,会议会话允许在通信设备120AU20B 之间同时进行双向数据、音频和视频信号传输。
[0017] 通信设备120AU20B可以是移动(例如无线)或非移动(例如桌面)通信设备 (具有视频/音频和桌面屏幕共享能力)。在一些实施例中,可以使用能够支持实时对等通 信以及支持提供桌面屏幕共享会话和用户交互的应用的任意通信设备。可用于这里公开的 实施例的通信设备120AU20B的示例包括但不限于移动电话、个人数字助理、便携式电视、 膝上型计算机、数字视频/音频录制机等。
[0018] 在一些实施例中,一个通信设备120AU20B可充当主机通信设备,而系统中剩余 的通信设备可充当客户端通信设备。在一些实施例中,主机通信设备可以是会议会话中的 主持人通信设备,而剩余的通信设备可以是会议会话中的观众设备。
[0019] 每个通信设备120A、120B包括显示器128A、128B,其用于显示共享桌面屏幕内容 135AU35B、共享视频内容145AU45B、和/或共享音频内容147AU47B。在某些实施例中, 显示器128A、128B可以是内置显示器。在一些实施例中,显示器128A、128B可以是与通信 设备120AU20B耦合(例如无线地或通过诸如网络连接等的物理连接)的分离单元。通信 设备120AU20B的视频/音频能力可由内置于通信设备120AU20B中的模块提供。在某些 实施例中,向通信设备120A、120B提供视频/音频能力的模块可以是与通信设备120A、120B 耦合的独立单元。
[0020] 通信设备120A、120B可以直接地或通过中间通信设备(未示出)进行通信。例如, 在一些实施例中,通信服务器(示于图IB中)可以便于通信设备120A、120B之间的通信。 在一些实施例中,通信设备120AU20B可以通过安全和/或加密通信链路进行通信。
[0021] 通信网络110可以是高带宽和/或带宽受限的通信网络。在一些实施例中,通信 网络110可以是无线通信网络。在某些实施例中,通信网络110可以是局域网(LAN)、城域 网(MN)或广域网(WAN)(比如因特网)。在一些实施例中,网络110可包括一个或多个通 用网络(例如因特网、LAN等)和/或其他网络(例如互联网协议(IP)网络)的一个或多 个部分。
[0022] 根据所使用的通信设备120A、120B的类型(例如移动或桌面),通信设备120A、 120B通过适当的通信链路125AU25B (例如无线和/或有线通信链路)以及通过适当的通 信网络110参与会议会话。
[0023] 在一些实施例中,可确定在会议会话期间任意给定时刻的可用带宽量。在某些实 施例中,带宽估计器(随后参照图3示出)可用来估计可用带宽量。
[0024] 带宽估计器可位于参与会议会话的通信设备120A、120B内、位于通信网络110的 下游或通信网络110内。在某些实施例中,带宽估计器可与监控组件(随后参照图3示出) 耦合,该监控组件观测多个网络度量(例如延迟、分组丢失等)并确定带宽估计器进行操作 应该采用的设置(即模式)。监控组件可位于带宽估计器的内部或位于带宽估计器的外部, 例如位于网络内和/或位于通信设备内。
[0025] 在一些实施例中,带宽估计器可运行于正常设置(即正常模式),其指示网络110 处于其典型/正常操作状况。备选地,在某些实施例中,带宽估计器可运行于紧急设置(例 如非正常模式),其指示因素(比如大量交叉业务(cross traffic))可能正改变网络的正常 操作状况。
[0026] 在一些实施例中,带宽分配器(随后参照图3示出)可用来在活动业务流之间分 割对于会议会话可用的估计带宽。活动的业务流可包括在通信设备120AU20B之间共享的 桌面屏幕数据内容135AU35B、视频145AU45B、或音频147AU47B。在一些实施例中,每个 业务流在被激活时向带宽分配器进行登记。在一些实施例中,当向带宽分配器进行登记之 后,业务流可规定最小带宽需要。带宽分配器在确保满足每个流所需的最小带宽的同时向 每个流分配带宽。业务流所需的所有最小带宽级别之和指示用于执行会议会话的最小带宽 需要。
[0027] 图IB是可用于这里公开的实施例的通信系统的框图。在一些实施例中,通信设备 120AU20B可使用一个或多个通信服务器来促进彼此的通信。例如,如图IB所示,在一些 实施例中,通信设备120A、120B可连接到促进数据业务149 (包括通信设备之间的共享桌面 屏幕内容135A)的传输的通信服务器150。在某些实施例中,音频服务器160 (音频桥160) 可用来促进参与会议会话的通信设备120AU20B之间的音频业务159的传输。此外,在一 些实施例中,视频服务器170可用来促进通信设备120AU20B之间的共享视频业务169的 传输。
[0028] 通信服务器150、音频桥160和视频服务器170可位于网络110内或位于网络110 的下游。
[0029] 图2是可用于这里公开的实施例的通信设备120A、120B的框图。
[0030] 设备120AU20B可包括处理器230 (例如中央处理单元或CPU),其执行设备的操 作,执行各种指令以及操纵来自主存储器220的数据结构。
[0031] 处理器230可经由输入/输出(I/O)设备接口 240耦合到多个接口。I/O设备接 口 240可包括用来与多个输入和/或输出设备(比如键盘或鼠标)以及与处理器230对接 的逻辑,并允许在处理器230和其他组件之间传输信号。此外,接口设备(比如扬声器210、 麦克风207、外围设备203和显示器128)可用来传输去往/来自处理器230和主存储器220 的信号。在一些实施例中,输入/输出接口 240可包括USB端口(未示出)。
[0032] 在一些实施例中,通信设备120AU20B可包括网络设备接口 250,其向设备提供对 通信网络110的接入。在一些实施例中,输入/输出网络接口 240可用来发送和接收用于 根据这里描述的实施例估计和分配带宽的信号。
[0033] 主存储器220可以是计算机可读存储器,并且可包括非易失性存储器设备的组 合。主存储器220还可包括操作系统270,其实现多种传统操作系统功能,包括:对多个设 备(比如数据库存储设备260)的存储器管理和受控访问以及任务和处理调度。数据存储 设备260可包括用于这里公开的实施例的内容,比如图像、文本、视频、音频和计算机应用。 主存储器220可被配置为保存多种软件265和计算机可执行指令以及包括计算机可执行指 令的数据结构和实现这里描述的技术的方面的数据结构。
[0034] 例如,在一些实施例中,软件265可实现用于估计针对会议会话的可用带宽量的 过程。在一些实施例中,软件270还可实现用于分配估计带宽和在活动业务流之间分割针 对会议会话的可用估计带宽的过程。
[0035] 如前所述,备选地,在一些实施例中,位于网络110 (示于图1)中的应用程序(未 示出)或模块(未示出)可估计针对会议会话的可用带宽量和/或在活动业务流之间分割 对于会议会话可用的估计带宽。
[0036] 图3是根据这里公开的某些实施例的带宽管理系统300的框图。带宽管理系统 可包括带宽估计器310和带宽分配器330。带宽估计器310确定针对引导进/出通信设备 120AU20B的业务流301的可用带宽量。带宽分配器使用估计的可用带宽340来在业务流 301之间分隔可用带宽并向每个业务流分配适当的带宽350。
[0037] 在某些实施例中,带宽估计器310、带宽分配器330或监控组件320中的至少一个 可位于通信设备120AU20B内。在一些实施例中,带宽估计器310、带宽分配器330或监控 组件320中的至少一个或一个的一部分可位于通信网络110、通信服务器150、音频桥160 或视频服务器170中的至少一个内。
[0038] 在一些实施例中,带宽估计器310可操作于正常设置。正常设置可指示网络处于 正常操作状态(例如具有期望的且典型的延迟或业务)。在一些实施例中,带宽估计器320 可操作于紧急设置。紧急设置可指示网络处于非正常状态。例如,紧急状态可指示大量交 叉业务。在某些实施例中,监控组件320可监控网络度量319 (比如通信网络110中的延迟 和分组丢失)以及确定带宽估计器310在任意给定时刻进行操作应采用的设置(即操作模 式 322)。
[0039] 在某些实施例中,带宽估计器310可通过周期性地监控和测试护送(convoy)进/ 出通信设备120AU20B的数据速率来估计可用带宽量。在一些实施例中,在每个数据速率 测试期间,增加(例如使用带宽分配器330)数据速率并监控(例如使用监控组件320)任 何由此得到的网络度量的改变,以确定数据速率增加是否成功。
[0040] 在某些实施例中,当转变到紧急设置时,数据速率可减少预定因子(例如使用带 宽分配器330),以便为交叉业务留出空间。在某些实施例中,预定因子可以是一半。一旦数 据速率降低,就不再对数据速率进行任何改变,除非观测到网络度量发生重大改变(例如 大量分组丢失)。在一些实施例中,在观测到网络度量319发生重大改变(例如大量分组丢 失)的情况下,可进一步降低数据速率。
[0041] 在某些实施例中,监控组件320可确定紧急设置不再有效。监控组件320可响应 于网络度量319返回到它们的正常状况来确定这一从紧急设置的转出。例如,在一些实施 例中,监控组件320可响应于观测到网络度量319 (比如延迟和分组丢失)已经返回到它们 的正常期望值来确定这一从紧急设置的转出。
[0042] 在一些实施例中,可进行从紧急设置的"快速恢复"。在一些实施例中,如上所述, 可通过尝试紧急模式前速率测试(例如以在进入紧急模式之前存在的网络数据速率)来完 成从紧急设置的恢复,由此减少恢复时间。在一些实施例中,在快速恢复数据速率测试失败 (这可能意味着网络110尚未返回到其紧急状态之前的状态)的情况下,带宽估计器110可 通过"慢提升(slow ramp-up)"发现新的可用带宽。当使用慢提升确定可用带宽时,带宽估 计器110可进行多次数据速率测试,在每次数据速率测试期间,增加(例如使用带宽分配器 330)数据速率并监控(例如使用监控组件320)任何由此得到的网络度量的改变,以确定数 据速率增加是否成功。
[0043] 在某些实施例中,在快速恢复速率测试失败的情况下,可以执行第二数据速率测 试,而不是直接回退到慢提升。在一些实施例中,第二数据速率测试可以以在失败的快速恢 复测试期间获得的有效吞吐量速率评估网络100的性能。在一些实施例中,有效吞吐量速 率可指示应用级别吞吐量或由网络110向/从通信设备120AU20B递送的有用信息的量。 这涉及网络110已经恢复到某一程度但尚未恢复到紧急模式前级别的情况下的快速恢复。
[0044] 在一些实施例中,当在通信设备120AU20B之间没有共享视频内容且所共享的业 务流是音频(语音)内容和/或屏幕内容135AU35B时,可以进行活动带宽管理。在没有 共享视频内容的情况下,管理音频(语音)内容和/或屏幕内容135AU35B会话涉及受控 屏幕共享突发并且移除可由音频流引起的任何干扰。
[0045] 备选地,在某些实施例中,当除了共享的桌面会话和/或任何共享音频之外在通 信设备120A、120B之间还共享了视频内容时,可进行活动带宽管理。
[0046] 某些实施例可涉及低带宽连接上的改善的屏幕共享性能。具体地,在某些实施例 中,当屏幕共享是活动的时,可增加总体带宽利用。例如,在一种实施例中,当屏幕共享是活 动的时,总体带宽利用可从80%增加到95%。在一些实施例中,在持续的突发的情况下,可 增加分配给屏幕共享会话的带宽。例如,在一个实施例中,分配给屏幕共享会话的带宽可从 50 %增加到85%。
[0047] 在一些实施例中,针对非常低带宽的连接,可向屏幕共享分配施加下限,以向屏幕 共享会话135AU35B许可比可用的带宽更多的带宽,并且让传输控制协议(TCP)使用分配 给屏幕共享会话135AU35B的附加带宽提供拥塞控制,从而得到最佳可能的屏幕共享性 能。在视频内容共享会话是活动的情况下,当屏幕共享突发是活动的时,向屏幕共享会话许 可附加带宽可导致共享视频内容145AU45B的质量下降。
[0048] 如上所述,带宽估计器310可操作于两个设置/模式,即正常模式和紧急模式。在 数据传输的一个方向(下游或上游)处于紧急模式的情况下,某些实施例可阻止在另一方 向上进行数据速率测试。然而,在某些实施例中,即使一个方向处于紧急模式,也可将提升 能力添加到传输的另一方向。
[0049] 如上所述,带宽分配器330可在活动业务流301 (音频共享、视频共享145AU45B 和/或屏幕共享135A、135B)之间分割可用带宽(按照带宽估计器310所报告的)。
[0050] 在一些实施例中,当被激活时,每个业务流301可以向带宽分配器330进行登记。 作为其登记简档的一部分,每个业务流301可规定最小带宽需要。在一些实施例中,保证满 足最小带宽需要。所有最小需要之和是用于进行会议会话的最小带宽需要。
[0051] 在某些实施例中,每个业务流301 (在其寿命期间)可向带宽分配器330表达当前 带宽需求。例如,在一个实施例中,互联网协议语音(VoIP)音频流可具有可以等于其最小 需要的静态当前需求。在一些实施例中,针对视频145AU45B和屏幕共享145AU45B流,需 求可响应于每个流301中的活动级别发生改变。
[0052] 在一些实施例中,带宽分配器330可通过向每个活动流301初始许可其最小需要 来进行操作。当处理VoIP流时,由于需求不会增加到超过最小需要,所以不需要对带宽分 配进行进一步的修改。
[0053] 如果在已经满足最小带宽需要之后还剩余任何带宽,则在屏幕共享和视频流之间 按比例分配剩余带宽。具体地,如果不存在当前屏幕共享活动135AU35B,则可将所有多余 带宽分配给共享视频流145A、145B。然而,如果屏幕共享流135A、135B具有正在进行的活 动,则其被给予多于带宽的一部分,假定其对此具有充分的需求。在一个实施例中,多余带 宽的所分配的部分可达到多余带宽的50%。剩余带宽分配给视频流145AU45B。
[0054] 在一些实施例中,视频流可在每次屏幕共享变得活动时暂时地适应更低带宽许 可。在一些实施例中,为了将该暂时带宽减少与更持久的带宽减少(比如当连接带宽自身 下降时)相区分,可基于短期或长期来完成带宽分配。长期分配可表示当屏幕共享135A、 135B是非活动的时共享视频内容145AU45B可获得的带宽量。在一些实施例中,视频流可 使用长期带宽分配来配置其编解码器等。在某些实施例中,当短期分配发生改变时(例如 当屏幕共享是活动的时),视频流可以不执行任何显著的重配置并且假定屏幕共享活动是 短暂的。
[0055] 在一些实施例中,短期/长期许可可用来在屏幕共享活动期间最优化视频性能。
[0056] 由于在屏幕共享和视频流之间对多余带宽的均等分割可导致屏幕共享性能下降 (尤其是在低带宽连接上),所以某些实施例可增加分配给屏幕共享会话135A、135B的多余 带宽。例如,在一个实施例中,在持续活动(例如活动持续超过2秒)的情况下,分配给屏 幕共享会话135八、1358的多余带宽可从50%增加到85%。
[0057] 在一些实施例中,为了获得最佳可能屏幕共享性能,当存在活动时可向屏幕共享 分配施加下限度量,由此向屏幕共享会话分配与可用带宽相比更多的带宽,以及让TCP使 用分配给屏幕共享会话的附加带宽来提供拥塞控制。这可导致在屏幕共享会话是活动的时 视频质量下降。
[0058] 在一些实施例中,当屏幕共享会话135AU35B是活动的时可应用预定等待时间, 以便在屏幕共享是活动的时降低高许可和低许可之间的反复。
[0059] 图4示出了用于带宽分配和估计的示例系统400。如图所示,系统400包括经由 网络接入点420连接到网络430的客户端计算设备410。网络430包括与音频通信服务器 440、视频通信服务器450和屏幕共享服务器460 (它们都被配置为经由网络430与客户端 计算设备410进行通信)的连接。
[0060] 客户端计算设备410可以是膝上型计算机、台式计算机、平板计算机、移动电话、 个人数字助理(PDA)、电子音乐播放器等。客户端计算设备410可存储用于进行通信会话 (例如在线会议、使用屏幕共享的语音呼叫、视频呼叫等)的通信应用。通信会话是结合服 务器440、450和460中的一个或多个在网络430上进行的。在一些实现中,客户端计算设 备410与服务器440、450或460的通信受带宽的限制。通常,带宽限制是由于客户端计算 设备410和网络接入点420之间的连接415或网络接入点420和网络430之间的连接425 中的受限带宽导致的。在一些示例中,服务器440、450和460和网络430之间的连接444、 455和465是具有比连接415或425更高的带宽限制的高带宽连接。因此,客户端计算设 备410可假定客户端计算设备410和服务器440、450和460中的每一个之间存在相同的或 近似相同的带宽。例如,客户端计算设备410和服务器440之间的带宽等于客户端计算设 备410和服务器450之间的带宽,其还等于客户端计算设备410和服务器460之间的带宽。 下面结合图5对客户端计算设备410进行更为详细的描述。
[0061] 网络接入点420可包括用来将客户端计算设备410连接到网络430的一个或多个 调制解调器、路由器或蜂窝接入点。网络430可以是因特网、局域网、广域网、蜂窝网络、内 联网、虚拟私有网络等。
[0062] 音频通信服务器440被配置为通过在客户端计算设备410和远程计算设备之间提 供音频流来支持客户端计算设备410和远程计算设备之间的音频通信。视频通信服务器 450被配置为通过在客户端计算设备410和远程计算设备之间提供视频流来支持客户端计 算设备410和远程计算设备之间的视频通信。屏幕共享服务器460被配置为通过在客户端 计算设备410和远程计算设备之间提供屏幕共享流来支持客户端计算设备410和远程计算 设备之间的音频通信。如图所示,音频通信服务器440、视频通信服务器450和屏幕共享服 务器460实现于三个不同的机器上。然而,在一些不例中,服务器440、450和460中的两个 或更多个可实现于相同的机器上。在一些不例中,系统400可缺少服务器440、450和460 中的一个或多个并且题述技术可在没有服务器440、450和460中的一个或多个的情况下实 现。在一些示例中,作为服务器440、450和460中的一个或多个的补充或替换,可结合题述 技术使用其他通信服务器,比如文件下载服务器或文件上传服务器。
[0063] 图5示出了图4的客户端计算设备410的示例。如图所示,客户端计算设备410 包括中央处理单元(CPU) 502、网络接口 504和存储器506。CPU502包括一个或多个处理器。 CPU 502被配置为执行存储于计算机可读介质(例如存储器506)中的指令。网络接口 504 被配置为允许客户端计算设备410在网络(例如网络430)中发送和接收数据。网络接口 504可包括一个或多个网络接口卡(1C)。存储器506存储数据和/或指令。存储器506可 以是缓存单元、存储单元、内部存储器单元或外部存储器单元中的一个或多个。如图所示, 存储器206包括通信应用508。
[0064] 通信应用508被配置为经由客户端计算设备410与连接到网络430的一个或多个 远程计算设备进行通信会话。通信会话可包括在线会议、语音呼叫、视频呼叫、屏幕共享会 话等。通信会话可结合服务器440、450和460中的一个或多个进行。如图所示,通信应用 508包括音频流510、视频流512、屏幕共享流514和带宽管理模块516。
[0065] 音频流510可包括客户端计算设备410和通信会话中所涉及的远程计算单元之间 的结合音频通信服务器440发送的音频传输(例如语音传输)。视频流512可包括客户端 计算设备410和通信会话中所涉及的远程计算单元之间的结合视频通信服务器450发送的 视频传输(例如经由客户端计算设备410或远程计算设备的相机拍摄的视频)。屏幕共享 流514可包括客户端计算设备410和通信会话中所涉及的远程计算单元之间的结合屏幕共 享服务器460发送的屏幕共享传输。在一些实现中,除了以上所列的流之外,通信应用508 还可具有其他流,或者可以缺少以上所列的流510、512或514中的一个或多个。
[0066] 带宽管理模块516被配置为管理通信应用508的带宽利用,例如流510、512或514 的带宽利用。如图所示,带宽管理模块包括带宽管理启用模块518、带宽估计模块520、带宽 分配模块522和操作模式控制模块524。
[0067] 带宽管理启用模块518被配置为基于至少一个活动流(例如具有音频类型的音频 流510、具有视频类型的视频流512或具有屏幕共享类型的屏幕共享流514)的类型确定是 启用还是禁用带宽管理。在一些示例中,如果视频流512是活动的,则启用带宽管理。在一 些示例中,如果视频流512是非活动的,则禁用带宽管理。在一些示例中,音频流510是活 动的,屏幕共享流514是活动的,且视频流512是非活动的,带宽管理被禁用。在一些示例 中,所有三个流510、512或514都是活动的,带宽管理被启用。
[0068] 带宽估计模块520被配置为估计客户端计算设备410处的总可用带宽。假定由客 户端计算设备410到网络接入点420的连接415和/或由网络接入点420到网络430的连 接425限制总可用带宽。因此,客户端计算设备和服务器440、450和460中的每一个之间 的总可用带宽是等同的,且可能只需要服务器440、450和460中的仅一个服务器或不同的 服务器能够辅助客户端计算设备410经由带宽估计模块520估计可用带宽。
[0069] 带宽分配模块522被配置为(在由带宽管理启用模块518启用带宽管理的情况 下)针对多个活动流510、512或514中的每一个确定最小请求带宽和对附加带宽的期望。 可由服务器440、450或460将该信息提供给客户端计算设备410。带宽分配模块522被配 置为基于最小请求带宽和对附加带宽的期望在计算设备处在多个活动流510、512或514之 间动态地分配总可用带宽的至少一部分(例如在80%与95%或100%之间)。
[0070] 根据一些示例,由于音频是以大体恒定的速率和质量发送的,所以音频流510具 有最小请求带宽并且不具有对附加带宽的期望。由于较大的带宽可改善视频质量,所以视 频流512具有最小请求带宽以及对附加带宽的较大(大体恒定)期望。由于屏幕共享流514 可在被共享的屏幕显示发生改变时发送大量数据且在其他时刻发送相对较少的数据,因此 屏幕共享流514具有最小请求带宽和对附加带宽的可变期望。
[0071] 在由带宽管理启用模块518禁用带宽管理的情况下,客户端计算设备410可放弃 在客户端计算设备410处的多个活动流510、512或514之间动态地分配带宽。
[0072] 操作模式控制模块524被配置为在正常操作模式(按照操作模式控制模块524中 的正常操作模式模块528的定义)和紧急模式(按照操作模式控制模块524中的紧急操作 模式模块526的定义)之间交替。操作模式控制模块524被配置为监控网络430中的分组 丢失率和/或分组延迟率。如果分组丢失率高于分组丢失阈值或分组延迟率高于分组延迟 阈值,则操作模式控制模块524可通过调用紧急操作模式模块526进入紧急模式。否则,操 作模式控制模块526可通过调用正常操作模式模块528进入或保持在正常模式。
[0073] 紧急操作模式模块526当被调用时将客户端计算设备410的通信应用508置于紧 急操作模式。紧急操作模式模块526将网络数据速率设置为对应于紧急操作模式的网络数 据速率。紧急操作模式模块526使得客户端计算设备410的通信应用508忽略传输中的分 组延迟。紧急操作模式模块526使得客户端计算设备410的通信应用508在检测到分组丢 失率高于预定分组丢失量时进一步将操作网络数据速率从对应于紧急操作模式的网络数 据速率降低。
[0074] 正常操作模式模块528当被调用时将客户端计算设备410的通信应用508置于正 常操作模式。正常操作模式模块528以超出当前操作网络数据速率的网络数据速率运行网 络数据速率测试。如果以超出当前操作网络数据速率的网络数据速率的网络数据速率测试 是成功的,则正常操作模式模块528增加当前操作网络数据速率。
[0075] 图6示出了用于管理通信流的带宽利用的示例过程600。
[0076] 过程600开始于步骤610,在步骤610,计算设备(例如客户端计算设备410经由 通信应用508的操作)经由多个活动流(例如流510、512或514)进行通信(例如发送或 接收数据)。多个活动流中的每一个具有类型(例如音频、视频、屏幕共享、文件下载、文件 上传等)。多个活动流中的每一个的类型的特性为以下中的一个或多个:(i)固定或可变带 宽需求;(ii)优先级级别;(iii)突发(busty)或平滑的业务;以及(iv)最大请求带宽值。 例如,音频类型流具有固定的带宽需求、高优先级级别、平滑业务和低最大请求带宽值。视 频类型流具有可变带宽需求、低优先级级别(可能不如音频或屏幕共享重要)、突发业务和 高最大请求带宽值。屏幕共享类型流具有可变带宽需求、高优先级级别、突发业务和高最大 请求带宽值。
[0077] 在步骤620中,计算设备基于多个活动流中的至少一个的类型确定是启用还是禁 用通信应用内的带宽管理。例如,如果视频流(或具有可变带宽需求和高最大请求带宽值 的另一流)是活动的,则计算设备可确定启用通信应用内的带宽管理,否则,禁用通信应用 内的带宽管理。如果在通信应用中禁用带宽管理,则仍然可以在通信应用之外管理带宽,例 如经由计算设备的操作系统或经由网络。如果确定启用带宽管理,则过程600继续到步骤 630。如果确定禁用带宽管理,则过程600继续到步骤625。
[0078] 在步骤625中,当确定禁用通信应用内的带宽管理时,计算设备放弃在计算设备 处在多个活动流之间经由通信应用动态地分配带宽。在步骤625之后,过程600结束。
[0079] 在步骤630中,当确定启用通信应用内的带宽管理时,计算设备估计计算设备处 的总可用带宽。在一些示例中,计算设备基于计算设备和第一服务器(例如服务器440、450 或460之一)之间的数据传输来计算计算设备和第一服务器之间的上游和下游带宽。计算 设备基于计算设备和第一服务器之间计算出的上游或下游带宽来估计计算设备和第二服 务器(例如服务器440、450或460中的另一个)之间的上游和下游带宽。计算设备和第一 服务器之间的上游和下游带宽可以等于计算设备和第二服务器之间的上游和下游带宽。
[0080] 在步骤640中,计算设备基于多个活动流中的每一个的类型为多个活动流中的每 一个确定最小请求带宽和对附加带宽的期望。在一些情况下,流与服务器相关联,并且服务 器提供最小请求带宽和对附加带宽的期望。例如,音频流510与音频通信服务器440相关 联;视频流512与视频通信服务器450相关联;以及屏幕共享流与屏幕共享服务器460相关 联。在一些情况下,通信应用(例如通信应用508)存储由通信应用使用的每个流的最小请 求带宽和对附加带宽的期望。
[0081] 在步骤650中,计算设备基于最小请求带宽和对附加带宽的期望在计算设备处在 多个活动流之间经由通信应用动态地分配总可用带宽(在步骤630中估计的)的至少一部 分。根据一些示例,计算设备向多个活动流中的每一个至少指派最小请求带宽。计算设备 基于总可用带宽的所述部分和针对多个活动流的最小请求带宽之和之间的差别确定剩余 带宽。计算设备基于对附加带宽的期望和基于多个活动流中的至少一个的类型的用户体验 优化对剩余带宽进行分配。在一些示例中,活动流包括音频流、视频流和屏幕共享流。剩余 带宽在视频流和屏幕共享流之间动态地分配,且没有任何剩余带宽指派给音频流,音频流 只使用音频流的最小请求带宽。例如,50%的剩余带宽指派给视频流,50%的剩余带宽指派 给屏幕共享流。在一些示例中,如果计算设备确定屏幕共享活动持续阈值时段(例如两秒 钟),则计算设备响应于屏幕共享活动持续阈值时段而增加向活动屏幕共享流的剩余带宽 分配,并减少向活动视频流的剩余带宽分配。例如,可向屏幕共享流指派剩余带宽的85%, 可向视频流指派剩余带宽的15%。在步骤650之后,过程600结束。
[0082] 图7A-7B示出了用于管理带宽利用的示例过程700。
[0083] 如图7A所示,过程700开始于步骤710,在步骤710中,计算设备(例如客户端计 算设备410)在以第一网络数据速率在正常操作模式(例如使用正常操作模式模块528)中 运行通信应用(例如通信应用508)的同时监控分组丢失率或分组延迟率。
[0084] 在步骤720中,计算设备响应于检测到分组丢失超过分组丢失的阈值量或分组延 迟超过分组延迟的阈值量而进入紧急操作模式(例如使用紧急操作模式模块526)。
[0085] 在步骤725中,计算设备基于分组丢失率或分组延迟率的改变确定返回到正常操 作模式。计算设备然后返回到正常操作模式(例如使用正常操作模式模块528)。
[0086] 在步骤730中,计算设备(例如使用操作模式控制模块524)以第一网络数据速率 运行第一网络数据速率测试。
[0087] 在步骤740中,计算设备确定第一网络数据速率测试是否成功。如果是的话,则过 程700继续步骤745。如果否的话,则过程700继续图7B的步骤750。
[0088] 在步骤745中,如果第一网络数据速率测试是成功的,则计算设备将操作网络数 据速率调整为第一网络数据速率。在步骤745之后,过程700结束。
[0089] 如图7B所示,在步骤750中,如果第一网络数据速率测试失败,则计算设备测量第 一网络数据速率测试期间的有效吞吐量速率。
[0090] 在步骤760中,计算设备以有效吞吐量速率运行第二网络数据速率测试。
[0091] 在步骤770中,计算设备确定第二网络数据速率测试是否成功。如果是的话,则过 程700继续步骤775。如果否的话,则过程700继续步骤780。
[0092] 在步骤775中,如果第二网络数据速率测试是成功的,则计算设备将操作网络数 据速率调整为有效吞吐量速率。在步骤775之后,过程700结束。
[0093] 在步骤780中,如果第二网络数据速率测试失败,则计算设备从在紧急操作模式 期间实现的网络数据速率开始逐渐增加操作网络数据速率。在一些示例中,在正常操作模 式期间实现的一个网络数据速率至少是在紧急操作模式期间实现的一个网络数据速率的 两倍。
[0094] 在一些示例中,计算设备基于网络度量确定计算设备能够在网络业务的第一方向 (例如进入计算设备)上而不是网络业务的第二方向(例如离开计算设备)上从紧急操作 模式返回到正常操作模式。在这些情况下,计算设备能够针对第一方向上的业务返回正常 操作模式,而针对第二方向上的业务仍维持紧急模式。在这些情况中,计算设备可以跳过过 程700中的步骤730-775并且从在紧急操作模式期间实现的网络数据速率开始逐渐增加第 一方向上的操作网络数据速率。可跳过第一网络数据速率测试(例如步骤730)和第二网 络数据速率测试(例如步骤760)。
[0095] 在一些示例中,计算设备放弃向位于计算设备外部的服务器(服务器440、450或 460)发送对计算设备的操作模式(例如紧急操作模式)的指示。然而,计算设备可以向服 务器发送对从服务器发送到计算设备的数据(例如在与服务器相关联的流中从服务器发 送到计算设备的数据)的操作网络数据速率(这是在计算设备处确定的)的指示。从服务 器发送到计算设备的数据的操作网络数据速率然后可以在服务器处或计算设备处被执行。 在步骤780之后,过程700结束。
[0096] 根据一些示例,带宽管理系统包括两个主要组件:估计(例如在任意给定时刻确 定多少带宽是可用的)和分配(例如确定如何在活动媒体流之间分割可用带宽)。
[0097] 在客户端计算设备处或端点处执行带宽算法。端点作出针对上游和下游方向的所 有涉及带宽的决定并从而指示各个服务器。在一些情况下,为了带宽管理的目的,在服务器 之间不存在直接通信或协调。
[0098] 端点可以估计其到一个服务器的上游和下游带宽并假定该估计对所有服务器都 成立。由于端点通常运行于有限容量用户网络,所以当服务器典型地位于高容量数据中心 中时,带宽瓶颈典型地接近端点并且在到所有服务器的路径之间是同样的。因此,在大多数 情况下,估计到任意一个服务器的带宽就足够了。这一技术的一个附带好处在于只有一个 服务器需要向端点提供带宽管理支持。
[0099] 带宽估计的一个目标是确定在任意给定时刻多少带宽是可用的。
[0100] 估计过程可包括短初始估计步骤,其提供对网络带宽的快速粗略估计。
[0101] 在初始估计步骤之后,估计算法可操作于以下两种模式之一:"正常"(指示网络 处于其正常状态)和"紧急"(指示网络处于"异常"状态,比如存在大量交叉业务时)。可 基于网络度量(分组丢失和延迟)的观测值来选择任意给定时刻的操作模式。
[0102] 在正常模式中,算法允许周期性"速率测试"以测试可用带宽。在每个速率测试中, 算法稍微增加线上的数据速率并观测度量,以确定速率增加是否成功。
[0103] 当转变到紧急模式时,算法将线上的数据速率减半,以便为交叉业务留出空间。在 此之后,在一些情况下,算法不再对其数据速率进行进一步的改变,除非其观测到大量的分 组丢失。在一些情况下,算法不再对这一模式中的延迟加以关注,这有助于处理基于传输控 制协议(TCP)的交叉业务。
[0104] 带宽分配的一个目标是在活动业务流(例如音频、视频或屏幕共享)之间分割可 用带宽(如估计算法所报告的)。分配器通常只利用估计带宽的一部分(例如80%)并且 留出一些未使用的带宽(例如20% ),以便承担瞬时交叉业务。
[0105] 当被激活时,每个流可向带宽分配器进行登记。作为其登记简档的一部分,流规定 最小带宽需要。最小带宽需要可一直被满足。所有最小需要之和可以对应于供通信应用进 行操作的最小带宽需要。
[0106] 在一些情况下,流简档指示流的带宽消耗通常是突发的、可变比特率还是恒定比 特率以及还指示流可以消耗的最大带宽。
[0107] 在其寿命期间,每个流向分配器表达当前带宽需求。在一些情况下,当前带宽大于 或等于最小带宽并且小于或等于简档中规定的最大带宽。对于音频流(例如互联网协议语 音流),当前需求是静态的并且等于最小需要。对于视频和屏幕共享流,需求随流上的活动 改变。
[0108] 在一些示例中,分配算法按如下进行操作。分配算法向每个活动流许可其最小需 要,由于在一些情况中音频流的需求不会高于音频流的最小需要,所以其满足音频流。如 果在已经满足最小值之后还剩余任何带宽,则在屏幕共享和视频流之间按比例分配剩余带 宽。如果当前不存在任何屏幕共享活动,则可向视频流指派多余带宽。如果屏幕共享流有 正在进行的活动,则可按照其需求给予屏幕共享流一部分多余带宽。可将剩余带宽分配给 视频流。
[0109] 在一些示例中,题述技术涉及智能地确定何时启用、部分地启用或禁用带宽管理。 在一些情况下,带宽是不管活动流设置而一直显式地被管理的,以便确保可用网络容量处 的最优体验。然而,在一些情况下,带宽估计算法可能有时错误地估计容量,导致负面的性 能影响,尤其是在网络容量被严重低估且业务流被人为限制于低估计带宽的情况下。这对 带宽管理既有好处又有坏处。究竟是好处大于坏处还是坏处大于好处取决于活动的流的属 性。
[0110] 在一些示例中,这里公开的带宽管理算法考虑到这一点并巧妙地启用、禁用或部 分启用自身。随着各个流在会话中变得活动或非活动,带宽管理的状态可发生改变。
[0111] 例如,当视频流是活动的时,显式管理带宽的好处要大于坏处。视频流通常具有大 的操作带宽范围。为了获得最佳体验,可能期望向流提供尽可能多的带宽而不使网络拥塞。 因此,当视频流是活动的时,可以使用带宽管理。
[0112] 当只有音频流和屏幕共享流是活动的时,可能存在显式管理带宽的好处,这是因 为屏幕共享突发的带宽消耗是更可控的并且不对音频流引起任何干扰。然而,如果带宽被 低估,则可引起对屏幕共享响应性(responsiveness)的严重负面影响,导致较差的用户体 验,尤其是在高容量网络中更是如此。从而,可能期望在这些场景中禁用带宽管理,从而以 可能的简短音频中断换取快速屏幕共享。可选地,在一些情况下,当只有音频和屏幕共享是 活动的时,题述技术不启用带宽管理系统。
[0113] 当视频、音频和屏幕共享在低容量网络上都是活动的时,在一些情况下,题述技术 可管理带宽,同时进行特定修改以改善屏幕共享性能。例如,分配器可以使用更高比例(例 如95%而不是80%)的可用带宽。在一些情况下,首先,屏幕共享流被许可50%的多余带 宽(在满足了所有流的最小需要之后),而剩余的50%则给予视频。然而,如果屏幕共享活 动持续超过阈值时段(例如2秒),则许可增加到多余带宽的85%,只有15%给予视频。以 上的百分比是示例且可以被其他阈值替代。
[0114] 在一些情况下,可不管可用带宽向对屏幕共享流的许可指定"下限"(例如每秒 350千比特)。这潜在地向屏幕共享流许可多于可用带宽的带宽并且迫使TCP处理网络内 的拥塞控制。然而,因此当屏幕共享突发是活动的时,视频质量可能下降。这一权衡(更快 的屏幕共享针对下降的视频质量)可导致低容量网络上的最佳总体用户体验。可针对屏幕 共享流部分地禁止带宽管理。
[0115] 在紧急模式期间,带宽估计算法使数据速率减少一部分(例如一半或更多)。当度 量指示网络状态已经返回到正常时,算法可切换回到正常模式。此时,算法首先以紧急模式 前速率进行速率测试。如果该测试成功,则完成到紧急模式前性能的快速返回。如果速率 测试失败,则算法测量失败的测试期间的有效吞吐量(其可低于所尝试的速率)。算法然后 以有效吞吐量速率尝试另一速率测试。如果该测试成功,则可导致更快地趋于网络的新状 态。如果有效吞吐量速率测试也失败,则算法回退到"慢提升"策略,其中从紧急速率开始 逐渐增加速率。
[0116] 如果另一方向(对于下游估计来讲是上游,反之亦然)仍处于紧急模式,则算法可 根据一些实现跳过快速恢复并且直接尝试慢提升。根据一些示例,由于度量传递可被相反 方向上的紧急状况不利地影响,所以需要倍加小心。
[0117] 图8概念性地示出了实现了题述技术的一些实现的电子系统800。例如,可使用电 子系统800的布置实现以下中的一个或多个:通信设备120A和120B、通信服务器150、音频 桥160、视频服务器170、客户端计算设备410、音频通信服务器440、视频通信服务器450或 屏幕共享服务器460。电子系统800可以是计算机(例如移动电话、PDA)或任意其他类型 的电子设备。这种电子系统包括各种类型的计算机可读介质和用于各种其他类型的计算机 可读介质的接口。电子系统800包括总线805、处理单元810、系统存储器815、只读存储器 820、永久存储设备825、输入设备接口 830、输出设备接口 835和网络接口 840。
[0118] 总线805统一表示通信地连接电子系统800的多个内部设备的所有系统、外设和 芯片组总线。例如,总线805通信地将处理单元810与只读存储器820、系统存储器850和 永久存储设备825连接在一起。
[0119] 处理单元810从这些多个存储器单元获取要执行的指令和要处理的数据,以便执 行题述技术的过程。处理单元在不同实现中可以是单个处理器或多核处理器。
[0120] 只读存储器(ROM) 820存储处理单元810和电子系统的其他模块所需的静态数据 和指令。另一方面,永久存储设备825是读写存储器设备。该设备是非易失存储单元,其即 使在电子系统800关闭时也存储指令和数据。题述技术的一些实现使用大容量存储设备 (例如磁或光盘及其相应的盘驱动器)作为永久存储设备825。
[0121] 其他实现使用可移除存储设备(例如软盘、闪存驱动器及其相应磁盘驱动器)作 为永久存储设备825。像永久存储设备825 -样,系统存储器815是读写存储器设备。然 而,与存储设备825不同的是,系统存储器815是易失性的读写存储器,比如随机存取存储 器。系统存储器815存储处理器在运行时间需要的一些指令和数据。在一些实现中,将题 述技术的过程存储在系统存储器815、永久存储设备825或只读存储器820中。例如,各个 存储器单元包括根据一些实现用于带宽分配和估计的指令。处理单元810从这些多个存储 器单元获取要执行的指令和要处理的数据,以便执行一些实现的过程。
[0122] 总线805还连接到输入和输出设备接口 830和835。输入设备接口 830使用户能 够向电子系统传送信息并选择命令。与输入设备接口 830-起使用的输入设备包括例如字 母数字键盘和定点设备(也称为"光标控制设备")。输出设备接口 835使得能够例如显示 由电子系统800生成的图像。与输出设备接口 835 -起使用的输出设备包括例如打印机和 显示设备,例如阴极射线管(CRT)或液晶显示器(LCD)。一些实现包括诸如触摸屏等的设 备,其既充当输入设备又充当输出设备。
[0123] 最后,如图8所示,总线805还通过网络接口 840将电子系统800耦合到网络(未 示出)。通过这种方式,电子系统800可以是计算机网络(例如局域网(LAN)、广域网(WAN) 或内联网)或网络网络(例如因特网)的一部分。电子系统800的任何或全部组件可结合 题述技术使用。
[0124] 上述特征和应用可被实现为软件过程,其被规定为记录在计算机可读存储介质 (也被称为就计算机可读介质)上的指令集合。当由一个或多个处理单元(例如一个或多 个处理器、处理器的内核或其他处理单元)执行这些指令时,它们使处理单元执行指令中 指示的动作。计算机可读介质的示例包括但不限于CD-ROM、闪存驱动器、RAM芯片、硬盘驱 动器、EPROM等。计算机可读介质不包括无线地或通过有线连接传递的载波和电子信号。
[0125] 在本说明书中,术语"软件"旨在包括位于只读存储器中的固件或存储在磁存储设 备或闪存存储设备(例如固态驱动器)中的应用,其可被读取到存储器中供处理器处理。此 夕卜,在一些实现中,多个软件技术在保持不同软件技术的同时可被实现为较大程序的子部 分。在一些实现中,多个软件技术也可被实现为分离的程序。最后,一起实现这里描述的软 件技术的分离程序的任何组合在题述技术的范围内。在一些实现中,软件程序(当在一个 或多个电子系统上被安装以便进行操作时)限定实施和执行软件程序的操作的一个或多 个具体的机器实现。
[0126] 计算机程序(也称为程序、软件、软件应用、脚本或代码)可用任意形式的编程语 言来编写,包括汇编或解释语言、说明或过程语言,并且其可被部署为任意的形式,包括独 立程序或模块、组件、子例程、对象或适于在计算环境中使用的其他单元。计算机程序可以 但不必对应于文件系统中的文件。程序可存储在保存其他程序或数据(例如存储在标记语 言文档中的一个或多个脚本)的文件的一部分中、在专用于所考虑的程序的单一文件中或 在多个协调文件(例如存储一个或多个模块、子程序或部分代码的文件)中。计算机程序 可被部署为在一个计算机上或在位于一个站点或分布在多个站点且由通信网络互连的多 个计算机上执行。
[0127] 以上描述的这些功能可被实现在数字电子电路、计算机软件、固件或硬件中。可使 用一个或多个计算机程序产品实现技术。可编程处理器和计算机可被包括在移动设备中或 封装为移动设备。可由一个或多个可编程处理器和由一个或多个可编程逻辑电路来执行过 程和逻辑流。可通过通信网络互连通用和专用计算设备和存储设备。
[0128] 一些实现包括电子组件,例如微处理器、在机器可读或计算机可读介质(备选地, 被称为计算机可读存储介质、机器可读介质或机器可读存储介质)中存储计算机程序指 令的存储设备和存储器。这种计算机可读介质的一些示例包括RAM、ROM、只读压缩光盘 (⑶-ROM)、可记录压缩光盘(⑶-R)、可重写压缩光盘(⑶-RW)、只读数字多功能光盘(例如 DVD-ROM、双层 DVD-ROM)、多种可记录 / 可重写 DVD (例如 DVD-RAM、DVD-RW、DVD+RW 等)、闪 存存储器(例如SD卡、微型SD卡、微SD卡等)、磁或固态硬盘驱动器、只读和可记录:蓝光?: 光盘、超高密度光盘、任意其他光或磁介质和软盘。计算机可读介质可存储可由至少一个处 理单元执行的包括用于执行多个操作的指令集合的计算机程序。计算机程序或计算机代码 的示例包括机器代码(例如由编译器制作)和文件(包括由计算机、电子组件或微处理器 使用解译器执行的高级别代码)。
[0129] 虽然上述讨论主要涉及执行软件的微处理器和多核处理器,但是一些实现是由一 个或多个集成电路执行的,例如专用集成电路(ASIC)或现场可编程门阵列(FPGA)。在一些 实现中,这种集成电路执行存储在电路本身上的指令。
[0130] 说明书和本申请中的任意权利要求中使用的术语"计算机"、"服务器"、"处理器" 和"存储器"都指代电子设备或其他技术设备。这些术语不包括人或人群。为了本说明书 的目的,术语显示或正在显示意思是在电子设备上显示。说明书和本申请中的任意权利要 求中使用的术语"计算机可读介质"整体限于有形的物理对象,其存储可由计算机读取的形 式的信息。这些术语不包括任意无线信号、有线下载信号、和任意其他短暂信号。
[0131] 为了提供与用户的交互,对本说明书中所述的主题的实现可以实现于计算机上, 该计算机具有显示设备(例如,CRT(阴极射线管)或LCD(液晶显示器)监控器)(以用于 向用户显示信息)以及键盘和定点设备(例如鼠标或轨迹球)(用户可通过其向计算机提 供输入)。也可使用其他类型的设备来提供与用户的交互,例如向用户提供的反馈可以是任 意形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;以及可采用任何形式从用户接 收输入,包括声学、语言或触觉输入。此外,计算机可通过向由用户使用的设备发送文档或 从其接收文档来与用户进行交互;例如,通过响应于从用户的客户端设备上的网络浏览器 接收的请求向网络浏览器发送网页。
[0132] 本说明书中所述的主题可实现于计算系统中,该计算系统包括后端组件(例如数 据服务器)、或包括中间件组件(例如应用服务器)、或包括前端组件(例如客户端计算机, 该客户端计算机具有用户可用来与本说明书中所述的主题的实现进行交互的图形用户界 面或网络浏览器)、或一个或多个这种后端、中间件或前端组件的任意组合。系统组件可被 任意形式或介质的数字数据通信(例如通信网络)互连。通信网络的示例包括局域网(LAN) 和广域网(WAN)、互连网络(例如因特网)和对等网络(例如专用对等网络)。
[0133] 计算系统可包括客户端和服务器。客户端和服务器一般彼此远离且通常通过通 信网络交互。客户端和服务器之间的关系源于运行于相应计算机上的并且彼此具有客户 端-服务器关系的计算机程序。在所公开的主题的一些方面中,服务器(例如为了向与客 户端设备交互的用户显示数据并且从其接收用户输入)向客户端设备发送数据(例如HTML 页面)。可在服务器处从客户端设备接收在客户端设备处生成的数据(例如用户交互的结 果)。
[0134] 应该理解的是,所公开的过程中的步骤的具体顺序或层级是示例方法的示出。基 于设计偏好,应该理解的是,可以对过程中的步骤的具体顺序或层级重新进行安排,或执行 所有示出的步骤。一些步骤可同时执行。例如,在一些情况下,多任务并行处理可以是有利 的。此外,上文示出的各个系统组件的分离不应被理解为需要这一分离,应该理解的是,所 描述的程序组件和系统一般可被集成在单个软件产品中或封装成多个软件产品。
[0135] 对这些方面的各种修改是明显的,且这里所限定的一般原理可适用于其他方面。 从而,权利要求不限于这里示出的方面,而是符合与书面权利要求相一致的的完整范围,其 中除非特别表明,否则对单数形式的元素的提及并不意味着"一个且仅是一个",而是"一个 或多个"。除非另外表明,否则术语"一些"指一个或多个。男性代词(例如他的)包括女 性和中性(例如她的和它的),反之亦然。标题和小标题(如果有的话)只是为了方便而使 用的而并不限制题述技术。
[0136] 例如,短语"方面"并不意味着所述方面对题述技术是必不可少的或所述方面适用 于题述技术的所有配置。涉及一个方面的公开可以适用于所有配置或一个或多个配置。例 如,短语方面可指一个或多个方面,反之亦然。例如,短语"配置"并不意味着这一配置对题 述技术是必不可少的或所述配置适用于题述技术的所有配置。涉及一个配置的公开可以适 用于所有配置或一个或多个配置。例如,短语配置可指一个或多个配置,反之亦然。
[0137] 这里使用的词语"示例性"意思是"充当示例或说明"。这里描述为"示例性"的任 意方面或设计不必被理解为比其他方面或设计更优选或更有利。
【权利要求】
1. 一种用于管理通信流的带宽利用的方法,所述方法包括: 在计算设备处经由通信应用中的多个活动流进行通信,其中所述多个活动流中的每一 个具有类型; 基于所述多个活动流中的至少一个活动流的类型来确定是启用还是禁用所述通信应 用内的带宽管理; 当确定启用所述通信应用内的带宽管理时: 估计所述计算设备处的总可用带宽; 基于所述多个活动流中的每一个活动流的类型,为所述多个活动流中的每一个确定请 求带宽;以及 基于所述请求带宽,在所述计算设备处,在所述多个活动流之间经由所述通信应用动 态地分配所述总可用带宽的至少一部分;以及 当确定禁用所述通信应用内的带宽管理时: 放弃在所述计算设备处在所述多个活动流之间经由所述通信应用动态地分配带宽。
2. 根据权利要求1所述的方法,其中,流的请求带宽包括所述流的最小请求带宽和对 所述流的附加带宽的期望。
3. 根据权利要求1所述的方法,其中,所述多个活动流中的每一个活动流的类型的特 征在于以下各项中的一个或多个:(i)固定或可变带宽需求、(ii)优先级级别、(iii)突发 或平滑的业务、或(iv)最大请求带宽值。
4. 根据权利要求3所述的方法,其中,基于所述多个活动流中的至少一个活动流的类 型来确定是启用还是禁用所述通信应用内的带宽管理包括: 在所述多个活动流包括具有可变带宽需求和超过最大请求带宽阈值的最大请求带宽 值的第一类型的流的情况下,确定启用所述通信应用内的带宽管理;以及 在所述多个活动流缺少所述第一类型的流的情况下,确定禁用所述通信应用内的带宽 管理。
5. 根据权利要求4所述的方法,其中,所述第一类型的流包括活动视频流。
6. 根据权利要求3所述的方法,其中,所述多个活动流包括以下各项中的一个或多个: 具有音频类型的活动音频流、具有视频类型的活动视频流、以及具有屏幕共享类型的活动 屏幕共享流。
7. 根据权利要求6所述的方法,还包括: 向所述多个活动流中的每一个至少指派最小请求带宽; 基于所述总可用带宽的所述至少一部分与最小请求带宽之和之间的差来确定剩余带 宽;以及 在所述活动视频流与所述活动屏幕共享流之间动态地分配所述剩余带宽。
8. 根据权利要求7所述的方法,还包括: 确定屏幕共享活动持续阈值时段;以及 响应于所述屏幕共享活动持续所述阈值时段,增加向所述活动屏幕共享流的剩余带宽 分配并减少向所述活动视频流的剩余带宽分配。
9. 根据权利要求6所述的方法,还包括: 不管所估计的总可用带宽如何,每当所述活动屏幕共享流提出对下限带宽的请求时, 向所述活动屏幕共享流指派所述下限带宽。
10. 根据权利要求1所述的方法,其中,基于所述请求带宽在所述计算设备处在所述多 个活动流之间经由所述通信应用动态地分配所述总可用带宽的至少一部分包括: 向所述多个活动流中的每一个至少指派最小请求带宽; 基于所述总可用带宽的所述至少一部分与最小请求带宽之和之间的差来确定剩余带 宽;以及 基于对所述多个活动流中的至少一个活动流的附加带宽的期望和所述多个活动流中 的所述至少一个活动流的类型,动态地分配所述剩余带宽。
11. 一种用于管理带宽利用的非瞬时机器可读介质,所述机器可读介质存储用于执行 以下操作的指令: 经由在连接到网络的计算机器处执行的通信应用来监控一个或多个网络度量,其中所 述通信应用被配置为在正常操作模式或紧急操作模式中运行; 基于所监控的一个或多个网络度量来估计所述计算机器处的总可用带宽; 以第一网络数据速率在所述正常操作模式中运行所述通信应用; 基于所监控的一个或多个网络度量进入紧急操作模式; 基于所监控的一个或多个网络度量的改变来确定所述通信应用能够针对第一方向上 的通信返回所述正常操作模式; 针对所述第一方向上的通信进入所述正常操作模式; 以所述第一网络数据速率运行第一网络数据速率测试; 如果所述第一网络数据速率测试成功,则将所述第一方向上的当前网络数据速率设置 为所述第一网络数据速率;以及 如果所述第一网络数据速率测试失败,则: 测量在所述第一网络数据速率测试期间的有效吞吐量速率; 以所述有效吞吐量速率运行第二网络数据速率测试; 如果所述第二网络数据速率测试成功,则将所述当前网络数据速率调整为所述有效吞 吐量速率;以及 如果所述第二网络数据速率测试失败,则从在所述紧急操作模式期间实现的网络数据 速率开始逐渐增加所述当前网络数据速率。
12. 根据权利要求11所述的非瞬时机器可读介质,其中,用于估计所述计算机器处的 总可用带宽的指令包括用于执行以下操作的指令: 基于所述计算机器与针对第一活动流的第一服务器之间的数据传输,计算所述计算机 器与所述第一服务器之间的上游和下游带宽;以及 估计所述计算机器与针对第二活动流的第二服务器之间的上游和下游带宽与所计算 的所述计算机器与所述第一服务器之间的上游或下游带宽相对应。
13. 根据权利要求11所述的非瞬时机器可读介质,其中,用于进入紧急操作模式的指 令包括用于执行以下操作的指令: 将操作网络数据速率设置为与所述紧急操作模式相对应的网络数据速率; 忽略分组延迟;以及 当检测到分组丢失率高于分组丢失的第二阈值量时,进一步减小所述操作网络数据速 率。
14. 根据权利要求11所述的非瞬时机器可读介质,其中,用于进入所述正常操作模式 的指令包括用于执行以下操作的指令: 以超出所述当前网络数据速率的网络数据速率运行网络数据速率测试;以及 如果以超出所述当前网络数据速率的所述网络数据速率运行的所述网络数据速率测 试成功,则增加所述当前网络数据速率。
15. 根据权利要求11所述的非瞬时机器可读介质,所述机器可读介质还存储用于执行 以下操作的指令: 基于所估计的总可用带宽或所监控的一个或多个网络度量,确定所述通信应用不能针 对第二方向上的通信返回所述正常操作模式,其中所述第一方向是进入所述计算机器或离 开所述计算机器中的第一个,所述第二方向是进入所述计算机器或离开所述计算机器中不 同的第二个; 针对所述第二方向上的通信,维持所述紧急操作模式;以及 针对所述第一方向上的通信,从在所述紧急操作模式期间实现的网络数据速率开始逐 渐增加所述当前网络数据速率,同时针对所述第二方向上的通信,将所述当前网络数据速 率维持在在所述紧急操作模式期间实现的所述网络数据速率。
16. 根据权利要求11所述的非瞬时机器可读介质,所述机器可读介质还存储用于执行 以下操作的指令: 放弃向所述计算机器外部的与活动流相关联的服务器发送对所述通信应用的操作模 式的指示;以及 向与所述活动流相关联的所述服务器发送对从所述服务器到所述计算机器的活动流 中的数据传输的当前网络数据速率的指示。
17. 根据权利要求11所述的非瞬时机器可读介质,其中,所监控的一个或多个网络度 量包括以下各项中的一个或多个:分组丢失率、分组延迟率、或网络有效吞吐量速率。
18. -种用于管理带宽利用的系统,所述系统包括: 一个或多个处理器; 网络接口,用于连接到网络;以及 存储器,所述存储器存储用于执行以下操作的指令: 经由通过所述一个或多个处理器执行的通信应用来监控一个或多个网络度量,其中所 述通信应用被配置为在正常操作模式或紧急操作模式中运行; 基于所监控的一个或多个网络度量来估计所述网络中的总可用带宽; 以第一网络数据速率在所述正常操作模式中运行所述通信应用; 基于所监控的一个或多个网络度量进入紧急操作模式; 基于所监控的一个或多个网络度量的改变,确定所述通信应用能够针对第一方向上的 通信返回所述正常操作模式; 针对所述第一方向上的通信进入所述正常操作模式; 以所述第一网络数据速率运行第一网络数据速率测试; 如果所述第一网络数据速率测试成功,则将所述第一方向上的当前网络数据速率设置 为所述第一网络数据速率;以及 如果所述第一网络数据速率测试失败,则: 测量在所述第一网络数据速率测试期间的有效吞吐量速率; 以所述有效吞吐量速率运行第二网络数据速率测试; 如果所述第二网络数据速率测试成功,则将所述当前网络数据速率调整为所述有效吞 吐量速率;以及 如果所述第二网络数据速率测试失败,则从在所述紧急操作模式期间实现的网络数据 速率开始逐渐增加所述当前网络数据速率。
19. 根据权利要求18所述的系统,其中,用于估计所述网络中的总可用带宽的指令包 括用于执行以下操作的指令: 基于所述网络接口与第一服务器之间的数据传输,计算所述网络接口与所述第一服务 器之间的上游和下游带宽;以及 估计所述网络接口与针对第二活动流的第二服务器之间的上游和下游带宽与所计算 的所述网络接口与所述第一服务器之间的上游或下游带宽相对应。
20. 根据权利要求18所述的系统,其中,用于进入紧急操作模式的指令包括用于执行 以下操作的指令: 将操作网络数据速率设置为与所述紧急操作模式相对应的网络数据速率; 忽略分组延迟;以及 当检测到分组丢失率高于分组丢失的第二阈值量时,进一步减小所述操作网络数据速 率。
21. 根据权利要求18所述的系统,其中,用于进入所述正常操作模式的指令包括用于 执行以下操作的指令: 以超出所述当前网络数据速率的网络数据速率运行网络数据速率测试;以及 如果以超出所述当前网络数据速率的所述网络数据速率运行的所述网络数据速率测 试成功,则增加所述当前网络数据速率。
22. 根据权利要求18所述的系统,所述存储器还存储用于执行以下操作的指令: 基于所估计的总可用带宽或所监控的一个或多个网络度量,确定所述通信应用不能针 对第二方向上的通信返回所述正常操作模式,其中所述第一方向是进入所述网络接口或离 开所述网络接口中的第一个,所述第二方向是进入所述计算机器或离开所述计算机器中不 同的第二个; 针对所述第二方向上的通信,维持所述紧急操作模式;以及 针对所述第一方向上的通信,从在所述紧急操作模式期间实现的网络数据速率开始逐 渐增加所述当前网络数据速率,同时针对所述第二方向上的通信,将所述当前网络数据速 率维持在在所述紧急操作模式期间实现的所述网络数据速率。
23. 根据权利要求18所述的系统,所述存储器还存储用于执行以下操作的指令: 放弃向与活动流相关联的服务器发送对所述通信应用的操作模式的指示;以及 向与所述活动流相关联的所述服务器发送对从所述服务器到所述网络接口的活动流 中的数据传输的当前网络数据速率的指示。
24. 根据权利要求18所述的系统,其中,所监控的一个或多个网络度量包括以下各项 中的一个或多个:分组丢失率、分组延迟率、或网络有效吞吐量速率。
【文档编号】H04L12/70GK104396215SQ201380034733
【公开日】2015年3月4日 申请日期:2013年4月26日 优先权日:2012年5月1日
【发明者】基马亚·米塔尔, 艾伯特·亚历山德罗夫, 萨沙·屈梅尔, 苏妮塔·比尔拉姆, 克里希纳·拉马钱德兰 申请人:思杰系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1