网络性能指标以及ping测试(Linux)
1、网络可用性
命令参数:
-d 使用Socket的SO_DEBUG功能。
-f 极限检测。大量且快速地送网络封包给一台机器,看它的回应。压它!
-n 只输出数值。
-q 不显示任何传送封包的信息,只显示最后的结果。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。
-R 记录路由过程。
-v 详细显示指令的执行过程。
<p>-c 数目:在发送指定数目的包后停止。
-i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
-I 网络界面:使用指定的网络界面送出数据包。
-l 前置载入:设置在送出要求信息之前,先行发出的数据包。
-p 范本样式:设置填满数据包的范本样式。
-s 字节数:指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。
通常ping命令的返回结果常见有以下几种
PING 10.7.5.88 (10.7.5.88) 56(84) bytes of data. 64 bytes from 10.7.5.88: icmp_seq=2 ttl=64 time=0.777 ms 该结果表示收到10.48.128.1的reply包,说明目的网络可达。
- bytes值:数据包大小,也就是字节。
- time值:响应时间,这个时间越小,说明你连接这个地址速度越快。
- TTL值:Time To Live,表示DNS记录在DNS服务器上存在的时间,它是IP协议包的一个值,告诉路由器该数据包何时需要被丢弃。可以通过Ping返回的TTL值大小,粗略地判断目标系统类型是Windows系列还是UNIX/Linux系列。
默认情况下,Linux系统的TTL值为64或255,WindowsNT/2000/XP系统的TTL值为128,Windows98系统的TTL值为32,UNIX主机的TTL值为255。
因此一般TTL值: 100~130ms之间,Windows系统 ; 240~255ms之间,UNIX/Linux系统。
Request timed out 请求超时,该结果表示没有收到reply包,说明存在目的网络的路由,但网络不通。 Destination host Unreachable 目的主机不可达,该结果表示没有到目的主机的路由。 Unknown host 不可知的主机,该结果表示无法解析域名为IP地址。 Hardware error 硬件错误,该结果表示硬件故障。
2、网络响应时间
网络响应时间是指终端发起到远端的连接请求,到收到远端的回复所需要的时间,也可以用ping命令来测试网络的响应时间,Ping 命令的 echo request/reply 一次往返所花费时间就是响应时间。有很多因素会影响到响应时间,如网络的负荷,网络主机的负荷,网络的带宽,网络设备的负荷等等。
在网络的可用性良好的时候,使用ping命令测试时,返回结果: 64 bytes from 10.7.5.88: icmp_seq=2 ttl=64 time=0.777 ms 结果说明该终端到远端 10.7.5.88 的响应时间为0.777ms
3、网络抖动
网络抖动是指分组延迟的变化程度。如果网络发生拥塞,排队延迟将影响端到端的延迟,并导致通过同一连接传输的分组延迟各不相同,而抖动,就是用来描述这样一延迟变化的程度。
利用ping命令可以观察出网络抖动的情况:
PING 10.7.5.88 (10.7.5.88) 100(128) bytes of data.
108 bytes from 10.7.5.88: icmp_seq=5 ttl=64 time=0.650 ms
108 bytes from 10.7.5.88: icmp_seq=6 ttl=64 time=0.736 ms
108 bytes from 10.7.5.88: icmp_seq=7 ttl=64 time=0.633 ms
108 bytes from 10.7.5.88: icmp_seq=8 ttl=64 time=0.916 ms
108 bytes from 10.7.5.88: icmp_seq=9 ttl=64 time=0.683 ms
108 bytes from 10.7.5.88: icmp_seq=13 ttl=64 time=1.38 ms
108 bytes from 10.7.5.88: icmp_seq=14 ttl=64 time=0.819 ms
108 bytes from 10.7.5.88: icmp_seq=15 ttl=64 time=0.984 ms
108 bytes from 10.7.5.88: icmp_seq=16 ttl=64 time=0.756 ms
108 bytes from 10.7.5.88: icmp_seq=17 ttl=64 time=0.751 ms
108 bytes from 10.7.5.88: icmp_seq=18 ttl=64 time=0.770 ms
^C
--- 10.7.5.88 ping statistics ---
18 packets transmitted, 11 received, 38% packet loss, time 17013ms
rtt min/avg/max/mdev = 0.633/0.825/1.385/0.206 ms
通过结果可以看出终端到10.7.5.88这个目的主机的网络响应时间统计 min/avg/max/mdev = 0.633/0.825/1.385/0.206 ms 最小值、平均、最大值 mdev,即RTT 偏离平均值的程度,也是个评判标准。越小证明越稳 若是过程中出现大延迟的数据包,甚至偶尔的丢包现象,则说明该网络抖动程度较大,网络的性能不佳。
极限检测:ping -f 10.7.5.88 大量且快速地送网络封包给一台机器,看它的回应。 结果:
...........................^C.
--- 10.7.5.88 ping statistics ---
102098 packets transmitted, 96511 received, 5% packet loss, time 182293ms
rtt min/avg/max/mdev = 0.262/0.647/23.419/0.354 ms, pipe 3, ipg/ewma 1.785/0.526 ms
可以在短时间发大量的包
4、网络吞吐量
吞吐量表示在单位时间内通过某个网络(或信道、接口)的数据量。吞吐量受网络的带宽或网络的额定速率的限制。
1. 可以在交换机上通过show interfacesummary命令查看该交换机端口的数据流量。
ZHL_6509A
*: interface is up
IHQ: pkts in input hold queue IQD: pkts dropped from input queue
OHQ: pkts in output hold queue OQD: pkts dropped from output queue
RXBS: rx rate (bits/sec) RXPS: rx rate (pkts/sec)
TXBS: tx rate (bits/sec) TXPS: tx rate (pkts/sec)
TRTL: throttle count
Interface IHQ IQD OHQ OQD RXBS RXPS TXBS TXPS TRTL
-------------------------------------------------------------------------
*GigabitEthernet2/1 0 0 0 0 171848000 30276 152596000 32948 0
*GigabitEthernet2/2 0 0 0 0 1469000 648 0 0 0
*GigabitEthernet2/3 0 0 0 0 275000 221 1666000 758 0
*GigabitEthernet2/4 0 0 0 10830 0 0 449000 485 0
*GigabitEthernet2/5 0 0 0 10348 0 0 448000 485 0
*GigabitEthernet2/6 0 0 0 11061 0 0 470000 490 0
*GigabitEthernet2/7 0 0 0 10833 0 0 470000 490 0
通过该命令,可以看出当前端口每秒钟通过的数据量,例如GigabitEthernet2/1接收数据量为171848000bits/S,换算后为171.8Mbits/S,发送的数据量为152596000bits/S,换算后为152.6Mbits/S,该数据反映了当前网络的使用和负载情况,当网络中的吞吐量非常大的时候,可能会引起交换机压力大、CPU占用率高,及网络阻塞的现象。因此,需要对平时正常状态下的网络吞吐量的大概范围有一个了解,当出现网络缓慢、阻塞时,通过对比能及时发现那些接口的吞吐量过大,从而判断解决问题。
2. 假设ping 100字节平均耗费2ms而ping 5100字节平均耗费7ms,因此,往返额外花费5ms单程额外花费2.5ms,多发送5000字节即8000比特。吞吐量近似计算为(5100-100)*8 bit / 0.0025s = 16Mbps。当然这一估算是非常粗略的,假设路径上其他数据流基本不变的情况,也没有考虑路径上所有链路的异常情况。
3. 通过iperf去测试
5、网络带宽容量
与网络吞吐量不同,网络带宽容量指的是在网络的两个节点之间的最大可用带宽。这是由组成网络的网络设备和网络通道的能力所决定的。
网络性能评估工具Iperf
监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础。 对网络传输进行监控,此时就需要用到一些网络性能评估工具,而Iperf就是这样一款网络带宽测试工具。 Iperf是一款基于TCP/IP和UDP/IP的网络性能测试工具,它可以用来测量网络带宽和网络质量,还可以提供网络延迟抖动、数据包丢失率、最大传输单元等统计信息。
下载安装
下载地址: https://iperf.fr/iperf-download.php#uwp-iperf3
Windows 图形界面软件:jperf 下载地址: http://www.pc0359.cn/downinfo/59375.html(iperf 2)
推荐使用 iperf 3 windows:
android:
Linux: 用git下载,git clone https://github.com/esnet/iperf.git 可以在windows下下载好文件然后copy过去。 安装命令: 编译安装iperf
$ cd iperf
$ sudo ./configure
$ sudo make
$ sudo make install
但是需要注意,这样copy之后会出现权限变化问题,在安装的时候,出现如下问题:
$ sudo ./configure
sudo: unable to execute ./configure: No such file or directory
这个时候需要用 “git reset --hard” 命令重置一下。
:~/iperf$ git branch
* master
:~/iperf$ git reset --hard
HEAD is now at d2a2252 Add note for stream ids for multi-stream tests (
执行iperf3 -v查看是否已经可以使用iperf,如果没有报错,进入到源码路径src,src目录已经编译了iperf,在源码路径直接执行iper3即可,如下所示:
:~/iperf/src$ ./iperf3 -v
iperf 3.11 (cJSON 1.7.13)
Linux bionic 4.4.194
Optional features available: CPU affinity setting, IPv6 flow label, SCTP, TCP conge
Iperf的主要功能:
(1)TCP方面
测试网络带宽。 支持多线程,在客户端与服务端支持多重连接。 报告MSS/MTU值的大小。 支持TCP窗口值自定义并可通过套接字缓冲。
(2)UDP方面
可以设置指定带宽的UDP数据流 可以测试网络抖动值、丢包数 支持多播测试 支持多线程,在客户端与服务端支持多重连接。
常用公共参数(仅常用的,需要特殊参数的时候可以-h去查)
-i
-w 80k
-B 192.168.122.1
-b 100m
-c
-d
-t
-P
例子说明:
- 从左至右依次为: 线程id 时间 接收数据大小 每秒大小 延时 丢包/总包 丢包率
- 重点关注虚线下的一段内容,在这段输出中,
Bandwidth Mbits/sec 说的就是百兆网络 /8 MBytes/sec Transfer MBytes 传输多少M Jitter 列表示抖动时间,或者称为传输延迟, Lost/Total 列表示丢失的数据报和总的数据报数量,后面的0.%是平均丢包的比率, Datagrams 列显示的是总共传输数据报的数量
注:如果单线程测出来的带宽比预期的要偏低,可以试试多线程去打流。
|