基于网络处理器的流量控制方法

文档序号:7883452阅读:407来源:国知局
专利名称:基于网络处理器的流量控制方法
技术领域
本发明涉及数据通信领域的流量控制方法,特别是涉及一种在网络处理器上实现对宽带网络用户的上网流量的控制方法。
背景技术
目前,随着宽带网络的推广和发展,宽带网络的用户数量急剧增多。由于多数使用宽带网络的用户较为分散,因此,电信运营商不但要对接入的宽带用户进行一般的业务管理,还需要具备针对不同等级的用户提供不同服务等级的服务的能力,即要对用户使用的带宽进行分别控制;各流量控制方法基于不同硬件,它既要能够满足用户流量控制的一般要求,还要操作简单、控制准确。
目前的网络设备中,流量控制方法多种多样,其中大多数方法的算法是通用的,但因受到具体的硬件结构、CPU计算能力和算法的复杂度等因素的制约和影响,其具体实现过程是不同的。目前,有以下三种流量控制方法1.在流量控制方法中采用令牌漏桶法该方法本身功能比较完备,但是其不仅需要对令牌进行存储,而且需要对到达的数据包进行缓存,同时,需要对突发时间间隔有一定的容忍度;因此实现上较为复杂,尤其在微码限速转发数据包的过程中很难实现对流量的有效控制;2.在流量控制方法中采用利用软件定时器的方法该方法采用CPU上的软件定时器作为对用户流量控制的定时单位,由于软件定时器的不精确性会造成计算上的误差,从而影响微码流量控制的精确性;3.在流量控制方法中采用利用硬件定时器的方法这种方法虽然采用了硬件定时器,但其控制方式是以秒作为计算单位,每过一秒刷新一次定时器,从而造成流量的不平滑,从控制结果上来看,会出现用户流量时断时续的情况。
综上所述,现有流量控制技术中存在算法实现复杂、控制不准确、受控流量不平滑,以及服务时间不固定和不易通用等的问题,针对以上各种算法存在的问题,以及根据现有技术中网络处理器本身所受到的条件限制,需要提出一种解决上述问题的基于网络处理器的流量控制方法。

发明内容
本发明的目的正是针对上述背景技术中存在的缺陷,提出一种基于网络处理器的流量控制方法,采用硬件提供的定时器实现控制的精确性,同时,在控制的过程中使用包触发控制的方式,保证了用户流量在传输过程中的平滑性。
本发明所提出的一种基于网络处理器的流量控制方法,其特征在于,该方法包括以下步骤(1)设置进行流量控制的参数,步骤201;需设置的参数包括令牌桶容量C、令牌到达速率P、上一数据包到达时刻t1、当前数据包到达时刻t2、当前数据包到达时,令牌桶中剩余的令牌数为C1、当前数据包的长度L;(2)计算与当前数据包到达时刻相关的参数,步骤202;当前数据包传送时间为t2-t1,在t2时刻令牌桶中的令牌数为C2=min{C,C1+(t2-t1)×P}(3)根据对令牌桶中当前令牌数C2与当前数据包的长度L相比较的结果,如果L<=C2,发送该数据包及令牌;反之,丢弃该数据包及令牌;以及(4)调整令牌桶中的令牌数和时刻这两个参数值,其中当前令牌数等于第(3)中计算后的令牌桶中的令牌数;当可以发送时令牌桶中的令牌数=C2-L;当不能发送时令牌桶中的令牌数=C2;时刻调整等于第(3)中计算后的t1的值,可以发送或不可以发送都将时刻更新为当前包到达的时刻,即t1=t2。
与现有技术相比,采用本发明所述方法,具有实现简单、控制准确、流量平滑、服务时间固定,在估计系统处理时间时有详细的试验数据作为参考、易于在同类产品中通用,并且对于INTEL的系列处理器或者其他有计数器的网络处理器具有兼容性。
此方法的实现平台是intel公司的IXP1200系列网络处理器,易于在同类产品中通用。并且对于其他网络处理器,只要内部提供硬件定时器也能够使用此方法。
下面将结合实施例并参照附图对该发明的技术方案进行详细说明。


