以太网交换芯片传输数据过程中缓存的管理和分配方法

文档序号:7682365阅读:293来源:国知局
专利名称:以太网交换芯片传输数据过程中缓存的管理和分配方法
技术领域
本发明涉及电数字数据处理,尤其涉及一种以太网交换芯片传输数据过程中缓存的管理和分配方法。
背景技术
以存储—转发方式工作的多端口以太网交换芯片,要首先从外部端口将需要转发的以太网数据帧全部接收并保存在共享缓存中,然后再根据转发要求把数据帧从共享缓存中读出并发送到另外的外部端口,共享缓存可以设计在交换芯片内部,也可以放在交换芯片外部。
在现有的数据缓存处理中,如图1所示,从外部端口进入交换芯片的以太网数据帧在输入接口处向缓存管理模块申请缓存,缓存管理模块根据自己维护的共享缓存的使用状态,向输入接口模块反馈一个空闲缓存地址指针,输入接口模块得到缓存地址后就可以将数据帧全部写入缓存中,输出接口模块要将这个数据帧转发到端口时,只要使用这个地址指针就可以访问到这个数据帧的全部数据,这就是数据帧缓存过程。
在数据帧写入缓存的同时,输入接口模块也从数据帧中提取出控制信息,与该数据帧所用的地址指针一起形成帧控制块FCB,即FrameControl Block,帧控制块FCB发送到转发引擎进行处理,经过转发引擎可以获得数据帧的输出端口,这些信息也加入到帧控制块FCB中,此时完成了转发决策,发送数据帧时,由于多端口以太网交换芯片同时处理多个端口的数据帧交换,因此在把这个帧控制块FCB交给输出接口模块用于数据帧输出前,还需要按每个输出端口进行单播或多播排队,经过调度模块选择出帧控制块FCB送给输出接口模块,输出接口模块根据帧控制块FCB内携带的地址指针,就可以将数据帧从共享缓存中读取出来并发送到外部端口,数据帧发送完毕后,输出接口模块把地址指针返还给缓存管理模块以便重新分配,完成数据帧转发过程。所谓的单播,指的是输入一个数据帧,输出也是一个数据帧的过程,该数据帧从一个端口输出;而所谓多播,指的是输入一个数据帧,输出有可能是发往多个端口的多个数据帧的过程,但每个输出端口只有一个输出数据帧,不能重复。
由于多播流量、多个端口向一个端口发送数据、快速端口向慢速端口发送数据等情况出现的可能,任何端口的单播或多播排队都可能出现拥塞的情况,即队列中已经排了非常多的帧控制块FCB等待发送,但转发引擎仍然在向队列中发送帧控制块FCB,对于这种情况,以太网交换芯片会使用拥塞控制算法对排队的帧控制块FCB进行主动丢弃,丢弃掉的帧控制块FCB对应的数据帧不再发送,地址指针直接归还缓存管理模块,等待重新分配。
数据帧在以太网交换芯片内部的处理由以上描述的数据帧缓存和转发过程处理,使得数据帧的完整内容不必在芯片内到处传递,可减少芯片内的数据流量,但由于数据帧缓存依靠地址指针来维护,就需要设计精确和高效的缓存分配和维护方法,以保证系统的正确运行。
常见的缓存维护方法主要是通过多播引用计数器机制实现的共享缓存分成固定大小的块,每个块用其地址指针标识以便进行分配和回收,每个地址指针分配一个多播引用计数器,表明该地址的使用状态。
多播引用计数器按以下方式操作
如果某地址指针的多播引用计数器为0,则缓存管理模块视其为空闲缓存,可以任意分配,称之为初始化;当输入接口模块向缓存管理模块申请缓存地址指针时,缓存管理模块为数据帧分配一个地址指针,并且将其多播引用计数器设置为1,称之为申请分配;经过转发引擎处理,如果是多播数据帧,则通知缓存管理模块根据多播的次数n刷新多播引用计数器为n,即申请刷新;进入单/多播队列模块时,如果因为队列拥塞导致报文丢弃,则每丢弃一个帧控制块FCB,就通知缓存管理模块对相应的多播引用计数器进行减1操作,即申请释放;从输出接口每发送一个帧控制块FCB,通知缓存管理模块对相应的多播引用计数器进行减1操作,即申请释放。
在堆叠旁路方式下,转发引擎会复制出两路帧控制块FCB进入队列,由于堆叠旁路的帧控制块FCB从转发引擎送出得非常快,可能在另一路正常的帧控制块FCB还没有到达单/多播队列模块时,就已经通过单/多播队列模块、调度模块以及输出接口模块输出,也就是说转发引擎还没有进行上述多播次数“申请刷新”操作时,该帧控制块FCB已经先进行“申请释放”,这会导致多播数据帧缓存已被释放而“申请刷新”才到达缓存管理模块的错误,因此缓存管理模块在分配缓存时要区分堆叠旁路的数据帧,置其多播引用计数初值为2,才能保证堆叠旁路情况下多播引用计数器的刷新和释放能正确操作。
这种技术的缺点是1.访问多播引用计数表的次数比较多数据帧在处理的全过程中,在初始化、申请分配、申请刷新和申请释放等操作中都需要访问多播引用计数表,这使得多播引用计数表的时序设计非常紧张,为了满足高速以太网交换芯片的处理速度要求,不得不采取比较昂贵和复杂的电路设计方案,提高了交换芯片的成本。
2.堆叠加速数据帧的处理和普通数据帧的处理方式不一致,增加了数据处理和电路设计的复杂度。

