===== P4 Dokumentation ===== P4 ist ein hardware-abhängiger Sprachstandard. Es existieren verschiedene HW- und Software Targets: * The **BMv2 Simple Switch** target: https://github.com/p4lang/behavioral-model/blob/main/docs/simple_switch.md * **v1model**: https://github.com/p4lang/p4c/blob/main/p4include/v1model.p4 * https://sdn.systemsapproach.org/switch.html - **Software-Defined Networks: A Systems Approach** ==== Language Specificaion: ==== * https://p4.org/p4-spec/docs/PSA.html ==== Tutorials, usw.: ==== * https://hikingandcoding.wordpress.com/2019/09/17/getting-started-with-p4/ - **Getting Started** * https://github.com/p4lang/education/blob/master/GettingStarted.md - **P4 Language Documentation - Getting Started** * https://github.com/nsg-ethz/p4-learning/wiki/ - **P4-Learning Documentation** * https://github.com/jafingerhut/p4-guide * https://github.com/p4lang/tutorials ==== Videos: ==== * https://www.youtube.com/watch?v=pk_s53l6-Ec - **P4 Tutorial (Nanog 75)** * https://www.youtube.com/watch?v=uzOnogVzYdI - **P416 Programming for Intel Tofino Using Intel P4 Studio - Vladimir Gurevich & Andy Fingerhut, Intel** ===== Spezialthemen: ===== ==== Packet-Recirculation ==== //**v1Model - alter Ansatz**// ''clone3'' (vor Dez. 2021): * https://carolinafernandez.github.io/development/2019/08/06/Recurrent-processing-in-P4 * http://csie.nqu.edu.tw/smallko/sdn/p4-clone.htm //**v1Model - neuer Ansatz**// ''clone_preserving_field_list'' (aktuell): * https://github.com/jafingerhut/p4-guide/tree/master/v1model-special-ops ==== Control Plane ==== * https://github.com/nsg-ethz/p4-learning/wiki/Control-Plane * https://github.com/p4lang/tutorials/blob/master/exercises/p4runtime/mycontroller.py ==== MAC Learning Switch ==== * https://2021-cs344.github.io/deliverables/tutorial-exercises/ * https://github.com/2021-cs344/maclearning-exercise/blob/master/maclearning.p4app/l2switch.p4 * https://github.com/nsg-ethz/p4-learning/tree/master/examples/l2_learning