Hello, I'm developing a TCP reassembler of some sorts based on DPDK. Currently 
I'm working on TCP segments retransmission (because of time out).

To do so, I've developed the next idea: how about to keep every outgoing packet 
in a queue and remove them from there when the corresponding ACK has arrived. 
So the plan is simple: build a packet, push it into the queue, send it, wait 
for the ACK, remove the packet from the queue. If the retransmission time is 
out, retransmit the packet.

But this simple plan seems to be impractible, for DPDK frees mbufs when sending 
packets. So I really have to just copy all the packets before sending them, 
which is not a good idea, of course.

So I've thought that it could be nice to have an opportunity sometimes to send 
packets without actually freeing mbufs so that we could retransmit them if we 
have such a need.

P.S. Right now my actual plan is to go to the depths of DPDK, find the sending 
packets function and modify it a bit so it doesn't free the memory. But I have 
a suspision that it won't end well :)

P.S.S. Or maybe I'm missing something and there's an opportunity to send 
packets without freeing the memory after all?


Reply via email to