Linux 下网络测试常用的几款命令行工具介绍

本贴最后更新于 1503 天前,其中的信息可能已经时异事殊

前言

因为后面需要做 udp 弱网下的优化,所以这边先介绍几款网络测试中常用的工具。方便后面测试使用。

  1. tc: 介绍 主要是用来模拟网络延迟,丢包环境,在我们测试弱网环境有非常大的帮助,当然还有一些其他的工具,大都是根据 tc 封装的,原理大家可以看介绍
  2. iftop: 介绍 主要用来统计网卡的收发带宽,对于评估服务器并发瓶颈很有用处,具体看介绍
  3. iperf3: 介绍 主要用来测试网卡速度,可以配合 tc 与我们自己的程序,判断我们网络瓶颈。

TC 常用命令

  • 模拟延迟传输:
# tc qdisc add dev eth0 root netem delay 100ms

该命令将 eth0 网卡的传输设置为延迟 100 毫秒发送,更真实的情况下,延迟值不会这么精确,会有一定的波动,后面用下面的情况来模拟出带有波动性的延迟值

  • 模拟延迟波动:
# tc qdisc add dev eth0 root netem delay 100ms 10ms

该命令将 eth0 网卡的传输设置为延迟 100ms ± 10ms (90 ~ 110 ms 之间的任意值)发送。 还可以更进一步加强这种波动的随机性

  • 延迟波动随机性:
# tc qdisc add dev eth0 root netem delay 100ms 10ms 30%

该命令将 eth0 网卡的传输设置为 100ms ,同时,大约有 30% 的包会延迟 ± 10ms 发送。

  • 模拟网络丢包:
# tc qdisc add dev eth0 root netem loss 1%

该命令将 eth0 网卡的传输设置为随机丢掉 1% 的数据包

  • 网络丢包成功率:
# tc qdisc add dev eth0 root netem loss 1% 30%

该命令将 eth0 网卡的传输设置为随机丢掉 1% 的数据包,成功率为 30%

  • 删除相关配置(将之前命令中的 add 改为 del 即可删除配置):
# tc qdisc del dev eth0 root netem delay 100ms
  • 模拟包重复:
# tc qdisc add dev eth0 root netem duplicate 1%

该命令将 eth0 网卡的传输设置为随机产生 1% 的重复数据包

  • 模拟包损坏:
# tc qdisc add dev eth0 root netem corrupt 0.2%

该命令将 eth0 网卡的传输设置为随机产生 0.2% 的损坏的数据包 。 (内核版本需在 2.6.16 以上)

  • 模拟包乱序:
# tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50%

该命令将 eth0 网卡的传输设置为:有 25% 的数据包(50% 相关)会被立即发送,其他的延迟 10 秒。

新版本中,如下命令也会在一定程度上打乱发包的次序:# tc qdisc add dev eth0 root netem delay 100ms 10ms

  • 查看网卡配置:
# tc qdisc show dev eth0

该命令将 查看并显示 eth0 网卡的相关传输配置

  • 查看丢包率:
# tc -s qdisc show dev eth0

iftop 常用操作

# iftop
  • iftop 界面相关说明
    界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
    中间的<= =>这两个左右箭头,表示的是流量的方向。
    TX:发送流量
    RX:接收流量
    TOTAL:总流量
    Cumm:运行iftop到目前时间的总流量
    peak:流量峰值
    rates:分别表示过去 2s 10s 40s 的平均流量
  • iftop 相关参数

    常用的参数

    -i设定监测的网卡,如:# iftop -i eth1
  
    -B 以bytes为单位显示流量(默认是bits),如:# iftop -B
  
    -n使host信息默认直接都显示IP,如:# iftop -n
  
    -N使端口信息默认直接都显示端口号,如: # iftop -N
  
    -F显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0
  
    -h(display this message),帮助,显示参数信息
  
    -p使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;
  
    -b使流量图形条默认就显示;
  
    -f这个暂时还不太会用,过滤计算包用的;
  
    -P使host信息及端口信息默认就都显示;
  
    -m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M
  • 进入 iftop 画面后的一些操作命令(注意大小写)
    按h切换是否显示帮助;
  
    按n切换显示本机的IP或主机名;
  
    按s切换是否显示本机的host信息;
  
    按d切换是否显示远端目标主机的host信息;
  
    按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
  
    按N切换显示端口号或端口服务名称;
  
    按S切换是否显示本机的端口信息;
  
    按D切换是否显示远端目标主机的端口信息;
  
    按p切换是否显示端口信息;
  
    按P切换暂停/继续显示;
  
    按b切换是否显示平均流量图形条;
  
    按B切换计算2秒或10秒或40秒内的平均流量;
  
    按T切换是否显示每个连接的总流量;
  
    按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
  
    按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
  
    按j或按k可以向上或向下滚动屏幕显示的连接记录;
  
    按1或2或3可以根据右侧显示的三列流量数据进行排序;
  
    按<根据左边的本机名或IP排序;
  
    按>根据远端目标主机的主机名或IP排序;
  
    按o切换是否固定只显示当前的连接;
  
    按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!
  
    按!可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢!
  
    按q退出监控。

iperf3 常用命令

iperf3 所提供的选项非常多,以下介绍一些常用的参数。

服务器端命令行:

-s    表示服务器端;
-p    定义端口号;
-i    设置每次报告之间的时间间隔,单位为秒,如果设置为非零值,就会按照此时间间隔输出测试报告,默认值为零

客户端命令行:

-c    表示服务器的IP地址;
-p    表示服务器的端口号;
-t    参数可以指定传输测试的持续时间,Iperf在指定的时间内,重复的发送指定长度的数据包,默认是10秒钟.

-i    设置每次报告之间的时间间隔,单位为秒,如果设置为非零值,就会按照此时间间隔输出测试报告,默认值为零;

-w    设置套接字缓冲区为指定大小,对于TCP方式,此设置为TCP窗口大小,对于UDP方式,此设置为接受UDP数据包的缓冲区大小,限制可以接受数据包的最大值.

--logfile    参数可以将输出的测试结果储存至文件中.

-J  来输出JSON格式测试结果.
-R  反向传输,缺省iperf3使用上传模式:Client负责发送数据,Server负责接收;如果需要测试下载速度,则在Client侧使用-R参数即可.

常用启动命令:

服务端:
[root@master ~]# iperf3 -s -p 12345 -i 1
客户端:
C:\Users\iperf3>iperf3.exe -c 192.168.1.43 -p 12345 -i 1 -t 20 -w 100k
  • RTC
    3 引用
  • 实时通信
    3 引用
  • 网络
    138 引用 • 177 回帖 • 4 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    944 引用 • 943 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...