简体   繁体   English

本地网络上可靠的组播

[英]Reliable Multicast over local network

I am implementing a messaging system using C++ and Qt. 我正在使用C ++和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. 但是,我了解到UDP的不可靠性,并认为它是不可接受的。

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. 我听说过OpenPGM和NORM作为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++. 我使用的是C ++和Qt,因此,除非它们是开源的,否则我不接受基于.NET或基于Java的解决方案,并且我可以将其移植到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? EDIT 20120816T1853 MDT:另一个问题:是否必须在硬件/ IP级别实施PGM或NORM? Or can they be overlayed on top of existing protocols? 还是可以将它们叠加在现有协议之上?

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. 我们已经通过UDP实现了自己可靠的多播协议,称为RSP ,因为我们需要跨平台的东西,而当时在Linux和Windows之间找不到合适的解决方案。 The Windows PGM implementation disconnects slow clients which leave the send window, whereas our implementation throttles the sender similar to TCP. Windows PGM实现断开了离开发送窗口的慢速客户端的连接,而我们的实现则像TCP一样限制发送者。 Afaik OpenPGM can be configured to do the same. 可以将Afaik OpenPGM配置为执行相同操作。

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. 可以将http://cs.itd.nrl.navy.mil/work/norm上的开源NORM构建为一个库,并具有带有Python和Java语言绑定的C ++ API。 If you ping the developer (me) via the mailing list, I can help get you started. 如果您通过邮件列表对开发人员(me)进行ping操作,那么我可以帮助您入门。

There is a large RFC division of reliable multicast protocols, and many implementations out there. RFC将可靠的多播协议进行了很大的划分 ,并且还有许多实现方式。 It's a long time since I looked at this but there are TRAM, LRMP, ... 自从我看了很久以来,但是有TRAM,LRMP,...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM