-
Notifications
You must be signed in to change notification settings - Fork 204
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Restructure packetization section #985
Conversation
Addressed @martinthomson's editorial comments.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
draft-ietf-quic-transport.md
Outdated
|
||
Clients MUST ensure that the first packet in a connection, and any | ||
retransmissions of those octets, has a QUIC packet size of least 1200 octets. | ||
The packet size for a QUIC packet includes the QUIC header and integrity check, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
s/"packet size for QUIC packet"/"QUIC packet size"
Keep the terminology consistent, and shorter
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think we need this; "QUIC packet size" is defined in Section 2.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I never realized that "QUIC packet size" was defined there. I think that this is the better place to add that definition.
draft-ietf-quic-transport.md
Outdated
The packet size for a QUIC packet includes the QUIC header and integrity check, | ||
but not the UDP or IP header. | ||
|
||
The initial client packet SHOULD be padded to exactly 1200 octets unless the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
s/initial client/QUIC initlal
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps "QUIC Initial and Handshake packets" ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's only Initial. I'll reword this.
draft-ietf-quic-transport.md
Outdated
an MTU of this size and helps reduce the amplitude of amplification attacks | ||
caused by server responses toward an unverified client address. | ||
|
||
Servers MUST ignore an initial plaintext packet from a client if its total size |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
s/initial plaintext packet/QUIC initial packet
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Moar rewording coming up.
draft-ietf-quic-transport.md
Outdated
exist in other transports. PADDING frames generate acknowledgements, but their | ||
content need not be delivered reliably. PADDING frames may delay the delivery of | ||
application data, as they consume the congestion window. However, by definition | ||
their likely loss in a probe packet does not require delay- inducing |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Eliminate space after dash.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, a few minor things.
draft-ietf-quic-transport.md
Outdated
## Packet Size | ||
|
||
Clients MUST ensure that the first packet in a connection, and any | ||
retransmissions of those octets, has a QUIC packet size of least 1200 octets. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
grammar nit: s/retransmissions/retransmission/ , since it's followed by "has a"
draft-ietf-quic-transport.md
Outdated
|
||
Clients MUST ensure that the first packet in a connection, and any | ||
retransmissions of those octets, has a QUIC packet size of least 1200 octets. | ||
The packet size for a QUIC packet includes the QUIC header and integrity check, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think we need this; "QUIC packet size" is defined in Section 2.
draft-ietf-quic-transport.md
Outdated
The packet size for a QUIC packet includes the QUIC header and integrity check, | ||
but not the UDP or IP header. | ||
|
||
The initial client packet SHOULD be padded to exactly 1200 octets unless the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps "QUIC Initial and Handshake packets" ?
draft-ietf-quic-transport.md
Outdated
|
||
All QUIC packets SHOULD be sized to fit within the estimated PMTU to avoid IP | ||
fragmentation or packet drops. To optimize bandwidth efficiency, endpoints | ||
SHOULD use Packetization Layer PMTU Discovery ({{!PLPMTUD=RFC4821}}) and MAY use |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
readability nit: long sentence, which is fine, but I would split it at the "and": "... SHOULD use Packetization Layer PMTU Discovery ({{!PLPMTUD=RFC4821}}). Endpoints MAY use ..."
draft-ietf-quic-transport.md
Outdated
|
||
QUIC endpoints that implement any kind of PMTU discovery SHOULD maintain an | ||
estimate for each combination of local and remote IP addresses (as each pairing | ||
could have a different maximum MTU in the path). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
suggestion: remove the round brackets, and make the parenthetical phrase part of the main sentence.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
or a new sentence
draft-ietf-quic-transport.md
Outdated
could have a different maximum MTU in the path). | ||
|
||
QUIC depends on the network path supporting a MTU of at least 1280 octets. This | ||
is the IPv6 minimum and therefore also supported by most modern IPv4 networks. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: s/the IPv6 minimum/the IPv6 minimum packet size/
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
MTU, not packet size (a 1280 MTU implies a smaller packet size)
draft-ietf-quic-transport.md
Outdated
|
||
QUIC depends on the network path supporting a MTU of at least 1280 octets. This | ||
is the IPv6 minimum and therefore also supported by most modern IPv4 networks. | ||
An endpoint MUST NOT reduce their MTU below this number, even if it receives |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: s/their MTU/its MTU/
draft-ietf-quic-transport.md
Outdated
An endpoint MUST NOT reduce their MTU below this number, even if it receives | ||
signals that indicate a smaller limit might exist. | ||
|
||
If a QUIC endpoint determines that the PMTU between any pair of local and remote |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's obviously a good reason for this, which I can't seem to remember. Why do we disallow smaller packets? Can you add a note here about that as well, so it's obvious to any reader?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My reading of this is that the maximum must not be reduced, but if you have less to send, go ahead. This will trigger packet loss and eventual connection failure when sending bulk data on a network that does not honor the 1200 minimum and therefore possibly trigger a connection migration if possible, or otherwise stop a hopeless quest.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Another reason may be to prevent DoS attacks by injection of unverifiable network congestion control / status data.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm going to request that you open an issue if you care about this. This is old text and I'm not really equipped to deal with it right now. I think that @mikkelfj is approximately right. It might also be to avoid using paths that will drop random packets.
Frankly, I don't think that we need the requirement. If you know that this has happened, you can deal. The only real cost at that point is that you might be unable to create a new connection on that path.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ugh, this is what you get when you move text. I swear I didn't change anything here.
Rewording coming up.
draft-ietf-quic-transport.md
Outdated
|
||
Clients MUST ensure that the first packet in a connection, and any | ||
retransmissions of those octets, has a QUIC packet size of least 1200 octets. | ||
The packet size for a QUIC packet includes the QUIC header and integrity check, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I never realized that "QUIC packet size" was defined there. I think that this is the better place to add that definition.
draft-ietf-quic-transport.md
Outdated
The packet size for a QUIC packet includes the QUIC header and integrity check, | ||
but not the UDP or IP header. | ||
|
||
The initial client packet SHOULD be padded to exactly 1200 octets unless the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's only Initial. I'll reword this.
draft-ietf-quic-transport.md
Outdated
an MTU of this size and helps reduce the amplitude of amplification attacks | ||
caused by server responses toward an unverified client address. | ||
|
||
Servers MUST ignore an initial plaintext packet from a client if its total size |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Moar rewording coming up.
draft-ietf-quic-transport.md
Outdated
|
||
QUIC endpoints that implement any kind of PMTU discovery SHOULD maintain an | ||
estimate for each combination of local and remote IP addresses (as each pairing | ||
could have a different maximum MTU in the path). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
or a new sentence
draft-ietf-quic-transport.md
Outdated
could have a different maximum MTU in the path). | ||
|
||
QUIC depends on the network path supporting a MTU of at least 1280 octets. This | ||
is the IPv6 minimum and therefore also supported by most modern IPv4 networks. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
MTU, not packet size (a 1280 MTU implies a smaller packet size)
draft-ietf-quic-transport.md
Outdated
An endpoint MUST NOT reduce their MTU below this number, even if it receives | ||
signals that indicate a smaller limit might exist. | ||
|
||
If a QUIC endpoint determines that the PMTU between any pair of local and remote |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm going to request that you open an issue if you care about this. This is old text and I'm not really equipped to deal with it right now. I think that @mikkelfj is approximately right. It might also be to avoid using paths that will drop random packets.
Frankly, I don't think that we need the requirement. If you know that this has happened, you can deal. The only real cost at that point is that you might be unable to create a new connection on that path.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Merge when you're ready.
This includes the changes from #849, which I have simply moved around.
I think that moving out the discussion on packet size to a subsection helps focus the attention on the most important part of this section, which is the discussion of how retransmission of frames works.
Closes #849.