Transport protocols continue to evolve to meet the demands of new applications, workloads, and network environments, yet implementing and evolving transport protocols remains difficult and costly. High-performance transport stacks tightly interweave protocol behavior with system-level mechanisms such as packet I/O, memory management, and concurrency control, resulting in large code bases where protocol logic is scattered and hard to modify -- an issue exacerbated by modern heterogeneous execution environments. This paper introduces transport programs, a target-independent abstraction that precisely and centrally captures a transport protocol's reactions to relevant transport events using abstract instructions for key transport operations such as data reassembly, packet generation and scheduling, and timer manipulation, while leaving execution strategy and low-level mechanisms to the target. We show that transport programs can express a diverse set of transport protocols, be efficiently realized on targets built over DPDK and Linux XDP, achieve performance comparable to hand-optimized implementations, and enable protocol changes and portability across targets without modifying underlying infrastructure.
翻译:传输协议持续演进以满足新应用、工作负载和网络环境的需求,然而实现和演进传输协议依然困难且成本高昂。高性能传输栈将协议行为与系统级机制(如数据包I/O、内存管理和并发控制)紧密交织,导致代码库庞大且协议逻辑分散、难以修改——这一问题在现代异构执行环境中更为突出。本文提出传输程序这一目标无关的抽象,它通过关键传输操作(如数据重组、数据包生成与调度、定时器操作)的抽象指令,精确且集中地描述传输协议对相关传输事件的响应,同时将执行策略和底层机制交由目标平台实现。我们证明传输程序能够表达多种传输协议,可在基于DPDK和Linux XDP构建的目标平台上高效实现,获得与手工优化实现相当的性能,并支持跨目标平台的协议修改与移植而无需改动底层基础设施。