掌桥专利:专业的专利平台
掌桥专利
首页

一种基于Fast平台的网络测试系统

文献发布时间:2024-04-18 19:53:33


一种基于Fast平台的网络测试系统

技术领域

本发明涉及网络测试技术领域,特别是涉及一种基于Fast平台的网络测试系统。

背景技术

目前在很多研究工作中,需要使用网络测试仪对设备的性能、功能进行测试与验证。其中大部分测试与验证工作均基于网络测试仪完成。然而,商用网络测试仪是一种昂贵设备,很多研究机构难以做到大批量的购买与使用,但却需要的网络测试仪对受测设备进行性能与功能测试;另外,目前大多数商用的网络测试仪也难以携带从而对用户的使用造成一定的困难;第三,随着网络领域技术的更新与迭代速度加快,商用网络测试仪很难跟上网络技术(如新的网络协议)的发展速度,这就需要用户相关用户购买新的产品,造成成本高昂。

另一方面,随着工业控制网络与武器装备网络对于数据的确定性传输越来越高,在很多时候网络测试需要涵盖时间敏感网络(TSN)场景。比如,针对时间敏感网络性能测试的基本场景需要测试仪同时产生时间敏感流与其它优先级的背景流,并针对时间敏感流的相关性能指标进行测试。然而,当前主流商用网络测试仪还未有针对时间敏感网络环境的测试功能。

发明内容

本发明所要解决的技术问题是提供一种基于Fast平台的网络测试系统,能够以更低的成本完成网络的多维度性能指标的测试。

本发明解决其技术问题所采用的技术方案是:提供一种基于Fast平台的网络测试系统,包括软件部分和硬件部分,所述硬件部分为FAST流水线,包括依次连接的通用分组解析模块、通用关键字提取模块、通用匹配引擎模块、通用转发动作模块和通用输出引擎模块,所述硬件部分还包括数据包生成模块、统计收集模块和多路复用器模块,所述数据包生成模块位于所述通用转发动作模块和通用输出引擎模块之间,用于在软件部分的控制下产生报文并通知报文发送的相关参数;所述统计收集模块位于通用匹配引擎模块和通用转发动作模块之间,用于对记录测试结果的寄存器进行更新;所述多路复用器模块位于所述数据包生成模块和所述通用输出引擎模块之间,用于调配来自所述数据包生成模块中不同报文的转发;所述软件部分用于控制所述硬件部分以及配置参数以实现对网络中多维度性能指标的测试。

所述数据包生成模块包括:

报文解析单元,用于解析收到的模板报文,并根据解析结果将解析后的模板报文存储到对应的报文存储单元中;

第一报文存储单元、第二报文存储单元和第三报文存储单元,分别用于存储第一报文类型的模板报文、第二报文类型的模板报文和第三报文类型的模板报文;

第一报文发送单元,用于按照预设的速率从第一报文存储单元中读取报文,再按照预设规则修改读取到的报文中的预设字段,并将修改后的报文进行发送;

第二报文发送单元,用于按照预设的速率从第二报文存储单元中读取报文,再按照预设规则修改读取到的报文中的预设字段,并将修改后的报文进行发送;

第三报文发送单元,用于按照预设的速率从第三报文存储单元中读取报文,再按照预设规则修改读取到的报文中的预设字段,并将修改后的报文进行发送。

所述统计收集模块包括:

接收单元,用于接收测试报文;

寄存单元,用于保存测试所需获取的报文类型、感兴趣数据以及处理要求;

判断处理单元,判断测试报文的类型,当测试报文的类型为测试所需获取的报文类型时,对测试报文进行解析;

计数单元,用于对解析后的报文中的感兴趣数据进行统计;

标记单元,用于根据处理要求对统计后的报文进行标记。

所述多路复用器模块包括:

报文接收单元,用于接收所述数据包生成模块发出的报文;

优先级判断模块,用于判断收到的报文的优先级;

报文发送模块,用于根据报文的优先级确定报文的发送顺序,并根据发送顺序发送报文。

所述软件部分用于控制所述硬件部分以及配置参数以实现对网络的丢包率测试,具体为:

软件部分向硬件部分的发送参数进行配置,并对所有收集参数所指定的寄存器进行初始化;当快速分组到达流水线后,将由数据包生成模块判断报文的元数据中报文特征域是否置位,若置位,则将该报文进行缓存,并在相关寄存器的控制下对报文以指定的速率进行发送,并在每次发送前更新报文header-field中相关域;每发送一个报文对数据包生成模块配置的计数器进行更新;

