I think I found the first answer here: Timeout client in TCP mode
One of the iperf3 threads is the control socket, and it does stop sending traffic after the other threads are up and running. So is there anything missing here that is preventing HAProxy from sending keepalive packets to that socket?