实验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 隧道转发。


  • 首先进入/P4/tutorials/exercises/basic_tunnel

  • 在basic_tunnel.p4中补全代码(代码不再赘述),make run运行,之后可以看到启动mininet





  • 输入xterm h1 h2,启动命令行
  • 在h2中运行./receive.py



在h1中输入./send.py 10.0.2.2 "i am 031902519",h2接收到h1的消息,此时没有采用隧道转发



使用隧道进行测试,在h1中发送消息给h2



结论:隧道通信时不再根据 IP 报头进行路由,而是根据 mytunnel 标头指定的 dst_id 进行转发

四、个人总结


实验难度总结:不能说难,只能说完全不明白,但是最后也成功完成实验,得到收获。首先5个多g的p4环境下载起来就令我头疼,其次是对p4缺少了解,国内的资料又太少,只能去官网的英文实例教程了解个大概,但是看起来实在太过复杂。最后又去老师给的github下边按照作者的思路进行练习,才勉强能够理解一点p4编程知识。最后是编写basic_tunnel.p4的代码,更让我不明所以然,最后也是全网风暴了很久加上询问同学,才勉强编写出代码,并且运行成功,得到实验结果。

遇到的问题是代码编写的时候,函数传参数问题,参数传递错误导致无法make run。通过询问同学完美解决。

posted @ 2021-11-02 15:58  朝如青丝暮成雪6  阅读(86)  评论(0编辑  收藏  举报