P4交换机:实现基本转发
P4语言项目地址 https://github.com/p4lang
在github这个项目最开始的说明里,有两种配置P4的方法,一种是自己配,我没配出来,许多apt-get文件无法下载更新;另一种是直接用斯坦福的一个现成的虚拟机,下载镜像后导入virtualbox。推荐使用第二种方法,就是使用现成虚拟机这个方法。
不好好看readme,让我在方法一花了太多时间,没有发现这是二选一的,只是在闷着头做。
虚拟机导入后,home目录下应该有现成的tutorials文件夹(我忘了是一开始就有还是后来我从github上又下载的了),包含P4的介绍和基本教程,但即便是基本教程也不好懂的。之后可以按照readme一步步操作。
- 进入tutorials/exercises/basic/,执行make run,这会编译该目录下的basic.p4,成功编译完之后,进入mininet虚拟环境,建立了一个虚拟的交换机-主机网络。
- 接下来应该h1 ping h2了,但是发现ping不通。一开始还以为是配置的问题,可能是环境没配好,但是后来发现并不是,而只是因为这是一个训练,作者想让我们自己实现一些P4中的功能模块,所以只给了个半成品,自然ping不通。**但是,作者同样提供了答案。在exercise/solution里面。**用这个solution中的另一个basic.p4替换掉原先的basic.p4,make clean之后再次make run,就能ping通了。
- 上面这是取巧。其实,我们要实现原先的basic中标注为todo的每一个功能模块,最后形成整个程序,使得一开始的ping能够ping通。
看到ping不通我就慌了,没发现原因就在这一部分的最后一句。去网上查了一堆与这个无关的解决方法,都没什么用,浪费了太多时间。这再次说明了好好看readme的重要性!