Find what you are looking for at every stage of learning about P4 from beginner to expert. This page will help you navigate the available resources which are primarily located on GitHub and YouTube.
You also have the opportunity to learn by interacting with the P4 community on the P4 forum, slack, and email lists.
The education working group has put together a Getting Started page that curates the links for tutorials, hardware compatibility, videos, and code samples.
A good starting point is our rich set of tutorials. The tutorials are developed as hands-on labs, and contain everything to get you experimenting in P4: an overview of the language, sets of exercises that increase in complexity, and a virtual machine pre-installed with all the software so you can jump directly into data plane programming.
Discourse is an excellent place to learn P4 terminology. For example, see this thread on bmv2, v1model, and P4_16. The P4 Specification also has a useful section on terminology.
Information about training and consulting service providers in the P4 Ecosystem are found here.
Graduate classes in P4 are available at a number of universities, including Stanford, Cambridge, Karlstads, and Lisbon. Learn about these classes and view materials here. Professors – you are invited to add the classes you teach to this page.
Some of the blogs on this website provide learning opportunities for beginners (e.g., Getting Started page), while other topics and new applications will resonate with experienced P4 programmers.
Please feel free to browse our github repositories. All our code is released under the Apache 2.0 license.
Here are some of the repositories you may be interested in:
control ingress () {
table routing {
key = { hdr.ipv4.dstAddr : lpm; }
actions = { drop; route; }
size = 2048;
}
apply {
routing.apply();
}
}