4

I am implementing a messaging system using C++ and Qt. After much thought, I have determined that multicasting or a multicast-style technique will work best to solve my problem. However, I have learned about UDP's unreliability and believe it to be unacceptable.

My requirements are as follows:

  • Messages are to be sent in a binary serialized form.
  • From any given node on the network, I must be able to send messages to the other nodes.
  • Message delivery must be insured.

I have heard of OpenPGM and NORM as alternatives for UDP. If anyone has experience with either of these, could you please share?

I am also open to the possibility of implementing "reliable" multicast by myself, in the application layer, but I would prefer not to if there is a library that already implements this.

I am using C++ and Qt, therefore .NET or Java-based solutions are not acceptable unless they are open-source and I may port them to C++.

Thank you very much.

EDIT 20120816T1853 MDT: An additional question: would either PGM or NORM have to be implemented at the hardware/IP level? Or can they be overlayed on top of existing protocols?

dbush
  • 205,898
  • 23
  • 218
  • 273
Nathan Moos
  • 3,563
  • 2
  • 22
  • 27

3 Answers3

5

We have implemented our own reliable multicast protocol over UDP called RSP, since we needed something cross-platform and at the time couldn't find a good solution between Linux and Windows. The Windows PGM implementation disconnects slow clients which leave the send window, whereas our implementation throttles the sender similar to TCP. Afaik OpenPGM can be configured to do the same.

eile
  • 1,153
  • 6
  • 18
  • I like what I see on your RSP page! Is that library open-source? I would like to implement a version of that protocol using that library as a reference that integrates into the Qt lifecycle. – Nathan Moos Aug 17 '12 at 17:16
  • Nathan, the library is LGPL, hosted on github: https://github.com/Eyescale/. The easiest is to clone Buildyard and do a 'make Collage' from there. – eile Aug 18 '12 at 17:11
  • Qt is also LGPL so there should be no licensing problems with me using them together! Thanks! I'll choose this answer! – Nathan Moos Aug 18 '12 at 18:02
4

The open source NORM at http://cs.itd.nrl.navy.mil/work/norm can be built as a library and has C++ API with Python and Java language bindings. If you ping the developer (me) via the mailing list, I can help get you started.

0

There is a large RFC division of reliable multicast protocols, and many implementations out there. It's a long time since I looked at this but there are TRAM, LRMP, ...

user207421
  • 305,947
  • 44
  • 307
  • 483