The query engines currently exchange message for each operator evaluation task separately. Those messages include bufferReady(IChunkMessage), startOp(IStartOpMessage), and haltOp(IHaltOpMessage). It would be more efficient (fewer messages) if we vectored those messages such that we sent one to each node on which a query engine was running rather than one per shard on which some operator task needs to be evaluated.
The code which sends the bufferReady(IChunkMessage) messages is in the FederationChunkHandler class.
If we are able to send the startOp and haltOp messages asynchronously, then we may be able to vector those as well.