interceptor icon indicating copy to clipboard operation
interceptor copied to clipboard

Congestion control estimation grows without bound

Open jech opened this issue 11 months ago • 2 comments

Hi,

I'm trying to experiment with Pion's GCC estimator in Galene.

I'm sending a stream limited to 786kbit/s over an uncongested link. Even though the stream is application-limited, not congestion-limited, the congestion controller's estimate of available bandwidth keeps growing apparently without bound: It reached 4Mbit/s, and it's still growing.

That's a standard mistake in congestion control: the congestion controller must not increase its estimate unless the application is filling the available bandwidth. Without that, the estimate will grow to completely unreasonable values.

For now, I'm giving up on my attempts to switch Galene to Pion's congestion controller; while Galene's homebrew REMB congestion controller is very primitive, it does not have this kind of issues.

jech avatar Jan 13 '25 17:01 jech

If I'm not mistaken the increasing bandwidth estimates are suppose to be caused by the implementation sending bandwidth probing data intermixed with the actual 786kbit payload. If you look closely you should be able to find this probing data as either padding packets or "useless" retransmissions, e.g. on the RTX track, of already received payload packets.

nils-ohlmeier avatar Jan 13 '25 19:01 nils-ohlmeier

Unfortunately, it's a known issue with the current implementation – I will make a reproduction in bwe-test repo: https://github.com/pion/bwe-test/issues/54

aalekseevx avatar Jan 14 '25 08:01 aalekseevx