Protocol-Independent Multicast: Difference between revisions

Content deleted Content added
No edit summary
Tags: Mobile edit Mobile web edit
Added case for IGMPv3 source-specific join
 
(31 intermediate revisions by 17 users not shown)
Line 1:
{{short description|Multicast routing protocol}}
[[image:IGMP basic architecture.png|thumb|400px|Example of a multicast network architecture]]
 
'''Protocol-Independent Multicast''' ('''PIM''') is a family of [[multicast]] [[routing protocol]]s for [[Internet Protocol]] (IP) networks that provide [[Point-to-multipoint communication|one-to-many]] and [[many-to-many]] distribution of data over a [[LAN]], [[Wide area network|WAN]] or the [[Internet]]. It is termed ''protocol-independent'' because PIM does not include its own [[network topology|topology discovery]] mechanism, but instead uses routing information supplied by other [[routing protocol]]s. 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 table]]s. PIM uses the unicast routing table for [[reverse -path forwarding]].<ref name="Cisco Multicast">{{citation |url=https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst3750x_3560x/software/release/15-2_2_e/multicast/configuration_guide/b_mc_1522e_3750x_3560x_cg/b_mc_3750x_3560x_chapter_011.html |title=IP Multicast Routing Configuration Guide |publisher=[[Cisco]] |access-date=2017-05-27}}</ref>{{rp|56–57}}
 
