首页 / 专利库 / 软件 / 用例 / 主动链路负载平衡以维持链路的质量

主动链路负载平衡以维持链路的质量

阅读:508发布:2020-05-08

专利汇可以提供主动链路负载平衡以维持链路的质量专利检索,专利查询,专利分析的服务。并且所公开的 实施例 描述了用于预测链路的健康状况的系统和方法。与链路通信的装置可以识别经过该链路的网络流量的流的配置文件信息。该装置可以通过将一个或多个规则应用于配置文件信息的多个参数来确定链路的健康状况的第一预测。该装置可以通过将分类器应用于配置文件信息的多个参数的一个或多个定时序列来确定链路的健康状况的第二预测。该装置可以为健康状况的第一预测和健康状况的第二预测中的每一个建立各自的权重。该装置可以使用各自的权重在健康状况的第一预测和健康状况的第二预测之间进行选择,以提供链路的健康状况的预测指标。,下面是主动链路负载平衡以维持链路的质量专利的具体信息内容。

1.一种用于预测链路的健康状况的方法,所述方法包括:
(a)由与链路通信的装置识别经过所述链路的网络流量的流的配置文件信息,所述配置文件信息包括关于所述链路的多个参数;
(b)由所述装置通过将一个或多个规则应用于所述配置文件信息的多个参数来确定所述链路的健康状况的第一预测;
(c)由所述装置通过将分类器应用于所述配置文件信息的多个参数的一个或多个定时序列来确定所述链路的健康状况的第二预测;
(d)由所述装置为所述健康状况的第一预测和所述健康状况的第二预测中的每一个建立各自的权重;
(e)由所述装置使用所述各自的权重在所述健康状况的第一预测和所述健康状况的第二预测之间进行选择,以提供所述链路的健康状况的预测指标。
2.根据权利要求1所述的方法,其中,(a)还包括由所述装置针对所述配置文件信息收集多个参数,所述多个参数包括以下中的两个或更多个:延迟、利用率、分组丢失、抖动、队列大小、连接数和连接类型。
3.根据权利要求1所述的方法,其中,(b)还包括由所述装置应用所述一个或多个规则作为包括分组丢失、延迟和抖动的多个参数的函数。
4.根据权利要求3所述的方法,其中,所述函数是将所述多个参数中的每一个乘以各自的常数的和。
5.根据权利要求1所述的方法,其中,(c)还包括由所述装置响应于所述链路的健康状况爬升到预定阈值之上或下降到预定阈值以下之一来创建所述多个参数的一个或多个定时序列。
6.根据权利要求1所述的方法,其中,(e)还包括将函数应用于所述健康状况的第一预测的第一权重和所述健康状况的第二预测的第二权重,以在所述健康状况的第一预测和所述健康状况的第二预测之间进行选择。
7.根据权利要求1所述的方法,还包括由所述装置响应于所述链路的健康状况的预测指标而采取与所述链路相关联的行动。
8.根据权利要求7所述的方法,还包括由所述装置经由所选择的所述链路的健康状况的预测指标基于预定的延迟阈值来识别所述链路具有高延迟,并将队列中分组占用率大于预定占用阈值的一个或多个连接移动至一个或多个其他链路。
9.根据权利要求7所述的方法,还包括由所述装置经由所选择的所述链路的健康状况的预测指标基于预定抖动阈值来识别所述链路具有高抖动,以及移动一个或多个连接,在所述一个或多个连接中,到达所述装置的到达间隔时间与所述装置的队列的离开间隔时间的差高于预定阈值。
10.根据权利要求7所述的方法,还包括由所述装置经由所选择的所述链路的健康状况的预测指标基于预定丢失阈值来识别所述链路具有高丢失,并且由所述装置经由所述链路来传输带宽的预定部分。
11.一种用于预测链路的健康状况的系统,所述系统包括:
装置,其包括耦合到存储器并与链路通信的处理器,所述装置被配置为识别经过所述链路的网络流量的流的配置文件信息,所述配置文件信息包括关于所述链路的多个参数;
规则引擎,其被配置为通过将一个或多个规则应用于所述配置文件信息的多个参数来确定所述链路的健康状况的第一预测;
分类器,其被配置为通过将分类器应用于所述配置文件信息的多个参数的一个或多个定时序列来确定所述链路的健康状况的第二预测;
权重调节器,其被配置为针对所述健康状况的第一预测和所述健康状况的第二预测中的每一个建立各自的权重;
预测选择器,其被配置为使用所述各自的权重在所述健康状况的第一预测和所述健康状况的第二预测之间进行选择,以提供所述链路的健康状况的预测指标。
12.根据权利要求11所述的系统,其中,所述装置还被配置为针对所述配置文件信息收集多个参数,所述多个参数包括以下中的两个或更多个:延迟、利用率、分组丢失、抖动、队列大小、连接数和连接类型。
13.根据权利要求11所述的系统,其中,所述规则引擎还被配置为应用所述一个或多个规则作为包括分组丢失、延迟和抖动的多个参数的函数。
14.根据权利要求13所述的系统,其中,所述函数是将所述多个参数中的每一个乘以各自的常数的和。
15.根据权利要求11所述的系统,其中,所述装置还被配置为响应于所述链路的健康状况爬升到预定阈值之上或下降到预定阈值以下之一来创建所述多个参数的一个或多个定时序列。
16.根据权利要求11所述的系统,其中,所述预测指标选择器被配置为将函数应用于所述健康状况的第一预测的第一权重和所述健康状况的第二预测的第二权重,以在所述健康状况的第一预测和所述健康状况的第二预测之间进行选择。
17.根据权利要求11所述的系统,其中,所述装置还被配置为响应于所述链路的健康状况的预测指标而采取与所述链路相关联的行动。
18.根据权利要求17所述的系统,其中,所述装置还被配置为经由所选择的所述链路的健康状况的预测指标基于预定的延迟阈值来识别所述链路具有高延迟,并将队列中分组占用率大于预定占用阈值的一个或多个连接移动至一个或多个其他链路。
19.根据权利要求17所述的系统,其中,所述装置还被配置为经由所选择的所述链路的健康状况的预测指标基于预定抖动阈值来识别所述链路具有高抖动,以及移动一个或多个连接,在所述一个或多个连接中,到达所述装置的到达间隔时间与所述装置的队列的离开间隔时间的差高于预定阈值。
20.根据权利要求17所述的系统,其中,所述装置还被配置为经由所选择的所述链路的健康状况的预测指标基于预定丢失阈值来识别所述链路具有高丢失,并且由所述装置经由所述链路来传输带宽的预定部分。

说明书全文

主动链路负载平衡以维持链路的质量

[0001] 相关申请的交叉引用
[0002] 本申请要求于2017年7月26日提交的名称为“PROACTIVE LINK LOAD BALANCING TO MAINTAIN QUALITY OF LINK”的美国专利申请No.15/660,147的优先权和权益,其全部内容通过引用包含于此以用于所有目的。

技术领域

[0003] 本申请总体上涉及用于预测网络链路的健康状况的方法和系统。

背景技术

