有效带宽怎么估
从抓包估算有效吞吐的方法很直接:选一段稳定的传输窗口,用窗口内的 TCP 载荷字节数除以时长。得到的是实际有效带宽,再与链路标称值对照,差得多就要往窗口不足、丢包、排队这些方向查。它不需要专门的测速工具,用已有抓包文件就能算,适合事后复盘。
基本信息
| 计算公式 | 吞吐 ≈ TCP 载荷字节增量 / 时间增量 |
|---|---|
| 统计口径 | 只用 TCP 载荷字节,排除头部与重传 |
| 取样区段 | 避开握手与连接结束阶段 |
| 单位 | 字节每秒,与标称 Mbps 换算时先乘 8 |
典型使用场景
- 快速给出链路实际吞吐量级,与合同带宽对照
- 判断瓶颈来自窗口限制还是链路限制
- 变更前后对比吞吐收益
- 评估丢包对吞吐的实际影响
- 为容量规划提供实测数据输入
统计步骤
统计步骤
tshark -r a.pcap -Y "tcp.stream==1 && tcp.len>0" -T fields -e frame.time_relative -e tcp.len | head -50
# 观察传输节奏,确认哪一段处在稳定状态
tshark -r a.pcap -q -z io,stat,1,"SUM(tcp.len)tcp.stream==1"
# 按秒聚合 TCP 载荷,找出稳定平台区间,避免把慢启动段也算进去
tshark -r a.pcap -Y "tcp.analysis.retransmission" -T fields -e tcp.len | wc -l
# 单独统计重传的载荷量,从总量里扣掉口径对照
| 口径 | 取值方式 | 注意 |
|---|---|---|
| TCP 载荷字节 | tcp.len 求和 | 排除头部与重传 |
| 时间增量 | 首末帧时间差 | 在稳定段内取值 |
| 重传载荷 | 需要单独统计并从总量扣除 | 不扣除会让吞吐被高估 |
| 线路字节 | 含头部与封装开销 | 与标称带宽比较时用它 |
带宽单位要统一成字节每秒。与标称 Mbps 换算时先乘 8,这一步算错会让结论差 8 倍,是这类报告里最常见的低级错误,写结论前先检查单位。
短窗口受慢启动影响明显,统计时要选取足够长且稳定的区段。另外包含重传字节会把吞吐算高,必须按唯一载荷去重后再统计,否则优化前后对比会得出错误结论。
排查顺序
- 先确定被测流,按五元组或流编号筛选,避免混入其他流量
- 剔除握手、慢启动与结束阶段,只取稳定平台段
- 计算载荷吞吐并扣除重传字节,得到有效值
- 与链路标称带宽比较,算出效率比例
- 效率偏低时依次检查窗口设置、丢包与排队情况