随机游走与网络现实:一个终究无法逃离的囚笼

网络拥塞控制里,有一个很少被明说的假设:我们认为真实传播延迟的变化,像一个随机游走。

这个假设,不是真理。它只是一个方便我们建模的近似。而在承认这个近似的同时,我们不得不面对一个更根本的困境:我们永远是被动的、滞后的。

我们永远无法同时看到完整画面

任何拥塞控制算法都面临同一个根本问题:你无法同时知道链路的带宽和延迟。

需要塞满链路

污染了

需要队列空

丢失了

你想测量带宽

产生排队

延迟测量

你想测量延迟

无法测带宽

带宽信息

带宽与延迟测量互斥

这个互斥观测困境没有解法。所有算法都只能在这个死结中,选择一个自己愿意承受的妥协方向。

为什么选择随机游走

我们无法直接观测到真实传播延迟。我们能看到的只有 RTT —— 它是传播延迟、排队延迟、噪声、时钟误差、调度抖动的混合物。

随机游走演化

加上排队延迟

加上噪声

真实传播延迟
不可观测

隐藏状态

排队延迟

RTT 观测值

测量噪声
抖动/时钟/调度

既然无法分离,那就得做个让步:把真实延迟当成一个随时间变化的隐藏状态,并且假设它每一步的变化都是不可预测的、随机的。这就是随机游走。

这个假设的好处是数学上简单,卡尔曼滤波正好能处理这种模型。坏处是它未必正确。

现实不是随机游走

真实网络里,传播延迟的变化往往有原因:路由切换、负载均衡、光纤扰动。这些原因不是纯随机的,但多数时候我们观测不到。

我们之所以用随机游走去拟合,不是因为我们认为世界真的是这样运行的,而是因为我们放弃了解释因果。我们不再问“为什么延迟变了”,只问“现在的延迟可能是多少”。

这是一种认知上的退让。

我们永远只能看到过去

当我们收到一个 ACK 时,它所携带的 RTT 样本,反映的是几个毫秒甚至几百毫秒前网络的状态。而我们发送决策,基于的是这些已经过时的信息。

我们不是在实时控制网络。我们是在回放网络的历史,然后试图猜测未来。

这是一个单向的时间箭头:网络先变化,我们后观测,观测之后再调整。我们永远追不上真实状态。无论算法多聪明,延迟多低,这个因果顺序无法颠倒。

我们是被动的。 网络发生什么,我们只能事后知道。

我们是滞后的。 我们决策时所依赖的信息,永远来自过去。

这不是某个算法的缺陷,这是所有反馈控制系统的共同宿命。

卡尔曼滤波的局限

卡尔曼滤波能帮我们从噪声中分离信号,能让我们在模型框架下做出概率最优的估计。但它不能预测未来,更不能逆转时间。

它只是让我们对过去的估计更准一些,然后我们拿这个更准的过去来决策现在。但过去终究是过去。

当网络发生跳变(路由切换、突发流加入)时,卡尔曼滤波需要时间收敛。在那段收敛窗口里,我们的估计是错的,我们的决策也是错的。而我们什么都做不了,只能等。

此外,卡尔曼滤波要求噪声服从高斯分布,状态转移是线性的。真实网络的噪声不一定是高斯的,突发抖动可能让高斯假设失效。路径切换更不是线性随机游走,它是跳变。因此,即使卡尔曼给出的估计是模型框架内的“最优”,如果模型本身偏离现实,这个“最优”也不过是“最优的错误”。

这是一个终究无法逃离的囚笼

我们做不到实时观测真实状态,做不到完全精准预测,甚至做不到确认自己的估计是否正确。

  • 你不能比光速更快,所以你无法在 RTT 之前知道对方的反馈。
  • 你不能预知未来,所以你无法提前知道下一秒网络会变成什么样。
  • 你甚至不能同时观测带宽和延迟,因为它们相互干扰。

这些不是技术问题,是物理和信息论层面的硬约束。没有任何算法可以绕过。

所以

随机游走模型不是真理,它只是一个我们够得着的工具。卡尔曼滤波不是最优解,它只是目前比较贴近现实的一个选择。

但即便有了这些,我们依然困在“被动与滞后”的囚笼里。我们永远在追随一个已经跑掉的未来。

承认这一点,不是悲观,而是诚实。我们无法成为全知全能的控制者。我们只能在这个囚笼里,尽量把步子迈得更稳一些。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