PIM Working Group                                     Hermin Anggawijaya
Internet-Draft                                   Allied Telesis Labs, NZ
Intended status: Standards Track                       February 23, 2016
Expires: August 26, 2016


                Improving IGMPv3 and MLDv2 Resilience
               draft-anggawijaya-pim-resilient-gmp-01

Abstract

   Host devices send IGMP or MLD group membership report messages to
   tell the designated router (DR) which multicast groups they want to
   receive.
   These messages are sent repeatedly up to maximum number of times
   determined by the 'Robustness Variable' setting. However, in certain
   situations, those messages could get lost.
   This draft proposes a mechanism whereby host devices attached to a
   local area network where the querier and the DR are the same device,
   can request the querier to acknowledge each report message it
   receives, ensuring report messages reception by the DR.

Status of this Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups. Note that other
   groups may also distribute working documents as Internet-Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time. It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/1id-abstracts.html

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html

   This Internet-Draft will expire in August 26, 2016.

Copyright Notice

   Copyright (c) 2016 IETF Trust and the persons identified as the
   document authors. All rights reserved.
   This document is subject to BCP 78 and the IETF Trust's Legal


Anggawijaya                  August 26, 2016                    [Page 1]


Internet-Draft                Resilient GMP                February 2016


   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document. Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document. Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . .   3
   2. Terminology  . . . . . . . . . . . . . . . . . . . . . . . . .   5
   3. Resilient GMP  . . . . . . . . . . . . . . . . . . . . . . . .   5
     3.1 Resilient IGMP  . . . . . . . . . . . . . . . . . . . . . .   7
       3.1.1 Message Formats . . . . . . . . . . . . . . . . . . . .   7
       3.1.2 Host Behaviour  . . . . . . . . . . . . . . . . . . . .   9
       3.1.3 Router Behaviour  . . . . . . . . . . . . . . . . . . .  10
       3.1.4 Backward Compatibility . . . . . . . . . . . . . . . .   11
     3.2 Resilient MLD . . . . . . . . . . . . . . . . . . . . . . .  12
       3.2.1 Message Formats . . . . . . . . . . . . . . . . . . . .  12
       3.2.2 Host Behaviour  . . . . . . . . . . . . . . . . . . . .  15
       3.2.3 Router Behaviour  . . . . . . . . . . . . . . . . . . .  16
       3.2.4 Backward Compatibility  . . . . . . . . . . . . . . . .  17
     3.3 Operational Consideration . . . . . . . . . . . . . . . . .  17
   4. IANA Considerations  . . . . . . . . . . . . . . . . . . . . .  17
     4.1 IGMP Type Numbers . . . . . . . . . . . . . . . . . . . . .  17
     4.2 ICMPv6 Type Numbers . . . . . . . . . . . . . . . . . . . .  17
   5. Security Considerations  . . . . . . . . . . . . . . . . . . .  18
     5.1.  On-link Query Message Forgery . . . . . . . . . . . . . .  18
     5.2.  On-link Membership Report Message Forgery . . . . . . . .  18
   6.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  18
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  19
     7.1.  Normative References  . . . . . . . . . . . . . . . . . .  19
     7.2.  Informative References  . . . . . . . . . . . . . . . . .  19
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . .   19















Anggawijaya                  August 26, 2016                    [Page 2]


Internet-Draft                Resilient GMP                February 2016


