Multicast for IPTV in computer (NetBox)


#1

Hi, I am trying to setup multicast routing on my Turris Omnia to be able to watch IPTV (from NetBox) on my computer. So far unsuccessfully, however.

Please note I know for sure it should be working: With my current Asus RT-N16 it works like charm for years – only allowing IGMP proxy in the web interface of the Asus router I simply start DVBViewer (or VLC Media Placer) configure to use 239.1.2.19:11111 for ČT1 etc.

On my Turris Omnia I installed package igmpproxy via LuCI and configured everything following OpenWRT UDP Multicast HowTo. However, the best result I was able to achieve is receiving video stream on my computer if ISP provided IPTV set-to-box is watching the same channel, i.e. routing multicast traffic ‘ordered’ by the set-to-box to the computer. But trying to stream another channel results in no video stream on my computer at all.

I expect there is some issue with multicast group join/leave announces from my computer but I do not have a clue what is wrong… :-/

I have seen several threads on the old Turris forum (for example this) but with no luck to solve my issues.

Relevant changes to the Turris default configuration:

root@turris:~# cat /etc/config/network
...
config interface 'lan'
        ...
        option igmp_snooping 1
        ...
...
root@turris:~# cat /etc/config/firewall
...
# standard Turris Omnia firewall rule
config rule
        option name 'Allow-IGMP'
        option src 'wan'
        option proto 'igmp'
        option family 'ipv4'
        option target 'ACCEPT'
...
# my new rule
config rule
        option src 'wan'
        option proto 'udp'
        option dest 'lan'
        option dest_ip '224.0.0.0/4'
        option target 'ACCEPT'
        option name 'Allow Multicast from WAN to LAN'
...
root@turris:~#  cat /etc/config/igmpproxy
config igmpproxy
        option quickleave 1

config phyint
        option network wan
        option direction upstream
        list altnet 0.0.0.0/0

config phyint
        option network lan
        option direction downstream

Stop igmpproxy daemon:

root@turris:~# /etc/init.d/igmpproxy stop

Start igmpproxy with STDOUT logging, starting DVBViewer on my computer switching between working set-top-box ‘ordered’ stream and other streams resulting in no video on my computer:

