# Protocol Independent Multicast (PIM)

PIM was designed to take advantage of two existing multicast routing protocols, DVMRP and CBT. It exibits the behavior of a protcol in a region of dense group membership flooding multicast packets using Reverse Path Multicasting, while also taking advantage of the work done for sparse group membership in Core Based Trees. Hence, the protocol has two modes, dense and sparse. Currently, only dense mode is implemented in Gated. An overview of PIM can be found in the document Protocol Independent Multicast (PIM): Motivation and Architecture. The detailed protocol specification is also available as Protocol Independent Multicast (PIM): Protocol Specification. Both of these documents are considered Work in Progress.

## The PIM Statement

    pim yes | no | on | off [ {
        queryinterval sec ;
        routertimeout sec ;
        prunetimeout sec ;
        inactivitytimeout sec ;
        graftacktimeout sec ;
        preference {
                direct preference ;
                kernel preference ;
                ospf preference ;
                ospfase preference ;
                rip preference ;
                hello preference ;
                static preference ;
                bgp preference ;
                egp preference ;
                idrp preference ;
                isis preference ;
                slsp preference ;
        } ;
        interface interface_list [[enable] | [disable]] [mode [dense | sparse]] ;
        traceoptions trace_options ;
    } ] ;

The `pim` statement enables or disables the PIM protocol. If the `pim` statement is not specified the default is `pim off;` If enabled, PIM will default to enabling all interfaces that are multicast capable. These interfaces are indentified by the IFF_MULTICAST interface flag.

The options are as follows:

queryinterval sec
  This is the interval at which PIM Router Queries are sent on the multicast capable LAN. PIM Router Queries are sent to the All Routers Multicast Group in order for PIM routers to find other PIM routers on a multiaccess network. If not specified, the default value is 30 seconds.
routertimeout sec
  This is the interval that a PIM router is remembered without receiving a PIM Router Query. After this time, the router is deleted from the local database. Its value defaults to three times the queryinterval or 90 seconds when the default queryinterval is used.
prunetimeout sec
  This is the duration that a prune will stay active for a prune sent by this router. It defaults to 180 seconds.
inactivitytimeout sec
  This is the length of time that a forwarding cache entry will remain active once it becomes inactive, i.e. no more traffic is being forwarded for the Source, Group pair. The default value is 180 seconds.
graftacktimeout sec
  This is the length of time this PIM router will wait for a Graft to be acknowledged before it retransmits the Graft. The default value is 60 seconds.
preference
  The preference statement allows changing the preference values used in comparing protocols to determine the router that will forward multicast packets on a multiaccess LAN. These values are sent in Assert messages when more than one router is capable of forwarding the multicast packets and one detects the others duplicate packets. These values must be the same for each router on a multiaccess LAN. Therefore, the default values have been specifically coordinated to match other implementations. The default values are 0 for direct routes, 1 for static routes, 110 for OSPF and OSPFASE routes, 115 of ISIS routes, 120 for RIP routes, 130 for SLSP routes, 140 for EGP routes, 200 for BGP routes, 210 for IDRP routes, 220 for existing kernel routes, and 255 for hello routes.
interface interface_list
  Enables or disables PIM on this interface or list of interfaces.

  Currently, the gated implementation of PIM cannot detect when there are multiple addresses configured on the same physical interface. It will send PIM messages to each logical network. This should be fixed in a future release.

  The possible parameters are:

  disable
    Specifies that PIM packets received via the specified interface will be ignored. The default is to listen to PIM on all multicast capable interfaces.
  enable
    This is the default. This argument may be necessary when `disable` is used on a wildcard interface descriptor.
  mode
    This command specifies the default mode of PIM on the interface. It is exchanged with other PIM routers in the Router Query messages and allows the router to determine if explicit joins should be sent upstream (sparse) or default flooding and pruning should be performed (dense).
traceoptions trace_options
  Specifies the tracing options for PIM. (See Trace Statements and the PIM specific tracing options below.)

## Tracing options

Packet tracing options (which may be modified with `detail`, `send` or `recv`):

packets
  All PIM packets.
query
  PIM Router Query packets
register
  PIM Register, Register Stop, and RP packets
join
  PIM Join/Prune packets
assert
  PIM Assert packets
assert
  PIM Graft and Graft Ack packets

## Sample PIM configurations

See the sample multicast router configurations.

Last updated $Date: 1997/07/17 22:40:06 $.