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

FreeBSD Manual Pages

  
 
  

home | help
SMCROUTE.CONF(5)	      File Formats Manual	      SMCROUTE.CONF(5)

NAME
       smcroute.conf --	smcrouted configuration	file format

DESCRIPTION
       The file	smcroute.conf is, strictly speaking, not critical to the oper-
       ation of	smcrouted.  Some warnings may be logged, and provided the dae-
       mon  is	not started with -N, it	enables	VIFs for all interfaces	it can
       find and	then waits for commands	from smcroutectl(8).  As you can  tell
       from that caveat, any non-trivial setup requires	an smcroute.conf.

       On most systems the configuration file(s) are available in:

	     /etc/smcroute.conf
		     The  traditional  location, with all routes, group	joins,
		     and interfaces.

	     /etc/smcroute.d/*.conf
		     Recently an include directive was added to	smcroute.conf,
		     which allows for including	other  files.	By  convention
		     /etc/smcroute.d/  has been	selected as the	default	in the
		     bundled  example  smcroute.conf.	See  more  about   the
		     include directive below.

       In debug	mode, smcrouted	logs the success of parsing each line and set-
       ting  up	a route.  There	is also	a basic	syntax validator built-in, see
       smcrouted(8) for	more information.

SYNTAX
       This section details the	syntax of each of the available	 configuration
       file directives.

       Comments	 start with "#"	and run	to the end of line.  See the "EXAMPLE"
       below.

	     phyint IFNAME [enable | disable] [mrdisc] [ttl-threshold TTL]
		     By	default	all interfaces on the system are  enabled  and
		     possible	to  route  between,  provided  they  have  the
		     MULTICAST interface flag set.  The	phyint	directive  can
		     be	 used  to  selectively	enable,	or disable, interfaces
		     from being	mapped to virtual interfaces (VIFs), which the
		     multicast routing stack actually employs.	VIFs are  lim-
		     ited,  most  operating systems only have 32, it is	recom-
		     mended  to	 disable  all  interfaces  by  default,	  with
		     `smcrouted	-N', and enable	them one by one	using this di-
		     rective.

		     mrdisc  is	an IPv4	specific feature flag to enable	Multi-
		     cast Router Discovery  protocol,  RFC4286,	 announcement.
		     This  standard  is	 supported by some switch (and router)
		     manufacturers and may be used instead  of	having	mgroup
		     statements	for all	possible multicast groups you may want
		     to	forward.

		     ttl-threshold  is a very useful setting to	help implement
		     "TTL scoping".  I.e., the minimum TTL level  a  multicast
		     stream  must  exceed  for the kernel to consider it to be
		     routed.  The default value	(1) means a TTL	of 2 or	higher
		     is	needed for a frame to  be  forwarded  to  the  routing
		     stack,   otherwise	 it  is	 considered  link-local.   See
		     smcrouted(8) for more information on multicast scoping.

		     Note: all phyint directives must be read by smcrouted be-
		     fore any mgroup or	mroute that refer to them!  Hence, ei-
		     ther  place   all	 phyint	  directives   in   the	  main
		     smcroute.conf  or,	 if  /etc/smcroute.d/*.conf  is	 used,
		     first in a	file named, 00-phyint.conf, or similar.

	     mgroup from IIF [source SOURCE[/LEN]] group GROUP[/LEN]
		     Join a multicast group, with optional prefix length, on a
		     given inbound interface (IIF).  The source	address	is op-
		     tional, but if given a source specific (SSM) join is per-
		     formed.  Every /LEN is translated to as many sources  and
		     groups as specified.  To attempt to overcome (configured)
		     kernel  limitations, smcrouted probes the amount of joins
		     available per socket.   When  the	socket	has  been  ex-
		     hausted, another one is opened.  At most 2048 sockets are
		     opened.

		     The purpose of joining groups is to use layer-2 signaling
		     to	 inform	switches, and other routers, to	open up	multi-
		     cast traffic to your interfaces.  Leaving a group is  not
		     supported from the	configuration file, instead remove the
		     mgroup,  or  trim	its  arguments,	 SIGHUP	or smcroutectl
		     reload your daemon.

		     Note: use of the mgroup command should be avoided if pos-
		     sible.  Instead configure "router ports"  or  similar  on
		     the  switches  (bridges)  on your LAN.  This to have them
		     direct all	the multicast to your router, or direct	select
		     groups if they have such capabilities.  Usually MAC  mul-
		     ticast filters exist.

	     mroute  from  IIF	[source	SOURCE[/LEN]] group GROUP[/LEN]	to OIF
		     [OIF ...]
		     Add a multicast route for packets received	on network in-
		     terface IIF, originating from IP address SOURCE, and sent
		     to	the multicast group address  GROUP,  to	 the  outbound
		     network interface(s) OIF [OIF ...].

		     The interfaces provided as	IIF and	OIF can	be any network
		     interface name available in the system, as	long as	it has
		     the  MULTICAST flag set.  Furthermore, the	kernel usually
		     only forwards traffic if the interface(s) have an IP  ad-
		     dress.   These  are  limitations posed by the kernel, not
		     smcrouted.

		     To	add a (*,G) route, either leave	SOURCE out  completely
		     or	set it to 0.0.0.0, and if you want to specify a	range,
		     set GROUP/LEN, e.g.  225.0.0.0/24.

	     include PATH
		     Include  another  smcroute.conf  file,  or	 set of	files.
		     Matching is performed  using  glob(3),  and  matches  are
		     sorted   alphabetically.	 By  convention,  the  example
		     smcroute.conf    bundled	 with	 smcrouted    includes
		     /etc/smcroute.d/*.conf.

EXAMPLE
       smcrouted  supports reading and setting up multicast routes from	a con-
       fig file.  The default location is /etc/smcroute.conf, but this can  be
       overridden using	the -f FILE command line option.

       The IIF and OIF arguments below are interface names, or interface wild-
       cards  of the form eth+,	which matches eth0, eth10, etc.	 Wildcards are
       available for inbound interfaces.

	     #
	     # smcroute.conf example
	     #
	     # Syntax:
	     #	 phyint	IFNAME <enable|disable>	[mrdisc] [ttl-threshold	<1-255>]
	     #	 mgroup	from IIF [source ADDR[/LEN]] group GROUP[/LEN]
	     #	 mroute	from IIF [source ADDR[/LEN]] group GROUP[/LEN] to OIF [OIF ...]
	     #	 include /path/to/*.conf

	     # Assuming	smcrouted was started with the `-N` flag.  Enable interfaces
	     # required	for inbound and	outbound traffic.  TTL scoping is enabled on
	     # all interfaces, e.g., to	use eth0 as n outbound interface (OIF),	all
	     # multicast frames	must have a TTL	of 12 or greater when ingressing.
	     phyint eth0 enable	ttl-threshold 11
	     phyint eth1 enable	ttl-threshold 3
	     phyint eth2 enable	ttl-threshold 5
	     phyint virbr0 enable ttl-threshold	5

	     # Instruct	the kernel to join the multicast group 225.1.2.3 on interface
	     # eth0.  Then add an mroute of the	same multicast stream, from the	host
	     # 192.168.1.42 on interface eth0 and forward to eth1 and eth2.
	     mgroup from eth0			  group	225.1.2.3
	     mroute from eth0 source 192.168.1.42 group	225.1.2.3 to eth1 eth2

	     # Similarly, but using source-specific group join
	     mgroup from virbr0	source 192.168.123.110 group 225.1.2.4
	     mroute from virbr0	source 192.168.123.110 group 225.1.2.4 to eth0

	     # Allow multicast for group 225.3.2.1, from ANY source, ingressing	on
	     # interface eth0 to be forwarded to eth1 and eth2.	 When the kernel
	     # receives	a frame	from unknown multicast sender, it asks smcrouted who
	     # use this	"template" to match against, if	the ingressing interface and
	     # group matches, smcrouted	installs an (S,G) route	in the kernel MFC.
	     mgroup from eth0 group 225.3.2.1
	     mroute from eth0 group 225.3.2.1 to eth1 eth2

	     # The previous is an example of the (*,G) support.	 It is also possible
	     # to specify a range of such rules.
	     mgroup from eth0 group 225.0.0.0/24
	     mroute from eth0 group 225.0.0.0/24 to eth1 eth2

	     # Include any snippet in /etc/smcroute.d/,	but please remember that
	     # all phyint statements must be read first.
	     include /etc/smcroute.d/*.conf

CAVEATS
       The source address is optional for both IPv4 and	IPv6 multicast routes,
       this is called (*,G) routing.  When omitted, smcrouted dynamically  in-
       stalls  (S,G)  routes, matching the group and inbound interface,	to the
       kernel when it learns of	new inbound multicast.	This feature  was  in-
       herited from mrouted(8),	and may	not work as intended in	all use-cases.
       Also,  depending	 on kernel and CPU load, account for the setup time to
       detect and install the route, expect at least one initial frame	to  be
       lost when using (*,G) rules.

FILES
       /etc/smcroute.conf, /etc/smcroute.d/*.conf

SEE ALSO
       smcrouted(8), smcroute.conf(5)

AUTHORS
       SMCRoute	was originally created by Carsten Schill <carsten@cschill.de>.
       Initial	IPv6  support by Todd Hayton <todd.hayton@gmail.com>.  Initial
       FreeBSD support by Micha	Lenk <micha@debian.org>.

       SMCRoute	   is	 currently    maintained     by	    Joachim	Wiberg
       <troglobit@gmail.com>,  and  Micha  Lenk	 <micha@debian.org> at GitHub:
       https://github.com/troglobit/smcroute.

FreeBSD	ports 15.0		August 15, 2021		      SMCROUTE.CONF(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=smcroute.conf&sektion=5&manpath=FreeBSD+Ports+15.0>

home | help