• Yuchung Cheng's avatar
    tcp: reduce cwnd if retransmit is lost in CA_Loss · 291a00d1
    Yuchung Cheng authored
    If the retransmission in CA_Loss is lost again, we should not
    continue to slow start or raise cwnd in congestion avoidance mode.
    Instead we should enter fast recovery and use PRR to reduce cwnd,
    following the principle in RFC5681:
    
    "... or the loss of a retransmission, should be taken as two
     indications of congestion and, therefore, cwnd (and ssthresh) MUST
     be lowered twice in this case."
    
    This is especially important to reduce loss when the CA_Loss
    state was caused by a traffic policer dropping the entire inflight.
    The CA_Loss state has a problem where a loss of L packets causes the
    sender to send a burst of L packets. So a policer that's dropping
    most packets in a given RTT can cause a huge retransmit storm. By
    contrast, PRR includes logic to bound the number of outbound packets
    that result from a given ACK. So switching to CA_Recovery on lost
    retransmits in CA_Loss avoids this retransmit storm problem when
    in CA_Loss.
    Signed-off-by: default avatarYuchung Cheng <ycheng@google.com>
    Signed-off-by: default avatarNandita Dukkipati <nanditad@google.com>
    Signed-off-by: default avatarNeal Cardwell <ncardwell@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    291a00d1
tcp_input.c 177 KB