一种硬件收帧控制方法与装置的制作方法

文档序号:7696290阅读:167来源:国知局
专利名称:一种硬件收帧控制方法与装置的制作方法
技术领域
本发明涉及计算机与通信技术领域,尤其涉及一种硬件收帧控制方法与装
背景技术
现有的交换机系统中,数据流通常都是通过硬件(即交换芯片)来处理和 转发的,而控制流和一些特殊报文则需要由软件进行处理,例如地址解析协议
(ARP, Address Resolution Protocol)报文,各种路由协议报文等。此模型通常的 工作方式是由交换芯片识别出需要软件处理的报文,再通过交换芯片与CPU 之间的通信机制,将这些报文送到CPU,再由软件进行处理。通常交换芯片与 CPU之间是通过内存来通信的,如图l所示,交换芯片将报文写到内存的某个 约定好的区域中,再通知CPU有报文产生,CPU知道这个事件后,从约定好 的该区域中将报文内容读取出来。
在交换机系统中,软件大致可以分为三层驱动层、数据《连路层和网络层 以上层(包含网络层)。CPU在收到报文后,报文最先经过驱动层,然后由驱动 层送到数据链路层,最后送达网络层以上层,如图2所示。根据报文类型的不 同,报文在每一个层次都有可能被处理掉,如果被处理掉就不再往上送。我们 把驱动层以上的层次称为上层软件。
收帧驱动就是管理从CPU收到事件到从内存指定区域中读出报文的过程 的软件。在收帧过程中,存放报文数据内容的内存区域称为收帧緩沖。报文没 有处理完毕的情况下,此緩冲不能被其他报文使用,只有报文处理完毕释放緩 沖之后,这块緩冲区域才能够被其他报文使用。
CPU与交换芯片之间的报文交互是通过收帧緩沖完成的,在启动收帧驱动
以前,相应软件需要完成以下工作
1、 事先将空闲的收帧緩沖准备好;
2、 告知交换芯片每个收帧緩冲的起始地址和长度,以及緩冲数量,通常一 个緩冲对应一个报文,这一过程称为挂接緩冲。
3、 启动交换悉片收帧。 . 交换芯片在收到报文后需要通知CPU,由相应软件从收帧緩冲中将报文取
走进行处理。交换芯片通常提供两种中断来通知CPU:
1、 每收到一个报文,产生一次中断,这种中断称为报文中断;
2、 所有緩沖区都使用完毕,产生中断。这种中断是为了让CPU知道收帧 緩冲已经用完,需要准备新的緩冲以进行下一次收帧。这种中断称为緩沖结束 中断。
对于交换机系统而言,交换芯片送CPU的报文通常都是比较重要的报文, 这些报文必须要及时处理才能保证上层协议软件的正确运行。因此,系统对于 这些报文的响应要尽可能的快,通常收帧驱动的优先级都比上层软件高,换句 话说,只要有报文送到CPU,那么收帧驱动会打断上层协议的运行而优先运行。 通常的收帧驱动中,收帧緩冲处理逻辑如图3所示。
图3中,CPU申请收帧緩冲,如果申请成功,则将收帧通道挂接新申请 的收帧緩冲,启动收帧。而如果申请不成功,也就是说,没有新的收帧緩冲用 以分配的时候,需要等当前的收帧緩冲释放(或强行释放当前的收帧緩沖)以 后,再挂接当前的收帧緩沖,启动收帧。
交换芯片在一次收帧结束后,相应軟件会立刻申请空闲緩冲,挂接緩沖并 启动收帧,这样,只要内存空间足够,只要有帧进来收帧就不会停止。由于 CPU的处理能力是有限的,当CPU运行收帧驱动的时候一般情况下是在中断 中进行,此时除了中断之外其它进程包括上^软件进程就得不到运行,那么, 当有大量的报文持续送CPU的时候,收帧驱动会一直运行,报文虽然送到了 上层,但上层软件进程却无法运行,这些报文也就得不到处理。如此持续下去,
网络协议的运行就变得异常。
现有技术中,底层驱动可以通过限制收帧速率来让出CPU,但这同时也会
带来几个问题
1、 测量收帧速率本身就会消耗CPU处理能力,使得收帧性能降低;
2、 设置的收帧速率过慢会导致CPU资源闲置,浪费处理机;设置的收帧 速率过快达不到控制CPU不陷入收帧驱动的目的。如何设置一个合适的值是 一个比较困难的问题;
3、 这种限速通常都是通过软件实现,这也会消耗CPU处理能力,降低收 帧性能。

发明内容
本发明实施例提供一种硬件收帧控制方法与装置,用以解决现有技术中大 量报文持续送CPU的情况下,收帧驱动一直运行导致上层软件没有机会运行
的问题,同时,尽量减少收帧性能损失。
一种硬件收帧控制方法,该方法包括
A、 为每个硬件收帧通道设置收帧緩沖池,每个收帧緩沖池中包含若干个 收帧緩冲;
B、 当所述收帧緩冲池中收帧緩冲的数量大于预先设定的收帧阈值时,允 许所述收帧緩冲挂接所述硬件收帧通道,启动硬件收帧;否则,不允许所述收 帧緩冲挂接所述硬件收帧通道。
一种硬件收帧控制装置,该装置包括緩沖池单元、第一判断单元和设置单 元,其中,
所述緩冲池单元,用于为每个硬件收帧通道设置收帧緩沖池; 所述第一判断单元,用于判断所述收帧緩冲池中收帧緩沖的数量是否大于 预先设定的收帧阈值,并将判断结果发送所述:&置单元;
所述设置单元,用于根据所述第一判断单元的判断结果,确定是否允许收
帧緩冲挂接硬件收帧通道,启动硬件收帧。
本发明实施例通过为每个硬件收帧通道设置收帧緩冲池,每个收帧緩沖池
中有若干个收帧緩沖;当所述收帧緩沖池中收帧緩冲的数量大于预先设定的收 帧阈值时,允许所述收帧緩沖挂接所述硬件收帧通道,启动硬件收帧;否则, 不允许所述收帧缓冲挂接所述硬件收帧通道。本发明实施例提供的方案,有效 防止CPU陷入底层收帧驱动导致上层软件没有机会运行的问题,同时,不需 要额外的软件开销去测量收帧速率,收帧性能损失小。并且,上层软件繁忙的 时候,底层驱动不再送报文上去,CPU处理机可以更多的让给上层软件;而上 层软件空闲的时候,底层驱动继续送报文,使整个系统达到动态平衡。


