Bidirectional-PIM Configuration
Bidirectional PIM (BIDIR-PIM) is a variant of PIM Sparse-Mode (PIM-SM) that builds bidirectional shared trees connecting multicast sources and receivers as specified in RFC5015.
BIDIR-PIM dispenses with both encapsulation and source state by allowing packets to be natively forwarded from a source to the Rendezvous Point (RP) using shared tree state.
BIDIR-PIM uses the same tree for traffic from source towards RP and from RP to receivers.
Designated Forwarders (DF) Election
Bidirectional Shared-Trees violates current (*, G) RPF rules, as it accepts traffic from one Reverse Path Forwarding (RPF) interface only. To avoid forwarding multicast packet looping, bidir-PIM introduces a new mechanism called the designated forwarder (DF) election.
The designated forwarder (DF) election takes place for all PIM routers on every network segment and point-to-point link. The procedure selects one router as the DF for every RP of bidirectional groups. The designated forwarder is responsible for forwarding multicast packets received on that network.
PIM-SM Configuration
Enabling BIDIR-PIM
 
#configure terminal  | Enter Configure mode.  | 
(config)#ip pim bidir-enable  | Enable bidir-pim  | 
(config)#commit  | Commit the transaction.  | 
Configuring BIDIR Rendezvous Point Statically
Configuring Static BIDIR RP
 
#configure terminal  | Enter configure mode.  | 
(config)#ip access-list standard ip1 (config-ip-acl-std)#permit 224.0.0.0/24  | Configure the access list for multicast group.  | 
(config)#ip pim rp-address 10.10.1.5 ip1 bidir  | Statically configure an rp address for multicast groups.  | 
(config)#commit  | Commit the transaction.  | 
 
 
Here is the sample configuration for Router_D:
hostname Router_D
!
       ip access-list standard ip1
 		 permit 224.0.0.0/24
      !
interface eth0
!
interface eth1
 ip pim sparse-mode
!
interface eth2
 ip pim sparse-mode
!
interface lo
!
!
ip multicast-routing
      ip multicast bidirectional enable
!
ip pim bidir-enable
ip pim rp-address 10.10.1.5 ip1 bidir 
!
 
Validation
RP Details
At Router_D, the show ip pim rp mapping command shows that 10.10.1.5 is the RP for all multicast groups 22.0.0.0/4, and is statically configured. All other routers will have a similar output:
Router_D#sh ip pim rp mapping
PIM Group-to-RP Mappings
Override RP cnt: 0
Group(s): 224.0.0.0/4, Static
    RP: 10.10.1.5 bidir
         Uptime: 00:01:45
At Router_D, use the show ip pim rp-hash command to display the selected RP for a specified group (224.0.1.3):
Router_D#show ip pim rp-hash 224.0.1.3 
      RP: 10.10.5.37
Interface Details
The show ip pim interface command displays the interface details for Router_E, and shows that Router_E is the Designated Router on Subnet 1.
Router_E#show ip pim interface
Address          Interface VIFindex Ver/   Nbr      DR    DR
                                    Mode   Count   Prior
192.168.1.10      eth1      0       v2/S   1         1     192.168.1.10
172.16.1.10       eth2      2       v2/S   1         1     172.16.1.10
IP Multicast Routing Table
Note:	The multicast routing table displays for an RP router are different from other routers.
The show ip pim mroute command displays the IP multicast routing table. In this table, the following fields are defined:
RPF nbr
Displays the unicast next-hop to reach RP.
 and mask length.
RPF idx 
Displays the incoming interface for this (*, G) state.
RP
Displays the IP address for the RP router
B              
Displays the bidirectional pim mode
The leading dots ....
 
 
 
 
 
 
Stand for VIF index
Router_E#show ip pim mroute
IP Multicast Routing Table
 
(*,*,RP) Entries: 0
(*,G) Entries: 1
(S,G) Entries: 0
(S,G,rpt) Entries: 0
(*, 224.0.1.3)B
RP: 10.10.1.5
RPF nbr: 172.16.1.2
RPF idx: eth2
 Local     ................................
 Joined    j...............................
 
At Router_E, eth2 is the incoming interface of the (*, G) entry, and the RP is reachable through eth2. The ‘B’ flag indicates that it is in bidirectional pim mode.
Since Router_C is the RP, and the root of this multicast tree, the show ip pim mroute command on Router_C shows RPF nbr as 0.0.0.0 and RPF idx as none. 
Router_C#show ip pim mroute
IP Multicast Routing Table
 
(*,*,RP) Entries: 0
(*,G) Entries: 1
(S,G) Entries: 0
(S,G,rpt) Entries: 0
(*, 224.0.1.3)B
RP: 10.10.1.5
RPF nbr: 0.0.0.0
RPF idx: None
 Local     ................................
 Joined    j...............................
