基于逻辑实现数据包动态调速的方法

文档序号:7601389阅读:126来源:国知局
专利名称:基于逻辑实现数据包动态调速的方法
技术领域
本发明涉及数据通信技术领域,尤其涉及一种基于逻辑实现数据包动态调速的方法。
背景技术
在数据通信领域,数据通信产品的研发、生产以及运营网络组建各个环节都需要进行数据业务的流量测试,特别是基于IP(网际协议)的数据通信领域,数据业务的流量测试就更为重要。流量测试通常采用被测设备(如传输设备、二层/三层交换设备)与标准数据测试仪表进行对接测试的方法,如图1所示,其原理是测试仪表按照测试终端预先设置的流量速率产生测试数据,测试数据通过测试仪表与被测设备间对接的测试接口提供给被测设备完成特定功能的处理,处理完成的数据再由测试仪表环回进行分析。
流量测试一般应用于以下两种测试1、带宽极限测试依据被测设备的设计带宽提供最大数据流量进行测试,以检测被测设备提供的实际最大数据处理能力;2、网络模拟测试模拟运营网上实际情况,提供动态变化的数据流量,以检测被测设备在不同时段处理不同流量的业务数据情况下出现的误码率、时延、丢包率等服务质量特性。
因此对测试仪表的流量测试特性有以下要求1、要求测试仪表能够提供较宽的带宽适配能力,能够提供从0速率到100%线速的测试数据;
2、要求测试仪表能够提供很精确的带宽控制能力,使测试仪表发出的测试数据实际带宽能很精确地逼近设置值;3、要求测试仪表能够适应不同数据报文长度,在处理变长报文时,也能提供精确的带宽控制能力。
4、要求测试仪能提供动态的带宽调整能力,使测试仪器在正常发送/接收数据同时,控制终端能够实时调整测试仪表输出的数据带宽大小,并且在带宽调整的同时不能有任何误码产生。
无论采用何种方法测试何种项目一般都需要使用数据通信测试仪器,常见的数据通信测试仪器的整体构架如图2所示在发送方向,Tranffic Generator Module(流量生成模块)产生测试数据报文,数据报文经过成帧器以及物理层芯片的封装完成链路层、物理层封装处理,再通过电光、并串转换转变为串行的电信号或者光信号提供给DUT(被测设备)。
在接收方向,从被测设备返回的数据通过光电、串并转换,再由物理层、链路层芯片完成解封装处理,最后提供数据净荷报文给Analysis Module(分析模块)进行分析处理。
流量生成模块和分析模块一般由FPGA(现场可编程门阵列Field-Programmable Gate Arrays)或者ASIC(特定用途集成电路ApplicationSpecific Integrated Circuit)实现,通常还带有存储器控制单元,用于与外部存储芯片接口,完成数据报文的捕捉存储以及相关配置的存储。
整个测试系统由一个CPU(中央处理单元)小系统管理,CPU小系统提供外部通信接口与测试系统外的计算机控制台进行通信,所有上层的控制/配置信息以及测试数据都通过该接口进行传递。
现在常用的是称为基于整包的固定延时的调速方法,对发送数据端口的有效带宽进行调整,实际就是控制数据报文之间的时间间隔。流量生成模块产生数据报文后将报文传递到下层的成帧器和物理层芯片,流量生成模块控制产生数据报文之间的时间间隔,就可以实现对报文流量的有效控制。时间间隔控制长一些,数据有效带宽就降低一些;时间间隔缩短一些,数据有效带宽就提高一些。
基于整包的固定延时的调速方案就是配置一个固定的包间时间间隔T0、如图3,T0由测试终端软件或者单板软件根据配置发送的报文长度来计算,计算方法如下1、如果配置的报文长度为固定的,则根据需要的带宽配合报文长度计算需要的包间隔时间T0;例如测试仪器提供100M以太网接口,线路MAC(媒质接入控制)帧,长度为64字节,包含14字节的MAC头、46字节数据以及4字节FCS(帧校验序列)。这64字节全部由FPGA(流量生成模块)产生,流量生成模块与MAC层芯片采用的是POS-PHY Level3总线接口,接口宽度为32bit,总线工作速率为100MHz,要求线路侧将带宽降到10%,提供10M以太网的等效带宽。T0计算方法如下10M以太网传送1bit用时T10M=1/10*106s=100ns;100M以太网按照10M带宽传送64字节用时64*8*100ns=51200ns;另外以太网线路上还有12字节的最小包间隔以及8字节的前导码(由PHY芯片添加),总共需要51200+20*8*100=67200ns。转换为系统内部周期数=6720个周期(工作时钟100M,周期=10ns);而POS-PHY Level3总线传送64字节用时64/4=16周期;因此T0=6720-16=6704个周期;即流量生成模块在POS-PHY Level3总线上传送完一个64字节数据包后(用时16个时钟周期),还要等待6704个周期再发送下一个数据包,这样,物理层线路端实际有效带宽与10M以太网一致。
2、如果配置的报文长度为不定的,则根据需要的带宽配合平均报文长度计算需要的包间隔时间T0;报文长度不一致,如果长度是递增或递减的,则选用中间长度作为平均长度计算延时T0;如果报文长度时随机的,则按照随机算法选取一个统计平均值计算延时T0。
按照前面两种方法,测试终端控制台在配置测试仪表发送报文长度时,根据用户设定的带宽要求,计算固定的包间延时T0,T0以流量生成模块参考时钟的周期为单位,被配置到流量生成模块内部的寄存器中,流量生成模块在产生并传送一个报文后,固定延时T0个周期,再产生下一个报文。
基于整包的固定延时的调速方案虽然实现较为简单,对于固定包长的数据业务调速也比较精确,但存在一个比较突出的缺点不能适应包长的变化,导致在发送变长报文时,实际的线路发送带宽随包长而变化,例如100M以太网发送64字节到1518字节递增长度的报文,发送速率调节到50%,则按照基于整包的固定延时的调速方案计算的固定延时T0=12773周期(按照中间值791字节计算),即不管发送包长为64字节或者1518字节,其包间延时固定为12773周期,从实际线路速率看,发送短包(短于791字节的包)时,其线路有效带宽低于设定的50%;而发送长包(长于791字节的包)时,其线路利用率又高于50%。整个线路利用率随包长分布如图4所示因为这样的缺陷,对于递增包长,尤其对于随机包长测试数据,线路的实际有效带宽往往难以得到有效控制,导致在测试过程中引入了很多不确定因素,测试的效果难以令人满意。

