Hi, I am seeing strange behavior where rte_pktmbuf_clone is not giving desired result. Here is the detailed info, in my dpdk application , once I received the packet info in mbuf, I need to send the same packet to two destinations, the sequence I should follow is, (i) First, Tunnel the packet to one of desired destination, so I created the shallow copy using rte_pktmbuf_clone, had another mbuf for Outer IP Header for IPinIP tunnel and sent to NIC. (ii) Second, I need to modify the source and destination ip addresses of the packet and send out. The issue, I am seeing is the tunneled packet (clone) have modified IP addresses from (ii). Code flow: Main() { Struct rte_mbuf *org_mbuf; //lets assume this org_mbuf is holding the packet info. (i) Towards First destination. Build_tunnel_packet(org_mbuf) { - Struct rte_mbuf *clone_buffer; - Allocate a clone buffer Clone_buffer = rte_pktmbuf_clone(org_mbuf, clone_pool); - Constructed IPinIP info in another mbuf and prepended in clone_buffer - Call rte_pktmbuf_tx_burst(); } (ii) Towards another destination. Modify_l3_and_route(org_mbuf) { - Modify L3 information of 'org_mbuf' - and Call rte_pkt_mbuf_tx_burst(); } } [cid:image003.jpg@01D916C9.1A4FB850] In the above screenshot, the packet 37 should tunneled as it is by adding the outer ip layer(i.e 182.16.146.*), but the inner L3 information also getting changed (which I am modifying in the second step) for some packets. Using, rte_pktmbuf_copy(), solving the issue, but in expense of extra mbuf. Please, help me in understanding what is wrong in the case of rte_pktmbuf_clone()? Regards, Nagendra