Generally multicast routes exists in the kernel only as long as smcroute or another multicast routing daemon is running. Only one multicast routing daemon can be active at a time, so it's impossible to run smcroute and e.g. 'mrouted' at the same time.
The -d option smcroute is used to start the smcroute daemon. Otherwise, smcroute searches for an already running smcroute daemon and passes the commands to it. The -k option will terminate a running daemon.
Multicast routes can be added with the -a command and removed with the -r command.
A multicast route is defined by an input interface (<IntputIntf>), a unicast IP origin address (<OriginIpAdr>), a multicast group (<McGroupAdr>) and a list of output interfaces (<OutputIntf> ...).
The origin and multicast group addresses must both be IPv4 addresses or IPv6 addresses. If IPv4 addresses are specified then SMCRoute will operate on the IPv4 multicast routes. If IPv6 addresses are specified then SMCRoute will operate on the IPv6 multicast routes. The output interfaces must not be given with the -r as the first three parameter are sufficient to identify the route to remove.
The intention of SMCRoute is to help in situation where dynamic multicast routing does not work properly, but dynamic multicast routing is in nearly all cases the prefered solution. SMCRoute supports dynamic multicast routing with the multicast group 'join' -j and 'leave' -l commands. For both commands the input interface on which the multicast sessions should be received (<InputIntf>) and the multicast group address <McGroupAdr> must be given. The <McGroupAdr> may be an IPv4 or IPv6 address.
Superuser rights are necessary to start the smcroute daemon or to communicate with the daemon.
The command is passed to the daemon that adds the given multicast route to the kernel's routing table. <InputIntf> can be any network interface as listed by 'ifconfig' or 'ip link list' (incl. tunnel interfaces), but not the loopback interface. <OriginIpAdr> is the source IP address of the multicast packets that will be routed by this entry. It is a unicast IPv4 or IPv6 address and not a multicast IP address. <McGroupAdr> is the IPv4 or IPv6 address of the multicast group that will be forwarded. <OutputIntf> [<OutputIntf>] ... is a list of one or more network interfaces to which the multicast packets will be forwarded. The same rules for the selection of output interfaces applies as for the input interface.
Warning, by using multiple output interfaces (traffic multiplication), using the input interface also as output interface (direct loop) or constructing some other forms of indirect loop you can flood you network.
The command is passed to the daemon that removes a multicast route previously added with the -a command. The parameters are identical except to the omitted list of <OutputIntf>.
The command is passed to the daemon that passes it to the kernel. The kernel then tries to join the multicast group <McGroupAdr> on interface <InputIntf> by starting IGMP (or MLD if <McGroupAdr> is an IPv6 address) signaling on <InputIntf>. This signaling may be received by routers connected to <InputIntf>'s network that support IGMP/MLD multicast signaling and then hopfuly start forwarding of the requested multicast session to <InputIntf>'s network.
With this command smcroute allows the integration of nodes that needs static multicast routing into dynamic multicast routing networks.
The command is passed via the daemon to the kernel that initiate a 'leave' for a previously 'joined' multicast group.
Multicast routes: more then 200
Multicast group membership: max. 20
The source code is now maintained by Todd Hayton <todd.hayton@gmail.com>, Micha Lenk <micha@debian.org> and Julien BLACHE <jblache@debian.org>.
The current version is available at: http://alioth.debian.org/projects/smcroute