title: Reliable network all-to-all communication: Message Bus or Publish/Subscribe or Multicast/PGM?
body: <p>I have a particle simulation program and want to split it up onto multiple machines in a LAN.
  Each server node calculates a number of particles' positions and needs to send the updated positions (i.e. the same data) to all other server nodes. So each server node needs to be connected to all the others.</p>
  
  <p>This reliable all-to-all communication should work without a central server/message broker and should have few latency. Also sending same data multiple times over the network should be avoided, if possible (as with multicast).</p>
  
  <p>I looked around and <a href="https://en.wikipedia.org/wiki/%C3%98MQ" rel="nofollow">ZeroMQ</a> (supports Bus, Pub/Sub and PGM) as well as <a href="http://nanomsg.org/" rel="nofollow">Nanomsg</a> (supports Bus and Pub/Sub, but no PGM) look like great libraries fitting to the problem.</p>
  
  <p>Which networking technique would be suited best in this case, a Message Bus, Publish/Subscribe or Multicast/PGM?</p>