QCN拥塞控制算法
Sigcomm’ 2020论文Annulus在第二环路中使用了QCN拥塞控制算法来对近源端的流进行拥塞控制。论文中没有直接陈述这个算法,而是在参考文献中给出了十页的伪代码 (头皮发麻)。
根据自己搜集资料以及伪代码,这里对QCN拥塞控制算法进行总结:
QCN算法
QCN(Quantized Congestion Notification,量化拥塞通知)是一套应用于二层的端到端拥塞通知机制,通过主动反向通知,降低网络中的丢包率和延时,从而提高网络性能。QCN作为数据中心标准的一部分,主要应用于数据中心场景。
很早之前我看过的sigcomm15年的论文DCQCN就是基于QCN进行改进的,所以这两种算法大体上很接近。
Congestion Point
交换机会维持一个这样的公式:
- 表示一个权重,控制在中的比重,文中将它设置为2。
- 代表采样时刻瞬时队列。
- 表示队列期望大小。
- 表示上次采样的队列大小。
所以用于表示队列是否发生拥塞,大于等于零表示没有发生拥塞,小于零表示发生拥塞。这时CP端会产生一个CNM报文通知发送端Reaction Point进行降速。
Reaction Point
RP端的基本算法是:
- 收到CNM消息后,根据消息中来调节发送速率,越大发送速率降得越低;
- 当速率降下来之后再逐步提升限速的目标上限,将发送速率恢复到原来的值。
- CR:当前速率,速率限制器(RL)限制后的当前发送速率
- TR:目标速率,在收到最后一个CNM消息之前的发送速率,是CR调整的目标速率
- Rai: 增长常数
速率降低过程公式:
其中 是一个常量,其取值需要保证 ,因此收到CNM之后速率最多降低到原来速率的一半。
速率增大过程有公式:
:快速恢复阶段
:主动增加阶段
参考文献
[1] Rong Pan. [n.d.]. QCN Pseudo Code: Version 2.2. http://www.ieee802.org/1/files/public/docs2008/au-pan-QCN-pseudo-code-ver2-2.pdf.
[2] https://zhuanlan.zhihu.com/p/142838792
[3] http://www.ieee802.org/1/files/public/docs2007/au_prabhakar_qcn_overview_geneva.pdf