Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement retransmit backoff according to 4.2.4.1 #448

Merged
merged 1 commit into from
Jul 2, 2024

Conversation

eh-steve
Copy link

@eh-steve eh-steve commented Apr 14, 2022

Description

As per RFC4347 4.2.4.1 (excluding reset after long period of idleness)

Though timer values are the choice of the implementation, mishandling
of the timer can lead to serious congestion problems; for example, if
many instances of a DTLS time out early and retransmit too quickly on
a congested link. Implementations SHOULD use an initial timer value
of 1 second (the minimum defined in RFC 2988 [RFC2988]) and double
the value at each retransmission, up to no less than the RFC 2988
maximum of 60 seconds. Note that we recommend a 1-second timer
rather than the 3-second RFC 2988 default in order to improve latency
for time-sensitive applications. Because DTLS only uses
retransmission for handshake and not dataflow, the effect on
congestion should be minimal.

Implementations SHOULD retain the current timer value until a
transmission without loss occurs, at which time the value may be
reset to the initial value. After a long period of idleness, no less
than 10 times the current timer value, implementations may reset the
timer to the initial value. One situation where this might occur is
when a rehandshake is used after substantial data transfer.

@eh-steve eh-steve force-pushed the backoff-retry-RFC4347-4.2.4.1 branch from 53edba5 to 44c5cbe Compare April 14, 2022 20:40
@codecov
Copy link

codecov bot commented Apr 16, 2022

Codecov Report

Attention: Patch coverage is 80.95238% with 4 lines in your changes missing coverage. Please review.

Project coverage is 80.12%. Comparing base (45e16a0) to head (87ca2d5).

Files Patch % Lines
handshaker.go 78.94% 2 Missing and 2 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #448      +/-   ##
==========================================
- Coverage   80.13%   80.12%   -0.01%     
==========================================
  Files         101      101              
  Lines        5330     5343      +13     
==========================================
+ Hits         4271     4281      +10     
- Misses        684      685       +1     
- Partials      375      377       +2     
Flag Coverage Δ
go 80.15% <80.95%> (-0.01%) ⬇️
wasm 63.92% <80.95%> (+0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@eh-steve
Copy link
Author

I can’t really tell from the logs whether the CI is failing due to my changes…

@eh-steve eh-steve force-pushed the backoff-retry-RFC4347-4.2.4.1 branch from 44c5cbe to eb8069f Compare February 15, 2023 08:47
@Sean-Der Sean-Der force-pushed the backoff-retry-RFC4347-4.2.4.1 branch 2 times, most recently from 5c54a85 to df7536c Compare July 2, 2024 03:29
@Sean-Der Sean-Der force-pushed the backoff-retry-RFC4347-4.2.4.1 branch from df7536c to 87ca2d5 Compare July 2, 2024 03:32
@Sean-Der
Copy link
Member

Sean-Der commented Jul 2, 2024

Thank you so much @eh-steve

Sorry it took such a long time to get to these. I am slowly making my way through the backlog

@Sean-Der Sean-Der merged commit 48d6748 into pion:master Jul 2, 2024
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants