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
Statement of idempotency #1441
Conversation
draft-ietf-quic-transport.md
Outdated
@@ -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 |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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?
draft-ietf-quic-transport.md
Outdated
@@ -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, |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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)
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Idle timeout?
Yes, this is probably true, but it isn't necessary. Also, frames that arrive super late aren't generally all that interesting.
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.