Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Weired TCP retransmission

My question is why a TCP flow make a re-transmission when a network has enough link bandwidth.

For finding a cause, I used a wireshark. I got the below captured at a host side (10.0.0.1)

25434   50.968633785    10.0.0.1    10.0.0.2    TCP 33370   42848 → 50004 [ACK] Seq=14063654 Ack=1 Win=29696 Len=33304 TSval=290016 TSecr=290011
25435   50.968637512    10.0.0.1    10.0.0.2    TCP 31274   42848 → 50004 [PSH, ACK] Seq=14096958 Ack=1 Win=29696 Len=31208 TSval=290016 TSecr=290011
25492   50.977183364    10.0.0.1    10.0.0.2    TCP 866 [TCP Retransmission] 42848 → 50004 [PSH, ACK] Seq=14127366 Ack=1 Win=29696 Len=800 TSval=290019 TSecr=290011
25513   50.979382486    10.0.0.2    10.0.0.1    TCP 66  50004 → 42848 [ACK] Seq=1 Ack=14096958 Win=16776192 Len=0 TSval=290018 TSecr=290016
25514   50.979383087    10.0.0.2    10.0.0.1    TCP 66  50004 → 42848 [ACK] Seq=1 Ack=14128166 Win=16776192 Len=0 TSval=290018 TSecr=290016
25543   50.981453868    10.0.0.2    10.0.0.1    TCP 78  [TCP Dup ACK 25514#1] 50004 → 42848 [ACK] Seq=1 Ack=14128166 Win=16776192 Len=0 TSval=290019 TSecr=290019 SLE=14127366 SRE=14128166

In summary,

(1) [.1 -> .2 ] SEQ = 14063654, ACK = 1, LEN = 33304

(2) [.1 -> .2 ] SEQ = 14096958, ACK = 1, LEN = 31208

(3) [.1 -> .2 ][Retr] SEQ = 14127366, ACK = 1, LEN = 800

(4) [.2 -> .1 ] SEQ = 1, ACK = 14096958, LEN = 0

(5) [.2 -> .1 ] SEQ = 1, ACK = 14128166, LEN = 0

(6) [.2 -> .1 ] SEQ = 1, ACK = 14128166, LEN = 0, SLE =14127366, SRE=14128166

I totally do not know why the re-transmission occur at (3)

I guess the SACK (6) occur due to (3).

As you see, (4), (5) is the ack due to (1), (2) respectively.

I think the re-transmission (3) is not needed.

Could you give me a little hint about the reason of the re-transmission?

Thank you so much and sorry for re-uploading.

Weired TCP retransmission

My question is why a TCP flow make a re-transmission when a network has enough link bandwidth.

For finding a cause, I used a wireshark. I got the below captured at a host side (10.0.0.1)

25434   50.968633785    10.0.0.1    10.0.0.2    TCP 33370   42848 → 50004 [ACK] Seq=14063654 Ack=1 Win=29696 Len=33304 TSval=290016 TSecr=290011
25435   50.968637512    10.0.0.1    10.0.0.2    TCP 31274   42848 → 50004 [PSH, ACK] Seq=14096958 Ack=1 Win=29696 Len=31208 TSval=290016 TSecr=290011
25492   50.977183364    10.0.0.1    10.0.0.2    TCP 866 [TCP Retransmission] 42848 → 50004 [PSH, ACK] Seq=14127366 Ack=1 Win=29696 Len=800 TSval=290019 TSecr=290011
25513   50.979382486    10.0.0.2    10.0.0.1    TCP 66  50004 → 42848 [ACK] Seq=1 Ack=14096958 Win=16776192 Len=0 TSval=290018 TSecr=290016
25514   50.979383087    10.0.0.2    10.0.0.1    TCP 66  50004 → 42848 [ACK] Seq=1 Ack=14128166 Win=16776192 Len=0 TSval=290018 TSecr=290016
25543   50.981453868    10.0.0.2    10.0.0.1    TCP 78  [TCP Dup ACK 25514#1] 50004 → 42848 [ACK] Seq=1 Ack=14128166 Win=16776192 Len=0 TSval=290019 TSecr=290019 SLE=14127366 SRE=14128166

In summary,

(1) [.1 -> .2 ] SEQ = 14063654, ACK = 1, LEN = 33304

(2) [.1 -> .2 ] SEQ = 14096958, ACK = 1, LEN = 31208

(3) [.1 -> .2 ][Retr] SEQ = 14127366, ACK = 1, LEN = 800

(4) [.2 -> .1 ] SEQ = 1, ACK = 14096958, LEN = 0

(5) [.2 -> .1 ] SEQ = 1, ACK = 14128166, LEN = 0

(6) [.2 -> .1 ] SEQ = 1, ACK = 14128166, LEN = 0, SLE =14127366, SRE=14128166

I totally do not know why the re-transmission occur at (3)

I guess the SACK (6) occur due to (3).

As you see, (4), (5) is the ack due to (1), (2) respectively.

I think the re-transmission (3) is not needed.

Could you give me a little hint about the reason of the re-transmission?

Thank you so much and sorry for re-uploading.