PIM-DM
Implementation
PIM-DM forwards multicast packets in push mode and is for use on small-scale networks with densely distributed multicast group members. PIM-DM assumes that each network segment has multicast group members. When a multicast source sends multicast packets, PIM-DM floods all PIM routers on the network with the multicast packets and prunes the branches that do not have multicast group members. Through periodic flooding and prune, PIM-DM creates and maintains a unidirectional loop-free SPT that connects the multicast source and group members. If a new member joins a multicast group on the network segment connected to a leaf router in a pruned branch, the router can initiate the graft mechanism before starting new flooding and prune. As a result, the pruned branch turns into a forwarding branch.
PIM-DM uses the following mechanisms: neighbor discovery, flooding, prune, graft, assert, and state refresh. The flooding, prune, and graft mechanisms are used to establish an SPT. For details about all of these six mechanisms, see the sections below.
Neighbor Discovery
- The destination address is 224.0.0.13 and all PIM routers on the same network segment will receive this Hello message.
- The source address is the IP address of the interface that sends multicast packets.
- The time to live (TTL) value is 1.
Hello messages are used to discover PIM neighbors, adjust various PIM protocol parameters, and maintain neighbor relationships.
Discovering PIM neighbors
PIM routers on the same network segment must receive multicast packets with the destination address 224.0.0.13. By exchanging Hello messages, directly connected PIM routers learn neighbor information and establish neighbor relationships.
A PIM router can receive other PIM messages to create multicast routing entries only after it establishes neighbor relationships with other PIM routers.
Adjusting PIM protocol parameters
A Hello message carries the following PIM protocol parameters for controlling PIM protocol packet exchange between PIM neighbors:
DR_Priority: indicates the priority used by router interfaces to elect the designated router (DR). The interface with the highest priority becomes the DR.
Holdtime: indicates the period during which a neighbor remains reachable. If a router receives no Hello message from a neighbor within this period, the router considers that the neighbor is unreachable.
LAN_Delay: indicates the delay in transmitting Prune messages on a shared network segment.
Neighbor-Tracking: indicates the neighbor tracking function.
Override-Interval: indicates the interval for overriding the prune mechanism.
The DR_Priority parameter is only used in DR election on PIM-SM networks. For details about DR election, see "PIM-SM (ASM model) DR Election".
Maintaining neighbor relationships
PIM routers periodically send Hello messages to each other. If a PIM router does not receive a new Hello message from its PIM neighbor within the holdtime, the router considers the neighbor unreachable and deletes the neighbor from the neighbor list.
Changes of PIM neighbors lead to multicast topology changes on the network. If an upstream or downstream neighbor in the MDT is unreachable, multicast routes re-converge and the MDT is re-established.
Flooding
On a PIM-DM network, multicast packets from a multicast source are flooded throughout the entire network. When a PIM router receives a multicast packet, the router performs the RPF check on the packet based on the unicast routing table. If the packet passes the RPF check, the router creates an (S, G) entry, in which the downstream interface list contains all the interfaces connected to PIM neighbors, except the interface connected to the upstream router. The router then forwards subsequent multicast packets through each downstream interface.
When the multicast packets reach a leaf router, the leaf router processes the packets as follows:
- If the network segment connected to the leaf router has group members, the leaf router adds its interface that is connected to the network segment to the downstream interface list of the (S, G) entry, and forwards subsequent multicast packets to the group members.
- If the network segment connected to the leaf router has no group member and the leaf router does not need to forward multicast packets to downstream PIM neighbors, the leaf router initiates the prune mechanism and stops forwarding.
Multicast packets are sometimes flooded to a shared network segment with multiple PIM routers. If the packets pass the RPF check on these PIM routers, multiple copies of multicast packets are forwarded to this network segment. These PIM routers will need to initiate the assert mechanism.
As shown in Figure 4-2, RouterA, RouterB, and RouterC on the PIM-DM network establish PIM neighbor relationships by exchanging Hello messages. HostA joins multicast group G using Internet Group Management Protocol (IGMP) that runs between RouterA and HostA, but HostB does not join any multicast group.
The flooding process is as follows:
- Multicast source S sends a multicast packet to multicast group G.
- RouterC receives the multicast packet and performs the RPF check based on the unicast routing table. If the packet passes the RPF check, RouterC creates an (S, G) entry, in which the downstream interface list contains interfaces connected to RouterA and RouterB. RouterC then forwards subsequent packets to RouterA and RouterB.
- RouterA receives the multicast packet from RouterC. The packet passes the RPF check, and RouterA creates an (S, G) entry, in which the downstream interface list contains the interface connected to HostA. RouterA then forwards subsequent packets to HostA.
- RouterB receives the multicast packet from RouterC. Because the downstream network segment does not have group members or PIM neighbors, RouterB sends a Prune message to RouterC.
Prune
When a PIM router receives a multicast packet, it performs the RPF check o n the packet. If the packet passes the RPF check but the downstream network segment does not need to receive the multicast packet, the PIM router sends a Prune message to an upstream router. After receiving the Prune message, the upstream router deletes the downstream interface from the downstream interface list of the created (S, G) entry and no longer forwards multicast packets to the downstream interface. A leaf router initiates the prune mechanism, and the Prune message is sent upstream by hop along the MDT to prune the network segment that has no group members.
A PIM router starts a prune timer for the pruned downstream interface. The interface resumes forwarding multicast packets after the timer expires. Subsequently, multicast packets are flooded throughout the entire network and new group members can receive multicast packets. If a leaf router connecting to a network segment that has no group members receives the flooded multicast packets, the leaf router initiates the prune mechanism. PIM-DM updates the SPT periodically through the process of periodic flooding and prune.
After a downstream interface of a leaf router is pruned, the leaf router will initiate either the graft or state refresh mechanism:
- Graft: When new members join a multicast group on the network segment connected to the leaf router and want to receive multicast packets before the prune timer expires, the leaf router initiates the graft mechanism.
- State Refresh: When no member joins a multicast group on the network segment connected to the leaf router and the downstream interface is expected to remain suppressed, the leaf router initiates the state refresh mechanism.
As shown in Figure 4-3, no group member connects to RouterB, so RouterB sends a Prune message to the upstream router.
The prune process is as follows:
- RouterB sends a Prune message to RouterC, instructing RouterC not to forward data to the network segment (HostB) to which RouterB connects.
- After receiving the Prune message, RouterC stops forwarding data through its downstream interface connecting to RouterB, and deletes this downstream interface from the (S, G) entry. The prune process for this network segment ends. RouterC sends subsequent multicast packets only to RouterA, which then forwards the packets to connected group members (such as HostA).
Graft
PIM-DM uses the graft mechanism to enable new group members on a pruned network segment to rapidly obtain multicast data. IGMP helps a leaf router learn whether new group members have joined a multicast group on the connected network segment. If a leaf router learns that new group members have joined multicast group G, the leaf router sends a Graft message to the upstream router. The message requests the upstream router to resume multicast packet forwarding on the downstream interface and to add the downstream interface to the downstream interface list of the (S, G) entry.
The graft mechanism is initiated by a leaf router and ends at the upstream router receives the multicast packets.
After the prune process ends, RouterC does not send multicast packets to RouterB before the next flood-prune process. As shown in Figure 4-4, when HostB joins multicast group G, RouterB initiates the graft mechanism.
The graft process is as follows:
- RouterB wants to resume packet forwarding to HostB before the next flood-prune process, so it sends a Graft message to RouterC. The message requires RouterC to resume multicast packet forwarding on the downstream interface connecting to RouterB.
- After receiving the Graft message, RouterC resumes multicast packet forwarding on the interface and adds the interface to the downstream interface list of the (S, G) entry. The graft process for RouterB ends. RouterC sends subsequent multicast packets to RouterB, which then forwards the packets to HostB.
State Refresh
To prevent a pruned interface from resuming multicast packet forwarding after the prune timer expires, the first-hop router nearest to the multicast source periodically sends a State-Refresh message throughout the entire PIM-DM network. PIM routers receiving the State-Refresh message refresh the prune timer state. If no group member joins a multicast group on the network segment connected to a leaf router in a pruned branch, the upstream interface connected to this router remains suppressed.
In Figure 4-5, RouterC's interface connected to RouterB is pruned, and no group member joins a multicast group on the network segment connected to RouterB.
The state refresh process is as follows:
- RouterC initiates the state refresh mechanism and sends a State-Refresh message to RouterA and RouterB.
- RouterC has a pruned interface and refreshes the prune timer state of this interface. When RouterC starts new flooding and prune, the pruned interface on RouterC is still prohibited from forwarding multicast packets because no group member connects to RouterB.
Assert
When multicast packets pass the RPF check on multiple PIM routers connecting to a network segment, the assert mechanism is required to ensure that only one PIM router forwards the multicast packets to the network segment. When a PIM router receives a multicast packet that is the same as the multicast packet it sends to other neighbors, the PIM router sends an Assert message with the destination address 224.0.0.13 to all other PIM routers on the same network segment. When the other PIM routers receive the Assert message, they compare their parameters with those carried in the Assert message for assert election. The election rules are as follows:
- If these routers have different unicast routing priorities, the router with the highest unicast routing priority wins.
- If these routers have the same unicast routing priority, the router with the smallest route cost to the multicast source wins.
- If these routers have the same unicast routing priority and the same route cost to the multicast source, the router with the highest IP address for the downstream interface wins.
A PIM router performs the following operations based on assert election results:
If a router wins the assert election, its downstream interface becomes the assert winner and is responsible for forwarding multicast packets to the shared network segment.
If a router fails the assert election, its downstream interface becomes the assert loser, is prohibited from forwarding multicast packets to the shared network segment, and is deleted from the downstream interface list of the (S, G) entry.
After the assert election is complete, only one downstream interface exists on the shared network segment and it transmits only one copy of multicast packets. All assert losers can periodically resume multicast packet forwarding, which causes periodic assert elections.
As shown in Figure 4-6, RouterB and RouterC receive multicast packets from the multicast source. The multicast packets from RouterA pass the RPF check on RouterB and RouterC, RouterB and RouterC create (S, G) entries and send multicast packets to the same network segment that their downstream interfaces connect to.
The assert process is as follows:
RouterB and RouterC receive a multicast packet from each other through a downstream interface, but this packet fails the RPF check and is discarded. Then, RouterB and RouterC send an Assert message to the network segment.
RouterB compares its routing information with that carried in the Assert message sent by RouterC, and it wins the assert election because its route cost to the multicast source is lower than that of RouterC. RouterB then continues to forward subsequent multicast packets to the network segment, whereas RouterC discards subsequent multicast packets because these packets fail the RPF check.
RouterC compares its routing information with that carried in the Assert message sent by RouterB, and it fails the assert election because its route cost to the multicast source is higher than that of RouterB. RouterC then prohibits its downstream interface from forwarding multicast packets to the network segment and deletes the interface from the downstream interface list of the (S, G) entry.