图1为现有技术中收帧硬件实现示意图; 图2为现有技术中交换机软件分层示意图; 图3为现有技术中收帧緩冲处理流程图; 图4为本发明实施例1的主要实现原理流程图; 图5为本发明实施例2的主要实现原理流程图; 图6为本发明实施例3提供装置的结构示意图; 图7为本发明实施例4提供装置的结构示意图。
具体实施例方式
送CPU的报文在交换机软件中的传递路径为收帧驱动^数据链路层^ 网络层以上层,所有报文都会经过收帧驱动,而每个报文都会占用收帧緩沖。 而只有报文被处理完之后,收帧才会被释放。本发明实施例的核心思想就是通 过监控收帧緩冲的占用情况,控制硬件将报文送CPU的速率。
下面结合各个附图对本发明实施例技术方案的主要实现原理、具体实施方 式及其对应能够达到的有益效果进行详细的阐述。
如图4所示,本发明实施例1的主要实现原理流程如下 步骤ll,为每个硬件收帧通道设置收帧緩冲池,每个收帧緩冲池中有若干 个收帧緩冲。
通常每个硬件会有多个收帧通道,需要分别为每个硬件收帧通道设置收帧 緩冲池,每个收帧緩冲池中设置多个收帧緩冲。各个收帧緩冲池中的收帧緩沖 数量可以一致,也可以不一致。
这里, 一个收帧緩沖指的是可以緩冲一个报文进行收帧的緩冲,也就是说, 一个报文占用一个收帧緩冲。当然,也可以将收帧緩沖的大小定义为两个报文 的长度或其它长度,可以根据实际需要进行设定。
步骤12,当收帧緩冲池中收帧緩沖的数量大于预先设定的收帧阈值时,允 许收帧緩冲挂接硬件收帧通道,启动硬件收帧;否则,不允许收帧緩沖挂接硬 件收帧通道。
需要发往CPU的每个报文占用一个收帧緩沖,在报文处理完毕之后,收 帧缓沖回收到緩沖池中。由于硬件收帧通道只有在挂接了收帧緩沖才能够送报 文到CPU,否则会停止收帧,因此控制收帧通道与收帧緩冲的挂接频度即可控 制收帧速率。
因此,可以设置一个收帧阈值,当緩沖池中的空闲緩冲数量大于收帧阈值 时,允许将空闲緩沖挂接到硬件收帧通道上;否则,如果緩沖池中的空闲緩沖 数量小于等于收帧阈值,则不允许收帧緩冲挂接收帧通道,由此可以实现对收 帧速率的控制。这里的收帧阈值可以根据需要设置,并可以根据需要进行调整。
较佳地,当收帧緩冲释放并回到緩冲池之后,需要进一步判断当前挂接硬 件的收帧緩沖是否被占用,如果是,则进一步判断收帧緩沖池中收帧緩沖的数 量是否大于预先设定的收帧阈值,如果大于,则允许收帧緩沖挂接硬件收帧通 道,否则,如果收帧緩冲池中收帧緩沖的数量小于等于预先设定的收帧阚值, 或者当前挂接硬件的收帧緩冲没有被占用,则不做处理。
这里,判断当前挂接硬件的收帧緩沖是否被占用,可以设置一个占用阈值,
当被占用的收帧缓冲个数达到这个占用阈值时,认为当前挂接硬件的收帧緩沖 被占用,否则,认为当前挂接的收帧緩冲未被占用。
举例来说,设定某个硬件收帧通道相关的收帧緩冲池中有若干个收帧緩 沖,系统最初会为硬件挂接一定数量的收帧緩冲用以进行收帧。这里初始挂接 收帧緩沖的数量可以根据需要设定,并可以进行调整。当一个报文的收帧过程 结束,该收帧緩冲被释放,回到收帧緩冲池中,成为空闲收帧緩沖。此时,进 一步判断剩余的仍然挂接硬件的收帧緩沖是否被占用。这里的占用的判断标准 可以是剩余挂接硬件的收帧緩冲全部被占用或者是设定占用阈值来判定。如果 剩余挂接硬件的收帧緩沖被占用,说明挂接硬件的收帧緩沖数量较少,需要申 请新的空闲收帧緩沖挂接硬件。反之,说明挂接硬件的收帧緩冲数量较多,不 需要申请新的空闲收帧緩冲,因而不做任何操作。当需要申请新的空闲收帧緩 沖时,进一步判断收帧緩沖池中的空闲收帧緩沖数量是否大于预先设定的收帧 阈值,如果是,可以为硬件挂接新的收帧緩冲,否则,不能为硬件挂接新的收 帧緩沖。
通过这样的判断和限制,可以保障每次都只有一定数量的收帧緩沖挂接硬 件收帧通道,从而保证CPU不会陷入收帧过程而无法响应其它软件。同时,
通过对收帧阈值的调节,可以控制收帧过程对CPU的占用程度,有力的提高
系统的效率。
相应的,如图5所示,为本发明实施例2的主要实现原理流程。
其中,为每个硬件收帧通道设置收帧緩冲池,每个收帧緩冲池中有若干个 收帧緩冲。在收帧緩沖释放之后,自动回到收帧緩冲池。
判断当前挂接硬件的收帧緩冲是否被占用,如果否,不做处理。如果是, 则进一步判断当前的收帧缓冲池中的收帧緩冲数量是否大于预先设定的收帧 阈值,如果是,则允许收帧緩冲挂接硬件收帧通道,启动收帧;否则,不允许 收帧緩冲桂接硬件收帧通道。
这里,判断当前挂接硬件的收帧緩冲是否被占用,可以设置一个占用阈值,
当被占用的收帧緩冲个数达到这个占用阈值时,认为当前挂接硬件的收帧緩冲 被占用,否则,认为当前挂接的收帧緩冲未被占用。
相对于如图3所示的现有技术提供的收帧緩冲,本实施例2在收帧緩冲释 放后增加了判断收帧缓冲池中收帧缓冲的数量是否大于预先设定的收帧阈值 的步骤。通过分析可以知道,由于上层软件不将报文处理完毕(这里指一个报 文),收帧缓沖就不会得到释放,因此,空闲收帧緩沖的数量实际上可以表征 系统的繁忙情况。在上层软件繁忙的时候,收帧驱动送更多的报文到上层软件 也不会得到处理,反而会引起CPU陷入收帧驱动。所以,在空闲收帧緩沖未 达到预先设定的收帧阈值之前,不让硬件送报文到CPU,而空闲收帧緩沖达到 预先设定的收帧阈值,说明上层已经开始空闲,此时通过挂接空闲收帧緩冲到 硬件收帧通道,让硬件开始收帧。
相应地,本发明实施例3还提供了一种硬件收帧控制装置,如图6所示, 该装置包括緩沖池单元21、第一判断单元22和设置单元23,具体如下
緩冲池单元21,用于为每个硬件收帧通道设置收帧緩冲池。
这里,每个收帧緩沖池中有若干个收帧緩沖。每个收帧緩沖池中的手帧緩 冲数量可以相等,也可以不相等。
第一判断单元22,用于判断收帧緩冲池中收帧緩冲的数量是否大于预先设 定的收帧阔值,并将判断结果发送设置单元23。
设置单元23,用于根据第一判断单元22的判断结果,确定是否允许收帧 緩沖挂接硬件收帧通道,启动硬件收帧。也就是说,当收帧緩沖池中收帧緩冲 的数量大于预先设定的收帧阈值时,允许收帧緩冲挂接硬件收帧通道,启动硬 件收帧;否则,不允许收帧緩冲挂接硬件收帧通道。
较佳地,如上所述的硬件收帧控制装置还包括阈值单元24,用于设定收帧 緩冲池中允许收帧的收帧緩沖数量的收帧阈值,并根据需要对所述收帧阈值进 行调整。
较佳地,如图7所示,为本发明实施例4提供装置结构示意图。如上述实
施例3所示的硬件收帧控制装置中,在緩冲池单元21与第一判断单元22之间 还包括第二判断单元25,用于判断当前挂接硬件的收帧緩冲是否被占用,如果 是,通知所述第一判断单元22进行后续处理。
这里,判断当前挂接硬件的收帧緩冲是否被占用,可以设置一个占用阈值, 当被占用的收帧緩冲个数达到这个占用阈值时,认为当前挂接硬件的收帧緩沖 被占用,否则,认为当前挂接的收帧緩沖未被占用。
综上,本发明实施例提供的方案,有效防止CPU陷入底层收帧驱动导致 上层软件没有机会运行的问题,同时,不需要额外的软件开销去测量收帧速率, 收帧性能损失小。并且,上层软件繁忙的时候,底层驱动不再送报文上去,CPU 处理机可以更多的让给上层软件;而上层软件空闲的时候,底层驱动继续送报 文,Y吏整个系统达到动态平衡。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发 明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及 其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1、一种硬件收帧控制方法,其特征在于,该方法包括A、为每个硬件收帧通道设置收帧缓冲池,每个收帧缓冲池中包含若干个收帧缓冲;B、当所述收帧缓冲池中收帧缓冲的数量大于预先设定的收帧阈值时,允许所述收帧缓冲挂接所述硬件收帧通道,启动硬件收帧;否则,不允许所述收帧缓冲挂接所述硬件收帧通道。
2、 如权利要求l所述的方法,其特征在于,在步骤B之前,进一步包括 判断当前挂接所述硬件收帧通道的收帧緩沖是否被占用,如果是,执行步骤B,否则,不做处理,流程结束。
3、 如权利要求2所述的方法,其特征在于,所述判断当前挂接的收帧緩沖 是否被占用,包括设置一个占用阈值;当被占用的收帧緩冲个数大于所述占用阈值时,当前挂接所述硬件收帧通 道的收帧緩冲被占用,否则,当前挂接所述硬件收帧通道的收帧緩冲未被占用。
4、 如权利要求1或2所述的方法,其特征在于,所述不同的收帧緩冲池 中包含的收帧緩沖的数量相等或不等。
5、 如权利要求1或2所述的方法,其特征在于,该方法进一步包括 在收帧过程中,每个报文占用一个所述收帧缓沖; 在所述报文处理完毕之后,所述收帧緩冲回收到所述收帧緩沖池中。
6、 如权利要求1或2所述的方法,其特征在于,所述当所述收帧緩冲池 中收帧緩冲的数量大于预先设定的收帧阈值时,允许所述收帧緩冲挂接所述硬 件收帧通道,启动硬件收帧,包括预先设定收帧阈值;比较所述收帧緩冲池中收帧緩冲的数量与所述收帧阈值,如果所述收帧緩 沖池中收帧緩冲的数量大于预先设定的收帧阈值,则允许所述收帧緩沖挂接所 述硬件收帧通道,启动硬件收帧。
7、 一种硬件收帧控制装置,其特征在于,该装置包括緩冲池单元、第一 判断单元和设置单元,其中,所述緩沖池单元,用于为每个硬件收帧通道设置收帧緩冲池; 所述第一判断单元,用于判断所述收帧緩冲池中收帧缓冲的数量是否大于预先设定的收帧阈值,并将判断结果发送所述设置单元;所述设置单元,用于根据所述第一判断单元的判断结果,确定是否允许收帧緩沖挂接硬件收帧通道,启动硬件收帧。
8、 如权利要求7所述的装置,其特征在于,所述装置进一步还包括阈值 单元,用于根据需要设定和/或修改收帧緩冲池的收帧阈值。
9、 如权利要求7所述的装置,其特征在于,所述设置单元在所述判断结 果为所述收帧緩沖池中收帧緩冲的数量大于所述收帧阈值时,允许所述收帧緩 冲挂接所述硬件收帧通道,启动硬件收帧;否则,不允许所述收帧緩沖挂接所 述石更件收帧通道。
10、 如权利要求7所述的装置,其特征在于,在所述緩冲池单元与第一判 断单元之间还包括第二判断单元,用于判断当前挂接所述硬件收帧通道的收帧 缓沖是否被占用,如果是,通知所述第一判断单元进行后续处理。
全文摘要
本发明公开了一种硬件收帧控制方法与装置,通过为每个硬件收帧通道设置收帧缓冲池,每个收帧缓冲池中有若干个收帧缓冲;当所述收帧缓冲池中收帧缓冲的数量大于预先设定的收帧阈值时,允许所述收帧缓冲挂接所述硬件收帧通道,启动硬件收帧;否则,不允许所述收帧缓冲挂接所述硬件收帧通道。本发明实施例提供的方案,有效防止CPU陷入底层收帧驱动导致上层软件没有机会运行的问题,同时,不需要额外的软件开销去测量收帧速率,收帧性能损失小。并且,上层软件繁忙的时候,底层驱动不再送报文上去,CPU处理机可以更多的让给上层软件;而上层软件空闲的时候,底层驱动继续送报文,使整个系统达到动态平衡。
文档编号H04L12/56GK101340373SQ200810118939
公开日2009年1月7日 申请日期2008年8月27日 优先权日2008年8月27日
发明者洵 张 申请人:北京星网锐捷网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1