CN1777147A - 支持多队列的共享缓存动态门限早期丢弃装置 - Google Patents

支持多队列的共享缓存动态门限早期丢弃装置 Download PDF

Info

Publication number
CN1777147A
CN1777147A CNA2005101263611A CN200510126361A CN1777147A CN 1777147 A CN1777147 A CN 1777147A CN A2005101263611 A CNA2005101263611 A CN A2005101263611A CN 200510126361 A CN200510126361 A CN 200510126361A CN 1777147 A CN1777147 A CN 1777147A
Authority
CN
China
Prior art keywords
stream
unit
circuit
input
grouping
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
Application number
CNA2005101263611A
Other languages
English (en)
Other versions
CN100405786C (zh
Inventor
胡成臣
刘斌
陈雪飞
陈洪明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CNB2005101263611A priority Critical patent/CN100405786C/zh
Publication of CN1777147A publication Critical patent/CN1777147A/zh
Application granted granted Critical
Publication of CN100405786C publication Critical patent/CN100405786C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供一种支持多队列的共享缓存动态门限早期丢弃装置属于IP技术领域,并在一片现场可编程门阵列(FPGA)上实现,其特征在于:含有如图1的电路:IP分组分割电路(1-1);动态门限早期丢弃电路(1-2);cell计数电路(1-3);空闲块管理电路(1-4);DDR控制器(1-5);队列调度电路(1-6);片外DDR存储器(1-7)。它能根据每个当前活跃的队列的平均队列长度和整个共享缓存区的平均队列长度来动态调整随机早期检测(RED)算法的参数,提出了支持多队列的共享缓存动态门限早期丢弃方法,其丢包率更小,缓存利用率更高,同时兼顾公平性。支持多队列的共享缓存动态门限早期丢弃方法保持了RED和动态门限(DT)机制的优点,并且用阶梯式丢弃曲线近似,利于在FPGA中实现。

Description

支持多队列的共享缓存动态门限早期丢弃装置
技术领域
本发明属于IP技术领域。
背景技术
当前Internet中间节点设备,如路由器等,通过对其内部的缓存队列长度的控制,来影响和控制网络的拥塞情况。目前见诸于设备的传统的缓存队列管理机制是尾部丢弃(TailDrop)机制:对每个队列设置一个长度门限,如果队列长度没有到达设定门限,接收所有分组进入队列;否则丢弃到达的分组。该机制实现简单,但是存在三个严重的缺陷:
(1)持续的满队列状态(Full Queues);
(2)业务流对缓存的死锁(Lock Out);
(3)业务量的全局同步(Global Synchronization);
目前普遍认可的方法是加入中间节点的增强功能:主动队列管理(AQM:Active QueueManagement)。即中间节点需要在网络进入拥塞情况之前,预先丢弃部分分组,以使得TCP协议响应来减慢源端的发送速率,避免拥塞的发生。在现有的网络设备中被采用的AQM机制是随机早期检测(RED:Random Early Detection)方法。但是该机制的主要缺点是:
(1)参数的设定困难,而且其性能敏感于参数和网络情况的变化;
(2)需要对每个单队列设置参数和计算,不利于队列数目或者网络流数目扩展的情况;
(3)RED算法中有很多乘法运算,需要大量资源,很难用硬件高速实现。
发明内容
本发明的目的在于从硬件的角度提出一种能够进行高速处理的支持多队列的共享缓存动态门限早期丢弃装置。与目前普遍采用的随机早期检测(RED)机制相比,本发明包含以下几个部分的特点和内容:
(1)动态调整进行分组丢弃的队列门限值方法。原始的RED算法需设定一对最大、最小队列长度的门限的参数,当队列状态处于这一对门限的范围中时,按照一定的概率丢弃到达分组。由于参数是预先设定的,很难满足多变的网络状况,因而性能会随着设定参数和网络情况的变化而变化。本发明克服RED算法对于参数设置和网络情况的依赖,动态调整进行分组丢弃的一对门限,即根据每个当前活跃的队列的平均队列长度和整个共享缓存区的平均队列长度来动态调整丢弃控制的阈值。这一机制的基本思想是:当网络拥塞状况的趋势增加,即剩余缓存空间减少时,提前进入分组丢弃的控制阶段;而当网络拥塞状况的趋势减弱,即剩余缓存空间增加时,推迟进入分组丢弃的控制阶段。
(2)采用阶梯式丢弃曲线方法在硬件中实现分组的丢弃。在动态确定分组丢弃的范围之后,需要对进入丢弃控制范围内的到达流的分组进行部分丢弃。对于越靠近最大丢弃门限的流,将丢弃越多的到达分组,相对地,对于越靠近最小丢弃门限的流,将丢弃越少的到达分组。而当该网络流超过最大丢弃门限时,完全丢弃到达分组。对于位于丢弃范围内网络流的队列,我们采用如图3所示的阶梯式丢弃曲线来计算应该丢弃的分组的比例,从而避免浮点了运算,使得能够用硬件查表的方式高速实现。
(3)在共享缓存上的多队列管理机制。随着目前internet网络流的数目的增加和对各种网络流的服务质量要求的提高,在网络中间节点设备中也要求能够支持大量的网络流的单独排队和管理。传统的方法是事先设定好队列数目和各个队列的长度。这种方法缓存利用率低,而且不利于队列数目的扩展。本发明在共享缓存上进行不同分组的缓存。在网络流到达或者退出中间节点设备时,动态生成或者撤销队列。已建立队列的网络流的分组到达时,采用(1)、(2)中所述的方法,判断是否接纳该分组。是,则从空闲的缓存中分配空间连接到其所述的队列中;否,则直接丢弃。
本发明的特征在于,该装置是用FPGA芯片实现的,该FPGA芯片中含有:IP分组分割电路、空闲块管理电路、DDR控制器、流单元计数电路、队列调度电路以及动态门限早期丢弃电路,其中:
IP分组分割电路,该电路把到达的变长的IP分组按设定的流单元长度进行分割,得到定长的流单元,用cell表示,所述IP分组分割电路含有:
第1个先进先出存储器设有IP分组输入端;
计数器,该计数器的计数信号输入端与所述第1个先进先出存储器的相应输出端相连;
分路器,该分路器有两个输入端:一个输入端与所述第1个先进先出存储器的IP数据输出端相连,该分路器的另一个输入端与所述计数器的计数输出端相连;
IP包头信息寄存器,该寄存器的IP包头信息输入端与所述分路器的相应输出端相连;
流单元头寄存器,设有流单元输入端,该输入端与所述IP包头信息寄存器的相应输出端相连;
选择器内设有预定的流单元长度,所述选择器的流单元头信息输入端、IP数据输入端依次分别与所述流单元头寄存器、分路器的相应输出相连;
流单元数据寄存器,该寄存器的流单元数据输入端与所述选择器的相应输出端相连;
第2个先进先出存储器,该存储器的流单元数据输入端与所述流单元数据寄存器的相应输出端相连,该先进先出存储器输出分割得到的流单元;
流单元计数电路,含有:加减计数器和磁性随机存取存储器,所述的加减计数器设有:流单元接纳指示信号输入端,接收片外双倍数据速率存储器的流单元;流单元调度指示信号输入端,接收流单元的调度信号;先前流单元数目输入端;所述的磁性随机存取存储器,用MRAM表示,设有:流单元的流号输入端;当前流单元数目输入端,该输入端与所述加减计数器的相应输出端相连;该MRAM还有:先前流单元数输出端,该输出端与所述加减计数器的相应输入端相连;该加减计数器在当一个流单元被接纳加入队列时计数器加1,当一个流单元被调出离开队列时计数器减1,该加减计数器内还设有队列权重的值Wq,按下式计算t时刻的平均队列长度Li avg(t)并输出:
Li avg(t)=(1-Wq)Li avg(told)+WqQi(t)
其中,Li avg(told)为t时刻队列i先前的流单元数;
Qi(t)为t时刻队列i到达的流单元数目,该加减计数器同时设有一个Q(t)输出端,Q(t)是指t时刻所有队列长度总和,Q(t)=ΣiQi(t);
空闲块管理电路,该电路是一个空闲块加减计数器,该计数器内设有片外双倍数据速率存储器的容量,该加减计数器还设有流单元接纳指示信号输入端和流单元调度指示信号输入端,当一个流单元被接纳加入队列,或者一个流单元被调出队列时,该加减计数器依次分别对设定的片外双倍数据速率存储器的容量加1或者减1,据此输出该片双倍数据速率存储器的空闲容量;
片外双倍数据速率存储器的控制器,该控制器连接着一个所述的片外双倍数据速率存储器,对该存储器的存取访问进行控制;
队列调度电路,该电路设有对所述片外双倍数据速率存储器中的流单元进行读入调度的队列调度信号输出端;
动态门限早期丢弃电路,该电路设有:Li avg(t)寄存器、进行丢弃控制的队列长度的下限阈值Lmin(t)运算的运算器1、进行丢弃控制的队列长度的上限阈值Lmax(t)运算的运算器2、比较器和进行丢弃控制的运算器3,其中,
运算器1,内置有Lmin(t)冗余度,用α表示,还置有所述的片外双倍数据速率存储器的容量,用B表示,单位是流单元长度,该运算器通过Q(t)信号输入端接收Q(t)信号并按下式计算Lmin(t):
Lmin(t)=α(B-Q(t));
运算器2,内置有Lmax(t)冗余度,用β表示,β>α,还置有所述的片外双倍数据速率存储器的容量,用B表示,单位是流单元长度,该运算器通过Q(t)信号输入端接收Q(t)信号并按下式计算Lmin(t):
Lmax(t)=β(B-Q(t))
上述各Q(t)信号输入端与所述流单元计数电路内的加减计数器的相应输出端相连;
比较器,内置有最大丢弃概率pmax,且该比较器设有:Li avg(t)信号输入端,该输入端与所述流单元计数电路内的加减计数器的相应输出端相连,该比较器还设有Lmin(t)信号和Lmax(t)信号共两个输入端,该比较器在接收到Li avg(t)、Lmin(t)、Lmax(t)信号后,依次按以下步骤执行:
步骤1:若Li avg(t)≤Lmin(t),则接收全部到达的分组,并输出到达的所有流单元,丢弃值为0;
步骤2:若Lmin(t)<Li avg(t)<Lmax(t)时,则计算丢弃概率pa,并以此概率丢弃到达分组:
p b = p max ( L i avg ( t ) - L min ( t ) ) ( L max ( t ) - L nin ( t ) )
pa=pb/(1-cpb),设c=-1;
步骤3:若Li avg(t)≥Lmax(t),则丢弃全部分组,c=0;
运算器3,该运算器按所述比较器输出的流单元丢弃标志,即所述c的值按下式计算丢弃概率pa
c=-1,则pa=pb/(1+cpb),丢弃部分到达的分组;
c=0,则pa=pb,丢弃所有到达的分组。
本发通过测试证明,具有适应性强、缓存利用率高而且支持多流队列动态管理机制的优点。
附图说明
图1:基本结构模块和外部接口关系
图2:RED算法丢弃曲线
图3:本发明的丢弃机制的阶梯式丢弃曲线
图4:硬件实现流程图
图5:IP分组分割电路(1-1)
图6:动态门限早期丢弃电路(1-2)
图7:cell计数电路(1-3)
图8:空闲块管理电路(1-4)
图9:DDR控制器(1-5)
图10:队列调度电路(1-6)
图11:第二段丢弃曲线波形(a)
图12:第二段丢弃曲线波形(b)
图13:第三段丢弃曲线波形(a)
图14:第三段丢弃曲线波形(b)
图15:第四段丢弃曲线波形(a)
图16:第四段丢弃曲线波形(b)
具体实施方式
互联网工程任务组(IETF)提出了AQM技术并推荐了RED机制。实现RED算法的路由器发现拥塞前兆时,提前随机丢弃缓冲队列中的一些分组,而不是等到缓冲区占满后丢弃所有新的分组。当网络中间节点设备的缓存的平均队列长度超过一个指定的最小门限minth时,就认为出现了拥塞前兆,这时路由器按一定的概率pa丢弃分组,这个概率pa是平均队列长度avg(t)的函数:
p b = p max ( avg ( t ) - min th ) ( max th - min th )
pa=pb/(1-cpb)
其中pmax为设定的最大丢弃概率,c的取值为一常数。
当平均队列长度超过一个指定的最大门限maxth时,路由器认为网络出现了严重拥塞,所有的分组都要丢弃。RED算法丢弃曲线如图2所示。
从上述RED算法的介绍可知,硬件实现RED算法时存在以下几个问题:
(1)参数的选择:minth,maxth,maxp和wq等参数的选择对RED算法有很大影响,但是这些参数是事先设置好的,不能实时反映当前网络的状况;
(2)RED算法中有很多乘法运算,另外还需要生成随机数,用硬件高速实现有一定的困难;
(3)RED算法采用先进先出的方法,对复用在一个接收队列中的所有连接的分组进行调度,但不监视每个流的状态,因此不支持多流多队列。
本发明在一片FPGA上,用硬件描述语言Verilog HDL编写实现,其基本结构和外部接口关系如图1所示,各电路工作流程为:当一个IP分组到达该装置时,由IP分组分割电路(1-1)切分为60字节的定长的数据单元,称作cell,然后将其发送给动态门限早期丢弃电路(1-2)。动态门限早期丢弃电路(1-2)模块根据动态门限早期丢弃方法的策略对cell实施接纳和丢弃控制,被接纳的cell再加上通过DDR控制器(1-5)写入片外DDR存储器(1-7)相应的网络流缓存队列中,等待队列调度电路(1-6)的调度命令。队列调度电路(1-6)对片外的DDR存储器中的cell进行调度,从众多的队列中选择某个流的队列,调度DDR存储器中的分组离开。cell计数电路(1-3)按照cell的流号,对DDR中的cell进行计数,对每个流都维护一个计数器,当一个cell接纳进入队列时计数器加一,当一个cell被调度离开队列时计数器减一。空闲块管理电路(1-4)负责统计片外DDR中的空闲容量,当一个cell被接纳进入队列时,分配一个空闲块,并且其数目减一;当一个cell被调度离开队列时,回收一个空闲块,并且其数目加一。动态门限早期丢弃电路(1-2)依据cell计数电路(1-3)提供的片外DDR存储器中该流的当前cell数目和空闲块管理电路(1-4)提供的片外DDR中的当前空闲容量两个参数对cell实施接纳和丢弃控制。
我们规定,以Qi(t)表示t时刻第i个等待队列的长度;以Q(t)=∑iQi(t)表示t时刻所有队列长度总和,即缓存中被占用部分的大小;以B表示整个共享缓存区的大小;用Lmin(t),Lmax(t)代表t时刻进行分组丢弃控制的队列长度的上限和下限阈值。
当每一个分组到达队列i时,计算t时刻队列i的平均队列长度Li avg(t)(Wq)为设定的队列权重):
  Li avg(t)=(1-Wq)Li avg(told)+WqQi(t)   (1)
