This document provides an overview of the P4 programming language. P4 is used to define the data plane functionality of programmable forwarding elements like software switches, NICs, routers, and network appliances. It allows defining a packet parser, match-action tables, and the interface between the control and data planes in a target-independent way. The key components of P4 include data declarations for packet headers and metadata, parser programming, packet processing definitions using actions and tables, and control functions. A P4 program defines the data plane functionality, while the P4 compiler generates the API that the target-specific control plane uses to communicate with and configure the data plane.