软件部分在测试前通过配置寄存器的方式告知统计收集模块所需监测的接收报文协议类型及起始序号;统计收集模块接收配置后,会在收到指定报文后对配置的计数器进行更新,并将收到报文的元数据的DISCARD位置1,从而使报文在UDO模块中被丢弃。

所述软件部分用于控制所述硬件部分以及配置参数以实现对网络的吞吐率测试,具体为:

软件部分根据用户配置将丢包率测试相关参数通过FASTAPI配置到硬件部分;软件部分将发送速率初始值与单轮测试时间写入数据包生成模块;软件部分通过FASTAPI向数据包生成模块发送需缓存报文,并将测试启动标志位置1;当数据包生成模块中计时器检查到发包时间已达到单轮测试时间,则将测试启动标志位置0,软件部分读取相关计数器值,并更新当前轮次对应丢包率和当前迭代轮次;若还未达到设置轮次,则通过“二分法”更新下一轮次的发包速率与相关寄存器从而触发新一轮测试,直到迭代次数达到设定次数停止,此时软件部分将读取相关计数器值并同时将最后一轮丢包率情况与最终吞吐率返回给用户。

所述软件部分用于控制所述硬件部分以及配置参数以实现对网络的时延测试,具体为:

软件部分根据参数表中所列参数对硬件部分进行配置,同时向通用匹配引擎模块下发一条过滤规则,使得所有tag报文能够被统计收集模块接收并根据接收/发送时间戳计算得到精确的时延;

在设置完成后,软件部分通过FASTAPI向数据包生成模块发送初始报文,并将测试启动标志置1,而在测试开始后,由计时器控制每隔固定时间t发送一个tag报文并在UDO模块中对发送时间进行记录;当统计收集模块收到tag报文后,通过元数据中记录的接收时间戳与报文中的发送时间戳相减,并计入对应的寄存器;测试完成后,数据包生成模块将测试启动标志置0,此时软件部分读取相关寄存器值,获得测试结果。

所述软件部分用于控制所述硬件部分以及配置参数以实现无背景流的时间敏感网络测试,具体为:

软件部分根据参数表中所列参数对硬件部分进行配置,同时向通用匹配引擎模块下发一条过滤规则,使得所有tag报文能够被统计收集模块接收并根据接收/发送时间戳计算得到精确的时延;

在设置完成后,软件部分通过FASTAPI向数据包生成模块发送时间敏感报文模板,并在数据包生成模块中储存,并将测试启动标志置1,而在测试开始后,由计时器控制每隔固定时间t发送一个tag报文并在UDO模块中对发送时间进行记录;当统计收集模块收到tag报文后,通过元数据中记录的数据,获取丢包率、吞吐率和时延,并计入对应的寄存器;当测试完成后,数据包生成模块将测试启动标志置0,此时,软件部分读取相关寄存器值获得测试结果。

所述软件部分用于控制所述硬件部分以及配置参数以实现有背景流的时间敏感网络测试,具体为:

软件部分根据参数表中所列参数对硬件部分进行配置,同时向通用匹配引擎模块下发一条过滤规则,使得所有tag报文能够被统计收集模块接收并根据接收/发送时间戳计算得到精确的时延;

在设置完成后,软件部分通过FASTAPI向数据包生成模块发送初始报文模板和干扰报文模板,并在数据包生成模块中储存,并将测试启动标志置1,而在测试开始后,由计时器控制每隔固定时间t发送一个tag报文并在UDO模块中对发送时间进行记录,同时由计时器控制不定时发送干扰报文,并不做统计;当统计收集模块收到tag报文后,通过元数据中记录的数据,获取丢包率、吞吐率和时延,并计入对应的寄存器;当测试完成后,数据包生成模块将测试启动标志置0,此时,软件部分读取相关寄存器值获得测试结果。

有益效果

