Skip to content
  • Bendik Rønning Opstad's avatar
    tcp: Fix CWV being too strict on thin streams · d2e1339f
    Bendik Rønning Opstad authored
    
    
    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: default avatarBendik Rønning Opstad <bro.devel+kernel@gmail.com>
    Acked-by: default avatarEric Dumazet <edumazet@google.com>
    Tested-by: default avatarEric Dumazet <edumazet@google.com>
    Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
    Tested-by: default avatarNeal Cardwell <ncardwell@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d2e1339f