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

pimdd
PIM-DM multicast routing daemon

pimdd [
-hnsv
] [
-d SYS[,SYS,...]
] [
-f FILE
] [
-l LEVEL
] [
-p FILE
] [
-u FILE
] [
-w SEC
]

pimdd is a stand-alone PIM-DM multicast routing daemon available under the 4-clause BSD license. This is the restored original from University of Oregon, by Kurt Windisch. pimdd is a PIM Dense Mode (PIM-DM) implementation based on pimd, which is the PIM Sparse Mode (PIM-SM) reference implementation, by Ahmed Helmy, Rusty Eddy and Pavlin Ivanov Radoslavov.
PIM-DM is a significantly less complex protocol than PIM-SM. PIM-DM works on the principle that it is probable that any given multicast streamwill have at least one downstream listener. PIM-DM is ideal where many hosts subscribe toreceive multicast packets, so most of the PIM Routers receive and forward all multicastpackets.
Where PIM-SM only forwards a multicast stream when requested, PIM-DM always floods anynew multicast stream that arrives at the PIM Router and only stops flooding the multicaststream on a given link if it is explicitly told to, by receiving a Prune message from the downstream PIM Router.
PIM-DM does not include the concepts of Rendez-vous Points, which are used in PIM-SM. PIM-SM explicitly builds unidirectional shared trees rooted at a Rendez-vous Point (RP) pergroup. PIM-DM implicitly builds shortest-path trees by flooding multicast traffic domain wide, then prunes back branches of the tree where no receivers are available. As with PIM-SM, so does PIM-DM also use Reverse Path Forwarding (RPF) to stop loops for packet forwarding for PIM Routers receiving multicast packets.

PIM Router
Any Layer-3 routing device that is running PIM, i.e., the physical device doing the actual forwarding, communicting using PIM frames with neighboring routers.
Reverse Path Forwarding
The mechanism that PIM uses to make sure it does not forward multicast streams around in loops. If a set of PIM Routers are connected in a loop, and each PIM Router is forwarding a given multicast stream, then eventually the multicast stream would be forwarded right around the loop.
To prevent this from happening, PIM makes use of the fact that the unicast routing tables in a set of PIM Routers should converge into a loop-free tree of paths to any given destination. When a PIM Router receives a multicast stream from source address A through an interface IF1, it checks whether IF1 is the interface the PIM Router would use to reach A. The PIM Router only forwards the multicast stream if IF1 is the interface the PIM Router would use to reach A. RPF determines whether the interface is correct by consulting unicast routing tables. This ensure that the multicast stream is forwarded in a loop-free manner back up the tree of unicast paths that lead to the source.
Forwarding multicast packets
PIM Routers forward a given multicast stream onto all PIM enabled IP interfaces that have not received a Prune for the given multicast stream. As with unicast routing, the PIM Router decrements the TTL (Time To Live) field in the IP header of each packet that the PIM Router forwards. The packet is discarded if the TTL is decremented to 0. However, unlike unicast routing, the destination MAC addresses of the packets are not altered as they are forwarded by the PIM Router. The destination MAC addresses remain set to the multicast MAC addresses corresponding to the destination group address of the multicast stream.
Upstream
Direction towards the Source.
Downstream
Any other than the upstream interface for that group.

This program follows the usual UNIX command line syntax. The options are as follows:
SYS[,SYS...]
This option controls extended subsystem debugging, use all to enable all subsystems.
Available subsystems are:
Grafting operations, or grafted routes
Debug inbound/outbout packets
Pruning operations, or pruned routes
Routing messages
Neighbor gossip
Debug multicast forwarding cache
Debug timeouts
Show interface (VIF) debug messages
Debug group memberships
Multicast traceroute information
Debug IGMP messages
Debug RSRR messages
All PIM messages
PIM routing messages
PIM bootstrap router messages
Detailed PIM debug
Debug hello messages to/from neighbors
FILE
Specify an alternative configuration file, default: /etc/pimdd.conf.
Print a help message and exit.
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
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 pimdd and run in the foreground.
FILE
Override PID filename, the default name is based on the identity, -i NAME. On most systems this is /var/run/pimdd.pid.
Use syslog, default unless running in foreground, -n.
FILE
Override UNIX domain socket filename, the default is based on the identity, -i NAME. On most systems this is /var/run/pimdd.sock.
Show program version and support information.
SEC
Initial startup delay of SEC seconds before probing for interfaces. Useful if pimdd starts before interfaces are created and have an IP address.

pimdd responds to the following signals.
HUP
Restart pimdd 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, pimdd writes its process ID to /var/run/pimdd.pid upon startup.

/etc/pimdd.conf
Main configuration file
/var/run/pimdd.pid
PID file created by pimdd when it has started up and is ready to receive commands. Also touched after a reload or SIGHUP as an acknowledgement. Possible to override with -p FILE.
/var/run/pimdd.sock
UNIX-domain socket used for communication with pimctl(8), possible to override with -u FILE.

pimdd.conf(5), pimctl(8), pimd(8), mrouted(8), smcroute(8)
pimdd implements PIM-DM according to an earlier draft version of the standard. The newer, and ratified, RFC3973, is not yet fully supported.

pimdd was made by Kurt Windisch while at University of Oregon. It is entirely based on pimd, which was originally written by Ahmed Helmy, George Edmond "Rusty" Eddy, and Pavlin Ivanov Radoslavov.
This manual page was written by Joachim Wiberg for the GitHub pimdd project.
May 18, 2020 Debian