A programmable packet data processing system comprising: a reconfigurable packet processing component , the packet processing component when configured including packet processing nodes arranged in a graph structure such that a first packet processing node, after processing a packet, is configured to forward the packet to a selected second packet processing node for further processing in accordance with the graph structure; and a graph configuration component , the graph configuration component being arranged to provide an application programming interface for use by a controller component of the system to configure the packet processing component to perform a set of predefined packet processing functions, the controller component comprising a control plane packet processing function, wherein the graph configuration component is configured, in response to one or more requests, received from the controller component via the application programming interface, to reconfigure the packet processing component by controlling the presence of a node in the graph structure in accordance with a resource type in a set of predefined packet processing resource types, and wherein the packet processing nodes comprise: a user data packet classifier arranged to apply one or more match-action rules in order to forward a user data packet; a control protocol packet classifier arranged to receive packets sent along a no-match path of the user data packet classifier and arranged to apply one or more rules to forward a control protocol packet; and a control plane interface for receiving the forwarded control protocol packet and for transmitting the forwarded control protocol packet to the controller component. a reconfigurable packet processing component , the packet processing component when configured including packet processing nodes arranged in a graph structure such that a first packet processing node, after processing a packet, is configured to forward the packet to a selected second packet processing node for further processing in accordance with the graph structure; and a graph configuration component , the graph configuration component being arranged to provide an application programming interface for use by a controller component of the system to configure the packet processing component to perform a set of predefined packet processing functions, the controller component comprising a control plane packet processing function, wherein the graph configuration component is configured, in response to one or more requests, received from the controller component via the application programming interface, to reconfigure the packet processing component by controlling the presence of a node in the graph structure in accordance with a resource type in a set of predefined packet processing resource types, and wherein the packet processing nodes comprise: a user data packet classifier arranged to apply one or more match-action rules in order to forward a user data packet; a control protocol packet classifier arranged to receive packets sent along a no-match path of the user data packet classifier and arranged to apply one or more rules to forward a control protocol packet; and a control plane interface for receiving the forwarded control protocol packet and for transmitting the forwarded control protocol packet to the controller component. a user data packet classifier arranged to apply one or more match-action rules in order to forward a user data packet; a control protocol packet classifier arranged to receive packets sent along a no-match path of the user data packet classifier and arranged to apply one or more rules to forward a control protocol packet; and a control plane interface for receiving the forwarded control protocol packet and for transmitting the forwarded control protocol packet to the controller component. <EOS>