RFC 6636

Tuning the Behavior of the Internet Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD) for Routers in Mobile and Wireless Networks

πŸ“… published May 2012, from ietf

RFC 6636 at a glance πŸŽ€

Okay bestie, so this is RFC 6636, called "Tuning the Behavior of the Internet Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD) for Routers in Mobile and Wireless Networks" πŸ¦‹ H. Asaeda (Keio University), H. Liu, and Q. Wu (Huawei) wrote it, and it came out in May 2012. It's Informational, so it's not a Standards Track spec ✨ Its ISSN is 2070-1721. The title block doesn't list any RFCs it obsoletes or updates, so no drama there πŸ’…

Abstract

IGMP and MLD are the protocols hosts and multicast routers use to swap their IP multicast group memberships with each other 🌸 This doc is all about getting IGMPv3 and MLDv2 optimized for mobility, and it wants to be a guideline for tuning IGMPv3/MLDv2 Queries, timers, and counter values. Main character energy πŸ‘‘

Status of This Memo

This doc is not an Internet Standards Track specification. It's just published for info purposes 🧚

This is a product of the Internet Engineering Task Force (IETF) and represents the consensus of the IETF community. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG). Not every IESG-approved doc is a candidate for any level of Internet Standard, so check Section 2 of RFC 5741 if you're curious πŸ€“

You can find the current status, any errata, and how to send feedback at http://www.rfc-editor.org/info/rfc6636 πŸ’œ

Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved. πŸ”’

This doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they were in effect on the publication date. Please read these carefully, because they spell out your rights and restrictions for this doc 🫢 Code Components pulled out of this doc must include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come with no warranty, as described in the Simplified BSD License πŸ’…

Table of Contents

1. Introduction ....................................................2
2. Terminology .....................................................3
3. Explicit Tracking of Membership Status ..........................3
4. Tuning IGMP/MLD Timers and Values ...............................4
   4.1. Tuning the IGMP/MLD General Query Interval .................4
   4.2. Tuning the IGMP/MLD Query Response Interval ................5
   4.3. Tuning the Last Member Query Timer (LMQT) and Last
        Listener Query Timer (LLQT) ................................6
   4.4. Tuning the Startup Query Interval ..........................7
   4.5. Tuning the Robustness Variable .............................7
   4.6. Tuning Scenarios for Various Mobile IP Networks ............7
5. Destination Address of a Specific Query .........................8
6. Interoperability ................................................9
7. Security Considerations .........................................9
8. Acknowledgements ................................................9
9. References .....................................................10
   9.1. Normative References ......................................10
   9.2. Informative References ....................................10
Appendix A. Unicasting a General Query ............................11

1. Introduction ✨

Okay so IGMP [1] for IPv4 and MLD [2] for IPv6 are the standard protocols hosts use to start or stop joining multicast sessions πŸ¦‹ Multicast routers or IGMP/MLD proxies [5] also have to support these protocols, since they keep track of multicast membership on their downstream interfaces. Conceptually, IGMP and MLD work on wireless and mobile networks too. Bestie, though, wireless access runs on a shared medium or a point-to-point link with limited spectrum and bandwidth πŸ₯Ί In a lot of wireless setups, you want to keep multicast signaling low to save the battery on mobile devices and the limited transmission capacity of the network πŸ”‹

Moving hosts can mess up multicast service starting and stopping, both in the new network and the old one 😭 Slow service activation after a join means extra delay before multicast packets show up, and reception quality can suffer πŸ“‰ Slow termination is its own mess: if a mobile host rapidly leaves without leaving the group first in the previous network, network resources get wasted πŸ’€

When IGMP and MLD are used with mobile IP protocols, you have to think about how close the network entities are 🧚 For example, with a bidirectional tunnel between the mobility entities described in [6] and [7], the mobile host gets extra latency. The round-trip time over that tunnel is bigger than when a host and an upstream router just sit on the same LAN 🌈

