PIMD(8) (smm)
PIMD(8) System Manager's Manual (smm) PIMD(8)

pimd
PIM-SM/SSM multicast routing daemon

pimd [
-hnrsv
] [
-f FILE
] [
-d SYS[,SYS,...]
] [
-i NAME
] [
-p FILE
] [
--disable-vifs
] [
-l LEVEL
] [
-t ID
] [
-u FILE
] [
-w SEC
]

pimd is a stand-alone PIM-SM/SSM multicast routing daemon available under the free 3-clause BSD license. This is the restored original from University of Southern California, by Ahmed Helmy, Rusty Eddy and Pavlin Ivanov Radoslavov.
Protocol Independent Multicast - Sparse Mode (PIM-SM):
The robustness, flexibility, and scaling properties of this architecture make it well suited to large heterogeneous internetworks.
pimd originally only implemented RFC2362, but since v2.3.0 is supporting more and more of RFC4601.
pimd ships with a pimctl(8) tool, which is compatible with all PIM daemon's from the same family: pimd(8), pimd-dense(8), and pim6sd.

This program follows the usual UNIX command line syntax, with long options starting with two dashes (`-'). The options are as follows:
--help
Print a help message and exit.
--config FILE
Specify an alternative configuration file, the default /etc/pimd.conf, is derived from --ident NAME, which is strongly recommended to use over this option.
--debug SYS[,SYS...]
This option controls extended subsystem debugging, use all to enable all subsystems.
Available subsystems are:
All subsystems
PIM assert messages
PIM bootstrap router messages
PIM Candidate Rendez-Vous Point messages
Detailed PIM debug messages
IGMP messages
Interface (VIF) debug messages
PIM join-prune messages
Kernel messages
Multicast forwarding cache messages
Routing messages
PIM hello messages to/from neighbors
All inbound/outbout packets
All PIM messages
PIM register tunnel messages
PIM reverse-path forwarding messages
RSRR messages (if enabled)
PIM timer events
Multicast traceroute information
--foreground
Run in the foreground, do not detach from calling terminal and do not fork to background. Useful not only when debugging (above) but also when running under a process monitor like daemontools, runit, finit, or systemd. Remember to also use -s, to send all logs to the syslog daemon, unless you want to debug pimd and run in the foreground.
--ident NAME
Specify program identity (name) to be used for configuration file, PID file and syslog messages. Useful with multiple instances of pimd, or to adapt to site specific practices, e.g. "PIM", without renaming the binary.
Note, this option only changes the base name of the files, not the location, which is system specific. On most systems this is /var/run/pimd.pid, or /run/pimd.pid, and /etc/pimd.conf.
This prevents pimd from running on all interfaces by default. When this command line option is given, use phyint IFNAME enable to selectively activate PIM services on an interface. This command line option is also available as a setting in the configuration file.
--pidfile FILE
Set PID file name and location, defaults to /var/run/pimd.pid, derived from --ident NAME, which is strongly recommended to change over this option.
--loglevel LEVEL
Set log level to one of the following, default notice:
Disable all logging
Error conditions
Warning conditions
Normal but significant condition (default)
Informational
Debug-level messages
With this option, and --disable-vifs, pimd will retry (forever) querying the kernel for all required phyint interfaces listed in /etc/pimd.conf. Useful at startup when not all interfaces may be up or have an IP address assigned yet.
--syslog
Use syslog, default unless running in foreground, -n.
--table-id ID
Set multicast routing table ID. Remember to also create routing rules directing packets to the table. This example uses routing table ID 123:
ip mrule add iif eth0 lookup 123 
ip mrule add oif eth0 lookup 123
    
Note: Only available on Linux.
--ipc FILE
Override UNIX domain socket filename, the default is based on the identity, -i NAME. On most systems this is /var/run/pimd.sock.
--version
Show program version and support information.
--startup-delay SEC
Initial startup delay of SEC seconds before probing for interfaces. Useful if pimd starts before interfaces are created and have an IP address.

  1. Check the TTL of incoming multicast. Remember, the TTL of the multicast stream must be >1 to be routed. Or rather, greater than the configured ttl-threshold of the inbound phyint, see pimd.conf(5) for more information.
  2. If you see `Permission denied` in your logs, you are most likely having firewall, or SELinux, problems
  3. For PIM-SM, make sure you have a Rendezvous-Point (RP) in your network. Check the rp-candidate (CRP) and bsr-candidate (CBSR) settings in your pimd.conf(5), or rp-address if you prefer the static RP approach
  4. Check the Linux rp_filter sysctl setting. Many Linux systems have the "strict" setting enabled, "loose" can work but may cause problems in some setups. We recommend disabling the setting entirely
  5. PIM is protocol independent, meaning you must have unicast routing in place already for the multicast routing decisions made by pimd to work. Use ping(1) to verify connectivity between multicast sender and receiver

pimd responds to the following signals. However, consider using pimctl instead since this gives more and better output, and is also less prone to race conditions.
HUP
Restart pimd and reload configuration file
TERM
Terminate execution gracefully, i.e. by sending good-bye messages to neighboring routers
INT
The same as TERM
For convenience in sending signals, pimd writes its process ID to /var/run/pimd.pid upon startup. If started with a different identy, -i NAME, then NAME is used as basename of the PID file.

The basename of the following files change if pimd is started with a different identity, -i NAME:
/etc/pimd.conf
Main configuration file
/var/run/pimd.pid
Pidfile (re)created by pimd daemon when it has started up and is ready to receive commands
/var/run/pimd.sock
UNIX-domain socket used for communication with pimctl(8)

pimd.conf(5) pimctl(8), pimd-dense(8), pim6sd(8), mrouted(8), smcroute(8),
PIM-SM is described in, the now obsolete RFC2362, and the current RFC4601, with additions in RFC5059 and RFC5796.
The pages at USC, http://netweb.usc.edu/pim/, are unfortunately no longer available. The wiki pages at http://github.com/troglobit/pimd/, the new GitHub project, are an attempt to gather as much info as possible.

pimd was originally written by Ahmed Helmy, George Edmond "Rusty" Eddy, and Pavlin Ivanov Radoslavov. PIM-SSM, including full IGMPv3 support, was added by Markus Veranen. With contributions by many others.
This manual page was initially written by Antonín Král for the Debian GNU/Linux system. Updated by Joachim Wiberg for the GitHub pimd project.
December 23, 2020 Debian