forked from irlserver/srtla
-
Notifications
You must be signed in to change notification settings - Fork 0
feat: merge irlserver enhanced receiver with ACK throttling and connection recovery #4
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
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…very - Added connection quality assessment based on bandwidth and packet loss - Introduction of an ACK throttling mechanism for indirect client load balancing - Implemented a recovery mechanism for connections with temporary problems
Change bandwidth evaluation from average-based to max/median baseline to prevent good connections being degraded by poor performers. Use 80% of best connection performance as baseline with stricter thresholds (85%+ expected bandwidth = no penalty).
Co-Authored-By: René <48084558+servusrene@users.noreply.github.com>
…milarity - Use median-based expectation (80%) when all connections perform similarly - Use individual performance-based expectation (70%) for mixed quality scenarios - Ensures fair distribution among similar connections while protecting good ones
- Add two new weight levels: WEIGHT_EXCELLENT (85%) and WEIGHT_FAIR (55%) - Adjust error point thresholds for better differentiation: * 0-4 points: FULL (100%) * 5-9 points: EXCELLENT (85%) * 10-14 points: DEGRADED (70%) * 15-24 points: FAIR (55%) * 25-39 points: POOR (40%) * 40+ points: CRITICAL (10%)
- Merge weight and throttle calculation into single pass - Implement unified throttle formula: min(absolute, relative) - Ensure minimum 20% ACK rate for connection health - Add better logging for weight/throttle changes - Add ACK logging in trace
Previously, one poor connection forced all connections into adaptive mode. Now each connection is evaluated individually: - Poor connections (<50% median) use minimum threshold - Good connections target median
- Exclude poor connections from median calculation to prevent target distortion - Add GOOD_CONNECTION_THRESHOLD constant for consistent 50% thresholds - Use filtered median for realistic convergence targets
- Updated SEND_BUF_SIZE and RECV_BUF_SIZE to 100 MB to avoid overruns with higher bitrates and latency values.
- Added RTT-based metrics to ConnectionStats for enhanced latency tracking. - Introduced NAK count validation for accurate packet loss detection. - Implemented window utilization analysis to monitor congestion and throttling. - Added bitrate validation to compare sender and receiver measurements. - Updated QualityEvaluator to integrate new metrics and error point calculations. - Enhanced documentation to reflect changes and provide implementation details.
…unused RTT variance calculation
…cy algorithms with detailed logging
…trics and adjust related thresholds
…etry handling and fallback logic
… logic to prevent feedback loops
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
…on during event processing
…vent out-of-bounds access
…proved NAK rate calculations
The merged irlserver receiver uses --log_level instead of --verbose. Updated TypeScript bindings to match: - Changed verbose boolean to logLevel enum (trace/debug/info/warn/error/critical) - Updated default srt_port from 5001 to 4001 to match CLI - Updated tests for new interface Also includes improved TypeScript type declarations from build.
Simplified build workflows: - Use ubuntu-24.04-arm for native ARM64 builds - Removed Docker, QEMU, and buildx complexity - Build directly with cmake on runner - Added test execution to build-check - Removed srt/libspdlog dependencies from .deb (built statically via FetchContent) This significantly reduces build time and complexity.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Merges the enhanced srtla_rec from irlserver/srtla, which includes significant improvements:
Changes
--log_levelinstead of--verbose)New Receiver CLI
Log levels:
trace,debug,info,warn,error,criticalTest Plan
srtla_rec --helpandsrtla_send --helpwork correctly