1.  Introduction
   IGMP and MLD, known collectively as Group Membership Protocols (GMPs)
   are used between hosts (multicast listeners) and their designated
   router. Hosts use these messages to tell the DR which multicast
   groups data they wish to receive.

   When a host wants to receive multicast data for a particular
   multicast group, it sends a membership report message to the DR.
   Upon receiving this message, the DR translate the message into a
   multicast join toward the upstream multicast router using multicast
   routing protocols, for the indicated group and the DR also maintains
   a state of the group membership.

   In order to confirm that hosts still want to continue receiving
   multicast data, the GMP querier periodically sends query messages to
   all users of the multicast group. All hosts requiring multicast data
   are required to send membership response messages to the querier.
   When the querier receives a membership report for a particular
   multicast group, the corresponding membership timer is reset.
   In a LAN with only one multicast router, the DR will be the same
   device as the querier. In a LAN where multiple multicast routers
   coexist, although there is no protocol requirements for the querier
   and the DR to be on the same device, it is quite common for the
   querier and the DR to be on the same device. In the following
   discussion, it is assumed that the querier and the DR to be the same
   device, and the terms querier and DR will be used interchangeably,
   referring to the same device.

   If the querier does not receive a membership report for a particular
   group before the group membership timer expires, the querier will
   delete the appropriate membership record, and the DR which maintains
   the same membership record using the same state machine, sends a
   multicast leave to its upstream router.

   Early physical and link layer technologies such as 802.3 10Base-T,
   are characterised by the possibility of frames getting lost during
   transmission. To compensate for the possibility of frame losses, both
   the hosts and querier are required to repeat their GMP protocol
   message transmissions. The number of retransmissions is determined by
   a Robustness Variable (RV) setting, which is announced by the
   querier. The RV is configured to reflect the robustness of the
   protocols against the perceived probability of frame loss within the
   link.

   Although wired link layer technology improvements have been made to
   minimise the possibility of frame loss, the following recent
   networking trends have tended to negate these effects:
   The growing tendency to increase the number of devices operating
   within a single broadcast domain, then interconnecting multiple
   domains using either bridged (or layer two switched) links.

Anggawijaya                  August 26, 2016                    [Page 3]


Internet-Draft                Resilient GMP                February 2016


   For example if a multicast listener sends a group membership report
   toward a querier located several physical links away, and one of the
   bridges or L2 switches in the path toward the querier is recovering
   from a reboot and not in a forwarding state the membership report
   message sent by the multicast listener could get lost.
   Multicast packet losses have also been proven to be more prevalent in
   the ubiquitous wireless (WiFi) link environments. This observation
   is well documented, see [VYNCKE] and [MCBRIDE].

   In the above scenarios, if a membership report message and its
   subsequent retransmission is lost, then the multicast listener
   sending the message has to wait until the querier sends a general
   query message before another message can be sent. With the default
   GMP protocol values, this waiting period could be up to 125 seconds.

   Diagram 1 below illustrates a scenario in which membership report
   messages are lost between the listener and querier, causing the
   listener to experience excessive delay in receiving multicast data.


   Multicast listener                              GMP Querier
         |----------<---general query------------------|
         |                                             |
         |. . . . . . . . . . . . . . . . . . . . . .  | a
         |                                             |
         |------------membership report->---X          | b
         |                                             |
         |------------membership report->---X          |       T
         |                                             |       i
         |                                             |       m
         |. . . . . . . . . . . . . . . . . . . . . .  | c     e
         |                                             |       |
         |                                             |       |
         |                                             |       V
         |                                             |
         |                                             |
         |                                             |
         |----------<---general query------------------| d
         |------------membership report->--------------|
         |----------<---multicast data-----------------| e
         |----------<---multicast data-----------------|
         |                 ...                         |

    Ta-Tc - transient state period
    Tb-Te - delay for multicast data
    Tc-Td - 'dead' period

   Diagram 1. Current GMP operation with transient state on querier



Anggawijaya                  August 26, 2016                    [Page 4]


Internet-Draft                Resilient GMP                February 2016


   Increasing the RV value may help to alleviate the packet loss issue,
   but this also make the protocols unnecessarily chatty in normal
   conditions. This chattiness can have a serious impact if there are
   lots of multicast listeners in the same broadcast domain.

   This draft proposes a new mechanism that allows listeners to send
   multicast membership reports that are accompanied by a marker
   signalling the querier to acknowledge the reception of the membership
   report message in such a way that the multicast listener is sure that
   its membership report message has been received by the querier. And
   that the multicast listener does not need to repeat its message
   transmission RV number of times. However, if the group membership
   message is lost, the multicast listener can repeat the message
   transmission until either an acknowledgement is received, a general
   query is received, or the number of retransmissions reaches the
   maximum configured on the listener.

2.  Terminology

   In this document, the key words "MUST", "MUST NOT", "REQUIRED",
   "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
   and "OPTIONAL" are to be interpreted as described in RFC 2119 [1] and
   indicate requirement levels for compliant BIDIR-PIM implementations.

3.  Resilient GMP

   To make GMP more resilient, multicast listeners are allowed to keep
   sending group membership reports until an acknowledgement of the
   report is received from the querier. This mechanism is different to
   the original GMP specifications in that it allows a more robust
   delivery of membership report messages, and contains less protocol
   chatter if the link does not suffer from frame losses, i.e. the
   multicast listener will not unnecessarily retransmit the membership
   report messages.

   Diagram 2 below illustrates the behaviour of multicast listener and
   querier adhering to the mechanism proposed in this draft.














Anggawijaya                  August 26, 2016                    [Page 5]


Internet-Draft                Resilient GMP                February 2016


   Multicast listener                              GMP Querier
         |----------<---general query------------------|
         |                                             |
         |. . . . . . . . . . . . . . . . . . . . . .  | a
         |                                             |
         |------------membership report->---X          | b
         |                                             |
         |------------membership report->---X          |       T
         |                 ....                        |       i
         |                 ....                        |       m
         |------------membership report->---X          |       e
         |. . . . . . . . . . . . . . . . . . . . . .  | c     |
         |------------membership report->--------------|       |
         |----------<---report acknowledge-------------|       V
         |----------<---multicast data-----------------| d
         |----------<---multicast data-----------------|
         |                 ...                         |

    Ta-Tc - transient state period
    Tb-Td - delay for multicast data

   Diagram 2. Resilient GMP operation with transient state on querier


   In order to apply this mechanism, a new message format is required
   that includes a flag to enable multicast listeners to request an
   acknowledgement from the querier. This message format is defined in
   the next section.

   The new behaviour as specified by this draft is disabled by default
   and must be enabled explicitly by the network operator.




















Anggawijaya                  August 26, 2016                    [Page 6]


Internet-Draft                Resilient GMP                February 2016


3.1.  Resilient IGMP

3.1.1.  Message Formats

   IGMPv3 Membership Report

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Type = 0x22  |  Reserved   |R|           Checksum            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Reserved            |  Number of Group Records (M)  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   .                                                               .
   .                        Group Record [1]                       .
   .                                                               .
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   .                                                               .
   .                        Group Record [2]                       .
   .                                                               .
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               .                               |
   .                               .                               .
   |                               .                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   .                                                               .
   .                        Group Record [M]                       .
   .                                                               .
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Please see [RFC3376] for the definitions of the existing fields.

   New flags defined in the membership report message are:
     R: 'Request for Acknowledgement' flag. Setting this flag indicates
        that the multicast listener sending the membership report
        requires an acknowledgement message in reply to the
        current membership report message.








Anggawijaya                  August 26, 2016                    [Page 7]


Internet-Draft                Resilient GMP                February 2016


   IGMPv3 Membership Report Acknowledgement

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Type = 0x23  |   Reserved    |           Checksum            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Reserved            |  Number of Group Records (M)  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   .                                                               .
   .                        Group Record [1]                       .
   .                                                               .
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   .                                                               .
   .                        Group Record [2]                       .
   .                                                               .
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               .                               |
   .                               .                               .
   |                               .                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   .                                                               .
   .                        Group Record [M]                       .
   .                                                               .
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


   All the fields in the IGMPv3 Membership Report Acknowledgement
   message have the same specifications as in IGMPv3 Membership Report
   message, except the type code is 0x23 (to be requested to IANA).
   The format is chosen so that it is very convenient for the DR to
   acknowledge membership report messages by simply copying the original
   membership report message, and modifying the copied packet with new
   IP source and destination addresses, IGMP packet type, and
   recalculating both IP and IGMP checksums.

   The membership report acknowledgement is sent unicast to the source
   of the original membership report message being acknowledged.







Anggawijaya                  August 26, 2016                    [Page 8]


Internet-Draft                Resilient GMP                February 2016


   IGMPv3 Query

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Type = 0x11  | Max Resp Code |           Checksum            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         Group Address                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Resv|A|S| QRV |     QQIC      |     Number of Sources (N)     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Source Address [1]                      |
   +-                                                             -+
   |                       Source Address [2]                      |
   +-                              .                              -+
   .                               .                               .
   .                               .                               .
   +-                                                             -+
   |                       Source Address [N]                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Please see [RFC3376] for the definitions of the existing fields.

   The new flag defined in the IGMPv3 Query is:

   A : 'Acknowledgement Capable Querier' flag. Setting this flag
       indicates that the querier is capable of sending acknowledgements
       to membership reports to multicast listeners.

3.1.2.  Host Behaviour

   This section describes the new behaviour of IGMP hosts implementing
   the mechanism as specified in this draft.

   1. By default, an implementation of IGMP adhering to this draft MUST
      enable the new listener behaviour as specified below. And if
      configured to do so, it MAY also fall back to operate as per
      [RFC3376] specification. This provision also ensures that the
      an existing IGMPv3 implementation can operate with a querier
      implementing this draft.

   2. A multicast listener adhering to this new specification MUST send
      its group membership reports with the R-flag set, and A-bit clear,
      in order to indicate its requirement that the querier acknowledges
      its group membership reports

   3. If a multicast listener sends a group membership report message
      with an unspecified source IP address, it MUST not send the
      reports with the R-flag set.


Anggawijaya                  August 26, 2016                    [Page 9]


Internet-Draft                Resilient GMP                February 2016


  4. As soon as a multicast listener receives a general query with the
      A-flag cleared, it MUST fall back to normal IGMPv3 operation as
      per [RFC3376] specification, i.e. all its membership reports must
      be sent with both R-flag and A-flag cleared, and it can only
      retransmit its messages (RV-1) number of times. This ensures that
      the new implementation of IGMP listener can inter-operate with
      existing IGMP querier implementations.

   5. The multicast listener MUST keep retransmitting its membership
      report until:
      a. It receives an acknowledgement message from the querier or
      b. It detects that there are no querier present on the link. The
         listener will assume this situation if it has received no
         queries for a 'Querier Live Time' period since it transmitted
         the original membership report message. The Querier Live Time
         is calculated as 2.5 times the Query Interval time.

   6. The retransmission of the group membership reports MUST be done at
      random intervals within the range
      (0, [Unsolicited Report Interval]).

   7. If a multicast listener's interface state changes, the
      retransmission of the previous membership report messages MUST
      stop, because the state machine will send new membership report
      messages reflecting the state change.

   8. A multicast listener MUST process only valid acknowledgement
      messages. Invalid messages MUST be dropped silently. A valid
      acknowledgement message MUST obey the following rules:
      a. The destination IP address must be equal to the IP address of
         the receiving interface, and cannot be a multicast, broadcast
         nor unspecified IP address.
      b. The IGMP type is set to 0x23.
      c. The checksum must be correct.
      d. The listener is able to match the acknowledgement message with
         the member report message waiting for an acknowledgement.

   9. If a multicast listener send multicast membership reports
      consisting only of group records indicating that the host no
      longer wish to receive multicast data for the groups specified,
      such as BLOCK_OLD_SOURCES record, the report MAY be sent without
      the R-bit set. Note that by doing this, if the report is dropped
      then the DR will not send multicast leave to its upstream router
      and may result in unnecessary multicast data forwarding.

3.1.3.  Router Behaviour

   This section describes the new behaviour of IGMP routers implementing
   the mechanism as specified in this draft.


Anggawijaya                  August 26, 2016                   [Page 10]