[0004] 数据可以跨越网络中的一个或多个链路传输。网络中链路的状态可能会影响网络连接的质量,从而影响传输的质量。例如,与处于好状态的链路相比,处于坏状态的链路可能会遭受更大的分组丢失、抖动或延迟。由于在识别链路状态或链路状态的原因方面存在技术挑战,因此可能难以选择用于数据传输的链路或改善链路的状态。发明内容
[0005] 提供此发明内容是为了以简化的形式介绍选择的概念,这些概念将在下面的详细描述中进一步描述。本发明内容既不旨在标识关键特征或必要特征,也不旨在限制随附的权利要求的范围。
[0006] 本公开涉及用于预测链路的健康状况的系统和方法。在诸如广域网(WAN)的网络中,识别处于好状态的链路,识别链路进入坏状态的原因,预测链路的未来状态,或主动地阻止链路进入坏状态可能具有挑战性。客户机和服务器中间的装置(例如网络设备或中间盒)试图通过利用处于好状态的链路来传输数据,以促进或改善跨链路的数据传输的负载平衡。执行WAN虚拟化的中间盒可以被配置为经由不同WAN网络连接的一对装置。中间盒可以通过确定每个链路的分组丢失、延迟、抖动、拥塞和其他网络实体,来确定发送高优先级分组(流量)的最佳链路。例如,给定两个中间盒之间的一组链路,可以通过负载平衡跨越好链路的数据来改善网络吞吐量或可靠性,所述好链路与坏链路相比经历较少的分组丢弃、延迟和抖动。基于丢失、延迟和抖动,中间盒之间的活动链路(路径)可以处于好状态或坏状态。中间盒可以被配置为选择处于好状态的链路或路径,而不是处于坏状态的链路(例如,经历更多分组丢失、抖动和延迟的链路),以便为连接提供更好的QoS。因此,将更多的链路维持在好状态可以为连接提供更好的服务质量(QoS),因为它可以为中间盒提供更多选项,从中可以选择发送分组的链路。
[0007] 可以导致链路进入坏状态的因素包括例如高延迟、高分组丢弃或高抖动。如果装置可以确定链路进入坏状态的原因,则装置可以从该状态恢复链路。例如,如果高抖动是链路变坏的原因,则装置可以从该链路的设备端消除导致高抖动的因素,从而防止链路变为坏状态。
[0008] 此外,由于装置选择好链路来可靠地传输分组,所以装置可以增加好链路上的负载。这可能会导致好链路经历高抖动和丢失,并最终进入坏状态。本公开的系统和方法可通过以下方式来改善链路的使用:通过预测链路进入坏状态的原因来避免该级联效应,以及基于该原因执行行动以防止链路进入坏状态,诸如重新分配特定连接的流量。中间装置可以防止最佳链路进入坏状态,并在WAN中维持更多数量的高质量链路。
[0009] 因此,本公开的系统和方法允许装置动态地预测链路健康状况并基于链路健康状况采取行动以防止链路变坏。主动地管理链路健康状况或质量可以防止链路因过载而变坏的级联效应。此外,装置可以将更多的链路维持在好状态。
[0010] 为此,装置可以使用预测算法来检测链路进入坏状态的原因或链路在将来进入坏状态的原因,并基于预测的原因采取行动以防止链路进入坏状态或从坏状态恢复链路。因此,装置可以维持大量的高质量链路。
[0011] 装置可以基于一个或多个参数来识别、确定或预测链路的状态(或健康状况)。装置可以基于这些参数执行主动连接管理。例如,装置可以配置有混合预测机制,该混合预测机制可以包括一组静态规则和在线机器学习分类器。静态规则可以根据经验由链路健康状况定义参数组成。在线机器学习分类器可以学习这些参数。可以对由静态规则输出的预测和由在线机器学习分类器输出的预测进行加权和组合以生成最终预测,该最终预测指示链路是否进入坏状态以及链路进入坏状态的原因。装置可以基于原因执行主动行动或决策,以维持链路的状态或健康状况。装置可以将权重应用于预测,该权重可以是时间和各个工具的准确性的函数。
[0012] 为了检测导致链路进入坏状态的原因,装置可以识别一个或多个变量,例如高分组丢弃、高抖动或高延迟。如果这些变量中的任何一个或多个大于阈值,则装置可以确定链路可能进入坏状态。装置可以基于模式和关系来预测链路将经历高分组丢弃、高抖动或高延迟中的一个或多个。这些模式和关系可以被称为特征集。
[0013] 例如,可以从以下各项的组合确定分组丢弃的增加:链路利用率的增加;链路延迟的增加;窗口大小的同步;连接数增加的速率(突发);和连接类型(例如,批量、聊天或流)。在另一个示例中,抖动的增加可以由以下确定:队列中到达间隔时间以及从队列发送分组的到达间隔时间的差;平均队列大小;和当前队列大小。在又一个示例中,分组丢弃的增加可以由以下确定:队列大小;最小延迟;连接类型;和连接数。通过使用预测算法来预测将来可能导致链路故障(或进入坏状态)的参数,装置可以利用各种学习算法之间的关系。
[0014] 本公开的至少一个方面涉及一种用于预测链路的健康状况的方法。与链路通信的装置可以识别经过该链路的网络流量的流的配置文件信息。配置文件信息可以包括关于链路的多个参数。该装置可以通过将一个或多个规则应用于所述配置文件信息的多个参数来确定所述链路的健康状况的第一预测。该装置可以通过将分类器应用于配置文件信息的多个参数的一个或多个定时序列来确定链路的健康状况的第二预测。该装置可以为健康状况的第一预测和健康状况的第二预测中的每一个建立各自的权重。该装置可以使用各自的权重在健康状况的第一预测和健康状况的第二预测之间进行选择,以提供链路的健康状况的预测指标。
[0015] 在一些实施例中,装置可为配置文件信息收集的多个参数包括以下中的两个或更多个:延迟、利用率、分组丢失、抖动、队列大小、连接数和连接类型。在一些实施例中,装置应用所述一个或多个规则,作为包括分组丢失、延迟和抖动的多个参数的函数。该函数可以是将所述多个参数中的每一个乘以各自的常数的和。
[0016] 在一些实施例中,装置可以响应于链路的健康状况爬升到预定阈值之上或下降到预定阈值以下之一来创建所述多个参数的一个或多个定时序列。装置可以将函数应用于健康状况的第一预测的第一权重和健康状况的第二预测的第二权重,以在健康状况的第一预测和健康状况的第二预测之间进行选择。
[0017] 在一些实施例中,装置可以响应于链路的健康状况的预测指标而采取与链路相关联的行动。该装置可以经由所选择的链路的健康状况的预测指标基于预定的延迟阈值来识别所述链路具有高延迟。装置可以将队列中分组占用率大于预定占用阈值的一个或多个连接移动至一个或多个其他链路。在一些实施例中,该装置可以经由所选择的链路的健康状况的预测指标基于预定抖动阈值来识别所述链路具有高抖动,以及移动一个或多个连接,在所述一个或多个连接中,到达装置的到达间隔时间与装置的队列的离开间隔时间的差高于预定阈值。在一些实施例中,装置可以经由所选择的链路的健康状况的预测指标基于预定丢失阈值来识别所述链路具有高丢失,并且由所述装置经由所述链路来传输带宽的预定部分。
[0018] 在另一方面,本公开涉及一种用于预测链路的健康状况的系统。该系统可以包括具有耦合到存储器的处理器的装置。该装置可以与链路通信。该装置可以识别经过该链路的网络流量的流的配置文件信息。配置文件信息包括关于链路的多个参数。该系统可以包括规则引擎,该规则引擎通过将一个或多个规则应用于配置文件信息的多个参数来确定所述链路的健康状况的第一预测。该系统可以包括分类器,该分类器通过将分类器应用于配置文件信息的多个参数的一个或多个定时序列来确定链路的健康状况的第二预测。该系统可以包括权重调节器,其针对所述健康状况的第一预测和健康状况的第二预测中的每一个建立各自的权重。该系统可以包括预测选择器,该预测选择器使用各自的权重在健康状况的第一预测和健康状况的第二预测之间进行选择,以提供所述链路的健康状况的预测指标。
[0019] 在一些实施例中,装置为配置文件信息收集的多个参数包括以下两个或更多个:延迟、利用率、分组丢失、抖动、队列大小、连接数和连接类型。在一些实施例中,规则引擎可以应用所述一个或多个规则,作为包括分组丢失、延迟和抖动的多个参数的函数。在一些实施例中,函数是将所述多个参数中的每一个乘以各自的常数的和。在一些实施例中,装置响应于链路的健康状况爬升到预定阈值之上或下降到预定阈值以下之一来创建所述多个参数的一个或多个定时序列。
[0020] 在一些实施例中,预测指标选择器将函数应用于健康状况的第一预测的第一权重和健康状况的第二预测的第二权重,以在健康状况的第一预测和健康状况的第二预测之间进行选择。在一些实施例中,装置可以响应于链路的健康状况的预测指标而采取与链路相关联的行动。装置可以经由所选择的链路的健康状况的预测指标基于预定的延迟阈值来识别所述链路具有高延迟,并将队列中分组占用率大于预定占用阈值的一个或多个连接移动至一个或多个其他链路。该装置可以经由所选择的链路的健康状况的预测指标基于预定抖动阈值来识别所述链路具有高抖动,以及移动一个或多个连接,在所述一个或多个连接中,到达装置的到达间隔时间与所述装置的队列的离开间隔时间的差高于预定阈值。该装置可以经由所选择的链路的健康状况的预测指标基于预定丢失阈值来识别所述链路具有高丢失,并且由所述装置经由所述链路来传输带宽的预定部分。附图说明
[0021] 根据以下详细描述、所附权利要求书和附图,本文中所公开的实施例的目的、方面、特征和优点将变得更加显而易见,在附图中,相似的附图标记表示相似或相同的元件。说明书中结合附图引入的附图标记可以在一个或多个后续附图中重复,而无需在说明书中进行额外描述,以便为其他特征提供上下文,并且并非每个元件都可以在每个附图中标记。
附图不一定按比例绘制,而是将重点放在说明实施例、原理和概念上。附图不旨在限制随附的权利要求的范围。
[0022] 图1A是根据示意性实施例的网络计算系统的框图
[0023] 图1B是根据示意性实施例的用于经由设备将计算环境从服务器交付到客户机的网络计算系统的框图;
[0024] 图1C是根据示意性实施例的计算装置的框图;
[0025] 图2是根据示意性实施例的用于处理客户机与服务器之间的通信的设备的框图;
[0026] 图3是根据示意性实施例的虚拟化环境的框图;
[0027] 图4是根据示意性实施例的集群系统的框图;
[0028] 图5A是根据示意性实施例的用于预测链路的健康状况的系统的框图;
[0029] 图5B是根据示意性实施例的用于预测链路的健康状况的操作序列的框图;以及[0030] 图5C是根据示意性实施例的预测链路的健康状况的方法的流程图

具体实施方式

[0031] 为了阅读下面的各个实施例的描述,本说明书各部分及其相应的内容的以下描述可能是有帮助的:
[0032] A部分描述了可用于实践本文描述的实施例的网络环境和计算环境;
[0033] B部分描述了用于将计算环境交付至远程用户的系统和方法的实施例;
[0034] C部分描述了用于虚拟化应用交付控制器的系统和方法的实施例;
[0035] D部分描述了用于提供集群式设备架构环境的系统和方法的实施例;以及[0036] E部分描述了用于预测链路的健康状况的系统和方法的实施例。
[0037] A.网络和计算环境
[0038] 参考图1A,示出了示意性网络环境100。网络环境100可以包括经由一个或多个网络104(1)-104n(通常称为网络104)与一个或多个服务器106(1)-106(n)(通常也称为远程机器106或服务器106)通信的一个或多个客户机102(1)-102(n)(通常也称为本地机器102或客户机102)。在一些实施例中,客户机102可以经由一个或多个设备200(1)-200n(通常称为设备200或网关200)与服务器106通信。
[0039] 尽管图1A所示的实施例示出了客户机102和服务器106之间的一个或多个网络104,但在其他实施例中,客户机102和服务器106可以在同一网络104上。各种网络104可以是相同类型的网络或不同类型的网络。例如,在一些实施例中,网络104(1)可以是诸如局域网(LAN)或公司内联网的专用网络,而网络104(2)和/或网络104(n)可以是诸如广域网(WAN)或互联网的公共网络。在其他实施例中,网络104(1)和网络104(n)都可以是专用网络。网络104可以采用一种或多种类型的物理网络和/或网络拓扑,例如有线和/或无线网络,并且可以采用一种或多种通信传输协议,例如传输控制协议(TCP)、互联网协议(IP)、用户数据报协议(UDP)或其他类似协议。
[0040] 如图1A所示,一个或多个设备200可以位于网络环境100的各个点或各个通信路径中。例如,设备200可以部署在两个网络104(1)和104(2)之间,并且设备200可以彼此通信以协同工作以例如加速客户机102和服务器106之间的网络流量。在其他实施例中,设备200可以位于网络104上。例如,设备200可以被实现为客户机102和/或服务器106之一的一部分。在一个实施例中,设备200可以实现为网络装置,例如佛罗里达州劳德代尔堡的Citrix Systems公司销售的 产品。
[0041] 如图1A所示,一个或多个服务器106可以作为服务器场38工作。服务器场38的服务器106可以被逻辑分组,并且可以与客户机102和/或其他服务器106在地理上位于同一地点(例如,在本地)或在地理上分散(例如,基于)。在一个实施例中,服务器场38代表一个或多个客户机102(例如,作为应用服务器)执行一个或多个应用,然而其他用途也是可能的,例如文件服务器、网关服务器、代理服务器或其他类似的服务器用途。客户机102可以寻求对服务器106上托管的应用的访问
[0042] 如图1A所示,在某些实施例中,设备200可以包括一个或多个附加设备,由其替换或与之通信,附加设备例如是WAN解决方案设备205(1)-205(n),通常称为WAN解决方案设备205。WAN解决方案设备可以包括例如WAN虚拟化解决方案或WAN优化器。例如,WAN解决方案设备205可以加速、高速缓存、压缩、管理或以其他方式优化或改善网络流量(例如去往和/或来自WAN连接的流量)的性能、操作、流控制或服务质量,例如优化广域文件服务(WAFS)、加速服务器消息(SMB)或公用因特网文件系统(CIFS)。在一些实施例中,设备205可以是性能增强代理或WAN解决方案或优化控制器。在一个实施例中,设备205可以被实现为佛罗里达州劳德代尔堡的Citrix Systems公司销售的 产品。
[0043] 参考图1B,示出了用于在客户机102上交付和/或操作计算网络环境的示例网络环境100'。如图1B所示,服务器106可以包括用于将计算环境、应用和/或数据文件交付给一个或多个客户机102的应用交付系统190。客户机102可以包括客户机代理120和计算环境15。计算环境15可以执行或操作应用16,所述应用16访问、处理或使用数据文件17。计算环境
15、应用16和/或数据文件17可以经由设备200和/或服务器106来交付。
[0044] 设备200可以例如通过应用交付系统190来加速计算环境15的全部或一部分到客户机102的交付。例如,设备200可以通过加速客户机102和服务器106之间的传输层流量,来加速流应用和该应用可处理的数据文件的从数据中心到远程用户位置的交付。可以通过一种或多种技术来提供这种加速,例如:1)传输层连接池、2)传输层连接多路复用、3)传输控制协议缓冲、4)压缩、5)高速缓存或其他技术。设备200还可以提供服务器106的负载平衡,以处理来自客户机102的请求,充当代理或访问服务器以提供对一个或多个服务器106的访问,提供安全性和/或充当客户机102与服务器106之间的防火墙,提供域名服务(DNS)解析,提供一个或多个虚拟服务器或虚拟互联网协议服务器,和/或提供从客户机102到服务器106的安全虚拟专用网络(VPN)连接,例如安全套接字层(SSL)VPN连接和/或提供加密和解密操作。
[0045] 应用交付管理系统190可以基于策略引擎195所应用的身份验证和授权策略,以远程或其他方式将计算环境15交付给用户(例如,客户机102)。远程用户可以获取计算环境并从任何网络连接的装置(例如客户机102)访问服务器存储的应用和数据文件。例如,设备200可以从服务器106请求应用和数据文件。响应于该请求,应用交付系统190和/或服务器
106可以例如经由应用流将应用和数据文件交付到客户机102以在客户机102上的计算环境
15中进行操作,或者经由远程显示协议或以其他方式经由基于远程或基于服务器的计算将应用和数据文件交付到客户机102。在一个实施例中,应用交付系统190可以被Citrix Systems公司实现为Citrix Workspace SuiteTM的任何部分,例如 或
[0046] 策略引擎195可以控制和管理对应用的访问、执行和交付。例如,策略引擎195可以确定用户或客户机102可以访问的一个或多个应用和/或应该如何将应用交付给用户或客户机102,例如基于服务器的计算、流传输或本地地交付应用到客户机120以供本地执行。
[0047] 例如,在操作中,客户机102可以请求执行应用(例如,应用16'),并且服务器106的应用交付系统190例如基于从客户机102接收到的凭据以及由与凭据相关联的策略引擎195所应用的用户策略来确定如何执行应用16'。例如,应用交付系统190可以使客户机102能够接收通过在服务器106上执行应用而生成的应用输出数据,可以使客户机102能够在从服务器106接收到应用之后本地执行该应用,或者可以经由网络104将应用流传输到客户机102。例如,在一些实施例中,该应用可以是代表客户机102在服务器106上执行的基于服务器或基于远程的应用。服务器106可以使用瘦客户机或远程显示协议向客户机102显示输出,例如佛罗里达州劳德代尔堡的Citrix Systems公司的独立计算体系结构(ICA)协议的远程显示协议。该应用可以是与实时数据通信相关的任何应用,例如流图形、流视频和/或音频或其他数据的应用,远程桌面或工作空间或托管服务或应用的交付,例如基础设施即服务(IaaS)、工作空间即服务(WaaS)、软件即服务(SaaS)或平台即服务(PaaS)。
[0048] 服务器106中的一个或多个可以包括性能监控服务或代理197。在一些实施例中,可以采用专用的一个或多个服务器106来执行性能监控。例如,可以通过软件、硬件或其组合使用数据收集、聚合、分析、管理和报告来执行性能监控。性能监控可以包括一个或多个代理,用于对客户机102(例如,客户机代理120)、服务器106(例如,代理197)或设备200和/或205(未示出的代理)执行监控、测量和数据收集活动。通常,监控代理(例如120和/或197)对装置的任何应用和/或用户透明地(例如在后台)执行。在一些实施例中,监控代理197包括佛罗里达州劳德代尔堡的Citrix Systems公司的称为EdgeSight的任何产品实施例。
[0049] 监控代理可以基于给定事件的发生或者在网络环境100的工作期间实时地以预定频率监控、测量、收集和/或分析数据。监控代理可以监控客户机102、网络104、设备200和/或205、和/或服务器106的硬件、软件和/或通信资源的资源消耗和/或性能。例如,诸如传输层连接之类的网络连接、网络延迟、带宽利用率、最终用户响应时间、应用使用率和性能、与应用的会话连接、高速缓存使用率、存储器使用率、处理器使用率、存储使用率、数据库事务、客户机和/或服务器使用率、活跃用户、用户活动的持续时间、应用崩溃、错误、或挂起、登录到应用、服务器或应用交付系统所需的时间、和/或其他性能条件和度量都可以被监控。
[0050] 监控代理可以为应用交付系统190提供应用性能管理。例如,基于一个或多个监控的性能条件或度量,可以动态地(例如,周期性地或实时地)调整应用交付系统190以基于网络环境性能和条件来优化服务器106到客户机102的应用交付。
[0051] 在所描述的实施例中,客户机102、服务器106以及设备200和205可以被部署为任何类型和形式的计算装置,和/或在任何类型和形式的计算装置上执行,计算装置例如能够通过至少一个网络进行通信并执行本文所述的操作的任何台式计算机、膝上型计算机或移动装置。例如,客户机102、服务器106和/或设备200和205可各自对应于一个计算机、多个计算机或诸如图1C所示的计算机101的分布式计算机的网络。
[0052] 如图1C所示,计算机101可以包括一个或多个处理器103、易失性存储器122(例如,RAM)、非易失性存储器128(例如,一个或多个硬盘驱动器(HDD)或其他磁性或光学存储介质、一个或多个固态驱动器(SSD)(例如闪存驱动器或其他固态存储介质)、一个或多个混合磁性和固态驱动器、和/或一个或多个虚拟存储卷(例如云存储)、或这种物理存储卷和虚拟存储卷或其阵列的组合)、用户界面(UI)123、一个或多个通信接口118和通信总线150。用户界面123可包括图形用户界面(GUI)124(例如,触摸屏、显示器等)和一个或多个输入/输出(I/O)装置126(例如,鼠标键盘等)。非易失性存储器128存储操作系统115、一个或多个应用116和数据117,从而例如由处理器103从易失性存储器122中执行操作系统115和/或应用116的计算机指令。可以使用GUI 124的输入装置来输入数据,或者可以从I/O装置126接收数据。计算机101的各种元件可以经由通信总线150进行通信。图1C所示的计算机101仅作为示例示出,因为可以通过任何计算或处理环境,以及可以具有能够如本文所述操作的合适的硬件和/或软件的任何类型的机器或机器组,来实现客户机102、服务器106和/或设备200和205。
[0053] 处理器103可以由执行一个或多个计算机程序的一个或多个可编程处理器来实现,用以执行系统功能。如本文所使用的,术语“处理器”描述了执行功能、操作或操作序列的电子电路。功能、操作或操作序列可以被硬编码到电子电路中,或者通过存储在存储器装置中的指令被软编码。“处理器”可以使用数字值或使用模拟信号执行功能、操作或操作序列。在一些实施例中,“处理器”可以以一个或多个应用专用集成电路(ASIC)、微处理器数字信号处理器、微控制器、现场可编程阵列(FPGA)、可编程逻辑阵列(PLA)、多核处理器、或具有关联存储器的通用计算机来实现。“处理器”可以是模拟、数字或混合信号。在一些实施例中,“处理器”可以是一个或多个物理处理器或一个或多个“虚拟”(例如,位于远程的或“云”)处理器。
[0054] 通信接口118可以包括一个或多个接口,以使计算机101能够通过各种有线和/或无线或蜂窝连接来访问诸如LAN、WAN或互联网的计算机网络
[0055] 在所描述的实施例中,第一计算装置101可以代表客户机计算装置(例如,客户机102)的用户执行应用,可以执行虚拟机,该虚拟机提供执行会话,应用在该执行会话(例如托管的桌面会话)内代表用户或客户机计算装置(例如客户机102)执行,可以执行终端服务会话以提供托管的桌面环境,或者可以提供对包括以下中的一个或多个的计算环境的访问:一个或多个应用、一个或多个桌面应用以及可以在其中执行一个或多个应用的一个或多个桌面会话。
[0056] 网络环境100、客户机102、服务器106以及设备200和205的实现和操作的附加详细信息可以在2017年1月3日授予佛罗里达州劳德代尔堡的Citrix Systems公司的美国专利No.9,538,345中进行描述,其教导通过引用并入本文。
[0057] B.设备架构
[0058] 图2示出了设备200的示例性实施例。如本文所述,设备200可以被实现为服务器、网关、路由器、交换机、网桥或其他类型的计算或网络装置。如图2所示,设备200的实施例可以包括硬件层206和被划分为用户空间202和内核空间204的软件层205。硬件层206提供硬件组件,在该硬件组件上执行内核空间204和用户空间202内的程序和服务,并允许内核空间204和用户空间202中的程序和服务相对于设备200在内部和外部进行数据通信。如图2所示,硬件层206可以包括用于执行软件程序和服务的一个或多个处理单元262、用于存储软件和数据的存储器264、用于通过网络发送和接收数据的网络端口266、以及用于对诸如与通过网络发送和接收的数据的安全套接字层(SSL)或传输层安全协议(TLS)处理有关的数据进行加密和解密的加密处理器260。
[0059] 设备200的操作系统将可用系统存储器分配、管理或以其他方式分离到内核空间204和用户空间202中。内核空间204被保留用于运行内核230,包括任何装置驱动程序、内核扩展或其他与内核相关的软件。如本领域技术人员所知,内核230是操作系统的核心,并提供对应用104的资源和与硬件相关的组件的访问、控制和管理。内核空间204还可以包括与高速缓存管理器232一起工作的许多网络服务或进程
[0060] 设备200可以包括一个或多个网络协议栈267,例如基于TCP/IP的协议栈,用于与客户机102、服务器106、网络104和/或其他设备200或205通信。例如,设备200可以建立和/或终止在客户机102和服务器106之间的一个或多个传输层连接。每个网络协议栈267可以包括用于对一个或多个网络分组进行排队以供设备200传输的缓冲器243。
[0061] 内核空间204可以包括高速缓存管理器232、分组引擎240、加密引擎234、策略引擎236和压缩引擎238。换句话说,进程232、240、234、236和238中的一个或多个在设备200的操作系统的内核地址空间中运行,例如,因为在内核模式下获得的数据可能不需要传递或复制到用户进程、线程或用户级别的数据结构,所以这可以减少往返于存储器的数据事务的数量和/或内核模式和用户模式之间的上下文切换。
[0062] 高速缓存管理器232可以复制存储在其他位置的原始数据或先前计算、生成或传输的数据,以减少数据的访问时间。在一些实施例中,高速缓存存储器可以是设备200的存储器264中的数据对象,或者可以是具有比存储器264更快的访问时间的物理存储器。
[0063] 策略引擎236可以包括统计引擎或其他配置机制,以允许用户标识、指定、定义或配置缓存策略以及对由设备200缓存的对象、数据或内容的访问、控制和管理,以及定义或配置安全性、网络流量、网络访问、压缩或由设备200执行的其他功能。
[0064] 加密引擎234可以处理任何与安全有关的协议,例如SSL或TLS。例如,加密引擎234可以对经由设备200传送的网络分组或其任何部分进行加密和解密,可以例如在客户机102、服务器106和/或其他设备200或205之间设置或建立SSL、TLS或其他安全连接。在一些实施例中,加密引擎234可以使用隧道协议以提供在客户机102和服务器106之间的VPN。在一些实施例中,加密引擎234与加密处理器260通信。压缩引擎238对网络分组在客户机102和服务器106之间和/或在一个或多个设备200之间进行双向压缩。
[0065] 分组引擎240可以管理由设备200经由网络协议栈267接收和传输的分组的内核级处理,以经由网络端口266发送和接收网络分组。分组引擎240可以与加密引擎234、高速缓存管理器232、策略引擎236和压缩引擎238一起工作,例如以执行加密/解密、流量管理(例如请求级内容切换和请求级缓存重定向)以及数据的压缩和解压缩。
[0066] 用户空间202是由用户模式应用或以其他方式在用户模式下运行的程序使用的存储区域或操作系统的一部分。用户模式应用可能无法直接访问内核空间204,而是使用服务调用来访问内核服务。用户空间202可以包括图形用户界面(GUI)210、命令行界面(CLI)212、shell服务214、健康状况监控器216和守护进程服务218。GUI 210和CLI 212能够使系统管理员或其他用户诸如经由设备200的操作系统与设备200的操作交互并控制设备200的操作。shell服务214包括程序、服务、任务、进程或可执行指令,以支持用户经由GUI 210和/或CLI 212与设备200的交互。
[0067] 健康状况监控器216监控、检查、报告并确保网络系统正常运行,并且确保用户通过网络,例如通过监控设备200的活动来接收所请求的内容。在一些实施例中,健康状况监控器216拦截并检查经过设备200的任何网络流量。例如,健康状况监控器216可以与加密引擎234、高速缓存管理器232、策略引擎236、压缩引擎238、分组引擎240、守护进程服务218和shell服务214中的一个或多个接口,以确定设备200的任何部分的状态、状况、操作条件或健康状况。此外,健康状况监控器216可以确定程序、进程、服务或任务是否是激活的并且当前正在运行,检查由任何程序、进程、服务或任务提供的状态、错误或历史日志以确定设备200的任何部分的任何条件、状态或错误。此外,健康状况监控器216可以测量和监控在设备
200上执行的任何应用、程序、进程、服务、任务或线程的性能。
[0068] 守护进程服务218是连续运行或在后台运行并处理由设备200接收到的周期性服务请求的程序。在一些实施例中,守护进程服务可以根据需要将请求转发到其他程序或进程,例如另一个守护进程服务218。
[0069] 如本文所述,设备200可以通过打开与每个服务器106的一个或多个传输层连接并维持这些连接以允许由客户机经由互联网(例如“连接池”)的重复数据访问,来减轻服务器106的重复打开和关闭与客户机102的传输层连接所引起的大部分处理负荷。为了执行连接池,设备200可以通过在传输层协议级别修改序列号和确认号来转换或复用通信(例如,“连接复用”)。设备200还可以为客户机102和服务器106之间的通信提供交换或负载平衡。
[0070] 如本文所述,每个客户机102可以包括客户机代理120,用于经由网络104与设备200和/或服务器106建立和交换通信。客户机102可以已经安装和/或执行正在与网络104通信的一个或多个应用。客户机代理120可以拦截来自一个或多个应用使用的网络协议栈的网络通信。例如,客户机代理120可以在网络协议栈中的任意点处截取网络通信,并将网络通信重定向到由客户机代理120期望、管理或控制的目的地,例如以截取并重定向到由客户机代理120控制或管理的IP地址和端口的传输层连接。由此,客户机代理120可以透明地拦截传输层下方的任何协议层(例如网络层)和传输层上方的任何协议层(例如会话、表示或应用层)。客户机代理120可以与传输层接口,以确保、优化、加速、路由或负载平衡经由传输层所承载的任何协议提供的任何通信。
[0071] 在一些实施例中,客户机代理120被实现为由佛罗里达州劳德代尔堡的Citrix Systems公司开发的独立计算架构(ICA)客户机。客户机代理120可以执行加速、流传输、监控和/或其他操作。例如,客户机代理120可以加速从服务器106到客户机102的应用的流传输。客户机代理120还可以执行端点检测/扫描,并且收集关于针对设备200和/或服务器106的客户机102的端点信息。设备200和/或服务器106可以使用所收集的信息来确定并提供对客户机到网络104的连接的访问、身份验证和授权控制。例如,客户机代理120可以识别和确定一个或多个客户机侧属性,例如:操作系统和/或操作系统的版本、操作系统的补丁、正在运行的服务、正在运行的进程、文件、客户机的各种应用的存在或版本,例如防病毒、防火墙、安全性和/或其他软件。
[0072] 设备200的实现和操作的附加细节可以如在2017年1月3日授予佛罗里达州劳德代尔堡的Citrix Systems公司的美国专利号9,538,345中所述,该专利的教导在此通过引用并入本文。
[0073] C.用于提供虚拟化应用交付控制器的系统和方法
[0074] 现在参考图3,示出了虚拟化环境300的框图。如图所示,虚拟化环境300中的计算装置302包括虚拟化层303、管理程序层304和硬件层307。管理程序层304包括一个或多个管理程序(或虚拟化管理器)301,其分配和管理由在虚拟化层303中执行的至少一个虚拟机(VM)(例如,VM 306中之一)对硬件层307中的多个物理资源(例如,一个或多个物理处理器321和一个或多个物理磁盘328)的访问。每个VM 306可以包括分配的虚拟资源,例如虚拟处理器332和/或虚拟磁盘342,以及虚拟资源,例如虚拟存储器和虚拟网络接口。在一些实施例中,VM 306中的至少一个可以包括与管理程序301通信的控制操作系统(例如305),并用于执行用于管理和配置装置302上的其他VM(例如来宾操作系统310)的应用。
[0075] 通常,管理程序301可以以模拟操作系统访问物理装置的任何方式向VM 306的操作系统提供虚拟资源。因此,一个或多个管理程序301可以用于仿真虚拟硬件、划分物理硬件、虚拟化物理硬件以及执行提供对计算环境的访问的虚拟机。在示意性实施例中,管理程序301可以被实现为XEN管理程序,例如,如由开源Xen.org社区所提供的XEN管理程序。在示意性实施例中,执行创建虚拟机平台的管理程序的装置302被称为主机服务器,该虚拟机平台可在其上执行来宾操作系统。在这样的实施例中,装置302可以被实现为由佛罗里达州劳德代尔堡的Citrix Systems公司提供的XEN服务器。
[0076] 管理程序301可以创建一个或多个VM 306,在其中执行操作系统(例如,控制操作系统305和/或来宾操作系统310)。例如,管理程序301加载虚拟机映像以创建VM 306以执行操作系统。管理程序301可以向VM 306呈现硬件层307的抽象,和/或可以控制如何将硬件层307的物理能呈现给VM 306。例如,管理程序301可以管理分布在多个物理计算装置上的资源池。
[0077] 在一些实施例中,VM 306之一(例如,执行控制操作系统305的VM)可以例如通过管理VM的执行和/或终止和/或管理对VM的虚拟资源的分配来管理和配置其他VM 306。在各种实施例中,VM可以经由例如一个或多个应用编程接口(API)、共享存储器和/或其他技术与管理程序301和/或其他VM通信。
[0078] 通常,VM 306可以向装置302的用户提供对虚拟化计算环境300内的资源的访问,例如,一个或多个程序、应用、文档、文件、桌面和/或计算环境或其他资源。在一些实施例中,VM 306可以被实现为完全虚拟化的VM,其不知道它们是虚拟机(例如,硬件虚拟机或HVM)。在其他实施例中,VM可以知道它是虚拟机,和/或VM可以被实现为半虚拟化(PV)VM。
[0079] 尽管在图3中示出为包括单个虚拟化装置302,但虚拟化环境300可以在系统中包括多个网络化装置,在该系统中,至少一个物理主机执行虚拟机。VM在其上执行的装置可以被称为物理主机和/或主机。例如,设备200可以在任何计算装置(例如客户机102、服务器106或设备200)上的虚拟化环境300中附加或替代地实现。虚拟设备可以提供用于可用性、性能、健康状况监控、缓存和压缩、连接复用和池化和/或安全处理(例如,防火墙、VPN、加密/解密等)的功能,类似于关于设备200所描述的。
[0080] 虚拟化计算环境300的实现和操作的附加细节可以如在2017年1月3日授予佛罗里达州劳德代尔堡的Citrix Systems公司的美国专利号9,538,345中所述,该专利的教导通过引用合并于此。
[0081] 在一些实施例中,服务器可以例如在多核处理系统的各种核和/或多个处理器装置的各种处理器上执行多个虚拟机306。例如,尽管在本文中通常被示为“处理器”(例如,在图1C、2和3中),但是一个或多个处理器可以被实现为单核或多核处理器,以提供多线程、并行架构和/或多核架构。每个处理器和/或核都可以具有或使用分派或分配以供私人或本地使用的、仅由该处理器/核可访问的存储器,和/或可以具有或使用公共或共享的并且由多个处理器/核可访问的存储器。这样的架构可以允许在一个或多个处理器和/或一个或多个核上的工作、任务、负载或网络流量分布(例如,通过功能并行、数据并行、基于流的数据并行等)。
[0082] 此外,代替(或除了)以物理处理器/核的形式实现的核的功能,还可以在客户机102、服务器106或设备200上的虚拟化环境(例如300)中实现这种功能,以使得可以在多个装置之间实现该功能,例如计算装置的集群、服务器场或计算装置的网络等。各种处理器/核可以使用各种接口技术(例如核到核消息传递、共享存储器、内核API等)彼此接口或通信。
[0083] 在采用多个处理器和/或多个处理器核的实施例中,所描述的实施例可以在核或处理器之间分配数据分组,例如以平衡跨核的流。例如,分组分配可以基于每个核执行的功能、源和目的地地址的确定,和/或是否:相关联的核上的负载高于预定阈值;相关联的核上的负载低于预定阈值;相关联的核上的负载小于其他核上的负载;或者可以用于部分地基于处理器上的负载量来确定将数据分组转发到何处的任何其他度量。
[0084] 例如,可以使用接收侧缩放(RSS)在核或进程之间分配数据分组,以便使用网络中的多个处理器/核来处理分组。RSS通常允许在多个处理器/核之间平衡分组处理,同时维持分组的有序交付。在一些实施例中,RSS可以使用哈希方案来确定用于处理分组的核或处理器。
[0085] RSS可以从任何类型和形式的输入(例如值的序列)生成哈希。该值的序列可以包括网络分组的任何部分,例如网络分组的任何头部、字段或有效载荷,并且包括与网络分组或数据流相关联的任何信息元组,例如地址和端口。哈希结果或其任何部分可以用于识别处理器、核、引擎等,以例如经由哈希表、间接表或其他映射技术来分配网络分组。
[0086] 多处理器和/或多核系统的实现和操作的附加细节可以如在2017年1月3日授予佛罗里达州劳德代尔堡的Citrix Systems公司的美国专利号9,538,345中所述,其教导在此通过引用并入本文。
[0087] D.用于提供分布式集群架构的系统和方法
[0088] 尽管在图1A和1B中示出为单个设备,但设备200可以被实现为一个或多个分布式或集群设备。个体的计算装置或设备可以称为集群的节点。集中式管理系统可以执行负载平衡、分配、配置或其他任务,以允许多个节点作为单个计算系统一起操作。可以将这种集群视为单个虚拟设备或计算装置。图4示出了示意性计算装置集群或设备集群400的框图。多个设备200或其他计算装置(例如,节点)可以被加入单个集群400中。集群400可以作为应用服务器、网络存储服务器、备份服务或任何其他类型的计算装置操作来执行设备200和/或205的许多功能。
[0089] 在一些实施例中,集群400的每个设备200可以被实现为如本文所述的多处理器和/或多核设备。如果集群将分组分配到集群的节点,并且每个节点分配用于处理的分组到节点的处理器/核,则这样的实施例可以采用两层分配系统。在许多实施例中,集群400的设备200中的一个或多个可以被物理地分组或在地理位置上彼此邻近,例如给定机箱、机架和/或数据中心中的一组刀片服务器或机架安装装置。在一些实施例中,集群400的设备200中的一个或多个可以在地理上分布,即多个设备200不在物理上或地理位置上位于同一位置。在这样的实施例中,地理上远程的设备可以通过专用网络连接和/或VPN来加入。在地理上分布的实施例中,负载平衡还可以考虑地理上远程的设备之间的通信延迟。
[0090] 在一些实施例中,集群400可以被认为是虚拟设备,其经由常见配置、管理和目的被分组,而不是作为物理组。例如,设备集群可以包括由一个或多个服务器执行的多个虚拟机或进程。
[0091] 如图4所示,设备集群400可以经由客户机数据平面402耦合到第一网络104(1),例如以在客户机102和设备集群400之间传输数据。客户机数据平面402可以被实现为交换机、集线器、路由器或集群400内部或外部的其他类似网络装置,以在集群400的各个节点之间分配流量。例如,可以基于以下执行流量分配:等价多路径(ECMP)路由(其下一跳(hop)配置有集群的设备或节点)、开放式最短路径优先(OSPF)、基于无状态哈希的流量分配、链路聚合(LAG)协议或任何其他类型和形式的流分配、负载平衡和路由。
[0092] 设备集群400可以经由服务器数据平面404耦合到第二网络104(2)。类似于客户机数据平面402,服务器数据平面404可以被实现为交换机、集线器、路由器或其他网络装置,其可以在集群400的内部或外部。在一些实施例中,客户机数据平面402和服务器数据平面404可以合并或组合到单个装置中。
[0093] 在一些实施例中,集群400的每个设备200可以经由内部通信网络或背板406连接。背板406可以启用节点间或设备间控制和配置消息,以用于节点间的流量转发,和/或用于将配置和控制流量从管理员或用户传送到集群400。在一些实施例中,背板406可以是物理网络、VPN或隧道或其组合。
[0094] 集群400的附加细节可以如在2017年1月3日授予佛罗里达州劳德代尔堡的Citrix Systems公司的美国专利号9,538,345中的描述,其教导通过引用合并于此。
[0095] E.用于预测链路的健康状况的系统和方法
[0096] 本公开涉及用于预测链路的健康状况的系统和方法。在网络中,识别处于好状态的链路、识别链路进入坏状态的原因、预测链路的未来状态、或主动防止链路进入坏状态可能是具有挑战性的。客户机和服务器中间的装置(例如网络设备或中间盒)可以通过利用处于好状态的链路来传输数据,从而促进或改善跨链路的数据传输的负载平衡。装置可以通过确定来自每个链路的分组丢失、延迟、抖动、拥塞和其他网络实体,来确定发送高优先级分组(流量)的最佳链路。例如,给定两个中间盒之间的一组链路,可以通过负载平衡跨越经历较少分组丢弃、延迟和抖动(与坏链路相比)的好链路的数据来提高网络吞吐量或可靠性。根据丢失、延迟和抖动,中间盒之间的激活链路(路径)可以处于好状态,也可以处于坏状态。中间盒可以被配置为选择与处于坏状态的链路(例如,经历更多分组丢失、抖动和延迟的链路)相比处于好状态的链路或路径,以便为连接提供更好的QoS。因此,将更多的链路维持在好状态可以为连接提供更好的服务质量(QoS),因为它可以为中间盒提供更多选项,从中可以选择要发送分组的链路。
[0097] 可能导致链路进入坏状态的因素包括,例如,高延迟、高分组丢弃或高抖动。如果装置可以确定链路进入坏状态的原因,则装置可以从该状态恢复链路。例如,如果高抖动是导致链路变坏的原因,则装置可以从设备端针对该链路消除导致高抖动的因素,从而防止链路变为坏状态。
[0098] 此外,由于装置选择好链路来可靠地传输分组,所以装置可以增加好链路上的负载。这可能会导致好链路经历高抖动和丢失,并最终进入坏状态。本公开的系统和方法可通过以下方式来改进链路的使用:通过预测链路进入坏状态的原因来避免该级联效应,并且基于该原因来执行行动以防止链路进入坏状态,例如重新分配特定连接的流量。中间装置可以防止最佳链路进入坏状态,并在WAN中维持更多数量的高质量链路。
[0099] 因此,本公开的系统和方法允许装置动态地预测链路健康状况并基于链路健康状况采取行动以防止链路变坏。主动地管理链路健康状况或质量可以防止链路由于过载而变坏的级联效应。此外,装置可以将更多数量的链路维持在好状态。
[0100] 为此,装置可以使用预测算法来检测链路进入坏状态的原因、或者链路在将来进入坏状态的原因,并基于预测的原因采取措施以防止链路进入坏状态或从坏状态恢复链路。因此,装置可以维持大量的高质量链路。
[0101] 装置可以基于一个或多个参数来识别、确定或预测链路的状态(或健康状况)。装置可以基于所述参数执行主动连接管理。例如,装置可以配置有混合预测机制,该混合预测机制可以包括一组静态规则和在线机器学习分类器。静态规则可以根据经验由链路健康状况定义参数组成。在线机器学习分类器可以学习这些参数。可以对由静态规则输出的预测和由在线机器学习分类器输出的预测进行加权和组合以生成最终预测,该最终预测指示链路是否进入坏状态以及链路进入坏状态的原因。装置可以基于该原因执行主动的行动或决策,以维持链路的状态或健康状况。装置可以将权重应用于预测,该预测可以是时间和各个工具的准确性的函数。
[0102] 为了检测导致链路进入坏状态的原因,装置可以识别一个或多个变量或参数,例如高分组丢弃、高抖动或高延迟。如果这些参数中的任何一个或多个大于阈值,则装置可以确定为链路可能进入坏状态。装置可以基于模式和关系来预测链路将经历高分组丢弃、高抖动或高延迟中的一个或多个。这些模式和关系可以称为特征集。
[0103] 例如,可以从以下各项的组合来确定分组丢弃的增加:链路利用率的增加;链路延迟的增加;窗口大小的同步;连接数的增加速率(突发);以及连接的类型(例如,批量、聊天或流)。在另一个示例中,抖动的增加可以通过以下确定:队列中到达间隔时间以及从队列发送分组的到达间隔时间的差;平均队列大小;和当前队列大小。在又一个示例中,分组丢弃的增加可以由以下各项确定:队列大小;最小延迟;连接的类型;以及连接的数量。通过使用预测算法来预测将来可能导致链路失败(或进入坏状态)的参数,装置可以利用各种学习算法之间的关系。
[0104] 装置(或设备、WAN解决方案设备或中间装置)可以收集配置文件信息或流量配置文件信息的在线流。静态规则可以预测链路的健康状况。例如:
[0105] C1*Loss+C2*Latency+C3*Jitter>T1=>坏链路;或者
[0106] C4*Loss+C5*Latency+C6*Jitter>T2=>平均链路,
[0107] 其中,C1、C2、C3、C4、C5和C6为权重;Loss、Latency和Jitter是链路的参数;以及T1和T2是阈值。
[0108] 在这些示例方程式中,即使诸如Loss、Latency或Jitter的一个参数太高,装置也确定或预测链路是坏的或将变坏。
[0109] 系统还可以使用在线机器学习分类器来确定或预测链路是坏的或将变坏。机器学习分类器可以使用训练数据集。例如,当链路的健康状况由于丢失、抖动或延迟而从好变坏时,诸如链路利用率、延迟、连接数、队列大小等参数的定时序列可以被称为单一数据点。数据集可以包括该数据的多个行,以反映链路健康状况的变化的时间依赖性或时间性质。
[0110] 最初,由于数据集可能相对较小,并且分类器具有可用来预测链路健康状况的相对较少的数据点,因此分类器学习不同链路状态类的模式可能欠拟合。由于分类器使用相对较少的数据点生成的预测可能与由静态规则生成的预测不同,因此装置可以将权重应用于这两个预测。装置可以生成权重变量Wclass和Wrule。Wclass可以是与分类器相对应的权重,Wrule可以是与静态规则相对应的权重。装置可以使用权重变量打破由静态规则和分类器提供的预测之间的平局。如果相应的预测正确,则装置可以通过增加该技术的权重来调整权重(例如,激励),或者如果预测错误,则可以通过减小权重来调整权重(例如,惩罚)。以下伪代码示出了应用权重函数f(Pred,W)的实现:
[0111]
[0112]
[0113] 在预测了链路变坏的原因之后,装置可以采取预防措施以防止链路进入坏状态。例如,如果预测的原因是高延迟,则装置可以将队列中具有高分组占用率的连接移至其他链路。在另一个示例中,如果预测的原因是高抖动,则装置可以移动连接,该连接的到达设备的到达间隔时间与离开队列的离开间隔时间之间的差很大。在又一示例中,如果链路变坏的预测原因是高丢失,则装置可以发送带宽的仅90%(例如,对于10Mbps链路,装置可以仅传输9Mbps)。
[0114] 现在参考图5A,描绘了用于预测链路的健康状况的系统500的实施例的框图。简而言之,系统500可以包括多个客户机装置102a-n、一个或多个设备200a-n(例如,如图所示的第一设备200a和第二设备200b)以及多个服务器106a-n。面向客户机侧的设备200a-n(例如,第一设备200a)可以经由网络104通信地连接到一个或多个客户机102a-n。服务器侧设备200a-n(例如,第二设备200b)可以经由网络104”通信地连接到一个或多个服务器106a-n。面向客户机侧的设备200a-n(例如,第一设备200a)和面向服务器侧的设备200a-n(例如,第二设备200b)可以经由网络104’通信地连接到彼此。在一些实施例中,经由网络104'可以存在一个或多个通信链路,该网络104'连接面向客户机侧的设备200a-n(例如,第一设备200a)和面向服务器侧的设备200a-n(例如,第二设备200b)。例如,网络104和104”可以是局域网(LAN),而网络104’可以是广域网(WAN)。
[0115] 每个设备200a-n可以包括装置200的任何实施例的特征,以上至少结合图1A-1C、2和4已对其进行描述。在一个或多个实施例中,上述组件或实体中的每一个以硬件或硬件和软件的组合来实现。例如,这些组件或实体中的每一个可以包括在装置200的硬件上执行的任何应用、程序、库、脚本、任务、服务、进程或任何类型和形式的可执行指令。在一个或多个实施例中,硬件包括诸如一个或多个处理器的电路。
[0116] 本解决方案的系统和方法可以以任何类型和形式的装置来实现,包括客户机、服务器和设备200。如本文所引用的,“服务器”有时可以指客户机-服务器关系中的任何装置,例如,与客户机装置102a-n握手的设备200。可以在任何中间装置或网关中实现本系统和方法,例如本文描述的设备或装置200的任何实施例。例如,本系统和方法的某些部分可以被实现为设备的分组处理引擎和/或虚拟服务器的一部分。可以在任何类型和形式的环境中实现系统和方法,包括本文描述的多核设备、虚拟化环境和/或集群环境。
[0117] 第一设备200a可以包括规则引擎502a、分类器504a、权重调节器506a、预测选择器508a和配置文件510a。第二设备200b也可以包括规则引擎502b、分类器504b、权重调节器
506b、预测选择器508b和配置文件510b。第一设备200a的规则引擎502a可以包括与第二设备200b的规则引擎502b类似的功能。第一设备200a的分类器504a可以包括与第二设备200b的分类器504b类似的功能。第一设备200a的权重调节器506a可以包括与第二设备200b的权重调节器506b类似的功能。第一设备200a的预测选择器508a可以包括与第二设备200b的预测选择器508b类似的功能。第一设备200a的配置文件510a可以包括与第二设备的配置文件
510b相似的数据或功能。例如,配置文件510a可以与配置文件510b同步。
[0118] 一个或多个设备200a-n中的每一个可包括具有与第一设备200a和第二设备200b类似的功能的至少一个规则引擎、至少一个分类器、至少一个权重调节器、至少一个预测选择器或至少一个配置文件中的一个或多个。第一设备200a可以被称为装置或中间装置。
[0119] 装置(例如,设备200a或设备200b)可以与经过网络104'的一个或多个链路通信。链路可以由通过网络104’的一个或多个路径形成。例如,网络104’可以包括广域网(WAN)。
WAN可以包括在地理距离上延伸的电信网络或计算机网络。例如,WAN可以在相对长的距离上并且在不同的局域网、个人区域网或城域网之间传输数据。在某些情况下,可以将WAN配置为公用网络或专用网络,例如用于特定组织。
[0120] 装置可以识别、获得、检索、检测或以其他方式获得经过网络104'中的链路的网络流量的流的配置文件信息。链路可以指或包括两个端点、节点、网络隧道或虚拟专用网络隧道之间的网络路径。网络104’可以包括各种类型的链路,包括例如一个或多个多协议标签交换链路(MPLS)、宽带链路和无线链路。例如,MPLS链路可以基于短路径标签将数据从一个网络定向到下一个网络。标签可以标识远处的节点之间的虚拟链路(路径)。MPLS可以封装各种网络协议的分组。
[0121] 配置文件信息可以包括关于链路的一个或多个参数,例如延迟、利用率、分组丢失、抖动、队列大小、连接数和连接类型。在某些情况下,配置文件信息可以包括关于链路的两个或更多个参数。延迟可以指网络延迟,也可以指数据分组从一个指定点到达另一个指定点所花费的时间的量。可以通过发送返回到发送者的分组来测量延迟,其中往返时间被称为延迟。在某些情况下,指定点可以是设备200a和设备200b。例如,设备200a可以测量分组经由通过网络104’的链路从设备200a到达设备200b并回到设备200a所花费的时间。延迟可以以时间为单位进行测量,例如小时、分钟、秒、微秒、纳秒或时钟周期。基于延迟与预定延迟阈值的比较,可以将链路标记为具有低延迟或高延迟。
[0122] 利用率或网络利用率可以指链路上当前网络流量与该链路可以处理的最大流量之比。基于与预定利用率阈值的比较,可以将网络利用率标记为低、正常或高。例如,与20%的网络利用率相比,90%的网络利用率可以指示高利用率。设备200a可以使用网络利用率监控器来识别、检测或获得链路的利用率。例如,设备200a可以配置有或访问收集网络利用率度量和统计信息的网络监控器。
[0123] 分组的丢失可以指的是通过链路传输的一个或多个数据分组未能到达预定目的地的情况。分组丢失可以用丢失的分组占发送分组的百分比来测量。设备200a可以使用TCP协议来检测或识别分组丢失,该TCP协议可以检测链路上的分组丢失。
[0124] 抖动可以指的是所接收的分组的延迟的变化。该变化可以是分组延迟中的统计离差。例如,发送方可以以连续的周期性流传输分组,其中分组被均匀地间隔开。然而,由于网络拥塞、不正确的排队或配置错误,分组之间的延迟可能会变化,而不是维持不变。在某些情况下,抖动可以指如网络104′中的链路上的分组延迟的随时间的变化性所测量的延迟的变化。例如,网络104’中具有恒定延迟的链路可能没有变化(或抖动)。分组抖动可以表示为与网络平均延迟或分组延迟变化之间的偏差的平均值。
[0125] 队列大小可以指在设备200a中的队列中维持的数据量。在通过网络104’中的链路传输之前,可以将数据维持在该链路的队列中。队列的大小可以以字节为单位,为数据的原始大小的百分比,或者要通过链路发送的数据的原始大小的比例。在一些实施例中,在队列中维持的数据可以包括要移动到一个或多个链路以在一个或多个客户机102a-n与一个或多个服务器106a-n之间传送或处理的数据。用于在一个或多个客户机102a-n与一个或多个服务器106a-n之间传送或处理的一个或多个链路可以通过两个或更多个设备200a-n。在一些实施例中,用于在一个或多个客户机102a-n与一个或多个服务器106a-n之间传送或处理的一个或多个链路可以通过连接两个或更多个设备200a-n的网络104′。
[0126] 连接数可以指网络104’中链路上的连接数。连接的类型可以包括例如,MPLS、宽带、无线、虚拟专用网络隧道、安全链路、加密链路、协议类型、大小等。
[0127] 设备200a可以将识别出的配置文件信息存储在数据存储库、数据库、数据文件或数据结构中,例如配置文件510a中,以由设备200a或设备200b中的一个或多个进行进一步处理。设备200a可以为网络104’中的一个或多个链路中的每一个存储配置文件信息。设备200a可以将配置文件信息存储在一个或多个数据结构中,以使得配置文件信息对应于链路和时间间隔。配置文件510a可以存储一个或多个链路的历史配置文件信息,或者可以响应于时间间隔(例如,1小时、6小时、24小时、48小时、72小时、1周、2周、30天等)或复位指令来重置所存储的配置文件信息。
[0128] 设备200a可以包括规则引擎502a,该规则引擎502a可以将一个或多个规则应用于链路的配置文件信息的参数,以预测、确定、检测或估计链路的健康状况、状态或质量。规则可以包括可以应用于关于链路的一个或多个参数的静态规则。规则引擎502a可以将一个或多个规则应用于关于链路的一个或多个参数、两个或更多个参数、三个或更多个参数或所有可用参数。规则引擎502a可以基于规则引擎502a要将规则应用到的一个或多个参数从多个规则中选择一个规则。
[0129] 规则引擎502a可以访问存储规则的数据存储库、数据库或数据文件。规则引擎502a可以配置有可以将规则应用于一个或多个参数的函数、脚本或可执行文件。应用规则可以包括将权重、常数或乘数应用于一个或多个参数,组合一个或多个参数,以及将组合的一个或多个参数与阈值进行比较。
[0130] 在一些实施例中,规则引擎502a可以利用被配置为使得即使一个参数为高,但是链路也变坏的规则,等式或函数。以下是规则引擎502a可以应用于一个或多个参数以确定链路的健康状况并对该链路的健康状况进行第一预测的规则的说明性示例:
[0131] 规则1:Loss+Latency+Jitter>T1=>坏链路
[0132] 规则2:C1*Loss+C2*Latency+C3*Jitter>T1=>坏链路
[0133] 规则3:Loss+Latency+Jitter好链路
[0134] 规则4:C4*Loss+C5*Latency+C6*Jitter>T2=>平均链路
[0135] 在示例规则1中,规则引擎502a通过对参数进行求和来组合链路的以下参数Loss、Latency和Jitter,并响应于参数之和大于阈值T1来预测链路的健康状况是坏的。
[0136] 规则引擎502a可以通过对参数求和或相加来组合参数。规则引擎502a可以通过将参数相乘来组合参数。规则引擎502a可以通过取参数的点积来组合参数。规则引擎520a可以使用一个或多个运算(诸如加、减、乘或除)来组合参数。组合参数可以包括或指组合参数的值。例如,参数Loss的值可以是丢失的分组相对于发送的分组的百分比(例如,1%、2%、3%、5%等),而参数Latency的值可以是时间单位(例如,1毫秒、2毫秒、3毫秒、4毫秒等)。
[0137] 规则引擎502a可以将参数的组合(例如,参数的总和)与阈值进行比较。规则引擎502a可以基于参数的组合与阈值的比较来预测链路的健康状况。规则引擎502a可以从存储在设备200a上的存储器中或规则引擎502a以其他方式可访问的数据存储库、数据库、数据文件或数据结构中识别、检索、接收或以其他方式获得阈值。阈值可以是预先确定的。可以基于对历史链路性能的分析来确定阈值。
[0138] 例如,规则引擎502a可以从存储器中检索阈值T1。规则引擎502a可以将参数的组合与阈值T1进行比较,以确定参数的组合大于T1、等于T1或小于T1。如果参数的组合大于T1,则规则引擎502a可以确定或预测链路的健康状况是坏的,或者该链路是坏链路。
[0139] 在示例规则2中,规则引擎502a将乘数、权重或常数组合或应用到每个参数。规则引擎520a将组合的和加权的参数与阈值T1进行比较,以确定组合的和加权的参数大于阈值T1。响应于确定组合的和加权的参数大于阈值T1,规则引擎502a确定或预测链路的健康状况是坏的。
[0140] 例如,规则引擎502a可以将乘数或权重C1应用于Loss参数;将乘数或权重C2应用于参数Latency;以及将乘数或权重C3应用于参数Jitter。乘数C1、C2、C3的值可以不同或相同。乘数C1、C2、C3的值可以是预先确定的。乘数C1、C2、C3的值可以被配置为允许规则引擎502a组合参数,以使得规则引擎502a可以适当地将组合与阈值进行比较。例如,乘数C1、C2、C3可以被选择或预先确定,以归范化一个或多个参数(例如,Loss、Latency和Jitter)的值。
规则引擎502a可以经由一个或多个运算(例如乘法、点积、除法、加法或减法)将权重C1、C2和C3与相应的一个或多个参数组合。
[0141] 在示例规则3中,规则引擎502a组合了参数Loss、Latency和Jitter中的每一个。规则引擎520a将组合的参数与阈值T2进行比较,以确定参数的组合小于阈值T2。例如,规则引擎502a可以经由一个或多个运算(诸如乘法、点积、除法、加法或减法)来组合参数。响应于确定参数的组合小于阈值T2,规则引擎502a确定或预测链路的健康状况是好的。规则引擎502a可以将该链路标记为具有好的健康状况,为该链路分配标签,将该链路与数据结构中的好状态相关联,或者以其他方式在数据文件存储器中指示或存储该链路的健康状况。
[0142] 在示例规则4中,规则引擎502a将乘数、权重或常数组合或应用到每个参数。规则引擎520a将组合的和加权的参数与阈值T2进行比较,以确定组合的和加权的参数大于阈值T2。响应于确定组合的和加权的参数大于阈值T2,规则引擎502a确定或预测链路的健康状况是平均的。规则引擎502a可以将该链路标记为具有平均健康状况,为该链路分配标签,将该链路与数据结构中的好状态相关联,或者以其他方式在数据文件存储器中指示或存储该链路的健康状况。
[0143] 例如,规则引擎502a可以将乘数或权重C4应用于Loss参数;将乘数或权重C5应用于参数Latency;并将乘数或权重C6应用于参数Jitter。乘数C4、C5和C6的值可以不同或相同。乘数C4、C5和C6的值可以是预先确定的。乘数C4、C5和C6的值可以被配置为允许规则引擎502a组合参数,以使得规则引擎502a可以适当地将组合与阈值进行比较。例如,乘数C4、C5和C6可以被选择或预先确定以归范化一个或多个参数(例如,Loss、Latency和Jitter)的值。规则引擎502a可以经由一个或多个运算(例如乘法、点积、除法、加法或减法)将权重C4、C5和C6与相应的一个或多个参数组合。
[0144] 阈值T1和T2可以基于任何数量的因素而被动态地设置或确定,所述因素例如链路的数量、端口的数量、带宽、历史值、关于一个或多个客户机102a-n、一个或多个服务器106a-n或其他设备200b-n的信息、设备200a上的计算资源(例如,处理器使用率、处理时间、存储器使用率、功耗等)和/或网络资源(例如,网络104、104'和104”处的带宽、延迟、吞吐量和其他参数资源)、流量的优先级、分组的类型等。
[0145] 设备200a可以包括分类器504a。分类器504a可以通过将分类器应用于配置文件信息的多个参数的一个或多个定时序列来确定链路的健康状况的第二预测。规则引擎502a可以使用第一技术对链路的健康状况进行第一预测,并且分类器504a可以使用第二技术对链路进行第二预测。例如,规则引擎502a可以使用一个或多个静态规则来对链路的健康状况进行第一预测,并且分类器504a可以使用机器学习技术来对链路进行第二预测。
[0146] 分类器504a可以获得关于链路的参数的一个或多个定时序列。在某些情况下,设备200a可以创建多个参数的一个或多个定时序列。例如,设备200a可以基于一个或多个参数来监控跟踪链路的健康状况。随着一个或多个参数的组合变得高于或低于预定阈值,分类器504a可以确定链路的健康状况是好、坏还是平均。例如,响应于爬升到预定阈值以上或下降到预定阈值以下之一的链路的健康状况,分类器504a可以创建关于链路的参数的一个或多个定时序列。参数的定时序列可以包括诸如链路利用率、链路延迟、连接数、同步的TCP连接、队列大小等参数。当链路从好变坏时,设备200a可以分配或确定指示导致链路从好变坏的参数的类,例如高丢失、高抖动或高丢失和高抖动。设备200a可以基于丢失参数的值大于预定丢失阈值来将原因确定为高丢失。设备可以基于抖动参数的值大于预定抖动阈值来确定链路变坏的原因。
[0147] 分类器504a可以使用机器学习分类技术进行配置,以确定或预测链路的健康状况,例如链路是坏的或者将要变坏。分类器504a可以基于已知类别的包含观测值(或实例)的训练数据集来识别一个或多个观测参数的新集合属于一组类、类别(或子群)中的哪一组。例如,训练数据集可以包括参数的定时序列,这些定时序列对应于由于丢失、抖动或延迟而使链路的健康状况从好变坏的时间,诸如链路利用率、延迟、连接数、队列大小等的参数的定时序列可以称为单个数据点。数据集可以包括该数据的多行,以反映链路健康状况的变化的时间依赖性或时间性质。在该示例中,类、类别或子群可以是高丢失、高抖动、或高抖动和丢失。例如,可以基于与大于预定阈值的分组丢失量相对应的参数,将所观测的参数分类为高丢失。
[0148]
[0149] 表1是根据一个实施例的数据集的示例说明。
[0150] 在与表1中在时间1处的行的定时序列相对应的第一数据点中,参数链路利用率的值为A1,参数链路延迟的值为B1,参数连接数的值为D1,参数同步TCP连接的值为E1,以及参数队列大小的值为F1。在时间1,值A1、B1、D1、E1和F1可以对应于“高丢失”的分类或类别。分类器504a或设备200a的其他监控器可以基于数据丢失量大于预定丢失阈值来确定在时间1,链路的性能使得存在大量数据分组丢失。设备200a可以在训练集中创建一个条目,该条目指示参数值和相应的类。
[0151] 在与表1中在时间2处的行的定时序列相对应的第二数据点中,参数链路利用率的值为A2,参数链路延迟的值为B2,参数连接数的值为D2,参数同步TCP连接的值为E2,以及参数队列大小的值为F2。在时间2,值A2、B2、D2、E2和F2可以对应于“高抖动”的分类或类别。分类器504a或设备200a的其他监控器可以确定,在时间2,链路的性能使得与在链路上传输数据分组的周期性时间间隔相比,在目的地处接收分组的时间之间存在很大差异,其中差异大于预定抖动阈值。设备200a可以在训练集中创建一个条目,该条目指示参数值和相应的类。
[0152] 在与表1中在时间3处的行的定时序列相对应的第三数据点中,参数链路利用率的值为A3,参数链路延迟的值为B3,参数连接数的值为D3,参数同步TCP连接的值为E3,以及参数队列大小的值为F3。在时间3,值A3、B3、D3、E3和F3可以对应于“高丢失和高抖动”的分类或类别。分类器504a或设备200a的其他监控器可以确定在时间3,链路的性能使得除了与在链路上传输数据分组的周期性时间间隔相比,在目的地接收分组的时间之间存在很大差异以外,还存在大量的分组丢失,其中,分组丢失大于预定丢失阈值,以及其中,差异大于预定抖动阈值。设备200a可以在训练集中创建一个条目,该条目指示参数值和相应的类。
[0153] 经由机器学习技术,分类器504a可以将训练集中的分类用作监督学习的实例,例如,在正确识别的观测值的训练集可用的情况下学习。训练集中的参数可以称为解释变量或特征。然后,分类器504a可以执行相应的非监督程序,例如聚类,以基于新的一组观测参数与训练集之间的相似性或距离的度量,将数据分组为类或类别。例如,分类器504a可以配置有将输入参数数据映射到类别或类的数学函数或分类算法。
[0154] 示例性分类技术可以包括回归、逻辑回归、贝叶斯过程、神经网络、线性函数、长短期记忆(LSTM)递归神经网络(RNN)分类器等。例如,分类器504a可以执行逻辑回归,其中观测到的参数称为解释变量,而要预测的类或类别是结果,它们被认为是因变量的可能值。分类器504a可以使用机器学习,其中观测到的参数可以是实例,解释变量可以是特征(分组为特征向量),并且要预测的可能类别是类。
[0155] 在一些实施例中,分类器504a包括、配置有、或以其他方式访问LSTM递归神经网络分类器,该LSTM递归神经网络分类器可以学习表1所示的训练集的数据点的定时序列流。配置有长短期记忆的分类器504a可以使用支持机器学习的人工神经网络架构。分类器504a可以是递归的(RNN),允许数据在网络内向前和向后流动。分类器504a可以接口、访问或利用附加的网络单元。分类器504a可以使用LSTM RNN从训练集中学习,以在给定未知大小的时滞和重要事件之间的界限的情况下对时间序列进行分类、处理和预测。分类器504a可以在训练或重新训练过程期间为参数或类建立权重。
[0156] 因此,分类器504a可以使用与规则引擎502a用于提供链路的健康状况的第一预测的技术不同的技术来提供对链路的健康状况的第二预测。然后,设备200a可以分析、处理或比较第一预测与第二预测。设备200a可以处理第一和第二预测。设备200a可以在选择预测或组合预测之前操纵或修改第一和第二预测。
[0157] 例如,设备可以包括权重调节器506a。权重调节器506a可以为健康状况的第一预测和健康状况的第二预测中的每一个建立相应的权重。权重调节器506a可以确定要应用于第一预测和第二预测的权重。权重调节器506a可以基于用于进行预测的技术来确定权重并将权重应用于预测。例如,权重调节器506a可以基于由规则引擎502a做出的第一预测来将第一权重应用于第一预测;并基于由分类器504a做出的第二预测将第二权重应用于第二预测。权重调节器504a可以基于对分类器504a可用的训练集或历史数据点的量或大小来确定由分类器504a做出的第二预测的权重。例如,在初始或早期阶段,由于分类器504a可能仅访问几个数据点,所以由分类器504a学习的关于不同链路状态类的模式可能欠拟合。因此,设备200a可以被配置为不过度依赖由分类器504a做出的预测。
[0158] 因此,权重调节器506a可以建立或定义权重的权重变量Wclass以应用于由分类器做出的预测,以及权重变量Wrule以应用于由规则引擎502a做出的预测。这些权重变量可以允许设备200a选择预测。
[0159] 权重调节器506a可以通过以下来调节权重:在相应的预测是正确的的情况下增加用于该技术的权重(例如,激励),或者在预测是错误的的情况下减小权重(例如,惩罚)。权重可以是预定的或基于函数确定的。权重可以基于分类器504a已经访问的数据点的数量。可以基于预测的比较来确定权重。例如,每当分类器504a输出的预测与规则引擎502a做出的预测匹配或相对应时,可以增加权重WClass。例如,权重WClass可以响应于分类器504a输出的预测匹配由规则引擎502a输出的预测而增加一个数(例如,增加1、2、3、4、5等)。然而,如果分类器504a输出的预测与规则引擎502a输出的预测不匹配,则权重调节器506a将Wclass减少一个数(例如1、2、3、4、5等)。权重调节器506a可以使权重增加或减少相同或不同的量。例如,权重调节器506a可以通过使用大于减量的增量的数来提供相对于惩罚而言更大的激励。
[0160] 权重调节器506a可以使用其他技术或因素来分配权重Wclass和Wrule。例如,权重Wclass可以基于训练集中的数据点的数量(例如,权重可以基于表1所示的训练集中所示的3个数据点为3)。可以将Wrule设置为固定值,例如2、3、4、5等。
[0161] 设备200a可以使用权重来选择或确定链路的健康状况的最终预测。设备200a可以包括预测选择器508a,其使用相应的权重Wclass和Wrule在健康状况的第一预测和健康状况的第二预测之间进行选择,以提供链路的健康状况的预测指标。以下伪代码说明了应用权重函数f(Pred,W)的实现:
[0162]
[0163] 在所示的伪代码中,FinalPrediction可以指由预测选择器508a选择的最终预测;PredClass可以指由分类器504a做出的预测结果;以及PredRule可以指由规则引擎502a做出的预测结果。如伪代码中所示,预测选择器508a可以将WClass与WRule进行比较。如果WClass大于WRule,则预测选择器508a可以将最终预测设置为由分类器504a输出的预测。然而,如果WClass小于或等于WRule,则预测选择器508a可以将最终预测设置为由规则引擎502a输出的预测。在某些情况下,WRule可以被称为第一权重,并被应用于由规则引擎502a做出的第一预测;以及Wclass可以被称为第二权重,并且被应用于由分类器504a做出的第二预测。
[0164] 设备200a(例如,预测选择器508a)可以被配置为采取预防措施。例如,在预测了链路变坏的原因之后,设备200a可以采取预防措施以防止链路进入坏状态。例如,如果FinalPred是高延迟,则设备200a可以将队列中具有高分组占用率的连接移动到其他链路。在另一个示例中,如果FinalPred是高抖动,则设备200a可以移动到达设备的到达间隔时间与离开队列的离开间隔时间的差非常高的连接。在又一示例中,如果链路变坏的FinalPred是高丢失,则设备200a只能发送仅90%的带宽(例如,对于10Mbps链路,设备200a可以仅发送9Mbps)。在又一示例中,如果FinalPred是高丢失和高抖动,则设备200a既可以移动到达设备的到达间隔时间与离开队列的离开间隔时间的差非常高的连接,又可以发送链路的仅
90%的带宽。
[0165] 因此,设备200a可以被配置为响应于基于权重从由规则引擎和分类器做出的预测中选择的链路的健康状况的预测指标,来采取与链路相关联的行动。例如,设备200a可以基于预定的延迟阈值,经由所选择的链路的健康状况的预测指标来识别该链路具有高延迟。设备200a可以响应于该链路具有高延迟的预测,将队列中分组占用率大于预定占用阈值的一个或多个连接移动到一个或多个其他链路。在另一个示例中,设备200a可以基于预定的抖动阈值经由所选择的链路的健康状况的预测指标来识别该链路具有高抖动。响应于预测链路的健康状况与高抖动相对应,设备200a可以移动到达设备200a的到达间隔时间与设备
200a的队列的离开间隔时间之间的差高于预定阈值的一个或多个连接。在又一示例中,设备200a可以经由所选择的链路的健康状况的预测指标基于预定的丢失阈值来识别该链路具有高丢失,并且经由该链路,由装置传输带宽的预定部分。
[0166] 现在参考图5B,描绘了用于预测链路的健康状况的一系列操作的框图。可以由图5A中描绘的一个或多个系统或组件来执行操作518,所述系统或组件包括例如规则引擎
502a、分类器504a、权重调节器506a和预测选择器508a。系统518的操作基于时间522进行以监控链路520的健康状况,其中健康状况可以是链路的分组的延迟、抖动、吞吐量或生存时间(TTL)。TTL可以是互联网协议中的一个值,该值可以指示分组在链路中的时间量。在时间
522上,可以将数据524作为输入提供给分类器504a。数据524也可以被输入到规则引擎
502a。数据524可以包括例如关于链路的配置文件信息,诸如参数、参数值、训练集或当前参数。与规则引擎502a相比,相同或不同的数据524可以被提供给分类器504a。在一些情况下,与分类器504a相比,可以针对规则引擎502a对数据进行不同的预处理或过滤。
[0167] 分类器504a可以使用数据524输出链路的健康状况的预测指标Predclass 530。规则引擎502a可以使用数据524输出链路的健康状况的预测指标Predrule 532。分类器504a可以将Predclass 530提供给权重调节器506a。规则引擎502a可以将Predrule 532提供给权重调节器506a。权重调节器506a可以标识Predclass 530和Predrule 532的权重。例如,权重调节器506a可以标识PredClass 530的Wclass 538和Predrule 532的WRule 540。在某些情况下,权重调节器506a可以递增或递减权重。权重调节器可以基于实际结果536来递增或递减权重。例如,在监督学习过程期间,权重调节器506a可以接收链路的健康状况的实际结果536,将实际结果536与从规则引擎和分类器接收的预测结果进行比较,然后基于比较来分配或调节权重。例如,如果分类器504a提供与实际结果536相匹配的预测,则权重调节器506a可以递增用于分类器的权重。如果规则引擎提供与实际结果536相匹配的预测,则权重调节器可以递增用于规则引擎的权重。如果分类器504a提供与实际结果536不匹配的预测,则权重调节器506a可以递减用于分类器的权重。如果规则引擎提供与实际结果536不匹配的预测,则权重调节器可以递减用于规则引擎的权重。在一些情况下,实际结果536可以指的是在做出链路的健康状况的预测之后的时间点经由数据524接收到的结果。例如,系统500可以提供对链路的未来健康状况的预测,然后系统500可以接收链路的实际健康状况,并且将实际健康状况与预测进行比较以确定预测的准确性。
[0168] 权重调节器506a可以将Wclass 538和WRule 540提供给预测选择器508a。预测选择器508a可以执行函数f(Pred,W),该函数采用Predclass 530和Predrule 532以及Wclass 538和WRule 540作为输入来选择最终预测。基于相应的权重Wclass 538和WRule 540,最终预测可以是Predclass 530和Predrule 532中的一个。
[0169] 现在参考图5C,示出了根据一个实施例的预测链路的健康状况的方法的流程图。可以使用上述系统500来实现方法550的操作和功能。简要概述,在框552处,客户机和服务器中间的装置(例如,设备200a或设备200b)可以识别配置文件。在框554处,该装置可以确定一个或多个预测。在框556处,装置可以建立权重。在框556处,设备可以选择一个预测。
[0170] 更详细地,参考框552,并且在一些实施例中,客户机和服务器中间的装置可以识别配置文件信息。该装置可以与网络中的一个或多个链路进行通信。配置文件信息可以包括关于网络中的链路的数据。配置文件信息可以包括指示链路的健康状况的当前数据。该配置文件信息可以与穿过链路的网络流量流有关。配置文件信息可以包括关于链路的多个参数。配置文件信息可以包括训练集、历史数据、配置信息或指令。在某些情况下,配置文件信息可包括规则或分类技术,或可用于确定或预测链路的健康状况的阈值。
[0171] 装置可以经由网络接收配置文件信息或其他数据。装置可以经由数据文件、输入/输出端口、服务器或客户机接收配置文件信息或其他数据。在某些情况下,装置可以从存储在装置的存储器中的数据文件中检索配置文件信息。
[0172] 在框554处,装置可以确定预测。装置可以确定有关链路的健康状况或链路的状态的预测。该预测可以是关于链路的当前健康状况,或者是关于链路的未来健康状况。该装置可以使用多极技术来确定多个预测。例如,装置可以使用第一技术来确定链路的健康状况的第一预测,并且使用第二技术来确定链路的健康状况的第二预测。该装置可以被配置为使用相同或不同的输入配置文件信息来确定两个预测。该装置可以被配置为同时、同步、以重叠的方式或串行地确定第一预测和第二预测。例如,装置可以使用基于静态规则的技术来确定第一预测,并使用基于在线机器学习分类器的技术来确定第二预测。该装置可以通过将分类器应用于配置文件信息的多个参数的一个或多个定时序列来确定链路的健康状况的第二预测。
[0173] 在某些情况下,装置可以确定使用单一技术仅做出单一预测。例如,装置可以基于与不同的预测技术相关联的权重来确定预测技术的权重大于阈值。响应于确定技术的权重大于阈值,装置可以确定仅应用对应于大于阈值的权重的单一预测技术。在一些情况下,装置可以响应于权重小于阈值而确定利用多种预测技术。
[0174] 在框556处,装置可以建立一个或多个权重。该装置可以为健康状况的第一预测和健康状况的第二预测中的每一个建立相应的权重。权重可以指示各个预测技术中的置信度。权重可以是预先确定的,也可以是动态确定的。该装置可以随着时间调节或修改权重。例如,装置可以响应于确定预测技术以令人满意的方式执行,例如输出与期望的预测结果匹配的预测,来增加预测技术的权重。权重可以基于预测结果与训练集的相似度来设置,也可以基于监督学习过程来设置。
[0175] 在框558处,装置可以选择一个预测以做出最终预测。该装置可以使用相应的权重在健康状况的第一预测与健康状况的第二预测之间进行选择,以提供链路的健康状况的最终预测指标。该装置可以比较预测指标的权重以确定选择哪个预测。权重可以对应于不同的预测技术。
[0176] 装置可以基于链路的健康状况的最终预测来采取或执行行动。装置可以基于对链路的健康状况的预测来主动地跨链路进行负载平衡。例如,如果存在可以经由其传输流量的多个可用链路,则装置可以将流量从对应于坏状态的链路移动到处于好状态的不同链路。在另一个示例中,装置可以例如响应于对链路的健康状况的预测而将链路的最大可用带宽主动地减小到90%。例如,如果链路变坏的预测原因是高丢失,则装置可以仅发送90%的带宽(例如,对于10Mbps链路,装置可以仅传输9Mbps)。因此,该装置可以主动地进行链路负载平衡以改善网络的整体性能,提高可靠性并减少浪费的资源和网络延迟。此外,通过及时向客户机装置和服务器提供所请求的数据来改善网络的性能,可以改善访问网络的客户机装置或服务器的性能。
[0177] 本文中在一个或多个实施例的上下文中描述的各种元件可以单独地或以任何合适的子组合来提供。例如,本文描述的过程可以以硬件或硬件和软件的组合来实现。此外,本文描述的过程不限于所描述的特定实施例。例如,本文描述的过程不限于本文描述的特定处理顺序,而是,可以对过程块进行重新排序、组合、移除或并行或串行地执行,或者根据需要响应于另一个过程块,以获得此处列出的结果。
[0178] 将进一步理解,本领域的技术人员可以在不脱离所附权利要求的范围的情况下对本文已经描述和示出的部件的细节、材料和布置进行各种改变。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