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

Don't retransmit old MAX_STREAM_DATA #806

Closed
ekr opened this issue Sep 28, 2017 · 5 comments
Closed

Don't retransmit old MAX_STREAM_DATA #806

ekr opened this issue Sep 28, 2017 · 5 comments
Labels
-transport design An issue that affects the design of the protocol; resolution requires consensus. has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list.

Comments

@ekr
Copy link
Collaborator

ekr commented Sep 28, 2017

The current text says that one ought to retransmit MAX_STREAM_DATA:

   o  All application data sent in STREAM frames MUST be retransmitted,
      unless the endpoint has sent a RST_STREAM for that stream.  When
      an endpoint sends a RST_STREAM frame, data outstanding on that
      stream SHOULD NOT be retransmitted, since subsequent data on this
      stream is expected to not be delivered by the receiver.

   o  ACK and PADDING frames MUST NOT be retransmitted.  ACK frames
      containing updated information will be sent as described in
      Section 8.13.

   o  STOP_SENDING frames MUST be retransmitted, unless the stream has
      become closed in the appropriate direction.  See Section 10.3.
   o  All other frames MUST be retransmitted.

But this is silly. Say I transmitted MAX_STREAM_DATA=100, MAX_STREAM_DATA=200, MAX_STREAM_DATA=300 and then none of them were acknowledged. Why am I retransmitting frames which must be ignored.

@ianswett
Copy link
Contributor

Agreed, this is silly.

@janaiyengar
Copy link
Contributor

This is silly. We could say something along the lines of "the newest MAX_STREAM_DATA and MAX_DATA MUST be retransmitted until acked; all other previous flow control advertisements SHOULD NOT be retransmitted."

@martinthomson
Copy link
Member

Or as I have said on numerous occasions, we should rewrite this section so that it concentrates on the retransmission of the information contained in frames rather than the frames themselves. We have the same problem with all frame types that are used to carry data that needs to be reliably delivered to the other side, why not fix it systematically rather than piecemeal. The text above shows that we've done that for STREAM and ACK. The only frame that doesn't carry information that needs to be reliably delivered is PADDING.

@ianswett
Copy link
Contributor

Agreed, misuse of the word retransmit is a widespread issue. On the positive side, it should be an uncontroversial editorial fix.

@ekr
Copy link
Collaborator Author

ekr commented Oct 2, 2017

I think as a short-term fix we should do what Jana suggests. Minq presently does that. And the spec is so wrong now we should fix that ASAP

As a long-term fix, I think what we want is actually that when you discover it is time to retransmit MAX_STREAM_DATA (e.g., timer expired, you discover the data was lost) you send the then-current flow control window. That seems like it will be more accurate.

@mnot mnot added -transport design An issue that affects the design of the protocol; resolution requires consensus. labels Oct 10, 2017
@mnot mnot added the has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list. label Mar 5, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-transport design An issue that affects the design of the protocol; resolution requires consensus. has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list.
Projects
None yet
Development

No branches or pull requests

5 participants