
2286
Journal of Software 软件学报 Vol.31, No.8, August 2020
互联网的实现,需要相应的网络设备对网络数据包进行处理和转发.考虑到处理速度,目前大多数的交换机
芯片都是采用固定功能的专用硬件实现,如 Broadcom 公司的 Trident
[1]
芯片.这样的交换机一经部署,就只能支
持固定的网络协议,它具有很明显的缺陷.
• 首先,近年来,互联网产业发展迅猛,各种新型网络技术层出不穷,出现了大量的新型协议如 MPLS
[2]
,
GRE
[3]
等.为了适应这些新的网络协议,运营商只能反复更新网络的中转设备.然而开发新的硬件并推
广一个新的硬件标准是十分花费时间和金钱的,如 VxLAN
[4]
协议在其被提出 3 年后才被新的硬件标准
支持.
• 其次,这种固定功能的硬件设备往往采用“自底向上”的设计模式,在这种设计模式下,设计者需要首先
考虑芯片的数据清单,确认硬件的资源能满足设计的要求后,再规划好如何利用这些资源,然后在这之
上设计功能的实现.这对于设计者来说是十分不方便的,因为设计者往往更自然地以“自顶向下”的方
式来考虑问题,即设计数据包的解析、处理和转发等过程的逻辑,而不愿意考虑硬件的实现细节.
为了提高网络中转设备的通用性和灵活性、简化开发者的开发过程,相关研究人员做出了大量的努力.
软件定义网络(software-defined networking,简称 SDN)
[5]
将控制平面和数据平面分离,给予操作者对控制平
面进行编程的能力,由控制平面通过统一、标准的接口对不同的网络设备进行配置和管理.通过这种方式,SDN
把网络设备逐渐变为可编程的软件平台,操作者可以“自顶向下”地通过编程决定各网络设备的行为.
2013 年,Bosshart 等人提出了可编程交换机的抽象转发模型
[6]
,为实现可编程数据平面提供了可能.在这个
模型中,数据包在进行转发时会通过一连串的可重配置的匹配动作表(reconfigurable match-action tables,简称
RMT),通过对这些灵活的匹配动作表的重新配置,就可以使交换机支持不同的对数据包的处理、转发方式.2014
年,Bosshart 等人在抽象转发模型的基础上进一步提出了 P4 语言
[7]
,为可编程交换机提供了一种高级编程语
言.P4 语言专注于描述数据包在匹配动作表中被处理的逻辑过程,并通过相应的编译器实现其到具体硬件的配
置,符合“自顶向下”的设计模式.P4 具有对数据平面的重配置能力、协议无关性以及目标硬件无关性,极大地提
高了对交换机编程的通用性和灵活性,也方便代码的跨平台迁移.自此,可编程数据平面逐渐兴起,SDN 的潜能
得到了更大的开发.
软件的安全性始终是软件工作者感兴趣的话题,随着 P4 的兴起,软件工作者也开始尝试用形式化方法来验
证 P4 程序的可靠性,从而提高 SDN 的安全性.2018 年,Liu 等人
[8]
设计并开发了一个用于 P4 程序正确性验证的
工具 P4v,该工具首先将 P4 程序转译为 GCL(guarded command language),然后通过添加特定注释并利用符号执
行技术来验证 P4 程序的逻辑正确性.作者在他们的工作中指出,相关的开源 P4 编译器是存在 bug 的,因此他们
构建了一个独立的编译器前端包括解析器、类型检查以及到 GCL 的翻译器.尽管这极大地提高了 P4 程序的可
信度,但 P4 程序和转换的 GCL 之间的一致性仍然是难以保证的,所以 Liu 等人也把设计一个可验证的编译器甚
至可验证的硬件作为感兴趣的未来研究工作.Lopes 等人研究实现了一个基于 Z3 求解器的原型工具
[9]
,可用于
验证 P4 编译过程(verifying P4 compilation).Kheradmand 等人为 P4 语言定义了一种基于 K-框架的形式语义
[10]
,
并借助 K-框架近期开发的原型工具 KEQ
[11]
,给出一种实现 P4 编译过程的翻译确认
[12]
解决方案.
交换机在工作时,第 1 步是实现数据包的解析.为了实现解析器的快速设计,Benacek 等人
[13]
将 P4 语言编写
的解析器程序映射到固定的硬件架构中,可以快速生成解析器对数据包进行灵活的解析,但没有实现资源的复
用.李翔宇课题组为此提出了一种通过静态配置可以实现不同解析逻辑的数据包解析器基本处理单元(process
element,简称 PE)
[14]
,经由编译器(本文工作)生成的配置文件配置后,可用于任何一层协议(可自定义)的解析,并
通过流水线式级联的方式来搭建可以支持各种协议集合的可重构数据包解析器,具有更少的资源占用率、更好
的性能和更高的灵活性.本文工作的出发点之一就是围绕这一可重构数据包解析器进行软硬件协同设计,提出
并实现一种与硬件设计匹配的硬件配置描述语言.
本文工作的大背景是服务于一种高安全交换芯片的设计与实现,需要从高安全可信的角度设计和实现这
种硬件配置描述语言,因此提出 P3 语言(specification language for reconfigurable protocol-independent packet
parsers).P3 语言比 P4 语言要简单很多,仅面向上述可重构数据包解析器的设计.P4 语言描述的是整个数据平面,
评论