Lucas,

It's this special sauce that concerns me. > I don't know how I'd objectively 
measure that the MP-QUIC design and all
the implementation effort would actual result in improvement. For instance, more bandwidth via aggregation can still be misused; some types of streams will be more latency sensitive than others. Putting the decision making into the transport library could also be seen as black box.

I would suggest that we start by considering MPQUIC as a blackbox as we did with MPTCP. This worked well and getting the multipath mechanisms will be easy.

I also want to draw some parallels between uniflows and the HTTP/2 priority tree. The tree was a fully expressive model that allowed a client to hint to the server about the relationship between streams. The problem of actioning this signal was left up to the server. Deployment experience reveals that getting this well-tuned, just for a single TCP connection, is hard. Some implementers just never got around to fixing some serious and easily detectable performance problems.

Presenting a bunch of uniflows to a sever and leaving it responsible for using them properly seems to me quite a similar problem.

That's a policy decision and policy can be very complex. In MPTCP, we have very limited support for policies:
- clients use a path manager to decide when they create subflows
- servers basically never create subflows (due to NATs and firewalls)
- clients and servers can use the backup bit to indicate that a subflow should only be used if all the non-backup subflows failed or have problems

We discussed multiple times how to exchange policies over MPTCP. It turned out that this was very difficult given the middleboxes. In the end, MPTCP does not support the exchange of policies and the current deployments embed the policies on the hosts that use MPTCP with a specific path manager. This works well enough.

For MPQUIC, the situation could be different as there will be no direct inteference from middleboxes that modify options. We could exchange information such as the priority of a flow, mapping streams to flows, rtt preference, capping flows, ... My fear is that if we open this, the discussion could never stop and result in something similar that is too complex to implement. I would suggest to focus initially on very simple policies that are implemented locally (i.e. the application that uses QUIC would control when and how to advertise addresses and when and how to create flows, QUIC implementations could include different packet schedulers) and discuss the possibility of exchanging this policy information for a revision of MPQUIC.


Olivier

Reply via email to