由于采用了上述的技术方案,本发明与现有技术相比,具有以下的优点和积极效果:本发明基于FAST平台分别在软硬件层面借助了FAST所提供的数据结构、访问硬件寄存器接口函数以及FPGAOS和UM流水线的完整或部分代码,用于提供网络测试功能,同时,借助FAST平台的可编程性,支持同时生成时间敏感流与其它背景流,并支持时间敏感流的确定性发送与带宽特性自定义的背景流发送,在此基础上,支持时间敏感流在同端口针对背景流的帧剥夺机制,从而在并发产生多种流的同时不对时间敏感流的产生与测试造成影响,以满足时间敏感网络场景的需求。

附图说明

图1是本发明实施方式的硬件示意图;

图2是本发明实施方式中数据包生成模块的原理图;

图3是本发明实施方式中数据包生成模块的结构示意图;

图4是本发明实施方式中报文解析单元的状态机示意图;

图5是本发明实施方式中第一报文发送单元的状态机示意图;

图6是本发明实施方式中第二报文发送单元的状态机示意图;

图7是本发明实施方式中第三报文发送单元的状态机示意图;

图8是本发明实施方式中统计收集模块的原理图;

图9是本发明实施方式中统计收集模块的结构示意图;

图10是本发明实施方式中统计收集模块的接口信号关系图;

图11是本发明实施方式中统计收集模块的状态机示意图;

图12是本发明实施方式中多路复用器模块的原理图;

图13是本发明实施方式中多路复用器模块的接口信号关系图;

图14是本发明实施方式中多路复用器模块的状态机示意图;

图15是本发明实施方式进行丢包率测试的流程图;

图16是本发明实施方式进行吞吐率测试的流程图;

图17是本发明实施方式进行时延测试的流程图;

图18是本发明实施方式进行时间敏感网络测试(无背景流)的流程图;

图19是本发明实施方式进行时间敏感网络测试(有背景流)的流程图。

具体实施方式

下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。

本发明的实施方式涉及一种基于Fast平台的网络测试系统,其中,包括软件部分和硬件部分。

本实施方式的硬件部分为Fast流水线,包括依次连接的通用分组解析模块(GPP)、通用关键字提取模块(GKE)、通用匹配引擎模块(GME)、通用转发动作模块(GAC)和通用输出引擎模块(GOE)。为了支持报文产生与数据收集的功能,分别在Fast流水线中增加了统计收集模块(SCM)与数据包生成模块(PGM)。

其中,PGM模块位于GAC模块与GOE模块间,用于在软件部分的控制下产生报文并通知报文发送的相关参数。为了充分利用软件部分的灵活性与硬件时间精确、性能更优的特性,初始报文的产生将由软件部分完成,并通过FASTAPI发至PGM模块。PGM模块存储并控制所收到的报文的发送,这其中涉及到IPD(Inter-Packet-Delay)与相关HF(Header Fields)的更新模式可以通过软件配置PGM模块的相关寄存器实现。

其原理如图2所示。首先软件部分将通过Fast提供的send方法对需要发送的报文(以Fast报文格式)通过PCIe发送至Fast UM,并在报文携带的metadata中指定目的mid为PGM模块;同时,软件部分也会通过Fast提供的reg_write方法的对报文发送的IPD和HF更新模式写入PGM模块的相关寄存器中。PGM模块根据软件部分设置的IPD与HF的更新模式,在IPD间隔下产生报文并对相关域进行修改后发送至GOE模块并输出至FPGA OS。另外,若发出的报文需要记录时间戳(为了测试延时等),则软件也通过写UDO模块的相关寄存器说明报文的协议类型,从而支持UDO在报文payload中记录发送的时间戳(但是目前FAST中还没有增加UDO模块)。

如图3所示,本实施方式的PGM模块包括:报文解析单元(PGM_WR),用于解析收到的模板报文,并根据解析结果将解析后的模板报文存储到对应的报文存储单元中;第一报文存储单元(PGM_RAM0)、第二报文存储单元(PGM_RAM1)和第三报文存储单元(PGM_RAM2),分别用于存储第一报文类型的模板报文、第二报文类型的模板报文和第三报文类型的模板报文;第一报文发送单元(PGM_RD0),用于按照预设的速率从第一报文存储单元中读取报文,再按照预设规则修改读取到的报文中的预设字段,并将修改后的报文进行发送;第二报文发送单元(PGM_RD1),用于按照预设的速率从第二报文存储单元中读取报文,再按照预设规则修改读取到的报文中的预设字段,并将修改后的报文进行发送;第三报文发送单元(PGM_RD2),用于按照预设的速率从第三报文存储单元中读取报文,再按照预设规则修改读取到的报文中的预设字段,并将修改后的报文进行发送。

其中,PGM_WR单元、PGM_RD0单元、PGM_RD1单元和PGM_RD2单元均配置有软件端可读写的计数器与寄存器,计数器与寄存器可用于对各个功能进行配置并且获取测试结果,每个模块可单独进行计数器与寄存器的编址,其中,虚拟地址空间定义如表1所示。

表1虚拟地址空间定义表

/>

PGM_WR单元的输入输出信号定义如表2所示,PGM_RD0单元的输入输出信号定义如表3所示,PGM_RD1单元的输入输出信号定义如表4所示,PGM_RD2单元的输入输出信号定义如表4所示。

表2PGM_WR单元的输入输出信号定义表

/>

表3PGM_RD0单元的输入输出信号定义表

/>

表4 PGM_RD1单元的输入输出信号定义表

表4 PGM_RD2单元的输入输出信号定义表

/>

PGM_WR单元用于解析收到的模板报文,并根据解析结果将模板报文存储在对应的报文存储单元中,其状态如图4所示。PGM_WR单元初始处在idle_s状态,如果收到非测试用模板报文时,则跳转至sent_s状态,并执行正常的转发操作,将报文以及元数据与pfv进行发送,并在执行完毕后返回idle_s状态。当收到来自测试用模板报文且in_wr_data[49:32]==pkt_priority0,将会跳转至store0_s状态,并将所收到的数据存储至PGM_RAM0单元中,当读取到报文尾时,protocol_num_cnt<=protocol_num_cnt+1,判断是否满足protocol_num_cnt>=protocol_num_reg,满足时将pgm_sent_start_flag置位并跳转至wait_s状态,否则跳转至idle_s状态;而当收到测试用模板报文并且in_wr_data[49:32]==pkt_priority1,将会跳转至store1_s状态,并将所收到的数据存储至PGM_RAM1中,当读取到报文尾时,protocol_num_cnt<=protocol_num_cnt+1,判断是否满足protocol_num_cnt>=protocol_num_reg,满足时将pgm_sent_start_flag置位并跳转至wait_s状态,否则跳转至idle_s状态;而当收到测试用模板报文并且in_wr_data[49:32]==pkt_priority2,将会跳转至store2_s状态,并将所收到的数据存储至PGM_RAM2中,当读取到报文尾时,protocol_num_cnt<=protocol_num_cnt+1,判断是否满足protocol_num_cnt>=protocol_num_reg,满足时将pgm_sent_start_flag置位并跳转至wait_s状态,否则跳转至idle_s状态。在wait_s状态下,PRM_WR单元将会进行计时,并在计时器到达test_time_cnt>=test_time_reg时将pgm_sent_finish_flag置位,并跳转至idle_s状态,从而通知PGM_RD0单元、PGM_RD1单元和PGM_RD2单元停止发送报文。

PGM_RD0单元为PGM模块中的核心子单元,通过按照一定速率从PGM_RAM0单元中读取报文,并按照一定的规则修改报文中特定字段,实现发包的功能,同时也负责将非测试报文正常通过,其状态如图5所示。其中预定的速率和预定的规则可以预先存储在PGM_RD0单元被配置的寄存器中。PGM_RD0单元首先处于idle_s状态,当收到来自PGM_WR单元的旁路信号,且md、pfv、data等信号有效时,跳转至sent_s状态,并直接转发报文,不做任何处理,当处理到报文尾时,跳转回idle_s状态。而当收到发包开始的消息时,将跳转至read0_s状态,并从PGM_RAM0单元中读取一个完整报文进行发送,当至报文尾时,如果sent_time_cnt=sent_time_reg时,跳转至fin_s状态。当PGM_RD0单元处于fin_s状态时,将会向软件端发送一条通告报文(toCPU),软件端收到后将会从PGM模块中读取结果数据,并将PGM模块中的soft_reset置位,从而触发所有寄存器清零,并回到idle_s状态。

相比于PGM_RD0单元,PGM_RD1单元和PGM_RD2单元不承担非测试报文以及phv的传递任务。如图6和图7所示,PGM_RD1单元和PGM_RD2单元状态变化就相当于没有sent状态的PGM_RD0单元,但是连续两报文间隔的拍数会在一定范围内波动。

本实施方式中的PGM_RAM0单元、PGM_RAM1单元和PGM_RAM2单元均可以采用标准IP核生成的144*128的RAM。该RAM能够存储一个最大为1500B的以太网报文,即来自CPU的最大的报文大小。当PGM_WR单元收到测试报文后,会将根据测试报文的类型存储在PGM_RAM0单元、PGM_RAM1单元或PGM_RAM2单元中,PGM_RD0单元,PGM_RD1单元和PGM_RD2单元则会并不断将存储的报文读出并发送。需要注意的是,报文从PGM_RAM0单元、PGM_RAM1单元或PGM_RAM2单元中读取的速率由PGM_RD0单元,PGM_RD1单元和PGM_RD2单元中配置的寄存器控制,同时寄存器还会控制如何对报文进行修改。

SCM模块位于GME模块与GAC模块之间,用于对记录测试结果的寄存器等进行更新。由于本实施方式的网络测试系统需要支持主动测量,所以将PGM模块置于GAC模块之后可以避免报文产生的功能与报文收集与解析功能在流水线中产生冲突;而将SCM模块置于GME模块与GAC模块之间,即可以借助metadata与PFV对相关域的解析结果,也能够利用GME模块对所需收取报文进行定制化的过滤。

SCM模块的工作原理如图8所示。其位于GME模块与GAC模块之间,利用metadata与UDP模块产生的PFV对收到报文的相关信息进行统计记录。具体而言,首先,软件部分将会调用reg_write方法为SCM模块指定需要测试的报文类型(特定的协议、流等)以及需要记录的指标(丢包数、收包数、时延等)。而当Fast流水线收到报文时,将首先在FPGAOS中将时间戳记录在报文头前的metadata中,并在进入UM流水线后首先由GAC模块解析并更新metadata与产生PFV,这些内容将可能用于SCM模块对所收到报文进行统计(如收到的总TCP报文数等),并将结果写入相关计数器中,同时会将metadata中discard位置1,从而使得报文在GAC中被丢弃,使得发包与收包可同时在pipeline中完成。在测试完成后,软件部分将通过reg_read方法获取SCM模块中相关计数器的值并用于计算测试结果。

如图9所示,本实施方式的SCM模块包括:接收单元,用于接收测试报文;寄存单元,用于保存测试所需获取的报文类型、感兴趣数据以及处理要求;判断处理单元,判断测试报文的类型,当测试报文的类型为测试所需获取的报文类型时,对测试报文进行解析;计数单元,用于对解析后的报文中的感兴趣数据进行统计;标记单元,用于根据处理要求对统计后的报文进行标记。其中,判断处理单元在对测试报文进行解析时,将时间戳记录在测试报文头前的元数据中,再采用元数据和PFV数据消息来获取对相关字段的解析结果。计数单元则可以根据相关统计信息对保存测试结果进行更新。另外,通过标记单元对统计后的报文进行标记,为后续处理模块对报文进行丢弃或上送操作进行指示。

SCM模块的信号接口与FAST流水线中原GME模块对GAC模块的输出信号与GAC模块来自GME模块的输入信号相匹配,从而减少对前后两个模块的更新与修改,同时也符合FASTUM流水线中模块间的接口定义规范。图11是SCM模块的接口信号关系图,其接口信号定义如表5所示。

表5SCM模块的接口信号定义表

本实施方式的SCM模块包含五种状态,分别为IDLE_S状态、SEND_S状态、CNT_S状态、WAIT_S状态和FETCH_S状态,其具体状态转换如图11所示

a)IDLE_S状态:

该状态为SCM模块的初始状态,此时SCM模块内数据信号和使能信号置为0。

当测试未开始时,SCM模块作为一个转发模块,将收到的数据正常转发到下一模块。此时状态跳转到SEND_S状态。

当测试开始时,接收到gac2scm_sent_start信号跳转至CNT_S状态。

b)SEND_S状态:

该状态下,SCM模块作为一个转发模块,将收到的数据正常转发到下一模块。

当转发结束时,跳转到IDLE_S状态。

c)CNT_S状态:

该状态下,SCM模块测试统计状态,此时SCM模块根据对收到的测试报文进行解析和统计来修改相应计数器。对于非测试报文则正常转发,转发时跳转到SEND_S状态。

当接收到gac2scm_sent_end信号时,跳转至WAIT_S状态。

d)WAIT_S状态:

该状态为SCM模块的等待接收统计终止状态。在此状态中,SCM模块在接收到gac2scm_sent_end信号后n个往返时延(RTT)后停止接收测试报文,即超时,跳转到FETCH_S状态。

如果在n个RTT内仍有测试报文,那么在WAIT_S状态中仍然对测试报文进行解析和统计,并跳转到SEND_S状态进行转发。

e)FETCH_S:

在该状态下,控制端可以获取SCM模块的计数单元的值,并在确定新的测试开始时,接收statistic_reset信号,将计数单元清零,并跳转至IDLE_S状态。

本实施方式的硬件部分还设置有多路复用器模块(MUX),其位于PGM模块与GOE模块之间,用于调配来自PGM模块中rd0、rd1以及rd2三种不同报文的转发。由于本实施方式的网络测试系统需要支持多种报文多种类型的转发,因此三种报文类型存在优先级处理。MUX模块负责将来自PGM模块的多种报文在不同情形下进行转发,防止出现报文冲突,优先保证时间敏感报文类型的发送。

MUX模块的工作原理如图12所示,其位于PGM模块与GOE模块之间,首先接收来自PGM模块发来的报文,利用PGM模块中报文的优先级进行发送先后顺序的确定,并在之后按照顺序将报文发送至GOE模块并输出至FPGA OS,如有来自PGM模块的控制报文,直接转发至GOE模块,保证之后报文正常的处理与发送。

本实施方式中的MUX模块包括:报文接收单元,用于接收所述数据包生成模块发出的报文;优先级判断模块,用于判断收到的报文的优先级;报文发送模块,用于根据报文的优先级确定报文的发送顺序,并根据发送顺序发送报文。其实质是是输出端口的汇总模块,负责调配三种报文的发送。如图13所示,MUX模块的信号接口与FAST流水线中原GAC模块对GOE模块的输出信号与GOE模块来自GAC模块的输入信号相匹配,从而减少对前后两个模块的更新与修改,同时也符合FAST UM流水线中模块间的接口定义规范。MUX模块的接口信号定义如表6所示。

表6MUX模块输入输出信号定义表

/>

MUX模块的状态机包含四种状态,分别为OPERATE0_S、OPERATE1_S、OPERATE2_S以及IDLE_S。其具体状态转换如图14所示。

IDLE_S:MUX模块的初始状态,当未接收到rd0、rd1、rd2中的报文或将接收到的报文处理完毕以后,状态跳回到IDLE_S;

OPERATE0_S:当MUX模块收到来自rd0的报文与写使能信号时跳转到OPERATE0_S状态进行rd0中报文的转发,如果同一时刻有来自rd1、rd2的报文则直接丢弃,读至报尾时跳转回IDLE_S状态;

OPERATE1_S:当MUX模块未接收到rd0报文而收到rd1中的写使能信号与rd1报文时,跳转到OPERATE1_S状态进rd1中报文的转发,读至报尾时跳转回IDLE_S状态;若MUX模块处在OPERATE1_S状态,此时接收到了rd0中的报文,则会丢弃当前rd1报文,进行rd0报文的发送,并转换到OPERATE0_S状态;

OPERATE2_S:当未接收到rd0的报文和rd1的报文而收到rd2中的报文与rd2中的写使能信号时,跳转到OPERATE2_S状态进行rd2中报文的转发,转发至报尾时跳转回IDLE_S状态;若MUX模块处在OPERATE2_S状态,此时接收到了rd0中的报文,则会丢弃当前rd2报文,进行rd0报文的发送,并转换到OPERATE0_S状态。

本实施方式的软件部分用于控制所述硬件部分以及配置参数以实现对网络中多维度性能指标的测试,其中包括但不限于:丢包率测试、吞吐率测试、时延测试、时间敏感网络测试(无背景流)和时间敏感网络测试(有背景流)。

为了支持对丢包率的测量,软件部分除具体报文内容外,还需要对协议类型、header-field更新模式、发送速率、IPD、发送模式等参数在SCM模块与PGM模块中进行配置。另外,还需要设置用于统计报文发送、接收的总比特数、报文总数、实时bps/pps等多个计数器。最后,还需要提供运行状态标识位用于修改SCM模块与PGM模块的状态机,以此来满足需求。

