Page 91 - 《软件学报》2020年第9期
P. 91
2712 Journal of Software 软件学报 Vol.31, No.9, September 2020
制 ASIC.P4 编程语言的特征在于用户可以直接根据自己对处理数据包的需求定义 P4 程序,然后经过编译过程
生成适配文件将用户需求配置到网络设备.
P4 编程语言如今分为 P4 14 和 P4 16 两个版本,最新的版本 P4 16 相比 P4 14 在语法和语义方面的进行了许多修
改.P4 程序有 5 个基本组成部分,分别是首部(header)、解析器(parser)、动作(actions)、表(tables)、控制模块(control
[5]
blocks) .首部类型是由成员字段组成的有序列表,每一个成员字段都有其名称和字段长度,用户可以根据需要
定义协议字段;解析器的工作是把数据包中的头和元数据解析出来,解析器是以有限状态机的形式实现;表和动
作是实现数据包处理的核心部分,动作可以处理数据,定义转发等操作;表是匹配动作表(match-action tables)的
简称,表会定义匹配字段(key)、匹配方式以及匹配成功后执行的动作;控制平面制定控制流,将管理数据包处理
的规则插入到流水线中,当规则与数据包匹配时,将使用控制平面提供的参数作为规则的一部分来调用其
操作.
P4 的 3 个主要目标是协议无关性、可重新配置性以及可移植性:协议无关性是指协议和设备无关性,设备
不会指定协议;可重新配置性指协议重构性,程序员能够在部署后继续根据需求修改设备的行为;可移植性指
P4 程序不与特定的网络设备相关联.通过 P4 程序,我们可以定义交换机将识别(或“解析”)的表头、如何匹配每
个表头以及我们希望交换机在每个表头上执行的操作.因此,通过 P4 语言,用户可以对网络设备的硅处理芯片
(如交换机、路由器、网络接口等)进行管理.由于传统交换机只有一种转发数据包的方式,功能固定,所以传统网
络功能呈“自下而上”构建;P4 可编程网络则呈现“自上而下”的网络功能.
现在,P4 语言已经成为 Linux 基金会投资组织的一部分,并作为开放网络基金会(open networking
[6]
foundation,简称 ONF) 旗下的项目之一.P4 开发环境也在逐渐发展壮大起来,目前,P4 社区不仅拥有强大的编译
器,还拥有了架构独立的 P4 交换机,其主要可编程目标包括可编程 NIC、高端交换芯片、软件交换机(如 OVS
和 eBPF)等.P4 成为开发新型数据平面设计的一种越来越受欢迎的选择,目前,阿里巴巴、AT&T、思科、Juniper、
Netronome、Vmare、Xilinx 和中兴通讯等大厂也加入了 P4 联盟,其应用包括 NetFlow,Paxos 等方面的研究,且
范围范围还在扩展,但有关 P4 程序的测试工作有待开展.
[7]
在 Sigcomm 2017 年会上,来自清华大学的余舟等人进行了 P4 模块化编程 以及 P4 驱动的网络模拟器 [8]
的演示,其 P4 模块化编程体系结构 ClickP4 简化了 P4 程序的开发过程,ClickP4 的网络策略具有可靠性.P4 首次
应用于模拟网络的研究成果是网络模拟器 NS4,NS4 简化了模拟器内部模型开发过程,构建了虚拟的 P4 网络设
备及环境系统,是一款拓展性强的 P4 行为模型验证工具.2019 年 11 月,ONF 开源了包括 NG-SDN 接口和模型
[9]
的交换机操作系统 Stratum ,以提供全生命周期的控制、配置和接口操作管理.Stratum 对外呈现 P4、
P4Runtime、gNMI/OpenConfig 和 gNOI 等接口,基于上述接口的 Stratum 一致性测试框架正在研究制定中.
P4 和 OpenFlow 协议的主要区别在于:OpenFlow 协议功能固定、协议更新时间长,而 P4 编程语言可以告
诉交换机如何识别、处理数据包,让网络架构师或程序员可以控制交换机、指定转发行为,让填充定义表成为
可能.某种意义上来说,P4 编程语言可以真正意义上的完全实现软件定义网络.
1.3 一致性测试相关研究
全球已经存在许多独立的针对 OpenFlow 协议一致性测试的实验室,如北京互联网研究院(BII)、韩国电子
通信研究院(ETRI),这些实验室已经提出 OpenFlow 协议一致性测试测试方案并获得了 SDN 标准化组织 ONF
的认可.2013 年,ONF 宣布启动 OpenFlow 一致性测试项目,目的在于认证网络供应商在交换机、路由器和网络
软件中 SDN 协议的实施.ONF 提供了完全一致性、三层一致性以及二层一致性这 3 种针对 OpenFlow 的一致
性测试规范,网络供应商可以根据实际要求选择测试规范对数据转发设备进行测试.目前,ONF 已经认证并投入
使用的工具包括 OFCheck,OFsuite,OFTest 等.
P4 编程语言的可编程性和灵活性是提高网络性能的关键,符合错综复杂的网络需求对未来网络发展方向
的要求.通信协议按照标准落地,是协议设计的初衷和目的,是保证设备之间按照协议设定进行通信的关键.检
测评估协议是否落地,一致性测试必不可少.针对 P4 编程语言的测试工具有 p4pktgen,p4app 以及 ptf 数据平面
测试框架.