Internet-Draft                Resilient GMP                February 2016


   1. By default, a querier adhering to this draft MUST send queries
      with the A-flag set. The implementation SHOULD also enable
      operators to turn the new behaviour off administratively.

   2. If a querier receives a membership report message it MUST perform
      the same report message validation as specified in [RFC3376], i.e.
      that all invalid report messages MUST be silently discarded. And
      in addition, it MUST also perform the following checks:
      a. If the R-flag is set, check that the source IP address is not
         the unspecified IP address (0.0.0.0).

   3. If a querier receives a valid membership report message with the
      R-flag set, it MUST send an acknowledgement by transmitting an
      acknowledgement packet whose content is the same as the membership
      report message, with the following modifications:
      a. The source IP address MUST be set to the that of the receiving
         interface.
      b. The destination IP address MUST be set to the source IP address
         contained in the original message.
      c. The IP checksum is recalculated.
      d. The IGMP packet type is set to 0x23 (to be assigned by IANA).
      e. The IGMP checksum is recalculated.

   4. If a querier receives a valid membership report message with the
      R-flag cleared, then it will just process the report message as
      per [RFC3376] specification.

   5. When a querier sends a query, it MUST set the A flag, unless it is
      configured not to do so by the administrator.

3.1.4.  Backward Compatibility

   To maintain compatibility with older version of IGMP implementations,
   both the listener and querier MUST fall back to the operation as per
   [RFC3376] specification, when the presence of older IGMP
   implementation is detected on the same network.















Anggawijaya                  August 26, 2016                   [Page 11]


Internet-Draft                Resilient GMP                February 2016


3.2.  Resilient MLD

3.2.1.  Message Formats

   MLDv2 Membership Report

     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  Type = 143     | Reserved  |R|           Checksum            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           Reserved            |Nr of Mcast Address Records (M)|
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    .                                                               .
    .                  Multicast Address Record [1]                 .
    .                                                               .
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    .                                                               .
    .                  Multicast Address Record [2]                 .
    .                                                               .
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                               .                               |
    .                               .                               .
    |                               .                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    .                                                               .
    .                  Multicast Address Record [M]                 .
    .                                                               .
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Please see [RFC3810] for the definitions of the existing fields.

   The new flags defined in the membership report message are:
   R: 'Request for Acknowledgement' flag. Setting this flag indicates
      that the multicast listener sending the membership report requires
      an acknowledgement message in reply to the current membership
      report message.








Anggawijaya                  August 26, 2016                   [Page 12]


Internet-Draft                Resilient GMP                February 2016


   MLDv2 Membership Report Acknowledgement
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  Type = 160     | Reserved  |R|           Checksum            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           Reserved            |Nr of Mcast Address Records (M)|
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    .                                                               .
    .                  Multicast Address Record [1]                 .
    .                                                               .
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    .                                                               .
    .                  Multicast Address Record [2]                 .
    .                                                               .
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                               .                               |
    .                               .                               .
    |                               .                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    .                                                               .
    .                  Multicast Address Record [M]                 .
    .                                                               .
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   All the fields in the MLDv2 Membership Report Acknowledgement
   message have the same specifications as in MLDv2 Membership Report
   message, except the type code is 160 (to be requested to IANA).
   The format is chosen so that it is very convenient for the DR to
   acknowledge membership report messages by simply copying the original
   membership report message, and modifying the copied packet with new
   IPv6 source and destination addresses, new ICMPv6 packet type, and
   recalculating the MLDv2 checksum.

   The membership report acknowledgement is sent unicast to the source
   of the original membership report message being acknowledged.









Anggawijaya                  August 26, 2016                   [Page 13]


Internet-Draft                Resilient GMP                February 2016
   MLDv2 Query

     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  Type = 130   |      Code     |           Checksum            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Maximum Response Code      |           Reserved          |A|
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    *                                                               *
    |                                                               |
    *                       Multicast Address                       *
    |                                                               |
    *                                                               *
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Resv  |S| QRV |     QQIC      |     Number of Sources (N)     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    *                                                               *
    |                                                               |
    *                       Source Address [1]                      *
    |                                                               |
    *                                                               *
    |                                                               |
    +-                                                             -+
    |                                                               |
    *                                                               *
    |                                                               |
    *                       Source Address [2]                      *
    |                                                               |
    *                                                               *
    |                                                               |
    +-                              .                              -+
    .                               .                               .
    .                               .                               .
    +-                                                             -+
    |                                                               |
    *                                                               *
    |                                                               |
    *                       Source Address [N]                      *
    |                                                               |
    *                                                               *
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Please see [RFC3810] for the definitions of the existing fields.





