A method implemented by a switch in a Software Defined Networking, SDN, network to enable packet tracing, where the switch includes a packet processing pipeline that includes a plurality of flow tables, the method comprising: receiving a packet; determining, at a first flow table of the packet processing pipeline, whether the packet is a trace packet that was recirculated based on content of a first field associated with the packet; wherein, in response to the determination that the packet is a trace packet that was recirculated, the method further comprises: setting a first field associated with the packet to indicate that tracing is disabled for the packet, and setting a second field associated with the packet to indicate that tracing is enabled for the packet, determining a flow table of the packet processing pipeline from which the packet was recirculated, and directing the packet to the flow table from which the packet was recirculated; and determining, at the first flow table, whether the packet is to be traced through the packet processing pipeline; wherein, in response to the determination that the packet is to be traced through the packet processing pipeline, the method further comprises: creating a copy of the packet, setting a first field associated with the copy of the packet to indicate that tracing is enabled for the copy of the packet, outputting the copy of the packet to a recirculate port, and directing the packet to a subsequent flow table of the packet processing pipeline. receiving a packet; determining, at a first flow table of the packet processing pipeline, whether the packet is a trace packet that was recirculated based on content of a first field associated with the packet; wherein, in response to the determination that the packet is a trace packet that was recirculated, the method further comprises: setting a first field associated with the packet to indicate that tracing is disabled for the packet, and setting a second field associated with the packet to indicate that tracing is enabled for the packet, determining a flow table of the packet processing pipeline from which the packet was recirculated, and directing the packet to the flow table from which the packet was recirculated; and setting a first field associated with the packet to indicate that tracing is disabled for the packet, and setting a second field associated with the packet to indicate that tracing is enabled for the packet, determining a flow table of the packet processing pipeline from which the packet was recirculated, and directing the packet to the flow table from which the packet was recirculated; and determining, at the first flow table, whether the packet is to be traced through the packet processing pipeline; wherein, in response to the determination that the packet is to be traced through the packet processing pipeline, the method further comprises: creating a copy of the packet, setting a first field associated with the copy of the packet to indicate that tracing is enabled for the copy of the packet, outputting the copy of the packet to a recirculate port, and directing the packet to a subsequent flow table of the packet processing pipeline.