Our ISP provider (SANET) offers an IPTV service, where the list of TV/radio programs is offered using SAP multicast at IPv4 address of 233.10.47.10. However, my PC (with Win 10 OS installed) stopped receiving the SAP announcements, and the playlist was just empty. All works fine but once it stopped. Even better, it works for some of my colleagues, but not for others
My PC runs dual-stack, i.e. my network works with IPv4/IPv6. My PC has several network adapters as I’m running some virtualization software.
Troubleshooting
First, I tried some simple tests :
- Disable/enable SAP module configuration. No success.
- Reinstall VLC. No success.
Then I thought that the problem is more complex:
- trying to disable IPv6
- look for how to disable IPv6 in VLC (version 3.0.11). No success, as it is not supported.
- trying to disable IPv6 protocol stack as the windows prefer IPv6 over IPv4 and the playlist uses IPv4 only. Restart VLC. No success.
- using Wireshark
- sniffing for IGMP to see what VLC generates. I’ve expected that windows are using a newer IGMP version 3, but the network uses IGMPv2. What was strange, there were IGMPv2, but only a few IGMPv2 membership reports for strange multicast address groups (224.0.0.251 of Multicast DNS
224.0.0.252 Link-local Multicast Name Resolution). - I did not see any meaningful IGMP or SAP packet in my Wireshark. No success.
- sniffing ICMPv6 MLD. No packets, no success…
- sniffing for IGMP to see what VLC generates. I’ve expected that windows are using a newer IGMP version 3, but the network uses IGMPv2. What was strange, there were IGMPv2, but only a few IGMPv2 membership reports for strange multicast address groups (224.0.0.251 of Multicast DNS
- viewing windows routing table…that is it!
Solution – the IPv4 routing table
As I already mentioned, my PC is using several network adapters, physical and virtual. And this is the problem. Viewing my windows IPv4 routing table shows that windows uses for IPv4 multicast (224.0.0.0/8) routing wrong interfaces with wrong metrics:
C:\WINDOWS\system32>route print -4
Interface List
4…40 8d 5c c1 36 28 ……Intel(R) Ethernet Connection (2) I219-V
...
IPv4 Route Table
Active Routes:
Network Destination Netmask Gateway Interface Metric
...
224.0.0.0 240.0.0.0 On-link 127.0.0.1 331
224.0.0.0 240.0.0.0 On-link 169.254.143.79 281
224.0.0.0 240.0.0.0 On-link 169.254.130.226 281
224.0.0.0 240.0.0.0 On-link 192.168.10.108 281
...
Therefore, I need to add a new route, which uses the correct default gateway (192.168.10.1 in my case), correct interface (ID ID 4) and lower metric as anyone of actual routes. So, start command line with admin user rights and add correct routing information, for me:
C:\WINDOWS\system32>route add 224.0.0.0 mask 240.0.0.0 192.168.10.1 metric 35 if 4
OK!
and check the routing table again:
c:\WINDOWS\system32>route print -4
Interface List
4…40 8d 5c c1 36 28 ……Intel(R) Ethernet Connection (2) I219-V
...
IPv4 Route Table
Active Routes:
Network Destination Netmask Gateway Interface Metric
...
224.0.0.0 240.0.0.0 On-link 127.0.0.1 331
224.0.0.0 240.0.0.0 On-link 169.254.143.79 281
224.0.0.0 240.0.0.0 On-link 169.254.130.226 281
224.0.0.0 240.0.0.0 On-link 192.168.10.108 281
224.0.0.0 240.0.0.0 192.168.10.1 192.168.10.108 60
...
This route record is however only temporary, after PC reboot it will be lost. Add a permanent route record write:
route add -p 224.0.0.0 mask 240.0.0.0 192.168.10.1 metric 35 if 4
Restart VLC and test. It shows…working 🙂 …