论文阅读 拥塞控制主题

笔记不完整,主要是对 Zotero 上的个人注释的补充。本文可能持续更新。

TIMELY: RTT-based Congestion Control for the Datacenter

paper: https://dl.acm.org/doi/10.1145/2785956.2787510

PDF在 Google Drive 打开

摘要:TIMELY、尾延迟、Clos 拓扑、DCTCP、ECN 显式拥塞通知、NIC offload.

Congestion Control for Large-Scale RDMA Deployments

paper: https://dl.acm.org/doi/10.1145/2829988.2787484

位于文章的 “4. BUFFER SETTINGS” (Zhu et al., 2015, p. 528) 标红的公式。

已知:$t_{PFC} > n \cdot t_{ECN}$

动态PFC阈值计算公式(t_PFC 会根据当前缓冲区的使用情况 s 进行动态调整):

$t_{PFC}=\beta (B-8nt_{flight}-s)/8$

又 $s \le n \cdot t_{ECN}$

由上:

$n\cdot t_{ECN} < t_{PFC}=\beta (B-8nt_{flight}-s)/8$

将 $s$ 的临界值 $n \cdot t_{ECN}$ 代入不等式的右边:

$n\cdot t_{ECN} < \beta (B-8nt_{flight}-n \cdot t_{ECN})/8$

$8n\cdot t_{ECN} < \beta (B-8nt_{flight})-\beta n \cdot t_{ECN}$

$8n\cdot t_{ECN} + \beta n \cdot t_{ECN} < \beta (B-8nt_{flight})$

$(8n+\beta n) \cdot t_{ECN} < \beta (B-8nt_{flight})$

$n(8+\beta) \cdot t_{ECN} < \beta (B-8nt_{flight})$

得到的公式和论文中略有不同。

一些其他的 DCQCN 笔记存于我私人的 Zotero 中,如有问题可以评论区讨论。

HPCC: high precision congestion control

paper: https://dl.acm.org/doi/10.1145/3341302.3342085 link: https://cloudswit.ch/blogs/what-is-int%EF%BC%88in-band-network-telemetry%EF%BC%89/

PDF在 Google Drive 打开

摘要:主要讲 HPCC 算法本身,并没有额外补充其他的知识。

以下是 Algorithm 1 的一些 notes.

先看第21行的函数,lastUpdateSeq 用来记录新窗口 $W^C$ 中第一个发送的数据包,当到来的 ACK 的序列号大于 IastUpdateSeq 时,触发窗口大小的更新。否则不进行更新,这体现在 updateWc 的参数设置上。在函数的最后,例行更新了 R 和 L 的值。

第5行,使用 min(ack.L[i].qlen, L[i].qlen) 是为了过滤掉 qlen 的噪声。

3到7行的代码选出最大的 $U$, 第9行做了指数加权移动平均(ewma)。

ComputeWind 函数是算法的重点。函数的核心目标是平衡两个有时相互矛盾的需求:

  1. 反应速度 (Reaction Speed):当网络有空闲带宽时,要能非常迅速地把速率提上去,占满带宽;当网络拥塞时,要能非常迅速地把速率降下来。这个由乘性增/减 (MI/MD)负责。
  2. 公平性 (Fairness):当多个流共享瓶颈时,要确保大家能公平分配带宽,不能因为某个流反应快就一直多占。这个由加性增 (AI)负责。

第一阶段:“温柔试探”的加性增 (AI) 阶段

  • 触发条件: 当发送端发现网络有空闲(U < η),并且,它还处于“试探期”(incStage < maxStage,例如 incStage < 5)。
  • 执行动作 (对应伪代码16-19行):
    1. 它会执行一次非常保守的加性增 (AI):W = W^c + W_AI。即在参考窗口的基础上,只增加一个很小的固定值W_AI。
    2. 同时,将“试探”计数器加一:incStage++。
  • 目的: 这个阶段的目的是稳定和公平。它避免了一个流在刚发现网络有空闲时就用“乘性增”暴力抢占带宽,那可能会导致网络震荡。相反,它会先“温柔地”走几步,看看网络反应,同时也给其他流公平竞争的机会。

第二阶段:“迅猛出击”的乘性增/减 (MIMD) 阶段

  • 触发条件: 以下两个条件满足任何一个,就会进入这个阶段:
    1. 网络拥塞了 (U >= η):这是最直接的触发条件。一旦发现拥塞,必须立刻、迅速地做出反应。
    2. 试探期结束了 (incStage >= maxStage):发送端已经连续执行了maxStage次“温柔”的加性增,但发现网络依然还有空闲 (U 仍然小于 η)。这说明网络非常空闲,带宽裕量很大,没必要再一步一步地走了,是时候“迅猛出击”,快速把速率提上去了。
  • 执行动作 (对应伪代码12-15行):
    1. 算法会调用完整的公式(4):W = W^c / (U/η) + W_AI。
    2. 这个公式的核心是W^c / (U/η)这一项,它是一个MIMD项:
      • 如果是情况1(拥塞),U/η > 1,窗口会乘性减小,实现快速降速。
      • 如果是情况2(试探期结束),U/η < 1,窗口会乘性增大,实现快速提速。
    3. 同时,将“试探”计数器清零:incStage = 0,为下一次可能的“温柔试探”做准备。

QTCP: Adaptive Congestion Control with Reinforcement Learning (2018)

paper: https://ieeexplore.ieee.org/document/8357943/

PDF在 Google Drive 打开

摘要:Kanerva 编码、Q-learning、比例公平和 log。

ACC: automatic ECN tuning for high-speed datacenter networks (2021)

paper: https://dl.acm.org/doi/10.1145/3452296.3472927

参见:论文阅读 ACC:automatic ECN tuning for high-speed datacenter networks。

A Deep Reinforcement Learning Framework for Optimizing Congestion Control in Data Centers (2023)

paper: https://arxiv.org/abs/2301.12558

参见:论文阅读 A Deep Reinforcement Learning Framework for Optimizing Congestion Control in Data Centers

NVIDIA Papers

🔒 加密内容
支付宝收款二维码 支付宝 Alipay
微信收款二维码 微信 Wechat
PayPal 或信用卡收款二维码 PayPal/CreditCard