论文阅读笔记——拥塞控制算法PCC

PCC论文阅读笔记

本文是关于NSDI '15论文《PCC: Re-architecting Congestion Control for Consistent High Performance》的阅读笔记。

TCP为什么这么垃圾

In the roughly 25 years since its deployment, TCP’s congestion control architecture has been notorious for degraded performance. TCP performs poorly on lossy links, penalizes high-RTT flows, underutilizes high bandwidth-delay product (BDP) connections, cannot handle rapidly changing networks, can collapse under data center incast [24] and incurs very high latency with bufferbloat [28] in the network.

TCP真的很垃圾。它无法处理高丢包率链路、无法适用于高RTT的流、无法有效利用高带宽链路、无法处理高度动态变化的网络、在数据中心会出现incast问题、而且也导致Bufferbloat等等。

传统TCP是怎么干的

传统TCP通常依赖于hardwired mapping(这个是什么鬼?见下文)来控制发送速率。但是网络状况实际上是非常复杂的,想要依靠hardwired mapping实现很好的性能是很不实际的。例如,一个简单的丢包,可能是多个流拥塞造成的,也有可能是随机丢包,也有可能运气不好刚好赶上burst造成满队列丢包。

Notehardwired mapping是指提前定义好什么事件触发什么控制动作。如丢包事件触发了AIMD中的MD。

依赖于hardwired mapping会产生什么后果呢?

一个错误的假设会导致灾难性的后果!
举个例子:一个随机丢包,如果判断成拥塞而腰斩发送速率,会极大地降低发送速率。类似地还有很多。

PCC为什么牛逼

PCC不采用hardwired mapping,所以不用对网络进行假设,不用假设丢包到底是什么造成的。

PCC是怎么干的

类似于机器学习,PCC设置一个目标函数,然后不断地尝试各种发送速率,最终使得目标函数达到最优。

例如,一开始,当流的发送速率为r时,它分别以速率(1+ε)r和速率(1-ε)r发送,并观测计算对应的目标函数,并将速率调整为取得较优目标函数的值,并以这个方向继续增大或减小(有点像凸优化中的梯度法),直到该目标函数开始减小。

PCC如何应对噪声?

采用随机控制试验(RCT),这使得PCC能够更鲁棒地对抗噪声。
例如,以随机的顺序进行对2个速率(速率(1+ε)r和速率(1-ε)r)进行4个测试(每个速率2次)。如果在这4个测试中,某个速率的2组测试的目标函数都比较良好,那么选择该速率。若一个好,一个不好,那么维持现有速率不变。
尽管RCT使得PCC的收敛时间变长了,但这是值得的。RCT帮助PCC做出更优的决策,降低了PCC的速率波动。

PCC如何取得公平性

乍一看,PCC是自私的,因为它不会像AIMD那样因为丢包而主动降低自己的速率让别的流通过,它似乎无法取得全局的公平性。然而,通过设置一个合适的目标函数,可以使得多个PCC流都可以公平地共享同一条链路。
(这里有一个问题弄不明白:在这种架构下,各种流如何根据优先级等进行加权平均?是否可以通过设置一个合适的目标函数?还是得中间设备支持?)
例如,通过设置目标函数为
u i ( x i ) = T i ⋅ S i g m o i

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值