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

Statement of idempotency #1441

Merged
merged 3 commits into from Jun 14, 2018
Merged

Statement of idempotency #1441

merged 3 commits into from Jun 14, 2018

Conversation

MikeBishop
Copy link
Contributor

Fixes #1424.

Marked as editorial, since this is just a statement of what is already true about all frames anyway. However, it's implicit that this should also be true of frames defined in the future or in extensions, so it's a bit broader than the usual editorial change.

@MikeBishop MikeBishop added editorial An issue that does not affect the design of the protocol; does not require consensus. -transport labels Jun 12, 2018
@@ -906,6 +906,11 @@ explained in more detail as they are referenced later in the document.
| 0x10 - 0x17 | STREAM | {{frame-stream}} |
{: #frame-types title="Frame Types"}

All QUIC frames are idempotent. That is, the state of the connection is
unchanged regardless of whether a frame is processed one time or multiple times,
and a frame can be received and processed without error at any point between the
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not all frames are processed without errors, so this is a bit awkward

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps that it never produces an error on a subsequent processing that it didn't produce the first time?

@@ -906,6 +906,11 @@ explained in more detail as they are referenced later in the document.
| 0x10 - 0x17 | STREAM | {{frame-stream}} |
{: #frame-types title="Frame Types"}

All QUIC frames are idempotent. That is, the state of the connection is
unchanged regardless of whether a frame is processed one time or multiple times,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about: A valid frame does not change the state of the connection as a result of being received more than once.

Copy link
Contributor

@mikkelfj mikkelfj Jun 12, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It could affect the state in terms of congestion logic and timeouts (I suppose, at least the packet can)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mikkelfj, presumably you are talking about receiving ACK frames. It shouldn't affect the state of congestion control or timeouts, since it all relies on whether an ACK frame has new information or not.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that it's packets and (specifically) ACKs that affect congestion and loss recovery state.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A valid frame does not cause undesirable side effects or errors when received more than once.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like this last re"framing"

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Idle timeout?

MikeBishop and others added 2 commits June 13, 2018 14:52
Yes, this is probably true, but it isn't necessary.  Also, frames that arrive super late aren't generally all that interesting.
@martinthomson martinthomson merged commit 5cdb2b2 into master Jun 14, 2018
@martinthomson martinthomson deleted the transport/frame_idempotency branch June 14, 2018 02:51
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

Successfully merging this pull request may close these issues.

None yet

5 participants