A method for directing, by a flow distributor, fragmented network packets to a packet engine of a plurality of packet engines, each of the plurality of packet engines executing on a respective core of a plurality of cores in a multi-core system intermediary to a client and a server, the method comprising: a) receiving, from a flow distributor by a packet engine on a first core of the multi-core system intermediary to the client and the server, a client request identifying a first tuple comprising a client internet protocol address, a client port, a server internet protocol address and a server port, the first core selected by the flow distributor to receive the client request based on a hash of the first tuple; b) receiving, by the flow distributor, a plurality of fragments of a response from the server to the client request forwarded to the server by the packet engine on the first core; characterised by: assembling, by the flow distributor, a portion of the plurality of fragments until a header of the response is assembled; c) distributing, by the flow distributor, the plurality of fragments of the response to a second core responsive to a second hash computed by the flow distributor on the source internet protocol address and destination internet protocol address identified by the assembled header of the portion of the plurality of fragments; d) storing, by a second packet engine of the second core, the plurality of fragments and performing one or more fragmentation actions on the plurality of fragments; and e) determining, by a rule of the flow distributor operating on the second core, to direct the plurality of fragments received by the second core to the first core. a) receiving, from a flow distributor by a packet engine on a first core of the multi-core system intermediary to the client and the server, a client request identifying a first tuple comprising a client internet protocol address, a client port, a server internet protocol address and a server port, the first core selected by the flow distributor to receive the client request based on a hash of the first tuple; b) receiving, by the flow distributor, a plurality of fragments of a response from the server to the client request forwarded to the server by the packet engine on the first core; characterised by: assembling, by the flow distributor, a portion of the plurality of fragments until a header of the response is assembled; assembling, by the flow distributor, a portion of the plurality of fragments until a header of the response is assembled; c) distributing, by the flow distributor, the plurality of fragments of the response to a second core responsive to a second hash computed by the flow distributor on the source internet protocol address and destination internet protocol address identified by the assembled header of the portion of the plurality of fragments; d) storing, by a second packet engine of the second core, the plurality of fragments and performing one or more fragmentation actions on the plurality of fragments; and e) determining, by a rule of the flow distributor operating on the second core, to direct the plurality of fragments received by the second core to the first core.