Comments for Static Multicast Routing Daemon

22 Mar 2007 12:31 zhenahniu

Re: bug report with multiple output interfaces (plus a workaround)


> SMCRoute works quite well for me and I

> highly recommend it! I have however

> discovered an apparent bug. I have sent

> it to the developer, but I am also

> posting it here because I have found a

> workaround which might be useful to

> other people.

>

> In a configuration with multiple output

> interfaces, the syntax for adding routes

> is given in the man page as:

>

> smcroute -a <InputIntf>

> <OriginIpAdr> <McGroupAdr>

> <OutputIntf> [<OutputIntf>]

> ...

>

> So to outut to two interfaces should

> simply be something like:

>

> smcroute -a eth0 192.168.70.4 225.1.1.1

> eth1 eth2

>

> Unfortunately, that doesnt work - the

> second output interface (eth2) seems to

> be completely ignored. Apparently,

> smcroute ignores _every other_ output

> interface. So to make this work, simply

> insert a dummy interface in the even

> position (ie, repeat the previous

> interface) and viola! It works! For

> example:

>

> smcroute -a eth0 192.168.70.4 225.1.1.1

> eth1 eth1 eth2

>

> should accomplish what was intended in

> the previous example.

It is a bug in the code, cmdpkt.c file. The function convCmdPkt2MRouteDesc() loop have a double count for advancing the argument.

for( ArgSt += strlen( ArgSt ) +1; *ArgSt; ArgSt += strlen( ArgSt ) +1 ) {

int VifIx;

if( (VifIx = getVifIxfromArg( ArgSt )) < 0 )

return "invalid output interface";

if( VifIx == MrDp->InVif )

log( LOG_WARNING, 0, "forwarding multicast to the input interface may not make sense: %s", ArgSt );

MrDp->TtlVc[ VifIx ] = 1; // !!! use a TTL threashold

ArgSt += strlen( ArgSt ) +1; // !!! should remove this line because the for loop() has it already.

}

After correcting the double count, it works fine for multiple output auguments.

21 Oct 2005 04:25 mamahesh

SMC Route
Most of the time SMC route works fine but some time it does not enable multicast forwarding on the ethernet interfaces. I checked using the sysctl command and found that value of

net.ipv4.conf.eth2.mc_forwarding was 2. This value should have been 1.

Please help me if anybody have some idea.

Thanks

-Mayank

11 Feb 2005 01:40 padamj

Two bugs.
Bug 1:

When more than 32 interfaces (VALN or virtual) leads to smcroute not going into daemon mode.

Bug 2:

On getting into daemon mode, smcroute adds all interfaces on the system to be part of multicast. This may not be so.

I have patched my copy of smcroute, and am in the process of testing the updates. Will release the patches soon to you.

26 Feb 2004 02:57 croach

Re: bug report with multiple output interfaces (plus a workaround)
Hi, i found another bug - smcroute seems only work well when the input interface is 1. If you specify the input interface be eth0 and output interface be eth1. You will get some problem (check ip_mr_cache).

Furthermore, i doubt whether the commands are valid:
./smcroute -a eth0 192.168.2.1 224.100.0.1 eth1
./smcroute -a eth1 192.168.2.1 224.100.0.1 eth2
Because after i have runned the second command, the first command will be lost!

Any solutions or opinions are welcomed.


> SMCRoute works quite well for me and I
> highly recommend it! I have however
> discovered an apparent bug. I have sent
> it to the developer, but I am also
> posting it here because I have found a
> workaround which might be useful to
> other people.
>
> In a configuration with multiple output
> interfaces, the syntax for adding routes
> is given in the man page as:
>
> smcroute -a &lt;InputIntf&gt;
> &lt;OriginIpAdr&gt; &lt;McGroupAdr&gt;
> &lt;OutputIntf&gt; [&lt;OutputIntf&gt;]
> ...
>
> So to outut to two interfaces should
> simply be something like:
>
> smcroute -a eth0 192.168.70.4 225.1.1.1
> eth1 eth2
>
> Unfortunately, that doesnt work - the
> second output interface (eth2) seems to
> be completely ignored. Apparently,
> smcroute ignores _every other_ output
> interface. So to make this work, simply
> insert a dummy interface in the even
> position (ie, repeat the previous
> interface) and viola! It works! For
> example:
>
> smcroute -a eth0 192.168.70.4 225.1.1.1
> eth1 eth1 eth2
>
> should accomplish what was intended in
> the previous example.


02 Feb 2004 14:44 mckenna185

bug report with multiple output interfaces (plus a workaround)
SMCRoute works quite well for me and I highly recommend it! I have however discovered an apparent bug. I have sent it to the developer, but I am also posting it here because I have found a workaround which might be useful to other people.

In a configuration with multiple output interfaces, the syntax for adding routes is given in the man page as:

smcroute -a &lt;InputIntf&gt; &lt;OriginIpAdr&gt; &lt;McGroupAdr&gt; &lt;OutputIntf&gt; [&lt;OutputIntf&gt;] ...

So to outut to two interfaces should simply be something like:

smcroute -a eth0 192.168.70.4 225.1.1.1 eth1 eth2

Unfortunately, that doesnt work - the second output interface (eth2) seems to be completely ignored. Apparently, smcroute ignores _every other_ output interface. So to make this work, simply insert a dummy interface in the even position (ie, repeat the previous interface) and viola! It works! For example:

smcroute -a eth0 192.168.70.4 225.1.1.1 eth1 eth1 eth2

should accomplish what was intended in the previous example.

03 Jul 2002 18:00 jonchan

Re: Good daemon, but I'd like to use range of multicast addresses
I have installed smcroute in my Redhat 7.3. I couldn't make it working. Would you give me more idea?

Ntwk top.:
10.10.1.0/25---|||---10.10.1.129/25

Idea:
I am sending multicast packet on 10.10.1.129/25. I would like ||| to forward the multicast packets to 10.10.1.0/25.

Command used:
smcroute -d
smcroute -a eth2 10.10.1.200 229.0.0.1 eth1


09 Feb 2002 03:06 cschill

Re: Good daemon, but I'd like to use range of multicast addresses
Hi Vitaly,

this idea is valid for unicast routing, but it breaks the multicast concept.

Each multicast stream (destination IP) is individual and there is no logical concept of grouping by ranges as it exists for unicast addresses.
Consequently existing multicast router (e.g. mrouted) don't support such a routing of multicast ranges. This is also reflected in the (mroute) API of the Linux kernel, it's only possible to set a route for a specific source, destination address pair, but not for ranges.

So, I have two reasons not to implement it:

- First, it breaks the multicast concept.

- Second, my only option in smcroute would be to run a loop over the given subnet and try to add a bunch (256 for a /24 range) of multicast routes to the kernel. I don't like this, because it would give you as a user the impression that there a ranges where in reality no ranges are.

If you, after all, still need this feature you can simply write a perl-script and implement the ranges on top of smcroute.

Thanks for your feedback,
Carsten


> I'd like to route all range 225.0.0.1 -
> 225.0.0.50 to eth1 instead of add
> individual routing 50 times.


05 Feb 2002 09:34 vkarasik

Good daemon, but I'd like to use range of multicast addresses
I'd like to route all range 225.0.0.1 - 225.0.0.50 to eth1 instead of add individual routing 50 times.

Screenshot

Project Spotlight

ReciJournal

An open, cross-platform journaling program.

Screenshot

Project Spotlight

Veusz

A scientific plotting package.