<div dir="ltr">FYI, I've added a <a href="https://iperf2.sourceforge.io/iperf-manpage.html">--bounceback option to iperf 2</a>.  One can use the BB cnt as analogous for messages per unit time. It by default turns on TCP_QUICKACK so one can compare the TCP RTT vs the app level bounceback (-i is recommended for tcpinfo sampling.) There is an option to add a full duplex TCP stream to the same dest along with the bounceback traffic.  If you use --trip-times you'll get a histogram (BB8) of the one way delays too (clocks must be sync'ed and assumed so)<br><br>This is designed to be a simple socket level test. Please do feel free to comment and suggest improvements.<br><br><blockquote style="margin:0 0 0 40px;border:none;padding:0px">[rjmcmahon@ryzen3950 iperf2-code]$ src/iperf - <a href="http://hidden.com">hidden.com</a> --bounceback -t 10 --trip-times -e --hide-ips<br>------------------------------------------------------------<br>Client connecting to (**hidden**), TCP port 5001 with pid 240864 (1 flows)<br>Write buffer size:  100 Byte<br>Bounce-back test (size= 100 Byte) (hold=0 usecs)<br>TOS set to 0x0 and nodelay (Nagle off)<br>TCP window size: 85.0 KByte (default)<br>------------------------------------------------------------<br>[  1] local *.*.*.133%enp4s0 port 55634 connected with *.*.*.123 port 5001 (MSS=1448) (bb len/hold=100/0) (trip-times) (sock=3) (irtt/icwnd=14469/14) (ct=14.52 ms) on 2021-12-19 17:29:23 (PST)<br>[ ID] Interval        Transfer    Bandwidth         <b>BB cnt</b>=avg/min/max/stdev         Rtry  Cwnd/RTT<br>[  1] 0.00-10.03 sec   178 KBytes   145 Kbits/sec    <b>911</b>=10.982/6.187/21.876/1.883 ms    0   14K/13160 us<br>[  1] 0.00-10.03 sec  OWD Delays (ms) Cnt=911  To=5.222/0.383/16.277/1.875 From=5.760/5.500/6.091/0.092 Asymmetry=0.538/-10.678/5.421/1.871<br>[  1] 0.00-10.03 sec BB8(f)-PDF: bin(w=100us):cnt(911)=62:1,79:1,97:13,98:23,99:65,100:92,101:115,102:135,103:85,104:70,105:43,106:30,107:17,108:15,109:11,110:6,111:3,112:4,113:5,114:5,115:5,116:2,117:4,118:2,119:4,120:5,121:4,122:2,123:3,124:2,125:1,126:3,127:3,128:1,131:1,132:1,133:7,134:1,135:4,138:6,139:6,141:4,142:2,143:4,144:2,145:7,146:6,147:5,148:6,149:6,150:12,151:1,153:3,154:2,155:1,156:4,157:6,158:1,159:4,160:2,162:3,163:2,165:2,166:2,167:3,168:1,169:1,171:1,172:1,177:2,179:1,183:1,187:1,188:1,191:2,197:1,208:1,219:1 (5.00/95.00/99.7%=99/154/197,Outliers=0,obl/obu=0/0) (0.000 ms/0.0)</blockquote><br><br><blockquote style="margin:0 0 0 40px;border:none;padding:0px">[rjmcmahon@ryzen3950 iperf2-code]$ src/iperf -c <a href="http://hidden.com">hidden.com</a> --bounceback -t 10 --trip-times -e --hide-ips -<b>-bounceback-congest</b><br>[  2] local *.*.*.133 port 55640 connected with *.*.*.123 port 5001 (full-duplex) (trip-times)<br>[  1] local *.*.*.133%enp4s0 port 55642 connected with *.*.*.123 port 5001 (MSS=1448) (bb len/hold=100/0) (trip-times) (sock=3) (irtt/icwnd=10580/14) (ct=10.67 ms) on 2021-12-19 17:29:48 (PST)<br>------------------------------------------------------------<br>Client connecting to (**hidden**), TCP port 5001 with pid 240911 (1 flows)<br>Write buffer size:  100 Byte<br>Bounce-back test (size= 100 Byte) (hold=0 usecs)<br>TOS set to 0x0 and nodelay (Nagle off)<br>TCP window size: 85.0 KByte (default)<br>------------------------------------------------------------<br>[ ID] Interval       Transfer     Bandwidth<br>[  2] 0.00-10.02 sec  7.82 MBytes  6.55 Mbits/sec<br>[ ID] Interval        Transfer    Bandwidth         BB cnt=avg/min/max/stdev         Rtry  Cwnd/RTT<br>[  1] 0.00-10.09 sec  92.2 KBytes  74.9 Kbits/sec    <b>472</b>=20.788/6.149/128.539/17.973 ms    1   14K/42283 us<br>[  1] 0.00-10.09 sec  OWD Delays (ms) Cnt=472  To=15.290/1.068/123.623/17.616 From=5.498/4.806/23.336/1.342 Asymmetry=-9.792/-118.707/4.013/17.356<br>[  1] 0.00-10.09 sec BB8(f)-PDF: bin(w=100us):cnt(472)=62:1,82:1,91:1,94:5,95:1,96:5,97:6,98:6,99:3,100:6,101:4,102:4,103:3,104:3,105:7,106:6,107:4,108:6,109:2,110:5,111:5,112:2,113:3,114:3,115:4,116:3,117:4,118:1,119:3,120:4,121:3,122:3,123:1,124:2,126:2,127:2,128:1,129:3,132:3,133:1,135:2,136:2,137:5,138:1,139:3,140:8,141:8,142:8,143:9,144:12,145:10,146:14,147:6,148:7,149:4,150:6,151:7,152:3,153:5,154:5,155:4,156:2,157:6,158:8,159:2,160:6,161:11,162:3,163:2,164:6,165:2,166:5,167:3,168:2,169:2,170:7,171:6,172:1,174:2,175:3,176:1,177:1,178:1,179:2,180:1,181:1,182:1,183:3,184:2,186:1,187:3,189:2,190:1,193:2,194:1,195:1,196:2,197:1,199:2,200:2,201:1,202:1,204:4,206:3,208:1,209:1,213:1,216:1,218:1,219:1,220:1,221:1,225:1,226:1,228:1,240:1,248:1,252:1,259:1,262:1,269:1,275:1,276:1,279:1,281:2,282:1,283:1,290:1,291:2,293:2,295:1,297:1,298:1,301:1,304:1,313:1,317:1,319:1,325:1,327:1,330:1,344:1,359:1,360:1,365:1,372:1,375:1,396:1,406:1,412:1,433:1,440:1,442:1,469:1,480:2,485:1,515:1,521:1,533:1,535:1,536:1,543:1,544:1,547:1,559:1,571:1,597:1,600:1,604:1,608:1,663:1,668:1,689:1,735:1,750:1,784:1,810:1,818:1,832:1,840:1,847:1,850:1,884:1,892:1,897:1,924:1,997:1,1010:1,1039:1,1046:1,1177:1,1286:1 (5.00/95.00/99.7%=98/604/1177,Outliers=2,obl/obu=0/0) (0.000 ms/0.0)<br>[ ID] Interval        Transfer    Bandwidth    Burst Latency avg/min/max/stdev (cnt/size) inP NetPwr  Reads=Dist<br>[ *2] 0.00-10.40 sec   149 MBytes   120 Mbits/sec  243.512/21.708/616.257/106.136 ms (1190/131072) 3.48 MByte 61.58  1567094=900:2894:3359:2773:1327:1282:1624:1760<br>[SUM] 0.00-10.41 sec   157 MBytes   126 Mbits/sec</blockquote><br><h2 style="color:rgb(0,0,0);font-family:"Times New Roman"">CLIENT SPECIFIC OPTIONS</h2><dl compact style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium"><dt><b>-b</b>, <b>--bandwidth</b> <i>n</i>[kmgKMG][,<i>n</i>[kmgKMG]] | <i>n</i>[kmgKMG]pps</dt><dd>set target bandwidth to <i>n</i> bits/sec (default 1 Mbit/sec) or <i>n</i> packets per sec. This may be used with TCP or UDP. Optionally, for variable loads, use format of mean,standard deviation</dd><dt><b>--bounceback</b></dt><dd>run a tcp bounceback test (set size with -l or --len, defaults to 100 bytes)</dd><dt><b>--bounceback-congest</b></dt><dd>request a concurrent full-duplex TCP stream</dd><dt><b>--bounceback-hold </b><i>n</i></dt><dd>request the server to insert a delay of n milliseconds between its read and write (default is no delay)</dd><dt><b>--bounceback-period </b><i>n</i></dt><dd>request the client schedule a send every n milliseconds (w/o option bouncebacks are immediately scheduled. With command option and no optional value given, the interval will be one second.)</dd><dt><b>--bounceback-no-quickack</b></dt><dd>request the server not set the TCP_QUICKACK socket option (disabling TCP ACK delays) during a bounceback test (see NOTES)</dd><dt><b>--burst-period </b><i>n</i></dt></dl><br>Bob</div>

<br>
<span style="background-color:rgb(255,255,255)"><font size="2">This electronic communication and the information and any files transmitted with it, or attached to it, are confidential and are intended solely for the use of the individual or entity to whom it is addressed and may contain information that is confidential, legally privileged, protected by privacy laws, or otherwise restricted from disclosure to anyone else. If you are not the intended recipient or the person responsible for delivering the e-mail to the intended recipient, you are hereby notified that any use, copying, distributing, dissemination, forwarding, printing, or copying of this e-mail is strictly prohibited. If you received this e-mail in error, please return the e-mail to the sender, delete it from your computer, and destroy any printed copy of it.</font></span>