1997-09-30 06:15:23 +00:00
|
|
|
.\"COPYRIGHT 1989 by The Board of Trustees of Leland Stanford Junior University.
|
1999-08-28 23:23:38 +00:00
|
|
|
.\"
|
|
|
|
.\" $FreeBSD$
|
|
|
|
.\"
|
1997-09-30 06:15:23 +00:00
|
|
|
.Dd May 8, 1995
|
|
|
|
.Dt MROUTED 8
|
2000-11-10 17:46:15 +00:00
|
|
|
.Os
|
1997-09-30 06:15:23 +00:00
|
|
|
.Sh NAME
|
|
|
|
.Nm mrouted
|
|
|
|
.Nd IP multicast routing daemon
|
|
|
|
.Sh SYNOPSIS
|
2000-11-20 20:10:44 +00:00
|
|
|
.Nm
|
1997-09-30 06:15:23 +00:00
|
|
|
.Op Fl c Ar config_file
|
|
|
|
.Op Fl d Op Ar debug_level
|
|
|
|
.Op Fl p
|
|
|
|
.Sh DESCRIPTION
|
2001-07-15 08:06:20 +00:00
|
|
|
.Nm Mrouted
|
1994-09-08 00:26:13 +00:00
|
|
|
is an implementation of the Distance-Vector Multicast Routing
|
|
|
|
Protocol (DVMRP), an earlier version of which is specified in RFC-1075.
|
|
|
|
It maintains topological knowledge via a distance-vector routing protocol
|
|
|
|
(like RIP, described in RFC-1058), upon which it implements a multicast
|
|
|
|
datagram forwarding algorithm called Reverse Path Multicasting.
|
1997-09-30 06:15:23 +00:00
|
|
|
.Pp
|
2001-07-15 08:06:20 +00:00
|
|
|
.Nm Mrouted
|
1994-09-08 00:26:13 +00:00
|
|
|
forwards a multicast datagram along a shortest (reverse) path tree
|
2000-03-01 14:09:25 +00:00
|
|
|
rooted at the subnet on which the datagram originates.
|
|
|
|
The multicast
|
1994-09-08 00:26:13 +00:00
|
|
|
delivery tree may be thought of as a broadcast delivery tree that has
|
|
|
|
been pruned back so that it does not extend beyond those subnetworks
|
2000-03-01 14:09:25 +00:00
|
|
|
that have members of the destination group.
|
|
|
|
Hence, datagrams
|
1994-09-08 00:26:13 +00:00
|
|
|
are not forwarded along those branches which have no listeners of the
|
2000-03-01 14:09:25 +00:00
|
|
|
multicast group.
|
|
|
|
The IP time-to-live of a multicast datagram can be
|
1994-09-08 00:26:13 +00:00
|
|
|
used to limit the range of multicast datagrams.
|
1997-09-30 06:15:23 +00:00
|
|
|
.Pp
|
1994-09-08 00:26:13 +00:00
|
|
|
In order to support multicasting among subnets that are separated by (unicast)
|
2001-07-15 08:06:20 +00:00
|
|
|
routers that do not support IP multicasting,
|
|
|
|
.Nm
|
1994-09-08 00:26:13 +00:00
|
|
|
includes support for
|
2001-07-15 08:06:20 +00:00
|
|
|
"tunnels", which are virtual point-to-point links between pairs of
|
1999-01-20 07:55:57 +00:00
|
|
|
multicast routers
|
1995-06-13 18:05:16 +00:00
|
|
|
located anywhere in an internet. IP multicast packets are encapsulated for
|
|
|
|
transmission through tunnels, so that they look like normal unicast datagrams
|
2001-07-15 08:06:20 +00:00
|
|
|
to intervening routers and subnets. The encapsulation
|
1995-06-13 18:05:16 +00:00
|
|
|
is added on entry to a tunnel, and stripped off
|
|
|
|
on exit from a tunnel.
|
1999-01-20 07:55:57 +00:00
|
|
|
The packets are encapsulated using the IP-in-IP protocol
|
1995-06-13 18:05:16 +00:00
|
|
|
(IP protocol number 4).
|
2001-07-15 08:06:20 +00:00
|
|
|
Older versions of
|
1997-09-30 06:15:23 +00:00
|
|
|
.Nm
|
1999-01-20 07:55:57 +00:00
|
|
|
tunneled using IP source routing, which puts a heavy load on some
|
1994-09-08 00:26:13 +00:00
|
|
|
types of routers.
|
1995-06-13 18:05:16 +00:00
|
|
|
This version does not support IP source route tunnelling.
|
1997-09-30 06:15:23 +00:00
|
|
|
.Pp
|
2001-07-15 08:06:20 +00:00
|
|
|
The tunnelling mechanism allows
|
|
|
|
.Nm
|
1994-09-08 00:26:13 +00:00
|
|
|
to establish a virtual internet, for
|
|
|
|
the purpose of multicasting only, which is independent of the physical
|
|
|
|
internet, and which may span multiple Autonomous Systems. This capability
|
|
|
|
is intended for experimental support of internet multicasting only, pending
|
|
|
|
widespread support for multicast routing by the regular (unicast) routers.
|
2001-07-15 08:06:20 +00:00
|
|
|
.Nm Mrouted
|
1994-09-08 00:26:13 +00:00
|
|
|
suffers from the well-known scaling problems of any distance-vector
|
|
|
|
routing protocol, and does not (yet) support hierarchical multicast routing.
|
1997-09-30 06:15:23 +00:00
|
|
|
.Pp
|
2001-07-15 08:06:20 +00:00
|
|
|
.Nm Mrouted
|
1994-09-08 00:26:13 +00:00
|
|
|
handles multicast routing only; there may or may not be unicast routing
|
2001-07-15 08:06:20 +00:00
|
|
|
software running on the same machine as
|
2000-11-20 20:10:44 +00:00
|
|
|
.Nm .
|
1994-09-08 00:26:13 +00:00
|
|
|
With the use of tunnels, it
|
2001-07-15 08:06:20 +00:00
|
|
|
is not necessary for
|
|
|
|
.Nm
|
1994-09-08 00:26:13 +00:00
|
|
|
to have access to more than one physical subnet
|
|
|
|
in order to perform multicast forwarding.
|
1997-09-30 06:15:23 +00:00
|
|
|
.Pp
|
|
|
|
The following options are available:
|
|
|
|
.Bl -tag -width indent
|
|
|
|
.It Fl c Ar config_file
|
2000-03-01 14:09:25 +00:00
|
|
|
Specify an alternative file for configuration commands.
|
|
|
|
Default is
|
1997-09-30 06:15:23 +00:00
|
|
|
.Pa /etc/mrouted.conf .
|
|
|
|
.It Fl d Op Ar debug_level
|
|
|
|
If no
|
|
|
|
.Fl d
|
2001-07-15 08:06:20 +00:00
|
|
|
option is given, or if the debug level is specified as 0,
|
1997-09-30 06:15:23 +00:00
|
|
|
.Nm
|
1995-06-13 18:05:16 +00:00
|
|
|
detaches from the invoking terminal. Otherwise, it remains attached to the
|
1997-09-30 06:15:23 +00:00
|
|
|
invoking terminal and responsive to signals from that terminal.
|
2001-07-15 08:06:20 +00:00
|
|
|
Regardless of the debug level,
|
|
|
|
.Nm
|
1994-09-08 00:26:13 +00:00
|
|
|
always writes warning and error messages to the system
|
2002-05-11 05:16:02 +00:00
|
|
|
log daemon. The
|
1999-01-20 07:55:57 +00:00
|
|
|
.Fl debug-level
|
2001-02-06 11:21:58 +00:00
|
|
|
argument is a comma-separated list of any of the following:
|
1997-09-30 06:15:23 +00:00
|
|
|
.Bl -tag -width indent
|
1999-01-20 07:55:57 +00:00
|
|
|
.It "packet"
|
|
|
|
Display the type, source and destination of all packets sent or received.
|
|
|
|
.It "pruning"
|
|
|
|
Display more information about prunes sent or received.
|
|
|
|
.It "routing"
|
|
|
|
Display more information about routing update packets sent or received.
|
|
|
|
.It "route_detail"
|
|
|
|
Display routing updates in excruciating detail. This is generally way too
|
|
|
|
much information.
|
|
|
|
.It "neighbors"
|
|
|
|
Display information about neighbor discovery.
|
|
|
|
.It "cache"
|
|
|
|
Display insertions, deletions and refreshes of entries in
|
|
|
|
the kernel forwarding cache.
|
|
|
|
.It "timeout"
|
|
|
|
Debug timeouts and periodic processes.
|
|
|
|
.It "interface"
|
|
|
|
Display information about interfaces and their configuration.
|
|
|
|
.It "membership"
|
|
|
|
Display information about group memberships on physical interfaces.
|
|
|
|
.It "traceroute"
|
|
|
|
Display information about multicast traceroute requests
|
|
|
|
passing through this router.
|
|
|
|
.It "igmp"
|
|
|
|
Display IGMP operation including group membership and querier election.
|
|
|
|
.It "icmp"
|
|
|
|
Monitor ICMP handling.
|
|
|
|
.It "rsrr"
|
|
|
|
Monitor RSRR operation.
|
1997-09-30 06:15:23 +00:00
|
|
|
.El
|
|
|
|
.Pp
|
|
|
|
Upon startup,
|
|
|
|
.Nm
|
|
|
|
writes its pid to the file
|
|
|
|
.Pa /var/run/mrouted.pid .
|
2000-12-27 15:30:30 +00:00
|
|
|
.El
|
1997-09-30 06:15:23 +00:00
|
|
|
.Sh CONFIGURATION
|
2001-07-15 08:06:20 +00:00
|
|
|
.Nm Mrouted
|
1994-09-08 00:26:13 +00:00
|
|
|
automatically configures itself to forward on all multicast-capable
|
1995-06-13 18:05:16 +00:00
|
|
|
interfaces, i.e., interfaces that have the IFF_MULTICAST flag set (excluding
|
1999-01-20 07:55:57 +00:00
|
|
|
the loopback "interface"), and it finds other DVMRP routers directly reachable
|
1995-06-13 18:05:16 +00:00
|
|
|
via those interfaces. To override the default configuration, or to add
|
1999-01-20 07:55:57 +00:00
|
|
|
tunnel links to other multicast routers,
|
1995-06-13 18:05:16 +00:00
|
|
|
configuration commands may be placed in
|
1997-09-30 06:15:23 +00:00
|
|
|
.Pa /etc/mrouted.conf
|
|
|
|
(or an alternative file, specified by the
|
|
|
|
.Fl c
|
|
|
|
option).
|
|
|
|
.Pp
|
1995-06-13 18:05:16 +00:00
|
|
|
The file format is free-form; whitespace (including newlines) is not
|
|
|
|
significant.
|
1999-01-20 07:55:57 +00:00
|
|
|
The file begins with commands that apply to
|
2000-11-20 20:10:44 +00:00
|
|
|
.Nm Ns 's
|
1999-01-20 07:55:57 +00:00
|
|
|
overall operation or set defaults.
|
|
|
|
.Bl -tag -width indent
|
|
|
|
.It cache_lifetime Ar secs
|
|
|
|
Specifies, in seconds, the lifetime of a multicast forwarding cache
|
|
|
|
entry in the kernel. Multicast forwarding cache entries in the kernel
|
|
|
|
are checked every
|
|
|
|
.Ar secs
|
|
|
|
seconds, and are refreshed if the source is still
|
|
|
|
active or deleted if not. Care should be taken when setting this value,
|
|
|
|
as a low value can keep the kernel cache small at the cost of "thrashing"
|
|
|
|
the cache for periodic senders, but high values can cause the kernel
|
|
|
|
cache to grow unacceptably large. The default is 300 seconds (5 minutes).
|
|
|
|
.It prune_lifetime Ar secs
|
|
|
|
Sepcifies, in seconds, the average lifetime of prunes that are sent towards
|
|
|
|
parents. The actual lifetimes will be randomized in the range
|
|
|
|
[.5\fIsecs\fP,1.5\fIsecs\fP]. The default is 7200 (2 hours). Smaller values
|
|
|
|
cause less state to be kept both at this router and the parent, at the
|
2001-08-10 15:03:10 +00:00
|
|
|
cost of more frequent broadcasts. However, some routers (e.g.\&
|
|
|
|
.Nm
|
|
|
|
<3.3
|
1999-01-20 07:55:57 +00:00
|
|
|
and all currently known versions of cisco's IOS) do not use the
|
|
|
|
DVMRP generation ID to determine that a neighbor has rebooted. Prunes
|
|
|
|
sent towards these neighbors should be kept short, in order to shorten
|
|
|
|
the time to recover from a reboot. For use in this situation, the
|
|
|
|
prune_lifetime keyword may be specified on an interface as described
|
|
|
|
below.
|
|
|
|
.It noflood
|
|
|
|
.Nm Mrouted
|
|
|
|
uses a DVMRP optimization to prevent having to keep individual routing tables
|
|
|
|
for each neighbor; part of this optimization is that
|
|
|
|
.Nm
|
|
|
|
assumes that it is the forwarder for each of its attached subnets on
|
|
|
|
startup. This can cause duplicates for a short period (approximately
|
|
|
|
one full route report interval), since both the router that just
|
|
|
|
started up and the proper forwarder will be forwarding traffic. This
|
|
|
|
behavior can be turned off with the noflood keyword;
|
|
|
|
.Nm
|
|
|
|
will not assume that it is the forwarder on startup.
|
|
|
|
Turning on noflood can cause black holes on restart, which will generally
|
|
|
|
last approximately one full route report interval.
|
|
|
|
The noflood keyword can also be specified on individual interfaces.
|
|
|
|
.It rexmit_prunes Ar [on|off]
|
2000-11-20 20:10:44 +00:00
|
|
|
.Nm Mrouted Ns 's
|
1999-01-20 07:55:57 +00:00
|
|
|
default is to retransmit prunes on all point-to-point interfaces
|
|
|
|
(including tunnels) but no multi-access interfaces. This option
|
|
|
|
may be used to make the default on (or off) for all interfaces.
|
|
|
|
The rexmit_prunes keyword can also be specified on individual interfaces.
|
|
|
|
.It name Ar "boundary-name scoped-addr/mask-len"
|
|
|
|
Associates
|
|
|
|
.Ar boundary-name
|
|
|
|
with the boundary described by
|
|
|
|
.Ar scoped-addr/mask-len ,
|
|
|
|
to help make interface configurations
|
|
|
|
more readable and reduce repetition in the configuration file.
|
|
|
|
.El
|
1997-09-30 06:15:23 +00:00
|
|
|
.Pp
|
1999-01-20 07:55:57 +00:00
|
|
|
The second section of the configuration file, which may optionally
|
|
|
|
be empty, describes options that apply to physical interfaces.
|
|
|
|
.Bl -tag -width indent
|
|
|
|
.It phyint Ar "local-addr|ifname"
|
|
|
|
The phyint command does nothing by itself; it is simply a place holder
|
|
|
|
which interface-specific commands may follow. An interface address or
|
|
|
|
name may be specified.
|
|
|
|
.It disable
|
|
|
|
Disables multicast forwarding on this interface. By default,
|
|
|
|
.Nm
|
|
|
|
discovers all locally attached multicast capable interfaces and forwards
|
|
|
|
on all of them.
|
|
|
|
.It netmask Ar netmask
|
|
|
|
If the kernel's netmask does not accurately reflect
|
|
|
|
the subnet (e.g. you're using proxy-ARP in lieu of IP subnetting), use the
|
|
|
|
netmask command to describe the real netmask.
|
|
|
|
.It altnet Ar network/mask-len
|
1995-06-13 18:05:16 +00:00
|
|
|
If a phyint is attached to multiple IP subnets, describe each additional subnet
|
1999-01-20 07:55:57 +00:00
|
|
|
with the altnet keyword. This command may be specified multiple times
|
|
|
|
to describe multiple subnets.
|
|
|
|
.It igmpv1
|
|
|
|
If there are any IGMPv1 routers on the phyint, use the \fBigmpv1\fP
|
|
|
|
keyword to force
|
|
|
|
.Nm
|
|
|
|
into IGMPv1 mode. All routers on the phyint
|
|
|
|
must use the same version of IGMP.
|
|
|
|
.It force_leaf
|
|
|
|
Force
|
|
|
|
.Nm
|
|
|
|
to ignore other routers on this interface.
|
2001-08-10 15:03:10 +00:00
|
|
|
.Nm
|
|
|
|
will never send or accept neighbor probes or
|
1999-01-20 07:55:57 +00:00
|
|
|
route reports on this interface.
|
|
|
|
.El
|
1997-09-30 06:15:23 +00:00
|
|
|
.Pp
|
1999-01-20 07:55:57 +00:00
|
|
|
In addition, the common vif commands described later may all be used on
|
|
|
|
a phyint.
|
1997-09-30 06:15:23 +00:00
|
|
|
.Pp
|
1999-01-20 07:55:57 +00:00
|
|
|
The third section of the configuration file, also optional, describes
|
|
|
|
the configuration of any DVMRP tunnels this router might have.
|
|
|
|
.Bl -tag -width indent
|
|
|
|
.It tunnel Ar "local-addr|ifname" Ar "remote-addr|remote-hostname"
|
|
|
|
This command establishes a DVMRP tunnel between this host (on the interface
|
|
|
|
described by
|
|
|
|
.Ar local-addr
|
|
|
|
or
|
|
|
|
.Ar ifname )
|
|
|
|
and a remote host (identified by
|
|
|
|
.Ar remote-addr
|
|
|
|
or
|
2001-02-01 16:44:04 +00:00
|
|
|
.Ar remote-hostname ) .
|
1999-01-20 07:55:57 +00:00
|
|
|
A remote hostname may only be used if
|
|
|
|
it maps to a single IP address.
|
|
|
|
A tunnel must be configured on both routers before it can be used.
|
2000-12-27 15:30:30 +00:00
|
|
|
.Pp
|
1999-01-20 07:55:57 +00:00
|
|
|
Be careful that the unicast route to the remote address goes out the
|
|
|
|
interface specified by the
|
|
|
|
.Ar "local-addr|ifname"
|
|
|
|
argument. Some UNIX
|
|
|
|
kernels rewrite the source address of
|
2000-11-20 20:10:44 +00:00
|
|
|
.Nm Ns 's
|
1999-01-20 07:55:57 +00:00
|
|
|
packets on their way out to contain the address of the transmission
|
|
|
|
interface. This is best assured via a static host route.
|
|
|
|
.El
|
1997-09-30 06:15:23 +00:00
|
|
|
.Pp
|
1999-01-20 07:55:57 +00:00
|
|
|
The common vif commands described below
|
|
|
|
may all be used on tunnels or phyints.
|
|
|
|
.Bl -tag -width indent
|
|
|
|
.It metric Ar m
|
|
|
|
The metric is the "cost" associated with receiving a datagram on the given
|
1994-09-08 00:26:13 +00:00
|
|
|
interface or tunnel; it may be used to influence the choice of routes.
|
|
|
|
The metric defaults to 1. Metrics should be kept as small as possible,
|
1999-01-20 07:55:57 +00:00
|
|
|
because DVMRP cannot route along paths with a sum of metrics greater
|
1994-09-08 00:26:13 +00:00
|
|
|
than 31.
|
1999-01-20 07:55:57 +00:00
|
|
|
.It advert_metric Ar m
|
|
|
|
The advert_metric is the "cost" associated with sending a datagram
|
1996-11-11 03:50:15 +00:00
|
|
|
on the given interface or tunnel; it may be used to influence the choice
|
|
|
|
of routes. The advert_metric defaults to 0. Note that the effective
|
|
|
|
metric of a link is one end's metric plus the other end's advert_metric.
|
1999-01-20 07:55:57 +00:00
|
|
|
.It threshold Ar t
|
1994-09-08 00:26:13 +00:00
|
|
|
The threshold is the minimum IP time-to-live required for a multicast datagram
|
|
|
|
to be forwarded to the given interface or tunnel. It is used to control the
|
|
|
|
scope of multicast datagrams. (The TTL of forwarded packets is only compared
|
|
|
|
to the threshold, it is not decremented by the threshold. Every multicast
|
1999-01-20 07:55:57 +00:00
|
|
|
router decrements the TTL by exactly 1.) The default threshold is 1.
|
2000-12-27 15:30:30 +00:00
|
|
|
.Pp
|
1999-01-20 07:55:57 +00:00
|
|
|
In general, all multicast routers
|
1995-06-13 18:05:16 +00:00
|
|
|
connected to a particular subnet or tunnel should
|
1994-09-08 00:26:13 +00:00
|
|
|
use the same metric and threshold for that subnet or tunnel.
|
1999-01-20 07:55:57 +00:00
|
|
|
.It rate_limit Ar r
|
2001-07-15 08:06:20 +00:00
|
|
|
The rate_limit option allows the network administrator to specify a
|
1994-09-08 00:26:13 +00:00
|
|
|
certain bandwidth in Kbits/second which would be allocated to multicast
|
1999-01-20 07:55:57 +00:00
|
|
|
traffic. It defaults 0 (unlimited).
|
|
|
|
.It boundary Ar "boundary-name|scoped-addr/mask-len"
|
1994-09-08 00:26:13 +00:00
|
|
|
The boundary option allows an interface
|
|
|
|
to be configured as an administrative boundary for the specified
|
2000-03-01 14:09:25 +00:00
|
|
|
scoped address.
|
|
|
|
Packets belonging to this address will not
|
1995-06-13 18:05:16 +00:00
|
|
|
be forwarded on a scoped interface. The boundary option accepts either
|
1999-01-20 07:55:57 +00:00
|
|
|
a name or a boundary spec. This command may be specified several times
|
|
|
|
on an interface in order to describe multiple boundaries.
|
|
|
|
.It passive
|
|
|
|
No packets will be sent on this link or tunnel until we hear from the other
|
|
|
|
end. This is useful for the "server" end of a tunnel that goes over
|
|
|
|
a dial-on-demand link; configure the "server" end as passive and
|
|
|
|
it will not send its periodic probes until it hears one from the other
|
|
|
|
side, so will not keep the link up. If this option is specified on both
|
|
|
|
ends of a tunnel, the tunnel will never come up.
|
|
|
|
.It noflood
|
|
|
|
As described above, but only applicable to this interface/tunnel.
|
|
|
|
.It prune_lifetime Ar secs
|
|
|
|
As described above, but only applicable to this interface/tunnel.
|
|
|
|
.It rexmit_prunes Ar "[on|off]"
|
|
|
|
As described above, but only applicable to this interface/tunnel.
|
|
|
|
Recall that prune retransmission
|
|
|
|
defaults to on on point-to-point links and tunnels, and off on
|
|
|
|
multi-access links.
|
|
|
|
.It allow_nonpruners
|
|
|
|
By default,
|
|
|
|
.Nm
|
|
|
|
refuses to peer with DVMRP neighbors that
|
|
|
|
do not claim to support pruning. This option allows such peerings
|
|
|
|
on this interface.
|
|
|
|
.It notransit
|
|
|
|
A specialized case of route filtering; no route learned from an interface
|
|
|
|
marked "notransit" will be advertised on another interface marked
|
|
|
|
"notransit". Marking only a single interface "notransit" has no meaning.
|
|
|
|
.It accept|deny Ar "(route/mask-len [exact])+" Op bidir
|
|
|
|
The
|
|
|
|
.Li accept
|
|
|
|
and
|
|
|
|
.Li deny
|
|
|
|
commands allow rudimentary route filtering. The
|
|
|
|
.Li accept
|
|
|
|
command causes
|
|
|
|
.Nm
|
|
|
|
to accept only the listed routes on the configured interface; the
|
|
|
|
.Li deny
|
|
|
|
command causes
|
|
|
|
.Nm
|
|
|
|
to accept all but the listed routes.
|
|
|
|
Only one of
|
|
|
|
.Li accept
|
|
|
|
or
|
|
|
|
.Li deny
|
|
|
|
commands may be used on a given interface.
|
2000-12-27 15:30:30 +00:00
|
|
|
.Pp
|
1999-01-20 07:55:57 +00:00
|
|
|
The list of routes follows the
|
|
|
|
.Li accept
|
|
|
|
or
|
|
|
|
.Li deny
|
|
|
|
keyword. If the keyword
|
|
|
|
.Ar exact
|
|
|
|
follows a route, then only that route is matched; otherwise, that route
|
|
|
|
and any more specific route is matched. For example,
|
|
|
|
.Li deny 0/0
|
|
|
|
denys all routes, while
|
|
|
|
.Li deny 0/0 exact
|
|
|
|
denys only the default route. The default route may also be specified
|
|
|
|
with the
|
|
|
|
.Li default
|
|
|
|
keyword.
|
2000-12-27 15:30:30 +00:00
|
|
|
.Pp
|
1999-01-20 07:55:57 +00:00
|
|
|
The
|
|
|
|
.Ar bidir
|
|
|
|
keyword enables bidirectional route filtering; the filter will be applied
|
|
|
|
to routes on both output and input. Without the
|
|
|
|
.Ar bidir
|
|
|
|
keyword,
|
|
|
|
.Li accept
|
2001-07-15 08:06:20 +00:00
|
|
|
and
|
1999-01-20 07:55:57 +00:00
|
|
|
.Li deny
|
|
|
|
filters are only applied on input. Poison reverse routes are never
|
|
|
|
filtered out.
|
|
|
|
.El
|
1997-09-30 06:15:23 +00:00
|
|
|
.Pp
|
|
|
|
.Nm Mrouted
|
1994-09-08 00:26:13 +00:00
|
|
|
will not initiate execution if it has fewer than two enabled vifs,
|
|
|
|
where a vif (virtual interface) is either a physical multicast-capable
|
|
|
|
interface or a tunnel. It will log a warning if all of its vifs are
|
2001-07-15 08:06:20 +00:00
|
|
|
tunnels; such an
|
1997-09-30 06:15:23 +00:00
|
|
|
.Nm
|
1994-09-08 00:26:13 +00:00
|
|
|
configuration would be better replaced by more
|
1999-01-20 07:55:57 +00:00
|
|
|
direct tunnels (i.e. eliminate the middle man).
|
1997-09-30 06:15:23 +00:00
|
|
|
.Sh "EXAMPLE CONFIGURATION"
|
1995-06-13 18:05:16 +00:00
|
|
|
This is an example configuration for a mythical multicast router at a big
|
|
|
|
school.
|
2000-11-10 17:46:15 +00:00
|
|
|
.Pp
|
|
|
|
.Bd -literal
|
1995-06-13 18:05:16 +00:00
|
|
|
#
|
|
|
|
# mrouted.conf example
|
|
|
|
#
|
|
|
|
# Name our boundaries to make it easier
|
|
|
|
name LOCAL 239.255.0.0/16
|
|
|
|
name EE 239.254.0.0/16
|
|
|
|
#
|
|
|
|
# le1 is our gateway to compsci, don't forward our
|
|
|
|
# local groups to them
|
|
|
|
phyint le1 boundary EE
|
|
|
|
#
|
|
|
|
# le2 is our interface on the classroom net, it has four
|
|
|
|
# different length subnets on it.
|
|
|
|
# note that you can use either an ip address or an
|
|
|
|
# interface name
|
|
|
|
phyint 172.16.12.38 boundary EE altnet 172.16.15.0/26
|
|
|
|
altnet 172.16.15.128/26 altnet 172.16.48.0/24
|
|
|
|
#
|
|
|
|
# atm0 is our ATM interface, which doesn't properly
|
|
|
|
# support multicasting.
|
|
|
|
phyint atm0 disable
|
|
|
|
#
|
|
|
|
# This is an internal tunnel to another EE subnet
|
|
|
|
# Remove the default tunnel rate limit, since this
|
|
|
|
# tunnel is over ethernets
|
|
|
|
tunnel 192.168.5.4 192.168.55.101 metric 1 threshold 1
|
|
|
|
rate_limit 0
|
|
|
|
#
|
|
|
|
# This is our tunnel to the outside world.
|
|
|
|
# Careful with those boundaries, Eugene.
|
|
|
|
tunnel 192.168.5.4 10.11.12.13 metric 1 threshold 32
|
|
|
|
boundary LOCAL boundary EE
|
2000-11-10 17:46:15 +00:00
|
|
|
.Ed
|
1997-09-30 06:15:23 +00:00
|
|
|
.Sh SIGNALS
|
2001-07-15 08:06:20 +00:00
|
|
|
.Nm Mrouted
|
1995-06-13 18:05:16 +00:00
|
|
|
responds to the following signals:
|
1997-09-30 06:15:23 +00:00
|
|
|
.Bl -tag -width indent
|
|
|
|
.It HUP
|
|
|
|
Restarts
|
2000-11-20 20:10:44 +00:00
|
|
|
.Nm .
|
1994-09-08 00:26:13 +00:00
|
|
|
The configuration file is reread every time this signal is evoked.
|
1997-09-30 06:15:23 +00:00
|
|
|
.It INT
|
|
|
|
Terminate execution gracefully (i.e., by sending
|
1994-09-08 00:26:13 +00:00
|
|
|
good-bye messages to all neighboring routers).
|
1997-09-30 06:15:23 +00:00
|
|
|
.It TERM
|
|
|
|
Same as INT.
|
|
|
|
.It USR1
|
|
|
|
Dump the internal routing tables to
|
|
|
|
.Pa /var/tmp/mrouted.dump .
|
|
|
|
.It USR2
|
|
|
|
Dump the internal cache tables to
|
|
|
|
.Pa /var/tmp/mrouted.cache .
|
|
|
|
.It QUIT
|
|
|
|
Dump the internal routing tables to stderr (only if
|
2001-07-15 08:06:20 +00:00
|
|
|
.Nm
|
|
|
|
was invoked with a non-zero debug level).
|
1997-09-30 06:15:23 +00:00
|
|
|
.El
|
|
|
|
.Pp
|
1995-06-13 18:05:16 +00:00
|
|
|
For convenience in sending signals,
|
1997-09-30 06:15:23 +00:00
|
|
|
.Nm
|
|
|
|
writes its pid to
|
|
|
|
.Pa /var/run/mrouted.pid
|
|
|
|
upon startup.
|
2000-11-17 11:44:16 +00:00
|
|
|
.Sh EXAMPLES
|
1994-09-08 00:26:13 +00:00
|
|
|
The routing tables look like this:
|
2000-11-10 17:46:15 +00:00
|
|
|
.Pp
|
|
|
|
.Bd -literal
|
1994-09-08 00:26:13 +00:00
|
|
|
Virtual Interface Table
|
|
|
|
Vif Local-Address Metric Thresh Flags
|
1999-01-20 07:55:57 +00:00
|
|
|
0 36.2.0.8 subnet: 36.2/16 1 1 querier
|
1994-09-08 00:26:13 +00:00
|
|
|
groups: 224.0.2.1
|
|
|
|
224.0.0.4
|
|
|
|
pkts in: 3456
|
|
|
|
pkts out: 2322323
|
|
|
|
|
1999-01-20 07:55:57 +00:00
|
|
|
1 36.11.0.1 subnet: 36.11/16 1 1 querier
|
2001-07-15 08:06:20 +00:00
|
|
|
groups: 224.0.2.1
|
|
|
|
224.0.1.0
|
|
|
|
224.0.0.4
|
1994-09-08 00:26:13 +00:00
|
|
|
pkts in: 345
|
|
|
|
pkts out: 3456
|
|
|
|
|
2001-07-15 08:06:20 +00:00
|
|
|
2 36.2.0.8 tunnel: 36.8.0.77 3 1
|
1999-01-20 07:55:57 +00:00
|
|
|
peers: 36.8.0.77 (3.255)
|
|
|
|
boundaries: 239.0.1/24
|
|
|
|
: 239.1.2/24
|
1994-09-08 00:26:13 +00:00
|
|
|
pkts in: 34545433
|
|
|
|
pkts out: 234342
|
|
|
|
|
|
|
|
3 36.2.0.8 tunnel: 36.6.8.23 3 16
|
|
|
|
|
|
|
|
Multicast Routing Table (1136 entries)
|
1995-06-13 18:05:16 +00:00
|
|
|
Origin-Subnet From-Gateway Metric Tmr In-Vif Out-Vifs
|
|
|
|
36.2 1 45 0 1* 2 3*
|
|
|
|
36.8 36.8.0.77 4 15 2 0* 1* 3*
|
|
|
|
36.11 1 20 1 0* 2 3*
|
1994-09-08 00:26:13 +00:00
|
|
|
.
|
|
|
|
.
|
|
|
|
.
|
2000-11-10 17:46:15 +00:00
|
|
|
.Ed
|
1999-01-20 07:55:57 +00:00
|
|
|
.Pp
|
1994-09-08 00:26:13 +00:00
|
|
|
In this example, there are four vifs connecting to two subnets and two
|
|
|
|
tunnels. The vif 3 tunnel is not in use (no peer address). The vif 0 and
|
|
|
|
vif 1 subnets have some groups present; tunnels never have any groups. This
|
2001-07-15 08:06:20 +00:00
|
|
|
instance of
|
1997-09-30 06:15:23 +00:00
|
|
|
.Nm
|
1994-09-08 00:26:13 +00:00
|
|
|
is the one responsible for sending periodic group
|
|
|
|
membership queries on the vif 0 and vif 1 subnets, as indicated by the
|
2000-03-01 14:09:25 +00:00
|
|
|
"querier" flags.
|
|
|
|
The list of boundaries indicate the scoped addresses on that
|
|
|
|
interface.
|
|
|
|
A count of the no. of incoming and outgoing packets is also
|
1995-06-13 18:05:16 +00:00
|
|
|
shown at each interface.
|
1997-09-30 06:15:23 +00:00
|
|
|
.Pp
|
1995-06-13 18:05:16 +00:00
|
|
|
Associated with each subnet from which a multicast datagram can originate
|
|
|
|
is the address of the previous hop router (unless the subnet is directly-
|
|
|
|
connected), the metric of the path back to the origin, the amount of time
|
1995-06-28 17:58:49 +00:00
|
|
|
since we last received an update for this subnet, the incoming vif for
|
1995-06-13 18:05:16 +00:00
|
|
|
multicasts from that origin, and a list of outgoing vifs. "*" means that
|
|
|
|
the outgoing vif is connected to a leaf of the broadcast tree rooted at the
|
|
|
|
origin, and a multicast datagram from that origin will be forwarded on that
|
|
|
|
outgoing vif only if there are members of the destination group on that leaf.
|
1997-09-30 06:15:23 +00:00
|
|
|
.Pp
|
2001-07-15 08:06:20 +00:00
|
|
|
.Nm Mrouted
|
2000-03-01 14:09:25 +00:00
|
|
|
also maintains a copy of the kernel forwarding cache table.
|
|
|
|
Entries
|
2001-07-15 08:06:20 +00:00
|
|
|
are created and deleted by
|
2000-11-20 20:10:44 +00:00
|
|
|
.Nm .
|
1997-09-30 06:15:23 +00:00
|
|
|
.Pp
|
1994-09-08 00:26:13 +00:00
|
|
|
The cache tables look like this:
|
2000-11-10 17:46:15 +00:00
|
|
|
.Pp
|
|
|
|
.Bd -literal
|
1995-06-13 18:05:16 +00:00
|
|
|
Multicast Routing Cache Table (147 entries)
|
|
|
|
Origin Mcast-group CTmr Age Ptmr IVif Forwvifs
|
2001-07-15 08:06:20 +00:00
|
|
|
13.2.116/22 224.2.127.255 3m 2m - 0 1
|
1995-06-13 18:05:16 +00:00
|
|
|
>13.2.116.19
|
|
|
|
>13.2.116.196
|
2001-07-15 08:06:20 +00:00
|
|
|
138.96.48/21 224.2.127.255 5m 2m - 0 1
|
1995-06-13 18:05:16 +00:00
|
|
|
>138.96.48.108
|
2001-07-15 08:06:20 +00:00
|
|
|
128.9.160/20 224.2.127.255 3m 2m - 0 1
|
1995-06-13 18:05:16 +00:00
|
|
|
>128.9.160.45
|
2001-07-15 08:06:20 +00:00
|
|
|
198.106.194/24 224.2.135.190 9m 28s 9m 0P
|
1995-06-13 18:05:16 +00:00
|
|
|
>198.106.194.22
|
2001-07-15 08:06:20 +00:00
|
|
|
.Ed
|
1999-01-20 07:55:57 +00:00
|
|
|
.Pp
|
1995-06-13 18:05:16 +00:00
|
|
|
Each entry is characterized by the origin subnet number and mask and the
|
1997-09-30 06:15:23 +00:00
|
|
|
destination multicast group.
|
|
|
|
.Pp
|
|
|
|
The 'CTmr' field indicates the lifetime
|
1995-06-13 18:05:16 +00:00
|
|
|
of the entry. The entry is deleted from the cache table
|
1999-01-20 07:55:57 +00:00
|
|
|
(or refreshed, if traffic is flowing)
|
|
|
|
when the timer decrements to zero. The 'Age' field is the time since
|
1995-06-13 18:05:16 +00:00
|
|
|
this cache entry was originally created. Since cache entries get refreshed
|
|
|
|
if traffic is flowing, routing entries can grow very old.
|
1997-09-30 06:15:23 +00:00
|
|
|
.Pp
|
1995-06-13 18:05:16 +00:00
|
|
|
The 'Ptmr' field is simply a dash if no prune was sent upstream, or the
|
|
|
|
amount of time until the upstream prune will time out.
|
1997-09-30 06:15:23 +00:00
|
|
|
.Pp
|
1995-06-13 18:05:16 +00:00
|
|
|
The 'Ivif' field indicates the
|
1994-09-08 00:26:13 +00:00
|
|
|
incoming vif for multicast packets from that origin. Each router also
|
1995-06-28 17:58:49 +00:00
|
|
|
maintains a record of the number of prunes received from neighboring
|
2000-03-01 14:09:25 +00:00
|
|
|
routers for a particular source and group.
|
|
|
|
If there are no members of
|
1994-09-08 00:26:13 +00:00
|
|
|
a multicast group on any downward link of the multicast tree for a
|
2000-03-01 14:09:25 +00:00
|
|
|
subnet, a prune message is sent to the upstream router.
|
|
|
|
They are
|
1997-09-30 06:15:23 +00:00
|
|
|
indicated by a "P" after the vif number.
|
|
|
|
.Pp
|
|
|
|
The Forwvifs field shows the
|
1994-09-08 00:26:13 +00:00
|
|
|
interfaces along which datagrams belonging to the source-group are
|
2000-03-01 14:09:25 +00:00
|
|
|
forwarded.
|
|
|
|
A "p" indicates that no datagrams are being forwarded along
|
|
|
|
that interface.
|
|
|
|
An unlisted interface is a leaf subnet with no
|
|
|
|
members of the particular group on that subnet.
|
|
|
|
A "b" on an interface
|
1995-06-13 18:05:16 +00:00
|
|
|
indicates that it is a boundary interface, i.e. traffic will not be
|
1994-09-08 00:26:13 +00:00
|
|
|
forwarded on the scoped address on that interface.
|
1997-09-30 06:15:23 +00:00
|
|
|
.Pp
|
1995-06-13 18:05:16 +00:00
|
|
|
An additional line with a ">" as the first character is printed for
|
|
|
|
each source on the subnet. Note that there can be many sources in
|
|
|
|
one subnet.
|
1999-01-20 07:55:57 +00:00
|
|
|
An additional line with a "<" as the first character is printed
|
|
|
|
describing any prunes received from downstream dependent neighbors
|
|
|
|
for this subnet and group.
|
1997-09-30 06:15:23 +00:00
|
|
|
.Sh FILES
|
|
|
|
.Bl -tag -width /var/tmp/mrouted.cache -compact
|
|
|
|
.It Pa /etc/mrouted.conf
|
|
|
|
.It Pa /var/run/mrouted.pid
|
|
|
|
.It Pa /var/tmp/mrouted.dump
|
|
|
|
.It Pa /var/tmp/mrouted.cache
|
|
|
|
.El
|
|
|
|
.Sh SEE ALSO
|
1998-08-31 16:41:09 +00:00
|
|
|
.Xr map-mbone 8 ,
|
1997-09-30 06:15:23 +00:00
|
|
|
.Xr mrinfo 8 ,
|
1998-08-31 16:41:09 +00:00
|
|
|
.Xr mtrace 8
|
1997-09-30 06:15:23 +00:00
|
|
|
.Pp
|
1995-06-13 18:05:16 +00:00
|
|
|
DVMRP is described, along with other multicast routing algorithms, in the
|
|
|
|
paper "Multicast Routing in Internetworks and Extended LANs" by S. Deering,
|
|
|
|
in the Proceedings of the ACM SIGCOMM '88 Conference.
|
1997-09-30 06:15:23 +00:00
|
|
|
.Sh AUTHORS
|
|
|
|
.An Steve Deering ,
|
|
|
|
.An Ajit Thyagarajan ,
|
|
|
|
.An Bill Fenner .
|