X-List-Received-Date: Mon, 11 Feb 2019 15:33:46 -0000
----==_mimepart_5c6195d72697c_ede3febf3ad45c03232a9
Content-Type: text/plain;
charset=UTF-8
Content-Transfer-Encoding: 7bit
I just tried to sketch the algorithm using a packet-number-space dependent `loss_time`, i.e. `loss_time[kPacketNumberSpace]`. In `SetLossDetectionTimer()`, you'd then use the smallest (non-zero) `loss_time` for your timer, and only arm the crypto retransmission timeout if all 3 `loss_time`s are 0.
This seems to work fine, and is generally (a lot) more aggressive than what we currently have, however, there's one corner case where it's less aggressive. Consider the following sequence of packets being sent:
```
t=1: Initial 1
t=2: Initial 2
t=3: Handshake 1
```
Now we receive an ACK for Initial 2, and arm the early retransmit timer at `t=1+1.125x`, where `x` is the RTT. When this timer fires, we retransmit Initial 1 as Initial 3. The crypto retransmission timeout will now be set this time plus 2 RTT, i.e. `t=1+3.125x`. This is then the first time we retransmit Handshake 1.
Without the early retransmit timer, we would have retransmitted Handshake 1 2 RTTs after sending it, i.e. at `t=3+2x`, which for all realistic RTTs would be earlier.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2435#issuecomment-462371300
----==_mimepart_5c6195d72697c_ede3febf3ad45c03232a9
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: quoted-printable
I just tried to sketch the algorithm using a packet-number-space depen=
dent `loss_time`

, i.e. `loss_time[kPacketNumberSpace]. In ``SetLossDetectionTimer()`

, you'd then use the smallest=
(non-zero) `loss_time`

for your timer, and only arm the crypt=
o retransmission timeout if all 3 `loss_time`

s are 0.

This seems to work fine, and is generally (a lot) more aggressive than wh=
at we currently have, however, there's one corner case where it's less ag=
gressive. Consider the following sequence of packets being sent:

```
``````
t=3D1: Initial 1
t=3D2: Initial 2
t=3D3: Handshake 1
```

Now we receive an ACK for Initial 2, and arm the early retransmit time=
r at `t=3D1+1.125x`

, where `x`

is the RTT. When thi=
s timer fires, we retransmit Initial 1 as Initial 3. The crypto retransmi=
ssion timeout will now be set this time plus 2 RTT, i.e. ```
t=3D1+3.12=
5x
```

. This is then the first time we retransmit Handshake 1.

Without the early retransmit timer, we would have retransmitted Handshake=
1 2 RTTs after sending it, i.e. at `t=3D3+2x`

, which for all =
realistic RTTs would be earlier.

&m=
dash;

You are receiving this because you are subscribed to this thre=
ad.

Reply to this email directly, view it on GitHub,=
or mute the thread.

=
----==_mimepart_5c6195d72697c_ede3febf3ad45c03232a9--