实验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 隧道转发。
img
1.完善basic_tunnel.P4代码并运行

2.使用xterm h1 h2打开两个终端h1和h2

3.在h2的xterm启动服务器`./receive.py,在没有隧道的情况下,在h1的xterm,发送消息到h2

4.使用隧道进行测试,在 h1 xterm中发送消息到h2

5.使用隧道进行测试,在 h1 xterm中设置./send.py 10.0.3.3 "031902435-2" --dst_id 2

发现数据包在h2,即使该IP地址的h3的地址

四、个人总结

  • 实验难度

    • 适中
  • 实验过程遇到的困难

    • Q1:阅读GitHub上的文件速度较慢

    • A1:使用火狐自带的网站翻译之后,速度加快而且不影响阅读。火狐真的好用,yyds

    • Q2:使用隧道,在h1 xterm向h2发送消息,但是h2无法收到

    • A2:重新检查basic_tunnel.p4文件,发现有一处函数不完整,对照官方文件补充后,h2可以正常收到h1发送的消息。感谢我的一个空耳朋友告诉我这个解决办法,自己还是粗心了一点。

  • 收获

    • 首先学习到了新的知识[/快乐],对于P4_16的程序结构和基本语法有了大致的了解,不过运用起来还是有些不熟练。之后会将进阶内容在琢磨琢磨下。
posted @ 2021-11-02 21:44  八口八  阅读(91)  评论(0编辑  收藏  举报