Skip to content

fix: restore MoQServer optimized defaults and enable pacing in buildTransportSettings#148

Merged
afrind merged 1 commit intomainfrom
fix/mvfst-cc
Apr 10, 2026
Merged

fix: restore MoQServer optimized defaults and enable pacing in buildTransportSettings#148
afrind merged 1 commit intomainfrom
fix/mvfst-cc

Conversation

@afrind
Copy link
Copy Markdown
Contributor

@afrind afrind commented Apr 10, 2026

Supplying a TransportSettings to MoQServer bypasses its optimized defaults (GSO batching, ContinuousMemory data path, large cwnd, etc.). Replicate those defaults explicitly before applying config overrides so nothing is silently lost.

Also enables pacingEnabled unconditionally — BBR requires it (mvfst falls back to Cubic without it), and pacing is beneficial for all supported CC algorithms.


This change is Reviewable

…ransportSettings

Supplying a TransportSettings to MoQServer bypasses its optimized defaults
(GSO batching, ContinuousMemory data path, large cwnd, etc.). Replicate those
defaults explicitly before applying config overrides so nothing is silently lost.

Also enables pacingEnabled unconditionally — BBR requires it (mvfst falls back
to Cubic without it), and pacing is beneficial for all supported CC algorithms.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@afrind afrind requested a review from gmarzot April 10, 2026 00:10
Copy link
Copy Markdown
Contributor

@gmarzot gmarzot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gmarzot reviewed 1 file and all commit messages.
Reviewable status: :shipit: complete! all files reviewed, all discussions resolved (waiting on afrind).

@afrind afrind merged commit 2dcb823 into main Apr 10, 2026
8 checks passed
@afrind afrind deleted the fix/mvfst-cc branch April 10, 2026 00:55
gmarzot added a commit that referenced this pull request Apr 12, 2026
…ngs)

PR #148 correctly sets Copa + pacing as the server-side default in
buildTransportSettings(), but the config layer default in Config.h was
still "bbr". When no congestion_control is specified in the YAML config,
the config default overwrites Copa with BBR. BBR without pacing triggers
mvfst's "Unpaced BBR isn't supported" fallback to Cubic.

Change the config default to "copa" so it matches the transport settings
baseline. Users who explicitly set congestion_control in their config
are unaffected.
gmarzot added a commit that referenced this pull request Apr 12, 2026
- Change Config.h default from "bbr" to "copa" to match the transport
  settings baseline established by PR #148 (buildTransportSettings sets
  Copa + pacing). Without this, the config layer silently overwrites
  Copa with BBR, triggering mvfst's "Unpaced BBR isn't supported"
  fallback to Cubic.

- Fix the picoquic CC algorithm allowlist in ConfigResolver.cpp:
  - Remove "bbr" (not registered in picoquic; the actual name is "bbr1")
  - Add "copa" (compiled in and functional, was incorrectly excluded)

- Update ParsedConfig.h description and test assertion to match.

Users who explicitly set cc_algo in their config are unaffected.
gmarzot added a commit that referenced this pull request Apr 13, 2026
picoquic registers its BBR as "bbr1", not "bbr". Users shouldn't need
to know this — cc_algo: bbr should work for both stacks.

Changes:
- Add "bbr" and "copa" to the picoquic validator allowlist (both are
  valid: "bbr" is mapped, "copa" is natively registered)
- After validation, transparently map "bbr" → "bbr1" for picoquic
  listeners before the config reaches the transport layer
- Add test: PicoBbrMappedToBbr1 verifies the mapping
- Update ParsedConfig.h description to list "bbr" for picoquic

The default cc_algo remains "bbr" (unchanged). With PR #148's pacing
fix, BBR works correctly on mvfst without warnings.
gmarzot added a commit that referenced this pull request Apr 13, 2026
picoquic registers its BBR as "bbr1", not "bbr". Users shouldn't need
to know this — cc_algo: bbr should work for both stacks.

Changes:
- Add "bbr" and "copa" to the picoquic validator allowlist (both are
  valid: "bbr" is mapped, "copa" is natively registered)
- After validation, transparently map "bbr" → "bbr1" for picoquic
  listeners before the config reaches the transport layer
- Add test: PicoBbrMappedToBbr1 verifies the mapping
- Update ParsedConfig.h description to list "bbr" for picoquic

The default cc_algo remains "bbr" (unchanged). With PR #148's pacing
fix, BBR works correctly on mvfst without warnings.
gmarzot added a commit that referenced this pull request Apr 14, 2026
…ngs)

PR #148 correctly sets Copa + pacing as the server-side default in
buildTransportSettings(), but the config layer default in Config.h was
still "bbr". When no congestion_control is specified in the YAML config,
the config default overwrites Copa with BBR. BBR without pacing triggers
mvfst's "Unpaced BBR isn't supported" fallback to Cubic.

Change the config default to "copa" so it matches the transport settings
baseline. Users who explicitly set congestion_control in their config
are unaffected.
gmarzot added a commit that referenced this pull request Apr 14, 2026
picoquic registers its BBR as "bbr1", not "bbr". Users shouldn't need
to know this — cc_algo: bbr should work for both stacks.

Changes:
- Add "bbr" and "copa" to the picoquic validator allowlist (both are
  valid: "bbr" is mapped, "copa" is natively registered)
- After validation, transparently map "bbr" → "bbr1" for picoquic
  listeners before the config reaches the transport layer
- Add test: PicoBbrMappedToBbr1 verifies the mapping
- Update ParsedConfig.h description to list "bbr" for picoquic

The default cc_algo remains "bbr" (unchanged). With PR #148's pacing
fix, BBR works correctly on mvfst without warnings.
gmarzot added a commit that referenced this pull request Apr 14, 2026
* config: default congestion control to copa (match buildTransportSettings)

PR #148 correctly sets Copa + pacing as the server-side default in
buildTransportSettings(), but the config layer default in Config.h was
still "bbr". When no congestion_control is specified in the YAML config,
the config default overwrites Copa with BBR. BBR without pacing triggers
mvfst's "Unpaced BBR isn't supported" fallback to Cubic.

Change the config default to "copa" so it matches the transport settings
baseline. Users who explicitly set congestion_control in their config
are unaffected.

* config: map bbr → bbr1 for picoquic, fix CC validator allowlists

picoquic registers its BBR as "bbr1", not "bbr". Users shouldn't need
to know this — cc_algo: bbr should work for both stacks.

Changes:
- Add "bbr" and "copa" to the picoquic validator allowlist (both are
  valid: "bbr" is mapped, "copa" is natively registered)
- After validation, transparently map "bbr" → "bbr1" for picoquic
  listeners before the config reaches the transport layer
- Add test: PicoBbrMappedToBbr1 verifies the mapping
- Update ParsedConfig.h description to list "bbr" for picoquic

The default cc_algo remains "bbr" (unchanged). With PR #148's pacing
fix, BBR works correctly on mvfst without warnings.

* config: add bbr to picoquic allowlist, add production config template

Suhas confirmed picoquic's "bbr" is BBRv3 (current) and "bbr1" is the
legacy v1. The earlier bbr → bbr1 mapping was a silent downgrade;
remove it. With moxygen #139 landed (registers all picoquic CC
algorithms), "bbr" works natively for pico.

Changes:
- Validator allowlist: accept "bbr" for picoquic (no mapping)
- ParsedConfig.h description updated to match
- Drop test for bbr → bbr1 mapping (mapping removed)
- Add docker/config.production.yaml as deployment template
  (dual listener: mvfst + picoquic, both cc_algo: bbr, exact paths)
- Bump deps/moxygen submodule to 9e06544d (pico CC fix + latest upstream sync)

copa is not in the picoquic allowlist — need to verify the picoquic build
actually has it before adding.

* retrigger ci
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.

2 participants