FYI, here's an example output using two brix PCs over their wired ethernet connected by a Cisco SG300 switch. Note: the ptpd stats (not shown) displays the clock corrections and suggests them to be within 10 microseconds. [rjmcmahon@rjm-fedora etc]$ iperf -c 192.168.100.33 -u -e -t 2 -b 2kpps ------------------------------------------------------------ Client connecting to 192.168.100.33, UDP port 5001 with pid 29952 Sending 1470 byte datagrams, IPG target: 500.00 us (kalman adjust) UDP buffer size: 208 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.100.67 port 50062 connected with 192.168.100.33 port 5001 [ ID] Interval Transfer Bandwidth PPS [ 3] 0.00-2.00 sec 5.61 MBytes 23.5 Mbits/sec 1999 pps [ 3] Sent 4001 datagrams [ 3] Server Report: [ 3] 0.00-2.00 sec 5.61 MBytes 23.5 Mbits/sec 0.012 ms 0/ 4001 (0%) -/-/-/- ms 2000 pps [rjmcmahon@hera ~]$ iperf -s -u -e -i 0.1 ------------------------------------------------------------ Server listening on UDP port 5001 with pid 5178 Receiving 1470 byte datagrams UDP buffer size: 208 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.100.33 port 5001 connected with 192.168.100.67 port 57325 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Latency avg/min/max/stdev PPS [ 3] 0.00-0.10 sec 289 KBytes 23.6 Mbits/sec 0.013 ms 0/ 201 (0%) 0.142/ 0.018/ 0.192/ 0.025 ms 2005 pps [ 3] 0.10-0.20 sec 287 KBytes 23.5 Mbits/sec 0.020 ms 0/ 200 (0%) 0.157/ 0.101/ 0.207/ 0.015 ms 1999 pps [ 3] 0.20-0.30 sec 287 KBytes 23.5 Mbits/sec 0.014 ms 0/ 200 (0%) 0.155/ 0.071/ 0.212/ 0.018 ms 2002 pps [ 3] 0.30-0.40 sec 287 KBytes 23.5 Mbits/sec 0.018 ms 0/ 200 (0%) 0.146/-0.007/ 0.187/ 0.018 ms 1999 pps [ 3] 0.40-0.50 sec 287 KBytes 23.5 Mbits/sec 0.021 ms 0/ 200 (0%) 0.151/ 0.021/ 0.208/ 0.018 ms 2000 pps [ 3] 0.50-0.60 sec 287 KBytes 23.5 Mbits/sec 0.016 ms 0/ 200 (0%) 0.148/ 0.043/ 0.192/ 0.018 ms 2000 pps [ 3] 0.60-0.70 sec 287 KBytes 23.5 Mbits/sec 0.019 ms 0/ 200 (0%) 0.152/ 0.041/ 0.199/ 0.018 ms 2001 pps [ 3] 0.70-0.80 sec 287 KBytes 23.5 Mbits/sec 0.016 ms 0/ 200 (0%) 0.144/ 0.071/ 0.206/ 0.017 ms 2001 pps [ 3] 0.80-0.90 sec 287 KBytes 23.5 Mbits/sec 0.015 ms 0/ 200 (0%) 0.140/ 0.111/ 0.186/ 0.014 ms 1999 pps [ 3] 0.90-1.00 sec 287 KBytes 23.5 Mbits/sec 0.022 ms 0/ 200 (0%) 0.154/ 0.111/ 0.222/ 0.019 ms 2000 pps [ 3] 1.00-1.10 sec 287 KBytes 23.5 Mbits/sec 0.014 ms 0/ 200 (0%) 0.152/ 0.036/ 0.197/ 0.017 ms 2000 pps [ 3] 1.10-1.20 sec 287 KBytes 23.5 Mbits/sec 0.015 ms 0/ 200 (0%) 0.153/-0.007/ 0.186/ 0.020 ms 2001 pps [ 3] 1.20-1.30 sec 287 KBytes 23.5 Mbits/sec 0.013 ms 0/ 200 (0%) 0.149/ 0.035/ 0.207/ 0.018 ms 2000 pps [ 3] 1.30-1.40 sec 287 KBytes 23.5 Mbits/sec 0.014 ms 0/ 200 (0%) 0.160/ 0.116/ 0.233/ 0.018 ms 2000 pps [ 3] 1.40-1.50 sec 287 KBytes 23.5 Mbits/sec 0.014 ms 0/ 200 (0%) 0.159/ 0.122/ 0.207/ 0.015 ms 2000 pps [ 3] 1.50-1.60 sec 287 KBytes 23.5 Mbits/sec 0.016 ms 0/ 200 (0%) 0.158/ 0.066/ 0.201/ 0.015 ms 1999 pps [ 3] 1.60-1.70 sec 287 KBytes 23.5 Mbits/sec 0.017 ms 0/ 200 (0%) 0.162/ 0.076/ 0.203/ 0.016 ms 2000 pps [ 3] 1.70-1.80 sec 287 KBytes 23.5 Mbits/sec 0.014 ms 0/ 200 (0%) 0.154/ 0.073/ 0.195/ 0.016 ms 2002 pps [ 3] 1.80-1.90 sec 287 KBytes 23.5 Mbits/sec 0.015 ms 0/ 200 (0%) 0.154/ 0.113/ 0.213/ 0.017 ms 1999 pps [ 3] 1.90-2.00 sec 287 KBytes 23.5 Mbits/sec 0.019 ms 0/ 200 (0%) 0.152/ 0.124/ 0.208/ 0.016 ms 1999 pps [ 3] 0.00-2.00 sec 5.61 MBytes 23.5 Mbits/sec 0.019 ms 0/ 4001 (0%) 0.151/-0.007/ 0.233/ 0.018 ms 2000 pps Here's a full line rate (1Gbs ethernet) run [rjmcmahon@rjm-fedora etc]$ iperf -c 192.168.100.33 -u -e -t 2 -b 200kpss -i 1 -w 2M ------------------------------------------------------------ Client connecting to 192.168.100.33, UDP port 5001 with pid 30626 Sending 1470 byte datagrams, IPG target: 5.00 us (kalman adjust) UDP buffer size: 416 KByte (WARNING: requested 2.00 MByte) ------------------------------------------------------------ [ 3] local 192.168.100.67 port 57349 connected with 192.168.100.33 port 5001 [ ID] Interval Transfer Bandwidth PPS [ 3] 0.00-1.00 sec 114 MBytes 958 Mbits/sec 81421 pps [ 3] 1.00-2.00 sec 114 MBytes 958 Mbits/sec 81380 pps [ 3] 0.00-2.00 sec 228 MBytes 957 Mbits/sec 81399 pps [ 3] Sent 162874 datagrams [ 3] Server Report: [ 3] 0.00-2.00 sec 228 MBytes 957 Mbits/sec 0.084 ms 0/162874 (0%) 1.641/ 0.253/ 2.466/ 0.114 ms 81383 pps [ 3] local 192.168.100.33 port 5001 connected with 192.168.100.67 port 57349 [ 3] 0.00-0.10 sec 11.4 MBytes 960 Mbits/sec 0.016 ms 0/ 8166 (0%) 1.615/ 0.253/ 2.309/ 0.355 ms 81606 pps [ 3] 0.10-0.20 sec 11.4 MBytes 956 Mbits/sec 0.016 ms 0/ 8133 (0%) 1.657/ 0.936/ 2.325/ 0.348 ms 81350 pps [ 3] 0.20-0.30 sec 11.4 MBytes 957 Mbits/sec 0.021 ms 0/ 8139 (0%) 1.657/ 0.950/ 2.400/ 0.348 ms 81383 pps [ 3] 0.30-0.40 sec 11.4 MBytes 958 Mbits/sec 0.016 ms 0/ 8144 (0%) 1.652/ 0.953/ 2.357/ 0.342 ms 81380 pps [ 3] 0.40-0.50 sec 11.4 MBytes 956 Mbits/sec 0.069 ms 0/ 8131 (0%) 1.644/ 0.947/ 2.368/ 0.341 ms 81384 pps [ 3] 0.50-0.60 sec 11.4 MBytes 957 Mbits/sec 0.072 ms 0/ 8138 (0%) 1.649/ 0.949/ 2.381/ 0.337 ms 81372 pps [ 3] 0.60-0.70 sec 11.4 MBytes 957 Mbits/sec 0.025 ms 0/ 8139 (0%) 1.639/ 0.952/ 2.357/ 0.342 ms 81383 pps [ 3] 0.70-0.80 sec 11.4 MBytes 957 Mbits/sec 0.014 ms 0/ 8135 (0%) 1.643/ 0.944/ 2.368/ 0.343 ms 81390 pps [ 3] 0.80-0.90 sec 11.4 MBytes 957 Mbits/sec 0.016 ms 0/ 8142 (0%) 1.639/ 0.946/ 2.361/ 0.341 ms 81366 pps [ 3] 0.90-1.00 sec 11.4 MBytes 957 Mbits/sec 0.015 ms 0/ 8142 (0%) 1.635/ 0.932/ 2.378/ 0.342 ms 81387 pps [ 3] 1.00-1.10 sec 11.4 MBytes 957 Mbits/sec 0.015 ms 0/ 8138 (0%) 1.633/ 0.934/ 2.359/ 0.341 ms 81373 pps [ 3] 1.10-1.20 sec 11.4 MBytes 957 Mbits/sec 0.010 ms 0/ 8135 (0%) 1.636/ 0.947/ 2.361/ 0.342 ms 81444 pps [ 3] 1.20-1.30 sec 11.4 MBytes 957 Mbits/sec 0.091 ms 0/ 8140 (0%) 1.624/ 0.908/ 2.363/ 0.354 ms 81400 pps [ 3] 1.30-1.40 sec 11.4 MBytes 956 Mbits/sec 0.016 ms 0/ 8133 (0%) 1.616/ 0.917/ 2.325/ 0.345 ms 81296 pps [ 3] 1.40-1.50 sec 11.4 MBytes 957 Mbits/sec 0.012 ms 0/ 8138 (0%) 1.626/ 0.918/ 2.361/ 0.346 ms 81414 pps [ 3] 1.50-1.60 sec 11.4 MBytes 957 Mbits/sec 0.015 ms 0/ 8136 (0%) 1.626/ 0.934/ 2.352/ 0.339 ms 81339 pps [ 3] 1.60-1.70 sec 11.4 MBytes 957 Mbits/sec 0.015 ms 0/ 8141 (0%) 1.633/ 0.930/ 2.351/ 0.341 ms 81376 pps [ 3] 1.70-1.80 sec 11.4 MBytes 956 Mbits/sec 0.017 ms 0/ 8133 (0%) 1.627/ 0.929/ 2.354/ 0.339 ms 81377 pps [ 3] 1.80-1.90 sec 11.4 MBytes 957 Mbits/sec 0.088 ms 0/ 8139 (0%) 1.659/ 0.895/ 2.396/ 0.343 ms 81330 pps [ 3] 1.90-2.00 sec 11.4 MBytes 956 Mbits/sec 0.013 ms 0/ 8128 (0%) 1.709/ 0.996/ 2.466/ 0.342 ms 81348 pps [ 3] 0.00-2.00 sec 228 MBytes 957 Mbits/sec 0.085 ms 0/162874 (0%) 1.641/ 0.253/ 2.466/ 0.344 ms 81383 pps I'll be testing with 802.11ax chips soon but probably can't share those numbers. Sorry about that. Bob On Fri, Oct 13, 2017 at 12:41 PM, Bob McMahon wrote: > PS. Thanks for writing flent and making it available. I'm a novice > w/flent but do plan to learn it. > > Bob > > On Fri, Oct 13, 2017 at 11:47 AM, Bob McMahon > wrote: > >> Hi Toke, >> >> The other thing that will cause the server thread(s) and listener thread >> to stop is -t when applied to the *server*, i.e. iperf -s -u -t 10 will >> cause a 10 second timeout for the server/listener thread(s) life. Some >> people don't want the Listener to stop so when -D (daemon) is applied, the >> -t will only terminate server trafffic threads. Many people asked for >> this because they wanted a way to time bound these threads, specifically >> over the life of many tests. >> >> Yeah, summing is a bit of a mess. I've some proto code I've been playing >> with but still not sure what is going to be released. >> >> For UDP, the source port must be unique per the quintuple (ip proto/src >> ip/ src port/ dst ip/ dst port). Since the UDP server is merely waiting >> for packets it doesn't have an knowledge about how to group. So it groups >> based upon time, i.e. when a new traffic shows up it's put an existing >> active group for summing. >> >> I'm not sure a good way to fix this. I think the client would have to >> modify the payload, and per a -P tell the server the udp src ports that >> belong in the same group. Then the server could assign groups based upon a >> key in the payload. >> >> Thoughts and comments welcome, >> Bob >> >> On Fri, Oct 13, 2017 at 2:28 AM, Toke Høiland-Jørgensen >> wrote: >> >>> Bob McMahon writes: >>> >>> > Thanks Toke. Let me look into this. Is there packet loss during your >>> > tests? Can you share the output of the client and server per the error >>> > scenario? >>> >>> Yeah, there's definitely packet loss. >>> >>> > With iperf 2 there is no TCP test exchange rather UDP test information >>> > is derived from packets in flight. The server determines a UDP test is >>> > finished by detecting a negative sequence number in the payload. In >>> > theory, this should separate UDP tests. The server detects a new UDP >>> > stream is by receiving a packet from a new source socket. If the >>> > packet carrying the negative sequence number is lost then summing >>> > across "tests" would be expected (even though not desired) per the >>> > current design and implementation. We intentionally left this as is as >>> > we didn't want to change the startup behavior nor require the network >>> > support TCP connections in order to run a UDP test. >>> >>> Ah, so basically, if the last packet from the client is dropped, the >>> server is not going to notice that the test ended and just keep >>> counting? That would definitely explain the behaviour I'm seeing. >>> >>> So if another test starts from a different source port, the server is >>> still going to count the same totals? That seems kinda odd :) >>> >>> > Since we know UDP is unreliable, we do control both client and server >>> over >>> > ssh pipes, and perform summing in flight per the interval reporting. >>> > Operating system signals are used to kill the server. The iperf >>> sum and >>> > final reports are ignored. Unfortunately, I can't publish this >>> package >>> > with iperf 2 for both technical and licensing reasons. There is some >>> skeleton >>> > code in Python 3.5 with asyncio >>> > >>> that >>> > may be of use. A next step here is to add support for pandas >>> > , and possibly some control chart >>> > techniques (both single >>> and >>> > multivariate >>> > ) for >>> both >>> > regressions and outlier detection. >>> >>> No worries, I already have the setup scripts to handle restarting the >>> server, and I parse the output with Flent. Just wanted to point out this >>> behaviour as it was giving me some very odd results before I started >>> systematically restarting the server... >>> >>> -Toke >>> >> >> >