iperf_网络性能工具 文章目录用途发展使用手册常用参数问题及相关分析control socket has closed unexpectedly / select failed: Bad file descriptor问题描述定量模式 VS 定时模式用途测试网络吞吐量性能的工具。发展iperf2和iperf3是完全独立的两个工具二者不兼容。iperf2iperf3来源原始iperf基础上的开源社区维护版ESNET团队的重写版维护SourceForgeGitHub协议支持TCP、UCP支持TCP、UCP、SCTP3.1新增安装包名iperf包名iperf3使用手册iperf3官网: http://software.es.net/iperf/变更参考https://iperf.fr/iperf-doc.php常用参数通用: -p, --port # 服务端监听的端口/客户端连接的端口默认是5201 -f, --format [kmgKMG] 打印吞吐量单位Kbits, Mbits, KBytes, MBytes -i, --interval # 周期吞吐量、抖动、丢包报告的间隔时间默认是1s -F, --file name 客户端传输/服务端接收指定本地文件 -B, --bind host 绑定特定端口 -V, --verbose 更详细的输出 -J, --json 以JSON格式输出 --logfile f 将输出内容发送到日志文件 -d, --debug 输出调试信息 -v, --version 显示版本信息并退出 -h, --help 显示本信息帮助手册并退出 服务端: -s, --server 以服务端运行 -D, --daemon 将服务端作为守护进程运行 -I, --pidfile file 写PID文件 -1, --one-off 处理一个客户端连接然后退出 客户端: -c, --client host 以客户端运行, 指定连接服务端的主机 -u, --udp 使用UDP协议 -b, --bandwidth #[KMG][/#] 目标带宽单位bits/s (0表示无限制) (UDP默认1 Mbit/s, TCP无限制) (突发模式时可在带宽后添加/和包数量将不间断发送指定数量的数据包即便超出了指定带宽限制) -t, --time # 传输所需时间 (默认10s) -n, --bytes #[KMG] 传输字节数量 (instead of -t) -k, --blockcount #[KMG] 传输数据块/包数量 (instead of -t or -n) -l, --len #[KMG] 缓冲区读写长度 (TCP默认128KBUDP默认8KB) --cport port 绑定指定的客户端端口 (TCP and UDP, 默认临时端口) -P, --parallel # 并行运行的客户端流数量 -R, --reverse 以反转模式运行 (服务端发送客户端接收) -w, --window #[KMG] 设置窗口大小/套接字缓冲区大小 -M, --set-mss # 设置TCP/SCTP最大分段大小 (MTU - 40 bytes) -N, --no-delay 设置TCP/SCTP无延迟禁用Nagle算法 -4, --version4 仅使用IPv4 -6, --version6 仅使用IPv6 -S, --tos N 设置IP服务类型 -Z, --zerocopy 使用“零拷贝”发送数据 -O, --omit N 省略前n秒 -T, --title str 在每个输出前加上的字符串 --get-server-output 从服务端获取结果 --udp-counters-64bit 在UDP测试数据包中使用64位计数器问题及相关分析control socket has closed unexpectedly / select failed: Bad file descriptor问题描述-n 1G定量传输频繁触发control socket has closed unexpectedly / select failed: Bad file descriptor换成-t 60就稳定不崩溃。定量模式 VS 定时模式-n 大小定量模式Number运行规则客户端强制传输指定总数据量如-n 1G 必须完整发送 1GB payload无论耗时多久凑够总量才会停止。1、发包逻辑链路正常时匀速发包一旦出现丢包、速率下跌iperf 会瞬时拉高发包速率疯狂重传补流量形成报文脉冲冲击2、重传逻辑丢包后无节流持续超额发包填补缺失的数据WiFi 驱动、SDIO 总线、系统 socket 队列极易瞬间打满溢出3、资源释放必须等全部数据传输完成后才一次性回收所有 FD、缓冲区、连接句柄单次会话内海量报文持续占用资源嵌入式精简 iperf极易出现内存 / 句柄泄漏4、控制通道补流量阶段 100% 带宽被数据报文占满iperf 用来同步状态的小 TCP 控制包会被系统丢弃两端心跳失联直接抛出control socket closed / Bad file descriptor。数据流特点总传输字节严格固定测试耗时随链路质量浮动链路越差测试持续时间越长、报文冲击越剧烈。-t 秒定时模式Time运行规则客户端持续发送流量严格跑满设定时长如-t 60 连续打流 60 秒到时间立刻主动停止发包完成一次测试会话。1、发包逻辑按-b设定带宽匀速平稳输出不会主动超额补包2、重传逻辑出现丢包只会在当前时间窗口内轻微补偿不会为了凑总量无限制猛发3、资源释放每一秒 iperf 都会执行一次套接字状态同步、缓冲区刷新、文件描述符回收资源周期性释放不会持续堆积4、控制通道每秒都有空闲时隙收发控制信令带宽同步、心跳报文TCP 控制 socket 不会被 UDP/TCP 数据洪流完全淹没。数据流特点时长固定传输总数据量随链路质量浮动链路差则总流量变少。| :—: | :— | :— |对比维度-t-n核心停止逻辑到达设定时长立刻停止发包总传输流量随链路质量浮动必须发完指定总字节才停止测试耗时随链路质量浮动发包速率策略严格按-b设定带宽匀速输出无超速补包行为链路出现丢包/速率下跌时自动瞬时拉高发包速度疯狂补发缺失流量形成脉冲洪流资源回收机制每秒执行一次缓冲区刷新、套接字状态同步、文件描述符周期性释放资源无长期堆积全程持续占用所有网络资源仅在全部数据传输完成后一次性回收嵌入式易发生FD/内存泄漏控制心跳可靠性高流量平稳队列不会持续满载每秒有空闲时隙收发心跳小包控制通道不易失联极低补流量阶段带宽被数据报文占满内核/无线驱动优先丢弃低优先级心跳小包极易心跳失联链路波动耐受能力强丢包仅减少该周期总传输量不会反向加重发包压力无恶性循环弱丢包→超速补发→队列溢出→更多丢包形成负载恶性循环嵌入式Linux兼容性极好长时间、多轮批量测试极少出现socket崩溃报错较差裁剪版iperf3长会话高频触发control socket closed/Bad file descriptor核心输出指标固定时间窗口内平均吞吐量、实时抖动、逐秒速率波动、丢包率固定数据量下完整传输耗时、全程平均吞吐量批量自动化测试适配完美适配搭配iperf3 -s -1可循环连续跑多轮无崩溃不适合自动化批量循环单次手动短流量测试尚可UDP大带宽压测适配稳定不会因丢包引发瞬时超大报文冲击风险高极易打满WiFi/SDIO驱动队列射频链路卡死典型适用场景1. WiFi长时间稳定性压力测试2. 多信道/多天线方案横向对比3. UDP实时业务音视频抖动测试4. 嵌入式自动化批量复测1. 模拟固定大小文件完整上传/下载耗时测试2. WiFi本地存储联动读写带宽测试3. 产品流量限额、计费逻辑验证明显缺陷无法精准控制总传输字节仅能控制测试时长1. 丢包会放大网络负载2. 长会话极易断控制心跳3. 嵌入式设备易进程卡死报错

本月热点