[R-C] One congestion control to bind them all!

Michael Welzl michawe at ifi.uio.no
Thu Apr 5 14:14:06 CEST 2012


Dear all,

First, let me apologize for giving you "Michael's view of how our  
transport should be built" in this piecemeal fashion... you're getting  
a glimpse at how gradual my brain operates  :-(    I just can't help it.

I have now figured out that the best way to do transport for RTCWEB  
would involve using only ONE type of congestion control for everything  
(note that I'm not making any specific argument here about whether  
this is based on draft-alvestrand-rtcweb-congestion or LEDBAT or  
whatever).

Why?

Simply because your goal is to keep the delay low, by avoiding queue  
growth. TCP - and also SCTP's standard congestion control - will  
always try to push up the bottleneck queue until it sees a packet loss  
(or ECN), and therefore always be detrimental. Now, that's just a fact  
of life that we have to deal with - there may be other TCP traffic  
sharing the same bottleneck, and we want to do reasonably well in  
competition while trying to minimize queuing delay. This is not an  
ideal situation but it's what we have to live with. However, what we  
really don't want to do is to embed a standard-TCP-like congestion  
control mechanism WITHIN RTCWEB?!

If an RTCWEB user wants to have a video phone conversation and at the  
same time sends a file, if I understand it correctly, that file would  
be transferred using SCTP and its standard TCP-like congestion  
control. So the file transfer would push up the queue at the  
bottleneck and thereby increase the delay experienced by the user -  
the user would shoot her/himself in her/his foot by sending the file.  
You really don't want that to happen, I guess?

I think that the correct solution to that problem is to have only one  
type of congestion control, make it (mostly) delay-based to minimize  
queuing delay, and let that congestion control dictate the total rate  
available to the RTCWEB sender. Then, let the sender schedule packets  
across the video-, audio- and file-transfer streams based on some  
fairness policy. This gives you the best possible control over  
fairness as an extra - it's much better than trying to influence how  
the flows compete with each other on the bottleneck. Well, and again  
it seems to me that SCTP looks ideal for that type of usage.

Theoretically, it could perhaps be okay to use multiple different  
types of delay-based (delay-minimizing) controls in parallel, e.g.  
using draft-alvestrand-rtcweb-congestion-01 for video / audio and  
LEDBAT for data transfer, but that just seems to make the situation  
more complicated and it would give you less control over the fairness  
among the streams.

Curious to hear what you think  :-)    because I *know* I'm right   :-D

Cheers,
Michael



More information about the Rtp-congestion mailing list