[R-C] Suggesting a "Flow State Exchange" (FSE)
Michael Welzl
michawe at ifi.uio.no
Wed Jul 25 19:07:42 CEST 2012
On Jul 25, 2012, at 6:51 PM, John Leslie wrote:
> 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.
For rtcweb, it is: it's requirement F34 in draft-ietf-rtcweb-use-cases-
and-requirements
> We do desire that some flows be treated as more delay-critical than
> others; and IMHO that's not the same thing.
I disagree with this separation of treatment.
As soon as one flow is delay-critical, and as long as we cannot 100%
know (we can hope, but IMO never know, within the soon-deployable-
world...) that traffic isn't separated in the network, we must ensure
that all congestion control is designed to such that delay is kept
minimal. Otherwise, your own delay-critical flow will suffer from your
own not-so-delay-critical flow... that makes no sense.
> 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".
Yes, but that doesn't contradict my proposal.
>> ... 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
I agree, functionality-wise, and apologize for using the word "layer"
here: I didn't mean this in the sense of network layers, but in a more
physical sense - as in "where in the stack" or "where in the OS". I
guess "level" would have been a better choice of words.
>> 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...
Oh yes! This is as sketchy as it gets, a totally new idea, shared with
you straight away, to see what people think.
> 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.)
Okay, I was thinking sender-side here, but why not...
>
>> 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>
Cheers,
Michael
More information about the Rtp-congestion
mailing list