IP Multicast Routing Table
Flags: I - Immediate Stat, T - Timed Stat, F - Forwarder installed
       B - BIDIR
Timers: Uptime/Stat Expiry
Interface State: Interface (TTL)
 
(*, 224.0.1.3), uptime 00:00:07, stat expires 00:03:23
Owner PIM, Flags: TFB
  Outgoing interface list:
    eth2 (1)
    eth1 (1)
Configuring BIDIR-Neighbor Filter 
This section shows how to configure a bidir-neighbor filter to specify which bidirectionally capable (bidir-capable) neighbors will participate in the designated forwarder (DF) election.
 
#configure terminal  | Enter configure mode  | 
(config)# interface eth1  | Enter interface mode  | 
(config-if)# ip pim bidir-neighbor-filter Acl-name/acl-no  | Configure bidir-neighbor-filter at interface  | 
(config-if)# no ip pim bidir-neighbor-filter acl-name/acl-no  | Unconfigure bidir-neighbor-filter at interface  | 
Validation
Enter the commands listed in this section to confirm the previous configurations.
rtr6#show ip pim neighbor
Neighbor        Interface          Uptime/Expires            Ver     DR
Address                                                           Priority/Mode
192.168.1.149   eth1               00:00:44/00:01:31         v2    1 / B
192.168.1.152   eth1               00:00:01/00:01:44         v2    1 / DR  --------?B Flag is removed
 
rtr6#show running-config interface eth1
!
interface eth1
 ip address 192.168.1.57/24
 no shutdown
 no snmp trap link-status
 ip ospf cost 10
 ip pim bidir-neighbor-filter 1
 ip pim sparse-mode
 lldp-agent
 no dcbx enable
 exit
Configuring BIDIR PIM Offer Message Interval Time
This section shows how to configure BIDIR PIM offer message interval time.
 
#configure terminal  | Enter configure mode.  | 
(config)# ip pim bidir-offer-interval <1>  | Specify offer-interval in the range 1-20000  | 
(config-if)# no ip pim bidir-offer-interval  | Disable offer-interval  | 
Validation
1.	Verify the time set for offer message interval
(config)#ip pim  bidir-offer-interval 10
 
#show  running-config
!
no service password-encryption
!
debug nsm packet
debug ip pim events
debug ip pim mfc
debug ip pim packet
debug ip pim state
debug ip pim timer
debug ip pim mib
!
ip vrf management
!
mpls propagate-ttl
!
no ip icmp-broadcast
!
ip multicast-routing
ip multicast bidirectional enable
!
ip pim bidir-enable
ip pim bidir-offer-interval 10
ip pim rp-address 172.31.5.153 bi
2.	Verify neighbor information in Bidirectional PIM mode with “B” flag associated
rtr6#show ip pim neighbor
Neighbor        Interface          Uptime/Expires            Ver     DR
Address                                                           Priority/Mode
192.168.1.149   eth1               00:38:36/00:01:39         v2    1 / B
192.168.1.152   eth1               00:37:53/00:01:22         v2    1 / DR B
rtr6#
3.	Verify DF status per interface
rtr6#show ip pim interface df
Interface RP               DF Winner        Metric
eth1      172.31.5.153     192.168.1.152    20
eth2      172.31.5.153     192.168.10.57    30
rtr6#
rtr6#show ip pim interface eth1 df 172.31.5.153
 
 Designated Forwarder election for eth1, 192.168.1.57, RP 172.31.5.153
 State                           Non-DF (Lose)
 Offer count is                  0
 Current DF ip address           192.168.1.152
 Last winner metric preference   110
 Last winner metric              20
rtr6#
Configuring BIDIR PIM Offer Interval Limit
This section shows how to configure the Protocol Independent Multicast (PIM) bidirectionally capable number of unanswered offers before it changes as the designated forwarder (DF).
 
#configure terminal  | Enter Configure mode.  | 
(config)# ip pim bidir-offer-limit <offer packet limit>  | Configure bidir-offer-limit  | 
(config-if)# no ip pim bidir-offer-limit  | Disable offer-limit  | 
Validation 
rtr6#show  running-config
!
no service password-encryption
!
hostname rtr6
!
!
debug nsm packet
!
ip vrf management
!
mpls propagate-ttl
!
no ip icmp-broadcast
!
access-list 1 deny 192.168.1.152
access-list 1 permit any
 
!
ip multicast-routing
!
ip pim bidir-enable
ip pim bidir-offer-limit 5
ip pim register-rp-reachability
ip pim vrf management register-rp-reachability
!