IPERF for Windows doesn't formally support bidirectional test, although it works. It is quite advanced mode, you have to really understand what you are doing. Here is the instruction, use it on your own risk.
In TCP mode, Server side is configured as usual, for example with default port 5001. On Client side, in 'commands' text field put '-d -L 5002'. It means: connect back to Client on port 5002. Start the Client.
Console output shows how sockets are connecting for forward and backward traffic. You may get few "connection refused" on server side, until you get socket connected. The leftmost number is the traffic flow identifier, it helps to recognise results in the following mess of bidirectional output. Sometimes some thread is missing in output. It's better to focus on [SUM] lines for the same time intervals:
Windows Task Manager helps to monitor overall situation.
IPERF Charts were not developed to separate bidirectional traffic, so all test data are being connected. This produces artificial zigzag pattern, which doesn't exist in reality. Do NOT get confused here, your network is not as bad as this.
Important note: once test is over, Stop button stays On, doesn't change to Start - because additional Server socket on port 5002 continues listening. Try to Stop it, or kill it with Terminate. Then you can Start another test.
For UDP traffic use exactly the same commands '-d -L 5002', and watch bidirectional flows:
In summary: bidirectional test is operational in IPERF for Windows, but analysis of its results is not straight forward and reliability is questionable. That's why we haven't included -d option into User Interface, and haven't extended Charts for bidirectional data - it becomes total mess. In our opinion, it's much easier to run two separate unidirectional tests in opposite directions, then watch and print out readable results.
You may find unidirectional tests symmetrical, which questions the validity of bidirectional algorythm...