重新计算进行丢弃控制的队列长度的上限和下限阈值Lmin(t),Lmax(t)(β>α):
  Lmin(t)=α(B-Q(t))   (2)
Lmax(t)=β(B-Q(t))             (3)
根据计算得到的上限Lmax(t)和下限Lmin(t),进行以下的判断:
(1)如果Li avg(t)≤Lmin(t),不作任何控制,接收全部到达的分组;
(2)如果Lmin(t)<Li avg(t)<Lmax(t)时,则计算丢弃概率pa,并以此概率丢弃到达分组。(pmax为设定的最大丢弃概率)
Figure A20051012636100091
(3)如果Li avg(t)≥Lmax(t),则丢弃全部分组,c=0。
以下给出实现的伪代码:
初始化:Li avg(t)=0,c=-1;
时刻t,某一分组到达输入队列i:
用式(1)计算Li avg(t);
用式(2)、(3)计算Lmin(t)和Lmax(t);
if Lmin(t)<Li avg(t)<Lmax(t)
用公式(4)、(5)计算丢弃概率pa
以概率pa丢弃达到分组;
c=0;
else if Li avg(t)≥Lmax(t)
          丢弃到达分组;
          c=0;
      else
c=-1;
考虑大小为B的缓存区中,当前只有A个队列处于活跃的状态。因为各个队列的长度被控制在Lmax(t)左右,那么此时缓存区被占据的最大容量在Q(t)=ALmax(t)左右,代入式(3)中可以得到 L max ( t ) = βB 1 + βA , 所以缓存区的利用率为 ρ = βA 1 + βA . 从上式中可以看出,与RED算法一样,本发明也总是预留出一小部分缓存空间,能够更好地处理突发性。
在利用硬件高速实现时存在两个困难:一是分组丢弃控制门限Lmin(t)和Lmax(t)的计算;二是丢弃概率的计算。本发明通过对算法作以下的设置,就可以利用硬件来高速实现:
(1)每当有分组到达,由cell计数电路(1-3)给出该流的平均队列长度,记为C;
(2)整个共享缓存区的大小B是所采用的片外DDR的大小;
(3)缓存中被占用部分的大小Q(t)由空闲块管理电路(1-4)给出,记DDR中空闲缓存大小是R;
(4)参数α=0.5,β=1.0,则由空闲块管理电路(1-4)给出的空闲缓存大小R,Lmin(t)=0.5R,Lmax(t)=R,其中通过简单的右移一位就可以得到分组丢弃控制门限Lmin(t)。
由于丢弃是对一个完整的分组进行实施的,因此,在分组的第一个信元到来时,平均队列长度C和两个门限值Lmin(t),Lmax(t)进行比对,决定是丢弃该分组的cell,还是将该分组的cell写入片外的DDR存储器。
另外,如果严格计算丢弃概率,并按照该概率随机丢弃到达的分组,需要复杂的伪随机数生成电路,并且有大量的乘法运算,会占用大量的FPGA资源,不利于用硬件高速实现。我们可以采用如图3所示的分段函数逼近丢弃曲线,然后预先计算好分段门限值、剩余容量和丢弃概率之间的关系,实现时,仅需要通过从空闲块管理模块得到的DDR剩余容量R和从分组计数电路得到该流的当前队列长度C,通过表1可查表得到分组丢弃概率,然后按照此丢弃概率周期性丢弃到达的分组。比如,当从分组计数电路得到的当前队列长度0≤C<0.5R时,所有到达的分组都不丢弃,都通过DDR控制器(1-5)写入片外的DDR存储器;当0.5R≤C<0.75R时,该流每到达8个分组就丢弃一个分组。采用的分段函数逼近丢弃曲线方法以及周期性的丢弃规则,可在FPGA上高速实现,电路工作流程如图4所示。
         表1剩余容量R、流的队列长度C和分组丢弃概率的关系
  分段号   当前队列长度C   丢弃概率  丢弃规则
  1   0≤C<0.5R   0%  不丢弃分组
  2   0.5R≤C<0.75R   12.5%  每8个分组丢弃一个
  3   0.75R≤C<R   37.5%  每3个分组丢弃一个
  4   C≥R   100%  丢弃全部分组
基于FPGA的支持多队列的共享缓存动态门限早期丢弃装置采用硬件描述语言Verilog在一片FPGA上实现,并在所开发的路由器线卡上实验和测试。测试系统由PC机的并行口,通过FPGA的JTAG口,向该线卡上的FPGA下载HDL代码,再用测试仪向目标板发送特定的IP分组,经FPGA上的模块处理之后,由测试仪和EDA工具对输出结果进行统计和记录,分析所设计的该装置正确性。
测试中用到的测试仪为Spirent公司的AX/4000。AX/4000是一种模块化的多端口测试系统,能够以高达10Gbps的速度同时测试ATM、IP、帧中继和以太网等多种传输技术。AX/4000测试仪采用模块化设计,主要模块由系统控制模块、发生器模块、分析器模块和丰富的接口模块组成。发生器模块提供IP源地址和目的地址、多种发包模式;分析器模块自动提取的流信息,实时地显示各流的丢包率、丢包统计等信息,并以数据表、线性图、直方图等方式显示。本专利的实验用AX/4000产生特定的流,并对结果进行统计和分析。
开发和测试中用的EDA工具主要为Altera公司的Quartus软件,Quartus软件完成Verilog代码的编写、实现和下载,并用其中的Signal Tap分析和记录时序波形。
基于FPGA的支持多队列的共享缓存动态门限早期丢弃装置采用阶梯式曲线来逼近RED的丢弃曲线,周期性地丢弃部分分组。由空闲块管理电路(1-4)得到的DDR剩余容量R、由cell计数电路(1-3)给出流的队列长度C和分组丢弃概率的关系可由表1表示。基于FPGA的支持多队列的共享缓存动态门限早期丢弃装置的实验要测试分段函数曲线的每一段。基于FPGA的支持多队列的共享缓存动态门限早期丢弃装置中,如果队列调度电路(1-6)不进调度,该装置将会经历分段丢弃曲线的每一段,可在Quartus的Signal Tap中依次设置相应的触发值,就可以记录和分析波形。
第一段曲线的测试:如果队列调度电路(1-6)正常调度,该装置工作在丢弃曲线的第一段,完全接纳到达的分组。在测试中,测试仪AX/4000发包模式均为Manually TriggeredBursts,100%BW发包,总的发包数为300000,每次手动触发时发送300000个分组,再用测试仪AX/4000接收处理后的分组。从表2可以得出,该装置工作在丢弃曲的第一段时能正确转发分组,不会丢弃分组。
             表2第一段丢弃曲线测试结果
  序号   流数   发送的包数   包长   收到的包数   结论
  1   1   300,000   40   300,000   正确
  2   1   300,000   1500   300,000   正确
  3   100   300,000   40   300,000   正确
  4   100   300,000   1500   300,000   正确
  5   1000   300,000   40   300,000   正确
  6   1000   300,000   1500   300,000   正确
