jiebi/ids-paragraph-commentary-corpus huggingface dataset:
Draft: draft-ietf-quic-datagram

Commentary: Thanks !
Unreliable QUIC datagrams can also be used to implement an IP packet
tunnel over QUIC, such as for a Virtual Private Network (VPN).
Internet-layer tunneling protocols generally require a reliable and
authenticated handshake, followed by unreliable secure transmission
of IP packets.  This can, for example, require a TLS connection for
the control data, and DTLS for tunneling IP packets.  A single QUIC
connection could support both parts with the use of unreliable
datagrams.
Unreliable QUIC datagrams can also be used to implement an IP packet
tunnel over QUIC, such as for a Virtual Private Network (VPN).
Internet-layer tunneling protocols generally require a reliable and
authenticated handshake, followed by unreliable secure transmission
of IP packets.  This can, for example, require a TLS connection for
the control data, and DTLS for tunneling IP packets.  A single QUIC
connection could support both parts with the use of unreliable
datagrams in addition to reliable streams.
Note that while the max_datagram_frame_size transport parameter
places a limit on the maximum size of DATAGRAM frames, that limit can
be further reduced by the max_packet_size transport parameter and the
Maximum Transmission Unit (MTU) of the path between endpoints.
DATAGRAM frames cannot be fragmented; therefore, application
protocols need to handle cases where the maximum datagram size is
limited by other factors.
Note that while the max_datagram_frame_size transport parameter
places a limit on the maximum size of DATAGRAM frames, that limit can
be further reduced by the max_udp_payload_size transport parameter
and the Maximum Transmission Unit (MTU) of the path between
endpoints.  DATAGRAM frames cannot be fragmented; therefore,
application protocols need to handle cases where the maximum datagram
size is limited by other factors.
The DATAGRAM frame shares the same security properties as the rest of
the data transmitted within a QUIC connection.  All application data
transmitted with the DATAGRAM frame, like the STREAM frame, MUST be
protected either by 0-RTT or 1-RTT keys.
The DATAGRAM frame shares the same security properties as the rest of
the data transmitted within a QUIC connection, and the security
considerations of RFC9000 apply accordingly.  All application data
transmitted with the DATAGRAM frame, like the STREAM frame, MUST be
protected either by 0-RTT or 1-RTT keys.
Draft: draft-ietf-quic-datagram

Commentary: Addresses Opsdir review comment 
 Thanks
The use of DATAGRAM frames might be detectable by an adversary on
path that is capable of dropping packets.  Since DATAGRAM frames do
not use transport-level retransmission, connections that use DATAGRAM
frames might be distinguished from other frames using the different
response to loss.
The use of DATAGRAM frames might be detectable by an adversary on
path that is capable of dropping packets.  Since DATAGRAM frames do
not use transport-level retransmission, connections that use DATAGRAM
frames might be distinguished from other connections due to their
different response to packet loss.
Draft: draft-ietf-quic-datagram

Commentary: This should get the discussion venue automatically populated , and is based on
Discussion of this work is encouraged to happen on the QUIC IETF
mailing list quic@ietf.org [1] or on the GitHub repository which
contains the draft: https://github.com/quicwg/datagram [2].
Discussion of this work is encouraged to happen on the QUIC IETF
mailing list quic@ietf.org [3] or on the GitHub repository which
contains the draft: https://github.com/quicwg/datagram [4].
Draft: draft-ietf-quic-datagram

Commentary: Section 5 : says DATAGRAM frames MUST be protected with either 0 - RTT or 1 - RTT keys . I would suggest to add the " otherwise what happens " part . One / two like explanation will be helpful and I think that will improve the understanding of this requirement . 
 Almost all QUIC frame types are like this . I would suggest saying " Like STREAM frames , ... " to make this obvious for the rationale .
