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

Encoding of blocksize in ACK frames. #679

Closed
huitema opened this issue Jul 5, 2017 · 5 comments
Closed

Encoding of blocksize in ACK frames. #679

huitema opened this issue Jul 5, 2017 · 5 comments
Labels
-transport editorial An issue that does not affect the design of the protocol; does not require consensus.

Comments

@huitema
Copy link
Contributor

huitema commented Jul 5, 2017

The text that describe the encoding of block lengths in the ACK frames is a bit too smart for my test. It reads:

First ACK Block Length:

: An unsigned packet number delta that indicates the number of contiguous additional packets being
acknowledged starting at the Largest Acknowledged.

If I look at it with attention, I understand it to mean "the number of continuous packet being acknowledged, not counting the Largest Acknowledged."

Is this correct? Does highest=5, length=2 means "Acknowledging packets 5, 4 and 3", not just "5 and 4"? If yes, some more direct language would be nice.

@MikeBishop
Copy link
Contributor

That's how I read it, yes -- as "additional" packets. Otherwise zero would be a nonsensical value.

@martinthomson
Copy link
Member

I had the same reading of this as both of you. However, if we want to allow a larger gap, then having zero length on subsequent ACK blocks might have some utility and consistency with that is perhaps desirable.

@larseggert
Copy link
Member

Understood it this way, too, but had to re-read the sentence a few times. Suggest to add @huitema's example to the draft?

@martinthomson martinthomson added -transport editorial An issue that does not affect the design of the protocol; does not require consensus. labels Aug 14, 2017
@igorlord
Copy link
Contributor

igorlord commented Oct 4, 2017

Does Gap = 0 ever make sense? I do not think so.
We could do one of two things:

  1. Define the actual gap to be Gap+1 (and keep the semantics of "ACK Block Length" unchanged), or

  2. If Gap=0, the following (("ACK Block Length" << 8) | "Following Gap") actually defines the length of the gap. In this case, the semantics of the regular "ACK Block Length" can be made to match "First ACK Block Length", and chances are excellent that multiple ACK frames will not be needed.

Option 2 has a few special cases in it: (a) If "ACK Block Length" is 64 bit, (("ACK Block Length" << 8) | "Following Gap") is too large; (b) the last Gap=0 still does not make sense (unless someone is willing to assign semantics to it).

@ianswett
Copy link
Contributor

I think this is closed by #877

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-transport editorial An issue that does not affect the design of the protocol; does not require consensus.
Projects
None yet
Development

No branches or pull requests

6 participants