Annotation of embedaddon/pimd/pimd.8, revision 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>