Posted: Fri Mar 23, 2012 14:31 Post subject: Implementing better IPTV support
Hi community and devs.
I'd like to contribute to improve the support for IPTV, which includes alot of separate parts. The reason for this is that IPTV has become quite popular and I see that the same solutions is used by many ISP so there should be a big userbase in need of easier IPTV setup.
My experience is that it's pretty cumbersome to configure the router for IPTV if not impossible. This is in part because IPTV is made possible by many different protocols that needs to be working together.
The IPTV service is made up of the following parts:
1. 802.1q VLAN Tagging on WAN side.
2. Mapping certain LAN traffic to WAN VLAN.
3. IGMP Snooping for IGMP v2 multicast on LAN side.
4. Bridging IGMP multicast traffic from WAN to LAN.
5. Special DNS lookups.
6. WLAN block of multicast traffic to avoid overloading.
The problems that I have that I'd like to correct is the following.
1. The VLAN VID used for IPTV traffic is higher than 15 so the web GUI and kernel modules doesn't support it.
2. Getting to know which LAN traffic to map to the IPTV VLAN.
3. Configuring an IGMP proxy to accommodate for Snooping.
4. Getting to know which WAN traffic that is IGMP multicast and that shall be bridged.
5. Configuring the DNS to supply correct replies for initial lookups, typically to iptvlogin.<ISP name>.com.
6. Non identified except for ease of configuration.
1. Develop patches to switch-robo.ko, switch-core.ko, web GUI and the component that parses nvram to facilitate VLAN VID of any value.
2. Look in configuration of router provided by ISP to see the used subnets that are to be mapped to IPTV VLAN. Also tcpdumping a working setup should supply some information.
3. Create scripts for igmprt or igmpproxy and patches for web GUI to configure IGMP Snooping.
4. Knowledge of IGMP multicast subnets can come from ISP routers and tcpdump. The bridging should have some easy way to be configured.
5. This can probably be done by DNSmasq. However, I haven't fully figured out what the use of this is and if the IP can change so that the DNSmasq needs to be updated.
6. This is maybe fixed by using IGMP Snooping or by unbridging WLAN from LAN or by ebtables.
Number 2 and 4 (and in some part 5) can't be fully fulfilled by dd-wrt alone, access to ISP specific info is needed.
I'll keep on investigating this, but I'd like to know if there is someone else that would like to help? It usually much more fun doing things together. =)
Any devs with experience of the current code base and knowledge of how far work has come with this? Any users that have the same problem that would like to hack along?
I have lots of info links, traffic logs and data on the setup used by my ISP that I can share. I think that I need to setup a build environment to make changes to dd-wrt if needed (I work with embedded linux for a living, so that shouldn't be an issue). I have the Netgear WNR3500L router.
Anyone interested in this matter?
Ps. Mod: If this belongs in develpment subforum, please move.
Well , i got my IPTV working but barely.
The network gets flooded with multicast messages , i think there is no igmp snooping support or its not working properly.
I even lose lan connectivity if i abuse the number of streams i'm getting.
I have got no response and to many independent issues, so I'm currently running a VLAN-splitting switch in from of my router.
The switch does portmapping of IPTV VLAN to a specific LAN port. This removes the need of igmpproxy and knowledge of which traffic is to be sent out on IPTV VLAN. But the big drawback is the need for a separate IPTV LAN.
Even if you only have 24 % CPU load the router can still be out of resources. It can be I/O that is stalling or a DMA bus overload etc. I've read that these routers are not capable of this amount of routing that igmp multicast requires.
If you do portmapping, the switch fabric does all the routing without ever touching the CPU. But when using igmpproxy, I believe that all traffic is routed in and out of the CPU.
If having a separate IPTV LAN is acceptable then you can do the portmapping in the router. My need for separate switch is the lack of support when having VLAN VID over 15.
Splitting the LAN is not an option.
My ISP provides additional services that require all the devices to be able to reach the IPTV Vlan.
I could have IPTV this way but i'd lose VOIP capability (uses same vlan ) and some services would become unavailable on Mobile Phones and PC's.
The Router i'm using is a Linksys E4200 and the router the ISP provides has been on the market for 5 years.
It could be a resources management issue or just the lack of IGMP Snooping on this firmware.
I'll turn on wireshark and monitor the network.
I noticed that the message syslog: igmprt : multicast daemon hanging, send sigkill appears alot when the iptv stops working, wonder why lol .
All IGMP traffic is being flooded all over the LAN.
Is there any implementation of IGMP Snooping in DD-WRT?
Dont get me wrong , IPTV is working but i can only see 2 channels at any given time, when i try to see the third and the forth i can but most of my lan becomes unreachable.
Do you use any IGMP routing? Eg. igmprt or igmpproxy? Those are programs that can run on dd-wrt.
They should give you IGMP Snooping, and only send multicast to interfaces that register for respective multicast stream.
I guess that it still can be problems if your clients doesn't handle the IGMP correct (leaves the stream when channel is changed). A client shall send "igmp v2 report <multicast ip>" to the <multicast ip> of the particular channel when wanting to view that channel. And "igmp leave <multicast ip>" to a specific control ip when not longer watching the channel. Otherwise lots of multicast traffic is left on.