I Put My Machines In My Initial Peers Lists -- Why Don’t They Discover Each Other?

There are some situations in which two applications, even though they have been configured to have each other in their initial peers lists, will not discover each other.

  1. Two applications are on the same machine and have only either or "localhost" in their initial peers lists AND accept_unknown_peers is false.

    • Why won’t they communicate?: Both applications will send out their participant announcements, announcing themselves with their IP addresses. Because accept_unknown_peers is false, the IP address that is sent out in the announcements will not match or "localhost", causing discovery to fail.

    • Solution: Set accept_unknown_peers to true OR put the machine’s actual IP address or hostname in each application’s initial peers list.

  2. Two applications are running on separate machines. Application A has the address of Application B in its initial peers list and has a multicast receive address set. Application B has default initial peers.

    • Why can’t they communicate?: In some network configurations this setup will work just fine. However, in a situation where the two machines are in different multicast networks, discovery will not complete. This happens because Application A will send unicast discovery to Application B. Application B will detect that Application A, like itself, has been setup to receive multicast traffic and will attempt to continue discovery over multicast because this is most efficient. Because the two applications are in different multicast networks, the multicast traffic will be blocked between the two applications, unbeknownst to them, and discovery will fail.

    • Solution: Disable multicast on Application A and/or Application B by clearing their multicast_receive_addresses list to force discovery to go over unicast.