Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bytes_in_flight update issue #2009

Closed
larseggert opened this issue Nov 15, 2018 · 3 comments
Closed

bytes_in_flight update issue #2009

larseggert opened this issue Nov 15, 2018 · 3 comments
Assignees
Labels
-recovery design An issue that affects the design of the protocol; resolution requires consensus.

Comments

@larseggert
Copy link
Member

larseggert commented Nov 15, 2018

I think the following issue exists in the pseudo code:

For a new ACK block, OnAckReceived() first calls OnPacketAcked(), where OnPacketAckedCC() reduces bytes_in_flight by the sizes of whichever packets were ACKed.

Then,OnAckReceived() calls DetectLostPackets(), which reduces bytes_in_flight for every packet that it determines to be lost. That can cause bytes_in_flight to become zero.

Next, SetLossDetectionTimer() is called. The first thing that does is to cancel the loss_detection_timer when bytes_in_flight is zero.

So when and how are the packets that were declared lost retransmitted?

@tatsuhiro-t
Copy link
Contributor

I think endpoint should actively resend lost packets without timer. The endpoint already knows which packets are lost, so it can just start to resend them. After they are sent, start timer again.

@ianswett
Copy link
Contributor

Yes, just as in TCP, the timer is not used to retransmit any data determined lost by fast retransmit.

In the "Loss Detection" section it says:
"If a packet is lost, the QUIC transport needs to recover from that loss, such as by retransmitting the data, sending an updated frame, or abandoning the frame. For more information, see Section 13.2 of {{QUIC-TRANSPORT}}."

Is there some additional text you'd like?

@janaiyengar
Copy link
Contributor

@larseggert : That is correct behavior because even though packets have been deemed lost, nothing has been resent yet. bytes_in_flight == 0 means that there's nothing to start a timer for. When the lost data is retransmitted in new packets, OnPacketSent gets called, which sets the timer.

@mnot mnot added the design An issue that affects the design of the protocol; resolution requires consensus. label Mar 5, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-recovery design An issue that affects the design of the protocol; resolution requires consensus.
Projects
None yet
Development

No branches or pull requests

5 participants