pimd
is a lightweight stand-alone PIM-SM v2 multicast routing daemon. This is the
original USC (netweb/catarina) implementation of the protocol, which nowadays is
fully free to use under the 3-clause BSD license.
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, 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
implements RFC 2362, which has been obsoleted by RFC 4601. Please see the TODO file
for more information on this.
OPTIONS
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.
-c, -config=FILE
Specify an alternative configuration file, instead of the default
/etc/pimd.conf
-d, -debug[=LEVEL[,LEVEL...]
By default,
pimd
detaches from the invoking terminal.
If this option is specified,
pimd
it runs in foreground of the starting terminal and responds to signals.
If
-d
is given with no argument, the debug level defaults to
igmp, cache, interface, groups, prunes, routes and peers
Regardless of the debug level,
pimd
always writes warning and error messages to the system log daemon.
Debug levels have the following effects:
packet
Debug inbound/outbout packets
prunes
Pruning operations, or pruned routes
routes
Routing messages
rtdetail
Detailed routing information
peers
Neighbor gossip
cache
Debug routing cache
timeout
Debug timeouts
interface
Show interface, or vif, debug messages
groups
Debug group memberships
mtrace
Multicast traceroute information
igmp
Debug IGMP messages
icmp
Debug ICMP messages
rsrr
Debug RSRR messages
pim
All PIM messages
pim_routes
PIM routing messages
pim_bsr
PIM bootstrap router messages
pim_detail
Detailed PIM debug
pim_hello
Debug hello messages to/from neighbors
-f, -foreground
Run in foreground, do not detach from calling terminal
-l, -reload-config
Tell a running pimd to reload its configuration. This is done by sending
a SIGHUP to the PID listed in
/var/run/pimd.pid
-N, -disable-vifs
This prevents
pimd
from being activated on all interfaces by default. Use `phyint enable` to selectively
activate it.
-q, -quit-daemon
Tell a running pimd to quit. Similar to --reload-config but this command sends SIGTERM.
-r, -show-routes
Show state of VIFs and multicast routing tables. This is command sends SIGUSR1 to a
running pimd, similar to --reload-config.
-v, -version
Show
pimd
version
CONFIGURATION
The configuration is kept in the file
/etc/pimd.conf
The file format is free-form: whitespace (including newlines) is not
significant. There are eight different types of configuration commands:
By default,
pimd
will be activated on all multicast capable interfaces. The
phyint
setting and the
-N
command line option control this behaviour. More on
phyint
below.
The
default_source_preference
option is used by assert elections to determine upstream routers. Currently
pimd cannot reliably obtain preferences and metrics from the unicast routing
protocols, so a default preference may be configured. In an assert election,
the router advertising the lowest assert preference will be selected as the
forwarder and upstream router for the LAN. Setting 101 should be sufficiently
high so that asserts from Cisco or GateD routers are prefered over poor-little
pimd.
It is reccommended that preferences be set such that metrics are never
consulted. However, default metrics may also be set using the
default_source_metric
option. This item sets the cost for sending data through this router. You
want only PIM-SM data to go to this daemon; so once again, a high value is
recommended to prevent accidental usage. The preferred default value is 1024.
The
phyint
option refers to a physical interface and must come after
default_source_metric
Select the interface either by its IP address
local-addr
or interface name
ifname
(e.g. le0). If you just want to activate this interface with default values,
you don't need to put anything else on the line. However, there are some
additional settings:
disable
Do not send PIM-SM traffic through this interface nor listen for PIM-SM traffic
from this interface. Default: enable.
enable
Selectively enable which interfaces to send PIM-SM traffic through. Useful with
the
-N
command line option.
preference pref
This interface's value in an election. It will have the
pimd
default_source_preference
if not assigned.
metric cost
The cost of sending data through this interface. It will have the
default_source_metric
if not assigned.
Add one
phyint
line per interface on this router. If you don't do this,
pimd
will either be completely silent (if you provide the
-N
command line option), or simply assume that you want it to utilize all interfaces
using default settings.
The
cand_rp
setting refers to Candidate Rendez-vous Point (CRP). It specifies which
interface on this machine should be included in RP elections.
local-addr
The default is the highest active IP address.
time number
The number of seconds to wait between advertising this CRP. The default value
is 60 seconds.
priority number
How important this CRP is compared to others. The lower the value here, the
more important the CRP.
The
cand_bootstrap_router
setting is similar to CRP. Only difference is the lack of a
time
option.
The
group_prefix
statement outlines the set of multicast addresses that the CRP, if it wins an
election, will advertise to other routers.
group-addr
A specific multicast group or network range this router will handle.
masklen len
The number of IP address segments taken up by the netmask. Remember that a
multicast address is a Class D and has a netmask of 240.0.0.0, which means its
length is 4.
Max
group_prefix
multicast addresses supported in pimd is 255.
The
rp_address
setting is for static Rendez-vous Point configurations. The argument can either
be a unicast address or a multicast group.
The
switch_data_threshold
setting defines the threshold at which transmission rates trigger the
changeover from the shared tree to the RP tree; starting the line with
switch_register_threshold
does the opposite in the same format. Regardless of which of these you choose,
the rate option is for transmission rate in bits per second, interval is the
sample rate in seconds -- with a recommended minimum of five seconds. It is
recommended to have the same interval if both settings are used.
SIGNALS
pimd
responds to the following signals:
HUP
Restarts
.
The configuration file is reread every time this signal is evoked.
TERM
Terminates execution gracefully (i.e. by sending good-bye messages to all neighboring
routers).
INT
The same as TERM.
USR1
Dumps the internal state of VIFs and multicast routing tables to
/var/lib/misc/pimd.dump
See also the --show-routes option above.
For convenience in sending signals,
pimd
writes its process ID to
/var/run/pimd.pid
upon startup.
pimd
was written by Ahmed Helmy, George Edmond "Rusty" Eddy, and Pavlin Ivanov
Radoslavov. With contributions by many others.
This manual page was initially written by Antonín Král for the Debian GNU/Linux
system, and then updated by Joachim Nilsson for the GitHub pimd project.