一、实验目的

  1. 掌握V1Model框架下P4_16的程序结构和基本语法;
  2. 能够运用 P4 进行简单数据平面编程。

二、实验环境

  1. 下载虚拟机软件Oracle VisualBox或VMware;
  2. 在虚拟机中安装Ubuntu 16.04 Desktop amd64,并安装完整Mininet和P4开发环境。

三、实验要求

熟悉使用P4实现交换机IPv4的基本转发原理,编写P4程序,在下面的拓扑中实现IPV4 隧道转发。

  1. 完善basic_tunnel.P4代码并运行

  2. 打开h1与h2终端,在h2界面输入 ./receive.py 激活监听状态

  3. 在h1界面输入 ./send.py 10.0.2.2 "P4 is cool!",令h1不通过隧道直接向h2发起通信:

  4. 在h1界面输入 ./send.py 10.0.2.2 "P4 is cool!" --dst_id 2,令h1通过隧道向h2发起通信:

  5. 在h1界面输入 ./send.py 10.0.3.3 "P4 is cool!" --dst_id 2,令h1通过隧道向h2发起通信:

四、个人总结

  1. 实验难度:难,官方的P4基础教程文档由于是纯英文,所以阅读起来稍显吃力。而且在实验过程中需要补充一定量的代码,对于我这个P4小白来讲,还是有不小的挑战。
  2. 实验中遇到的困难及解决办法:
  • 困难1:在h1通过隧道向h2发送信息时,h2处于监听状态下却没有收到任何消息。当h1不通过隧道向h2发送消息时,h2可以正常接收消息。
    解决方法:重新查看了一遍P4代码,发现其中有一处地方的代码没有补充完整,补充完整后,通信正常。
  1. 个人感想:这一次实验又是一次新的挑战。第一次阅读纯英文的官方基础教程,发现自己对于英文文档还是有一定的阅读能力的,算是一个意外之喜(果然要好好学英语)。整个实验下来对于P4_16的程序结构和基本语法还是有点迷糊吧,如果后面有时间的话可以再好好研究一下。8次实验下来不仅对于SDN有了更深刻的认识,对于LINUX系统的使用能力也上了一个新的台阶,总的来说,收获颇丰。
 posted on 2021-11-02 12:58  我的一个空耳朋友  阅读(45)  评论(0编辑  收藏  举报