实验8:数据平面可编程实践——P4
一、实验目的
- 掌握V1Model框架下P4_16的程序结构和基本语法
- 能够运用 P4 进行简单数据平面编程
二、实验环境
- 下载虚拟机软件Oracle VisualBox或VMware;
- 在虚拟机中安装Ubuntu 16.04 Desktop amd64,并安装完整Mininet和P4开发环境;
- 提供P4镜像P4-Suite2018.ova,提取码:egwf
三、实验要求
- 学习P4官方示例教程,链接:https://github.com/p4lang/tutorials ,了解P4-16版本的基本语法、基于V1Model的P4代码结构,完成如下练习:
(一)基本要求
- 熟悉使用P4实现交换机IPv4的基本转发原理,编写P4程序,在下面的拓扑中实现IPV4 隧道转发。
- 将basic_tunnel.p4中的代码编写补全并用make run运行
- 在mininet中输入xterm h1 h2
- 并在h2中输入 ./receive.py 启动服务器用以接收消息
- 在h1中输入"My ID is 031902520",h2接收到h1的消息
- 接着使用隧道进行测试,在h1中给h2发送消息
四、个人总结
- 在这次实验中我学到了许多关于在V1Model框架下P4_16的程序结构和基本语法,以及如何运用 P4 进行简单数据平面编程。得出相关的结论,即隧道通信时不再根据 IP 报头进行路由,而是根据 mytunnel 标头指定的 dst_id 进行转发。
- 这次的实验我认为十分有难度,很多问题都需要同学的帮助来解决。例如官网的教程是纯英文的,只能靠翻译机器来进行阅读,勉勉强强能够理解到一些P4的编程知识。在实验的时候遇到过在mininet中输入xterm h1 h2却没反应,重启后就解决了。总而言之,通过本次实验我还是十分有收获的,今后还需要多多阅读相关资料,不断补充自己的知识储备,才能更好的学会这门课程。