feat(quic): Integrate ECN feedback into congestion control#421
Merged
Conversation
Implement ECN (Explicit Congestion Notification) tracker class that processes ECN counts from ACK_ECN frames and validates ECN capability according to RFC 9000 Section 13.4 and RFC 9002 Section 7.1. Key features: - Track and validate ECN counts from ACK_ECN frames - Detect ECN-CE increases as congestion signals - Validate ECN capability during initial testing phase - Provide ECN marking for outgoing packets - Handle ECN validation failure gracefully Related: #404
Add ECN tracker integration to loss_detector for processing ECN counts from ACK_ECN frames according to RFC 9000 Section 13.4 and RFC 9002 Section 7.1. Changes: - Add ecn_tracker member to loss_detector - Extend loss_detection_result with ecn_signal and ecn_congestion_sent_time - Process ECN counts in on_ack_received when present in ACK frame - Add get_ecn_tracker accessor methods Related: #404
Add ECN congestion handling method to congestion_controller according to RFC 9002 Section 7.1. The on_ecn_congestion() method: - Responds to ECN-CE marks from ACK_ECN frames - Triggers same congestion response as packet loss - Limits response to once per RTT to avoid over-reaction - Reduces cwnd and enters recovery state Related: #404
Handle ECN signals in connection's loss detection result processing. Changes: - Process ECN congestion signals from loss_detection_result - Call on_ecn_congestion() when ECN-CE marks are detected - Handle ECN validation failure gracefully The connection now responds to ECN-CE marks by triggering the congestion controller, providing faster congestion response than waiting for packet loss. Related: #404
Add comprehensive test suite for ECN (Explicit Congestion Notification) functionality. Test coverage includes: - ecn_tracker initial state and configuration - ECN counts processing and congestion signal detection - ECN validation success and failure scenarios - Integration with loss_detector for ACK_ECN processing - Integration with congestion_controller for ECN response - Full end-to-end ECN flow with congestion handling Related: #404
Add the new ecn_tracker.cpp source file to the QUIC protocol sources in the main CMakeLists.txt. Related: #404
Contributor
Performance ComparisonBase Branch ResultsNo base results PR Branch ResultsNo PR results |
kcenon
added a commit
that referenced
this pull request
Apr 13, 2026
* feat(quic): add ecn_tracker class for ECN feedback processing Implement ECN (Explicit Congestion Notification) tracker class that processes ECN counts from ACK_ECN frames and validates ECN capability according to RFC 9000 Section 13.4 and RFC 9002 Section 7.1. Key features: - Track and validate ECN counts from ACK_ECN frames - Detect ECN-CE increases as congestion signals - Validate ECN capability during initial testing phase - Provide ECN marking for outgoing packets - Handle ECN validation failure gracefully Related: #404 * feat(quic): integrate ECN processing in loss_detector Add ECN tracker integration to loss_detector for processing ECN counts from ACK_ECN frames according to RFC 9000 Section 13.4 and RFC 9002 Section 7.1. Changes: - Add ecn_tracker member to loss_detector - Extend loss_detection_result with ecn_signal and ecn_congestion_sent_time - Process ECN counts in on_ack_received when present in ACK frame - Add get_ecn_tracker accessor methods Related: #404 * feat(quic): add on_ecn_congestion() to congestion_controller Add ECN congestion handling method to congestion_controller according to RFC 9002 Section 7.1. The on_ecn_congestion() method: - Responds to ECN-CE marks from ACK_ECN frames - Triggers same congestion response as packet loss - Limits response to once per RTT to avoid over-reaction - Reduces cwnd and enters recovery state Related: #404 * feat(quic): connect ECN signal to connection handling Handle ECN signals in connection's loss detection result processing. Changes: - Process ECN congestion signals from loss_detection_result - Call on_ecn_congestion() when ECN-CE marks are detected - Handle ECN validation failure gracefully The connection now responds to ECN-CE marks by triggering the congestion controller, providing faster congestion response than waiting for packet loss. Related: #404 * test(quic): add unit tests for ECN tracking Add comprehensive test suite for ECN (Explicit Congestion Notification) functionality. Test coverage includes: - ecn_tracker initial state and configuration - ECN counts processing and congestion signal detection - ECN validation success and failure scenarios - Integration with loss_detector for ACK_ECN processing - Integration with congestion_controller for ECN response - Full end-to-end ECN flow with congestion handling Related: #404 * build: add ecn_tracker.cpp to CMakeLists.txt Add the new ecn_tracker.cpp source file to the QUIC protocol sources in the main CMakeLists.txt. Related: #404 * docs: update CHANGELOG for ECN feedback integration Add changelog entries for QUIC ECN feedback integration feature (issue #404) in both English and Korean versions. Related: #404
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
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
ecn_trackerclass to track and validate ECN counts from ACK_ECN framesloss_detectorto detect ECN-CE congestion signalson_ecn_congestion()method tocongestion_controllerfor ECN-based congestion responseconnectionfor automatic congestion handlingKey Features
Test plan
Related Issue
Closes #404