什么是可靠多播的最有效协议?

时间:2009-04-19 00:07:13

标签: protocols file-transfer multicast ethernet reliable-multicast

当发送者需要通过以太网以可靠的方式将相对大量的数据(比如几兆字节/秒)多播到同一子网上的适量接收者(比如少于十几个)时,最多的是什么有效的协议?通过可靠我的意思是,如果数据包丢失,协议会确保重新发送,以便任何接收器都不会丢失数据。术语高效要难以定义,但是假设我们希望通过两端适度的CPU使用来最大化吞吐量并最小化网络带宽。这仍然不是一个明确的定义,但它是我能想到的最好的。无论是面向流的协议还是面向消息的协议都是可以接受的。

我很欣赏现实世界的例子,如果你能解释它的优点和缺点,我很乐意接受主观的答案,即你最喜欢的多播协议是什么。

7 个答案:

答案 0 :(得分:22)

真实世界的例子:TIBCO Rendezvous。

通过带有序列号的多播发送数据。检测到丢失序列号的客户端在组播组上发出一个消息“嘿,我错过了数据包12345”。服务器重新编组该数据。服务器具有可配置的数据量,以便在客户端请求时进行缓冲。

问题:

想象一下,有一个客户端丢弃了一半的数据包,还有100个健康的客户端。该客户端为每个其他数据包发送重传请求。服务器开始在其中一个正常客户端上引起足够的负载,使其开始丢弃数据包并请求重新传输。来自它的额外负载导致另一个健康的客户端开始请求重新传输。等等。拥堵崩溃的结果。

Tibco提供了一种解决方法,即切断发送过多重传请求的订户。这使得单个用户更难以导致拥塞崩溃。

限制拥塞崩溃风险的另一种解决方法是限制服务器愿意重新传输的数据量。

Tibco还应在客户端和服务器上提供关于是否多播或单播重传请求以及重传本身的启发式方法。他们没有。 (对于服务器,如果只有一个客户端在特定时间窗口内请求重传,则可以单播重传;对于客户端,如果服务器告知您 - 在重传的数据包中 - 您是唯一一个请求,则可以单播重传请求重传并请将来的请求单播出来)

从根本上说,您必须决定要保证客户端接收数据的强度与拥塞崩溃风险之间的关系。您将不得不猜测丢弃数据包的位置以及重传是否最有效地发送单播或多播。如果服务器理解数据并且可以决定不发送重传,如果有更新的数据要发送(这使得重传不相关),那么你比Tibco RV这样的框架处于更好的位置。

有时理解数据会导致错误的假设。例如,市场数据 - 当有更新的报价时,首先看起来可能不会重新发送报价。但是稍后,您可能会发现订阅者保留了报价历史记录,而不仅仅是尝试跟踪当前报价。根据订户的不同,您可能会有不同的要求,有些客户端更喜欢单播TCP与多播。

在某些时候,您需要在服务器上做出任意决定,以便在重新传输或缓慢客户端时缓冲多少数据。

答案 1 :(得分:5)

继TIBCO之后,PGM协议是一种开放式标准可靠多播,具有许多优化功能,可以在网络元素加速的情况下有效地进行大规模工作。 PGM由TIBCO和CISCO开发,是TIBCO Rendezvous下的可选协议,默认协议为TRDP,设计非常相似。

您可以计算理论效率,例如此处列出的PGM,

http://code.google.com/p/openpgm/wiki/PgmPerformance

不幸的是,现实世界中的网络元素,网卡和通用计算机体系结构的执行速度远低于理论上的最大值。

答案 2 :(得分:1)

的BitTorrent!

不,认真。您可能需要read up on it

UDP对多播很有用,但它不能提供您正在寻找的保证--BitTorrent将要求您从原始来源传输多个完整副本,但它仍然相当有效并提供有用的保证,特别是考虑到对传入的每个“数据块”进行了多少校验和。

答案 3 :(得分:1)

答案 4 :(得分:1)

我可能会建议UFTP。它使用基于NAK的机制来确定要重新传输的数据包,并使用TFMCC选择固定传输速率或拥塞控制。

每个文件都以传递方式发送,第一次传递传输整个文件,而后续传递只传输重传。每个客户端都会跟踪它收到的数据包和错过的数据包。在特定检查点(以及通过结束时),如果接收方错过了自上一个检查点以来的任何数据包,它将发送NAK列出丢失的数据包。这具有以下优点:低损耗接收器将在高损耗接收器之前完成。 UFTP还可以配置为丢弃NAK百分比超过特定阈值的接收器。

通过将NAK限制为仅显示丢失的接收器,可以降低拥塞崩溃的风险,这是发送者被接收者反馈所淹没。

披露:UFTP的作者。

答案 5 :(得分:0)

这是一个开放的研究问题;有商业解决方案,但是价格过高。祝好运。

答案 6 :(得分:0)

如果你真的希望可靠地同时传输到多个客户端,我认为你应该看看Stream Control Transmission Protocol作为UDP /多播的替代方案。