天天看点

实验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代码结构,完成如下练习:

实验8:数据平面可编程实践——P4

进入<code>/P4/tutorials/exercises/basic_tunnel</code>,打开basic_tunnel.P4,编辑补全代码

实验8:数据平面可编程实践——P4

<code>make run</code>运行

<code>xterm h1 h2 h3</code>

<code>./receive.py</code>

<code>./send.py 10.0.2.2 "very cool"</code>

实验8:数据平面可编程实践——P4

<code>./send.py 10.0.3.3 "very 666"</code>

实验8:数据平面可编程实践——P4

从上面操作可以看出,没有采用隧道转发,h1向h2发送消息,h3接收不到,h1向h3发送消息,h2同样接收不到

下面采用隧道转发,<code>./send.py 10.0.3.3 "102192122" --dst_id 2</code>

实验8:数据平面可编程实践——P4

<code>./send.py 10.0.2.2 "student 102192122" --dst_id 3</code>

实验8:数据平面可编程实践——P4

从上面操作得知,采用隧道转发后,通信是不再根据ip进行发送消息,而是根据指定的 dst_id 进行转发。

实验8:数据平面可编程实践——P4

这次实验在阅读P4文档时虽然有谷歌翻译,但是编写补全代码时还是很入手,主要还是基础太差,很多代码看不懂,阅读效率低下,参考了同学的代码,才编写出来,现在非常理解老师上课说的,要理解p4的原理,实验操作部分非常简单,但是编写补全代码就是写不来。在后面小组做的负载均衡大作业,尽可能多理解学习P4,用P4额外的进行一次负载均衡,加油。

实验8:数据平面可编程实践——P4