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

     The tunnelling 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 (yet) support hier-
     archical 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 does not yet exist, print a warning and continue.
	     Useful with VPN and other dynamic interfaces.  However, mrouted
	     must be restarted to start	listening on such interfaces, if they
	     did not exist when	mrouted	was started.

     -N, --no-interfaces
	     Assume all	interfaces are disabled	unless explicitly enabled with
	     phyint enable

     -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, or 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.

     mrouted automatically configures itself to	forward	on all multicast-capa-
     ble interfaces, i.e. interfaces that have the IFF_MULTICAST flag set (ex-
     cluding the loopback "interface"),	and it finds other mrouted directly
     reachable via those interfaces.  To override the default configuration,
     or	to add tunnel links to other mrouted, configuration commands may be
     placed in /etc/mrouted.conf.  There are five types	of configuration com-

	   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 can	accept either a	name or	a boundary;
     the boundary and altnet options may be specified as many times as neces-

     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 on the	physi-
     cal interface identified by local IP address local-addr, or to associate
     a non-default metric or threshold with the	specified physical interface.
     The local IP address local-addr may be replaced by	the interface name
     (e.g. le0).  If a phyint is attached to multiple IP subnets, describe
     each additional subnet with the altnet keyword.  Phyint commands must
     precede tunnel commands.

     The pruning option	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.

     boundary allows an	interface to be	configured as an administrative	bound-
     ary 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.

     metric is the "cost" associated with sending a datagram on	the given in-
     terface 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, be-
     cause mrouted cannot route	along paths with a sum of metrics greater than

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

     threshold 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 thresh-
     old.  Every multicast router decrements the TTL by	1.)  The default
     threshold is 1.

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

     mrouted will not initiate execution if it has fewer than two enabled vir-
     tual interfaces (vifs), where a vif is either a physical multicast-capa-
     ble 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).

     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 in	sending	signals, mrouted writes	its process ID to
     /var/run/ upon startup.


     The routing tables	look 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)

     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

BSD			       January 17, 2013				   BSD


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

home | help