FYI, just did some fixes around TCP_QUICKACK. Also, there are four transactions per one bounceback, two writes and two TCP acks. Quickack is enabled by default.
bounceback-hold can be used to verify that quick ack is working, by comparing the RTT with the bounceback time, and using --bounceback-no-quickack to disable.
I'll play around with 10G a bit. There is a netgear switch too though doubtful this would drive a worst case to over 1 ms.
[rjmcmahon@ryzen3950 iperf2-code]$ src/iperf -c 192.168.1.87 --bounceback -**-bounceback-no-quickack --bounceback-hold 10**
------------------------------------------------------------
Client connecting to 192.168.1.87, TCP port 5001 with pid 1586326 (1 flows)
Write buffer size: 100 Byte
Bursting: 100 Byte writes 10 times every 1.00 second(s)
Bounce-back test (size= 100 Byte) (server hold req=10000 usecs)
TOS set to 0x0 and nodelay (Nagle off)
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 1] local 192.168.1.96%enp4s0 port 39380 connected with 192.168.1.87 port 5001 (bb len/hold=100/10000) (sock=3) (icwnd/mss/irtt=14/1448/202) (ct=0.31 ms) on 2022-08-10 11:44:09 (PDT)
[ ID] Interval Transfer Bandwidth BB cnt=avg/min/max/stdev Rtry Cwnd/RTT RPS
[ 1] 0.00-1.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.620/10.357/11.063/0.299 ms 0 14K/3726 us 94 rps
[ 1] 1.00-2.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.858/10.572/11.105/0.220 ms 0 14K/8959 us 92 rps
[ 1] 2.00-3.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.929/10.555/11.425/0.293 ms 0 14K/**10400** us 91 rps
[ 1] 3.00-4.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.854/10.468/11.308/0.337 ms 0 14K/10765 us 92 rps
[ 1] 4.00-5.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.890/10.532/11.170/0.233 ms 0 14K/10828 us 91 rps
[ 1] 5.00-6.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.893/10.558/11.122/0.188 ms 0 14K/10855 us 91 rps
[ 1] 6.00-7.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.793/10.545/11.378/0.275 ms 0 14K/10812 us 92 rps
[ 1] 7.00-8.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.792/10.526/11.128/0.229 ms 0 14K/10746 us 92 rps
[ 1] 8.00-9.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.766/10.456/11.333/0.309 ms 0 14K/10704 us 92 rps
[ 1] 9.00-10.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.927/10.589/11.425/0.292 ms 0 14K/10859 us 91 rps
[ 1] 0.00-10.02 sec 19.5 KBytes 16.0 Kbits/sec 100=10.832/10.357/11.425/0.274 ms 0 14K/10889 us 92 rps
[ 1] 0.00-10.02 sec BB8(f)-PDF: bin(w=100us):cnt(100)=104:2,105:6,106:21,107:12,108:8,109:5,110:8,111:22,112:9,113:1,114:4,115:2 (5.00/95.00/99.7%=105/114/115,Outliers=0,obl/obu=0/0)
[rjmcmahon@ryzen3950 iperf2-code]$ src/iperf -c 192.168.1.87 --bounceback **--bounceback-hold 10**
------------------------------------------------------------
Client connecting to 192.168.1.87, TCP port 5001 with pid 1586369 (1 flows)
Write buffer size: 100 Byte
Bursting: 100 Byte writes 10 times every 1.00 second(s)
Bounce-back test (size= 100 Byte) (server hold req=10000 usecs & tcp_quickack)
TOS set to 0x0 and nodelay (Nagle off)
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 1] local 192.168.1.96%enp4s0 port 39382 connected with 192.168.1.87 port 5001 (bb w/quickack len/hold=100/10000) (sock=3) (qack) (icwnd/mss/irtt=14/1448/295) (ct=0.34 ms) on 2022-08-10 11:44:36 (PDT)
[ ID] Interval Transfer Bandwidth BB cnt=avg/min/max/stdev Rtry Cwnd/RTT RPS
[ 1] 0.00-1.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.822/10.548/11.346/0.282 ms 0 14K/**360 us** 92 rps
[ 1] 1.00-2.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.929/10.506/11.320/0.345 ms 0 14K/425 us 91 rps
[ 1] 2.00-3.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.818/10.470/11.148/0.274 ms 0 14K/510 us 92 rps
[ 1] 3.00-4.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.891/10.567/11.321/0.286 ms 0 14K/658 us 91 rps
[ 1] 4.00-5.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.906/10.442/11.273/0.261 ms 0 14K/670 us 91 rps
[ 1] 5.00-6.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.866/10.509/11.190/0.271 ms 0 14K/629 us 92 rps
[ 1] 6.00-7.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.810/10.435/11.164/0.276 ms 0 14K/547 us 92 rps
[ 1] 7.00-8.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.711/10.435/11.047/0.237 ms 0 14K/492 us 93 rps
[ 1] 8.00-9.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.419/10.373/10.569/0.054 ms 0 14K/234 us 95 rps
[ 1] 9.00-10.00 sec 1.95 KBytes 16.0 Kbits/sec 10=10.407/10.326/10.544/0.056 ms 0 14K/161 us 96 rps
[ 1] 0.00-10.02 sec 19.5 KBytes 16.0 Kbits/sec 100=10.758/10.326/11.346/0.302 ms 0 14K/192 us 92 rps
[ 1] 0.00-10.02 sec BB8(f)-PDF: bin(w=100us):cnt(100)=104:7,105:18,106:19,107:9,108:3,109:4,110:10,111:16,112:7,113:4,114:3 (5.00/95.00/99.7%=104/113/114,Outliers=0,obl/obu=0/0)
Okay thanks anyway. Yes running it on macOS or OpenWrt is useful but since macs can have Ethernet cable, a simple client on iOS would be more useful for Wi-Fi testing. There are some iperf3 apps on the Store but not iPerf2 unfortunately.