forked from troglobit/pimd
-
Notifications
You must be signed in to change notification settings - Fork 0
/
pimd.8
384 lines (384 loc) · 11.1 KB
/
pimd.8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
.\" Hey, EMACS: -*- nroff -*-
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.Dd $Mdocdate: Aug 18 2012 $
.\" Please adjust this date whenever revising the manpage.
.Dt PIMD 8 SMM
.Os
.Sh NAME
.Nm pimd
.Nd PIM-SM v2 dynamic multicast routing daemon
.Sh SYNOPSIS
.Nm pimd
.Op Fl fhlNqr
.Op Fl c Ar FILE
.Op Fl d Op Ar [LEVEL[,LEVEL,...]
.Sh DESCRIPTION
.Nm
is a lightweight stand-alone PIM-SM v2 multicast routing daemon. This is the
original USC (netweb/catarina) implementation of the protocol, which nowadays is
fully free to use under the 3-clause BSD license.
.Pp
Protocol Independent Multicast - Sparse Mode (PIM-SM):
.Bl -bullet -compact
.It
maintains the traditional IP multicast service model of receiver-initiated membership;
.It
uses explicit joins that propagate hop-by-hop from members' directly connected
routers toward the distribution tree.
.It
builds a shared multicast distribution tree centered at a Rendezvous Point, and then
builds source-specific trees for those sources whose data traffic warrants it.
.It
is not dependent on a specific unicast routing protocol; and
.It
uses soft-state mechanisms to adapt to underlying network conditions and group
dynamics.
.El
.Pp
The robustness, flexibility, and scaling properties of this architecture make it well
suited to large heterogeneous internetworks.
.Pp
.Nm
implements RFC 2362, which has been obsoleted by RFC 4601. Please see the TODO file
for more information on this.
.Sh OPTIONS
This program follows the usual UNIX command line syntax, with long options starting
with two dashes (`-'). The options are as follows:
.Bl -tag -width Ds
.It Fl h, -help
Print a help message and exit.
.It Fl c, -config=FILE
Specify an alternative configuration file, instead of the default
.Pa /etc/pimd.conf .
.It Fl d, -debug[=LEVEL[,LEVEL...]
By default,
.Nm
detaches from the invoking terminal.
If this option is specified,
.Nm
it runs in foreground of the starting terminal and responds to signals.
If
.Fl d
is given with no argument, the debug level defaults to
.Nm igmp, cache, interface, groups, prunes, routes and peers .
.sp
Regardless of the debug level,
.Nm
always writes warning and error messages to the system log daemon.
Debug levels have the following effects:
.Pp
.Bl -tag -width TERM -compact -offset indent
.It Cm packet
Debug inbound/outbout packets
.It Cm prunes
Pruning operations, or pruned routes
.It Cm routes
Routing messages
.It Cm rtdetail
Detailed routing information
.It Cm peers
Neighbor gossip
.It Cm cache
Debug routing cache
.It Cm timeout
Debug timeouts
.It Cm interface
Show interface, or vif, debug messages
.It Cm groups
Debug group memberships
.It Cm mtrace
Multicast traceroute information
.It Cm igmp
Debug IGMP messages
.It Cm icmp
Debug ICMP messages
.It Cm rsrr
Debug RSRR messages
.It Cm pim
All PIM messages
.It Cm pim_routes
PIM routing messages
.It Cm pim_bsr
PIM bootstrap router messages
.It Cm pim_detail
Detailed PIM debug
.It Cm pim_hello
Debug hello messages to/from neighbors
.El
.It Fl f, -foreground
Run in foreground, do not detach from calling terminal
.It Fl l, -reload-config
Tell a running pimd to reload its configuration. This is done by sending
a SIGHUP to the PID listed in
.Pa /var/run/pimd.pid .
.It Fl N, -disable-vifs
This prevents
.Nm
from being activated on all interfaces by default. Use `phyint enable` to selectively
activate it.
.It Fl q, -quit-daemon
Tell a running pimd to quit. Similar to --reload-config but this command sends SIGTERM.
.It Fl r, -show-routes
Show state of VIFs and multicast routing tables. This is command sends SIGUSR1 to a
running pimd, similar to --reload-config.
.It Fl v, -version
Show
.Nm
version
.El
.Sh CONFIGURATION
The configuration is kept in the file
.Pa /etc/pimd.conf .
The file format is free-form: whitespace (including newlines) is not
significant.
.Pp
All <masklen> arguments to an IPv4 address, group or network can also be
given in the alternative /CIDR format. E.g., <group>/<masklen>.
.Pp
There are eight different types of configuration commands:
.Bl -item -offset indent
.It
.Cm default_source_preference
.Ar <preference>
.It
.Cm default_source_metric
.Ar <metric>
.It
.Cm phyint
.Ar <local-addr Ns | Ns ifname>
.Oo
.Cm disable Ns | Ns Cm enable
.Oc
.br
.Oo
.Cm altnet Ar <network>[/<masklen> | Cm masklen <masklen>]
.Oc
.br
.Oo
.Cm scoped Ar <network>[/<masklen> | Cm masklen <masklen>]
.Oc
.br
.Op Cm threshold Ar thr
.Op Cm preference Ar pref
.Op Cm metric Ar cost
.It
.Cm cand_rp
.Op <local-addr>
.Op Cm priority Ar <number>
.Op Cm time Ar <number>
.It
.Cm cand_bootstrap_router
.Op <local-addr>
.Op Cm priority Ar <number>
.It
.Cm rp_address Ar <rp-addr> [<group-addr>[/<masklen> | masklen <masklen] [priority <number>]]
.It
.Cm group_prefix Ar <group-addr>[/<masklen> | Cm masklen Ar <masklen>]
.It
.Cm switch_data_threshold
.Op Cm rate Ar <number> Cm interval Ar <number>
.It
.Cm switch_register_threshold
.Op Cm rate Ar <number> Cm interval Ar <number>
.El
.Pp
By default,
.Nm
will be activated on all multicast capable interfaces. The
.Cm phyint
setting and the
.Fl N
command line option control this behaviour. More on
.Cm phyint
below.
.Pp
The
.Cm default_source_preference
option is used by assert elections to determine upstream routers. Currently
pimd cannot reliably obtain preferences and metrics from the unicast routing
protocols, so a default preference may be configured. In an assert election,
the router advertising the lowest assert preference will be selected as the
forwarder and upstream router for the LAN. Setting 101 should be sufficiently
high so that asserts from Cisco or GateD routers are prefered over poor-little
pimd.
.Pp
It is reccommended that preferences be set such that metrics are never
consulted. However, default metrics may also be set using the
.Cm default_source_metric
option. This item sets the cost for sending data through this router. You
want only PIM-SM data to go to this daemon; so once again, a high value is
recommended to prevent accidental usage. The preferred default value is 1024.
.Pp
The
.Nm phyint
option refers to a physical interface and must come after
.Cm default_source_metric .
Select the interface either by its IP address
.Ar local-addr
or interface name
.Ar ifname
(e.g. le0). If you just want to activate this interface with default values,
you don't need to put anything else on the line. However, there are some
additional settings:
.Bl -bullet -compact
.It
.Nm disable :
Do not send PIM-SM traffic through this interface nor listen for PIM-SM traffic
from this interface. Default: enable.
.Nm enable :
Selectively enable which interfaces to send PIM-SM traffic through. Useful with
the
.Fl N
command line option.
.It
.Nm preference pref :
This interface's value in an election. It will have the
.Nm
default_source_preference
if not assigned.
.It
.Nm metric cost :
The cost of sending data through this interface. It will have the
.Nm default_source_metric
if not assigned.
.It
.Nm altnet network/len :
Alternative host(s)/network(s) to accept as locally attached multicast
sources on a given interface. If a phyint is attached to multiple IP
subnets, describe each additional subnet with the altnet keyword.
.It
.Nm scoped network/len :
Optional scoping of multicast groups. This allows interfaces to be
configured as an administrative boundary for the specified
group(s). Multicast streams belonging to the scoped groups will not be
forwarded.
.El
.Pp
Add one
.Nm phyint
line per interface on this router. If you don't do this,
.Nm pimd
will either be completely silent (if you provide the
.Fl N
command line option), or simply assume that you want it to utilize all interfaces
using default settings.
.Pp
The
.Nm cand_rp
setting refers to Candidate Rendez-vous Point (CRP). It specifies which
interface on this machine should be included in RP elections.
.Bl -bullet -compact
.It
.Nm local-addr .
The default is the highest active IP address.
.It
.Nm time number .
The number of seconds to wait between advertising this CRP. The default value
is 60 seconds.
.It
.Nm priority number .
How important this CRP is compared to others. The lower the value here, the
more important the CRP.
.El
.Pp
The
.Nm cand_bootstrap_router
setting is similar to CRP. Only difference is the lack of a
.Nm time
option.
.Pp
The
.Nm group_prefix
statement outlines the set of multicast addresses that the CRP, if it wins an
election, will advertise to other routers.
.Bl -bullet -compact
.It
.Nm group-addr :
A specific multicast group or network range this router will handle.
.It
.Nm masklen :
Optional number of groups, in prefix length format. Remember that a
multicast address is a Class D and has a netmask of 240.0.0.0, which
means its length is 4.
.El
.Pp
Max
.Nm group_prefix
multicast addresses supported in pimd is 255.
.Pp
The
.Nm rp_address
setting is for static Rendez-vous Point configurations. The argument can either
be a unicast address or a multicast group, with an optional group address,
mask length, and priority arguments.
.Pp
The
.Nm switch_data_threshold
setting defines the threshold at which transmission rates trigger the
changeover from the shared tree to the RP tree; starting the line with
.Nm switch_register_threshold
does the opposite in the same format. Regardless of which of these you choose,
the rate option is for transmission rate in bits per second, interval is the
sample rate in seconds -- with a recommended minimum of five seconds. It is
recommended to have the same interval if both settings are used.
.Sh SIGNALS
.Nm
responds to the following signals:
.Pp
.Bl -tag -width TERM -compact
.It HUP
Restarts
.Nm .
The configuration file is reread every time this signal is evoked.
.It TERM
Terminates execution gracefully (i.e. by sending good-bye messages to all neighboring
routers).
.It INT
The same as TERM.
.It USR1
Dumps the internal state of VIFs and multicast routing tables to
.Pa /var/run/pimd/pimd.dump .
See also the --show-routes option above.
.\" Not implemented yet, still TODO
.\" .It USR2
.\" Dumps the internal cache tables to
.\" .Pa /var/run/pimd/pimd.cache .
.\" Also not implemented yet, TODO
.\" .It QUIT
.\" Dumps the internal routing tables to stderr (only if
.\" .Nm
.\" was invoked with a non-zero debug level).
.El
.Pp
For convenience in sending signals,
.Nm
writes its process ID to
.Pa /var/run/pimd.pid
upon startup.
.Sh FILES
.Bl -tag -width /var/run/pimd/pimd.cache -compact
.It Pa /etc/pimd.conf
.\" .It Pa /var/run/pimd/pimd.cache
.It Pa /var/run/pimd/pimd.dump
.It Pa /var/run/pimd.pid
.El
.Sh SEE ALSO
.Xr mrouted 8 ,
.Xr smcroute 8 ,
.Xr /usr/share/doc/pimd/
.Pp
PIM-SM is described in, the now obsolete RFC 2362, and the current RFC 4601, with
additions in RFC 5059 and RFC 5796.
.Pp
The pages at USC, http://netweb.usc.edu/pim/, are unfortunately no longer available.
The wiki pages at http://github.com/troglobit/pimd/, the new GitHub project, are an
attempt to gather as much info as possible.
.Sh AUTHORS
.Nm
was written by Ahmed Helmy, George Edmond "Rusty" Eddy, and Pavlin Ivanov
Radoslavov. With contributions by many others.
.Pp
This manual page was initially written by Antonín Král for the Debian GNU/Linux
system, and then updated by Joachim Nilsson for the GitHub pimd project.