中间段的测试:如果队列调度电路(1-6)不进行调度,该装置将会经历分段丢弃曲线的每一段,依次在Signal Tap中设置相应的触发值,记录其波形。在测试中,测试仪AX/4000选择长度为48字节包,发包模式均为periodic packets,100%BW。在测试中,在Quartus的Signal Tap中添加如下的信号:
1.C4_slotcycle:该装置的时钟节拍记数,计数值为0~15;
2.F_first_cell:分组的第一个cell的标志;
3.CON_discard_interval:每段丢弃曲线的计数上限,比如在0.75R≤C<R分段区间时,每3个分组丢弃一个,则CON_discard_interval=3;
4.C4_discard:在每段丢弃曲线的周期计数器,用于判断是否该丢弃该分组,比如在0.75R≤C<R分段区间时,每3个分组丢弃一个,C4_discard为1~3周期计数,当C4_discard=CON_discard_interval=3时,丢弃该分组;
5.F_range_judge:在每段丢弃曲线的周期计数判断,当C4_discard=CON_discard_interval时,到达计数上限时,则F_range_judge=1,表示该分组要丢弃;
6.F_IP_discard:IP分组丢弃标志,为1时,丢弃该分组,信号宽度为IP分组的宽度;
7.C19_Cellnum:当前流的在DDR中缓存的cell数,即队列长度C;
8.C19_Remain:DDR当前的剩余空间,即剩余容量R;
9.F_range_show:RED-DT所在丢弃曲线段的指示;
在Quartus的Signal Tap中设置F_range_show为触发条件,依次为:
00:第一段,不丢弃分组;
01:第二段,每8个分组丢弃一个;
10:第三段,每3个分组丢弃一个;
11:第四段,丢弃全部分组;
采用上述的测试方法,得到如下的结果:
(1)设置F_range_shown的触发值为01,基于FPGA的支持多队列的共享缓存动态门限早期丢弃装置工作在分段丢弃曲线的第二段,每8个分组丢弃一个分组,测试波形如图11、图12所示。从图11、图12可以看出,当F_range_shown=01时,C=172031,R=344063,0.5R≤C<0.75R,该装置工作在分段丢弃曲线的第二段,每8个分组丢弃一个分组,当C4_discard=8时,F_IP_discard和F_range_judge为1,丢弃该分组,测试正确。
(2)设置F_range_shown的触发值为10,基于FPGA的支持多队列的共享缓存动态门限早期丢弃装置工作在分段丢弃曲线的第三段,每3个分组丢弃一个分组,测试波形如图13、图14所示。从图13、图14可以看出,当F_range_shown=10时,C=22183,R=294911,0.75R≤C<R,该装置工作在分段丢弃曲线的第三段,每3个分组丢弃一个分组,当C4_discard=3时,F_IP_discard和F_range_judge为1,丢弃该分组,测试正确。
(3)设置F_range_shown的触发值为11,基于FPGA的支持多队列的共享缓存动态门限早期丢弃装置工作在分段丢弃曲线的第四段,丢弃全部分组,测试波形如图15、图16所示。从图15、图16可以看出,当F_range_shown=11时,C=258047,R=258047,C≥R,该装置工作在分段丢弃曲线的第四段,丢弃全部分组F_IP_discard和F_range_judge始终为1,丢弃该分组,测试正确。

