PCC (NSDI 2015) ☀

here for paper

  • Author:Mo Dong(UIUC)
  • congestion control, Reinforcement Learning .


摘要:

由于基本的架构缺陷,TCP几乎没有希望实现高性能。提出PCC(面向结果的拥塞控制),其中每个发送者持续观察其“这一步的操作”与“经验性结果之间”的联系,使其能够始终如一地采用导致更好结果的操作。我们还证明PCC可以达到公平的稳定点。

here for website

引入:

TCP拥塞控制性能不佳体现在以下多方面:

  • perform 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,
  • incurs very high latency with bufferbloat in the network.

协议补丁在各处盛行,比如高BDP的链路,饱和链路,数据中心,无线网络,以及lossy链路,他们产生更好的效果在某些特定的网络情景下,但是在别的情况下就技不如人。

问题是:怎样获得持续的高效结果,在各种不同的真实网络场景下。

通常大家做hardwired mapping。
特定的packet-level events对应于特定的控制反馈。

  • 一个包丢失——TCP New Reno——减半发送率
  • 一个包丢失且RTT提升了——Illinois——减小windowsize根据延迟的梯度
    丢包层面

hardwired mapping必须对网络做假设,采用教科书事件控制对:数据包丢失使拥塞窗口减半。TCP认为丢包就是拥塞。当这个假设不成立的时候,那TCP就会大大削弱情况。
现代的网络会有巨大的各种各样的情形

  • random loss & zero loss
  • shallow queue
  • bufferbloat

由于手机无线和路径变化,Kbps和Gbbps带宽的不同,AQMs(Active queue mangement),software routers, rate shaping at gateway,virtualization layers and middleboxes like firewalls, packet inspectors and load balancers.这些复杂的网络状况都使得那些教科书式的mapping变得毫无意义。

因此我们提出了PCC(Performanced-oriented Congestion Control)目标是理解速率控制会怎样提升性能高,基于实时经验线索, selective acknowledgement (SACK) delivery, loss, and latency of each packet
通过这些指标设定了utility function效用函数。PCC使用的是非常通用的效用函数,PCC的收敛时间和TCP相似。PCC获得了较高的统一的表现,并且打败了TCP在以下诸多网络情况中:

  • 10倍的TCP CUBIC 在全球化网络情形下
  • 5.23倍的TCP Illinois 在数据中心间网络
  • 17倍的TCP Hybla 效仿卫星网络
  • 10-37倍的Illinois 在不可靠的lossy 链接
  • 解决RTT不平均的问题
  • shallow缓冲较小的瓶颈链接(性能提升高达45倍)13倍少的缓冲区达到90%的吞吐量
  • 14倍CUBIC 5.6倍的Illinois 在不断变化的网络情况下
  • PCC和ICTCP表现相同,在数据中心incast网络情形下。

pcc 的网页版

pcc:表现驱动的拥塞控制

TCP的劣势

TCP的表现差是因为TCP简单的hardwiring的包层面的事件->一些预先设定好的控制策略,并不理解真实的动作之后的表现。

TCP假设网络处于某种状态(例如拥塞)并尝试通过触发预定的控制行为(例如,将窗口大小减半)作为对该假定状态的响应来优化性能

但实际上的网络更为复杂:会有以下情况with bandwidth varying by 10,000x, virtualization, AQMs, middleboxes and software routers, shallow queues and bufferbloat, congestion loss and random loss.

所以tcp的假设会失败,但是仍旧会实施不匹配的反应,这就会导致竭股肱的严重下降。


PCC的优势

PCC从TCP失败的地方升起,PCC通过将控制动作(发送速率的变化)直接与其对实际性能的影响相关联。例如,当发送方将其速率更改为r并在以此速率发送后获取SACK时,PCC将这些数据包级事件聚合为有意义的性能指标(吞吐量,丢失率,延迟等),而不是触发任何预定的控制操作。并通过描述“高吞吐量和低损失率”等目标的效用函数将它们组合成数值u。通过这种理解特定发送速率的实际性能结果的能力,PCC直接观察并比较不同发送速率的结果效用,并学习如何通过控制算法调整其速率以改善经验效用。通过避免对潜在的复杂网络的任何假设,PCC跟踪经验上最优的发送速率,从而实现一致的高性能。


高性能开箱即用

互联网上的大数据传输

基于我们在全球商业互联网上的大规模实验,PCC可以在44%的发送-接收对上以10倍击败TCP CUBIC(Linux内核默认值)。我们使用几个代表性样本来比较在使用 PCC,TCP以及用飞机携带100GB传输数据所需的时间。

专用网络上的巨大数据传输

有大量数据(10TB /交付)?拥有一个快速的网络?可以提供专用网络容量吗?不要浪费你的能力!为了测试这种情况,我们在GENI(http://www.geni.net/)Internet2骨干网上配置了多个完全专用的800Mbps链路。以下是在PCC和TCP-Illinois中提供10TB数据的时间。

卫星互联网,在基于真实世界测量的模拟WINDS卫星互联网连接上,PCC提供的数据比TCP Hybla快17倍。

快速变化的网络,我们在网络路径上测试了TCP和PCC,其中可用带宽,丢失率和RTT每5秒都在变化,带宽范围从10Mbps到100Mbps,延迟从10ms到100ms,丢失率从0%到1%。与TCP变体相比,PCC可以紧密跟踪最佳速率。

我们还测试了:

  • 不可靠的有损链路(10-37X对比TCP伊利诺伊州)
  • 竞争发送方的RTT不均等(RTT不公平的架构解决方案)
  • 浅缓冲瓶颈链路(性能提高45倍,缓冲区减少13倍,达到90%吞吐量)
  • 数据中心的TCP内容,其中PCC的表现与专用的ICTCP相似。

PCC的控制算法本质上是自私的。令人惊讶的是,它可以实现比TCP更公平和更稳定的收敛。以下是典型的哑铃拓扑收敛实验,100Mbps,30ms延迟瓶颈。四个流以500s间隔顺序到达。每个流发送2000s。

稳定收敛与公平性

PCC稳定地收敛于公平点。

TCP显示非常不稳定的行为。

灵活的表现目标

PCC具有TCP系列范围之外的功能:PCC可以通过简单地插入不同的实用功能直接表达不同的数据传送目标。考虑一种想要获得高吞吐量和低延迟的交互式应用程序,即以优化吞吐量或者等待时间为目标,在先前文献中定义为“power”。

当使用TCP传递数据时,这个交互式应用程序的用户将对落后的用户非常不满经验,因为TCP不知道低延迟目标,仍然积极地填充网络缓冲区并导致恼人的延迟,称为 bufferbloat。为了获得更好的延迟,需要像Codel这样的网内主动队列管理机制或协议栈的fork lift change。使用PCC时,可以简单地将数据传送目标吞吐量延迟作为效用函数插入。然后PCC的控制学习算法将控制发送速率,以凭经验优化该效用函数。

如下图所示,PCC比TCP更能满足交互式应用程序的目标,甚至比使用附加网络AQM的TCP实现更多功能.