[R-C] Suggesting a "Flow State Exchange" (FSE)

Michael Welzl michawe at ifi.uio.no
Wed Jul 25 20:28:01 CEST 2012


nah. read the fine print - in the middle of my text, i was careful to  
insert a comment saying the following:

**
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 *really really* isn't the same.


On Jul 25, 2012, at 8:07 PM, Eggert, Lars wrote:

> Sounds a lot like RFC 3124?
>
> Lars
>
> On Jul 25, 2012, at 6:13, Michael Welzl <michawe at ifi.uio.no> wrote:
>
>> Hi all,
>>
>> 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 have been arguing that the right way to do this is to have only a  
>> single congestion control entity, and then realize fairness among  
>> the flows as a result of scheduling data across them. I still  
>> believe that this is the right way to do it (and - Randell please  
>> correct me if I'm wrong - it seems that this is the approach  
>> already pursued by Mozilla). This thinking led me to propose my all- 
>> over-SCTP idea.
>>
>> Now, I don't see how such a thing could be standardized, especially  
>> if we don't want to limit ourselves to rtcweb only. HOWEVER: it is  
>> clear that flows will need information about other flows - such as:  
>> what is their priority? How many are there, that we can assume to  
>> traverse the same bottleneck (e.g. because they share the same UDP  
>> 5-tuple)? What is their current sending rate?
>>
>> Without having agreed on how to exchange such information, I think  
>> it will be hard to implement the above fairness solution or any  
>> other good(*) solution in a standard-conformant way. Therefore 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.
>>
>> 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.
>>
>> Alternative implementation (not as good, but simpler, and just to  
>> show the flexibility): RTP 1 uses its own CC, RTP 2 uses its own  
>> CC, but they feed the priority they got "from above" into the FSE  
>> and read each other's priority and total sending rate from there,  
>> to adapt their increase/decrease behavior accordingly, leading to  
>> the desired total behavior on the wire.
>>
>> 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...  and implementations could provide information  
>> about which flows share a bottleneck based on measurements, not  
>> only because of the UDP 5-tuple, without requiring to standardize  
>> any of that. But the FSE itself would have to be there.
>>
>> What do you all think?
>>
>> Cheers,
>> Michael
>>
>> -----------------------
>>
>> (*) The only prioritization solution that I can think of which  
>> would not require something along the lines of an FSE would be  
>> prioritized congestion control, i.e. giving weights to something  
>> like MulTCP, MulTFRC ...   which means that the fairness you get is  
>> essentially what flows produce, as the result of fighting it out on  
>> the bottleneck. This will create more delay than any FSE-based  
>> solution, working against one main goal of all of us here: reduced  
>> delay.
>>
>> _______________________________________________
>> Rtp-congestion mailing list
>> Rtp-congestion at alvestrand.no
>> http://www.alvestrand.no/mailman/listinfo/rtp-congestion
>
> _______________________________________________
> Rtp-congestion mailing list
> Rtp-congestion at alvestrand.no
> http://www.alvestrand.no/mailman/listinfo/rtp-congestion



More information about the Rtp-congestion mailing list