发送数据包和吞吐量测试方法及装置的制造方法_2

文档序号:9455845阅读:来源:国知局
间时,计算预设的初始时刻与m-1个 所述实际计时时间的和作为每秒内所述网卡第m次发送数据包的时刻,所述单位时间为1 个所述CPU的时钟周期;
[0055] 第六计算单元,用于当所述累计误差不小于所述单位时间时,计算预设的初始时 刻与所述m-Ι个实际计时时间的和再加1个单位时间作为每秒内所述网卡第m次发送数据 包的时刻;
[0056] 其中,0〈m彡每秒内所述网卡发送数据包的最大次数,且m为整数。
[0057] 可选的,所述第一计算单元包括:
[0058] 第一计算子单元,用于计算所述CPU的时钟主频与所述初始线速的商获得每秒内 发送每个数据包所需的第一时间;
[0059] 第二计算子单元,用于计算所述第一时间与所述突发包个数的积获得每秒内每个 发送队列每次发送数据包所需的第二时间;
[0060] 第三计算子单元,用于计算所述第二时间与所述网卡中发送队列的个数的积获得 每秒内所述网卡每次发送数据包所需的理论计时时间。
[0061] 可选的,所述计算模块包括:
[0062] 第七计算单元,用于计算所述初始线速与所述网卡中发送队列的个数的商获得所 述网卡中每个发送队列发送数据包的速率;
[0063] 第八计算单元,用于计算所述每个发送队列发送数据包的速率与所述突发包个数 的商再加1获得每秒内所述网卡中每个发送队列发送数据包的次数;
[0064] 第九计算单元,用于计算所述网卡中每个发送队列发送数据包的速率与所述突发 包个数的余数作为每秒内所述网卡中每个发送队列最后一次发送数据包的第一个数;
[0065] 第十计算单元,用于计算所述初始线速与所述网卡中发送队列的个数的余数作为 第二个数;
[0066] 分配单元,用于给所述网卡中排列在前k位的每个发送队列分别各分配一个数据 包,所述k的值与所述第二个数的值相等,则所述网卡中排列在前k位的发送队列最后一次 发送数据包的个数为第一个数加1,所述网卡中排列在k位以后的发送队列最后一次发送 数据包的个数为第一个数;
[0067] 其中,0〈k〈所述网卡中发送队列的个数,且k为整数。
[0068] 一种吞吐量测试的测试设备,所述测试设备包括:
[0069] 本发明所述的发送数据包的装置,用于向待测设备发送数据包;
[0070] 接收装置,用于接收所述待测设备转发的数据包;
[0071] 处理装置,用于统计向所述待测设备发送数据包的发送速率,以及接收所述待测 设备转发的数据包的接收速率;根据所述发送速率和接收速率采用二分差分法测得所述待 测设备的吞吐量。
[0072] 通过上述技术方案可知,本发明有如下有益效果:
[0073] 本发明公开了一种发送数据包和吞吐量测试的方法及装置,所述方法包括获取预 先配置的网卡中发送队列的个数,突发包个数,预设的初始线速,CPU的时钟主频,所述突发 包个数为每个发送队列除最后一次外每次发送数据包的个数,所述初始线速为所述网卡每 秒内发送数据包的总数;根据所述网卡中发送队列的个数,突发包个数以及所述初始线速 获得每秒内所述网卡的每个发送队列发送数据包的次数以及该发送队列最后一次发送数 据包的个数;根据所述CPU的时钟主频,所述网卡中发送队列的个数,所述突发包个数以及 所述初始线速确定所述网卡每秒内每次发送数据包的时刻;根据每秒内所述网卡的每个发 送队列发送数据包的次数确定该秒内所述网卡的每个发送队列不是最后一次发送数据包 时,在每秒内所述网卡每次发送数据包的时刻,调用所述网卡的每个发送队列以所述突发 包个数发送数据包;根据每秒内所述网卡的每个发送队列发送数据包的次数确定该秒内所 述网卡的每个发送队列是最后一次发送数据包时,在每秒内所述网卡最后一次发送数据包 的时刻,调用所述网卡的每个发送队列以该发送队列的最后一次发送数据包的个数发送数 据包。上述方法将1秒均分成所述CPU的主频个单位时间,1个单位时间为所述CPU的时 钟周期,确定所述网卡每秒内发送数据包的时刻以及每个发送队列发送数据包的次数和个 数,基于软件实现在1秒内均匀发送万兆的数据流量。从而可以基于软件实现的吞吐量测 试所需的测试设备,与采用FPGA等硬件设备相比,成本低,易修改和功能扩展。
【附图说明】
[0074] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。
[0075] 图1为本发明提供的一种发送数据包的方法流程图;
[0076] 图2为本发明提供的以实际计时时间为时间间隔发送数据包示意图;
[0077] 图3为本发明提供的一种吞吐量测试的方法流程图;
[0078] 图4为本发明提供的一种发送数据包的装置结构示意图;
[0079] 图5为本发明提供的一种吞吐量测试的测试设备结构示意图。
【具体实施方式】
[0080] 为了给出基于软件实现在1秒内均匀发送万兆数据包的方案,本发明实施例提供 了一种发送数据包的方法及装置,基于软件实现的吞吐量测试方法,降低了测试成本和设 备维护成本,方便测试功能扩展。
[0081] 首先,对本发明下述实施例用到的基本概念进行具体说明。
[0082] RFC2544标准规定吞吐量测试的数据包的长度有64字节,128字节,256字节,512 字节,1024字节,1280字节以及1518字节。由于数据包中包括8字节的前导码以及每个数 据包之间存在12字节的最小间隔,每个数据包实际传输负荷需要额外增加20字节。例如: 64字节的数据包实际有效传输负荷为84字节,每个字节等于8bit,一共包含672bit。
[0083] 表1为不同的数据包的长度,在千兆线速和万兆线速下,每秒分别需要发送的数 据包的个数。
[0084] 表1、千兆和万兆每秒最多发送数据包的个数
[0086] 其中,每秒最多发送数据包的个数按照公式(1)计算:
[0088] 本发明所提供的一种发送数据包的方法,需要基于软件实现在1秒内发送数据包 的均勾性和及时性。具体实现时,可以基于数据平台开发工具(Data Plan Develop Kit, DPDK),采用突发模式发送数据包。所述突发模式发送数据包,即将多个数据包同时发送出 去,根据实际需求中,接收数据包的设备的网卡的接收缓存能力,设置每次以突发模式发送 数据包的个数。例如:进行待测设备的吞吐量测试,可以根据待测设备的万兆网卡的接收缓 存能力,设置每次以突发模式发送32个数据包。
[0089] 下面结合附图对本发明具体实施例进行详细说明。
[0090] 图1为本发明提供的一种发送数据包的方法流程图,所述方法包括:
[0091] 101 :获取预先配置的网卡中发送队列的个数,突发包个数,预设的初始线速,CPU 的时钟主频,所述突发包个数为每个发送队列除最后一次外每次发送数据包的个数,所述 初始线速为所述网卡每秒内发送数据包的总数。
[0092] 在发送数据包前,先要对软件运行的环境进行初始化,即初始化DPDK运行环境, 读取预设的配置文件中的参数信息,包括网卡的个数,网卡的类型,使用的是前兆网卡还是 万兆网卡;每个网卡中发送队列的个数,接收队列的个数;每个网卡的MC地址,从该网卡 发送的数据包会携带有该网卡的MAC地址;还包括不可用的CPU,可用的CPU等信息。
[0093] 本实施例中,以一个网卡基于软件实现1秒内均匀发送数据包为例进行说明,其 他网卡的实现类似,这里不再赘述。
[0094] 从预设的配置文件中获取网卡中发送队列的个数,获取预设的突发包个数以及初 始线速,还获取CPU的主频。
[0095] 其中,突发包个数根据接收数据包的网卡的缓存能力以及每个数据包的长度具体 设置,所述突发包个数表示除最后一次发送数据包以外,所述网卡中每个发送队列每次发 送数据包的个数。举例说明:若所述网卡中的每个发送队列都发送10次数据包,则所述网 卡中的每个发送队列前9次发送数据包的个数为突发包个数,第10次发送数据包的个数根 据实际情况而定。
[0096] 其中,初始线速表示所述网卡每秒内发送数据包的总数,初始线速可以根据实际 情况具体设定,比如,万兆网卡每秒最多发送的数据包个数为S,初始线速可以设置为S,也 可以设置为S的任意百分比。
[0097] 其中,一个设备中所有CPU的主频都相同,CPU的主频即CPU工作的时钟频率(CPU Clock Speed)。CPU最小的单位时间是1个所述CPU的时钟周期,CPU的主频代表1秒内包 含的最小的单位时间的个数,即把1秒钟划分为该CPU时钟主频个单位时间。举例说明:假 设所述CPU的时钟主频为2. 6GHZ,则将1秒均分成2. 6*109个单位时间。
[0098] 102 :根据所述网卡中发送队列的个数,突发包个数以及所述初始线速获得每秒内 所述网卡的每个发送队列发送数据包的次数以及该发送队列最后一次发送数据包的个数。
[0099] 所述根据所述网卡中发送队列的个数,突发包个数以及所述初始线速获得每秒内 所述网卡的每个发送队列发送数据包的次数以及该发送队列最后一次发送数据包的个数 包括:
[0100] 计算所述初始线速与所述网卡中发送队列的个数的商获得所述网卡中每个发送 队列发送数据包的速率;
[0101] 计算所述每个发送队列发送数据包的速率与所述突发包个数的商再加1获得每 秒内所述网卡
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1