dtls icon indicating copy to clipboard operation
dtls copied to clipboard

Implement retransmit backoff according to 4.2.4.1

Open eh-steve opened this issue 2 years ago • 2 comments

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 avatar Apr 14 '22 15:04 eh-steve

Codecov Report

Base: 76.62% // Head: 75.85% // Decreases project coverage by -0.77% :warning:

Coverage data is based on head (44c5cbe) compared to base (9e922d5). Patch coverage: 72.72% of modified lines in pull request are covered.

:exclamation: Current head 44c5cbe differs from pull request most recent head eb8069f. Consider uploading reports for the commit eb8069f to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #448      +/-   ##
==========================================
- Coverage   76.62%   75.85%   -0.77%     
==========================================
  Files          96       96              
  Lines        5762     5584     -178     
==========================================
- Hits         4415     4236     -179     
- Misses       1005     1021      +16     
+ Partials      342      327      -15     
Flag Coverage Δ
go 75.88% <72.72%> (-0.77%) :arrow_down:
wasm 66.19% <72.72%> (-0.15%) :arrow_down:

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

Impacted Files Coverage Δ
handshaker.go 74.48% <71.42%> (-1.47%) :arrow_down:
conn.go 81.56% <100.00%> (+0.22%) :arrow_up:
errors_errno.go 62.50% <0.00%> (-37.50%) :arrow_down:
pkg/crypto/elliptic/elliptic.go 55.88% <0.00%> (-20.87%) :arrow_down:
errors.go 69.69% <0.00%> (-15.67%) :arrow_down:
pkg/protocol/recordlayer/recordlayer.go 69.56% <0.00%> (-13.05%) :arrow_down:
crypto.go 50.64% <0.00%> (-8.48%) :arrow_down:
pkg/crypto/prf/prf.go 63.57% <0.00%> (-6.43%) :arrow_down:
.../protocol/handshake/message_certificate_request.go 64.81% <0.00%> (-3.73%) :arrow_down:
certificate.go 81.81% <0.00%> (-2.52%) :arrow_down:
... and 16 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

codecov[bot] avatar Apr 16 '22 09:04 codecov[bot]

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

eh-steve avatar Apr 16 '22 11:04 eh-steve