Skip to content

feat(quic): Integrate ECN feedback into congestion control#421

Merged
kcenon merged 7 commits into
mainfrom
feature/issue-404-ecn-feedback
Jan 12, 2026
Merged

feat(quic): Integrate ECN feedback into congestion control#421
kcenon merged 7 commits into
mainfrom
feature/issue-404-ecn-feedback

Conversation

@kcenon

@kcenon kcenon commented Jan 11, 2026

Copy link
Copy Markdown
Owner

Summary

  • Implement ECN (Explicit Congestion Notification) feedback integration for QUIC congestion control per RFC 9000 Section 13.4 and RFC 9002 Section 7.1
  • Add ecn_tracker class to track and validate ECN counts from ACK_ECN frames
  • Integrate ECN processing in loss_detector to detect ECN-CE congestion signals
  • Add on_ecn_congestion() method to congestion_controller for ECN-based congestion response
  • Connect ECN signals to connection for automatic congestion handling
  • Add comprehensive unit tests for ECN functionality

Key Features

  • ECN Tracker: Validates ECN capability during connection establishment and tracks ECN-CE increases
  • Congestion Detection: ECN-CE marks provide faster congestion detection than loss-based methods
  • Graceful Fallback: Automatically disables ECN when network path doesn't support it
  • RFC Compliance: Follows RFC 9000 Section 13.4 and RFC 9002 Section 7.1 specifications

Test plan

  • All 19 ECN unit tests pass
  • Build succeeds without errors
  • Existing QUIC tests continue to pass
  • Code follows existing project style

Related Issue

Closes #404

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
Add changelog entries for QUIC ECN feedback integration feature
(issue #404) in both English and Korean versions.

Related: #404
@github-actions

Copy link
Copy Markdown
Contributor

Performance Comparison

Base Branch Results

No base results

PR Branch Results

No PR results

@kcenon kcenon merged commit 9a25f65 into main Jan 12, 2026
44 checks passed
@kcenon kcenon deleted the feature/issue-404-ecn-feedback branch January 12, 2026 01:07
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
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.

[QUIC] Integrate ECN feedback into congestion control

1 participant