There are four variants of PIM:
* '''PIM Sparse Mode''' (PIM-SM) explicitly builds unidirectional shared trees rooted at a ''rendezvous point'' (RP) per group, and optionally creates shortest-path trees per source. PIM-SM generally scales fairly well for wide-area usage.<ref>{{cite web |url=https://technet.microsoft.com/en-us/library/bb742462.aspx |title=PIM-SM Multicast Routing Protocol |date=9 December 2009 |publisher=[[Microsoft]] |accessdateaccess-date=2014-03-26}}</ref>{{ref RFC|4601}}
* '''PIM Dense Mode''' (PIM-DM) uses [[dense multicast]] routing. It implicitly builds shortest-path trees by flooding [[multicast]] traffic ___domain wide, and then pruning back branches of the tree where no receivers are present. PIM-DM is straightforward to implement but generally has poor scaling properties. The first multicast routing protocol, [[DVMRP]] used dense-mode multicast routing.<ref>{{cite web |url=http://www.multicasttech.com/faq/ |title=Frequently Asked Questions (FAQ) File for Multicasting |publisher=Multicast Tech |archiveurlarchive-url=https://web.archive.org/web/20110614164202/http://www.multicasttech.com/faq/ |archivedatearchive-date=2011-06-14}}</ref> See the PIM Internet Standard RFC 3973.
* '''Bidirectional PIM''' (Bidir-PIM) explicitly builds shared bi-directional trees. It never builds a shortest path tree, so may have longer end-to-end delays than PIM-SM, but scales well because it needs no source-specific state.<ref name="Cisco Multicast"/>{{rp|70-7370–73}} See Bidirectional PIM Internet Standard RFC 5015.
* '''PIM Source-Specific Multicast''' (PIM-SSM) builds trees that are rooted in just one source, offering a more secure and scalable model for a limited number of applications (mostly broadcasting of content). In SSM, an IP datagram is transmitted by a source S to an SSM destination address G, and receivers can receive this datagram by subscribing to channel (S,G). See informational RFC{{IETF RFC|3569}}.
 
PIM-SM is commonly used in [[IPTV]] systems for routing multicast streams between [[VLAN]]s, [[Subnetwork|Subnetssubnet]]s or local area networks.<ref>{{cite web |url=https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-Y.Sup16-201202-I!!PDF-E&type=items |title=Supplement on guidelines on deployment of IP multicast for IPTV content delivery |publisher=[[ITU-T]] |accessdateaccess-date=2014-03-23}}</ref>
 
==Versions==
Line 14 ⟶ 16:
 
==Sparse mode==
'''Protocol Independent Multicast - Sparse-Mode''' ('''PIM-SM''') is a [[protocol (computing)|protocol]] for efficiently [[routing]] [[Internet Protocol]] (IP) [[packet (information technology)|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 (and their [[router (computing)|router]]s) 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.<ref name=CiscoPIM>{{citation |url=http://www.cisco.com/en/US/docs/switches/lan/catalyst3750x_3560x/software/release/12.2_53_se/configuration/guide/swmcast.html |title=Configuring IP Multicast Routing |publisher=[[Cisco Systems]] |accessdateaccess-date=2013-12-06}}</ref>
 
===Multicast clients===
A router receives explicit Join/Prune messages from those neighboring routers that have downstream group members.
 
* In order to join a multicast group, G, a host conveys its membership information through the [[Internet Group Management Protocol]] ([[IGMP]]).
* The router then forwards data packets addressed to a multicast group G to only those interfaces on which explicit joins have been received.
* A Designated Router (DR) sends periodic Join/Prune messages toward a group-specific Rendezvous Point (RP) for each group for which it has active members.
Line 40 ⟶ 42:
* Whether they arrive encapsulated or natively, the RP forwards the source's de-capsulated data packets down the RP-centered distribution tree toward group members.
* If the data rate warrants it, routers with local receivers can join a source-specific, shortest path, distribution tree, and prune this source's packets off the shared RP-centered tree.
* Where a router's local receivers are only interested in packets from a specific source within a multicast group, the router may skip joining the RP centered shared tree and jump straight to joining the source-specific shortest path tree.
* For low data rate sources, neither the RP, nor last-hop routers need join a source-specific shortest path tree and data packets can be delivered via the shared RP-tree.
 
Line 45 ⟶ 48:
 
==Dense mode==
'''Dense mode multicast''' is one mode that [[multicast]] can use to construct a [[Tree (data structure)|tree]] for sending [[Packet (information technology)|packet]]s to the multicast subscribers. It is thean oppositealternative ofto [[sparse multicast]]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 [[router (computing)|router]]s must receive and forward these packets (groups of a high density).
 
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 [[broadcastingBroadcasting (networksnetworking)|broadcast]]s to every [[router (computing)|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 (if no other neighboring PIM routers are present and no host is interested in the group), 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 (computer science)|interface]]. If every interface on a router is pruned, the router will also be pruned.<ref name=CiscoPIM/>
 
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.1(5)T. 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.
Line 58 ⟶ 61:
 
==See also==
*[[IEEE 802.1aq|802.1aq Shortest Path Bridging]]
*[[Internet Group Management Protocol]]
*[[IP Multicast]]
*[[Multicast address]]
*[[Multicast Source Discovery Protocol]]
Line 68:
 
==External links==
* {{cite web |url=http://www.multicast.org.uk/nws34/slides/5a-IP-PIM-Networkshop-09.pdf |title=PIM Routing |author=Gorry Fairhurst |date=2006 |accessdateaccess-date=2011-12-06 |url-status=dead |archive-url=https://web.archive.org/web/20111228072037/http://www.multicast.org.uk/nws34/slides/5a-IP-PIM-Networkshop-09.pdf |archive-date=2011-12-28 }}
* [http://www.rfc-editor.org/rfc/rfc4601.txt Protocol Independent Multicast-Sparse Mode (PIM-SM): Protocol Specification (Revised)]
* [http://www.ietf.org/rfc/rfc3569.txt An Overview of Source-Specific Multicast (SSM)]
* [https://web.archive.org/web/20090615025136/http://www.netcraftsmen.net/welcher/papers/multicast03.html Netcraftmen Explanation of PIM Sparse Mode]
* [https://technet.microsoft.com/en-us/library/bb742462.aspx microsoft.comPIM-SM Multicast Routing Protocol]
* [http://docwiki.cisco.com/wiki/Internet_Protocol_Multicast cisco docwiki]
* [https://web.archive.org/web/20111004054835/http://troglobit.com/pimd.shtml pimd is a lightweight stand-alone PIM-SM v2 multicast routing daemon.]
* [https://technet.microsoft.com/en-us/library/bb742462.aspx microsoft.com]
* [http://troglobit.com/pimd.shtml pimd is a lightweight stand-alone PIM-SM v2 multicast routing daemon.]
* [http://www.ietf.org/rfc/rfc2362.txt Protocol Independent Multicast-Sparse Mode (PIM-SM): Protocol Specification rfc2362]
* {{Citation | url = https://github.com/udhos/qpimd/ | title = qpimd – PIM Daemon for Quagga }} - Protocol Independent Multicast, previously a separate independently released module for, but now an official module of and supplied by, the [[Quagga (software)|Quagga Routing Suite]].