Anggawijaya                  August 26, 2016                   [Page 14]


Internet-Draft                Resilient GMP                February 2016


   The new flag defined in MLDv2 Query is:
   A : 'Acknowledgement Capable Querier' flag. Setting this flag
       indicates that this querier is capable of sending an
       acknowledgement to membership reports toward multicast listeners.

3.2.2.  Host Behaviour
   This section describes the new behaviour of MLD hosts implementing
   the mechanism as specified in this draft.

   1. By default, an implementation of MLD adhering to this draft MUST
      enable the new listener behaviour as specified below. And if
      configured to do so, it MAY also fall back to operate as per
      [RFC3810] specification. This also ensures that existing MLDv2
      implementations can inter-operate with queriers implementing this
      draft.

   2. A multicast listener adhering to this new specification MUST send
      a group membership reports with the R-flag set, and the A-bit
      clear, indicating its wish that the querier acknowledges the
      listener's group membership reports.

   3. If a multicast listener sends a membership report message with
      an unspecified source IPv6 address (::), it MUST not send the
      reports with the R-flag set.

   4. As soon as a multicast listener receives a general query with the
      A-flag cleared, it MUST fall back to normal MLDv2 operation as per
      [RFC3810] specification, i.e. all its membership reports must be
      sent with both R-flag and A-flag cleared, and it can only
      retransmit its messages (RV-1) number of times. This ensures that
      the new implementation of MLD listener can inter-operate with
      existing MLD querier implementations.

   5. The multicast listener MUST keep retransmitting the membership
      report until:
      a. It receives an acknowledgement message from the querier or
      b. It detects that there are no querier present on the link. The
         listener will assume this situation if it has receives no
         queries for 'Querier Live Time' period since it transmitted the
         original membership report message. The Querier Live Time is
         calculated as 2.5 times the Query Interval time.

   6. The retransmission of the group membership reports MUST be done at
      random intervals within the range
      (0, [Unsolicited Report Interval]).

   7. If a multicast listener's interface state changes, retransmission
      of the previous membership report message MUST stop, because the



Anggawijaya                  August 26, 2016                   [Page 15]


Internet-Draft                Resilient GMP                February 2016


      state machine will send a new membership report message reflecting
      the state change.

   8. A multicast listener MUST process only valid acknowledgement
      messages. Invalid messages MUST be dropped silently. A valid
      acknowledgement message MUST obey the following rules:
      a. The destination IPv6 address MUST be equal to the IPv6 address
         of the receiving interface, and MUST NOT be a multicast,
         broadcast nor the unspecified IPv6 address (::).
      b. The ICMPv6 packet type is set to 160.
      c. The checksum must be correct.
      d. The listener is able to match the acknowledgement message with
         the member report message waiting for an acknowledgement.

   9. If a multicast listener send multicast membership reports
      consisting only of group records indicating that the host no
      longer wish to receive multicast data for the groups specified,
      such as BLOCK_OLD_SOURCES record, the report MAY be sent without
      the R-bit set. Note that by doing this, if the report is dropped
      then the DR will not send multicast leave to its upstream router
      and may result in unnecessary multicast data forwarding.

3.2.3.  Router Behaviour
   This section describes the new behaviour of MLD routers implementing
   the mechanism as specified in this draft.

   1. By default, querier implementation adhering to this draft MUST
      send queries with the A-flag set. The implementation SHOULD also
      enable operators to turn the new behaviour off administratively.

   2. If a querier receives a membership report message it MUST perform
      the same report message validation as specified in [RFC3810]. All
      invalid report messages MUST be silently discarded. It MUST also
      do the following checks:
      a. Ensure that the A-flag is clear.
      b. Check that if the R-flag is set, the source IPv6 address is not
         the unspecified IPv6 address (::).

   3. If a querier receives a valid membership report message with the
      R-flag set, it MUST send an acknowledgement by transmitting an
      acknowledgement packet whose content is the same as the membership
      report message, with the following modifications:
      a. The source IPv6 address MUST be set to the that of the
         receiving interface.
      b. The destination IPv6 address MUST be set to the source IPv6
         address contained in the original message.
      d. The ICMPv6 packet type is set to 160 (to be requested to IANA).
      e. The MLDv2 checksum is recalculated.



