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:
  -d
    SYS[,SYS...] 
  - This option controls extended subsystem debugging, use
      
all to enable all subsystems.
    
    Available subsystems are:
    
    
    
      graft 
      - Grafting operations, or grafted routes
 
      packet 
      - Debug inbound/outbout packets
 
      prunes 
      - Pruning operations, or pruned routes
 
      routes 
      - Routing messages
 
      neighbors 
      - Neighbor gossip
 
      mfc 
      - Debug multicast forwarding cache
 
      timeout 
      - Debug timeouts
 
      interface 
      - Show interface (VIF) debug messages
 
      groups 
      - Debug group memberships
 
      trace 
      - Multicast traceroute information
 
      igmp 
      - Debug IGMP messages
 
      rsrr 
      - Debug RSRR messages
 
      pim 
      - All PIM messages
 
      mrt 
      - PIM routing messages
 
      bsr 
      - PIM bootstrap router messages
 
      detail 
      - Detailed PIM debug
 
      hello 
      - Debug hello messages to/from neighbors
 
    
     
   
  -f
    FILE 
  - Specify an alternative configuration file, default:
      /etc/pimdd.conf.
 
  -h 
  - Print a help message and exit.
 
  -l
    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
 
    
     
   
  -n 
  - 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. 
  -p
    FILE 
  - Override PID filename, the default name is based on the identity,
      
-i
      NAME. On most systems this is
      /var/run/pimdd.pid. 
  -s 
  - Use syslog, default unless running in foreground,
      
-n. 
  -u
    FILE 
  - Override UNIX domain socket filename, the default is based on the
      identity, 
-i
      NAME. On most systems this is
      /var/run/pimdd.sock. 
  -v 
  - Show program version and support information.
 
  -w
    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.