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