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

transport: MUST vs MAY #4332

Closed
kazu-yamamoto opened this issue Nov 5, 2020 · 11 comments
Closed

transport: MUST vs MAY #4332

kazu-yamamoto opened this issue Nov 5, 2020 · 11 comments
Labels
-transport editorial An issue that does not affect the design of the protocol; does not require consensus. ietf-lc An issue that was raised during IETF Last Call.

Comments

@kazu-yamamoto
Copy link
Contributor

Sec 12.4 uses MUST:

An endpoint MUST treat receipt of a frame in a packet type that is not permitted as a connection error of type PROTOCOL_VIOLATION.

Sec 12.5 uses MAY:

Note that it is not possible to send the following frames in 0-RTT packets for various reasons: ACK, CRYPTO, HANDSHAKE_DONE, NEW_TOKEN, PATH_RESPONSE, and RETIRE_CONNECTION_ID. A server MAY treat receipt of these frames in 0-RTT packets as a connection error of type PROTOCOL_VIOLATION.

Aren't they contradictory?

@martinthomson
Copy link
Member

Not contradictory. These are not impermissible, they are instead impossible. An endpoint is required (MUST) to reject impermissible frames, but merely allows (MAY) to reject impossible frames.

@kazu-yamamoto
Copy link
Contributor Author

How we can distinguish impermissible and impossible?

@martinthomson
Copy link
Member

What is permitted is in the bullet list in S12.5. Anything else is impermissible. What is impossible is noted in the paragraph after that. If you don't care to distinguish the two (which is entirely reasonable), then treat them all as connection errors.

(I think that our code has a mixed stance because we don't care to police based on endpoint role.)

@kazu-yamamoto
Copy link
Contributor Author

I'm still puzzled in Section 12.4 and 12.5. Which does "Pkts" in the Table 3 mean, permissible or possible?

I guess it's "possible". ACK, CRYPTO, HANDSHAKE_DONE, NEW_TOKEN, PATH_RESPONSE, and RETIRE_CONNECTION_ID are impossible in 0-RTT. But PATH_RESPONSE and RETIRE_CONNECTION_ID are marked with "0".

@martinthomson
Copy link
Member

Yes, possible.

@larseggert larseggert added -transport ietf-lc An issue that was raised during IETF Last Call. labels Nov 5, 2020
@larseggert larseggert added this to Triage in Late Stage Processing via automation Nov 5, 2020
@martinthomson martinthomson added the editorial An issue that does not affect the design of the protocol; does not require consensus. label Nov 5, 2020
@project-bot project-bot bot moved this from Triage to Editorial Issues in Late Stage Processing Nov 5, 2020
@larseggert
Copy link
Member

@kazu-yamamoto can this be closed?

@martinthomson martinthomson added the proposal-ready An issue which has a proposal that is believed to be ready for a consensus call. label Nov 10, 2020
@project-bot project-bot bot moved this from Editorial Issues to Consensus Emerging in Late Stage Processing Nov 10, 2020
@kazu-yamamoto
Copy link
Contributor Author

@larseggert No. I'm still confused.

@kazu-yamamoto
Copy link
Contributor Author

@martinthomson

Note that it is not possible to send the following frames in 0-RTT packets for various reasons: ACK, CRYPTO, HANDSHAKE_DONE, NEW_TOKEN, PATH_RESPONSE, and RETIRE_CONNECTION_ID. A server MAY treat receipt of these frames in 0-RTT packets as a connection error of type PROTOCOL_VIOLATION.

This talks about "impossible". This text should be moved to Sec 12.4. And if this text is correct, the 0 mark of NEW_TOKEN, PATH_RESPONSE, and RETIRE_CONNECTION_ID should be removed.

@kazu-yamamoto
Copy link
Contributor Author

Sec 12.4 talks about "possible" and Sec 12.5 talks about "permissible":

So, "An endpoint MUST treat receipt of a frame in a packet type that is not permitted as a connection error of type PROTOCOL_VIOLATION" should be moved from Sec 12.4 to Sec 12.5.

@LPardue
Copy link
Member

LPardue commented Dec 8, 2020

Its been 28 days with no updates or PR, what is the status here?

@martinthomson
Copy link
Member

The implied proposal was no action. I'm going to close it. There's a narrow window remaining for pull requests still, but we have to draw the line soon.

Late Stage Processing automation moved this from Consensus Emerging to Issue Handled Dec 8, 2020
@LPardue LPardue removed the proposal-ready An issue which has a proposal that is believed to be ready for a consensus call. label Dec 10, 2020
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. ietf-lc An issue that was raised during IETF Last Call.
Projects
Late Stage Processing
  
Issue Handled
Development

No branches or pull requests

4 participants