一种微引擎的分配方法和装置的制作方法

文档序号:7923273阅读:119来源:国知局
专利名称:一种微引擎的分配方法和装置的制作方法
技术领域
本发明涉及通信技术领域,特别涉及一种微引擎的分配方法和装置。
背景技术
在硬件转发路径上,当转发模块之间的处理速度不一致时,可以通过反 压机制解决这一问题。反压机制简单说就是上游处理速度快过下游处理速度 时,下游对上游反压,使上游处理速度变慢,最后达到上下游处理速度相当 的一个平衡状态。反压的方向与数据流的方向相反,但是在进行反压时经常 会出现转发丟包的现象。
网络处理器(Network Processor, NP)是一种可编程器件,它特定的用 于处理通信领域的各种任务,例如包处理、协议分析、路由查找、声音/数 据的汇聚、防火墙或服务质量(Quality of Service, QoS )。它通常由若干个微 处理器(Micro Engine, ME)和一些^5更件协处理器组成。每个^Ti处理器都是 可编程、多线程的。网络处理器按处理机制可以分为流水线式和并行处理式。
网络处理器中,每个微处理器有一定的指令空间,通过软件来控制处理 流程。在实现过程中,由于任务分配不同,对于微引擎的分配也可能会采用 流水线式和并行处理式同时存在的模式,比如几个ME串行独立进行某些任务 的处理,几个ME并行执行相同的任务,如图1所示。由于软件的实现方式不 同,并行处理的几组ME完成的处理任务(如图l中的ME3x和ME4x),对于报 文转发而言,可以是同等重要的,也可以是有主有次的。例如某种软件实现 中,将ME3x作为三层转发的实现模块,ME4x作为二层转发的实现模块。这 种情况下,对于三层转发报文,ME4x的利用率很低,而对于二层转发的报文, ME3x的利用率就会很低。
现有技术中,网络处理器的转发模型固定,启动时为ME加载固定的代码。 在多微引擎的网络处理器中,网络处理器启动以后,微引擎的分配是固定的,例如微引擎MEll MEln用于报文的接收、微引擎ME21 ME2n用于二层转 发业务、微引擎ME31 ME3n用于三层转发业务,其他微引擎用于调度、发送 等。如果需要更改;微引擎的分配,则需要重新编译,分配新的转发模型。
在网络处理器中,由于业务日趋复杂,对指令的需求也不断增大。而微 引擎的指令空间有限,因此微引擎个数的分配会直接影响到业务的转发效率。
例如假设分配给用于转发的ME个数为8个,三层IPv4 (Internet Protocol version 4,因特网协议版本4)转发需要4个ME可以达到线速,二层IPv4转发 需要5个ME可以达到线速,由于资源的限制,并且优先为三层IPv4转发分配 ME,则只能为二层IPv4转发分配4个ME。
但是,在实际网络中, 一台路由器设备通常是二三层业务混跑的,因此 业务流量是不固定的,有可能某一时刻经过该路由器设备的二层业务流量很 大,而三层业务流量却;f艮少,因此会导致分配给三层业务的ME浪费,而分配 给二层业务的ME却还不够。而另一时刻又可能会出现三层业务偏多、二层业 务偏少的情况。
现有技术可以通过网络工程师使用命令手动调整微引擎的分配。但是这 种方法需要工程师时刻了解实际的业务流量情况,在由于NP性能不够导致丟 包时不能快速地感知并响应。

发明内容
本发明实施例提供一种微引擎的分配方法和装置,以实现根据当前各业 务的流量,动态为各业务4莫块分配ME。
为达到上述目的,本发明实施例一方面提供一种微引擎的分配方法,包

确定由于网络处理器NP中第 一 业务模块占用的微引擎ME数量不够导致 转发模块出现反压丟包;
根据当前各业务模块的流量和当前各业务模块所允许的最大流量确定需 要重新为所述各业务模块分配ME,并根据所述当前各业务模块的流量确定需 要为所述各业务模块重新分配的ME的个数;根据确定的个数为所述各业务模块重新分配ME。
另一方面,本发明实施例还提供一种微引擎的分配装置,包括
第一确定模块,用于确定由于网络处理器NP中第一业务模块占用的微引 擎ME数量不够导致转发模块出现反压丢包;
第二确定模块,用于根据当前各业务模块的流量和当前各业务模块所允 许的最大流量确定需要重新为所述各业务模块分配ME,并根据所述当前各业 务模块的流量确定需要为所述各业务模块重新分配的ME的个数;
分配模块,用于根据所述第二确定模块确定的个数为所述各业务模块重 新分配ME。
与现有技术相比,本发明实施例具有以下优点本发明实施例在由于NP 中第一业务模块占用的微引擎ME数量不够导致转发模块出现反压丟包时, 根据当前各业务模块的流量和当前各业务模块所允许的最大流量确定需要重 新为各业务模块分配ME,并根据当前各业务模块的流量确定需要为各业务才莫 块重新分配的ME的个数,然后根据确定的个数为各业务模块重新分配ME。 从而实现了实时监控网络中的业务流量,在由于一个业务模块占用的ME数 量不够导致反压丢包时,可以动态调整为各业务模块分配的ME的个数,使 之达到一个最优的状态,减少反压丢包。


