Skip to content

Support for schedulers suitable for jitter-sensitive workloads (SRT/RTP/WebRTC/gaming). #73

Description

@mp0rta

Problem

Exist Scheduler - WLB is loss-aware but not jitter-aware.
SRT user report: WAN2 RTT spike with no loss → WLB keeps sending to WAN2 → congestion spiral.
#29
Ysurac/openmptcprouter#4277

Workaround

Exist Scheduler - MinRTT picks lowest-SRTT path per packet, spills on cwnd-block. Naturally avoids the WLB spiral. Recommended workaround for typical SRT/RTP/WebRTC. but MinRTT scheduler has some Gaps.

Gaps:
G1. No hysteresis → flaps on close SRTTs
G2. No rttvar penalty → low-SRTT but unstable path wins over steady one
G3. No latency-budget admission → keeps sending after SRT buffer is exceeded
G4. Reactive spillover only (cwnd-block is a late signal)
G5. No active aggregation when bitrate > single path capacity

Proposal(TBD)

Add opt-in realtime scheduler in xquic fork (xqc_scheduler_realtime.{c,h}).
Latency-budget filter + jitter/RTT-inflation penalty + hysteresis. No flow pinning.
exist scheduler(WLB minRTT) stays untouched.

  • A. Enhance min_srtt with hysteresis + rttvar/budget filters.
    Closes G1–G3.
  • B. New opt-in realtime scheduler. Closes G1–G5, adds bonded WRR mode for G5.

admission: srtt < budget && rttvar/srtt < tolerance
fitness : 1 / (srtt × (1 + γ·(srtt/min_rtt − 1)))
hysteresis: switch only on fitness ≥ 1.2× current

References

BBR (srtt/min_rtt), CoDel (queue delay), BLEST (RTT-diff penalty).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions