A Survey on Data Plane Programming with P4: Fundamentals, Advances, and Applied Research
可编程数据平面允许用户为网络设备定义自己的数据平面算法,包括适当的数据平面api (application programming interface),可用于用户自定义软件定义网络(SDN)控制。这为网络定制提供了极大的灵活性,无论是用于专门的商业设备,如5G或数据中心网络,还是用于工业和学术研究的快速原型设计。与编程协议无关的包处理器(P4)已经成为目前最广泛的数据平面编程抽象、编程语言和概念。它由一个开放的社区开发和标准化,并得到各种软件和硬件平台的支持。
在本文的第一部分中,我们给出了一个关于数据平面编程模型、P4编程语言、体系结构、编译器、目标和数据平面api的教程。我们还考虑努力推进P4技术。在第二部分中,我们将大量基于p4的应用研究文献归类到不同的研究领域,总结这些论文的贡献,并提取原型、目标平台和源代码可用性。对于每个研究领域,我们分析了如何受益于P4的核心特性。最后,我们根据我们的发现讨论了可能的下一步。
路由器、交换机等传统网络设备对报文的处理采用数据平面算法和控制平面算法。用户可以配置控制平面特性和协议,例如通过cli、web界面或管理api,但底层算法只能由供应商更改。SDN打破了这一限制,数据平面编程更是打破了这一限制。
SDN通过引入API使网络设备可编程,该API允许用户绕过内置的控制平面算法,用自定义算法替换它们。这些算法用软件表示,通常运行在一个具有网络整体视图的SDN控制器上。因此,设计用于分布式控制的复杂控制平面算法可以被设计用于集中控制的简单算法所取代。这对于要求灵活性、效率和安全性的用例是有益的,例如,大规模数据中心或5G网络。
数据平面可编程,用户可以在转发设备上实现自己的数据平面算法。用户,例如程序员、实践者或操作员,可以定义新的协议头和转发行为,这在没有可编程数据平面的情况下,只有供应商才可能实现。他们还可以为SDN控制添加数据平面api。
数据平面编程改变了用户的能力,因为他们可以构建定制的网络设备,而不会在性能、可伸缩性、速度或适当平台上的能力方面做出任何妥协。有不同的数据平面编程模型,每个模型都有许多实现和编程语言。例如Click [1]、VPP[2]、NPL[3]和SDNet[4]
与编程协议无关的包处理器(P4)是目前数据平面编程中最广泛的抽象、编程语言和概念。它于2014年[5]首次作为研究论文发表,目前在P4语言联盟(P4 Language Consortium)进行开发和标准化,得到各种基于软件和硬件的目标平台的支持,在学术界和业界得到广泛应用。
在下面,我们澄清这个调查的贡献,指出它的新颖性,解释它的组织,并提供一个表格与首字母缩写经常使用在这项工作。
这项调查追求两个目标。首先,对P4进行了全面的介绍和概述。其次,调查了基于P4技术的应用研究的出版物。其主要贡献如下:
我们考虑在P4上发表到2020年底的论文,以及从2021年起选定的论文。除了期刊、会议和研讨会论文,我们还包括来自标准、网站和源代码存储库的内容。论文共有519篇参考文献,其中377篇为科学出版物:73篇来自2017年及之前,66篇来自2018年,113篇来自2019年,116篇来自2020年,9篇来自2021年。
2014年[6,7],2015年[8,9,10],2016年[11,12]发布了大量关于SDN的调查,2014年[13,14,15]发布了关于OpenFlow (OF)的调查。其中只有一个[12]在一个句子中提到了P4。P4发布后不久,就发表了2015年以来的两份数据平面编程调查[10,9],2018年的一份会议论文[16]和2019年[17]的一份调查,将P4作为其他数据平面编程语言之一。同样,Michel等人[18]对数据平面编程进行了总体概述,P4是其他被研究的抽象和编程语言之一。我们的调查只针对P4。它涵盖了更多关于P4的细节,以及更多基于P4的应用研究的论文,这些研究大多是在最近两年内才出现的。
[19]发表了一份关于P4数据平面编程的最新调查报告。介绍了数据平面编程的P4方法,从四个研究领域综述了33项研究成果,并对研究问题进行了讨论。另一个最近的技术报告[20]回顾了7个研究领域的150篇研究论文。虽然P4的典型研究领域已被涵盖,但其他领域(如工业网络、新颖的路由和转发方案、时间敏感网络)并未纳入文献综述。P4的不同方面,如编程语言、体系结构、编译器、目标、数据平面api,以及它们的进展在本文中都没有讨论。与对P4的两次调查相比,我们更详细地涵盖了P4技术及其进步,我们的文献综述也更全面。
图1描述了本文的结构,本文分为两个主要部分:P4概述和研究出版物的调查。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LTWAuWNa-1655969970187)(image-20220623111551213.png)]
在第一部分中,第2节介绍了网络可编程性。描述了从传统网络和SDN网络到数据平面编程的发展过程,给出了两种最常用的数据平面编程模型。在第3节中,我们给出了一个基于P4最新版本P416的面向技术的教程。我们将介绍P4编程语言,并描述用户提供的P4程序如何在P4目标上编译和执行。第4节介绍了作为P4程序和目标之间的中间层的P4架构的概念。我们详细介绍了四种最常见的架构,并描述了P4编译器。在第5节中,我们分类并介绍了执行P4程序的平台,即所谓的基于软件、fpga、专用集成电路或npu的P4目标。第6节介绍了数据平面api。我们描述了它们的功能,给出了一个特性,介绍了作为SDN控制器接口的四个主要P4数据平面api,并指出了控制器用例模式。在第7节中,我们总结了旨在改进P4数据平面编程的研究成果。
论文的第二部分概述了基于p4的通信网络应用研究。在第8节中,我们对P4的核心特征进行了分类,这些特征使得数据平面算法的实现具有吸引力。我们将在后面的章节中使用这些属性来有效地推断各种原型实现的P4的值。我们对该研究领域进行了概述,并对收录的出版物进行了统计。其上级研究领域包括监控(第9节)、流量管理和拥塞控制(第10节)、路由和转发(第11节)、高级网络(第12节)、网络安全(第13节)和杂项(第14节),以涵盖其他不同的主题。每个类别都包含一个表,用于快速概述所分析的关于原型实现、目标平台和源代码可用性的论文。在每一节的最后,我们将分析所审查的工作如何受益于P4的核心特性
在第15节中,我们讨论了从这个调查的见解,并给出了对潜在的下一步的展望。第16节结束了这项工作。
以下是本文使用的首字母缩写
ACL访问控制列表
ALU算术逻辑单元
API应用程序编程接口
AQM主动队列管理
ASIC专用集成电路
AWW调整广播窗口
bmv2行为模型版本2
BGP边界网关协议
BPF伯克利包过滤器
CLI命令行界面
DAG有向无环图
DDoS分布式拒绝服务
DPI深度包检测
DPDK数据平面开发工具包
领域特定语言eBPF扩展伯克利包过滤器
ECN显式拥塞通知
FPGA现场可编程门阵列
FSM有限状态机
GTP GPRS隧道协议
HDL硬件描述语言
HLIR高级中级代表
IDE集成开发环境
IDL意图定义语言
IDS入侵检测系统
INT带内网络遥测
LDWG 语言设计工作组
LPM最长前缀匹配
LUT查找表
MAT match-action-表
ML机器学习
NDN命名数据网络
NF网络功能
NFP网络流处理
NFV网络功能虚拟化
NIC网络接口卡
NPU网络处理单元
ODM原创设计制造商
ODP开放数据平面
OEM原始设备制造