Advertisement

P4语言学习(1)——basic实验

阅读量:

在查看拓扑结构时,请访问topology.json文件和pod-topo.png图片。通过这些资源,您能够了解要构建的网络设备包括4台主机和4台交换机,并掌握它们之间的连接关系(如下图所示)。需要注意的是,在定义switches参数时,默认会加载"switches.sN-runtime.json"流表项文件以配置交换机功能。

使用终端工具打开名为basic的文件,并运行make run命令即可生成四台交换机:s1, s2, s3, s4;以及四台主机:h1, h2, h3, h4;

接下来尝试执行"h1 ping h2"和"pingall"操作,不出意外全部失败。

接着执行"make stop"和"make clean"操作,退出并清理拓扑

如下所示,这里缺失了对数据包解析的代码

位于注释区域执行对数据包的解析处理,并基于底层协议的相关字段信息决定如何解析上层协议的状态信息。

可以看到转发的几个步骤也有所缺失,我们需要自己补齐

从参数中获取输出端口,并将数据包中的源字段改为目标字段;接着将目标字段重新配置为新的控制面,并将其TTL值减一。

根据注释可知这里缺少一个判断语句

只有当IPV4的header有效时才执行IPV4_lpm.apply()

如下所示,缺少对报头的处理

调用Emit函数,在此条件下将按照顺序整合到数据包中;特别指出的是这两个操作步骤之间的执行顺序需要特别留意

重新执行一次上面的操作,可以看到如下图所示四台主机成功ping通

最后依然是把拓扑清理

全部评论 (0)

还没有任何评论哟~