Annotation of embedaddon/mrouted/mrouted.8, revision 1.1.1.1
1.1 misho 1: .\" $OpenBSD: mrouted.8,v 1.22 2010/04/05 16:47:01 deraadt Exp $
2: .\" The mrouted program is covered by the license in the accompanying file
3: .\" named "LICENSE". Use of the mrouted program represents acceptance of
4: .\" the terms and conditions listed in that file.
5: .\"
6: .\" The mrouted program is COPYRIGHT 1989 by The Board of Trustees of
7: .\" Leland Stanford Junior University.
8: .Dd $Mdocdate: April 5 2010 $
9: .Dt MROUTED 8 SMM
10: .Os
11: .Sh NAME
12: .Nm mrouted
13: .Nd IP multicast routing daemon
14: .Sh SYNOPSIS
15: .Nm mrouted
16: .Op Fl fhp
17: .Op Fl c Ar FILE
18: .Op Fl d Op Ar [LEVEL[,LEVEL,...]
19: .Sh DESCRIPTION
20: .Nm
21: is an implementation of the Distance-Vector Multicast Routing
22: Protocol (DVMRP), an earlier version of which is specified in RFC 1075.
23: It maintains topological knowledge via a distance-vector routing protocol
24: (like RIP, described in RFC 1058), upon which it implements a multicast
25: datagram forwarding algorithm called Reverse Path Multicasting.
26: .Pp
27: .Nm
28: forwards a multicast datagram along a shortest (reverse) path tree
29: rooted at the subnet on which the datagram originates.
30: The multicast delivery tree may be thought of as a broadcast delivery
31: tree that has been pruned back so that it does not extend beyond those
32: subnetworks that have members of the destination group.
33: Hence, datagrams are not forwarded along those branches which have no
34: listeners of the multicast group.
35: The IP time-to-live of a multicast datagram can be
36: used to limit the range of multicast datagrams.
37: .Pp
38: In order to support multicasting among subnets that are separated by (unicast)
39: routers that do not support IP multicasting,
40: .Nm
41: includes support for
42: "tunnels", which are virtual point-to-point links between pairs of
43: .Nm
44: daemons located anywhere in an internet.
45: IP multicast packets are encapsulated for transmission through tunnels,
46: so that they look like normal unicast datagrams to intervening routers
47: and subnets.
48: The encapsulation is added on entry to a tunnel, and stripped off on exit
49: from a tunnel.
50: By default, the packets are encapsulated using the IP-in-IP protocol
51: (IP protocol number 4).
52: Older versions of
53: .Nm
54: tunnel use IP source routing, which puts a heavy load on some
55: types of routers.
56: This version does not support IP source route tunnelling.
57: .Pp
58: The tunnelling mechanism allows
59: .Nm
60: to establish a virtual internet, for the purpose of multicasting only,
61: which is independent of the physical internet, and which may span
62: multiple Autonomous Systems.
63: This capability is intended for experimental support of internet
64: multicasting only, pending widespread support for multicast routing
65: by the regular (unicast) routers.
66: .Nm
67: suffers from the well-known scaling problems of any distance-vector
68: routing protocol, and does not (yet) support hierarchical multicast routing.
69: .Pp
70: .Nm
71: handles multicast routing only; there may or may not be unicast routing
72: software running on the same machine as
73: .Nm mrouted .
74: With the use of tunnels, it is not necessary for
75: .Nm
76: to have access to more than one physical subnet
77: in order to perform multicast forwarding.
78: .Pp
79: .Sh OPTIONS
80: This program follows the usual UNIX command line syntax, with long options starting
81: with two dashes (`-'). The options are as follows:
82: .Bl -tag -width Ds
83: .It Fl h, -help
84: Print a help message and exit.
85: .It Fl f, -foreground
86: Run in foreground, do not detach from the calling terminal.
87: .It Fl c, -config=FILE
88: Specify an alternative configuration file, instead of the default
89: .Pa /etc/mrouted.conf .
90: .It Fl d, -debug[=LEVEL[,LEVEL...]
91: By default,
92: .Nm
93: detaches from the invoking terminal.
94: If this option is specified,
95: .Nm
96: it runs in foreground of the starting terminal and responds to signals.
97: If
98: .Fl d
99: is given with no argument, the debug level defaults to
100: .Nm igmp, cache, interface, groups, prunes, routes and peers .
101:
102: Regardless of the debug level,
103: .Nm
104: always writes warning and error messages to the system log daemon.
105: Debug levels have the following effects:
106: .Pp
107: .Bl -tag -width TERM -compact -offset indent
108: .It Cm packet
109: Debug inbound/outbout packets
110: .It Cm prunes
111: Pruning operations, or pruned routes
112: .It Cm routes
113: Routing messages
114: .It Cm rtdetail
115: Detailed routing information
116: .It Cm peers
117: Neighbor gossip
118: .It Cm cache
119: Debug routing cache
120: .It Cm timeout
121: Debug timeouts
122: .It Cm interface
123: Show interface, or vif, debug messages
124: .It Cm groups
125: Debug group memberships
126: .It Cm mtrace
127: Multicast traceroute information
128: .It Cm igmp
129: Debug IGMP messages
130: .It Cm icmp
131: Debug ICMP messages
132: .It Cm rsrr
133: Debug RSRR messages
134: .El
135: .It Fl p
136: Start
137: .Nm
138: in a non-pruning mode. This was previously used in routers for test purposes only.
139: However, this is no longer supported and this option is only kept for compatibility
140: reasons.
141: .It Fl r, -show-routes
142: Show state of VIFs and multicast routing tables. This command sends SIGUSR1 to a
143: running mrouted, waits for the dump file to be updated, and then displays the result
144: on stdout.
145: .El
146: .Pp
147: .Sh CONFIGURATION
148: .Nm
149: automatically configures itself to forward on all multicast-capable
150: interfaces, i.e. interfaces that have the IFF_MULTICAST flag set (excluding
151: the loopback "interface"), and it finds other
152: .Nm
153: directly reachable via those interfaces.
154: To override the default configuration, or to add tunnel links to other
155: .Nm mrouted ,
156: configuration commands may be placed in
157: .Pa /etc/mrouted.conf .
158: There are five types of configuration commands:
159: .Bl -item -offset indent
160: .It
161: .Cm cache_lifetime
162: .Ar ct
163: .It
164: .Cm name
165: .Ar boundary-name | scoped-addr Ns / Ns Ar mask-len
166: .It
167: .Cm phyint
168: .Ar local-addr
169: .Oo
170: .Cm altnet
171: .Ar network Ns / Ns Ar mask-len
172: .Oc
173: .br
174: .Oo
175: .Cm boundary
176: .Ar boundary-name | scoped-addr Ns / Ns Ar mask-len
177: .Oc
178: .Op Cm disable
179: .br
180: .Op Cm metric Ar m
181: .Op Cm rate_limit Ar b
182: .Op Cm threshold Ar t
183: .It
184: .Cm pruning
185: .Op Cm off | on
186: .It
187: .Cm tunnel
188: .Ar local-addr
189: .Ar remote-addr
190: .br
191: .Oo
192: .Cm boundary
193: .Ar boundary-name | scoped-addr Ns / Ns Ar mask-len
194: .Oc
195: .Op Cm metric Ar m
196: .Op Cm rate_limit Ar b
197: .Op Cm threshold Ar t
198: .El
199: .Pp
200: The file format is free-form: whitespace (including newlines) is not
201: significant.
202: The
203: .Cm boundary
204: option
205: can accept either a name or a boundary;
206: the
207: .Cm boundary
208: and
209: .Cm altnet
210: options may be specified as many times as necessary.
211: .Pp
212: The
213: .Nm cache_lifetime
214: is a value that determines the amount of time that a
215: cached multicast route stays in kernel before timing out.
216: The value of this entry should lie between 300 (5 min) and 86400 (1 day).
217: It defaults to 300.
218: .Pp
219: The
220: .Nm name
221: option assigns names to boundaries to make configuration easier.
222: .Pp
223: The
224: .Nm phyint
225: command can be used to disable multicast routing on the physical
226: interface identified by local IP address
227: .Ar local-addr ,
228: or to associate a non-default metric or threshold with the specified
229: physical interface.
230: The local IP address
231: .Ar local-addr
232: may be replaced by the interface name (e.g. le0).
233: If a phyint is attached to multiple IP subnets, describe each additional
234: subnet with the
235: .Cm altnet
236: keyword.
237: Phyint commands must precede tunnel commands.
238: .Pp
239: The
240: .Nm pruning
241: option is provided for
242: .Nm
243: to act as a non-pruning router. This is no longer supported and the
244: configuration option is only kept for compatibility reasons.
245: .Pp
246: The
247: .Nm tunnel
248: command can be used to establish a tunnel link between local IP address
249: .Ar local-addr
250: and remote IP address
251: .Ar remote-addr ,
252: and to associate a non-default metric or threshold with that tunnel.
253: The local IP address
254: .Ar local-addr
255: may be replaced by the interface name (e.g. le0).
256: The remote IP address
257: .Ar remote-addr
258: may be replaced by a host name, if and only if the host name has a single
259: IP address associated with it.
260: The tunnel must be set up in the mrouted.conf files of both routers before
261: it can be used.
262: .\"For backwards compatibility with older versions of
263: .\".Nm ,
264: .\"the srcrt keyword specifies
265: .\"encapsulation using IP source routing.
266: .Pp
267: .Cm boundary
268: allows an interface to be configured as an administrative boundary
269: for the specified scoped address.
270: Packets belonging to this address will not be forwarded on a scoped interface.
271: The boundary option accepts either a name or a boundary spec.
272: .Pp
273: .Cm metric
274: is the "cost" associated with sending a datagram on the given
275: interface or tunnel; it may be used to influence the choice of routes.
276: The metric defaults to 1.
277: Metrics should be kept as small as possible, because
278: .Nm
279: cannot route along paths with a sum of metrics greater than 31.
280: .Pp
281: .Cm rate_limit
282: allows the network administrator to specify a
283: certain bandwidth in Kbits/second which would be allocated to multicast
284: traffic.
285: It defaults to 500Kbps on tunnels, and 0 (unlimited) on physical interfaces.
286: .Pp
287: .Cm threshold
288: is the minimum IP time-to-live required for a multicast datagram
289: to be forwarded to the given interface or tunnel.
290: It is used to control the scope of multicast datagrams.
291: (The TTL of forwarded packets is only compared to the threshold,
292: it is not decremented by the threshold.
293: Every multicast router decrements the TTL by 1.)
294: The default threshold is 1.
295: .Pp
296: In general, all
297: .Nm
298: connected to a particular subnet or tunnel should
299: use the same metric and threshold for that subnet or tunnel.
300: .Pp
301: .Nm
302: will not initiate execution
303: if it has fewer than two enabled virtual interfaces (vifs),
304: where a vif is either a physical multicast-capable
305: interface or a tunnel.
306: It will log a warning if all of its vifs are tunnels; such an
307: .Nm
308: configuration would be better replaced by more
309: direct tunnels (i.e. eliminate the middle man).
310: .Sh EXAMPLE CONFIGURATION
311: This is an example configuration for a mythical multicast router at a big
312: school.
313: .Bd -unfilled -offset left
314: #
315: # mrouted.conf example
316: #
317: # Name our boundaries to make it easier.
318: name LOCAL 239.255.0.0/16
319: name EE 239.254.0.0/16
320: #
321: # le1 is our gateway to compsci, don't forward our
322: # local groups to them.
323: phyint le1 boundary EE
324: #
325: # le2 is our interface on the classroom net, it has four
326: # different length subnets on it.
327: # Note that you can use either an ip address or an
328: # interface name
329: phyint 172.16.12.38 boundary EE altnet 172.16.15.0/26
330: altnet 172.16.15.128/26 altnet 172.16.48.0/24
331: #
332: # atm0 is our ATM interface, which doesn't properly
333: # support multicasting.
334: phyint atm0 disable
335: #
336: # This is an internal tunnel to another EE subnet.
337: # Remove the default tunnel rate limit, since this
338: # tunnel is over Ethernets.
339: tunnel 192.168.5.4 192.168.55.101 metric 1 threshold 1
340: rate_limit 0
341: #
342: # This is our tunnel to the outside world.
343: # Careful with those boundaries, Eugene.
344: tunnel 192.168.5.4 10.11.12.13 metric 1 threshold 32
345: boundary LOCAL boundary EE
346: .Ed
347: .Sh SIGNALS
348: .Nm
349: responds to the following signals:
350: .Pp
351: .Bl -tag -width TERM -compact
352: .It HUP
353: Restarts
354: .Nm mrouted .
355: The configuration file is reread every time this signal is evoked.
356: .It INT
357: Terminates execution gracefully (i.e. by sending
358: good-bye messages to all neighboring routers).
359: .It TERM
360: The same as INT.
361: .It USR1
362: Dumps the internal routing tables to
363: .Pa /var/run/mrouted/mrouted.dump .
364: .It USR2
365: Dumps the internal cache tables to
366: .Pa /var/run/mrouted/mrouted.cache .
367: .It QUIT
368: Dumps the internal routing tables to stderr (only if
369: .Nm
370: was invoked with a non-zero debug level).
371: .El
372: .Pp
373: For convenience in sending signals,
374: .Nm
375: writes its process ID to
376: .Pa /var/run/mrouted.pid
377: upon startup.
378: .Sh FILES
379: .Bl -tag -width /var/run/mrouted/mrouted.cache -compact
380: .It Pa /etc/mrouted.conf
381: .It Pa /var/run/mrouted/mrouted.cache
382: .It Pa /var/run/mrouted/mrouted.dump
383: .It Pa /var/run/mrouted.pid
384: .El
385: .Sh EXAMPLES
386: The routing tables look like this:
387: .Bd -unfilled -offset left
388: Virtual Interface Table
389: Vif Local-Address Metric Thresh Flags
390: 0 36.2.0.8 subnet: 36.2 1 1 querier
391: groups: 224.0.2.1
392: 224.0.0.4
393: pkts in: 3456
394: pkts out: 2322323
395:
396: 1 36.11.0.1 subnet: 36.11 1 1 querier
397: groups: 224.0.2.1
398: 224.0.1.0
399: 224.0.0.4
400: pkts in: 345
401: pkts out: 3456
402:
403: 2 36.2.0.8 tunnel: 36.8.0.77 3 1
404: peers: 36.8.0.77 (2.2)
405: boundaries: 239.0.1
406: : 239.1.2
407: pkts in: 34545433
408: pkts out: 234342
409:
410: 3 36.2.0.8 tunnel: 36.6.8.23 3 16
411:
412: Multicast Routing Table (1136 entries)
413: Origin-Subnet From-Gateway Metric Tmr In-Vif Out-Vifs
414: 36.2 1 45 0 1* 2 3*
415: 36.8 36.8.0.77 4 15 2 0* 1* 3*
416: 36.11 1 20 1 0* 2 3*
417: .
418: .
419: .
420: .Ed
421: .Pp
422: In this example, there are four vifs connecting to two subnets and two
423: tunnels.
424: The vif 3 tunnel is not in use (no peer address).
425: The vif 0 and vif 1 subnets have some groups present;
426: tunnels never have any groups.
427: This instance of
428: .Nm
429: is the one responsible for sending periodic group membership queries on the
430: vif 0 and vif 1 subnets, as indicated by the "querier" flags.
431: The list of boundaries indicate the scoped addresses on that interface.
432: A count of the number of incoming and outgoing packets is also
433: shown at each interface.
434: .Pp
435: Associated with each subnet from which a multicast datagram can originate
436: is the address of the previous hop router (unless the subnet is directly-
437: connected), the metric of the path back to the origin, the amount of time
438: since we last received an update for this subnet, the incoming vif for
439: multicasts from that origin, and a list of outgoing vifs.
440: "*" means that the outgoing vif is connected to a leaf of the broadcast
441: tree rooted at the origin, and a multicast datagram from that origin will
442: be forwarded on that outgoing vif only if there are members of the
443: destination group on that leaf.
444: .Pp
445: .Nm
446: also maintains a copy of the kernel forwarding cache table.
447: Entries are created and deleted by
448: .Nm mrouted .
449: .Pp
450: The cache tables look like this:
451: .Bd -unfilled -offset left
452: Multicast Routing Cache Table (147 entries)
453: Origin Mcast-group CTmr Age Ptmr IVif Forwvifs
454: 13.2.116/22 224.2.127.255 3m 2m - 0 1
455: \*(Gt13.2.116.19
456: \*(Gr13.2.116.196
457: 138.96.48/21 224.2.127.255 5m 2m - 0 1
458: \*(Gt138.96.48.108
459: 128.9.160/20 224.2.127.255 3m 2m - 0 1
460: \*(Gt128.9.160.45
461: 198.106.194/24 224.2.135.190 9m 28s 9m 0P
462: \*(Gt198.106.194.22
463: .Ed
464: .Pp
465: Each entry is characterized by the origin subnet number and mask and the
466: destination multicast group.
467: .Pp
468: The 'CTmr' field indicates the lifetime of the entry.
469: The entry is deleted from the cache table when the timer decrements to zero.
470: The 'Age' field is the time since this cache entry was originally created.
471: Since cache entries get refreshed if traffic is flowing,
472: routing entries can grow very old.
473: .Pp
474: The 'Ptmr' field is simply a dash if no prune was sent upstream, or the
475: amount of time until the upstream prune will time out.
476: The 'Ivif' field indicates the incoming vif for multicast packets from
477: that origin.
478: .Pp
479: Each router also maintains a record of the number of prunes received from
480: neighboring routers for a particular source and group.
481: .Pp
482: If there are no members of a multicast group on any downward link of the
483: multicast tree for a subnet, a prune message is sent to the upstream router.
484: They are indicated by a "P" after the vif number.
485: .Pp
486: The Forwvifs field shows the interfaces along which datagrams belonging to
487: the source-group are forwarded.
488: .Pp
489: A "p" indicates that no datagrams are being forwarded along that interface.
490: An unlisted interface is a leaf subnet with no members of the particular
491: group on that subnet.
492: .Pp
493: A "b" on an interface indicates that it is a boundary interface, i.e.\&
494: traffic will not be forwarded on the scoped address on that interface.
495: An additional line with a
496: .Sq \*(Gt
497: as the first character is printed for
498: each source on the subnet.
499: .Pp
500: Note that there can be many sources in one subnet.
501: .Sh SEE ALSO
502: .Xr map-mbone 8 ,
503: .Xr mrinfo 8 ,
504: .Xr mtrace 8 ,
505: .Xr pimd 8
506: .Pp
507: DVMRP is described, along with other multicast routing algorithms, in the
508: paper "Multicast Routing in Internetworks and Extended LANs" by S. Deering,
509: in the Proceedings of the ACM SIGCOMM '88 Conference.
510: .Sh AUTHORS
511: Steve Deering, Ajit Thyagarajan, Bill Fenner, David Thaler and Daniel Zappala. With
512: contributions by many others.
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>