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


pimdPIM-SM/SSM multicast routing daemon


pimd [-hnrsv] [-f FILE] [--no-fallback] [-d SYS[,SYS,...]] [-i NAME] [--pidfile FILE] [--disable-vifs] [-l LEVEL] [-t ID]


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.


This program follows the usual UNIX command line syntax, with long options starting with two dashes (`-'). The options are as follows:
-h, --help
Print a help message and exit.
-f, --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.
If pimd cannot find its configuration file it will start up with fallback defaults for bsr-candidate and rp-candidate. These fallbacks exist to ensure a fully working multicast routing setup. However, if there are other PIM routers that act as BSR and RP in the network, this option can be used to disable the built-in fallbacks.
This option works the same as if pimd finds an empty configuration file, or when bsr-candidate and rp-candidate are commented out.
-d, --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
-n, --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.
-i, --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 simply adapt to site specific practices, e.g. "PIM", without renaming the binary. Note, this option only changes the base name of the PID or configuration files, not the location, which is system specific. Usually /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.
-l, --loglevel LEVEL
Set log level to one of the following, default notice:
Disable all logging
Error conditions
Warning conditions
Normal but significant condition (default)
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.
-s, --syslog
Use syslog, default unless running in foreground, -n.
-t, --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.
-v, --version
Show pimd version


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.
Restart pimd and reload configuration file
Terminate execution gracefully, i.e. by sending good-bye messages to neighboring routers
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:
Main configuration file
Pidfile (re)created by pimd daemon when it has started up and is ready to receive commands
UNIX-domain socket used for communication with pimctl(8)


pimd.conf(5) pimd-dense(8), pimctl(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.
October 17, 2020 Debian