root@turris:~# igmpproxy -d -v /etc/igmpproxy.conf
adding VIF, Ix 0 Fl 0x0 IP 0x0bae272e eth1, Threshold: 1, Ratelimit: 0
adding VIF, Ix 1 Fl 0x0 IP 0x0101a8c0 br-lan, Threshold: 1, Ratelimit: 0
joinMcGroup: 224.0.0.2 on br-lan
RECV Membership query   from 192.168.1.1     to 224.0.0.1
Inserted route table entry for 239.1.1.80 on VIF #-1
RECV V2 member report   from 192.168.1.1     to 224.0.0.2
The IGMP message was from myself. Ignoring.
RECV V2 member report   from 192.168.1.2     to 239.255.255.250
Inserted route table entry for 239.255.255.250 on VIF #1
joinMcGroup: 239.255.255.250 on eth1
RECV V2 member report   from 192.168.1.58    to 239.255.255.250
Updated route entry for 239.255.255.250 on VIF #1
RECV V2 member report   from 192.168.1.2     to 239.1.1.80
Updated route entry for 239.1.1.80 on VIF #1
Adding MFC: 83.240.12.186 -> 239.1.1.80, InpVIf: 0
joinMcGroup: 239.1.1.80 on eth1
RECV V2 member report   from 192.168.1.2     to 239.1.1.80
Updated route entry for 239.1.1.80 on VIF #1
Adding MFC: 83.240.12.186 -> 239.1.1.80, InpVIf: 0
RECV V2 member report   from 192.168.1.2     to 239.255.255.253
Inserted route table entry for 239.255.255.253 on VIF #1
joinMcGroup: 239.255.255.253 on eth1
RECV V2 member report   from 192.168.1.174   to 239.255.255.250
Updated route entry for 239.255.255.250 on VIF #1
RECV V2 member report   from 192.168.1.2     to 239.1.1.81
Inserted route table entry for 239.1.1.81 on VIF #1
joinMcGroup: 239.1.1.81 on eth1
RECV Leave message      from 192.168.1.2     to 224.0.0.2
leaveMcGroup: 239.1.1.80 on eth1
RECV Membership query   from 192.168.1.1     to 239.1.1.80
RECV V2 member report   from 192.168.1.2     to 239.1.1.81
Updated route entry for 239.1.1.81 on VIF #1
RECV Leave message      from 192.168.1.2     to 224.0.0.2
leaveMcGroup: 239.1.1.81 on eth1
RECV V2 member report   from 192.168.1.2     to 239.1.1.80
Updated route entry for 239.1.1.80 on VIF #1
Adding MFC: 83.240.12.186 -> 239.1.1.80, InpVIf: 0
joinMcGroup: 239.1.1.80 on eth1
RECV Membership query   from 192.168.1.1     to 239.1.1.81
RECV V2 member report   from 192.168.1.2     to 239.1.1.80
Updated route entry for 239.1.1.80 on VIF #1
Adding MFC: 83.240.12.186 -> 239.1.1.80, InpVIf: 0
RECV Leave message      from 192.168.1.2     to 224.0.0.2
leaveMcGroup: 239.1.1.80 on eth1
RECV V2 member report   from 192.168.1.2     to 239.1.1.254
Inserted route table entry for 239.1.1.254 on VIF #1
joinMcGroup: 239.1.1.254 on eth1
RECV Membership query   from 192.168.1.1     to 239.1.1.80
RECV Membership query   from 192.168.1.1     to 239.1.1.81
RECV V2 member report   from 192.168.1.2     to 239.1.1.254
Updated route entry for 239.1.1.254 on VIF #1
RECV V2 member report   from 192.168.1.2     to 239.1.1.77
Inserted route table entry for 239.1.1.77 on VIF #1
joinMcGroup: 239.1.1.77 on eth1
RECV Leave message      from 192.168.1.2     to 224.0.0.2
leaveMcGroup: 239.1.1.254 on eth1
RECV Membership query   from 192.168.1.1     to 239.1.1.254
RECV V2 member report   from 192.168.1.2     to 239.1.1.77
Updated route entry for 239.1.1.77 on VIF #1
RECV Membership query   from 192.168.1.1     to 239.1.1.80
Route is not active. No kernel updates done.
RECV Leave message      from 192.168.1.2     to 224.0.0.2
leaveMcGroup: 239.1.1.77 on eth1
RECV Membership query   from 192.168.1.1     to 239.1.1.77
RECV Membership query   from 192.168.1.1     to 224.0.0.1
RECV V2 member report   from 192.168.1.2     to 239.255.255.253
Updated route entry for 239.255.255.253 on VIF #1
RECV V2 member report   from 192.168.1.174   to 239.255.255.250
Updated route entry for 239.255.255.250 on VIF #1
^Cselect() failure; Errno(4): Interrupted system call
Got a interupt signal. Exiting.
Route is not active. No kernel updates done.
leaveMcGroup: 239.1.1.77 on eth1
MRT_DROP_MEMBERSHIP failed; Errno(99): Address not available
Removing MFC: 83.240.12.186 -> 239.1.1.80, InpVIf: 0
leaveMcGroup: 239.1.1.80 on eth1
MRT_DROP_MEMBERSHIP failed; Errno(99): Address not available
Route is not active. No kernel updates done.
leaveMcGroup: 239.255.255.250 on eth1
Route is not active. No kernel updates done.
leaveMcGroup: 239.255.255.253 on eth1
Route is not active. No kernel updates done.
leaveMcGroup: 239.1.1.254 on eth1
MRT_DROP_MEMBERSHIP failed; Errno(99): Address not available
All routes removed. Routing table is empty.
Shutdown complete....

Any ideas what to do?


#2

I would really love to get multicast working for receiving IPTV on my computer via DVBViewer. I will really appreciate any help with that.

On the other hand, there will possibly be some workaround: If udpxy is really working on Turris for NetBox IPTV then the next DVBViewer Pro release will hopefully support that.


#3

I append my experience to old topic. I hope it can be useful to other IPTV users.
I can receive Netbox IPTV perfectly (after many trials and tests). :slight_smile:
Michal’s configuration is OK, but my router has some settings more.

/etc/config/firewall, rule “option name ‘Allow Multicast from WAN to LAN’” one line added:

option family ‘ipv4’

/etc/sysctl.conf

net.ipv4.conf.all.force_igmp_version=2

My PC with VLC player is connected in LAN. Therefore I added br-lan static route.

/etc/rc.local (But there are more ways how to add static route in router.) Put this command manually in shell window too for instant route adding:

ip route add 224.0.0.0/4 dev br-lan

Route check

ip route

Do not forget activate the service via LuCI:
Main menu -> System -> Startup -> line “igmpproxy” RESTART and ENABLED

If still no stream is received, do some capture analysis.
Check packets on both the client PC and the router.
Use Wireshark on PC and tcpdump on router. I suppose you know it. Here are some examples for less experienced users:

WAN interface:

tcpdump -i eth0 -s0 -w /tmp/wan.cap

Break capturing by Ctrl+C after test. Copy wan.cap file to PC using scp (Linux) or Winscp:

scp root@router_address:/tmp/wan.cap /somelocalpath/somedir

Do not forget to clear /tmp directory in router. Its capacity is limited.
Similar capturing can be performed on router LAN interface:

tcpdump -i br-lan -s0 -w /tmp/lan.cap

Maybe it will help somebody.