P4 has gained industry-wide acceptance as a datapath language. Infact big customers who are consumers of xPUs, example MS[7], are requesting that NIC vendors to allow prescription of required datapaths using P4[1]. IOW, P4 is now a big deal.
Running P4 on top of TC has been a subject of many many discussions in the community over the last few years, initially in informal physical and electronic hallways and eventually in physical formal meetings, see [1],[2],[3],[4],[5],[6].
Finally, some action.
In this talk J. Hadi Salim et al will discuss the overall design and architecture of P4TC with a focus on scriptable software and hardware offloaded dataplanes via TC. "Scriptability" as a concept has precedence in the kernel TC architecture in the u32 classifier, the pedit action, etc. P4TC builds on that knowledge and allows templating of a specific datapath. A P4 program when compiled generates tc scripts, which when executed, manifests into the functionally equivalent P4 program in the kernel as is in hardware. In the simple cases a P4 compiler is not needed since the TC scripts can be handcoded. "Scriptability" means ability to manifest _any_ P4 program regardless of functionality into the kernel without compiling any kernel code or loading any binary blobs into the kernel.
P4TC takes advantage of the modularity of the TC architecture and makes very minimal changes to the TC core code while providing all the necessary objects to sufficiently abstract a P4 program.
The first version of the code is expected to be released at the conference during this talk.
References: ----------------
[1] Matty Kadosh, "P4 Offload", TC Workshop, Netdev conference 2.2, 2017 https://legacy.netdevconf.info/2.2/slides/salim-tc-workshop04.pdf
[2] Prem Jonnalagadda, "Mapping tc to P4", TC Workshop, Netdev conference 2.2, 2017 https://legacy.netdevconf.info/2.2/slides/salim-tc-workshop06.pdf
[3] Jamal Hadi Salim, "What P4 Can Learn From Linux Traffic Control", proceedings of ONF 5th P4 Workshop, 2018 https://opennetworking.org/wp-content/uploads/2020/12/Jamal_Salim.pdf
[4] Many speakers, TC P4 workshop, Intel, Santa Clara, 2018 https://files.netdevconf.info/d/5aa8c0ca61ea4e96bb46/
[5] Antonin Bas and R. Krishnamoorthy. "Instrumenting P4 in the Kernel", TC Workshop, Netdev conference 0x12, 2018 https://www.files.netdevconf.info/d/9535fba900604dcd9c93/files/?p=/Instrumen...
[6] Marian Pritsak and Matty Kadosh, "P4 Compiler Backend for TC", Netdev conference 0x13, 2019 https://legacy.netdevconf.info/0x13/session.html?p4-compiler-backend-for-tc
[7] MS Azure DASH https://github.com/Azure/DASH/tree/main/documentation