一种调度数据的方法及装置的制作方法

文档序号:7599318阅读:155来源:国知局
专利名称:一种调度数据的方法及装置的制作方法
技术领域
本发明涉及通信领域中的数据处理技术,尤其涉及一种调度数据的方法及装置。
背景技术
通信测试仪,特别是数据通信测试仪通常都包括数据产生模块、数据分析模块、接口模块、主控模块(带单板软件)和终端操作程序,各模块的关系如图1所示。
终端操作程序是测试仪的控制台,它通常是一个包括人机界面的终端程序。
主控模块,是一个微处理器(CPU)控制系统,实现对测试仪各个硬件模块的配置、控制和信息处理,同时也是硬件和终端程序的通信桥梁。
数据产生模块,主要实现测试数据的产生,是测试仪的数据源,通常由高速的特定用途集成电路(Application Sepcific Imegrated Circuit,AISC)或大规模逻辑器件实现。
数据分析模块,是测试仪对接收的数据进行分析、统计、捕捉等功能的模块,通常也是由高速的AISC或大规模逻辑器件实现。
物理接口模块,是测试仪的对外测试接口,它通常包括物理层的处理,多数测试仪具有多个端口。
一个测试仪的数据产生过程通常为终端程序给出数据产生的条件,通过主控模块将条件下发到数据产生模块,由数据产生模块根据终端的约定条件产生数据,经物理接口发送出去。当然有时主控模块也会配合数据产生模块产生数据。
现有技术中,测试仪的数据产生主要有以下几种方式1、单端口测试仪的简单数据产生方法如图2所示,该种方案构成简单,通常不需要数据的调度。其实现方案是在数据产生侧,提供一个RAM用于存放发送的测试数据,FPGA依次从RAM中读取数据并发送,读完RAM后再从RAM的起始地址开发读数据,这样循环下去。读出的数据经过多个数据产生功能子模块进行处理后发送到物理端口。
2、单端口测试仪的多测试流调度的数据产生方法如图3所示,该方法与第1种方法的不同点是,把RAM划分为几个流量发生器(Generator),每个Generator包括多种数据。为此数据产生的现场可编程门阵列(FPGA)中增加对Generator的调度。调度实现对不同Generator发送的顺序、数量等等进行协调、处理。
在本申请中,流量发生器(Generator)是指一个能产生具有某种相同功能特征的测试数据流的单位,通常是一组数据包。
3、基于单端口模块构建的多端口测试仪的数据产生方法该方案是针对上述两种方案的简单堆砌,以使一台测试仪可以产生出多个物理端口。
上述方法具有以下缺点1、目前的通信设备通常都有很高的端口密度,因此,一个端口的测试仪和端口密度低的测试仪通常不能满足现在通信设备的测试需求。
2、独立的端口拼成多个端口的情况,通常需要的器件多,所以测试仪的体积通常较大,测试仪的成本较高。
3、产生的数据类型单一,通常不能构建功能更灵活、更强大的测试仪。

发明内容
本发明提供一种调度数据的方法及装置,以解决现有宽带测试设备中存在端口数量少和数据构建类型单一的问题。
为解决上述问题,本发明提供以下技术方案一种调度数据的方法,用于对多个端口的数据进行调度,所述端口包含一个或多个流量发生器,各流量发生器包含有一个或多个数据包;所述方法包括
确定步骤,根据每个端口各流量发生器的数据流量占该端口总流量的比值确定这些比值的最大公约数和各流量发生器的数据流量的权值;设置步骤,分别为端口的各流量发生器设置用于累计该流量发生器被轮询的次数的第一计数器,各第一计数器的最大值为对应流量发生器的数据流量的权值;调度步骤,用于轮询各端口,在每次轮询一个端口时仅从该端口的一个流量发生器中读取最大公约数数量的数据包存入发送缓存,和更新对应的第一计数器,并且在同一端口,只有前一次被轮询的流量发生器的轮询次数已达到对应的第一计数器的最大值时,当前的轮询才从该端口的下一个流量发生器读取数据包。
一种调度数据的装置,包括主控模块、数据产生模块和物理接口模块;该数据产生模块具有用于存储端口的数据的存储器;还包括调度模块,该调度模块包括复数个调度单元和对应数量的缓存单元,所述存储器存储有复数个端口的数据;各个调度单元分别根据各端口及端口的数据的状态,轮流从所述存储器中读取一个端口的数据并存储到对应的一个缓存单元。
本发明具有以下有益效果1、采用本发明可以实现具有多个端口的测试仪的端口调度。
2、在端口下可以包含多个流量发生器(Generator),并对这些Generator进行调度。
3、每个Generator还可以包含大量的数据包(Flow),实现这些数据包的连续发送。这种灵活的、大量的组合为开发复杂的测试仪提供了可行的方案。
4、本发明的调度方式可以通过FPGA实现,因此对测试仪的可扩展性和灵活性提供了很好的支持,同时,也降低了仪器的构成成本。


