Greetings fellow multipathers, TL;DR: Multipath QUIC should by default use the same in-path acknowledgment design as unipath QUIC. Cross-path acknowledgments are interesting but complex, not yet fully understood and should be an opt-in extension.
The current multipath draft specifies that acknowledgment signaling should be done with a new frame type, ACK_MP, when the (potential) use of multiple paths has been agreed for a connection. This means that all implementations need to be able to handle incoming cross-path acknowledgments (XP ACKs), where acknowledgments of packets that have arrived on one path is sent on other paths. Sending XP ACKs is voluntary. XP ACKs have some attractive properties, in particular these two: * Some "self-clocking" congestion control algorithms, such as the popular CUBIC, can grow the congestion window faster if the ACK is sent on a path with lower latency * The stream data retransmission and receive buffers can be smaller if the flow control feedback is faster However, XP ACKs also have a few drawbacks, mainly because the experienced round-trip time varies depending on which path is used for each ACK. This implies that: * Latency-based congestion control algorithms can be confused * Loss detection is harder; both the packet loss time threshold and the probe timeout will have problems I argue that these problems are not well understood, and forcing all multipath implementations to handle them is not a good idea. However, there are interesting possible optimizations that should be researched, so there should be a mechanism to negotiate the use of XP ACKs. If this should be specified in the main multipath spec or another document is a separate but minor question. When the use of XP ACKs is not negotiated, each path should use the acknowledgment mechanism (including the use of the normal ACK frame) that is already implemented and proven to work with unipath QUIC. Summary Cross-path acknowledgments are so difficult to handle that implementations should not be forced to do that. The default should be to only do in-path acknowledgments exactly like unipath QUIC does. /me