本站点使用Cookies,继续浏览表示您同意我们使用Cookies。 Cookies和隐私政策>

首页 信息速查 产品智能选型 IP知识百科

什么是OLC(CPU过载控制)?

CPU过载控制OLC(Overload Control)是一种CPU过载调控机制。当CPU过载时,OLC能够对受监控协议报文和任务进行调控,通过不同优先级业务的合理规划和限制报文通过等方式,降低对CPU资源的消耗,并确保设备不会因为某种受监控协议或任务冲击CPU导致的CPU过载而影响对其他业务的正常处理。

为什么需要OLC?

由于现网组网的复杂性,上送CPU的业务量过大或发生非法业务恶意冲击CPU等问题,都可能会导致CPU过载。CPU过载会造成设备性能下降和业务处理异常等问题。

OLC采用多级漏桶算法,通过令牌桶和多级漏桶的方式对上送CPU处理的受监控协议报文和任务进行调控,能够解决如下问题:

  • 避免CPU资源被长时间过度消耗,保证设备资源的可用性。
  • 避免设备受到非法业务的恶意攻击,保证设备的安全性。
  • 避免某种业务冲击影响对其他业务的正常处理,保证业务处理的公平性。

OLC应用场景是怎样的?

使能OLC功能后,设备在CPU过载时能够及时对受监控协议和任务进行调控。用户还可以选择使能指定受监控协议或任务的OLC功能。同时,还可以使能OLC告警功能,当CPU占用率达到OLC启动门限阈值或低于OLC恢复门限阈值时发出告警。

让我们看个例子。如下图所示,位于不同网段的用户通过Switch接入Internet。由于接入了大量用户,Switch的CPU会处理大量的协议报文和任务。其中,用户发现Switch经常收到大量的ARP Request、ARP Reply和ARP Miss协议报文,并经常处理ARP广播任务,常因此导致CPU占用率大幅升高,造成业务处理异常。用户希望设备能够在CPU占用率超过一定阈值时发出告警并对以上协议报文和任务进行调控,使得CPU负载时不会因为以上协议和任务的冲击而影响其他业务的正常处理,同时希望能够降低CPU的占用率,使其维持在一个稳定水平。

此时,用户可以按照如下思路在Switch上进行配置:

  1. 使能OLC功能。
  2. 使能ARP Request、ARP Reply和ARP Miss协议报文的OLC功能.
  3. 使能ARP广播任务的OLC功能。
  4. 使能OLC告警功能。
  5. 设置OLC启动门限阈值。
配置OLC示例组网图
配置OLC示例组网图

OLC是如何工作的?

OLC采用多级漏桶算法实现对受监控协议报文和任务的调控,其中令牌桶决定其是否允许通过,多级漏桶则决定其通过的速率,通过后的报文才能被上送到CPU。

OLC和CPU占用率相关联,当CPU占用率达到OLC启动门限阈值时,OLC功能启动。

令牌桶

令牌桶用于存放令牌,可存放的令牌总数相当于CPU占用率100%时的报文处理能力。当报文进入漏桶时,必须获得一个令牌才允许通过。令牌桶令牌数的恢复周期为1秒,系统每秒为令牌桶分配一定的令牌数,OLC根据CPU占用率变化自动调整给令牌桶分配的令牌数以控制报文通过的数量。当CPU占用率超过一定阈值后,系统会减少分配的令牌数。当令牌桶的令牌用完之后,进入漏桶的报文将申请不到令牌,则无法被上送到CPU,从而减少CPU的负荷。

多级漏桶

漏桶相当于一个计数器,每当报文进入漏桶时,首先向令牌桶申请令牌,令牌申请成功后,漏桶计数值加1,该计数值累计达到设定的阈值时,后续到达的报文可能会被丢弃。报文通过后,漏桶计数值减1,该数值按照一定的漏出速率减少,漏桶据此控制报文按照一定的速率通过。

OLC采用的多级漏桶包括顶级漏桶、中间漏桶和底层漏桶,由顶级漏桶对整个系统的漏桶进行控制。中间漏桶分为任务中间漏桶和协议中间漏桶,不同受监控协议和任务关联不同的底层漏桶。OLC根据不同业务的优先级,给各个漏桶赋予了不同的权重值,并按照权重值给各漏桶分配资源(可申请的令牌数),保证了不同业务之间的公平性。

多级漏桶基本原理如下图所示。顶级漏桶相当于CPU占用率100%时的处理能力,当CPU占用率达到OLC启动门限阈值时OLC才能启动调控。各受监控协议和任务上送CPU前,分别进入对应的底层漏桶,逐级向上向令牌桶申请令牌,令牌申请成功后才被允许通过。同时,多级漏桶通过调整漏出速率控制报文通过的速率。

