File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / pimd / pimd.8
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Mon Jun 12 07:59:37 2017 UTC (6 years, 11 months ago) by misho
Branches: pimd, MAIN
CVS tags: v2_3_2, HEAD
pimd 2.3.2

    1: .\"                                      Hey, EMACS: -*- nroff -*-
    2: .\" First parameter, NAME, should be all caps
    3: .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
    4: .\" other parameters are allowed: see man(7), man(1)
    5: .Dd Mar 3, 2016
    6: .\" Please adjust this date whenever revising the manpage.
    7: .Dt PIMD 8 SMM
    8: .Os
    9: .Sh NAME
   10: .Nm pimd
   11: .Nd PIM-SM/SSM v2 dynamic multicast routing daemon
   12: .Sh SYNOPSIS
   13: .Nm pimd
   14: .Op Fl fhlNqr
   15: .Op Fl c Ar FILE
   16: .Op Fl d Ar [SYS[,SYS,...]
   17: .Op Fl s Ar LEVEL
   18: .Sh DESCRIPTION
   19: .Nm
   20: is a lightweight, stand-alone PIM-SM/SSM v2 multicast routing daemon
   21: available under the free 3-clause BSD license.  This is the restored
   22: original from University of Southern California, by Ahmed Helmy, Rusty
   23: Eddy and Pavlin Ivanov Radoslavov.
   24: .Pp
   25: Protocol Independent Multicast - Sparse Mode (PIM-SM):
   26: .Bl -bullet -width 1n -compact
   27: .It
   28: maintains the traditional IP multicast service model of
   29: receiver-initiated membership;
   30: .It
   31: uses explicit joins that propagate hop-by-hop from members' directly
   32: connected routers toward the distribution tree.
   33: .It
   34: builds a shared multicast distribution tree centered at a Rendezvous
   35: Point (RP), and then builds source-specific trees for those sources
   36: whose data traffic warrants it.
   37: .It
   38: is not dependent on a specific unicast routing protocol; and
   39: .It
   40: uses soft-state mechanisms to adapt to underlying network conditions and
   41: group dynamics.
   42: .El
   43: .Pp
   44: The robustness, flexibility, and scaling properties of this architecture
   45: make it well suited to large heterogeneous internetworks.
   46: .Pp
   47: .Nm
   48: originally only implemented RFC2362, but since v2.3.0 is supporting more
   49: and more of RFC4601.
   50: .Sh OPTIONS
   51: This program follows the usual UNIX command line syntax, with long
   52: options starting with two dashes (`-').  The options are as follows:
   53: .Bl -tag -width Ds
   54: .It Fl h, -help
   55: Print a help message and exit.
   56: .It Fl c, -config=FILE
   57: Specify an alternative configuration file, default
   58: .Pa /etc/pimd.conf .
   59: If
   60: .Nm
   61: cannot find its configuration file it will start up with fallback
   62: defaults, which include enabling both
   63: .Cm bsr-candidate
   64: and
   65: .Cm rp-candidate .
   66: .It Fl d, -debug[=SYS[,SYS...]
   67: By default,
   68: .Nm
   69: daemonizes itself by detaching from the invoking terminal and forking to
   70: the background.  However, if
   71: .Fl d, -debug
   72: or
   73: .Fl f, -foreground
   74: is specified,
   75: .Nm
   76: runs in the foreground of the starting terminal.  If
   77: .Fl d
   78: is given without any argument
   79: .Nm
   80: defaults to debug all subystems.
   81: .Pp
   82: Available subsystems are:
   83: .Pp
   84: .Bl -tag -width pim_routes -compact -offset indent
   85: .It Cm packet
   86: Debug inbound/outbout packets
   87: .It Cm prunes
   88: Pruning operations, or pruned routes
   89: .It Cm routes
   90: Routing messages
   91: .It Cm rtdetail
   92: Detailed routing information
   93: .It Cm peers
   94: Neighbor gossip
   95: .It Cm cache
   96: Debug routing cache
   97: .It Cm timeout
   98: Debug timeouts
   99: .It Cm interface
  100: Show interface (VIF) debug messages
  101: .It Cm groups
  102: Debug group memberships
  103: .It Cm mtrace
  104: Multicast traceroute information
  105: .It Cm igmp
  106: Debug IGMP messages
  107: .It Cm icmp
  108: Debug ICMP messages
  109: .It Cm rsrr
  110: Debug RSRR messages
  111: .It Cm pim
  112: All PIM messages
  113: .It Cm pim_routes
  114: PIM routing messages
  115: .It Cm pim_bsr
  116: PIM bootstrap router messages
  117: .It Cm pim_detail
  118: Detailed PIM debug
  119: .It Cm pim_hello
  120: Debug hello messages to/from neighbors
  121: .El
  122: .It Fl f, -foreground
  123: Run in the foreground, do not detach from calling terminal and do not
  124: fork to background.  Useful not only when debugging (above) but also
  125: when running under a process monitor like daemontools, runit, finit, or
  126: systemd.
  127: .It Fl l, -reload-config
  128: Tell a running pimd to reload its configuration.  This is done by sending
  129: a SIGHUP to the PID listed in
  130: .Pa /var/run/pimd.pid .
  131: Depending on the capabilities of your user, you may need to be root to
  132: do this.
  133: .It Fl N, -disable-vifs
  134: This prevents
  135: .Nm
  136: from being activated on all interfaces by default.  When this command
  137: line option is given, use `phyint IFNAME enable` to selectively activate
  138: PIM services on an interface.
  139: .It Fl q, -quit-daemon
  140: Tell a running
  141: .Nm
  142: to quit.  Similar to
  143: .Fl l, -reload-config
  144: but this command sends SIGTERM.  Depending on the capabilities of your
  145: user, you may need to be root to do this.
  146: .It Fl r, -show-routes
  147: Show state of VIFs and multicast routing tables. This is command sends
  148: SIGUSR1 to a running
  149: .Nm ,
  150: similar to
  151: .Fl l -reload-config.
  152: Depending on the capabilities of your user, you may need to be root to
  153: do this.
  154: .It Fl v, -version
  155: Show
  156: .Nm
  157: version
  158: .It Fl s, -loglevel=LEVEL
  159: Set log level to one of the following, default
  160: .Nm notice :
  161: .Pp
  162: .Bl -tag -width WARNING -compact -offset indent
  163: .It Cm none
  164: Disable all logging
  165: .It Cm error
  166: Error conditions
  167: .It Cm warning
  168: Warning conditions
  169: .It Cm notice
  170: Normal but significant condition (Default)
  171: .It Cm info
  172: Informational
  173: .It Cm debug
  174: Debug-level messages
  175: .El
  176: .El
  177: .Sh CONFIGURATION
  178: The configuration is kept in the file
  179: .Pa /etc/pimd.conf .
  180: The file format is relatively free-form: whitespace (including newlines) is not
  181: significant.  However, the order of some statements are important, see
  182: more below.
  183: .Pp
  184: All <masklen> arguments to an IPv4 address, group or network can also be
  185: given in the alternative /CIDR format.  E.g., <group>/<masklen>.
  186: .Pp
  187: Here are the different configuration settings:
  188: .Bl -item -offset indent
  189: .It
  190: .Cm default-route-distance
  191: .Ar <1-255>
  192: .It
  193: .Cm default-route-metric
  194: .Ar <1-1024>
  195: .It
  196: .Cm igmp-query-interval
  197: .Ar <1-65535>
  198: .It
  199: .Cm igmp-querier-timeout
  200: .Ar <8-65535>
  201: .It
  202: .Cm hello-interval
  203: .Ar <30-18724>
  204: .It
  205: .Cm phyint
  206: .Cm <address | ifname>
  207: .Bl -item -offset indent
  208: .Op Cm disable | enable
  209: .Op Cm igmpv2 | igmpv3
  210: .br
  211: .Op Cm dr-priority Ar <1-4294967294>
  212: .br
  213: .Op Cm ttl-threshold Ar <1-255>
  214: .Op Cm distance Ar <1-255>
  215: .Op Cm metric Ar <1-1024>
  216: .br
  217: .Oo
  218: .Cm altnet Ar <network> Op Cm /<masklen> | Cm masklen <masklen>
  219: .Oc
  220: .br
  221: .Oo
  222: .Cm scoped Ar <network> Op Cm /<masklen> | Cm masklen <masklen>
  223: .Oc
  224: .El
  225: .It
  226: .Cm bsr-candidate
  227: .Op Ar address | Ar ifname
  228: .Op Cm priority Ar <number>
  229: .It
  230: .Cm rp-candidate
  231: .Op Ar address | Ar ifname
  232: .Op Cm priority Ar <0-255>
  233: .Op Cm time Ar <10-16384>
  234: .Bl -item -offset indent -compact
  235: .It
  236: .Cm group-prefix Ar <group>[/<masklen> | Cm masklen Ar <masklen>]
  237: .It
  238:  ...
  239: .It
  240: .Cm group-prefix ...
  241: .El
  242: .It
  243: .Cm rp-address Ar <address> [<group-addr>[/<masklen> | masklen <masklen]
  244: .It
  245: .Cm spt-threshold
  246: .Op Cm rate Ar <KBPS> | Cm packets Ar <NUM> | Cm infinity
  247: .Op Cm interval Ar <SEC>
  248: .El
  249: .Pp
  250: By default,
  251: .Nm
  252: will be activated on all multicast capable interfaces.  The
  253: .Cm phyint
  254: setting and the
  255: .Fl N, -disable-vifs
  256: command line option control this behaviour.  More on the
  257: .Cm phyint
  258: interface configuration setting below.
  259: .Pp
  260: The
  261: .Cm default-route-distance
  262: option has nothing to do with the system default route, it is rather the
  263: default value for the unicast routing protocol's administrative
  264: distance.  It is used in PIM Assert elections to determine upstream
  265: routers.  Currently
  266: .Nm
  267: cannot obtain the admin distance and metric from the unicast routing
  268: protocols, so a default routing protocol distance (the RFC confusingly
  269: refers to this as
  270: .Em metric prefererence )
  271: may be configured.  In a PIM Assert election, the router advertising the
  272: lowest assert preference will be selected as the forwarder and upstream
  273: router for the LAN.  Setting 101 should be sufficiently high so that
  274: asserts from Cisco or GateD routers are preferred over poor-little pimd.
  275: .Pp
  276: It is reccommended that distances be set such that metrics are never
  277: consulted.  However, default routing metrics may also be set using the
  278: .Cm default-route-metric
  279: option.  (Again, this has nothing to do with the system default route.)
  280: This item sets the cost for sending data through this router.  You want
  281: only PIM-SM data to go to this daemon; so once again, a high value is
  282: recommended to prevent accidental usage.  The preferred default value is
  283: 1024.  Both defaults can be overridden per phyint, so learned routes, or
  284: PIM Asserts use the phyint's values.
  285: .Pp
  286: Please also note that PIM Assert elections are not the same as the DR
  287: election.  The PIM Assert election determines the active multicast
  288: forwarder, whereas the DR election determines the active PIM router.
  289: .Pp
  290: Two settings for IGMP behavior are available:
  291: .Cm igmp-query-interval
  292: and
  293: .Cm igmp-querier-timeout
  294: which are similar, but very different.  The former controls the interval
  295: between IGMP querys when elected as querier, the latter controls the
  296: timeout for the elected querier -- before
  297: .Nm pimd
  298: decides to take over.  In IGMP the lowest numerical address in a LAN
  299: becomes the elected querier.  Obviously these settings must be handled
  300: with care.  The RFC recommends that the querier timeout is set to a
  301: robustness value times the query interval, plus have the query response
  302: time.  The pimd robustness value for IGMP is 3 and the default query
  303: response time is 10 sec.  Since pimd v2.3.0 the default query interval
  304: is 12 sec, which makes the querier timeut default to 41 sec, but this is
  305: rounded off to 42 to honor the late Douglas Adams.
  306: .Pp
  307: The PIM Hello message interval can be tuned by changing the
  308: .Cm hello-interval
  309: setting.  Changing this value also affects the hold-time value included
  310: in Hello messages.  The hold-time value is 3.5 times hello-interval.
  311: The default value for the Hello interval is 30 sec.  Anything less than
  312: 30 sec is considered an "aggressive" setting and is unsupported.
  313: .Pp
  314: The
  315: .Nm phyint
  316: option refers to a physical interface and must come after
  317: .Cm default-route-metric
  318: and
  319: .Cm default-route-distance .
  320: Select the interface either by its IP
  321: .Ar address
  322: or interface name
  323: .Ar ifname
  324: (e.g. eth0).  If you just want to activate this interface with default
  325: values, you don't need to put anything else on the line.  However, there
  326: are some additional settings:
  327: .Bl -bullet -offset indent -width 1n -compact
  328: .It
  329: .Nm disable :
  330: Do not send PIM-SM traffic through this interface nor listen for PIM-SM traffic
  331: from this interface.  Default: enable.
  332: .Nm enable :
  333: Selectively enable which interfaces to send PIM-SM traffic through.  Useful with
  334: the
  335: .Fl N
  336: command line option.
  337: .It
  338: .Nm igmpv2 :
  339: Force interface to use IGMPv2, or
  340: .It
  341: .Nm igmpv3 :
  342: Use IGMPv3, this is the default since v2.3.0.
  343: .It
  344: .Cm dr-priority Ar <1-4294967294> :
  345: When there are multiple PIM routers on the same LAN the DR is usually
  346: elected based on the highest numerical IP address.  This setting can be
  347: used to control the DR Priority option in PIM Hellow messages, which by
  348: default otherwise is 1.  When the DR Priority option is advertised by
  349: .Em all
  350: PIM routers on the same LAN the highest priority router wins the DR
  351: election, regardless of its IP.  If any router does
  352: .Em not
  353: advertise the DR Priority option, or the same priority is advertised by
  354: more than one router, the protocol falls back to using the IP address.
  355: .It
  356: .Cm ttl-threshold Ar <1-255> :
  357: The TTL threshold for multicast frames to be forwarded from this
  358: interface.  Default: 1
  359: .It
  360: .Cm distance Ar <1-255> :
  361: Use this to override the
  362: .Nm default-route-distance
  363: (101) on this
  364: .Nm phyint
  365: in PIM Assert elections.
  366: .It
  367: .Cm metric Ar <1-1024> :
  368: The cost of sending data through this interface.  Defaults to
  369: .Nm default-route-metric
  370: (1024) if not assigned.
  371: .It
  372: .Cm altnet Ar <network/len> :
  373: Alternative host(s)/network(s) to accept as locally attached multicast
  374: sources on a given interface. If a phyint is attached to multiple IP
  375: subnets, describe each additional subnet with the altnet keyword.
  376: .It
  377: .Cm scoped Ar <network/len> :
  378: Optional scoping of multicast groups. This allows interfaces to be
  379: configured as an administrative boundary for the specified
  380: group(s). Multicast streams belonging to the scoped groups will not be
  381: forwarded.
  382: .El
  383: .Pp
  384: Add one
  385: .Nm phyint
  386: line per interface on this router.  If you don't do this,
  387: .Nm pimd
  388: will either be completely silent (if you provide the
  389: .Fl N
  390: command line option), or simply assume that you want it to utilize all interfaces
  391: using default settings.
  392: .Pp
  393: Both the
  394: .Cm bsr-candidate
  395: (CBSR) and
  396: .Cm rp-candidate
  397: (CRP) settings are enabled in the default configuration.  Disabling
  398: them, by commenting them out in the config file, for all PIM capable
  399: routers is a bad idea.  When troubleshooting, ensure at least one
  400: bootstrap router (BSR) and at least one rendez-vous point (RP) in
  401: PIM-SM, is available.  Both settings share the following options, with
  402: priority being interpreted differently:
  403: .Pp
  404: .Bl -bullet -offset indent -width 1n -compact
  405: .It
  406: .Nm address | ifname :
  407: Optional local IPv4 address, or interface name to acquire address from.
  408: If both address and ifname is left out,
  409: .Nm
  410: will default to the highest active IP address.
  411: .It
  412: .Nm priority Ar <0-255> :
  413: How important this router is compared to others.  For CRP, the lower the
  414: value the more important the router is considered.  For BSR it is of
  415: course the exact opposite: a higher value is preferred.  If the priority
  416: is left out
  417: .Nm
  418: and Cisco IOS defaults to 0 for both, but the standard says 192 for RP.
  419: .It
  420: .Nm time Ar <10-16383> :
  421: The number of seconds to wait between advertising this CRP.  The default
  422: value is 30 seconds.  Use a lower value for faster convergence.
  423: .El
  424: .Pp
  425: .Bl -item -offset indent -compact
  426: .It
  427: The
  428: .Nm group-prefix
  429: sub-setting to
  430: .Nm rp-candidate
  431: is the set of multicast groups that the CRP will advertise to other
  432: routers, if it wins an election:
  433: .Bl -bullet -offset indent -width 1n -compact
  434: .It
  435: .Nm group :
  436: A specific multicast group or network range this router will handle.
  437: .It
  438: .Nm masklen :
  439: Optional number of groups, in prefix length format. Remember that a
  440: multicast address is a Class D and has a netmask of 240.0.0.0, which
  441: means its length is 4.
  442: .El
  443: .Pp
  444: Multiple lines of
  445: .Nm group-prefix
  446: may be given, but max number of records supported in pimd is 255.
  447: .El
  448: .Pp
  449: The
  450: .Nm rp-address
  451: setting is for static rendezvous point (RP) configurations.  It defines
  452: the RP for a given group, or range or groups.  The argument can be
  453: either a unicast address or a multicast group, with an optional group
  454: address and netmask.  Default group and netmask is 224.0.0.0/16.
  455: .Nm Note:
  456: all static RP's are announced with priority 1.
  457: .Pp
  458: The
  459: .Nm spt-threshold
  460: setting replaces two older configuration settings,
  461: .Nm switch_data_threshold
  462: and
  463: .Nm switch_register_threshold .
  464: It controls the switch-over from the shared tree to the shortest-path
  465: source tree.  The default is to do the switch-over after the first
  466: packet, but only after 100 seconds.  If
  467: .Ar infinity
  468: is specified the shortest path switch-over is disabled.
  469: .Sh SIGNALS
  470: .Nm
  471: responds to the following signals:
  472: .Pp
  473: .Bl -tag -width TERM -compact
  474: .It HUP
  475: Restarts
  476: .Nm .
  477: The configuration file is reread every time this signal is evoked.
  478: .It TERM
  479: Terminates execution gracefully (i.e. by sending good-bye messages to all neighboring
  480: routers).
  481: .It INT
  482: The same as TERM.
  483: .It USR1
  484: Dumps the internal state of VIFs and multicast routing tables to
  485: .Pa /var/run/pimd/pimd.dump .
  486: See also the
  487: .Fl r, -show-routes
  488: option above.
  489: .\" Not implemented yet, still TODO
  490: .\" .It USR2
  491: .\" Dumps the internal cache tables to
  492: .\" .Pa /var/run/pimd/pimd.cache .
  493: .\" Also not implemented yet, TODO
  494: .\" .It QUIT
  495: .\" Dumps the internal routing tables to stderr (only if
  496: .\" .Nm
  497: .\" was invoked with a non-zero debug level).
  498: .El
  499: .Pp
  500: For convenience in sending signals,
  501: .Nm
  502: writes its process ID to
  503: .Pa /var/run/pimd.pid
  504: upon startup.
  505: .Sh FILES
  506: .Bl -tag -width /var/run/pimd/pimd.cache -compact
  507: .It Pa /etc/pimd.conf
  508: .\" .It Pa /var/run/pimd/pimd.cache
  509: .It Pa /var/run/pimd/pimd.dump
  510: .It Pa /var/run/pimd.pid
  511: .El
  512: .Sh SEE ALSO
  513: .Xr mrouted 8 ,
  514: .Xr smcroute 8 ,
  515: .Xr /usr/share/doc/pimd/
  516: .Pp
  517: PIM-SM is described in, the now obsolete RFC2362, and the current
  518: RFC4601, with additions in RFC5059 and RFC5796.
  519: .Pp
  520: The pages at USC, http://netweb.usc.edu/pim/, are unfortunately no
  521: longer available.  The wiki pages at http://github.com/troglobit/pimd/,
  522: the new GitHub project, are an attempt to gather as much info as
  523: possible.
  524: .Sh AUTHORS
  525: .Nm
  526: was written by Ahmed Helmy, George Edmond "Rusty" Eddy, and Pavlin
  527: Ivanov Radoslavov.  PIM-SSM, including full IGMPv3 support, added by
  528: Markus Veranen.  With contributions by many others.
  529: .Pp
  530: This manual page was initially written by Antonín Král for the Debian
  531: GNU/Linux system, and then updated by Joachim Nilsson for the GitHub
  532: pimd project.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>