掌握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
,当然直接双击更改应该也没有问题make run
运行,启动mininetpingall:
xterm h1 h2 h3
./receive.py
,启动服务器以接收消息
./send.py 10.0.2.2 "102192111"
,此时只是普通的转发可以看到,在没有采用隧道转发的情况下,由h1向h2发送消息,h2中输出“102192111”,h3却没有收到任何消息。
./send.py 10.0.3.3 "102192111" --dst_id 2
可以看到,尽管是通过IP:10.0.3.3
向h3发送消息了,但是由于在后面添加了隧道转发,所以消息通过--dst_id
转发向了h2,而h3却没有收到消息。这说明尽管IP改变了,但是却通过隧道转发,将消息准确发向隧道转发所属的IP。
make run
,然后出错了,还好有同学已经提前填坑,只要把mark_to_drop()
括号里面的删掉就好了。删掉以后再运行就没有问题了。