Annotation of embedaddon/pimd/pimd.8, revision 1.1.1.1

1.1       misho       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>