PIM – Protocol Independent Multicast
pimd supports pim-sm as well as igmp v2 and v3. pim is vrf aware and can work within the context of vrf’s in order to do S,G mrouting.
The default configuration file name of pimd‘s is pimd.conf. When invoked pimd searches directory /etc/frr. If pimd.conf is not there then next search current directory.
pimd requires zebra for proper operation. Additionally pimd depends on routing properly setup and working in the network that it is working on.
# zebra -d
# pimd -d
Please note that zebra must be invoked before pimd.
To stop pimd please use:
kill `cat /var/run/pimd.pid`
Certain signals have special meanings to pimd.
Signal | Meaning |
---|---|
SIGUSR1 | Rotate the pimd logfile |
SIGINT SIGTERM | pimd sweeps all installed PIM mroutes then terminates gracefully. |
pimd invocation options. Common options that can be specified (Common Invocation Options).
In order to use pim, it is necessary to configure a RP for join messages to be sent to. Currently the only methodology to do this is via static rp commands. All routers in the pim network must agree on these values. The first ip address is the RP’s address and the second value is the matching prefix of group ranges covered. This command is vrf aware, to configure for a vrf, enter the vrf submode.
On the last hop router if it is desired to not switch over to the SPT tree. Configure this command. This command is vrf aware, to configure for a vrf, enter the vrf submode.
If pim has the a choice of ECMP nexthops for a particular RPF, pim will cause S,G flows to be spread out amongst the nexthops. If this command is not specified then the first nexthop found will be used. This command is vrf aware, to configure for a vrf, enter the vrf submode.
If pim is using ECMP and an interface goes down, cause pim to rebalance all S,G flows across the remaining nexthops. If this command is not configured pim only modifies those S,G flows that were using the interface that went down. This command is vrf aware, to configure for a vrf, enter the vrf submode.
Modify the join/prune interval that pim uses to the new value. Time is specified in seconds. This command is vrf aware, to configure for a vrf, enter the vrf submode.
Modify the time out value for a S,G flow from 31-60000 seconds. 31 seconds is chosen for a lower bound because some hardware platforms cannot see data flowing in better than 30 second chunks. This command is vrf aware, to configure for a vrf, enter the vrf submode.
When processing packets from a neighbor process the number of packets incoming at one time before moving on to the next task. The default value is 3 packets. This command is only useful at scale when you can possibly have a large number of pim control packets flowing. This command is vrf aware, to configure for a vrf, enter the vrf submode.
Modify the time that pim will register suppress a FHR will send register notifications to the kernel. This command is vrf aware, to configure for a vrf, enter the vrf submode.
When sending pim hello packets tell pim to send any v6 secondary addresses on the interface. This information is used to allow pim to use v6 nexthops in it’s decision for RPF lookup. This command is vrf aware, to configure for a vrf, enter the vrf submode.
Specify a range of group addresses via a prefix-list that forces pim to never do SM over. This command is vrf aware, to configure for a vrf, enter the vrf submode.
Modify how PIM does RPF lookups in the zebra routing table. You can use these choices:
PIM interface commands allow you to configure an interface as either a Receiver or a interface that you would like to form pim neighbors on. If the interface is in a vrf, enter the interface command with the vrf keyword at the end.
Turns on BFD support for PIM for this interface.
Set the DR Priority for the interface. This command is useful to allow the user to influence what node becomes the DR for a lan segment.
Set the pim hello and hold interval for a interface.
Tell pim that we would like to use this interface to form pim neighbors over. Please note we will not accept igmp reports over this interface with this command.
Tell pim to receive IGMP reports and Query on this interface. The default version is v3. This command is useful on the LHR.
Join multicast source-group on an interface.
Set the IGMP query interval that PIM will use.
Set the IGMP query response timeout value. If an report is not returned in the specified time we will assume the S,G or *,G has timed out.
Set the IGMP version used on this interface. The default value is 3.
Set a pim multicast boundary, based upon the WORD prefix-list. If a pim join or IGMP report is received on this interface and the Group is denied by the prefix-list, PIM will ignore the join or report.
In order to influence Multicast RPF lookup, it is possible to insert into zebra routes for the Multicast RIB. These routes are only used for RPF lookup and will not be used by zebra for insertion into the kernel or for normal rib processing. As such it is possible to create weird states with these commands. Use with caution. Most of the time this will not be necessary.
Insert into the Multicast Rib Route A.B.C.D/M with specified nexthop. The distance can be specified as well if desired.
Insert into the Multicast Rib Route A.B.C.D/M using the specified INTERFACE. The distance can be specified as well if desired.
All PIM show commands are vrf aware and typically allow you to insert a specified vrf command if information is desired about a specific vrf. If no vrf is specified then the default vrf is assumed. Finally the special keyword ‘all’ allows you to look at all vrfs for the command. Naming a vrf ‘all’ will cause great confusion.
Display IGMP interface information.
Display IGMP static join information.
Display IGMP groups information.
Display IGMP group retransmission information.
Display IGMP sources information.
Display IGMP source retransmission information.
Display IGMP statistics information.
Display various information about the interfaces used in this pim instance.
Display information about installed into the kernel S,G mroutes.
Display information about installed into the kernel S,G mroutes and in addition display data about packet flow for the mroutes.
Display information about asserts in the PIM system for S,G mroutes.
Display internal assert state for S,G mroutes
Display metric information about assert state for S,G mroutes
Display winner metric for assert state for S,G mroutes
Display SSM group ranges.
Display information about interfaces PIM is using.
Display information about PIM joins received.
Display information about PIM interface local-membership.
Display information about PIM neighbors.
Display information about pim nexthops that are being used.
Display information about a S,G pair and how the RPF would be chosen. This is especially useful if there are ECMP’s available from the RPF lookup.
Display information about RP’s that are configured on this router.
Display information about currently being used S,G’s and their RPF lookup information. Additionally display some statistics about what has been happening on the router.
Display information about an interface and all the secondary addresses associated with it.
Display information about known S,G’s and incoming interface as well as the OIL and how they were chosen.
Display upstream information about a S,G mroute.
Display upstream information for S,G’s and if we desire to join the multicast tree
Display upstream information for S,G’s and the RPF data associated with them.
Display the multicast RIB created in zebra.
Display multicast traceroute towards source, optionally for particular group.
The debugging subsystem for PIM behaves in accordance with how FRR handles debugging. You can specify debugging at the enable CLI mode as well as the configure CLI mode. If you specify debug commands in the configuration cli mode, the debug commands can be persistent across restarts of the FRR pimd if the config was written out.
This turns on debugging for IGMP protocol activity.
This turns on debugging for mtrace protocol activity.
This turns on debugging for PIM interaction with kernel MFC cache.
This turns on debugging for PIM system events. Especially timers.
This turns on debugging for PIM nexthop tracking. It will display information about RPF lookups and information about when a nexthop changes.
This turns on an extraordinary amount of data. Each pim packet sent and received is dumped for debugging purposes. This should be considered a developer only command.
This turns on information about packet generation for sending and about packet handling from a received packet.
This traces pim code and how it is running.
This gathers data about events from zebra that come up through the ZAPI.