This doc shows how to tune IGMPv3 and MLDv2 behavior on the multicast router and proxy side, focusing on wireless and mobile networks and including the tuning of queries and related timers πŸ’– This selective optimization is a big win for mobile hosts and routers. The router keeps track of downstream hosts' membership status and the different IGMP/MLD Query types and values, so it can tune how many response messages get sent πŸŽ€ The doc doesn't change IGMPv3 or MLDv2 at all. It just suggests the best settings for the configurable parameters in mobile and wireless environments 🫢

2. Terminology

In this doc, "router" means both a multicast router and an IGMP/MLD proxy 🌸

3. Explicit Tracking of Membership Status

Mobile hosts use IGMP and MLD to request joining or leaving multicast sessions πŸ“± When an adjacent upstream router gets the IGMP/MLD Report messages, it figures out the membership status on the link πŸ‘€ To keep that status up to date, the router sends IGMP/MLD Query messages periodically, and it sends Group-Specific and/or Group-and-Source-Specific Queries when a member host reports a leave πŸ”„ So an IGMP/MLD Query is needed to get current membership info. The catch is that tons of reply messages from every member host can cause network congestion or eat up bandwidth 😬

The "explicit tracking function" [8] is one possible way to cut down on the number of IGMP/MLD messages sent, which makes mobile communications more efficient πŸ¦‹ It lets the router keep track of the membership status of downstream IGMPv3 or MLDv2 member hosts. So if a router turns on the explicit tracking function, it doesn't always have to ask receiver hosts for a Current-State Report πŸ™Œ The router implicitly spots the (potential) last member host when it gets a State-Change Report saying someone left. It only sends IGMP/MLD Group-Specific and Group-and-Source-Specific Queries LMQC/LLQC times (see Section 4.3) once it figures out the last member has left the network ✨ That means fewer Current-State Report messages overall πŸ’…

Explicit tracking is great for mobile multicast, but it needs extra processing power and possibly a lot of memory so the router can store every membership status 🧠 That resource need gets worse when a router has to keep track of lots of receiver hosts 😡 So this doc recommends that adjacent upstream multicast routers turn on the explicit tracking function for IP multicast on wireless and mobile networks, as long as they have enough resources πŸ’œ If operators think their routers don't have enough resources, they can turn it off πŸ™ƒ

No matter whether explicit tracking is on, routers still need to maintain downstream membership status by sending IGMPv3/MLDv2 General Query messages. Why? Because some IGMPv3/MLDv2 messages can get lost in transit 😭 It's giving "always double-check" energy πŸ”

4. Tuning IGMP/MLD Timers and Values πŸŽ€

4.1. Tuning the IGMP/MLD General Query Interval

IGMP and MLD are unreliable protocols 😬 To cover the chance that one or more multicast routers miss a State-Change Report, hosts resend the same State-Change Report messages ([Robustness Variable] - 1) more times. Each resend happens at a random interval picked from the range (0, [Unsolicited Report Interval]) [1] [2] 🎲 This increases the protocol's robustness, but it doesn't guarantee the State-Change Report reaches the routers πŸ₯² So routers still need to refresh their downstream membership info by getting a Current-State Report. A General Query sent every [Query Interval] period is what solicits those reports πŸ” This helps the host stay robust during link failures and packet loss πŸ›‘οΈ It also covers situations where mobile hosts get powered off or move to a network managed by a different router without any notification, like a leave request πŸšΆβ€β™€οΈ

The [Query Interval] is the interval between General Queries sent by the regular IGMPv3/MLDv2 querier. The default value is 125 seconds [1] [2] ⏱️ By changing the [Query Interval], multicast routers can tune how many IGMP/MLD messages hit the network. Bigger values mean IGMP/MLD Queries go out less often πŸ“‰

This doc proposes a [Query Interval] of 150 seconds by changing the Querier's Query Interval Code (QQIC) field in the IGMP/MLD Query message πŸ’– Use this when a router that enables the explicit tracking function might be handling a large number of member hosts, like more than 200 hosts on the wireless link 🀯 The longer interval helps cut down on Report message traffic and saves battery power on mobile hosts πŸ”‹βœ¨

