丢包与时延定位60 条

有效带宽估算

从抓包估算单向吞吐:取一段稳定传输窗口,用字节数除以时长;再对照链路标称值看效率,差得多再查窗口与丢包。

有效带宽怎么估

从抓包估算有效吞吐的方法很直接:选一段稳定的传输窗口,用窗口内的 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 倍,是这类报告里最常见的低级错误,写结论前先检查单位。
短窗口受慢启动影响明显,统计时要选取足够长且稳定的区段。另外包含重传字节会把吞吐算高,必须按唯一载荷去重后再统计,否则优化前后对比会得出错误结论。

排查顺序

  • 先确定被测流,按五元组或流编号筛选,避免混入其他流量
  • 剔除握手、慢启动与结束阶段,只取稳定平台段
  • 计算载荷吞吐并扣除重传字节,得到有效值
  • 与链路标称带宽比较,算出效率比例
  • 效率偏低时依次检查窗口设置、丢包与排队情况

易错点

  • 把重传字节算进吞吐:数值偏高,优化前后的差异会被掩盖
  • 在慢启动段取样:窗口未打开时的速率不能代表链路能力
  • 单位换算出错:字节与比特混用会让结论差 8 倍
  • 取过短的统计窗口:少量突发的波动被当成稳定吞吐

数据来源与参考

  • RFC 6349(TCP 吞吐量测试)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