发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种基于逻辑实现数据包动态调速的方法。该方法的核心是包间发送间隔时间是随每个已发送数据包的长度而动态变化的。
本发明的目的是通过以下技术方案实现的本发明提供了一种基于逻辑实现数据包动态调速的方法,包括步骤A、根据当前已经发送的数据包的长度确定下一个数据包的发送间隔时间;B、当经过所述的发送间隔时间后,发送下一个待发送的数据包。
所述的步骤A进一步包括A1、根据测试线路的端口带宽值设定附加时延基数和多个周期延时基数;A2、根据所述的附加时延基数和多个周期延时基数两个参数计算总延时参数。
所述的步骤A1进一步包括所述的附加时延基数=根据测试系统设定速率确定的每一位的等效传输时间×每个包发送需要附加的开销字节数×8;所述的多个周期延时基数=根据测试系统设定速率确定的每一位的等效传输时间×测试系统每周期处理的有效位数。
所述的步骤A1进一步包括A11、在测试线路开始工作之前,根据测试线路设定的端口带宽值计算出附加时延基数和多个周期延时基数的值;A12、将计算出来的附加时延基数和多个周期延时基数的值写入到内部寄存器。
所述的步骤A11进一步包括先设定一个整数位数,单板软件在计算附加时延基数和多个周期延时基数时,按照事先设定的整数位数扩大它们的有效位数。
所述的步骤A2进一步包括
A21、在测试线路开始工作之后,将待发送的数据存放在先进先出存储器中;A22、测试系统轮流从先进先出存储器中取数据,并将数据按照不同的端口输出;A23、测试系统在监控到包头信息后,开始读取附加时延基数和多个周期延时基数进行累加,计算总延时参数,总延时参数=附加时延基数+每个周期的多个周期延时基数;A24、测试系统在监控到包尾信息后,结束总延时参数的累加计算。
所述的步骤A24进一步包括测试系统将计算出来的总延时参数的值按照事先设定的整数位数缩小其位数。
所述的步骤B进一步包括B1、测试系统在监测到包尾信息后,禁止响应的测试线路输出端口发送数据包,并且开始累加实际延时时间;B2、当累加的实际延时时间等于步骤A24计算出的总延时参数,测试系统发出“使能发送”信号来开放响应的测试线路输出端口,使该端口再次开始发送数据包。
本发明还提供了一种基于逻辑实现数据包动态调速的装置,包括流量生成模块用于产生测试数据包数据;先进先出存储器组用于暂时存放流量生成模块产生的测试数据包数据;端口轮询数据转换模块用于从先进先出存储器中取数据,并将数据按照不同的端口发往物理层芯片;调速模块用于监控端口轮询数据转换模块向每个端口发送的数据包长度,并计算数据包发送间隔时间,根据所述发送间隔时间发送“发送使能”信号来控制数据包发送端口的开放与禁止。
所述的调速模块进一步包括发送间隔时间计算模块用于累加已发送的报文长度,计算应该等待的总延时参数,并将其用于时延比较;发送间隔时间控制模块用于累加实际延时,并且和总延时参数进行比较,通过发送“发送使能”信号来控制数据包发送端口的开放与禁止。
由上述本发明提供的技术方案可以看出,可以解决现有技术所存在的问题,具有以下优点1、能够实现带宽控制随包长自适应,能够适应包长固定、包长递增/递减、包长随机变化的数据包;2、能够通过有效的插入误差控制手段保证延时的精度;3、能够实现多个端口的独立调速,如果线路侧是多端口的,那么针对其中某一端口的调速行为不影响其他端口的工作状态;4、能够提供从0%~100%带宽的随意控制;5、能够支持动态调节,即端口在发送数据报文的同时,能动态调节端口速率,调节过程中不会产生碎片包或者丢包、错包。
本发明有效地保证了测试线路输出端口数据速率的准确性,提高了测试的效率。