DATAGRAM frames MUST be protected with either 0-RTT or 1-RTT keys.
Like STREAM frames, DATAGRAM frames contain application data and MUST
be protected with either 0-RTT or 1-RTT keys.
Draft: draft-ietf-quic-datagram

Commentary: The IANA section was before the QUIC registries had a notion of permanent vs provisional , and we then forgot to update it . This PR fixes that oversight . 
 Latest change looks good to me 
 Noticed during Shepherd review . All of the core types registered in RFC 9000 simply link to the relevant document ( RFC 9000 ) and section in the document where the protocol element is defined . In contrast , in datagram 's IANA considerations section , the transport parameter and frame type registrations include the required field with some text that is already included in the document . This will manifest as a weird juxtaposition in the IANA table . I suggest you simply reference the section 3 and section 4 respectively . If you really want some prose ( I do n't recommend that ) then it can be as a note to the table . 
 I noticed that when writing and I agree , we should just list " This specification " in there as most RFCs do . 
 Noticed during the shepherd writeup of IANA considerations : The document is attempting to register : maxdatagramframe_size   with value 0x0020 DATAGRAM frame type with values 0x30 and 0x31 According to IANA ( ) registrations can be of different types . Here the requested values are in the bracket . So I suggest that the document state clearly that this is a request for permanent registration of these types . 
 Agreed . Wrote up to fix this . 
 LGTM , thanks !
A non-zero value indicates that the endpoint supports receiving
unreliable DATAGRAM frames.  An endpoint that advertises this
transport parameter can receive DATAGRAM frames from the other
endpoint, up to and including the length in bytes provided in the
transport parameter.  The default value is 0.
This document registers a new value in the QUIC Transport Parameter
Registry maintained at <https://www.iana.org/assignments/quic/
quic.xhtml#quic-transport>.
This document registers two new values in the QUIC Frame Type
registry maintained at <https://www.iana.org/assignments/quic/
quic.xhtml#quic-frame-types>.
Draft: draft-ietf-quic-datagram

Commentary: In the introduction , it says " Reliability within QUIC is performed on a per - stream basis , so some frame types are not eligible for retransmission " Is it really per - stream ? Some frames are retransmitted even though they are n't associated with a stream . Really , the detection mechanism is packet - based , the retransmission decision is made on a per - frame basis , and for stream - specific frames there is the consideration of stream state ( i.e. do not resend if reset ) I suggest replacing the sentence above with " Some QUIC frame types are not eligible for retransmission . " 
 Do you have examples ? It 's common for an action to be attempted again , but not for the frame to be retransmitted . That 's not quite right . QUIC does not retransmit stream frames , it instead looks at stream state to see what data needs to be retransmitted - there 's an important conceptual difference there : let 's say you had 100 bytes left in your packet and therefore sent 98 bytes of stream data and that got lost but now you have a full 1200 payload available , you should n't retransmit that 100 byte STREAM frame and instead create a new STREAM frame with as much data as you want to send . states : 
 So I agree with everything you 're saying factually ; this is an editorial , semantic gripe about what it means that reliability is on a per - stream basis and what it means that a frame is retransmitted . It 's true that , for example , MAX_DATA frames are n't resent verbatim , but RFC 9000 addresses them in a section called " retransmission of information " due to the common - sense meaning of the term . What are you trying to communicate by saying that reliability is " on a per - stream basis " ? 
 I agree that this sentence is confusing . Perhaps we just remove it entirely ? thoughts ? 
 made a proposal with 
 LGTM modulo one commentLGTM
The QUIC Transport Protocol RFC9000 provides a secure, multiplexed
connection for transmitting reliable streams of application data.
Reliability within QUIC is performed on a per-stream basis, so some
frame types are not eligible for retransmission.
The QUIC Transport Protocol RFC9000 provides a secure, multiplexed
connection for transmitting reliable streams of application data.
QUIC uses various frame types to transmit data within packets, and
each frame type defines whether or not the data it contains will be
retransmitted.  Streams of reliable application data are sent using
STREAM frames.
Note that DATAGRAM frames are only meant for unreliable
transmissions.  Reliable transmission is already supported by QUIC
via STREAM frames.
Draft: draft-ietf-quic-datagram

