Hi fellow multipathers,

In addition to my separate response to Christian Huitema's suggested draft 
updates I have some additional suggestions for changes to the multipath 
protocol below. I send this as a wg mail instead of GitHub PRs in hope to 
induce some discussion.

I am currently arguing for a protocol with multiple packet number spaces, so 
that is implied in the text below.


Acknowledgements

The current version of the multipath draft specifies the use of ACK_MP frames 
when multipath has been enabled. I suggest that the regular ACK frames should 
be used also for multipath, and that ACK_MP frames could be optionally used as 
an optimization.

The ACK frame would mean that packets on this particular path is acknowledged. 
The implementation would be very similar to singlepath QUIC when it comes to 
RTT estimates, loss detection etc, which would reduce the implementation 
complexity.

ACK_MP, on the other hand, could be used to acknowledge packets received on 
other paths (it could be used for the same path but with some overhead compared 
to a regular ACK frame). Some reasons to use ACK_MP:

  *   Faster acknowledgement can allow some congestion control algorithms to 
increase the congestion window (but see below)
  *   Faster loss detection (and retransmission) in some cases
  *   Reduced buffering on the sender side and smaller flow control receive 
windows

RTT updates and indirectly setting PTO timers should normally only be done 
using in-path acknowledgements. Cross-path is interesting, but maybe complex 
enough to warrant a Ph.D. thesis, especially when path properties and existence 
change :-).

I'm not exactly an expert, but sending ACKs over different paths can probably 
confuse some congestion control algorithms, e.g., delayed-based ones like BBR. 
For instance, if you lose the fast ACK path the ACK latency increases for a 
remaining path which makes it needlessly slow down the sending rate.


Explicit path setup

This is a half-baked idea, but maybe it's better to use new signaling for 
setting up paths for multipath QUIC and not reuse path validation 
(PATH_CHALLENGE and PATH_RESPONSE frames). That could for instance give the 
server a chance to refuse another path even if the client has enough connection 
IDs to create one.


/me

Reply via email to