P4

p4-16中对main的执行顺序是怎么样的?


例如p4app的样例simple_router
V1Switch(ParserImpl(), verifyChecksum(), ingress(), egress(), computeChecksum(), DeparserImpl()) main;

这个main的执行顺序跟V1Switch的参数顺序有关系吗?
已邀请:

Cool - SDN&P4程序猿

赞同来自:


你好,像包头实例化过程,以及table ipv4_lpm、action set_dmac的过程,V1Switch里并没有包括,而是按数据平面流程进行的,可参考这个流程图
p4pkt.png

mario_hu - 欲戴王冠必承其重

赞同来自:


@Cool 不好意思,我没有提供源码给你,只是简单的问了问题,样例中用V1Switch实例化了一个main,V1Switch的参数中有 table ipv4_lpm、action set_dmac的过程。
附件是源码,麻烦再帮看看。

Cool - SDN&P4程序猿

赞同来自:


@mario_hu,我刚才修改了V1Switch里参数的顺序,验证了下,参数顺序会影响报文的转发流程,也就是代码执行顺序跟V1Switch的参数顺序有关系

Cool - SDN&P4程序猿

赞同来自:


http://p4.org/wp-content/uploa ... l.pdf

这个教程的79页有讲
Assemble the top-level controls in a
package
◦ Package is defined by the Architecture
■ Represents the set of programmable P4 components
and their interfaces
◦ The name of the package must be main

hanw

赞同来自:


V1Switch的参数是从左到右执行的。

v1model.p4描述了编译器支持的一种架构,一般用户不需要去修改v1model.p4的内容。被修改过的v1model.p4 不保证会被编译器支持。

P4.org Architecture group 正在定义一种更通用的架构,Portable Switch Architecture(PSA),欢迎加入讨论。

https://github.com/p4lang/p4-s ... 6/psa

mario_hu - 欲戴王冠必承其重

赞同来自:


@hanw 那我们编写p4-16的程序是不是都要按照v1model.p4这样的架构,除了v1model.p4这样的架构,目前还有其他的架构吗?

hanw

赞同来自:


目前还有Portable Switch Architecture和Tofino native两个架构,目标是tofino native的架构比v1model有更多的功能,PSA的架构可以被更多的target (FPGA,ASIC,Software)所支持,我们会提供从V1model到其他两个架构的translation。所以你可以按照v1model的架构来写程序,之后compiler会帮助把v1model的程序转换成其他的架构的程序。

mario_hu - 欲戴王冠必承其重

赞同来自:


@hanw 是否是根据不同的compiler会有不同的架构? p4c-bm2-ss只能编译v1mode架构的程序吗? p4c-bm2-ss是否能编译tofino native架构的程序?能否提供一下PSA架构和tofino native架构的文件?

要回复问题请先登录注册