On the flip side, this doc also proposes a [Query Interval] of 60 to 90 seconds for when a router with explicit tracking enabled connects to a higher-capacity wireless link πŸš€ The shorter interval helps the membership info tracked by the router sync up quickly. It may cost mobile hosts some battery power though πŸ”‹πŸ˜¬

If a router doesn't enable the explicit tracking function, its [Query Interval] is just its default value, 125 seconds ⭐

Now, when Mobile IPv6 [7] is in play, and the home agent acts as a multicast router with multicast data packets tunneled to and from it, the home agent might want to increase the query interval 🏠 That could happen when the home agent detects network congestion, for example. In that case, the home agent starts forwarding queries using the default [Query Interval] value and then increases it gradually 🌈 Slow and steady, bestie πŸ’πŸ’…

4.2. Tuning the IGMP/MLD Query Response Interval ✨

okay so the [Query Response Interval] is the Max Response Time (or Max Response Delay) used to calculate the Max Resp Code that gets stuffed into the periodic General Queries πŸ’…. The default is 10 seconds, written as Max Resp Code=100 for IGMPv3 [1] and Maximum Response Code=10000 for MLDv2 [2]. By tweaking it, multicast routers can control how bursty the IGMP/MLD messages are on the network πŸ¦‹. Bigger values make the traffic less bursty, since the hosts' responses get spread out over a larger interval, but join latency goes up when a State-Change Report (aka a join request) goes missing 😭.

According to our experimental analysis, this document proposes two scenarios for tuning the [Query Response Interval] value in different wireless link conditions 🌸. Scenario one is for a wireless link with lower resource capacity or a lossy link. Scenario two is for a wireless link with enough capacity, or one whose condition is reliable enough for IGMP/MLD message transmission ✨.

For scenario one, say a multicast router attaches to a bursty IEEE 802.11b link. The router configures a longer [Query Response Interval] value, such as 10 to 20 (seconds) πŸŽ€. This reduces congestion of the Current-State Report messages on the link, but it may increase join latency and leave latency when the unsolicited messages (State-Change Records) get lost on the router πŸ™ˆ. Note that as defined in Section 4.1.1 of [1], in IGMPv3, a Max Resp Code larger than 128 represents the exponential values and changes the granularity. For example, if you want to set the Max Response Time to 20.0 seconds, the Max Resp Code should be expressed as 0b10001001, which is divided into mant=0b1001 and exp=0b000 🧚.

Scenario two may happen for a multicast router attaching to a wireless link with higher resource capacity, or to a point-to-(multi-)point link such as an IEEE 802.16e link, because IGMP/MLD messages do not seriously affect the condition of the link 🌈. The router can seek Current-State Report messages with a shorter [Query Response Interval] value, such as 5 to 10 (seconds). This helps (at some level) quickly discover non-tracked member hosts and synchronize the membership information πŸ’œ.


4.3. Tuning the Last Member Query Timer (LMQT) and Last Listener Query Timer (LLQT) πŸ¦‹

Shortening the Last Member Query Timer (LMQT) for IGMPv3 and the Last Listener Query Timer (LLQT) for MLDv2 helps minimize leave latency ⭐. LMQT is the Last Member Query Interval (LMQI) multiplied by the Last Member Query Count (LMQC), and LLQT is the Last Listener Query Interval (LLQI) multiplied by the Last Listener Query Count (LLQC) πŸ“.

LMQI and LLQI are changeable, but it is reasonable to use the default value (i.e., 1 second) for them in a wireless network 🌸. LMQC and LLQC default to the [Robustness Variable] value, and they are also tunable. So LMQC and LLQC can be set to "1" for routers that enable the explicit tracking function, which makes LMQT and LLQT 1 second each ⚑. Heads up though: setting LMQC and LLQC to 1 increases the risk of missing the last member 😬. LMQC and LLQC ought to be set to 1 only when network operators think their wireless link is stable enough πŸ’….

