multicast routing daemon
is the original implementation of the
Distance-Vector Multicast Routing Protocol (DVMRP), RFC 1075. A dynamic
(automatic) multicast routing daemon.
use. DVMRP is derived from RIP, RFC 1058, which means
works stand-alone without any extra
network setup required. You can get up and running in a matter of minutes.
maintains topological knowledge via DVMRP,
upon which it implements a multicast datagram forwarding algorithm called
Reverse Path Multicasting.
forwards multicast datagrams along the
shortest (reverse) path tree rooted at the subnet on which the datagram
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 separated by (unicast)
routers that do not support IP multicasting, you can set up GRE tunnels.
includes (built-in) support for
IP-in-IP tunnels, which are virtual point-to-point links between pairs of
DVMRP capable rotuers 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 tunneling mechanism allows mrouted
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)
suffers from the well-known
scaling problems of any distance-vector routing protocol, and does not support
hierarchical multicast routing.
A more common practise today is to set up GRE tunnels between multicast capable
routers and limit mrouted
to run on a select
number of interfaces listed in the configuration.
handles multicast routing only; there may
or may not be unicast routing software running on the same machine as
. 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.
This program follows the usual UNIX command line syntax, with long options
starting with two dashes (`--'). The options are as follows:
- This option enables subsystem debug messages and causes
mrouted to run in the foreground of the
starting terminal, regardless of the -l flag
controls the (syslog) log level of each subsystem. Use '?' for a complete
list of supported subsystems.
- Display the type, source and destination of all packets
sent or received
- Display more information about prunes sent or
- Display more information about routing update packets
sent or received
- Display routing updates in excruciating detail. This is
generally way too much information
- Display information about neighbor discovery
- Display insertions, deletions and refreshes of entries
in the kernel forwarding cache
- Debug timeouts and periodic processes
- Display information about interfaces and their
- Display information about group memberships on physical
- Display information about multicast traceroute requests
passing through this router
- Display IGMP operation including group membership and
- Monitor ICMP handling
- Monitor RSRR operation
- Enable all debug messages (except noisy timer)
- Specify an alternative configuration file, default
- Print a help message and exit.
- Set log level for syslog messages: none, err, notice
(default), info, debug. Use '?' for a complete list of supported log
- Disable all logging
- Error conditions
- Warning conditions
- Normal but significant condition (default)
- Debug-level messages
- Run in foreground, do not detach from controlling terminal.
This option is usually required when running under process supervisors
like systemd and Finit, but is also useful when running from the terminal,
when debugging a config or at initial set up. Remember to also give the
-s option if you still want to redirect log
messages to the syslog.
- Wait for SEC seconds
before applying routes. This delay allows exchange of routes before
starting to forward multicast packets. In certain setups this can prevent
transient problems at startup, at the cost of a momentary black hole.
log messages, warnings and error conditions. This is the default when
running in the background. When running in the foreground, see
-n, log messages are printed to stdout.
responds to the following signals:
- Restart mrouted and reload the
- Terminate execution gracefully, i.e., by sending good-bye
messages to all neighboring routers.
- Same as INT.
For convenience, mrouted
writes its process ID to
when it has completed its
start up and is ready to receive signals.
- Main configuration file.
- DVMRP generation ID. Used by neighboring DVRMP routers to
detect when a router is restarted. On BSD
/var/db/mrouted.genid is used.
- Pidfile (re)created by mrouted
daemon when it has started up and is ready to receive commands.
- UNIX-domain socket used for
- Holds active IPv4 multicast routes (Linux).
- Holds the IPv4 virtual interfaces used by the active
multicast routing daemon (Linux).
Dynamic multicast routing has never been use-case 1a for UNIX systems. Most
systems are by default tuned to act as workstations, end devices. When
something does not work, or only sort of works, run
’, optionally also with
, to get full logs of its interaction with the
Particular problems include, but are not limited to:
- Or similar, with an error message like this:
This comes from missing multicast routing support in the kernel. On Linux
you need at least:
Cannot enable multicast routing in kernel
options MROUTING # Multicast routing
- On Linux systems a common problem is that of many
interfaces. The error message used to be something like this:
Today that cryptic message has been replaced with a request to adjust
/proc/sys/net/ipv4/igmp_max_memberships to a
value at least 3x the number of vifs to run on, e.g., by setting it in
/etc/sysctl.conf or similar, depending on the
Cannot join group 220.127.116.11: No buffer space available
Multicast Routing in Internetworks and Extended LANs,
Proceedings of the ACM SIGCOMM '88 Conference.
home page is
The following are the principal authors of mrouted
listed in no particular order:
With contributions by many others.