发明内容
本发明的目的在于提供一种数据处理简单、高效的以太网交换芯片缓存管理方法。
本发明所采用的方法为其步骤为a.输入接口模块接收到数据帧,向缓存管理模块申请缓存地址指针,缓存管理模块将空闲缓存的地址指针分配给输入接口模块;b.输入接口模块根据地址指针将数据帧写入共享缓存,输入接口模块提取数据帧中的控制信息与地址指针一起组成帧控制块送往转发引擎;c.缓存管理模块中使用一释放权重表,该释放权重表为一个列表,每个缓存地址指针对应其中一个表项,该表项的值为相应的缓存地址指针所对应的释放权重的值;d.对于转发引擎和单/多播队列模块中有需要复制的帧控制块进行复制,并对于有复制需要和无复制需要的帧控制块赋予不同的释放权重的值;e.释放帧控制块时,在释放过程中使释放权重的表项值呈递减刷新;f.当所有的帧控制块被释放后,释放权重表中释放权重的值被减为0,缓存管理模块释放缓存,该数据帧已经全部处理完,数据帧使用的缓存单元可以重新使用。
帧控制块进入转发引擎后,在释放权重表中赋予释放权重的初始值;对于转发引擎和单/多播队列模块中无复制需要的帧控制块被赋予与释放权重的原值等同的释放权重的值;对于转发引擎和单/多播队列模块中有复制需要的帧控制块,各帧控制块被赋予根据释放权重的初始值分配的释放权重的值;帧控制块的释放使释放权重表中释放权重的表项值刷新为释放权重表中释放权重的当前值减去被释放的帧控制块的释放权重值;帧控制块进入转发引擎后,转发引擎判断是否进行堆叠旁路复制,如果不进行复制,帧控制块被放入与释放权重表中的初始值相同的值并经转发引擎处理后进入单/多播队列模块;如果进行堆叠复制,则复制一份帧控制块走堆叠旁路,且其释放权重设为1,原帧控制块分配剩余的释放权重值,即释放权重表中的初始值减去1,它经过转发引擎的处理后进入单/多播队列模块;帧控制块进入单/多播队列模块时,单播帧控制块入队不需要进行复制操作,携带其原释放权重值直接进入队列;如果是多播帧控制块,则每复制出一个帧控制块给其分配释放权值1,并将原来的释放权值减1,最后一个帧控制块入队时其释放权重为剩余的释放权重,即多播复制时在多个帧控制块间进行释放权重分配;释放权重表为一维列表;释放权重表中的初始值设定为大于以太网交换芯片的端口数目;帧控制块在拥塞被丢弃时,释放权重表的表项值相应减小。
本发明的有益效果为在本发明中,数据帧缓存的释放权重只需要在初始化和释放时修改,数据帧的任何复制过程都不影响该值,相比于多播引用计数表,释放权重表的访问次数较少,而且,无论是堆叠旁路复制,还是多播复制,抑或其他可能的控制块复制,其数据处理方式是一致的,这样,可实现简单、高效的数据处理,降低高速以太网交换芯片的成本,本发明可以支持任何方式的数据多次引用,其电路实现较为简单,很容易满足芯片高速处理的要求;对于堆叠旁路复制及多播帧控制块FCB复制,可简单地将释放权重设为1或设为剩余的释放权重,这样的数据处理较为简单,提高了本发明的实用性;释放权重表采用一维列表,这样有助于降低本发明的成本,使用、维护简单,提高了本发明的实用性;释放权重表中的初始值设定为大于以太网交换芯片的端口数目,这样的话,由于释放权重的值大于最多可能的复制份数,因此分配总是可以进行,不至于释放权重的值已分配完,而还有帧控制块FCB被复制等待分配释放权重值,从而发生错误,提高本发明的工作可靠性;帧控制块在拥塞被丢弃时,释放权重表的表项值相应减小,可使得数据处理更为完善。
总之,本发明可实现简单、高效的数据处理,降低以太网交换芯片的成本,容易满足芯片高速处理的要求,工作稳定可靠,实用性强。


