首页/网络/抓包与流量分析速查/接收窗口限制吞吐的判据
TCP 流分析82 条

接收窗口限制吞吐的判据

高带宽时延积链路中,接收窗口不足会把吞吐压到窗口÷RTT:抓包显示发送量受限于窗口更新节奏,且几乎没有丢包与重传。

窗口限制吞吐是什么

在高带宽时延积链路上,接收窗口不足会把吞吐直接压到“窗口大小 ÷ 往返时间”的水平。这类情况有个鲜明特征:几乎没有丢包与重传,报文持续发出但发送量受接收窗口更新节奏牵制,通告窗口长期贴在上限附近,Window Full 标记周期性出现。它容易被误判成链路质量问题,因为用户体感就是慢。确认手段是对比加大接收缓冲或窗口缩放设置前后的吞吐:如果吞吐随窗口一起提升,瓶颈就在窗口而不是链路。

基本信息

判据无重传、窗口长期贴顶、RTT 稳定
高发场景高带宽时延积链路、跨地域传输、长肥管道
相关字段tcp.window_size_value、tcp.analysis.window_full
估算参照带宽时延积等于带宽乘以往返时间
主要调整项接收缓冲大小与窗口缩放选项

典型使用场景

  • 跨地域传输慢:长肥管道上窗口成为吞吐的硬上限
  • 与丢包型慢速区分:先看有没有重传,两类问题的处置完全不同
  • 验证窗口缩放:确认握手阶段窗口缩放选项是否协商成功
  • 分侧定位:判断限制来自发送侧拥塞窗口还是接收侧通告窗口
  • 调优验证:调整缓冲后复测吞吐,确认提升幅度符合预期

核对与估算

核对与估算
tshark -r a.pcap -Y 'tcp.analysis.window_full' | head
# 估算需要的窗口下限
# 带宽 100Mbps 约 12.5MB/s,RTT 40ms
# 12.5MB/s × 0.04s = 500KB,窗口需不小于该值
sysctl net.ipv4.tcp_rmem net.core.wmem_max   # 接收缓冲相关参数

两类慢速对照

类型重传情况窗口表现处置方向
丢包型有重传与重复确认不一定贴顶查链路丢包与拥塞控制
窗口型基本无重传长期贴顶调接收缓冲或确认应用读取速度
零窗型可能有重传窗口归零优先解决接收侧应用阻塞
接收侧应用读取慢同样会让窗口贴顶,需要结合接收侧的内存、CPU 与线程指标才能区分是缓冲参数设置问题还是程序处理能力问题。
窗口缩放在握手阶段协商,协商失败时通告大窗口并不生效;调参之前先确认选项是否真的启用,否则调整会毫无效果。

易错点

  • 客户端与服务端任意一侧缓冲不足都会限制吞吐,只调一侧然后测出没有变化就下结论,会漏掉真正的瓶颈侧
  • 调大接收窗口前要先确认接收侧的内存预算,过大缓冲会引入缓冲膨胀,把延迟问题变得更严重
  • 抓包里看不到重传就断定网络没问题并不成立,窗口受限恰恰是无重传的慢,需要按窗口贴顶特征继续判定
  • 窗口缩放未协商成功时大窗口通告无效,先确认选项是否生效再评估调参效果

数据来源与参考

  • RFC 7323(缩放)
  • Wireshark User's Guide
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