[R-C] Suggesting a "Flow State Exchange" (FSE)
John Leslie
john at jlc.net
Wed Jul 25 18:51:45 CEST 2012
Michael Welzl <michawe at ifi.uio.no> wrote:
>
> This is a "chair hat taken off and thrown into a corner" message -
> very much my personal thoughts, and I'm very curious what you all think:
>
> Starting point: there is a desire to have priorities between flows,
> e.g. in rtcweb, but maybe also between other RTP streams.
I'm not positive that's exactly what's desired.
We do desire that some flows be treated as more delay-critical than
others; and IMHO that's not the same thing.
It is perfectly legitimate to collect congestion indications for
any and all traffic known to share the same path, but make data-rate
reductions according to an application-layer algorithm (which could
indeed be as simple as priority values for each sub-stream). So long
as the overall data-rate is properly reduced, there's no question of
"unfriendlyness".
> ... I propose that we should standardize what I think is the simplest
> possible, necessary element: a "Flow State Exchange" (FSE).
>
> An FSE is a *passive* entity on a host that receives congestion-
> control-relevant information from RTP flows and provides that
> information upon request. It resides on a host, and if we define it
> in the right way it probably doesn't matter at which layer: one could
> have an FSE inside the browser, and optionally have the browser talk
> to an additional system-wide FSE in the kernel. Note that this is not
> the Congestion Manager (RFC3124): the CM was an *active* entity, much
> more complicated to realize, and much closer to the "single congestion
> control instance" idea described above.
It _would_ need to receive congestion indications -- that seems to
imply that the FSE belongs at transport layer.
> With an FSE, a single congestion control instance could be realized
> as follows:
> RTP flows => update the FSE.
> CC. instance => reads information from the FSE, then controls the
> sending rate per RTP flow and schedules data across the flows.
Your hands are waving...
I suggest assuming the receiver's transport layer-stack(s) coordinate
their congestion indications (by a function-call, for example) and
receive instrution as to how much data-rate-reduction each of them
should signal to the corresponding sender.
(Yes, this does kind-of require greater precision in congestion
feedback, but IMHO that's an unmitigated good-thing.)
> It's not hard to imagine that this could be extended in many ways -
> e.g. the SCTP data channel could access the FSE to also incorporate
> priorities there...
Yes, this seems to fit the SCTP paradigm nicely...
--
John Leslie <john at jlc.net>
More information about the Rtp-congestion
mailing list