Why is multicast needed?
There are two primary ways for applications to transmit data over an IP enabled network: unicast and multicast.
Unicast model requires a one-to-one connection between the receivers interested in receiving some data flow and the source. This requirement implies that the network resources close to the source need to be correctly dimensioned to carry as many flows as receivers interested in receiving the data stream. Designing the network that way doesn’t even make sense, because of the variable conditions of number and location of receivers. Bandwidth distribution requirements is only one of the limiting factors of the scalability of the unicast based content distribution.
Multicast model has a more flexible connectivity way and is suited for one-to-many, many-to-many and other variants. With multicast, the network transports only one data flow per source and it’s the network the responsible for delivering the stream to the receivers interested on it, making the solution more scalable and flexible.
Some main advantages of multicast-based content distribution solution are:
- Scalability: bandwidth needs related to the number of flows.
- Performance: limited frame processing resources.
- Lower CAPEX: due to lower specs and requirements.
Multicast based content distribution should be considered to be used every time the design needs for a scalable solution for delivering data streams from one or more Sources to ‘usually’ many Receivers.
The typical use cases are one-to-many and many-to-many but there exist some variants that have their own specific design constraints like many-to-one, few-to-many and few-to-few.
Small video broadcast
Live events scoring
The most common transport layer protocol to use multicast addressing is UDP. UDP is by design a connectionless and unreliable protocol offering best effort datagram delivery. By keeping the data transport layer simple, the complexity is translated to the application development side. Application developers should take care of the additional functionality demand of the business applications.
The main points that need to be addressed by application developers by the lack of a reliable transport protocol like TCP are:
- Ordered data transfer (out-of-order delivery, duplicates)
- Retransmission of lost packets (drops)
- Error detection (duplicates)
- Flow control (speed missmatch between sender and receiver)
- Congestion control (network congestion conditions)
It’s important to check business needs to identify the needed functionality because some of them that make sense on some designs, like software distribution, doesn’t make sense in another, like audio or video streaming.
Multicast routing is backwards from unicast routing in the sense that the forwarding state is defined from the Receivers towards the Source.
In classical unicast routing, the destination address explicitly indicates where to forward the packets, and each hop determines the next hop and outgoing interface based on the information locally available to the node.
In multicast routing, the Group address doesn´t indicate to the network nodes where to forward data, and additional state need to be created in advance to allow the data flow from Sources to Receivers:
- The Receiver shows interest in receiving data from a particular Group (*,G) and perhaps from some particular Source (S,G).
- Network build a multicast distribution tree to be able to forward the data stream from the Source to the Receiver. Specific protocols will be used to define the forwarding path and create the needed state on the network.
PIM (ASM, SSM, BiDir)
Once the multicast distribution tree is built, the data stream flows from the Source to the Receivers. The figure shows a general simplified overview of the control plane protocols involved.
I hope you find it useful.