用于遍布机群进行通信量整形的方法

文档序号:7677909阅读:255来源:国知局
专利名称:用于遍布机群进行通信量整形的方法
技术领域
本发明涉及计算机联网,并且更具体地涉及用于遍布具有多个机群成员
的网络机群实现通信量整形(traffic shaping )过程的方法。
背景技术
以下描述和示例只作为背景给出。
在计算机联网的背景中,术语"可用性(availability)"通常指不管环境 如何网络节点响应请求的能力。例如,持续可用的节点其特征可能在于在给 定期限(例如, 一年)内基本没有停机时间(downtime )。然而,因为大多数 网络节点经历至少 一定量的停机时间,所以它们的特征典型地在于具有某种 水平的可用性。例如,"高可用性,,节点可以描述为具有大约99.9%的正常运 行时间(uptime),其可以转化为每年若干小时的计划的停机时间。
更具体地,术语"高可用性"通常指维持对网络进程(process)和相关 数据的高水平访问而不包括质量用户经历。受益于或力争维持高可用性的网 络进程包括但不限于管理进程、防火墙进程、负载平衡进程、操作系统进 程和各种类型的服务器进程(例如,HTTP服务器、应用服务器和数据库服
务器进程)。高可用性还可能是各种类型的网络数据(尤其是如由应用服务器 使用的应用数据、持续会话数据、安全数据和事务处理日志文件)所希望的。
集群(clustering)是一种用于实现高可用性的方法。在许多情况下,"机 群(cluster)"可以描述为跨越局域高速网络(即,高速局域网或LAN)耦合 在一起的两个或多个机器(称为"机群成员")。机群成员可以经由任何网络 拓朴(例如,经由总线、星形、环形或网格配置)连接到LAN。尽管不是典 型情况,但是驻留在不同地理位置的机群成员可以跨越广域网或WAN(因特 网是其一个示例)耦合。耦合到LAN 110的网络机群100的一般描述在图1 中图示。图1中的点线代表机群成员跨越WAN 120耦合的可能性。
高可用性机群通过提供冗余节点改进服务的可用性,每个冗余节点被配 置用于运行(各)公共应用程序。万一一个节点出现故障,该配置使得各节点(即,各机群成员)能够分担工作负载并且承担额外负载。高可用性机群 通常用于实现关键数据库、网络上分享的文件、商业应用和顾客服务,如电 子商务网站。
在一些情况下,可以在同一物理机器上定义多个机群成员(即,垂直扩
展(scaled)机群),以便以更有效的方式将可用的处理能力分配给该机器。
在其它情况下,可以跨越多个机器创建机群成员(即,水平扩展机群)。后者 使得单个应用程序可以在若干不同的机器上运行,同时呈现单系统图像。这 允许客户机请求遍布若干不同的机器分布,该客户机请求否则将压到
(overwhelm)单个机器。在一些情况下,当创建机群时可以使用垂直和水平 扩展的组合,以便获得两种技术的益处。
术语"网络通信量(traffic)控制"典型地指管理、区分优先次序、控制 或减少网络通信量以便减少拥塞、延迟和分组丢失的处理。除了其它特征外, 网络通信量控制包括带宽管理和接纳控制过程。
"带宽管理"通常描述为测量和控制网络链路上的通信量的处理,以便 i)避免填满链路的容量,或ii)过量填充链路,这将导致网络拥塞和不良的 性能。两种通常的带宽管理技术包括速率限制和通信量整形。
"速率限制"控制在网络接口上发送或接收通信量的速率。发送小于或 等于指定速率的通信量,而丢弃或延迟超过该速率的通信量。速率限制典型 地通过制定策略(policing)(即,丢弃过度的分组)、排队(即,延迟传输中 的分组)或控制拥塞(即,操纵协议的拥塞机制)执行。执行速率限制的设 备称为"速率限制器"。
"通信量整形,,通常描述为尝试控制网络通信量,以便最优化或保证性 能、低延迟和/或带宽。通信量整形算法通常处理分类、队列规则、策略执行、 拥塞管理、服务质量(QoS)和公平性的概念。最普通的通信量整形算法是 令牌桶(Token Bucket)和漏桶(Leaky Bucket)算法。
令牌桶算法基于桶中"令牌,,的存在指示何时可以发送通信量。例如, "令牌桶"可以包含最多b个令牌(通常表示特定数目的字节)。每l/r秒添 加一个"令牌"到桶中(称为令牌再生速率)。如果当令牌到达时桶是满的, 则丢弃该令牌。当n字节的分组到达时,从桶中移除n个令牌并且将分组发 送到网络。然而,如果少于n个令牌可用,则不从桶中移除令牌,并且认为 该分组不符合。不符合的分组可以被i)丢弃,ii)排列用于随后当桶中已经积累足够的令牌时发送,或iii)发送但标记为不符合,使得如果网络变得 超载则不符合的分组随后可以被丢弃。因此,令牌桶算法通过对平均数据传 输速率施加限制来控制注入网络的数据量。换句话说,如果桶中存在足够的
令牌则令牌桶算法允许要发送的数据的"突发(burst)"(直到其峰值突发速
率),并且适当地配置突发阈值。
漏桶算法通过对数据传输速率施加硬性限制而不同于令牌桶算法。例如, 想象进入分组是放入在底部有"洞"的桶中。如前所述,桶可以保持高达6 字节。如果当桶满时分组到达,则丢弃该分组。不同于令牌桶,允许分组以 每秒/字节的恒定速率滤出"漏"桶。这种过滤(通过在各分组之间实施间 隔)对数据传输速率施加硬性限制并且产生平滑突发数据的效果。
通常,术语"接纳控制"指基于某种标准监视、控制和实施网络资源和
服务的使用的能力。例如,在力争提供服务质量(QoS)的网络中,接纳控 制过程可以用来基于各种优先级设置、策略和/或可用带宽来接受或拒绝用户 会话(或单个流)。服务水平协定(SLA)表示一种方式,其中例如可以由服 务或请求者(即,用户或客户机)实施接纳控制概念,以便给请求者提供保 证的服务水平(例如,对正常运行时间、延迟、每个故障的恢复时间、分组 丢失等的特定保证)。存在其它类型的接纳控制。
大多数用于接纳控制的方法提供对分组或传输水平请求的速率限制实 施。例如,通常的接納控制算法想象具有施加于进入受保护的网络节点的消 息速率的限制的桶。每次处理新消息时将令牌添加到该桶。在每个间隔(例 如,每秒)后清除桶内容,以便提供速率限制而不在各消息之间实施间隔。 该滑动窗口方法通常被称为"速率限制器桶",并且只在活动通信量的时段期 间使用。
尽管传统的带宽管理和接纳控制过程适合一些网络,但是它们不适于包 括机群的网络。因此,仍然需要能够用于保护网络资源、服务和在集群环境 中运行的应用程序的改进的过程。

