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

Discussion: Remove ACK_MP frame from draft-ietf-quic-multipath ? #271

Closed
iyangsj opened this issue Sep 5, 2023 · 9 comments
Closed

Discussion: Remove ACK_MP frame from draft-ietf-quic-multipath ? #271

iyangsj opened this issue Sep 5, 2023 · 9 comments
Labels
duplicate This issue or pull request already exists no-action-needed

Comments

@iyangsj
Copy link
Contributor

iyangsj commented Sep 5, 2023

Briefly, the argument is as follows:

  • The ACP_MP frame is not essential for multipath transport.
  • Adding ACK_MP raises several design and implementation issues that need to be more thoroughly investigated.

Perhaps a better approach would be to follow the KISS principle:

  • Use the ACK frame to acknowledge the received packets, which should be sent on the same path(Similar to the MPTCP).
  • However, we do not prevent future extensions from defining ACK_MP, and using it requires negotiation.
@LPardue
Copy link
Member

LPardue commented Sep 5, 2023

Seems like a dupe of #181, which was closed. Have you got any additional points that were not already addressed there?

@iyangsj
Copy link
Contributor Author

iyangsj commented Sep 6, 2023

@LPardue Thank you for such helpful information.
It is challenging to achieve a simpler and more elegant solution without making some trade-offs on requirements and suitable changes to conceptual models.
I would like to provide a detailed description later.

@LPardue
Copy link
Member

LPardue commented Sep 6, 2023

Got it. To be clear, since #181 is now resolved it reflects the established consensus of the group. Therefore, the bar to reconsidering that consensus and making any changes is going to be higher. We'd be looking for convincing new arguments in a timely manner in order to revisit this matter.

@iyangsj
Copy link
Contributor Author

iyangsj commented Sep 7, 2023

The conceptual models of both QUIC and MPQUIC connections are similar because NAT rebinding occurs in both cases (as illustrated in the figure below). However, a QUIC connection is a simplified version of an MPQUIC connection, as it consists of only one master path, whereas an MPQUIC connection can include one or more master paths.

MPQUIC-conceptual-model

(Note: The Initial/Handshake packet number spaces, which are discarded after the handshake is complete, have been omitted for clarity.)

The multipath mechanism is mostly consistent with the draft-ietf-quic-multipath, but some differences are emphasized as follows:

  • The master path and its slave paths in a QUIC/MPQUIC connection are collectively referred to as XPATH. In other words, an XPATH consists of multiple paths, but only one of them is used for transmitting non-probing packets. The simultaneous transmission of non-probing frames on multiple XPATHs is allowed in an MPQUIC connection.
  • Require the use of non-zero Connection IDs in both directions. An endpoint MUST use different Connection IDs on different XPATHs. If the 4-tuple changes without the use of a new connection ID (e.g. due to a NAT rebinding), this is considered as a migration event.
  • Use the ACK frame to acknowledge the received packets, which should be sent on the same XPATH. However, we do not prevent future extensions from defining ACK_MP, and using it requires negotiation.

Advantages of the proposed approach:

  • It is easy to understand and implement.
  • It avoids introducing unnecessary problems, such as ACK ambiguity, RTT estimation, large deviation with QUIC, etc.
  • It does not prevent future extensions from defining ACK_MP for further improvement.
    • The usage of ACK_MP may not be necessary in all scenarios where the ACK frame is used, such as packet acknowledgment, loss detection, reception history updating, RTT estimation, and various algorithms that rely on ACK.

@mirjak mirjak added the duplicate This issue or pull request already exists label Oct 20, 2023
@mirjak
Copy link
Collaborator

mirjak commented Nov 3, 2023

In issue #181 it was already decided that it is better to be explicit and use ACK_MP. This also enables sending ACK over different paths which is seem as a feature, e.g. always using the lowest latency path. I don't see any new issue or concern raised here. Therefore I propose to close this issue with no action.

@iyangsj
Copy link
Contributor Author

iyangsj commented Nov 3, 2023

In issue #181 it was already decided that it is better to be explicit and use ACK_MP. This also enables sending ACK over different paths which is seem as a feature, e.g. always using the lowest latency path.

The existing design choice for ACK_MP is rooted in the per-path-per-pns model. Under this model, it seems there's no better design than what we currently have.

I don't see any new issue or concern raised here.

The present solution introduces unnecessary issues, such as ACK ambiguity, RTT estimation, large deviation from QUIC. Even worse, some algorithms that rely on ACK from the same path might not perform well.

If we properly design the conceptual model, we can find a simpler and more feasible design that avoids these extra problems.

@iyangsj
Copy link
Contributor Author

iyangsj commented Nov 6, 2023

CASE A:

CASE-A

  • The Sender uses the BBR algorithm for both path A and path B.
  • The Receiver replies ACK frames only on path A.

The simplest implementation is to compute smoothedRTT and RTTvar per Section 5.3 of [QUIC-RECOVERY] regardless of the path through which MP_ACKs are received. This algorithm will provide good results, except if the set of paths changes and the ACK_MP sender revisits its sending preferences.

  • If the BBR B computes smoothedRTT regardless of the path through which MP_ACKs are received, it will underestimate the RTT and send data at a lower rate.

@iyangsj
Copy link
Contributor Author

iyangsj commented Nov 6, 2023

CASE B:

CASE B

  • The Sender uses the COPA algorithm for both path A and path B.
  • The Receiver replies ACK frames only on path A.

The simplest implementation is to compute smoothedRTT and RTTvar per Section 5.3 of [QUIC-RECOVERY] regardless of the path through which MP_ACKs are received. This algorithm will provide good results, except if the set of paths changes and the ACK_MP sender revisits its sending preferences.

  • When path A is congested, COPA B may inaccurately estimate the queueing delay for path B and improperly decrease the sending rate.

@mirjak
Copy link
Collaborator

mirjak commented Jul 9, 2024

Consideration for ACK scheduling and impact on congestion control is discussed in 6.3. Computing Path RTT. Further issue #77 notes that it might be useful for a future extension to provide guidance on ACK scheduling (frequency as well as which path to use). However, it was decided that this can be left as an extension. Therefore I'm closing this issue now. Thanks for the detailed discussion!

@mirjak mirjak closed this as completed Jul 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
duplicate This issue or pull request already exists no-action-needed
Projects
None yet
Development

No branches or pull requests

3 participants