面向数据平面P4编程的虚拟仿真实验教学平台
2019-11-07林为伟叶福玲
林为伟 张 栋 叶福玲
1.福州大学数学与计算机科学学院 福建福州 350108
2.福州大学网络信息安全与计算机技术实验教学中心 福建福州 350108
3.福州大学至诚学院 福建福州 350002
网络实验教学是计算机专业网络课程的重要组成部分。现有网络实验课程主要集中在设备操作与协议验证,对网络底层,如路由器或交换机的体系结构、工作机制及工作原理等涉及较少[1,2]。教师受限于固化的硬件,难以编程设计或优化底层设备,实验教学主要围绕步骤化的验证性实验展开。随着软件定义网络(Software Defined Networking,SDN)技术的发展,上述困境逐步得到缓解。SDN作为新型网络架构,将控制平面与数据平面分离,控制平面通过OpenFlow协议制订和下发转发策略,数据平面按策略转发[3]。然而OpenFlow不具有协议不相关性,使数据转发只能依据现有的协议[4]。而P4(Programming Protocol-Independent Packet Processors)的问世,克服了OpenFlow的上述缺陷。
作为SDN领域的编程语言,P4为数据平面提供了一套编程抽象,开发者可以使用P4描述网络数据平面协议和数据包处理行为,而无须关心底层硬件的实现细节,并可编程更改数据包解析与转发流程,解决了传统网络硬件设备可编程能力低的问题[5,6]。已有越来越多高校将SDN引入计算机网络教学,并探索将P4作为SDN的重要组成部分引入课堂,解决当前网络实验教学无法涉及底层设备架构与可编程的问题[7,8]。但是,现有的P4从开发到部署运行,配套的集成运行环境较为缺乏,严重依赖于控制平面的复杂配置,难以满足初学者的仿真实验学习要求。因此,如何简化控制平面的复杂配置,设计简便的P4集成仿真实验环境,将教与学的精力集中于数据平面可编程,成为保障P4实验教学顺利实施的重要课题。
1 P4虚拟仿真实验教学平台的设计与实现
作为数据平面的编程语言,P4的开发、部署和运行,都依赖控制平面的配置。首先,P4程序的运行,需要控制平面下发网络拓扑结构的具体配置;其次,P4程序只定义对数据平面匹配动作的一系列高级描述,但匹配动作何时被执行,还需要控制平面配置下发流表,来验证匹配动作执行的正确性。控制平面的配置操作烦琐,影响P4教学实验的顺利实施与推广。针对该问题,构建P4虚拟仿真实验教学平台,为P4程序提供配套的集成运行环境,将教与学的精力集中于P4编程上。
1.1 平台设计
P4虚拟仿真实验教学平台包含五个模块,分别是Web前端、初始化模块、网络拓扑配置模块、流表配置模块和P4源代码模块,各模块间的关系如图1所示。各模块功能如下。
(1)Web前端:启动Web图形化界面,提交网络拓扑生成的文件和配置下发流表。
(2)初始化模块:存放网络拓扑文件和前端启动脚本,通过运行启动脚本可以启动网络环境的虚拟仿真。
(3)网络拓扑配置模块:服务后端,存放网络拓扑配置文件,处理前端操作生成的网络拓扑文件,实际配置网络拓扑。
(4)流表配置模块:服务后端,存放流表配置文件,处理前端操作提交的流表配置命令。
(5)P4源代码模块:存放用户编写的P4代码及代码所依赖的头文件和解析文件,根据前端建立网络拓扑和提交的流表配置完成相应的动作匹配。
图1 P4虚拟仿真实验平台模块结构图
平台为P4程序的开发部署提供了两项控制平面配置服务功能,一是提供图形化操作建立并展示网络拓扑;二是提供图形化操作查看和修改交换机的流表项。
1.2 平台实现
平台采用轻量级仿真工具Mininet提供底层网络拓扑生成,通过初始化模块启动Mininet,并基于控制器Ryu应用gui_topology进行二次开发,提供Web前端的图形化展示[9,10]。Mininet 基于 Linux Container 架构,是斯坦福大学Nick McKeown 教授领导的研究小组开发的网络虚拟仿真工具,可以在计算机上模拟完整的网络主机、链路和交换机,同时还具有很强的扩展性[11]。Ryu是SDN的一种开源控制器,可以将Mininet平台连接到Ryu控制器上,通过Ryu提供的可视化界面展示SDN对网络的集中式控制。P4虚拟仿真实验教学平台可以让学生通过可视化的Web界面创建网络拓扑,同时动态查看和修改数据平面交换机的流表项。
2 P4虚拟仿真实验教学方案
通过建立拓扑和修改流表实验对提出的P4虚拟仿真实验教学方案进行展示。实验需要验证P4代码switch.p4在网络拓扑中对数据包的转发,程序关键代码展示如下。
首先,利用P4虚拟仿真实验教学平台提供的图形化界面,建立并验证网络拓扑的正确性;其次,在建立网络拓扑基础上,选择特定的交换机,由平台完成流表下发,验证所写P4程序数据包转发的功能。通过上述实验,能让学生感受到平台的图形化界面为控制平面配置工作所提供的便捷,将师生从原本复杂的控制平面配置中解脱出来,专注于数据平面的P4编程。
本实验将要建立的网络拓扑如图2所示,其中s1,s2,s3是三台形成环路的交换机,每台交换机分别连接一台主机和相邻两台交换机。在没有平台的辅助下,学生若需要建立该拓扑,要按照特定的格式,以文本文件的形式将所需网络拓扑结构编写保存,再由Mininet加载生成虚拟网络环境。建立拓扑和修改流表实验将展示由平台提供的Web图形化界面,帮助快速便捷地建立网络拓扑。网络搭建完成后,还将进行修改流表的操作。若缺少平台辅助,学生需逐台登录交换机,再通过命令行的方式,逐条下发流表规则,学生需要记忆复杂的流表下发命令格式。建立拓扑和修改流表实验将展示由平台提供的Web图形化界面,便捷地配置下发流表。
图2 实验网络拓扑图
(1)创建网络拓扑:首先,使用Ryu开源控制器的ryu-manager命令,运行Web前端当中的python代码p4web.py,启动Web前端。其次,在浏览器中打开Web图形化界面。在Web界面左侧输入交换机和主机的数量,输入链路信息,点击提交,即可在Web界面的右侧展示出所创建的网络拓扑,如图3所示,同时程序后台将生成网络拓扑文件,以供后续启动Mininet时加载。
图3 P4虚拟仿真实验平台的前端界面
(2)验证网络拓扑:通过Web前台展示的网络拓扑图可以初步验证网络拓扑的正确性。启动Mininet,启动过程将加载步骤(1)创建的网络拓扑文件,Mininet完成交换机和主机的虚拟仿真,完成网络拓扑的配置。在Mininet上使用net命令查看网络拓扑,验证发现由虚拟仿真平台生成的网络拓扑与要建立网络拓扑是一致的,如图4所示。
图4 在Mininet上验证网络拓扑
通过步骤(1)、步骤(2)发现,平台能够帮助学生快速建立网络拓扑。此外,平台具有配置交换机流表的能力,配置入口如图3右下方所展示。实验将展示学生在完成P4程序switch.p4后,利用平台在控制平面上对网络拓扑内的交换机配置转发规则,以实现主机间的网络互通。
(3)配置下发流表:实验前交换机流表并没有配置任何规则,因此网络拓扑内的3台主机相互间是不通的,如图5a所示。实验要求通过修改流表实现h1和h3,h2和h3之间互通,需分别配置下发3台交换机的流表规则。通过平台提供的Web图形化界面,学生可以方便快速地完成交换机流表规则的下发,而不再需要上述烦琐的过程。以s1为例,点击Web前台右下角的交换机流表信息,进入下发流表页面,点击下发流表按钮,进行流表下发,下发流表后,平台将展示在s1上下发的所有流表规则,如图6所示。之后再以同样的操作,分别在s2和s3上完成下发流表的操作。
(4)验证流表规则:在s1,s2,s3完成下发流表的操作后,再次验证h1,h2,h3互相之间的网络通信,发现h1和h3,h2和h3互相间网络已经连通,如图5b所示,说明此前下发的流表规则已经生效,交换机内的数据包成功被转发。此外,P4虚拟仿真实验教学平台还可对已经下发的流表执行删除操作,只需点击交换机流表规则右边的删除按钮即可完成。
图5 主机之间的相互通信结果
图6 s1下发流表
通过建立拓扑和修改流表实验,展示了学生在P4程序的开发过程中,使用P4虚拟仿真实验教学平台提供的图形化界面,建立并验证网络拓扑的正确性,不需要预先按照特定格式编辑网络拓扑文件,并可在网络拓扑内选择特定的交换机,利用图形化界面完成配置下发流表的操作,从而验证所写P4程序的数据包转发功能,无须手工输入命令。传统方法和通过平台辅助的对比见表1。实验表明,学生在P4编程学习过程中,可以借助P4虚拟仿真实验教学平台快速便捷地完成控制平面的配置,克服因控制平面的复杂配置给P4开发部署带来的不便,有利于P4实验教学的进一步推广。
表1 传统方法和P4虚拟仿真平台的功能对比
3 结语
面对网络新技术的发展,传统计算机网络实验教学课程相对滞后,师生难以对网络底层设备的设计与优化实现编程控制。P4推动了SDN数据平面可编程,成为高校SDN课程教学中的重要一环。虽然P4提供了数据平面可编程能力,但在开发、部署和运行的过程中,依赖于控制平面的复杂配置。本文提出了面向数据平面P4编程的虚拟仿真实验教学平台,并以建立拓扑和修改流表实验为例,展示了平台为P4程序运行提供图形化的网络拓扑和动态的可视化流表管理。平台有助于提升SDN课程的教学质量,促进了P4实验教学的推广。