发明内容
用于控制发送到网络机群的网络通信量的分布的网络和方法的各种实施 例的以下描述不以任何方法解释为限制权利要求的主题。
根据一个实施例,这里提供一种网络,包括多个网络资源和具有多个机群成员的至少一个网络机群。如下面更详细描述的,机群的每个成员可以分 别地被配置用于利用一个或多个网络资源和跟踪其使用。在一些情况下,机 群成员可以驻留在单个物理机器或可以遍布多个机器分布。在大多数情况下,
机群成员可以经由高速局域网(LAN)耦合到一起。不管拓朴,机群的每个 成员可以包括用于控制发送到网络机群的网络通信量的分布的通信量整形软 件。
例如,机群的每个成员可以包括用于跟踪该成员对特定网络资源的使用 的局部令牌桶。机群的至少一个成员(例如,"保留(reservation)协调者") 可以包括第一组计算机可执行指令,用于以第一速率(即,最大平均持续速 率)接收去往该网络资源的网络通信量。此外,保留协调者可以包括第二组 计算机可执行指令,用于在各机群成员的至少一个子集之内分布该第一速率。 分布到该子集的每个成员的速率量可以对应于用于各个局部令牌桶的再生速 率。在一些情况下,该第二组计算机可执行指令可以进一步配置用于在该子 集的活动成员之间分布突发。如下面更详细描述的,突发分配可以在该子集 的活动成员之间稍微平均地分布。然而,可以使用任何突发分布。
在一些情况下,机群的每个成员可以包括第三组计算机可执行指令,用 于改变该第一速率如何在子集的各成员之间分布。例如,该第三组计算机可 执行指令可以包括用于尝试保留该第 一速率的较大部分的第四组计算机可执 行指令,以及用于尝试保留该第一速率的较小部分的第五组计算机可执行指 令。如下面更详细描述的,该第四组指令可以用来保留用于满足客户机请求 的额外的速率容量,而该第五组指令可以用来将速率容量释放回机群用于重 新分布。
根据另 一个实施例,这里提供一种用于控制发送到具有多个机群成员的 网络机群的网络通信量的分布的方法。在一些情况下,该方法可以通过以第 一速率接收去往特定网络资源的网络通信量开始。如下面更详细描述的,该 网络通信量可以包括多个客户机请求,每个请求具有为其分配的权重。接下 来,该方法可以在机群成员的至少一个子集之内分布该第一速率。如上所述, 该子集中的每个成员可以包括用于特定网络资源的局部令牌桶。分布到该子 集内的每个成员的速率量可以对应于用于各个局部令牌桶的再生速率。
该方法还可以在该子集的活动成员之间分布突发。在一些情况下,基本 相等的速率和突发量可以分布到该子集的每个成员。在其它情况下,分布到该子集的一个或多个成员的速率量和突发量可以不同于分布到该子集的其它 成员的速率量和突发量。不管特定的速率分布,分布到该子集内的每个成员 的速率的和应该基本等于该第一速率。同样地,分布到该子集内的每个成员 的突发分配的和应该基本等于该网络机群的总突发输出。如果该子集的一个 或多个成员出现故障或离线,则总突发输出可以在该子集的剩余活动成员之 间重新分布。
在分布该第一速率后,该方法可以包括将一个客户机请求指向该子集中 的一个成员,并且访问存储在该一个机群成员内的局部令牌桶,用于跟踪特 定网络资源的使用。通常来说,局部令牌桶可以包含当前数目的令牌,并且 可以被配置用于以等于分配给该令牌桶的再生速率的第二速率接收额外令 牌。在一些情况下,如果包含在该局部令牌桶内的令牌的当前数目大于或等 于分配给该客户机请求的权重,则可以从该局部令牌桶消耗(等于分配给该 一个客户机请求的权重的)若干令牌。然而,如果该局部令牌桶内剩余不足 数目的令牌来满足客户机请求,则可以不消耗令牌。
接下来,不管是否实际消耗令牌,该方法可以尝试增加分配到局部令牌 桶的再生速率。例如,可以发送保留请求到被配置用于确定何时满足保留请 求的估计算法。该估计算法可以基于网络通信量的某种特性返回保留量。
如果以基本稳定的通信量流接收客户机请求,则由该估计算法返回的保 留量可以只依赖于接收该保留请求的时间。例如,如果在指定的沉默时段内 发送该保留请求,则该估计算法可以返回零保留量。另一方面,如果在指定 的沉默时段结束后发送该保留请求,则该估计算法可以返回非零保留量。
然而,如果在网络通信量的突发中接收该客户机请求,则该保留量还可 以依赖于机群成员的各种特性。例如,该方法可以对特定网络资源确定由机 群成员接收的全部网络通信量的当前速率消耗趋势。该当前速率消耗趋势可 以通过比较在当前时间段期间接收的网络通信量的平均速率与在之前时间段 期间接收的平均速率来确定。(i)如果当前时间段的平均速率高于之前时间
段的平均速率,则该当前速率消耗趋势可以被认为是增加的,(ii)如果当前 时间段的平均速率等于之前时间段的平均速率,则该当前速率消耗趋势可以 被认为是稳定的,或(iii)如果当前时间段的平均速率低于之前时间段的平 均速率,则该当前速率消耗趋势可以被认为是减小的。
在一些情况下,如果(a)在指定的沉默时段内发送该保留请求,或(b)一个机群成员的当前速率消耗趋势是减小的或稳定的,并且分布到该一个机 群成员的速率量大于零,则该估计算法可以返回零保留量。在其它情况下, 如果在指定的沉默时段结束后发送该保留请求,则该估计算法可以返回非零 保留量。
在从估计算法接收非零保留量时,可以发送保留请求到保留算法。如果 在机群中存在足够的速率容量以满足保留请求,则可以准许该保留请求。例 如,保留算法可以比较(存储在局部令牌桶内的)全部机群成员的当前速率 消耗与用于整个机群的最大平均持续速率。如果由机群成员请求的额外速率
容量使得全部成员的组合保留容量超过最大平均持续速率,则保留算法可以 拒绝该保留请求并且返回零保留量。否则,保留算法可以接受该保留请求并 且返回保留量。如果接受该保留请求,则通过将该非零保留量加到用于局部 令牌桶的再生速率,增加分布到才几群成员的速率量。
除了保留额外速率容量外,这里还提供用于将速率容量释放回机群以用 于重新分布给其它的机群成员的方法。
优选地,该方法还包括如果子集的一个或多个机群成员出现故障或离 线,则在子集的活动成员之间重新分布总突发输出。
在优选实施例中,提供一种网络,包括多个网络资源;以及具有多个 机群成员的网络机群,机群的每个成员可以分别地被配置用于利用一个或多 个网络资源和跟踪其使用。优选地,每个机群成员包括分开的数据库,该数 据库包含用于跟踪该成员对一个或多个网络资源的使用的一个或多个令牌 桶。更优选地,该机群的至少一个成员包括第一组计算机可执行指令,可 被配置用于以第 一速率接收去往特定网络资源的网络通信量,该网络通信量 包括多个客户机请求;以及第二组计算机可执行指令,可被配置用于在各机 群成员的子集之内分布该第一速率,其中该子集内的每个成员保持用于该特 定网络资源的局部令牌桶,并且其中分布到该子集内的每个成员的速率量对 应于用于各个局部令牌桶的再生速率。更优选地,该第二组计算机可执行指 令还可被配置用于在该子集的各活动成员之间分布突发。
在优选实施例中,机群的每个成员包括第三组计算机可执行指令,用于 改变该第一速率如何在子集的各成员之间分布。优选地,该第三组计算机可 执行指令包括第四组计算机可执行指令,用于尝试保留该第一速率的较大 部分;以及第五组计算机可执行指令,用于尝试保留该第一速率的较小部分。更优选地,该第四组计算机可执行指令在任何给定时间只由该子集的一个成 员执行。更优选地,该第五组计算机可执行指令由该子集的全部成员立刻执 行。