Commentary: could also do s/,/ ; but whatever . 
 I 'm not qualified to handle this level of copy - editing , this sounds like something best suited for the RFC editor .
Note that while the max_datagram_frame_size transport parameter
places a limit on the maximum size of DATAGRAM frames, that limit can
be further reduced by the max_packet_size transport parameter and the
Maximum Transmission Unit (MTU) of the path between endpoints.
DATAGRAM frames cannot be fragmented, therefore application protocols
need to handle cases where the maximum datagram size is limited by
other factors.
Note that while the max_datagram_frame_size transport parameter
places a limit on the maximum size of DATAGRAM frames, that limit can
be further reduced by the max_packet_size transport parameter and the
Maximum Transmission Unit (MTU) of the path between endpoints.
DATAGRAM frames cannot be fragmented; therefore, application
protocols need to handle cases where the maximum datagram size is
limited by other factors.
Draft: draft-ietf-quic-datagram

Commentary: Minor editorial changes from WGLC comments . 
 Thanks for writing this  , much appreciated !
When an application sends an unreliable datagram over a QUIC
connection, QUIC will generate a new DATAGRAM frame and send it in
the first available packet.  This frame SHOULD be sent as soon as
possible, and MAY be coalesced with other frames.
When an application sends a datagram over a QUIC connection, QUIC
will generate a new DATAGRAM frame and send it in the first available
packet.  This frame SHOULD be sent as soon as possible, and MAY be
coalesced with other frames.
Draft: draft-ietf-quic-datagram

Commentary: From list discussion : What does " strongly associated " mean in this context ? We should remove " strongly " . 
 I agree , removing strongly seems best 
 Thank you !
DATAGRAM frames belong to a QUIC connection as a whole, and are not
strongly associated with any stream ID at the QUIC layer.  However,
it is expected that applications will want to differentiate between
specific DATAGRAM frames by using identifiers, such as for logical
flows of datagrams or to distinguish between different kinds of
datagrams.
DATAGRAM frames belong to a QUIC connection as a whole, and are not
associated with any stream ID at the QUIC layer.  However, it is
expected that applications will want to differentiate between
specific DATAGRAM frames by using identifiers, such as for logical
flows of datagrams or to distinguish between different kinds of
datagrams.
Draft: draft-ietf-quic-datagram

Commentary: and a bit of editorializing of thee text to match RFC 9000 . 
 If you 're receptive to this suggestion I am happy to file a PR 
 Oh wow I had n't realized that we never updated to the new style . A PR would be lovely please !
A variable-length integer specifying the length of the datagram in
bytes.  This field is present only when the LEN bit is set.  If
the LEN bit is not set, the datagram data extends to the end of
the QUIC packet.  Note that empty (i.e., zero-length) datagrams
are allowed.
A variable-length integer specifying the length of the Datagram
Data field in bytes.  This field is present only when the LEN bit
is set to 1.  When the LEN bit is set to 0, the Datagram Data
field extends to the end of the QUIC packet.  Note that empty
(i.e., zero-length) datagrams are allowed.
Draft: draft-ietf-quic-datagram

Commentary: Let me know if anyone else should be ! 
 We should update the acknowledgements
Thanks to Ian Swett, who inspired this proposal.
The original proposal for this work came from Ian Swett.
This document had reviews and input from many contributors in the
IETF QUIC Working Group, with substantive input from Nick Banks,
Lucas Pardue, Rui Paulo, and Martin Thomson, and Chris Wood.
Draft: draft-ietf-quic-datagram

Commentary: Thank you ! 
 Rephrasing what I mentioned at the mic , imagine a scenario where an application uses DATAGRAM to send a single fixed message ( " fire the missile " ) . An adversary on path can start selectively dropping packets and checking to see whether or not they 're retransmitted to learn whether or not this special message was sent . ( Retransmission detection could be done by looking at the size of the QUIC packet carrying the DATAGRAM , for example . ) I do n't claim this is easy to do in practice , or useful , but I think it does raise interesting questions about how this new frame affects QUIC 's security posture . Perhaps some text in the security considerations is needed ? ( Issue copied from , by on 2019 - 11 - 19 ) 
 from on 2020 - 02 - 21 : How would that be different from streams in ordinary QUIC ? Here you can also drop packets and look for retransmissions of a specific size ? If there is overlap , this issue belongs to QUIC transport security considerations in general . 
 I think the key here is that , in dropping the special datagram frame and not seeing anything retransmitted , one could learn something about what was sent . 
 If we take my recommendation in to always at least send out a PING frame / packet for PTOs or losses of DATAGRAM frame / packets then , it may mitigate this leakage some . There would always be something sent out on these selective losses . I 'm not sure how hard it would be to determine if the lost packet was a DATAGRAM or not with this behavior . My guess is that it would be implementation dependent . 
 PING does n't really cut it here , because presence and size matter . 
 Does the attacker have a way of knowing that the packet that was dropped contained a DATAGRAM , vs some other non - retransmitted frame , such as PADDING or PING or ACK ? 
 Probably not , though I would say that the retransmission logic for those three frames could be different enough that the choice of frame might leak . Nothing much doing here , though we might note that retransmission logic might expose information that can be used for traffic analysis .
The use of DATAGRAM frames might be detectable by an adversary on
path that is capable of dropping packets.  Since DATAGRAM frames do
not use transport-level retransmission, connections that use DATAGRAM
frames might be distinguished from other frames using the different
response to loss.
Draft: draft-ietf-quic-datagram

Commentary: Some applications might want to send messages , and not care about the order of delivery , but still get reliability . QUIC streams give them reliability , but within a stream it enforces order of delivery . This datagram proposal gives unordered delivery of messages , but without reliability . Why not provide datagrams with optional ( opt - in ) reliability ? It should n't be a lot of extra work for QUIC implementors to provide reliable datagrams as well as unreliable , given that retransmission is already there for QUIC streams . ( I guess an application could create a separate QUIC stream for each unordered reliable message . That might work , but seems ugly and may have some overhead . ) 
 What you describe can already be accomplished using streams : each “ reliable datagram ” is its own stream . That provides reliable delivery without ordering between independent datagrams . I do n’t think we need to add optional reliability to the datagram spec . 
 Streams are very lightweight , and well suited to this task . Beware applying intuition from TCP too heavily . 
 So , here 's a suggestion then : since I 'm sure I 'm not the only person who is going to think of this , maybe add some verbiage to the spec explaining why supporting reliable datagrams is unnecessary ? 
 Sounds good . We can keep this issue open as requesting an editorial change .
Note that DATAGRAM frames are only meant for unreliable
transmissions.  Reliable transmission is already supported by QUIC
via STREAM frames.
Draft: draft-ietf-quic-datagram

Commentary: Approved pending one nit
Some applications, particularly those that need to transmit real-time
data, prefer to transmit data unreliably.  These applications can
build directly upon UDP RFC0768 as a transport, and can add security
with DTLS RFC6347.  Extending QUIC to support transmitting unreliable
application data would provide another option for secure datagrams,
with the added benefit of sharing a cryptographic and authentication
context used for reliable streams.
Some applications, particularly those that need to transmit real-time
data, prefer to transmit data unreliably.  In the past, these
applications have built directly upon UDP RFC0768 as a transport, and
have often added security with DTLS RFC6347.  Extending QUIC to
support transmitting unreliable application data provides another
option for secure datagrams, with the added benefit of sharing the
cryptographic and authentication context used for reliable streams.
Draft: draft-ietf-quic-datagram

Commentary: I put this in Security Considerations , but I can see that is another good choice ( perhaps a better one ) . 
 I agree this could also be its own subsection of section 5 , but given that this really is just reiterating an existing requirement , it 's also OK where it is . 
 Application protocols that use QUIC are required to define how 0 - RTT is used . This draft does n't really change that , but it does add to what 0 - RTT can carry . In an abundance of caution , it should link to .
Application protocols that allow DATAGRAM frames to be sent in 0-RTT
require a profile that defines acceptable use of 0-RTT; see
Section 5.6 of RFC9001.
Draft: draft-ietf-quic-datagram

Commentary: Drop the text on acknowledgments . Then modify the congestion control thing to make the benefit clearer . A unified congestion controller can be more efficient . 
 -- This is not an application - layer signal . While the peer might have received the packet and processed it at the QUIC layer , this does not guarantee that the DATAGRAM frame contents were processed by the application . The draft already acknowledges this in . However , the treatment in the motivation could be misleading . Consider dropping this item . 
 -- Is n't it the case that they are acknowledged ? ( This one is just a nit , the next issue will be more serious . )
QUIC datagrams, while unreliable, can support acknowledgements,
allowing applications to be aware of whether a datagram was
successfully received.
QUIC datagrams are subject to QUIC congestion control, allowing
applications to avoid implementing their own.
These reductions in connection latency, and application insight into
the delivery of datagrams, can be useful for optimizing audio/video
streaming applications, gaming applications, and other real-time
network applications.
QUIC datagrams are subject to QUIC congestion control.  Providing
a single congestion control for both reliable and unreliable data
can be more effective and efficient.
These features can be useful for optimizing audio/video streaming
applications, gaming applications, and other real-time network
applications.
Draft: draft-ietf-quic-datagram

Commentary: The use of " SHOULD NOT " implies that a ) this is discretionary , and b ) that applications might be able to rely on it in some cases . I do n't believe that either is true unless the protocol were specified entirely differently . ( And that alternative specification would n't be practical anyway . )
Similarly, if a packet containing a DATAGRAM frame is acknowledged,
the implementation MAY notify the sender application that the
datagram was successfully transmitted and received.  Due to
reordering, this can include a DATAGRAM frame that was thought to be
lost, but which at a later point was received and acknowledged.  It
is important to note that acknowledgement of a DATAGRAM frame only
indicates that the transport-layer handling on the receiver processed
the frame, and does not guarantee that the application on the
receiver successfully processed the data.  Thus, this signal SHOULD
NOT replace application-layer signals that indicate successful
processing.
Similarly, if a packet containing a DATAGRAM frame is acknowledged,
the implementation MAY notify the sender application that the
datagram was successfully transmitted and received.  Due to
reordering, this can include a DATAGRAM frame that was thought to be
lost, but which at a later point was received and acknowledged.  It
is important to note that acknowledgement of a DATAGRAM frame only
indicates that the transport-layer handling on the receiver processed
the frame, and does not guarantee that the application on the
receiver successfully processed the data.  Thus, this signal cannot
replace application-layer signals that indicate successful
processing.
Draft: draft-ietf-quic-datagram

Commentary: RFC 9002 does n't equivocate regarding whether probes are sent : ack - eliciting packet in the packet number space as a probe . This text uses " MAY " , which strongly suggests that probes are discretionary . That 's not true .
As with any ack-eliciting frame, when a sender suspects that a packet
containing only DATAGRAM frames has been lost, it MAY send probe
packets to elicit a faster acknowledgement as described in
Section 6.2.4 of RFC9002.
As with any ack-eliciting frame, when a sender suspects that a packet
containing only DATAGRAM frames has been lost, it sends probe packets
to elicit a faster acknowledgement as described in Section 6.2.4 of
RFC9002.