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

Rename "retransmittable" frames and packets #1595

Closed
ianswett opened this issue Jul 23, 2018 · 24 comments
Closed

Rename "retransmittable" frames and packets #1595

ianswett opened this issue Jul 23, 2018 · 24 comments
Assignees
Labels
-recovery editorial An issue that does not affect the design of the protocol; does not require consensus.

Comments

@ianswett
Copy link
Contributor

The word retransmittable is used in the recovery draft for both frames and packets that cause an ACK frame to be sent in response to their receipt.

This is really misleading, because QUIC never retransmits packets(except maybe connection close) and only sometimes retransmits frames.

Ideally we'd have different words for the frames and the packets containing those frames, but at a minimum I want to stop using retransmittable.

Previous suggestions:

  • Ackable - I didn't like this before, but it's strictly better than retransmittable.
  • Reliable - Maybe a good term for packets, less good for frames?
  • Needs Acknowledgement - Verbose, but correct. Possibly abbreviated to Nack for maximum confusion :)
  • Persistent

I'm want to change retransmittable to something else before the next drafts, so please suggest alternatives now and I'll write a PR for whatever people hate the least.

@ianswett ianswett added the editorial An issue that does not affect the design of the protocol; does not require consensus. label Jul 23, 2018
@ianswett ianswett self-assigned this Jul 23, 2018
@nibanks
Copy link
Member

nibanks commented Jul 23, 2018

I'd throw my vote to Reliable. Reliable frames contain data/information that needs to be reliably delivered. and reliable packets contain reliable frames.

@LPardue
Copy link
Member

LPardue commented Jul 23, 2018

  • Wants Acknowledgement - Wack
  • Acknowledgement Required - Ackr
  • Receipt Required - RecReq

:~)

@mikkelfj
Copy link
Contributor

mikkelfj commented Jul 23, 2018

Reliable frames are no good - they are not reliable at all. They get lost and are never seen again.

Committed frames convey the fact that once they are sent, they are committed to get the information delivered either by themselves or by those that follow in their path. Not necessarily the same information, but at least the same kind. It's like a treaty where one government honors decistions of past governments (but of course not all governments are commited and the same is true for frames).

@ianswett
Copy link
Contributor Author

Ooh, I like Wack frames.

@kazuho
Copy link
Member

kazuho commented Jul 24, 2018

Aside from Wack, I'd prefer something like "ACK-eliciting".

In my view, it should rather not be called "ACKable", because even an ACK frame expects an acknowledgement. IIUC, we are looking for a term for frames that invokes an early acknowledgement.

I am not sure if "reliable" or "committed" is a good term, because we have PING, which is not something that is guaranteed to be delivered. Instead, it is something that just elicits an acknowledgement. The sender has the total freedom of deciding whether or not to resend an PING if it does not see an acknowledgement.

@mikkelfj
Copy link
Contributor

On PING:
you can have committed frames, and ACK eliciting frames, and they are mostly the same, but not always. So it makes sense to have different terms.

ACK-inducing would be an alternative to ACK-eliciting.

@mikkelfj
Copy link
Contributor

On Wack:

It would be more precisely to name them Whack frames because like whack-a-mole, they keep popping up again in a new form. Mole might actually be the correct term here.

https://www.youtube.com/watch?v=VoP1E9J4jpg

@huitema
Copy link
Contributor

huitema commented Aug 1, 2018

Interesting to look back at this after the discussion of flow control. Take the MAX DATA frame. It does elicit an advertisement. It may be retransmitted, but really should not. Instead, if the packet carrying the frame is lost, the "receiver" (sender of MAX DATA) should check whether it already sent a MAX DATA frame carrying a higher limit, in which case there is no need for retransmission. If the frame is the newest, it should probably still not be retransmitted as is -- there may be a need to check create a new frame containing the latest MAX DATA value. So the MAX DATA frame elicits ACKS, its loss should be detected, but how retransmission proceeds depends on the state of the connection...

@huitema
Copy link
Contributor

huitema commented Aug 1, 2018

I like reliable for frames like MAX DATA, but you really need to define reliable...

@ianswett
Copy link
Contributor Author

I believe Martin implicitly suggested "outstanding" by writing PR #1652

@ianswett
Copy link
Contributor Author

And another would be "unacked" indicating it has not been acknowledged, but will be.

@ianswett
Copy link
Contributor Author

Victor suggested "tracked" FYI

@dtikhonov
Copy link
Member

I say we use "ackent".

@mikkelfj
Copy link
Contributor

mikkelfj commented Nov 5, 2018

Victor suggested "tracked" FYI

I was also considering that, but didn't fully convince myself.

@larseggert
Copy link
Member

+1 for wack :-)

@RyanTheOptimist
Copy link
Contributor

RyanTheOptimist commented Nov 6, 2018 via email

@dtikhonov
Copy link
Member

dtikhonov commented Nov 11, 2018

Something like "wack", "tracked", "ackent" don't have obvious english language interpretations

I disagree. While wack (not an adjective!) and tracked (only implies action tangentially) are indeed poor choices, ackent belongs to a family of English adjectives ending with ent wherein ent implies causation or causing action related to the suffixed part of the word:

  • astringent
  • indulgent
  • pestilent
  • propellent
  • prurient
  • quiescent
  • somnolent
  • truculent
  • urgent

Ackent: causing ACKs. Sounds logical and English to me.

@huitema
Copy link
Contributor

huitema commented Nov 11, 2018 via email

@RyanTheOptimist
Copy link
Contributor

RyanTheOptimist commented Nov 11, 2018 via email

@RyanTheOptimist
Copy link
Contributor

RyanTheOptimist commented Nov 11, 2018 via email

@dtikhonov
Copy link
Member

it's simply the case that "ackent" is not a word.

Sure it is: you just used it several times above. A dictionary is not a legal document.

It's perhaps worth pointing out that an "indulgent" person is a person who indulges. [...]

I listed "indulgent" thinking of being "indulgent to" -- that is, deriving from the transitive version of the verb "to indulge" (which is the first meaning). My thinking was that being indulgent to someone is to invite (cause) more behavior of the same kind. Thinking more about this, however, makes me realize that this adjective is not part of the group listed about, as "indulgent" does not cause indulgence.

"Truculent," various +1, smiling emojis:

I'll see how you laugh when the "ack-eliciting" beast lands and you have to a) say or think it and b) make enums like FRAME_ACK_ELICITING. Blech!

@mikkelfj
Copy link
Contributor

ACK-inducing, -prompting, -triggering, -requesting

@dtikhonov
Copy link
Member

Ackigenous

@janaiyengar
Copy link
Contributor

janaiyengar commented Dec 7, 2018

Thanks for the discussion, folks. Unless people are really against it, I propose we go with ack-eliciting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-recovery 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

10 participants