| Index: net/quic/congestion_control/time_loss_algorithm.h
|
| diff --git a/net/quic/congestion_control/tcp_loss_algorithm.h b/net/quic/congestion_control/time_loss_algorithm.h
|
| similarity index 38%
|
| copy from net/quic/congestion_control/tcp_loss_algorithm.h
|
| copy to net/quic/congestion_control/time_loss_algorithm.h
|
| index 4232351f2beac80e1c498a7795ca331a37d7ed95..437a8837676bf28fa6be0884392d229d1394b3dd 100644
|
| --- a/net/quic/congestion_control/tcp_loss_algorithm.h
|
| +++ b/net/quic/congestion_control/time_loss_algorithm.h
|
| @@ -2,8 +2,8 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef NET_QUIC_CONGESTION_CONTROL_TCP_LOSS_ALGORITHM_H_
|
| -#define NET_QUIC_CONGESTION_CONTROL_TCP_LOSS_ALGORITHM_H_
|
| +#ifndef NET_QUIC_CONGESTION_CONTROL_TIME_LOSS_ALGORITHM_H_
|
| +#define NET_QUIC_CONGESTION_CONTROL_TIME_LOSS_ALGORITHM_H_
|
|
|
| #include <algorithm>
|
| #include <map>
|
| @@ -16,24 +16,34 @@
|
|
|
| namespace net {
|
|
|
| -// Class which implement's TCP's approach of detecting loss when 3 nacks have
|
| -// been received for a packet. Also implements TCP's early retransmit(RFC5827).
|
| -class NET_EXPORT_PRIVATE TCPLossAlgorithm : public LossDetectionInterface {
|
| +// A loss detection algorithm which avoids spurious losses and retransmissions
|
| +// by waiting 1.25 RTTs after a packet was sent instead of nack count.
|
| +class NET_EXPORT_PRIVATE TimeLossAlgorithm : public LossDetectionInterface {
|
| public:
|
| - TCPLossAlgorithm();
|
| - virtual ~TCPLossAlgorithm() {}
|
| + TimeLossAlgorithm();
|
| + virtual ~TimeLossAlgorithm() {}
|
|
|
| - // Uses nack counts to decide when packets are lost.
|
| + // Declares pending packets less than the largest observed lost when it has
|
| + // been 1.25 RTT since they were sent. Packets larger than the largest
|
| + // observed are retransmitted via TLP.
|
| virtual SequenceNumberSet DetectLostPackets(
|
| const QuicUnackedPacketMap& unacked_packets,
|
| const QuicTime& time,
|
| QuicPacketSequenceNumber largest_observed,
|
| - QuicTime::Delta srtt) OVERRIDE;
|
| -
|
| - // Return QuicTime::Zero.
|
| + QuicTime::Delta srtt,
|
| + QuicTime::Delta latest_rtt) OVERRIDE;
|
| +
|
| + // Returns the time the next packet will be lost, or zero if there
|
| + // are no nacked pending packets outstanding.
|
| + // TODO(ianswett): Ideally the RTT variance and the RTT would be used to
|
| + // determine the time a packet is considered lost.
|
| + // TODO(ianswett): Consider using Max(1.25 * srtt, 1.125 * last_rtt).
|
| virtual QuicTime GetLossTimeout() const OVERRIDE;
|
| +
|
| + private:
|
| + QuicTime loss_detection_timeout_;
|
| };
|
|
|
| } // namespace net
|
|
|
| -#endif // NET_QUIC_CONGESTION_CONTROL_TCP_LOSS_ALGORITHM_H_
|
| +#endif // NET_QUIC_CONGESTION_CONTROL_TIME_LOSS_ALGORITHM_H_
|
|
|