6.3.2 Multicast Routing Protocols

3. Protocol Independent Multicast - Sparse Mode (PIM-SM)

Traditional multicast routing mechanisms (e.g. DVMRP and MOSPF) were in intended for use within regions where groups are densely populated or bandwidth is universally plentiful. When groups, and senders to these groups, are distributed sparsely across a wide area, these "dense mode" schemes do not perform efficiently. PIM is made of two protocols, one for each type of group distribution. PIM Sparse Mode (PIM-SM) provides efficient routing for a group distributed sparsely across a wide area. PIM Dense Mode (PIM-DM) provides multicast routing for a densely populated group.

Multicasting Protocols require two different functions in order to create the source based trees or group based trees:

PIM is protocol independent because it depends on existing unicast routes to calculate the Reverse Path Forwarding. In contrast, DVMRP passes this set of routes within the protocol.

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.

PIM-DM and PIM-SM share some common processing of PIM packets received. This common processing is configured in the PIM protocol statement. The PIM-SM protocol statement configures the PIM-SM information for components on this router or PIM-SM neighbors. The PIM-DM protocol statement configures the PIM Dense Mode protocol.




The PIM-SM Statement

pimsm yes | no | on | off [ {
    hellointerval sec ;
    crpadvperiod sec ;
    holdtime sec ;
    bootstrap [value | off]  ;
    c-rp [on | off] ;
    component name {
		    interface interface_list pimsm_options ;
		    };
    traceoptions trace_options ;
} ] ;










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

The pimsm options are as follows:

traceoptions trace_options

Specifies the tracing options for PIM. (See Trace Statements and the PIM specific tracing options below.)

hellointerval sec
To avoid synchronization among routers booting simultaneously, it is initially set to a random value between 1 and hellointerval seconds. When it expires, the timer is immediately restarted to hellointerval seconds. A hello message is them sent out each interface. This timer's The Hello timer is used to periodically send Hello messages. Should not be restarted by other events. If not specified, the default value is 30 seconds.
crpadvperiod sec
For Candidate-Rendevous Points (C-RPs), this is the interval between sending C-RP-ADV messages. Default is 60 seconds when the default.

holdtime sec

This should be set to 3.5 the hellointerval or a default of 105 seconds (or 3.5 * hello interval default of 30 seconds)

bootstrap [priority | off ]

This flag indicates whether a router is a candidate bootstrap router. If the router is a bootstrap router, the bootstrap router with the highest BSR-priority and the IP address is elected BSR for the domain. The BSR sends the Candidate-RP-Advertisements.

crp [on | off]

If the crp is on, this router is a candidate RP router. If the crp is off, this router is not a candidate RP router.

component name {

interface interface_list pimsm_options;
};

The following options are pimsm_options which can be specified as pimsm_option:

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.
hellointerval sec
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).
jp-period sec
This is the interval between sending Join/Prune messages. The default is 60 seconds. This value may be set to take into account such things as configured bandwidth and expected average number of multicast route entries for the attached network or links (e.g. longer period for lower speed links). In addition, a router could modify this value if the number of route entries changes. For example, if the route entries increases from 2 to 200, the jp-period could be increased by a factor of 10.
bootstrap [on | off ]
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).




PIM-SM Tracing Options



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

packets

All PIM packets.

Hello

PIM Router Hello packets

register

PIM Register and Register Stop packets

bootstrap

PIM bootstarp packets

join

PIM Join packets

prune

PIM Prune packets

assert

PIM Assert packets

assert

PIM Graft and Graft Ack packets


Sample PIM Configurations



pimsm yes {

traceoptions "pimsm.trace" replace state detail packets;

hellointerval 60;

cradvperiod 60;

component "sm0" {

interface ppp0 disable;

interface ed0 bootstrap 1 crp hellointerval 30;

};

component "sm1" {

interface ep0 enable crp;

};

};

See the sample multicast router configurations.




















Last updated April 26, 1997

gated@gated.merit.edu