4. 流量生成与捕获工具

在卫星组网流量测试中,工具链通常分为“造流量”和“看流量”两类。造流量负责在受控条件下产生可重复的负载,看流量负责把经过链路、网卡、协议栈的数据包完整记录下来,供后续统计与判读。本节围绕 Iperf、Scapy、Wireshark、Tcpdump 以及卫星专用流量生成器,说明它们各自适合解决什么问题、关键参数如何设置、结果如何观察。

一、Iperf:面向吞吐与时延的端到端打流

Iperf3 是最常用的 TCP/UDP 带宽测量工具,采用客户端—服务端模型。服务端先监听,客户端发起连接并持续发送数据,最终输出吞吐量、重传次数、抖动等统计。卫星链路典型特征是长时延、高误码、带宽受限,因此参数选择与地面网络有明显差异。

# 服务端(卫星远端站)
iperf3 -s -p 5201

# 客户端(中心站),TCP 上行 60 秒,窗口 512KB
iperf3 -c 192.168.10.20 -p 5201 -t 60 -w 512K -i 5

# UDP 测试,目标 20Mbps,报文 1200 字节
iperf3 -c 192.168.10.20 -u -b 20M -l 1200 -t 60 -i 5

关键判读点:TCP 模式下若出现大量 Retr(重传),说明链路丢包或窗口不足;UDP 模式下重点看 Jitter 与 Lost/Total 比例。卫星往返时延常在 250ms 以上(GEO),窗口需满足 BDP:带宽 20Mbps × RTT 0.5s ≈ 1.25MB,因此 -w 应显著大于默认值,否则吞吐会被窗口限制而非链路限制。建议先用 UDP 测链路可达速率,再用 TCP 验证端到端有效吞吐。

二、Scapy:构造自定义协议与异常流量

Scapy 是 Python 数据包操作库,能逐层构造、发送、嗅探和解析报文,适合生成卫星协议栈中非标准或异常场景的流量,例如自定义封装头、错误校验、分片、特定 DSCP 标记等。Iperf 只能产生“规整”的流,而 Scapy 可以精确控制每一个字段。

from scapy.all import *

# 构造带自定义载荷的 UDP 报文,指定 DSCP 与源端口
pkt = IP(dst="192.168.10.20", tos=0xB8) / \
      UDP(sport=40000, dport=9000) / \
      Raw(load=b"SAT-TEST-" + bytes(range(64)))

# 发送 100 个,间隔 0.01 秒
send(pkt, count=100, inter=0.01, iface="eth0")

使用 Scapy 时要注意:send() 工作在三层,sendp() 工作在二层;卫星网关口常需指定 iface。构造异常流量(如错误长度、非法选项)时,应先在隔离测试网段验证,避免影响在网业务。Scapy 的 sniff() 也可用于抓包,但高吞吐场景下性能不如 Tcpdump。

三、Wireshark 与 Tcpdump:捕获与深度解析

Tcpdump 是命令行抓包工具,资源占用低,适合在卫星远端站、网关等无图形界面的设备上长时间运行;Wireshark 提供图形化解析与过滤,适合在中心站对抓取文件做深入分析。两者常配合使用:Tcpdump 负责现场采集,Wireshark 负责离线分析。

# Tcpdump:抓取 9000 端口,每个文件 100MB,滚动 10 个
tcpdump -i eth0 -s 0 -w sat_%Y%m%d_%H%M%S.pcap \
        -C 100 -W 10 'udp port 9000'

# 只抓前 200 字节,降低存储压力
tcpdump -i eth0 -s 200 -w sat_head.pcap 'host 192.168.10.20'

Wireshark 中常用过滤表达式:ip.addr==192.168.10.20 && udp.port==9000 定位业务流;tcp.analysis.retransmission 快速筛出重传;udp.length > 1400 检查是否存在超长报文导致分片。卫星链路中若出现大量分片,会显著增加时延与丢包概率,应结合 MTU 与 MSS 调整。

四、卫星专用流量生成器

通用工具难以模拟卫星特有的多波束、多载波、时变衰减与切换行为。卫星专用流量生成器通常内置以下能力:按波束/载波维度配置并发流、注入时延抖动与误码模型、模拟雨衰导致的信噪比下降、按时间脚本触发波束切换。其输出一般包含每条流的速率、丢包、时延分布以及链路层统计,便于与网管数据对齐。

使用专用生成器时,建议先建立基线:在无衰减条件下测出各波束的参考吞吐与时延;再逐步注入衰减、抖动、切换事件,观察指标偏离基线的程度。这样可以把“链路本身能力”与“异常事件影响”分开评估。

卫星组网流量测试工具链:生成 → 传输 → 捕获 → 分析 流量生成 Iperf3(TCP/UDP) Scapy(自定义报文) 卫星专用生成器 卫星链路 GEO RTT ≈ 500ms 带宽 20Mbps / 误码 雨衰 / 波束切换 BDP = 20Mbps × 0.5s ≈ 1.25MB 流量捕获 Tcpdump(现场) Wireshark(离线) pcap 文件 指标判读 吞吐 / 重传 抖动 / 丢包 时延分布 分片 / MTU 关键参数与结果判读关系 输入参数 • 带宽 -b / 窗口 -w • 报文长度 -l / MTU • 测试时长 -t • DSCP / 端口 / 波束 • 衰减 / 抖动模型 链路行为 • 传播时延 • 误码与丢包 • 分片与重组 • 波束切换中断 • 雨衰信噪比下降 观测结果 • 吞吐量 Mbps • 重传 Retr • 抖动 Jitter • 丢包 Lost/Total • 时延分布 / 分片数 判断 达标 / 偏离 瓶颈定位 窗口是否足够 是否需调 MTU 异常事件归因

五、工具组合与使用建议

实际测试中,推荐按“先通后优”的顺序组合工具:先用 Iperf3 做端到端吞吐基线,确认链路可达速率;再用 Scapy 注入特定协议或异常报文,验证协议栈健壮性;同时用 Tcpdump 在关键节点持续抓包,事后用 Wireshark 做重传、分片、时延分析;涉及多波束、雨衰、切换等场景时,切换到卫星专用生成器,并与网管侧链路指标交叉比对。

抓包时建议统一时间基准(NTP 或 GPS 授时),否则多节点 pcap 无法对齐,时延分析会出现虚假偏差。卫星链路时延大,时间戳精度直接影响抖动计算。
Scapy 构造异常报文、专用生成器注入衰减模型时,务必在隔离测试网段或维护窗口内进行,避免误伤在网业务。抓包文件可能包含业务数据,需按安全要求脱敏与留存。

把工具用对,比把工具用多更重要。Iperf 回答“能跑多快”,Scapy 回答“协议对不对”,Tcpdump/Wireshark 回答“到底发生了什么”,卫星专用生成器回答“在真实卫星条件下会怎样”。四者配合,才能形成从生成、捕获到判读的完整闭环。