I'm trying to pass mulitcast stream from interface eth1 ( to interface tun0 ( on CentOS 5.

I can see incoming multicast stream on eth1:

tcpdump -n -i eth1

type=1700 audit(1324681169.542:52): dev=eth1 prom=256 old_prom=0 auid=4294967295 ses=4294967295
Dec 23 17:59:29 localhost kernel: device eth1 entered promiscuous mode
Dec 23 17:59:29 localhost kernel: type=1700 audit(1324681169.542:52): dev=eth1 prom=256 old_prom=0 auid=4294967295 ses=4294967295
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
17:59:29.576192 IP > UDP, length 1328
17:59:29.576277 IP > UDP, length 1328
17:59:29.576801 IP > UDP, length 1328

But I cannot see multicast on tun0 interface. What I'm doing wrong? The configuration is attached below:

/etc/igmpproxy.conf file:

phyint eth1 upstream  ratelimit 0  threshold 1
phyint tun0 downstream  ratelimit 0  threshold 1
phyint eth0 disabled
phyint eth5 disabled

iptable configuration:

iptables -A INPUT -p igmp -j ACCEPT
iptables -A INPUT -d -p udp -m udp -j ACCEPT
iptables -A FORWARD -d -p udp -j ACCEPT
modprobe ipt_TTL
iptables -t mangle -A PREROUTING -d -p udp -j TTL --ttl-inc 1

tun0 adapter is GRE tunnel over eth0: cat /etc/sysconfig/network-scripts/ifcfg-tun0

  • What is tun? Is that a vpn, openvpn perhaps, if openvpn, then you know it doesn't do multicast over a routed interface right? – Zoredache Dec 23 '11 at 20:53
  • multicast is possible over a tun interface, but that would require that the program managing the tun (OpenVPN?) will route /all/ traffic to the other endpoint regardless of destination address - thus, if you are using OpenVPN, this will only work in p2p mode. – Olipro Dec 23 '11 at 21:00
  • tun it is not OpenVPN, it is just GRE tunnel over eth0: cat /etc/sysconfig/network-scripts/ifcfg-tun0 DEVICE=tun0 TYPE=GRE ONBOOT=yes MY_INNER_IPADDR= PEER_INNER_IPADDR= PEER_OUTER_IPADDR= – Dima Dec 23 '11 at 22:52

I consider multicast routing kind of a black magic, but here are few shots ...

  • Check if igmpproxy creates the multicast route using ip mroute command.

  • If it does, your kernel is probably still filtering the input.

  • Most common cause is missing route to the source. Did you try disabling iptables? Or use TRACE target?

  • And if multicast route is not created I'd suggest using pimd (that's what I use for routing my IPTV multicasts).

  • And it seems you use altnet wrong. According to mrouted documentation, it means

Specifies an additional subnet (network) attached to the physical interface described in the phyint entry. mask_len is the length of the network mask.

  • Does pimd available as pre-compiled RPM for CentOS? – Dima Dec 27 '11 at 13:23
  • tbh. i dont know. i'm using it on ubuntu and gentoo. if you can't find it, try looking for mrouted - alternative to pimd. – Fox Dec 27 '11 at 18:03

(can't leave a comment, so I'll leave an answer)

If I understand rightly, you have a system on sending multicast traffic to a particular group, and you want to route that traffic over a tunnel interface on an intermediate Linux box.

I'm not familiar with the operation of igmpproxy, but just from the name, I suspect it echoes IGMP packets to the distant LAN. This may not work for your tunnel implementation because IGMP is meant to operate only on a local network, not on a tunnel.

PIM would be your friend here - it will enable your Linux box to share information about multicast sources and groups with other routers.

What kind of system is terminating the GRE tunnel? Is it capable of running PIM in dense mode or sparse mode? Could the local Linux box run PIM if you need?

A quick Google reveals the Linux Multicast HOWTO here.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.