1

I'm looking for a framework that enables me to communicate network nodes in a P2P fashion (without a central server). The main requirements would be:

  1. Routing data/messages using the available peers (support not only directly connected communication, but also multi-hop interchanges)
  2. Suports dynamic peers (can appear and disappear at any time, crash tolerant)
  3. Supports restricted networks (NAT, firewalls, etc)
  4. Java based. This is not a strict requirement, but since I would like to be able to support a variety of platforms and devices, it is a highly desired characteristic.
  5. Supports high traffic communication between (pairs of) peers (e.g. file transfer)
  6. Offers FIFO and (close to) exactly once message delivery guarantees. Although not an definitive requirement, I will need this, so it would be better if the framework already provides it.
  7. (optionally, but would be great) peer automatic discovery (discover peers when they become available).
  8. (optionally, but will need it in the future) secure communication (authentication between peers, secure channel, etc).

I've been researching (a lot). The best match I could find is the JXTA spec but is not maintained anymore (JXSE*).

I've also investigated and done some testing with JGroups* but it is limited with respect to point 1 (multi-hop routing) and partially in point 3 (communicating different "network types").

I came across FreePastry* but couldn't find any current (widely used) implementation.

Currently I'm checking out ActiveMQ* and MQTT* but they are broker oriented and, despite I think I can push their limits enough to get close to what I need, it feels like hacking their use case (smells like trouble).

*Sorry I don't clarify with links, but I don't have enough reputation yet.

1
  • Did you find anything?
    – Roman
    Commented May 20, 2022 at 17:40

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.