图1为数据业务流量测试原理图;图2常见的数据通信测试仪器的整体构架图;图3为固定延时的调速方案流量控制示意图;图4为基于整包固定延时调速在包长变化时的带宽曲线分布图;图5为动态延时的调速方案流量控制示意图;
图6为基于动态延时调速在包长变化时的带宽曲线分布图;图7为本发明所述的包长自适应动态延时调速方案的数据处理流程框图;图8为本发明所述的包长自适应动态延时调速方案中调速模块的状态机状态迁跃示意图;具体实施方式
本发明的主要内容是提供一种基于逻辑实现数据包动态调速的方法。该方法的核心是带宽控制能够随包长自适应,能够适应包长固定、包长递增/递减、包长随机变化的数据包。
本发明所述的方法是通过包长自适应动态延时调速方案来实现的,该方案可以在流量生成模块以及下层的成帧/MAC处理模块中实施。
本发明所述方案的主要技术特征是通过控制数据包间发送时间间隔来实现对线路端口的有效带宽的控制,但与基于整包的固定延时方案不同的是数据包间发送时间间隔是随每个已发送数据包的长度而动态变化的,如图5所示。
每个不同长度的报文,其需要的延时也不同报文长的其延时就长,报文短的其延时就短。这样的处理方法,就能有效地消除固定延时方案中报文长度对端口有效带宽的影响。
仍然按照前面的案例,100M以太网降到50%带宽,发送64~1518字节长度的报文,当发送64字节长度报文时,其延时T0=1328周期;而发送1518字节报文,则延时T0=24228周期。按照这种方案调速,端口实际速率随包长变化的曲线如图6所示。
在图6中,我们可以看出,端口实际有效带宽基本上是线性的,由于延时T0为时钟的整周期数,因此在计算某些线路带宽得出T0为非整周期时,需要对T0做取整处理,所以在图6中,我们可以看出,整个曲线并不是完全线性的,实际端口速率随包长变化有一些小的波动,但这些误差非常小,可以忽略。例如包长为65字节时,按照50%线路带宽计算得出T0=1343.75个周期,取整为1344个周期,线路上实际带宽为49.9908%。
本发明提供了实现所述方法的装置和实现所述方法的方案的具体处理流程。
本发明所述方法的装置如图7所示,包括流量生成模块、8个FIFO(先进先出存储器)、端口轮询数据转换模块、8个调速模块、IX_BUS总线接口五部分。
每一部分的主要功能如下流量生成模块用于产生8个端口的测试数据包数据;8个FIFO(先进先出存储器)用于暂时存放流量生成模块产生的测试数据包数据;端口轮询数据转换模块用于轮流从FIFO(先进先出存储器)中取数据,并将数据按照不同的端口发往MAC芯片,每个数据包发送端口都通过一个公共的IX_BUS总线接口和MAC层相连;8个调速模块用于监控端口轮询数据转换模块往每个端口发送的数据包长度,并计算数据包发送间隔时间,并且通过发送“发送使能”信号来控制相应数据包发送端口的开放与禁止。
调速模块的实现是整个动态调速方案中最关键的部分,调速模块可以基于逻辑状态机在FPGA以及ASIC中实现,具体实现方案如图8所示。
调速模块由发送间隔时间计算模块和发送间隔时间控制模块两部分组成,分别通过两个状态机来实现。
发送间隔时间计算模块通过状态机2(图8右边部分)来实现,用于累加发送报文长度,计算应该等待的时延总值,并将其传递给状态机1用于时延比较。
发送间隔时间控制模块通过状态机1(图8左边部分)来实现,用于累加实际延时,并且给出发送使能信号;两个状态机工作在FPGA/ASIC系统同步时钟上,并依靠信号进行同步。
状态机1采用累加器和比较器实现延时累加和比较功能。
状态机2需要将报文长度(L)转换为总时延(Ttotle),计算方法如下Ttotle=L*8*Ts Ts为根据测试系统设定速率确定的每一位的等效传输时间。
由于多位乘法在FPGA内部实现既浪费资源又难以在较短时间内完成计算,加上FPGA内部采用并行处理方式,一个周期处理多位数据。因此,为了减轻FPGA运算量,可以采用软件配合计算方式,引入附加延时基数Text以及多个周期延时基数Tcycle参与计算,具体方法如下定义N=FPGA每周期处理的有效数据位数;Ts=根据测试系统设定速率确定的每一位的等效传输时间(以系统内部时钟周期为单位);M=每个包发送需要附加的开销字节数;则Text=Ts×M×8Tcycle=N×Ts例如100M以太网每个包开销包含12字节最小包间隔以及8字节前导码,则M=20;当100M以太网降速到10%时,Ts=100ns=10周期,因此Text=10×20×8=1600;假如FPGA内部处理按照32位处理方式,则每周期处理的有效位数(N)可能为8位、16位、24位或者32位。因此Tcycle存在四个值Tcycle_8=8×10=80;
Tcycle_16=16×10=160;Tcycle_24=24×10=240;Tcycle_32=32×10=320;Text以及Tcycle的计算全部由单板软件计算完成,并且将其写入到FPGA内部寄存器。状态机2监控数据包每个周期发送的有效位数,并读取Text以及Tcycle进行累加,最终包结束时,累加和就是该数据包发送总共需要延迟的周期数,即Ttotle=Text+Tcycle_32+Tcycle_32+.......
Ttotle累加结束后就可以传递给状态机1完成实际延时的累加比较。
由于在设置某些带宽时,计算得出的每位有效数据占用的等效周期数可能不为整数,如果将其直接取整进行累加,最终得出的Ttotle误差将难以控制。因此软件在计算Text和Tcycle时,需要引入误差处理,处理方式如下扩大Text以及Tcycle的有效位数,例如将其放大1024倍(210,有利于后面FPGA整数移位处理),然后将其写入FPGA寄存器,当状态机2用放大的Text以及Tcycle累加完成后,再将其缩小1024倍(移位处理,对于FPGA实现非常容易)。通过这样处理,能够有效减小计算误差带来的影响。放大的位数越多,就将软件计算误差引入的影响减到越小。但位数越多,给软件计算以及FPGA累加带来的计算量也就越大。所以放大位数的选择需要综合考虑确定。
IX_BUS总线接口用于往MAC层发送测试数据包数据。
本发明所述方法的具体处理流程包括如下步骤步骤1、根据设定的测试线路端口带宽值,通过测试仪器控制台设置Text和Tcyle的值,并且按照事先设定的比例将Text和Tcyle的值放大,然后写入到FPGA内部寄存器中;步骤2、流量生成模块产生8个端口的测试数据,产生的数据存放到FIFO_0到FIFO_7总共8个FIFO中;步骤3、端口轮询数据转换模块轮流从8个FIFO中取数据并将数据通过不同的IX_BUS总线端口发往MAC层芯片;步骤4、在端口轮询数据转换模块开始通过某一IX_BUS总线端口发送数据包的时候,和该端口相应的调速模块通过状态机2监控到包头SOP,于是开始计算该数据包的长度,即该数据包的总延时数;步骤5、在相应调速模块的状态机2没有监控到包尾EOP时,状态机2监控数据包每个周期发送的有效位数,并读取Text以及Tcycle进行累加,Ttotle=Text+Tcycle+Tcycle+.......;步骤6、当相应调速模块的状态机2监控到包尾EOP时,状态机2完成总延时计算,将累加的Ttotle值按照事先设定的比例缩小,然后作为总延时参数传递给状态机1,同时发送数据包的相应端口被设置为禁止发送;步骤7、由于两个状态机工作在FPGA/ASIC系统同步时钟上,在调速模块的状态机2监控到包尾EOP的同时,状态机1也开始累加延时计算,并通过比较器将累加的实际延时和状态机2传来的总延时参数Ttotle进行比较;步骤8、当状态机1的累加实际延时和总延时参数Ttotle相等时,状态机1发出使能信号,指示和调速模块相对应的端口可以发送数据包;步骤9、端口轮询数据转换模块从该端口相应的FIFO中取数据,并通过该端口发送数据包。
上面所述的是该方案中一个端口的具体工作流程,该方案的8个端口是完全独立的,因此能够实现8个端口的独立调速。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
权利要求
1.一种基于逻辑实现数据包动态调速的方法,其特征在于,包括步骤A、根据当前已经发送的数据包的长度确定下一个数据包的发送间隔时间;B、当经过所述的发送间隔时间后,发送下一个待发送的数据包。
2.根据权利要求1所述逻辑实现数据包动态调速的方法,其特征在于,所述的步骤A进一步包括A1、根据测试线路的端口带宽值设定附加时延基数和多个周期延时基数;A2、根据所述的附加时延基数和多个周期延时基数两个参数计算总延时参数。
3.根据权利要求2所述逻辑实现数据包动态调速的方法,其特征在于,所述的步骤A1进一步包括所述的附加时延基数=根据测试系统设定速率确定的每一位的等效传输时间×每个包发送需要附加的开销字节数×8;所述的多个周期延时基数=根据测试系统设定速率确定的每一位的等效传输时间×测试系统每周期处理的有效位数。
4.根据权利要求2所述逻辑实现数据包动态调速的方法,其特征在于,所述的步骤A1进一步包括A11、在测试线路开始工作之前,根据测试线路设定的端口带宽值计算出附加时延基数和多个周期延时基数的值;A12、将计算出来的附加时延基数和多个周期延时基数的值写入到内部寄存器。
5.根据权利要求4所述逻辑实现数据包动态调速的方法,其特征在于,所述的步骤A11进一步包括先设定一个整数位数,单板软件在计算附加时延基数和多个周期延时基数时,按照事先设定的整数位数扩大它们的有效位数。
6.根据权利要求2所述逻辑实现数据包动态调速的方法,其特征在于,所述的步骤A2进一步包括A21、在测试线路开始工作之后,将待发送的数据存放在先进先出存储器中;A22、测试系统轮流从先进先出存储器中取数据,并将数据按照不同的端口输出;A23、测试系统在监控到包头信息后,开始读取附加时延基数和多个周期延时基数进行累加,计算总延时参数,所述总延时参数=附加时延基数+每个周期的多个周期延时基数;A24、测试系统在监控到包尾信息后,结束总延时参数的累加计算。
7.根据权利要求6所述逻辑实现数据包动态调速的方法,其特征在于,所述的步骤A24进一步包括测试系统将计算出来的总延时参数的值按照事先设定的整数位数缩小其位数。
8.根据权利要求1所述逻辑实现数据包动态调速的方法,其特征在于,所述的步骤B进一步包括B1、测试系统在监测到包尾信息后,禁止响应的测试线路输出端口发送数据包,并且开始累加实际延时时间;B2、当累加的实际延时时间等于步骤A24计算出的总延时参数,测试系统发出“使能发送”信号来开放响应的测试线路输出端口,使该端口再次开始发送数据包。
9.一种基于逻辑实现数据包动态调速的装置,其特征在于,包括流量生成模块用于产生测试数据包数据;先进先出存储器组用于暂时存放流量生成模块产生的测试数据包数据;端口轮询数据转换模块用于从先进先出存储器中取数据,并将数据按照不同的端口发往物理层芯片;调速模块用于监控端口轮询数据转换模块向每个端口发送的数据包长度,并计算数据包发送间隔时间,根据所述发送间隔时间发送“发送使能”信号控制数据包发送端口的开放与禁止。
10.根据权利要求9所述一种基于逻辑实现数据包动态调速的装置,其特征在于,所述的调速模块进一步包括发送间隔时间计算模块用于累加已发送的报文长度,计算应该等待的总延时参数,并将其用于时延比较;发送间隔时间控制模块用于累加实际延时,并且和总延时参数进行比较,通过发送“发送使能”信号来控制数据包发送端口的开放与禁止。
全文摘要
本发明涉及一种基于逻辑实现数据包动态调速的方法。该方法的核心是能够实现带宽控制随包长自适应,能够适应包长固定、包长递增/递减、包长随机变化的数据包;能够提供从0%~100%带宽的随意控制;能够实现多个端口的独立调速。本发明提供了一种包长自适应动态延时调速方案,该方案的主要技术特征是包间间隔是随每个已发送数据包的长度而动态变化的,因此能有效消除现有技术的固定延时方案中报文长度对端口有效带宽的影响,保证测试线路实际带宽具有很好的线性平滑度。
文档编号H04L12/56GK1798099SQ20041010340
公开日2006年7月5日 申请日期2004年12月29日 优先权日2004年12月29日
发明者杨洋 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1