The original multicast routing daemon

- 2 mins read
DVMRP

mrouted is an implementation of the IPv4 multicast routing protocol DVMRP, RFC 1075. It is capable of turning a UNIX workstation, or Linux device, into a multicast router with tunneling support.

Tunneling may be required to cross non-multicast-aware routers.

The Distantance Vector Multicast Routing Protocol (DVMRP), derived from RIP, is suitable for smaller/dense networks. It employs the “flood and prune” method, where multicast is flooded until neighboring routers opt out from unwanted multicast groups. For a more thorough explanation of the protocol, see RFC 1075. In larger networks, with sparsely located nodes, you might want to look into pimd. For many use-cases static multicast routing, smcroute may be sufficient.

mrouted 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. 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 release, with (mostly) minor patches for system adaptations. However, over time many dropped support, but Debian and OpenBSD kept it under their wings.

In March 2003 the OpenBSD project, led by the fearless Theo de Raadt, managed to convince Stanford to finally release mrouted under a fully free license, the 3-clause 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.

In 2020, v4.0 and v4.1 were finally released after another 10 years of hard work. In 2021, v4.2, v4.3, and v4.4 were released. The most important news include:

  • A new command line tool, mroutectl to control and query status
  • Support for automatically detecting altnet, secondary addresses
  • Support for IGMPv3 and many config options to control IGMP
  • Static multicast routes, phyint foo0 static-group GROUP
  • Support for multiple multicast routing tables, -t ID

The project is hosted at GitHub, see the following links for more information, how to download, and build:

Manual pages availale here:

Problems? See the multicast howto