多级漏桶基本原理
多级漏桶基本原理
  • 多级漏桶的控制参数

    • 漏出速率(a):该参数数值与系统每秒为令牌桶分配的令牌数相同,表示每秒处理的报文数量。
    • 顶级漏桶容量(N):该参数默认值相当于CPU占用率100%时的报文处理能力。
    • CPU一级门限阈值(T1):该参数默认值为95%,表示CPU占用率为95%。当CPU占用率达到该门限阈值时,开始调低漏出速率。
    • CPU二级门限阈值(T2):该参数默认值为98%,表示CPU占用率为98%。当CPU占用率达到该门限阈值时,加倍调低漏出速率。
    • OLC启动门限阈值(T3):该参数与CPU一级门限阈值相同。当CPU占用率达到OLC启动门限阈值时,启动OLC启动门限定时器(10秒),在该定时器超时前,如果CPU占用率没有低于OLC启动门限阈值,启动OLC功能。
    • OLC恢复门限阈值(T4):该参数默认值为75%,表示CPU占用率为75%,该数值等于CPU一级门限阈值减去20%。当CPU占用率低于OLC恢复门限阈值时,启动OLC恢复门限定时器(20秒),在该定时器超时前,如果CPU不再次达到OLC启动门限阈值,则停止OLC功能。
    • 调整因子(S):该参数用于设置漏出速率的调整速度,调整因子越小,调整速度越快,调整因子越大,调整速度越慢。调整因子过小可以让漏出速率能够根据业务变化得到快速调整,但是可能会导致漏出速率出现反复抖动。
  • 多级漏桶的权重水位

    OLC按照权重值给各漏桶分配资源,各漏桶被分配的资源决定了其权重水位,即各漏桶可申请的令牌数。如下图所示(仅为示例),顶级漏桶的初始权重水位相当于CPU占用率95%时可申请的令牌数,随后由顶级漏桶按权重值逐级向下分配给所有子漏桶,每一层级所有漏桶的权重水位之和相同。

    多级漏桶权重水位分配
    多级漏桶权重水位分配
  • 多级漏桶水位更新

    漏桶的水位是指该漏桶需要申请令牌的报文数量,各级漏桶的水位根据令牌申请情况和权重水位进行更新,具体流程如下:
    1. 受监控协议报文或任务进入底层漏桶后,需要申请令牌,漏桶的水位增长,同时上级漏桶即中间漏桶和顶级漏桶的水位也增长同样的水位。
    2. 底层漏桶判断自身当前水位是否超过权重水位,如果没有超过,申请令牌成功,允许报文通过;如果底层漏桶水位超过权重水位,则向上级漏桶申请资源,如果上级漏桶没有超过权重水位,申请令牌成功,允许报文通过。
    3. 报文通过后,底层漏桶减少的水位,在上级漏桶减少同样的水位。
  • 多级漏桶债务分摊

    如果顶级漏桶的水位超过了权重水位,表明整个系统产生了负债。系统需要每秒对漏桶水位进行刷新,计算各级漏桶的债务,没有产生负债的漏桶可以共享出空闲资源,对产生债务的漏桶的债务资源进行分摊。

    空闲协议漏桶只能分摊负债协议漏桶的负债资源,空闲任务漏桶只能分摊负债任务漏桶的负债资源。

    如下图所示(仅为示例),顶级漏桶的当前水位超过了权重水位,系统产生负债,具体债务分摊流程如下:
    1. 计算负债资源和空闲资源:负债漏桶和空闲漏桶分别计算当前水位和权重水位的差值得出负债资源和空闲资源。
    2. 自顶向下,逐级分摊:各负债漏桶按照权重比例,分摊其他空闲漏桶的空闲资源。
    3. 丢包或延迟处理:如果负债漏桶仍有负债资源,对于协议报文进行丢包处理,对于任务进行延迟处理。
    多级漏桶债务分摊
    多级漏桶债务分摊
  • 漏桶水位阈值设置

    为防止某种受监控协议或任务漏桶独占顶级漏桶的资源,出现资源分配不公平,在顶级漏桶产生负债时,根据每一层级漏桶的空闲资源和负债资源情况,对负债较大的漏桶计算漏桶水位阈值。在设置漏桶水位阈值后,该漏桶申请令牌时,如果当前水位大于漏桶权重水位且大于漏桶水位阈值,则不允许向上级漏桶申请资源。

词条统计
  • 作者: 付丽
  • 最近更新: 2022-05-07
  • 浏览次数: 14820
  • 平均得分:
分享链接到: