大家好,欢迎来到IT知识分享网。
配置基本网络连接
确保QNX系统上的网络连接已经配置好,并且能够正常通信
ping
Shell — 192.168.1.3 ping statistics — |
结果会显示统计信息,包含丢包率
iperf
1. 下载和编译 iperf
如果 iperf 没有预装在你的QNX系统上,你可能需要下载源代码并进行编译。可以从iperf官网下载源代码。
目前系统上有iperf2、iperf2_d、iperf3,后续均测试比较效果
2. iperf用法
Shell Client/Server: Server specific: Client specific: Miscellaneous: [kmgKMG] Indicates options that support a k,m,g,K,M or G suffix The TCP window size option can be set by the environment variable Source at <http://sourceforge.net/projects/iperf2/> |
基本使用
Shell |
- -s:以服务器模式运行
- -c <host>:以客户端模式运行,并连接到指定的服务器 <host>
- -h, –help:显示帮助信息并退出
- -v, –version:显示版本信息并退出
客户端/服务器通用选项
- -b, –bandwidth #[kmgKMG | pps]:发送带宽(比特/秒或包/秒)
- -e, –enhancedreports:使用增强报告,提供更多 TCP/UDP 和流量信息
- -f, –format [kmgKMG]:报告格式(Kbits, Mbits, KBytes, MBytes)
- -i, –interval #:周期性带宽报告的间隔时间(秒)
- -l, –len #[kmKM]:读写缓冲区的长度(默认:TCP=128K,IPv4 UDP=1470,IPv6 UDP=1450)
- -m, –print_mss:打印 TCP 最大段大小(MTU – TCP/IP 头)
- -o, –output <filename>:将报告或错误消息输出到指定文件
- -p, –port #:服务器监听/客户端连接的端口
- -u, –udp:使用 UDP 而不是 TCP
- –udp-counters-64bit:使用 64 位序列号进行 UDP 测试
- -w, –window #[KM]:TCP 窗口大小(套接字缓冲区大小)
- -z, –realtime:请求实时调度程序
- -B, –bind <host>[:<port>][%<dev>]:绑定到指定的 IP 地址、端口和设备
- -C, –compatibility:与旧版本兼容,不发送额外消息
- -M, –mss #:设置 TCP 最大段大小(MTU – 40 字节)
- -N, –nodelay:设置 TCP no delay,禁用 Nagle 算法
- -S, –tos #:设置套接字的 IP_TOS(字节)字段
服务器专用选项
- -s, –server:以服务器模式运行
- -t, –time #:监听新连接并接收流量的时间(秒)
- –udp-histogram #,#:启用 UDP 延迟直方图(bin 宽度和计数,例如 1,1000=1(ms),1000(bins))
- –recv-mmsg #:使用 recvmmsg() API
- –recv-mmsg-wait-all:使用 MSG_WAITALL 而不是 MSG_WAITFORONE
- –recv-mmsg-time #:设置 recvmmsg() API 的等待接收消息的超时时间
- –recvlowat #:设置 TCP 套接字的低水位标记
- -B, –bind <ip>[%<dev>]:绑定到多播地址和可选设备
- -H, –ssm-host <ip>:设置 SSM 源,与 -B 一起使用
- -U, –single_udp:以单线程 UDP 模式运行
- -D, –daemon:以守护进程模式运行服务器
- -V, –ipv6_domain:启用 IPv6 接收,将域和套接字设置为 AF_INET6(可以同时接收 IPv4 和 IPv6)
客户端专用选项
- -c, –client <host>:以客户端模式运行,并连接到指定的服务器 <host>
- -d, –dualtest:同时进行双向测试
- –ipg:设置分组内分组的间隔时间(毫秒)
- –isochronous <frames-per-second>:<mean>,<stddev>:按突发模式发送流量(帧 – 模拟视频流量)
- –send-mmsg #:使用 sendmmsg() API
- -n, –num #[kmgKMG]:传输的字节数(而不是 -t)
- -r, –tradeoff:分别进行双向测试
- -t, –time #:传输的时间(秒)
- -B, –bind [<ip> | [ip:port](ip:port)]:绑定源 IP(和可选端口)发送流量
- -F, –fileinput <name>:从文件中输入要传输的数据
- -I, –stdin:从标准输入输入要传输的数据
- -L, –listenport #:接收双向测试返回数据的端口
- -P, –parallel #:运行的并行客户端线程数
- -R, –reverse:反向测试(客户端接收,服务器发送)
- -T, –ttl #:多播的生存时间(默认 1)
- -V, –ipv6_domin:设置域为 IPv6(通过 IPv6 发送数据包)
- -X, –peer-detect:执行服务器版本检测和版本交换
- -Z, –linux-congestion <algo>:设置 TCP 拥塞控制算法(仅适用于 Linux)
杂项选项
- -x, –reportexclude [CDMSV]:排除报告中的 C(连接)、D(数据)、M(多播)、S(设置)、V(服务器)
- -y, –reportstyle C:报告为逗号分隔值(CSV)
- -h, –help:显示帮助信息并退出
- -v, –version:显示版本信息并退出
说明
[kmgKMG] 表示支持的单位后缀:小写表示 10^3 基数,大写表示 2^10 基数
例如,1k = 1000, 1K = 1024, 1m = 1,000,000 和 1M = 1,048,576
环境变量
- TCP 窗口大小选项可以通过环境变量 TCP_WINDOW_SIZE 设置
- 大多数其他选项可以通过环境变量 IPERF_<长选项名> 设置,例如 IPERF_BANDWIDTH
3. 测试步骤
3.1 测试带宽和丢包率
1. 一台设备上运行以下命令,启动 iperf 服务器:
Shell |
2. 另一台设备运行以下命令,启动 iperf 客户端,并连接到服务器进行带宽测试
Shell |
3. 测试完成后,iperf 会输出详细的带宽测试结果,包括传输速率和丢包信息。
示例输出:
Shell |
3.2 测试UDP丢包率
1. 一台设备上运行以下命令,启动 iperf 服务器并指定UDP模式:
Shell |
2. 另一台设备运行以下命令,启动 iperf 客户端,并连接到服务器进行带宽测试
Shell |
3. 测试完成后,
iperf 将提供以下关键指标:
- 带宽:传输速率(Mbps)
- 丢包率:丢失的包数与发送的总包数的百分比
- 延迟(UDP):延迟统计信息(如果启用了)
示例输出:
Shell |
3.3 高级测试
- 多线程测试:使用 -P 参数进行并行测试,以模拟多用户环境
Shell |
- 双向测试:使用 -d 参数同时测试上行和下行带宽
Shell |
- 窗口大小和缓冲区调整:使用 -w 参数调整TCP窗口大小,以测试不同网络条件下的性能
Shell |
实践
Test 1 basic
1. adb启用服务
Shell |
2. Qnx连接到adb测试带宽
Shell |
输出:
Shell iperf Done. |
报告可以看出:
发送端在 60 秒内传输了 5.49 GB 数据,平均比特率为 786 Mbits/sec。
接收端在 60.04 秒内接收了 5.49 GB 数据,平均比特率为 785 Mbits/sec。
Test 2 udp
1. adb启用服务
Shell |
2. Qnx连接到adb测试带宽,指定udp模式
Shell |
输出:
Shell iperf Done. |
报告可以看出:
每个时间间隔为 10 秒,显示了每个间隔内的传输量、比特率(传输速率)和发送的总数据报文数;
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
总结了整个 60 秒测试期间的传输量、平均比特率、抖动(Jitter)、以及丢失的数据报文数和总发送的数据报文数。在这个示例中,传输速率保持稳定,且丢失率为 0%,表明网络连接相对稳定且传输效率良好。
Test 3 others
- 多线程测试:使用 -P 参数进行并行测试,以模拟多用户环境
Shell iperf Done. |
- 双向测试:使用 -d 参数同时测试上行和下行带宽
Shell … iperf Done. |
- 窗口大小和缓冲区调整:使用 -w 参数调整TCP窗口大小,以测试不同网络条件下的性能
Shell … iperf Done. |
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/130082.html