commit | 28d07ddbfdc0688bd54c8723e7abfd9305f102e7 | [log] [tgz] |
---|---|---|
author | Victor Boivie <boivie@webrtc.org> | Wed Apr 24 11:00:42 2024 |
committer | WebRTC LUCI CQ <webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com> | Thu Apr 25 07:53:24 2024 |
tree | 7c9334a5d411ce8bbfcfbcc5c4d139e9f5b8a01c | |
parent | 1a3120f3fd7696e9f27243bba88fe06d62221f0e [diff] |
dcsctp: Compute RTO with higher precision Since the code measuring the RTT has been converted to using TimeDelta which internally stores the duration in microseconds, from DurationMs which uses milliseconds, the RTO calculation can use the higher precision to calculate lower non-zero durations on really fast networks such within a data center. Before this CL, which is from the initial drop of dcSCTP, the RTO calculation was done using the algorithm from the paper "V. Jacobson: Congestion avoidance and control", but now we're using the original algorith from https://tools.ietf.org/html/rfc4960#section-6.3.1, which comes from https://datatracker.ietf.org/doc/html/rfc6298#section-2. Two issues were found and corrected: 1. The min RTT variance that is specified in the config file was previously incorrectly divided by 8. That was not its intention, but we're keeping that behaviour as other clients have actually measured a good value to put there. This represents "G" in the "basic algorithm" above, and since that is multiplied with K, which is four, the default value of 220 wouldn't make sense if it wasn't scaled down, as that would make the RTO easily saturate to the RTO_max (800ms). 2. The previous algorithm had large round-off errors (probably because the code used milliseconds), which makes fairly big changes to the calculated RTO in some situations. Bug: webrtc:15593 Change-Id: I95a3e137c2bbbe7bf8b99c016381e9e63fd01d87 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/349000 Reviewed-by: Florent Castelli <orphis@webrtc.org> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Commit-Queue: Victor Boivie <boivie@webrtc.org> Cr-Commit-Position: refs/heads/main@{#42170}
WebRTC is a free, open software project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.
Our mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.
The WebRTC initiative is a project supported by Google, Mozilla and Opera, amongst others.
See here for instructions on how to get started developing with the native code.
Authoritative list of directories that contain the native API header files.