From 2afab09022ccd98e78328773d27b19cca20d3efd Mon Sep 17 00:00:00 2001 From: Moses Narrow <36607567+0pcom@users.noreply.github.com> Date: Sat, 22 Aug 2026 20:54:49 -0500 Subject: [PATCH] feat(routing-policy): add experimental 'ledbat' delay-based scavenger preset MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A new opt-in routing-policy preset inspired by LEDBAT (RFC 6817). It changes no default — you get it only via preset:ledbat. decideLedbat provisions a lean symmetric mux=3 over multi-hop with "auto" byte distribution, re-evaluated every 20s (chat stays single-route). tickLedbat is the scavenger: it tracks each leg's EWMA-smoothed delay and a per-leg base (running-min) delay, then acts on the queuing delay = smoothed - base. - Back off (yield): if any active leg's queuing delay exceeds 60ms, demote the highest-queuing-delay non-primary active leg to warm standby, shrinking the active set toward 1 (never parks leg 0, never tears down). - Grow: while every active leg reads within 60ms of its base and the active set is below the mux cap of 3, re-promote one parked leg (reserve only, no fresh dial). One arbitrated action per tick, integer/float + map state only (no time/rand), so it is deterministic and byte-identical under wazero and native compilation. Registered in preset.Names, OnTick/Decide dispatch, and the wasm manifest; the bundle.wasm is rebuilt so the wazero path carries it. Native unit tests cover the decide shape and the back-off / floor / grow tick rules, and the native<->wazero decide+tick parity test is extended to ledbat. --- .../routing-policies/wasm/bundle/bundle.wasm | Bin 552454 -> 557025 bytes pkg/router/policy/preset/names.go | 1 + pkg/router/policy/preset/preset.go | 32 +++++ pkg/router/policy/preset/preset_test.go | 105 ++++++++++++++ pkg/router/policy/preset/tick.go | 131 ++++++++++++++++++ pkg/router/policy/wasm/presets/bundle.wasm | Bin 552454 -> 557025 bytes pkg/router/policy/wasm/presets/manifest.json | 3 +- pkg/router/policy/wasm/presets/parity_test.go | 13 ++ 8 files changed, 284 insertions(+), 1 deletion(-) diff --git a/docs/examples/routing-policies/wasm/bundle/bundle.wasm b/docs/examples/routing-policies/wasm/bundle/bundle.wasm index 51c22f44d5b772d1ce68fa1fd3adbc01d7cd4ddd..d7f09d68fe65f7b841998c715752357386550050 100644 GIT binary patch delta 56413 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 A!vFvP delta 51727 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 0 { + break + } + if !reflect.DeepEqual(got, RotationAction{}) { + t.Fatalf("pre-backoff tick %d: expected no-op or the backoff demote; got %+v", i, got) + } + } + if len(got.DemoteToStandby) != 1 || got.DemoteToStandby[0] != 2 { + t.Fatalf("ledbat must park the highest-queuing-delay non-primary leg (2); got %+v", got) + } + if got.DropLegs != nil { + t.Errorf("back-off parks, never tears down; got DropLegs=%v", got.DropLegs) + } + if len(got.PromoteFromStandby) != 0 || got.AddLeg { + t.Errorf("back-off must not grow; got %+v", got) + } +} + +// TestEngine_OnTick_LedbatNeverParksBelowFloor asserts the yield floor: even when +// the sole non-primary active leg is congesting, ledbat shrinks only to a single +// active leg (leg 0) and then holds — it never parks leg 0, so the flow always +// keeps one leg making progress. +func TestEngine_OnTick_LedbatNeverParksBelowFloor(t *testing.T) { + e := New() + legs := func(lat1 int, oneStandby bool) []LegInfo { + return []LegInfo{ + {Index: 0, TransportID: "t0", Kind: "stcpr", LatencyMs: 40, Alive: true}, + {Index: 1, TransportID: "t1", Kind: "stcpr", LatencyMs: lat1, Alive: true, Standby: oneStandby}, + } + } + // Seed base=40 for both legs. + e.OnTick("ledbat", legs(40, false)) + // Congest leg 1 until it is parked, then confirm at the floor (leg 0 only + // active, leg 1 standby) the controller does NOT keep demoting. + parked := false + for i := 0; i < 10 && !parked; i++ { + got := e.OnTick("ledbat", legs(300, false)) + if len(got.DemoteToStandby) == 1 && got.DemoteToStandby[0] == 1 { + parked = true + } else if len(got.DemoteToStandby) > 0 { + t.Fatalf("must only ever park leg 1 (never leg 0); got %+v", got) + } + } + if !parked { + t.Fatal("leg 1 never parked despite sustained queuing delay") + } + // At the floor (1 active), a still-congested snapshot must be a no-op — leg 0 + // is never parked. + if got := e.OnTick("ledbat", legs(300, true)); len(got.DemoteToStandby) != 0 || got.DropLegs != nil { + t.Errorf("at the yield floor ledbat must hold, never park leg 0; got %+v", got) + } +} + +// TestEngine_OnTick_LedbatGrowsWhenNoQueuing asserts the grow rule: with a parked +// reserve leg and every active leg reading near its base (no self-induced +// queuing), the controller re-promotes a parked leg — up to the ledbatMux cap — +// drawing only on the reserve (no fresh dial). +func TestEngine_OnTick_LedbatGrowsWhenNoQueuing(t *testing.T) { + e := New() + // Leg 0 active near base, legs 1 and 2 parked. No queuing anywhere. + legs := []LegInfo{ + {Index: 0, TransportID: "t0", Kind: "stcpr", LatencyMs: 40, Alive: true}, + {Index: 1, TransportID: "t1", Kind: "stcpr", LatencyMs: 40, Alive: true, Standby: true}, + {Index: 2, TransportID: "t2", Kind: "stcpr", LatencyMs: 40, Alive: true, Standby: true}, + } + got := e.OnTick("ledbat", legs) + if len(got.PromoteFromStandby) != 1 || got.PromoteFromStandby[0] != 1 { + t.Fatalf("no queuing + below cap → promote the lowest-index parked leg (1); got %+v", got) + } + if got.AddLeg { + t.Errorf("grow must draw on the reserve, never dial fresh; got AddLeg=true") + } + if len(got.DemoteToStandby) != 0 || got.DropLegs != nil { + t.Errorf("grow must not shed; got %+v", got) + } +} diff --git a/pkg/router/policy/preset/tick.go b/pkg/router/policy/preset/tick.go index c6337d8a8a..4e3a2cac32 100644 --- a/pkg/router/policy/preset/tick.go +++ b/pkg/router/policy/preset/tick.go @@ -55,6 +55,11 @@ type Engine struct { adaptSatTicks int // consecutive saturated ticks (grow only on a sustained signal) adaptUnhealthy map[string]int // per-active-leg consecutive gross-outlier-latency ticks adaptStall map[string]int // per-active-leg consecutive no-throughput ticks under load + + // ledbat (delay-based scavenger) + ledbatEWMA map[string]float64 // per-leg EWMA-smoothed one-way-ish delay (ms) + ledbatBase map[string]float64 // per-leg base (running-min smoothed) delay (ms) + ledbatSeen map[string]bool // transport_ids present this tick (for GC) } // New returns an Engine with initialized state maps and the @@ -78,6 +83,9 @@ func New() *Engine { adaptUnhealthy: map[string]int{}, adaptStall: map[string]int{}, adaptTarget: adaptRevActive, + ledbatEWMA: map[string]float64{}, + ledbatBase: map[string]float64{}, + ledbatSeen: map[string]bool{}, } } @@ -97,6 +105,8 @@ func (e *Engine) OnTick(name string, legs []LegInfo) RotationAction { return e.tickProbeAndPrune(legs) case "adaptive": return e.tickAdaptive(legs) + case "ledbat": + return e.tickLedbat(legs) default: return RotationAction{} } @@ -823,3 +833,124 @@ func legUnhealthyLat(lat, median float64) bool { } return false } + +// --- ledbat (delay-based scavenger) --- + +const ( + // ledbatAlpha is the EWMA smoothing factor for the per-leg delay signal — + // matched to the other controllers so a leg's smoothed delay reacts at the + // same rate everywhere. + ledbatAlpha = 0.3 + // ledbatTargetMs is the LEDBAT queuing-delay target (RFC 6817 uses 100ms; a + // tighter 60ms here makes the scavenger yield sooner). When a leg's smoothed + // delay rises more than this above its own base (min) delay, the flow is + // judged to be queuing — i.e. causing congestion — and the controller backs + // off. While every active leg stays within the target of its base, there is + // no self-induced queuing and the controller may grow. + ledbatTargetMs = 60.0 + // ledbatMinActive is the yield floor: the controller shrinks the active set + // toward this width under congestion but never below it, so the flow always + // keeps one leg making progress. + ledbatMinActive = 1 +) + +// tickLedbat is the ledbat preset's on_tick controller: a delay-based, +// background/scavenger congestion response over the mux active set. It tracks +// each leg's EWMA-smoothed delay and a per-leg base (running-min) delay, then +// derives the queuing delay (smoothed - base): +// +// - BACK OFF (yield): if ANY active leg's queuing delay exceeds ledbatTargetMs +// — the flow is causing congestion — demote the HIGHEST-queuing-delay active +// leg (never leg 0) to warm standby, shrinking the active set toward +// ledbatMinActive. Parked, not torn down, so it can be re-promoted for free +// when the congestion clears. +// - GROW: if every active leg reads within the target of its base (no +// self-induced queuing) and the active set is below ledbatMux, promote one +// warm standby leg back. Growth only ever draws on the parked reserve — the +// scavenger never dials fresh legs beyond its lean provisioned width. +// +// One arbitrated action per tick, like the other controllers. Pure integer/ +// float arithmetic and map state only (no time.Now / rand) so it is +// deterministic and identical under wazero and native compilation. +func (e *Engine) tickLedbat(legs []LegInfo) RotationAction { + for k := range e.ledbatSeen { + delete(e.ledbatSeen, k) + } + for _, l := range legs { + tid := l.TransportID + if tid == "" { + continue + } + e.ledbatSeen[tid] = true + if !l.Alive || l.LatencyMs <= 0 { + continue + } + sample := float64(l.LatencyMs) + if prev, ok := e.ledbatEWMA[tid]; ok { + e.ledbatEWMA[tid] = ledbatAlpha*sample + (1-ledbatAlpha)*prev + } else { + e.ledbatEWMA[tid] = sample + } + sm := e.ledbatEWMA[tid] + if b, ok := e.ledbatBase[tid]; !ok || sm < b { + e.ledbatBase[tid] = sm + } + } + for tid := range e.ledbatEWMA { + if !e.ledbatSeen[tid] { + delete(e.ledbatEWMA, tid) + } + } + for tid := range e.ledbatBase { + if !e.ledbatSeen[tid] { + delete(e.ledbatBase, tid) + } + } + + sets := classifyLegs(legs) + // No active legs — bring one up from the parked reserve (no fresh dial). + if sets.activeCount == 0 { + if sets.promotable >= 0 { + return RotationAction{PromoteFromStandby: []int{sets.promotable}} + } + return RotationAction{} + } + + // Queuing delay across the active set. maxQ (including leg 0) decides whether + // the flow is congesting; worstIdx (excluding leg 0) is the demote target so + // the primary leg is never parked. + maxQ := 0.0 + worstIdx := -1 + worstQ := 0.0 + for _, l := range legs { + if !l.Alive || l.Standby { + continue + } + sm, ok := e.ledbatEWMA[l.TransportID] + if !ok { + continue + } + q := sm - e.ledbatBase[l.TransportID] + if q > maxQ { + maxQ = q + } + if l.Index == 0 { + continue + } + if worstIdx == -1 || q > worstQ { + worstIdx, worstQ = l.Index, q + } + } + + // BACK OFF: congestion detected — park the worst active (non-primary) leg, + // yielding capacity, until we reach the floor. + if maxQ > ledbatTargetMs && sets.activeCount > ledbatMinActive && worstIdx >= 0 { + return RotationAction{DemoteToStandby: []int{worstIdx}} + } + + // GROW: no self-induced queuing and below the cap — re-promote one parked leg. + if maxQ <= ledbatTargetMs && sets.activeCount < ledbatMux && sets.promotable >= 0 { + return RotationAction{PromoteFromStandby: []int{sets.promotable}} + } + return RotationAction{} +} diff --git a/pkg/router/policy/wasm/presets/bundle.wasm b/pkg/router/policy/wasm/presets/bundle.wasm index 51c22f44d5b772d1ce68fa1fd3adbc01d7cd4ddd..d7f09d68fe65f7b841998c715752357386550050 100755 GIT binary patch delta 56413 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 A!vFvP delta 51727 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