此外,与所有数据网络一样,大型专用网络也拥有用于在网络拥塞期间管理网络流量的控制算法。但由于服务器集群中负责路由流量的路由器必须速度极快,这些控制算法被硬编码到路由器的电路中。这意味着,如果有人开发出更优的算法,网络运营商必须等到新一代硬件发布后才能应用这些改进。.
麻省理工学院计算机科学与人工智能实验室 (CSAIL) 和其他五个组织的研究人员希望通过可编程路由器来改变这种状况,这些路由器能够跟上现代数据网络飞速发展的速度。.
“这项工作表明,在保持传统路由器高性能的同时,可以实现许多灵活的流量管理目标,”麻省理工学院电子工程与计算机科学系富士通教授哈里·巴拉克里希南 (Hari Balakrishnan) 表示。“以前,可编程性是可以实现的,但由于速度慢了 10 倍甚至 100 倍,所以没有人将其应用于生产环境中。”
他补充道:“你需要研究人员和工程师有能力测试成千上万个想法。有了这个平台,你不再受限于硬件或技术限制,而是受限于你的创造力。你可以更快地进行创新。”
该论文的第一作者是阿尼鲁德·西瓦拉曼 (Anirudh Sivaraman),他是麻省理工学院电子工程与设备科学专业的硕士研究生,导师是巴拉克里希南教授和麻省理工学院电子工程与计算机科学系职业发展助理教授穆罕默德·阿里扎德 (Mohammad Alizadeh),他们也是该论文的共同作者。他们还得到了来自麻省理工学院、华盛顿大学、Barefoot Networks、微软研究院、斯坦福大学和思科系统的合作者的支持。
影响各异:
由于网络中传输的数据类型繁多,且不同服务提供的性能保证也各不相同,因此流量管理可能十分复杂。例如,对于网络电话而言,延迟虽然令人烦恼,但偶尔丢包(可能导致句子中漏掉一个词)尚可接受。然而,对于大型数据文件而言,轻微的延迟或许可以容忍,但丢包则不可容忍。
同样,网络可以保证用户间带宽的均衡分配。数据网络中的每个路由器都有自己的存储空间,称为缓冲区,用于存放数据包。如果一个用户用来自单个高清视频的数据包填满了路由器的缓冲区,而另一个用户正在尝试下载一个相对较小的文本文件,那么网络可能会优先处理文本文件,从而为用户提供最低数据速率保障。
路由器还可能修改数据包,以传输有关网络状况的信息,例如数据包是否遇到拥塞、拥塞位置以及拥塞持续时间;它甚至可能向发送方建议新的传输速度。
计算机科学家提出了数百种流量管理方案,这些方案都包含复杂的规则,用于确定路由器应该接受哪些数据包、丢弃哪些数据包、数据包应该按什么顺序排队以及需要添加哪些附加信息——所有这些都适用于各种不同的情况。虽然许多方案的模拟结果都表明它们能够提升网络性能,但由于路由器硬件的限制,一些方案尚未得到部署。
麻省理工学院的研究人员及其合作者着手寻找一组简单的计算元件,这些元件可以组合起来实现各种流量管理方案,同时又不影响当今最佳路由器的运行速度,也不会占用过多的芯片空间。
为了测试他们的设计,他们构建了一个编译器——一个将高级程序指令翻译成低级硬件指令的程序——并用它来将七种实验性的流量管理算法编译到他们提出的电路元件中。如果某个算法编译失败,或者需要的电路数量过多,他们就会在其电路元件库中添加新的、更复杂的电路元件。
评估:
在两篇新论文中的一篇中,研究人员提供了七种电路的规格说明,每种电路都比前一种略微复杂一些。一些简单的流量管理算法只需要一种电路,而另一些则需要更复杂的电路。但即使是最复杂的电路组也仅占用路由器芯片表面积的4%;而不太复杂的电路组仅占用0.16%。
除了用于设计电路元件的七种算法之外,研究人员还使用他们的编译器运行了几种算法,发现它们可以编译成一些简单电路元件的组合。
“我们认为它们可以推广到更多领域,”Sivaraman说道。“例如,其中一种电路允许程序员跟踪运行总和,许多算法都用到了这个功能。”
在第二篇论文中,他们描述了调度器的设计,调度器是一种电路元件,用于对路由器队列中的数据包进行排序并提取出来进行转发。除了根据优先级对数据包进行排队之外,调度器还可以为数据包标记特定的传输时间,并据此进行转发。例如,有时路由器降低传输速率可能有助于避免网络其他地方出现瓶颈,或确保带宽的公平分配。
最后,研究人员使用 Verilog(电子工程师常用的商用芯片设计语言)编写了电路规范。嵌入分析工具中的 Verilog 验证了使用研究人员电路的路由器速度足够快,能够支持当今高速网络中常见的包速率——每纳秒传输一个数据包。
###
作者:麻省理工学院 Larry Hardesty
