QUIC: A UDP-Based Multiplexed and Secure Transport
RFC 9000
Revision differences
Document history
Date | Rev. | By | Action |
---|---|---|---|
2022-02-19
|
34 | (System) | Received changes through RFC Editor sync (added Verified Errata tag) |
2022-01-07
|
34 | (System) | Received changes through RFC Editor sync (added Errata tag) |
2021-05-28
|
34 | (System) | IANA registries were updated to include RFC9000 |
2021-05-27
|
34 | (System) | Received changes through RFC Editor sync (created alias RFC 9000, changed abstract to 'This document defines the core of the QUIC transport protocol. QUIC … Received changes through RFC Editor sync (created alias RFC 9000, changed abstract to 'This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.', changed pages to 151, changed standardization level to Proposed Standard, changed state to RFC, added RFC published event at 2021-05-27, changed IESG state to RFC Published) |
2021-05-27
|
34 | (System) | RFC published |
2021-05-20
|
34 | (System) | RFC Editor state changed to AUTH48-DONE from AUTH48 |
2021-04-27
|
34 | (System) | RFC Editor state changed to AUTH48 |
2021-03-19
|
34 | (System) | RFC Editor state changed to RFC-EDITOR from EDIT |
2021-02-12
|
34 | (System) | IANA Action state changed to RFC-Ed-Ack from Waiting on RFC Editor |
2021-02-11
|
34 | (System) | IANA Action state changed to Waiting on RFC Editor from In Progress |
2021-02-11
|
34 | (System) | IANA Action state changed to In Progress from Waiting on Authors |
2021-02-11
|
34 | (System) | IANA Action state changed to Waiting on Authors from In Progress |
2021-02-11
|
34 | Tero Kivinen | Closed request for Last Call review by SECDIR with state 'Overtaken by Events' |
2021-02-11
|
34 | Tero Kivinen | Assignment of request for Last Call review by SECDIR to Tirumaleswar Reddy.K was marked no-response |
2021-02-03
|
34 | (System) | RFC Editor state changed to EDIT |
2021-02-03
|
34 | (System) | IESG state changed to RFC Ed Queue from Approved-announcement sent |
2021-02-03
|
34 | (System) | Announcement was received by RFC Editor |
2021-02-03
|
34 | (System) | IANA Action state changed to In Progress |
2021-02-03
|
34 | Cindy Morgan | IESG state changed to Approved-announcement sent from Approved-announcement to be sent |
2021-02-03
|
34 | Cindy Morgan | IESG has approved the document |
2021-02-03
|
34 | Cindy Morgan | Closed "Approve" ballot |
2021-02-03
|
34 | Magnus Westerlund | IESG state changed to Approved-announcement to be sent from IESG Evaluation::AD Followup |
2021-02-03
|
34 | Magnus Westerlund | Ballot approval text was generated |
2021-01-14
|
34 | (System) | Sub state has been changed to AD Followup from Revised ID Needed |
2021-01-14
|
34 | (System) | IANA Review state changed to Version Changed - Review Needed from IANA OK - Actions Needed |
2021-01-14
|
34 | Martin Thomson | New version available: draft-ietf-quic-transport-34.txt |
2021-01-14
|
34 | (System) | New version approved |
2021-01-14
|
34 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson |
2021-01-14
|
34 | Martin Thomson | Uploaded new revision |
2021-01-14
|
34 | Martin Thomson | Uploaded new revision |
2021-01-14
|
33 | Magnus Westerlund | [Ballot comment] IANA is now happy. So waiting for updated draft of that before approving. |
2021-01-14
|
33 | Magnus Westerlund | [Ballot Position Update] Position for Magnus Westerlund has been changed to Yes from Discuss |
2021-01-10
|
33 | Benjamin Kaduk | [Ballot comment] Thank you for addressing my Discuss point! My previous comments and the associated github issues are available at https://mailarchive.ietf.org/arch/msg/quic/yiSeJb2bgM4Aeef-ut5K1PhVNrw/ with thanks to Lucas … [Ballot comment] Thank you for addressing my Discuss point! My previous comments and the associated github issues are available at https://mailarchive.ietf.org/arch/msg/quic/yiSeJb2bgM4Aeef-ut5K1PhVNrw/ with thanks to Lucas for doing the format conversion. |
2021-01-10
|
33 | Benjamin Kaduk | [Ballot Position Update] Position for Benjamin Kaduk has been changed to Yes from Discuss |
2021-01-08
|
33 | Robert Wilton | [Ballot comment] As per my prior discuss comments on email, I'm generally supportive of this protocol and document, but don't support how it defines the … [Ballot comment] As per my prior discuss comments on email, I'm generally supportive of this protocol and document, but don't support how it defines the spin-bit which is likely to negatively impact network operations and manageability. Hopefully, as the industry gains experience from its deployment, future versions of this protocol will act to mitigate the manageability issues (including measuring packet loss) that are being raised by network operators. |
2021-01-08
|
33 | Robert Wilton | Ballot comment text updated for Robert Wilton |
2021-01-08
|
33 | Robert Wilton | [Ballot comment] As per my prior discuss comments on email, I'm generally supportive of this protocol and document, but don't support how it defines the … [Ballot comment] As per my prior discuss comments on email, I'm generally supportive of this protocol and document, but don't support how it defines the spin-bit which is likely to negatively impact network operations and manageability. Hopefully, as the industry gains experience from its deployment, then future versions of this protocol will act to mitigate the manageability issues that are being raised by network operators. |
2021-01-08
|
33 | Robert Wilton | [Ballot Position Update] Position for Robert Wilton has been changed to Abstain from Discuss |
2021-01-07
|
33 | Cindy Morgan | IESG state changed to IESG Evaluation::Revised I-D Needed from IESG Evaluation |
2021-01-07
|
33 | Magnus Westerlund | [Ballot discuss] Holding a discuss to verify the IANA question is standards action registries should mandate the experts review prior to the standards action. |
2021-01-07
|
33 | Magnus Westerlund | [Ballot Position Update] Position for Magnus Westerlund has been changed to Discuss from Yes |
2021-01-07
|
33 | Warren Kumari | [Ballot comment] Apologies for the late ballot; I was on vacation. Let me start off by saying that I'm very supportive of the document and … [Ballot comment] Apologies for the late ballot; I was on vacation. Let me start off by saying that I'm very supportive of the document and protocol. Unfortunately, I believe that the nature of the spin bit negatively impacts operational practices. I understand that I'm in the rough here, and also believe that the gains from the protocol outweigh this concers, and so I'm abstaining / holding my nose on this part. This is intentionally non-blocking |
2021-01-07
|
33 | Warren Kumari | [Ballot Position Update] New position, Abstain, has been recorded for Warren Kumari |
2021-01-06
|
33 | Murray Kucherawy | [Ballot comment] This is really great technical and written work. Kudos to everyone involved, and I'm happy to join the "Yes" pile. There were some … [Ballot comment] This is really great technical and written work. Kudos to everyone involved, and I'm happy to join the "Yes" pile. There were some SHOULDs in the document that had me wondering why one might legitimately do something other than what's being recommended, since SHOULD does leave the implementer a choice. For instance, in Section 10.2.2 there's this: An endpoint MAY enter the draining state from the closing state if it receives a CONNECTION_CLOSE frame, which indicates that the peer is also closing or draining. In this case, the draining state SHOULD end when the closing state would have ended. In other words, the endpoint uses the same end time, but ceases transmission of any packets on this connection. This left me wondering why the endpoint would ever do something other than what's specified as SHOULD here. There might be a good reason, but the prose doesn't say what that might be (or I managed to miss it). Or maybe "SHOULD end" should simply be "ends"? Also, I have the same question as Ben about Section 22.1.4. I think it's appropriate that a permanent registration refers to a specification that is also likely to be permanent, as we do with Standards Track RFCs. Lastly, also on 22.1.4: I believe (though my colleagues can correct me if I'm wrong) that the IESG's current preference is to list the IESG, and not a working group, as the contact email address for registrations over which the IETF has change control. |
2021-01-06
|
33 | Murray Kucherawy | [Ballot Position Update] New position, Yes, has been recorded for Murray Kucherawy |
2021-01-06
|
33 | Amanda Baber | IANA Review state changed to IANA OK - Actions Needed from Version Changed - Review Needed |
2021-01-06
|
33 | Benjamin Kaduk | [Ballot comment] This protocol is nicely done and the document well-written and well-organized. It's really exciting to see what we can do with a nearly … [Ballot comment] This protocol is nicely done and the document well-written and well-organized. It's really exciting to see what we can do with a nearly clear slate and the accumulated modern knowledge about protocol design. Congratulations and thanks to all who contributed! Special thanks (in advance) to the chairs for helping translate my comments into github issues. I have some editorial suggestions that I put up at https://github.com/quicwg/base-drafts/pull/4597 . Abstract, Section 1 My understanding is that "exemplary" typically is used to refer to not just any example of the topic in question, but to one that is the pinnacle of achievement or the best of its kind. Do we intend to make such a claim about the congestion control algorithm in [QUIC-RECOVERY]? Section 1.3 > x (E) ...: Indicates that x is repeated zero or more times (and that > each instance is length E) Does "repeated zero or more times" mean that there is zero or more instances in total, or one or more instances in total? (I assume the latter, and would suggest additional wording if the former is what was intended.) I am specifically curious about the application to the Ack Range field of the ACK Frame, since it seems like early on in a connection it is not always possible to construct a valid Gap field, but will not duplicate the question there. Section 2.4 > * write data, understanding when stream flow control credit > (Section 4.1) has successfully been reserved to send the written > data; (side note) I note that "flow control credit has been reserved" is different than "has been ACKd by the peer". I guess the expectation is that if such information is needed, an application-layer ACK should be used, since QUIC ACKs can be sent before the peer application has consumed the received data? Section 3.1 I'm not sure why "Peer Creates Bidirectional Stream" appears on two transitions in the figure. The prose suggests that the copy on the Ready->Send transition is erroneous. Section 4.1 > QUIC employs a limit-based flow-control scheme where a receiver > advertises the limit of total bytes it is prepared to receive on a > given stream or for the entire connection. [...] Should I be reading some distinction into "limit-based" (here) vs "credit-based" (earlier) flow control? Section 4.2 > When a sender receives credit after being blocked, it might be able > to send a large amount of data in response, resulting in short-term > congestion; see Section 6.9 in [QUIC-RECOVERY] for a discussion of > how a sender can avoid this congestion. No such section exists in the -33; perhaps §7.7 is intended? Section 5.1.1 > An endpoint SHOULD ensure that its peer has a sufficient number of > available and unused connection IDs. Endpoints advertise the number > of active connection IDs they are willing to maintain using the > active_connection_id_limit transport parameter. An endpoint MUST NOT > provide more connection IDs than the peer's limit. [...] IIUC, the reason that a negotiated limit is needed here is not exactly for the storage of the connection ID values themselves (though the requirement to explicitly use RETIRE_CONNECTION_ID makes it not as simple as it might be), but rather due to the requirement to recognize the associated stateless reset tokens. Is that correct? If so, perhaps it could be mentioned as a factor, here. Section 5.2.2 > Servers SHOULD respond with a Version > Negotiation packet, provided that the datagram is sufficiently long. This SHOULD seems redundant with the first sentence of the section? > Packets with a supported version, or no version field, are matched to > a connection using the connection ID or - for packets with zero- > length connection IDs - the local address and port. These packets > are processed using the selected connection; otherwise, the server > continues below. (side note) Packets with a short header do not indicate the connection ID length (or version). I think we admit the possibility that a server could advertise a zero-length connection ID to some but not all clients; does that imply that a lookup by address/port in the local connection database would be needed to determine whether such a short-header packet would have a zero-length connection ID or not? Section 6.2 > A client MUST discard any > Version Negotiation packet if it has received and successfully > processed any other packet, including an earlier Version Negotiation > packet. [...] It seems like this requirement might be too strict, in that it could prevent otherwise successful communication when a limited on-path attacker injects a Version Negotiation packet. Section 7.2 > When an Initial packet is sent by a client that has not previously > received an Initial or Retry packet from the server, the client > populates the Destination Connection ID field with an unpredictable > value. This Destination Connection ID MUST be at least 8 bytes in > length. [...] My usual policy on seeing a random nonce shorter than 128 bits is to ask for explanation of why the shorter value is safe for the use it is being put to. (How bad would it be to bump this to 16?) > Once a client > has received a valid Initial packet from the server, it MUST discard > any subsequent packet it receives with a different Source Connection > ID. This seems over-zealous as written, since it would seem to prevent the server from ever using a new Source Connection ID on that connection, even in response to a client migration event. Is it intended to be scoped to just Initial (and Handshake?) packets as is done for the server in the following paragraph? Section 7.4 > Application protocols can recommend values for > transport parameters, such as the initial flow control limits. > However, application protocols that set constraints on values for > transport parameters could make it impossible for a client to offer > multiple application protocols if these constraints conflict. Should we go a step further and forbid application protocols from making such requirements? Section 7.5 > Once the handshake completes, if an endpoint is unable to buffer all > data in a CRYPTO frame, it MAY discard that CRYPTO frame and all > CRYPTO frames received in the future, or it MAY close the connection > with a CRYPTO_BUFFER_EXCEEDED error code. [...] How future-proof is this? NewSessionTicket is "safe" to discard in that doing so has no negative consequences for the current connection (it may indicate that previously received tickets have been invalidated, but that is also fairly benign and can happen for other reasons), but in general post-handshake CRYPTO frames are not constrained in what TLS messages they can carry, including any TLS messages defined in the future. I am not sure that we can effectively require all future TLS post-handshake messages to be safe to discard. Section 8.1.3 > Clients that want to break continuity of identity with a server MAY > discard tokens provided using the NEW_TOKEN frame. [...] This seems more like a SHOULD than a MAY, given the precondition. > A server SHOULD > encode tokens provided with NEW_TOKEN frames and Retry packets > differently, and validate the latter more strictly. [...] Didn't we already have a MUST-level requirement for being able to tell them apart, in §8.1.1? Section 8.1.4 > An address validation token MUST be difficult to guess. Including a > large enough random value in the token would be sufficient, but this > depends on the server remembering the value it sends to clients. (How large is "large enough?") Section 8.2 > Path validation is used by both peers during connection migration > (see Section 9) to verify reachability after a change of address. In > path validation, endpoints test reachability between a specific local > address and a specific peer address, where an address is the two- > tuple of IP address and port. In light of the toplevel definition of "address" in this document, the last clause seems unnecessary. Section 9 > The design of QUIC relies on endpoints retaining a stable address for > the duration of the handshake. [...] Why do we allow PATH_CHALLENGE (and the impossible PATH_RESPONSE) to be sent in 0-RTT frames, then? (This might dupe a comment later...) Section 9.5 > Similarly, an endpoint MUST NOT reuse a connection ID when sending to > more than one destination address. Due to network changes outside > the control of its peer, an endpoint might receive packets from a new > source address with the same destination connection ID, in which case > it MAY continue to use the current connection ID with the new remote > address while still sending from the same local address. The MAY seems like it may be in conflict with the MUST. Section 10.2.1 > An endpoint's selected connection ID and the QUIC version are > sufficient information to identify packets for a closing connection; > the endpoint MAY discard all other connection state. [...] Are the packet protection keys for outgoing traffic (or the literal CONNECTION_CLOSE packet contents) not considered part of "connection state"? Section 10.3 Just to check my understanding: it is "safe" for a server to decide that it will never use stateless reset and send random values in the stateless_reset_token fields that it immediately forgets? (It would then not be able to ever send stateless reset, of course, but AFAICT that is the only consequence. The client still has to track the relevant state, and the server has to track per-connection-ID-sequence-number state.) I don't know if that's worth mentioning, since the field is otherwise essentially mandatory when server connection IDs are in use. > An > endpoint that sends a stateless reset in response to a packet that is > 43 bytes or shorter SHOULD send a stateless reset that is one byte > shorter than the packet it responds to. (side note) We haven't gotten to the anti-looping stuff in §10.3.3 yet, so the "one byte shorter" is a bit out of the blue until we get there. Section 10.3.2 I'm not sure whether it should be here or earlier, but somewhere we should motivate this construction as being something that can be generated statelessly, e.g., by a server restarting after a crash, based only on attributes (e.g., Connection ID) of a received packet from a previous connection. The value is computed in advance and given to the peer so that the peer will know what to expect if the stateless reset functionality needs to be used, and then generated at runtime by an endpoint that has lost state. The scheme described in the first paragraph requires state, and thus is hard to justify describing as a stateless reset... > A single static key can be used across all connections to the same > endpoint by generating the proof using a second iteration of a > preimage-resistant function that takes a static key and the > connection ID chosen by the endpoint (see Section 5.1) as input. [...] The phrase "second iteration" doesn't seem to be explained at all. > This design relies on the peer always sending a connection ID in its > packets so that the endpoint can use the connection ID from a packet > to reset the connection. An endpoint that uses this design MUST > either use the same connection ID length for all connections or > encode the length of the connection ID such that it can be recovered > without state. In addition, it cannot provide a zero-length > connection ID. (There is a corollary that the length of the connection ID has to be enough so that multiple connection IDs can be issued to all potential peers cumulatively over the lifetime of the static key, though perhaps it's sufficiently obvious so as to go without saying.) Section 12.4 A forward-reference to §19.21 for how extension frames can be used might be useful. Why are PATH_CHALLENGE/PATH_RESPONSE allowed in the 0-RTT packet number space? (Hmm, the prose and table may be inconsistent here, too. I touch some things in my PR but I think not all of them.) The server isn't allowed to send at that level, so it seems that even if a client did sent PATH_CHALLENGE in 0-RTT, the PATH_RESPONSE would have to come back in 1-RTT. (And with no challenge to reply to, the client can't very well send a PATH_RESPONSE in 0-RTT.) Also, IIRC, we state elsewhere that we require a stable path for the duration of the handshake. Even preferred-address probing can't occur until the client has the server's transport parameters, which aren't usable until 1-RTT keys are available (even if they may technically be available prior to then). Section 13.2.3 > ACK frames SHOULD always acknowledge the most recently received > packets, and the more out-of-order the packets are, the more > important it is to send an updated ACK frame quickly, [...] Do we have a strict definition of "out of order" that we adhere to? I didn't see one in [QUIC-RECOVERY] on a quick search, but haven't read it in depth yet. (TCP RACK used roughly "X is out of order when X has lower sequence number than Y and X is received after Y is received", which is what I'll use as a mental model until I read otherwise.) Section 13.2.5 > When the measured acknowledgement delay is larger than its > max_ack_delay, an endpoint SHOULD report the measured delay. This > information is especially useful during the handshake when delays > might be large; see Section 13.2.1. I'm not sure I understand when this delay would not be reported even in the absence of this guidance. Is the idea that you should specifically send an ACK with Largest Acknowledged corresponding to the highly delayed packet, even if you could send an ACK with a larger Largest Acknowledged (but lower delay)? Section 17 (side note) I don't know that it would be of particular benefit to have it explained in the document, but I do find myself curious why there is a Fixed Bit. Section 17.2.5 Should we give some guidance on the (minimum) length of the Retry Token (possibly in a subsection)? I am not sure that the "MUST be non-zero-length" from §17.2.5.2 is the only guidance we want to give... Section 17.2.5.1 > A server MAY send Retry packets in response to Initial and 0-RTT > packets. A server can either discard or buffer 0-RTT packets that it > receives. A server can send multiple Retry packets as it receives > Initial or 0-RTT packets. A server MUST NOT send more than one Retry > packet in response to a single UDP datagram. When the server sends multiple Retry packets in such a scenario, do the Source Connection ID fields need to be different (or the same) across all of them? (Or does it not matter?) Section 17.2.5.2 > Token field to the token provided in the Retry. The client MUST NOT > change the Source Connection ID because the server could include the > connection ID as part of its token validation logic; see > Section 8.1.4. It looks like Section 8.1.4 doesn't actually talk specifically about connection IDs being bound to the token, just "additional information about clients". Perhaps it should? Section 19.16 > Retiring a connection ID invalidates the stateless reset token > associated with that connection ID. Is it the sending or the ACKing of the frame that effectuates the invalidation? Section 19.17 As above, please confirm that the 64-bit nonce is wide enough to support the purpose for which it is being used. Section 19.19 > Reason Phrase: A human-readable explanation for why the connection > was closed. This can be zero length if the sender chooses not to > give details beyond the Error Code. This SHOULD be a UTF-8 > encoded string [RFC3629]. Does "human-readable" engage BCP 18 and the SHOULD-level requirement for carrying information about language? Section 20.1 > TRANSPORT_PARAMETER_ERROR (0x8): An endpoint received transport > parameters that were badly formatted, included an invalid value, > was absent even though it is mandatory, was present though it is > forbidden, or is otherwise in error. (nit) maybe some singluar/plural mismatch here, though the RFC Editor would probably have a better suggested fix than I could come up with. Section 21 Should we reiterate somewhere that 1-RTT data sent by the server prior to handshake completion is being sent to an unauthenticated client? Section 21.1 As was noted by others, the terminology used for the taxonomy of attackers is a bit unusual (i.e., divergent from [SEC-CONS]) and surprising. It does seem to be fairly clearly specified, though, so is probably not worth trying to change at this point. Section 21.1.1 [Just noting here for visibility that my editorial PR adds some text here to emphasize that the peer authentication provided by the TLS handshake is a vital property as well. Clients that do not check TLS server certificates against the identity of the endpoint they're attempting to contact are not guaranteed secure operation.] Section 21.1.3.1 > * Split and merge datagrams along packet boundaries Those packet boundaries are obfuscated by header protection, though, right? Section 21.1.3.3 > 3. A limited on-path attacker can cause an idle connection to be > deemed lost if the server is the first to resume activity. Pedantically, if the client resumes activity after the server does, but within, say, 2*PTO, I don't think the connection would actually be lost. But perhaps I am missing something. Section 21.2 > The Source and Destination Connection ID fields are the primary means > of protection against off-path attack during the handshake. These Presumably we should then give some guidance on how to generate the Connection IDs so that they can fulfill this role effectively. Though it is likely to change significantly as a result of IETF Review, draft-gont-numeric-ids-sec-considerations may have some useful advice here. In particular, it seems like they actually do need to be unpredictable in order to fulfill this role, and very short Connection IDs will not be very effective either. Section 21.3 > Servers SHOULD provide mitigations for this attack by limiting the > usage and lifetime of address validation tokens; see Section 8.1.3. I recognize that it is probably an advanced implementation feature to do so, but implementations can also mitigate by detecting elevated rates across all connections or some identifiable cateogry of connections, of sending responses to 0-RTT data that are declared lost, treating that as indication of an ongoing attack, and racheting down the congestion window it uses for such data for the duration of the attack. This in theory could improve the stability of the Internet as a whole, which would be the motivation for mentioning it in this document as opposed to leaving it at the discretion of implementors. Section 21.5 > For example, cross-site request forgery [CSRF] exploits on the Web > cause a client to issue requests that include authorization cookies > [COOKIE], allowing one site access to information and actions that > are intended to be restricted to a different site. Server-side request forgery is also a powerful example of this type of attack. Though it's not really clear that we need more than one example here, so "no change" is okay with me. Section 21.5.2 > Clients however are not obligated to use the NEW_TOKEN frame. > Request forgery attacks that rely on the Token field can be avoided > if clients send an empty Token field when the server address has > changed from when the NEW_TOKEN frame was received. > Clients could avoid using NEW_TOKEN if the server address changes. > However, not including a Token field could adversely affect > performance. Servers could rely on NEW_TOKEN to enable sending of > data in excess of the three times limit on sending data; see > Section 8.1. In particular, this affects cases where clients use > 0-RTT to request data from servers. This seems to be setting us up to specifically recommend trading away security in favor of performance. Is that the right tradeoff? (Also, in the vein of my earlier comment, advanced implementation strategies involving detecting the presence of an attack might provide global benefit to the Internet, though the case is a bit weaker here than it was in the other situation.) Section 21.10 > An on-the-side attacker can duplicate and send packets with modified This is the only instance of "on-the-side" (or "on the side") in the document; I suggest rephrasing to conform to the prevailing terminology. Section 21.11 This would be a good place (or §10.3) to discuss the procedures for rotating the static key used by stateless reset, per BCP 107. Section 21.13 > Ideally, routing decisions are made independently > of client-selected values; a Source Connection ID can be selected to > route later packets to the same server. Is the client's address considered to be "client-selected"? It's not clear to me that ignoring IP address locality and routing efficiency is going to be the ideal behavior. Section 22.1.1 Are there going to be PII concerns with requiring contact information in the (public) registry? Section 22.1.2 > Applications to register codepoints in QUIC registries MAY include a > codepoint as part of the registration. IANA MUST allocate the > selected codepoint if the codepoint is unassigned and the > requirements of the registration policy are met. Is this intended to preclude the experts from requiring an allocation to be made from a range with a different-length encoding? Section 22.1.4 Should we require an expectation that the publicly available specification is going to be stable and/or continue to be accessible, as a condition of a permanent registration? Section 23.1 I think RFC 4086 is typically listed only as an Informative reference. It is amusing that IPv4 is a normative reference but IPv6 only informative. (Given how they are referenced, I don't fault this categorization.) Section 23.2 Should [QUIC-INVARIANTS] also be required reading? [ed. I see it already is, in the editor's copy] |
2021-01-06
|
33 | Benjamin Kaduk | Ballot comment text updated for Benjamin Kaduk |
2021-01-06
|
33 | Benjamin Kaduk | [Ballot discuss] This is very much a "discuss discuss", and I am not strongly convinced that there is a problem here, but if there is … [Ballot discuss] This is very much a "discuss discuss", and I am not strongly convinced that there is a problem here, but if there is a problem it is a fairly big one. This document defers creation of a downgrade protection mechanism for version negotiation; after all, if there is only one version in existence, there is nothing to negotiate. However, an effective downgrade protection mechanism requires support from all potentially affected parties in order to be reliable, so some careful thought is in order. If we limit ourselves to a mindset where QUIC versions are infrequent undertakings brought about by standards action (i.e., we don't have to worry until a "v2" exists), then deferring seems to be okay (but part of the Discuss is to confirm that my reasoning is valid). The main goal of downgrade protection is to be able to distinguish a node that only supports v1 (or in general, any single version, or set of versions that only has one overlapping version with the peer) from one that supports a different shared version but was tricked by an attacker into using v1 when it otherwise would have used a different version. I'll call that different version v2 for clarity. However, if the peer only supports v1, there's nothing to distinguish and nothing to negotiate; it suffices to ensure that all nodes that are capable of v2 support the downgrade protection scheme. That is, an attacker can only change the negotiated protocol version (as opposed to just causing connection failure, which can be done in many other ways) if there is some shared version other than v1 that would have been negotiated in the absence of the attacker. So, if v2 is definitly going to be defined+implemented before other versions, and all nodes that support v2 support downgrade protection, we are guaranteed that in any case where two peers would negotiate v2 in the absence of an attack, both peers support the downgrade protection mechanism and thus that mechanism will be effective in the face of an attack. Peers that don't support the mechanism only do v1 and so there is no downgrade possible when they are participating in the connection. (We would, of course, still need to be confident that we could define such a downgrade protection scheme in a backwards-compatible manner, though this seems like a fairly low bar given the extensibility provided by transport parameters and frame types.) However, it's not clear to me that this assumption holds that v2 is going to be the next version and that every node that implements v1 and some other version will definitely implement v2. In particular, we currently have a very open registration policy for new versions, and there may be a desire to have some custom version of QUIC, perhaps that only has a small difference from v1, and furthermore a desire to use that custom version when available but be able to use v1 when not available. There might be multiple such new versions in development in parallel, with no clear "first new version" tasked with the responsibility to develop a downgrade protection mechanism for global use. The interaction between multiple competing downgrade-protection mechanisms seems likely to become quite messy quite quickly, so I am inclined to see "make each non-standards-track version specify their own downgrade protection" as a non-starter. I think that the lack of a secure downgrade protection mechanism is fundamentally incompatible with an open procedure for creating new versions while claiming that the protocol is a secure protocol. While it would not be a pleasant choice, I think we might be forced to require standards action for new QUIC versions until we have a single global downgrade protection mechanism defined. Or perhaps I misunderstand the ecosystem that we are trying to produce, or am making erroneous assumptions. I'd love to hear more about how the WG decided to proceed with the current formulation, especially with regard to what consideration was given to non-standards-track new versions. The above notwithstanding, I support this protocol and I expect to change my position to Yes once this point is resolved in some manner. |
2021-01-06
|
33 | Benjamin Kaduk | [Ballot comment] This protocol is nicely done and the document well-written and well-organized. It's really exciting to see what we can do with a nearly … [Ballot comment] This protocol is nicely done and the document well-written and well-organized. It's really exciting to see what we can do with a nearly clear slate and the accumulated modern knowledge about protocol design. Congratulations and thanks to all who contributed! Special thanks (in advance) to the chairs for helping translate my comments into github issues. I have some editorial suggestions that I put up at https://github.com/quicwg/base-drafts/pull/4597 . Abstract, Section 1 My understanding is that "exemplary" typically is used to refer to not just any example of the topic in question, but to one that is the pinnacle of achievement or the best of its kind. Do we intend to make such a claim about the congestion control algorithm in [QUIC-RECOVERY]? Section 1.3 x (E) ...: Indicates that x is repeated zero or more times (and that each instance is length E) Does "repeated zero or more times" mean that there is zero or more instances in total, or one or more instances in total? (I assume the latter, and would suggest additional wording if the former is what was intended.) I am specifically curious about the application to the Ack Range field of the ACK Frame, since it seems like early on in a connection it is not always possible to construct a valid Gap field, but will not duplicate the question there. Section 2.4 * write data, understanding when stream flow control credit (Section 4.1) has successfully been reserved to send the written data; (side note) I note that "flow control credit has been reserved" is different than "has been ACKd by the peer". I guess the expectation is that if such information is needed, an application-layer ACK should be used, since QUIC ACKs can be sent before the peer application has consumed the received data? Section 3.1 I'm not sure why "Peer Creates Bidirectional Stream" appears on two transitions in the figure. The prose suggests that the copy on the Ready->Send transition is erroneous. Section 4.1 QUIC employs a limit-based flow-control scheme where a receiver advertises the limit of total bytes it is prepared to receive on a given stream or for the entire connection. [...] Should I be reading some distinction into "limit-based" (here) vs "credit-based" (earlier) flow control? Section 4.2 When a sender receives credit after being blocked, it might be able to send a large amount of data in response, resulting in short-term congestion; see Section 6.9 in [QUIC-RECOVERY] for a discussion of how a sender can avoid this congestion. No such section exists in the -33; perhaps §7.7 is intended? Section 5.1.1 An endpoint SHOULD ensure that its peer has a sufficient number of available and unused connection IDs. Endpoints advertise the number of active connection IDs they are willing to maintain using the active_connection_id_limit transport parameter. An endpoint MUST NOT provide more connection IDs than the peer's limit. [...] IIUC, the reason that a negotiated limit is needed here is not exactly for the storage of the connection ID values themselves (though the requirement to explicitly use RETIRE_CONNECTION_ID makes it not as simple as it might be), but rather due to the requirement to recognize the associated stateless reset tokens. Is that correct? If so, perhaps it could be mentioned as a factor, here. Section 5.2.2 Servers SHOULD respond with a Version Negotiation packet, provided that the datagram is sufficiently long. This SHOULD seems redundant with the first sentence of the section? Packets with a supported version, or no version field, are matched to a connection using the connection ID or - for packets with zero- length connection IDs - the local address and port. These packets are processed using the selected connection; otherwise, the server continues below. (side note) Packets with a short header do not indicate the connection ID length (or version). I think we admit the possibility that a server could advertise a zero-length connection ID to some but not all clients; does that imply that a lookup by address/port in the local connection database would be needed to determine whether such a short-header packet would have a zero-length connection ID or not? Section 6.2 A client MUST discard any Version Negotiation packet if it has received and successfully processed any other packet, including an earlier Version Negotiation packet. [...] It seems like this requirement might be too strict, in that it could prevent otherwise successful communication when a limited on-path attacker injects a Version Negotiation packet. Section 7.2 When an Initial packet is sent by a client that has not previously received an Initial or Retry packet from the server, the client populates the Destination Connection ID field with an unpredictable value. This Destination Connection ID MUST be at least 8 bytes in length. [...] My usual policy on seeing a random nonce shorter than 128 bits is to ask for explanation of why the shorter value is safe for the use it is being put to. (How bad would it be to bump this to 16?) Once a client has received a valid Initial packet from the server, it MUST discard any subsequent packet it receives with a different Source Connection ID. This seems over-zealous as written, since it would seem to prevent the server from ever using a new Source Connection ID on that connection, even in response to a client migration event. Is it intended to be scoped to just Initial (and Handshake?) packets as is done for the server in the following paragraph? Section 7.4 Application protocols can recommend values for transport parameters, such as the initial flow control limits. However, application protocols that set constraints on values for transport parameters could make it impossible for a client to offer multiple application protocols if these constraints conflict. Should we go a step further and forbid application protocols from making such requirements? Section 7.5 Once the handshake completes, if an endpoint is unable to buffer all data in a CRYPTO frame, it MAY discard that CRYPTO frame and all CRYPTO frames received in the future, or it MAY close the connection with a CRYPTO_BUFFER_EXCEEDED error code. [...] How future-proof is this? NewSessionTicket is "safe" to discard in that doing so has no negative consequences for the current connection (it may indicate that previously received tickets have been invalidated, but that is also fairly benign and can happen for other reasons), but in general post-handshake CRYPTO frames are not constrained in what TLS messages they can carry, including any TLS messages defined in the future. I am not sure that we can effectively require all future TLS post-handshake messages to be safe to discard. Section 8.1.3 Clients that want to break continuity of identity with a server MAY discard tokens provided using the NEW_TOKEN frame. [...] This seems more like a SHOULD than a MAY, given the precondition. A server SHOULD encode tokens provided with NEW_TOKEN frames and Retry packets differently, and validate the latter more strictly. [...] Didn't we already have a MUST-level requirement for being able to tell them apart, in §8.1.1? Section 8.1.4 An address validation token MUST be difficult to guess. Including a large enough random value in the token would be sufficient, but this depends on the server remembering the value it sends to clients. (How large is "large enough?") Section 8.2 Path validation is used by both peers during connection migration (see Section 9) to verify reachability after a change of address. In path validation, endpoints test reachability between a specific local address and a specific peer address, where an address is the two- tuple of IP address and port. In light of the toplevel definition of "address" in this document, the last clause seems unnecessary. Section 9 The design of QUIC relies on endpoints retaining a stable address for the duration of the handshake. [...] Why do we allow PATH_CHALLENGE (and the impossible PATH_RESPONSE) to be sent in 0-RTT frames, then? (This might dupe a comment later...) Section 9.5 Similarly, an endpoint MUST NOT reuse a connection ID when sending to more than one destination address. Due to network changes outside the control of its peer, an endpoint might receive packets from a new source address with the same destination connection ID, in which case it MAY continue to use the current connection ID with the new remote address while still sending from the same local address. The MAY seems like it may be in conflict with the MUST. Section 10.2.1 An endpoint's selected connection ID and the QUIC version are sufficient information to identify packets for a closing connection; the endpoint MAY discard all other connection state. [...] Are the packet protection keys for outgoing traffic (or the literal CONNECTION_CLOSE packet contents) not considered part of "connection state"? Section 10.3 Just to check my understanding: it is "safe" for a server to decide that it will never use stateless reset and send random values in the stateless_reset_token fields that it immediately forgets? (It would then not be able to ever send stateless reset, of course, but AFAICT that is the only consequence. The client still has to track the relevant state, and the server has to track per-connection-ID-sequence-number state.) I don't know if that's worth mentioning, since the field is otherwise essentially mandatory when server connection IDs are in use. An endpoint that sends a stateless reset in response to a packet that is 43 bytes or shorter SHOULD send a stateless reset that is one byte shorter than the packet it responds to. (side note) We haven't gotten to the anti-looping stuff in §10.3.3 yet, so the "one byte shorter" is a bit out of the blue until we get there. Section 10.3.2 I'm not sure whether it should be here or earlier, but somewhere we should motivate this construction as being something that can be generated statelessly, e.g., by a server restarting after a crash, based only on attributes (e.g., Connection ID) of a received packet from a previous connection. The value is computed in advance and given to the peer so that the peer will know what to expect if the stateless reset functionality needs to be used, and then generated at runtime by an endpoint that has lost state. The scheme described in the first paragraph requires state, and thus is hard to justify describing as a stateless reset... A single static key can be used across all connections to the same endpoint by generating the proof using a second iteration of a preimage-resistant function that takes a static key and the connection ID chosen by the endpoint (see Section 5.1) as input. [...] The phrase "second iteration" doesn't seem to be explained at all. This design relies on the peer always sending a connection ID in its packets so that the endpoint can use the connection ID from a packet to reset the connection. An endpoint that uses this design MUST either use the same connection ID length for all connections or encode the length of the connection ID such that it can be recovered without state. In addition, it cannot provide a zero-length connection ID. (There is a corollary that the length of the connection ID has to be enough so that multiple connection IDs can be issued to all potential peers cumulatively over the lifetime of the static key, though perhaps it's sufficiently obvious so as to go without saying.) Section 12.4 A forward-reference to §19.21 for how extension frames can be used might be useful. Why are PATH_CHALLENGE/PATH_RESPONSE allowed in the 0-RTT packet number space? (Hmm, the prose and table may be inconsistent here, too. I touch some things in my PR but I think not all of them.) The server isn't allowed to send at that level, so it seems that even if a client did sent PATH_CHALLENGE in 0-RTT, the PATH_RESPONSE would have to come back in 1-RTT. (And with no challenge to reply to, the client can't very well send a PATH_RESPONSE in 0-RTT.) Also, IIRC, we state elsewhere that we require a stable path for the duration of the handshake. Even preferred-address probing can't occur until the client has the server's transport parameters, which aren't usable until 1-RTT keys are available (even if they may technically be available prior to then). Section 13.2.3 ACK frames SHOULD always acknowledge the most recently received packets, and the more out-of-order the packets are, the more important it is to send an updated ACK frame quickly, [...] Do we have a strict definition of "out of order" that we adhere to? I didn't see one in [QUIC-RECOVERY] on a quick search, but haven't read it in depth yet. (TCP RACK used roughly "X is out of order when X has lower sequence number than Y and X is received after Y is received", which is what I'll use as a mental model until I read otherwise.) Section 13.2.5 When the measured acknowledgement delay is larger than its max_ack_delay, an endpoint SHOULD report the measured delay. This information is especially useful during the handshake when delays might be large; see Section 13.2.1. I'm not sure I understand when this delay would not be reported even in the absence of this guidance. Is the idea that you should specifically send an ACK with Largest Acknowledged corresponding to the highly delayed packet, even if you could send an ACK with a larger Largest Acknowledged (but lower delay)? Section 17 (side note) I don't know that it would be of particular benefit to have it explained in the document, but I do find myself curious why there is a Fixed Bit. Section 17.2.5 Should we give some guidance on the (minimum) length of the Retry Token (possibly in a subsection)? I am not sure that the "MUST be non-zero-length" from §17.2.5.2 is the only guidance we want to give... Section 17.2.5.1 A server MAY send Retry packets in response to Initial and 0-RTT packets. A server can either discard or buffer 0-RTT packets that it receives. A server can send multiple Retry packets as it receives Initial or 0-RTT packets. A server MUST NOT send more than one Retry packet in response to a single UDP datagram. When the server sends multiple Retry packets in such a scenario, do the Source Connection ID fields need to be different (or the same) across all of them? (Or does it not matter?) Section 17.2.5.2 Token field to the token provided in the Retry. The client MUST NOT change the Source Connection ID because the server could include the connection ID as part of its token validation logic; see Section 8.1.4. It looks like Section 8.1.4 doesn't actually talk specifically about connection IDs being bound to the token, just "additional information about clients". Perhaps it should? Section 19.16 Retiring a connection ID invalidates the stateless reset token associated with that connection ID. Is it the sending or the ACKing of the frame that effectuates the invalidation? Section 19.17 As above, please confirm that the 64-bit nonce is wide enough to support the purpose for which it is being used. Section 19.19 Reason Phrase: A human-readable explanation for why the connection was closed. This can be zero length if the sender chooses not to give details beyond the Error Code. This SHOULD be a UTF-8 encoded string [RFC3629]. Does "human-readable" engage BCP 18 and the SHOULD-level requirement for carrying information about language? Section 20.1 TRANSPORT_PARAMETER_ERROR (0x8): An endpoint received transport parameters that were badly formatted, included an invalid value, was absent even though it is mandatory, was present though it is forbidden, or is otherwise in error. (nit) maybe some singluar/plural mismatch here, though the RFC Editor would probably have a better suggested fix than I could come up with. Section 21 Should we reiterate somewhere that 1-RTT data sent by the server prior to handshake completion is being sent to an unauthenticated client? Section 21.1 As was noted by others, the terminology used for the taxonomy of attackers is a bit unusual (i.e., divergent from [SEC-CONS]) and surprising. It does seem to be fairly clearly specified, though, so is probably not worth trying to change at this point. Section 21.1.1 [Just noting here for visibility that my editorial PR adds some text here to emphasize that the peer authentication provided by the TLS handshake is a vital property as well. Clients that do not check TLS server certificates against the identity of the endpoint they're attempting to contact are not guaranteed secure operation.] Section 21.1.3.1 * Split and merge datagrams along packet boundaries Those packet boundaries are obfuscated by header protection, though, right? Section 21.1.3.3 3. A limited on-path attacker can cause an idle connection to be deemed lost if the server is the first to resume activity. Pedantically, if the client resumes activity after the server does, but within, say, 2*PTO, I don't think the connection would actually be lost. But perhaps I am missing something. Section 21.2 The Source and Destination Connection ID fields are the primary means of protection against off-path attack during the handshake. These Presumably we should then give some guidance on how to generate the Connection IDs so that they can fulfill this role effectively. Though it is likely to change significantly as a result of IETF Review, draft-gont-numeric-ids-sec-considerations may have some useful advice here. In particular, it seems like they actually do need to be unpredictable in order to fulfill this role, and very short Connection IDs will not be very effective either. Section 21.3 Servers SHOULD provide mitigations for this attack by limiting the usage and lifetime of address validation tokens; see Section 8.1.3. I recognize that it is probably an advanced implementation feature to do so, but implementations can also mitigate by detecting elevated rates across all connections or some identifiable cateogry of connections, of sending responses to 0-RTT data that are declared lost, treating that as indication of an ongoing attack, and racheting down the congestion window it uses for such data for the duration of the attack. This in theory could improve the stability of the Internet as a whole, which would be the motivation for mentioning it in this document as opposed to leaving it at the discretion of implementors. Section 21.5 For example, cross-site request forgery [CSRF] exploits on the Web cause a client to issue requests that include authorization cookies [COOKIE], allowing one site access to information and actions that are intended to be restricted to a different site. Server-side request forgery is also a powerful example of this type of attack. Though it's not really clear that we need more than one example here, so "no change" is okay with me. Section 21.5.2 Clients however are not obligated to use the NEW_TOKEN frame. Request forgery attacks that rely on the Token field can be avoided if clients send an empty Token field when the server address has changed from when the NEW_TOKEN frame was received. Clients could avoid using NEW_TOKEN if the server address changes. However, not including a Token field could adversely affect performance. Servers could rely on NEW_TOKEN to enable sending of data in excess of the three times limit on sending data; see Section 8.1. In particular, this affects cases where clients use 0-RTT to request data from servers. This seems to be setting us up to specifically recommend trading away security in favor of performance. Is that the right tradeoff? (Also, in the vein of my earlier comment, advanced implementation strategies involving detecting the presence of an attack might provide global benefit to the Internet, though the case is a bit weaker here than it was in the other situation.) Section 21.10 An on-the-side attacker can duplicate and send packets with modified This is the only instance of "on-the-side" (or "on the side") in the document; I suggest rephrasing to conform to the prevailing terminology. Section 21.11 This would be a good place (or §10.3) to discuss the procedures for rotating the static key used by stateless reset, per BCP 107. Section 21.13 Ideally, routing decisions are made independently of client-selected values; a Source Connection ID can be selected to route later packets to the same server. Is the client's address considered to be "client-selected"? It's not clear to me that ignoring IP address locality and routing efficiency is going to be the ideal behavior. Section 22.1.1 Are there going to be PII concerns with requiring contact information in the (public) registry? Section 22.1.2 Applications to register codepoints in QUIC registries MAY include a codepoint as part of the registration. IANA MUST allocate the selected codepoint if the codepoint is unassigned and the requirements of the registration policy are met. Is this intended to preclude the experts from requiring an allocation to be made from a range with a different-length encoding? Section 22.1.4 Should we require an expectation that the publicly available specification is going to be stable and/or continue to be accessible, as a condition of a permanent registration? Section 23.1 I think RFC 4086 is typically listed only as an Informative reference. It is amusing that IPv4 is a normative reference but IPv6 only informative. (Given how they are referenced, I don't fault this categorization.) Section 23.2 Should [QUIC-INVARIANTS] also be required reading? |
2021-01-06
|
33 | Benjamin Kaduk | [Ballot Position Update] New position, Discuss, has been recorded for Benjamin Kaduk |
2021-01-06
|
33 | Robert Wilton | [Ballot discuss] With so many "Yes" votes from other ADs, I feel like I'm swimming against the flow by raising a discuss ... Firstly, I … [Ballot discuss] With so many "Yes" votes from other ADs, I feel like I'm swimming against the flow by raising a discuss ... Firstly, I would like the thank the authors and WG on such a well written document. I am supportive of this protocol and hope that it will be good for the Internet. However, I do have some discuss questions relating to the Spin Bit and the ability to manage and monitor networks. I appreciate that there has already been a lot of (presumably heated) discussion on the spin bit, which I've not read or participated in, but I am concerned about the operational manageability aspect of QUIC. Firstly, I have two comments on clarifying the spin bit behaviour/specification: 1) It would be helpful to clarify what the expected behaviour is for an implementation that chooses not to support the spin-bit. Does it just leave the bit set as 0, or is it meant to follow the same behaviour as if spin-bit is supported but disabled? 2) This may not be discuss worthy, but some of the spin bit behaviour is inconsistently defined between the quic transport and quic manageability drafts. Specifically: - The transport draft states that at least 1 in 16 connections "MUST" disable spinning, whereas the manageability draft states this as "recommended". - In the case that the spin bit is disabled, the transport draft uses "RECOMMENDED" to use a random value for each packet, or chosen independently for each connection. Whereas the manageability draft uses "can" and lists the two options in the opposite order. For this review, since it is in IESG review, I've presumed that the transport draft has the definitive definitions and the manageability draft is lagging. But my two main discuss questions/comments relate to whether the spin-bit, as specified in quic transport, achieves its goal. I appreciate that there are individuals who don't think that it is required at all, conversely some network operators believe that they will lose vital information needed to help manage their networks, and presumably we are trying to find a pragmatic compromise between these two positions. 1) I find it hard to understand why a server is allowed to independently decide whether or not to support the spin bit on a connection? Shouldn't the client (or administrator of the client system) that opened the connection be able to choose whether they want the RTT to be monitorable via the spin bit? What is the reasoning for allowing the server (or server administrator) to be able to independently be able to decide what is best for the client? 2) In the case that the spin-bit is disabled, I don't understand the benefit of injecting a random spin bit value in each packet rather than always setting it to a per connection random value. It seems that whether or not the randomness is injected, it is expected to be feasible to extract the RTT for those connections that are genuinely spinning the bit (or otherwise the spin bit is entirely pointless), but it just seems to make it computationally harder to extract the signal from the noise. Perhaps the goal here is reduce the ability for pervasive monitoring to occur, but that feels a bit like security through obscurity. Some enlightenment for these questions would be appreciated. Regards, Rob |
2021-01-06
|
33 | Robert Wilton | [Ballot comment] Comments: 1.2. Terms and Definitions Frame: A unit of structured protocol information. There are multiple frame types, each of … [Ballot comment] Comments: 1.2. Terms and Definitions Frame: A unit of structured protocol information. There are multiple frame types, each of which carries different information. Frames are contained in QUIC packets. Perhaps indicate that a quic packet can contain multiple frames? The terminology states that a datagram contains multiple quick packets, but it wasn't obvious to me that a quick packet can contain multple frames. This document uses the terms "QUIC packets", "UDP datagrams", and "IP packets" to refer to the units of the respective protocols. That is, one or more QUIC packets can be encapsulated in a UDP datagram, which is in turn encapsulated in an IP packet. Frame is a widely used term in L2. Hence, it might be helpful if this description also covered "Frames". Perhaps this would also be a helpful place (or an alternative place) to mention that a QUIC packet contains one or more QUIC frames. 3. Stream States Bidirectional streams use both state machines Maybe clarify this to indicate that it means that both state machines are used at each endpoint. Otherwise, even unidirection steams use both state machines, one at each endpoint. 3.2. Receiving Stream States Figure 3: States for Receiving Parts of Streams Perhaps expand "App Read RST" to "App Read RESET", since there doesn't seem a great reason to abbreviate it. 3.2. Receiving Stream States The receiving part of a stream enters the "Recv" state when the sending part of a bidirectional stream initiated by the endpoint (type 0 for a client, type 1 for a server) enters the "Ready" state. This might be slightly clearer if the conditional predicate was moved to the beginning of the sentence. E.g., For bidirectional streams, ... 4.1. Data Flow Control * Stream flow control, which prevents a single stream from consuming the entire receive buffer for a connection by limiting the amount of data that can be sent on any stream Perhaps "on a stream" would be better than "on any stream". 4.6. Controlling Concurrency An endpoint that is unable to open a new stream due to the peer's limits SHOULD send a STREAMS_BLOCKED frame (Section 19.14). This signal is considered useful for debugging. An endpoint MUST NOT wait to receive this signal before advertising additional credit, since Iyengar & Thomson Expires 16 June 2021 [Page 29] Internet-Draft QUIC Transport Protocol December 2020 doing so will mean that the peer will be blocked for at least an entire round trip, and potentially indefinitely if the peer chooses not to send STREAMS_BLOCKED frames. By additional credit, does it sending MAX_STREAMS? If so, it might be helpful to clarify that. 5.1. Connection ID 5.1.1. Issuing Connection IDs Additional connection IDs are communicated to the peer using NEW_CONNECTION_ID frames (Section 19.15). The sequence number on each newly issued connection ID MUST increase by 1. The connection ID randomly selected by the client in the Initial packet and any connection ID provided by a Retry packet are not assigned sequence numbers unless a server opts to retain them as its initial connection ID. I was slightly confused by the "The connection ID randomly selected by the client". Elsewhere in section 5.1 it says that connection id allocation are implementation specific. Are there any constraints on how connection ids can be allocated (other than not repeating as already stated). E.g., could an implementation just allocate them as integers starting at 1? Or can all connection ids (including NEW_CONNECTION_IDs) be randomly allocated? 16. Variable-Length Integer Encoding No requirement to send integers in smallest encoding possible? E.g. okay to send the value 3 in an 8 byte field? This section doesn't indicate whether a sender is allowed to send integers not using the smallest possible encoding, and doesn't indicate whether a receive is expected to process non optimal encodings. It might be helpful to be explicit. 17. Packet Formats Version: The QUIC Version is a 32-bit field that follows the first byte. This field indicates the version of QUIC that is in use and determines how the rest of the protocol fields are interpreted. By "rest of the protocol fields", I had incorrectly interpreted this as meaning all subsequent fields described after the version field are determined Perhaps worth clarifying - although I recall that it does become clear elsewhere. 17. Packet Formats Type-Specific Bits: The lower four bits (those with a mask of 0x0f) of byte 0 are type-specific Perhaps "packet type specific" rather than just "type-specific"? |
2021-01-06
|
33 | Robert Wilton | [Ballot Position Update] New position, Discuss, has been recorded for Robert Wilton |
2021-01-05
|
33 | Barry Leiba | [Ballot comment] Thanks for the great work on this important protocol, and for a very well written document! Just some very minor editorial comments: — … [Ballot comment] Thanks for the great work on this important protocol, and for a very well written document! Just some very minor editorial comments: — Section 3.5 — An endpoint SHOULD copy the error code from the STOP_SENDING frame to the RESET_STREAM frame it sends, but MAY use any application error code. — Section 9.6.2 — It SHOULD drop packets for this connection received on the old IP address, but MAY continue to process delayed packets. Do as you think best with cases such as these, but for my part, I dislike the “SHOULD... but MAY” formulation, as I find it contradictory when it’s read strictly. In general, I prefer to simply avoid the BCP 14 key word for the second part (“SHOULD do x, but may make other choices”). In both cases here, I’d probably just leave off the second part, as it doesn’t seem to add anything. At the least, I encourage making it “may” (or “can”). But again, as you think best. — Section 4 — It is necessary to limit the amount of data that a receiver could buffer, to prevent a fast sender from overwhelming a slow receiver, or to prevent a malicious sender from consuming a large amount of memory at a receiver. You’re not talking about limiting the ability of the receiver (“could buffer”), but limiting the potential buffering requirement on the client (“has to buffer”), yes? — Section 4.1 — Once a receiver advertises a limit for the connection or a stream, it MAY advertise a smaller limit, but this has no effect. I don’t think this really fits the spirit of “MAY”. I would say, “it is not an error to advertise a smaller limit, but....” — Section 7 — Once completed, endpoints are able to exchange application data. The antecedent to “once completed” is dangling, and the previous sentence talks about exchanging application data earlier. I suggest, “Once the handshake is completed, endpoints are able to exchange application data freely.” |
2021-01-05
|
33 | Barry Leiba | [Ballot Position Update] New position, Yes, has been recorded for Barry Leiba |
2021-01-05
|
33 | Roman Danyliw | [Ballot comment] Thank you to the WG and implementation community for this document. ** Section 3. Per “The state machines shown in this section are … [Ballot comment] Thank you to the WG and implementation community for this document. ** Section 3. Per “The state machines shown in this section are largely informative ”, why the qualifier of “largely”? ** Section 8.1. Per “Servers SHOULD ensure that tokens sent in Retry packets are only accepted for a short time”, is there any guidance on what a short time is here? ** Section 21.5. Per “QUIC servers SHOULD NOT be deployed in networks that also have inadequately secured UDP endpoints”, I was wondering if this caution is realistic. |
2021-01-05
|
33 | Roman Danyliw | Ballot comment text updated for Roman Danyliw |
2021-01-05
|
33 | Roman Danyliw | [Ballot comment] Thank you to the WG and implementation community for this document. ** Section 3. Per “The state machines shown in this section are … [Ballot comment] Thank you to the WG and implementation community for this document. ** Section 3. Per “The state machines shown in this section are largely informative ”, why the qualifier of “largely”? ** Section 8.1. Per “Servers SHOULD ensure that tokens sent in Retry packets are only accepted for a short time”, is there any guidance on what a short time is here? ** Section 21.5. Per “QUIC servers SHOULD NOT be deployed in networks that also have inadequately secured UDP endpoints”, I was wondering if this caution is a realistic. |
2021-01-05
|
33 | Roman Danyliw | [Ballot Position Update] Position for Roman Danyliw has been changed to Yes from No Objection |
2021-01-05
|
33 | Roman Danyliw | [Ballot comment] Thanks to the WG and implementation community for this document. ** Section 3. Per “The state machines shown in this section are largely … [Ballot comment] Thanks to the WG and implementation community for this document. ** Section 3. Per “The state machines shown in this section are largely informative ”, why the qualifier of “largely”? ** Section 8.1. Per “Servers SHOULD ensure that tokens sent in Retry packets are only accepted for a short time”, is there any guidance on what a short time is here? ** Section 21.5. Per “QUIC servers SHOULD NOT be deployed in networks that also have inadequately secured UDP endpoints”, I was wondering if this caution is a realistic. |
2021-01-05
|
33 | Roman Danyliw | [Ballot Position Update] New position, No Objection, has been recorded for Roman Danyliw |
2021-01-05
|
33 | Alvaro Retana | [Ballot Position Update] New position, No Objection, has been recorded for Alvaro Retana |
2021-01-05
|
33 | Martin Vigoureux | [Ballot comment] Hello, thank you for this document. NITs This appears twice: This document defines version 1 of QUIC, which conforms to the version-independent … [Ballot comment] Hello, thank you for this document. NITs This appears twice: This document defines version 1 of QUIC, which conforms to the version-independent properties of QUIC defined in [QUIC-INVARIANTS]. First time at te beginning of 1 and then at the end of 1.1 |
2021-01-05
|
33 | Martin Vigoureux | [Ballot Position Update] New position, Yes, has been recorded for Martin Vigoureux |
2021-01-05
|
33 | Éric Vyncke | [Ballot comment] Thank you for the work put into this long but easy to read document. It is clearly a major change for the Internet. … [Ballot comment] Thank you for the work put into this long but easy to read document. It is clearly a major change for the Internet. Special thanks to Bernie Volz for his internet directorate review. I support Erik Kline's comments about sections 9.6.3 (interaction of NAT64 and preferred address) and 14.1 (IPv6 extension headers). Please bear with some comments from a non-transport oriented person... I have yet to review QUIC-RECOVERY so I will assume for now that packet loss by the network (such as RED) will also reduce the "QUIC congestion window". NB: I still wonder why QUIC is in upper case if it is a name and not an acronym ;-) Please find below some non-blocking COMMENT points (but replies would be appreciated), and some nits. I hope that this helps to improve the document, Regards, -éric == COMMENTS == -- Section 1 -- "QUIC packets are carried in UDP datagrams ([UDP]) to better facilitate deployment in existing systems and networks.", this is an assumption presented as a fact without citing any reference... This does not seem too good to me. -- Section 2.2 -- "an endpoint MAY treat receipt of different data at the same offset within a stream as a connection error of type PROTOCOL_VIOLATION." Should it be a SHOULD or even a MUST rather than a MAY ? Even if streams are protected, isn't it a security issue to allow overwrite of a stream ? Esp when the endpoints could deliver out-of-order to the application ? -- Section 3.1 (and others) -- It would have been nice to use the SVG alternate graphic format for such an fundamental document ;-) -- Section 4.2 and others -- The specification is rather vague about the behavior (no default timer, no default "window", nothing said about increasing the credit, ...) and leaves a lot to implantations. Is it an issue or is it described in QUIC-RECOVERY ? -- Section 5.1 -- It would be nice for the reader to explain the rationale for having multiple connection IDs for the same connection. -- Section 7 -- Please state before that QUIC version 0x00000001 is the version specified by the document or use "This version of QUIC" rather than "Version 0x00000001 of QUIC" -- Section 8.1 -- Out of curiosity, why selecting a UDP payload of at least 1200 octets? I would assume that 1232 would have worked as well (1280 IPv6 MTU - 40 IPv6 header - 8 UDP header). Of course, 1200 is a nicer number ;-) -- Section 9 (and also 9.4 and possibly others) -- Please also consider adding another reason for an endpoint to change its IPv6 address due to RFC 4941 ("privacy extensions for IPv6 addresses") and not only NAT ;-) -- Section 9.1 -- Can this mechanism also be used not only when changing of IP address but also of IP version ? Did the QUIC WG/authors consider using happy eyeball (RFC 8305) to probe whether IPvfoo could become better than IPvbar regularly during a QUIC connection (using the preferred addresses) ? -- Section 9.7 -- Why a SHOULD for the use of a hash, IMHO a good pseudo-random number would also work (as explained in RFC 6437). -- Section 13 -- Should the text provide a forward reference to section 14 (datagram size) ? -- Section 14.1 -- This padding on the initial packets is quite a smart technique ;-) -- Section 17.2.1 -- I find a little weird that the "unused" field have a SHOULD setting for the MSB... Suggest to keep the F bit apart and use a 6-bit "unused" field. -- Section 18.2 -- I am not a transport expert, so, I can be wrong but usually, rather than using "::.0", "[::]:0" is used. -- Section 19.2 -- Suggest to also mention "keeping NAT binding states alive" as a use case for PING. == NITS == -- Section 1 -- In "QUIC authenticates all packets and encrypts as much as is practical." it is a little unclear to me whether the 'as much' applies only to 'encrypts' or also on 'authenticates'. Or is it clear for an English-native speaker (that I am not). -- Section 1.3 -- Rather than using "described by ?" why not using the letter 'l' (as in length) rather than a '?'. It is confusing at first sight. -- Section 4.5 -- "the final size is the number of bytes sent" is slightly ambiguous as it could either be the number of bytes sent by the application or sent as UDP payload. The rest of the paragraph kind of answers the question though. -- Section 5.2.2 -- "If a server receives a packet that indicates an unsupported version but is large enough to initiate a new connection" it is unclear what is the subject of "is"... -- Section 6.3 -- The use of "0x?a?a?a?a" with undefined syntax brings only question marks in the reader's mind => suggest to remove "0x?a?a?a?a" but keep the forward pointer to section 15. -- Section 8.2 -- Why using "two-tuple" rather than the simpler "pair" ? -- Section 23.1 -- Why using the anchor [IPv4] rather than [RFC791] ? Just curious... |
2021-01-05
|
33 | Éric Vyncke | [Ballot Position Update] New position, No Objection, has been recorded for Éric Vyncke |
2021-01-04
|
33 | Erik Kline | [Ballot comment] [[ comments ]] [ section 8.2.3 ] * I found this wording a tad odd: If the PATH_CHALLENGE frame that resulted … [Ballot comment] [[ comments ]] [ section 8.2.3 ] * I found this wording a tad odd: If the PATH_CHALLENGE frame that resulted in successful path validation was sent in a datagram that was not expanded to at least 1200 bytes, the endpoint can regard the address as valid. It seems like whether the frame was padded to 1200 or not, if the response data matches the challenge data the address can be considered validated. I think the point at the end of the sentence is to say that *only* the address, but not the MTU, can be taken as validated. [ section 9.6.3 ] * Entirely optional, but I wonder if it's worth noting that in certain situations, for example an IPv6-only client and IPv4-only server, the client might be required to evaluate use of an alternate address family address if, for example, some transition mechanism (a la NAT64) was in use. [ section 9.7 ] * "as this would enable..." reads to me like the opposite of what's intended. Perhaps: "as failure to do so would enable..."? [ section 14.1 ] * I think it might be important to note that this strategy places some restrictions on the use of things like IPv6 extension headers that can be used in these packets. For example, on an IPv6-only link with a 1280 MTU, enforcing a 1200 byte UDP payload in these packets leaves only 32 bytes of space for any extension headers. I think this is likely fine for these initial packets (vis. section 8.1 and so on ), but as a general requirement for all packets this could artificially constrain use of new extension headers. [ section 19.3.1 ] * This seems intricate enough that it might be nice if there were an Appendix (A.5?) section walking through an example computation or two. [ section 19.18 ] * I'm idly wondering if there would be any debugging value in the response including the IP & port to which the response is being sent (i.e. from which the path challenge was received) ... assuming the packet with the PATH_RESPONSE frame is protected. Not important though, and perhaps it was already discussed and rejected. (or maybe it's better as some future, entirely separate PATH_INFO frame) [[ questions ]] [ section 8.2.4 ] * To be clear, this document is effectively saying that it takes no position on the interpretation of any ICMP errors received? Is it up to the implementer to decide if "validated" (in as much as ICMP messages can be validated) Admin Prohibited messages, for example, should constitute a positive confirmation of path failure? Or is there some very specific stance that should be taken ("never trust that lyin' ICMP!")? [ section 10.3 ] * Does this "datagram ends with stateless reset token" scheme mean that implementations must check the output of every packet, including post encryption, and take some action if a (very low probability) collision occurs (meaning the output accidentally produces this 16 byte value but the packet is not intended to be a stateless reset)? [[ nits ]] [ section 7 ] * There seem to be two paragraphs with the same text about how an endpoint validates ECN support. Seems like maybe only the first paragraph is really necessary (or, put another way: I can't see what new information the second paragraph adds). (the paragraph below Figure 4 seems to be repeated information) [ section 8.1.1 ] * "a NEW_TOKEN frames" -> "a NEW_TOKEN frame" or "NEW_TOKEN frames" [ section 17.2.3 ] * ", as defined Section" -> ", as defined in Section" |
2021-01-04
|
33 | Erik Kline | [Ballot Position Update] New position, Yes, has been recorded for Erik Kline |
2021-01-04
|
33 | Alissa Cooper | [Ballot comment] Thanks for a clear and complete document. Section 17.4: For someone coming to this new, it might not be obvious why requiring the … [Ballot comment] Thanks for a clear and complete document. Section 17.4: For someone coming to this new, it might not be obvious why requiring the disabling of the spin bit on a fraction of connections is useful. This may be worth a sentence of explanation. |
2021-01-04
|
33 | Alissa Cooper | [Ballot Position Update] New position, Yes, has been recorded for Alissa Cooper |
2021-01-04
|
33 | Deborah Brungard | [Ballot Position Update] New position, No Objection, has been recorded for Deborah Brungard |
2021-01-04
|
33 | Bernie Volz | Request for Telechat review by INTDIR Completed: Ready. Reviewer: Bernie Volz. Sent review to list. |
2021-01-04
|
33 | Stewart Bryant | Request for Telechat review by GENART Completed: Ready. Reviewer: Stewart Bryant. Sent review to list. |
2020-12-21
|
33 | Martin Duke | [Ballot comment] I'm proud of the IETF for producing this document. I have a few minor comments and a bunch of nits.: COMMENTS: 17.2.1 I … [Ballot comment] I'm proud of the IETF for producing this document. I have a few minor comments and a bunch of nits.: COMMENTS: 17.2.1 I believe it is correct that there will be no negative consequences from not having Retry-like integrity protection on VN packets. But I ask the editors to take one more careful look at it, as the VN format is one of those things we really cannot fix later. 21.13 "This means that client-controlled fields, such as the initial Destination Connection ID used on Initial and 0-RTT packets SHOULD NOT be used by themselves to make routing decisions." There was a lot of discussion in the QUIC-LB design team about whether this was an attack to be worried about or not, and we came down in favor of "not". More importantly, I don't see how this is practical advice. If we're to use Retry SCIDs to route subsequent packets, then load balancers have to use the DCID of Initials. Without validating the token, which most LBs will not do, they have no way of distinguishing between attacker-generated DCIDs with a bogus token and those that originally came from the server. One option is to simply remove this recommendation. Alternatively, you could leave this section unaltered and delete the bit in 8.1.2 about using Retry to reroute packets. In practice, keeping 21.13 would require a revision of QUIC-LB to just use 4-tuple routing for long header packets or make it less robust for new versions. 22 I am unclear about the status of these registries (except the version registry) for new versions. QUICv2 might have entirely new frame, TP, and error registries, right? Is it worthwhile to point that out? Or that it's heavily discouraged, or forbidden? NITS: 3.1 An endpoint shouldn't "generate STREAM_DATA_BLOCKED frames" if it is suffering from connection flow control limits. 8.1.2 I am not sure what you mean by the phrase "that can be unprotected" 13.3 I believe MAX_STREAM_DATA retransmissions should cease in state RESET_RECVD. 13.3 "it is not forbidden to retransmit copies of frames from lost packets" Is this true for PATH_CHALLENGE? I thought this quite explicitly shouldn't be copied. 14 "Thus, modern IPv4 and all IPv6 network paths will be able to support QUIC." Generally true, but should be qualified for the presence of arbitrary numbers of tunnels. 16 The CID length field is another exception to varint encoding. 17.2.2 Please include a reference for HelloRetryRequest for those unfamiliar with TLS. 17.2.5.3 "A client MUST use the same cryptographic handshake message it included in this packet. A server MAY treat a packet that contains a different cryptographic handshake message as a connection error or discard it." If the client hello is large, the Retry Token itself might affect what part of it fits in the packet. The language here doesn't contradict that, but a naive server implementation of the server check might not catch that corner case (e.g. including a hash of the CHLO in the Retry token) [BTW the very next paragraph redundantly repeats part of this requirement]. |
2020-12-21
|
33 | Martin Duke | Ballot comment text updated for Martin Duke |
2020-12-21
|
33 | Martin Duke | [Ballot comment] I'm proud of the IETF for producing this document. I have a few minor comments and a bunch of nits.: COMMENTS: 17.2.1 I … [Ballot comment] I'm proud of the IETF for producing this document. I have a few minor comments and a bunch of nits.: COMMENTS: 17.2.1 I believe it is correct that there will be no negative consequences from not having Retry-like integrity protection on VN packets. But I ask the editors to take one more careful look at it, as the VN format is one of those things we really cannot fix later. 21.13 "This means that client-controlled fields, such as the initial Destination Connection ID used on Initial and 0-RTT packets SHOULD NOT be used by themselves to make routing decisions." There was a lot of discussion in the QUIC-LB design team about whether this was an attack to be worried about or not, and we came down in favor of "not". More importantly, I don't see how this is practical advice. If we're to use Retry SCIDs to route subsequent packets, then load balancers have to use the DCID of Initials. Without validating the token, which most LBs will not do, they have no way of distinguishing between attacker-generated DCIDs with a bogus token and those that originally came from the server. One option is to simply remove this recommendation. Alternatively, you could leave this section unaltered and delete the bit in 8.1.2 about using Retry to reroute packets. In practice, keeping 21.13 would require a revision of QUIC-LB to just use 4-tuple routing for long header packets or make it less robust for new versions. 22 I am unclear about the status of these registries (except the version registry) for new versions. QUICv2 might have entirely new frame, TP, and error registries, right? Is it worthwhile to point that out? Or that it's heavily discouraged, or forbidden? NITS: 3.1 An endpoint shouldn't "generate STREAM_DATA_BLOCKED frames" if it is suffering from connection flow control limits. 8.1.2 I am not sure what you mean by the phrase "that can be unprotected" 13.3 I believe MAX_STREAM_DATA retransmissions should cease in state RESET_RECVD. 13.3 "it is not forbidden to retransmit copies of frames from lost packets" Is this true for PATH_CHALLENGE? I thought this quite explicitly shouldn't be copied. 14 "Thus, modern IPv4 and all IPv6 network paths will be able to support QUIC." Generally true, but should be qualified for the presence of arbitrary numbers of tunnels. 16 The CID length field is another exception to varint encoding. 17.2.2 Please include a reference for HelloRetryRequest for those unfamiliar with TLS. 17.2.5.3 "A client MUST use the same cryptographic handshake message it included in this packet. A server MAY treat a packet that contains a different cryptographic handshake message as a connection error or discard it." If the client hello is large, the Retry Token itself might affect what part of it fits in the packet. The language here doesn't contradict that, but a naive server implementation of the server check might not catch that corner case (e.g. including a hash of the CHLO in the Retry token) [BTW the very next paragraph redundantly repeats part of this requirement]. |
2020-12-21
|
33 | Martin Duke | [Ballot Position Update] New position, Yes, has been recorded for Martin Duke |
2020-12-18
|
33 | Tim Chown | Assignment of request for Telechat review by INTDIR to Tim Chown was rejected |
2020-12-17
|
33 | Jean Mahoney | Request for Telechat review by GENART is assigned to Stewart Bryant |
2020-12-17
|
33 | Jean Mahoney | Request for Telechat review by GENART is assigned to Stewart Bryant |
2020-12-16
|
33 | Bernie Volz | Request for Telechat review by INTDIR is assigned to Bernie Volz |
2020-12-16
|
33 | Bernie Volz | Request for Telechat review by INTDIR is assigned to Bernie Volz |
2020-12-15
|
33 | Bernie Volz | Request for Telechat review by INTDIR is assigned to Tim Chown |
2020-12-15
|
33 | Bernie Volz | Request for Telechat review by INTDIR is assigned to Tim Chown |
2020-12-14
|
33 | Éric Vyncke | Requested Telechat review by INTDIR |
2020-12-14
|
33 | Amy Vezza | Placed on agenda for telechat - 2021-01-07 |
2020-12-14
|
33 | Magnus Westerlund | Ballot writeup was changed |
2020-12-14
|
33 | Magnus Westerlund | IESG state changed to IESG Evaluation from Waiting for Writeup |
2020-12-14
|
33 | Magnus Westerlund | Ballot has been issued |
2020-12-14
|
33 | Magnus Westerlund | [Ballot Position Update] New position, Yes, has been recorded for Magnus Westerlund |
2020-12-14
|
33 | Magnus Westerlund | Created "Approve" ballot |
2020-12-14
|
33 | Magnus Westerlund | Ballot writeup was changed |
2020-12-13
|
33 | (System) | IANA Review state changed to Version Changed - Review Needed from IANA - Not OK |
2020-12-13
|
33 | Martin Thomson | New version available: draft-ietf-quic-transport-33.txt |
2020-12-13
|
33 | (System) | New version approved |
2020-12-13
|
33 | (System) | Request for posting confirmation emailed to previous authors: Martin Thomson , Jana Iyengar |
2020-12-13
|
33 | Martin Thomson | Uploaded new revision |
2020-12-13
|
33 | Martin Thomson | Uploaded new revision |
2020-11-17
|
32 | Ron Bonica | Request for Last Call review by OPSDIR Completed: Ready. Reviewer: Ron Bonica. Sent review to list. |
2020-11-16
|
32 | (System) | IANA Review state changed to IANA - Not OK from IANA - Review Needed |
2020-11-16
|
32 | Sabrina Tanamal | (Via drafts-lastcall@iana.org): IESG/Authors/WG Chairs: The IANA Functions Operator has completed its review of draft-ietf-quic-transport-32. If any part of this review is inaccurate, please let … (Via drafts-lastcall@iana.org): IESG/Authors/WG Chairs: The IANA Functions Operator has completed its review of draft-ietf-quic-transport-32. If any part of this review is inaccurate, please let us know. The IANA Functions Operator has questions about the actions requested in the IANA Considerations section of this document. The IANA Functions Operator understands that, upon approval of this document, there are four actions which we must complete. First, a new registry page will be created on the IANA Matrix located at: https://www.iana.org/protocols the new registry page will be titled "QUIC" and have a reference of [ RFC-to-be ]. IANA Question --> Regarding the detailed instructions in section 22.1 of the current document, it's not clear to us what information should be captured in a note. Can you provide the notes that should be added to the top of each registry? Second, a new registry will be created on the registry page created above called the QUIC Transport Parameters registry. The new registry will be managed via the Specification Required policy as defined by RFC8126. IANA will add a note to the registry indicating that: " each value of the format "31 * N + 27" for integer values of N (that is, 27, 58, 89, ...) are reserved." IANA Question --> are those values to be marked as reserved in the new registry? IANA Question --> Section 22.1.2 says, "Use of the first codepoint in a range is intended for use by specifications that are developed through the standards process [STD] and its allocation MUST be negotiated with IANA before use." What does "negotiation with IANA" mean? When there's an expert, normally this would be handled by an expert, but we understand that future documents might use this guidance but apply it to registries that have other registration procedures. Does this mean that if IESG Approval were being used, or a future registry that applied this guidance were to use a registration procedure like IETF Review, which requires only an IETF-stream RFC and does not require expert review, and the registration were being requested in an informational or experimental I-D, IANA would need to be aware of this requirement and refuse to register that codepoint? We really want to know what IANA has to know vs. what the other people such as the expert have to know. Also, does this mean that codepoints can generally be used before they've been allocated? IANA Question --> Section 22.1.2 says, "Applications to register codepoints in QUIC registries MAY include a codepoint as part of the registration. IANA MUST allocate the selected codepoint unless that codepoint is already assigned or the codepoint is the first unallocated codepoint in the registry." What if it's the first unallocated codepoint in a range, but not in the registry? There are initial registrations in the new registry as follows: +=======+=====================================+=============================+ | Value | Parameter Name | Reference | +=======+=====================================+=============================+ | 0x00 | original_destination_connection_id | [ RFC-to-be Section 18.2 ] | +-------+-------------------------------------+-----------------------------+ | 0x01 | max_idle_timeout | [ RFC-to-be Section 18.2 ] | +-------+-------------------------------------+-----------------------------+ | 0x02 | stateless_reset_token | [ RFC-to-be Section 18.2 ] | +-------+-------------------------------------+-----------------------------+ | 0x03 | max_udp_payload_size | [ RFC-to-be Section 18.2 ] | +-------+-------------------------------------+-----------------------------+ | 0x04 | initial_max_data | [ RFC-to-be Section 18.2 ] | +-------+-------------------------------------+-----------------------------+ | 0x05 | initial_max_stream_data_bidi_local | [ RFC-to-be Section 18.2 ] | +-------+-------------------------------------+-----------------------------+ | 0x06 | initial_max_stream_data_bidi_remote | [ RFC-to-be Section 18.2 ] | +-------+-------------------------------------+-----------------------------+ | 0x07 | initial_max_stream_data_uni | [ RFC-to-be Section 18.2 ] | +-------+-------------------------------------+-----------------------------+ | 0x08 | initial_max_streams_bidi | [ RFC-to-be Section 18.2 ] | +-------+-------------------------------------+-----------------------------+ | 0x09 | initial_max_streams_uni | [ RFC-to-be Section 18.2 ] | +-------+-------------------------------------+-----------------------------+ | 0x0a | ack_delay_exponent | [ RFC-to-be Section 18.2 ] | +-------+-------------------------------------+-----------------------------+ | 0x0b | max_ack_delay | [ RFC-to-be Section 18.2 ] | +-------+-------------------------------------+-----------------------------+ | 0x0c | disable_active_migration | [ RFC-to-be Section 18.2 ] | +-------+-------------------------------------+-----------------------------+ | 0x0d | preferred_address | [ RFC-to-be Section 18.2 ] | +-------+-------------------------------------+-----------------------------+ | 0x0e | active_connection_id_limit | [ RFC-to-be Section 18.2 ] | +-------+-------------------------------------+-----------------------------+ | 0x0f | initial_source_connection_id | [ RFC-to-be Section 18.2 ] | +-------+-------------------------------------+-----------------------------+ | 0x10 | retry_source_connection_id | [ RFC-to-be Section 18.2 ] | +-------+-------------------------------------+-----------------------------+ Third, a new registry will be created on the QUIC registry page created above called the QUIC Frame Types registry. The registration policy for the new registry is as follows: 0x00 - 0x3f - Standards Action or IESG Approval 0x40 - 3FFFFFFFFFFFFFFF - Specification Required There are initial registrations in the new registry as follows: +=============+======================+=============================+ | Type Value | Frame Type Name | Definition | +=============+======================+=============================+ | 0x00 | PADDING | [ RFC-to-be Section 19.1 ] | +-------------+----------------------+-----------------------------+ | 0x01 | PING | [ RFC-to-be Section 19.2 ] | +-------------+----------------------+-----------------------------+ | 0x02 - 0x03 | ACK | [ RFC-to-be Section 19.3 ] | +-------------+----------------------+-----------------------------+ | 0x04 | RESET_STREAM | [ RFC-to-be Section 19.4 ] | +-------------+----------------------+-----------------------------+ | 0x05 | STOP_SENDING | [ RFC-to-be Section 19.5 ] | +-------------+----------------------+-----------------------------+ | 0x06 | CRYPTO | [ RFC-to-be Section 19.6 ] | +-------------+----------------------+-----------------------------+ | 0x07 | NEW_TOKEN | [ RFC-to-be Section 19.7 ] | +-------------+----------------------+-----------------------------+ | 0x08 - 0x0f | STREAM | [ RFC-to-be Section 19.8 ] | +-------------+----------------------+-----------------------------+ | 0x10 | MAX_DATA | [ RFC-to-be Section 19.9 ] | +-------------+----------------------+-----------------------------+ | 0x11 | MAX_STREAM_DATA | [ RFC-to-be Section 19.10 ] | +-------------+----------------------+-----------------------------+ | 0x12 - 0x13 | MAX_STREAMS | [ RFC-to-be Section 19.11 ] | +-------------+----------------------+---------------+ | 0x14 | DATA_BLOCKED | [ RFC-to-be Section 19.12 ] | +-------------+----------------------+-----------------------------+ | 0x15 | STREAM_DATA_BLOCKED | [ RFC-to-be Section 19.13 ] | +-------------+----------------------+-----------------------------+ | 0x16 - 0x17 | STREAMS_BLOCKED | [ RFC-to-be Section 19.14 ] | +-------------+----------------------+-----------------------------+ | 0x18 | NEW_CONNECTION_ID | [ RFC-to-be Section 19.15 ] | +-------------+----------------------+-----------------------------+ | 0x19 | RETIRE_CONNECTION_ID | [ RFC-to-be Section 19.16 ] | +-------------+----------------------+-----------------------------+ | 0x1a | PATH_CHALLENGE | [ RFC-to-be Section 19.17 ] | +-------------+----------------------+-----------------------------+ | 0x1b | PATH_RESPONSE | [ RFC-to-be Section 19.18 ] | +-------------+----------------------+-----------------------------+ | 0x1c - 0x1d | CONNECTION_CLOSE | [ RFC-to-be Section 19.19 ] | +-------------+----------------------+-----------------------------+ | 0x1e | HANDSHAKE_DONE | [ RFC-to-be Section 19.20 ] | +-------------+----------------------+-----------------------------+ Fourth, a new registry will be created on the QUIC registry page created above called the QUIC Error Codes registry. The registration policy for the new registry is as follows: 0x00 - 0x3f - Standards Action or IESG Approval 0x40 - 3FFFFFFFFFFFFFFF - Specification Required There are initial registrations in the new registry as follows: +======+===========================+================+=============================+ |Value | Error |Description | Specification | +======+===========================+================+=============================+ |0x0 | NO_ERROR |No error | [ RFC-to-be Section 20 ] | +------+---------------------------+----------------+-----------------------------+ |0x1 | INTERNAL_ERROR |Implementation | [ RFC-to-be Section 20 ] | | | |error | | +------+---------------------------+----------------+-----------------------------+ |0x2 | CONNECTION_REFUSED |Server refuses a| [ RFC-to-be Section 20 ] | | | |connection | | +------+---------------------------+----------------+-----------------------------+ |0x3 | FLOW_CONTROL_ERROR |Flow control | [ RFC-to-be Section 20 ] | | | |error | | +------+---------------------------+----------------+-----------------------------+ |0x4 | STREAM_LIMIT_ERROR |Too many streams| [ RFC-to-be Section 20 ] | | | |opened | | +------+---------------------------+----------------+-----------------------------+ |0x5 | STREAM_STATE_ERROR |Frame received | [ RFC-to-be Section 20 ] | | | |in invalid | | | | |stream state | | +------+---------------------------+----------------+-----------------------------+ |0x6 | FINAL_SIZE_ERROR |Change to final | [ RFC-to-be Section 20 ] | | | |size | | +------+---------------------------+----------------+-----------------------------+ |0x7 | FRAME_ENCODING_ERROR |Frame encoding | [ RFC-to-be Section 20 ] | | | |error | | +------+---------------------------+----------------+-----------------------------+ |0x8 | TRANSPORT_PARAMETER_ERROR |Error in | [ RFC-to-be Section 20 ] | | | |transport | | | | |parameters | | +------+---------------------------+----------------+-----------------------------+ |0x9 | CONNECTION_ID_LIMIT_ERROR |Too many | [ RFC-to-be Section 20 ] | | | |connection IDs | | | | |received | | +------+---------------------------+----------------+-----------------------------+ |0xa | PROTOCOL_VIOLATION |Generic protocol| [ RFC-to-be Section 20 ] | | | |violation | | +------+---------------------------+----------------+-----------------------------+ |0xb | INVALID_TOKEN |Invalid Token | [ RFC-to-be Section 20 ] | | | |Received | | +------+---------------------------+----------------+-----------------------------+ |0xc | APPLICATION_ERROR |Application | [ RFC-to-be Section 20 ] | | | |error | | +------+---------------------------+----------------+-----------------------------+ |0xd | CRYPTO_BUFFER_EXCEEDED |CRYPTO data | [ RFC-to-be Section 20 ] | | | |buffer | | | | |overflowed | | +------+---------------------------+----------------+-----------------------------+ |0xe | KEY_UPDATE_ERROR |Invalid packet | [ RFC-to-be Section 20 ] | | | |protection | | | | |update | | +------+---------------------------+----------------+-----------------------------+ |0xf | AEAD_LIMIT_REACHED |Excessive use of| [ RFC-to-be Section 20 ] | | | |packet | | | | |protection keys | | +------+---------------------------+----------------+-----------------------------+ The IANA Functions Operator understands that these are the only actions required to be completed upon approval of this document. Note: The actions requested in this document will not be completed until the document has been approved for publication as an RFC. This message is meant only to confirm the list of actions that will be performed. Thank you, Sabrina Tanamal Senior IANA Services Specialist |
2020-11-16
|
32 | (System) | IESG state changed to Waiting for Writeup from In Last Call |
2020-10-28
|
32 | Stewart Bryant | Request for Last Call review by GENART Completed: Ready with Issues. Reviewer: Stewart Bryant. Sent review to list. |
2020-10-26
|
32 | Gunter Van de Velde | Request for Last Call review by OPSDIR is assigned to Ron Bonica |
2020-10-26
|
32 | Gunter Van de Velde | Request for Last Call review by OPSDIR is assigned to Ron Bonica |
2020-10-22
|
32 | Tero Kivinen | Request for Last Call review by SECDIR is assigned to Tirumaleswar Reddy.K |
2020-10-22
|
32 | Tero Kivinen | Request for Last Call review by SECDIR is assigned to Tirumaleswar Reddy.K |
2020-10-22
|
32 | Jean Mahoney | Request for Last Call review by GENART is assigned to Stewart Bryant |
2020-10-22
|
32 | Jean Mahoney | Request for Last Call review by GENART is assigned to Stewart Bryant |
2020-10-21
|
32 | Amy Vezza | IANA Review state changed to IANA - Review Needed |
2020-10-21
|
32 | Amy Vezza | The following Last Call announcement was sent out (ends 2020-11-16): From: The IESG To: IETF-Announce CC: quic-chairs@ietf.org, draft-ietf-quic-transport@ietf.org, quic@ietf.org, magnus.westerlund@ericsson.com, lars@eggert.org … The following Last Call announcement was sent out (ends 2020-11-16): From: The IESG To: IETF-Announce CC: quic-chairs@ietf.org, draft-ietf-quic-transport@ietf.org, quic@ietf.org, magnus.westerlund@ericsson.com, lars@eggert.org Reply-To: last-call@ietf.org Sender: Subject: Last Call: (QUIC: A UDP-Based Multiplexed and Secure Transport) to Proposed Standard The IESG has received a request from the QUIC WG (quic) to consider the following document: - 'QUIC: A UDP-Based Multiplexed and Secure Transport' as Proposed Standard This document is part of a combined 26-day last call for multiple related documents that defines the QUIC protocol and the HTTP mapping onto QUIC. The documents are: - draft-ietf-quic-transport - draft-ietf-quic-recovery - draft-ietf-quic-tls - draft-ietf-quic-invariants - draft-ietf-quic-http - draft-ietf-quic-qpack Due to its GitHub-centric work style, the QUIC WG requests that LC review comments are individually filed as issues in the WG repository at https://github.com/quicwg/base-drafts if at all possible. A summary email with URLs to the individual issue should then also be sent to the relevant mailing list (Primarily last-call@ietf.org and quic@ietf.org). The IESG plans to make a decision in the next few weeks, and solicits final comments on this action. Please send substantive comments to the last-call@ietf.org mailing lists by 2020-11-16. Exceptionally, comments may be sent to iesg@ietf.org instead. In either case, please retain the beginning of the Subject line to allow automated sorting. Abstract This document defines the core of the QUIC transport protocol. Accompanying documents describe QUIC's loss detection and congestion control and the use of TLS for key negotiation. Note to Readers Discussion of this draft takes place on the QUIC working group mailing list (quic@ietf.org (mailto:quic@ietf.org)), which is archived at https://mailarchive.ietf.org/arch/search/?email_list=quic Working Group information can be found at https://github.com/quicwg; source code and issues list for this draft can be found at https://github.com/quicwg/base-drafts/labels/-transport. The file can be obtained via https://datatracker.ietf.org/doc/draft-ietf-quic-transport/ No IPR declarations have been submitted directly on this I-D. |
2020-10-21
|
32 | Amy Vezza | IESG state changed to In Last Call from Last Call Requested |
2020-10-21
|
32 | Magnus Westerlund | Last call was requested |
2020-10-21
|
32 | Magnus Westerlund | Ballot approval text was generated |
2020-10-21
|
32 | Magnus Westerlund | Ballot writeup was generated |
2020-10-21
|
32 | Magnus Westerlund | IESG state changed to Last Call Requested from AD Evaluation |
2020-10-21
|
32 | Magnus Westerlund | Last call announcement was changed |
2020-10-21
|
32 | Magnus Westerlund | Last call announcement was changed |
2020-10-20
|
32 | Jana Iyengar | New version available: draft-ietf-quic-transport-32.txt |
2020-10-20
|
32 | (System) | New version approved |
2020-10-20
|
32 | (System) | Request for posting confirmation emailed to previous authors: Martin Thomson , Jana Iyengar |
2020-10-20
|
32 | Jana Iyengar | Uploaded new revision |
2020-09-28
|
31 | Magnus Westerlund | Ready for IETF last call. Awaits review of the other documents in the group. One editorial very minor thing found in the AD review. https://github.com/quicwg/base-drafts/issues/4170 |
2020-09-25
|
31 | Magnus Westerlund | IESG state changed to AD Evaluation from Publication Requested |
2020-09-25
|
31 | Lars Eggert | Shepherd Writeup for QUIC “base drafts” 1. Summary This publication requests covers the following I-Ds that together define the QUIC protocol: - QUIC: A UDP-Based … Shepherd Writeup for QUIC “base drafts” 1. Summary This publication requests covers the following I-Ds that together define the QUIC protocol: - QUIC: A UDP-Based Multiplexed and Secure Transport, draft-ietf-quic-transport-31 - QUIC Loss Detection and Congestion Control, draft-ietf-quic-recovery-31 - Using TLS to Secure QUIC, draft-ietf-quic-tls-31 - Version-Independent Properties of QUIC, draft-ietf-quic-invariants-11 - Hypertext Transfer Protocol Version 3 (HTTP/3), draft-ietf-quic-http-31 - QPACK: Header Compression for HTTP/3, draft-ietf-quic-qpack-18 All of these I-Ds are intended to become Proposed Standard RFCs, and that intended status is indicated in their respective title page headers. 2. Document Announcement Write-Up Technical Summary: QUIC is a standards-track, UDP-based, stream-multiplexing, encrypted transport protocol. Its main features are minimizing connection establishment and overall transport latency for applications such as HTTP/3, providing multiplexing without head-of-line blocking, requiring only changes to path endpoints to enable deployment, providing always-secure transport using TLS 1.3. This document set specifies the QUIC transport protocol and it version-independent invariants, its loss detection and recovery approach, its use of TLS1.3 for providing security, and a new version of HTTP that uses QUIC (HTTP/3), along with QPACK for header compression in that protocol. Working Group Summary: As can be expected, discussion on many aspects of QUIC was quite intense. The resulting consensus, however, was judged by the chairs to be both strong and broad. Document Quality: There are over twenty implementations of QUIC that are participating in interop testing, including all major web browsers and many server, CDN and standalone library implementations. The acknowledgements sections of the I-Ds highlight the individuals that made major contributions to a given document. Personnel: The document shepherds for the individual I-Ds are: - Lucas Pardue: - draft-ietf-quic-http-31 - draft-ietf-quic-qpack-18 - Lars Eggert: - draft-ietf-quic-transport-31 - draft-ietf-quic-recovery-31 - Mark Nottingham: - draft-ietf-quic-tls-31 - draft-ietf-quic-invariants-11 The responsible AD for the document set is Magnus Westerlund. 3. Document Shepherd Review The document shepherds extensively reviewed the documents before this publication request. 4. Document Shepherd Review Concerns The document shepherds have no concerns about the depth or breadth of the reviews for these documents. 5. Broader Reviews Parts of the document set benefited from specialized reviews from the TLS, HTTP and transport IETF communities. 6. Document Shepherd General Concerns The document shepherds have no general concerns about these documents. 7. IPR Disclosure Obligation The editors of the I-Ds have all declared that they have filed any and all appropriate IPR disclosures required for full conformance with the provisions of BCP 78 and BCP 79. 8. Filed IPR Disclosures draft-ietf-quic-recovery has had an IPR disclosure filed on it. No resulting technical changes were argued for. 9. Strength of Consensus The consensus behind the document set is very strong, also as evidenced by the substantial number of existing implementations. The WG last calls were forwarded to the TLS and HTTP WGs, due to the topical relationships. 10. Discontent No discontent was voiced. 11. Document Nits The IDNits tool does not appear to be functioning correctly, both locally and using the Web service, so it’s difficult to ascertain whether its results are accurate (there are many “Failure fetching the file, proceeding without it.” errors). 12. Formal Review Criteria No formal review requirements are applicable to this document set. 13. Split References All references within this document set have been identified as either normative or informative. 14. Normative References The document set contains the following normative references to I-Ds: - draft-ietf-httpbis-cache - draft-ietf-httpbis-semantics All of these are on track for timely publication in their respective WGs. 15. Downward References The TLS document has the following downrefs: * RFC8439 (CHACHA) * AES 16. RFC Status Changes Publication of this document set will not change the status of any existing RFCs. 17. IANA Considerations Review The IANA considerations of the document set have been reviewed and no issues were identified. 18. New “Expert Review” Registries The document set defines several IANA registries that allow for “Provisional Registrations” and “Permanent Registrations”, which both require Expert review. The IESG should select subject matter experts for these registration types; candidates include the document editors and the individuals named as contributors in the acknowledgment sections. 19. Validation of Formal Language Parts No formal code exists in the document set. draft-ietf-quic-transport, draft-ietf-quic-recovery and draft-ietf-quic-qpack contain python-like pseudo code, but not at a level of detail that would lend itself to automated checking. 20. YANG The document set does not contain a YANG model. |
2020-09-25
|
31 | Lars Eggert | Responsible AD changed to Magnus Westerlund |
2020-09-25
|
31 | Lars Eggert | IETF WG state changed to Submitted to IESG for Publication from In WG Last Call |
2020-09-25
|
31 | Lars Eggert | IESG state changed to Publication Requested from I-D Exists |
2020-09-25
|
31 | Lars Eggert | IESG process started in state Publication Requested |
2020-09-25
|
31 | Lars Eggert | Shepherd Writeup for QUIC “base drafts” 1. Summary This publication requests covers the following I-Ds that together define the QUIC protocol: - QUIC: A UDP-Based … Shepherd Writeup for QUIC “base drafts” 1. Summary This publication requests covers the following I-Ds that together define the QUIC protocol: - QUIC: A UDP-Based Multiplexed and Secure Transport, draft-ietf-quic-transport-31 - QUIC Loss Detection and Congestion Control, draft-ietf-quic-recovery-31 - Using TLS to Secure QUIC, draft-ietf-quic-tls-31 - Version-Independent Properties of QUIC, draft-ietf-quic-invariants-11 - Hypertext Transfer Protocol Version 3 (HTTP/3), draft-ietf-quic-http-31 - QPACK: Header Compression for HTTP/3, draft-ietf-quic-qpack-18 All of these I-Ds are intended to become Proposed Standard RFCs, and that intended status is indicated in their respective title page headers. 2. Document Announcement Write-Up Technical Summary: QUIC is a standards-track, UDP-based, stream-multiplexing, encrypted transport protocol. Its main features are minimizing connection establishment and overall transport latency for applications such as HTTP/3, providing multiplexing without head-of-line blocking, requiring only changes to path endpoints to enable deployment, providing always-secure transport using TLS 1.3. This document set specifies the QUIC transport protocol and it version-independent invariants, its loss detection and recovery approach, its use of TLS1.3 for providing security, and a new version of HTTP that uses QUIC (HTTP/3), along with QPACK for header compression in that protocol. Working Group Summary: As can be expected, discussion on many aspects of QUIC was quite intense. The resulting consensus, however, was judged by the chairs to be both strong and broad. Document Quality: There are over twenty implementations of QUIC that are participating in interop testing, including all major web browsers and many server, CDN and standalone library implementations. The acknowledgements sections of the I-Ds highlight the individuals that made major contributions to a given document. Personnel: The document shepherds for the individual I-Ds are: - Lucas Pardue: - draft-ietf-quic-http-31 - draft-ietf-quic-qpack-18 - Lars Eggert: - draft-ietf-quic-transport-31 - draft-ietf-quic-recovery-31 - Mark Nottingham: - draft-ietf-quic-tls-31 - draft-ietf-quic-invariants-11 The responsible AD for the document set is Magnus Westerlund. 3. Document Shepherd Review The document shepherds extensively reviewed the documents before this publication request. 4. Document Shepherd Review Concerns The document shepherds have no concerns about the depth or breadth of the reviews for these documents. 5. Broader Reviews Parts of the document set benefited from specialized reviews from the TLS, HTTP and transport IETF communities. 6. Document Shepherd General Concerns The document shepherds have no general concerns about these documents. 7. IPR Disclosure Obligation The editors of the I-Ds have all declared that they have filed any and all appropriate IPR disclosures required for full conformance with the provisions of BCP 78 and BCP 79. 8. Filed IPR Disclosures draft-ietf-quic-recovery has had an IPR disclosure filed on it. No resulting technical changes were argued for. 9. Strength of Consensus The consensus behind the document set is very strong, also as evidenced by the substantial number of existing implementations. The WG last calls were forwarded to the TLS and HTTP WGs, due to the topical relationships. 10. Discontent No discontent was voiced. 11. Document Nits The IDNits tool does not appear to be functioning correctly, both locally and using the Web service, so it’s difficult to ascertain whether its results are accurate (there are many “Failure fetching the file, proceeding without it.” errors). 12. Formal Review Criteria No formal review requirements are applicable to this document set. 13. Split References All references within this document set have been identified as either normative or informative. 14. Normative References The document set contains the following normative references to I-Ds: - draft-ietf-httpbis-cache - draft-ietf-httpbis-semantics All of these are on track for timely publication in their respective WGs. 15. Downward References The TLS document has the following downrefs: * RFC8439 (CHACHA) * AES 16. RFC Status Changes Publication of this document set will not change the status of any existing RFCs. 17. IANA Considerations Review The IANA considerations of the document set have been reviewed and no issues were identified. 18. New “Expert Review” Registries The document set defines several IANA registries that allow for “Provisional Registrations” and “Permanent Registrations”, which both require Expert review. The IESG should select subject matter experts for these registration types; candidates include the document editors and the individuals named as contributors in the acknowledgment sections. 19. Validation of Formal Language Parts No formal code exists in the document set. draft-ietf-quic-transport, draft-ietf-quic-recovery and draft-ietf-quic-qpack contain python-like pseudo code, but not at a level of detail that would lend itself to automated checking. 20. YANG The document set does not contain a YANG model. |
2020-09-25
|
31 | Lars Eggert | Notification list changed to quic-chairs@ietf.org from Lars Eggert <lars@eggert.org> |
2020-09-24
|
31 | Martin Thomson | New version available: draft-ietf-quic-transport-31.txt |
2020-09-24
|
31 | (System) | New version approved |
2020-09-24
|
31 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson |
2020-09-24
|
31 | Martin Thomson | Uploaded new revision |
2020-09-24
|
31 | Martin Thomson | Uploaded new revision |
2020-09-23
|
30 | Lars Eggert | Notification list changed to Lars Eggert <lars@eggert.org> |
2020-09-23
|
30 | Lars Eggert | Document shepherd changed to Lars Eggert |
2020-09-09
|
30 | Martin Thomson | New version available: draft-ietf-quic-transport-30.txt |
2020-09-09
|
30 | (System) | New version approved |
2020-09-09
|
30 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson |
2020-09-09
|
30 | Martin Thomson | Uploaded new revision |
2020-09-09
|
30 | Martin Thomson | Uploaded new revision |
2020-06-09
|
29 | Lars Eggert | IETF WG state changed to In WG Last Call from WG Document |
2020-06-09
|
29 | Martin Thomson | New version available: draft-ietf-quic-transport-29.txt |
2020-06-09
|
29 | (System) | New version approved |
2020-06-09
|
29 | (System) | Request for posting confirmation emailed to previous authors: Martin Thomson , Jana Iyengar |
2020-06-09
|
29 | Martin Thomson | Uploaded new revision |
2020-05-19
|
28 | Martin Thomson | New version available: draft-ietf-quic-transport-28.txt |
2020-05-19
|
28 | (System) | New version approved |
2020-05-19
|
28 | (System) | Request for posting confirmation emailed to previous authors: Martin Thomson , Jana Iyengar |
2020-05-19
|
28 | Martin Thomson | Uploaded new revision |
2020-02-21
|
27 | Martin Thomson | New version available: draft-ietf-quic-transport-27.txt |
2020-02-21
|
27 | (System) | New version approved |
2020-02-21
|
27 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson |
2020-02-21
|
27 | Martin Thomson | Uploaded new revision |
2020-02-21
|
27 | Martin Thomson | Uploaded new revision |
2020-02-21
|
26 | Martin Thomson | New version available: draft-ietf-quic-transport-26.txt |
2020-02-21
|
26 | (System) | New version approved |
2020-02-21
|
26 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson |
2020-02-21
|
26 | Martin Thomson | Uploaded new revision |
2020-02-21
|
26 | Martin Thomson | Uploaded new revision |
2020-01-21
|
25 | Martin Thomson | New version available: draft-ietf-quic-transport-25.txt |
2020-01-21
|
25 | (System) | New version approved |
2020-01-21
|
25 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson |
2020-01-21
|
25 | Martin Thomson | Uploaded new revision |
2020-01-21
|
25 | Martin Thomson | Uploaded new revision |
2019-11-03
|
24 | Martin Thomson | New version available: draft-ietf-quic-transport-24.txt |
2019-11-03
|
24 | (System) | New version approved |
2019-11-03
|
24 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson |
2019-11-03
|
24 | Martin Thomson | Uploaded new revision |
2019-11-03
|
24 | Martin Thomson | Uploaded new revision |
2019-09-11
|
23 | Martin Thomson | New version available: draft-ietf-quic-transport-23.txt |
2019-09-11
|
23 | (System) | New version approved |
2019-09-11
|
23 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson |
2019-09-11
|
23 | Martin Thomson | Uploaded new revision |
2019-09-11
|
23 | Martin Thomson | Uploaded new revision |
2019-07-09
|
22 | Martin Thomson | New version available: draft-ietf-quic-transport-22.txt |
2019-07-09
|
22 | (System) | Forced post of submission |
2019-07-09
|
22 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson |
2019-07-09
|
22 | Martin Thomson | Uploaded new revision |
2019-07-08
|
21 | Martin Thomson | New version available: draft-ietf-quic-transport-21.txt |
2019-07-08
|
21 | (System) | New version approved |
2019-07-08
|
21 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson |
2019-07-08
|
21 | Martin Thomson | Uploaded new revision |
2019-07-08
|
21 | Martin Thomson | Uploaded new revision |
2019-04-25
|
20 | Mark Nottingham | This document now replaces draft-ietf-quic-spin-exp, draft-hamilton-quic-transport-protocol instead of draft-hamilton-quic-transport-protocol |
2019-04-23
|
20 | Martin Thomson | New version available: draft-ietf-quic-transport-20.txt |
2019-04-23
|
20 | (System) | New version approved |
2019-04-23
|
20 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson |
2019-04-23
|
20 | Martin Thomson | Uploaded new revision |
2019-04-23
|
20 | Martin Thomson | Uploaded new revision |
2019-03-11
|
19 | Martin Thomson | New version available: draft-ietf-quic-transport-19.txt |
2019-03-11
|
19 | (System) | New version approved |
2019-03-11
|
19 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson |
2019-03-11
|
19 | Martin Thomson | Uploaded new revision |
2019-03-11
|
19 | Martin Thomson | Uploaded new revision |
2019-01-22
|
18 | Martin Thomson | New version available: draft-ietf-quic-transport-18.txt |
2019-01-22
|
18 | (System) | New version approved |
2019-01-22
|
18 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson , quic-chairs@ietf.org |
2019-01-22
|
18 | Martin Thomson | Uploaded new revision |
2019-01-22
|
18 | Martin Thomson | Uploaded new revision |
2018-12-18
|
17 | Martin Thomson | New version available: draft-ietf-quic-transport-17.txt |
2018-12-18
|
17 | (System) | New version approved |
2018-12-18
|
17 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson |
2018-12-18
|
17 | Martin Thomson | Uploaded new revision |
2018-12-18
|
17 | Martin Thomson | Uploaded new revision |
2018-10-23
|
16 | Martin Thomson | New version available: draft-ietf-quic-transport-16.txt |
2018-10-23
|
16 | (System) | New version approved |
2018-10-23
|
16 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson |
2018-10-23
|
16 | Martin Thomson | Uploaded new revision |
2018-10-23
|
16 | Martin Thomson | Uploaded new revision |
2018-10-03
|
15 | Martin Thomson | New version available: draft-ietf-quic-transport-15.txt |
2018-10-03
|
15 | (System) | New version approved |
2018-10-03
|
15 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson |
2018-10-03
|
15 | Martin Thomson | Uploaded new revision |
2018-10-03
|
15 | Martin Thomson | Uploaded new revision |
2018-08-14
|
14 | Martin Thomson | New version available: draft-ietf-quic-transport-14.txt |
2018-08-14
|
14 | (System) | New version approved |
2018-08-14
|
14 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson |
2018-08-14
|
14 | Martin Thomson | Uploaded new revision |
2018-08-14
|
14 | Martin Thomson | Uploaded new revision |
2018-06-27
|
13 | Martin Thomson | New version available: draft-ietf-quic-transport-13.txt |
2018-06-27
|
13 | (System) | New version approved |
2018-06-27
|
13 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson |
2018-06-27
|
13 | Martin Thomson | Uploaded new revision |
2018-06-27
|
13 | Martin Thomson | Uploaded new revision |
2018-05-22
|
12 | Martin Thomson | New version available: draft-ietf-quic-transport-12.txt |
2018-05-22
|
12 | (System) | New version approved |
2018-05-22
|
12 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson |
2018-05-22
|
12 | Martin Thomson | Uploaded new revision |
2018-05-22
|
12 | Martin Thomson | Uploaded new revision |
2018-04-17
|
11 | Jana Iyengar | New version available: draft-ietf-quic-transport-11.txt |
2018-04-17
|
11 | (System) | New version approved |
2018-04-17
|
11 | (System) | Request for posting confirmation emailed to previous authors: Jana Iyengar , Martin Thomson |
2018-04-17
|
11 | Jana Iyengar | Uploaded new revision |
2018-04-17
|
11 | Jana Iyengar | Uploaded new revision |
2018-03-04
|
10 | Martin Thomson | New version available: draft-ietf-quic-transport-10.txt |
2018-03-04
|
10 | (System) | New version approved |
2018-03-04
|
10 | (System) | Request for posting confirmation emailed to previous authors: Martin Thomson , Jana Iyengar , quic-chairs@ietf.org |
2018-03-04
|
10 | Martin Thomson | Uploaded new revision |
2018-03-04
|
10 | Martin Thomson | Uploaded new revision |
2018-03-04
|
10 | (System) | Request for posting confirmation emailed to previous authors: Martin Thomson , Jana Iyengar , quic-chairs@ietf.org |
2018-03-04
|
10 | Martin Thomson | Uploaded new revision |
2018-03-04
|
10 | Martin Thomson | Uploaded new revision |
2018-01-28
|
09 | Martin Thomson | New version available: draft-ietf-quic-transport-09.txt |
2018-01-28
|
09 | (System) | New version approved |
2018-01-28
|
09 | (System) | Request for posting confirmation emailed to previous authors: Martin Thomson , Janardhan Iyengar |
2018-01-28
|
09 | Martin Thomson | Uploaded new revision |
2018-01-28
|
09 | Martin Thomson | Uploaded new revision |
2017-12-05
|
08 | Martin Thomson | New version available: draft-ietf-quic-transport-08.txt |
2017-12-05
|
08 | (System) | New version approved |
2017-12-05
|
08 | (System) | Request for posting confirmation emailed to previous authors: Martin Thomson , Janardhan Iyengar |
2017-12-05
|
08 | Martin Thomson | Uploaded new revision |
2017-12-05
|
08 | Martin Thomson | Uploaded new revision |
2017-10-14
|
07 | Martin Thomson | New version available: draft-ietf-quic-transport-07.txt |
2017-10-14
|
07 | (System) | New version approved |
2017-10-13
|
07 | (System) | Request for posting confirmation emailed to previous authors: Martin Thomson , Janardhan Iyengar |
2017-10-13
|
07 | Martin Thomson | Uploaded new revision |
2017-10-13
|
07 | Martin Thomson | Uploaded new revision |
2017-09-22
|
06 | Jana Iyengar | New version available: draft-ietf-quic-transport-06.txt |
2017-09-22
|
06 | (System) | New version approved |
2017-09-22
|
06 | (System) | Request for posting confirmation emailed to previous authors: Martin Thomson , Janardhan Iyengar |
2017-09-22
|
06 | Jana Iyengar | Uploaded new revision |
2017-08-15
|
05 | Martin Thomson | New version available: draft-ietf-quic-transport-05.txt |
2017-08-15
|
05 | (System) | New version approved |
2017-08-15
|
05 | (System) | Request for posting confirmation emailed to previous authors: Martin Thomson , Janardhan Iyengar |
2017-08-15
|
05 | Martin Thomson | Uploaded new revision |
2017-06-13
|
04 | Martin Thomson | New version available: draft-ietf-quic-transport-04.txt |
2017-06-13
|
04 | (System) | New version approved |
2017-06-13
|
04 | (System) | Request for posting confirmation emailed to previous authors: Martin Thomson , Janardhan Iyengar |
2017-06-13
|
04 | Martin Thomson | Uploaded new revision |
2017-05-22
|
03 | Mark Nottingham | Added to session: interim-2017-quic-02 |
2017-05-21
|
03 | Martin Thomson | New version available: draft-ietf-quic-transport-03.txt |
2017-05-21
|
03 | (System) | New version approved |
2017-05-21
|
03 | (System) | Request for posting confirmation emailed to previous authors: Martin Thomson , Janardhan Iyengar , quic-chairs@ietf.org |
2017-05-21
|
03 | Martin Thomson | Uploaded new revision |
2017-03-29
|
02 | Mark Nottingham | Added to session: IETF-98: quic Thu-0900 |
2017-03-13
|
02 | Mike Bishop | New version available: draft-ietf-quic-transport-02.txt |
2017-03-13
|
02 | (System) | New version approved |
2017-03-13
|
02 | (System) | Request for posting confirmation emailed to previous authors: Martin Thomson , Janardhan Iyengar , quic-chairs@ietf.org |
2017-03-13
|
02 | Mike Bishop | Uploaded new revision |
2017-01-16
|
01 | Lars Eggert | Added to session: interim-2017-quic-01 |
2017-01-16
|
01 | Lars Eggert | Added to session: interim-2017-quic-01 |
2017-01-16
|
01 | Lars Eggert | Added to session: interim-2017-quic-01 |
2017-01-14
|
01 | Mike Bishop | New version available: draft-ietf-quic-transport-01.txt |
2017-01-14
|
01 | (System) | New version approved |
2017-01-14
|
01 | (System) | Request for posting confirmation emailed to previous authors: "Janardhan Iyengar" , "Martin Thomson" , quic-chairs@ietf.org |
2017-01-14
|
01 | Mike Bishop | Uploaded new revision |
2016-11-28
|
00 | Mark Nottingham | Changed consensus to Yes from Unknown |
2016-11-28
|
00 | Mark Nottingham | Intended Status changed to Proposed Standard from None |
2016-11-28
|
00 | Mark Nottingham | This document now replaces draft-hamilton-quic-transport-protocol instead of None |
2016-11-28
|
00 | Martin Thomson | New version available: draft-ietf-quic-transport-00.txt |
2016-11-28
|
00 | (System) | WG -00 approved |
2016-11-28
|
00 | Martin Thomson | Set submitter to "Martin Thomson ", replaces to draft-hamilton-quic-transport-protocol and sent approval email to group chairs: quic-chairs@ietf.org |
2016-11-28
|
00 | Martin Thomson | Uploaded new revision |