RFC2544转发测试过程

pktgen-dpdk的rfc2544_tput_test.lua脚本在运行RFC2544测试时,默认会以设定的50%速率发送测试包(默认的测试包长是64, 128, 256, 512, 1024, 1280, 1518 )。假设发包的端口是万兆网卡,那么初始的发包速率是万兆网卡速率的一半发包。通过l2fwd转发包之后pktgen-dpdk会统计本次测试收到的包。如果收包个数等于发包个数,那么RFC2544认为当前的发送速率是可以无丢包完成转发的。这个时候通过二分法进行第二次测试,会以75%的速率发包。如果以75%的速率发包,统计到的收包小于发包的个数,这里就认为有丢包。那么程序就会认为75%的发包速率并不是一个可靠的发包速率。这时就会通过二分法降低发包速率,以62.5%的发包速率进行发包。直到找到一个界限值,该值网上发包速率就会出现丢包,该值往下发包仍然是可以接受的丢包率。在每个包长的转发测试中会用二分法多次测试以确定速率。用以确定被测网络环境的转发性能。

rfc2544_tput_test测试计划参数设置

在rfc2544中主要有三个参数来控制每一次的测试时间和时长。

-- Time in seconds to transmit for #这里脚本中注释说是以秒为单位但是实际测试时感觉还是以毫秒为单位。
local duration      = 10000; #每运行一次测试时运行时间
local confirmDuration   = 60000; #每轮(这里表示一个包长字节测试完成得出最终速率结果)测试得到满足丢包率下的速率后,脚本会持续的以该速率发送观察是否仍有丢包存在,如丢包率满足设定值,则认为该速率值满足测试结果。
local pauseTime     = 10000;#每轮测试完成之后在下一论测试开始之前的等待时间。该等待时间主要是为了等待网络链路流量正常。

rfc2544_tput_test脚本缺陷

1.在测试时duration的时间和confirmDuration时间需要更具实际情况调试。

过短会造成测试数据不稳定,但时长不是越长越好。当duration时间和confirmDuration时长差距过大时容易导致pktgen-dpdk在测试下一个字节的时候不会发包。

2.rfc2544_tput_test丢包率默认为0。
在理论情况下将丢包率设置为0固然是一件好事。但是在实际情况下由于网络环境实际,原因包括软件发包缺陷,这里很容易导致测试不准确。试想当测试出一个无丢包速率之后,pktgen-dpdk会以该速率持续发包用以确认是否满足收发包低于丢包率。但是rfc2544_tput_test将丢包率设置为0,这样很可能会因为很细小的网络原因导致测试结果无法被确认。

Max rate of 1% could not be confirmed for 60 seconds as required by rfc2544.

3.rfc2544_tput_test测试脚本中二分法的粒度过大。在rfc2544_tput_test中设定min_rate默认为1,所以导致如果你的转发速率真的低于1%,那么很可能就没办法测试。

这里贴出相关代码

local function runThroughputTest(pkt_size)local num_dropped, max_rate, min_rate, trial_rate;max_rate = 100;min_rate = 0.1;#如果想要增加测试精度,这里一定要改小最低速率。trial_rate = initialRate;for count=1, 10, 1donum_dropped = runTrial(pkt_size, trial_rate, duration, count);if num_dropped == 0thenmin_rate = trial_rate;elsemax_rate = trial_rate;endtrial_rate = min_rate + ((max_rate - min_rate)/2);end

4.丢包会出现负数的情况。

pktgen-dpdk对发送的包不染色,不打标签,所以接收端会把所有的包转发。所有接受的包都会被统计到pktgen-dpdk中。如果这个网络里有arp,lldp,stp包则都会被统计,所以rx会大于tx。

设置丢包率

考虑到0丢包率设置真的对测试很不友好,并且像ixia和sprint仪器都可以设置一个丢包率。这里博主想出了一个笨办法来大致的设置丢包率。
假设丢包率设置为小数点后面五个0的情况。

local function runTrial(pkt_size, rate, duration, count)local num_tx, num_rx, num_dropped;pktgen.clr();pktgen.set(sendport, "rate", rate);pktgen.set(sendport, "size", pkt_size);pktgen.start(sendport);print("Running trial " .. count .. ". % Rate: " .. rate .. ". Packet Size: " .. pkt_size .. ". Duration (mS):" .. duration);file:write("Running trial " .. count .. ". % Rate: " .. rate .. ". Packet Size: " .. pkt_size .. ". Duration (mS):" .. duration .. "\n");pktgen.delay(duration);pktgen.stop(sendport);pktgen.delay(pauseTime);statTx = pktgen.portStats(sendport, "port")[tonumber(sendport)];statRx = pktgen.portStats(recvport, "port")[tonumber(recvport)];num_tx = statTx.opackets;num_rx = statRx.ipackets;num_dropped = num_tx - num_rx;#新增加一个num_dropped参数用于统计收包和发包差值。t_num_dropped = num_rx * 0.00001#新增加一个参数统计当前发包乘以0.00001之后的包个数。这也就意味着丢包个数(num_dropped)不能大于t_num_droppedif num_dropped <= t_num_dropped #当num_dropped下雨t_num_dropped时则可以认为当前丢包率小于设定的值thenis_pass=0;elseis_pass=1;endprint("Tx: " .. num_tx .. ". Rx: " .. num_rx .. ". Dropped: " .. num_dropped);file:write("Tx: " .. num_tx .. ". Rx: " .. num_rx .. ". Dropped: " .. num_dropped .. "\n");pktgen.delay(pauseTime);return is_pass;
end

rfc2544_tput_test脚本中增加丢包率功能相关推荐

  1. php丢包率测试,linux 网络延时、丢包与传输带宽关系测试

    一.目的 在互联网中,我们会向网络运营商申请指定额度的带宽.实际传输时,由于网络QoS达不到要求,实际的传输带宽可能达不到标称值.本次测试在局域网环境中使用模拟工具模拟不同QoS下的网络条件,得出不同 ...

  2. wifi丢包率高怎么解决_大家有没有发现无线网络中多播的丢包率很高

    在linux下用vlc在若干笔记本组成的无线网络中做视频传输实验 如果用单播(unicast)的udp,效果很好,很流畅 但如过用多播(Multicast)的udp,效果就很差,接收的图像上有很多方块 ...

  3. 实时检测服务器延迟和丢包率脚本,使用mtr测试网络丢包率和平均延时的脚本实例...

    mtr(a network diagnostic tool)是一个神奇的指令,能按要求对路由中所有节点进行批量测试.简单敲一个"mtr qq.com"将会有意外收获! 当需要进行产 ...

  4. linux mtr运行脚本,使用mtr测试网络丢包率和平均延时的脚本实例

    A h4u}+XLFSj0#!/bin/bash r+Q0hW m KH0# 测试网络丢包率和平均延时,注意变量clr和cdt的赋值,不同版本的mtr对应的字段位置不同51Testing软件测试网yS ...

  5. 测试ip丢包率分析shell脚本

    首先今天有是风高月黑的一天,首先代码如下 #!/bin/bashnum=1 while : doecho "第$num次测试..."#测试百度网址获取丢包百分比n=`ping -c ...

  6. 服务器出现信号问题,网络故障中出现的丢包是什么意思?什么又是丢包率?

    电脑与服务器通信都是通过发送数据包发送给服务器,服务器接收到信号,确认后又将数据返回给电脑,电脑接收到返回数据就说明两者是联通的,之间所花费的时间就是响应时间,如果时间响应超出一个数值,就会出现丢包现 ...

  7. 无连接应用程序丢包率测试/UDP丢包率测试【基于数据报套接字的网络程序设计】

    目录 一.无连接应用程序丢包率测试 二.UDP 丢包率测试服务端 三.UDP丢包率测试客户端 四.用户使用说明(输入 / 输出规定) 五.部分运行结果 六.UDP 丢包率的测试结果分析 (1)讨论服务 ...

  8. 网络性能评估工具Iperf详解(可测丢包率)

    原文链接:安全运维之:网络性能评估工具Iperf详解:技术成就梦想51CTO-中国领先的IT技术网站 参考博文:Install Iperf and Test Network Throughput,Sp ...

  9. ns3统计时延和丢包率_端到端高丢包率小区优化思路

    1.       端到端高丢包小区整体分析思路 (1)VOLTE端到端高丢包率统计方式说明 VOLTE端到端高丢包率小区数据取自GM接口丢包率统计,涉及终端.空口.基站.PTN传输网络.S/PGW.S ...

  10. 网络术语:什么是带宽/吞吐量,时延,时延变化(抖动),丢包率

    一. 带宽.吞吐量 带宽(bandwidth)也称为吞吐量(throughput),是指在一个固定的时间内(1 秒),从 网络一端传输到另一端的最大数据位数,也可以理解为网络的两个节点之间特定数据流 ...

最新文章

  1. 共享程序集和强命名程序集(3):强命名程序集的一些作用
  2. linux下 DNS配置过程『罗斌原创』
  3. codeforces654题解_CodeForces - 886C 解题思路
  4. Webstorm中提示Cannot find module 'webpack.dev.conf.js'
  5. java各种数据库对应的jar包、驱动类名和URL格式
  6. 腾讯胡珀:数字时代,每个人的安全都值得被守护
  7. nginx location配置详解
  8. 关于C#的GetHashCode
  9. 初识flume-介绍
  10. 分类变量 哑变量矩阵 指标矩阵_ML基础:协方差矩阵
  11. git版本管理软件——git储藏
  12. AD2428W手册解读之操作与配置
  13. 最大似然估计,最大后验估计,贝叶斯估计联系与区别
  14. E. The Humanoid #834 div3
  15. JavaScript-原型详解
  16. Grub for DOS/NTLDR中文版Climbing定制版第四版(完全淘汰VFloppy)
  17. SQLSERVER时间函数
  18. 管理信息系统期末复习资料
  19. Flume的学习及使用
  20. 团队行为心理学读书笔记(4)带队伍背后的行为心理学

热门文章

  1. mouseenter、mouseleave、mouseover和mouseout的区别
  2. 涂上你的脸! 如何创建自定义Photoshop笔刷
  3. qtableview 查询_QTableView 操作SQLite
  4. Java项目:基于SSM实现驾校预约管理系统
  5. ubuntu1804+CUDA10+cudnn7.4.2+TensorFlow2+Pytorch1.3 9700K+双路RTX 2080TI
  6. JRebel激活教程
  7. 关于快应用list、list-item踩的坑
  8. Python数据处理Tips使用OpenCV预处理图像数据的10种操作
  9. 一篇文章,带你详细了解华为认证体系证书(1)
  10. 企业生存与发展的前提是安全