细讲iperf3

    非常幸运,从一个软件工程师进入到一个软硬件工程师的行业,初识硬件,觉得这个世界上的人也太聪明了,通过一个小小的电路板就可以整装成一个整机,不过更让人敬佩的还是讲那一个个小小的原件嵌上电路板的人。我不懂他们的工作方式,但是我觉得能有如此耐心做出这些个事情的人,绝对很有工匠精神。今天我要讲的是iperf3这个网络性能测试工具。

1、首先,我用ipad做为服务器:iperf3.exe -s -p 12345 -i 1

2、用电脑做客户端:iperf3.exe -c 192.168.0.107 -p 12345 -i 1(其实不管你是用什么做服务器或者什么做客户端,唯一不变的就是客户端的-c后面接的是服务器的ip)

我们测试网络的性能,一般就是看以下的几个指标:带宽、延时、丢包、抖动。带宽的话,指的是:网络的吞吐率、端到端之间可以传输的最大速率。延时指:数据包从本地传输到对端之间需要的时间,一般是来回的时间。如果延时过大,就会觉得网络很慢,特别是一些交互性强的应用。丢包:由于线路带宽占用过高,数据包从一端到另外一端传输的途中,会产生丢失。丢包率是网络的一个重要指标,一旦产生丢包,说明网络带宽不足,系统会自动重传,导致继续劣化,所以丢包率超过10%以后,网络质量会迅速劣化。抖动:如果延时不稳定,忽快忽慢,网络就存在抖动。抖动这个指标,在VOIP,视频会议等场合,是一个非常重要的指标,如果产生抖动,往往声音和图像也会抖动,无法听清楚或者看清楚。

当然ping也是最常用的一个测试网络质量的一个工具,在各种操作系统、网络设备中一般自带该工具,ping可以测试网络的延时、丢包率,优点是使用方便,不用安装。测试的时候,仅仅发送很小的负载icmp包,无法测试真实负载下的网络质量,比如单位里的网络平时是正常的,但是开一个迅雷下载,就很糟糕了。测试的指标单一,对于带宽、抖动无法测试。

回归到iperf3,这里就谈到了一个测试TCP和UDP的一个区别。我个人理解就是,UDP的话,就是单纯的测试发包,不需要做任何的处理,TCP相当于http的三次握手、四次挥手。需要客户端跟服务器进行交互处理。所以,看你要测试的内容具体是什么,加上-u就是udp的测试。

tcp测试:

  服务器执行:#iperf -s -i 1 -w 1M

  客户端执行:#iperf -c host -i 1 -w 1M  其中-w表示TCP window size,host需替换成服 务器地址。

udp测试:

  服务器执行:#iperf -u -s 

      客户端执行:#iperf -u -c 10.32.0.254 -b 900M  -i 1  -w 1M  -t 60 

      其中-b表示 使用带宽数量,千兆链路使用90%容量进行测试就可以了。 

有一些重要的参数:

interval:间隔

transfer:传输

Bandwidth:udp模式使用的带宽

Jitter:抖动

Lost:丢失

Total Datagrams:报总数

 

细讲iperf3_第1张图片

通过-b在客户端不断的增加带宽值到100M的甚至更多的时候,来测试丢包率。直到服务器端出现轻微的丢包为止,此时服务器端显示的带宽就是被测系统的吞吐量: iperf3 –c 192.168.0.112 -i 1 -t 5 -u –b 100M

我们设置的标准是,百兆网丢包率要低于0.1%算是正常的,前兆网卡丢包率要低于3%才算是正常的。

然后我们再谈一下单线程和多线程,多线程的话就是加一个-P。

细讲iperf3_第2张图片

细讲iperf3_第3张图片

以上两个图片相比较一下,利用多线程的话,丢包率整理会下降,其实也很好理解,如果旁边的小区就只有一家开了,100个客人到店里买东西,店长会忙不过来。但是同一时间开了五六家超市,那客人就疏散了。

不过还是得仔细了解一下相关的参数,参数的选择挺重要的,具体命令可以iperf -h 查看下。

服务端:
iperf -s -u
-s 标记此端为服务端
-u标记自己为UDP监听
-p 指定自己监听端口


客户端:
iperf -c 1.1.1.1 -i 1 -u -t 60 -F /root/a.zip -P 5

-c 标记自己为客户端

-i 设定输出值间隔

-u 使用传输协议为udp

-t 设定测试时间为60秒

-F 指定传输文件(该项可有可无)

-P 指定进程数,如果设置为5,那么那么也就相当与对端建立五个连接
 

注意事项:
1.发包测试需要分为UDP测试与TCP测试,其中服务端需要用-u命令去区分监听协议。
2.TCP协议测试不能计算出时延与丢包率,而且还不能指定发送带宽。

iperf3可用于以太网的测试,当然这个必须是客户端安装一个iperf3工具,然后服务器端利用cmd敲打命令的方式即可。如果你对于linux的adb命令感兴趣,可以同时参考我的下一篇博客。哈哈。

 

你可能感兴趣的:(神经网络,http)