A reliable multicast protocol is a computer networking protocol that provides a reliable sequence of packets to multiple recipients simultaneously, making it suitable for applications like multi-receiver file transfer or streaming media.
Multicast is a network addressing method for the delivery of information to a group of destinations simultaneously using the most efficient strategy to deliver the messages over each link of the network only once, creating copies only when the links to the multiple destinations split (typically network switches and routers). However, like the User Datagram Protocol, multicast does not guarantee the delivery of a message stream. Messages may be dropped, delivered multiple times, or delivered out of order. A reliable multicast protocol adds the ability for receivers to detect lost and/or out-of-order messages and take corrective action (similar in principle to TCP), resulting in a gap-free, in-order message stream.
The exact meaning of reliability depends on the specific protocol instance. A minimal definition of reliable multicast is eventual delivery of all the data to all the group members, without enforcing any particular delivery order. However, not all reliable multicast protocols ensure this level of reliability; many of them trade efficiency for reliability, in different ways. For example, while TCP makes the sender responsible for transmission reliability, multicast NAK-based protocols shift the responsibility to receivers: the sender never knows for sure that all the receivers have in fact received all the data. RFC 2887 explores the design space for bulk data transfer, with a brief discussion on the various issues and some hints at the possible different meanings of reliable.
Existing or proposed protocols
- Pragmatic General Multicast (PGM)
- (Mesongo)'s Rapid Messaging Framework (RMF)
- Tibco Software's TRDP (part of RV). Note: when Tibco acquired Talarian, they inherited a PGM implementation with SmartSockets (SmartPGM). TRDP pre-dates the development of SmartPGM
- Reuters Reliable Control Protocol (RRCP) part of TRIARCH, RMDS and TREP
- 29West's LBT-RM protocol (part of LBM/UME)
- PrismTech's OpenSplice DDS () reliable real-time multicast protocol
- DDSI a standard high performance reliable multicast protocol ()
- RTI's reliable multicast protocol (part of NDDS)
- OpenDDS as an open source implementation since their 0.12 release
- Reliable Multicast Transport Protocol (RMTP)
- Scalable Reliable Multicast (SRM)
- QuickSilver Scalable Multicast (QSM)
- SMART Multicast (Secure Multicast for Advanced Repeating of Television)
- NACK-Oriented Reliable Multicast Protocol (NORM)
- Reliable Stream Protocol (RSP), a high-performance open source protocol for compute clusters
- JGroups (Java API): popular project/implementation
- jGCS : Generic Java API supporting other implementations: Spread, Appia, NeEM, JGroups
- Spread: C/C++ API, Java API, Python API
- Appia (Java API)
- NeEM (Java API)
- RMF (C# API)
- Aeron C++ and Java API
- Floyd, S.; Jacobson, V.; Liu, C. -G.; McCanne, S.; Zhang, L. (December 1997). "A reliable multicast framework for light-weight sessions and application level framing". IEEE/ACM Transactions on Networking. 5 (6): 784–803. doi:10.1109/90.650139.
- Diot, C.; Dabbous, W.; Crowcroft, J. (April 1997). "Multipoint communication: A survey of protocols, functions, and mechanisms" (PDF). IEEE Journal on Selected Areas in Communications. 15 (3): 277–290. doi:10.1109/49.564128.