On 9/21/2021 9:37 AM, Spencer Dawkins at IETF wrote:

I have been maintaining a collection of various goals for path selection
(most recently, in
https://datatracker.ietf.org/doc/html/draft-dawkins-quic-multipath-selection-01#section-3).
It's not a short list.

If we're also including user preferences that would include knowing the
difference between cellular connections that are metered, cellular
connections that are unmetered but being throttled, and cellular
connections that are unmetered and unthrottled, and cross-matching them
with wifi connections that are likely to work better than cellular
connections vs. wifi connections that are only intermittently performing
well, that's not a small amount of complexity.

This leads to the problem of asymmetric knowledge between client and server. On the client, applications can use system APIs and user preferences to identify which connections are "metered, cellular connections that are unmetered but being throttled, and cellular connections that are unmetered and unthrottled." But the server side does not know that. Yet in many scenarios most of the traffic volume originates from the server, and the scheduling choices of the server may cause increased bills or exhaustion of quotas for the client. Which implies that there should be some way for the client to signal how the server shall consider connection.

I think this "knowledge sharing" is independent from "application preferences". The work at Ali Baba shows that there is a lot of benefits in incorporating application states in scheduling decisions. For example, if the video streaming application notices that the video buffers are emptying too fast, it might tell the server to start using more bandwidth, even if that means using metered connections. But that application state, "video buffers are emptying", is not the same as the network state, "path 3 is on a metered connection".

I don't think that we will be able to fully standardize the way applications pass their preferences. That's why in draft-liu the "QOE_CONTROL_SIGNALS" is mostly used to pass application-defined signals. But we might be able to have a reasonable set of codes (or priorities) explaining the "state of a path", and use that in the "PATH_STATUS" frame.

-- Christian Huitema


Reply via email to