为了支持对吞吐率的测量,除上述寄存器、计数器外,还需要设置当前运行时间与单轮迭代时间等计数器用于支持使用“二分法”对吞吐率进行测量。需要说明的是,计时主要是通过时钟周期计数器与单时间片(在125M时钟频率的FPGA中,单时间片大小约为8ns,100M时钟频率的FPGA上,单时间片大小约为10ns)相乘实现。同时还需注意,在吞吐率测试中迭代轮次记录以及速率采用“二分法”进行调整是通过SENT sw函数实现的,从而简化硬件设计。

为了支持对时延的测量,需要PGM模块每隔固定报文数发送一个payload中带有时间戳的时延测量报文。该功能需要在支持丢包率测量的基础上,增加一个寄存器用于需间隔的报文数,一个计数器用于比对当前间隔报文数是否达到n。同时,需要在UDP模块中识别probe报文,并依据probe报文修改metadata第二拍中的某一位用于标记probe报文,SCM模块根据metadata识别出时延测量的probe报文,并修改action字段,使其被上传至UA模块,UA模块根据报文体中的时间戳对时延进行计算。

本实施方式在进行丢包率测试时,需要设置的发送参数与数据收集参数如表7所示。

表7丢包率测试支持的报文发送与数据收集参数表

丢包率测试过程的整体流程如图15所示。首先,软件部分向FPGA对上述发送参数进行配置,并对所有收集参数所指定的寄存器初始化。当fast_packet到达流水线后,将由PGM模块判断报文的metadata中from_CPU域是否置位,若置位,则将该报文缓存到PGM_RAM中,并在相关寄存器的控制下对报文以指定的速率进行发送,并在每次发送前更新报文header-field中相关域。每发送一个报文,均需对PGM模块的上述6项计数器进行更新。

同时,软件部分也会在测试前通过配置寄存器的方式告知SCM模块所需监测的接收报文协议类型及起始序号。SCM模块接收这些配置后,将会在收到指定报文后首先对上述12个计数器进行更新,并将收到报文的metadata的DISCARD位置1,从而使报文在UDO模块中被丢弃,防止对流水线的发包速率造成影响。

本实施方式在进行吞吐率测试时以丢包率测试功能为基础进行,其需要配置的参数如表8所示。

表8吞吐率测试支持的可配置与返回值参数表

吞吐率测试的整体流程如图16所示,首先,软件部分根据用户配置通过FASTAPI将丢包率测试相关参数配置到硬件;然后将发送速率初始值与单轮测试时间写入PGM模块;软件部分通过FASTAPI向PGM模块发送需缓存报文,并将测试启动标志位置1;当PGM模块中计时器检查到发包时间已达到单轮测试时间,则将测试启动标志位置0,软件部分读取相关计数器值,并在web界面中更新当前轮次对应丢包率,并更新当前迭代轮次;若还未达到设置轮次(N),则通过“二分法”更新下一轮次的发包速率与相关寄存器从而触发新一轮测试,直到迭代次数达到N停止,此时,软件部分将读取相关计数器值并同时将最后一轮丢包率情况与最终吞吐率通过web界面返回给用户。

本实施方式的时延测试可以在吞吐率测试之后进行,首先在受测设备达到满速率情况下,间隔固定时间发送带有发送时间戳的特殊报文,当测试系统再次收到从受测设备返回的带有时间戳报文时,在接收时再次记录时间戳,从而通过对比两个时间戳的差值获取该报文在受测设备中的转发时延(忽略报文在铜缆中的传输时间)。其需要配置的参数如表9所示。

表9时延测试支持配置的参数与返回参数表

时延测试的整体流程如图17所示,在对受测设备转发时延进行测量前,需要获取其真实吞吐率,之后可按照受测设备满速率线速发包,测量该情况下报文的转发时延。首先软件部分根据参数表中所列参数对FPGA进行配置,同时将会向GME模块下发一条过滤规则(本实施方式中将tag报文的源端口号置为8888),从而使得所有tag报文能够被SCM模块接收并根据接收/发送时间戳计算得到精确的时延。

上述设置完成后,软件部分通过FASTAPI向PGM模块发送初始报文,并将测试启动标志置1,而在测试开始后,由计时器控制每隔固定时间t发送一个tag报文(用于记录接收/发送时间戳)并在UDO模块中对发送时间进行记录。当SCM模块收到tag报文后,通过metadata中记录的接收时间戳与报文中的发送时间戳相减,并计入对应的寄存器。当测试完成后,PGM模块将测试启动标志置0。此时,软件部分读取相关寄存器值,并向web客户端返回测试结果。