Claims (1)

1、支持多队列的共享缓存动态门限早期丢弃装置,其特征在于,该装置是用FPGA芯片实现的,该FPGA芯片中含有:IP分组分割电路、空闲块管理电路、DDR控制器、流单元计数电路、队列调度电路以及动态门限早期丢弃电路,其中:
IP分组分割电路,该电路把到达的变长的IP分组按设定的流单元长度进行分割,得到定长的流单元,用cell表示,所述IP分组分割电路含有:
第1个先进先出存储器设有IP分组输入端;
计数器,该计数器的计数信号输入端与所述第1个先进先出存储器的相应输出端相连;
分路器,该分路器有两个输入端:一个输入端与所述第1个先进先出存储器的IP数据输出端相连,该分路器的另一个输入端与所述计数器的计数输出端相连;
IP包头信息寄存器,该寄存器的IP包头信息输入端与所述分路器的相应输出端相连;
流单元头寄存器,设有流单元输入端,该输入端与所述IP包头信息寄存器的相应输出端相连;
选择器内设有预定的流单元长度,所述选择器的流单元头信息输入端、IP数据输入端依次分别与所述流单元头寄存器、分路器的相应输出相连;
流单元数据寄存器,该寄存器的流单元数据输入端与所述选择器的相应输出端相连;
第2个先进先出存储器,该存储器的流单元数据输入端与所述流单元数据寄存器的相应输出端相连,该先进先出存储器输出分割得到的流单元;
流单元计数电路,含有:加减计数器和磁性随机存取存储器,所述的加减计数器设有:流单元接纳指示信号输入端,接收片外双倍数据速率存储器的流单元;流单元调度指示信号输入端,接收流单元的调度信号;先前流单元数目输入端;所述的磁性随机存取存储器,用MRAM表示,设有:流单元的流号输入端;当前流单元数目输入端,该输入端与所述加减计数器的相应输出端相连;该MRAM还有:先前流单元数输出端,该输出端与所述加减计数器的相应输入端相连;该加减计数器在当一个流单元被接纳加入队列时计数器加1,当一个流单元被调出离开队列时计数器减1,该加减计数器内还设有队列权重的值Wq,按下式计算t时刻的平均队列长度Li avg(t)并输出:
Li avg(t)=(1-Wq)Li avg(told)+WqQi(t)
其中,Li avg(told)为t时刻队列i先前的流单元数;
Qi(t)为t时刻队列i到达的流单元数目,该加减计数器同时设有一个Q(t)输出端,Q(t)是指t时刻所有队列长度总和,Q(t)=∑iQi(t);
空闲块管理电路,该电路是一个空闲块加减计数器,该计数器内设有片外双倍数据速率存储器的容量,该加减计数器还设有流单元接纳指示信号输入端和流单元调度指示信号输入端,当一个流单元被接纳加入队列,或者一个流单元被调出队列时,该加减计数器依次分别对设定的片外双倍数据速率存储器的容量加1或者减1,据此输出该片双倍数据速率存储器的空闲容量:
片外双倍数据速率存储器的控制器,该控制器连接着一个所述的片外双倍数据速率存储器,对该存储器的存取访问进行控制:
队列调度电路,该电路设有对所述片外双倍数据速率存储器中的流单元进行读入调度的队列调度信号输出端;
动态门限早期丢弃电路,该电路设有:Li avg(t)寄存器、进行丢弃控制的队列长度的下限阈值Lmin(t)运算的运算器1、进行丢弃控制的队列长度的上限阈值Lmax(t)运算的运算器2、比较器和进行丢弃控制的运算器3,其中,
运算器l,内置有Lmin(t)冗余度,用α表示,还置有所述的片外双倍数据速率存储器的容量,用B表示,单位是流单元长度,该运算器通过Q(t)信号输入端接收Q(t)信号并按下式计算Lmin(t):
Lmin(t)=α(B-Q(t));
运算器2,内置有Lmax(t)冗余度,用β表示,β>α,还置有所述的片外双倍数据速率存储器的容量,用B表示,单位是流单元长度,该运算器通过Q(t)信号输入端接收Q(t)信号并按下式计算Lmin(t):
Lmax(t)=β(B-Q(t))
上述各Q(t)信号输入端与所述流单元计数电路内的加减计数器的相应输出端相连;
比较器,内置有最大丢弃概率pmax,且该比较器设有:Li avg(t)信号输入端,该输入端与所述流单元计数电路内的加减计数器的相应输出端相连,该比较器还设有Lmin(t)信号和Lmax(t)信号共两个输入端,该比较器在接收到Li avg(t)、Lmin(t)、Lmax(t)信号后,依次按以下步骤执行:
步骤l:若 L avg i ( t ) ≤ L min ( t ) , 则接收全部到达的分组,并输出到达的所有流单元,丢弃值为0:
步骤2:若 L min ( t ) < L avg i ( t ) < L max ( t ) 时,则计算丢弃概率pa,并以此概率丢弃到达分组:
p b = p max ( L i avg ( t ) - L min ( t ) ) ( L max ( t ) - L min ( t ) )
pa=pb/(1-cpb),设c=-1;
步骤3:若 L avg i ( t ) &GreaterEqual; L max ( t ) , 则丢弃全部分组,c=0:
运算器3,该运算器按所述比较器输出的流单元丢弃标志,即所述c的值按下式计算丢弃概率pa
c=-1,则pa=pb/(1+cpb),丢弃部分到达的分组:
c=0,则pa=pb,丢弃所有到达的分组。
CNB2005101263611A 2005-12-09 2005-12-09 支持多队列的共享缓存动态门限早期丢弃装置 Expired - Fee Related CN100405786C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005101263611A CN100405786C (zh) 2005-12-09 2005-12-09 支持多队列的共享缓存动态门限早期丢弃装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005101263611A CN100405786C (zh) 2005-12-09 2005-12-09 支持多队列的共享缓存动态门限早期丢弃装置

