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

2021/11/2 22:40:24

本文主要是介绍实验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运行,并启动mininet

  • 输入pingall测试连通性

  • 输入xterm h1 h2 h3打开主机模拟终端

没有采用隧道转发时

  • 在h2终端下输入./receive.py
  • 在h1终端下输入./send.py 10.0.2.2 "031902335 h1 to h2",没有采用隧道转发,h1向h2发送消息,h3无法收到

  • 在h3终端下输入./receive.py
  • 在h1终端下输入./send.py 10.0.3.3 "031902335 h1 to h3",没有采用隧道转发,h1向h3发送消息,h2无法收到

采用隧道转发时

  • 在h1终端下输入./send.py 10.0.2.2 "031902335 hi 1-2" --dst_id 2,采用隧道转发,h2收到消息

  • 在h1终端下输入./send.py 10.0.3.3 "031902335 hi 1-3" --dst_id 2,采用隧道转发,虽然IP改变,但是经过隧道转发,交换机仍然将该报文发送给h2

三、个人总结

  • 实验难度:难

  • 实验过程遇到的困难及解决办法:

    • 导入镜像后,发现虚拟机页面很小,而且也不能粘贴代码,查询资料后才知道要安装VMware Tools,安装后得以解决。
    • 在补全代码上遇到了困难,通过翻找官方文档、查询资料、询问同学,才编写出代码。查看github源码时一开始还不太理解,后来发现,源码中有todo的地方就是我要加入代码的地方,并且通过readme可以了解如何操作运行。
    • 补全代码后输入make run命令报错,查询资料和通过参考同学博客的解决问题部分发现,应该要修改P4 程序,使调用 mark_to_drop()函数 时不携带参数,修改后能成功运行。
  • 个人感想:

本次实验最难的部分就是代码编写,查看官方代码时又是通过翻译和英文结合才能勉强理解其中的步骤和含义,通过本次实验,学习老师给出的教程了解P4-16版本的基本语法、基于V1Model的P4代码结构后,对p4有了更深的了解,这次实验只涉及到了p4的一部分,所以对p4的学习还不够深,还有很多地方要了解学习。通过这几次实验,对mininet的使用已经很熟练了,也提高了查看英文文档,编写代码的能力,学到了很多知识。



这篇关于实验8:数据平面可编程实践——P4的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程