本实施方式在时间敏感网络测试(无背景流)时,会按照一定速率,恒定周期发送tag报文进行,测试通过最终获取时间敏感报文的丢包率,吞吐率和时延等指标对时间敏感网络进行测量。在测试开始前,在PGM模块的RAM0中,存储tag报文。储存完毕后,测试开始。在测试开始后,通过PGM_RD0以恒定速率,恒定的周期发送报文。时间敏感报文经过TSN网络回到FAST的SCM模块中,对丢包率,吞吐率,时延等参数进行统计。对丢包率,吞吐率和时延的统计方式与上文一致。

表10时延测试支持配置的参数与返回参数表

时间敏感网络测试(无背景流)的整体流程如图18所示。首先软件部分根据参数表(见表10)中所列参数对FPGA进行配置,同时将会向GME模块下发一条过滤规则,从而使得所有tag报文能够被SCM模块接收并根据接收/发送时间戳计算得到精确的时延。

上述设置完成后,软件部分通过FASTAPI向PGM模块发送时间敏感报文(tag报文)模板,并在PGM模块中储存,并将测试启动标志置1,而在测试开始后,由计时器控制每隔固定时间t发送一个tag报文(用于记录接收/发送时间戳)并在UDO模块中对发送时间进行记录。当SCM模块收到tag报文后,通过metadata中记录的数据,获取丢包率,吞吐率和时延,并计入对应的寄存器。当测试完成后,PGM模块将测试启动标志置0。此时,软件部分读取相关寄存器值,并向web客户端返回测试结果。

本实施方式在时间敏感网络测试(有背景流)时,按照一定速率发送tag报文,并模拟其处于多种速率波动变化的干扰背景流情况,进行时间敏感网络测试。测试通过最终获取时间敏感报文的丢包率,吞吐率和时延等指标对时间敏感网络进行测量。在PGM模块的PGM_RAM0中,存储tag报文,在测试开始后,通过PGM_RD0以恒定速率,恒定的周期发送报文;于此同时PGR_RD1,PGM_RD2发送速率在一定区间波动,发送周期变化的干扰报文,模拟背景流。此外,在MUX模块中,使用帧抢占方式确保tag报文优先发送。丢包率,吞吐率和时延的统计方式与上文一致。

表11时延测试支持配置的参数与返回参数表

时间敏感网络测试(无背景流)的整体流程如图19所示。首先软件部分根据参数表(见表11)中所列参数对FPGA进行配置,同时将会向GME模块下发一条过滤规则,从而使得所有tag报文能够被SCM模块接收并根据接收/发送时间戳计算得到精确的时延。

上述设置完成后,软件部分通过FASTAPI向PGM模块发送初始报文模板和干扰报文模板,并在PGM模块中储存,并将测试启动标志置1,而在测试开始后,由计时器控制每隔固定时间t发送一个tag报文(用于记录接收/发送时间戳)并在UDO模块中对发送时间进行记录,同时由计时器控制不定时发送干扰报文,但不做统计。当SCM模块收到tag报文后,通过metadata中记录的数据,获取丢包率,吞吐率和时延,并计入对应的寄存器。当测试完成后,PGM模块将测试启动标志置0。此时,软件部分读取相关寄存器值,并向web客户端返回测试结果。

不难发现,本发明基于FAST平台分别在软硬件层面借助了FAST所提供的数据结构、访问硬件寄存器接口函数以及FPGA OS和UM流水线的完整或部分代码,用于提供网络测试功能,同时,借助FAST平台的可编程性,支持同时生成时间敏感流与其它背景流,并支持时间敏感流的确定性发送与带宽特性自定义的背景流发送,在此基础上,支持时间敏感流在同端口针对背景流的帧剥夺机制,从而在并发产生多种流的同时不对时间敏感流的产生与测试造成影响,以满足时间敏感网络场景的需求。

相关技术
  • 一种基于经典鬼成像的网络测试系统
  • 一种基于Faster R-CNN的变电站工人安全帽检测方法及其系统
  • 基于OpenCL平台实现对交易所level-2 FAST行情的硬件解码处理的系统
  • 一种X86平台批量设备集成网络测试系统
技术分类

06120116337245