CN100376099C - 基于网络处理器平台实现的综合队列管理方法 - Google Patents
基于网络处理器平台实现的综合队列管理方法 Download PDFInfo
- Publication number
- CN100376099C CN100376099C CNB2005100120860A CN200510012086A CN100376099C CN 100376099 C CN100376099 C CN 100376099C CN B2005100120860 A CNB2005100120860 A CN B2005100120860A CN 200510012086 A CN200510012086 A CN 200510012086A CN 100376099 C CN100376099 C CN 100376099C
- Authority
- CN
- China
- Prior art keywords
- formation
- packet
- grouping
- counter
- average
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 230000015572 biosynthetic process Effects 0.000 claims description 101
- 230000008859 change Effects 0.000 claims description 51
- 238000012545 processing Methods 0.000 claims description 27
- 238000007726 management method Methods 0.000 claims description 25
- 230000005540 biological transmission Effects 0.000 claims description 8
- 230000001934 delay Effects 0.000 abstract 1
- 230000007246 mechanism Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000004069 differentiation Effects 0.000 description 2
- 239000012467 final product Substances 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
基于网络处理器平台实现的队列综合管理方法属于队列管理和分组调度技术领域,其特征在于:它是在IntelIXP2400网络处理器上实现的;它在分组进入队列时,采用平均分组丢失率比例控制,确保分组丢失速率和分组到达平均速率之比为常数;在分组出队列时,采取平均排队时延比例控制方法,确保各队列中分组平均排队时延之比为常数。它降低了丢失率比例缓冲管理和平均时延分组调度方法的复杂度,而且根据到达分组的丢失行为来动态调整阈值,保证获得预期的相对公平性,提高了缓冲资源的利用率,他的转发性能达到了千兆高速。
Description
技术领域
缓冲管理和分组调度领域。
背景技术
在比例区分服务(proportional differentiation services)模型中,任意两个服务类在每一跳(per-hop)所获得的服务满足确定的比例,比例参数由网络管理者设定而且与类的负载无关。即对于任意1<i,j<N,有qi(t,t+τ)/qj(t,t+τ)=ci/cj其中qi(t,t+τ)为数据类i在时间段[t,t+τ]内所获得的服务,c1<c2<...<cN为网络管理者设定的比例参数。PLR缓冲管理(Proportional LossRate Buffer Management)方法和PAD分组调度(Proportional Average Delay Packet Scheduling)方法都属于比例区分服务。
qi(t,t+τ)使用丢失率作为标准,则衍生出PLR缓冲管理方法。它是缓冲管理方法的一种,针对比例区分服务模型设计的方法,其控制目标是使得任意两个服务类的分组丢失率保持在恒定的比例。它的方法复杂度是O(logN)。
qi(t,t+τ)使用时延作为标准,则衍生出PAD缓冲管理方法。它是分组调度方法的一种,针对比例区分服务模型设计的方法,其控制目标是使得任意两个服务类的平均排队时延保持在恒定的比例。它的方法复杂度是O(logN)。
PLR缓冲管理方法和PAD分组调度方法存在的问题:这两种法属于基于动态优先级方法,基本思想总结如下:为每个队列计算一个索引值(动态优先级),每次选取具有最大或最小索引值的队列进行调度。因此,查找/排序是动态优先级方法的另一个重要的基本操作,并具有O(logN)的复杂度,其中N代表队列数量。一般来讲,索引值存储在片外存储器(比如SRAM)中,或片内存储器(比如Scratchpad,如果其容量足够大的话)中。但不管怎样,都需要大量的内存访问操作。而内存访问通常是一个性能瓶颈,因此对于大多数方法而言,O(logN)的复杂度会使得方法实现的效率非常低。PLR缓冲管理方法和PAD分组调度方法不适用于高速网络设备。
本发明研究并实现了一种新的RR-PLR缓冲管理方法和WRR-PAD分组调度方法,极大地提高了缓冲管理和分组调度的速度。
发明内容
本发明的目的是:设计一个适应网络处理器的,低时间复杂度的,遵循比例区分的服务模型的队列管理方法。在分组入队列时实现丢失率控制的缓冲管理方法,在分组出队列时实现时延控制的分组调度方法,分别实现平均分组丢失率和平均排队时延的成比例控制。名词解释如下:
1)服务质量(Quality of Service)控制
服务质量(QoS)控制是一系列控制机制的总称,包括诸如队列缓冲资源管理、分组调度、QoS路由等控制,旨在为使用网络的用户提供端到端的,包括带宽、延迟、分组丢失率等在内的性能保证。现有的Internet网络只能提供一种“尽力做好”(best-effort)的服务,无法支撑越来越多的网上实时交互应用。因此,服务质量(QoS)控制问题应运而生,成为下一代网络需要解决的关键技术。
2)缓冲管理(Buffer Management)
缓冲管理研究的主要内容是缓冲区如何分配和当缓冲区占用率到达一定程度时如何选择分组进行丢弃,所影响的性能参数主要是分组丢失率。
3)分组调度(Packet Scheduling)
分组调度则是指按照一定的规则来决定从多个等待队列中选择哪个分组进行发送,它影响的主要性能参数包括带宽分配、时延和时延抖动。
4)网络处理器(Network Processor)平台
网络处理器是介于通用处理器和专用处理器(ASIC)芯片之间的一种可编程芯片,网络处理器采用了如下技术以适应网络数据处理:
(1)多内核结构,使用多线程或者并行处理两种机制组织;
(2)优化的内存管理和DMA单元;
(3)优化的运算逻辑单元ALU;
(4)网络专用的协处理器(co-processors);
(5)硬件多线程技术。
INTEL IXP2400是Intel公司在一款高性能的网络处理器,我们基于它来实现本综合队列管理方法。
它的特点如下:
●本方法改进了PLR缓冲管理方法和PAD分组调度方法,将方法复杂度由原有的O(logN)降低为O(1);
●本方法使用轮循机制,消除了除法运算以及排序操作,适于网络处理器的实现;
●RR-PLR和WRR-PAD方法根据到达分组的丢失行为来动态调整阈值,可以保证获得预期的相对公平性能,并能一定程度上适应网络流量的变化,提高***缓冲资源的利用率;
●性能仿真和基于Intel IXP2400网络处理器的性能实测结果表明:综合队列管理方法的转发性能达到了千兆线速。
基于网络处理器平台实现的综合队列管理方法,其特征在于,所述的综合队列管理方法是在Intel IXP2400网络处理器上实现的,所述方法分别把分组接收模块、分组发送模块、RR-PLR即轮循-比例丢失率缓冲管理程序模块、WRR-PAD即加权轮循-比例平均时延分组调度程序模块,各自分别配置在所述网络处理器的1个微引擎上,即分别分配在第0,第7,第1和第2个微引擎上;而把IPv4协议处理程序配置在所述网络处理器的4个微引擎上,即分配在第3,4,5,6个微引擎上;
当分组进入队列时,RR-PLR即轮循-比例丢失率缓冲管理,采用平均分组丢失率比例控制,依次含有以下步骤:
步骤1A:初始化每个队列的丢弃分组计数器:
设队列i分配的丢弃分组计数器Ci=ki·δi,i=0,1,…,n-1;初始化指针变量i=0;
其中n为队列总数,ki为预先确定的参数,它是各队列的分组平均到达速率的比:
a0(t)/a1(t)/…/an-1(t)=k0/k1/…/kn-1;ai(t)为队列i在时间段[0,t]内到达的分组数;
δi为预先确定的参数,它是各个队列分组丢失率的比:L0/L1/…/Ln-1=δ0/δ1/…/δn-1,Li为队列i的平均分组丢失率;
所述Li=di(t)/ai(t)=di(t)/(λi·t);
其中,di(t)为队列i在时间段[0,t]内丢弃的分组数;
λi为队列i的分组平均到达速率,在程序中以ki的形式表现出来;
ki·δi为队列i的丢弃分组数;各个队列的丢弃的分组数保持与
(k0·δ0)/(k1·δ1)/…/(kn-1·δn-1)的值相等的比例;
步骤2A:等待,一直到有新的分组p到达,记该分组属于队列t,为该分组打上到达队列的时间戳T入队列,转步骤3A;否,转步骤2A;
步骤3A:判断各个队列的分组长度之和是否小于缓存可以存放分组总个数:
若是,将分组p放入相应的队列t,对于该分组的处理结束;
若否,转步骤4A;
步骤4A:判断队列i的丢弃分组计数器Ci是否大于零,且队列i非空:
若是,从队列i中丢弃一个分组;并且使得Ci=Ci-1;i=i+1;将分组p放入相应的队列t,对于该分组的处理结束;重新转到步骤2A;
若否,判断i是否小于n:若是,i=i+1;转入步骤4A;若否,对于j=0,1,…,n-1,使队列j的丢弃分组计数器Cj=Cj+kj·δj;指针i=0;转到步骤4A;
当分组出队列时采用WRR-PAD即加权轮循-比例平均时延分组调度,即平均排队时延的比例控制方法,使得各个队列中各分组的时延满足以下比例关系:
其中,si(t)为队列i在时间段[0,t]内发送的分组数,i=0,1,…,n-1;
队列i的平均排队时延为 各个队列平均排队时延的比保持一致,即D0/D1/…/Dn-1=ξ0/ξ1/…ξn-1;ξ1为预先确定的参数;
各个队列发送的分组数满足以下比例关系:s0(t)/s1(t)/…/sn-1(t)=w0/w1/…/wn-1,wi为预先确定的参数;
以上所述的WRR-PAD即加权轮循.比例平均时延分组调度,含有以下步骤:
步骤1B:给每个队列分配3个不同功能的计数器,队列i的所述3个计数器记为:
CSi为记录需要发送的分组数量的计数器;
CDi为记录需要经历的排队时延之和的计数器;
COi为根据队列平均排队时延的变化情况,记录提前或推迟其队列i分组的发送的辅助计数器;COi>0表示队列分组被提前发送,发送次数被“透支”;COi<0表示队列分组被推迟发送,发送次数有“盈余”:COi=0表示正常情况;
φi=ζi·wi、ζi为预先确定的参数;
初始化CSi=wi,CDi=φi,COi=0;
初始化域值thdi=φi;
指针i=0;
步骤2B:读取计数器CSi,COi,CDi的值;
根据下列a-h8种情况,判断是否需要调度,调度指的是,将该分组从等待队列中取出并发送:若是,转步骤3B-1;若否,转步骤4B;
根据以下CSi,COi,CDi三个计数器的8种不同情况,判断是否调度:
情况a,当CSi=0,COi≥0,CDi-d<0时:
调度;并改变计数器,使得CSi=CSi+wi,CDi=CDi+φi,COi=COi+1;
情况b,当CSi=0,COi≥0,CDi-d≥0时:
不调度;
情况c,当CSi=0,COi<0,CDi+(-COi·φi)-d·(CSi+(-COi·wi))≥thdi时:
不调度;
情况d,当CSi=0,COi<0,CDi+(-COi·φi)-d·(CSi+(-COi·wi))<thdi时:
调度;并改变计数器,使得CSi=CSi+wi,CDi=CDi+φi,CDi=CDi+1;
情况e,当CSi>0,COi<0,CDi+(-COi·φi)-d·(CSi+(-COi·wi))≥thdi时:
不调度;
情况f,当CSi>0,COi<0,CDi+(-COi·φi)-d·(CSi+(-COi·wi))<thdi时:
调度;并改变计数器,使得CSi=CSi-1,CDi=CDi-d;
情况g,当CSi>0,COi≥0,CDi-d<0时:
调度;并改变计数器,使得CSi=CSi-1,CDi=CDi-d;
情况h,当CSi>0,COi≥0,CDi-d≥0时:
不调度;
其中,d为分组在队列中的时延,d=T出队列-T入队列;
对于上述CDi+(-COi·φi)-d·(CSi+(-COi·wi))和thdi的比较解释如下:在COi<0情况下,表明该队列的分组曾被推迟发送,其发送次数尚有“盈余”,因此需要判断“盈余”被“补足”之后的CDi值;(-COi·φi)为“盈余”轮数所对应的总时延数;
(CSi+(-COi·wi))为总共“盈余”的分组数减去这轮已经发出的分组数;
CDi+(-COi·φi)-d·(CSi+(-COi·wi))即按照d的时延发送还剩下的“盈余”时延,将之与域值thdi比较,判断是否调度;
步骤3B-1:根据上述不同的情况,改变计数器CSi,COi,CDi的值;
步骤3B-2:从队列i中取出一个分组;从所述RR-PLR即轮循-比例丢失率缓冲管理程序模块中取得T入队列;取当前时间得到分组的出队列时间T出队列;
计算这个分组在队列中的时延d=T出队列-T入队列,并发送;
步骤3B-3:使CSi=CSi-1;CDi=CDi-d;i=i+1;转步骤2B;
步骤4B:i=i+1;
判断CSi=0并且CDi≤0:若是,转步骤5B;若否,转步骤6B;
步骤5B:CSi=CSi+wi;CDi=CDi+wi·ξi;转步骤2B;
步骤6B:COi=COi-1;转步骤2B。
我们在Intel IXP2400网络处理器上实现了RR-PLR缓冲管理方法和WRR-PAD分组调度方法,并对方法性能进行了测试。
测试参数设置如下:输入的数据流共分为八个类。其中第一类到第四类的丢失率和时延的比值均设置为1/2/3/4,第五类到第八类的丢失率和时延比值设置均为2/2/3/4。我们测试的是重负载情况下***的性能,总的输入速率为2Gbps,分组设置为最小以太网分组,分组大小为64Byte,即总的输入速率为4Mpps,八个服务类分组到达的速率相等,均为256Mbps(即0.5Mpps)。
RR-PLR和WRR-PAD方法在Intel IXP2400网络处理器上协同工作的性能如图5至图8所示。可见,方法能够在适当的参数配置下对平均分组丢失率和平均排队时延进行成比例区分控制。在测试平台运行稳定之后,***的总吞吐率达到了1.125483Gbps(即2.250966Mpps),在实现成比例的区分服务的基础上达到了千兆线速转发。
附图说明
图1 Intel IXP2400网络处理器结构图;
注:在图1中,ME表示微引擎(Micro Engine);分组接收模块、分组发送模块、RR-PLR即轮循-比例丢失率缓冲管理程序、WRR-PAD即加权轮循-比例平均时延分组调度程序,各自分别配置在网络处理器的1个微引擎上,即分别分配在第0,第7,第1和第2个微引擎上,而把IPv4协议处理程序配置在所述网络处理器的4个微引擎上,即分配在第3,4,5,6个微引擎上。
图2 综合队列管理方法的整体实现图;
图3 RR-PLR方法流程图;
图4 WRR-PAD方法流程图;
图5 RR-PLR方法丢失率曲线实施例1;
图6 RR-PLR方法丢失率曲线实施例2;
图7 WRR-PAD方法时延曲线实施例1;
图8 WRR-PAD方法时延曲线实施例2。
具体实施方式
网络处理器主要完成网络设备的分组接收、存储和转发功能。接收模块在接收到分组时,将其按RR-PLR缓冲管理方法策略存储于分组队列中;转发模块则从分组队列中,按WRR-PAD分组调度方法取出分组并转发。
RR-PLR方法是PLR方法针对网络处理器的近似方法,主要是通过消除原有方法中的除法、排序,降低计算复杂度。另外,RR-PLR只是把长期的平均丢失率比例作为控制目标,即只考虑了大时间尺度的情况。
在本方法中,我们的控制目标不是分组到达速率的绝对值和丢失率的绝对值,而是不同队列之间的比例关系。
如果记队列i(i=0,1,…,n-1)在时间段[0,t]内到达和丢弃的分组数分别为ai(t)和di(t);记队列i的分组平均到达速率为λi,则ai(t)=λi·t;队列i的平均分组丢失率为Li=di(t)/ai(t)=di(t)/(λi·t)。则RR-PLR方法保证大时间尺度下,各个队列分组丢失率的比L0/L1/…/Ln-1维持不变,记这个丢失率的比:L0/L1/…/Ln-1=δ0/δ1/…/δn-1。
如果记各队列的分组平均到达速率的比:λ0/λ1/…/λn-1=k0/k1/…/kn-1,则本方法就是要确保:也即说保证各个队列的丢弃的分组数保持比例(k0·δ0)/(k1·δ1)/…/(kn-1·δn-1)即可。ki,δi(i=0,1,…,n-1)是预先输入的参数(在方法初始化时已经确定)。
RR-PLR即轮循-比例丢失率缓冲管理程序模块步骤如下:
步骤1:给每个队列分配一个丢弃分组计数器,队列i分配的计数器记为Ci;
初始化每个队列的丢弃分组计数器Ci=ki·δi;
指针i=0。
步骤2:是否有新的分组p(记该分组属于队列t)到达?是,转步骤3;否,转步骤2。
步骤3:为该分组打上入队列时间戳T入队列;
各个队列的分组长度之和<缓存可以存放分组总个数?是,转步骤4;否,转步骤5。
步骤4:将分组p放入相应的队列t;(对于该分组的处理结束)转步骤2。
步骤5:Ci>0?是,转步骤6;否,转步骤7。
步骤6:从队列i中丢弃一个3分组;
Ci=Ci-1;i=i+1。
转步骤4。
步骤7:i<n-1?是,转步骤8;否,转步骤9。
步骤8:i=i+1;转步骤5。
步骤9:对于j=0,1,…,n-1,做Cj=Cj+kj·δj;
指针i=0;
转步骤5。
WRR-PAD方法是对WRR方法的改进,在保持原方法简单性的基础上,使得方法能提供时延比例保证,即改善了WRR方法的时延特性。与PAD方法相比(复杂度O(logN),其中N为队列数),主要的优点是不含除法操作,并具有O(1)的复杂度。
如果记队列i(i=0,1,…,n-1)在时间段[0,t]内发送的分组数为si(t),记队列i的中第j个分组的时延为则队列i的平均排队时延为 WRR-PAD方法的控制目标是使得各个队列平均排队时延的比保持一致,即D0/D1/…/Dn-1=ξ0/ξ1/…ξn-1。如果记队列发送的分组个数满足比例关系s0(t)/s1(t)/…/sn-1(t)=w0/w1/…/wn-1,则方法控制时延之和,满足比例关系 即可。
为达到这个目标,轮循是一种可行的方法:为每个队列分配需要发送的分组数量配额、分组排队时延和的配额,维护两个相应的计数器(初始化为相应的配额),并使得轮循时每个队列发送的分组数和经历的排队时延和接近于相应计数器值。如果存在差值,则把差值补偿到下一次轮循,即每经过一次轮循就把计数器加上配额。
在实现中,为队列i(i=0,1,…,n-1)维护3个计数器。前两个是:记录需要发送的分组数量的CSi(主计数器),记录需要经历的排队时延之和的CDi(从计数器),分别初始化为CSi=wi和CDi=φi(其中φi=ξi·wi)。
为了维护主计数器CSi和从计数器CDi之间的同步平衡,还需要增加一个计数器COi。计数器COi的作用是根据队列平均排队时延的变化情况提前或推迟其分组的发送。COi>0表示队列分组被提前发送,发送次数被“透支”;COi<0表示队列分组被推迟发送,发送次数有“盈余”;COi=0表示正常情况。COi初始化为0。
每次调度前,CSi、COi、CDi三个计数器的值必属于表1所列情况中的一种,根据不同的情况决定当前应该采取何种操作。
WRR-PAD即加权轮循-比例平均时延分组调度程序模块步骤如下:
步骤1:给每个队列分配3个计数器,队列i的3个计数器分别记为CSi,COi,CDi;
φi=ξi·wi;
初始化CSi=wi,CDi=φi,COi=0;
初始化域值thdi=φi;
指针i=0。
步骤2:读取CSi,COi,CDi三个计数器;
根据表1判断该情况是否需要调度?是,转步骤3;否,转步骤4。
步骤3:根据表1改变计数器的值;
从队列i中取出一个分组;
从RR-PLR缓冲管理程序模块中取得T入队列,得到分组的出队列时间T出队列;
计算这个分组在队列中的时延d=T出队列-T入队列,并发送;
CSi=CSi-1;
CDi=CDi-d;
i=i+1;
转步骤2。
步骤4:i=i+1;
CSi==0并且CDi≤0?是,转步骤5;否,转步骤6。
步骤5:CSi=CSi+wi;
CDi=CDi+wi·ξi;
转步骤2。
步骤6:COi=COi-1;
转步骤2。
表1归纳了CSi,COi,CDi三个计数器的8种不同情况。表中简记的条件符号如下:
CDi+(-COi·φi)-d·(CSi+(-COi·wi))≥thdi的情况为D,
其中,d为分组在队列中的时延,d=T出队列-T入队列;
对于条件D和的意义解释如下:条件D和是在出现在条件B之下需要进一步判断的,这种情况下,表明该队列的分组曾被推迟发送,其发送次数尚有“盈余”,因此需要判断“盈余”被“补足”之后的CDi值。(-COi·φi)为“盈余”轮数所对应的总时延数;(CSi+(-COi·wi))为总共“盈余”的分组数减去这轮已经发出的分组数;CDi+(-COi·φi)-d·(CSi+(-COi·wi))即按照d的时延发送,还剩下的“盈余”时延,将之与域值thdi比较,判断是否调度。
表1CSi,COi,CDi三个计数器的8种不同情况归纳
Claims (1)
1.基于网络处理器平台实现的综合队列管理方法,其特征在于,所述的综合队列管理方法是在Intel IXP 2400网络处理器上实现的,所述方法分别把分组接收模块、分组发送模块、RR-PLR即轮循-比例丢失率缓冲管理程序模块、WRR-PAD即加权轮循-比例平均时延分组调度程序模块,各自分别配置在所述网络处理器的1个微引擎上,即分别分配在第0,第7,第1和第2个微引擎上;而把IPv4协议处理程序配置在所述网络处理器的4个微引擎上,即分配在第3,4,5,6个微引擎上;
当分组进入队列时,RR-PLR即轮循-比例丢失率缓冲管理,采用平均分组丢失率比例控制,依次含有以下步骤:
步骤1A:初始化每个队列的丢弃分组计数器:
设队列i分配的丢弃分组计数器Ci=ki·δi,i=0,1,…,n-1;初始化指针变量i=0;其中n为队列总数,ki为预先确定的参数,它是各队列的分组平均到达速率的比:
a0(t)/a1(t)/…/an-1(t)=k0/k1/…/kn-1;ai(t)为队列i在时间段[0,t]内到达的分组数;
δi为预先确定的参数,它是各个队列分组丢失率的比:L0/L1/…/Ln-1=δ0/δ1/…/δn-1,L1为队列i的平均分组丢失率;
所述Li=di(t)/ai(t)=di(t)/(λi·t);
其中,di(t)为队列i在时间段[0,t]内丢弃的分组数;
λi为队列i的分组平均到达速率,在程序中以ki的形式表现出来;
ki·δi为队列i的丢弃分组数;各个队列的丢弃的分组数保持与(k0·δ0)/(k1·δ1)/…/(kn-1·δn-1)的值相等的比例;
步骤2A:等待,一直到有新的分组p到达,记该分组属于队列t,为该分组打上到达队列的时间戳T入队列,转步骤3A;否,转步骤2A;
步骤3A:判断各个队列的分组长度之和是否小于缓存可以存放分组总个数:
若是,将分组p放入相应的队列t,对于该分组的处理结束;
若否,转步骤4A;
步骤4A:判断队列i的丢弃分组计数器Ci是否大于零,且队列i非空:
若是,从队列i中丢弃一个分组;并且使得Ci=Ci-1;i=i+1;将分组p放入相应的队列t,对于该分组的处理结束;重新转到步骤2A;
若否,判断i是否小于n:若是,i=i+1;转入步骤4A;若否,对于j=0,1,…,n-1,使队列j的丢弃分组计数器Cj=Cj+kj·δj;指针i=0;转到步骤4A;
当分组出队列时采用WRR-PAD即加权轮循-比例平均时延分组调度,即平均排队时延的比例控制方法,使得各个队列中各分组的时延满足以下比例关系:
其中,si(t)为队列i在时间段[0,t]内发送的分组数,i=0,1,…,n-1;di j为队列i中的第j个分组排队所需要的时延;
队列i的平均排队时延为 各个队列平均排队时延的比保持一致,即D0/D1/…/Dn-1=ξ0/ξ1/…/ξn-1;ξi为预先确定的参数;
各个队列发送的分组数满足以下比例关系:s0(t)/s1(t)/…/sn-1(t)=w0/w1/…/wn-1,wi为预先确定的参数;
以上所述的WRR-PAD即加权轮循-比例平均时延分组调度,含有以下步骤:
步骤1B:给每个队列分配3个不同功能的计数器,队列i的所述3个计数器记为:
CSi为记录需要发送的分组数量的计数器;
CDi为记录需要经历的排队时延之和的计数器;
COi为根据队列平均排队时延的变化情况,记录提前或推迟其队列i分组的发送的辅助计数器;COi>0表示队列分组被提前发送,发送次数被“透支”;COi<0表示队列分组被推迟发送,发送次数有“盈余”;COi=0表示正常情况;
φi=ξi·wi,wi、ξi为预先确定的参数;
初始化CSi=wi,CDi=φi,COi=0;
初始化域值thdi=φi;
指针i=0:
步骤2B:读取计数器CSi,COi,CDi的值;
根据下列a-h8种情况,判断是否需要调度,调度指的是,将该分组从等待队列中取出并发送:若是,转步骤3B-1;若否,转步骤4B;
根据以下CSi,COi,CDi三个计数器的8种不同情况,判断是否调度:
情况a,当CSi=0,COi≥0,CDi-d<0时:调度;并改变计数器,使得CSi=CSi+wi,CDi=CDi+φi,COi=COi+1;
情况b,当CSi=0,COi≥0,CDi-d≥0时:不调度;
情况c,当CSi=0,COi<0,CDi+(-COi·φi)-d·(CSi+(-COi·wi))≥thdi时:不调度;
情况d,当CSi=0,COi<0,CDi+(-COi·φi)-d·(CSi+(-COi·wi))<thdi时:调度;并改变计数器,使得CSi=CSi+wi,CDi=CDi+φi,COi=COi+1;
情况e,当CSi>0,COi<0,CDi+(-COi·φi)-d·(CSi+(-COi·wi))≥thdi时:不调度;
情况f,当CSi>0,COi<0,CDi+(-COi·φi)-d·(CSi+(-COi·wi))<thdi时:调度;并改变计数器,使得CSi=CSi-1,CDi=CDi-d;
情况g,当CSi>0,COi≥0,CDi-d<0时:调度;并改变计数器,使得CSi=CSi-1,CDi=CDi-d;
情况h,当CSi>0,COi≥0,CDi-d≥0时:不调度;
其中,d为分组在队列中的时延,d=T出队列-T入队列;
对于上述CDi+(-COi·φi)-d·(CSi+(-COi·wi))和thdi的比较解释如下:在COi<0情况下,表明该队列的分组曾被推迟发送,其发送次数尚有“盈余”,因此需要判断“盈余”被“补足”之后的CDi值;(-COi·φi)为“盈余”轮数所对应的总时延数;
(CSi+(-COi·wi))为总共“盈余”的分组数减去这轮已经发出的分组数;
CDi+(-COi·φi)-d·(CSi+(-COi·wi))即按照d的时延发送还剩下的“盈余”时延,将之与域值thdi比较,判断是否调度;
步骤3B-1:根据上述不同的情况,改变计数器CSi,COi,CDi的值;
步骤3B-2:从队列i中取出一个分组;从所述RR-PLR即轮循-比例丢失率缓冲管理程序模块中取得T入队列;取当前时间得到分组的出队列时间T出队列;
计算这个分组在队列中的时延d=T出队列-T入队列,并发送;
步骤3B-3:使CSi=CSi-1;CDi=CDi-d;i=i+1;转步骤2B;
步骤4B:i=i+1;
判断CSi=0并且CDi≤0:若是,转步骤5B;若否,转步骤6B;
步骤5B:CSi=CSi+wi;CDi=CDi+wi·ξi;转步骤2B;
步骤6B:COi=COi-1;转步骤2B。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100120860A CN100376099C (zh) | 2005-07-04 | 2005-07-04 | 基于网络处理器平台实现的综合队列管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100120860A CN100376099C (zh) | 2005-07-04 | 2005-07-04 | 基于网络处理器平台实现的综合队列管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1716906A CN1716906A (zh) | 2006-01-04 |
CN100376099C true CN100376099C (zh) | 2008-03-19 |
Family
ID=35822351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100120860A Expired - Fee Related CN100376099C (zh) | 2005-07-04 | 2005-07-04 | 基于网络处理器平台实现的综合队列管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100376099C (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2452913B (en) * | 2007-09-18 | 2011-06-15 | Virtensys Ltd | Queuing method |
CN103107955B (zh) * | 2011-11-15 | 2016-04-27 | ***通信集团公司 | 分组传送网队列调度方法和装置 |
CN103685067B (zh) * | 2013-11-26 | 2018-03-06 | 上海斐讯数据通信技术有限公司 | 一种动态切换egress端口队列调度模式的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1402472A (zh) * | 2002-09-29 | 2003-03-12 | 清华大学 | 基于网络处理器平台实现的动态部分缓冲共享方法 |
US20030179706A1 (en) * | 2002-03-20 | 2003-09-25 | International Business Machines Corporation | Network processor having fast flow queue disable process |
JP2005064724A (ja) * | 2003-08-08 | 2005-03-10 | Mitsubishi Electric Corp | 優先制御装置 |
CN1595910A (zh) * | 2004-06-25 | 2005-03-16 | 中国科学院计算技术研究所 | 一种网络处理器的数据包接收接口部件及其存储管理方法 |
-
2005
- 2005-07-04 CN CNB2005100120860A patent/CN100376099C/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030179706A1 (en) * | 2002-03-20 | 2003-09-25 | International Business Machines Corporation | Network processor having fast flow queue disable process |
CN1402472A (zh) * | 2002-09-29 | 2003-03-12 | 清华大学 | 基于网络处理器平台实现的动态部分缓冲共享方法 |
JP2005064724A (ja) * | 2003-08-08 | 2005-03-10 | Mitsubishi Electric Corp | 優先制御装置 |
CN1595910A (zh) * | 2004-06-25 | 2005-03-16 | 中国科学院计算技术研究所 | 一种网络处理器的数据包接收接口部件及其存储管理方法 |
Non-Patent Citations (1)
Title |
---|
基于Intel网络处理器的路由器队列管理:设计、实现与分析. 林闯,周文江,李寅,郑波,田立勤.计算机学报,第26卷第9期. 2003 * |
Also Published As
Publication number | Publication date |
---|---|
CN1716906A (zh) | 2006-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7876763B2 (en) | Pipeline scheduler including a hierarchy of schedulers and multiple scheduling lanes | |
Ramabhadran et al. | Stratified round robin: A low complexity packet scheduler with bandwidth fairness and bounded delay | |
EP2525534B1 (en) | Network traffic scheduler and associated method, computer program and computer program product | |
US7843940B2 (en) | Filling token buckets of schedule entries | |
CN107431667A (zh) | 在网络设备中调度数据包 | |
Kizilov et al. | Scheduling queues in the Ethernet switch, considering the waiting time of frames | |
US10110515B2 (en) | Packet scheduling using hierarchical scheduling process | |
Yuan et al. | Fair round-robin: A low complexity packet schduler with proportional and worst-case fairness | |
CN100466593C (zh) | 一种支持多业务的综合队列调度的实现方法 | |
CN100376099C (zh) | 基于网络处理器平台实现的综合队列管理方法 | |
CN100593312C (zh) | 使用定额和差额值进行调度 | |
CN103929374A (zh) | 一种基于业务类型的多级队列调度方法 | |
US7460544B2 (en) | Flexible mesh structure for hierarchical scheduling | |
EP1757036B1 (en) | Method and system for scheduling synchronous and asynchronous data packets over the same network | |
CN109347764A (zh) | 实现带宽匹配的调度方法、***及介质 | |
Fiat et al. | Competitive queue management for latency sensitive packets | |
CN102594670A (zh) | 多端口多流的调度方法、装置及设备 | |
Kogan et al. | Large profits or fast gains: A dilemma in maximizing throughput with applications to network processors | |
JPH11261634A (ja) | パケット・スケジューリング制御方法 | |
EP1774721B1 (en) | Propagation of minimum guaranteed scheduling rates | |
Lenzini et al. | Bandwidth and latency analysis of modified deficit round robin scheduling algorithms | |
Eugster et al. | Admission control in shared memory switches | |
Wang et al. | DDPG based dynamic scheduling optimization mechanism in real switch | |
Xue et al. | A new WRR algorithm based on ideal packet interval time | |
He et al. | A dynamic round-robin packet scheduling algorithm |
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: 20080319 Termination date: 20160704 |