feat(quic): implement Path MTU Discovery (PMTUD) - RFC 8899#439
Merged
Conversation
Implement Path MTU Discovery (PMTUD) for QUIC per RFC 9000 Section 14 and RFC 8899 (DPLPMTUD algorithm). - Add pmtud_controller class with DPLPMTUD state machine - Support binary search-based MTU probing - Handle probe acknowledgments and losses - Support ICMP Packet Too Big handling - Add black hole detection and recovery - Integrate with connection class - Update congestion controller MTU on discovery Closes #407
Add comprehensive test coverage for PMTUD controller: - Initial state and configuration tests - Enable/disable/reset functionality - Binary search convergence test - Probe loss handling and search range reduction - ICMP Packet Too Big handling - Black hole detection and recovery - Timeout handling - Custom configuration (jumbo frames) - MTU re-validation tests All 16 tests pass.
- Add PMTUD feature entry to CHANGELOG.md under [Unreleased] - Add Path MTU Discovery section to QUIC features in FEATURES.md - Document RFC 8899 DPLPMTUD algorithm and capabilities
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): implement PMTUD controller for path MTU discovery Implement Path MTU Discovery (PMTUD) for QUIC per RFC 9000 Section 14 and RFC 8899 (DPLPMTUD algorithm). - Add pmtud_controller class with DPLPMTUD state machine - Support binary search-based MTU probing - Handle probe acknowledgments and losses - Support ICMP Packet Too Big handling - Add black hole detection and recovery - Integrate with connection class - Update congestion controller MTU on discovery Closes #407 * test(quic): add unit tests for PMTUD controller Add comprehensive test coverage for PMTUD controller: - Initial state and configuration tests - Enable/disable/reset functionality - Binary search convergence test - Probe loss handling and search range reduction - ICMP Packet Too Big handling - Black hole detection and recovery - Timeout handling - Custom configuration (jumbo frames) - MTU re-validation tests All 16 tests pass. * docs: update CHANGELOG and FEATURES for PMTUD support - Add PMTUD feature entry to CHANGELOG.md under [Unreleased] - Add Path MTU Discovery section to QUIC features in FEATURES.md - Document RFC 8899 DPLPMTUD algorithm and capabilities
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
pmtud_controllerclass with complete state machine for MTU probingChanges
New Files
include/kcenon/network/protocols/quic/pmtud_controller.h- PMTUD controller headersrc/protocols/quic/pmtud_controller.cpp- PMTUD controller implementationtests/test_quic_pmtud.cpp- Unit testsModified Files
include/kcenon/network/protocols/quic/connection.h- Add PMTUD API to connection classsrc/protocols/quic/connection.cpp- Implement PMTUD methodsCMakeLists.txt- Add new source filetests/CMakeLists.txt- Add new test targetdocs/CHANGELOG.md- Document new featuredocs/FEATURES.md- Update QUIC feature listFeatures
Test plan
Closes #407