Someone has started working on P4 support [0] for Snabb Switch [1].<p>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.<p>0. <a href="https://github.com/esbullington/snabbp4" rel="nofollow">https://github.com/esbullington/snabbp4</a>
1. <a href="https://github.com/snabbco/snabb" rel="nofollow">https://github.com/snabbco/snabb</a>
I posted this after reading the various posts regarding Barefoot Networks exiting stealth⁰.<p>They've (jointly?) developed P4 and have tooling to compile it down to their new switch silicon, Tofino.<p>Hard to say exactly how impressive all this is considering how price sensitive and competitive merchant silicon is.<p>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?<p>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.<p>⁰<a href="https://hn.algolia.com/?query=barefoot%20networks&sort=byDate&prefix=false&page=0&dateRange=all&type=story" rel="nofollow">https://hn.algolia.com/?query=barefoot%20networks&sort=byDat...</a>
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 <a href="https://github.com/d08ble/acpul-demo/blob/master/dota/controls/joystick.acpul" rel="nofollow">https://github.com/d08ble/acpul-demo/blob/master/dota/contro...</a>
Very interesting possibility is compilation of P4 into BPF:<p><a href="http://services.geant.net/GTS/Resources/PublishingImages/Pages/Workshops/Simon%20Jouet%20-%20Programmable%20Dataplane.pdf" rel="nofollow">http://services.geant.net/GTS/Resources/PublishingImages/Pag...</a><p><a href="http://openvswitch.org/support/slides/p4.pdf" rel="nofollow">http://openvswitch.org/support/slides/p4.pdf</a><p><a href="https://github.com/iovisor/bcc/tree/master/src/cc/frontends/p4" rel="nofollow">https://github.com/iovisor/bcc/tree/master/src/cc/frontends/...</a>