• William Manley's avatar
    net: igmp: Allow user-space configuration of igmp unsolicited report interval · 2690048c
    William Manley authored
    Adds the new procfs knobs:
    
        /proc/sys/net/ipv4/conf/*/igmpv2_unsolicited_report_interval
        /proc/sys/net/ipv4/conf/*/igmpv3_unsolicited_report_interval
    
    Which will allow userspace configuration of the IGMP unsolicited report
    interval (see below) in milliseconds.  The defaults are 10000ms for IGMPv2
    and 1000ms for IGMPv3 in accordance with RFC2236 and RFC3376.
    
    Background:
    
    If an IGMP join packet is lost you will not receive data sent to the
    multicast group so if no data arrives from that multicast group in a
    period of time after the IGMP join a second IGMP join will be sent.  The
    delay between joins is the "IGMP Unsolicited Report Interval".
    
    Prior to this patch this value was hard coded in the kernel to 10s for
    IGMPv2 and 1s for IGMPv3.  10s is unsuitable for some use-cases, such as
    IPTV as it can cause channel change to be slow in the presence of packet
    loss.
    
    This patch allows the value to be overridden from userspace for both
    IGMPv2 and IGMPv3 such that it can be tuned accoding to the network.
    
    Tested with Wireshark and a simple program to join a (non-existent)
    multicast group.  The distribution of timings for the second join differ
    based upon setting the procfs knobs.
    
    igmpvX_unsolicited_report_interval is intended to follow the pattern
    established by force_igmp_version, and while a procfs entry has been added
    a corresponding sysctl knob has not as it is my understanding that sysctl
    is deprecated[1].
    
    [1]: http://lwn.net/Articles/247243/Signed-off-by: default avatarWilliam Manley <william.manley@youview.com>
    Acked-by: default avatarHannes Frederic Sowa <hannes@stressinduktion.org>
    Acked-by: default avatarBenjamin LaHaise <bcrl@kvack.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    2690048c
igmp.c 65.6 KB