实现IPV4 隧道转发
补充basic_tunnel代码
相关代码可在这里查看
make run
使用mininet命令打开h1,h2终端
xterm h1 h2
在h2中选择接收数据,h1中选择发送数据
./receive.py
./send.py 10.0.2.2 "it's cool"
接着,修改发送目的地址,且额外加上隧道
./send.py 10.0.3.3 "it's really cool" --dst_id 2
可观察到h2收到消息,因为编程中设置的是有隧道时候一定走隧道
进阶任务
补充mycontroller代码,代码可在这里看
启动网络
make
尝试h1 ping h2和pingall,因为交换机没有规则,所有不能ping成功
打开另外一个终端,输入命令打开控制器,可以看到每两秒打印一次隧道入口和出口计数器
cd ~/tutorials/exercises/p4runtime
./mycontroller.py
在第一个终端再次尝试ping命令,发现ping通,并且终端2计数器发生变化增加5
h1 ping -c 5 h2
个人心得
之前make run一直报错,于是去官网copy了一下源代码,但还是报错。 make run 时会出现 mark_to_drop: Passing 1 arguments when 0 expected 的报错。后来查看同学的博客,发现只需要把参数去掉就可以了。实验过程由于都有源代码,其实run起来很简单,但是如果想要真正了解p4,就需要阅读源代码,了解其解析过程等。学会自己编写p4程序。