6.4. Configuring PIM-DM
Overview
Function Introduction
The Protocol Independent Multicasting-Dense Mode (PIM-DM) is a multicast routing protocol designed to operate efficiently across Wide Area Networks (WANs) with densely distributed groups. It helps network nodes that are geographically dispersed to conserve bandwidth, and reduces traffic by simultaneously delivering a single stream of information to multiple locations.
PIM-DM assumes that when a source starts sending, all down stream systems want to receive multicast datagrams. Initially, multicast datagrams are flooded to all areas of the network. PIM-DM uses RPF to prevent looping of multicast datagrams while flooding. If some areas of the network do not have group members, PIM-DM will prune off the forwarding branch by instantiating prune state.
Prune state has a finite lifetime. When that lifetime expires, data will again be forwarded down the previously pruned branch. Prune state is associated with an (S,G) pair. When a new member for a group G appears in a pruned area, a router can “graft” toward the source S for the group, thereby turning the pruned branch back into a forwarding branch.
Principle Description
The PIM-DM module is based on the following IETF standard: RFC 3973
Configuration
PIM-DM is a soft-state protocol. The main requirement is to enable PIM-DM on desired interfaces. All multicast group states are maintained dynamically as the result of IGMP Report/Leave and PIM messages.
This section provides PIM-DM configuration examples for two relevant scenarios. The following graphic displays the network topology used in these examples:
In this example, using the above topology, multicast data stream comes to eth-0-1 of Switch1, host is connected to eth-0-1 of Switch2.
step 1 Enter the configure mode
Switch# configure terminal
step 2 Enter the interface configure mode set the attributes and ip address, and enable pim-dm
Configuring on Switch1:
Switch(config)# interface eth-0-1
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ip address 11.1.1.1/24
Switch(config-if)# ip pim dense-mode
Switch(config-if)# exit
Switch(config)# interface eth-0-9
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ip address 12.1.1.1/24
Switch(config-if)# ip pim dense-mode
Switch(config-if)# exit
Configuring on Switch2:
Switch# configure terminal
Switch(config)# interface eth-0-1
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ip address 22.1.1.2/24
Switch(config-if)# ip pim dense-mode
Switch(config-if)# exit
Switch(config)# interface eth-0-9
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ip address 12.1.1.2/24
Switch(config-if)# ip pim dense-mode
Switch(config-if)# exit
step 3 Add static routes
Configuring on Switch1:
Switch(config)# ip route 22.1.1.0/24 12.1.1.2
Configuring on Switch2:
Switch(config)# ip route 11.1.1.0/24 12.1.1.1
step 4 Exit the configure mode
Switch(config)# end
step 5 Validation
The show ip pim dense-mode interface
command displays the interface details for Switch1.
Switch# show ip pim dense-mode interface
Address Interface VIFIndex Ver/ Nbr
Mode Count
11.1.1.1 eth-0-1 0 v2/D 0
12.1.1.1 eth-0-9 1 v2/D 1
The show ip pim dense-mode neighbor
command displays the neighbor details for Switch1.
Switch# show ip pim dense -mode neighbor
Neighbor-Address Interface Uptime/Expires Ver
12.1.1.2 eth-0-9 00:01:00/00:01:44 v2
The show ip pim dense-mode mroute detail
command displays the IP multicast routing table.
Switch1:
Switch# show ip pim dense-mode mroute
PIM-DM Multicast Routing Table
(11.1.1.2, 225.1.1.1)
Source directly connected on eth-0-1
State-Refresh Originator State: Originator
Upstream IF: eth-0-1
Upstream State: Forwarding
Assert State: NoInfo
Downstream IF List:
eth-0-9, in 'olist':
Downstream State: NoInfo
Assert State: NoInfo
Switch2:
Switch# show ip pim dense-mode mroute
PIM-DM Multicast Routing Table
(11.1.1.2, 225.1.1.1)
RPF Neighbor: none
Upstream IF: eth-0-9
Upstream State: AckPending
Assert State: NoInfo
Downstream IF List:
eth-0-1, in 'olist':
Downstream State: NoInfo
Assert State: NoInfo
Application cases
N/A