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

FreeBSD Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
MROUTED(8)		    System Manager's Manual		    MROUTED(8)

NAME
     mrouted --	IP multicast routing daemon

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

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

OPTIONS
     This program follows the usual UNIX command line syntax, with long
     options 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
	     /etc/mrouted.conf

     -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
	     argument, 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:

		   packet
			 Debug inbound/outbout packets
		   prunes
			 Pruning operations, or	pruned routes
		   routes
			 Routing messages
		   rtdetail
			 Detailed routing information
		   peers
			 Neighbor gossip
		   cache
			 Debug routing cache
		   timeout
			 Debug timeouts
		   interface
			 Show interface, or vif, debug messages
		   groups
			 Debug group memberships
		   mtrace
			 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.

CONFIGURATION
     mrouted automatically configures itself to	forward	on all multicast-capa-
     ble interfaces, i.e. interfaces that have the IFF_MULTICAST flag set
     (excluding	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-
     mands:

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

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

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

EXAMPLE	CONFIGURATION
     This is an	example	configuration for a mythical multicast router at a big
     school.

     #
     # mrouted.conf example
     #

     # Name our	boundaries to make it easier.
     name LOCAL	239.255.0.0/16
     name EE 239.254.0.0/16

     # 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 172.16.12.38 boundary EE
	    altnet 172.16.15.0/26
	    altnet 172.16.15.128/26
	    altnet 172.16.48.0/24

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

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

SIGNALS
     mrouted responds to the following signals:

     HUP   Restarts mrouted.  The configuration	file is	reread when SIGHUP is
	   received.
     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/mrouted.pid upon startup.

FILES
     /etc/mrouted.conf
     /var/run/mrouted/mrouted.cache
     /var/run/mrouted/mrouted.dump
     /var/run/mrouted.pid

EXAMPLES
     The routing tables	look like this:

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

       1   36.11.0.1	 subnet: 36.11	       1       1    querier
			 groups: 224.0.2.1
				 224.0.1.0
				 224.0.0.4
			pkts in: 345
		       pkts out: 3456

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

       3   36.2.0.8	tunnel:	36.6.8.23      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	      36.8.0.77		 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
     periodic group membership queries on the vif 0 and	vif 1 subnets, as
     indicated by the "querier"	flags.	The list of boundaries indicate	the
     scoped addresses on that interface.  A count of the number	of incoming
     and outgoing 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.
     Entries 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	 224.2.127.255	   3m	2m    -	 0    1
     >13.2.116.19
     13.2.116.196
      138.96.48/21	 224.2.127.255	   5m	2m    -	 0    1
     >138.96.48.108
      128.9.160/20	 224.2.127.255	   3m	2m    -	 0    1
     >128.9.160.45
      198.106.194/24	 224.2.135.190	   9m  28s   9m	 0P
     >198.106.194.22

     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.

SEE ALSO
     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.

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

FreeBSD	10.3			 July 26, 2016			  FreeBSD 10.3

NAME | SYNOPSIS | DESCRIPTION | OPTIONS | CONFIGURATION | EXAMPLE CONFIGURATION | SIGNALS | FILES | EXAMPLES | SEE ALSO | AUTHORS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=mrouted&manpath=FreeBSD+10.3-RELEASE+and+Ports>

home | help