Snabb is a great project. Current P4 support is [0]:
a working lexer and parser for the full p4 language (version 1.1: working
release). There are plenty of unit tests, but I'm sure there are
still bugs (not yet a lot of p4 v1.1 code to test out at this point,
most existing p4 code is v1.0 which has some significant differences).
I posted this after reading the various posts regarding Barefoot Networks exiting stealth⁰.
They've (jointly?) developed P4 and have tooling to compile it down to their new switch silicon, Tofino.
Hard to say exactly how impressive all this is considering how price sensitive and competitive merchant silicon is.
They could, for example, have glued a large FPGA to a huge amount of network I/O and then developed a P4 compiler to their FPGA fabric. Who knows?
P4 seems to be attempting to be a CUDA for switching, except more open. Barefoot, I presume, is betting on producing the most efficient, by whatever metric, hardware implementation of it.
P4 syntax like ACPUL, but ACPUL started up as more generic minimalistic algorithmic language. It can be easy compiled to multiple target VMs & hardware also as P4.
I think how to use ACPUL for Nginx frontend module, but found some issues in network using, like IPv4/v6 addresses formats, strings, etc.
ACPUL is currently using in ACPU iPad IDE (Codea like).
Here is sample code https://github.com/d08ble/acpul-demo/blob/master/dota/contro...
One of the key advantages of p4 is that you don't have to use iptables. Instead p4 would compile down to a binary packet processor in either machine language, something like eBPF, or directly onto a hardware coprocessor on your NIC.
Compiling to iptables would be incredibly slow and miss the advantages. Plus, p4 is more general than iptables so many p4 programs could not be expressed as iptables.
This is true, but I would hope context should be enough to distinguish between the two in most cases. Could get confusing if one were to use P4 for their P4 repo, though.
[+] [-] neopallium|9 years ago|reply
I think a language like P4 will be great for sharing switching logic. I hope we will see re-usable modules written in P4 that can be shared.
0. https://github.com/esbullington/snabbp4 1. https://github.com/snabbco/snabb
[+] [-] mino|9 years ago|reply
0. https://groups.google.com/d/msg/snabb-devel/GkWONJcuF4E/Tc8P...
[+] [-] throwaway000002|9 years ago|reply
They've (jointly?) developed P4 and have tooling to compile it down to their new switch silicon, Tofino.
Hard to say exactly how impressive all this is considering how price sensitive and competitive merchant silicon is.
They could, for example, have glued a large FPGA to a huge amount of network I/O and then developed a P4 compiler to their FPGA fabric. Who knows?
P4 seems to be attempting to be a CUDA for switching, except more open. Barefoot, I presume, is betting on producing the most efficient, by whatever metric, hardware implementation of it.
⁰https://hn.algolia.com/?query=barefoot%20networks&sort=byDat...
[+] [-] d08ble|9 years ago|reply
[+] [-] piotrjurkiewicz|9 years ago|reply
http://services.geant.net/GTS/Resources/PublishingImages/Pag...
http://openvswitch.org/support/slides/p4.pdf
https://github.com/iovisor/bcc/tree/master/src/cc/frontends/...
[+] [-] shanemhansen|9 years ago|reply
[+] [-] readams|9 years ago|reply
Compiling to iptables would be incredibly slow and miss the advantages. Plus, p4 is more general than iptables so many p4 programs could not be expressed as iptables.
[+] [-] signa11|9 years ago|reply
did you mean bpf ?
[+] [-] unsignedqword|9 years ago|reply
[+] [-] tyleo|9 years ago|reply
For those who don't use P4, imagine if this project were named git (though that might not be as fair since git is much more popular).
[+] [-] salmonfamine|9 years ago|reply
[+] [-] malkia|9 years ago|reply