Most high-level network protocols (such as the ISO Transport Protocols or TCP or UDP) only provide a unicast transmission service. That is, nodes of the network only have the ability to send to one other node at a time:
All transmission with a unicast service is inherently point-to-point. If a node wants to send the same information to many destinations using a unicast transport service, it must perform a replicated unicast,and send N copies of the data to each destination in turn.
A better way to transmit data from one source to many destinations is to provide a multicast transport service. With a multicast transport service, a single node can send data to many destinations by making just a single call on the transport service:
For those applications which involve a single node sending to many recipients, a multicast facility is clearly a more natural programming paradigm than unicast. However, the benefits of multicast are more than just logical: Many underlying transmission media (such as Ethernet) provide support for multicast and broadcast at the hardware and media-acces level. When a multicast service is implemented over such a network, there is a huge improvement in performance: If the hardware supports multicast, A packet which is destined for N recipients can be sent as just a single packet!
Multicast is is useful because it allows the construction of truly distributed applications, and provides important performance optimisations over unicast transmission. There are a number of exciting new applications for real-time audio and video conferencing which can make good use of a multicast service when it is available. There is currently an experimental Multicast Backbone, called the MBone, which is exploring applications of IP mulicast.
IP Multicast is a protocol for transmitting IP datagrams from one source to many destinations in a local or wide-area network of hosts which run the TCP/IP suite of protocols. The basic facility provided by the IP protocol is a unicast transmission service: That is, the current standard for IP provides only unreliable transmission of datagrams from a single source host to a single destination host.
However, research has shown that only minor modifications are required to add multicast routing support to IP. The resulting IP Multicast routing protocol provides efficient delivery of datagrams from one source to an arbitrary number of destinations throughout a large, heterogenous network such as the Internet.
Audio and video conferencing applications are very bandwidth-intensive, and require extremely low latency from the underlying network multicast service. IP can be run over increasingly fast links to solve the bandwidth problem, but there still remains a serious latency problem with IP networks. Stated simply, because IP can support very large packets, it is possible for a small, time-critical packet to get "stuck" behind a large packet. To help redress this problem, lots of research is focusing on ATM networks. One aspect of this research is support for multicast over ATM networks.
The basic service provided by IP multicast is an unreliable datagram multicast service. With an unreliable multicast service, there is no guarantee that a given packet reached all intended recipients which belong to the multicast group. This is useful for certain applications, such as those developed for the MBone, which are more concerned with performance than reliability.
However, a reliable multicast protocol for IP has been developed. This protocol, called Multicast Transport Protocol (MTP) gives application programs guarantees of atomicity and reliability. The MTP protocol would be useful for developing applications such as distributed databases which need to be certain that all members of a multicast group agree on which packets have been received.
On systems that support multicast protocols, support must also be provided for sending and receiving multicast datagrams. There is a standard mechanism for using IP multicast facilities over sockets in 4.4 BSD Unix and other operating systems which support sockets. Here is a tutorial and example of using this socket-based interface to IP multicast.