mrouted is an implementation of the IPv4 DVMRP multicast routing protocol, RFC 1075. It is capable of turning a UNIX workstation, or an embedded Linux device, into a multicast router with tunnelling support, in order to cross non-multicast-aware routers.
DVMRP is a distance vector based protocol, derived from RIP, suitable for closely located multicast users in smaller networks. It simply floods all multicast streams to all routers, i.e. implicit join. This is also known as “flood and prune” since you can opt out from groups you do not want. For a detailed explanation of the protocol, see RFC 1075. For larger networks, with sparsely located nodes, you might want to look into pimd, and for static multicast routing smcroute may be used.
The mrouted routing daemon was developed by David Waitzman, Craig Partridge, Steve Deering, Ajit Thyagarajan, Bill Fenner, David Thaler and Daniel Zappala. With contributions by many others.
The last release by Mr. Fenner was 3.9-beta3 on April 26 1999 and mrouted has been in “beta” status since then. Several prominent UNIX operating systems, such as AIX, Solaris, HP-UX, BSD/OS, NetBSD, FreeBSD, OpenBSD as well as most GNU/Linux based distributions have used that beta as a de facto stable release, with (mostly) minor patches for system adaptations. Over time however many dropped support, but Debian and OpenBSD kept it under their wings.
In March 2003 OpenBSD, led by the fearless Theo de Raadt, managed to convince Stanford to release mrouted under a fully free license, the BSD license. In February 2005 Debian nevertheless dropped mrouted as an “obsolete protocol”.
For a long time the OpenBSD team remained the sole guardian of this project.
In 2010 this effort of bringing mrouted back to life was started. The 3.9.x stable series represent the first releases in over a decade. Patches from all over the Internet, including OpenBSD, have been integrated. Support for Debian/Ubuntu is included in the tree.
Issue tracker and GIT repository available at GitHub:
See also the Free(code) page.
Problems? See the multicast howto