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

Initial reorder tolerance value should not be 0 #901

Closed
maxsharabayko opened this issue Oct 10, 2019 · 0 comments · Fixed by #941
Closed

Initial reorder tolerance value should not be 0 #901

maxsharabayko opened this issue Oct 10, 2019 · 0 comments · Fixed by #941
Assignees
Labels
[core] Area: Changes in SRT library core Type: Maintenance Work required to maintain or clean up the code
Milestone

Comments

@maxsharabayko
Copy link
Collaborator

maxsharabayko commented Oct 10, 2019

Reorder Tolerance

SRTO_LOSSMAXTTL sets the maximum reorder tolerance value. The internal algorithm
checks the order of incoming packets and adjusts the tolerance based on the reorder
distance, but not to a value higher than the maximum.

SRT starts from 0 tolerance. Once it receives the first reordered packet, it increases the tolerance to the distance in the sequence discontinuity of the two packets.
After 10 consecutive original (not retransmitted) packets come in order, the reorder distance
is decreased by 1 with every such a packet.

Refer to statistics.md (PR #897) for a more detailed description.

A Point of Improvement

Having 0 as the initial tolerance has a notable drawback for File CC. FileCC starts in the "slow start" mode, trying to probe the network for the highest possible sending rate.
The very first discontinuity in sequence numbers of the incoming packets will trigger a loss report. Even if the discontinuity is caused by packet reordering, the initial tolerance value is 0, and this situation will be treated as a loss.
Slow start assumes that packet losses are due to network congestion. Therefore, FileCC switches from the "Slow Start" mode to AIMD (additive increase/multiplicative decrease) operation mode, starting at the current sending rate, that will be far lower, than the actually available bandwidth.

Having initial reorder tolerance value equal to the one set via SRTO_LOSSMAXTTL will avoid such situations. This might delay some reports of actually lost packets.
The algorithm of decreasing the reorder tolerance should move the connection to the stable operation mode.

Status: Waiting for #931: Add SRTO_LOSSMAXTTL to srt_getopt(...)

@maxsharabayko maxsharabayko added Type: Maintenance Work required to maintain or clean up the code [core] Area: Changes in SRT library core labels Oct 10, 2019
@maxsharabayko maxsharabayko added this to the v1.4.1 milestone Oct 10, 2019
@maxsharabayko maxsharabayko self-assigned this Oct 29, 2019
maxsharabayko added a commit to maxsharabayko/srt that referenced this issue Nov 5, 2019
maxsharabayko added a commit to maxsharabayko/srt that referenced this issue Nov 5, 2019
@rndi rndi closed this as completed in #941 Nov 5, 2019
rndi pushed a commit that referenced this issue Nov 5, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[core] Area: Changes in SRT library core Type: Maintenance Work required to maintain or clean up the code
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant