实验8:数据平面可编程实践——P4
实验8:数据平面可编程实践——P4
一、实验目的
1.掌握V1Model框架下P4_16的程序结构和基本语法
2.能够运用 P4 进行简单数据平面编程
二、实验环境
1.下载虚拟机软件Oracle VisualBox或VMware;
2.在虚拟机中安装Ubuntu 16.04 Desktop amd64,并安装完整Mininet和P4开发环境;
3.提供P4镜像P4-Suite2018.ova,提取码:egwf
三、实验要求
学习P4官方示例教程,链接:https://github.com/p4lang/tutorials,了解P4-16版本的基本语法、基于V1Model的P4代码结构,完成如下练习:
(一)基本要求
熟悉使用P4实现交换机IPv4的基本转发原理,编写P4程序,在下面的拓扑中实现IPV4 隧道转发。
进入/P4/tutorials/exercises/basic_tunnel
,打开basic_tunnel.P4,编辑补全代码
make run
运行
xterm h1 h2 h3
./receive.py
./send.py 10.0.2.2 "very cool"
./send.py 10.0.3.3 "very 666"
从上面操作可以看出,没有采用隧道转发,h1向h2发送消息,h3接收不到,h1向h3发送消息,h2同样接收不到
下面采用隧道转发,./send.py 10.0.3.3 "102192122" --dst_id 2
./send.py 10.0.2.2 "student 102192122" --dst_id 3
从上面操作得知,采用隧道转发后,通信是不再根据ip进行发送消息,而是根据指定的 dst_id 进行转发。
四.个人总结
这次实验在阅读P4文档时虽然有谷歌翻译,但是编写补全代码时还是很入手,主要还是基础太差,很多代码看不懂,阅读效率低下,参考了同学的代码,才编写出来,现在非常理解老师上课说的,要理解p4的原理,实验操作部分非常简单,但是编写补全代码就是写不来。在后面小组做的负载均衡大作业,尽可能多理解学习P4,用P4额外的进行一次负载均衡,加油。