Publications (2)

Publication Number Publication Date
CN1777147A true CN1777147A (zh) 2006-05-24
CN100405786C CN100405786C (zh) 2008-07-23

Family

ID=36766459

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005101263611A Expired - Fee Related CN100405786C (zh) 2005-12-09 2005-12-09 支持多队列的共享缓存动态门限早期丢弃装置

Country Status (1)

Country Link
CN (1) CN100405786C (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101582842A (zh) * 2008-05-16 2009-11-18 华为技术有限公司 拥塞控制方法与拥塞控制装置
CN102461093A (zh) * 2009-06-29 2012-05-16 阿尔卡特朗讯公司 管理业务负荷的方法
CN101094188B (zh) * 2007-07-16 2012-06-13 中兴通讯股份有限公司 随机先期检测装置及其硬件实现方法
CN103279309A (zh) * 2013-05-15 2013-09-04 清华大学 基于fpga的ddr控制装置及方法
CN104488239A (zh) * 2012-05-18 2015-04-01 阿尔卡特朗讯公司 用于实现可变瓶颈速率的主动队列管理增强的系统和方法
CN106372011A (zh) * 2015-07-24 2017-02-01 爱思开海力士有限公司 用于pcie ssd控制器的高性能主机队列监控器
CN107656881A (zh) * 2017-09-13 2018-02-02 中国科学院半导体研究所 基于fpga的数据存储通路系统
CN109565476A (zh) * 2016-08-29 2019-04-02 思科技术公司 使用共享全局存储器储备进行队列保护
CN110519176A (zh) * 2019-08-20 2019-11-29 华能四川水电有限公司 适用于工控环境的动态平衡智能流量数据转发装置和方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105099940B (zh) * 2014-05-05 2020-08-04 中兴通讯股份有限公司 队列管理方法和装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6219728B1 (en) * 1996-04-22 2001-04-17 Nortel Networks Limited Method and apparatus for allocating shared memory resources among a plurality of queues each having a threshold value therefor
US5901147A (en) * 1996-08-30 1999-05-04 Mmc Networks, Inc. Apparatus and methods to change thresholds to control congestion in ATM switches
WO2000005656A1 (en) * 1998-07-22 2000-02-03 General Datacomm, Inc. Dynamic buffer management scheme for atm switches
US6717912B1 (en) * 1999-05-28 2004-04-06 Network Equipment Technologies, Inc. Fair discard system
GB2372172B (en) * 2001-05-31 2002-12-24 Ericsson Telefon Ab L M Congestion handling in a packet data network

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101094188B (zh) * 2007-07-16 2012-06-13 中兴通讯股份有限公司 随机先期检测装置及其硬件实现方法
CN101582842A (zh) * 2008-05-16 2009-11-18 华为技术有限公司 拥塞控制方法与拥塞控制装置
CN102461093A (zh) * 2009-06-29 2012-05-16 阿尔卡特朗讯公司 管理业务负荷的方法
CN102461093B (zh) * 2009-06-29 2014-09-10 阿尔卡特朗讯公司 管理业务负荷的方法
CN104488239B (zh) * 2012-05-18 2017-09-22 阿尔卡特朗讯公司 用于实现可变瓶颈速率的主动队列管理增强的系统和方法
CN104488239A (zh) * 2012-05-18 2015-04-01 阿尔卡特朗讯公司 用于实现可变瓶颈速率的主动队列管理增强的系统和方法
CN103279309B (zh) * 2013-05-15 2015-12-23 清华大学 基于fpga的ddr控制装置及方法
CN103279309A (zh) * 2013-05-15 2013-09-04 清华大学 基于fpga的ddr控制装置及方法
CN106372011A (zh) * 2015-07-24 2017-02-01 爱思开海力士有限公司 用于pcie ssd控制器的高性能主机队列监控器
CN106372011B (zh) * 2015-07-24 2020-10-30 爱思开海力士有限公司 用于pcie ssd控制器的高性能主机队列监控器
CN109565476A (zh) * 2016-08-29 2019-04-02 思科技术公司 使用共享全局存储器储备进行队列保护
CN109565476B (zh) * 2016-08-29 2022-09-09 思科技术公司 使用共享全局存储器储备进行队列保护
CN107656881A (zh) * 2017-09-13 2018-02-02 中国科学院半导体研究所 基于fpga的数据存储通路系统
CN110519176A (zh) * 2019-08-20 2019-11-29 华能四川水电有限公司 适用于工控环境的动态平衡智能流量数据转发装置和方法

Also Published As

Publication number Publication date
CN100405786C (zh) 2008-07-23

Similar Documents

Publication Publication Date Title
CN1777147A (zh) 支持多队列的共享缓存动态门限早期丢弃装置
CN1219384C (zh) 多播传输的方法及设备
US9313115B2 (en) Traffic generator with priority flow control
CN102422607B (zh) 高速分组交换系统中的与流量负荷有关的功率减少
US11637786B1 (en) Multi-destination traffic handling optimizations in a network device
CN108833299B (zh) 一种基于可重构交换芯片架构的大规模网络数据处理方法
CN100338915C (zh) 报文镜像方法及具有报文镜像功能的网络设备
CN100411474C (zh) 适用于移动通信系统的下行分组数据调度方法
CN1302643C (zh) 测试网络设备传输性能的装置及其方法
CN1770734A (zh) 网络装置的通信量控制方法
CN1518299A (zh) 信息包通信方法和信息包通信装置
CN100337432C (zh) 数据流量统计方法及装置
US11677676B1 (en) Shared traffic manager
CN102811176B (zh) 一种数据流量控制方法和装置
CN107623632B (zh) 基于dpdk的网络协议的连接方法及系统
CN1960334A (zh) 队列调度方法及装置
CN109039949A (zh) 无线片上网络中基于优先级的动态无线介质访问控制方法
CN109548164A (zh) 一种基于负载需求的自适应调度切换方法和系统
US10846225B1 (en) Buffer read optimizations in a network device
CN1842059A (zh) 在计算机网络中接收包的方法和系统
US10742558B1 (en) Traffic manager resource sharing
CN1601975A (zh) 分组交换设备流量监测查询方法及线卡采集器
CN110297785A (zh) 一种基于fpga的金融数据流控装置和流控方法
CN1878132A (zh) 一种实现变长分组包交换的方法及系统
CN101026492A (zh) 老化原始流的方法及装置、网流输出器和网流系统

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

Granted publication date: 20080723

Termination date: 20141209

EXPY Termination of patent right or utility model