You can also test your ACK code, and engine code speed this way…
On a test site, set up four threads (adjust ports as necessary):
in_thread_a, server, port 8000, process1
raw_route to
out_thread_b, client, localhost, port 8001, process1
in_thread_b, server, port 8001, process2
raw_route to
out_thread_a, client, localhost, port 8000, process2
Make sure you have your ACK code in place. Resend a dozen or so messages in one of the outbound threads and watch them go round and round. Take notes of your msgs/sec, processor utilization, and any other metrics you want. I don’t think you could ever achieve these numbers in real interfaces, as you have taken out the majority of the network, and any other application delays, but it will tell you just how fast your ACK code can ack while running in an engine.
Stop it all and turn on save-messaging on all of those threads, and let it run again (but not for too long, or you’ll fill up your disk!). Note the differences in msgs/sec when Cloverleaf has to save stuff to disk. With the .idx files, you can look at the time deltas between batches of message sends and report just how fast the ACK code works.
I used this setup when I was testing cluster failovers prior to implementation of a new cluster to help verify we would not lose a message during a failover. I tried it with and without ACK code in place. Without the ACK code, I only ever lost one message per failover.
On the other hand… as mentioned by others here, a sniff of the packets and appropriate analysis will tell you lots, too.