• B
    tcp: Fix CWV being too strict on thin streams · d2e1339f
    Bendik Rønning Opstad 提交于
    Application limited streams such as thin streams, that transmit small
    amounts of payload in relatively few packets per RTT, can be prevented
    from growing the CWND when in congestion avoidance. This leads to
    increased sojourn times for data segments in streams that often transmit
    time-dependent data.
    
    Currently, a connection is considered CWND limited only after having
    successfully transmitted at least one packet with new data, while at the
    same time failing to transmit some unsent data from the output queue
    because the CWND is full. Applications that produce small amounts of
    data may be left in a state where it is never considered to be CWND
    limited, because all unsent data is successfully transmitted each time
    an incoming ACK opens up for more data to be transmitted in the send
    window.
    
    Fix by always testing whether the CWND is fully used after successful
    packet transmissions, such that a connection is considered CWND limited
    whenever the CWND has been filled. This is the correct behavior as
    specified in RFC2861 (section 3.1).
    
    Cc: Andreas Petlund <apetlund@simula.no>
    Cc: Carsten Griwodz <griff@simula.no>
    Cc: Jonas Markussen <jonassm@ifi.uio.no>
    Cc: Kenneth Klette Jonassen <kennetkl@ifi.uio.no>
    Cc: Mads Johannessen <madsjoh@ifi.uio.no>
    Signed-off-by: NBendik Rønning Opstad <bro.devel+kernel@gmail.com>
    Acked-by: NEric Dumazet <edumazet@google.com>
    Tested-by: NEric Dumazet <edumazet@google.com>
    Acked-by: NNeal Cardwell <ncardwell@google.com>
    Tested-by: NNeal Cardwell <ncardwell@google.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    d2e1339f
tcp_output.c 101.3 KB