在阅读以下详细描述并参照附图时,本发明的其它优点将变得明显,附
图中
图l是图示网络机群的一般描述的方块图2是图示应用程序和数据库服务器可以耦合来形成机群的一种方式的 方块图3是图示根据本发明的一个实施例的速率限制树或速率限制器桶树的 方块图4是图示根据本发明的另一个实施例的速率限制树或速率限制器桶树 的方块图5是图示可以用于处理请求的改进的接纳控制算法的一个实施例的流
程图6是图示在图5的接纳控制算法中、估计算法可以用来确定何时保留 额外速率容量的 一种方式的流程图7是图示在图5的接纳控制算法中、估计算法可以用来确定何时释放 速率容量的一种方式的流程图8是图示各机群成员可以跟踪各网络资源的使用的一种方式的方块
图9是图示可以用于处理请求的改进的通信量整形算法的一个实施例的 流程图IO是图示在图9的通信量整形算法中、估计算法可以用来确定何时保 留额外速率容量的一种方式的流程图;以及
图ll是图示在图9的通信量整形算法中、估计算法可以用来确定何时释 放速率容量的 一种方式的流程图。
尽管本发明允许各种修改和替代形式,本发明的各特定实施例通过附图 中的示例示出,并且将在这里详细描述各特定实施例。然而,应该理解,附 图和对附图的详细描述不旨在将本发明限制于公开的特定形式,相反,本发明覆盖落入如权利要求限定的本发明的精神和范围的所有修改、等价物和替 代物。
具体实施例方式
在许多情况下,网络机群定义为^^越局域网(LAN)或广域网(WAN) 耦合在一起的两个或者多个机器("机群成员,')。通常,可以创建网络机群以 便i)通过遍布各机群成员分布工作负载来提供负载平衡,ii)通过在各机 群成员间划分计算任务改进性能,或iii)通过提供运行(各)公共应用程序 的冗余节点来改进各服务的可用性。被实现来改进服务的可用性的各机群典 型地称为"高可用性机群"。
在一个示例中,高可用性机群可以包括被一起管理并且参与工作负载管 理(WLM)的一组应用服务器。参与机群的应用服务器(即,机群成员)可 以在同一网络节点或不同节点上实现。因此,"机群"更普通地描述为参与该 机群的(各)机器和与这些(各)机器相关联的工作负载容量的逻辑表示。 除了应用服务器外,机群可以通过耦合其它类型的服务器和系统(如HTTP 服务器、负载平衡器、数据库服务器和其它数据存储介质)创建。
图2图示一组应用服务器(例如,应用服务器1-4)可以跨越多个网络 节点(例如,节点A和B)集群到一起的一种方式。在大多数情况下,各网 络节点可以跨越高速LAN耦合,尽管在其它情况下可以使用WAN。在图2 的特定示例中,集群的应用服务器垂直和水平扩展,以便最优化处理能力并 且分布工作负载,同时维持单系统图像。此外,图2中示出的配置通过创建 数据库服务器(例如,DB 1和DB 2 )的机群来支持数据故障保护(failover )。 根据需要,还可以创建没有在此具体图示的其它机群配置。
在一些情况下,借助于负载平衡器(LB )和HTTP服务器,工作负载(即, 发送到机群的请求量)可以在各机群成员(应用服务器1-4)之间分布或"平 衡"。为了改进服务的可用性,部署到机群的各应用程序在全部机群成员上同 时运行。在一些情况下,通过实现工作负载管理(WLM)和故障保护过程, 可以提供高可用性。例如,工作负载管理可以允许机群成员共享工作负载, 并且通过控制请求被路由到各机群成员的方式来改进客户机请求的吞吐量。 如果机群内的服务器出现故障,则任何正被发送到出现故障的服务器的客户 机请求可以重新定向到一个剩余的活动服务器。典型地执行这种故障保护而不中断服务或要求对客户机部分的任何特别动作。
在一些情况下,图2中示出的应用服务器可以利用用于监视各服务器和
在各服务器上运行的各应用程序的健康的高可用性架构。例如,可以在由IBM 开发的网络范围应用服务器(WAS)中发现高可用性架构的一个示例。网络 范围应用服务器运行被设计来跨越使用Web服务技术的多个计算平台建立、 操作和集成电子商务应用的专有IBM软件。WAS的网络部署版本6.0支持具 有故障保护支持的集群单元配置的部署,并且提供代理服务器、负载平衡和 基于内容的路由。
高可用性架构提供许多关键特征,包括但不限于i)组成员资格(即, 区分机群的成员为属于一个组的能力),ii)协调者选择(即,选择机群的一 个或多个成员作为协调者的能力),iii)组间消息传输(即,发送消息到组中 的各成员的能力),以及iv)虚拟同步(即,通过在快速、低延迟LAN上进 行消息传输来虚拟地实现同步操作的能力)。如下面更详细描述的,原先包括 在WAS内的高可用性架构已经由本发明更新来提供用于集群的环境的接纳 控制和通信量整形过程。然而,这里描述的发明概念不限于WAS环境,而基 本可以应用于^H可片几群。
大多数现有技术的接纳控制和通信量整形算法在位于网络的边界或"边 缘"的边缘路由器内局部地运行。由这些算法使用的速率限制和桶内容典型 地对网络内的每个机器实施/追踪。为此,现有技术的接纳控制和通信量整形
算法通常不可用于集群的环境,集群的环境可能期望实施用于在多个机群成 员之间共享的各个应用程序、服务和/或操作的速率限制和桶内容。此外,现
有技术的算法不能简单地适应速率分布的变化,如可能出现在依赖于会话亲 缘性(affinity)(即,在初始连接后禁用工作负载管理并且强迫客户机的请求 被发送到同一服务器的条件)的服务和应用中的速率分布的变化。
依赖于会话亲缘性的服务和应用的示例包括电子商务网站和贯穿会话维 持用户信息(例如,用户购物车)的其他Web服务。在一个示例中,会话亲 缘性可以依赖于连结使用相同的后端数据库的各请求的Web应用。所述各请 求被路由到同一应用服务器,以便避免数据库错误。此外,利用会话初始协 议(SIP)的应用依赖于会话亲缘性,以用于将给定会话的全部请求路由到特 定应用服务器。
为了克服前述问题,已经更新高可用性架构,以便提供用于跨越机群的多个成员分布速率限制和桶内容的手段。还提供用于监视和控制机群成员之 间的速率限制和桶内容的分布的改进的接纳控制和通信量整形算法。这使得 算法能够适应(用于接纳控制的)速率分布和(用于通信量整形的)突发分 配的变化。例如,如果到机群的速率分布变化(但没有超过全局速率限制), 则改进的接纳控制算法允许速率根据新的分布在机群的各成员之间重新均 衡。改进的通信量整形算法使用类似的方法,万一一个或多个机群成员出现 故障或离线,则该方法在活动的机群成员之间重新分布突发分配。
图3-11图示本发明的各个方面。例如,图3-4展示可以遍布多个机群成 员(例如,成员l...N)以分级方式分布速率限制的各种方式。如下面将更具 体描述的,速率限制树可以用于遍布各机群成员以及由这些成员提供的各种 服务、应用和操作分布速率限制。在图5-7中提供流程图来图示根据本发明 的改进的接纳控制算法的一个实施例。在图9-11中提供另外的流程图来描述 改进的通信量整形算法如何用来监视和控制网络资源的使用。图8图示可以 在各机群成员之间动态分布和跟踪资源的突发分配的 一种方式。
这里描述的改进的接纳控制和通信量整形算法是类似的,这是因为每一 个利用高可用性架构的关键特征。例如,选择机群的一个成员为"保留协调 者"。如下将更具体描述的,机群的任何成员可以被选为协调者。万一选择的 协调者由于任何原因出现故障,那么进行新的选择,发送消息到每个成员以 便(经由组间消息传输)重置它们的状态并且算法再次开始。选择的协调者 用作速率处理者(dealer)。例如,每个成员必须从该协调者保留一些速率以 便允许请求的通过。为了容纳速率分布的变化,机群的每个成员运行用于执 行实时速率容量估计的估计算法(称为"估计器")。
如下将更具体描述的,估计器用来确定何时保留额外的速率容量或将速 率容量释放回机群。例如,如果估计器确定需要额外的速率容量以满足当前 正被发送到机群成员的客户机请求的流入,则机群成员可以发送用于保留额 外的速率的保留请求到活动的协调者。同样地,如果估计器确定分配给机群 成员的当前速率容量未被充分利用,则速率容量可以被释放回机群用于重新 分布。在大多数情况下,速率容量成块请求和释放,比便增加速度和消减组 间消息传输(这消耗各机群成员之间的通信路径上的带宽)。
用于接纳控制的分级速率限制
如上所述,"速率限制器桶,,是通常用于实现接纳控制过程的算法。在现有技术算法中,"桶"提供有施加于进入受保护的网络节点的消息的速率的限 制。每次处理新的消息都添加"令牌"到桶。如此,速率限制通常以每秒的 令牌数表示, 一个令牌代表一个消息。在每个间隔(例如,每秒)后清除桶 内容,以便提供速率限制而不在各分组之间实施间隔。
为了说明这种算法,假设施加于桶的速率限制是每秒IO个令牌。还假设
都在同一时间段内,第一请求添加2个令牌到桶而第二请求添加8个令牌到
桶。因为在前两个请求后到达限制,所以该算法通过拒绝在同一时间段内到 达的随后请求来提供速率限制。
尽管适于一些网络,但上述现有技术的接纳控制算法不适用于集群的环 境。例如,施加于桶的速率限制代表整个机群的速率容量。现有技术的算法 根本未提供用于在各机群成员之间分布速率容量以便解决需要由机群成员提 供的各种服务、应用和操作的手段。现有技术的算法还未能提供用于监视和 控制速率容量的手段,因此不能用于保护使得速率分布变化的服务和应用(如 依赖于会话亲缘性的会聚应用和其它服务)。
为了克服上述缺点,已经扩展基本的速率限制器算法来提供用于接纳控 制的分级速率限制实施。替代为整个机群指定全局速率限制,全局速率限制
根据需要在各机群成员之间分布。如图3-4所示,速率限制可以以形成"速 率限制树"的分级方式分布。在一些实施例中,如图3所示,速率限制可以 在全局级别、以及机群的每个成员(l-N)的服务和操作级别设置。可以由各 机群成员提供的服务和操作的一个示例是用在许多Web服务中的StockQuote 服务和getQuote()操作;然而,存在其它示例。要注意的是,在本发明的其它 实施例中,不同数目和/或类型的级别可以包括在速率限制树内。施加于速率 限制树的唯一要求是施加于父节点的每个速率限制等于施加于它的子节点的 限制的和。例如,分配给服务1的速率限制应该等于分配给从服务1继承的 操作l-N的限制的和。
如下所述,改进的接纳控制算法可以还包括用于跟踪在"速率限制树" 中指定的每个级别的速率消耗的"速率限制器桶树"。在一些情况下,桶内容 可以在摘要(abstract)令牌(即,不必对应于一个分组的令牌)中测量。这 允许加权,即, 一些请求可以消耗多于一个令牌。例如,如果请求速率是每 秒N个令牌,而每个请求的权重是一,则令牌限制对应于每秒N个请求。如 果每个请求的权重是M,则令牌限制对应于每秒N/M个请求。当验证是否可以接纳请求时,沿着从全局级别到一个子节点延伸的路径 遍历速率限制器桶树。如上所述,沿着该路径分配给每个桶的速率限制是其 子节点的和。为了接纳到子节点(例如,操作1)的请求,该请求必须能够 在沿着遍历路径(例如,全局->服务1->操作1 )的每个桶内合适。如果该请 求在每个桶内合适,则将(各)请求令牌添加到沿着该路径的每个桶。如果 (各)请求令牌不在沿着该路径的每个桶内合适,则不添加它们并且拒绝该 请求。
为了说明这种算法,假设每秒100个令牌的速率限制分配给服务1,而 每秒75个令牌的速率限制分配给从此继承的每个操作l-N。还假设对操作1 的第一请求添加50个令牌到操作1桶,而对操作3的第二请求尝试添加75 个令牌到操作3桶。如果第二请求在与第一请求相同的时间段到达,则即使 该第二请求没有超过分配给操作3的速率限制,该第二请求也将被拒绝。这 是因为对操作1和3进行的请求的组合速率(即,每秒125个令牌)超过施 加于服务l (即,父节点)的速率限制。
图4图示了可以在"速率限制树"内分布速率限制和可以在"速率限制 器桶树,,内跟踪桶内容的另一种方式。例如,除了上述全局、服务和操作级 别外,还可以在请求者级别分布/跟踪速率限制。如在此所用,"请求者"定 义为请求访问由机群提供的特定服务或应用的客户机或用户。在一些情况下, 图4中示出的树结构可以用于扩展接纳控制概念以包括服务级别协定(SLA)
的分布实施。
服务级别协定是网络服务提供者和用户之间的合同,其指定通常在可测 量的期限中网络服务提供者将供应什么服务。许多因特网服务提供者(ISP) 给它们的客户提供SLA。除了其它度量,SLA可以提供关于可以同时访问服 务的用户(即,请求者)的数目、以及服务正常运行时间、延迟、每次故障 的恢复时间、分组丟失等的保证级别的服务。为了提供保证级别的服务,许 多SLA指定每个请求者的服务和/或操作速率限制。SLA限制典型地是策略 驱动的,不是纯粹规定的,并且必须可动态更新。
管理SLA限制的策略通常存储在策略数据库中,使该策略数据库在消息 处理期间对系统可访问。由于大量请求者可访问服务,因此预先^^得SLA速 率信息只以局部化的方式与每条消息可用。例如,通常在消息处理的时候从 策略数据库取回SLA速率限制。因而,使得限制信息在消息处理前不可用,使得其对机群的单独的成员也不可用。如下将更具体描述的,用于这里描述
的SLA实施的接纳控制算法通过提供SLA速率限制的先验认识给机群成员 的至少一个子集,改进了现有技术的方法。
值得注意的是,这里仅图示和描述了分级速率限制的一些示例。本发明 构思不只限于图3-4中示出的那些树结构。除了具体示出的树结构外,速率 限制还可以在不同数目和/或类型的级别之间分布。然而,应该注意,随着级 别的数目(因而,树中的树叶的数目)扩展,精确地执行保留估计变得越来 越昂贵。
用于分布接纳控制/SLA实施的方法
这里描述的接纳控制算法通过提供可以在集群的环境中使用的方法改进 了基本的速率限制器桶算法。为了这样做,改进的接纳控制算法利用高可用 性架构的许多关键特征,(尤其)包括组成员资格、协调者选择和组间消息传 输。如上所述,机群的一个成员被选为"保留协调者"。在大多数情况下,对 协调者选择没有设置限制;机群的任何成员可以被选为协调者。如果该协调 者由于任何原因出现故障,则(经由组间消息传输)发送消息到剩余的机群 成员用于重置它们的状态,并且重启接纳控制算法。
在一些情况下,保留协调者维持整个机群的速率限制树(称为"机群树"), 并且维持机群的每个成员的分开的速率限制树(称为"成员树")。机群树用 于跟踪遍布机群的全部成员的速率限制和消耗。成员树用于比较特定成员所 分配的速率限制相对于机群限制。例如,为成员树的每个节点指定的速率将 对应于在机群树中指定的速率限制的一些共享。在每个机群成员内存储的局 部速率限制器桶树内跟踪成员消耗。
因为任何成员可以被选为协调者,所以速率限制信息必须对机群的每个 成员可访问。在一些实施例中,机群树也可以局部地存储在每个机群成员内。 这使得万一当前协调者出现故障,任何成员可以获得对机群限制的立即访问。 然而,维持机群树的多个备份具有增加存储器消耗和组间消息传输(其消耗 网络带宽)的缺点。因此,可能希望以其它方式将速率限制信息提供给机群 成员。
在一个示例中,机群树可以仅仅局部地存储在机群成员的小子集上。在 此情况下,通过不必发送机群树信息到机群的全部成员,可以减少存储器和 组间消息传输。在另一个示例中,机群树可以存储在分开的配置数据库内。然后适当的速率限制信息可以与发送到保留协调者的保留请求一起装载
(piggyback )。后一示例允许保留协调者发现机群限制,并且允许容易动态发 现新的、更新的限制。如果限制信息与每个保留请求装载,那么保留协调者 可以忽略节点的消耗为零(因而,它的子节点为零)的机群树的任何部分, 从而允许容易清理空节点和存储器节约。机群树结构然后可以在随后的保留 请求期间被"重新发现"。
当机群成员希望使用更大速率(即,为了满足客户机请求)时,该成员 发送"保留请求"到保留协调者请求额外的"保留量"。保留协调者比较额外 的保留量与机群的全局限制,并且决定是否允许该保留请求。如果额外的保 留量落入指定的限制,则可以允许该保留请求。否则,用零保留量拒绝该保 留请求。使用简单的机制处理故障保护每个保留请求具有相关联的时间段。 如果在该时间段内没有发送"保持有效",则移除该保留。
在图5中示出图示改进的接纳控制算法的一个实施例的流程图。当决定 是否接纳客户机请求时,改进的接纳控制算法比较(局部地存储在速率限制 器桶树内的)机群成员的当前速率消耗与(存储在保留协调者内的)在成员 的速率限制树中指定的速率限制。更具体地,该算法遍历全局速率桶和包括 在机群成员的速率限制器桶树内的一个子节点桶之间的路径。如果存在足够 的空间添加(各)请求令牌到沿着该遍历路径的每个桶,则接纳该请求。否 则,调用估计器来确定是否可以保留额外的速率容量来满足该客户机请求。 如果在机群树中足够的速率可用,则可以将额外的速率容量给予该请求成员。 在一些情况下,图5中示出的接纳控制算法可以使用图3和4中示出的 速率限制(或速率限制器桶)树之一来确定是否可以接纳客户机请求。如此, 该接纳控制算法可以用来实现一般的接纳控制过程,或实施在服务级别协定 中指定的速率限制。如上所述,未在此具体示出的替代树结构也可以由接纳 控制算法使用。
如图5所示,接纳控制/SLA算法可以通过用为当前客户机请求指定的权 重更新估计器(步骤500)。换句话说,估计器保持"运动平均",或在每个 时间段期间由每个机群成员消耗的令牌数的计数。在大多数情况下,时段可 以定义为一秒,使得该计数将对应于机群成员的当前速率消耗(以每秒的令 牌数指定)。因为客户机请求可以消耗多于一个令牌,所以添加该客户机的权 重(即,由该请求消耗的令牌数)到估计器的计数器,以便更新当前速率消耗。随后该当前速率消耗将用于确定速率容量是否应该释》文回机群中。
一旦客户机请求的权重被添加到计数器,算法就遍历存储在负责处理该
请求的机群成员内的速率限制器桶树(步骤505 )。例如,如果请求操作1, 则算法发现沿着从全局桶到操作1桶延伸的路径安排的各桶链(例如,图3 的速率限制器桶树中的全局->服务1-〉操作1)。接下来,算法确定桶中的每 条链是否具有足够的空间来满足请求(步骤510 )。如果存在足够的空间(即, 如果添加令牌将不超过在链中的任何级别施加的速率限制),则添加令牌到链 中的每个桶(步骤515),接纳该请求(步骤520)并且算法结束。
如果在每个桶内不存在空间以接纳该请求,则调用估计器来确定是否可 以保留额外的速率容量以便最终满足该请求(步骤525 )。图6图示估计器用 来确定额外的保留量的一种方式。用于确定额外的保留量的其它方法是可能 的,并且应该被认为落入本发明的普通范围内。
如图6所示,估计器可以通过计算当前时间和最后的沉默时段的开始之 间经过的时间量开始(步骤600)。如在此所用的,"沉默时段,,可以定义为 在保留拒绝后的预定时间段,其中随后的保留请求被抑制。 一旦保留请求(即, 对额外的速率容量的请求)被拒绝,就开始该"沉默时段"。该沉默时段用来 避免用重复的保留请求和拒绝使保留协调者过载。换句话说,估计器实现请 求速率的抑制,以便当不存在保留更大速率的可能性时阻止各成员发送额外 的保留请求。没有抑制,消息分块也将停止工作。
接下来,估计器确定经过的时间是否小于沉默时段(步骤610)。如果经 过的时间落入沉默时段,则估计器拒绝该保留请求并且返回零保留量(步骤 620)。否则,估计器接受该保留请求,并且返回保留块量(步骤630)。该保 留块量是估计算法中的可调参数。例如,可以增加该保留块量以便增加保留 速度并且减d、组间消息传输,或减小该保留块量以便当运行在速率限制附近 时增加估计精度。
返回图5,由估计器提供的该保留块量被应用到接纳控制/SLA算法(步 骤530 )。如果该保留块量为零,则拒绝客户机请求(步骤535 )并且算法结 束。如上所述,如果经过的时间落入沉默时段,则可以返回零保留块量。可 能存在返回零保留块量的其它原因。例如,如果为每个成员指定最大保留量, 那么如果请求成员已经超过(或将超过)其所分配的量,则可以返回零保留 量。如果该保留块量大于零(在步骤530中),则机群成员可以发送保留请求 到保留协调者,以便请求更大速率(步骤540)。如果在机群内存在足够的速 率容量来满足该保留请求,则可以批准该保留请求。例如,保留协调者可以 比较(存储在成员树内的)全部机群成员的当前速率消耗与存储在机群树内 的速率限制。如果由机群成员请求的额外的速率容量使得全部成员的组合保 留容量超过在机群树指定的保留量,则保留协调者拒绝该保留请求并且返回 零保留量。否则,保留协调者接受该保留请求并且返回保留量,该保留量等 于i)保留块大小,或ii)大于零但是小于保留块大小的一些新的量。例如, 如果没有剩余足够的速率容量来满足块请求,则该"新的量"可以小于保留 块大小。如上所述,该保留块大小是估计器算法中的可调参数。
接下来,更新估计器来解决保留请求的接受或拒绝。例如,如果保留协 调者能够保留额外的速率容量(在步骤545中),则协调者发送新保留的量到 估计器(在步骤550中),使得估计器可以用该新保留的量更新其计数器。通 过增加该"新的量"到由机群成员当前保留的量来更新该计数器。如上所述, 该"新的量"可以是i)等于保留块大小,或ii)如果机群内剩余不足的速 率容量,则小于保留块大小。
一旦用新的保留量更新该估计器的计数器(步骤550 ),则再次遍历机群 成员(其请求额外的速率容量)的速率限制器桶树,以便得到各桶链(步骤 560)。在上面提供的示例后,对操作1进行的客户机请求使得机群成员返回 从全局桶到操作1桶延伸的各桶链(即,全局->服务1->操作1,如图3所示)。 这些桶之前具有不足的空间来满足客户机请求。然而,因为保留协调者可能 已经能够分配额外的速率到各桶链,所以算法再次询问每个桶内是否存在足 够的空间来满足该请求(步骤565 )。如果存在足够的空间,则添加(各)请 求令牌到链中的每个桶(步骤570),接纳客户机请求(步骤575 )并且算法 结束。否则,拒绝客户机请求(步骤535 )并且算法结束。
如果保留协调者不能为机群成员保留额外的速率容量(在步骤540和545 中),则也可能拒绝客户机请求(在步骤535中)。如果这种情况出现,则协 调者告知估计器保留请求被拒绝(在步骤555中),使得最后的沉默时间可以 被设置为当前时间,从而重置沉默时段。在一些实施例中,在更新估计器(步 骤555 )并且拒绝保留请求(步骤535 )后算法可以结束。然而,在用来运行 保留软件的时间期间,可能已经清除各桶链中的空间。例如,可能已经在时间间隔(例如, 一秒)的末端清除桶内容,获得用于额外令牌的空间。由此 原因,在本发明的其它实施例中,在告知估计器被拒绝的保留请求后,该算
法可以转移程序控制到步骤560。这将为机群成员提供遍历潜在更新的速率
限制器桶树的另一机会,其现在可能具有空间来添加(各)请求令牌并且接 纳请求。
如上所述,估计器软件对机群的每个成员执行持续的实时容量估计。这 使得估计器可以确定何时向协调者请求额外的速率容量、以及何时将速率容 量释放回机群。从一个机群成员释放速率容量使得速率能够重新分布到可能
需要额外的容量的其它机群成员。如下面参照图7所述,如果"当前速率消 耗趋势"是稳定或减少的,并且一个机群成员具有比其当前正在使用的保留 速率更大的保留速率,那么可以从一个机群成员释放速率容量。
图7图示估计器可以用来确定何时将速率容量释放回机群用于重新分布 的一种方式。用于释放速率容量的其它方法是可能的,并且应该认为是落入 本发明的普通范围内。如图7所示,估计器可以通过更新"运动平均"或者 在当前时间段期间由特定机群成员消耗的令牌数的计数来开始(步骤700 )。 如上所述,通过将接纳的请求令牌加到估计器的计数器来更新运动平均。在 当前时间段的末端重置该计数器(步骤710),并且将当前运动平均与"最后 值平均"或在最后时间段期间由该机群成员消耗的令牌数的计数比较(步骤 720)。取决于该比较的结果,"当前速率消耗趋势"可以设置为增加(步骤 730A)、稳定(步骤730B)或减少(步骤730C )。
接下来,估计器确定是否将速率容量释放回机群。例如,估计器可以访 问(存储在机群成员内的)速率限制器桶树,以便确定机群成员的当前保留 量。如果该当前保留量等于零(在步骤740中),那么机群成员没有速率来释 放,并且估计器等待直到下一个时间段(步骤750)来重启该方法和潜在地 释放速率。
如果当前保留量大于零(在步骤740中),那么估计器将下一步骤基于"当 前速率消耗趋势,,是增加、稳定还是减少。如果趋势是增加(步骤760和770 中的"否"分支),那么估计器认识到机群成员可能需要它的当前保留量(甚 至更大容量)来满足进入的客户机请求。因而,增加趋势也使得估计器等待, 直到下一个时间段(步骤750 )来潜在地释放速率。然而,如果趋势为下降 或稳定(步骤760和770中的"是"分支),那么估计器计算成员的当前保留量和其运动平均之间的差(步骤780 )。如果该差大于释放块大小,那么一块 该成员保留的容量被释放回机群(步骤790)。否则,估计器等待,直到下一 个时间段(步骤750 )来释放速率。
类似于保留块大小,释放块大小是估计算法中的可调参数。该释放块大 小可以类似于或不同于保留块大小。在一些情况下,保留和释放块大小可以 指定为为整个机群设置的速率限制的某个百分比。在其他情况下,保留和释 放块大小可以被设置为任何适当的大小。值得注意的是,速率容量可以不总 是以块来保留和释放。在使用时,分块增加保留/释放速度并且消减组间消息 传输,从而减少各机群成员之间的通信路径上的网络带宽。然而,因为当接 近速率限制时,分块减少了精度,所以当确定保留和释放块大小时应该考虑 精度和速度之间的折中。
在一些实施例中,估计器可以分配给速率限制器桶树内的每个操作。这 使得估计器可以沿途估计下至各叶节点的速率消耗。在另外的实施例中,估 计器可以分配给速率限制器桶树的较高级别内的各节点。例如,估计器可以 仅分配给驻留在图4中示出的请求者级别的那些节点。例如由于大量请求者 (因而,大量的客户机请求)请求访问由服务级别协定保护的应用和服务, 因此可以采用该方法。应该注意,估计可以在树中的任何级别执行。然而, 在叶节点处的估计提供较大精度和在较高节点处的估计消耗较少存储器和计 算资源方面存在折中。
用于分布的通信量整形的方法
如上所述,令牌桶和漏桶是通常用于执行通信量整形的两种算法。令牌 桶算法通过对平均数据传输速率施加限制,控制注入网络的数据量。换句话 说,如果在桶中存在足够的令牌并且适当地配置突发阔值,则令牌桶算法允 许发送数据的"突发"(直到其峰值突发速率)。漏桶算法通过对数据传输速 率施加硬性限制而不同于令牌桶算法。换句话说,漏桶算法通过限制分组以 恒定速率滤出"漏"桶来平滑突发的通信量。由漏桶提供的过滤通过在各分 组之间实施间隔对数据传输速率施加硬性限制。
尽管现有技术的令牌桶和漏桶算法适合于一些网络,但是它们不适用于 集群的环境。例如,现有技术的算法只为整个机群维持每一网络资源一个桶。 现有技术的算法根本未提供用于在各机群成员之间分布桶内容以便解决突发 分配的变化的手段。现有技术的算法还未能提供用于监视和控制突发分配的分布的手段,因此不能用于在突发分配变化时(例如,当一个或多个机群成 员出现故障或离线时)保护网络资源。
为了克服上述缺点,已经扩展了基本的令牌桶算法来支持集群环境中的 通信量整形。例如,为机群的每个成员给出它们自己的用于特定网络资源的 排队的或非排队的令牌桶。任何网络服务(例如,调用控制服务器)可以认 为是资源。如图8所示,依赖于总体上由机群使用或对机群可用的资源(例 如,资源1-3)的数目,机群的每个成员维持一个或多个网络资源桶(例如,
桶Rl-R3 )。网络资源桶局部地存储在机群的每个成员内。
改进的通信量整形算法类似于改进的接纳控制算法,这是因为每个算法 利用保留协调者和估计器来保留和释放速率。除了保留速率外,通信量整形 算法中的保留协调者负责在机群的各成员之间均衡突发分配。在一些实施例 中,可以采用用于突发分配的保守方法。例如,初始突发分配可以在机群的 各成员之间平均划分。在另外的实施例中,根据一些预定的权重,该初始突 发分配可以在各机群成员之间稍微不平均划分。这可以为较大、较强大的机 器比较小、功能较弱的机器提供较多突发分配。然而,注意到,突发分配可 以只在机群的活动成员之间划分。如果机群的成员出现故障或离线,则由保 留协调者重新分布突发分配,使得机群的总突发输出保持恒定。
在一些情况下,可以选择突发分配,使得机群的总突发输出除以任何机 群成员的最大突发分配量大于或等于最大的请求权重(回忆请求加权允许 请求消耗多于一个令牌)。这确保每个请求将通过,或桶中将不存在足够的令 牌来通过请求。最大突发分配对应于任何机群成员的局部桶的大小(即,对 任何机群成员的局部桶施加的速率限制)。因为突发分配是不同步的,所以施 加在每个桶上的速率限制可以在任何时候变化。
估计器分配给由"局部令牌桶"(即,为机群成员内的每个资源存储的令 牌桶)跟踪的该资源。在通信量整形算法中,估计器尝试确定在机群内保留 或释放多少平均速率。为了消减组间消息传输,以块请求和释放保留,该块 是估计算法的可调参数。估计器保持跟踪在当前时段期间消耗的令牌数的"运 动平均"、以及当前时段对照在先时段的导数(derivative )。该导数是用于提 供对抗速率波动的健壮性的重要元素。
如下更详细描述的,通信量整形算法不同于接纳控制算法在于i)当调 用估计器时,以及ii)当释放容量时。例如,下面描述的估计算法应该对每
25个单个请求调用,不管该请求是否被接纳或拒绝。这是由于令牌桶主动地再 生突发、因此希望通过在每个请求消耗令牌来尽快地再生突发的事实。同样 地, 一旦桶已经到达其最大速率限制就应该只释放容量,从而提供最大局部 突发容量并且指示速率确实过量。根据本发明的一个实施例的改进的通信量 整形算法在图9-11中示出。
图9图示了可以用于处理客户机请求的通信量整形算法的一个实施例。 类似于现有技术的令牌桶算法,每〃r秒添加"令牌"到局部令牌桶。令牌的 恒定再填充这里称为"局部令牌再生速率"。局部令牌桶可以包含最多6个令
牌;如果当令牌到达时桶是满的,则丢弃该令牌。当对应于"个令牌的请求 到达时,从桶移除w个令牌,并且该请求标记为可接纳的。如果少于"个令 牌可用,那么不从桶移除令牌。
不同于现有技术的算法,这里描述的通信量整形算法监视和控制在机群 的各成员之间动态分布的速率容量和突发分配。例如,可以分布速率容量, 使得每个成员的速率的和等于施加到整个机群的全局速率限制。突发分配可 以以类似方式分布;每个桶的突发的和等于整个机群的总突发输出。
此外,改进的通信量整形算法使用用于估计何时保留或释放速率容量的 估计器。如上所述,在每个请求后可以调用估计器,而不管该请求是否成功。 例如,当请求到达时,估计器内的计数器用为当前客户机请求指定的权重更 新(步骤900)。换句话说,估计器保持"运动平均"或在每个时间段期间由 每个局部令牌桶消耗的令牌数的计数。在大多数情况下,时段可以定义为一 秒,使得运动平均将对应于用于该桶的当前速率消耗(以每秒的令牌数指定)。 因为客户机请求可以消耗多于一个令牌,所以添加该客户机的权重(即,由 该请求消耗的令牌数)到估计器的计数器,以便更新当前速率消耗。随后该
当前速率消耗将用于确定速率容量是否应该释放回机群中。
一旦客户机请求的权重被添加到计数器,该算法就确定特定资源的局部 令牌桶是否具有足够令牌来满足该请求(步骤905 )。如果剩余足够的令牌, 那么从桶移除需要满足该请求的令牌数(步骤910),并且该请求标记为"可 接纳"(步骤915)。
在接收开始消耗令牌桶的第一请求时,调用估计器,以便尝试保留速率 并且设法再填充局部令牌桶(步骤920)。如上所述,根据通信量输出分布将 速率均衡到机群的每个成员,使得每个机群成员的速率的和等于用于整个机群的最大平均持续速率。为机群的每个成员均衡或保留的速率对应于局部令 牌再生速率。注意到,该方法算术地等于单个令牌桶。例如,如果全部成员
的组合的突发消耗[sum(members一bj)]等于B (即,整个机群的总突发输出), 而全部成员的组合的局部令牌再生速率[sum(members一r—i)]等于R (即,整个 机群的令牌再生速率),那么在任何给定时间段t期间通过机群接纳的请求的 最大数目将由B+Rt的单个令牌桶限定。
图10图示估计器可以用来确定额外的保留量的一种方式(图9中的步骤 920)。用于确定额外的保留量的其它方法是可能的,并且应该被认为落入本 发明的普通范围内。
如图IO所示,估计器可以通过计算当前时间和最后的沉默时段的开始之 间经过的时间量开始(步骤1000)。如上所述,"沉默时段"定义为在保留拒 绝后的预定时间段,其中随后的保留请求被抑制。 一旦保留请求(即,对额 外的速率容量的请求)被拒绝,就开始该"沉默时段"。该沉默时段用来使得 能够进行消息分块,并且避免用重复的保留请求和拒绝使保留协调者过载。
接下来,估计器通过计算奈奎斯特(Nyquist)速率(步骤1005 )和自最 后请求以来的时间(步骤1010),检测请求是否以数据的"突发"发送。通 过对半划分当前运动平均计算奈奎斯特速率。接下来,估计器确定自最后请 求以来的时间是否小于或等于奈奎斯特时段(步骤1015)。如果自最后请求 以来的时间小于或等于奈奎斯特时段(指示没有突发),则估计器通过比较经 过的时间与沉默时段返回合适的保留块量,如步骤1040、 1045和1050所示。 该方法等价于图6的步骤610、 620和630中的上述方法步骤。
如果自最后请求以来的时间大于奈奎斯特时段(指示突发已经出现),则 估计器确定当前运动平均是增加、稳定或减小(参见图11)。如果i)趋势 是增加(步骤l020), ii)趋势是稳定,但当前运动平均大于当前保留量(步 骤1025、 1030 ),或iii)趋势是稳定或减小,但当前保留量为零(步骤1025、 1030、 1035 ),则该估计器尝试保留额外的速率。通过比较经过的时间和沉默 时段(步骤1040、 1045和1050)并且返回合适的保留块量,估计器尝试保 留额外的速率。然而,如果估计器确定趋势是稳定或减小(步骤1025 )并且 当前保留量大于零(1035 ),则估计器忽略沉默时段并且简单返回零保留块量。 这是由于如果趋势是稳定或减小并且已经具有足够速率,则可能不需要保留 额外的速率的事实。如上所述,保留块大小(以及释放块大小)可以是估计算法中的可调参 数。然而,速率容量可以不总是以块来保留和释放。在使用时,分块增加保 留/释放速度并且消减组间消息传输,从而减少各机群成员之间的通信路径上 的网络带宽。因为当接近速率限制时,分块减少了精度,所以当确定保留和 释放块大小时应该考虑精度和速度之间的折中。
返回图9,由估计器提供的保留块量应用到通信量整形算法。如果保留
块量为零(在步骤925中),则通信量整形算法确定(在步骤955中)该请求 是否之前被标记为可接纳的。如果该请求标记为可接纳的,则接受该客户机 请求(步骤960)。否则,拒绝该客户机请求(步骤965 )并且算法结束。
如果保留块量大于零(在步骤925中),则机群成员可以发送保留请求到 保留协调者,以便请求更大速率(步骤930)。如果机群内存在足够的速率容 量以满足保留请求,则可以批准该保留请求。例如,保留协调者可以比4交(存 储在局部令牌桶内的)全部机群成员的当前速率消耗与整个机群的最大平均 持续速率。如果由机群成员请求的额外的速率容量使得全部成员的组合保留 容量超过最大平均持续速率,则保留协调者拒绝保留请求并且返回零保留量。 否则,保留协调者接受保留请求并且返回等于下述的保留量i)保留块大小, 或ii)大于零但是小于保留块大小的一些新的量。例如,如果没有剩余足够 的速率容量来满足块请求,则该"新的量"可以小于保留块大小。如上所述, 该保留块大小是估计器算法中的可调参数。
接下来,更新估计器来解决保留请求的接受或拒绝。例如,如果保留协 调者能够保留额外的速率容量(在步骤930和935中),则协调者发送新保留 的量到估计器(在步骤940中),使得估计器可以用该新保留的量更新其计数 器。通过增加该"新的量"到由机群成员当前保留的量来更新该计数器。如 上所述,该"新的量"可以是i)等于保留块大小,或ii)如果机群内剩余 不足的速率容量,则小于保留块大小。然后更新局部令牌桶再生速率以便解 决额外的速率容量(步骤950)。如果保留协调者不能为机群成员保留额外的 速率容量(在步骤930和935中),则该协调者告知估计器保留请求被拒绝(在 步骤945中)。这允许通过设置最后的沉默时段为当然时间来重置沉默时段。 一旦更新该估计器(步骤940或945 ),算法就确定客户机请求是否之前被标 记为可接纳的(步骤955 )。如果请求被标记为可接纳的,则接受该客户机请 求(步骤960)。否则,拒绝该客户机请求(步骤965 )并且算法结束。
28与上面提供的接纳控制算法类似,在通信量整形算法中使用的估计器对 机群的每个成员执行持续的实时容量估计。这使得估计器可以确定何时向协 调者请求额外的速率容量,以及何时将速率容量释放回机群。从一个机群成 员释放速率容量使得速率能够重新分布到可能需要额外的容量的其它机群成 员。如下面参照图ll所述,如果"当前速率消耗趋势"是稳定或下降的,并 且一个机群成员具有比其当前正在使用的保留速率更大的保留速率,那么可 以从该成员释放速率容量。
图11图示估计器可以用来确定何时将速率容量释放回机群用于重新分 布的一种方式。图11中示出的若干方法步骤类似于图7中示出的并且在上面 详细描述的方法步骤。这些步骤贯穿图7和11用类似的参考标号描述。为了
简洁,图7和ll公共的方法步骤将不在下面更详细描述。可以参照上面提供
的描述,以便获得对图11中示出的方法的完全理解。还要理解的是,用于释 放速率容量的其它方法是可能的,并且应该认为是落入本发明的普通范围内。
如图11所示,估计器可以通过更新当前时段的运动平均(步骤1000) 并且将计数器重置为零开始(步骤1110)。接下来,估计器可以比较"当前运 动平均"和"最后值平均"(步骤1120),以便确定"当前速率消耗趋势"(步 骤1130)。如上所述,该趋势可以设置为增加(步骤1130A)、稳定(步骤1130B) 或减少(步骤1130C)。在一些实施例中,估计器可以使用上面在图7中描述 (并且在图11的步骤1140-1190中示出)的方法,以便确定何时将速率容量 释放回机群。例如,如果i)桶计数器不等于桶限(步骤1200),并且ii) 桶限减去桶计数器小于局部令牌桶再生速率减1 (步骤1210),则估计器可以 使用之前描述的方法。如上所述,之前描述的方法释放一块保留容量或者等 待直到下一个时间段来(潜在地)释放速率。
如上所述,"桶限"等价于分配给特定机群成员的局部令牌再生速率。 "桶计数器"跟踪在每个时间段期间由每个局部令牌桶消耗的令牌数。将桶 限和桶计数器之间的差与局部令牌桶再生速率减1比较(步骤1210),使得 估计器可以确定特定令牌桶何时正接近其最大速率限制(即,最大突发分配)。 接近最大速率限制发信号通知估计器可能是时候释放一些(如果不是全部) 该成员的局部令牌桶速率容量了 。
然而,用于释放速率容量的估计方法有时在通信量整形实施例中可以不 同。例如,如果桶计数器等于桶限(步骤1200 ),则估计器将全部保留的容量释放回机群中(步骤1220)。这典型地用来处理突发的传输。另一方面,
如果i)桶计数器不等于桶限(步骤1200),并且ii)桶限减桶计数器大于 或等于局部令牌桶再生速率减1 (步骤1210),则估计器可以等待直到下一个 时段来释放速率。换句话说,估计器可以等待在稳定状态的情况下释放速率, 在稳定状态的情况下逐步地消耗桶内容(不同于数据的突发,其迅速地消耗 桶内容)。
从本公开受益的本领域的技术人员将理解,本发明被认为提供了用于在 集群的环境中实现接纳控制和通信量整形过程的改进的算法。这里描述的算 法通过提供用于监视和控制机群成员之间的速率限制分布和桶内容的独特手 段改进了现有技术。这使得算法能够适应(用于接纳控制的)速率分布和(用 于通信量整形的)突发分配的变化。例如,如果机群的速率分布变化(但没 有超过全局速率限制),则这里描述的改进的接纳控制算法允许速率根据新的 分布在机群的各成员之间重新均衡。改进的通信量整形算法使用类似的方法, 万一一个或多个机群成员出现故障或离线,则该方法在活动的机群成员之间 重新分布突发分配。根据本说明书,本发明的各方面的进一步修改和替代实 施例将对本领域的技术人员显而易见。因此,权利要求旨在理解为包括全部 的这种修改和改变,因此,说明书和附图被认为是说明性的而不是限制性的。
30
权利要求
1. 一种用于控制发送到具有多个机群成员的网络机群的网络通信量的分布的方法,所述方法包括以第一速率接收去往特定网络资源的网络通信量,所述网络通信量包括多个客户机请求,每个客户机请求具有为其分配的权重;以及在机群成员的子集之内分布所述第一速率,其中所述子集内的每个机群成员维持用于所述特定网络资源的令牌桶,并且其中分布到所述子集内的每个机群成员的速率量对应于用于各个令牌桶的再生速率。
2. 如权利要求1所述的方法,还包括在机群成员的所述子集之内分布突发。
3. 如权利要求2所述的方法,其中分布到所述子集内的每个机群成员的 速率的和等于所述第 一速率,并且其中分布到所述子集内的每个机群成员的所述突发的和等于所述网络机群的总突发输出。
4. 如权利要求3所述的方法,其中基本相等的速率量和突发量分布到所 述子集内的每个机群成员。
5. 如权利要求3所述的方法,其中分布到所述子集内的一个或多个机群 成员的所述速率量和所述突发量不同于分布到所述子集内的其他机群成员的 所述速率量和所述突发量。
6. 如权利要求3所述的方法,其中所述总突发输出除以分布到所述子集 内任何所述机群成员的最大突发量大于或等于分配给多个客户机请求的最大 权重。
7. 如权利要求3所述的方法,还包括在所述子集的活动成员之间重新分 布所述总突发输出。
8. 如权利要求1所述的方法,还包括将一个所述客户机请求指引到所述子集中的一个机群成员;以及 访问存储在一个机群成员内的局部令牌桶,用于跟踪所述特定网络资源 的使用,其中所述局部令牌桶包括令牌的当前数目,并且可被配置用于以等 于分配到所述局部令牌桶的所述再生速率的第二速率接受额外的令牌。
9. 如权利要求8所述的方法,还包括如果包含在所述局部令牌桶内的所 述令牌的当前数目大于或等于分配到所述一个客户机请求的所述权重,则从所述局部令牌桶消耗若干令牌,消耗的令牌的数目等于分配到所述一个客户 机请求的所述权重。
10. 如权利要求9所述的方法,还包括尝试增加分配到所述局部令牌桶 的所述再生速率,不管是否从所述局部令牌桶消耗令牌。
11. 如权利要求IO所述的方法,其中所述尝试步骤包括 发送保留请求到估计算法,所述估计算法可被配置用于确定何时满足保留请求;以及从估计算法接收保留量,其中该保留量基于在网络通信量的突发中是否接收所述一个客户端请求。
12. 如权利要求11所述的方法,其中如果没有在网络通信量的突发中接 收所述一个客户端请求,则所述接收步骤包括如果在指定的沉默时段内发送保留请求,则从估计算法接收零保留量;以及如果在指定的沉默时段结束后发送保留请求,则从估计算法接收非零保 留量。
13. 如权利要求12所述的方法,其中如果在网络通信量的突发中接收所 述一个客户端请求,则所述接收步骤包括在当前时间段期间,对于特定网络资源确定由所述一个机群成员接收的 所有网络通信量的当前速率消耗趋势;如果(a)在指定的沉默时段内发送保留请求,或(b)所述一个机群成 员的当前速率消耗趋势是减小的或稳定的并且分布到所述一个机群成员的速 率量大于零,则从估计算法接收零保留量;以及如果在指定的沉默时段结束后发送保留请求,则从估计算法接收非零保 留量。
14. 如权利要求13所述的方法,其中在从估计算法接收非零保留量时, 所述尝试步骤还包括发送所述保留请求到保留算法,所述保留算法可被配置用于确定在所述机群内是否剩余足够的速率容量以满足所述保留请求; 如果所述机群内剩余不足的速率容量来满足所述保留请求,则从所述保 留算法接收零保留量;以及如果所述机群内剩余足够的速率容量来满足所述保留请求,则从所述保留算法接收非零保留量。
15. 如权利要求14所述的方法,其中当从所述保留算法接收非零保留量时,所述方法还包括通过添加所述非零保留量到所述局部令牌桶的所述再 生速率,增加分布到所述一个机群成员的所述速率量。
16. —种用于控制发送到具有多个机群成员的网络机群的网络通信量的 分布的装置,所述装置包括用于以第 一速率接收去往特定网络资源的网络通信量的部件,所述网络 通信量包括多个客户机请求,每个客户机请求具有为其分配的权重;以及用于在机群成员的子集之内分布所述第 一速率的部件,其中所述子集内 的每个机群成员可操作来维持所述特定网络资源的令牌桶,并且其中分布到 所述子集内的每个机群成员的速率量对应于用于各个令牌桶的再生速率。
17. 如权利要求16所述的装置,还包括在所述机群成员的子集之内分 布突发的部件。
18. 如权利要求17所述的装置,其中分布到所述子集内的每个机群成员 的速率的和等于所述第一速率,并且其中分布到所述子集内的每个机群成员 的所述突发的和等于所述网络机群的总突发输出。
19. 如权利要求18所述的装置,其中基本相等的速率量和突发量分布到 所述子集内的每个机群成员。
20. 如权利要求18所述的装置,其中分布到所述子集内的一个或多个机 群成员的所述速率量和所述突发量不同于分布到所述子集内的其他机群成员 的所述速率量和所述突发量。
21. 如权利要求18所述的装置,其中所述总突发输出除以分布到所述子 集内任何所述机群成员的最大突发量大于或等于分配给多个客户机请求的最 大权重。
22. 如权利要求18所述的装置,还包括用于在所述子集的活动成员之 间重新分布所述总突发输出的部件。
23. 如权利要求16所述的装置,还包括用于将一个所述客户机请求指引到所述子集中的一个机群成员的部件;以及用于访问存储在一个机群成员内的局部令牌桶以跟踪所述特定网络资源 的使用的部件,其中所述局部令牌桶包括令牌的当前数目,并且可被配置用于以等于分配到所述局部令牌桶的所述再生速率的第二速率接受额外的令牌。
24. 如权利要求23所述的装置,还包括用于如果包含在所述局部令牌 桶内的所述令牌的当前数目大于或等于分配到所述一个客户机请求的所述权 重、则从所述局部令牌桶消耗若干令牌的部件,消耗的令牌的数目等于分配 到所述一个客户机请求的所述权重。
25. 如权利要求24所述的装置,还包括用于尝试增加分配到所述局部 令牌桶的所述再生速率而不管是否从所述局部令牌桶消耗令牌的部件。
26. 如权利要求25所述的装置,其中所述用于尝试的部件包括用于发送保留请求到估计算法的部件,所述估计算法可被配置用于确定 何时满足保留请求;以及用于从所述估计算法接收保留量的部件,其中所述保留量基于是否在网 络通信量的突发中接收所述一个客户机请求。
27. 如权利要求26所述的装置,其中如果没有在网络通信量的突发中接 收所述一个客户机请求,则所述用于接收的部件包括用于如果在指定的沉默时段内发送所述保留请求、则从所述估计算法接 收零保留量的部件;以及用于如果在指定的沉默时段结束后发送所述保留请求、则从所述估计算 法接收非零保留量的部件。
28. 如权利要求27所述的装置,其中如果在网络通信量的突发中接收所 述一个客户机请求,则所述用于接收的部件包括用于在当前时间段期间对所述特定网络资源确定由所述一个机群成员接 收的全部网络通信量的当前速率消耗趋势的部件;用于如果(a)在指定的沉默时段内发送所述保留请求,或(b)所述一 个机群成员的所述当前速率消耗趋势是减小的或稳定的,并且分布到所述一 个机群成员的速率量大于零,则从所述估计算法接收零保留量的部件;以及用于如果在所述指定的沉默时段结束后发送所述保留请求、则从所述估 计算法接收非零保留量的部件。
29. 如权利要求28所述的装置,其中当从所述估计算法接收非零保留量 时,所述用于尝试的部件还包括用于发送所述保留请求到保留算法的部件,所述保留算法可被配置用于确定在所述机群内是否剩余足够的速率容量来满足所述保留请求;用于如果所述机群内剩余不足的速率容量来满足所述保留请求、则从所述保留算法接收零保留量的部件;以及用于如果所述机群内剩余足够的速率容量来满足所述保留请求、则从所 述保留算法接收非零保留量的部件。
30. 如权利要求29所述的装置,其中当从所述保留算法接收非零保留量 时,所述装置还包括用于通过添加所述非零保留量到所述局部令牌桶的所 述再生速率来增加分布到所述一个机群成员的所述速率量的部件。
31. —种计算机程序,包括当所述程序在计算机上运行时适于执行权利 要求1到15的任一的全部步骤的程序代码装置。
全文摘要
这里提供一种网络,其包括多个网络资源和具有多个机群成员的至少一个网络机群。机群的每个成员可以配置用于利用一个或多个网络资源和跟踪其使用。例如,机群的每个成员可以包括用于跟踪该成员对网络资源的使用的一个或多个令牌桶。机群的至少一个成员(即,“保留协调者”)可以包括用于以第一速率(即,最大平均持续速率)接收去往特定网络资源的网络通信量的第一组计算机可执行指令。此外,保留协调者可以包括用于至少在各机群成员的子集之内分布该第一速率的第二组计算机可执行指令。在一些情况下,该机群的每个成员可以包括用于改变该第一速率如何在子集的各成员之间分布的第三组计算机可执行指令。例如,该第三组计算机可执行指令可以包括用于尝试保留该第一速率的较大或较小部分的指令。
文档编号H04L12/56GK101491025SQ200780026124
公开日2009年7月22日 申请日期2007年6月7日 优先权日2006年7月10日
发明者迈克尔·吉尔菲克斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1