从统计平滑到物理硬边界:KCC FILTER 估计器的收敛性修复
从统计平滑到物理硬边界:KCC FILTER 估计器的收敛性修复
一、现象:FILTER 模式在光纤链路上的结构性衰减
KCC 的 FILTER 模式(使用卡尔曼估计x_est作为 RTT 基线)在实测中表现异常。在 1000Mbps 香港—成都光纤链路上:
| 模式 | RTT 基线 | 吞吐量 | 丢包率 |
|---|---|---|---|
MIN(min_rtt) | 物理T_prop | 552.3 Mbps | 0.012% |
FILTER(x_est) | T_prop - δ | 468.7 Mbps | 0.087% |
FILTER 比 MIN 低 83.6 Mbps,丢包率高出 7.25 倍。直接归因于 Mills 偏置δ ≈ 0.031ms,仅占 RTT(30ms)的 0.1%。0.1% 的偏置无法解释 15% 的吞吐量衰减。问题的真正根源在别处。
二、诊断:偏置被瞬态动力学放大
Mills 偏置是平均效应,真正破坏性的是它在 DRAIN→PROBE 转换中的瞬态放大。
KCC 的 DRAIN 退出采用 AND-gate:inflight ≤ BDP_target且计时器 ≥ 1 RTT。FILTER 模式下BDP_target因x_est偏低而降低。DRAIN 持续时间被计时器固定,但 inflight 的终点被压得更低。DRAIN 结束后pacing_gain从 0.75 跳变到 1.25,inflight 从更低基线出发,上升斜率更陡,微突发丢包概率显著上升。
偏置的四重贡献:
| 来源 | 类型 | 占比 |
|---|---|---|
| BDP 直接损失 | 平均效应 | ~0.1% |
| 增益衰减提前触发 | 平均效应 | ~5–8% |
| 微突发丢包损耗 | 瞬态效应 | ~2–3% |
| 循环占空比畸变 | 瞬态效应 | ~4–6% |
瞬态效应合计 ~6–9%,远超平均效应的 0.1%。问题不是估计精度不够,而是估计器的收敛速度不够。
三、根因:阻尼增益在阶跃信号前的失效
旧设计中ν < 0(RTT 下降)时:
x_est ← x_est + (K >> 2) · ν有效增益K_eff ≈ K_ss / 4 ≈ 0.1。ν < 0对应物理事实:路径变短了。T_queue ≥ 0,T_noise已被 outlier gate 抑制,ν < 0唯一解是x_est > T_prop。
这是确定性事实,不是随机变量。用阻尼增益处理确定性事实,是模型误用。从 100ms 收敛到 50ms 需要 ~83 个 clean sample,p_clean = 0.3时约 277 RTT(27 秒)。
四、第一次尝试:复杂数学模型(已废弃)
2026 年 6 月 26 日,作者尝试在min_rtt和x_est之间构造自适应加权函数:
k(RTT) = √(2·ln(10⁷/RTT_us)) − 0.8 + π/√(12·ln(10⁷/RTT_us))原理是:当x_est与min_rtt偏差的方差较小时,两者趋同,可信度高;否则动态切换。数学上正确——双精度验证通过。
但实测失败。原因在于:链路状态变化是阶跃,不是连续过程。任何基于方差、EWMA 的自适应选择器都依赖历史统计推断当前状态。阶跃发生时,历史数据是误导,平滑切换本身就是滞后。两个滞后(自适应选择器的滞后 +x_est阻尼更新的滞后)叠加,路径改善信息被延迟数十 RTT。
五、正确解法:物理门控强制收敛
当ν < 0时,直接赋值:
if (ν < 0 && z >= x_est * 7/8) x_est = z; else if (ν < 0 && z < x_est * 7/8) reject; /* 物理不可能样本 */收敛时间从 O(N)(~83 samples)降至 O(1)(1 sample)。Mills 偏置被清零(x_est直接取z,无 K 乘积累积)。
六、安全性证明:数学、物理、系统三方面
6.1 物理正确性:7/8 门控是光速上限
设光纤中光速c_fiber ≈ 2×10^8 m/s,RTT = 2L / c_fiber。路径长度变化φ倍:
ΔL = φ · L = φ · (c_fiber · RTT / 2) v_required = ΔL / RTT = φ · c_fiber / 2当φ = 1/8(12.5%),v_required = 1.25×10^7 m/s ≈ 0.042c。
这要求端点在 1 个 RTT 内移动 4.2% 光速。对任何地球上的光纤端点物理不可能。7/8 不是启发式阈值,是狭义相对论在光纤介质中的速度上限。单步降幅超过 12.5% 的样本必然是测量错误(ACK 重排、TSO 毛刺、时间戳异常)。
6.2 数学正确性:收敛性、偏置、协方差一致性
收敛速度:
旧:E[|d_T|] ≤ (1 - K_eff)^T · |d_0| + σ,K_eff ≈ 0.1,T ≈ 83。
新:T = 1(单样本)。p_est = max(R, floor)保证后验方差不会因强制赋值而被低估(Joseph form 的 K_eff=1 情形)。
偏置消除:
旧:E[x_est] = T_prop - δ,δ = K_ss · σ · √(2/π)。
新:E[x_est | ν < 0] = E[z | z ≥ T_prop] = T_prop。条件期望无偏。
协方差一致性:
旧设计中x_est收敛慢而p_est快速下降(p_est = (1-K)·p_pred,K≈0.1 时收缩率为 0.9),产生分裂状态:滤波器“自信”地守着错误值。p_est过低触发 PROBE_RTT 间隔扩展至 75s,进一步延迟x_est刷新。
新设计强制赋值后p_est = max(R, p_est_floor),与状态跳变同步,消除分裂。
6.3 系统安全性:防止异常值注入和过排空
异常值防御:7/8 门控拒绝z < x_est · 7/8。ACK 重排导致的虚假低 RTT 样本无法越过物理速度上限进入估计器。TSO 毛刺(单包降幅通常 < 2% 路径 RTT)被正常接受,但重排序或损坏时间戳产生的极端异常值被拒绝。
过排空防御:强制收敛时p_est不降至 floor 以下。p_est_floor确保K不会低于Q/(Q+R),防止估计器在路径稳定后进入“永久自信”状态。旧 75s PROBE_RTT 扩展问题因此被阻断。
七、结论
复杂数学自适应模型在理论上成立,但解决不了滞后问题——它本身就是滞后的。阶跃信号的唯一正确响应是直接跳变,而非平滑过渡。
新方案用三条边界锁定安全性:
- 物理边界(7/8 光速上限):排除物理不可能的测量错误;
- 收敛边界(单样本收敛):消除滞后累积;
- 协方差边界(
p_est = max(R, floor)):防止状态分裂和 PROBE_RTT 异常扩展。
数学上漂亮的方案,在阶跃面前不堪一击。有时正确的解法不是更复杂的数学,而是更严格的物理约束。
