书签 分享 收藏 举报 版权申诉 / 99

用于基于用户选择的规格进行负载平衡的系统和方法.pdf

  • 上传人:62****3
  • 文档编号:1038310
  • 上传时间:2018-03-27
  • 格式:PDF
  • 页数:99
  • 大小:5.69MB
  • 摘要
    申请专利号:

    CN200880015738.8

    申请日:

    2008.03.11

    公开号:

    CN101682619A

    公开日:

    2010.03.24

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    授权|||实质审查的生效IPC(主分类):H04L 29/06申请日:20080311|||公开

    IPC分类号:

    H04L29/06; G06F9/50

    主分类号:

    H04L29/06

    申请人:

    思杰系统有限公司

    发明人:

    M·拉加; M·马尼卡姆; R·库纳尔; S·N·雷格夫

    地址:

    美国佛罗里达

    优先权:

    2007.3.12 US 11/685,185

    专利代理机构:

    北京泛华伟业知识产权代理有限公司

    代理人:

    王 勇;姜 华

    PDF完整版下载: PDF下载
    内容摘要

    本发明通过提供负载平衡解决方案来提供对负载平衡的改进,允许用户从负载平衡设备收集的或者确定的规格以及从诸如运行服务的服务器的另一个装置获取的规格来选择规格、权重和阈值。所描述的系统和方法提供负载平衡技术,其中基于监控规格的另一个装置所知的这样的规格可以做出负载平衡决策。负载平衡设备使用网络管理协议和通信模型,诸如简单网络管理协议(SNMP),来从服务器、服务或者其他装置识别和收集规格。这些规格在具有设备确定的规格的负载平衡设备上可用。经由设备的配置接口,用户可以选择一个或者多个设备确定的规格和/或经由网络管理协议获取的规格来确定服务的负载。

    权利要求书

    1、  一种基于用户所选择的规格执行服务的负载平衡的方法,所述方法包括步骤:
    (a)经由设备,识别用于通过所述设备负载平衡的多个服务的多个规格;
    (b)通过所述设备,接收用于识别由用户对来自多个规格的第一规格的选择的信息;
    (c)通过所述设备,接收对于第一用户所选择的规格由用户指定的第一阈值;并且
    (d)通过所述设备,基于第一用户所选择的规格和第一用户所指定的阈值来确定用于所述多个服务的负载。

    2、
      权利要求1的方法,包括通过设备的一个或者多个负载监控器监视管理多个服务的多个虚拟服务器。

    3、
      权利要求2的方法,包括通过负载监控器确定对于虚拟服务器的第一用户选择的规格超过预定的阈值。

    4、
      权利要求3的方法,包括通过所述设备从负载的确定或者处理客户机请求的选择的其中之一排除所述虚拟服务器。

    5、
      权利要求1的方法,包括通过所述设备接收识别由用户对多个规格中的第二规格的选择的信息。

    6、
      权利要求5的方法,包括通过所述设备基于第一用户选择的规格和第二用户选择的规格来确定用于多个服务的负载。

    7、
      权利要求6的方法,包括通过所述设备接收识别对于第二规格由用户指定的第二阈值的信息。

    8、
      权利要求1的方法,包括通过所述设备接收识别由用户对用于第一用户选择的规格的第一权重因数的选择的信息。

    9、
      权利要求1的方法,包括通过所述设备建立对于第一用户选择的规格的设备确定的加权因数。

    10、
      权利要求1的方法,包括通过所述设备接收客户机对于服务的请求,并且通过所述设备基于所确定的负载从多个服务选择第一服务来接收该请求。

    11、
      权利要求1的方法,包括通过所述设备确定对于服务的第一用户选择的规格在用户选择的阈值内。

    12、
      权利要求1的方法,包括通过所述设备接收客户机对服务的请求,确定对于多个服务的第一服务的第一用户选择的规格已经达到用户识别的阈值,并且从多个服务选择第二服务来接收该请求。

    13、
      权利要求1的方法,包括通过所述设备接收客户机对服务的请求,确定对于多个服务的第一服务的第一用户选择的规格已经达到用户识别的阈值,并且将客户机的请求重定向到以下的其中一个:第二设备、服务器、和第二组的一个或者多个服务。

    14、
      权利要求1的方法,包括通过所述设备接收客户机对服务的请求,确定对于虚拟服务器的第一用户选择的规格超过用户识别的阈值,并且给客户机提供重定向的统一资源定位符到以下的其中一个:第二设备、服务器和服务。

    15、
      权利要求1的方法,包括通过所述设备经由对装置的简单网络管理协议(SNMP)查询获取第一用户选择的规格或者第二规格的其中一个的值。

    16、
      权利要求1的方法,包括通过所述设备基于对于规格所收集的值的平均值来确定第一用户选择的规格或者第二规格的其中一个的值。

    17、
      权利要求1的方法,包括通过第一用户选择的规格指示服务的性能或者操作特征的其中一个。

    18、
      权利要求1的方法,其中所述多个规格包括以下其中一个:与服务的多个连接、发送到服务或者由服务发送的多个分组、服务响应请求的响应时间和服务的网络带宽使用。

    19、
      权利要求1的方法,包括通过所述设备从用户接收对于所述设备指示收集用户限定的规格的信息。

    20、
      权利要求19的方法,包括通过所述设备从用户接收识别用于用户限定的规格的对象标识符的信息以经由简单网络管理协议(SNMP)请求对服务器查询。

    21、
      一种基于用户选择的规格来执行服务的负载平衡的方法,所述方法包括步骤:
    (a)通过所述设备,接收由用户从对于由该设备要负载平衡的服务的多个规格选择的第一规格和对于由用户指定的第一规格的第一阈值;
    (b)通过所述设备,建立用于负载平衡该服务的多个规格的第二规格和用于第二规格的第二阈值;
    (c)通过所述设备,收集用于第一用户选择的规格和设备建立的第二规格的数据;并且
    (d)通过所述设备,基于第一用户选择的规格和第一用户指定的阈值和设备建立的第二规格和第二阈值来确定用于服务的负载。

    22、
      权利要求21的方法,通过所述设备接收客户机对服务的请求,并且通过所述设备基于所确定的负载从多个服务选择第一服务来接收该请求。

    23、
      权利要求21的方法,包括通过所述设备确定第二规格在设备建立的阈值内。

    24、
      权利要求21的方法,包括通过所述设备确定用于服务的第一用户选择的规格在用户选择的阈值内。

    25、
      权利要求21的方法,包括通过所述设备确定用于服务的第一用户选择的规格超过用户选择的阈值并且从该负载的确定排除该服务。

    26、
      权利要求21的方法,其中步骤(a)包括通过所述设备接收由用户对于第一用户选择的规格或者通过所述设备建立的第二规格的其中一个所指定的权重因数。

    27、
      权利要求26的方法,包括通过所述设备基于用户指定的权重因数和第一用户指定的阈值来确定对于服务的负载。

    28、
      权利要求21的方法,包括通过所述设备接收客户机对服务的请求,确定对于多个服务的第一服务的用户选择的规格或者第二规格的其中一个已经达到用户识别的阈值,并且从多个服务选择第二服务来接收该请求。

    29、
      权利要求21的方法,包括通过所述设备接收客户对服务的请求,确定对于多个服务的第一服务的用户选择的规格或者第二规格的其中一个已经达到用户识别的阈值,并且将客户重定向到以下的其中一个:第二设备、服务器、和第二组的一个或者多个服务。

    30、
      权利要求1的方法,包括通过所述设备接收客户对服务的请求,确定对于虚拟服务器的第一用户选择的规格超过用户识别的阈值,并且给客户提供重定向的统一资源定位符到以下的其中一个:第二设备、服务器和服务。

    31、
      权利要求21的方法,其中步骤(c)包括通过所述设备,经由对服务器的简单网络管理协议(SNMP)查询来获取第一用户选择的规格或者第二规格的其中一个的值。

    32、
      权利要求21的方法,其中步骤(c)包括由所述设备通过监控到服务的请求和响应来获得第二规格的其中一个的值。

    33、
      权利要求21的方法,包括通过第一用户选择的规格或者第二规格的其中一个来指示服务的性能或者操作特征的其中一个。

    34、
      权利要求21的方法,其中,所述多个规格包括以下的其中一个:与服务的多个连接、发送到服务或者由服务发送的多个分组、服务响应请求的响应时间和服务的网络带宽使用。

    35、
      一种基于用户选择的规格和用户指定的阈值来执行服务的负载平衡的设备,所述设备包括:
    配置接口,用于接收识别由用户从用于负载平衡多个服务的多个规格选择的第一规格的信息,和识别对于第一规格由用户指定的第一阈值的信息;
    用于将请求从客户引导到多个服务的虚拟服务器;
    对于第一用户选择的规格收集数据的负载监控器;
    其中,所述负载监控器基于第一用户选择的规格和第一用户指定的阈值确定用于该服务的负载,并且响应于负载监控器的虚拟服务器将客户请求引导到多个服务的一个服务。

    36、
      权利要求35的设备,其中,负载监控器确定对于虚拟服务器的第一用户选择的规格超过预定的阈值。

    37、
      权利要求36的设备,其中,所述设备从负载的确定或者处理客户请求的选择的其中一个排除所述虚拟服务器。

    38、
      权利要求35的设备,其中,所述配置接口接收识别由用户对多个规格中的第二规格的选择的信息。

    39、
      权利要求38的设备,其中,负载监控器基于第一用户选择的规格和第二用户选择的规格来确定用于多个服务的负载。

    40、
      权利要求39的设备,其中,所述配置接口接收识别对于第二规格由用户指定的第二阈值的信息。

    41、
      权利要求35的设备,其中,所述配置接口接收识别由用户对用于第一用户选择的规格的第一权重因数的选择的信息。

    42、
      权利要求35的设备,其中,负载监控器对于第一用户选择的规格建立权重因数。

    43、
      权利要求35的设备,其中,所述设备接收客户对于服务的请求,并且所述虚拟服务器基于所确定的负载从多个服务选择服务来接收该请求。

    44、
      权利要求35的设备,其中,所述负载监控器确定对于服务的第一用户选择的规格在用户选择的阈值内。

    45、
      权利要求35的设备,其中,所述设备接收客户对服务的请求,负载监控器确定对于多个服务的第一服务的第一用户选择的规格已经达到用户识别的阈值,并且虚拟服务器从多个服务选择第二服务来接收该请求。

    46、
      权利要求书35的设备,其中,所述设备接收客户对服务的请求,负载监控器确定对于多个服务的一个服务的第一用户选择的规格已经达到用户识别的阈值,并且所述设备将客户的请求重定向到以下的其中一个:第二设备、服务器、和第二组的一个或者多个服务。

    47、
      权利要求35的设备,其中,所述设备接收客户对服务的请求,所述负载监控器确定对于虚拟服务器的第一用户选择的规格超过用户识别的阈值,并且所述设备响应于负载监控器给客户提供重定向的统一资源定位符到以下的其中一个:第二设备、服务器和服务。

    48、
      权利要求35的设备,其中,所述负载监控器经由对设备的简单网络管理协议(SNMP)查询获取第一用户选择的规格或者第二规格的其中一个的值。

    49、
      权利要求35的设备,其中,所述负载监控器基于对于规格所收集的值的平均值来获得第一用户选择的规格或者第二规格的其中一个的值。

    50、
      权利要求35的设备,其中,第一用户选择的规格指示服务的性能或者操作特征的其中一个。

    51、
      权利要求35的设备,其中,所述多个规格包括以下其中的一个:与服务的多个连接、发送到服务或者由服务发送的多个分组、服务响应请求的响应时间和服务的网络带宽使用。

    52、
      权利要求35的设备,其中,所述配置接口从用户接收对于所述设备指示收集用户限定的规格的信息。

    53、
      权利要求52的设备,其中,所述配置接口从用户接收识别用于用户限定的规格的对象标识符的信息以经由对服务器的简单网络管理协议(SNMP)请求进行查询。

    说明书

    用于基于用户选择的规格进行负载平衡的系统和方法
    相关申请
    【0001】本申请要求2007年3月12日提交的美国专利申请11/685,185号的名称为″Systems and Methods For Load BalancingBased On User Selected Metrics″的优先权,其内容通过引用全部包含于此。
    技术领域
    【0002】本发明总的涉及数据通信网络。更具体地,本发明涉及用于基于一个或者多个用户选择的规格进行负载平衡服务的系统和方法。
    背景技术
    【0003】企业或者公司可以跨越网络布置多种服务来为许多用户提供服务。例如,客户机上的用户可以请求访问诸如web服务器的服务。该企业可以布置多个服务器来提供该服务,用来满足该需求并且从访问该服务的大量用户加载。例如,服务器群组可以提供能够处理客户机请求的一组服务器。此外,企业可以布置负载平衡器来管理对多个服务器的访问并且基于负载将客户机请求引导到适合的服务器。负载平衡器通过基于调度或者诸如循环法的负载分布算法选择下一个服务器来服务所接收的请求,以将负载分布跨越多个的服务器或者服务。负载平衡器可以监控客户机和服务器之间的请求和响应来确定服务器的负载或状态。
    【0004】负载平衡器不监控关于服务器或者服务的操作或者性能的所有可能的信息。运行服务的服务器具有大量可以影响在处理来自负载平衡器的请求时服务器的负载的特征和参数。例如,负载平衡器可以不知道由服务器上的服务导致的CPU或者存储器使用情况或者服务器正在服务来自第二负载平衡器的多少其他请求。这些因数可以被用在负载平衡决策中,但是不能随时适用于负载平衡器。此外,网络管理员可以对影响服务器的负载的服务器的特征和参数具有更好的理解。例如,网络管理员可以理解,该服务在与服务器上的其它应用进行争用,对这些其他应用的用户的数量影响服务的性能。
    【0005】因此,期望提供一种系统和方法来改进使用用户所选择的参数和/或服务器可用的参数的服务的负载平衡。
    发明内容
    【0006】本发明通过提供负载平衡解决方案来提供对负载平衡的改进,允许用户从负载平衡设备收集的或者确定的规格以及从诸如运行服务的服务器的另一个装置获取的规格来选择规格、权重和阈值。所描述的系统和方法提供负载平衡技术,其中基于监控规格的另一个装置所知的这样的规格可以做出负载平衡决策。负载平衡设备使用网络管理协议和通信模型,诸如简单网络管理协议(SNMP),来从服务器、服务或者其他装置识别和收集规格。这些规格在具有设备确定的规格的负载平衡设备上可用。经由设备的配置接口,用户可以选择一个或者多个设备确定的规格和/或经由网络管理协议获取的规格来确定服务的负载。由此,此处描述的负载平衡设备从用于负载平衡决策的其他资源获取大量规格。此外,此处描述的负载平衡设备在允许用户基于用户对这些大量规格的理解来配置该设备以影响负载平衡决策方面提供极大地灵活性。
    【0007】在一个方面,本发明涉及一种基于用户所选择的规格执行服务的负载平衡的方法。在一个实施例中,该方法包括步骤:经由设备识别用于通过所述设备负载平衡的多个服务的多个规格;通过所述设备接收用于识别由用户对来自多个规格的第一规格和第二规格的选择的信息;通过设备接收对于第一用户所选择的规格由用户指定的第一权重因数和对于第二用户所选择的规格由用户指定的第二权重因数;并且通过所述设备基于第一用户所选择的规格和第一用户所指定的权重因数以及第二用户所选择的规格和第二用户所指定的权重因数来确定用于多个服务的负载。
    【0008】在一个实施例中,该方法包括通过所述设备接收客户机对于服务的请求,并且通过所述设备基于所确定的负载从多个服务选择第一服务来接收该请求。在一些实施例中,该方法包括通过所述设备确定第一用户选择的规格或者第二用户选择的规格的其中一个在用户选择的阈值内。
    【0009】在其他实施例中,该方法包括步骤:通过所述设备接收对于第一用户选择的规格或者第二用户选择的规格的其中一个由用户所识别的阈值。在其他实施例中,该方法包括通过所述设备接收客户机对服务的请求,确定对于多个服务的第一服务的用户选择的规格或者第二用户规格的其中一个已经达到用户识别的阈值,并且从多个服务选择第二服务来接收该请求。
    【0010】在又一些实施例中,该方法包括步骤:设备经由对服务器的简单网络管理协议(SNMP)查询获取第一用户选择的规格或者第二用户选择的规格的其中一个的值。在一些实施例中,该方法包括通过设备基于对于规格所收集的值的平均值来确定第一用户选择的规格或者第二用户选择的规格的其中一个的值。在一些实施例中,该方法包括通过第一用户选择的规格或者第二用户选择的规格的其中一个指示服务的性能或者操作特征的其中一个。在另一个实施例中,其中该方法包括多个规格,该方法包括以下其中一个:与服务的多个连接、发送到服务或者由服务发送的多个分组、服务响应请求的响应时间和服务的网络带宽使用。在一些其他实施例中,该方法包括通过设备从用户接收指定到设备的信息以收集用户限定的规格。在一些实施例中,该方法包括通过设备从用户接收识别用于用户限定的规格的对象标识符的信息以经由简单网络管理协议(SNMP)请求对服务器进行查询。
    【0011】在另一个方面,本发明涉及基于用户选择的规格和设备建立的规格来执行服务的负载平衡的另一个方法。在一个实施例中,该方法包括步骤:通过设备接收对于该设备负载平衡的服务的多个规格由用户选择的第一规格和对于由用户指定的第一规格的第一权重因数;通过设备建立用于负载平衡该服务的多个规格的第二规格和用于第二规格的第二权重因数;通过设备收集用于第一用户选择的规格和设备建立的第二规格的数据;并且通过设备基于第一用户选择的规格和第一用户指定的权重因数和设备建立的第二规格和第二权重因数来确定用于服务的负载。在一些实施例中,该方法还包括通过设备接收客户机对服务的请求,并且通过所述设备基于所确定的负载从多个服务选择第一服务来接收该请求。在一些实施例中,该方法包括通过所述设备确定第二规格在设备建立的阈值内。在一些实施例中,该方法包括通过设备确定第一用户选择的规格在用户选择的阈值内。
    【0012】在一个实施例中,该方法包括步骤:通过所述设备接收对于第一用户选择的规格或者设备建立的第二规格由用户所识别的阈值。在一些实施例中,该方法包括通过所述设备接收客户机对服务的请求,确定对于多个服务的第一服务的用户选择的规格或者第二规格的其中一个已经达到用户识别的阈值,并且从多个服务选择第二服务来接收该请求。
    【0013】在另一个实施例中,该方法包括步骤:设备经由对服务器的简单网络管理协议(SNMP)查询获取第一用户选择的规格或者第二规格的其中一个的值。在一些实施例中,该方法包括通过设备基于对于规格所收集的值的平均值来确定第一用户选择的规格或者第二规格的其中一个的值。在一些其它实施例中,该方法包括通过第一用户选择的规格或者第二规格指示服务的性能或者操作特征。
    【0014】在另一个实施例中,其中,该方法包括以下规格的其中一个:与服务的多个连接、发送到服务或者由服务发送的多个分组、服务响应请求的响应时间和服务的网络带宽使用。在一些其他实施例中,该方法包括通过设备从用户接收对于所述设备指示收集用户限定的规格的信息。在一些其它实施例中,该方法包括通过设备从用户接收识别用于用户限定的规格的对象标识符的信息以经由简单网络管理协议(SNMP)请求对服务器查询。在其他实施例中,该方法包括由设备通过监控对服务的请求和响应来获取对于第二规格的数据。
    【0015】在另一个方面,本发明涉及基于用户选择的规格和用户指定的权重因数来执行服务的负载平衡的设备。在一个实施例中,该设备包括配置接口,用于接收识别由用户从负载平衡多个服务的多个规格选择的第一规格和第二规格的信息,和识别对于第一规格由用户指定的第一权重因数和对于第二规格由用户指定的第二权重因数的信息。该设备还包括用于负载平衡多个服务的虚拟服务器。该设备还包括对于第一用户选择的规格和第二用户选择的规格收集数据的负载监控器。对于第二用户选择的规格,响应于负载监控器,虚拟服务器基于第一用户所选择的规格和第一用户所指定的权重因数以及第二用户所选择的规格和第二权重因数来确定用于服务的负载。
    【0016】在一个实施例中,该设备包括虚拟服务器,所述虚拟服务器接收客户对于服务的请求,并且基于所确定的负载从多个服务选择第一服务来接收该请求。在一些实施例中,该负载监控器确定第一用户选择的规格或者第二用户选择的规格的其中一个在用户选择的阈值内。
    【0017】在其他实施例中,该设备的配置接口接收对于第一用户选择的规格或者第二用户选择的规格的其中一个由用户所识别的阈值。在其他实施例中,该虚拟服务器接收客户机对服务的请求,并且负载监控器确定对于多个服务的第一服务的用户选择的规格或者第二用户规格的其中一个已经达到用户识别的阈值,并且响应于负载监控器,虚拟服务器从多个服务选择第二服务来接收该请求。
    【0018】在另一个实施例中,设备的负载监控器经由对服务器的简单网络管理协议(SNMP)查询获取第一用户选择的规格或者第二用户选择的规格的其中一个的值。在一些实施例中,设备的负载监控器基于对于规格所收集的值的平均值来确定第一用户选择的规格或者第二用户选择的规格的其中一个的值。在其它实施例中,第一用户选择的规格或者第二用户选择的规格包括服务的性能或者操作特征。在又一些实施例中,其中该规格包括以下其中一个:与服务的多个连接、发送到服务或者由服务发送的多个分组、服务响应请求的响应时间和服务的网络带宽使用。
    【0019】在另一个实施例中,设备的配置接口从指定以收集用户限定的规格的用户接收信息。在一些实施例中,配置接口从用户接收识别用于用户限定的规格的对象标识符的信息以经由简单网络管理协议(SNMP)请求对服务器查询。在又一个实施例中,设备的配置接口包括图形用户接口或者命令行接口的其中一个。配置接口可以在设备上或者和设备通信的装置上执行。
    【0020】在另一个方面,本发明涉及基于用户选择的规格和用户指定的权重因数来执行服务的负载平衡的设备。在一个实施例中,该设备包括配置接口,用于接收识别来自对于负载平衡多个服务的多个规格的由用户选择的第一规格的信息和对于第一规格由用户指定的第一权重因数的信息;该设备还包括用于负载平衡多个服务的虚拟服务器,虚拟服务器建立第二规格和第二权重因数。第二设备还包括负载监控器用于收集用于第一用户选择的规格和第二规格的数据。响应于负载监控器,虚拟服务器基于第一用户选择的规格和第一用户指定的权重因数和第二规格和第二权重因数来确定用于服务的负载。
    【0021】在一个实施例中,虚拟服务器接收客户机对服务的请求,并且基于所确定的负载从多个服务选择第一服务来接收该请求。在一些实施例中,负载监控器确定第二规格在设备建立的阈值内。在其它实施例中,负载监控器确定第一用户选择的规格在用户选择的阈值内。
    【0022】在另一个实施例中,配置接口接收对于第一用户选择的规格或者通过虚拟服务器建立的第二规格由用户所识别的阈值。在一些实施例中,虚拟服务器接收客户机对服务的请求,并且负载监控器确定对于多个服务的第一服务的用户选择的规格或者第二规格已经达到用户识别的阈值。在这些实施例中,虚拟服务器响应于负载监控器从多个服务选择第二服务来接收该请求。
    【0023】在又一个实施例中,负载监控器经由对服务器的简单网络管理协议(SNMP)查询获取第一用户选择的规格或者第二规格的值。在一些实施例中,负载监控器通过监控经由设备对服务的请求和响应来获取对于第二规格的数据。在一些实施例中,负载监控器基于对于规格所收集的值的平均值来确定第一用户选择的规格或者第二规格的值。在其它实施例中,第一用户选择的规格或者第二规格包括服务的性能或者操作特征。
    【0024】在另一个实施例中,其中,规格包括以下的其中一个:与服务的多个连接、发送到服务或者由服务发送的多个分组、服务响应请求的响应时间和服务的网络带宽使用。在一些实施例中,配置接口从用户接收指示收集用户限定的规格的信息。在一些其它实施例中,配置接口从用户接收识别用于用户限定的规格的对象标识符的信息以经由简单网络管理协议(SNMP)请求对服务器查询。
    【0025】在又一个实施例中,配置接口包括图形用户接口或者命令行接口。在一些实施例中,配置接口可以在设备上或者和设备通信的装置上执行。
    【0026】在下面附图和具体实施方式中提出本发明的多种实施例的细节。
    附图说明
    【0027】参考结合附图的以下描述,本发明的前述和其他对象、方面、特征和优势将会变得更加明显和更好理解,其中:
    图1A是客户机经由设备来访问服务器的网络环境的实施例的框图;
    图1B是经由设备来将计算环境从服务器递送到客户机的环境的实施例的框图;
    图1C是经由多个设备来将计算环境从服务器递送到客户机的另一个环境的实施例的框图;
    图1D是经由网络来将计算环境从服务器递送到客户机的环境的实施例的框图;
    图1E和1F是计算装置的实施例的框图;
    图2A是处理在客户机和服务器之间的通信的设备的实施例的框图;
    图2B是用于在客户机和服务器之间优化、加速、负载平衡和路由通信的设备的另一个实施例的框图;
    图3是经由设备来与服务器进行通信的客户机的实施例的框图;
    图4A是用于经由网络管理协议收集规格并且用于基于用户选择的规格确定服务的负载的设备的实施例的框图;
    图4B是用于基于图4B的视图中的用户选择的规格执行负载平衡的方法的步骤的实施例的流程图;
    图5A是用于在异类装置之间执行全局服务器负载平衡的网络环境的实施例的框图;
    图5B是在异类装置之间执行服务器负载平衡的设备的实施例的框图;
    图5C是用于在异类装置之间全局服务器负载平衡的方法的步骤的实施例的流程图;和
    图6是用于使用规格的阈值来执行负载平衡的方法的步骤的实施例的流程图。
    【0028】根据以下结合附图提出的详细描述,本发明的特征和优势将变得更加明显,其中相同的参考特征在全文中是指对应的元件。在附图中,相似的附图标记通常指示相同的、功能类似的和/或结构类似的元件。
    具体实施方式
    【0028】为了阅读下面的本发明的多个实施例的描述,说明下面的说明书的各部分以及它们相应的内容是有帮助的:
    部分A描述用于实现本发明的实施例的网络环境和计算环境;
    部分B描述用于将计算环境加速递送到远程用户的系统和设备架构的实施例;
    部分C描述用于加速在客户机和服务器之间的通信的客户机代理的实施例;
    部分D描述用于基于通过用户从设备确定的规格选择的规格和/或经由简单网络管理协议从装置收集的规格执行负载平衡的系统和方法的实施例;和
    部分E描述用于在异类装置之间全局服务器负载平衡的系统和方法的实施例。
    A.网络和计算环境
    【0029】在讨论设备和/或客户机的系统和方法的实施例的细节之前,讨论可以部署这样的实施例的网络和计算环境是有帮助的。现在参考图1A,描述了网络环境的一个实施例。总的来说,网络环境包括经由一个或多个网络104和104′(通常被称为网络104)与一个或多个服务器106a-106n(通常也被称为服务器106或远程机器106)通信的一个或多个客户机102a-102n(通常也被称为本地机器102或客户机102)。在一些实施例中,客户机102经由设备200与服务器106通信。
    【0030】虽然图1A示出客户机102和服务器106之间的网络104和网络104′,但客户机102和服务器106可以在同一个网络104上。网络104和104′可以是相同类型的网络或不同类型的网络。网络104和/或网络104′可以是像公司内联网的局域网(LAN)、城域网(MAN)或者诸如因特网或万维网的广域网(WAN)。在一个实施例中,网络104′可以是专用网而网络104可以是公用网。在一些实施例中,网络104可以是专用网而网络104′可以是公用网。在另一个实施例中,网络104和104′可以都是专用网。在一些实施例中,客户机102可以位于公司的分支机构,经由网络104上的WAN连接来与位于公司的数据中心的服务器106进行通信。
    【0031】网络104和/或104′可以是任意类型和/或形式的网络,并且可以包括下列任意一种网络:点到点网络、广播网、广域网、局域网、远程通信网、数据通信网、计算机网络、ATM(异步传送模式)网络、SONET(同步光学网络)网络、SDH(同步数字系列)网络、无线网络和有线网络。在一些实施例中,网络104可以包括诸如红外信道或卫星频带的无线链路。网络104和/或104′的拓扑结构可以是总线型、星型或环型网络拓扑结构。网络104和/或104′以及网络拓扑结构可以是能够支持此处描述的操作的本领域内普通技术人员所知的任一种这样的网络或网络拓扑结构。
    【0032】如图1A所示,在网络104和104′之间示出也可以被称为接口单元200或网关200的设备200。在一些实施例中,设备200可以位于网络104上。例如,公司的分支机构可以在所述分支机构处部署设备200。在其它实施例中,设备200可以位于网络104′上。例如,设备200可以位于公司的数据中心。在又一个实施例中,多个设备200可以部署在网络104上。在一些实施例中,多个设备200可以部署在网络104′上。在一个实施例中,第一设备200与第二设备200′相通信。在其它的实施例中,设备200可以是在与客户机102相同或不同的网络104,104′上的任意客户机102或服务器106的一部分。一个或多个设备200可以位于在客户机102和服务器106之间的网络或网络通信路径中的任一点处。
    【0033】在一些实施例中,设备200包括被称为Citrix NetScaler装置的由位于Ft.Lauderdale Florida的Citrix Systems公司制造的任意网络装置。在其它实施例中,设备200包括由位于Seattle,Washington的F5 Networks公司制造的被称为WebAccelerator和BigIP的任意一个产品实施例。在另一个实施例中,设备205包括由位于Sunnyvale,California的Juniper Networks公司制造的DX加速装置平台和/或诸如SA700、SA2000、SA4000和SA6000装置的SSL VPN系列装置中的任意一个。在又一个实施例中,设备200包括由位于SanJose,California的Cisco Systems公司制造的任意应用加速和/或安全相关的设备和/或软件,例如Cisco ACE应用控制引擎模块业务(Application Control Engine Module service)软件和网络模块以及Cisco AVS系列应用速度系统(Application Velocity System)。
    【0034】在一个实施例中,该系统可以包括多个逻辑分组的服务器106。在这些实施例中,服务器的逻辑分组可以被称为服务器群组38。在这些实施例中的一些实施例中,服务器106可以是在地理上分散的。有时候,群组38可以被管理为单一的实体。在其它实施例中,服务器群组38包括多个服务器群组38。在一个实施例中,服务器群组代表一个或多个客户机102来执行一个或多个应用。
    【0035】在每个群组38中的服务器106可以是不同种类的。一个或多个服务器106可以根据一种类型的操作系统平台(例如,由位于Redmond,Washington的微软公司出品的WINDOWS NT)来进行操作,而一个或多个其它的服务器106可以根据另一种类型的操作系统平台(例如,Unix或Linux)来进行操作。每个群组38中的服务器106不需要与同一群组38中的另一个服务器106物理上接近。因此,逻辑上被分组为群组38的服务器106的分组可以使用广域网(WAN)连接或中域网(medium-areanetwork,MAN)连接来互连。例如,群组38可以包括在物理上位于不同的洲或位于一个洲、国家、州、城市、校园或房间的不同区域的服务器106。如果使用局域网(LAN)连接或一些形式的直接连接来连接服务器106,则可以增加在群组38中的服务器106之间的数据传输速度。
    【0036】服务器106可以被称为文件服务器、应用服务器、web服务器、代理服务器或网关服务器。在一些实施例中,服务器106可以有能力起到应用服务器或主应用服务器的作用。在一个实施例中,服务器106可以包括活动目录(Active Directory)。客户机102也可以被称为客户机节点或端点。在一些实施例中,客户机102有能力起到寻求访问服务器上的应用的客户机节点以及作为对于其它的客户机102a-102n提供对寄载的应用的访问的应用服务器的作用。
    【0037】在一些实施例中,客户机102与服务器106进行通信。在一个实施例,客户机102直接与群组38中的服务器106的其中一个进行通信。在另一个实施例中,客户机102执行程序邻近应用以与群组38中的服务器106进行通信。在又一个实施例中,服务器106提供主节点的功能。在一些实施例中,客户机102通过网络104与群组38中的服务器106进行通信。例如,通过网络104,客户机102可以请求执行由群组38中的服务器106a-106n寄载的多个应用,并接收应用执行的输出结果用于显示。在一些实施例中,只有主节点提供所要求的识别并提供与寄载被请求的应用的服务器106′相关的地址信息的功能。
    【0038】在一个实施例中,服务器106提供web服务器的功能。在另一个实施例中,服务器106a从客户机102接收请求,将请求转发到第二服务器106b,并使用来自于服务器106b的对请求的响应来对客户机102的请求进行响应。在又一个实施例中,服务器106获得客户机102可用的应用的列举以及与寄载由所述应用的列举所标识的应用的服务器106相关的地址信息。在又一个实施例中,服务器106使用web接口将对请求的响应提供给客户机102。在一个实施例中,客户机102直接与服务器106进行通信以访问所标识的应用。在另一个实施例中,客户机102接收由执行服务器106上的标识的应用所生成的诸如显示数据的应用输出数据。
    【0039】现在参考图1B,描述了部署多个设备200的网络环境的实施例。第一设备200可以部署在第一网络104上,而第二设备200′部署在第二网络104′上。例如,公司可以在分支机构部署第一设备200,而在数据中心部署第二设备200′。在另一个实施例中,第一设备200和第二设备200′被部署在同一个网络104或网络104′上。例如,第一设备200可以部署用于第一服务器群组38,而第二设备200′可以部署用于第二服务器群组38′。在另一个实例中,第一设备200可以部署在第一分支机构,而第二设备200′被部署在第二分支机构′。在一些实施例中,第一设备200和第二设备200′彼此协同或联合工作,以加速客户机和服务器之间的网络业务量或应用和数据的递送。
    【0040】现在参考图1C,描述了使用一个或多个其它类型的设备,例如在一个或多个WAN优化设备205,205′之间,来部署设备200的网络环境的另一个实施例。例如,第一WAN优化设备205显示在网络104和104′之间,而第二WAN优化设备205′可以部署在设备200和一个或多个服务器106之间。通过示例,公司可以在分支机构部署第一WAN优化设备205,而在数据中心部署第二WAN优化设备205′。在一些实施例中,设备205可以位于网络104′上。在其它实施例中,设备205′可以位于网络104上。在一些实施例中,设备205′可以位于网络104′或网络104″上。在一个实施例中,设备205和205′在同一个网络上。在另一个实施例中,设备205和205′在不同的网络上。在另一个实例中,第一WAN优化设备205可以部署用于第一服务器群组38,而第二WAN优化设备205′可以部署用于第二服务器群组38′。
    【0041】在一个实施例中,设备205是用于加速、优化或者以其他方式改善诸如往和/或返于WAN连接的业务量的任意类型和形式的网络业务量的性能、操作或服务质量的装置。在一些实施例中,设备205是一个性能提高的代理。在其它实施例中,设备205是任意类型和形式的WAN优化或加速装置,有时也被称为WAN优化控制器。在一个实施例中,设备205是由位于Ft.Lauderdale Florida的Citrix Systems公司出品的被称为WANScaler的产品实施例中的任意一种。在其它实施例中,设备205包括由位于Seattle,Washington的F5 Networks公司出品的被称为BIG-IP链路控制器和WANjet的产品实施例中的任意一种。在另一个实施例中,设备205包括由位于Sunnyvale,California的JuniperNetWorks公司出品的WX和WXC WAN加速装置平台中的任意一种。在一些实施例中,设备205包括由San Francisco,California的RiverbedTechnology公司出品的虹鳟(steelhead)系列WAN优化设备中的任意一种。在其它实施例中,设备205包括由位于Roseland,NewJersey的ExpandNetworks公司出品的WAN相关装置中的任意一种。在一个实施例中,设备205包括由位于Cupertino,California的Packeteer公司出品的任意一种WAN相关设备,例如由Packeteer提供的PacketShaper、iShared和SkyX产品实施例。在又一个实施例中,设备205包括由位于San Jose,California的Cisco Systems公司出品的任意WAN相关设备和/或软件,例如Cisco广域网应用服务软件和网络模块以及广域网引擎设备。
    【0042】在一个实施例中,设备205提供用于分支机构或远程办公室的应用和数据加速业务。在一个实施例中,设备205包括广域文件服务(WAFS)的优化。在另一个实施例中,设备205加速文件的递送,例如经由通用Internet文件系统(CIFS)协议。在其它实施例中,设备205在存储器和/或存储设备中提供高速缓存来加速应用和数据的递送。在一个实施例中,设备205提供在任意级别的网络堆栈或在任意的协议或网络层的网络业务量的压缩。在另一个实施例中,设备205提供传输层协议优化、流量控制、性能增强或修改和/或管理,以加速WAN连接上的应用和数据的递送。例如,在一个实施例中,设备205提供传输控制协议(TCP)优化。在其它实施例中,设备205提供对于任意会话或应用层协议的优化、流量控制、性能增强或修改和/或管理。
    【0043】在另一个实施例中,设备205将任意类型和形式的数据或信息编码成网络分组的定制或标准的TCP和/或IP报头字段或可选字段,以将存在、功能或能力通告给另一个设备205′。在另一个实施例中,设备205′可以使用在TCP和/或IP报头字段或选项中编码的数据来与另一个设备205′进行通信。例如,设备可以使用TCP选项或IP报头字段或选项来传达在执行诸如WAN加速的功能时或者为了彼此联合工作而由设备205,205′所使用的一个或多个参数。
    【0044】在一些实施例中,设备200保存在设备205和205′之间传达的TCP和/或IP报头和/或可选字段中编码的任意信息。例如,设备200可以终止经过设备200的传输层连接,例如经过设备205和205′的在客户机和服务器之间的一个传输层连接。在一个实施例中,设备200识别并保存在由第一设备205通过第一传输层连接发送的传输层分组中的任意编码信息,并经由第二传输层连接来将具有编码信息的传输层分组传达到第二设备205′。
    【0045】现在参考图1D,描述了用于递送和/或操作客户机102上的计算环境的网络环境。在一些实施例中,服务器106包括用于将计算环境或应用和/或数据文件递送给一个或多个客户机102的应用递送系统190。简单概述,客户机10经由网络104、104′和设备200与服务器106通信。例如,客户机102可以驻留在例如分支机构的公司的远程办公室,而服务器106可以驻留在公司的数据中心。客户机102包括客户机代理120和计算环境15。计算环境15可以执行或操作访问、处理或使用数据文件的应用。可以经由设备200和/或服务器106来递送计算环境15、应用和/或数据文件。
    【0046】在一些实施例中,设备200加速将计算环境15或其任意部分递送给客户机102。在一个实施例中,设备200通过应用递送系统190来加速计算环境15的递送。例如,此处描述的实施例可以用来将可由应用处理的流应用和数据文件加速从中央的公司数据中心递送到远程用户的位置,例如公司的分支机构。在另一个实施例中,设备200加速在客户机102和服务器106之间的传输层业务量。设备200可以提供用于加速从服务器106到客户机102的任意传输层有效载荷的加速技术,例如:1)传输层连接池,2)传输层连接多路复用,3)传输控制协议缓冲,4)压缩和5)高速缓存。在一些实施例中,设备200提供响应于客户机102的请求的服务器106的负载平衡。在其它实施例中,设备200充当代理或访问服务器以提供对一个或多个服务器106的访问。在另一个实施例中,设备200提供从客户机102的第一网络104到服务器106的第二网络104′的安全虚拟专用网连接,例如SSL VPN连接。在又一些实施例中,设备200提供在客户机102和服务器106之间的连接和通信的应用防火墙安全、控制和管理。
    【0047】在一些实施例中,应用递送管理系统190根据多个执行方法以及根据经由策略引擎195应用的任意验证和授权策略来提供将计算环境递送到远端或另外的用户的桌面的应用递送技术。使用这些技术,远程用户可以从任意网络连接装置100获取计算环境以及访问服务器存储的应用和数据文件。在一个实施例中,应用递送系统190可以驻留于服务器106或在服务器106上执行。在另一个实施例中,应用递送系统190可以驻留于多个服务器106a-106n上或在多个服务器106a-106n上执行。在一些实施例中,应用递送系统190可以在服务器群组38中执行。在一个实施例中,执行应用递送系统190的服务器106还可以存储或提供应用和数据文件。在另一个实施例中,第一组的一个或多个服务器106可以执行应用递送系统190,而不同的服务器106n可以存储或提供应用和数据文件。在一些实施例中,应用递送系统190、应用和数据文件中的每一个可以驻留或位于不同的服务器上。在又一个实施例中,应用递送系统190的任意部分可以驻留、执行或保存或被分配于设备200或多个设备。
    【0048】客户机102可以包括用于执行使用或处理数据文件的应用的计算环境15。客户机102可以经由网络104、104′和设备200来从服务器106请求应用和数据文件。在一个实施例中,设备200可以将来自于客户机102的请求转发到服务器106。例如,客户机102可以不具有本地存储或可存取的应用和数据文件。响应于请求,应用递送系统190和/或服务器106可以递送应用和数据文件到客户机102。例如,在一个实施例中,服务器106可以以应用流的形式发送应用,以在客户机102上的计算环境15中进行操作。
    【0049】在一些实施例中,应用递送系统190包括Citrix Systems公司的例如MetaFrame或Citrix表示(Presentation)服务器TM的Citrix访问套件TM的任意部分和/或由微软公司出品的任意一种微软终端服务。在一个实施例中,应用递送系统190可以通过远程显示协议或以其它方式通过基于远程或基于服务器的计算来递送一个或多个应用到客户机102或用户。在另一个实施例中,应用递送系统190可以通过应用的流式传输来递送一个或多个应用到客户机或用户。
    【0050】在一个实施例中,应用递送系统190包括用于控制和管理应用执行方法的访问、选择以及应用的递送的策略引擎195。在一些实施例中,策略引擎195确定用户或客户机102可以访问的一个或多个应用。在另一个实施例中,策略引擎195确定应用应该如何被递送给用户或客户机102,例如执行方法。在一些实施例中,应用递送系统190提供从中选择应用执行方法的多个递送技术,例如基于服务器的计算、本地流式传输或递送应用给客户机120以用于本地执行。
    【0051】在一个实施例中,客户机102请求执行应用程序而包括服务器106的应用递送系统190选择执行应用程序的方法。在一些实施例中,服务器106从客户机102接收证书。在另一个实施例中,服务器106从客户机102接收列举可用的应用的请求。在一个实施例中,响应于所述请求或收到的证书,应用递送系统190列举客户机102可用的多个应用程序。应用递送系统190接收请求以执行所列举的应用。应用递送系统190选择预定数目的方法中的一个来执行列举的应用,例如响应于策略引擎的策略。应用递送系统190可以选择一个执行应用的方法,使得客户机102可以接收通过在服务器106上执行应用程序而生成的应用输出数据。应用递送系统190可以选择执行应用的方法,使得本地机器10可以在检索包括应用的多个应用文件之后本地执行所述应用程序。在又一个实施例中,应用递送系统190可以选择执行应用的方法以经由网络104将应用流式传输到客户机102。
    【0052】客户机102可以执行、操作或以其他方式提供应用,所述应用可以是任意类型和/或形式的软件、程序或可执行指令,例如任意类型和/或形式的web浏览器、基于web的客户机、客户机-服务器应用、瘦-客户机的计算客户机、ActiveX控件、或Java小程序、或可以在客户机102上执行的任意其它类型和/或形式的可执行指令。在一些实施例中,应用可以是代表客户机102在服务器106上执行的基于服务器或基于远程的应用。在一个实施例中,服务器106可以使用任意瘦-客户机或远程显示协议来显示输出到客户机102,所述远程显示协议例如由位于Ft.Lauderdale,Florida的Citrix Systems公司出品的独立计算架构(ICA)协议或由位于Redmond,Washington的微软公司出品的远程桌面协议(RDP)。应用可以使用任意类型的协议,并且它可以是例如HTTP客户机、FTP客户机、Oscar客户机或Telnet客户机。在其它实施例中,应用包括与VoIP通信相关的任意类型的软件,例如软IP电话。在进一步的实施例中,应用包括与实时数据通信相关的任意应用,例如用于流式传输视频和/或音频的应用。
    【0053】在一些实施例中,服务器106或服务器群组38可以运行一个或多个应用,例如提供瘦-客户机计算的应用或远程显示表示应用的应用。在一个实施例中,服务器106或服务器群组38作为应用而执行CitrixSystems公司的例如MetaFrame或Citrix表示服务器TM的Citrix访问套件TM的任意部分和/或由微软公司出品的任意一种微软终端服务。在一个实施例中,应用是由位于Fort Lauderdale,Florida的CitrixSystems公司开发的ICA客户机。在其它实施例中,应用包括由位于Redmond,Washington的微软公司开发的远程桌面(RDP)客户机。此外,服务器106可以运行应用,例如,所述服务器106可以是提供例如由位于Redmond,Washington的微软公司出品的微软Exchange的电子邮件服务的应用服务器、web或Internet服务器、或桌面共享服务器、或协作服务器。在一些实施例中,任意一种应用可以包括任意类型的寄载服务或产品,例如由Santa Barbara,California的Citrix Online部门提供的GoToMeetingTM、由位于Santa Clara,California的WebEx公司提供的WebExTM、或由位于Redmond,Washington的微软公司提供的微软OfficeLive Meeting。
    【0054】仍然参考图1D,网络环境的一个实施例可以包括监控服务器106A。监控服务器106A可以包括任意类型和形式的性能监控业务198。性能监控业务198可以包括监控、测量和/或管理软件和/或硬件,包括数据收集、集合、分析、管理和报告。在一个实施例中,性能监控业务198包括一个或多个监控代理197。监控代理197包括用于在诸如客户机102、服务器106或设备200和205的装置上执行监控、测量和数据收集活动的任意软件、硬件或其组合。在一些实施例中,监控代理197包括诸如Visual Basic脚本或Java描述语言的任意类型和形式的脚本。在一个实施例中,监控代理197相对于装置的任意应用和/或用户透明地执行。在一些实施例中,监控代理197相对于应用或客户机不引人注目地被安装和操作。在又一个实施例中,监控代理197被安装和操作而不需要用于该应用或装置的任何设备(instrumentation)。
    【0055】在一些实施例中,监控代理197以预定频率监控、测量和收集数据。在其它实施例中,监控代理197基于任意类型和形式的事件的检测来监控、测量和收集数据。例如,监控代理197可以在检测到对web页面的请求或收到HTTP响应时收集数据。在另一个实例中,监控代理197可以在检测到诸如鼠标点击的任意用户输入事件时收集数据。监控代理197可以报告或提供任意所监控、测量或收集的数据给监控业务198。在一个实施例中,监控代理197根据调度或预定频率来发送信息给监控业务198。在另一个实施例中,监控代理197在检测到事件时发送信息给监控业务198。
    【0056】在一些实施例中,监控业务198和/或监控代理197执行诸如客户机、服务器、服务器群组、设备200、设备205或网络连接的任意网络资源或网络基础结构元件的监控和性能测量。在一个实施例中,监控业务198和/或监控代理197执行诸如TCP或UDP连接的任意传输层连接的监控和性能测量。在另一个实施例中,监控业务198和/或监控代理197监控和测量网络等待时间。在又一个实施例中,监控业务198和/或监控代理197监控和测量带宽利用。
    【0057】在其它实施例中,监控业务198和/或监控代理197监控和测量终端用户响应时间。在一些实施例中,监控业务198执行应用的监控和性能测量。在另一个实施例中,监控业务198和/或监控代理197执行到应用的任意会话或连接的监控和性能测量。在一个实施例中,监控业务198和/或监控代理197监控和测量浏览器的性能。在另一个实施例中,监控业务198和/或监控代理197监控和测量基于HTTP的事务的性能。在一些实施例中,监控业务198和/或监控代理197监控和测量IP上语音(VoIP)应用或会话的性能。在其它实施例中,监控业务198和/或监控代理197监控和测量诸如ICA客户机或RDP客户机的远程显示协议应用的性能。在又一个实施例中,监控业务198和/或监控代理197监控和测量任意类型和形式的流媒体的性能。在进一步的实施例中,监控业务198和/或监控代理197监控和测量寄载应用或软件即服务(Software-As-A-Service,SaaS)递送模型的性能。
    【0058】在一些实施例中,监控业务198和/或监控代理197执行与应用相关的一个或多个事务、请求或响应的监控和性能测量。在其它实施例中,监控业务198和/或监控代理197监控和测量应用层堆栈的任意部分,例如任意.NET或J2EE调用。在一个实施例中,监控业务198和/或监控代理197监控和测量数据库或SQL事务。在又一个实施例中,监控业务198和/或监控代理197监控和测量任意方法、函数或应用编程接口(API)调用。
    【0059】在一个实施例中,监控业务198和/或监控代理197执行经由诸如设备200和/或设备205的一个或多个设备从服务器到客户机的应用和/或数据的递送的监控和性能测量。在一些实施例中,监控业务198和/或监控代理197监控和测量虚拟化应用的递送的性能。在其它实施例中,监控业务198和/或监控代理197监控和测量流式应用的递送的性能。在另一个实施例中,监控业务198和/或监控代理197监控和测量递送桌面应用到客户机和/或在客户机上执行桌面应用的性能。在另一个实施例中,监控业务198和/或监控代理197监控和测量客户机/服务器应用的性能。
    【0060】在一个实施例中,监控业务198和/或监控代理197被设计和构建为应用递送系统190提供应用性能管理。例如,监控业务198和/或监控代理197可以监控、测量和管理经由Citrix表示服务器递送应用的性能。在该实例中,监控业务198和/或监控代理197监控单独的ICA会话。监控业务198和/或监控代理197可以测量总的以及每次的会话系统资源使用,以及应用和连网性能。监控业务198和/或监控代理197可以对于给定用户和/或用户会话来标识有效服务器。在一些实施例中,监控业务198和/或监控代理197监控在应用递送系统190和应用和/或数据库服务器之间的后端连接。监控业务198和/或监控代理197可以测量每个用户会话或ICA会话的网络等待时间、延迟和容量。
    【0061】在一些实施例中,监控业务198和/或监控代理197测量和监控对于应用递送系统190的诸如总的存储器使用、每个用户会话和/或每个进程的存储器使用。在其它实施例中,监控业务198和/或监控代理197测量和监控诸如总的CPU使用、每个用户会话和/或每个进程的应用递送系统190的CPU使用。在另一个实施例中,监控业务198和/或监控代理197测量和监控登录到诸如Citrix表示服务器的应用、服务器或应用递送系统所需的时间。在一个实施例中,监控业务198和/或监控代理197测量和监控用户登录应用、服务器或应用递送系统190的持续时间。在一些实施例中,监控业务198和/或监控代理197测量和监控应用、服务器或应用递送系统会话的有效和无效的会话计数。在又一个实施例中,监控业务198和/或监控代理197测量和监控用户会话等待时间。
    【0062】在又一个进一步的实施例中,监控业务198和/或监控代理197测量和监控任意类型和形式的服务器规格(metrics)。在一个实施例中,监控业务198和/或监控代理197测量和监控与系统存储器、CPU使用和磁盘存储器有关的规格。在另一个实施例中,监控业务198和/或监控代理197测量和监控和页错误有关的规格,诸如每秒页错误。在其它实施例中,监控业务198和/或监控代理197测量和监控往返时间的规格。在又一个实施例中,监控业务198和/或监控代理197测量和监控与应用崩溃、错误和/或中止相关的规格。
    【0063】在一些实施例中,监控业务198和监控代理198包括由位于Ft.Lauderdale,Florida的Citrix Systems公司出品的被称为EdgeSight的任意一种产品实施例。在另一个实施例中,性能监控业务198和/或监控代理198包括由位于Palo Alto,California的Symphoniq公司出品的被称为TrueView产品套件的产品实施例的任意部分。在一个实施例中,性能监控业务198和/或监控代理198包括由位于SanFrancisco,California的TeaLeaf技术公司出品的被称为TeaLeafCX产品套件的产品实施例的任意部分。在其它实施例中,性能监控业务198和/或监控代理198包括由位于Houston,Texas的BMC软件公司出品的诸如BMC性能管理器和巡逻产品(BMC Performance Manager and Patrolproducts)的商业业务管理产品的任意部分。
    【0064】客户机102、服务器106和设备200可以被部署和/或执行在任意类型和形式的计算装置上,例如可以在任意类型和形式的网络上通信并执行此处描述的操作的计算机、网络装置或设备。图1E和1F描述了可用于实施客户机102、服务器106或设备200的实施例的计算装置100的框图。如图1E和1F所示,每个计算装置100包括中央处理单元101和主存储器单元122。如图1E所示,计算装置100可以包括可视显示装置124、键盘126和/或诸如鼠标的点击装置127。每个计算装置100也可以包括另外的可选元件,例如一个或多个输入/输出装置130a-130b(通常使用附图标记130来指示)以及与中央处理单元101通信的高速缓存140。
    【0065】中央处理单元101是响应并处理取自主存储器单元122的指令的任意逻辑电路。在许多实施例中,中央处理单元由微处理器单元提供,例如:由位于Mountain View,California的Intel公司出品的产品;由位于Schaumburg,Illinois的Motorola公司出品的产品;由位于Santa Clara,California的Transmeta公司出品的产品;由位于WhitePlains,New York的国际商业机器公司出品的RS/6000处理器;或者由位于Sunnyvale,California的Advanced Micro Devices公司出品的产品。计算装置100可以基于任意的这些处理器、或者可以如此处所描述地操作的任意其它处理器。
    【0066】主存储器单元122可以是可以保存数据并允许微处理器101直接访问的任意存储位置的一个或多个存储芯片,例如静态随机存取存储器(SRAM)、突发式SRAM或同步突发式SRAM(BSRAM)、动态随机存取存储器(DRAM)、快速页面模式DRAM(FPM DRAM)、增强型DRAM(EDRAM)、扩展数据输出RAM(EDO RAM)、扩展数据输出DRAM(EDO DRAM)、突发式扩展数据输出DRAM(BEDO DRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100SDRAM、双数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链接DRAM(SLDRAM)、直接Rambus DRAM(DRDRAM)、或铁电RAM(FRAM)。主存储器122可以基于任意一种上面描述的存储芯片、或者可以如此处所描述地操作的任意其它可用的存储芯片。在图1E中所示的实施例中,处理器101通过系统总线150(在下面进行更详细的描述)与主存储器122进行通信。图1E描述了在其中处理器通过存储器端口103直接与主存储器122通信的计算装置100的实施例。例如,在图1F中,主存储器122可以是DRDRAM。
    【0067】图1F描述了在其中主处理器101通过有时被称为背端总线的次级总线来直接与高速缓存140通信的实施例。在其它实施例中,主处理器101使用系统总线150与高速缓存140进行通信。高速缓存140典型地具有比主存储器122更快的响应时间,并且典型地通过SRAM、BSRAM或EDRAM来提供。在图1E中所示的实施例中,处理器101通过本地系统总线150与多个I/O装置130进行通信。多种总线可以用来将中央处理单元101连接到任意一种I/O装置130,所述总线包括VESA VL总线、ISA总线、EISA总线、微通道架构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于I/O装置是视频显示器124的实施例,处理器101可以使用高级图形端口(AGP)来与显示器124进行通信。图1F描述了在其中主处理器101通过HyperTransport、快速I/O或InfiniBand来直接与I/O装置130通信的计算机100的一个实施例。图1F还描述了混合本地总线和直接通信的一个实施例:处理器101使用本地互连总线与I/O装置130进行通信,同时直接与I/O装置130进行通信。
    【0068】计算装置100可以支持任意适当的安装装置116,例如用于接收像3.5英寸、5.25英寸磁盘或ZIP磁盘这样的软盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、多种格式的磁带驱动器、USB装置、硬盘驱动器或适于安装像任意客户机代理120或其部分的软件和程序的任意其它装置。计算装置100还可以包括存储装置128,例如一个或多个硬盘驱动器或独立磁盘的冗余阵列,用于保存操作系统及其它相关软件,以及用于保存诸如与客户机代理120相关的任意程序的应用软件程序。可选地,任意一种安装装置116还可以被用作存储装置128。另外,操作系统和软件可以从可引导介质中运行,所述可引导介质例如像的可引导CD,作为来自于knoppix.net可用作GNU/Linux分发的GNU/Linux的可引导CD。
    【0069】进一步地,计算装置100可以包括通过多种连接联接到局域网(LAN)、广域网(WAN)或因特网的网络接口118,所述多种连接包括但不限于标准电话线、LAN或WAN链路(例如,802.11、T1、T3、56kb、X.25)、宽带连接(例如,ISDN、帧中继、ATM)、无线连接或上述任意或所有连接的一些组合。网络接口118可以包括内置网络适配器、网络接口卡、PCMCIA网卡、插件总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适于将计算装置100连接到可以传达并执行此处所描述的操作的任意类型的网络的任意其它装置。各式各样的I/O装置130a-130n可以存在于计算装置100中。输入装置包括键盘、鼠标、轨道垫、轨道球、麦克风以及绘画板。输出装置包括视频显示器、扬声器、啧墨打印机、激光打印机和染料升华打印机。I/O装置130可以由如图1E所示的I/O控制器123控制。I/O控制器可以控制诸如键盘126和例如鼠标或光笔的点击装置127的一个或多个I/O装置。进一步地,I/O装置还可以为计算装置100提供存储装置128和/或安装介质116。还是在其它实施例中,计算装置100可以提供USB连接以接收诸如由位于LosAlamitos,California的Twintech Industry公司出品的USB闪存驱动器系列装置这样的便携USB存储装置。
    【0070】在一些实施例中,计算装置100可以包括或连接到多个显示装置124a-124n,每个显示装置可以是相同或不同的类型和/或形式。因而,任意一种I/O装置130a-130n和/或I/O控制器123可以包括任意类型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、允许或提供通过计算装置100连接和使用多个显示装置124a-124n。例如,计算装置100可以包括任意类型和/或形式的视频适配器、视频卡、驱动程序和/或库,以联系、通信、连接或以其他方式使用显示装置124a-124n。在一个实施例中,视频适配器可以包括多个连接器以联接多个显示装置124a-124n。在其它实施例中,计算装置100可以包括多个视频适配器,每个视频适配器连接到一个或多个显示装置124a-124n。在一些实施例中,计算装置100的操作系统的任意部分可以被配置用于使用多个显示器124a-124n。在其它实施例中,一个或多个显示装置124a-124n可以由一个或多个诸如例如通过网络连接到计算装置100的计算装置100a和100b的其它的计算装置来提供。这些实施例可以包括被设计和构建为将另一个计算机的显示装置用作计算装置100的第二显示装置124a的任意类型的软件。本领域普通技术人员将认识和理解计算装置100可以被配置为具有多个显示装置124a-124n的多个方法和实施例。
    【0071】在进一步的实施例中,I/O装置130可以是在系统总线150和外部通信总线之间的网桥170,所述外部通信总线例如USB总线、AppleDesktop总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、吉比特以太网总线、异步传送模式总线、HIPPI总线、超HIPPI总线、SerialPlus总线、SCI/LAMP总线、FibreChannel总线或串行附加小型计算机系统接口总线。
    【0072】图1E和1F中描述类型的计算装置100典型地在控制任务的调度和对系统资源的访问的操作系统的控制下操作。计算装置100可以运行任意操作系统,例如任意一种版本的微软操作系统、不同版本的Unix和Linux操作系统、用于Macintosh计算机的任意版本的Mac任意的嵌入式操作系统、任意的实时操作系统、任意的开放源操作系统、任意的专用操作系统、用于移动计算装置的任意操作系统、或者可以运行在计算装置上并执行此处所描述的操作的任意其它操作系统。典型的操作系统其中包括:WINDOWS3.x、WINDOWS 95、WI NDOWS 98、WINDOWS 2000、WINDOWS NT 3.51、WINDOWS NT 4.0、WINDOWS CE和WINDOWSXP,所有这些均由位于Redmond,Washington的微软公司出品;由位于Cupertino,California的苹果计算机出品的MacOS;由位于Armonk,NewYork的国际商业机器公司出品的OS/2;以及由位于Salt Lake City,Utah的Caldera公司发布的可免费使用的Linux操作系统或者任意类型和/或形式的Unix操作系统,以及其它。
    【0073】在其它实施例中,计算装置100可以具有和所述装置一致的不同的处理器、操作系统和输入装置。例如,在一个实施例中,计算机100是由Palm公司出品的Treo180、270、1060、600或650智能电话。在该实施例中,Treo智能电话在PalmOS操作系统的控制下操作,并包括指示笔输入装置以及五向导航装置。此外,计算装置100可以是任意工作站、台式计算机、膝上型或笔记本计算机、服务器、便携计算机、移动电话、任意其它计算机、或者可以通信并具有执行此处所描述的操作的足够的处理器能力和存储容量的其它形式的计算或电信装置。
    B.设备架构
    【0074】图2A举例说明了设备200的一个示例实施例。提供图2A中的设备200的架构仅仅是为了说明,并不是意于进行限制。如图2所示,设备200包括硬件层206和被分为用户空间202和内核空间204的软件层。
    【0075】硬件层206提供在其上执行内核空间204和用户空间202中的程序和服务的硬件元件。硬件层206还提供允许内核空间204和用户空间202中的程序和服务关于设备200的向内和向外传递数据的结构和元件。如图2所示,硬件层206包括用于执行软件程序和服务的处理单元262、用于保存软件和数据的存储器264、用于在网络上发送和接收数据的网络端口266以及用于执行与在网络上发送和接收的数据的安全套接字层处理相关的功能的加密处理器260。在一些实施例中,中央处理单元262可以在单个的处理器中执行加密处理器260的功能。另外,硬件层206可以包括用于每个处理单元262和加密处理器260的多个处理器。处理器262可以包括如上所述的与图1E和1F有关的任意处理器101。在一些实施例中,中央处理单元262可以在单个的处理器中执行加密处理器260的功能。另外,硬件层206可以包括用于每个处理单元262和加密处理器260的多个处理器。例如,在一个实施例中,设备200包括第一处理器262和第二处理器262′。在其它实施例中,处理器262或262′包括多核处理器。
    【0076】虽然通常所示设备200的硬件层206具有加密处理器260,但处理器260可以是用于执行与诸如安全套接字层(SSL)或传输层安全(TLS)协议的任意加密协议相关的功能的处理器。在一些实施例中,处理器260可以是通用处理器(GPP),并且在进一步的实施例中,可以具有用于执行任意安全相关协议的处理的可执行指令。
    【0076】虽然在图2中用某些元件来说明设备200的硬件层206,但设备200的硬件部分或部件可以包括计算装置的任意类型和形式的元件、硬件或软件,诸如此处结合图1E和1F来举例说明和讨论的计算装置100。在一些实施例中,设备200可以包括服务器、网关、路由器、交换机、网桥或其它类型的计算或网络装置,并具有与此相关的任意硬件和/或软件元件。
    【0077】设备200的操作系统将可用的系统存储器分配、管理或者以其他方式分离成内核空间204和用户空间204。在示例的软件架构200中,操作系统可以是任意类型和/或形式的Unix操作系统,尽管本发明并未这样限制。因而,设备200可以运行任意操作系统,例如任意一种版本的微软操作系统、不同版本的Unix和Linux操作系统、用于Macintosh计算机的任意版本的Mac任意的嵌入式操作系统、任意的网络操作系统、任意的实时操作系统、任意的开放源操作系统、任意的专用操作系统、用于移动计算装置或网络装置的任意操作系统、或者可以运行在设备200上并执行此处所描述的操作的任意其它操作系统。
    【0078】内核空间204被保留用于运行内核230,所述内核230包括任一设备驱动程序、内核扩展或其它内核相关软件。如本领域技术人员所知,内核230是操作系统的核心,并提供对应用104的资源和硬件相关的元件的访问、控制和管理。根据设备200的实施例,内核空间204还包括和有时还被称为集成高速缓存的高速缓存管理器232一起工作的多个网络服务或进程,此处进一步详细描述其有益之处。另外,内核230的实施例将依赖于由装置200所安装、配置或者以其他方式使用的操作系统的实施例。
    【0079】在一个实施例中,装置200包括诸如基于TCP/IP的堆栈的一个网络堆栈267,用于与客户机102和/或服务器106进行通信。在一个实施例中,网络堆栈267用于与诸如网络108的第一网络以及第二网络110进行通信。在一些实施例中,装置200终止诸如客户机102的TCP连接的第一传输层连接,并建立由客户机102使用的到服务器106的第二传输层连接,例如,第二传输层连接在设备200和服务器106处终止。第一和第二传输层连接可以经由单个的网络堆栈267建立。在其它实施例中,装置200可以包括例如267和267′的多个网络堆栈,并且第一传输层连接可以在一个网络堆栈267处建立或终止,而第二传输层连接在第二网络堆栈267′上建立或终止。例如,一个网络堆栈可以用于在第一网络上接收和发送网络分组,而另一个网络堆栈用于在第二网络上接收和发送网络分组。在一个实施例中,网络堆栈267包括用于对设备200发送的一个或多个网络分组排队的缓冲器243。
    【0080】如图2所示,内核空间204包括高速缓存管理器232、高速层2-7集成分组引擎240、加密引擎234、策略引擎236和多协议压缩逻辑238。在内核空间204或内核模式而不是用户空间202中单独以及组合地运行这些部件或进程232、240、234、236和238改进每一个这些部件的性能。内核操作意味着这些部件或进程232、240、234、236和238运行在装置200的操作系统的核心地址空间中。例如,在内核模式中运行加密引擎234通过将加密与解密操作移到内核来改善加密性能,从而减少在内核模式中的存储空间或内核线程与用户模式中的存储空间或线程之间的转换的次数。例如,可以不需要将内核模式中获得的数据传递或复制到运行在用户模式中的进程或线程,例如从内核级的数据结构到用户级的数据结构。在另一个方面,还减少了在内核模式与用户模式之间的上下文转换的次数。另外,在内核空间204中可以更有效地执行在任意一个部件或进程232、240、235、236和238之间通信和通信的同步。
    【0081】在一些实施例中,部件232、240、234、236和238的任意部分可以运行或操作在内核空间204中,而这些部件232、240、234、236和238的其它部分可以运行或操作在用户空间202中。在一个实施例中,设备200使用提供对一个或多个网络分组的任意部分的访问的内核级数据结构,例如,网络分组包括来自于客户机102的请求或来自于服务器106的响应。在一些实施例中,可以由分组引擎240经由到网络堆栈267的传输层驱动程序接口或过滤器来获得内核级数据结构。内核级数据结构可以包括可经由与网络堆栈267相关的内核空间204存取的任意接口和/或数据、由网络堆栈267接收或传送的网络业务量或分组。在其它实施例中,可以由部件或进程232、240、234、236和238中的任意一个来使用内核级数据结构,以执行部件或进程的期望的操作。在一个实施例中,部件232、240、234、236和238在使用内核级数据结构时运行于内核模式204中,而在另一个实施例中,部件232、240、234、236和238在使用内核级数据结构时运行于用户模式中。在一些实施例中,可以将内核级数据结构复制或传递到第二内核级数据结构或任意期望的用户级数据结构。
    【0082】高速缓存管理器232可以包括软件、硬件或软件和硬件的任意组合,以提供对诸如由发信服务器106提供的对象或动态生成的对象的任意类型和形式的内容的高速缓存访问、控制和管理。由高速缓存管理器232处理和保存的数据、对象或内容可以包括诸如标记语言的或者通过任意协议传达的任意格式的数据。在一些实施例中,高速缓存管理器232复制存储在别处的原始数据或者以前计算、生成或发送的数据,其中原始数据也许需要相对于读取高速缓存元件来说更长的访问时间以取出、计算或者以其他方式获取。一旦数据被保存在高速缓存元件中,未来的使用可以通过访问高速缓存的拷贝而不是重新取回或再计算原始数据来进行,从而减少访问时间。在一些实施例中,高速缓存元件可以包括装置200的存储器264中的数据对象。在其它实施例中,高速缓存元件可以包括具有比存储器264更快的访问时间的存储器。在另一个实施例中,高速缓存元件可以包括诸如硬盘的一部分的装置200的任意类型和形式的存储元件。在一些实施例中,处理单元262可以提供由高速缓存管理器232使用的高速缓存。然而在进一步的实施例中,高速缓存管理器232可以使用存储器、存储装置或处理单元的任意部分和组合,以用于高速缓存数据、对象及其它内容。
    【0083】进一步地,高速缓存管理器232包括任意逻辑、功能、规则或操作,以执行此处所描述的设备200的技术的任意实施例。例如,高速缓存管理器232包括根据失效时间周期的期满或一旦从客户机102或服务器106接收到失效命令来使对象无效的逻辑或功能。在一些实施例中,高速缓存管理器232可以作为在内核空间204中执行的程序、服务、进程或任务来操作,而在其它实施例中是在用户空间202中操作。在一个实施例中,高速缓存管理器232的第一部分在用户空间202中执行,而第二部分在内核空间204中执行。在一些实施例中,高速缓存管理器232可以包括任意类型的通用处理器(GPP)或者诸如现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)或专用集成电路(ASIC)的任意其它类型的集成电路。
    【0084】例如,策略引擎236可以包括智能统计引擎或者其它的可编程应用。在一个实施例中,策略引擎236提供配置机制以允许用户标识、指定、限定或配置高速缓存策略。在一些实施例中,策略引擎236还可以访问存储器以支持诸如查找表或哈希表的数据结构来启用用户选择的高速缓存策略决策。在其它实施例中,策略引擎236可以包括任意逻辑、规则、功能或操作,以便确定和提供除了由设备200执行的安全、网络业务量、网络访问、压缩或任意其它功能或操作的访问、控制和管理之外的由设备200高速缓存的对象、数据或内容的访问、控制和管理。此处进一步描述特定高速缓存策略的进一步的实例。
    【0085】在一些实施例中,策略引擎236可以提供配置机制以允许用户标识、指定、限定或配置指导包括但不限于图2B中描述的诸如vServers 275、VPN功能280、内联网IP功能282、交换功能284、DNS功能286、加速功能288、应用防火墙功能290和监控代理197的部件的设备的任意其它部件或功能的行为的策略。在其它实施例中,策略引擎236可以响应于任意配置的策略来进行检查、评价、实现或者以其他方式产生作用,并且还可以响应于策略来指导一个或多个设备功能的操作。
    【0086】加密引擎234包括用于操控诸如SSL或TLS的任意安全相关协议的处理的任意逻辑、商业规则、功能或操作,或者另外的任意相关功能。例如,加密引擎234加密并解密经由设备200传递的网络分组或者其中的任意部分。加密引擎234还可以为客户机102a-102n、服务器106a-106n或设备200设置或建立SSL或TLS连接。因而,加密引擎234提供SSL处理的卸载和加速。在一个实施例中,加密引擎234使用隧道协议来在客户机102a-102n和服务器106a-106n之间提供虚拟专用网。在一些实施例中,加密引擎234与加密处理器260进行通信。在其它实施例中,加密引擎234包括运行在加密处理器260上的可执行指令。
    【0087】多协议压缩引擎238包括用于压缩诸如由装置200的网络堆栈267使用的任意一种协议的一个或多个协议的网络分组的任意逻辑、商业规则、功能或操作。在一个实施例中,多协议压缩引擎238双向地在客户机102a-102n和服务器106a-106n之间压缩任意的基于TCP/IP的协议,包括消息应用编程接口(MAPI)(电子邮件)、文件传送协议(FTP)、超文本传送协议(HTTP)、通用Internet文件系统(CIFS)协议(文件传送)、独立计算架构(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议和IP上语音(VoIP)协议。在其它实施例中,多协议压缩引擎238提供基于超文本标记语言(HTML)的协议的压缩,并且在一些实施例中提供诸如可扩展标记语言(XML)的任意标记语言的压缩。在一个实施例中,多协议压缩引擎238提供诸如为设备200设计用于设备200通信的的任意协议的任意高性能协议的压缩。在另一个实施例中,多协议压缩引擎238使用修改的传输控制协议来压缩任意通信的任意有效载荷或任意通信,所述修改的传输控制协议诸如事务TCP(T/TCP)、具有选择确认的TCP(TCP-SACK)、具有大窗口的TCP(TCP-LW)、诸如TCP-Vegas协议的拥塞预测协议以及TCP欺骗协议。
    【0088】因而,多协议压缩引擎238为经由桌面客户机以及甚至移动客户机访问应用的用户加速性能,所述桌面客户机例如微软Outlook以及诸如由诸如Oracle、SAP和Siebel的通用的企业应用所启动的任意客户机的非web瘦客户机,所述移动客户机例如掌上电脑。在一些实施例中,通过执行于内核模式204中以及与访问网络堆栈267的分组处理引擎240结合在一起,多协议压缩引擎238可以压缩诸如任意应用层协议的由TCP/IP协议所携带的任意一种协议。
    【0089】通常也被称为分组处理引擎或分组引擎的高速层2-7集成分组引擎240负责管理由设备200经由网络端口266接收和发送的分组的内核级处理。高速层2-7集成分组引擎240可以包括用于在例如接收网络分组或发送网络分组的处理期间排队一个或多个网络分组的缓冲器。另外,高速层2-7集成分组引擎240与一个或多个网络堆栈267通信以经由网络端口266发送和接收网络分组。高速层2-7集成分组引擎240和加密引擎234、高速缓存管理器232、策略引擎236和多协议压缩逻辑238一起工作。更具体地,加密引擎234被配置为执行分组的SSL处理,策略引擎236被配置为执行诸如请求级内容交换和请求级高速缓存重定向的与业务量管理相关的功能,而多协议压缩逻辑238被配置为执行与数据的压缩和解压缩相关的功能。
    【0090】高速层2-7集成分组引擎240包括分组处理定时器242。在一个实施例中,分组处理定时器242提供一个或多个时间间隔以触发输入(即,接收)或输出(即,发送)网络分组的处理。在一些实施例中,高速层2-7集成分组引擎240响应于定时器242来处理网络分组。分组处理定时器242提供任意类型和形式的信号给分组引擎240,以通知、触发或传达时间相关的事件、间隔或发生。在许多实施例中,分组处理定时器242以例如像100毫秒、50毫秒或25毫秒这样的毫秒级来进行操作。例如,在一些实施例中,分组处理定时器242提供时间间隔或者以其他方式使高速层2-7集成分组引擎240以10毫秒的时间间隔来处理网络分组,而在其它实施例中按5毫秒的时间间隔,以及甚至在更进一步的实施例中短到3、2或1毫秒的时间间隔。在操作期间,高速层2-7集成分组引擎240可以与加密引擎234、高速缓存管理器232、策略引擎236和多协议压缩引擎238交互、集成或通信。因而,可以响应于分组处理定时器242和/或分组引擎240来执行加密引擎234、高速缓存管理器232、策略引擎236和多协议压缩逻辑238的任意逻辑、功能或操作。因此,可以以例如小于或等于10毫秒的时间间隔的通过分组处理定时器242提供的时间间隔的粒度来执行加密引擎234、高速缓存管理器232、策略引擎236和多协议压缩逻辑238的任意逻辑、功能或操作。例如,在一个实施例中,高速缓存管理器232可以响应于高速层2-7集成分组引擎240和/或分组处理定时器242来执行任意高速缓存对象的失效。在另一个实施例中,可以将高速缓存对象的满期或失效时间设置为与分组处理定时器242的时间间隔相同的粒度级,例如每10毫秒。
    【0091】与内核空间204不同,用户空间202是由用户模式应用或者以其他方式运行于用户模式的程序所使用的存储器区域或部分操作系统。用户模式应用可以不直接访问内核空间204而使用服务调用以访问内核服务。如图2所示,设备200的用户空间202包括图形用户界面(GUI)210、命令行接口(CLI)212、命令解释程序(shell)服务214、健康监测程序216和守护服务218。GUI 210和CLI 212提供一个装置,通过所述装置,系统管理员或其它用户可以与设备200的操作相互作用并控制设备200的操作,例如通过设备200的操作系统,并且两者之一是用户空间202或内核空间204。GUI 210可以是任意类型和形式的图形用户界面,并且可以通过文本、图形或者以其他方式通过像浏览器的任意类型的程序或应用来呈现。CLI 212可以是任意类型和形式的命令行或基于文本的接口,例如由操作系统提供的命令行。例如,CLI 212可以包括命令解释程序,所述命令解释程序是允许用户与操作系统相互作用的工具。在一些实施例中,CLI 212可以通过bash、csh、tcsh或ksh型命令解释程序来提供。命令解释程序服务214包括程序、服务、任务、进程或可执行指令以支持用户通过GUI 210和/或CLI 212与设备200或操作系统相互作用。
    【0092】健康监测程序216被用于监控、检查、报告和确保网络系统在正常工作以及用户通过网络接收所请求的内容。健康监测程序216包括一个或多个程序、服务、任务、进程或可执行指令以提供用于监测设备200的任意活动的逻辑、规则、功能或操作。在一些实施例中,健康监测程序216拦截并检查经由设备200传递的任意网络业务量。在其它实施例中,健康监测程序216通过任意合适的方法和/或机制与一个或多个下列单元连接:加密引擎234、高速缓存管理器232、策略引擎236、多协议压缩逻辑238、分组引擎240、守护服务218和命令解释程序服务214。因而,健康监测程序216可以调用任意应用编程接口(API)以确定设备200的任意部分的状态、状况或健康。例如,健康监测程序216可以周期性地查验或发送一个情况查询以检测程序、进程、服务或任务是否有效以及当前正在运行。在另一个实例中,健康监测程序216可以检查由任意程序、进程、服务或任务提供的任意状态、错误或历史记录,以确定设备200的任意部分的任意情况、状态或错误。
    【0093】守护服务218是连续或在后台运行并处理由设备200接收到的周期性服务请求的程序。在一些实施例中,守护服务可以将请求转发给其它程序或进程,例如酌情转发给另一个守护服务218。如本领域技术人员所知,守护服务218可以无人监护地运行以执行诸如网路控制的连续的或周期性的全系统的功能或者执行任意期望的任务。在一些实施例中,一个或多个守护服务218运行在用户空间202中,而在其它实施例中,一个或多个守护服务218运行在内核空间中。
    【0094】现在参考图2B,描述了设备200的另一个实施例。总的来说,设备200提供下列服务、功能或操作中的一个或多个:用于一个或多个客户机102以及一个或多个服务器106之间的通信的SSL VPN连通性280、交换/负载平衡284、域名服务解析286、加速288和应用防火墙290。每个服务器106可以提供一个或多个网络相关的服务270a-270n(称为服务270)。例如,服务器106可以提供http服务270。设备200包括一个或多个虚拟服务器或虚拟网际协议服务器,其被称为vServer、VIP服务器或仅仅称为VIP 275a-275n(此处也被称为vServer 275)。vServer275根据设备200的配置和操作来接收、拦截或者以其他方式处理客户机102和服务器106之间的通信。
    【0095】vServer 275可以包括软件、硬件或软件和硬件的任意组合。vServer 275可以包括在设备200中的用户模式202、内核模式204中或其任意组合中操作的任意类型和形式的程序、服务、任务、进程或可执行指令。vServer 275包括任意逻辑、功能、规则或操作以执行此处所描述的技术的任意实施例,例如SSL VPN 280、交换/负载平衡284、域名服务解析286、加速288和应用防火墙290。在一些实施例中,vServer 275建立到服务器106的服务270的连接。服务275可以包括可以连接和通信到设备200、客户机102或vServer 275的任意程序、应用、进程、任务或可执行指令组。例如,服务275可以包括web服务器、http服务器、ftp、电子邮件或数据库服务器。在一些实施例中,服务270是用于监听、接收和/或发送用于诸如电子邮件、数据库或企业应用的应用的通信的守护进程或网络驱动程序。在一些实施例中,服务270可以在一个特定IP地址或IP地址和端口上进行通信。
    【0096】在一些实施例中,vServer 275将策略引擎236的一个或多个策略应用到客户机102和服务器106之间的网络通信。在一个实施例中,策略与VServer 275有关。在另一个实施例中,策略基于一个用户或一组用户。在又一个实施例中,策略是全局的并且应用到一个或多个vServers 275a-275n以及经由设备200通信的任意用户或用户组。在一些实施例中,策略引擎的策略有条件,在所述条件时根据诸如网际协议地址、端口、协议类型、报头或分组中的字段的通信的任意内容或者诸如用户、用户组、vServer 275、传输层连接和/或客户机102或服务器106的标识或属性的通信上下文来应用策略。
    【0097】在其它实施例中,设备200与策略引擎236通信或连接以确定对远程用户或远程客户机102访问服务器106的计算环境15、应用和/或数据文件的验证和/或授权。在另一个实施例中,设备200与策略引擎236通信或连接以确定对远程用户或远程客户机102的验证和/或授权,以使应用递送系统190递送计算环境15、应用和/或数据文件的一个或多个。在又一个实施例中,设备200根据策略引擎236对远程用户或远程客户机103的验证和/或授权来建立VPN或SSL VPN连接。在一个实施例中,设备102根据策略引擎236的策略来控制网络业务量和通信会话的流量。例如,设备200可以根据策略引擎236来控制对计算环境15、应用或数据文件的访问。
    【0098】在一些实施例中,vServer 275建立诸如经由客户机代理120与客户机102的TCP或UDP连接的传输层连接。在一个实施例中,vServer 275监听并接收来自于客户机102的通信。在其它实施例中,vServer 275与客户服务器106建立诸如TCP或UDP连接的传输层连接。在一个实施例中,vServer 275建立到运行在服务器106上的服务器270的网际协议地址和端口的传输层连接。在另一个实施例中,vServer 275将到客户机102的第一传输层连接与到服务器106的第二传输层连接关联起来。在一些实施例中,vServer 275建立到服务器106的传输层连接池并多路复用经由所述池化的传输层连接的客户机请求。
    【0099】在一些实施例中,设备200提供在客户机102和服务器106之间的SSL VPN连接280。例如,第一网络102上的客户机102请求建立到第二网络104′上的服务器106的连接。在一些实施例中,第二网络104′是不可从第一网络104路由的。在其它实施例中,客户机102在公用网104上,而服务器106在诸如公司网的专用网104′上。在一个实施例中,客户机代理120拦截第一网络104上的客户机102的通信,加密所述通信,并经由第一传输层连接发送所述通信到设备200。设备200将第一网络104上的第一传输层连接关联到第二网络104上的到服务器106的第二传输层连接。设备200从客户机代理102接收被拦截的通信,解密所述通信,并经由第二传输层连接发送所述通信到第二网络104上的服务器106。第二传输层连接可以是池化的传输层连接。因而,设备200提供在两个网络104和104′之间用于客户机102的端到端安全传输层连接。
    【0100】在一个实施例中,设备200在虚拟专用网104上寄载客户机102的内联网网际协议或内联网IP 282地址。客户机102具有诸如第一网络104上的网际协议(IP)地址和/或主机名的本地网络标识符。当经由设备200连接到第二网络104′时,设备200在第二网络104′上为客户机102建立、分配或者以其他方式提供内联网IP,其是诸如IP地址和/或主机名的网络标识符。使用客户机的建立的内联网IP 282,设备200在第二或专用网104′上监听并接收指向客户机102的任意通信。在一个实施例中,设备200在第二专用网104上充当或代表客户机102。例如,在另一个实施例中,vServer 275监听并响应到客户机102的内联网IP282的通信。在一些实施例中,如果第二网络104′上的计算装置100发送请求,则设备200处理所述请求就像它是客户机102一样。例如,设备200可以响应到客户机的内联网IP 282的查验。在另一个实例中,设备可以与第二网络104上的请求与客户机的内联网IP 282连接的计算装置100建立诸如TCP或UDP连接的连接。
    【0101】在一些实施例中,设备200提供下列一个或多个加速技术288来在客户机102和服务器106之间进行通信:1)压缩;2)解压缩;3)传输控制协议池;4)传输控制协议多路复用;5)传输控制协议缓冲;以及6)高速缓存。在一个实施例中,设备200通过打开与每个服务器106的一个或多个传输层连接并维持这些连接以允许客户机经由因特网的重复数据访问来减轻服务器106的通过反复打开和关闭到客户机102的传输层连接所造成的大量处理负载。这个技术在这里被称为“连接池”。
    【0102】在一些实施例中,为了经由池化的传输层连接来无缝接合从客户机102到服务器106的通信,设备200通过在传输层协议级修改序号和确认号来转换或多路复用通信。这被称为“连接多路复用”。在一些实施例中,不需要应用层协议相互作用。例如,在入站分组(即,自客户机102接收的分组)的情况中,所述分组的源网络地址被改变为设备200的输出端口的网络地址,而目的网络地址被改变为预期的服务器的网络地址。在出站分组(即,自服务器106接收的一个分组)的情况中,源网络地址被从服务器106的网络地址改变为设备200的输出端口的网络地址,而目的地址被从设备200的网络地址改变为请求的客户机102的网络地址。所述分组的序号和确认号也被转换为到客户机102的设备200的传输层连接上的客户机102所期待的序号和确认。在一些实施例中,传输层协议的分组校验和被重新计算以解释这些转换。
    【0103】在另一个实施例中,设备200为客户机102和服务器106之间的通信提供交换或负载平衡功能284。在一些实施例中,设备200根据层4或应用层请求数据来分配业务量并将客户机请求指向服务器106。在一个实施例中,虽然网络分组的网络层或层2标识了目的服务器106,但设备200通过作为传输层分组的有效载荷而携带的应用信息和数据来确定服务器106以分配网络分组。在一个实施例中,设备200的健康监测程序216监控服务器的健康以确定为其分配客户机的请求的服务器106。在一些实施例中,如果设备200探测到服务器106不可用或具有超过预定阈值的负载,则设备200可以将客户机请求指向或分配到另一个服务器106。
    【0104】在一些实施例中,设备200充当域名服务(DNS)解析器或者以其他方式提供来自于客户机102的DNS请求的解析。在一些实施例中,设备拦截由客户机102发送的DNS请求。在一个实施例中,设备200响应具有设备200的IP地址或由设备200寄载的IP地址的客户机DNS请求。在该实施例中,客户机102发送用于域名的网络通信到设备200。在另一个实施例中,设备200响应具有第二设备200′的IP地址或由第二设备200′寄载的IP地址的客户机的DNS请求。在一些实施例中,设备200响应具有由设备200确定的服务器106的IP地址的客户机的DNS请求。
    【0105】在又一个实施例中,设备200为客户机102和服务器106之间的通信提供应用防火墙功能290。在一个实施例中,策略引擎236提供用于检测和阻塞非法请求的规则。在一些实施例中,应用防火墙290防止拒绝服务(DoS)攻击。在其它实施例中,设备检查被拦截的请求的内容以识别和阻塞基于应用的攻击。在一些实施例中,规则/策略引擎236包括用于提供对多个种类和类型的基于web或因特网的脆弱点的保护的一个或多个应用防火墙或安全控制策略,例如下列的一个或多个:1)缓冲器溢出,2)CGI-BIN参数操纵,3)格式/隐藏字段操纵,4)强制浏览,5)cookie或会话中毒,6)破译的访问控制表(ACLs)或弱的口令,7)跨站点的脚本(XSS),8)命令注入,9)SQL注入,10)错误触发感测信息泄漏,11)不安全的使用加密技术,12)服务器误配置,13)后门和调试选择,14)web站点毁损,15)平台或操作系统的脆弱点,以及16)零天攻击。在一个实施例中,对下列情况的一种或多种应用防火墙290以检查或分析网络通信的形式来提供HTML格式字段的保护:1)返回所需的字段,2)不允许附加字段,3)只读和隐藏字段强制(enforcement),4)下拉列表和单选按钮字段的一致,以及5)格式字段最大长度强制。在一些实施例中,应用防火墙290确保cookies不被修改。在其它实施例中,应用防火墙290通过强制实施合法URL来防止强制浏览。
    【0106】还是在其它实施例中,应用防火墙290保护在网络通信中包含的任意机密信息。应用防火墙290可以根据引擎236的规则或策略来检查或分析任意网络通信以识别在网络分组的任意字段中的任意机密信息。在一些实施例中,应用防火墙290在网络通信中识别信用卡号、口令、社会保险号、姓名、病人代码、联系信息和年龄的一次或多次出现。网络通信的编码部分可以包括这些出现或机密信息。在一个实施例中,根据这些出现,应用防火墙290可以在网络通信上对策略采取行动,例如阻止网络通信的发送。在另一个实施例中,应用防火墙290可以重写、移除或者以其他方式掩盖这样识别出的出现或机密信息。
    【0107】仍然参考图2B,设备200可以包括如上面结合图1D所讨论的性能监控代理197。在一个实施例中,设备200从如图1D中所描述的监控业务198或监控服务器106中接收监控代理197。在一些实施例中,设备200在诸如磁盘的存储装置中保存监控代理197,以用于递送给与设备200通信的任意客户机或服务器。例如,在一个实施例中,设备200在接收到建立传输层连接的请求时发送监控代理197给客户机。在其它实施例中,设备200在建立与客户机102的传输层连接时发送监控代理197。在另一个实施例中,设备200在拦截或检测对web页面的请求时发送监控代理197给客户机。在又一个实施例中,设备200响应于监控服务器198的请求来发送监控代理197到客户机或服务器。在一个实施例中,设备200发送监控代理197到第二设备200′或设备205。
    【0108】在其它实施例中,设备200执行监控代理197。在一个实施例中,监控代理197测量和监控在设备200上执行的任意应用、程序、进程、服务、任务或线程的性能。例如,监控代理197可以监控和测量vServers 275A-275N的性能与操作。在另一个实施例中,监控代理197测量和监控设备200的任意传输层连接的性能。在一些实施例中,监控代理197测量和监控通过设备200的任意用户会话的性能。在一个实施例中,监控代理197测量和监控通过设备200的诸如SSL VPN会话的任意虚拟专用网连接和/或会话的性能。在进一步的实施例中,监控代理197测量和监控设备200的存储器、CPU和磁盘使用以及性能。在又一个实施例中,监控代理197测量和监控诸如SSL卸载、连接池和多路复用、高速缓存以及压缩的由设备200执行的任意加速技术288的性能。在一些实施例中,监控代理197测量和监控由设备200执行的任意负载平衡和/或内容交换284的性能。在其它实施例中,监控代理197测量和监控由设备200执行的应用防火墙290保护和处理的性能。
    C.客户机代理
    【0109】现在参考图3,描述了客户机代理120的一个实施例。客户机102包括用于经由网络104与设备200和/或服务器106建立和交换通信的客户机代理120。简单概述,客户机102在计算装置100上操作,所述计算装置100具有带有内核模式302和用户模式303的操作系统以及带有一个或多个层310a-310b的网络堆栈310。客户机102已经安装和/或执行一个或多个应用。在一些实施例中,一个或多个应用可以经由网络堆栈310传递到网络104。诸如web浏览器的一个应用还可以包括一个第一程序322。例如,第一程序322可以被用于在一些实施例中安装和/或执行客户机代理120或者其任意部分。客户机代理120包括用于从一个或多个应用中拦截来自于网络堆栈310的网络通信的拦截机制或拦截器350。
    【0110】客户机102的网络堆栈310可以包括任意类型和形式的软件或硬件或其任意组合,以用于提供到网络的连通性以及与网络的通信。在一个实施例中,网络堆栈310包括用于网络协议套件的软件实现。网络堆栈310可以包括一个或多个网络层,例如如本领域技术人员所认识和理解的开放系统互连(OSI)通信模型的任意网络层。因而,网络堆栈310可以包括用于下列OSI模型的任意一层的任意类型和形式的协议:1)物理链路层,2)数据链路层,3)网络层,4)传输层,5)会话层,6)表示层以及7)应用层。在一个实施例中,网络堆栈310可以包括在网际协议(IP)的网络层协议上的传输控制协议(TCP),通常被称为TCP/IP。在一些实施例中,可以在以太网协议上携带TCP/IP协议,所述以太网协议可以包括诸如由IEEE 802.3所覆盖的那些协议的IEEE广域网(WAN)或局域网(LAN)协议的任意族。在一些实施例中,网络堆栈310包括诸如IEEE 802.11和/或移动网际协议的任意类型和形式的无线协议。
    【0111】考虑到基于TCP/IP的网络,可以使用任意基于TCP/IP的协议,包括消息应用编程接口(MAPI)(电子邮件)、文件传送协议(FTP)、超文本传送协议(HTTP)、通用Internet文件系统(CIFS)协议(文件传送)、独立计算架构(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议和IP上语音(VoIP)协议。在另一个实施例中,网络堆栈310包括诸如修改的传输控制协议的任意类型和形式的传输控制协议,例如事务TCP(T/TCP)、具有选择确认的TCP(TCP-SACK)、具有大窗口的TCP(TCP-LW)、诸如TCP-Vegas协议的拥塞预测协议以及TCP欺骗协议。在其它实施例中,网络堆栈310可以使用诸如IP上UDP的任意类型和形式的用户数据报协议(UDP),例如用于音频通信或实时数据通信。
    【0112】进一步,网络堆栈310可以包括诸如TCP驱动程序或网络层驱动程序的支持一个或多个层的一个或多个网络驱动程序。网络驱动程序可以被包括作为计算装置100的操作系统的一部分或作为计算装置100的任意网络接口卡或其它网络访问部件的一部分。在一些实施例中,网络堆栈310的任意一种网络驱动程序可以被定制、修改或改变以提供支持此处描述的任意技术的网络堆栈310的定制或修改部分。在其它实施例中,加速程序120被设计和构造以和由客户机102的操作系统所安装或者以其他方式提供的网络堆栈310一起操作或联合工作。
    【0113】网络堆栈310包括用于接收、获取、提供或者以其他方式访问与客户机102的网络通信相关的任意信息和数据的任意类型和形式的接口。在一个实施例中,到网络堆栈310的接口包括应用编程接口(API)。接口还可以包括任意函数调用、挂钩或过滤机制、事件或回叫机制、或任意类型的连接技术。网络堆栈310经由接口可以接收或提供诸如对象的与网络堆栈310的功能或操作相关的任意类型和形式的数据结构。例如,数据结构可以包括与网络分组相关的信息和数据或者一个或多个网络分组。在一些实施例中,数据结构包括诸如传输层的网络分组的在网络堆栈310的协议层处理的网络分组的一部分。在一些实施例中,数据结构325包括内核级数据结构,而在其它实施例中,数据结构325包括用户模式数据结构。内核级数据结构可以包括获得的或与在内核模式302中操作的网络堆栈310的一部分相关的数据结构、或者运行在内核模式302中的网络驱动程序或其它软件、或者由运行或操作在操作系统的内核模式中的服务、进程、任务、线程或其它可执行指令获得或收到的任意数据结构。
    【0114】另外,例如数据链路或网络层的网络堆栈310的一些部分可以执行或操作于内核模式302,而诸如网络堆栈310的应用层的其它部分执行或操作在用户模式303中。例如,网络堆栈的第一部分310a可以给应用提供对网络堆栈310的用户模式访问,而网络堆栈310的第二部分310a提供对网络的访问。在一些实施例中,网络堆栈的第一部分310a可以包括诸如层5-7中的任意一个的网络堆栈310的一个或多个较上的层。在其它实施例中,网络堆栈310的第二部分310b包括诸如层1-4中的任意一个这样的一个或多个较低的层。网络堆栈310的第一部分310a和第二部分310b中的每一个可以包括网络堆栈310的任意部分,在任意一个或多个网络层,在用户模式203、内核模式202或其组合中,或者在网络层的任意部分或网络层的接口点或用户模式203和内核模式203的任意部分或接口点。
    【0115】拦截器350可以包括软件、硬件或软件和硬件的任意组合。在一个实施例中,拦截器350在网络堆栈310中的任一点拦截网络通信,并且将所述网络通信重定向或发送到被拦截器350或客户机代理120所期望、管理或控制的目的地。例如,拦截器350可以拦截第一网络的网络堆栈310的网络通信并发送网络通信给设备200以用于在第二网络104上的传输。在一些实施例中,拦截器350包括含有驱动器的任意类型拦截器350,诸如被构造和设计为与网络堆栈310连接和工作的网络驱动程序。在一些实施例中,客户机代理120和/或拦截器350在诸如传输层处的网络堆栈310的一个或多个层操作。在一个实施例中,拦截器350包括过滤器驱动程序、挂钩机制或任意格式和类型的适当的网络驱动程序接口,所述接口例如经由传输驱动程序接口(TDI)来联接于网络堆栈的传输层。在一些实施例中,拦截器350联接于诸如传输层的第一协议层以及诸如传输协议层之上的任意层的例如应用协议层的另一个协议层。在一个实施例中,拦截器350可以包括遵照网络驱动程序接口规范(NDIS)的驱动程序或NDIS驱动程序。在另一个实施例中,拦截器350可以包括小过滤器(min-filter)或迷你端口(mini-port)驱动程序。在一个实施例中,拦截器350或者其部分操作于内核模式202中。在另一个实施例中,拦截器350或者其部分操作于用户模式203中。在一些实施例中,拦截器350的一部分操作于内核模式202中,而拦截器350的另一部分操作于用户模式203中。在其它实施例中,客户机代理120操作于用户模式203中,但经由拦截器350连接到内核模式驱动程序、进程、服务、任务或一部分操作系统,以便获得内核级数据结构225。在进一步的实施例中,拦截器350是诸如应用的用户模式应用或程序。
    【0116】在一个实施例中,拦截器350拦截任意的传输层连接请求。在这些实施例中,拦截器350执行传输层应用编程接口(API)调用以对于该位置设置目的信息,诸如所期望的位置的目的地IP地址和/或端口。以此方式,拦截器350拦截并重定向传输层连接到由拦截器350或客户机代理120控制或管理的IP地址和端口。在一个实施例中,拦截器350为到客户机102的本地IP地址和端口的连接设置目的地信息,客户机代理120在客户机102的本地IP地址和端口上进行监听。例如,客户机代理120可以包括在用于重定向的传输层通信的本地IP地址和端口上监听的代理服务。在一些实施例中,客户机代理120随后传达重定向的传输层通信到设备200。
    【0117】在一些实施例中,拦截器350拦截域名服务(DNS)请求。在一个实施例中,客户机代理120和/或拦截器350解析DNS请求。在另一实施例中,拦截器发送被拦截的DNS请求到设备200以用于DNS解析。在一个实施例中,设备200解析DNS请求并传达DNS响应给客户机代理120。在一些实施例中,设备200解析经由另一设备200′或DNS服务器106的DNS请求。
    【0118】在又一个实施例中,客户机代理120可以包括两个代理120和120′。在一个实施例中,第一代理120可以包括操作于网络堆栈310的网络层的拦截器350。在一些实施例中,第一代理120拦截诸如因特网控制消息协议(ICMP)请求(例如,查验和跟踪路由)的网络层请求。在其它实施例中,第二代理120′可以在传输层操作并拦截传输层通信。在一些实施例中,第一代理120拦截在网络堆栈210的一层处的通信,并与第二代理120′连接或传达被拦截的通信到第二代理120′。
    【0119】客户机代理120和/或拦截器350可以相对于网络堆栈310的任意其它协议层透明的方式操作于协议层或与协议层连接。例如,在一个实施例中,拦截器350相对于诸如网络层的传输层之下的任意协议层以及诸如会话、表示或应用层协议的传输层之上的任意协议层透明地来操作网络堆栈310的传输层或与其连接。这允许网络堆栈310的其它协议层按意愿地操作而不用修改来使用拦截器350。因而,客户机代理120和/或拦截器350可以与传输层交互以保护、优化、加速、路由或负载平衡经由诸如TCP/IP之上的任意应用层协议的通过传输层携带的任意协议提供的任意通信。
    【0120】进一步地,客户机代理120和/或拦截器可以相对于任意应用、客户机102的用户以及诸如与客户机102通信的服务器的任意其它计算装置透明的方式来操作于网络堆栈310或与网络堆栈310连接。客户机代理120和/或拦截器350可以以一定方式安装和/或执行于客户机102上而不修改应用。在一些实施例中,客户机102或与客户机102通信的计算装置的用户不知道客户机代理120和/或拦截器350的存在、执行或操作。因而,在一些实施例中,相对于应用、客户机102的用户、诸如服务器的另一个计算装置、或者在由拦截器350联接的协议层之上和/或之下的任意协议层透明地来安装、执行和/或操作客户机代理120和/或拦截器350。
    【0121】客户机代理120包括加速程序302、流客户机306、收集代理304和/或监控代理197。在一个实施例中,客户机代理120包括由位于Fort Lauderdale,Florida的Citrix Syestems公司开发的独立计算架构(ICA)客户机或者其任意部分,并且还被称为ICA客户机。在一些实施例中,客户机120包括用于将应用从服务器106流式传输到客户机102的应用流客户机306。在一些实施例中,客户机代理120包括用于加速客户机102和服务器106之间的通信的加速程序302。在另一个实施例中,客户机代理120包括用于执行端点检测/扫描以及为设备200和/或服务器106收集端点信息的收集代理304。
    【0122】在一些实施例中,加速程序302包括用于执行一个或多个加速技术的客户机侧加速程序,以加速、增强或者以其他方式改善客户机与服务器106的通信和/或诸如访问由服务器106提供的应用的对服务器106的访问。加速程序302的可执行指令的逻辑、功能和/或操作可以执行一个或多个的下列加速技术:1)多协议压缩,2)传输控制协议池,3)传输控制协议多路复用,4)传输控制协议缓冲,以及5)经由高速缓存管理器的高速缓存。另外,加速程序302可以执行对由客户机102接收和/或发送的任意通信的加密和/或解密。在一些实施例中,加速程序302以集成的方法或方式来执行一个或多个加速技术。另外,加速程序302可以在被携带为传输层协议的网络分组的有效载荷的任意协议或多个协议上执行压缩。
    【0123】流客户机306包括用于接收和执行来自于服务器106的流式传输的应用的应用、程序、进程、服务、任务或可执行指令。服务器106可以将一个或多个应用数据文件流式传输到流客户机306,以用于在客户机102上播放、执行所述应用或者以其他方式使所述应用被执行。在一些实施例中,服务器106发送一组压缩的或封装的应用数据文件到流客户机306。在一些实施例中,多个应用文件在文件服务器上被压缩和存储在诸如CAB、ZIP、SIT、TAR、JAR或其它档案(archive)的档案文件中。在一个实施例中,服务器106解压缩、解封装或解档(unarchives)应用文件,并发送所述文件到客户机102。在另一个实施例中,客户机102解压缩、解封装或解档应用文件。流客户机306动态地安装应用或其中的部分,并执行应用。在一个实施例中,流客户机306可以是可执行程序。在一些实施例中,流客户机306可以运行另一个可执行程序。
    【0124】收集代理304包括用于识别、获得和/或收集关于客户机102的信息的应用、程序、进程、服务、任务或可执行指令。在一些实施例中,设备200发送收集代理304到客户机102或客户机代理120。可以根据设备的策略引擎236的一个或多个策略来配置收集代理304。在其它实施例中,收集代理304发送收集的有关客户机102的信息给设备200。在一个实施例中,设备200的策略引擎236使用收集的信息来确定并提供对客户机到网络104的连接的访问、验证和授权控制。
    【0125】在一个实施例中,收集代理304包括端点检测和扫描机制,其识别和确定客户机的一个或多个属性或特性。例如,收集代理304可以识别和确定任意一个或多个以下的客户机侧属性:1)操作系统和/或操作系统的版本,2)操作系统的服务包,3)运行的服务,4)运行的进程,和5)文件。收集代理304还可以识别和确定客户机上的任意一个或多个下列软件的存在或版本:1)防病毒软件,2)个人防火墙软件,3)反垃圾邮件软件,和4)因特网安全软件。策略引擎236可以具有根据客户机或客户机侧属性的任意一个或多个属性或特性的一个或多个策略。
    【0126】在一些实施例中,客户机代理120包括如结合图1D和2B所讨论的监控代理197。监控代理197可以是诸如Visual Basic或Java脚本的任意类型和形式的脚本。在一个实施例中,监控代理129监控和测量任意部分的客户机代理120的性能。例如,在一些实施例中,监控代理129监控和测量加速程序302的性能。在另一个实施例中,监控代理129监控和测量流客户机306的性能。在其它实施例中,监控代理129监控和测量收集代理304的性能。在又一个实施例中,监控代理129监控和测量拦截器350的性能。在一些实施例中,监控代理129监控和测量客户机102的诸如存储器、CPU和磁盘的任意资源。
    【0127】监控代理197可以监控和测量客户机的任意应用的性能。在一个实施例中,监控代理129监控和测量客户机102上的浏览器的性能。在一些实施例中,监控代理197监控和测量经由客户机代理120递送的任意应用的性能。在其它实施例中,监控代理197测量和监控诸如基于web或HTTP响应时间的应用的最终用户响应时间。监控代理197可以监控和测量ICA或RDP客户机的性能。在另一个实施例中,监控代理197测量和监控用户会话或应用会话的规格。在一些实施例中,监控代理197测量和监控ICA或RDP会话。在一个实施例中,监控代理197测量和监控设备200在加速递送应用和/或数据到客户机102的过程中的性能。
    【0128】在一些实施例中以及仍然参考图3,可以使用第一程序322来自动地、静默地、透明地或以其他方式地安装和/或执行客户机代理120或者其中的诸如拦截器350的部分。在一个实施例中,第一程序322包括诸如被加载到应用并由应用执行的ActiveX控件或Java控件或脚本的插件部件。例如,第一程序包括由web浏览器应用加载并运行在例如应用的存储空间或上下文中的ActiveX控件。在另一个实施例中,第一程序322包括由诸如浏览器的应用加载并运行的一组可执行指令。在一个实施例中,第一程序322包括被设计和构造的程序来安装客户机代理120。在一些实施例中,第一程序322通过网络来从另一个计算装置获得、下载或接收客户机代理120。在另一个实施例中,第一程序322是客户机102的操作系统上的诸如网络驱动程序的安装程序或用于安装程序的即插即用管理器。
    D、使用由用户从设备确定的规格选择的规格和/或经由网络管理协议从装置收集的规格执行负载平衡
    【0129】现在参考图4A和4B,所描述的系统和方法用于基于由设备200确定的规格和/或由设备经由诸如简单网络管理协议(SNMP)的网络管理协议从装置或者服务收集的规格进行负载平衡。该设备提供负载监控器来监控一个或者多个服务270a-270n的负载。在一个实施例中,用户可以基于从自定义规格表选择的规格来配置一个或者多个负载监控器,该自定义规格表包括经由网络管理协议查询获得的规格或者对象。在另一个实施例中,用户可以基于由设备收集的规格或者参数来配置一个或者多个负载监控器。在一些实施例中,用户基于从自定义规格表选择的规格和设备收集的规格来配置一个或者多个负载监控器。响应于用户的选择,设备确定一个或者多个服务的负载并且使用任一类型的负载平衡技术来负载平衡到服务的客户机请求。
    【0130】现在参考图4A,描述用于负载平衡一个或者多个服务的设备的实施例。总的来说,设备200具有被配置为提供负载平衡284到布置在一个或者多个服务器106a-106b上的或者由一个或者多个服务器106a-106b提供的一个或者多个服务270a-270n的一个或者多个虚拟服务器或者vServer 275A-275N。vServer 275A和服务270A或者一组服务270A-270N相关联,被配置为服务270A或者一组服务270A-270N或者受其限制。设备200具有一个或者多个负载监控器405A-405N来监控服务270A-270N的状态、操作和/或性能。负载监控器和服务270A或者一组服务270A-270N相关联,被配置为服务270A或者一组服务270A-270N或者受其限制。负载监控器405A-405B为vServer 275A-275N提供信息来确定服务270A-270N中的哪一个应该接收由vServer 275接收的请求。负载监控器405和/或vServer 275可以使用设备收集的规格410和/或装置提供的规格420来确定跨越多个服务270A-270N的负载并且来负载平衡输入的客户机请求。设备200还包括配置接口435来接收识别由负载监控器405和/或vServer 275所使用的用户选择的或者用户限定的规格430的信息用于负载平衡多个服务270A-270N。
    【0131】设备200还包括任一类型和形式的负载监控器405A-405N,还可以称之为监控代理,用于监控服务270、服务器106或者装置100的任一操作或者性能特征或者规格。负载监控器405可以包括软件、硬件或者软件和硬件的任一组合。负载监控器405可以包括任一应用、程序、脚本、服务、守护进程、过程、任务、线程或者可执行指令集。在一个实施例中,负载监控器405在设备200的内核空间中操作或者执行。在另一个实施例中,负载监控器405在设备200的用户或者应用空间中操作或者执行。在一些实施例中,负载监控器405的第一部分在内核空间中操作而负载监控器405的第二部分在设备200的应用层或者空间操作。
    【0132】在一个实施例中,负载监控器405和服务270通信一次。在一些实施例中,负载监控器405以诸如每一毫秒或者每一秒的预定频率监控服务270或者与之通信。用户可以经由配置接口425配置或者指定预定的频率。在其他情况中,另一个设备或者系统可以经由配置接口425来配置或者指定预定的频率。在又一个实施例中,负载监控器405响应于诸如接收请求、响应或者网络分组的一个或者多个事件来监控服务270或者与之通信。在一个实施例中,负载监控器405响应于策略引擎的一个或者多个策略来监控服务270或者与之通信。
    【0133】在一些实施例中,负载监控器405可以与服务270或者服务器106使用请求/应答消息机制或者协议。在其他实施例中,负载监控器405可以具有自定义或者专用交换协议用于和服务、服务器或者装置通信。在一个实施例中,负载监控器405可以使用服务270的协议来监控服务270或者与之通信。由此,在一些实施例中,负载监控器405使用HTTP协议来监控web服务270A或者与之通信,或者使用FTP协议用于FTP服务器270B。在又一些实施例中,负载监控器405使用TCP或者ICMP协议用于监控服务270。在一些实施例中,负载监控器405使用网络管理协议来监控或者查询服务、服务器或者装置的状态或者规格。在一个实施例中,负载监控器405使用简单网络管理协议(SNMP)。在另一个实施例中,负载监控器405使用通用管理信息协议(CIMP)。
    【0134】在一些实施例中,单个负载监控器405监控多个服务270A-270N或者服务器106A-106B。在其他实施例中,多个负载监控器405A-405N监控单个服务270A或者服务器106A。在又一些实施例中,多个负载监控器405可以每一个监控多个服务270A-270N或者服务器106A-106N。在一个实施例中,多个负载监控器405可以每一个监控服务270。在又一个实施例中,负载监控器405A可以监控一个或者多个其它负载监控器405B-405N。
    【0135】在一些实施例中,一个或者多个负载监控器405和一个或者多个服务270相关联。在一个实施例中,用户经由配置接口425来指定或者配置负载监控器405用于一个或者多个服务270。例如,用户经由配置接口435可以发布命令来限制监控器405到服务275。在其他实施例中,负载监控器405和vServer 275相关联。在一个实施例中,用户经由配置接口425指定或者配置负载监控器405用于vServer 275。在又一个实施例中,用户经由配置接口425指定或者配置vServer 275用于一个或者多个服务270A-270N。例如,用户可以将vServer 275限制到服务270。
    【0136】在一些实施例中,一个或者多个负载监控器405可以监控设备200、vServer 275、网络服务270、客户机102、服务器106、装置100或者任意其它网络资源。在一个实施例中,用户指定一类网络服务来与一个或者多个监控代理405相关联。在另一个实施例中,用户定制监控代理。例如,用户可以实现或者以其他方式提供脚本用于监控服务。在又一个实施例中,使用通用监控代理405。在一些实施例中,监控器代理405可配置地基于一类协议或者一类服务来使用预定的监控器、脚本或者状态消息。
    【0137】在又一个实施例中,一个或者多个监控代理405确定一个或者多个网络服务270的响应时间,用于响应以下类型的其中一个的请求:查验、传输控制协议(tcp)、tcp扩展内容验证、超文本传输协议(http)、http扩展内容验证、超文本传输协议安全(https)、https扩展内容验证、用户数据报协议、域名服务以及文件传输协议。在一些实施例中,监控代理405响应于服务270检查预定的状态码。在其他实施例中,监控代理405响应于服务270检查预定的串模式(string patters)。
    【0138】在一些实施例中,一个或者多个负载监控器或者监控代理405是协议专用的代理。例如,代理405可以确定用于特定协议类型的网络服务的可用性。在一些实施例中,监控代理405确定对于TCP请求的服务器106或者网络服务270的响应时间。在其中一个这样的实施例中,代理使用“TCP/ICMP回应请求”命令来发送数据报到网络服务270,相应地接收来自网络服务270的数据报,并且基于数据报的往返时间确定响应时间。在另一个这样的实施例中,监控代理405验证来自网络服务270的响应包括期望内容。在一个实施例中,监控代理405验证响应不包括错误。
    【0139】在其他实施例中,监控代理405确定网络服务270对于UDP请求的可用性。在其中一个这样的实施例中,代理使用“UDP回应”命令来发送数据报到网络服务270,相应地接收来自网络服务270的数据报,并且基于数据报的往返时间确定响应时间。在另一个这样的实施例中,监控代理405验证来自网络服务270的响应包括期望内容并且不包括错误。
    【0140】在又一些实施例中,监控代理405确定网络服务270对于FTP请求的可用性。在其中一个这样的实施例中,监控代理405发送诸如“get”命令或者“put”命令的FTP命令到网络服务270并且确定网络服务270响应该命令所需要的时间。在另一个这样的实施例中,监控代理405验证来自网络服务270的响应包括所期望的内容,诸如“get”命令所请求的文件的内容,并且不包含错误。
    【0141】在又一些实施例中,监控代理405确定网络服务270对于HTTP请求的可用性。在其中一个这样的实施例中,监控代理405发送诸如用于统一资源定位符(URL)或者文件的“get”请求的HTTP命令到网络服务270并且确定网络服务270响应该请求所需要的时间。在另一个这样的实施例中,监控代理405验证来自网络服务270的响应包括所期望的内容,诸如URL识别的web页面的内容。在一些实施例中,监控代理405检查预定的状态码。在其他实施例中,监控代理405检查HTTP响应中的预定的串模式。
    【0142】在进一步的实施例中,监控代理405确定网络服务270对于DNS请求的可用性。在其中一个这样的实施例中,监控代理405发送诸如对于已知网络地址的dns请求或者ns查询的DNS请求到服务器106或者网络服务270,并且确定服务器106或者网络服务270响应该请求所需要的时间。在另一个这样的实施例中,监控代理405验证来自网络服务270的响应包括所期望的内容,诸如和已知网络地址相关联的计算装置100的域名。在一个实施例中,监控代理405验证响应不包含错误。
    【0143】在一些实施例中,设备200经由监控代理405识别并且收集基于遍历设备的网络话务量和信息的规格410,或者以其他方式称之为设备收集的参数或者规格。设备200或者代理405可以以任一类型或者形式的数据存储机制将设备收集的规格410保存在存储器和/或磁盘存储装置中。在一个实施例中,设备将规格410保存在表中。在另一个实施例中,设备将规格410保存在数据库中。在又一个实施例中,设备将规格410保存在对象或者数据结构中。仍然在其它实施例中,设备200在多个表中和/或数据存储机制中保存设备收集的规格410。在一个实施例中,设备收集的规格410可以以任一方式布置在或者组织在多个表中。
    【0144】在一些实施例中,监控代理405由设备所接收和发送的网络分组确定一个或者多个规格410。在一个实施例中,监控代理405确定与一个或者多个服务270或者服务器106的多个和/或一类连接。在另一个实施例中,监控代理405确定发送到服务270或者服务器106的多个分组。在其他实施例中,监控代理405确定从服务270或者服务器106接收的或者由服务270或者服务器106发送的多个分组。在一些实施例中,监控代理405确定来自服务270或者服务的响应时间。在一个实施例中,监控代理405确定平均响应时间。在另一个实施例中,监控代理405确定多个损耗分组或者其百分比。在其他实施例中,监控代理405确定从服务或者服务器接收的多个错误。
    【0145】在一些实施例中,监控代理405确定到服务270或者服务器106的连接的带宽。在一个实施例中,监控代理405基于响应时间和/或分组损耗来确定连接的带宽。在另一个实施例中,监控代理405基于从服务270或者服务器106发送或者通信的和/或发送或者通信到其的多个字节来确定连接的带宽。在一个实施例中,监控代理405基于通过诸如每秒的预定时间周期上从服务或者服务器接收的多个字节来确定带宽。在另一个实施例中,监控代理405基于在预定时间周期发送到服务或者服务器的多个字节来确定带宽。在一些实施例中,监控代理405基于在预定时间周期发送到服务或者服务器或者从其接收的多个字节来确定带宽。
    【0146】在一些实施例中,设备200经由监控代理405识别和收集服务、服务器或者装置提供的规格430。这些规格430也可以称为自定义规格或者自定义规格表。设备200或者代理405可以以任意类型和形式的数据存储机制将服务或者装置收集的规格430保存在存储器和/或磁盘存储装置中。在一个实施例中,设备将规格430保存在表中。在另一个实施例中,设备将规格430保存在数据库中。在又一个实施例中,设备将规格430保存在对象或者数据结构中。在一些实施例中,设备将规格430以与设备收集的规格410相同的数据存储机制保存。在其他实施例中,设备将规格430以与设备收集的规格410不同的数据存储机制保存。仍然在其它实施例中,设备以多个表和/或数据存储机制保存装置提供的规格420。在一个实施例中,装置收集的规格420可以以任一方式布置在或者组织在多个表中。例如,设备200可以对于每一个服务、装置或者应用维持规格表420。
    【0147】在一个实施例中,负载监控器405使用诸如SNMP的网络管理协议来向服务器或者装置查询一个或者多个对象标识符和用于对象标识符的对象的数据。仅通过示例并且不以任一方式限制,负载监控器405使用SNMP架构来提供管理信息库(MIB)417,其对于所管理的对象使用包含对象标识符422A-422N的分层命名空间来指定诸如服务270的装置或者装置子系统的管理数据。在一些实施例中,MIB 417是分层组织的信息的集合。MIB 417可以使用诸如SNMP的网络管理协议来访问。MIB 417包括由对象标识符422A-422N识别的所管理的对象。在一个实施例中,所管理的对象(有时称为MIB对象、对象或者MIB)是所管理的装置、设备或者系统的任意个特征或者规格的其中一个。在一些实施例中所管理的对象包括一个或者多个对象实例,其对应于或者称为变量。
    【0148】在一个实施例中,MIB 417分层可以被描述为具有无名根(nameless root)的树,其每一层级由不同的组织分配。在一些实施例中,顶层级MI B对象ID可以属于不同标准的组织,而较低层级对象ID由相关的组织分配。MIB 417和/或对象422A-422N可以被布置、构建和组织用于跨越OSI参考模型的任意层的管理。在一些实施例中,MIB 417和/或对象422A-422N在诸如数据库、电子邮件和web服务的应用上提供所管理的数据和信息。此外,MIB 417和/或对象422A-422N可以限定任意区域专用或者设备指定信息和操作,诸如对于由设备200负载平衡的或者管理的任意类型的服务270、服务器106或者装置100。
    【0149】在SNMP的示例实施例中,SNMP通信模型基于具有管理信息417和管理对象422A-422N的数据的管理器415和代理416。在一个实施例中,管理器415提供设备和所管理的系统之间的接口。代理416提供管理器415和所管理的装置、系统、应用、部件、元件或者资源之间的接口。如图4A中所示,设备200可以包括请求和获取来自代理416的对象标识符和值的管理器415,代理416诸如服务器106上的代理416。在SNMP的例子中,管理器415传达GET或者GET-NEXT消息来请求对于指定对象的信息。代理416响应于管理器的请求,发出具有所请求的信息或者错误消息的GET-RESPONSE消息到管理器415。管理器415可以发送SET消息来请求对指定变量或者对象422的值的改变。代理416可以发出TRAP消息来通知事件的管理器415,诸如服务270上的警告或者错误。
    【0150】尽管总的在SNMP网络管理协议的实施例中进行了描述,但设备200和/或负载监控器405可使用任意类型和形式的管理管理协议和通信模型来从对于所管理的系统、子系统或者服务270的另一个装置获取信息的标识符和值,诸如对象或者变量。例如,设备200可以使用任意一个以下协议和/或通信模型:远程监控(RMON)、AgentX、简单网关监控协议(SGMP)、公共管理信息协议(CMIP)、公共管理信息服务(CMIS)或者TCP/IP上CMIP(CMOT)。
    【0151】此外,尽管MIB 417总的参考用于诸如SNMP的示例网络管理协议的管理器/代理通信模型来描述,但是MIB 417可以包括对象标识符、变量、参数或者规格的其他标识符的任意类型和形式的数据存储装置。MIB 417可以是依赖协议或者独立协议。例如,MIB 417可以包括用于可以经由任意类型和形式的API查询的装置或者服务的规格的表。
    【0152】经由网络管理协议提供的所管理的对象或者变量可以提供由设备用于负载平衡或者设备200的任意其它功能所使用的服务、服务器或者装置的任意类型和形式的规格或者操作特征。在一个实施例中,装置提供的规格420可以包括如上描述设备所收集的任一规格410。在另一个实施例中,装置提供的规格420可以包括所管理的装置、服务或者系统的任一资源使用的任一类型和形式的信息。在一个实施例中,规格410包括装置和/或服务270的CPU、存储器和/或磁盘使用。在其他实施例中,规格420可以包括服务270的多个连接、会话或者客户机上的信息。在一些实施例中,规格420包括服务270或者服务器106的任意阈值上的任意信息,诸如识别最大数量的会话或者客户机的阈值。在又一个实施例中,规格420包括服务270的一类协议上的任一信息。在其他实施例中,规格420包括服务270的任意警告或者错误上的任一信息。
    【0153】在一些实施例中,每一个负载监控器405包括设备收集的规格410。例如,规格表410可以被明确地默认限制到每一个监控器405。在其他实施例中,用户将自定义规格表420关联或者限制到监控器405。在又一个实施例中,用户将自定义规格表420和设备收集的表410关联或者限定到监控器405。在又一些实施例中,用户可以将一个或者多个设备收集的规格表410和自定义规格表420的任一组合关联或者限制到一个或者多个负载监控器405。
    【0154】在一些实施例中,用户经由配置接口425可以对于负载监控器405配置或者指定一个或者多个对象标识符422A-422N来获取用于并保存在规格420中的值。例如,用户可以指定用户限定的规格430。在其他实施例中,设备200或者负载监控器405从诸如服务器106或者服务270的服务100获得一列一个或者多个对象标识符422A-422N。在又一个实施例中,设备200包括具有对于已知装置的预定的OIDS 422A-422N的一个或者多个规格表420。例如,设备200可以包括用于任意一个或者多个以下设备或者装置的规格表420:1)Florida ft.Lauderdale的Cireix System公司出品的任意版本的NatScaler装置;2)诸如由Washington Seattle的F5 Networks公司出品的BIGIP或者WebAccelerator的任一设备;3)New Jersey Mahwah的Radware公司出品的任意的AppDirector或者AppXcel装置;4)California San Jose的Cisco System公司出品的和任意应用加速和/或安全相关的设备和/或软件。
    【0155】设备200、vServer 275和/或负载监控器405基于来自设备收集的规格410和/或装置提供的规格420的任意一个规格来估计、计算或者以其他方式确定对于每个服务270的负载440。设备200对于负载440的确定中使用的每一个规格可以使用权重435A-435N和阈值437A-437N。在一个实施例中,设备200建立权重435和/或阈值437。在其他实施例中,用户建立权重435和/或阈值437。例如,在一些情况中,若用户未指定对于多个规格的权重,则设备同等地为每个规格加权。在一个示例实施例中,设备200如下确定对于每一个服务的负载440:
    Sum(规格权重/所建立的规格上限值)*(所获得的规格值/所建立的规格上限值)/Sum(权重)
    在一些实施例中,规格值可以基于0-100的范围,或者绝对范围。在其他实施例中,规格值可以不基于0-100的范围或者以其他方式与规格的类型和值的可能范围相关。例如,识别多个连接的规格可以具有10000的上限或者预定的最大值。在其中一个这样的实施例中,设备建立对于规格值的上限值或者预定上限。在另一个这样的实施例中,用户经由配置接口425建立对于规格值的上限值或者预定的上限。在进一步的实施例中,所建立的上限值可以包括低于对于规格的实际最大值或者范围值的上限的值。例如,用户可以基于规格的期望的操作或者性能范围来指定或者配置相对的范围值。
    【0156】在一些实施例中,如果服务的规格超过用户或者设备提供的阈值,则服务可以从负载确定或者以其他方式从负载平衡决策中排除。在其他实施例中,如果服务的所有规格超过它们对应的阈值,则服务可以从负载确定或者以其他方式从负载平衡决策中排除。在又一个实施例中,甚至当服务超过对于一个或者多个规格的阈值时,则服务可以被考虑在负载确定中或者以其他方式用于负载选择。在一些情况中,客户机会话可以被识别为对于vServer 275或者服务270是持续或者稳定的。在这些情况中,如果对于客户机会话的请求由设备接收,尽管对于vServer或者服务的规格已经超过,设备还可以提供请求给vServer 275或者服务270。
    【0157】仍在其他实施例中,如果服务或者虚拟服务器的规格的阈值已经超过,则设备可以响应于所超过的阈值将作出请求的客户机重定向到另一个资源。在一个实施例中,设备可以发送URL到包括服务器106或者服务270的地址的客户机,使得客户机可以旁路设备200和直接访问服务器106或者服务270。在一个实施例中,设备可以发送URL到包含第二设备200或者另一个装置的地址的客户机。仍在另一个实施例中,设备200可以将客户机请求重定向到代表客户机的第二设备、装置、服务或者服务器。
    【0158】在一个实施例中,如果服务或者虚拟服务器的规格的阈值已经超过,则设备可以响应于所超过的阈值将客户机请求引导到第二虚拟服务器或者服务。在一个实施例中,第二虚拟服务器可以是初级虚拟服务器的备份。当检测到超过的阈值时,设备可以溢出请求并且连接到到第二虚拟服务器。
    【0159】尽管负载440总的考虑到上述因素进行讨论,但是设备可以使用任意类型和形式的负载计算、加权或者不加权。在一些实施例中,设备200使用规格值的平均值确定负载。在其他实施例中,设备200使用规格的派生值(derivative value)来确定负载440。在另一个实施例中,设备200使用规格的任意统计测量来确定负载440。仍在另一个实施例中,设备200使用规格的任意功能或者计算来确定负载440。在又一些实施例中,设备200可以对于每个规格确定负载440。在这些实施例中,设备200可以基于任意类型和形式的对服务的负载的规格成分的集合来聚集、比较或者以其他方式计算负载440。
    【0160】在一些实施例中,用户配置对于服务270的多个监控器405。在这些实施例中,服务270上的负载440是所有监控器的负载的和。在一个实施例中,多个监控器440的负载的和被加权。设备可以分配监控405加权。加权可以包括整数、小数或者任意其它数字指示。在一些实施例中,用户可以经由配置接口425配置对应于监控器405的权重。在一些实施例中,所有的监控器405可以被分配相同的权重。在其他实施例中,多个监控器405可以每一个分配不同的权重。权重可以基于指示相对重要性的任意标准来分配给监控器,包括但不限于考虑到服务的监控器的相对重要性或者值的设备或者用户确定、监控机制的可靠性和监控频率。
    【0161】在一个实施例中,监控代理405可以基于通过设备监控的服务的相对重要性来分配权重。例如,如果环境中的大部分用户请求是HTTP请求,则监控服务器106的HTTP可用性的监控代理可以被分配10的权重,而监控服务器106的FTP可用性的监控代理可以被分配3的权重。或者例如,如果管理员为UDP应用设置高优先级,则监控服务器的UDP可用性的监控代理可以被分配给20的权重,而DNS监控代理可以被分配5的权重。
    【0162】在一些实施例中,设备200可以计算当前报告网络服务270在操作中的监控代理的权重的总和。例如,如果五个监控代理监控网络服务270,其中每一个分配30的权重,并且五个监控代理的三个报告网络服务270可用,则设备可以确定当前报告网络服务270在操作中的监控代理的总和是90。或者例如,如果仅有两个监控代理报告服务器106可用,其中一个具有20的权重,另一个具有40的权重,则设备可以计算当前报告服务器106在操作中的监控代理的总和是60。
    【0163】设备200还包括提供用于用户、应用或者系统以和设备200通信的任意类型和形式的接口机制的配置接口425。在一个实施例中,配置接口425包括命令行接口425B。在另一个实施例中,配置接口425包括图形用户接口425A。在一些实施例中,配置接口425包括用于应用、程序或者脚本以与设备200通信的应用编程接口(API)或者开发工具包。
    【0164】在一些实施例中,设备200经由设备的显示器显示配置接口425。在其他实施例中,配置终端或者装置100和设备200连接或者通信,并且显示配置接口425。例如,配置装置100或者终端可以经由设备200的端口或者IP地址连接到设备200。设备200可以提供web服务侦听端口和IP地址以将页面提供给用户。所提供的页面可以提供用于配置设备200的用户接口。在其他实施例中,配置终端100可以经由任意类型和形式的连接来连接到设备200并与之通信,包括监控器端口、串行端口或者USB连接。
    【0165】经由配置接口425,设备200可以接收识别用户选择的规格430的信息来用于对于一个或者多个服务确定负载440。在一个实施例中,用户从多个设备收集的规格410识别或者选择规格。在另一个实施例中,用户从多个装置提供的规格420识别或者选择规格。在一些实施例中,用户从设备收集的规格510选择一个或者多个规格并且从装置提供的规格410选择一个或者多个规格。设备200还可以经由配置接口425接收识别用户的选择的信息或者对于规格的权重435的指定。例如,用户可以提供权重35的值用于规格。在一些实施例中,设备200接收识别对于阈值437的用户提供的值的信息。
    【0166】在操作中,设备200可以使用用户选择的规格430和用户提供的权重435和阈值437用于确定负载440。在另一个实施例中,设备可以使用来自设备收集的规格410的任意设备建立的规格用于确定负载。在一个实施例中,用户确定权重和/或阈值用于设备提供的规格。这样尽管在一些实施例中规格可以不是用户选择的,但用户可以控制或者配置用于规格410的权重435和/或阈值437。在其他实施例中,设备可以使用用户选择的规格430和设备建立的规格410的任一组合用于确定负载。在另一个实施例中,设备200可以使用对于任意规格的用户提供的权重435和/或阈值437以及设备提供的权重435和/或阈值437的任一组合来确定负载440。
    【0167】现在参考图4B,描述用于负载平衡一个或者多个服务的方法的步骤的实施例。在一些实施例中,设备200可以使用设备收集的规格410和装置提供的规格420来负载平衡一个或者多个服务。在其他实施例中,设备200基于用户选择的规格、权重和/或阈值来负载平衡一个或者多个服务。总的来说,在方法450的步骤455,识别多个规格用于由设备200负载平衡多个服务270A-270N。在步骤457,在一些实施例中,设备200接收用户限定的规格来收集或者监控服务270。在步骤460,设备从识别的规格集接收用户选择的规格。用户还可以识别用于该规格的权重和/或阈值。在步骤465,设备基于用户选择的规格信息来确定用于每一个服务的负载。在步骤470,设备接收客户机访问服务的请求。在步骤475,基于负载确定,设备从多个服务确定服务来发送或者转发客户机请求。在步骤480,设备将客户机请求发送到设备选择的服务。
    【0168】在进一步的细节中,在步骤455,设备200识别规格来收集和监控用于负载平衡一个或者多个服务270A-270N。在一个实施例中,设备200提供或者识别一个或者多个设备收集的规格410。例如,表410可以识别设备200收集的规格。在另一个实施例中,设备200提供装置提供的规格420的一个或者多个预定的表,诸如用于Citrix、F5、Cisco或者Radware的设备。在其他实施例中,设备200经由网络管理协议在诸如对于SNMP的MIB 417的对象或者变量数据库中识别一个或者多个规格来收集。在一个实施例中,设备提供预配置的或者预安装的MIB 417用于预定的装置或者服务270,诸如应用。
    【0169】在一些实施例中,设备200查询装置或者服务270来确定可用的规格以收集和/或监控。例如,在一个实施例中,设备200对于可用的对象标识符422A-422N来查询装置或者服务。在另一个实施例中,设备200适用诸如SNMP的网络管理协议来查询MIB 417中的对象的识别。在又一个实施例中,用户经由配置接口425识别一个或者多个对象标识符422A-422N以从装置或者服务270收集和/或监控,诸如应用。
    【0170】在一些实施例中,在步骤457,用户指定或者限定用于设备的规格来收集和/或监控服务270。例如,用户可以经由配置接口425指定MIB 417中的对象标识符。在其他实施例中,用户可以配置或者实现负载监控器405来收集和/或监控用户限定的或者指定的规格。在又一个实施例中,诸如网络管理员的用户可以配置、指定或者实现布置在服务器106上的MIB 417中的一个或者多个对象标识符422。在一些实施例中,用户可以实现应用、程序、脚本、服务或者其它可执行指令集来收集服务器106上的规格并且将规格的值保存在服务器106上的MIB 417中。例如,用户可以执行程序或者脚本来监控服务器106上的服务270的规格并且使用收集的值更新MIB 417。设备200上的管理器415可以向服务器上的代理416查询保存在用于服务270的服务器的MIB 417中的规格的信息和/或值。
    【0171】在步骤460,设备200接收识别由用户对经由设备所识别的一个或者多个规格的选择的信息。在一些实施例中,用户经由配置接口425选择经由设备200提供的一个或者多个规格用于负载平衡服务器270。在一个实施例中,设备200对于通过用户的选择经由配置接口425提供任意一个或者多个设备收集的规格410或者装置提供的规格420。用户可以经由命令行接口425B或者图形用户接口425A来配置设备200以使用一个或者多个用户选择的规格430用于通过设备200确定负载440或者以其他方式用于负载平衡服务270A-270N。
    【0172】在一个实施例中,设备200接收识别用户选择了一个或者多个设备收集的规格410的信息。在另一个实施例中,设备200接收识别用户选择了一个或者多个装置提供的规格420的信息。在又一个实施例中,设备200接收识别用户选择了一个或者多个设备收集的规格410和一个或者多个装置提供的规格420的信息。
    【0173】此外,经由配置接口425,设备200可以接收识别对于规格的权重435的用户指定或者建立的信息。在一个实施例中,设备200接收对于用户选择的规格430的权重435的用户的标识。在另一个实施例中,设备200接收对于设备建立的规格410的权重435的用户的标识。在其他实施例中,设备200可以接收识别对于规格的阈值437的用户指定或者建立的信息。在一个实施例中,设备200接收对于用户选择的规格430的阈值437的用户标识。在另一个实施例中,设备200接收对于设备建立的规格410的阈值437的用户标识。
    【0174】在步骤465,设备确定用于一或者多个服务中的每一个的负载。在一个实施例中,负载监控器405收集和/或监控用于服务的一个或者多个用户选择的规格430。在另一个实施例中,负载监控器405收集和/或监控设备收集的规格410。在一些实施例中,负载监控器405经由诸如SNMP的网络管理协议收集规格。在又一个实施例中,多个负载监控器405A-405N收集和/或监控用于服务270的规格。在一个实施例中,尽管用户选择的一个或者多个规格430用于收集和/或监控服务270,但是设备200收集和监控任意一个或者多个设备建立的规格410,诸如用于服务270的连接的数量、响应时间、带宽、和分组的数量。
    【0175】在一些实施例中,vServer 275经由负载监控器405收集和监控的规格信息对于每一服务270确定负载440。在另一个实施例中,负载监控器405确定对于被监控的服务270的负载440。设备200和/或负载监控器405可以使用用户指定的权重435所加权的用户选择的规格430来确定负载440。在一些实施例中,设备200和/或负载监控器405使用用户指定的权重435所加权的多个用户选择的规格430来确定负载440。在又一个实施例中,设备200和/或负载监控器405使用用户选择的规格430和用户识别的权重435和设备建立的规格410和设备建立的权重435来确定负载。在进一步的实施例中,设备200通过将对于服务270所使用的每一个规格(用户和/或设备)的加权的负载进行相加来确定负载440。对于每个服务270多个监控器405A-405N的实施例,设备200可以通过分配权重到每一个监控器并且计算所有监控器405的加权的负载来确定服务的负载。在其他实施例中,设备200和/或负载监控器405以诸如每一毫秒或者每一秒的预定频率来确定服务270的负载。
    【0176】在一些实施例中,负载监控器405确定服务270的规格已经达到或者超过阈值437。在其他实施例中,负载监控器405确定服务270的规格在阈值437之内。在一个实施例中,负载监控器405使用设备建立或者提供的用于规格的阈值。在另一个实施例中,负载监控器405使用用户指定或者配置的阈值437。
    【0177】在步骤470,设备200从客户机接收访问服务的请求。在一个实施例中,虚拟服务器或者vServer 275拦截或者以其他方式接收来自客户机的请求。在一些实施例中,虚拟服务器275透明地拦截客户机的到服务270或者服务器106的请求。在其他实施例中,客户机102发送请求到vServer 275。在另一个实施例中,vServer 275根据请求确定该请求用于设备200管理的一个或者多个服务。在一个实施例中,vServer275经由客户机和设备200之间的SSL VPN连接拦截或者接收请求。
    【0178】在步骤475,设备200基于对于每个服务270的负载440的确定来确定哪个服务来引导客户机请求。在一个实施例中,vServer 275响应于一个或者多个负载监控器405来引导请求。在一些实施例中,vServer 275将请求引导、转发或者以其他方式发送到具有最少或者最小负载的服务270。在一个实施例中,vServer 275将请求引导、转发或者以其他方式发送到具有较低确定的负载的其中一个的服务。在一些实施例中,vServer 275将请求引导、转发或者以其他方式发送到之前处理来自客户机102的请求的服务。在一个实施例中,如果服务的负载在预定阈值内,vServer 275将请求发送到之前使用的服务。在一些实施例中,vServer 275将请求发送到具有预定阈值内的所确定的负载的列表中第一可用的服务。
    【0179】在另一个实施例中,vServer 275使用循环技术或者加权循环将请求引导、转发或者以其他方式发送到服务270。在又一个实施例中,vServer 275基于诸如设备收集的规格410或者装置提供的规格420的一个或者多个规格将请求引导到服务。例如,在一些实施例中,vServer 275基于以下一个或者多个将请求引导到服务:最少响应或者往返时间、连接的最少数量、分组的最少数量和最少使用的带宽。在又一些实施例中,vServer 275基于一个或者多个装置提供的规格430将请求引导到服务,诸如CPU、存储器和磁盘资源使用。在另一个例子中,vServer 275基于服务器上的服务资源使用将请求引导到服务,诸如设备或者应用会话的系统资源使用。
    【0180】在一些实施例中,vServer 275在对于服务270的规格已经超过诸如用户配置的阈值437的阈值437时可以不将请求引导到服务270。在其他实施例中,vServer 275在如果对于服务的规格的多于一个的阈值437已经超过时可以不将请求引导到服务。在又一个实施例中,如果规格阈值437已经达到或者超过,则vServer 275可以将请求引导到服务270。例如,如果多个阈值437的一个规格阈值437已经超过,则vServer 275仍旧可以在其他规格阈值没有达到时将请求引导到服务。
    【0181】仍旧在其他实施例中,设备200可根据负载监控确定第一vServer 275A的规格已经达到阈值437。响应于该确定,设备200可以将服务270A-270N的管理溢出到第二虚拟服务器或者vSever 275B。在一个实施例中,第二虚拟服务器275B可以是备份服务器。在一些实施例中,响应于检测到第一虚拟服务器275A已经达到一个或者多个阈值来建立第二虚拟服务器275B。在另一个实施例中,第二虚拟服务器275B可以建立并且运行在设备200上。
    【0182】在步骤480,设备将客户机请求发送到在步骤475由设备确定的服务。在一个实施例中,设备200将客户机请求以透明方式发送到服务270,使得请求呈现出已经从容户机发送而不是从设备200。例如,设备200可以用作客户机102的透明或者拦截代理。在其他实施例中,设备200用作非透明代理并且代表客户机将请求发送到服务。在一些实施例中,vServer 275将请求发送给服务275。在其他实施例中,备份服务器275将请求发送给服务。在又一些实施例中,第二vServer 275将请求发送给服务。
    E、异类装置间的全局服务器负载平衡
    【0183】现在参考图5A-5C,描述用于负载平衡多个异类装置的系统和方法。此处描述的设备200可以被布置来负载平衡多个服务并且负载平衡装置。第一设备200可以经由预定的规格交换协议(MEP)和同类型的第二设备200A进行通信。第一设备200经由MEP获取协议规格用于确定第二设备200A的负载。与第一设备不同类型的其它装置可以被布置在网络中来执行本地负载平衡,诸如用于服务器群组。这些装置可以不经由第一设备200的MEP协议进行通信。而是,这些其他装置可以经由诸如简单网络管理协议(SNMP)的网络管理协议来提供规格。使用结合图4A和4B描述的技术,第一设备200从这些异类装置经由网络管理协议来获取规格。使用经由MEP协议从同类型的装置获取的规格和经由网络管理协议从不同类型的装置获取的规格,设备200可以使用这些组合的规格来确定跨越这些异类装置的负载并基于该负载将请求引导到其中一个装置。
    【0184】现在参考图5A,描述用于负载平衡包括服务器和本地或者其他负载平衡装置的异类装置的网络环境的实施例的例子。总的来说,网络环境包括多个不同类型负载平衡装置和服务器。设备200被配置为全局负载平衡装置来负载平衡多个负载平衡装置和服务器。负载平衡装置的每一个可以执行对于一个或者多个服务270A-270N的本地负载平衡。例如,同样类型的第一组负载平衡设备200A-200N可以执行第一网络104上服务或者服务器的本地负载平衡。这些设备200A-200B可以是同样类型的全局负载平衡设备200。或者在一些情况中,本地负载平衡设备200A-200N被设计和构建为经由规格交换协议540传递规格和其他信息。第二类型的负载平衡设备500A-500N可以执行对于第二网络104’上一个或者多个服务270A’-270N’的本地负载平衡。这些负载平衡设备500A-500N可以与第一类型的设备200A-200N和/或全局负载平衡设备200类型不同。设备500A-500N可以操作或者执行一个或者多个虚拟服务器或者vServer 275A-275N。设备500A-500N可以不被设计为经由设备200A-200N的MEP协议540通信。而是这些设备500A-500N可以经由诸如SNMP的网络管理协议提供规格。全局负载平衡设备200还可以对于诸如服务器群组38的一个或者多个服务或者服务器执行负载平衡。服务器或者服务的每一个可以是不同类型的,诸如HTTP服务和FTP服务。
    【0185】考虑图5A,多个设备、服务器和服务可以以分层方式布置。第一设备200可以是全局负载平衡设备处于分层的顶部,来管理多个其他设备200A-200N、500A-500N和服务器。在一个情况中,设备200直接管理一个或者多个服务器106或者服务270A-270N。在另一个情况中,设备200管理一个或者多个设备200A-200N、500A-500N,其又管理一个或者多个服务器106或者服务270A-270N。由第一设备200管理的设备可以管理第二设备,其又管理一个或者多个服务或者服务器。
    【0186】通过参考不同负载平衡产品的例子,全局负载平衡设备200可以是称为Citrix System公司出品的NetScaler的任意一种产品实施例。设备200A-200N也可以是被配置为执行一个或者多个服务270A-270N的本地负载平衡的NetScaler装置。当设备200A-200N与全局负载平衡设备200是相同类型,这些设备被设计和构建为经由称之为规格交换协议的预定的协议和/或通信模型进行通信。设备200A-200N可以被配置为以预定频率提供规格信息给设备200。一个或者多个设备500A-500N可以包括另一类型的负载平衡装置,诸如F5 Networks公司出品的Big IP负载平衡装置。另一种一个或者多个设备500A-500N可以包括不同类型的负载平衡装置,诸如Radware有限公司出品的AppDirector设备。在一些情况中,一个或者多个设备500A-500N可以包括Cisco负载平衡装置。在其他情况中,一个或者多个设备500A-500N可以包括Nortel负载平衡装置。任意一个或者多个这些设备500A-500N可以不被设计或者构建为经由MEP协议540与设备200通信。尽管该例总的在以上描述为提供全局负载平衡装置的Citrix NetScaler装置200,但是可以使用任意其它类型的负载平衡装置。
    【0187】除了使用MEP 540,这些不同设备500A-500N的每一个可以经由诸如SNMP的网络管理协议提供规格信息。如图5A中所示,这些设备500可以包括用于经由MIB 417提供对象标识符422A-422N的代理416。该示例的进一步实施例并且如结合图4A和4B所讨论的,使用管理器/代理通信模块的设备200可以经由网络管理协议查询任意一个这样的设备500A-500N,以经由MIB 417识别、收集和监控所识别的对象。在一些情况中,设备200可以使用SNMP来与一个或者多个设备500A-500N通信。在其他情况中,设备200可以使用另一类型的网络管理协议与另一个或者多个设备500A-500N通信。仍在另一个情况中,设备200可以使用第三类网络管理协议来与又一组一个或者多个设备500A-500N通信。
    【0188】设备200A-200N可以被认为是与设备200同类或者相同类型的设备或者装置。在一个实施例中,设备200A-200N是设备200的相同产品族。在另一个实施例中,设备200A-200N是设备200的相同装置的一个版本。在一个情况中,设备200和200A-220N由同一家公司出品。在一些实施例中,设备200A-200N和设备200被配置、设计和构建以使用预定协议和/或通信模型进行通信。在一个实施例中,设备200A-200N和设备200被配置、设计和构建为使用专用或者自定义的协议和/或通信模型。
    【0189】设备500A-500N可以被认为是与设备200异类的或者不同类型的设备或者装置。在一个实施例中,设备500A-500N由与设备200不同的公司出品。在一些实施例中,设备500A-500N和设备500不是被专有设计为使用预定的协议和/或通信模型进行通信。在一个实施例中,设备500A-500N和设备200不是被配置、设计和构建来使用专用或者自定义协议和/或通信模型。在一些情况中,设备500A-500N使用网络管理协议而不是使用专用协议来提供规格到其他装置、应用或者服务。
    【0190】现在参考图5B,描述用于识别、收集和监控从具有多个协议的异类网络装置和服务器获取的规格的设备200的实施例。设备200可以具有被配置、构建或者设计来提供一个或者多个网络104、104’、104”上的多个装置的负载平衡的一个或者多个虚拟服务器275A-275N。设备200可以使用一个或者多个负载监控器405A-405N来监控异类装置的每一个的负载。在一个实施例中,设备200监控设备200A-200N的负载。设备200和/或负载监控器405使用MEP协议540来从一个或者多个设备200A-200N获取规格。在另一个实施例中,设备200监控设备500A-500N的负载。在其他实施例中,设备200监控一个或者多个服务器106的负载。仍在另一个实施例中,设备200监控服务器群组38中的服务器之间的负载。设备200可以使用一个或者多个网络管理协议来从服务器106、服务器群组38和设备500A-500N获取规格。
    【0191】设备200经由MEP协议540和网络管理协议从多种诸如设备500A-500N和服务器106的异类装置和同类装置200A-200N收集规格。设备200将规格保存在包括诸如文件、数据库、对象或者存储器中和/或磁盘上的数据结构的任一类型和形式的数据存储元件的GSLB(全局服务器负载平衡)或者全局规格表530中。vServer 275和/或负载监控器405使用来自GSLB规格530的一个或者多个规格来提供服务器、服务器群组、虚拟服务器和负载平衡装置的全局负载平衡。
    【0192】设备200可以收集和监控经由MEP协议540从一个或者多个设备200A-200N获取的规格并且将它们保存在基于MEP的规格表510A-510N中。在一个实施例中,设备200使用第一类或者第一版本的MEP协议540来获取来自第一设备200A的规格并且将规格保存在第一表510A中。在另一个实施例中,设备200使用第二类或者第二版本的MEP协议540’来获取来自第二设备200N的规格并且将规格保存在第二表510N中。
    【0193】设备200可以使用任一类型和形式的网络管理协议(NMP)收集和监控来自设备500A-500N的规格并且将该规格保存在基于NMP的规格表520A-520N中。在一个实施例中,设备200使用SNMP协议和通信模型来获取来自第二类型设备500A的规格并且将规格保存在基于NMP的规格表520A中。在一些实施例中,设备200使用诸如CIMP的第二类网络管理协议来从第二或者第三类设备500N获取并且将规格保存在基于NMP的规格表520N中。在一些实施例中,设备500A是与设备500N不同类型的设备,但是两种设备都支持同样的网络管理协议用于提供规格。
    【0194】设备200还可以使用任一类型和形式的网络管理协议(NMP)从服务器106和/或服务器群组38收集和监控规格并且将规格保存在基于NMP的规格表520A’-520N’中。在一个实施例中,设备200使用诸如SNMP的同样的网络管理协议用于从服务器106获取规格,该网络管理协议同样用于从设备500A-500N的其中一个获取规格。在另一个实施例中,设备200使用和设备200从设备500获取规格所使用的不相同类型的网络管理协议来从服务器获取规格。
    【0195】设备200可以将对于GSLB规格520的规格保存在对于每个装置的单个表中。例如,设备200可以将用于第一设备200A的规格保存在第一规格表510A中,并且将来自第二设备520A的规格保存在第二规格表520A中。设备200可以将来自服务器106的规格保存在服务器规格表520A’中。在另一个实施例中,设备200将来自服务器群组38的规格保存到用于服务器群组的规格表520N’中。
    【0196】设备200可以将对于GSLB规格520的规格保存在用于每一类协议的单个表中。例如,设备200可以将来自多个设备200A-200N的所有基于MEP的规格保存在第一规格表中。在一些实施例中,设备200将第一类或者版本的基于MEP协议的规格保存在第一表510A中并且将第二类或者版本的MEP协议保存在第二表510N中。设备200可以将来自一个或者多个设备500A-500N的所有基于SNMP的规格保存在第二规格表中。在另一个例子中,设备可以将来自一个或者多个设备500A-500N的根据第二类网络管理协议的规格保存在第三规格表中。
    【0197】GSLB规格530可以包括涉及或者关联到设备200、500、服务器106或者服务器群组38的操作和/或性能特征的任一类型和形式的数据、统计、状态或者信息。全局规格530可以包括涉及设备200、500、和/或服务器106或者服务器群组38的网络的任一类型和形式的数据、统计、状态或者信息。全局规格530可以包括涉及由设备200A-200N、500A-500N所负载平衡的服务270A-270N的任一类型和形式的数据、统计、状态或者信息。在一些实施例中,全局规格530包括连接到设备200A-200N、500A-500N的任意客户机102和/或服务器106上的操作和/或性能数据。在一个实施例中,设备200A-200N、500A-500N确定关于其连接的或服务的任一客户机102或者服务器106的操作和/或性能信息和建立这些客户机102和/或服务器106上的规格。在这些实施例中,设备200A-200N、500A-500N可以提供这些规格到全局负载平衡设备200。
    【0198】在一些实施例中,操作和/或性能特征提供包括对于设备或者服务器的任意一个以下的信息的规格1)负载;2)连接的数量和类型;3)资源使用;4)资源可用性;5)未完成请求的数量;6)发送的请求的数量;7)服务的客户机的数量;8)响应时间信息,包括平均和历史响应时间;9)连接的错误、状态、性能或者带宽,和10)会话的数量,和其状况或者状态。在另一个实施例中,规格530包括设备200A-200N、500A-500N的任意IP或者网络层信息上的、或者设备200A-200N、500A-500N的连接、或者设备200A-200N、500A-500N所服务的客户机和/或服务器的连接的信息。例如,经由规格530提供的信息可以包括设备200A-200N、500A-500N的路由表用于执行网络地址转换,诸如用于SSLVPN连接。
    【0199】经由配置接口425,用户可以从全局规格530选择-个或者多个规格430用于负载监控和确定负载440。设备200可以接收识别来自全局规格530的一个或者多个规格的用户选择的信息。设备可以接收第一类型设备的一个或者多个基于MEP的规格510的用户选择。设备可以接收第二类型的设备的一个或者多个基于NMP的规格520的用户选择。设备还可以接收用于任一服务器或者服务器群组的一个或者多个基于NMP的规格520’的用户选择。用户可以从全局规格530选择规格430的任一组合来配置设备200以对应于用户选择的规格来执行异类装置的负载平衡。
    【0200】在一个实施例中,设备200使用和任意一个或者多个用户选择的规格430相组合的设备建立的规格来负载平衡。例如,设备200可以对于任一设备200、500或者服务器106收集和监控多个连接、响应时间、分组的带宽和数量并且使用具有任意用户选择的规格的这些规格来用于负载平衡。经由配置接口425并且如结合图4A和4B所讨论的,设备200可以接收来自用户的信息,该用户识别、指定或者建立用于任一设备建立的规格和/或用户选择的规格的权重435和/或阈值437。
    【0201】现在参考图5C,描述用于在异类装置之间执行全局负载平衡的方法550的步骤的实施例。总的来说,在步骤555,设备200识别来自异类装置的多个规格用于通过设备进行负载平衡。在步骤560,设备200从一个或者多个同类设备200A-200N或者和第一负载平衡设备200同类型的设备获取规格。在步骤565,设备200从诸如设备500A-500N和/或服务器106的异类设备经由诸如SNMP的网络管理协议来获取规格。在步骤570,设备基于在步骤560和步骤565收集的规格确定由设备200管理的多个设备、服务器和/或服务中的一个或者多个的负载。在步骤575,设备接收客户机请求来访问服务。在步骤580,设备基于设备200A-200N、500A-500N的负载或者服务器的负载来去确定将客户机请求引导到谁。在步骤580,设备200将请求发送到根据所确定的负载选择的装置、设备或者服务。
    【0202】在进一步的细节中,在步骤555,设备200识别规格来收集和监控用于负载平衡一个或者多个设备200A-200N、500A-500N、服务器106或者服务270A-270N。在一个实施例中,设备200提供或者识别一个或者多个设备收集的规格410,如结合图4A和4B说描述的。例如,表410可以识别设备200所收集的规格。在另一个实施例中,设备200提供设备提供的规格510或者520的一个或者多个预定表,诸如用于Citrix、F5、Cisco或者Radware的应用。在其他实施例中,设备200识别一个或者多个规格来经由网络管理协议收集在对象或者变量数据库中,诸如对于SNMP是MIB 417。在一个实施例中,对于预定的设备200A-200N、500A-500N、服务器106或者服务270,设备提供预配置的或者预安装的MIB 417。
    【0203】在一些实施例中,设备200查询设备200A-200N、500A-500N、服务器106或者服务270来确定可用的规格,以收集和/或监控。例如,在一个实施例中,对于可用的对象标识符422A-422N,设备200查询设备、服务器或者服务。在另一个实施例中,设备200使用诸如SNMP的网络管理协议来查询MIB 417中的对象的标识。在又一个实施例中,用户经由配置接口425识别一个或者多个对象标识符422A-422N来从设备200A-200N、500A-500N、服务器06或者服务270收集和/或监控。在一些实施例中,用户经由配置接口425识别一个或者多个全局规格530来从所管理的异类装置的任意一个收集和/或监控。
    【0204】在步骤560,设备200从一个或者多个设备200A-200N经由MEP协议540来收集和/或监控规格510A-510N。在一些实施例中,设备200A-200N与设备200相同类型或者同类。在一个实施例中,设备200收集和/或监控通过设备建立的、确定的或者以其他方式选择的规格510。在另一个实施例中,设备200收集和/或监控通过用户建立的、确定的或者以其他方式选择的规格510。在一些实施例中,设备200使用第一类型或者版本的MEP协议540来从第一设备200A收集规格,并且使用第二类型或者版本的MEP协议540’来从第二设备200N收集规格。
    【0205】设备200的一个或者多个负载监控器或者监控代理405A-405N可以被配置、构建或者实现为经由MEP协议540来识别、收集和/或监控来自一个或者多个设备200A-200N的规格。第一负载监控器405A可以收集和监控来自第一设备200A的规格值。第二负载监控器405N可以收集和监控来自第二设备200N的规格值。第三负载监控器405可以收集和监控来自第一和第二设备200A-200N的规格值。负载监控器405A-405N可以以任意类型的调度或者预定频率来收集和/或监控规格。在一些实施例中,负载监控器405响应于事件的检测来收集规格。
    【0206】在步骤565,设备200从一个或者多个设备500A-500N、服务器或者服务器群组经由任一类型和形式的网络管理协议来收集和/或监控规格520A-520N’。在一些实施例中,设备500A-500N与设备200不同类型或者异类。在其他实施例中,一个或者多个设备500A-500N与一个或者多个其它的设备500A-500N不同类型或者异类。在一个实施例中,设备200收集和/或监控通过设备建立的、确定的或者以其他方式选择的规格520。在另一个实施例中,设备200收集和/或监控通过用户建立的、确定的或者以其他方式选择的规格520。在一些实施例中,设备200使用诸如SNMP的第一类型或者版本的网络管理协议来从第一设备500A收集规格并且使用诸如SNMP或者CIMS的第二类型或者版本的网络管理协议来从第二设备500N收集规格。
    【0207】设备200的一个或者多个负载监控器或者监控代理405A-405N可以被配置、构建或者实现为经由网络管理协议来识别、收集和/或监控来自一个或者多个设备500A-500N的规格。第一负载监控器405A可以收集和监控来第一设备500A的规格值。第二负载监控器405N可以收集和监控来自第二设备500N的规格值。第三负载监控器405可以收集和监控来自服务器106或者服务器群组38的规格值。在其他实施例中,多个监控器405A-405N可以收集和/或监控来自多个设备500A-500N和/或服务器106的规格。负载监控器405A-405N可以以任意类型的调度或者预定频率来收集和/或监控规格520A-520N的任意一个。在一些实施例中,负载监控器405响应于事件的检测来收集规格520A-520N’。
    【0208】在步骤570,设备确定用于一个或者多个设备200A-200N、500A-500N、服务器、服务器群组或者服务的每一个的负载。在一些实施例中,vServer 275经由负载监控器405所收集和监控的规格信息来确定用于每一服务270的负载440。在另一个实施例中,负载监控器405确定用于所被监控的设备、服务器或者服务的负载440。
    【0209】设备200、vServer 275和/或负载监控器405可以使用用户指定的权重435所加权的用户选择的规格430来确定负载440。在一些实施例中,设备200和/或负载监控器405使用用户指定的权重435所加权的多个用户选择的规格430来确定负载440。在又一个实施例中,设备200和/或负载监控器405使用用户选择的规格430和用户识别的权重435和设备建立的规格410和设备建立的权重435来确定负载。在进一步的实施例中,设备200通过将对于每一个规格的加权负载相加来确定负载440。对于每个服务270多个监控器405A-405N的实施例,设备200通过分配权重到每个监控器并且计算所有监控器405的加权负载来确定用于设备、服务器或者服务的负载。在又一个实施例中,设备可以通过分配权重给每个设备、服务器或者服务来确定用于设备、服务器或者服务的负载。
    【0210】在一些实施例中,负载监控器405确定用于设备、服务器或者服务的规格530已经达到或者超过阈值437。在其他实施例中,负载监控器405确定用于设备、服务器或者服务的规格530在阈值437的范围内。在一个实施例中,负载监控器405使用设备建立的或者提供的阈值用于规格530。在另一个实施例中,负载监控器405使用用户指定的或者配置的阈值437。
    【0211】在步骤575,设备200接收从客户机访问服务的请求。在一个实施例中,设备200的虚拟服务器或者vServer 275拦截或者以其他方式接收来自客户机的请求。在一些实施例中,虚拟服务器275透明地拦截到服务270或者服务器106的客户机请求。在其他实施例中,客户机102将请求发送到vServer 275。在另一个实施例中,vServer 275从该请求确定请求是用于设备200所管理的一个或者多个服务。在一个实施例中,vServer 275经由客户机和设备200之间的SSL VPN连接拦截或者接收请求。
    【0212】在步骤580,设备200基于对于设备200A-200N、服务器106或者服务270A-270N中的每一个的负载440的确定来确定设备200A-200N、服务器106或者服务270A-270N中的哪一个引导客户机请求。在一个实施例中,vServer 275响应于一个或者多个负载监控器405来引导请求。在一些实施例中,vServer 275将请求引导、转发或者以其他方式发送到具有最少或者最小负载的设备200A-200N、500A-500N、服务器或者服务。在一个实施例中,vServer 275将请求引导、转发或者以其他方式发送到具有较低确定的负载的其中一个的设备200A-200N、500A-500N、服务器或者服务。在一些实施例中,vServer 275将请求引导、转发或者以其他方式发送到之前处理来自客户机102的请求的设备200A-200N、500A-500N、服务器或者服务。在一个实施例中,如果设备200A-200N、500A-500N、服务器或者服务的负载在预定阈值内,vServer275将请求发送到之前使用的设备200A-200N、500A-500N、服务器或者服务。在一些实施例中,vServer 275将请求发送到具有预定阈值内的确定负载的列表中第一可用的设备200A-200N、500A-500N、服务器或者服务。
    【0213】在另一个实施例中,vServer 275使用循环技术或者加权循环将请求引导、转发或者以其他方式发送到设备200A-200N、500A-500N、服务器或者服务。在又一个实施例中,vServer 275基于诸如设备收集的规格410或者装置提供的规格420的一个或者多个规格将请求引导到设备200A-200N、500A-500N、服务器或者服务。例如,在一些实施例中,vServer 275基于以下一个或者多个将请求引导到设备200A-200N、500A-500N、服务器或者服务:最少响应或者往返时间、连接的最少数量、分组的最少数量和最少使用的带宽。在又一些实施例中,vServer 275基于一个或者多个装置提供的规格530将请求引导到设备200A-200N、500A-500N、服务器或者服务,规格530诸如CPU、存储器和磁盘资源使用。在另一个例子中,vServer 275基于设备200A-200N、500A-500N、服务器或者服务器的资源使用或其上的资源使用将请求引导到设备200A-200N、500A-500N、服务器或者服务。
    【0214】在一些实施例中,vServer 275在对于服务270的规格已经超过诸如用户配置的阈值437的阈值437时可以不将请求引导到设备200A-200N、500A-500N、服务器或者服务。在其他实施例中,vServer 275在如果对于设备200A-200N、500A-500N、服务器或者服务的规格530的多于一个的阈值437已经超过时可以不将请求引导到设备200A-200N、500A-500N、服务器或者服务。在又一个实施例中,甚至当规格阈值437已经达到或者超过,则vServer 275可以将请求引导到设备200A-200N、500A-500N、服务器或者服务。例如,如果多个阈值437的一个规格阈值437已经超过,则vServer 275仍旧在其他规格阈值没有达到时将请求引导到设备200A-200N、500A-500N、服务器或者服务。
    【0215】仍旧在其他实施例中,设备200从负载监控确定第一GSLBvServer 275A的规格已经达到阈值437。响应于该确定,设备200可以将设备200A-200N、500A-500N、服务器或者服务的管理溢出到第二GSLB虚拟服务器或者vSever 275B。在一个实施例中,第二虚拟服务器275B可以是备份GSLB服务器。在一些实施例中,响应于检测到第一GSLB虚拟服务器275A已经达到一个或者多个阈值来建立第二GSLB虚拟服务器275B。在另一个实施例中,第二GSLB虚拟服务器275B可以建立并且运行在设备200上。
    【0216】在步骤580,设备200将客户机请求发送到在步骤585设备识别的设备200A-200N、500A-500N、服务器或者服务。在一个实施例中,设备200将客户机请求以透明方式发送到设备200A-200N、500A-500N、服务器或者服务,使得请求呈现出已经从客户机发送而不是从设备200。例如,设备200可以用作对客户机102的透明或者拦截代理。在其他实施例中,设备200用作非透明代理并且代表客户机将请求发送到设备200A-200N、500A-500N、服务器或者服务。在一些实施例中,vServer 275将请求发送给设备200A-200N、500A-500N、服务器或者服务。在其他实施例中,备份vServer275将请求发送给设备200A-200N、500A-500N、服务器或者服务。在又一些实施例中,第二vServer 275将请求发送给设备200A-200N、500A-500N、服务器或者服务。
    【0217】尽管图5A-5C的系统和方法总的关于全局服务器负载平衡讨论,但是这些系统和方法可以用于本地负载平衡。设备200可以使用从使用多个协议的异类装置、服务器或者服务获取的规格来负载平衡一个或者多个服务或者服务器。使用此处描述的技术,设备200可配置地并且灵活地使用由设备支持的规格交换协议和/或由网络资源支持的更普遍的网络管理协议来从任一网络资源获取规格,网络资源诸如系统、子系统、应用、服务、装置等等。此外,设备200可配置地允许用户从这些异类网络资源选择可用规格的任一组合来执行一个或者多个服务的负载监控和负载平衡。
    【0218】现在参考图6,描述用于使用阈值来执行负载平衡的方法600的步骤的实施例。在一个实施例中,图6的方法600的技术可以在本地负载平衡的上下文中实现,诸如使用图4A中描述的设备200和图4B的方法450。在其他实施例中,图6的方法600的技术可以在全局负载平衡的上下文中实现,诸如在图5A的环境和图5B的方法550中。总的来说,设备建立对于任意一个规格的阈值用来监控vServer 275、服务、设备200、500或者一个或者多个服务器。在步骤620,设备监控对于由设备管理的并且考虑所建立的阈值的装置、服务、vServer和/或服务器的规格。在步骤625,设备可以接收诸如传输层连接请求的客户机请求。在步骤630,设备确定规格的阈值是否已经达到或者超过。如果没有,装置、vServer、服务或者服务器被包括在步骤635的负载平衡决策中。如果阈值已经达到或者超过,则设备在步骤640可以将装置、vServer、服务或者服务器排除出负载平衡决策中。在步骤645,设备可以确定来将客户机请求重定向到另一个资源来旁路设备。在步骤650,设备确定客户机请求是否和被配置为稳定或者持久的会话相关联。如果是,在步骤655,设备将请求提供到处理对客户机的连接或者会话的装置、服务、vServer 275或者服务器。如果不是,则在步骤660,任一可用的装置、服务、vServer275或者服务器可以处理客户机请求。
    【0219】在进一步的细节中,在步骤610,设备可以建立一个或者多个vServer 275来管理连接并且引导从多个客户机到多个服务270、其它vServer 275、服务器106和其他设备和装置的请求。设备可以管理一个或者多个资源,可以包括vServer 275、服务器06、服务器群组38、服务270、设备200、设备500、负载平衡装置或者任意其他装置。在一些实施例中,设备200可以被配置为提供对一个或者多个服务270和/或服务器的本地负载平衡。在另一个实施例中,设备200可以具有被配置为管理其它vServer 275A-275N的第一vServer 275。在其他实施例中,设备200可以被配置为提供对多个本地负载平衡装置的全局负载平衡。在另一个实施例中,设备200可以提供其他设备200、500和/或服务器或者服务的负载平衡。
    【0220】进一步到步骤610,设备可以建立或者以其他方式提供所建立的任意一个规格的阈值用于监控所管理的任意资源并且提供负载平衡决策。设备可以建立用于用户选择的规格430、设备选择的规格410或者装置提供的规格420的任意一个的阈值。在一个实施例中,用户可以指定或者选择规格的阈值。例如,设备可以建立由设备的用户或者管理员配置的阈值。在另一个实施例中,可以由设备通过经由监控代理或者负载监控器监控规格来初始确定阈值。在一些实施例中,设备200可以使用默认或者预定的阈值。例如,设备可以使用和服务的类型或者规格的类型相关联的或者基于其的预定的阈值。
    【0221】在步骤620,设备可以监控所管理的任一资源的状态,诸如任一服务、服务器、vServer、或者诸如另一个设备200、500的装置。在一个实施例中,设备可以使用监控代理420。在另一个实施例中,设备可以使用多个监控代理420。在一个实施例中,设备可以以预定时间间隔来监控每一个服务的状态,例如每一次每个.01、.1、.2、.5或者1秒。在另一个实施例中,设备可以不同步地或者基于诸如客户机或者用户请求的任一事件来监控每个资源的状态。
    【0222】在步骤620,设备确定和监控被选为用于负载平衡的规格。负载监控器420可以查询、计算、确定或者以其他方式获得规格的值并且将该值与指定或者对应的阈值相比较。在一个实施例中,设备确定规格的值并且以预定频率将该值与阈值相比较。在另一个实施例中,基于事件的触发,设备确定规格的值并且将该值和阈值相比较。在一种情况中,在用户的请求时,设备确定规格的值并且将该值和阈值比较。在一些实施例中,设备可以基于规格测量来动态调整规格的阈值。在其他实施例中,设备可以基于设备、vServer 275、网络连接、服务270、服务器或者装置、或者由设备所管理的任意其它资源的性能和/或者操作特征来动态调整阈值。
    【0223】在步骤625,设备可以接收客户机请求。在一个实施例中,设备作为透明拦截装置来拦截客户机请求。在另一个实施例中,客户机作为代理将请求发送到设备。在一些实施例中,设备接收客户机请求来打开或者建立传输层连接。在其他实施例中,设备接收客户机请求来经由之前建立的传输层连接访问服务。传输层请求可以从包括客户机102、服务器106或者第二设备200的任一计算装置接收。在一个实施例中,请求可以识别服务270的类型。例如,传输层请求可以包括对于HTTP服务的请求。或者例如,传输层请求可以包括对于UDP服务的请求。
    【0224】在步骤630,设备可以确定对于所管理的资源的规格的值是否已经达到或者超过规格的阈值。该设备可将规格的当前值和阈值的当前值进行比较。在其他实施例中,负载监控器405可以已经确定规格的阈值已经达到或者超过。在另一个实施例中,设备200可以响应于接收客户机请求来确定阈值是否已经达到或者超过。
    【0225】如果规格的阈值没有超过,在步骤635设备可以经由负载平衡决策来提供客户机请求到任意一个可用装置、服务、vServer或者服务器。在一些实施例中,如果多个规格的任意一个超过规格阈值,则在步骤635资源可以仍旧在负载平衡决策中考虑。
    【0226】如果阈值已经超过,则在步骤640,设备可以将资源从负载平衡决策中排除。在一些情况中,如果所有用来监控资源的规格已将超过,则设备将资源从负载平衡决策中排除。在其他情况中,如果预定数量的规格超过他们对应的阈值,则设备将资源从负载平决策中排除。仍旧在其他情况中,如果加权数量的规格超过他们对应的阈值,则设备可以将资源从负载平衡决策中排除。
    【0227】如果设备确定装置、服务、vSever、或者服务器的阈值920已经超过,则在步骤940设备可以建立、使用或者以其他方式溢出到第二装置、服务、vServer或者服务器。诸如设备200’或者500’的第二装置或者第二vServer或者服务器可以提供对多个服务270的访问。该设备随后可以建立和/或调整用于第二资源的阈值。设备可以在步骤655提供客户机请求给第二资源。
    【0228】在其他实施例中,如果一个或者多个规格的阈值已经超过,则设备可以将做出请求的客户机重定向到另一个资源。在一个实施例中,设备可以将URL发送到包括服务器106或者服务270的地址的客户机,使得客户机可以旁路该设备200并且直接访问服务器106或者服务270。在一个实施例中,设备可以将URL发送到包括第二设备200或者500的地址的客户机。仍旧在另一个实施例中,代表客户机,设备200可以将客户机请求重定向到第二设备200或者500,或者任意其它资源。
    【0229】在步骤650,设备200可以确定做出请求的客户机是否具有和诸如服务、vServer、装置或者服务器的资源的之前存在的连接或者会话。在一些情况中,客户机连接或者会话不稳定或者持久,并且在步骤660设备使用任一可用资源对于请求做出负载平衡决策。在其他情况中,客户机连接或者会话不稳定或者持久,并且在步骤655,设备提供请求到处理客户机102的会话或者连接的资源。
    【0230】在一些实施例中,设备可以分配优先权以将请求从客户机提供到之前已经服务过的或者当前正在服务的来自客户机的连接或者会话的资源。例如,如果请求从客户机接收,并且客户机具有和vServer服务、服务器或者装置的当前存在的连接,则设备200可以甚至在对应的规格已经可以达到或者超过阈值时提供请求到vServer、服务、服务器或者装置。或者例如,如果客户机具有经由备份或者溢出资源的之前的连接,并且所管理的原始资源随后下降到阈值之下,则设备200可以仍旧从客户机提供请求到备份资源。在一个实施例中,设备可以记录之前建立或者当前的连接或者会话,使得来自客户机的输入请求可以被提供到具有从客户机之前服务过的连接或者会话的资源。
    【0231】此外,设备考虑步骤620的阈值可以持续监控规格来动态管理负载平衡和将客户机请求引导到合适或者适当的资源。在一些实施例中,设备确定资源忙、不可用或者超过其阈值。相应地,设备可以将客户机引导到或者提供客户机请求到另一个资源。在一些实施例中,设备具有多个管理服务270的资源并且基于每一资源的监控的规格和/或规格阈值的比较来确定哪个资源来引导客户机请求。在一个情况中,设备基于具有对于所监控规格的最小值的资源而将客户机请求提供到多个资源的其中一个。在另一个情况中,设备将客户机请求提供到具有所监控的规格和规格的阈值之间最大差值的资源。
    【0232】在不脱离本发明的精神和保护范围的情况下,本领域内的普通技术人员可以作出多种变化和修改。因此,必须明确理解已经描述的所示实施例仅用于示例并且不应该被视为限制本发明,本发明是由下面的权利要求书限定。即使以上示例中所示出和描述的内容在其它方面不相同,这些权利要求可以被理解为包括文本所提出的内容以及非实质上不同的等价因素。

    关 键  词:
    用于 基于 用户 选择 规格 进行 负载 平衡 系统 方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:用于基于用户选择的规格进行负载平衡的系统和方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-1038310.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1