whisthq / whist

Whist Browser
https://whist.com
Apache License 2.0
6 stars 3 forks source link

WCC issues and new version preview #7380

Open wangyu- opened 1 year ago

wangyu- commented 1 year ago

Decription

This issue descripts the typical issues of the current WCC. And compared with WCC_V2 (the newer one with delaybase-controller)

On a wired link with limited capacity, and little nosie

On a wired link with limited capacity, current WCC has latency bouncing during startup, which cause period latency increase of hundreds of ms, and it takes a long time to get out. Even if the link itself has little noise.

Experiment setting: a 1920x1080 window (low dpi monitor), and a simulated link of 20 mbps(simulated by tc-tbf). The link latency is about 45ms. a website with high moving contetion is browsed (https://webglsamples.org/aquarium/aquarium.html)

WCC:

image

(target_bitrate: the detected bandwith, unit: 100kbps) (short term latency: the real time latency, this is the latency you should pay attention for, unit: ms) (long term latency: a much more smoothed value of short term latency, only for reference, unit: ms)

you can see the first spike increases the latency by 280ms, and in the first 30s the latency is keep bouncing around (caused by congestion).

WCC_V2:

image

the first spike increase the lantency by 80ms, then the delay based-controller detected the congestion, and dcreased the birate . After that most of the time the lantency stays very close to the link lantency. (very little latency increase by congestion)

On a noisy wifi

On a wifi channel with high noise, the latency increasing problem becomes even worse:

Experiment setting: a 1600x1000 window (high dpi monitor ), connected by a 2.4ghz home wifi access point working at 54mbps. There isn't any simulated bandwith limitation or delay or jitter involved. So this is fully a real-life setting.

( Although it's displayed as 54mbps, the wifi channels capacity flucuates over time. And there are frequently channel outage, which leads to bursty arrivals. In other words, this channels is much more complex.)

WCC:

image

you can see the current WCC algorithm is totally confused (by the complex channel), and it keeps congesting the channel for very long durations. The peak latency increase reaches 250ms for many times.

WCC_V2:

image

the WCC_V2 chooses a lower bitrate (but not too much), the latency is significantly reduced. Most of the time, the latency stays pretty close to the channel latency. The peak latency increase is at most 60ms (vs 250ms above), and the duration is shorter.

Other Bugs of WCC

For the current WCC, it appears to have a bug for high-resolution. It got stucks on a low bitrate and never able to detect a higher birate.

For example, if the link channel starts at 16mbps, then for high-resoltion window WCC stucks forever at lower than 16mbps. It never increase again, even if the link capcatity increase to 32mbps (or 100mbps, whatever). It gives up detecting higher bandwith completetly.

wangyu- commented 1 year ago

Here is a compare of WCC and WCC_V2 on a varying link, product by this script.

Where the link capacity is changing like:

image

WCC test1:

image

(the wide strip dnotes the video birate, the 3 thins line that are fluction heavily are the latency increases measured in different ways. )

WCC test2:

image

GCC (aka WCC2) test1:

image

GCC test2:

image