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

  • 1、编写补充basic_tunnel.p4中的代码并运行:
    进入basic_tunnel.p4:/P4/tutorials/exercises/basic_tunnel,当然直接双击更改应该也没有问题
    补充代码:直接在官网找就好了
  • 2、make run运行,启动mininet

pingall:

  • 3、实现基本转发原理,以及IPV4隧道转发
    打开终端,xterm h1 h2 h3
    在 h2、h3 中输入./receive.py,启动服务器以接收消息
    • 1)实现基本转发原理
      在 h1 中输入./send.py 10.0.2.2 "102192111",此时只是普通的转发

可以看到,在没有采用隧道转发的情况下,由h1向h2发送消息,h2中输出“102192111”,h3却没有收到任何消息。

  • 2)实现IPV4隧道转发
    在h1处输入:./send.py 10.0.3.3 "102192111" --dst_id 2

可以看到,尽管是通过IP:10.0.3.3向h3发送消息了,但是由于在后面添加了隧道转发,所以消息通过--dst_id转发向了h2,而h3却没有收到消息。这说明尽管IP改变了,但是却通过隧道转发,将消息准确发向隧道转发所属的IP。

四、个人总结

  • 实验难度:适中
  • 实验过程遇到的困难及解决办法:
    1、一开始打开basic_tunnel.p4以后,对于要怎么补充是很懵的,后面仔细看了一下,有些地方是有注释让我们补充代码的,于是便去老师给的网站找,着实找了好一会。
    2、补充完代码以后,进行make run,然后出错了,还好有同学已经提前填坑,只要把mark_to_drop() 括号里面的删掉就好了。删掉以后再运行就没有问题了。
  • 个人感想:通过本次实验,我可以使用P4实现交换机IPv4的基本转发和IPV4 隧道转发,进阶没时间就没做了,后续得空会看一下怎么弄。本次实验中,在进行隧道转发的时候,由于前后IP设置不一样,一开始我对于隧道转发理解的不是很正确,还以为h3也会出现消息,所以也就开了h3的终端查看是否能接收消息,然而运行以后并没有,还以为是我有问题,之后重新思考了一下,确实是这样的。
    总之这次实验让我明白了P4在转发上的运用,隧道转发理解上感觉还不是很深入,不明白搞这个到底有啥子用,一开始感觉可能是为了避免前面IP输错?后面查了一下明白隧道技术的作用是:为了将数据流强制送到特定的地址;隐藏私有的网络地址;在IP网上传递非IP数据包;提供数据安全支持。也了解到隧道是一种类似于点到点的连接,这种方式能够使来自许多信息源的网络业务在同一个基础设施中通过不同的隧道进行传输。确实挺有用的。
posted @ 2021-11-02 19:51  你^看不见我  阅读(87)  评论(0编辑  收藏  举报