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