Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
MROUTED(8)		    System Manager's Manual		    MROUTED(8)

     mrouted --	IP multicast routing daemon

     mrouted [-fhp] [-c	FILE] [-d [[LEVEL[,LEVEL,...]]]

     mrouted 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.

     mrouted forwards a	multicast datagram along a shortest (reverse) path
     tree rooted at the	subnet on which	the datagram originates.  The multi-
     cast 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, mrouted includes
     support for "tunnels", which are virtual point-to-point links between
     pairs of mrouted daemons 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.  By	default, the packets are encapsulated using the	IP-in-
     IP	protocol (IP protocol number 4).  Older	versions of mrouted tunnel use
     IP	source routing,	which puts a heavy load	on some	types of routers.
     This version does not support IP source route tunneling.

     The tunneling mechanism allows mrouted to establish a virtual internet,
     for the purpose of	multicasting only, which is independent	of the physi-
     cal internet, and which may span multiple Autonomous Systems.  This capa-
     bility is intended	for experimental support of internet multicasting
     only, pending widespread support for multicast routing by the regular
     (unicast) routers.	 mrouted suffers from the well-known scaling problems
     of	any distance-vector routing protocol, and does not support hierarchi-
     cal multicast routing.

     mrouted 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.

     This program follows the usual UNIX command line syntax, with long	op-
     tions starting with two dashes (`--').  The options are as	follows:

     -h, --help
	     Print a help message and exit.

     -M, --missing-ok
	     If	an interface in	/etc/mrouted.conf does not exist yet, print a
	     warning and continue.  Useful with	VPN, PPP and other dynamic in-
	     terfaces.	However, mrouted must still be restarted to start lis-
	     tening on such interfaces,	if they	did not	exist when mrouted was

     -N, --no-interfaces
	     Change mrouted default behavior and assume	all interfaces are
	     disabled unless explicitly	enabled	with phyint enable in

     -D, --startup-delay=DELAY
	     Wait for DELAY seconds before applying the	routes.	This delay en-
	     ables to exchange routes before starting to forward multicast
	     packets and therefore eliminate transient problems	at startup, at
	     the cost of a momentary black hole. Defaults to 10	seconds.

     -f, --foreground
	     Run in foreground,	do not detach from the calling terminal.

     -c, --config=FILE
	     Specify an	alternative configuration file,	default

     -d, --debug[=LEVEL[,LEVEL...]
	     By	default, mrouted detaches from the invoking terminal.  If this
	     option is specified, mrouted it runs in foreground	of the start-
	     ing terminal and responds to signals.  If -d is given with	no ar-
	     gument, the debug level defaults to igmp, cache, interface,
	     groups, prunes, routes and	peers.

	     Regardless	of the debug level, mrouted always writes warning and
	     error messages to the system log daemon.  Debug levels have the
	     following effects:

			 Debug inbound/outbout packets
			 Pruning operations, or	pruned routes
			 Routing messages
			 Detailed routing information
			 Neighbor gossip
			 Debug routing cache
			 Debug timeouts
			 Show interface	(VIF) debug messages
			 Debug group memberships
			 Multicast traceroute information
		   igmp	 Debug IGMP messages
		   icmp	 Debug ICMP messages
		   rsrr	 Debug RSRR messages

     -p	     Start mrouted in a	non-pruning mode.  This	was previously used in
	     routers for test purposes only.  However, this is no longer sup-
	     ported and	this option is only kept for compatibility reasons.

     -r, --show-routes
	     Show state	of VIFs	and multicast routing tables. This command
	     sends SIGUSR1 to a	running	mrouted, waits for the dump file to be
	     updated, and then displays	the result on stdout.

     In	many cases you do not need to configure	mrouted.  It configures	itself
     automatically to forward multicast	on all multicast-capable interfaces,
     i.e., interfaces that have	the IFF_MULTICAST flag set, excluding the
     loopback interface.  It locates other DVMRP capable routers directly
     reachable via those interfaces.

		 will not start	with less than two enabled virtual interfaces
		 (VIFs).  A VIF	is either a physical multicast-capable inter-
		 face or a tunnel.
		 will log a warning if all of its VIFs are tunnels; such a
		 configuration is likely better	replaced by more direct	(GRE)
		 tunnels (i.e. eliminate the middle man).

     To	override the default settings, for example to to add tunnel links to
     other DVMRP routers, configuration	commands may be	placed in
     /etc/mrouted.conf.	 There are five	types of commands:

	   cache_lifetime _SEC_

	   name	boundary-name |	scoped-addr/mask-len

	   phyint local-addr [altnet network/mask-len]
		 [boundary boundary-name | scoped-addr/mask-len]
		 [disable | enable]
		 [metric _1-31_]
		 [rate_limit kbps]
		 [threshold ttl]

	   pruning [off	| on]

	   tunnel local-addr remote-addr
		 [boundary boundary-name | scoped-addr/mask-len]
		 [metric _1-31_]
		 [rate_limit kbps]
		 [threshold ttl]

     The file format is	free-form: whitespace (including newlines) is not sig-
     nificant.	The boundary option to all commands can	accept either a	name
     or	a network boundary; the	boundary and altnet options may	be specified
     as	many times as necessary.

     The cache_lifetime	is a value that	determines the amount of time that a
     cached multicast route stays in kernel before timing out.	The value of
     this entry	should lie between 300 (5 min) and 86400 (1 day).  It defaults
     to	300.

     The name option assigns names to boundaries to make configuration easier.

     The phyint	command	can be used to disable multicast routing (or enable if
     mrouted is	started	with all interfaces disabled) on the physical inter-
     face identified by	local IP address local-addr, or	to associate a non-de-
     fault metric or threshold with the	specified physical interface.  The lo-
     cal IP address local-addr may be replaced by the interface	name (e.g.
     le0).  If an interface is attached	to multiple IP subnets,	describe each
     additional	subnet with the	altnet keyword.	 All phyint commands must pre-
     cede tunnel commands.

     The pruning command is provided for mrouted to act	as a non-pruning
     router.  This is no longer	supported and the configuration	option is only
     kept for compatibility reasons.

     The tunnel	command	can be used to establish a tunnel link between local
     IP	address	local-addr and remote IP address remote-addr, and to associate
     a non-default metric or threshold with that tunnel.  The local IP address
     local-addr	may be replaced	by the interface name (e.g. le0).  The remote
     IP	address	remote-addr may	be replaced by a host name, if and only	if the
     host name has a single IP address associated with it.  The	tunnel must be
     set up in the mrouted.conf	files of both routers before it	can be used.

		 allows	an interface to	be configured as an administrative
		 boundary for the specified scoped address.  Packets belonging
		 to this address will not be forwarded on a scoped interface.
		 The boundary option accepts either a name or a	boundary spec.
		 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 metric	defaults to 1.	Metrics	should be kept
		 as small as possible, because mrouted cannot route along
		 paths with a sum of metrics greater than 31.
		 allows	the network administrator to specify a certain band-
		 width in kbps which would be allocated	to multicast traffic.
		 It defaults to	500 kbps on tunnels, and 0 (unlimited) on
		 physical interfaces.
		 is the	minimum	IP time-to-live	required for a multicast data-
		 gram 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 router
		 decrements the	TTL by 1.)  The	default	threshold is 1.

     In	general, all DVMRP routers connected to	a particular subnet or tunnel
     should use	the same metric	and threshold for that subnet or tunnel.

     This is an	example	configuration for a mythical multicast router at a big

     # mrouted.conf example

     # Name our	boundaries to make it easier.
     name LOCAL
     name EE

     # 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 boundary EE

     # 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.
	    metric 1 threshold 1 rate_limit 0

     # This is our tunnel to the outside world.
     # Careful with those boundaries, Eugene.
	    metric 1 threshold 32
	    boundary LOCAL boundary EE

     mrouted responds to the following signals:

     HUP   Restarts mrouted.  The configuration	file is	reread when SIGHUP is
     INT   Terminates execution	gracefully, i.e., by sending good-bye messages
	   to all neighboring routers.
     TERM  The same as INT.
     USR1  Dumps the internal routing tables to	/var/run/mrouted/mrouted.dump.
     USR2  Dumps the internal cache tables to /var/run/mrouted/mrouted.cache.
     QUIT  Dumps the internal routing tables to	stderr (only if	mrouted	was
	   invoked with	a non-zero debug level).

     For convenience, mrouted writes its process ID to /var/run/
     when it has completed its start up	and is ready to	receive	signals.

     /etc/mrouted.conf		     Main configuration	file.
     /var/run/mrouted/mrouted.dump   Internal routing table, created and up-
				     dated on SIGUSR1
     /var/run/mrouted/mrouted.cache  Internal cache table, created and updated
				     on	SIGUSR2
     /var/run/	     Pidfile (re)created by mrouted daemon
				     when it has started up and	is ready to
				     receive commands.
     /proc/net/ip_mr_cache	     Holds active IPv4 multicast routes
     /proc/net/ip_mr_vif	     Holds the IPv4 virtual interfaces used by
				     the active	multicast routing daemon

     The routing table looks like this:

     Virtual Interface Table
      Vif  Local-Address		    Metric  Thresh  Flags
       0	 subnet: 36.2	       1       1    querier
			pkts in: 3456
		       pkts out: 2322323

       1	 subnet: 36.11	       1       1    querier
			pkts in: 345
		       pkts out: 3456

       2	 tunnel:     3       1
			  peers: (2.2)
		     boundaries: 239.0.1
			       : 239.1.2
			pkts in: 34545433
		       pkts out: 234342

       3	tunnel:      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		 4    15    2	 0* 1* 3*
      36.11				 1    20    1	 0* 2  3*

     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 instance of mrouted is the one responsible for sending pe-
     riodic group membership queries on	the VIF	0 and VIF 1 subnets, as	indi-
     cated by the "querier" flags.  The	list of	boundaries indicate the	scoped
     addresses on that interface.  A count of the number of incoming and out-
     going 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 directly-
     connected), the metric of the path	back to	the origin, the	amount of time
     since we last received an update for this subnet, the incoming 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 destination group
     on	that leaf.

     mrouted also maintains a copy of the kernel forwarding cache table.  En-
     tries 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 Forwvifs
      13.2.116/22	   3m	2m    -	 0    1
      138.96.48/21	   5m	2m    -	 0    1
      128.9.160/20	   3m	2m    -	 0    1
      198.106.194/24	   9m  28s   9m	 0P

     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 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 upstream, 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 datagrams belonging
     to	the source-group are forwarded.

     A "p" indicates that no datagrams are being forwarded along that inter-
     face.  An unlisted	interface is a leaf subnet with	no members of the par-
     ticular group on that subnet.

     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 interface.
     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.

     map-mbone(8), mrinfo(8), mtrace(8), pimd(8), smcroute(8)

     S.	Deering, Multicast Routing in Internetworks and	Extended LANs,
     Proceedings of the	ACM SIGCOMM '88	Conference.

     David Waitzman, Craig Partridge, Steve Deering, Ajit Thyagarajan, Bill
     Fenner, David Thaler, and Daniel Zappala.	With contributions by many

FreeBSD	13.0		       January 17, 2013			  FreeBSD 13.0


Want to link to this manual page? Use this URL:

home | help