Sometimes users of our IP Multicast based probes for IPTV on Debian or Ubuntu Linux ask how to use IGMPv2 instead of IGMPv3 (which is currently default with Debian/Ubuntu Linux). Changing the IGMP version used does not require changes to the probe software. IGMP behaviour is defined by the Linux kernel instead.

Problem

Probe running on Linux generates IGMPv3 messages, but the IP router involved does only understand IGMPv2

Solution

Let us assume, you are using device eth0 on Linux based remote probe system to generate IGMP messages and also to receive IP Multicast traffic

Become root on Debian and cd to /:

user@amrum:~$ su -
Password:
amrum:~# cd /
amrum:/#

On Ubuntu the easiest way is to sudo bash and to cd afterwards to ‘/’

user@amrum:~$ sudo bash
Password:
amrum:~# cd /
amrum:/#

Enter cat /proc/sys/net/ipv4/conf/eth0/force_igmp_version

This will produce 0 which means highest available version.

amrum:/# cat /proc/sys/net/ipv4/conf/eth0/force_igmp_version
0
amrum:/#

With tcpdump -i eth0 igmp you will receive during probe run something like:

amrum:/# tcpdump -i eth0 igmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
15:42:39.679668 IP amrum.advenage.intra > IGMP.MCAST.NET: igmp v3 report, 1 group record(s)
15:42:43.688314 IP amrum.advenage.intra > IGMP.MCAST.NET: igmp v3 report, 1 group record(s)
15:42:46.707297 IP amrum.advenage.intra > IGMP.MCAST.NET: igmp v3 report, 1 group record(s)

To switch to IGMPv2 on eth0 enter echo "2" > /proc/sys/net/ipv4/conf/eth0/force_igmp_version

amrum:/# echo "2" > /proc/sys/net/ipv4/conf/eth0/force_igmp_version
amrum:/#

Now check success of your change with during probe run tcpdump -i eth0 igmp:

amrum:/# tcpdump -i eth0 igmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
15:50:03.755575 IP amrum.advenage.intra > 224.1.1.1: igmp v2 report 224.1.1.1
15:50:11.692773 IP amrum.advenage.intra > 224.1.1.1: igmp v2 report 224.1.1.1
15:50:21.679264 IP amrum.advenage.intra > 224.1.1.1: igmp v2 report 224.1.1.1
15:50:34.745108 IP amrum.advenage.intra > ALL-ROUTERS.MCAST.NET: igmp leave 224.1.1.1
15:50:38.773261 IP amrum.advenage.intra > 224.1.1.1: igmp v2 report 224.1.1.1
15:50:41.773324 IP amrum.advenage.intra > ALL-ROUTERS.MCAST.NET: igmp leave 224.1.1.1