Protocol Independent Multicast


Protocol-Independent Multicast is a family of multicast routing protocols for Internet Protocol networks that provide one-to-many and many-to-many distribution of data over a LAN, WAN or the Internet. It is termed protocol-independent because PIM does not include its own topology discovery mechanism, but instead uses routing information supplied by other routing protocols. PIM is not dependent on a specific unicast routing protocol; it can make use of any unicast routing protocol in use on the network. PIM does not build its own routing tables. PIM uses the unicast routing table for reverse path forwarding.
There are four variants of PIM:
PIM-SM is commonly used in IPTV systems for routing multicast streams between VLANs, Subnets or local area networks.

Versions

There are two PIM versions. The versions are not directly compatible though may coexist on the same network. Network equipment may implement both versions. PIMv2 has the following improvements over PIMv1: A single RP is used per group. RP discovery is accomplished by a Bootstrap Router. Groups are either sparse or dense mode; Interfaces can be either. General improvements to protocol flexibility and efficiency.

Sparse mode

Protocol Independent Multicast - Sparse-Mode is a protocol for efficiently routing Internet Protocol packets to multicast groups that may span wide-area and inter-domain internets. The protocol is named protocol-independent because it is not dependent on any particular unicast routing protocol for topology discovery, and sparse-mode because it is suitable for groups where a very low percentage of the nodes will subscribe to the multicast session. Unlike earlier dense-mode multicast routing protocols such as DVMRP and dense multicast routing which flooded packets across the network and then pruned off branches where there were no receivers, PIM-SM explicitly constructs a tree from each sender to the receivers in the multicast group.

Multicast clients

A router receives explicit Join/Prune messages from those neighboring routers that have downstream group members.
Once the other routers which need to receive those group packets have subscribed, the RP will unsubscribe to that multicast group, unless it also needs to forward packets to another router or node. Additionally, the routers will use reverse-path forwarding to ensure that there are no loops for packet forwarding among routers that wish to receive multicast packets.

Dense mode

Dense mode multicast is one mode that multicast can use to construct a tree for sending packets to the multicast subscribers. It is an alternative to sparse mode.
The basic assumption behind dense mode is that the multicast packet stream has receivers at most locations. Sparse mode assumes relatively fewer receivers. Dense mode is ideal for groups where many of the nodes will subscribe to receive the multicast packets, so that most of the routers must receive and forward these packets.
This difference shows up in the initial behavior and mechanisms of the two protocols. Dense Mode uses a fairly simple approach to handle IP multicast routing. The source initially broadcasts to every router directly connected to it. These neighboring routers further forward the data to their neighbors. When a router does not wish to receive this group's data, it sends a Prune message to indicate its lack of interest. Upon receiving a Prune message, the router will modify its state so that it will not forward those packets out that interface. If every interface on a router is pruned, the router will also be pruned.
In older Cisco IOS releases, PIM-DM would re-flood all the multicast traffic every 3 minutes. This is fine for low volume multicast, but not higher bandwidth multicast packet streams. More recent Cisco IOS versions support a new feature called PIM Dense Mode State Refresh, since 12.1T. This feature uses a PIM state refresh messages to refresh the Prune state on outgoing interfaces. Another benefit is that topology changes are recognized more quickly. By default, the PIM state refresh messages are sent every 60 seconds.
Additionally, the routers will use reverse-path forwarding to ensure that there are no loops for packet forwarding among routers that wish to receive multicast packets. When a data packet is received on a non-RPF interface, a mechanism is required to prevent loops. If the non-RPF interface is a LAN, an Assert message is sent. Non-Forwarder routers then send a Prune on their RPF interface if they don't need the multicast stream. Only one such Prune is sent, at the time of the transition to having no interfaces in the Outgoing Interface List. The LAN Prune receiver delays acting on it for 3 seconds, so that if another LAN router still needs the multicast stream, it can send a PIM Join message to counteract the Prune.
Suppose a router has Pruned, and some time later a receiver requests the multicast stream with an IGMP message. The router then sends a Graft message. In effect, "hey, I need that multicast stream over here now".