1. A method of simulating communication between devices, the method comprising: receiving a plurality of host requests that represent commands in a communication protocol, wherein the plurality of host requests are associated with a plurality of communication endpoints; distributing the plurality of host requests across the plurality of communication endpoints, wherein requests are distributed, in the order that they are received, to their associated endpoints to generate a distribution of requests; generating a reordered plurality of host requests by selecting the plurality of host requests from the plurality of communication endpoints in an order based upon the order in which the requests are received and one or more simulation factors; receiving a plurality of device requests from a simulated device that simulates a communication controller in accordance with the communication protocol; merging the reordered plurality of host requests and the plurality of device requests to form a merged sequence of requests; and performing commands from the merged sequence of requests in the order in which the requests occur in the merged sequence of requests, wherein the commands access state data that represents a simulated state of the simulated device.