Just spent 30 mins to read the paper P4: Programming Protocol-Independent Packet Processors . The paper proposes the general interface for programming the logic processing the network packets in OpenFlow switches.
The motivation of the paper is based on the developing trend of OpenFlow protocol: to handle more complex scenario with OpenFlow, they update the protocol time and time again and add more and more fields to the definition of the packets. From OpenFlow 1.0 to 1.4, the number of the supported fields has been increased from 12 to 41.
Obviously, this is not a scalable strategy, instead, it’s just incrementally updating the existing system. Imagine what you are facing is a big software system, incremental update will just bring more and more bugs though they are accompanied with more features. The eventual result is the uncontrollable complexity.
P4, as a programming language, provides an higher-level abstraction over the existing forwarding devices; Programmers do not need to care about whether the underlying OpenFlow switches are from Cisco, Juniper or BigSwitch, as long as the switches support certain set of functionalities. Any programs written with P4 can be translated to the target device by a compiler.
Sounds familiar? Yeah, tens of years ago, we have developed ways to use Programming Languages and Compilers to build higher-level abstract machine on top of various hardwares. We don’t need to care about the CPUs are from Intel or AMD, as long as they support x86.
Networking guys seem to be used to incrementally building things instead of standing on a higher-level to
redefine the problem and solve the problem with the deeper understanding on the scenario they are in.
It is a start for Computer Networks, but, just an old road through which guys from the other areas walked many many years ago.