<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>