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):
- maintains the traditional IP multicast service model of receiver-initiated
membership
- uses explicit joins that propagate hop-by-hop from members' directly
connected routers toward the distribution tree
- builds a shared multicast distribution tree centered at a Rendezvous Point
(RP), and then builds source-specific trees for those sources whose data
traffic warrants it
- is not dependent on a specific unicast routing protocol, and
- uses soft-state mechanisms to adapt to underlying network conditions and
group dynamics
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:
-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.
-d,
--debug
SYS[,SYS...]
- This option controls extended subsystem debugging, use
all
to enable all subsystems.
Available subsystems are:
all
- All subsystems
asserts
- PIM assert messages
bsr
- PIM bootstrap router messages
crp
- PIM Candidate Rendez-Vous Point messages
detail
- Detailed PIM debug messages
igmp
- IGMP messages
interfaces
- Interface (VIF) debug messages
jp
- PIM join-prune messages
kernel
- Kernel messages
mfc
- Multicast forwarding cache messages
mrt
- Routing messages
neighbors
- PIM hello messages to/from neighbors
packets
- All inbound/outbout packets
pim
- All PIM messages
registers
- PIM register tunnel messages
rpf
- PIM reverse-path forwarding messages
rsrr
- RSRR messages (if enabled)
timers
- PIM timer events
traceroute
- 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 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.
--disable-vifs
- 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.
-p,
--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
:
none
- Disable all logging
error
- Error conditions
warning
- Warning conditions
notice
- Normal but significant condition (default)
info
- Informational
debug
- Debug-level messages
-r
- 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.
-u,
--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.
-v,
--version
- Show program version and support information.
-w,
--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.
- 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.
- If you see `Permission denied` in your logs, you are most likely having
firewall, or SELinux, problems
- 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
- 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
- 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.