[论文解读] Packet Transactions: A Programming Model for Data-Plane Algorithms at Hardware Speed
本文介绍了 Domino,一种用于数据平面算法的类 C 编程语言,通过数据包事务——即原子、隔离的代码块,编译为 PISA 抽象机器,实现硬件线速性能。其主要贡献在于提供一种高级、高效且可移植的方式实现动态网络功能,而无需硬件重新配置。
Data-plane algorithms execute on every packet traversing a network switch; they encompass many schemes for congestion control, network measurement, active-queue management, and load balancing. Because these algorithms are implemented in hardware today, they cannot be changed after being built. To address this problem, recent work has proposed designs for programmable line-rate switches. However, the languages to program them closely resemble the underlying hardware, rendering them inconvenient for this purpose. This paper presents Domino, a C-like imperative language to express data-plane algorithms. Domino introduces the notion of a packet transaction, defined as a sequential code block that is atomic and isolated from other such code blocks. The Domino compiler compiles Domino code to PISA, a family of abstract machines based on emerging programmable switch chipsets. We show how Domino enables several data-plane algorithms written in C syntax to run at hardware line rates.
研究动机与目标
- 解决硬件实现的数据平面算法在部署后无法更新的僵化问题。
- 克服现有可编程交换机语言的复杂性,这些语言与底层硬件高度相似,阻碍了可移植性和表达能力。
- 设计一种高级编程模型,实现线速下高效、正确且可维护的数据平面算法实现。
- 弥合高层算法设计与底层可编程交换机架构之间的语义鸿沟。
提出的方法
- 引入数据包事务的概念:每个数据包执行的顺序、原子且隔离的代码块。
- 设计 Domino 为类 C 的命令式语言,使用数据包事务表达数据平面逻辑。
- 将 Domino 代码编译为 PISA,即面向现代可编程交换芯片的抽象机器家族。
- 通过在编译时强制执行数据包事务的隔离性和原子性,确保正确性和性能。
- 利用 PISA 的抽象层实现在不同可编程交换平台间的可移植性。
- 使用静态分析和编译技术优化事务执行,以实现线速吞吐量。
实验结果
研究问题
- RQ1一种高级的类 C 语言能否表达出与手工优化硬件实现性能相当的数据平面算法?
- RQ2数据包事务能否提供足够的抽象,以确保正确性和隔离性,同时保持线速性能?
- RQ3Domino 在多大程度上实现了在不同可编程交换架构上对数据平面算法的可移植性和可维护性实现?
- RQ4从 Domino 到 PISA 的编译管道在多大程度上保持了功能正确性和性能?
主要发现
- Domino 使得使用类 C 语法编写的数据平面算法能够在可编程交换机上实现硬件线速性能。
- 数据包事务抽象确保了原子性和隔离性,简化了对并发数据包处理正确性的推理。
- Domino 编译器成功将高层代码转换为高效的 PISA 机器代码,同时保留了功能语义。
- 该方法表明,高级抽象可以实现与低级硬件实现相当的性能。
- 该模型支持多种数据平面算法,包括拥塞控制和主动队列管理,在线速下运行且无性能下降。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。