Linux support for IPGMv3

At the time of writing IGMPv3 support is included neither in the stable 2.4 nor in the development 2.5 Linux kernel series. Consequently, the kernel has to be patched for IGMPv3 support. Two independent patches are available from the following sites: They implement both the Delta and Full APIs described in <draft-ietf-idmr-msf-api-03.txt>, which is for some reason not currently available from the IETF web. For the time being, a copy is contained in the tarball with the Cisco patch. The Cisco patch itself is based on a previous BSD IGMPv3 implementation by Wilbert de Graaf

However, both patches are against rather old versions of the 2.4 kernels. We have thus updated the Cisco patch to compile cleanly and work on recent 2.4 kernels.

Download kernel patches against 2.4.19 and corresponding header patches.

Installation

Untar the linux-igmpv3.tar.gz file in the parent directory of your kernel sources (presumably /usr/src) and do the following as root:

# cd /usr/src/linux-2.4.19
# patch -p1 < ../linux-2.4.19-igmpv3.patch

Note that, as opposed to the original Cisco patch, it is not necessary to move any files in the original kernel sources. Then configure and compile your kernel as usual, only don't forget to select the following configuration options:

The header patches can be from any directory applied as follows:

# patch -p0 < /usr/src/headers-igmpv3.patch

It's a good idea though to back up the /usr/include directory beforehand.

Usage and diagnostics

The documentation accompanying the original Cisco patch applies here almost without change. When running IGMPv3-enabled applications, you will find useful to check the contents of the /proc/net/igmp file. Typically it should look like this:
$ cat /proc/net/igmp 
Idx	Device	Version	QRV
1	lo	v3	2
	Group		Mode	Srclist

2	eth0	v3	2
	Group		Mode	Srclist
	232.1.1.1	INCLUDE	{ 192.168.1.2 }

In the case of problems, you might want to turn on the kernel debug messages. This is accomplished by the command

# sysctl -w net.ipv4.igmp_debug_output=1

or simply

# echo 1 > /proc/sys/net/ipv4/igmp_debug_output

Of course, in order to see anything the kernel logger must be activated in syslog configuration.


Ladislav Lhotka <lhotka@cesnet.cz>
Last modified: Mon Sep 23 15:39:54 CEST 2002