Anggawijaya                  August 26, 2016                   [Page 16]


Internet-Draft                Resilient GMP                February 2016


   4. If a querier receives a valid membership report message with the
      R-flag unset, then it will process the report message as per
      [RFC3810] specification.

   5. When a querier sends a query, it MUST set the A-flag, unless it is
      configured not to do so by the administrator.

3.2.4.  Backward Compatibility
   To maintain compatibility with older version of MLD implementations,
   both the listener and querier MUST fall back to the operation as per
   [RFC3810] specification, when the presence of older MLD
   implementation is detected on the same network.

3.3   Operational Consideration
   If there are more than one multicast routers running IGMP/MLD in a
   LAN, it is advisable to have all the routers configured with the
   same setting for the 'Acknowledgement Capable Querier' flag to avoid
   temporary confusion on hosts as to whether they are allowed to send
   report messages with the R-flag set or not, during querier election
   time.

4.  IANA Considerations

4.1.  IGMP Type Numbers

   Author of this document requests the following IGMP Type Number:

   IGMPv3 Packet Type                            Value
   ------------------------------------------    -----
   IGMPv3 Membership Report Acknowledegement     0x23

4.2.  ICMPv6 Type Numbers

   Author of this document requests the following ICMPv6 Type Number:

   ICMPv6 Packet Type                            Value
   ------------------------------------------    -----
   MLDv2 Membership Report Acknowledegement      160













Anggawijaya                  August 26, 2016                   [Page 17]


Internet-Draft                Resilient GMP                February 2016


5.  Security Considerations
   The original specification of both IGMPv3 and MLDv2 have some defense
   capability against forged messages originated off-link.

5.1.  On-link Query Message Forgery
   Apart from the threats described in both [RFC3376] and [RFC3810],
   extra threat exists in the form of forged query messages with the
   A-flag set, while the actual querier does not send queries with
   the A-flag set. This would make all listeners adhering to the
   mechanism proposed in this draft, keep sending extra retransmissions
   of the report messages without receiving acknowledgement from the
   querier) until they see the query with the A-flag cleared from the
   forged querier. To mitigate this attack, listener implementations
   might generate a log message if queries it receives from the same
   querier seem to have variable setting for the A-flag.

5.2.  On-link Membership Report Message Forgery
   When a querier is configured to run the new implementation as
   specified in this draft, additional threats exist to those described
   in [RFC3376] and [RFC3810]. These extra threats exist in the form of
   forged membership report messages with the R-flag being set. This
   will make the querier unnecessarily send acknowledgements to the
   forged listener. However this attack is mitigated by the fact that
   the original listener will drop these messages since it does not
   expect to receive acknowledgement messages.

6.  Acknowledgements
   A special thank you goes to Stig Venaas for providing very valuable
   feedback and review on this document.






















Anggawijaya                  August 26, 2016                   [Page 18]


Internet-Draft                Resilient GMP                February 2016


7.  References

7.1.  Normative References

   [RFC2119]        Bradner, S., "Key words for use in RFCs to
                    Indicate Requirement Levels", BCP 14, RFC 2119,
                    March 1997.

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

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

7.2.  Informative References

   [VYNCKE]         E. Vyncke , P. Thubert , E. Levy-Abegnoli ,
                    A. Yourtchenko, "Why Network-Layer Multicast is Not
                    Always Efficient At Datalink Layer",
                    draft-vyncke-6man-mcast-not-efficient, February
                    2014.

   [MCBRIDE]        M. McBride, C. Perkins, "Multicast Wifi Problem
                    Statement",
                    draft-mcbride-mboned-wifi-mcast-problem-statement,
                    July, 2015.


Authors' Address

   Hermin Anggawijaya
   Allied Telesis Labs NZ, Ltd
   27 Nazareth Ave
   Christchurch 8024
   New Zealand

   Email: hermin.anggawijaya@alliedtelesis.co.nz













Anggawijaya                  August 26, 2016                   [Page 19]