副标题:丢包、抖动、iperf -u,以及 ping 通不等于画面不卡
专栏:《嵌入式学生的方案测试课》第 7 篇
前置:第 6 篇 TCP 握手;第 5 篇四层
标签:嵌入式、TCP/IP、WiFi、软件测试、物联网
读者:会 ping、会说 MQTT 上报成功,但还没用 iperf 灌过 UDP
学完交什么:iperf UDP 10M/50M 对照表、一句话「ping 通不等于图传不卡」、一张卡顿分层缺陷单
两台电脑同一网段就能做。没有第二台,用电脑加手机热点或本机 loopback 并写清局限。
0. 这篇结束你能干什么
- 能说明 UDP 无握手、无挥手、不保证到达、不保证顺序;物联网照样大量使用它(DNS、发现、音视频)。
- 会跑
iperf3 -u,读 Bandwidth、Lost/Total、Jitter;知道这叫打流,MQTT 两秒一包不叫打流。 - 面对图传卡顿,能列出射频、码率、SD、内存、发送阻塞,不把锅先判给「Wi-Fi 不好」。
MQTT 丢了会重传,温度晚两秒往往能忍。图传更像持续 UDP/RTP:丢了就是花屏、卡一下。用「发温湿度」的方法测图传,永远测不出卡顿。
1. 为什么图传不能按 MQTT 那套测
写信比喻:写了就扔邮筒,不保证对方收到,也不先打电话。
打电话是 TCP:先拨通。
图传卡 3 秒,MQTT 心跳可能仍是 PINGOK。两个业务对链路的需求差一个数量级:
| MQTT 上报 | 图传 / 数传打流 | |
|---|---|---|
| 速率 | 几百字节 / 数秒 | 数 Mbps 持续 |
| 丢包 | 重传、晚到也能用 | 直接花、卡、音画不同步 |
| 抖动 | 几乎无感 | 画面一顿一顿 |
| 探活 | ping / CONNECT | iperf 或看码流,不是 ping |
ping 通只说明 ICMP 偶尔能往返。ICMP 小包、低频,挤得进的链路,塞不下 720P。第 12 篇会把 TCP/UDP 打流做成性能报告。本篇先把 UDP 和「不是 ping」钉死。
2. 最小原理
- 无连接:没有 SYN。抓包直接是 UDP payload。对端没开端口,有的栈回 ICMP Port Unreachable,有的丢。
- 不保证到达、顺序、去重。应用自己处理(RTP 序号、重传 NACK、FEC)或放弃。
- 抖动 Jitter:时延的变化。平均时延不高但抖动大,播放器缓冲不够就卡。
- DNS、DHCP 部分交互、设备发现常用 UDP。不要一见 UDP 就说「不可靠所以产品不能用」。
- iperf UDP:指定码率硬发(
-b 10M)。发得出不等于对端收得全。Lost/Total 才是打分。
TCP 打流看吞吐和是否越来越慢(窗口、重传)。UDP 打流看在指定码率下丢多少。图传更像后者:编码器按码率硬出片。
3. 手把手:iperf3 UDP
安装 iperf3(Windows 可下官方构建)。防火墙放行。两机同一网段。
# 电脑 A iperf3 -s # 电脑 B iperf3 -c <A的IP> -u -b 10M -t 30 iperf3 -c <A的IP> -u -b 50M -t 30记录表:
条件 bitrate 实测收 Lost/Total Jitter RSSI/距离 同房间 1m 10M 同房间 1m 50M 隔一堵墙 10M (加分,第 12 篇会再做 TCP)10M 几乎不丢、50M 狂丢,说明链路有上限,不是「UDP 坏了」。隔墙 10M 开始丢,才进入射频/干扰。一次只改码率或只改墙。
没有第二台电脑:手机开热点,电脑当 client 连另一台能跑 iperf 的设备;或两张网卡。loopback127.0.0.1只能证明软件会用,不能当无线性能。报告写局限。
板子:有 iperf AT 的以后用AT+IPERF2(公开是 TCP 形态,名称以手册为准)。本篇 PC 对打即可。不要简历写「跑过模组 iperf」若你只跑了 PC。
4. 图传卡顿的分层(公开 TXW82x)
电脑连设备 Wi-Fi,播放器打开rtsp://ip/h264一类 URL(以公开文档为准)。能连无画、有画卡顿,不要只会松天线。
| 可能层 | 证据 |
|---|---|
| 射频/关联 | RSSI 差、多台近距离互扰(AH FAQ 要隔开) |
| IP | 根本没地址,第 5 篇 |
| 网络容量 | iperf UDP 丢包、抖动大 |
| 码率过高 | 降码率卡顿消失,iperf 显示链路撑不住原码率 |
| SD 写入堵 | 关录像好转;公开修过 SD 兼容、格式化死机 |
| 内存/碎片 | 堆下降、公开修过 mjpeg 大块申请、h264 空间不足死机 |
| 发送阻塞 | 第 3 篇,Socket 发送卡住,CPU0 应用核 |
缺陷单必须写「先确认是网络还是存储」:
标题:【图传】RTSP 能连,画面约 3s 一卡;iperf UDP 10M 丢包 20%,同时 SD 写入超时 初步分层:未定。下一步:关 SD 再看卡顿;隔墙只改距离再打流。没有摄像机:用「UDP 打流丢包时 MQTT 仍可能通」做思想实验,PC iperf 仍要跑。不要假装做了 RTSP。
5. 30 秒口径
UDP 无连接过程,不保证到达。
打流是 iperf 按码率硬灌,不是 ping,也不是两秒一包 MQTT。
图传卡顿要拆网络、码率、SD、内存,公开缺陷里空间不足和碎片很常见。
ping 通不等于画面不卡。
作业必答句:ping 是低频小包通断;图传是持续大带宽。ICMP 成功只说明路偶尔在,不说明路上跑得动码流。
6. 作业与自测
作业:labs/week07/iperf-udp.csv、ping-vs-video.md(那一句)、BUG-jitter.md(可教学注入:50M 打流丢包当「链路上限」记录,不要写成芯片缺陷)。
自测:1. UDP 有没有三次握手?没有。2. Lost/Total 0 但画面卡,下一步查谁?码率以外的 SD/内存/播放器。3. 把 ping 当打流错在哪?包大小和频率都不够压链路。
下一篇第 8 篇是专栏最细的一篇:默认 Wireshark 是网口;同一 AP 下为什么看不到设备 MQTT;电脑开热点怎么抓到 CONNECT。
(第 7 篇完)
7. 泰芯对照(本篇正文漏了独立节,补在这里)
AH 公开打流是AT+IPERF2的 TCP 形态;1.6 无 IP 则两边电脑打流,电脑侧仍可用本篇 UDP iperf 看透传丢包。近距离多台卡顿先隔开。图传卡顿公开清单含 Wi-Fi、码率、SD、内存、Socket 阻塞。学生无摄像机时只跑 PC UDP,报告写「未做 RTSP」。
SRRC 自适应要先打流:那是第 12、16 篇。本篇宿舍只做 iperf UDP 学习读 Lost/Total。
8. 缺陷单再钉一次 ping 与打流
标题:【认知记录】同位置 ping 0% 丢,iperf UDP 50M Lost 62%,MQTT 2s 上报仍成功 期望:性能测试不得只用 ping 或 MQTT 作为通过准则 实际:三者同时成立 分层:方法。不是芯片缺陷。把这张单放进 week07,防止以后自己把 ping 写进性能通过。
9. 合格输出
iperf3 -u -b 10M -t 30 Lost=0.x% iperf3 -u -b 50M -t 30 Lost=yy% 拓扑:两台 PC 有线/无线写清 loopback 未当无线结论