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

Congestion control #28

Open
pietdevaere opened this issue Oct 19, 2017 · 1 comment
Open

Congestion control #28

pietdevaere opened this issue Oct 19, 2017 · 1 comment

Comments

@pietdevaere
Copy link
Contributor

I'm currently working on congestion control & loss dection. I'm basing my work on draft-ietf-quic-recovery-06 [1].
Progress can be somewhat followed in [2].

[1] https://tools.ietf.org/html/draft-ietf-quic-recovery-06
[2] https://github.com/pietdevaere/minq/tree/congestion_control

@pietdevaere
Copy link
Contributor Author

@ekr, what do you think of the idea to split up the outputClearQ and the outputProtectedQ in to two queues each: outputClearQ and outstandingClearQ. When frames are handed off by the stream to the connection, they are placed in outputClearQ. When they are transmitted, they are moved to outstandingClearQ. When the loss detector considers them lost, they are moved back to outputClearQ, and when they are acked they are removed from both queues. That way sendQueuedFrames() (which I splitted of from queueStreamFrames) does not have to iterate through the output queue to find packets that it can transmit. It can just take the top ones from outputClearQ.

To make things more efficient we could maybe also add a map[pn][]*frame kind of structure tracking which frames a packet contains. That way the loss detector & ack handler don't have to do lengthy linear searches to find the frames corresponding to a packet. We could then also remove that info from the frame struct.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant