DUP ACKs sent with no reason

Youssef GHORBAL youssef.ghorbal at pasteur.fr
Thu Dec 27 18:34:08 UTC 2018


Hello,

	I'm having an issue with a FreeBSD 12 based system, sending DUP ACKs with no obvisous reason during an iperf3 test.
	The test consists of :
	- FreeBSD 12 server box running ./iperf3 -s -p 55556
	- Linux CentOS 7 client box running ./iperf3 --cport 3333 -t 60 -Rc 192.168.133.2 -p 55556

	Server side iperf is reporting huge packet loss:

-----------------------------------------------------------
Server listening on 55556
-----------------------------------------------------------
Accepted connection from 192.168.131.140, port 60244
[  5] local 192.168.133.2 port 55556 connected to 192.168.131.140 port 3333
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  1.00 GBytes  8.60 Gbits/sec    0    472 KBytes
[  5]   1.00-2.00   sec  1.09 GBytes  9.39 Gbits/sec    0    676 KBytes
[  5]   2.00-3.00   sec  1.09 GBytes  9.39 Gbits/sec    0    820 KBytes
[  5]   3.00-4.00   sec  1.09 GBytes  9.39 Gbits/sec    0    954 KBytes
[  5]   4.00-5.00   sec  1.04 GBytes  8.98 Gbits/sec    7    107 KBytes
[  5]   5.00-6.00   sec   870 MBytes  7.30 Gbits/sec   24    182 KBytes
[  5]   6.00-7.00   sec   831 MBytes  6.97 Gbits/sec   45   84.8 KBytes
[  5]   7.00-8.00   sec   796 MBytes  6.67 Gbits/sec   43   94.7 KBytes
[  5]   8.00-9.00   sec  1.05 GBytes  9.02 Gbits/sec    9    115 KBytes
[  5]   9.00-10.00  sec   913 MBytes  7.66 Gbits/sec   40   83.4 KBytes
[  5]   9.00-10.00  sec   913 MBytes  7.66 Gbits/sec   40   83.4 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  9.96 GBytes  8.55 Gbits/sec  168             sender
iperf3: the client has terminated

	I've captured pcaps[1][2] on both sides that show that somehow the client is receiving packets out of order or sometimes missing segments, to which it reacts with selective ACKs. As far I can tell this is "normal" behaviour and clearly shows some issues on the path between those two hosts but that's not my main concern for now.
	However, what I can't explain is the huge amount a TCP DUP ACKs sent by the FreeBSD server for no obvious reason. In this setup client is connecting to server and due to -R option, data is flowing from server to client. The only data I see coming from the client is at test initialisation where client sends one small data packet, that gets ACKed quickly afterword by the way.
	
	What can explain those DUP ACKs sent by the FreeBSD host? (DUP ACKs sent by the client are "normal" in a way to report missing packet loss and carry Selective ACKs, but those sent by the BSD stack are hard to explain)

	How can I push the investigation further ?

Youssef Ghorbal

[1] client side pcap : https://cp.sync.com/dl/44f5d34b0#h8bb5gda-frp78vyt-yapws5gx-kidhq4mb
[2] server side pcap : https://cp.sync.com/dl/323677c10#gh3gy88t-ge3gyyxn-hka5ya6q-q6ydp5fn


More information about the freebsd-net mailing list