Expand description
§Google Congestion Control
This crate is a Rust port of the Google Congestion Control (GCC) implementation from the WebRTC project. No more painful linking against libwebrtc.
Google Congestion Control is the congestion control algorithm used in WebRTC. It is a hybrid algorithm that combines the strengths of delay-based and loss-based congestion control. The end goal is minimum latency and to avoid buffer-bloat as much as possible.
All licensing from the original source code is preserved under a BSD-style license. Thanks to the WebRTC project authors for their hard work on this implementation. All I did was port it to Rust.
§Notable Changes
NetworkStateEstimator and NetworkStatePredictor have been removed. They are not implemented in the WebRTC source code and are flagged with a “subject to change” comment. I think this is a back-door for Google to tweak the congestion control algorithm?
FieldTrials is a type-safe struct instead of a string. The original implementation uses a string to represent field trials. This was quite error-prone as many trials do not match the cooresponding field name. I decided to create a FieldTrials struct to represent field trials in a type-safe way.
RtcEventLog has been removed. The structured logs are cool, but have been removed for now to simplify the code.
RTC_LOG has been replaced with tracing. Use tracing_subscriber to enable and configure the logger.
Modules§
- experiments
- FieldTrials and dynamic configuration.
- network_
control - A generic congestion control interface: NetworkControllerInterface.
- transport
- Network structs and types.
- units
- Some unit types, such as DataSize and DataRate.
Structs§
- AlrDetector
Config - Bitrate
Estimator Config - BweLoss
Experiment - BweSeparate
Audio Packets Settings - Goog
CcConfig - Google Congestion Control specific configuration.
- Goog
CcNetwork Controller - Google Congestion Control.
- Loss
Based BweV2 Config - Loss
Based Control Config - Probe
Controller Config - Robust
Throughput Estimator Settings - RttBased
Backoff Config - Safe
Reset OnRoute Change - Trendline
Estimator Settings