...
Incorrect implementation of priority queues. The simulator read reads packet priorities incorrectly.
No shared buffer pools. The simulator implements only statically allocated pools. For best performance, Homa needs shared buffer pools (which are common in modern switches); statically allocated pools can result in unnecessary packet drops.
No support for non-uniform RTTs. Homa senders are allowed to transmit one BDP of data unilaterally for each message, without waiting for grants. This amount depends on the round-trip time between sender and receiver. In most datacenter fabrics, RTTs are non-uniform (e.g., in the PowerTCP simulations intra-rack RTTs were 4 usec, while inter-rack RTTs were 28 usec); it has been our expectation that in environments like this Homa should use different BDP values for different sender-receiver pairs, depending on their RTTs (which should be measured dynamically). However, this expected behavior is not specified in any of the Homa papers, and the simulator supports only a single RTT value for all client-server pairs.
Sender-driven retry. The simulator had an option to use sender-driven retry, which was enabled for the PowerTCP measurements. This is not part of the Homa design (Homa uses receiver-driven retry) and it causes poor performance under some conditions.
...