mrouted(8)
NAME
mrouted - IP multicast routing daemon
SYNOPSIS
mrouted [-c config_file] [-d [debug_level]] [-p]
DESCRIPTION
- The mrouted utility 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 dis - tance-vector routing protocol (like RIP, described in RFC-1058), upon which
- it implements
a multicast datagram forwarding algorithm called Reverse - Path Multicasting.
- The mrouted utility forwards a multicast datagram along a
- shortest
(reverse) path tree rooted at the subnet on which the data - gram originates. The multicast 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 that have members of the destination - group. Hence,
datagrams are not forwarded along those branches which have - no listeners
of the multicast group. The IP time-to-live of a multicast - datagram can
be used to limit the range of multicast datagrams. - In order to support multicasting among subnets that are sep
- arated by
(unicast) routers that do not support IP multicasting, - mrouted includes
support for "tunnels", which are virtual point-to-point - links between
pairs of multicast routers located anywhere in an internet. - IP multicast
packets are encapsulated for transmission through tunnels, - so that they
look like normal unicast datagrams to intervening routers - and subnets.
The encapsulation is added on entry to a tunnel, and - stripped off on exit
from a tunnel. The packets are encapsulated using the IP - in-IP protocol
(IP protocol number 4). Older versions of mrouted tunneled - using IP
source routing, which puts a heavy load on some types of - routers. This
version does not support IP source route tunnelling. - The tunnelling mechanism allows mrouted to establish a vir
- tual internet,
for the purpose of multicasting only, which is independent - of the physical internet, and which may span multiple Autonomous Sys
- tems. This capability is intended for experimental support of internet mul
- ticasting
only, pending widespread support for multicast routing by - the regular
(unicast) routers. The mrouted utility suffers from the - well-known scaling problems of any distance-vector routing protocol, and
- does not (yet)
support hierarchical multicast routing. - The mrouted utility handles multicast routing only; there
- may or may not
be unicast routing software running on the same machine as - mrouted. With
the use of tunnels, it is not necessary for mrouted to have - access to
more than one physical subnet in order to perform multicast - forwarding.
- The following options are available:
- -c config_file
- Specify an alternative file for configuration com
- mands. Default
is /etc/mrouted.conf. - -d [debug_level]
- If no -d option is given, or if the debug level is
- specified as
0, mrouted detaches from the invoking terminal. - Otherwise, it
remains attached to the invoking terminal and re - sponsive to signals from that terminal. Regardless of the debug
- level, mrouted
always writes warning and error messages to the sys - tem log daemon. The -debug-level argument is a comma-separated
- list of any
of the following: - packet Display the type, source and destination of
- all packets
sent or received.
- pruning
- Display more information about prunes sent
- or received.
- routing
- Display more information about routing up
- date packets
sent or received. - route_detail
- Display routing updates in excruciating de
- tail. This is
generally way too much information. - neighbors
- Display information about neighbor discov
- ery.
- cache Display insertions, deletions and refreshes
- of entries in
- the kernel forwarding cache.
- timeout
- Debug timeouts and periodic processes.
- interface
- Display information about interfaces and
- their configuration.
- membership
- Display information about group memberships
- on physical
interfaces. - traceroute
- Display information about multicast tracer
- oute requests
passing through this router. - igmp Display IGMP operation including group mem
- bership and
- querier election.
- icmp Monitor ICMP handling.
- rsrr Monitor RSRR operation.
- Upon startup, mrouted writes its pid to the file
/var/run/mrouted.pid.
CONFIGURATION
- The mrouted utility automatically configures itself to for
- ward on all
multicast-capable interfaces, i.e., interfaces that have the - IFF_MULTICAST flag set (excluding the loopback "interface"), and it
- finds other
DVMRP routers directly reachable via those interfaces. To - override the
default configuration, or to add tunnel links to other mul - ticast routers,
configuration commands may be placed in /etc/mrouted.conf - (or an alternative file, specified by the -c option).
- The file format is free-form; whitespace (including new
- lines) is not significant. The file begins with commands that apply to
- mrouted's overall
operation or set defaults. - cache_lifetime 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 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 min
- utes).
- prune_lifetime secs
- Specifies, in seconds, the average lifetime of
- prunes that are
sent towards parents. The actual lifetimes will be - randomized in
the range [.5secs,1.5secs]. The default is 7200 (2 - hours).
Smaller values cause less state to be kept both at - this router
and the parent, at the cost of more frequent broad - casts. However, some routers (e.g. mrouted <3.3 and all cur
- rently known
versions of cisco's IOS) do not use the DVMRP gener - ation 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 sit - uation, the
prune_lifetime keyword may be specified on an inter - face as
described below. - noflood
- The mrouted utility uses a DVMRP optimization to
- prevent having
to keep individual routing tables for each neighbor; - part of this
optimization is that mrouted 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; mrouted 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. - rexmit_prunes [on|off]
- 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. - name boundary-name scoped-addr/mask-len
- Associates boundary-name with the boundary described
- by
scoped-addr/mask-len, to help make interface config - urations more
readable and reduce repetition in the configuration - file.
- The second section of the configuration file, which may op
- tionally be
empty, describes options that apply to physical interfaces. - phyint 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.
- disable
- Disables multicast forwarding on this interface. By
- default,
mrouted discovers all locally attached multicast ca - pable interfaces and forwards on all of them.
- netmask netmask
- If the kernel's netmask does not accurately reflect
- the subnet
(e.g. you are using proxy-ARP in lieu of IP subnet - ting), use the
netmask command to describe the real netmask. - altnet network/mask-len
- If a phyint is attached to multiple IP subnets, de
- scribe each
additional subnet with the altnet keyword. This - command may be
specified multiple times to describe multiple sub - nets.
- igmpv1 If there are any IGMPv1 routers on the phyint, use
- the igmpv1
- keyword to force mrouted into IGMPv1 mode. All
- routers on the
phyint must use the same version of IGMP. - force_leaf
- Force mrouted to ignore other routers on this inter
- face. mrouted
will never send or accept neighbor probes or route - reports on
this interface. - In addition, the common vif commands described later may all
- be used on a
phyint. - The third section of the configuration file, also optional,
- describes the
configuration of any DVMRP tunnels this router might have. - tunnel local-addr|ifname remote-addr|remote-hostname
- This command establishes a DVMRP tunnel between this
- host (on the
interface described by local-addr or ifname) and a - remote host
(identified by remote-addr or remote-hostname). A - remote hostname may only be used if it maps to a single IP ad
- dress. A tunnel must be configured on both routers before it can
- be used.
- Be careful that the unicast route to the remote ad
- dress goes out
the interface specified by the local-addr|ifname ar - gument. Some
UNIX kernels rewrite the source address of mrouted's - packets on
their way out to contain the address of the trans - mission interface. This is best assured via a static host route.
- The common vif commands described below may all be used on
- tunnels or
phyints. - metric m
- The metric is the "cost" associated with receiving a
- datagram on
the given interface or tunnel; it may be used to in - fluence the
choice of routes. The metric defaults to 1. Met - rics should be
kept as small as possible, because DVMRP cannot - route along paths
with a sum of metrics greater than 31. - advert_metric m
- The advert_metric is the "cost" associated with
- sending a datagram on the given interface or tunnel; it may be
- used to influence the choice of routes. The advert_metric de
- faults to 0.
Note that the effective metric of a link is one - end's metric plus
the other end's advert_metric. - threshold t
- The threshold is the minimum IP time-to-live re
- quired for a multicast datagram to be forwarded to the given inter
- face or tunnel.
It is used to control the scope of multicast data - grams. (The TTL
of forwarded packets is only compared to the thresh - old, it is not
decremented by the threshold. Every multicast - router decrements
the TTL by exactly 1.) The default threshold is 1. - In general, all multicast routers connected to a
- particular subnet or tunnel should use the same metric and thresh
- old for that
subnet or tunnel. - rate_limit r
- The rate_limit option allows the network administra
- tor to specify
a certain bandwidth in Kbits/second which would be - allocated to
multicast traffic. It defaults 0 (unlimited). - boundary boundary-name|scoped-addr/mask-len
- The boundary option allows an interface to be con
- figured as an
administrative boundary for the specified scoped ad - dress. Packets belonging to this address will not be forwarded
- on a scoped
interface. The boundary option accepts either a - name or a boundary spec. This command may be specified several
- times on an
interface in order to describe multiple boundaries. - 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. - noflood
- As described above, but only applicable to this in
- terface/tunnel.
- prune_lifetime secs
- As described above, but only applicable to this in
- terface/tunnel.
- rexmit_prunes [on|off]
- As described above, but only applicable to this in
- terface/tunnel.
Recall that prune retransmission defaults to on for - point-topoint links and tunnels, and to off for multi-access
- links.
- allow_nonpruners
- By default, mrouted refuses to peer with DVMRP
- neighbors that do
not claim to support pruning. This option allows - such peerings
on this interface. - 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 in
- terface
"notransit" has no meaning. - accept|deny (route/mask-len [exact])+ [bidir]
- The accept and deny commands allow rudimentary route
- filtering.
The accept command causes mrouted to accept only the - listed
routes on the configured interface; the deny command - causes
mrouted to accept all but the listed routes. Only - one of accept
or deny commands may be used on a given interface. - The list of routes follows the accept or deny key
- word. If the
keyword exact follows a route, then only that route - is matched;
otherwise, that route and any more specific route is - matched.
For example, deny 0/0 denys all routes, while deny - 0/0 exact
denys only the default route. The default route may - also be
specified with the default keyword. - The bidir keyword enables bidirectional route fil
- tering; the filter will be applied to routes on both output and in
- put. Without
the bidir keyword, accept and deny filters are only - applied on
input. Poison reverse routes are never filtered - out.
- The mrouted utility 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 tunnels; such an mrouted configuration would be - better replaced
by more direct tunnels (i.e., eliminate the middle man).
EXAMPLE CONFIGURATION
- This is an example configuration for a mythical multicast
- router at a big
school. - #
# 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
SIGNALS
The mrouted utility responds to the following signals:
- HUP Restarts mrouted. The configuration file is reread
- every time
- this signal is evoked.
- INT Terminate execution gracefully (i.e., by sending
- good-bye mes
- sages to all neighboring routers).
- TERM Same as INT.
- USR1 Dump the internal routing tables to
- /var/tmp/mrouted.dump.
- USR2 Dump the internal cache tables to
- /var/tmp/mrouted.cache.
- QUIT Dump the internal routing tables to stderr (only if
- mrouted was
- invoked with a non-zero debug level).
- For convenience in sending signals, mrouted writes its pid
- to
/var/run/mrouted.pid upon startup.
FILES
/etc/mrouted.conf
/var/run/mrouted.pid
/var/tmp/mrouted.dump
/var/tmp/mrouted.cache
EXAMPLES
The routing tables look like this:
- Virtual Interface Table
- Vif Local-Address Metric Thresh Flags
0 36.2.0.8 subnet: 36.2/16 1 1queriergroups: 224.0.2.1224.0.0.4pkts in: 3456pkts out: 2322323
- 1 36.11.0.1 subnet: 36.11/16 1 1
- querier
- groups: 224.0.2.1
224.0.1.0
224.0.0.4 - pkts in: 345
- pkts out: 3456
- 2 36.2.0.8 tunnel: 36.8.0.77 3 1
- peers: 36.8.0.77 (3.255)
- boundaries: 239.0.1/24
- : 239.1.2/24
- pkts in: 34545433
- pkts out: 234342
- 3 36.2.0.8 tunnel: 36.6.8.23 3 16
- Multicast Routing Table (1136 entries)
- 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*
.
.
. - In this example, there are four vifs connecting to two sub
- nets 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 instance of mrouted is the one responsible for - sending
periodic group membership queries on the vif 0 and vif 1 - subnets, as
indicated by the "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 shown at each interface. - Associated with each subnet from which a multicast datagram
- can originate
is the address of the previous hop router (unless the subnet - is directlyconnected), the metric of the path back to the origin, the
- amount of time
since we last received an update for this subnet, the incom - ing vif for
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 desti - nation group
on that leaf. - The mrouted utility also maintains a copy of the kernel for
- warding cache
table. Entries are created and deleted by mrouted. - The cache tables look like this:
- Multicast Routing Cache Table (147 entries)
- Origin Mcast-group CTmr Age Ptmr IVif For
- wvifs
13.2.116/22 224.2.127.255 3m 2m - 0 1 - >13.2.116.19
>13.2.116.196 - 138.96.48/21 224.2.127.255 5m 2m - 0 1
- >138.96.48.108
- 128.9.160/20 224.2.127.255 3m 2m - 0 1
- >128.9.160.45
- 198.106.194/24 224.2.135.190 9m 28s 9m 0P
- >198.106.194.22
- Each entry is characterized by the origin subnet number and
- mask and the
destination multicast group. - The 'CTmr' field indicates the lifetime of the entry. The
- entry is
deleted from the cache table (or refreshed, if traffic is - flowing) when
the timer decrements to zero. The 'Age' field is the time - since this
cache entry was originally created. Since cache entries get - refreshed if
traffic is flowing, routing entries can grow very old. - The 'Ptmr' field is simply a dash if no prune was sent up
- stream, or the
amount of time until the upstream prune will time out. - The 'Ivif' field indicates the incoming vif for multicast
- packets from
that origin. Each router also maintains a record of the - number of prunes
received from neighboring routers for a particular source - and group. If
there are no members of a multicast group on any downward - link of the
multicast tree for a subnet, a prune message is sent to the - upstream
router. They are indicated by a "P" after the vif number. - The Forwvifs field shows the interfaces along which data
- grams belonging
to the source-group are 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 sub - net. A "b" on
an interface indicates that it is a boundary interface, - i.e., traffic
will not be forwarded on the scoped address on that inter - face.
- 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.
An additional line with a "<" as the first character is - printed describing any prunes received from downstream dependent neighbors
- for this subnet and group.
SEE ALSO
map-mbone(8), mrinfo(8), mtrace(8)
- DVMRP is described, along with other multicast routing algo
- rithms, in the
paper "Multicast Routing in Internetworks and Extended LANs" - by S.
Deering, in the Proceedings of the ACM SIGCOMM '88 Confer - ence.
AUTHORS
- Steve Deering,
Ajit Thyagarajan,
Bill Fenner. - BSD May 8, 1995