CN101009645A - 基于cam的宽带网络业务流按每流排队的可扩展的装置 - Google Patents
基于cam的宽带网络业务流按每流排队的可扩展的装置 Download PDFInfo
- Publication number
- CN101009645A CN101009645A CNA2006101655896A CN200610165589A CN101009645A CN 101009645 A CN101009645 A CN 101009645A CN A2006101655896 A CNA2006101655896 A CN A2006101655896A CN 200610165589 A CN200610165589 A CN 200610165589A CN 101009645 A CN101009645 A CN 101009645A
- Authority
- CN
- China
- Prior art keywords
- module
- ram
- stream
- cam
- physical queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000013507 mapping Methods 0.000 claims abstract description 15
- 238000003860 storage Methods 0.000 claims abstract description 15
- 230000015572 biosynthetic process Effects 0.000 claims description 42
- 230000015654 memory Effects 0.000 claims description 32
- 230000005540 biological transmission Effects 0.000 claims description 15
- 238000009826 distribution Methods 0.000 claims description 9
- 230000009191 jumping Effects 0.000 claims description 4
- 238000011084 recovery Methods 0.000 claims description 4
- 102100026413 Branched-chain-amino-acid aminotransferase, mitochondrial Human genes 0.000 claims description 2
- 101000935638 Homo sapiens Basal cell adhesion molecule Proteins 0.000 claims description 2
- 101000766294 Homo sapiens Branched-chain-amino-acid aminotransferase, mitochondrial Proteins 0.000 claims description 2
- 238000000034 method Methods 0.000 abstract description 19
- 230000007423 decrease Effects 0.000 abstract 1
- 238000005755 formation reaction Methods 0.000 description 38
- 238000002474 experimental method Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 230000009969 flowable effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 238000004445 quantitative analysis Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明属于网络业务流管理领域,其特征在于,含有物理存储器件RAM,用来进行维护活跃流到物理队列的映射关系的CAM,以及实现动态共享逻辑的FPGA/ASIC部分。其中,RAM用于缓存数据分组;内容寻址存储器CAM,用来保存和查找活跃业务流和物理队列之间的映射关系;含有写入模块、RAM管理模块、调度模块和查找模块的动态共享逻辑的FPGA/ASIC部分实现物理队列在活跃流之间的动态共享。本发明的装置在保证每流排队的性能前提下,可将所需队列数降低到共存总流数的1%以下,同时,本发明的装置的成本和功耗将降低为常规静态方法的6.5%以下。
Description
技术领域
本发明是一种基于CAM器件的可线速实现按每流排队的可扩展的装置,可以应用于路由器交换机等计算机网络转发设备中以实现服务质量(QoS)保证,属于网络业务流管理领域。
背景技术
通过在路由器、交换机等计算机网络转发设备中采用按每流排队(per-flow queuing)的方式进行缓存管理,可以严格保证不同业务流之间的服务质量(Quality of Service,QoS)。传统意义上,按照每流排队需要物理隔离不同的流进行管理,也就是说要为每个流单独维护一个物理队列。通过网络测量等手段发现,高速宽带网络中(如2.5Gbps,10Gbps带宽的网络)可以同时共存百万个以上的不同的活跃业务流,从而需要为每流排队的管理方式维护上百万个物理队列,而这将使得管理单元占用过多的资源和耗费过多的处理时间,使得难以实现。因此,尽管按每流排队的缓存管理方式可以提供QoS保证,但是传统的观念却被认为不具有可扩展性而无法在高速宽带网络中实现。
尽管高速宽带中可以共存百万个以上的不同的活跃业务流,但是通过对真实的网络数据仿真试验,发现任何一个时刻长度不为空的队列数目其实不超过几百或几千的数量级。直观的解释:每一个数据包在路由器等转发设备中存储的时间很短(ms级,甚至ns级),而当同一流分组之间到达的间隔大于这个数量级时,会出现队列暂时为空的情况。本发明基于这事实,提出一种基于CAM的可扩展装置,在物理上只维护少量队列(如,小于1k个队列),通过对于队列的动态共享的方式,保证在任何时刻,不同的活跃业务流在转发设备中能够分配到单独的队列,避免一个队列中存在多个流,从而实现按每流排队,保证服务质量。
发明内容
每流排队存储管理系统中,为了确定需要预留多少资源,可以通过以下方法测量链路上传输的流的数量:1)流分类根据数据分组头部中的5元组来对分组进行分类,不同的数据分组归属不同的流;2)判断是否为正在传输中的流。当一个流的首个数据分组达到时,认为流开始传输;为检测流的传输是否结束,设置τ超时时间。如果τ时间内该流无数据分组到达,则认为流的传输过程结束。测量时设置τ为60秒甚至更长。测量结果表明通过节点的流的数量可达到几十万甚至上百万个。基于该结果,如果每流排队系统为每个流维护一个队列,则队列的数目也将达到几十万甚至上百万个,使每流排队的存储管理在高速路由器中变得难以实现。然而事实上,在流传输的过程中,某些时刻一些流对应的队列并没有存储数据分组,此时虽然它们的传输并未结束,但是在这些时刻,数据分组存储系统没有必要为其保存队列。实验和建模的结果表明,实际被占用的队列数远远小于同时进行传输的流的数量。因而数据分组存储系统中只需实现少量的队列。
本发明提出一种可适用于高速宽带网络的基于CAM器件的可线速实现按每流排队的可扩展的装置,用于路由器交换机等计算机网络转发设备中以实现服务质量(QoS)保证,该装置将所需队列数降低到传统方式的1%以下,同时,成本和功耗将降低为传统方式的6.5%以下。本发明主要解决下列三个问题实现少量物理队列被大量流动态共享,从而提供按每流排队的功能:
1)由于大量流共享少量的物理队列,本发明在CAM中维护一张列表,保存活跃流和物理队列的对应关系;
2)当数据分组到达时,本发明查找数据分组所属的流是否在列表中,确定该流是否已经占用了物理队列,若是,则将数据分组添加到物理队列的末尾进行排队;若否,则首先要分配新的物理队列,才能进行排队;
3)通过对数据分组和物理存储器的分割,采用链表结构管理维护物理队列。
在高速路由器中,列表的维护和查找处理需要在很短时间内完成,其实现极具挑战性。
本发明的特征在于,它含有:物理存储器件RAM,用来进行维护活跃流到物理队列的映射关系的CAM,以及实现动态共享逻辑的FPGA/ASIC部分,其中:
所述的RAM和以及实现动态共享逻辑部分相连,CAM和以及实现动态共享逻辑部分相连,以及实现动态共享逻辑和CAM、RAM相连;
物理存储器件RAM,用于缓存数据分组,是SRAM,DRAM或者任何其他物理存储设备;
内容寻址存储器CAM,用来保存和查找活跃业务流和物理队列之间的映射关系,是BCAM,TCAM或者其他任何内容寻址存储器;
动态共享逻辑含有:写入模块,RAM管理模块,调度模块和查找模块;其工作流程为:
a)一个数据分组首先到达写入模块,写入模块用其流号向查找模块请求相应的物理队列;
b)查找模块从CAM中查找相应流号所对应的表项,若存在则返回物理队列号给写入模块;若不存在,在RAM管理模块中申请一个空闲队列号返回给写入模块,并在CAM中添加相应表项;
c)写入模块得到相应物理队列号之后,向RAM管理模块获得一个空闲块的地址,把数据分组写入RAM,RAM管理模块更新该物理队列的尾指针和空闲块栈顶指针;
d)调度模块调度各个物理队列,向RAM管理模块询问当前被调度队列的队头指针,从RAM中读出,同时RAM管理模块回收此数据块加入空闲块栈,修改空闲块栈顶指针,并修改相应物理队列的队头指针;
e)当前被调度队列变为空时,调度模块通知查找模块,删除其在CAM上相应的表项;
写入模块和RAM管理模块、查找模块以及RAM相连,RAM管理模块和写入模块、调度模块以及查找模块相连,调度模块和查找模块、RAM管理模块以及RAM相连,查找模块和CAM相连。
所述的基于CAM的宽带网络业务流按每流排队的可扩展的装置,其特征在于,RAM管理模块对数据分组在RAM中存储的数据结构进行管理,向写入模块和调度模块提供物理队列与地址之间的映象,并通过查找模块在CAM中添加和删除虚拟队列(即活跃流)到物理队列的相关表项。
所述的基于CAM的宽带网络业务流按每流排队的可扩展的装置,其特征在于,RAM管理模块采用链表方式实现空闲块的分配和回收,维护一个头部指针,指向空闲块链表的头部;维护一个尾部指针,指向空闲块链表的尾部;每个空闲块对应一个下一跳指针,指向下一个空闲块。
所述的基于CAM的宽带网络业务流按每流排队的可扩展的装置,其特征在于,RAM管理模块采用链表方式实现物理队列的管理,对于每一个物理队列,维护一个头部指针,指向物理队列的头部;维护一个尾部指针,指向物理队列的尾部;物理队列的每个数据块对应个下一跳指针,指向下一个数据块。
所述的基于CAM的宽带网络业务流按每流排队的可扩展的装置,其特征在于,RAM管理模块使用FPGA/ASIC内部的片内SRAM保存空闲块列表和每一个物理队列的下一跳指针和头尾指针,下一跳指针和头尾指针和片外RAM被分割的存储块一一对应。
所述的基于CAM的宽带网络业务流按每流排队的可扩展的装置,其特征在于,RAM管理模块把RAM存储空间和分成大小固定的存储块,其大小等于一个数据传输单元的大小;其中,一个数据传输单元,是网络上传输的变长的数据分组在进入网络转发设备后被切割成大小固定的单元,数据传输单元在离开网络转发设备时会被恢复成原始的变长的数据分组变长的数据分组。
所述的基于CAM的宽带网络业务流按每流排队的可扩展的装置,其特征在于,调度模块负责数据分组的调度,从RAM管理模块获取物理队列队头元素的地址,并将其从RAM中读出。
所述的基于CAM的宽带网络业务流按每流排队的可扩展的装置,其特征在于,查找模块根据写入模块提供的流号,通过CAM里存在的信息判断当前物理队列该流是否活跃。
本发明提出的可扩展的装置,基于CAM器件实现物理队列的动态共享,在有限的物理队列资源中实现大量业务流的按每流排队,同时,本发明的装置在提供同样每流排队的性能时,与传统方法相比,可将所需队列数降低到共存总流数的1%以下,本发明的装置的成本和功耗将降低为静态方法的6.5%以下。
实验与建模验证
在图1的结构中,如果将数据分组存储空间分为A个存储块,则下一指针存储占用的空间为Alog2 A/8bytes,头尾指针的占用则由队列数来决定,如果队列数为Q,则队列的头尾指针占用的空间为2Qlog2 A/8bytes。假设数据分组存储器的容量S=2Mbytes,存储块大小Bs=64bytes,则A=32000。头尾指针的占用由队列数决定,如果不采用本发明的装置,而是为链路上传输的每个流分配一个队列,则当流数N=1000000,队列数Q=1000000,此时RAM管理所需的空间(包括下一指针和头尾指针)占用达到了3.8Mbytes,难以集成到片内,即使使用片外的SRAM,也需要增加成本使用大容量的SRAM器件才能胜任(低价的大容量的DRAM在速率上无法满足要求)。如果采用本发明的装置的方法,可使硬件上实现的物理队列数减少,例如Q=1000,此时逻辑数据结构复杂度降低,相应地RAM管理所需的空间占用也减少到了62Kbytes。
为验证本发明的装置方案,本发明进行了相关的实验,实验选取两段来自NLANR(http://pma.nlanr.net/Special/)的实际网络业务流量数据:1)真实流量1:OC-48链路,容量为2.5Gbps。2002年8月14日上午10点到10点10分由Cleveland去往Indianapolis的链路上的数据。2)真实流量2:OC-192链路。2004年6月1日晚8点到8点10分由Chicago去往Indianapolis的链路上的数据。两段真实流量数据的长度均为10分钟,它们的流量随时间的变化如图2所示,经统计,真实流量1在10分钟内平均流速为430Mbps,真实流量2在10分钟内的平均流速为730Mbps。其中,同时传输的流的数目如图3所示,真实流量1上统计的流数在300,000上下波动,真实流量2统计得到的流数在360,000上下波动。
仿真按分组的到达时刻将其存入不同的队列进行排队,调度在被占用的物理队列间公平地分配带宽,采用轮询方式,每个物理队列每次得到调度后转发固定长度的字节(1500字节),然后轮询至下一个物理队列。实验统计的性能参数如下:
2)共存的流数。对流设置τ时间的超时,对下在传输的流数进行统计,用Ns(τ)表示;
3)活跃流数,某个时刻占用队列进行排队的流的数量,即被占用的队列的数量,用Na表示。
统计过程每25ns对Na和Ns(τ)进行一次采样,相应地得出某个时间段(例如1秒或者10分钟)内的Max{Na}和Max{Ns(τ)}。系统的负载L定义为真实业务流量的平均速率和出口带宽的比值,由于真实业务流量的平均速率无法改变,只能通过改变出口带宽来调整仿真的负载L以统计不同负载情况下的性能参数。如,其中实线是真实流量1的曲线,而虚线是真实流量2的曲线。
图4所示,为系统负载L设定为0.97时,物理队列占用随时间变化的情况。从图中可以看出,真实流量1统计得到的流数最大仅为89,真实流量2最大仅为406。将,其中实线是真实流量1的曲线,而虚线是真实流量2的曲线。
图4和图3中的原始共存流的数目比较,通过本发明的装置,使得需要设定的物理队列的数量大大减小。
系统的负载是影响队列占用情况的另外一个因素。为分析不同负载情况下队列的占用情况,实验通过改变出口带宽改变系统的负载,真实流量1和真实流量2分别在0.5,0.75和0.97的负载下占用物理队列的情况分别如图5和图6所示。从图中可以看出,随着负载的降低,被占用的物理队列数也随之而减少。即使在重负载情况下,队列的占用数也远远小于通过节点的流数。根据仿真结果,本发明的装置在不同负载情况下甚至接近满负载时,只预留少量的物理队列就能满足每流排队的要求。
在数据分组存储系统中,虽然本发明显著减少了物理队列的数量,却需要一片成本较高,功耗较大的CAM器件。但是通过分析我们可以发现,由于CAM的引入,可以大大减小原有存储器的容量,从而事实上本发明的装置可以取得更经济的成本和功耗。具体的量化分析如下。
存储设备的大小和下一指针SRAM的大小主要由存储容量估算公式决定,下面仪讨论头尾指针、CAM以及栈结构的成本和功耗。通常,CAM的成本和功耗为相同大小SRAM的10倍,假设SRAM每比特的成本为Csram,CAM每比特的成本为10Csram。山于功耗和成本基本呈线型关系,在此仅对成本进行描述,功耗的描述是类似的。
作为比较,如果不使用本发明的装置方案,为了实现数据分组的每流排队,需采用预先设定的规则对数据分组进行流分类,并按照流分类的粒度预留队列,为了满足每流排队的需求,通常预留的队列数接近于实际进行传输的流数。为区别于本发明的装置,称上述方法为静态方法。静态方法中,RAM管理单元仅需使用头尾指针,不需要CAM器件和栈结构,此时如果队列的数量为Qs,则其成本为Cs=2Qslog2A,其中A为存储块的个数。
对于本发明的装置方法,如果队列数为Qd,则相应的头尾指针SRAM的占用为2Qdlog2A,存储成本为2CsramQdlog2A,主要由队列的数量Qd决定。CAM的大小为QdLf,其中Lf为流号的长度,其存储成本为10CsramQLf。而栈结构的空间占用为Qdlog2Qd,其存储成本为CsramQdlog2Qd。因此整个系统的成本为
C=CsramQd(2log2A+10Lf+log2Qd)
为了简化比较,假设log2A、log2Q和Lf的值相等,均为4字节,此时Cd=13Csramlog2Q。
综上分析,当Qd<2Qs/13时,本发明的装置的成本和功耗将可低于静态实现队列的方法,静态方法的队列数量接近实际进行传输的流数。
综上诉述,本发明的装置在保证每流排队的性能前提下,可将所需队列数降低到共存总流数的1%以下,同时,本发明的装置的成本和功耗将降低为静态方法的6.5%以下。
附图说明
图1块存储方式下队列结构的实现。
图2真实流量随时间的变化曲线,其中实线是真实流量1的曲线,而虚线是真实流量2的曲线。
图3共存流数目随时间的变化曲线,其中实线是真实流量1的曲线,而虚线是真实流量2的曲线。
图4占用物理队列数目随时间的变化曲线,其中实线是真实流量1的曲线,而虚线是真实流量2的曲线。
图5真实流量1实际流量在不同负载情况下占用物理队列数目随时间的变化曲线。
图6真实流量2实际流量在不同负载情况下占用物理队列数目随时间的变化曲线。
图7系统结构图。
图8本发明的装置的硬件实现方法。
具体实施方式
首先定义两种流的状态:1)活跃状态。当一个流在物理队列中存储有分组,则认为该流处于活跃状态;2)静默状态。当一个流在网络转发设备中存储的所有分组都已经被转发,在没有属于该流的新的分组到达之前,认为该流处于静默状态。根据以上定义,只有当一个流活跃时才占用一个物理队列,相应地可以建立其虚拟队列(即当前活跃的流)VQn和物理队列PQq间的映射关系VQn→PQq,集合{VQn→PQq}称为活跃流列表。当流从活跃变为静默的时候,需要将其对应的虚拟队列到物理队列的映射从活跃流列表中删除,并释放对应的物理队列;当流从静默变为活跃时,需要为其分配一个新的物理队列,在活跃流列表中添加其虚拟队列到物理队列的映射。本发明处理流程的伪代码如下:
分组p到达1.获取p的流号n2.通过VQn找到PQq3.如果PQq不存在{分配PQq添加映射VQn→PQq}4.将分组p存入PQq |
分组p离去5.从PQq读取分组p6.如果PQq为空{释放PQq删除映射VQn→PQq} |
当一个数据分组到达时,首先必须确认数据分组所属的流是否是活跃的。查找过程在活跃流列表中查找VQn是否存在。若存在,通过映射关系VQn→PQq找到物理队列PQq;若不存在,为其分配一个物理队列PQq,并建立映射,然后将数据分组存入相应的物理队列。由于调度在物理队列间完成,当数据分组离开时,直接读取得到调度的物理队列,因此不必进行查找,此时如果物理队列变空,立刻将该队列收回,并删除对应的映射关系VQn→PQq。
本发明装置的系统结构图如图7所示。RAM是存储数据分组的物理存储器件,CAM是用来进行存储和维护映射关系VQn→PQq。阴影部分的FPGA、ASIC内的部分,包括写入模块,RAM管理模块,调度模块和查找模块,其中:
写入模块根据查找模块返回的结果,从RAM管理模块申请空闲地址,并将数据分组写入RAM中;
RAM管理模块对数据分组在RAM中存储的数据结构进行管理,向写入模块和调度模块提供物理队列与地址之间的映象,并通过管理查找模块在CAM中添加和删除VQn→PQq的相关表项。具体机制将在后面“物理队列的实现”部分详述。
调度模块负责数据分组的调度,从RAM管理模块获取物理队列队头元素的地址,外将其从RAM中读出。
查找模块根据写入模块提供的流号VQn,通过CAM里存在的信息判断当前物理队列是否存在流,存在则返回其对应的物理队列号PQq;否则在RAM管理模块中申请一个空闲队列号返回给写入模块,并在CAM中添加相应表项。具体机制将在后面“动态队列共享”部分详述。
1)物理队列的实现
为方便管理,RAM管理单元通常把数据分组存储空间分成大小固定的存储块。但是,网络上传输的是变长的数据分组,因此需要把分组切割成大小固定的单元,称为数据单元(DataUnit,简称DU),这些DU在离开转发设备之前被重新组装成原始的变长数据分组。存储器RAM被分成的存储块的大小和DU的相同,因此一个DU正好占用一个存储块。
在数据分组存储器中,未被占用的存储块称为空闲块。当数据分组到达时,RAM管理单元分配空闲块,将数据分组存入;当数据分组离开时,占用的存储块变为空闲块,RAM管理单元又将空闲块收回。
为了实现空闲块的分配和回收,采用链表方式进行管理。链表中维护一个头部指针,指向空闲块链表的头部;维护一个尾部指针,指向空闲块链表的尾部;每个空闲块维护下一指针,指向下一个空闲块。队列的实现采用相同的方式,如果有Q个队列,则RAM管理单元需要维护Q+1个链表。本发明使用FPGA/ASIC片内的SRAM保存下一指针和头尾指针,而数据分组则存储于外部RAM存储设备中,FPGA/ASIC片内的SRAM中的下一指针和片外RAM被分割的存储块一一对应,如图1所示。由于空闲块队列的头尾指针更新频繁,且不涉及数量的问题,因此采用寄存器实现,以提高RAM管理单元操作的效率。
当数据分组到达或离去时,需要对指针数据进行更新,更新涉及到两个部分:1)下一指针的更新,以DU为单位。当一个DU到达时,需要完成入队操作,从空闲块队列中获取个空闲块,将数据写入,此时把前一个DU所在的存储块的下一指针指向当前的DU存储位置;当一个DU离开时,需要完成出队操作,把空闲块加到空闲块队列末尾,更新前一个空闲块的下一指针使其指向收回的空闲块;2)头尾指针的更新。更新以数据分组为单位进行。当新的数据分组到达并存入后,队列的尾部发生变化,将尾部指针更新到新的位置;当数据分组离开时,队列的头部位置发生了改变,将头部指针更新到新的位置。空闲块队列则完成相反的过程,数据分组离开并归还空闲块后,尾部指针发生变化,需要更新尾部指针;而当数据分组到达,分配了空闲块,空闲块队列的头指针位置发生了变化,需要更新头指针。
2)动态队列共享
为实现Q个队列的共享,定义了两种队列:1)在硬件上实现的Q个队列称为物理队列,用PQq表示,0≤q≤Q-1;2)实际排队过程中,逻辑上对应每个活跃流都有一个队列,称为虚拟队列,用VQn表示,虚拟队列用流号n标记,0≤n≤N-1,其中流号n根据数据分组头部的5个域得到。活跃流列表的项仍可多达Q个,一次查找需要进行大量的比较操作,才能确定虚拟队列VQn是否在列表中。随着网络接口速率的提高,数据分组到达的间隔越来越小,要在如此短的时间内完成Q个表项的查找,再加上期间还需完成对表项的更新,使用常规的存储方法和查找手段难以胜任(按40字节的数据分组计算,OC-192速率下到达间隔为32ns,OC-768速率下为8ns)。本发明使用CAM (Binary Content Addressable Memory)来实现,CAM需要具有Q个存储项,每一项存储一个流号或者存储无效流号。如果CAM的项存储了流号n,则该项的地址对应于物理队列PQq的尾指针的存储位置,可实现VQn→PQq的映射。由于CAM的查找经过一次操作即可完成,能够使得本发明的装置满足在查找时间上的要求。
图8给出了本发明的装置的硬件实现结构。当一个数据分组到达时,将其流号送往CAM,查找完成后送出地址,将其送往与之配合的SRAM,如果查找命中,该地址即为物理队列的尾指针在SRAM中的存放位置,否则需要分配新的物理队列。此时先完成空闲块的分配,存入数据分组,并行完成头尾指针存放位置的分配。完成数据分组的存放后可立即更新头尾指针。
物理队列的分配、回收和查找更新过程并行执行,采用栈结构实现。栈顶指针存放于寄存器中,分配时从栈顶取出一个存储位置,而返回时将空闲的存储位置压入栈顶。若同时需要分配和回收队列,则不需要对栈进行操作,直接将回收的物理队列分配给相应的流。分配和回收物理队列时对CAM的操作如下:为一个流分配物理队列时,将其流号n写入CAM中对应的项;而当物理队列变空时,要收回流占用的物理队列,则将一个无效的流号写入相应的项;如果同时回收和分配物理队列,则更新对应位置的流号成新的流号即可。
Claims (8)
1 基于CAM的宽带网络业务流按每流排队的可扩展的装置,其特征在于,它含有:物理存储器件RAM,用来进行维护活跃流到物理队列的映射关系的CAM,以及实现动态共享逻辑的FPGA/ASIC部分,其中:
所述的RAM和以及实现动态共享逻辑部分相连,CAM和以及实现动态共享逻辑部分相连,以及实现动态共享逻辑和CAM、RAM相连;
物理存储器件RAM,用于缓存数据分组,是SRAM,DRAM或者任何其他物理存储设备;
内容寻址存储器CAM,用来保存和查找活跃业务流和物理队列之间的映射关系,是BCAM,TCAM或者其他任何内容寻址存储器;
动态共享逻辑含有:写入模块,RAM管理模块,调度模块和查找模块;其工作流程为:
1)一个数据分组首先到达写入模块,写入模块用其流号向查找模块请求相应的物理队列;
2)查找模块从CAM中查找相应流号所对应的表项,若存在则返回物理队列号给写入模块;若不存在,在RAM管理模块中申请一个空闲队列号返回给写入模块,并在CAM中添加相应表项;
3)写入模块得到相应物理队列号之后,向RAM管理模块获得一个空闲块的地址,把数据分组写入RAM,RAM管理模块更新该物理队列的尾指针和空闲块栈顶指针;
4)调度模块调度各个物理队列,向RAM管理模块询问当前被调度队列的队头指针,从RAM中读出,同时RAM管理模块回收此数据块加入空闲块栈,修改空闲块栈顶指针,并修改相应物理队列的队头指针;
5)当前被调度队列变为空时,调度模块通知查找模块,删除其在CAM上相应的表项;写入模块和RAM管理模块、查找模块以及RAM相连,RAM管理模块和写入模块、调度模块以及查找模块相连,调度模块和查找模块、RAM管理模块以及RAM相连,查找模块和CAM相连。
2 根据权利要求1所述的基于CAM的宽带网络业务流按每流排队的可扩展的装置,其特征在于,RAM管理模块对数据分组在RAM中存储的数据结构进行管理,向写入模块利调度模块提供物理队列与地址之间的映象,并通过查找模块在CAM中添加和删除虚拟队列(即活跃流)到物理队列的相关表项。
3 根据权利要求1所述的基于CAM的宽带网络业务流按每流排队的可扩展的装置,其特征在于,RAM管理模块采用链表方式实现空闲块的分配和回收,维护一个头部指针,指向空闲块链表的头部;维护一个尾部指针,指向空闲块链表的尾部;每个空闲块对应一个下一跳指针,指向下一个空闲块。
4 根据权利要求1所述的基于CAM的宽带网络业务流按每流排队的可扩展的装置,其特征在于,RAM管理模块采用链表方式实现物理队列的管理,对于每一个物理队列,维扩一个头部指针,指向物理队列的头部;维护一个尾部指针,指向物理队列的尾部;物理队列的每个数据块对应一个下一跳指针,指向下一个数据块。
5 根据权利要求1或3或4所述的基于CAM的宽带网络业务流按每流排队的可扩展的装置,其特征在于,RAM管理模块使用FPGA/ASIC内部的片内SRAM保存空闲块列表和每一个物理队列的下一跳指针和头尾指针,下一跳指针和头尾指针和片外RAM被分割的存储块一一对应。
6 根据权利要求1所述的基于CAM的宽带网络业务流按每流排队的可扩展的装置,其特征在于,RAM管理模块把RAM存储空间和分成大小固定的存储块,其大小等于一个数据传输单元的大小;其中,一个数据传输单元,是网络上传输的变长的数据分组在进入网络转发设备后被切割成大小固定的单元,数据传输单元在离开网络转发设备时会被恢复成原始的变长的数据分组变长的数据分组。
7 根据权利要求1所述的基于CAM的宽带网络业务流按每流排队的可扩展的装置,其特征在于,调度模块负责数据分组的调度,从RAM管理模块获取物理队列队头元素的地址,并将其从RAM中读出。
8 根据权利要求1所述的基于CAM的宽带网络业务流按每流排队的可扩展的装置,其特征在于,查找模块根据写入模块提供的流号,通过CAM里存在的信息判断当前物理队列该流是否活跃。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101655896A CN100508502C (zh) | 2006-12-22 | 2006-12-22 | 基于cam的宽带网络业务流按每流排队的可扩展的装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101655896A CN100508502C (zh) | 2006-12-22 | 2006-12-22 | 基于cam的宽带网络业务流按每流排队的可扩展的装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101009645A true CN101009645A (zh) | 2007-08-01 |
CN100508502C CN100508502C (zh) | 2009-07-01 |
Family
ID=38697788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101655896A Expired - Fee Related CN100508502C (zh) | 2006-12-22 | 2006-12-22 | 基于cam的宽带网络业务流按每流排队的可扩展的装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100508502C (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102045258A (zh) * | 2010-12-22 | 2011-05-04 | 北京星网锐捷网络技术有限公司 | 数据缓存管理方法及装置 |
CN101692209B (zh) * | 2009-11-09 | 2011-11-30 | 盛科网络(苏州)有限公司 | 一种采用fpga内嵌sram仿真tcam的电路设计方法及装置 |
CN102437937A (zh) * | 2011-12-29 | 2012-05-02 | 北京锐安科技有限公司 | 一种深度包检测方法 |
CN102999434A (zh) * | 2011-09-15 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 一种内存管理方法及装置 |
CN103095595A (zh) * | 2012-12-30 | 2013-05-08 | 大连环宇移动科技有限公司 | 一种基于单向并行多链表的网络数据管理方法及系统 |
CN103795621A (zh) * | 2013-12-12 | 2014-05-14 | 华为技术有限公司 | 一种虚拟机的数据交换方法、装置及物理主机 |
CN105159837A (zh) * | 2015-08-20 | 2015-12-16 | 广东睿江科技有限公司 | 一种内存管理方法 |
CN106453141A (zh) * | 2016-10-12 | 2017-02-22 | 中国联合网络通信集团有限公司 | 全局队列调整方法、业务流队列调整方法和网络系统 |
WO2017101505A1 (zh) * | 2015-12-17 | 2017-06-22 | 深圳市华讯方舟软件技术有限公司 | 一种基于PostgreSQL块存储设备的迁移方法 |
WO2017101478A1 (zh) * | 2015-12-17 | 2017-06-22 | 深圳市华讯方舟软件技术有限公司 | 一种PostgreSQL块存储设备读写模块 |
CN107544819A (zh) * | 2016-06-29 | 2018-01-05 | 中兴通讯股份有限公司 | 一种用于可编程器件的业务实现方法、装置和通信终端 |
CN108650189A (zh) * | 2018-04-03 | 2018-10-12 | 郑州云海信息技术有限公司 | 一种流量平衡控制方法及装置 |
-
2006
- 2006-12-22 CN CNB2006101655896A patent/CN100508502C/zh not_active Expired - Fee Related
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101692209B (zh) * | 2009-11-09 | 2011-11-30 | 盛科网络(苏州)有限公司 | 一种采用fpga内嵌sram仿真tcam的电路设计方法及装置 |
CN102045258B (zh) * | 2010-12-22 | 2012-12-12 | 北京星网锐捷网络技术有限公司 | 数据缓存管理方法及装置 |
CN102045258A (zh) * | 2010-12-22 | 2011-05-04 | 北京星网锐捷网络技术有限公司 | 数据缓存管理方法及装置 |
CN102999434A (zh) * | 2011-09-15 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 一种内存管理方法及装置 |
CN102437937A (zh) * | 2011-12-29 | 2012-05-02 | 北京锐安科技有限公司 | 一种深度包检测方法 |
CN102437937B (zh) * | 2011-12-29 | 2014-04-09 | 北京锐安科技有限公司 | 一种深度包检测方法 |
CN103095595B (zh) * | 2012-12-30 | 2017-07-18 | 大连环宇移动科技有限公司 | 一种基于单向并行多链表的网络数据管理方法及系统 |
CN103095595A (zh) * | 2012-12-30 | 2013-05-08 | 大连环宇移动科技有限公司 | 一种基于单向并行多链表的网络数据管理方法及系统 |
CN103795621A (zh) * | 2013-12-12 | 2014-05-14 | 华为技术有限公司 | 一种虚拟机的数据交换方法、装置及物理主机 |
CN103795621B (zh) * | 2013-12-12 | 2017-02-15 | 华为技术有限公司 | 一种虚拟机的数据交换方法、装置及物理主机 |
CN105159837A (zh) * | 2015-08-20 | 2015-12-16 | 广东睿江科技有限公司 | 一种内存管理方法 |
WO2017101505A1 (zh) * | 2015-12-17 | 2017-06-22 | 深圳市华讯方舟软件技术有限公司 | 一种基于PostgreSQL块存储设备的迁移方法 |
WO2017101478A1 (zh) * | 2015-12-17 | 2017-06-22 | 深圳市华讯方舟软件技术有限公司 | 一种PostgreSQL块存储设备读写模块 |
CN107544819A (zh) * | 2016-06-29 | 2018-01-05 | 中兴通讯股份有限公司 | 一种用于可编程器件的业务实现方法、装置和通信终端 |
CN107544819B (zh) * | 2016-06-29 | 2022-04-19 | 中兴通讯股份有限公司 | 一种用于可编程器件的业务实现方法、装置和通信终端 |
CN106453141A (zh) * | 2016-10-12 | 2017-02-22 | 中国联合网络通信集团有限公司 | 全局队列调整方法、业务流队列调整方法和网络系统 |
CN108650189A (zh) * | 2018-04-03 | 2018-10-12 | 郑州云海信息技术有限公司 | 一种流量平衡控制方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN100508502C (zh) | 2009-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100508502C (zh) | 基于cam的宽带网络业务流按每流排队的可扩展的装置 | |
US6882642B1 (en) | Method and apparatus for input rate regulation associated with a packet processing pipeline | |
US6757249B1 (en) | Method and apparatus for output rate regulation and control associated with a packet pipeline | |
CN102045258B (zh) | 数据缓存管理方法及装置 | |
CN100521655C (zh) | 按每流排队的物理队列动态共享装置 | |
Iyer et al. | Designing packet buffers for router linecards | |
Zheng et al. | An ultra high throughput and power efficient TCAM-based IP lookup engine | |
US6389019B1 (en) | Time-based scheduler architecture and method for ATM networks | |
US7653072B2 (en) | Overcoming access latency inefficiency in memories for packet switched networks | |
US6646986B1 (en) | Scheduling of variable sized packet data under transfer rate control | |
CN101083622A (zh) | 用于在交换环境下管理转发数据库资源的系统和方法 | |
US20080063004A1 (en) | Buffer allocation method for multi-class traffic with dynamic spare buffering | |
US9769092B2 (en) | Packet buffer comprising a data section and a data description section | |
JP2000236344A (ja) | Atmスイッチ及び動的しきい値設定方法 | |
CN101714947A (zh) | 一种可扩展的全流优先级调度方法 | |
CN101499956A (zh) | 分级缓冲区管理系统及方法 | |
CN100440854C (zh) | 一种网络处理器的数据包接收接口部件及其存储管理方法 | |
EP2526478A1 (en) | A packet buffer comprising a data section and a data description section | |
CN113821191A (zh) | 一种可配置fifo深度的装置及方法 | |
Shah et al. | Analysis of a statistics counter architecture | |
Lin et al. | Route table partitioning and load balancing for parallel searching with TCAMs | |
US7474662B2 (en) | Systems and methods for rate-limited weighted best effort scheduling | |
Wang et al. | Block-based packet buffer with deterministic packet departures | |
CN100499563C (zh) | 提高分组应用的存储器存取效率 | |
Wang et al. | Per-flow queue management with succinct priority indexing structures for high speed packet scheduling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090701 Termination date: 20161222 |