为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所 需要使用的附图作筒单地介绍,显而易见地,下面描述中的附图仅仅是本发 明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前 提下,还可以根据这些附图获得其他的附图。 图1为现有^支术ME处理任务的示意图; 图2为本发明实施例的应用场景示意图; 图3为本发明实施例一种微引擎的分配方法的流程图; 图4为本发明实施例另 一种微引擎的分配方法的流程图; 图5为本发明实施例业务信息统计表的数据结构示意图;图6为本发明实施例一种微引擎的分配装置的结构图; 图7为本发明实施例另 一种《敖引擎的分配装置的结构图。
具体实施例方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行 清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例, 而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有 做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种微引擎的分配方法,根据当前各业务模块的流量, 在由于NP中第 一业务模块占用的微引擎ME数量不够导致转发模块出现反压 丟包时,动态为各业务模块分配微引擎,从而可以充分利用现有的微引擎, 减少反压丟包。本发明实施例中的第一业务模块只是为了描述方便,并不用 来限定优先级的高低或顺序的先后。
如图2所示,为本发明实施例路由器中控制层面和转发层面的示意图,其 中,转发层面由多个转发^t块组成,NP是转发层面的一个模块,NP中包括n 个业务模块,分别处理不同类型的业务。
以图2所示的场景为例,本发明实施例一种微引擎的分配方法的流程图, 如图3所示,包括
步骤S301,确定由于NP中笫一业务模块占用的微引擎ME数量不够导 致转发模块出现反压丟包。具体可以为
控制层面在查询到转发模块出现反压丢包之后,确定该转发模块的丢包
数;
在丢包数超过预设的阈值之后,当确定反压的源头为NP时,确定由于该 NP中第一业务才莫块占用的ME数量不够导致转发才莫块出现反压丟包。
步骤S302,根据当前各业务模块的流量和当前各业务模块所允许的最大 流量确定需要重新为各业务模块分配ME,并根据当前各业务模块的流量确定 需要为各业务模块重新分配的ME的个数。
本发明实施例中,控制层面为NP分配内存空间,使NP可以利用分配的内存空间统计各业务模块的业务信息,该业务信息至少可以包括报文数或报 文字节数。
在确定由于NP中第 一业务模块占用的微引擎ME数量不够导致转发模块 出现反压丢包之后,控制层面在设定的时间长度内,获取NP统计的报文数或 报文字节数,根据该报文数或报文字节数,以及设定的时间长度,获得当前 各业务模块的流量。
当第 一业务模块的流量超过了第 一业务模块当前所允许的最大流量,并 且除第一业务模块之外的其他业务模块有空闲的ME时,确定需要为各业务 模块重新分配ME,该第 一业务模块当前所允许的最大流量由第一业务模块占 用的ME确定。
步骤S303,根据确定的个数为各业务模块重新分配ME。
上述微引擎的分配方法,在由于NP中第一业务模块占用的微引擎ME数 量不够导致转发模块出现反压丢包时,根据当前各业务模块的流量和当前各 业务模块所允许的最大流量确定重新为各业务模块分配ME,并根据当前各业 务模块的流量确定为各业务模块重新分配的ME的个数,然后根据确定的个 数为各业务模块重新分配ME。从而实现了实时监控网络中的业务流量,在 NP中一个业务模块的ME数量不够导致反压丟包时,可以动态调整为各业务 模块分配的ME的个数,使之达到一个最优的状态,减少反压丢包。
如图4所示,为本发明实施例另一种微引擎的分配方法的流程图,包括
步骤S401,控制层面为NP分配内存空间。
具体地,控制层面可以在NP和控制层面都能访问的外部存储器中为NP分 配一段内存空间进行业务信息的统计,例如控制层面可以为NP分配一段内 存空间,并在该内存空间中建立业务信息统计表。同时将该业务信息统计表 的基地址发送给NP。控制层面可以在启动NP过程中,为NP分配地址后,将该 业务信息统计表的基地址通过patch变量模式下发给NP。 上述业务信息统计表的数据结构可以如图5所示。 步骤S402, NP利用分配的内存空间统计各业务^t块的业务信息。 具体地,NP在不同业务模块的入口分別进行统计,将统计的内容记录到建立的业务信息统计表中。对于每个业务模块来说,统计的业务信息包括但
不限于报文数、报文字节数等参数。例如NP的业务模块包括处理二层业务 的二层业务模块和处理三层业务的三层业务模块,在接收到二层报文后,NP
将二层报文的信息记录到二层业务模块的表项中;接收到三层报文后,NP将
三层报文的信息记录到三层业务模块的表项中。
步骤S403,控制层面定时查询转发层面各转发模块的反压丟包情况。
具体地,控制层面启动定时器Tl,当定时器T1设定的时间到时,控制层 面查询转发层面各转发模块是否出现反压丢包,如果某转发模块有丢包,则 控制层面重复查询一次或多次,如果在重复查询时,该转发模块的丢包数增 长,在丢包数超过预设的阈值M之后,控制层面进一步确定反压的源头是否为 NP,当反压的源头为NP时,控制层面可以确定是由于NP中一个业务模块占用 的ME数量不够而导致转发模块出现反压丟包。
其中,定时器T1设定的时长可以为一个用户或运营商认为合适的值,避 免调整次数过于频繁导致系统性能不稳定。
步骤S404,控制层面确定需要为各业务模块重新分配ME,并确定需要为 各业务模块重新分配的ME的个数。
在控制层面确定由于NP中 一 个业务模块的ME数量不够而导致转发模块 反压丢包之后,控制层面启动定时器T2,在定时器T2设定的时间长度内,控 制层面获取NP在业务信息统计表中统计的各业务模块的业务信息,根据报文 数或报文字节数,以及定时器T2设定的时间长度,获得当前各业务模块的流 量,判断当前各业务模块的流量是否超过了各业务模块当前所允许的最大流 量。当一个业务模块的流量超过了该业务模块当前所允许的最大流量,并且 其他业务模块有空闲的ME时,控制层面确定可以通过重新分配各业务模块占 用的ME的个数来解决丟包问题,进而控制层面根据当前各业务模块的流量确 定为各业务模块重新分配的ME的个数。其中,业务模块当前所允许的最大流 量由该业务模块占用的ME确定。
步骤S405,控制层面根据确定的个数为各业务模块分配ME。
在控制层面确定需要为各业务模块分配的ME的个数之后,控制层面为NP的ME重新加载代码,根据确定的个数为各业务才莫块重新分配ME,以适合
当前业务流量的需求。
在调整转发模型的过程中,由于需要为ME重新加载代码,因此可能会导 致毫秒级的断流现象,但这种代价在持续反压丟包的情况下是允许的。
本发明实施例可以实时监控网络中的业务流量,在由于NP中 一个业务才莫 块占用的ME数量不够导致转发模块出现反压丟包时,动态调整为各业务模块 分配的ME的个数,转发模型,使之达到一个最优的状态,减少反压丟包。
如图6所示,为本发明实施例一种微引擎的分配装置的结构图,包括
第一确定模块61,用于确定由于NP中第一业务模块占用的微引擎ME 数量不够导致转发模块出现反压丟包;
第二确定模块62,用于根据当前各业务模块的流量和当前各业务模块所 允许的最大流量确定需要重新为各业务模块分配ME,并根据当前各业务模块 的流量确定需要为各业务模块重新分配的ME的个数;
分配模块63,用于根据第二确定模块62确定的个数为各业务模块重新分 配ME。
其中,如图7所示,第一确定模块61可以包括
丟包数确定子模块611,用于在查询到转发模块出现反压丟包之后,确定 转发模块的丟包数;
丢包确定子模块612,用于在丟包数确定子模块611确定的丟包数超过预 设的阈值之后,当确定反压的源头为NP时,确定由于NP中第一业务才莫块占 用的ME数量不够导致转发模块出现反压丟包。
该微引擎的分配装置还可以包括
空间分配模块64,用于为NP分配内存空间,以便NP利用分配的内存空 间统计各业务模块的业务信息,该业务信息至少可以包括报文数或报文字节 数。
其中,第二确定模块62可以包括
获取子模块621,用于在设定的时间长度内,获取NP统计的各业务模块 的报文数或报文字节数;流量获得子模块622,用于根据获取子模块621获取的报文数或报文字节 数,以及设定的时间长度,获得当前各业务模块的流量;
ME分配确定子模块623,用于当流量获得子模块622获得的第一业务模 块的流量超过了第一业务模块当前所允许的最大流量,并且除第一业务模块 之外的其他业务模块有空闲的ME时,确定需要为各业务模块重新分配ME, 第 一业务模块当前所允许的最大流量由第 一业务模块占用的ME确定。
该微引擎的分配装置可以位于路由器的控制层面。
上述模块可以分布于一个装置,也可以分布于多个装置。上述模块可以 合并为一个模块,也可以进一步拆分成多个子模块。
上述微引擎的分配装置,在第一确定模块61确定由于NP中第一业务模 块的微引擎ME数量不够导致转发模块出现反压丟包时,第二确定模块62根 据当前各业务模块的流量和当前各业务模块所允许的最大流量确定重新为各 业务模块分配ME,并根据当前各业务模块的流量确定为各业务模块重新分配 的ME的个数,然后分配模块63根据第二确定模块62确定的个数为各业务 模块重新分配ME。从而实现了实时监控网络中的业务流量,在由于NP中第 一业务模块的ME数量不够导致转发模块反压丟包时,可以动态调整为各业 务模块分配的ME的个数,使之达到一个最优的状态,减少反压丟包。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发 明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。 基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软 件产品可以存储在一个非易失性存储介质(可以是CD-ROM, U盘,移动硬 盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服 务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的 模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述 进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一 个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。 以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,
任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1、一种微引擎的分配方法,其特征在于,包括确定由于网络处理器NP中第一业务模块占用的微引擎ME数量不够导致转发模块出现反压丢包;根据当前各业务模块的流量和当前各业务模块所允许的最大流量确定需要重新为所述各业务模块分配ME,并根据所述当前各业务模块的流量确定需要为所述各业务模块重新分配的ME的个数;根据确定的个数为所述各业务模块重新分配ME。
2、 如权利要求1所述的方法,其特征在于,所述确定由于网络处理器 NP中第 一业务模块占用的微引擎ME数量不够导致转发模块出现反压丟包包 括在查询到转发模块出现反压丟包之后,确定所述转发模块的丟包数; 在所述丟包数超过预设的阈值之后,当确定反压的源头为NP时,确定由于所述NP中第一业务模块占用的ME数量不够导致所述转发模块出现反压丢包。
3、 如权利要求l所述的方法,其特征在于,还包括为所述NP分配内存空间,以便所述NP利用所述内存空间统计各业务才莫
4、 如权利要求3所述的方法,其特征在于,所述根据当前各业务模块的 流量和当前各业务模块所允许的最大流量确定需要重新为所述各业务模块分 配ME包才舌在设定的时间长度内,获取所述NP统计的各业务模块的报文数或报文字 节数;根据所述报文数或所述报文字节数,以及设定的时间长度,获得当前各 业务模块的流量;当第一业务模块的流量超过了所述第一业务模块当前所允许的最大流 量,并且除所述第一业务模块之外的其他业务模块有空闲的ME时,确定需 要为所述各业务^t块重新分配ME,所述第一业务^^莫块当前所允许的最大流量 由所述第 一业务模块占用的ME确定。
5、 一种微引擎的分配装置,其特征在于,包括第一确定模块,用于确定由于网络处理器NP中第一业务模块占用的微引 擎ME数量不够导致转发模块出现反压丟包;第二确定模块,用于根据当前各业务模块的流量和当前各业务模块所允 许的最大流量确定需要重新为所述各业务模块分配ME,并根据所述当前各业 务模块的流量确定需要为所述各业务模块重新分配的ME的个数;分配模块,用于根据所述第二确定模块确定的个数为所述各业务模块重 新分配ME。
6、 如权利要求5所述的装置,其特征在于,所述第一确定模块包括 丟包数确定子模块,用于在查询到转发模块出现反压丢包之后,确定所述转发模块的丟包数;丟包确定子模块,用于在所述丟包数确定子模块确定的丢包数超过预设 的阈值之后,当确定反压的源头为NP时,确定由于所述NP中第一业务模块 占用的ME数量不够导致所述转发模块出现反压丟包。
7、 如权利要求5所述的装置,其特征在于,还包括 空间分配模块,用于为所述NP分配内存空间,以便所述NP利用所述内存空间统计各业务模块的业务信息,所述业务信息至少包括报文数或报文字 节数。
8、 如权利要求7所述的装置,其特征在于,所述第二确定模块包括 获取子模块,用于在设定的时间长度内,获取所述NP统计的各业务模块的报文数或报文字节数;流量获得子模块,用于根据所述获取子模块获取的报文数或报文字节数, 以及设定的的时间长度,获得当前各业务模块的流量;ME分配确定子模块,用于当所述流量获得子模块获得的第 一业务模块的 流量超过了所述第一业务模块当前所允许的最大流量,并且除所述第一业务 模块之外的其他业务模块有空闲的ME时,确定需要为所述各业务模块重新 分配ME,所述第一业务模块当前所允许的最大流量由所述第一业务模块占用 的ME确定。
9、如权利要求5-8任意一项所述的装置,其特征在于,所述微引擎的分 配装置位于路由器的控制层面。
全文摘要
本发明实施例公开了一种微引擎的分配方法和装置,所述微引擎的分配方法包括确定由于网络处理器NP中第一业务模块占用的微引擎ME数量不够导致转发模块出现反压丢包;根据当前各业务模块的流量和当前各业务模块所允许的最大流量确定需要重新为所述各业务模块分配ME,并根据所述当前各业务模块的流量确定需要为所述各业务模块重新分配的ME的个数;根据确定的个数为所述各业务模块重新分配ME。本发明实施例实现了实时监控网络中的业务流量,在由于ME数量不够导致反压丢包时,可以动态调整为各业务模块分配的ME的个数,使之达到一个最优的状态,减少反压丢包。
文档编号H04L12/56GK101442486SQ200810187518
公开日2009年5月27日 申请日期2008年12月24日 优先权日2008年12月24日
发明者田小辉 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1