Is it possible to re-transmit only the last packet at TCP flow?
I try to understand the TCP behavior, especially re-transmission.
I did a small experiment and find the curious thing.
The only last packet is re-transmitted. Why do this happen?
I think if the last packet is time-out, then the other packets have to be time-out because All packets in the flow have same RTT and RTO.
At first, I think it is due to delayed ack
. Therefore, I did a same experiment with setsockopt
TCP_QUICKACK. But I saw the same phenomenon. ( But I am not sure yet, that the cause of this is not delayed ack
. )
Could you give me a little help? Thank you for reading :)
For example,
[1] H1->H2 send a 1500 bytes packet
[2] H1->H2 send a 1500 bytes packet
[3] H1->H2 send a 1500 bytes packet
...
[n] H1->H2 send a 800 bytes packet [the last packet]
[n+1] H1->H2 re-send a 800 bytes packet [the last packet]
[n+2] H2->H1 send an ACK.
[the raw data from wireshark
]
1735203 51.249349738 10.0.0.1 10.0.0.2 TCP 1514 35250 → 50021
[ACK] Seq=16124342 Ack=1 Win=58 Len=1448 TSval=902298 TSecr=902296
1735204 51.249349999 10.0.0.1 10.0.0.2 TCP 1514 35250 → 50021
[ACK] Seq=16125790 Ack=1 Win=58 Len=1448 TSval=902298 TSecr=902296
1735205 51.249350340 10.0.0.1 10.0.0.2 TCP 866 35250 → 50021
[PSH, ACK] Seq=16127238 Ack=1 Win=58 Len=800 TSval=902298 TSecr=902296
1735207 51.258283589 10.0.0.1 10.0.0.2 TCP 866
[TCP Retransmission] 35250 → 50021 [PSH, ACK] Seq=16127238
Ack=1 Win=58 Len=800 TSval=902301 TSecr=902298
1735208 51.258288919 10.0.0.2 10.0.0.1 TCP 66 50021 → 35250
[ACK] Seq=1 Ack=16128038 Win=32766 Len=0 TSval=902301 TSecr=902298
EDIT:
* Attached captured files *
https://www.dropbox.com/s/1mtgtv5xof6...
https://www.dropbox.com/s/1mtgtv5xof6...
Each files is the packet captured at each host.
If you don't mind, please check the files.
EDIT EDIT:
* Attached a captured file for understanding *
https://www.dropbox.com/s/fmgkpybhiod...
Thank you for reading!
The PSH flag usually causes the the receiver to ACK to sender. Is your application (very) very time sensitive? There is about 9 ms between the initial transmission and the retransmission if I look at Time column. Maybe H1 was expecting an ACK in less than 9 ms? What is the expected RTO here?
@Spooky I always appreciate your help. Actually the application is
mininet-virtual network
. it is consist of only two hosts and a switch. Therefore, RTT and RTO is very short, I think. If you don't mind, could you check the captured files? https://www.dropbox.com/s/1mtgtv5xof6...https://www.dropbox.com/s/1mtgtv5xof6... Thank you so much.Can you post link for host1_data.pcapng please. Both links are for host2_data.pcapng. Thanks.
@Spooky Sure! I’m sorry. https://www.dropbox.com/s/5i1bgnv33ei...