GithubHelp home page GithubHelp logo

fipn / smcroute Goto Github PK

View Code? Open in Web Editor NEW

This project forked from troglobit/smcroute

0.0 2.0 0.0 585 KB

Static multicast routing daemon, Linux & BSD. This is the official new home of SMCRoute. New features: config file support, capable of reloading on SIGHUP, source-less on-demand routing, a.k.a. (*,G) based static routing.

Home Page: http://troglobit.com/smcroute.html

License: GNU General Public License v2.0

Makefile 1.80% C 83.54% Shell 1.91% Groff 12.75%

smcroute's Introduction

SMCRoute - A static multicast routing daemon

Travis Status Coverity Status

SMCRoute is a command line tool to manipulate the multicast routes in the UNIX kernel. It supports both IPv4 and IPv6 multicast routing.

SMCRoute can be used as an alternative to dynamic multicast routers like mrouted or pimd in setups where static multicast routes should be maintained and/or no proper IGMP or MLD signaling exists.

Multicast routes exist in the UNIX kernel only as long as a 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. Linux does however support multiple routing tables, which SMCRoute not yet supports.

SMCRoute is maintained collaboratively at GitHub. Previously the code was hosted and maintained by Debian at Alioth and before that by Carsten Schill, the original author.

Usage

SMCRoute is both a daemon and a client. You must start the daemon first to be able to set up multicast routes.

# smcroute -d

or

# smcroute -d -N

or

# smcroute -d -e /path/to/script

The latter syntax calls your own script whenever smcroute receives a SIGHUP or installs a multicast route to the kernel. This is useful if you, for instance, also run a NAT firewall and need to flush connection tracking after installing a multicast route.

With the -N command line option SMCRoute does not prepare all system interfaces for multicast routing. Very useful if your system has a lot of interfaces but only a select few are required for multicast routing. Use the following configuration file syntax to enable interfaces:

phyint eth0 enable
phyint eth1 enable
phyint eth2 enable

By default SMCRoute looks for its configuration in /etc/smcroute.conf, which can look something like this:

mgroup from eth0 group 225.1.2.3
mroute from eth0 group 225.1.2.3 source 192.168.1.42 to eth1 eth2

The first line means "Join multicast group 225.1.2.3 on interface eth0", and is for layer-2 devices (switches) with IGMP snooping implemented to open up multicast for that group to be flooded to us. You should not need the mgroup line, it will cause routing performance loss and is only intended to be used when you have problems with switches that do not forward multicast to us by default. Only 20 groups can be "joined" this way, for more groups you should investigate the root cause for not receiving multicast at the multicast router, or use a dynamic multicast routing protocol.

The second mroute line is the actual layer-3 routing entry. Here we say that multicast data originating from 192.168.1.42 on eth0 to the multicast group 225.1.2.3 should be forwarded to interfaces eth1 and eth2.

Note: To test the above you can use ping from another device. The multicast should be visible as long as your IP# matches the source above and you ping 225.1.2.3 AND REMEMBER TO SET TTL >1!

$ ping -I eth0 -t 2 225.1.2.3

The TTL is what usually bites people trying out multicast the first time. There is a good reason for applications, e.g., ping to default to a TTL=1 for multicast. That is to reduce the risk of flooding your network with data, remember multicast is like broadcast in nature. Only IGMP snooping aware switches can help mitigate its broadcast effect.

Traditionally, however, SMCRoute only had the client interface to interact with the daemon. To achieve the above two config file lines you have to:

# sleep 1

To allow the daemon to startup properly (above) before interacting with it.

# smcroute -j eth0 225.1.2.3
# smcroute -a eth0 192.168.1.42 225.1.2.3 eth1 eth2

Experimental

Many people sometimes do not know where the multicast will originate from, or it will originate from several different sources but never at the same time. Up until 1.98.3 a user had to setup a unique routing rule for each possible source and group to be routed. However, as of 1.99.0 it is possible to use the wildcard address 0.0.0.0 (INADDR_ANY) for IPv4 multicast routes.

Example smcroute.conf:

mgroup from eth0 group 225.1.2.3
mroute from eth0 group 225.1.2.3 to eth1 eth2

or, from the command line:

# smcroute -j eth0 225.1.2.3
# smcroute -a eth0 0.0.0.0 225.1.2.3 eth1 eth2

Good Luck! The SMCRoute Maintainers

smcroute's People

Contributors

bombadil avatar jblache avatar jonasj76 avatar swegener avatar thayton avatar troglobit avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.