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.
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.
traceoptions trace_options
Specifies the tracing options for PIM. (See Trace Statements and the PIM specific tracing
options below.)
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.
enableThis is the default. This argument may be necessary when disable is used on a wildcard interface descriptor.hellointerval secThis 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 secThis 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).
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
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