Skip to content

feat(quic): implement Path MTU Discovery (PMTUD) - RFC 8899#439

Merged
kcenon merged 3 commits into
mainfrom
feature/quic-pmtud-407
Jan 13, 2026
Merged

feat(quic): implement Path MTU Discovery (PMTUD) - RFC 8899#439
kcenon merged 3 commits into
mainfrom
feature/quic-pmtud-407

Conversation

@kcenon

@kcenon kcenon commented Jan 13, 2026

Copy link
Copy Markdown
Owner

Summary

  • Implement Path MTU Discovery (PMTUD) for QUIC per RFC 9000 Section 14 and RFC 8899 (DPLPMTUD algorithm)
  • Add pmtud_controller class with complete state machine for MTU probing
  • Integrate with QUIC connection and congestion controller
  • Add comprehensive unit tests (16 test cases)

Changes

New Files

  • include/kcenon/network/protocols/quic/pmtud_controller.h - PMTUD controller header
  • src/protocols/quic/pmtud_controller.cpp - PMTUD controller implementation
  • tests/test_quic_pmtud.cpp - Unit tests

Modified Files

  • include/kcenon/network/protocols/quic/connection.h - Add PMTUD API to connection class
  • src/protocols/quic/connection.cpp - Implement PMTUD methods
  • CMakeLists.txt - Add new source file
  • tests/CMakeLists.txt - Add new test target
  • docs/CHANGELOG.md - Document new feature
  • docs/FEATURES.md - Update QUIC feature list

Features

  • DPLPMTUD State Machine: Complete implementation with disabled, base, searching, search_complete, and error states
  • Binary Search Probing: Efficient MTU discovery using binary search between min (1200) and max (1500) bytes
  • Black Hole Detection: Detects and recovers from network paths that drop large packets
  • ICMP PTB Handling: Responds to Packet Too Big messages for immediate MTU adjustment
  • MTU Re-validation: Periodic re-validation of discovered MTU
  • Configurable: Custom min/max MTU, probe timeouts, and jumbo frame support (up to 9000 bytes)

Test plan

  • All 16 PMTUD unit tests pass
  • Existing QUIC connection tests pass (67 tests)
  • Build succeeds without errors
  • Documentation updated

Closes #407

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
@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 3d44944 into main Jan 13, 2026
44 checks passed
@kcenon kcenon deleted the feature/quic-pmtud-407 branch January 13, 2026 12:05
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
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] Implement Path MTU Discovery (PMTUD)

1 participant