图1为现有数据缓存处理示意图;图2为帧控制块FCB复制示意图;图3为本发明数据缓存处理示意图。
具体实施例方式
下面根据附图和实施例对本发明作进一步详细说明现设有一交换芯片的端口数目是27,如图3所示,缓存管理模块4中使用一释放权重表,该释放权重表为一个一维列表,每个缓存地址指针对应其中一个表项,该表项的值为相应的缓存地址指针所对应的释放权重的值,共享缓存总共有4K个地址指针维护,每个地址指针对应一个释放权重表表项,释放权重表共有4K个表项,表项的宽度是5比特,采用这种缓存管理方法的交换芯片工作过程如下如图3所示,在交换芯片进行初始化时,释放权重表中的每一个表项的初始值被设为1FH,同时缓存管理模块4将所有缓存块放入空闲缓存资源池等待分配,当输入接口模块1接收到数据帧,向缓存管理模块4申请缓存地址指针,缓存管理模块4将空闲缓存的地址指针分配给输入接口模块1,输入接口模块1根据地址指针将数据帧写入共享缓存2,同时,输入接口模块提取数据帧中的控制信息与地址指针一起组成帧控制块FCB送往转发引擎5,帧控制块FCB进入转发引擎5后,在释放权重表中赋予释放权重的初始值1FH。
对于转发引擎5和单/多播队列模块6中有复制需要的帧控制块FCB,如图2所示,如果需要进行堆叠旁路,帧控制块FCB被复制成两份;多播帧控制块FCB要进入多个队列,需要进行帧控制块FCB复制。
帧控制块FCB进入转发引擎5后,转发引擎5判断是否进行堆叠旁路复制,如果不进行复制,帧控制块FCB被放入与释放权重值1FH并经转发引擎5处理后进入单/多播队列模块6;如果进行堆叠复制,则复制一份帧控制块FCB走堆叠旁路,且其释放权重设为1,原帧控制块FCB分配1EH的释放权重值,它经过转发引擎5的处理后进入单/多播队列模块6。
帧控制块FCB进入单/多播队列模块6,单播帧控制块FCB入队不需要进行复制操作,携带其原释放权重值直接进入队列;如果是多播帧控制块FCB,则每复制出一个帧控制块FCB给其分配释放权值1,并将原来的释放权值减1,最后一个帧控制块FCB入队时其释放权重为剩余的释放权重,进行多播复制时在多个帧控制块FCB间进行释放权重分配。
调度模块7调度输出帧控制块FCB,送往输出接口模块3进行发送,帧控制块FCB的释放使释放权重表中释放权重的表项值刷新为释放权重表中释放权重的当前值减去被释放的帧控制块FCB的释放权重值,当所有的帧控制块FCB被释放后,释放权重表中释放权重的值被减为0,输出接口模块3向缓存管理模块4申请释放缓存后,缓存管理模块4释放缓存,该数据帧已经全部处理完,数据帧使用的缓存单元可以重新使用。
在这里需要指出的是,多播入队时如果因为拥塞原因丢弃帧控制块FCB,则要求缓存管理模块4释放帧控制块FCB,因为释放权值分配的原因,一个多播帧控制块FCB释放通常只会使释放权重表的值减小,不会导致缓存被释放。
权利要求
1.一种以太网交换芯片传输数据过程中缓存的管理和分配方法,其步骤为a.输入接口模块(1)接收到数据帧,向缓存管理模块(4)申请缓存地址指针,缓存管理模块(4)将空闲缓存的地址指针分配给输入接口模块(1);b.输入接口模块(1)根据地址指针将数据帧写入共享缓存(2),输入接口模块(1)提取数据帧中的控制信息与地址指针一起组成帧控制块(FCB)送往转发引擎(5);c.缓存管理模块(4)中使用一释放权重表,该释放权重表为一个列表,每个缓存地址指针对应其中一个表项,该表项的值为相应的缓存地址指针所对应的释放权重的值;d.对于转发引擎(5)和单/多播队列模块(6)中有需要复制的帧控制块(FCB)进行复制,并对于有复制需要和无复制需要的帧控制块(FCB)赋予不同的释放权重的值;e.释放帧控制块(FCB)时,在释放过程中使释放权重的表项值呈递减刷新;f.当所有的帧控制块(FCB)被释放后,释放权重表中释放权重的值被减为0,缓存管理模块(4)释放缓存,该数据帧已经全部处理完,数据帧使用的缓存单元可以重新使用。
2.根据权利要求1所述的以太网交换芯片传输数据过程中缓存的管理和分配方法,其特征在于所述的帧控制块(FCB)进入转发引擎(5)后,在释放权重表中赋予释放权重的初始值;对于转发引擎(5)和单/多播队列模块(6)中无复制需要的帧控制块(FCB)被赋予与释放权重的原值等同的释放权重的值;对于转发引擎(5)和单/多播队列模块(6)中有复制需要的帧控制块(FCB),各帧控制块(FCB)被赋予根据释放权重的初始值分配的释放权重的值;帧控制块(FCB)的释放使释放权重表中释放权重的表项值刷新为释放权重表中释放权重的当前值减去被释放的帧控制块(FCB)的释放权重值。
3.根据权利要求1或2所述的以太网交换芯片传输数据过程中缓存的管理和分配方法,其特征在于所述的帧控制块(FCB)进入转发引擎(5)后,转发引擎(5)判断是否进行堆叠旁路复制,如果不进行复制,帧控制块(FCB)被放入与释放权重表中的初始值相同的值并经转发引擎(5)处理后进入单/多播队列模块(6);如果进行堆叠复制,则复制一份帧控制块(FCB)走堆叠旁路,且其释放权重设为1,原帧控制块(FCB)分配剩余的释放权重值,即释放权重表中的初始值减去1,它经过转发引擎5的处理后进入单/多播队列模块(6)。
4.根据权利要求1或2所述的以太网交换芯片传输数据过程中缓存的管理和分配方法,其特征在于所述的帧控制块(FCB)进入单/多播队列模块(6),单播帧控制块(FCB)入队不需要进行复制操作,携带其原释放权重值直接进入队列;如果是多播帧控制块(FCB),则每复制出一个帧控制块(FCB)给其分配释放权值1,并将原来的释放权值减1,最后一个帧控制块(FCB)入队时其释放权重为剩余的释放权重,即多播复制时在多个帧控制块(FCB)间进行释放权重分配。
5.根据权利要求3所述的以太网交换芯片传输数据过程中缓存的管理和分配方法,其特征在于所述的帧控制块(FCB)进入单/多播队列模块(6),单播帧控制块(FCB)入队不需要进行复制操作,携带其原释放权重值直接进入队列;如果是多播帧控制块(FCB),则每复制出一个帧控制块(FCB)给其分配释放权值1,并将原来的释放权值减1,最后一个帧控制块(FCB)入队时其释放权重为剩余的释放权重,即多播复制时在多个帧控制块(FCB)间进行释放权重分配。
6.根据权利要求1或2所述的以太网交换芯片传输数据过程中缓存的理和分配方法,其特征在于所述的释放权重表为一维列表。
7.根据权利要求3所述的以太网交换芯片传输数据过程中缓存的管理和分配方法,其特征在于所述的释放权重表为一维列表。
8.根据权利要求1或2所述的以太网交换芯片传输数据过程中缓存的管理和分配方法,其特征在于所述的释放权重表中的初始值设定为大于以太网交换芯片的端口数目。
9.根据权利要求3所述的以太网交换芯片传输数据过程中缓存的管理和分配方法,其特征在于所述的释放权重表中的初始值设定为大于以太网交换芯片的端口数目。
10.根据权利要求6所述的以太网交换芯片传输数据过程中缓存的管理和分配方法,其特征在于所述的释放权重表中的初始值设定为大于以太网交换芯片的端口数目。
11.根据权利要求1或2所述的以太网交换芯片传输数据过程中缓存的管理和分配方法,其特征在于所述的帧控制块(FCB)在拥塞被丢弃时,释放权重表的表项值相应减小。
12.根据权利要求3所述的以太网交换芯片传输数据过程中缓存的管理和分配方法,其特征在于所述的帧控制块(FCB)在拥塞被丢弃时,释放权重表的表项值相应减小。
13.根据权利要求4所述的以太网交换芯片传输数据过程中缓存的管理和分配方法,其特征在于所述的帧控制块(FCB)在拥塞被丢弃时,释放权重表的表项值相应减小。
全文摘要
一种涉及电数字数据处理的以太网交换芯片传输数据过程中缓存的管理和分配方法,缓存管理模块将地址指针分配给输入接口模块,输入接口模块提取控制信息与地址指针一起组成帧控制块送往转发引擎,其特征在于缓存管理模块中使用一释放权重表,每个缓存地址指针对应其中一个表项,该表项的值为相应的缓存地址指针所对应的释放权重的值;转发引擎和单/多播队列模块中有复制需要和无复制需要的帧控制块赋予不同的释放权重的值;释放帧控制块时,释放权重的表项值呈递减刷新;当所有的帧控制块被释放后,释放权重表中释放权重的值被减为0,该数据帧已经全部处理完,数据帧使用的缓存单元可以重新使用,本发明可实现简单、高效的数据处理。
文档编号H04L12/28GK1452351SQ0210897
公开日2003年10月29日 申请日期2002年4月17日 优先权日2002年4月17日
发明者林郁, 林晖, 谭锐, 杨智明, 孙杰, 崔靖杰, 刘永志, 张志强, 饶伟年, 唐焰 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1