A method of generating a graph data structure for a packet processing system, the method comprising: obtaining a plurality of packet processing rules, each said rule including rule data comprising rule match data indicative of content from one or more header field types to be identified by the packet processing system in order to identify a network application; generating a graph data structure comprising a plurality of graph data objects (601, 603) representing classifier nodes of a packet processing graph, the classifier nodes including a root node and a plurality of leaf nodes, the root node being connected to each of the plurality of leaf nodes through respective corresponding packet processing paths through the graph, wherein each of said graph data objects includes node match data indicative of at least one match to be applied by the respective classifier node, and wherein the node match data of at least one of the graph data objects is derived from at least part of the rule match data in at least one of the packet processing rules; loading said generated graph data structure into memory of a packet data processor; and classifying packet data in accordance with said graph data structure; wherein the method comprises generating the graph data structure by: identifying a first n -type match graph data object which includes node match data indicative of an n -type match corresponding to content from n header field types, where n is an integer value of 1 or more, wherein the node match data included in the first n -type match graph data object is derived from a first packet processing rule of said plurality of packet processing rules; identifying a first ( n + m)-type match graph data object which includes node match data indicative of an ( n+m) -type match corresponding to a combination of content from ( n+m) different header field types, where m is an integer value of 1 or more, wherein the node match data included in the first ( n + m)-type match graph data object is derived from said first packet processing rule; and selecting either the first n -type match graph data object or the first (n+m)-type match graph data object, wherein said selection is performed in a first packet processing path of the graph on the basis of a resulting number of nodes in a second, different, packet processing path of the graph. obtaining a plurality of packet processing rules, each said rule including rule data comprising rule match data indicative of content from one or more header field types to be identified by the packet processing system in order to identify a network application; generating a graph data structure comprising a plurality of graph data objects (601, 603) representing classifier nodes of a packet processing graph, the classifier nodes including a root node and a plurality of leaf nodes, the root node being connected to each of the plurality of leaf nodes through respective corresponding packet processing paths through the graph, wherein each of said graph data objects includes node match data indicative of at least one match to be applied by the respective classifier node, and wherein the node match data of at least one of the graph data objects is derived from at least part of the rule match data in at least one of the packet processing rules; loading said generated graph data structure into memory of a packet data processor; and classifying packet data in accordance with said graph data structure; wherein the method comprises generating the graph data structure by: identifying a first n -type match graph data object which includes node match data indicative of an n -type match corresponding to content from n header field types, where n is an integer value of 1 or more, wherein the node match data included in the first n -type match graph data object is derived from a first packet processing rule of said plurality of packet processing rules; identifying a first ( n + m)-type match graph data object which includes node match data indicative of an ( n+m) -type match corresponding to a combination of content from ( n+m) different header field types, where m is an integer value of 1 or more, wherein the node match data included in the first ( n + m)-type match graph data object is derived from said first packet processing rule; and selecting either the first n -type match graph data object or the first (n+m)-type match graph data object, wherein said selection is performed in a first packet processing path of the graph on the basis of a resulting number of nodes in a second, different, packet processing path of the graph. identifying a first n -type match graph data object which includes node match data indicative of an n -type match corresponding to content from n header field types, where n is an integer value of 1 or more, wherein the node match data included in the first n -type match graph data object is derived from a first packet processing rule of said plurality of packet processing rules; identifying a first ( n + m)-type match graph data object which includes node match data indicative of an ( n+m) -type match corresponding to a combination of content from ( n+m) different header field types, where m is an integer value of 1 or more, wherein the node match data included in the first ( n + m)-type match graph data object is derived from said first packet processing rule; and selecting either the first n -type match graph data object or the first (n+m)-type match graph data object, wherein said selection is performed in a first packet processing path of the graph on the basis of a resulting number of nodes in a second, different, packet processing path of the graph.