一种高速路由器流量管理芯片链表存储管理方法及系统的制作方法

文档序号:7606891阅读:148来源:国知局
专利名称:一种高速路由器流量管理芯片链表存储管理方法及系统的制作方法
技术领域
本发明涉及数据通讯技术中分组转发设备的存储管理方法,尤其涉及一种高速路 由器流量管理芯片链表存储管理方法及系统。
背景技术
随着网络容量与业务不断增长,为了实现报文的高速转发,一般在路由器内部设 置专门的流量管理芯片完成对高速数据流的管理;在流量管理芯片中先将报文数据缓存后 调度输出。对高端路由器设备而言,一个基本要求是至少缓存200ms线速的数据报文,在 40Gbps环境下,至少要SGbits缓存容量。流量管理芯片会外挂缓存存储报文数据,在芯片 内部采用链表管理报文数据。每个链表节点对应一片固定大小的外部存储空间,根据链表 节点的个数,决定将链表节点存储在芯片内部或外部。芯片需要提供100MPPS分组交换能力,在250M系统时钟下,至少需要2个周期处 理一个链表节点。由于链表节点比较多,需要存储在外挂的QDR(Quad DateRate,4倍数据 倍率)缓存中,而QDR存在读延迟,读延迟的范围为7-15个周期,因此不能做到2周期处理 一个链表节点。目前现有技术中,尚没有成熟的技术方案能够解决该问题。

发明内容
本发明要解决的技术问题是针对现有技术中存在的问题和缺陷,提供一种高速路 由器流量管理芯片链表存储管理方法及系统,能够实现对链表节点的读操作流水起来,隐 藏了读延迟,提高报文处理速度。为此,本发明采用了如下技术方案一种高速路由器流量管理芯片链表存储管理方法,包括如下步骤为每个报文队列建立M个队列链表,并将所述队列链表保存于外挂的缓存中;M大 于等于N/K,且M为整数,其中N为所述外挂的缓存的读延时,k为流量管理芯片要求处理一 个链表节点的时间;当报文入队时,将该报文的链表节点存放在其对应的所述M个队列链表中;当报文出队时,从该报文的M个队列链表中找到对应的链表节点,并根据该链表 节点读出对应的报文数据。进一步地,所述外挂的缓存指QDR缓存。进一步地,M的取值满足如果N/K为整数,则M等于N/K,如果N/K不为整数,则M 等于N/K+1。进一步地,所述当报文入队时,将该报文的链表节点存放在其对应的所述M个队 列链表中,具体包括当一个报文入队时,根据报文的队列号找到其对应的所述M个队列链表,并且根 据报文的长度,判断该报文需要多少个链表节点;将申请到的链表节点依次轮询的添加到所述M个队列链表中,依次更新所述M个队列链表的尾节点指针数值。进一步地,所述当报文出队时,从该报文的M个队列链表中找到对应的链表节点, 并根据该链表节点读出对应的报文数据,具体包括当报文出队时,根据出队的队列号,依次读取其对应的所述M个队列链表首节点 指针数值,将首节点对应的存储空间数据读出,得到链表节点,并根据链表节点读出对应的 报文数据;读出数值之后更新每条队列链表首节点指针数值,并将该空闲地址对应的节点添 加到空闲链表的尾部。一种高速路由器流量管理芯片链表存储管理系统,包括队列链表建立模块、报文 入队管理模块和报文出队管理模块;其中,所述队列链表建立模块用于,为每个报文队列建立M个队列链表,并将所述 队列链表保存于外挂的缓存中;M大于等于N/K,且M为整数,其中N为所述外挂的缓存的读 延时,k为流量管理芯片要求处理一个链表节点的时间;所述报文入队管理模块用于,当报文入队时,将该报文的链表节点存放在其对应 的所述M个队列链表中;所述报文出队管理模块用于,当报文出队时,从该报文的M个队列链表中找到对 应的链表节点,并根据该链表节点读出对应的报文数据。进一步地,所述外挂的缓存指QDR缓存。进一步地,M的取值满足如果N/K为整数,则M等于N/K,如果N/K不为整数,则M 等于N/K+1。本发明的有益效果为本发明提供了一种多链表结构管理缓存空间,多个链表可以使读操作流水起来, 隐藏了读延迟,提高了报文处理速度,满足高速处理报文数据要求,从而为高速路由器流量 管理芯片的链表存储管理提高了有效的解决方案。本发明便于硬件实现、适应高速大容量 缓存管理。同时本发明还具有实现简单,易于推广使用的优点。


图1是高速路由器流量管理芯片链表存储管理原理示意图;图2是本发明高速路由器流量管理芯片链表存储管理方法流程示意图;图3是存储空间和空闲链表一一对应示意图;图4是队列链表基本描述符信息示意图;图5是一个队列入队流程示意图;图6是队列链表节点连接示意图;图7是一个队列报文出队流程示意图; 图8是一个队列出一个数据包后的链表节点链接示意图;图9是一个队列出队读链表节点流水示意图;图10是本发明高速路由器流量管理芯片链表存储管理系统结构示意图。
具体实施例方式下面结合附图和具体实施方式
对本发明作进一步详细说明。 图1是高速路由器流量管理芯片链表存储管理原理示意图,如图所示,高速路由 器流量管理芯片包括队列链表管理分系统、队列调度分系统、链表节点存储分系统和数据 缓存管理分系统。报文入队时,队列链表管理分系统为入队报文建立链表并将报文数据送 给数据缓存管理分系统存储,将链表节点存储在链表节点存储分系统中;出队时,队列调度 分系统决定哪个队列报文出队,并通知队列链表管理系统,队列链表管理系统从该队列链 表节点中获取出队报文地址信息,送给数据缓存管理分系统,从数据缓存管理分系统读出 报文数据。一般采用QDR缓存存储队列的链表节点,QDR缓存存在读延时,假设QDR缓存的读 延时为N,假设流量管理芯片要求处理一个链表节点的时间为K ;则本发明中一个报文队列 需要的队列链表个数为“N/K”(如果能够整除就是该数值,如果不能整除则该数值加“ 1”), 当然,一个报文队列需要的队列链表个数还可以为大于“N/K”。采用多链表结构,同一个报 文队列的多个链表节点之间操作可以流水起来,达到减少QDR缓存读延时的效果,满足流 量管理芯片规定的链表节点处理时间。下面阐述报文入队和出队时链表节点的添加和删除 过程。假设每条队列需要的队列链表个数为M。每一个报文入队时,根据报文的队列号找 到其对应的M个队列链表,即判断该报文应该添加到哪些队列链表,并且根据报文的长度, 判断该报文需要多少个链表节点;然后将申请到的链表节点依次轮询的添加到该M个队列 链表中,依次更新队列链表的尾节点指针数值;这样就完成了一个报文的入队,将该报文的 链表节点添加到对应的队列链表中;每个队列链表的建立过程与此类似,不再赘述。报文出队时,根据出队的队列号,依次读取该队列链表首节点指针数值,将首节点 对应的存储空间数据读出,读出数值之后更新每条队列链表首节点指针数值,并将该空闲 地址对应的节点添加到空闲链表的尾部,以便下次利用。图2是本发明高速路由器流量管理芯片链表存储管理方法流程示意图,如图所 示,本发明高速路由器流量管理芯片链表存储管理方法具体包括如下步骤1、为每个报文队列建立M个队列链表,并保存于外挂的缓存中,队列链表的基本 描述符信息存储于高速路由器流量管理芯片的片内。本实施例中,外挂的缓存采用QDR缓存。如果N/K为整数,则M不小于N/K,如果N/K不为整数,则M不小于N/K+1,即M大 于等于N/K,且M为整数。其中N为QDR缓存的读延时,k为流量管理芯片要求处理一个链 表节点的时间。M的取值最好满足如果N/K为整数,则M等于N/K,如果N/K不为整数,则 M 等于 N/K+1。2、当报文入队时,根据报文的队列号找到其对应的所述M个队列链表,并且根据 报文的长度,判断该报文需要多少个链表节点。3、将申请到的链表节点依次轮询的添加到所述M个队列链表中,依次更新所述M 个队列链表的尾节点指针数值。4、当报文出队时,根据出队的队列号,依次读取其对应的所述M个队列链表首节 点指针数值,将首节点对应的存储空间数据读出,得到链表节点,并根据链表节点读出对应的报文数据。5、读出数值之后更新每条队列链表首节点指针数值, 并将该空闲地址对应的节点 添加到空闲链表的尾部。下面以具体实施例的方式对本发明方案做进一步说明。该实施例中,本发明采用4链表结构,因为读QDR缓存延迟为8个周期,最快每两 个周期处理一个节点,因此每个队列链表使用4个子链表就可以实现读操作流水。图1中数据缓存管理分系统的存储空间和队列链表管理分系统的初始空闲链表 节点是一一对应的,如图3所示,该图显示了,数据缓存管理分系统的存储空间被等分为N 块,则在队列链表管理分系统中,初始的空闲链表节点也分为N个,它们之间是一一对应的 关系。N为大于1的自然数。 每个队列的队列链表基本描述符信息存储在片内,如图4所示,它包括4个队列链 表的首尾节点、一个4位的出队活动标志、一个4位的入队活动标志、4个1位的队列链表 空标志位和1位的队列空标志。只有4个1位的队列链表空标志都为“1”时,该队列为空。 入队时,根据报文队列号,选择对应的4个队列链表,读取该队列的入队活动标志判断报文 链表节点应该添加到哪个队列链表中,当该链表节点为该报文的尾节点时,将该链表节点 的包尾标志设置为“1”,否则为“0”。出队时,根据出队的队列号读取链表基本描述符信息, 根据读取的出队活动标志判断获取哪个队列链表首节点指针数值,将此首节点指针数值对 应的存储空间报文数据读出,直至将该报文的尾节点报文数据读出,才有可能更换出队的 队列号,读取另一个队列的报文数据;当队列链表的首尾节点相等时,将该队列链表标记为 空,所有4个队列链表都为空时,该队列的4个队列链表整体标记为空。下面用实例说明报 文入队和出队过程。 报文入队流程如图5所示,报文申请空闲链表节点之后,开始从第一个包节点添 力口,判断该队列链表是否为空,如果为空就以该空闲链表地址作为队列链表首指针,然后判 断该节点是否为包尾,如果是包尾,则结束入队,否则继续添加下一个节点,更新队列链表 尾指针,判断该包是否为包尾,依次类推直到该包的节点完全添加到链表中结束入队;如果 第一个包节点添加时,该队列非空,则将该节点添加到队列中并更新队列链表尾指针,判断 该包是否为包尾,如果是包尾则结束此次入队,否则继续添加直至该报文节点添加结束。假 设N-5号队列的报文节点个数为20个,这20报文节点入队的顺序依次为0到19,假设队列 N-5初始时为空队列。该队列的第一个节点申请到的空闲节点地址为0,此时该队列的入队 活动链表标志为“0001”,则将该地址“0”存储到队列链表1的首指针;第二个节点申请到 的空闲节点地址为“1”;此时该队列的入队活动链表标志为“0010”,则将该地址“1”存储到 队列链表2的首指针;依次类推,将这20个节点添加到N-5号队列的4个队列链表中,最终 n-5号队列的4个队列链表实际的链接方式如图6所示。每个链表节点中存储了该节点指 向的下一个节点地址指针数值,出队时,要想获得下一个节点地址则必须通过读上一个节 点内容获得。N-5号队列对应的4个队列链表链接的节点分别是队列链表1链接的节点为 0、4、8、12和16,该队列链表的首尾节点分别存储第0和第12个节点数据指针;队列链表2 链接的节点为1、5、9、13和17,该队列链表的首尾节点分别存储第1和第13个节点数据指 针;队列链表3链接的节点为2、6、10、14和18,该队列链表的首尾节点分别存储第2和第 14个节点数据指针;队列链表4链接的节点为3、7、11、15和19,该队列链表的首尾节点分别存储第3和第15个节点数据指针。 报文出队的流程如图7所示,满足出队条件的队列给出出队请求,根据出队队列 号查找队列链表的首尾指针,根据出队活动标志判断从哪个队列链表开始获取链表节点数 据;读取链表节点数据之后,判断该节点是否该报文的包尾,如果是,完成本次出队,等待下 个队列的请求再次出队;否则,根据出队活动标志判断从另一个队列链表获取链表节点数 据。假如出队的队列号为N-5,且此时N-5号队列的链表如图6所示。根据队列号N-5查 找到该队列链表的首尾指针,此时出队活动标志为“0001”,则从队列链表1的首节点读取 数据,将首节点地址“0”和报文长度发送给数据缓存管理分系统,将该节点对应存储空间的 报文读出;读地址为“0”的QDR缓存数据,将读出的地址指针“4”和包尾标志等数据写入队 列链表1的首节点,同时将地址为“0”的节点添加到空闲链表的尾部,等待入队时再次使用 此空闲缓存空间。根据更新前的首节点包尾标志判断前首节点是否为包尾,如果是,则结束 此次出队;如果不是,则出队活动标志为“0010”,获取队列链表2的首节点数据,完成报文 出队,它的出队过程和队列链表1首节点处理过程一样,直到一个报文完全出队。假如此次 N-5号队列出队的报文需要5个链表节点空间,则该报文完全出队之后的N-5号队列的链表 如图8所示。出队时,处理链表节点数据最快需要2个周期,队列链表的首尾指针数据存储在 片内,节点指针数据存储在片外的QDR缓存中,QDR缓存存在读延迟,单链表结构满足不了 2周期处理一个链表节点数据,因此采用多链表结构解决此问题。QDR缓存的读延迟为8个 周期,4链表结构能够满足流水的时序要求,图9显示了出队时4链表流水处理过程。图10是本发明高速路由器流量管理芯片链表存储管理系统结构示意图,如图所 示,本发明高速路由器流量管理芯片链表存储管理系统包括队列链表建立模块、报文入队 管理模块和报文出队管理模块。其中,队列链表建立模块用于为每个报文队列建立M个队列链表,并保存于外挂 的缓存中,本实施例中,外挂的缓存为QDR缓存,队列链表的基本描述符信息存储于高速路 由器流量管理芯片的片内。如果N/K为整数,则M不小于N/K,如果N/K不为整数,则M不小 于N/K+1,其中N为QDR缓存的读延时,k为流量管理芯片要求处理一个链表节点的时间。M 的取值最好满足如果N/K为整数,则M等于N/K,如果N/K不为整数,则M等于N/K+1。报文入队管理模块用于,当报文入队时,将该报文的链表节点存放在其对应的M 个队列链表中。报文出队管理模块用于,当报文出队时,从该报文的M个队列链表中找到对应的 链表节点,并根据该链表节点读出对应的报文数据。高速路由器流量管理芯片链表存储管理系统的具体实施方案可参见上面对高速 路由器流量管理芯片链表存储管理方法的具体说明,它们是一致的,此处不再赘述。以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详 细说明,所应注意的是,以上所述仅为本发明的具体实施例而已,本领域的技术人员可以对 本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改 和变型属于本发明权利要求记载的技术方案及其等同技术的范围之内,则本发明也意图包 含这些改动和变型在内。
权利要求
1.一种高速路由器流量管理芯片链表存储管理方法,其特征在于,包括如下步骤为每个报文队列建立M个队列链表,并将所述队列链表保存于外挂的缓存中;M大于等于N/K,且M为整数,其中N为所述外挂的缓存的读延时,k为流量管理芯片要求处理一个链 表节点的时间;当报文入队时,将该报文的链表节点存放在其对应的所述M个队列链表中;当报文出队时,从该报文的M个队列链表中找到对应的链表节点,并根据该链表节点 读出对应的报文数据。
2.根据权利要求1所述的高速路由器流量管理芯片链表存储管理方法,其特征在于, 所述外挂的缓存指4倍数据倍率缓存。
3.根据权利要求1所述的高速路由器流量管理芯片链表存储管理方法,其特征在于,M 的取值满足如果N/K为整数,则M等于N/K,如果N/K不为整数,则M等于N/K+1。
4.根据权利要求1或2或3所述的高速路由器流量管理芯片链表存储管理方法,其特 征在于,所述当报文入队时,将该报文的链表节点存放在其对应的所述M个队列链表中,包 括当一个报文入队时,根据报文的队列号找到其对应的所述M个队列链表,并且根据报 文的长度,判断该报文需要多少个链表节点;将申请到的链表节点依次轮询的添加到所述M个队列链表中,依次更新所述M个队列 链表的尾节点指针数值。
5.根据权利要求1或2或3所述的高速路由器流量管理芯片链表存储管理方法,其特 征在于,所述当报文出队时,从该报文的M个队列链表中找到对应的链表节点,并根据该链 表节点读出对应的报文数据,包括当报文出队时,根据出队的队列号,依次读取其对应的所述M个队列链表首节点指针 数值,将首节点对应的存储空间数据读出,得到链表节点,并根据链表节点读出对应的报文 数据;读出数值之后更新每条队列链表首节点指针数值,并将该空闲地址对应的节点添加到 空闲链表的尾部。
6.一种高速路由器流量管理芯片链表存储管理系统,其特征在于,包括队列链表建立 模块、报文入队管理模块和报文出队管理模块;其中,所述队列链表建立模块用于,为每个报文队列建立M个队列链表,并将所述队列 链表保存于外挂的缓存中;M大于等于N/K,且M为整数,其中N为所述外挂的缓存的读延 时,k为流量管理芯片要求处理一个链表节点的时间;所述报文入队管理模块用于,当报文入队时,将该报文的链表节点存放在其对应的所 述M个队列链表中;所述报文出队管理模块用于,当报文出队时,从该报文的M个队列链表中找到对应的 链表节点,并根据该链表节点读出对应的报文数据。
7.根据权利要求6所述的高速路由器流量管理芯片链表存储管理系统,其特征在于, 所述外挂的缓存指4倍数据倍率缓存。
8.根据权利要求6或7所述的高速路由器流量管理芯片链表存储管理系统,其特征在于,M的取值满足如果N/K为整数,则M等于N/K,如果N/K不为整数,则M等于N/K+1。
全文摘要
本发明公开了一种高速路由器流量管理芯片链表存储管理方法,包括步骤为每个报文队列建立M个队列链表,并保存于外挂的QDR缓存中;M大于等于N/K,且M为整数,其中N为QDR的读延时,k为流量管理芯片要求处理一个链表节点的时间;当报文入队时,将报文的链表节点存放在所述M个队列链表中;当报文出队时,从所述M个队列链表中找到对应的链表节点,并根据链表节点读出报文数据。采用本发明方法能够实现对链表节点的读操作流水起来,隐藏了读延迟,提高了报文处理速度。本发明还相应公开了一种高速路由器流量管理芯片链表存储管理系统,包括队列链表建立模块、报文入队管理模块和报文出队管理模块。
文档编号H04L12/56GK102130833SQ20111005944
公开日2011年7月20日 申请日期2011年3月11日 优先权日2011年3月11日
发明者汪友宝, 褚勋富 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1