Bidir-PIM is a subset of PIM-SM, just as SSM is. This mode of operation is useful in situations where most receivers are also senders at the same time. For example, this might be the case when you run videoconferencing. In this situation, in addition to joining the shared tree rooted at the RP, every receiver needs to join the shortest- path multicast distribution tree rooted at every other participant. If the number of participants is significant, the amount of multicast route states in the core of the network will grow at a quadric rate.

One special feature of PIM SM shared and shortest path trees is that they are unidirectional; traffic passes down from the root to the leaves of the tree. PIM BiDir uses a single distribution tree rooted at the RP for all sources and receivers at the same time. If there are multiple RPs, there could be many BiDir trees. Unlike the classic tree, traffic may flow up and down this tree. When a source sends multicast packets, they first flow up to the root of the tree (toward the RP) and then down to all receivers.

To build the bi-directional tree, PIM elects special designated forwarders on every link in the network. A DF is elected based on the rules similar to the ones used in the PIM Assert procedure - the router on the link that has the shortest metric to reach the RP is selected as the designated forwarder. After the elections, the DFs are the only routers that are allowed to forward traffic towards the RP (upstream).

Every router in the PIM domain creates a (*, G) state for each bidirectional Group. with the Ougoing Interface List (OIL) built based on PIM Join messages received from its neighbors. This is the downstream portion of the bidirectional tree.

PIM BiDir does not utilize the source registration procedure, via PIM Register/Register-Stop messages. Every source connected to a PIM BiDir capable router may start sending at any time, and the packets will flow upward to the RP. After reaching the RP, packets are either dropped, if there are no receivers for this group (that is, the OIL for this (*,G) state is empty) or forwarded down the BiDir tree. There is no way for the RP to signal the source to stop sending traffic even if there are no receivers.

Configuring PIM BiDir is relatively simple. You just need to enable BiDir PIM on all multicast routers by using the command ip pim bidir-enable and designate particular RP/Group combinations as bi-directional. You can do this in the following ways:

  • use a static RP configuration with the command ip pim rp-address <IP> <ACL> bidir
  • using BSR or RP information dissemination, you may flag particular group/RP combinations as bidirectional using ip pim rp-candidate <interface> [group-list <ACL>] bidir
  • Using Auto-RP for RP information dissemination, you may flag particular group/RP combinations as bi-directional using the syntax ip pim send-rp-announce <interface> scope <TTL> group-list <ACL> bidir

You must remember to enable bi-directional mode on all routers in your network, or you might end up with routing loops.