• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jdz
V2EX  ›  程序员

一直不明白为何 reno 拥塞控制算法,在快速恢复阶段要把拥塞窗口减为原来的一半 + 3 , 主要不理解为何是 一半呢

  •  
  •   jdz · Jun 13, 2020 · 3225 views
    This topic created in 2185 days ago, the information mentioned may be changed or developed.
    6 replies    2020-06-14 14:23:08 +08:00
    watzds
        1
    watzds  
       Jun 13, 2020 via Android
    有些就是拍脑袋定的,不一定合理,肯定不是所有情况合理
    我看那本 Wireshark 网络分析的书里这么写的
    scukmh
        2
    scukmh  
       Jun 13, 2020
    有两种实现,其中有一种是一半加三,另一种是标准的一半。如果我没记错的话。感觉这只是一个理论与实现的区别。
    gzfrankie
        3
    gzfrankie  
       Jun 13, 2020 via iPhone   ❤️ 3
    不是拍脑袋定的

    因为 reno 的 fast recovery 阶段触发条件是收到 3 duplicate ACKs,这就说明了 Congestion windows 至少可以成功传输 3 个 segment,所以新的 Congestion windows 就设为原 Congestion windows/2 + 3 。

    举例,传输过程 13 号 segment 传输成功,14 号 segment 传丢了,这时候传 15 、16 、17 号 segment 后,分别收到了 3 个 13 号 segment 的 ACKs,这说明 15 、16 、17 号其实是传输成功的。说明 Congestion Windows 至少可以传 3 个 segment,所以新的 congestion windows 最小值可以设为 3 。
    jdz
        4
    jdz  
    OP
       Jun 13, 2020
    @gzfrankie +3 我可以理解, 但是为什么要减半呢
    cxhhh
        5
    cxhhh  
       Jun 13, 2020   ❤️ 2
    为什么乘性减因子为 1/2 ?
    因为如果连接是稳定运行的,并且出现了丢包,这可能是因为一个新的连接启动并占用了你的一些带宽。你应该将窗口减少一半,因为你可用的带宽已经减少了一半。而且,如果有两个以上的连接共享带宽,则将窗口减半是保守的——在高流量密集时保持保守可能是明智的。
    建议阅读一下 van jacobson 的论文“congestion avoidance and control”
    wsy2220
        6
    wsy2220  
       Jun 14, 2020
    为了收敛
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2988 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 132ms · UTC 07:09 · PVG 15:09 · LAX 00:09 · JFK 03:09
    ♥ Do have faith in what you're doing.