图1为本发明的抽象模型示意图;图2为本发明的流量控制方法的总流程图;
图3为本发明的流量控制方法实施例流程图。
具体实施例方式
如图1所示,为本发明的抽象模型示意图,将令牌桶102中的令牌101作为数据包103的转发的依据,令牌101按照一定的速率放到令牌桶102中,数据包103在转发时从令牌桶103中取令牌101,如果令牌101的数量大于或等于数据包103所需的令牌数,则发送该令牌,否则丢弃。
本发明所采用的抽象模型为一个类似于标准的令牌漏桶算法的带有令牌的漏桶算法模型,与标准的令牌漏桶算法不同,由于不需要对包进行缓存,因此,其中的数据包和令牌都有可能丢弃。
如图2所示,为本发明的流量控制方法流程图,本发明的实现方法包括如下步骤(1)设置进行流量控制算法的参数,步骤201;需设置的参数包括令牌桶容量C(字节);用户带宽=令牌到达速率=P(K字节/S),由于没有缓冲,C应该等于P;上一数据包到达时刻t1(S),其初始值为0;当前数据包到达时刻t2(S);当前数据包到达时,令牌桶中剩余的令牌数为C1(字节);当前数据包的长度L(字节)。
(2)计算与当前数据包到达时刻相关的参数,步骤202;在t2时刻令牌桶中的令牌数为C2=min{C,C1+(t2-t1)×P}(3)根据对令牌桶中当前令牌数与当前数据包的长度相比较的结果,对令牌桶中的数据包进行传送或丢弃处理,步骤203。
如果L<=C2可以发送;令牌桶中的令牌数=C2-L;t1=t2;否则丢弃包;令牌桶中的令牌数=C2;t1=t2;也就是说,处于当前数据包到达时刻t2的令牌桶中,如果令牌数大于或等于当前数据包所需的令牌数,则发送该数据包及令牌,否则丢弃数据包及令牌;(4)调整令牌桶中的令牌数和时刻这两个参数值,步骤204。
当前令牌数等于第(3)中计算后的令牌桶中的令牌数;当可以发送时令牌桶中的令牌数=C2-L;当不能发送时令牌桶中的令牌数=C2;时刻调整等于第(3)中计算后的t1的值;可以发送或不可以发送都将时刻更新为当前包到达的时刻,即t1=t2。
下面以一具体实施例,来进一步说明本发明的技术方案。
在本具体实施例中,利用Intel公司的网络处理器IXP1200来实现本发明提出的基于网络处理器的流量控制方法,由于在IXP1200中没有时钟,只有一个计数器,因此,需要将时间单位秒换算成为cycle。IXP1200中的计数器和CPU的主频一致,为200MHz/秒。在Intel的网络处理器IXP1200做了相关的试验,具体实施方式
如下硬件环境IXP1200网络软件部分的处理步骤如下控制CPU在用户接入后,将用户的带宽值P写入内存,作为算法的输入参数之一,并且,此时的前一数据包到达时刻t1和令牌桶中剩余的令牌数C1的初始值均为0;当包达到时根据图3的方法完成用户流量的控制;参数设置部分的流程包括当前数据包到达,获得该数据包长度L,步骤301;当前包的长度为L(字节);读取有关令牌桶及数据包的相对当前状态的前一状态的各项参数,包括C1、t1和用户带宽值C,步骤302a.令牌桶容量C(单位字节)b.用户带宽=令牌到达速率=P(单位K字节/S),说明由于没有缓冲,C应该等于P;c.上一个数据包到达时刻t1(单位S),其初始值为0;计算当前数据包的有关参数的流程包括通过读取到的当前计数器的值,计算出当前数据包到达的时刻t2,步骤303;判断t2值是否溢出,步骤304;其中,若计数器使用64比特,如果基于166MHz主频,64比特需要83年才会溢出,所以无须考虑溢出问题;但是,如果使用32比特的计数器,则需要考虑计数器溢出的问题,如t2值溢出,则需先调整其值,步骤305;然后,计算当前包到达令牌桶所用的时间,即遵循公式t2-t1,步骤306;由于目前所使用的CPU一般为32位,因此在作乘法和除法运算的时候需要注意溢出的情况。
计算(t2-t1)/(2×10^16),将t1和t2的单位换算为cycle,步骤307;计算(t2-t1)/(2×10^16)×C,得到当前数据包到达令牌桶的这段时间中到达的令牌数,步骤308;其中,P的值是由控制CPU写到内存中的,在此算法中存在一个关键计算过程,即(t2-t1)×P的乘法中,由于使用cycle作为时间单位,所以必须对单位进行必要的换算。为了解决这个问题,通过以下几个步骤来解决a.调整计算单位P的单位为K字节/秒,所以P字节/秒换算为cycle,其算法为P/(2×10^8)(K字节/cycle),并且,P/(2×10^8)(K字节/cycle)=P/(2×10^5)(字节/cycle),在IXP1200中以每1秒时间对应200MHz的cycle计算;b.调整计算方法,采用近似算法由于在IXP1200中无法完成除以10^5这样的操作,因此,所有的乘法和除法只能用移位操作和加法来完成,即需要,为了计算方便,用2^16+2^16/2来近似10^5,其误差为[10^5-(2^16+2^16/2)]/10^5=1.7%所以有P/(2×(2^16+2^16/2))+delta=P/(2×10^5)设delta为调整因子,它的值可以通过预先计算出来,作为输入参数;其中P/(2×(2^16+2^16/2))=P/(2^16×3)=P/2^16/3(公式1)这样,通过P/2^16可以通过移位进行操作,满足了微码中的计算,但还需要解决除以3的问题;c.解决除以3的问题由于实施例中存在上述问题,所以需要增加解决除以3的问题的步骤,计算(t2-t1)/(2×10^16)×C/3,步骤309;设Y=1/4+1/16+1/64+……1/4^N+…… (公式2)2Y=1/2+1/8+1/32+……1/2^(2×N-1)+…… (公式3)(公式2)+(公式3),得到3Y=1/2+1/4+1/8+……1/2^N+……因为有1/2+1/4+1/8+……1/2^N+……=1所以有Y=1/3
因此X/3=X×(1/4+1/16+1/64+……)在实际运算过程中,能够表示的数都为整数,为了精确到个位,在计算之前需要将X扩大10倍,计算完成后,将结果缩小10倍。在实际运算过程中,由于只能使用移位操作,将扩大和缩小的倍数定为16倍。
计算在当前数据包到达t2时刻,令牌桶中的令牌数,步骤310;在t2时刻令牌桶中的令牌数为C2=min{C,C1+(t2-t1)×P},其中,如果C值小,则设C2=C,步骤311;其余情况,则设C2=C1+(t2-t1)/2^16)×C,步骤312;判断当前数据包的长度与当前数据包到达t2时刻,令牌桶中的令牌数的大小关系,步骤313;如果L<=C2,则表示数据包可以发送,步骤314;令牌桶中剩余令牌数C1=C2-L,步骤315;反之,表示数据包可以丢弃,步骤316;令牌桶中剩余令牌数C1=C2,步骤317;更新C1后,调整令牌桶的计时时刻为t1=t2,步骤318;等到新的数据包到达时,t2即成为相对于新数据包的前一数据包到达的时刻。
权利要求
1.一种基于网络处理器的流量控制方法,其特征在于,该方法包括以下步骤(1)设置进行流量控制算法的参数;需设置的参数包括令牌桶容量C、令牌到达速率P、上一数据包到达时刻t1、当前数据包到达时刻t2、当前数据包到达时,令牌桶中剩余的令牌数为C1、当前数据包的长度L;(2)计算与当前数据包到达时刻相关的参数;当前数据包传送时间为t2-t1,在t2时刻令牌桶中的令牌数为C2=min{C,C1+(t2-t1)×P}(3)根据对令牌桶中当前令牌数C2与当前数据包的长度L相比较的结果,如果L<=C2,发送该数据包及令牌;反之,丢弃该数据包及令牌;以及(4)调整令牌桶中的令牌数和时刻这两个参数值,其中当前令牌数等于第(3)中计算后的令牌桶中的令牌数;当可以发送时令牌桶中的令牌数=C2-L;当不能发送时令牌桶中的令牌数=C2;时刻调整等于第(3)中计算后的t1的值,可以发送或不可以发送都将时刻更新为当前包到达的时刻,即t1=t2。
2.如权利要求1所述的基于网络处理器的流量控制方法,其特征在于,所述计算与当前数据包到达时刻相关的参数的步骤中,还包括以下步骤判断t2值是否溢出;如果该值溢出,则需先进行调整。
3.如权利要求1所述的基于网络处理器的流量控制方法,其特征在于,所述计算与当前数据包到达时刻相关的参数的步骤,还包括以下流程计算(t2-t1)/(2×10^16),将t1和t2的单位换算为cycle;采用近似计算,用2^16+2^16/2来近似10^5;计算(t2-t1)/(2×10^16)×C/3。
全文摘要
一种基于网络处理器的流量控制方法,其特征在于,该方法包括以下步骤进行流量控制算法的参数设置;计算与当前数据包到达时刻相关的参数;根据对令牌桶中当前令牌数C2与当前数据包的长度L相比较的结果,如果L<=C2,发送该数据包及令牌;反之,丢弃该数据包及令牌;以及调整令牌桶中的令牌数和时刻这两个参数值。与现有技术相比,采用本发明所述方法,具有实现简单、控制准确、流量平滑、服务时间固定,在估计系统处理时间时有详细的试验数据作为参考、易于在同类产品中通用,并且对于INTEL的系列处理器或者其他有计数器的网络处理器具有兼容性。
文档编号H04L12/08GK1607767SQ20031010664
公开日2005年4月20日 申请日期2003年10月16日 优先权日2003年10月16日
发明者胡福军 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1