On the flip side, if network operators think their wireless link is lossy (e.g., due to a large number of attached hosts or limited resources), they can set LMQC and LLQC to "2" for their routers that enable the explicit tracking function πŸ›‘οΈ. Yes, bigger LMQC and LLQC values may cause longer leave latency, but the risk of missing the last member gets reduced 🫢.


4.4. Tuning the Startup Query Interval πŸš€

The [Startup Query Interval] is the interval between General Queries sent by a querier on startup. The default value is 1/4 of [Query Interval]. A shortened value, such as 1 second, would help shorten handover delay for mobile hosts in, for example, the base solution with Proxy Mobile IPv6 (PMIPv6) [9] πŸ¦‹. Note that the [Startup Query Interval] is a static value and cannot be changed by any external signal, so operators who maintain routers and wireless links need to configure this value properly πŸŽ€.


4.5. Tuning the Robustness Variable 🌈

To cover the possibility of unsolicited reports being missed by multicast routers, unsolicited reports get retransmitted ([Robustness Variable] - 1) more times, at intervals chosen at random from the defined range [1] [2] πŸ’–. The QRV (Querier's Robustness Variable) field in the IGMP/MLD Query contains the [Robustness Variable] value used by the querier. The default [Robustness Variable] value defined in IGMPv3 [1] and MLDv2 [2] is "2" ✨.

This document proposes "2" for the [Robustness Variable] value for mobility when a router attaches to a wireless link with lower resource capacity or a large number of hosts 🫢. For a router attached to a higher-capacity wireless link known to be reliable, retransmitting the same State-Change Report message is not required, so the router sets the [Robustness Variable] to "1" πŸ‘‘.


4.6. Tuning Scenarios for Various Mobile IP Networks πŸ“‘

In mobile IP networks, IGMP and MLD are used in three deployment scenarios: (1) running directly between a host and access router on a wireless network, (2) running between a host and home router through a tunnel link, and (3) running between a home router and foreign router through a tunnel link 🧚.

When a receiver host connects directly through a wireless link to a foreign access router or a home router, the tuning of the IGMP/MLD protocol parameters should be the same as suggested in the previous sections 🌸. An example of this scenario is PMIPv6 [6], where the mobile access gateway (whose role is similar to a foreign router) acts as a multicast router or proxy πŸ’….

The second scenario happens when a bidirectional tunnel between a host and home router is used to exchange IGMP/MLD messages [7] [10]. Tuning the parameters is difficult here, because the condition of the tunnel link is diverse and changeable πŸ˜΅β€πŸ’«. When a host is far away from the home router, the transmission delay between the two entities may be longer and packet delivery may be more unreliable. So the effects of IGMP/MLD message transmission through a tunnel link ought to be considered when parameters are set. For example, the [Query Interval] and [Query Response Interval] could be set shorter to compensate for transmission delay, and the [Robustness Variable] could be increased to compensate for possible packet loss 🌊.

The third scenario occurs in [9], in which the mobile access gateway (i.e., foreign router) acts as the IGMP/MLD Proxy [5] in PMIPv6 [6]. Through the bidirectional tunnel established with the local mobility anchor (i.e., home router), the mobile access gateway sends summary reports of its downstream member hosts to the local mobility anchor πŸ’œ. Apart from the distance factor, which influences parameter setting, the [Query Response Interval] on the local mobility anchor could be set to a smaller value. The number of mobile access gateways is much smaller than the number of hosts, so the chance of packet burst is low for the same reason πŸ¦‹. Also, power consumption due to a lower query interval is not an issue for the mobile access gateways, because they are usually not battery-powered πŸ”‹.

Ideally, the IGMP/MLD querier router adjusts its parameter settings according to the actual mobile IP network conditions, to benefit service performance and resource utilization πŸŽ€. It would be desirable for a home router to determine the aforementioned timers and values according to the delay between the initiating IGMP/MLD Query and the responding IGMP/MLD Report. However, describing how these timers and values can be dynamically adjusted is out of scope for this document πŸ™ˆ.


5. Destination Address of a Specific Query 🎯

IGMP/MLD Group-Specific and Group-and-Source-Specific Queries defined in [1] and [2] are sent to verify whether there are hosts that desire reception of the specified group or a set of sources, or to rebuild the desired reception state for a particular group or a set of sources πŸ’–. These specific queries build and refresh the multicast membership state of hosts on an attached network ✨.

Group-Specific Queries are sent with an IP destination address equal to the multicast address of interest, as defined in [1] and [2]. Using the multicast group of interest in the specific query is preferred in this environment, because hosts that do not join the multicast session do not pay attention to these specific queries. Only active member hosts that have been receiving multicast content with the specified address reply to IGMP/MLD Reports 🌸.


6. Interoperability 🀝

IGMPv3 [1] and MLDv2 [2] give hosts the ability to report source-specific subscriptions. With IGMPv3/MLDv2, a mobile host can specify a channel of interest, using multicast group and source addresses in its join request. Upon reception, the upstream router that supports IGMPv3/MLDv2 establishes the shortest-path tree toward the source without coordinating a shared tree. This function is called the source-filtering function, and it is required to support Source-Specific Multicast (SSM) [3] 🌈.

Recently, the Lightweight IGMPv3 (LW-IGMPv3) and Lightweight MLDv2 (LW-MLDv2) [4] protocols have been defined as proposed standard protocols in the IETF πŸŽ€. They keep protocol simplicity for mobile hosts and routers, because they eliminate a complex state machine from the full versions of IGMPv3 and MLDv2, and they make it easier to implement SSM in mobile communications πŸ¦‹.

This document assumes that both multicast routers and mobile hosts are IGMPv3/MLDv2 capable, whether the protocols are the full or lightweight version πŸ’…. It does not consider interoperability with older protocol versions. One reason for this lack of interoperability with older IGMP/MLD protocols is that the explicit tracking function does not work properly with them, because of a report-suppression mechanism: a host would not send a pending IGMP/MLD Report if a similar report was sent by another listener on the link πŸ™ˆ.


7. Security Considerations πŸ”

This document neither provides new functions nor modifies the standard functions defined in [1], [2], and [4]. Therefore, no additional security considerations are provided πŸ›‘οΈ.


8. Acknowledgements 🫢

Luis M. Contreras, Marshall Eubanks, Gorry Fairhurst, Dirk von Hugo, Imed Romdhani, Behcet Sarikaya, Stig Venaas, Jinwei Xia, and others provided many constructive and insightful comments πŸ’œ.


9. References πŸ“š

9.1. Normative References

[1] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. Thyagarajan, "Internet Group Management Protocol, Version 3", RFC 3376, October 2002.

[2] Vida, R., Ed., and L. Costa, Ed., "Multicast Listener Discovery Version 2 (MLDv2) for IPv6", RFC 3810, June 2004.

[3] Holbrook, H. and B. Cain, "Source-Specific Multicast for IP", RFC 4607, August 2006.

[4] Liu, H., Cao, W., and H. Asaeda, "Lightweight Internet Group Management Protocol Version 3 (IGMPv3) and Multicast Listener Discovery Version 2 (MLDv2) Protocols", RFC 5790, February 2010.

9.2. Informative References

Okay so these are the extra reads, bestie πŸ“šπŸ¦‹ not required to build the thing, but they give you the full story ✨

  • [5] Fenner, B., He, H., Haberman, B., and H. Sandick, "Internet Group Management Protocol (IGMP) / Multicast Listener Discovery (MLD)-Based Multicast Forwarding ("IGMP/MLD Proxying")", RFC 4605, August 2006.
  • [6] Gundavelli, S., Ed., Leung, K., Devarapalli, V., Chowdhury, K., and B. Patil, "Proxy Mobile IPv6", RFC 5213, August 2008.
  • [7] Perkins, C., Ed., Johnson, D., and J. Arkko, "Mobility Support in IPv6", RFC 6275, July 2011.
  • [8] Asaeda, H. and N. Leymann, "IGMP/MLD-Based Explicit Membership Tracking Function for Multicast Routers", Work in Progress, April 2012.
  • [9] Schmidt, T., Waehlisch, M., and S. Krishnan, "Base Deployment for Multicast Listener Support in Proxy Mobile IPv6 (PMIPv6) Domains", RFC 6224, April 2011.
  • [10] Perkins, C., Ed., "IP Mobility Support for IPv4, Revised", RFC 5944, November 2010.

Appendix A. Unicasting a General Query ✨

This appendix is giving "future upgrades for mobile and wireless" πŸ“±πŸ’œ It describes possible IGMP and MLD protocol extensions for further optimization in mobile and wireless environments. It might be beneficial to include the following considerations when a newer version or modification of IGMP and MLD protocols is considered in the future.

IGMPv3 and MLDv2 specifications [1] [2] explain that a host must accept and process any query whose IP Destination Address field contains any of the addresses (unicast or multicast) assigned to the interface on which the query arrives. In general, the all-hosts multicast address (224.0.0.1) or link-scope all-nodes multicast address (ff02::1) is used as the IP destination address of an IGMP/MLD General Query. On the other hand, according to [1] and [2], a router may be able to unicast a General Query to the tracked member hosts in [Query Interval], if the router keeps track of membership information (Section 3).

Unicasting an IGMP/MLD General Query would reduce the drain on the battery power of mobile hosts πŸ”‹βœ¨ Only the active hosts that have been receiving multicast contents respond to the unicast IGMP/MLD General Query messages, and non-active hosts do not need to pay attention to the IGMP/MLD Query messages. This also allows the upstream router to proceed with fast leaves (or shorten leave latency) by setting LMQC/LLQC smaller, because ideally, the router can immediately converge and update the membership information. Iconic efficiency πŸ’…

However, there is a concern regarding the unicast General Query: if a multicast router sends a General Query "only" by unicast, it cannot discover potential member hosts whose join requests were lost. Since the hosts do not retransmit the same join requests (i.e., unsolicited Report messages), they lose the chance to join the channels unless the upstream router asks for membership information by sending a multicast General Query. 😭

This concern will be solved by using both unicast and multicast General Queries and configuring the [Query Interval] timer value for multicast General Query and the [Unicast Query Interval] timer value for unicast General Query. However, using two different timers for General Queries would require a protocol extension that is beyond the scope of this document. If a router does not distinguish multicast and unicast General Query Intervals, the router should only use and enable multicast General Queries.

Also, the unicast General Query does not remove the need for the multicast General Query. The multicast General Query is necessary for updating membership information if the information is not correctly synchronized due to missing reports. Therefore, the unicast General Query should not be used for an implementation that does not allow the configuration of different query interval timers such as [Query Interval] and [Unicast Query Interval]. If a router does not distinguish these multicast and unicast General Query Intervals, the router should only use and enable multicast General Queries. Bestie, that's the whole plot twist πŸŽ€πŸŒˆ


Authors' Addresses 🫢

Hitoshi Asaeda
Keio University
Graduate School of Media and Governance
5322 Endo
Fujisawa, Kanagawa  252-0882
Japan

EMail: asaeda@wide.ad.jp
URI:   http://www.sfc.wide.ad.jp/~asaeda/
Hui Liu
Huawei Technologies Co., Ltd.
Building Q14, No. 156, Beiqing Rd.
Beijing  100095
China

EMail: helen.liu@huawei.com
Qin Wu
Huawei Technologies Co., Ltd.
101 Software Avenue
Yuhua District
Nanjing, Jiangsu  210012
China

EMail: bill.wu@huawei.com
πŸ“¦ where this page comes from