’t mean that we’重新获得全部收益。几年前,吉姆·盖蒂(Jim Gettys) 将手指放在“criminal mastermind”网络性能不佳的原因。配音 缓冲膨胀,这个问题并不是一个容易解决的问题。不简单,但是 受控延迟(CoDel)活动队列管理(AQM)可能会为解决方案提供重大进展.

简而言之,问题在于,TCP并不是今天设计的’的带宽。盖蒂写道“犯罪策划者”发布,问题出在“end-to-end”在应用程序,操作系统和家庭网络中。缓冲是必需的,但是过多的缓冲是个问题。还有今天’的设备和操作系统缓冲过多–这会降低性能。盖蒂说,“TCP尝试尽可能快地运行链接,任何批量数据传输都将导致现代TCP持续打开其窗口,并且在全带宽下运行连接的时间越长,站立队列就会增长,除非存在AQM,否则会不断增加延迟。”

Linux技巧页面 缓冲膨胀 Wiki上的突出显示了问题的范围。根据页面,缓冲区可以“hide”在操作系统层(Linux传输队列),设备驱动程序,硬件(具有自己的缓冲区)以及其他设备上。主动缓冲管理(AQM)是解决缓冲区膨胀问题的长期解决方案之一,而凯瑟琳·尼科尔斯(Kathleen Nichols)和范·雅各布森(Van Jacobson)提出的受控延迟(CoDel)AQM可能是一大难题。

救援吗?

CoDel(发音为“coddle”),被称为“no-knobs”AQM。这意味着用户和管理员’期望调整任何参数以获得CoDel的最佳性能。根据发表在ACM Queue上的论文,“CoDel的算法不是基于队列大小,队列大小平均值,队列大小阈值,速率测量,链路利用率,丢包率或队列占用时间。从...开始 范雅各布森’s 2006 insight (PDF),我们使用局部最小队列作为站立队列的更准确和更可靠的度量。”

更重要的是,CoDel承诺区分“good” queues and “bad” queues. It’应该在不影响流量突发的情况下最大程度地减少延迟。“The core of the bufferbloat-detection problem is separating 好 from 坏 … 好 queue is occupancy that goes away in about one RTT (round-trip time); 坏 queue persists for several RTTs. An easy, robust way to separate the two is to take the minimum of the queue length over a sliding time window that’比标称RTT长。”

最后,CoDel应该适合于在各种设备中进行部署。报纸说CoDel是“简单高效”并可以部署在低端设备或“高端商用路由器芯片。”

证明在布丁中,在展开中

在CoDel上已经进行了大量测试,但是必须通过实际部署来证明。根据该论文,尼科尔斯和雅各布森“数千次模拟运行” that showed CoDel “performed very well” with results “具有足够的吸引力,可以继续进行基于Linux的路由器的广泛实际测试的下一步。”

请注意,将其部署在基于家庭的路由器中可能不足以消除缓冲区膨胀。研究人员指出“精明的用户可能会想通过支持CeroWrt的边缘路由器部署CoDel,以使缓冲膨胀消失。不幸的是,大缓冲区并不总是位于可以对其进行管理的位置,而是可以无处不在和隐藏的。示例包括连接到电缆调制解调器的消费者边缘路由器和带有环形缓冲区的无线接入点。许多用户通过电缆调制解调器以不同的上行链路速度访问Internet。… 的 modem’s缓冲区处于从快到慢的过渡阶段,’s在哪里建立队列:在用户控制之外的密封设备中。”

所以,不要’我们希望CoDel能够在一夜之间甚至在年底之前解决缓冲膨胀问题。盖蒂说“将自适应AQM算法集成到无线系统中的工作将花费数月或数年,而不是最初的CoDel以太网原型实现所花费的一周。但是现在至少可以对CoDel算法进行更多的测试,实验和改进。”

那里’还有解决无线问题,盖蒂说“这可能要困难得多,不仅因为排队有时比以太网复杂得多,而且还因为数据包聚合导致OS /驱动程序边界隐藏了正常运行所必需的信息。”

But CoDel is still very 好 news, and shows that the community that’围绕着缓冲膨胀问题正在取得进展。缓冲膨胀获胜’一次突破就可以解决,但是随着时间的推移,它会进行多项技术改进。

(铅图片提供: 耶利米·罗(Jeremiah Ro)通过Flickr, 在下面 Attribution-ShareAlike 2.0通用 (CC BY-SA 2.0)许可。)