图1为现有技术中通信测试仪的基本结构框图;图2为现有技术中单端口测试仪产生数据的示意图;
图3为现有技术中单端口测试仪的多测试流调度的数据产生示意图;图4为本发明测试仪的调度模块的结构示意图;图5为本发明的流程图。
具体实施例方式
在本发明中,流量发生器(Generator)是指一个能产生具有某种相同功能特征的测试数据流的单位,通常产生一组数据包。数据包(Flow)是指具有某一种固定特性的单一数据包,是一个特定的数据包。
为了在测试仪中支持多个端口和使每个端口可支持多种数据流调度的数据产生方法,本发明的调度数据的装置在现有的测试仪的数据产生模块中增加调度模块,其结构如图4所示,包括主控模块、数据产生模块和物理接口模块;该数据产生模块具有用于存储端口的数据的存储器;还包括调度模块,该调度模块包括复数个调度单元和对应数量的缓存单元,所述存储器存储有复数个端口的数据;各个调度单元分别根据各端口及端口的数据的状态,轮流从所述存储器中读取一个端口的数据并存储到对应的一个缓存单元。。
图4中数据产生侧的存储器RAM用于存储多个端口的数据,每个端口包含有一个或多个Generator,每个流量发生器包含有多个Flow(在图4中,端口简称为P,Generator简称为G,Flow简称为F)。
调度模块包括多个调度单元和对应数量的缓存单元,在本实施例中缓存单元为先进先出(FIFO)队列,也是发送数据的缓存单元。调度单元与缓存单元之间具有接口,调度单元根据端口、Genertor和Flow的状态进行调度,即控制对RAM的数据读取并将数据存入对应的FIFO队列。
为了在调度过程中对端口的发送速率进行动态调整,调度模块中还包括多个速率调整单元,每个速率调整单元对应一个FIFO队列,主要用于提高从FIFO队列读出数据的速度(当然根据需要也可以是降低速度)。
为了方便数据调度,首先根据每个端口中各Genertor的数据流量占该端口总流量的比值确定这些比值的最大公约数和各流量发生器的数据流量的权值;其次,分别为端口中的各Genertor设置用于累计该Genertor被轮询的次数的第一计数器,各第一计数器的最大值为对应Genertor的数据流量的权值;然后对各端口进行轮询。在每次轮询一个端口时仅从该端口的一个流量发生器中读取最大公约数数量的数据包存入发送缓存,和更新对应的第一计数器,并且在同一端口中,只有前一次被轮询的流量发生器的轮询次数已达到对应的第一计数器的最大值时,当前的轮询才从下一个流量发生器读取数据包。
为了方便地确定每次从流量发生器读取数据包的开始位置,分别为端口中的各流量发生器设置用于累计从该流量发生器读出数据包数量的第二计数器,各第二计数器的最大值为对应流量发生器数据包的数量值。在从流量发生器读取Flow前,首先判断从该流量发生器读取数据包的数量是否已达到第二计数器的最大值,如果是则将第二计数器置初始值并从流量发生器的开始位置读取数据包,否则根据第二计数器的计数值确定读取数据包的开始位置。
以下通过实例进行说明假设一个测试仪模块具有n个端口,每个端口有m个Generator,每个Generator包含k个Flow。
对测试仪的调度要求是(1)进行n个端口的数据调度,n个端口完全独立;(2)每个端口要按照数据的Generator的比例关系进行Generator调度;(3)每个端口还可调发送速率,调整范围是0到端口最大带宽;(4)调度时,要保证各个Flow能循环发送。
在调度过程中,一个端口获取完指针后,马上开始准备下一个指针,这样可以提供调度效率。如果某个端口没有起用则不执行该端口的调度;G计数器(第一计数器)是m个Generator的最小公倍数递减计数;F计数器(第二计数器)是配置到存储器的Flow个数k。
对于端口调度,采用循环调度策略,一个端口发送完一个包就转到另一个端口读数据发送,从RAM读出数据后,先放到异步FIFO(可缓存i个包)里,FIFO的另一侧读出频率就决定了其端口的发送速率,FIFO输出的数据送到测试仪的下一级处理。当调度过程中某个端口不可以发送或FIFO满时,则直接跳过该端口到下一个端口进行调度。
每个端口的Generator和Flow调度首先确定端口m个Generator的不同流量比例的最大公约数,然后循环发送各个Generator的最大公约数数目的Flow数据,对Generator所含的Flow发送也要循环进行,因此针对每个Generator要保留当前的Flow指针(当前的Flow数+偏移地址),当发送完最后的Flow后,指针要指向其Generator的起始地址。
例如假设一个测试仪的一个端口支持8个Generator,每个Generator包含不同个数的Flow,并设这8个Generator的流量分别设置为总端口带宽的30%,5%,15%,20%,5%,5%,10%,10%,这些比例的分子的最大公约数为5,权值比为6∶1∶3∶4∶1∶1∶2∶2,则各G计数器对应的初始值(即最大计数值)分别为6、1、3、4、1、1、2、2,各F计数器对应的初始值为对应G所包含的Flow数量。调度过程中在每次轮询该端口时,从某一个G中读出5个Flow,G计数器递减1,F计数器递减5。G计数器为0表示完成该G的调度。如果某个G要发送的Flow数大于它的最大公约数(举例,如果G的最大公约数是5,而该G实际要发送的FLOW是100时,因此一次循环它只能发送5个Flow,为使下次轮寻到该G时能连续发送,要保留第6个Flow的地址),那么就要保留进行一次G循环所发送的Flow地址的指针,以便下次轮寻到该G时继续完成后续的Flow发送,指针是根据F计数器转换的存放Flow的实际的RAM地址。在实现时,FPGA内部可以增加专门的调度表,存放使能发送的G计数、F的计数和指针。
参阅图5所示,调度的具体流程如下步骤1确定端口中G的最大公约数和各G的数据流量的权值。
步骤2为端口中的各G设置G计数器和F计数器,并赋初始值。
步骤3开始轮询当前端口。
步骤4判断当前端口中所有G计数器是否为0(即已达到对应的第一计数器的最大值),如果是则进行步骤5,否则进行步骤6。
步骤5将该端口的所有G数器置初始值,并选择第一个G作为当前G,转步骤7。
步骤6判断当前端口中上次被轮询的G的G计数器是否为0,如果是,则进行步骤7,否则进行步骤8。
步骤7选择当前端口中的下一个G作为当前G。
步骤8判断当前G的F计数器是否为0,如果是,则跳到该G的起始地址,并且F计数器置初始值(步骤8-1);否则从指针寄存器获取存放下一个要读的G的F地址(步骤8-2)。
步骤9从当前G中读取最大公约数数量的数据包存入FIFO队列,G计数器递减1、F计数器递最大公数值。
步骤10选择下一端口作为当前端口,并进行步骤1。
为了控制FIFO的数据读出速度实现端口发送速率调整,在读FIFO数据时增加一个时延计数器,该计数器以一个时钟周期为单位,调速时,只需等待一定的时钟周期(计数器由初始值递减到0)再从FIFO读数据即可。
在本发明中,调度模块可采用现场可编程门阵列实现。
本发明能够支持多个端口,每个端口可支持多种数据流调度的数据产生,因而可以解决当前宽带测试仪的端口数量少,数据构建类型单一等缺点。同时本发明充分利用先进的大规模FPGA芯片和先进的电子技术,大大降低了仪器成本。
权利要求
1.一种调度数据的方法,用于对多个端口的数据进行调度,所述端口包含一个或多个流量发生器,各流量发生器包含有一个或多个数据包;所述方法包括确定步骤,根据每个端口各流量发生器的数据流量占该端口总流量的比值确定这些比值的最大公约数和各流量发生器的数据流量的权值;设置步骤,分别为端口的各流量发生器设置用于累计该流量发生器被轮询的次数的第一计数器,各第一计数器的最大值为对应流量发生器的数据流量的权值;调度步骤,用于轮询各端口,即在每次轮询一个端口时仅从该端口的一个流量发生器中读取最大公约数数量的数据包存入发送缓存,和更新对应的第一计数器,并且在同一端口,在前一次被轮询的流量发生器的轮询次数已达到对应的第一计数器的最大值时,当前的轮询从该端口的下一个流量发生器读取数据包。
2.如权利要求1所述的方法,其特征在于,所述调度步骤具体包括如下步骤A、开始轮询当前端口;B、判断当前端口中所有流量发生器的轮询次数是否已达到对应的第一计数器的最大值,如果是则进行步骤C,否则进行步骤D;C、将该端口中的所有第一计数器置初始值,并选择第一个流量发生器作为当前流量发生器,转步骤E;D、判断当前端口中上次被轮询的流量发生器的轮询次数是否达到该流量发生器的第一计数器的最大值,如果是,则进行步骤E,否则进行步骤F;E、选择当前端口中的下一个流量发生器作为当前流量发生器;F、从当前流量发生器中读取最大公约数数量的数据包存入发送缓存,并由第一计数器累计当前流量发生器的轮询次数;G、选择下一端口作为当前端口,并进行步骤A。
3.如权利要求1或2所述的方法,其特征在于,所述设置步骤中,还分别为端口中的各流量发生器设置用于累计从该流量发生器读出数据包数量的第二计数器,各第二计数器的最大值为对应流量发生器包含数据包的数量值;所述调度步骤中,通过该第二计数器的计数值确定每次从流量发生器读取数据包的开始位置。
4.如权利要求3所述的方法,其特征在于,所述调度步骤中,在从流量发生器读取数据包前,首先判断从该流量发生器读取数据包的数量是否已达到第二计数器的最大值,如果是则将第二计数器置初始值并从开始位置读取数据包,否则根据第二计数器的计数值确定读取数据包的开始位置。
5.如权利要求4所述的方法,其特征在于,所述第一计数器和第二计数器为递减计数器;所述第一计数器的初始值为对应流量发生器的数据流量的权值,所述第二计数器的初始值为对应流量发生器包含数据包数量的值。
6.如权利要求3所述的方法,其特征在于,所述调度步骤中,如果存储当前端口数据的发送缓存已满,则提高从该发送缓存读出数据的速度,以调整发送速率,和/或开始轮询下一端口。
7.一种调度数据的装置,包括主控模块、数据产生模块和物理接口模块;该数据产生模块具有用于存储端口的数据的存储器;其特征在于还包括调度模块,该调度模块包括复数个调度单元和对应数量的缓存单元,所述存储器存储有复数个端口的数据;各个调度单元分别根据各端口及端口的数据的状态,轮流从所述存储器中读取一个端口的数据并存储到对应的一个缓存单元。
8.如权利要求7所述的调度数据的装置,其特征在于,所述控制单元还包括复数个控制缓存单元读出速率的速率调整单元,其中每个速率调整单元控制一个缓存单元。
9.如权利要求7或8所述的调度数据的装置,其特征在于,所述调度模块采用现场可编程门阵列实现。
全文摘要
本发明公开了一种调度数据的方法,用于对多个端口的数据进行调度,该方法根据每个端口中各流量发生器的数据流量占该端口总流量的比值确定这些比值的最大公约数和各流量发生器的数据流量的权值;分别为端口中的各流量发生器设置用于累计该流量发生器被轮询的次数的第一计数器,各第一计数器的最大值为对应流量发生器的数据流量的权值;轮询各端口,在每次轮询一个端口时仅从该端口的一个流量发生器中读取最大公约数数量的数据包存入发送缓存,和更新对应的第一计数器。本发明还同时公开了一种相应的调度数据的装置。
文档编号H04L12/56GK1767456SQ20041009023
公开日2006年5月3日 申请日期2004年10月27日 优先权日2004年10月27日
发明者李占有 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1