Reliable multicast

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

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 such as multi-receiver file transfer.


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.[1] 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.[2] 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.

Reliable Group Data Delivery[edit]

Reliable Group Data Delivery (RGDD) is a form of multicasting where an object is to be moved from a single source to a fixed set of receivers known before transmission begins.[3][4] A variety of applications may need such delivery: Hadoop Distributed File System (HDFS) replicates any chunk of data two additional times to specific servers, VM replication to multiple servers may be required for scale out of applications and data replication to multiple servers may be necessary for load balancing by allowing multiple servers to serve the same data from their local cached copies. Such delivery is frequent within datacenters due to plethora of servers communicating while running highly distributed applications.

RGDD may also occur across datacenters and is sometimes referred to as inter-datacenter Point to Multipoint (P2MP) Transfers.[5] Such transfers deliver huge volumes of data from one datacenter to multiple datacenters for various applications: search engines distribute search index updates periodically (e.g. every 24 hours), social media applications push new content to many cache locations across the world (e.g. YouTube and Facebook), and backup services make several geographically dispersed copies for increased fault tolerance. To maximize bandwidth utilization and reduce completion times of bulk transfers, a variety of techniques have been proposed for selection of multicast forwarding trees.[5][6]

Other existing or proposed protocols[edit]

Library support[edit]

  • JGroups (Java API): popular project/implementation
  • jGCS : Generic Java API supporting other implementations: Spread, Appia, NeEM, JGroups
  • Spread: C/C++ API, Java API
  • Appia (Java API)
  • NeEM (Java API)
  • RMF (C# API)
  • Aeron C++ and Java API
  • hmbdc C++ and any language supporting Linux PIPING, ultra-low latency/high throughput, scalable and reliable inter-thread, IPC and network messaging
  • ZeroMQ Distributed messaging library with support for reliable multicast using PGM[7]


  1. ^ 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.
  2. ^ 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.
  3. ^ C. Guo; et al. (November 1, 2012). "Datacast: A Scalable and Efficient Reliable Group Data Delivery Service For Data Centers". ACM. Retrieved July 26, 2017.CS1 maint: Explicit use of et al. (link)
  4. ^ T. Zhu; et al. (Oct 18, 2016). "MCTCP: Congestion-aware and robust multicast TCP in Software-Defined networks". IEEE. Retrieved July 26, 2017.CS1 maint: Explicit use of et al. (link)
  5. ^ a b M. Noormohammadpour; et al. (July 10, 2017). "DCCast: Efficient Point to Multipoint Transfers Across Datacenters". USENIX. Retrieved July 26, 2017.CS1 maint: Explicit use of et al. (link)
  6. ^ M. Noormohammadpour; et al. (2018). "QuickCast: Fast and Efficient Inter-Datacenter Transfers using Forwarding Tree Cohorts". Retrieved January 23, 2018.CS1 maint: Explicit use of et al. (link)
  7. ^ "zmq_pgm(7) - 0MQ Api". Retrieved 21 January 2018.