Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MSS and MTU #592

Closed
gloinul opened this issue Jun 6, 2017 · 4 comments
Closed

MSS and MTU #592

gloinul opened this issue Jun 6, 2017 · 4 comments
Assignees
Labels
-recovery design An issue that affects the design of the protocol; resolution requires consensus. has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list.

Comments

@gloinul
Copy link
Contributor

gloinul commented Jun 6, 2017

In draft-ietf-quic-recovery-03, section 4.3:

kDefaultMss (default 1460 bytes):  The default max packet size used
for calculating default and minimum congestion windows.

kInitialWindow (default 10 * kDefaultMss):  Default limit on the
amount of outstanding data in bytes.

kMinimumWindow (default 2 * kDefaultMss):  Default minimum congestion
window.

The document doesn't discuss MSS more, however it clearly have significant impact on the protocol behavior. Thus, I really like to get some clarifications on how MSS are handled in QUIC. Some questions I have are:

  1. What is the relation between MSS and IP layer MTU?
  2. Is the constants above intended to be related to actual packets possible to send, where MSS = MTU is important, or only to indicate a certain number of bytes?
  3. What manipulation is allowed of MSS during a connections life time. In QUIC change of MTU has to be expected for several reasons. Thus, should MSS be updated due to MTU changes, and how are they performed?
@martinthomson martinthomson added design An issue that affects the design of the protocol; resolution requires consensus. -recovery labels Jun 6, 2017
@martinthomson martinthomson changed the title Recovery: Size of MSS and relation to MTU Size of MSS and relation to MTU Jun 20, 2017
@mnot mnot changed the title Size of MSS and relation to MTU MSS and MTU Jun 21, 2017
@oknet
Copy link

oknet commented Nov 13, 2017

According to https://quicwg.github.io/base-drafts/draft-ietf-quic-transport.html#rfc.section.9

In the absence of these mechanisms, QUIC endpoints SHOULD NOT send IP packets larger than 1280 octets. Assuming the minimum IP header size, this results in a QUIC packet size of 1232 octets for IPv6 and 1252 octets for IPv4.
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).
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 signals that indicate a smaller limit might exist.

@pravb
Copy link

pravb commented Nov 16, 2017

I think kInitialWindow and kMinimumWindow need to refer to actual MSS rather than a constant kDefaultMss. For implementations that use the minimum value and do not do PMTU discovery they should use kDefaultMss 1232 or 1252. For implementations that do PMTU discovery the kDefaultMss will reflect the actual MSS for the path which could be as high as 9k - 40 when jumbo frames are configured in a DC network but typically would be similar to TCP i.e. 1460.

@gloinul
Copy link
Contributor Author

gloinul commented Mar 9, 2018

A Quick look in -10 seems that this is not yet addressed, so I will keep it open.

@ianswett ianswett self-assigned this Mar 13, 2018
@ianswett
Copy link
Contributor

The intent is to use MSS to set a congestion window that is similar to what a TCP connection would use. It also factors into Reno congestion control, since that specifies one packet of CWND increase per round.

I think it's important to use a single value throughout, but I don't have any reason to believe the exact number(ie: 1232, 1252, 1460, etc) matters that much.

I'd like a suggestion on what to do about this issue, because I'm unclear on what the problem is or what the resolution would be.

ianswett added a commit that referenced this issue Mar 20, 2018
Partially fixes #592
ianswett added a commit that referenced this issue Jul 14, 2018
* Reference RFC6928

Partially fixes #592

* Reference RFC5681

* Update pseudocode

* Update draft-ietf-quic-recovery.md

* max_datagram_size

* kMaxDatagramSize

* Update draft-ietf-quic-recovery.md

* Update draft-ietf-quic-recovery.md

* Update draft-ietf-quic-recovery.md

* Update draft-ietf-quic-recovery.md

* Update draft-ietf-quic-recovery.md
@mnot mnot added the has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list. label Mar 5, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-recovery design An issue that affects the design of the protocol; resolution requires consensus. has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list.
Projects
None yet
Development

No branches or pull requests

6 participants