Tech-invite3GPPspaceIETFspace
96959493929190898887868584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111009080706050403020100
in Index   Prev   Next

RFC 3810

Multicast Listener Discovery Version 2 (MLDv2) for IPv6

Pages: 62
Proposed Standard
Errata
Updates:  2710
Updated by:  4604
Part 3 of 3 – Pages 37 to 62
First   Prev   None

Top   ToC   RFC3810 - Page 37   prevText

7.2. MLD State Maintained by Multicast Routers

Multicast routers that implement the MLDv2 protocol keep state per multicast address per attached link. This multicast address state consists of a filter mode, a list of sources, and various timers. For each attached link on which MLD runs, a multicast router records the listening state for that link. That state conceptually consists of a set of records of the form: (IPv6 multicast address, Filter Timer, Router Filter Mode, (source records) ) Each source record is of the form: (IPv6 source address, source timer) If all sources for a multicast address are listened to, an empty source record list is kept with the Router Filter Mode set to EXCLUDE. This means that nodes on this link want all sources for this multicast address to be forwarded. This is the MLDv2 equivalent of an MLDv1 listening state.

7.2.1. Definition of Router Filter Mode

To reduce internal state, MLDv2 routers keep a filter mode per multicast address per attached link. This filter mode is used to summarize the total listening state of a multicast address to a minimum set such that all nodes' listening states are respected. The filter mode may change in response to the reception of particular types of Multicast Address Records or when certain timer conditions occur. In the following sections, we use the term "Router Filter Mode" to refer to the filter mode of a particular multicast address within a router. Section 7.4 describes the changes of the Router Filter Mode per Multicast Address Record received. A router is in INCLUDE mode for a specific multicast address on a given interface if all the listeners on the link interested in that address are in INCLUDE mode. The router state is represented through the notation INCLUDE (A), where A is called the "Include List". The Include List is the set of sources that one or more listeners on the link have requested to receive. All the sources from the Include List will be forwarded by the router. Any other source that is not in the Include List will be blocked by the router. A router is in EXCLUDE mode for a specific multicast address on a given interface if there is at least one listener in EXCLUDE mode interested in that address on the link. Conceptually, when a Multicast Address Record is received, the Router Filter Mode for that
Top   ToC   RFC3810 - Page 38
   multicast address is updated to cover all the requested sources using
   the least amount of state.  As a rule, once a Multicast Address
   Record with a filter mode of EXCLUDE is received, the Router Filter
   Mode for that multicast address will be set to EXCLUDE. Nevertheless,
   if all nodes with a multicast address record having filter mode set
   to EXCLUDE cease reporting, it is desirable for the Router Filter
   Mode for that multicast address to transition back to INCLUDE mode.
   This transition occurs when the Filter Timer expires, and is
   explained in detail in section 7.5.

   When the router is in EXCLUDE mode, the router state is represented
   through the notation EXCLUDE (X,Y), where X is called the "Requested
   List" and Y is called the "Exclude List".  All sources, except those
   from the Exclude List, will be forwarded by the router.  The
   Requested List has no effect on forwarding.  Nevertheless, it has to
   be maintained for several reasons, as explained in section 7.2.3.

   The exact handling of both the INCLUDE and EXCLUDE mode router state,
   according to the received reports, is presented in details in Tables
   7.4.1 and 7.4.2.

7.2.2. Definition of Filter Timers

The Filter Timer is only used when the router is in EXCLUDE mode for a specific multicast address, and it represents the time for the Router Filter Mode of the multicast address to expire and switch to INCLUDE mode. A Filter Timer is a decrementing timer with a lower bound of zero. One Filter Timer exists per multicast address record. Filter Timers are updated according to the types of Multicast Address Records received. If a Filter Timer expires, with the Router Filter Mode for that multicast address being EXCLUDE, it means that there are no more listeners in EXCLUDE mode on the attached link. At this point, the router transitions to INCLUDE filter mode. Section 7.5 describes the actions taken when a Filter Timer expires while in EXCLUDE mode. The following table summarizes the role of the Filter Timer. Section 7.4 describes the details of setting the Filter Timer per type of Multicast Address Record received.
Top   ToC   RFC3810 - Page 39
     Router               Filter
   Filter Mode          Timer Value          Actions/Comments
   -----------       -----------------       ----------------

     INCLUDE             Not Used            All listeners in
                                             INCLUDE mode.

     EXCLUDE             Timer > 0           At least one listener
                                             in EXCLUDE mode.

     EXCLUDE             Timer == 0          No more listeners in
                                             EXCLUDE mode for the
                                             multicast address.
                                             If the Requested List
                                             is empty, delete
                                             Multicast Address
                                             Record.  If not, switch
                                             to INCLUDE filter mode;
                                             the sources in the
                                             Requested List are
                                             moved to the Include
                                             List, and the Exclude
                                             List is deleted.

7.2.3. Definition of Source Timers

A Source Timer is a decrementing timer with a lower bound of zero. One Source Timer is kept per source record. Source timers are updated according to the type and filter mode of the Multicast Address Record received. Section 7.4 describes the setting of source timers per type of Multicast Address Records received. In the following, abbreviations are used for several variables (all of which are described in detail in section 9). The variable MALI stands for the Multicast Address Listening Interval, which is the time in which multicast address listening state will time out. The variable LLQT is the Last Listener Query Time, which is the total time the router should wait for a report, after the Querier has sent the first query. During this time, the Querier should send [Last Member Query Count]-1 retransmissions of the query. LLQT represents the "leave latency", or the difference between the transmission of a listener state change and the modification of the information passed to the routing protocol. If the router is in INCLUDE filter mode, a source can be added to the current Include List if a listener in INCLUDE mode sends a Current State or a State Change Report which includes that source. Each source from the Include List is associated with a source timer that
Top   ToC   RFC3810 - Page 40
   is updated whenever a listener in INCLUDE mode sends a report that
   confirms its interest in that specific source.  If the timer of a
   source from the Include List expires, the source is deleted from the
   Include List.  If there are no more source records left, the
   multicast address record is deleted from the router.

   Besides this "soft leave" mechanism, there is also a "fast leave"
   scheme in MLDv2; it is also based on the use of source timers.  When
   a node in INCLUDE mode expresses its desire to stop listening to a
   specific source, all the multicast routers on the link lower their
   timer for that source to a small interval of LLQT milliseconds.  The
   Querier then sends then a Multicast Address and Source Specific
   Query, to verify whether there are other listeners for that source on
   the link, or not.  If a corresponding report is received before the
   timer expires, all the multicast routers on the link update their
   source timer.  If not, the source is deleted from the Include List.
   The handling of the Include List, according to the received reports,
   is detailed in Tables 7.4.1 and 7.4.2.

   Source timers are treated differently when the Router Filter Mode for
   a multicast address is EXCLUDE.  For sources from the Requested List
   the source timers have running values; these sources are forwarded by
   the router.  For sources from the Exclude List the source timers are
   set to zero; these sources are blocked by the router.  If the timer
   of a source from the Requested List expires, the source is moved to
   the Exclude List.  The router informs then the routing protocol that
   there is no longer a listener on the link interested in traffic from
   this source.

   The router has to maintain the Requested List for two reasons:

   o  To keep track of sources that listeners in INCLUDE mode listen to.
      This is necessary in order to assure a seamless transition of the
      router to INCLUDE mode, when there will be no listener in EXCLUDE
      mode left.  This transition should not interrupt the flow of
      traffic to the listeners in INCLUDE mode still interested in that
      multicast address.  Therefore, at the moment of the transition,
      the Requested List should represent the set of sources that nodes
      in INCLUDE mode have explicitly requested.

      When the router switches to INCLUDE mode, the sources in the
      Requested List are moved to the Include List, and the Exclude List
      is deleted.  Before the switch, the Requested List can contain an
      inexact guess at the sources that listeners in INCLUDE mode listen
      to - might be too large or too small.  These inexactitudes are due
      to the fact that the Requested List is also used for fast blocking
      purposes, as described below.  If such a fast blocking is
      required, some sources may be deleted from the Requested List (as
Top   ToC   RFC3810 - Page 41
      shown in Tables 7.4.1 and 7.4.2) in order to reduce router state.
      Nevertheless, in each such case the Filter Timer is updated as
      well.  Therefore, listeners in INCLUDE mode will have enough time,
      before an eventual switching, to reconfirm their interest in the
      eliminated source(s), and rebuild the Requested List accordingly.
      The protocol ensures that when a switch to INCLUDE mode occurs,
      the Requested List will be accurate.  Details about the transition
      of the router to INCLUDE mode are presented in Appendix A3.

   o  To allow a fast blocking of previously unblocked sources.  If the
      router receives a report that contains such a request, the
      concerned sources are added to the Requested List.  Their timers
      are set to a small interval of LLQT milliseconds, and a Multicast
      Address and Source Specific Query is sent by the Querier, to check
      whether there are nodes on the link still interested in those
      sources, or not.  If no node confirms its interest in receiving a
      specific source, the timer of that source expires.  Then, the
      source is moved from the Requested List to the Exclude List.  From
      then on, the source will be blocked by the router.

   The handling of the EXCLUDE mode router state, according to the
   received reports, is detailed in Tables 7.4.1 and 7.4.2.

   When the Router Filter Mode for a multicast address is EXCLUDE,
   source records are only deleted when the Filter Timer expires, or
   when newly received Multicast Address Records modify the source
   record list of the router.

7.3. MLDv2 Source Specific Forwarding Rules

When a multicast router receives a datagram from a source destined to a particular multicast address, a decision has to be made whether to forward the datagram on an attached link or not. The multicast routing protocol in use is in charge of this decision, and should use the MLDv2 information to ensure that all sources/multicast addresses that have listeners on a link are forwarded to that link. MLDv2 information does not override multicast routing information; for example, if the MLDv2 filter mode for a multicast address is EXCLUDE, a router may still forward packets for excluded sources to a transit link. To summarize, the following table describes the forwarding suggestions made by MLDv2 to the routing protocol for traffic originating from a source destined to a multicast address. It also summarizes the actions taken upon the expiration of a source timer based on the Router Filter Mode of the multicast address.
Top   ToC   RFC3810 - Page 42
     Router
   Filter Mode      Source Timer Value           Action
   -----------      ------------------           ------

    INCLUDE            TIMER > 0         Suggest to forward traffic
                                         from source


    INCLUDE            TIMER == 0        Suggest to stop forwarding
                                         traffic from source and
                                         remove source record.  If
                                         there are no more source
                                         records, delete multicast
                                         address record

    EXCLUDE            TIMER > 0         Suggest to forward traffic
                                         from source

    EXCLUDE            TIMER == 0        Suggest to not forward
                                         traffic from source.  Move
                                         the source from the
                                         Requested List to the
                                         Exclude List (DO NOT remove
                                         source record)

    EXCLUDE         No Source Element    Suggest to forward traffic
                                         from all sources

7.4. Action on Reception of Reports

Upon reception of an MLD message that contains a Report, the router checks if the source address of the message is a valid link-local address, if the Hop Limit is set to 1, and if the Router Alert option is present in the Hop-By-Hop Options header of the IPv6 packet. If any of these checks fails, the packet is dropped. If the validity of the MLD message is verified, the router starts to process the Report.

7.4.1. Reception of Current State Records

When receiving Current State Records, a router updates both its Filter Timer and its source timers. In some circumstances, the reception of a type of multicast address record will cause the Router Filter Mode for that multicast address to change. The table below describes the actions, with respect to state and timers, that occur to a router's state upon reception of Current State Records.
Top   ToC   RFC3810 - Page 43
   If the router is in INCLUDE filter mode for a multicast address, we
   will use the notation INCLUDE (A), where A denotes the associated
   Include List.  If the router is in EXCLUDE filter mode for a
   multicast address, we will use the notation EXCLUDE (X,Y), where X
   and Y denote the associated Requested List and Exclude List
   respectively.

   Within the "Actions" section of the router state tables, we use the
   notation '(A)=J', which means that the set A of source records should
   have their source timers set to value J.  'Delete (A)' means that the
   set A of source records should be deleted.  'Filter Timer = J' means
   that the Filter Timer for the multicast address should be set to
   value J.

   Router State   Report Received  New Router State   Actions
   ------------   ---------------  ----------------   -------

   INCLUDE (A)       IS_IN (B)     INCLUDE (A+B)      (B)=MALI

   INCLUDE (A)       IS_EX (B)     EXCLUDE (A*B, B-A) (B-A)=0
                                                      Delete (A-B)
                                                      Filter Timer=MALI

   EXCLUDE (X,Y)     IS_IN (A)     EXCLUDE (X+A, Y-A) (A)=MALI

   EXCLUDE (X,Y)     IS_EX (A)     EXCLUDE (A-Y, Y*A) (A-X-Y)=MALI
                                                      Delete (X-A)
                                                      Delete (Y-A)
                                                      Filter Timer=MALI

7.4.2. Reception of Filter Mode Change and Source List Change Records

When a change in the global state of a multicast address occurs in a node, the node sends either a Source List Change Record or a Filter Mode Change Record for that multicast address. As with Current State Records, routers must act upon these records and possibly change their own state to reflect the new listening state of the link. The Querier must query sources or multicast addresses that are requested to be no longer forwarded. When a router queries or receives a query for a specific set of sources, it lowers its source timers for those sources to a small interval of Last Listener Query Time milliseconds. If multicast address records are received in response to the queries which express interest in listening the queried sources, the corresponding timers are updated.
Top   ToC   RFC3810 - Page 44
   Multicast Address Specific queries can also be used in order to
   enable a fast transition of a router from EXCLUDE to INCLUDE mode, in
   case a received Multicast Address Record motivates this action.  The
   Filter Timer for that multicast address is lowered to a small
   interval of Last Listener Query Time milliseconds.  If any multicast
   address records that express EXCLUDE mode interest in the multicast
   address are received within this interval, the Filter Timer is
   updated and the suggestion to the routing protocol to forward the
   multicast address stands without any interruption.  If not, the
   router will switch to INCLUDE filter mode for that multicast address.

   During the query period (i.e., Last Listener Query Time milliseconds)
   the MLD component in the router continues to suggest to the routing
   protocol to forward traffic from the multicast addresses or sources
   that are queried.  It is not until after Last Listener Query Time
   milliseconds without receiving a record that expresses interest in
   the queried multicast address or sources that the router may prune
   the multicast address or sources from the link.

   The following table describes the changes in multicast address state
   and the action(s) taken when receiving either Filter Mode Change or
   Source List Change Records.  This table also describes the queries
   which are sent by the Querier when a particular report is received.

   We use the following notation for describing the queries that are
   sent.  We use the notation 'Q(MA)' to describe a Multicast Address
   Specific Query to the MA multicast address.  We use the notation
   'Q(MA,A)' to describe a Multicast Address and Source Specific Query
   to the MA multicast address with source list A.  If source list A is
   null as a result of the action (e.g. A*B), then no query is sent as a
   result of the operation.

   In order to maintain protocol robustness, queries defined in the
   Actions column of the table below need to be transmitted [Last
   Listener Query Count] times, once every [Last Listener Query
   Interval] period.

   If while scheduling new queries, there are already pending queries to
   be retransmitted for the same multicast address, the new and pending
   queries have to be merged.  In addition, received host reports for a
   multicast address with pending queries may affect the contents of
   those queries.  Section 7.6.3. describes the process of building and
   maintaining the state of pending queries.
Top   ToC   RFC3810 - Page 45
   Router State  Report Received  New Router State     Actions
   ------------  ---------------  ----------------     -------
   INCLUDE (A)     ALLOW (B)      INCLUDE (A+B)        (B)=MALI

   INCLUDE (A)     BLOCK (B)      INCLUDE (A)          Send Q(MA,A*B)

   INCLUDE (A)     TO_EX (B)      EXCLUDE (A*B,B-A)    (B-A)=0
                                                       Delete (A-B)
                                                       Send Q(MA,A*B)
                                                       Filter Timer=MALI

   INCLUDE (A)     TO_IN (B)      INCLUDE (A+B)        (B)=MALI
                                                       Send Q(MA,A-B)

   EXCLUDE (X,Y)   ALLOW (A)      EXCLUDE (X+A,Y-A)    (A)=MALI

   EXCLUDE (X,Y)   BLOCK (A)      EXCLUDE (X+(A-Y),Y)  (A-X-Y) =
                                                            Filter Timer
                                                       Send Q(MA,A-Y)

   EXCLUDE (X,Y)   TO_EX (A)      EXCLUDE (A-Y,Y*A)    (A-X-Y) =
                                                            Filter Timer
                                                       Delete (X-A)
                                                       Delete (Y-A)
                                                       Send Q(MA,A-Y)
                                                       Filter Timer=MALI

   EXCLUDE (X,Y)   TO_IN (A)      EXCLUDE (X+A,Y-A)    (A)=MALI
                                                       Send Q(MA,X-A)
                                                       Send Q(MA)

7.5. Switching Router Filter Modes

The Filter Timer is used as a mechanism for transitioning the Router Filter Mode from EXCLUDE to INCLUDE. When a Filter Timer expires with a Router Filter Mode of EXCLUDE, a router assumes that there are no nodes with a *filter mode* of EXCLUDE present on the attached link. Thus, the router transitions to INCLUDE filter mode for the multicast address. A router uses the sources from the Requested List as its state for the switch to a filter mode of INCLUDE. Sources from the Requested List are moved in the Include List, while sources from the Exclude List are deleted. For example, if a router's state for a multicast address is EXCLUDE(X,Y) and the Filter Timer expires for that
Top   ToC   RFC3810 - Page 46
   multicast address, the router switches to filter mode of INCLUDE with
   state INCLUDE(X).  If at the moment of the switch the Requested List
   (X) is empty, the multicast address record is deleted from the
   router.

7.6. Action on Reception of Queries

Upon reception of an MLD message that contains a Query, the router checks if the source address of the message is a valid link-local address, if the Hop Limit is set to 1, and if the Router Alert option is present in the Hop-By-Hop Options header of the IPv6 packet. If any of these checks fails, the packet is dropped. If the validity of the MLD message is verified, the router starts to process the Query.

7.6.1. Timer Updates

MLDv2 uses the Suppress Router-Side Processing flag to ensure robustness, as explained in section 2.1. When a router sends or receives a query with a clear Suppress Router-Side Processing flag, it must update its timers to reflect the correct timeout values for the multicast address or sources being queried. The following table describes the timer actions when sending or receiving a Multicast Address Specific or Multicast Address and Source Specific Query with the Suppress Router-Side Processing flag not set. Query Action ----- ------ Q(MA,A) Source Timers for sources in A are lowered to LLQT Q(MA) Filter Timer is lowered to LLQT When a router sends or receives a query with the Suppress Router-Side Processing flag set, it will not update its timers.

7.6.2. Querier Election

MLDv2 elects a single router per subnet to be in Querier state; all the other routers on the subnet should be in Non-Querier state. MLDv2 uses the same querier election mechanism as MLDv1, namely the IPv6 address. When a router starts operating on a subnet, by default it considers itself as being the Querier. Thus, it sends several General Queries separated by a small time interval (see sections 9.6 and 9.7 for details). When a router receives a query with a lower IPv6 address than its own, it sets the Other Querier Present timer to Other Querier Present Timeout; if it was previously in Querier state, it switches to Non-
Top   ToC   RFC3810 - Page 47
   Querier state and ceases to send queries on the link.  After the
   Other Querier Present timer expires, it should re-enter the Querier
   state and begin sending General Queries.

   All MLDv2 queries MUST be sent with the FE80::/64 link-local source
   address prefix.  Therefore, for the purpose of MLDv2 querier
   election, an IPv6 address A is considered to be lower than an IPv6
   address B if the interface ID represented by the last 64 bits of
   address A, in big-endian bit order, is lower than the interface ID
   represented by the last 64 bits of address B.

7.6.3. Building and Sending Specific Queries

7.6.3.1. Building and Sending Multicast Address Specific Queries
When a table action "Send Q(MA)" is encountered, the Filter Timer must be lowered to LLQT. The Querier must then immediately send a Multicast Address Specific query as well as schedule [Last Listener Query Count - 1] query retransmissions to be sent every [Last Listener Query Interval], over [Last Listener Query Time]. When transmitting a Multicast Address Specific Query, if the Filter Timer is larger than LLQT, the "Suppress Router-Side Processing" bit is set in the query message.
7.6.3.2. Building and Sending Multicast Address and Source Specific Queries
When a table action "Send Q(MA,X)" is encountered by the Querier in the table in section 7.4.2, the following actions must be performed for each of the sources in X that send to multicast address MA, with source timer larger than LLQT: o Lower source timer to LLQT; o Add the sources to the Retransmission List; o Set the Source Retransmission Counter for each source to [Last Listener Query Count]. The Querier must then immediately send a Multicast Address and Source Specific Query as well as schedule [Last Listener Query Count -1] query retransmissions to be sent every [Last Listener Query Interval], over [Last Listener Query Time]. The contents of these queries are calculated as follows.
Top   ToC   RFC3810 - Page 48
   When building a Multicast Address and Source Specific Query for a
   multicast address MA, two separate query messages are sent for the
   multicast address.  The first one has the "Suppress Router-Side
   Processing" bit set and contains all the sources with retransmission
   state (i.e., sources from the Retransmission List of that multicast
   address), and timers greater than LLQT.  The second has the "Suppress
   Router-Side Processing" bit clear and contains all the sources with
   retransmission state and timers lower or equal to LLQT.  If either of
   the two calculated messages does not contain any sources, then its
   transmission is suppressed.

   Note: If a Multicast Address Specific query is scheduled to be
   transmitted at the same time as a Multicast Address and Source
   specific query for the same multicast address, then transmission of
   the Multicast Address and Source Specific message with the "Suppress
   Router-Side Processing" bit set may be suppressed.

8. Interoperation with MLDv1

MLD version 2 hosts and routers interoperate with hosts and routers that have not yet been upgraded to MLDv2. This compatibility is maintained by hosts and routers taking appropriate actions depending on the versions of MLD operating on hosts and routers within a network.

8.1. Query Version Distinctions

The MLD version of a Multicast Listener Query message is determined as follows: MLDv1 Query: length = 24 octets MLDv2 Query: length >= 28 octets Query messages that do not match any of the above conditions (e.g., a Query of length 26 octets) MUST be silently ignored.

8.2. Multicast Address Listener Behavior

8.2.1. In the Presence of MLDv1 Routers

In order to be compatible with MLDv1 routers, MLDv2 hosts MUST operate in version 1 compatibility mode. MLDv2 hosts MUST keep state per local interface regarding the compatibility mode of each attached link. A host's compatibility mode is determined from the Host Compatibility Mode variable which can be in one of the two states: MLDv1 or MLDv2.
Top   ToC   RFC3810 - Page 49
   The Host Compatibility Mode of an interface is set to MLDv1 whenever
   an MLDv1 Multicast Address Listener Query is received on that
   interface.  At the same time, the Older Version Querier Present timer
   for the interface is set to Older Version Querier Present Timeout
   seconds.  The timer is re-set whenever a new MLDv1 Query is received
   on that interface.  If the Older Version Querier Present timer
   expires, the host switches back to Host Compatibility Mode of MLDv2.

   When Host Compatibility Mode is MLDv2, a host acts using the MLDv2
   protocol on that interface.  When Host Compatibility Mode is MLDv1, a
   host acts in MLDv1 compatibility mode, using only the MLDv1 protocol,
   on that interface.

   An MLDv1 Querier will send General Queries with the Maximum Response
   Code set to the desired Maximum Response Delay, i.e., the full range
   of this field is linear and the exponential algorithm described in
   section 5.1.3. is not used.

   Whenever a host changes its compatibility mode, it cancels all its
   pending responses and retransmission timers.

8.2.2. In the Presence of MLDv1 Multicast Address Listeners

An MLDv2 host may be placed on a link where there are MLDv1 hosts. A host MAY allow its MLDv2 Multicast Listener Report to be suppressed by a Version 1 Multicast Listener Report.

8.3. Multicast Router Behavior

8.3.1. In the Presence of MLDv1 Routers

MLDv2 routers may be placed on a network where there is at least one MLDv1 router. The following requirements apply: o If an MLDv1 router is present on the link, the Querier MUST use the lowest version of MLD present on the network. This must be administratively assured. Routers that desire to be compatible with MLDv1 MUST have a configuration option to act in MLDv1 mode; if an MLDv1 router is present on the link, the system administrator must explicitly configure all MLDv2 routers to act in MLDv1 mode. When in MLDv1 mode, the Querier MUST send periodic General Queries truncated at the Multicast Address field (i.e., 24 bytes long), and SHOULD also warn about receiving an MLDv2 Query (such warnings must be rate-limited). The Querier MUST also fill in the Maximum Response Delay in the Maximum Response Code field, i.e., the exponential algorithm described in section 5.1.3. is not used.
Top   ToC   RFC3810 - Page 50
   o  If a router is not explicitly configured to use MLDv1 and receives
      an MLDv1 General Query, it SHOULD log a warning.  These warnings
      MUST be rate-limited.

8.3.2. In the Presence of MLDv1 Multicast Address Listeners

MLDv2 routers may be placed on a network where there are hosts that have not yet been upgraded to MLDv2. In order to be compatible with MLDv1 hosts, MLDv2 routers MUST operate in version 1 compatibility mode. MLDv2 routers keep a compatibility mode per multicast address record. The compatibility mode of a multicast address is determined from the Multicast Address Compatibility Mode variable, which can be in one of the two following states: MLDv1 or MLDv2. The Multicast Address Compatibility Mode of a multicast address record is set to MLDv1 whenever an MLDv1 Multicast Listener Report is received for that multicast address. At the same time, the Older Version Host Present timer for the multicast address is set to Older Version Host Present Timeout seconds. The timer is re-set whenever a new MLDv1 Report is received for that multicast address. If the Older Version Host Present timer expires, the router switches back to Multicast Address Compatibility Mode of MLDv2 for that multicast address. Note that when a router switches back to MLDv2 Multicast Address Compatibility Mode for a multicast address, it takes some time to regain source-specific state information. Source-specific information will be learned during the next General Query, but sources that should be blocked will not be blocked until [Multicast Address Listening Interval] after that. When Multicast Address Compatibility Mode is MLDv2, a router acts using the MLDv2 protocol for that multicast address. When Multicast Address Compatibility Mode is MLDv1, a router internally translates the following MLDv1 messages for that multicast address to their MLDv2 equivalents: MLDv1 Message MLDv2 Equivalent ------------- ---------------- Report IS_EX( {} ) Done TO_IN( {} ) MLDv2 BLOCK messages are ignored, as are source-lists in TO_EX() messages (i.e., any TO_EX() message is treated as TO_EX( {} )). On the other hand, the Querier continues to send MLDv2 queries, regardless of its Multicast Address Compatibility Mode.
Top   ToC   RFC3810 - Page 51

9. List of Timers, Counters, and their Default Values

Most of these timers are configurable. If non-default settings are used, they MUST be consistent among all nodes on a single link. Note that parentheses are used to group expressions to make the algebra clear.

9.1. Robustness Variable

The Robustness Variable allows tuning for the expected packet loss on a link. If a link is expected to be lossy, the value of the Robustness Variable may be increased. MLD is robust to [Robustness Variable] - 1 packet losses. The value of the Robustness Variable MUST NOT be zero, and SHOULD NOT be one. Default value: 2.

9.2. Query Interval

The Query Interval variable denotes the interval between General Queries sent by the Querier. Default value: 125 seconds. By varying the [Query Interval], an administrator may tune the number of MLD messages on the link; larger values cause MLD Queries to be sent less often.

9.3. Query Response Interval

The Maximum Response Delay used to calculate the Maximum Response Code inserted into the periodic General Queries. Default value: 10000 (10 seconds) By varying the [Query Response Interval], an administrator may tune the burstiness of MLD messages on the link; larger values make the traffic less bursty, as host responses are spread out over a larger interval. The number of seconds represented by the [Query Response Interval] must be less than the [Query Interval].

9.4. Multicast Address Listening Interval

The Multicast Address Listening Interval (MALI) is the amount of time that must pass before a multicast router decides there are no more listeners of a multicast address or a particular source on a link. This value MUST be ([Robustness Variable] times [Query Interval]) plus [Query Response Interval].
Top   ToC   RFC3810 - Page 52

9.5. Other Querier Present Timeout

The Other Querier Present Timeout is the length of time that must pass before a multicast router decides that there is no longer another multicast router which should be the Querier. This value MUST be ([Robustness Variable] times ([Query Interval]) plus (one half of [Query Response Interval]).

9.6. Startup Query Interval

The Startup Query Interval is the interval between General Queries sent by a Querier on startup. Default value: 1/4 the [Query Interval].

9.7. Startup Query Count

The Startup Query Count is the number of Queries sent out on startup, separated by the Startup Query Interval. Default value: [Robustness Variable].

9.8. Last Listener Query Interval

The Last Listener Query Interval is the Maximum Response Delay used to calculate the Maximum Response Code inserted into Multicast Address Specific Queries sent in response to Version 1 Multicast Listener Done messages. It is also the Maximum Response Delay used to calculate the Maximum Response Code inserted into Multicast Address and Source Specific Query messages. Default value: 1000 (1 second). Note that for values of LLQI greater than 32.768 seconds, a limited set of values can be represented, corresponding to sequential values of Maximum Response Code. When converting a configured time to a Maximum Response Code value, it is recommended to use the exact value if possible, or the next lower value if the requested value is not exactly representable. This value may be tuned to modify the "leave latency" of the link. A reduced value results in reduced time to detect the departure of the last listener for a multicast address or source.

9.9. Last Listener Query Count

The Last Listener Query Count is the number of Multicast Address Specific Queries sent before the router assumes there are no local listeners. The Last Listener Query Count is also the number of
Top   ToC   RFC3810 - Page 53
   Multicast Address and Source Specific Queries sent before the router
   assumes there are no listeners for a particular source.  Default
   value: [Robustness Variable].

9.10. Last Listener Query Time

The Last Listener Query Time is the time value represented by the Last Listener Query Interval, multiplied by [Last Listener Query Count]. It is not a tunable value, but may be tuned by changing its components.

9.11. Unsolicited Report Interval

The Unsolicited Report Interval is the time between repetitions of a node's initial report of interest in a multicast address. Default value: 1 second.

9.12. Older Version Querier Present Timeout

The Older Version Querier Present Timeout is the time-out for transitioning a host back to MLDv2 Host Compatibility Mode. When an MLDv1 query is received, MLDv2 hosts set their Older Version Querier Present Timer to [Older Version Querier Present Timeout]. This value MUST be ([Robustness Variable] times (the [Query Interval] in the last Query received)) plus ([Query Response Interval]).

9.13. Older Version Host Present Timeout

The Older Version Host Present Timeout is the time-out for transitioning a router back to MLDv2 Multicast Address Compatibility Mode for a specific multicast address. When an MLDv1 report is received for that multicast address, routers set their Older Version Host Present Timer to [Older Version Host Present Timeout]. This value MUST be ([Robustness Variable] times [Query Interval]) plus ([Query Response Interval]).

9.14. Configuring timers

This section is meant to provide advice to network administrators on how to tune these settings to their network. Ambitious router implementations might tune these settings dynamically based upon changing characteristics of the network.
Top   ToC   RFC3810 - Page 54

9.14.1. Robustness Variable

The Robustness Variable tunes MLD to expected losses on a link. MLDv2 is robust to [Robustness Variable] - 1 packet losses, e.g., if the Robustness Variable is set to the default value of 2, MLDv2 is robust to a single packet loss but may operate imperfectly if more losses occur. On lossy links, the value of the Robustness Variable should be increased to allow for the expected level of packet loss. However, increasing the value of the Robustness Variable increases the leave latency of the link (the time between when the last listener stops listening to a source or multicast address and when the traffic stops flowing).

9.14.2. Query Interval

The overall level of periodic MLD traffic is inversely proportional to the Query Interval. A longer Query Interval results in a lower overall level of MLD traffic. The value of the Query Interval MUST be equal to or greater than the Maximum Response Delay used to calculate the Maximum Response Code inserted in General Query messages.

9.14.3. Maximum Response Delay

The burstiness of MLD traffic is inversely proportional to the Maximum Response Delay. A longer Maximum Response Delay will spread Report messages over a longer interval. However, a longer Maximum Response Delay in Multicast Address Specific and Multicast Address And Source Specific Queries extends the leave latency (the time between when the last listener stops listening to a source or multicast address and when the traffic stops flowing.) The expected rate of Report messages can be calculated by dividing the expected number of Reporters by the Maximum Response Delay. The Maximum Response Delay may be dynamically calculated per Query by using the expected number of Reporters for that Query as follows: Query Type Expected number of Reporters ---------- ---------------------------- General Query All nodes on link Multicast Address Specific Query All nodes on the link that had expressed interest in the multicast address Multicast Address and Source All nodes on the link that had Specific Query expressed interest in the source and multicast address
Top   ToC   RFC3810 - Page 55
   A router is not required to calculate these populations or tune the
   Maximum Response Delay dynamically; these are simply guidelines.

10. Security Considerations

We consider the ramifications of a forged message of each type. Note that before processing an MLD message, nodes verify if the source address of the message is a valid link-local address (or the unspecified address), if the Hop Limit is set to 1, and if the Router Alert option is present in the Hop-By-Hop Options header of the IPv6 packet. If any of these checks fails, the packet is dropped. This defends the MLDv2 nodes from acting on forged MLD messages originated off-link. Therefore, in the following we discuss only the effects of on-link forgery.

10.1. Query Message

A forged Query message from a machine with a lower IPv6 address than the current Querier will cause Querier duties to be assigned to the forger. If the forger then sends no more Query messages, other routers' Other Querier Present timer will time out and one will resume the role of Querier. During this time, if the forger ignores Multicast Listener Done Messages, traffic might flow to multicast addresses with no listeners for up to [Multicast Address Listener Interval]. A forged Version 1 Query message will put MLDv2 listeners on that link in MLDv1 Host Compatibility Mode. This scenario can be avoided by providing MLDv2 hosts with a configuration option to ignore Version 1 messages completely. A DoS attack on a node could be staged through forged Multicast Address and Source Specific Queries. The attacker can find out about the listening state of a specific node with a general query. After that it could send a large number of Multicast Address and Source Specific Queries, each with a large source list and/or long Maximum Response Delay. The node will have to store and maintain the sources specified in all of those queries for as long as it takes to send the delayed response. This would consume both memory and CPU cycles in order to augment the recorded sources with the source lists included in the successive queries. To protect against such a DoS attack, a node stack implementation could restrict the number of Multicast Address and Source Specific Queries per multicast address within this interval, and/or record only a limited number of sources.
Top   ToC   RFC3810 - Page 56

10.2. Current State Report messages

A forged Report message may cause multicast routers to think there are listeners of a multicast address on a link when there are not. Nevertheless, since listening to a multicast address on a host is generally an unprivileged operation, a local user may trivially gain the same result without forging any messages. A forged Version 1 Report Message may put a router into MLDv1 Multicast Address Compatibility Mode for a particular multicast address, meaning that the router will ignore MLDv2 source specific state messages. This can cause traffic to flow from unwanted sources for up to [Multicast Address Listener Interval]. This can be solved by providing routers with a configuration switch to ignore Version 1 messages completely. This breaks automatic compatibility with Version 1 hosts, so it should only be used in situations where source filtering is critical.

10.3. State Change Report messages

A forged State Change Report message will cause the Querier to send out Multicast Address Specific or Multicast Address and Source Specific Queries for the multicast address in question. This causes extra processing on each router and on each listener of the multicast address, but cannot cause loss of desired traffic.

11. IANA Considerations

IANA has assigned the IPv6 link-local multicast address FF02:0:0:0:0:0:0:16, called "all MLDv2-capable routers", as described in section 5.2.14. Version 2 Multicast Listener Reports will be sent to this special address. In addition, IANA has assigned the ICMPv6 message type value of 143 for Version 2 Multicast Listener Report messages, as specified in section 4.

12. References

12.1. Normative References

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", RFC 2460, December 1998.
Top   ToC   RFC3810 - Page 57
   [RFC2463]    Conta, A. and S. Deering, "Internet Control Message
                Protocol (ICMPv6) for the Internet Protocol Version 6
                (IPv6) Specification", RFC 2463, December 1998.

   [RFC2464]    Crawford, M., "Transmission of IPv6 Packets over
                Ethernet Networks", RFC 2464, December 1998.

   [RFC2710]    Deering, S., Fenner, W. and B. Haberman, "Multicast
                Listener Discovery (MLD) for IPv6", RFC 2710, October
                1999.

   [RFC2711]    Partridge, C. and A. Jackson, "IPv6 Router Alert
                Option," RFC 2711, October 1999.

   [RFC3513]    Hinden, R. and S. Deering, "Internet Protocol Version 6
                (IPv6) Addressing Architecture, RFC 3513, April 2003.

12.2. Informative References

[RFC2461] Narten, T., Nordmark, E. and W. Simpson, "Neighbor Discovery for IP Version 6 (IPv6)", RFC 2461, December 1998. [RFC2462] Thomson, S. and T. Narten, "IPv6 Stateless Address Autoconfiguration", RFC 2462, December 1998. [RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B. and A. Thyagarajan, "Internet Group Management Protocol, Version 3", RFC 3376, October 2002. [RFC3569] Bhattacharyya, S., Ed., "An Overview of Source- Specific Multicast (SSM)", RFC 3569, July 2003. [RFC3678] Thaler, D., Fenner, B. and B. Quinn, "Socket Interface Extensions for Multicast Source Filters", RFC 3678, January 2004.

13. Acknowledgments

We would like to thank Hitoshi Asaeda, Randy Bush, Francis Dupont, Ted Hardie, Russ Housley, Konstantin Kabassanov, Erik Nordmark, Shinsuke Suzuki, Margaret Wasserman, Bert Wijnen, and Remi Zara for their valuable comments and suggestions on this document.
Top   ToC   RFC3810 - Page 58

APPENDIX A. Design Rationale

A.1. The Need for State Change Messages

MLDv2 specifies two types of Multicast Listener Reports: Current State and State Change. This section describes the rationale for the need for both these types of Reports. Routers need to distinguish Multicast Listener Reports that were sent in response to Queries from those that were sent as a result of a change in the per-interface state. Multicast Listener Reports that are sent in response to Multicast Address Listener Queries are used mainly to refresh the existing state at the router; they typically do not cause transitions in state at the router. Multicast Listener Reports that are sent in response to changes in the per-interface state require the router to take some action in response to the received report (see Section 7.4.). The inability to distinguish between the two types of reports would force a router to treat all Multicast Listener Reports as potential changes in state and could result in increased processing at the router as well as an increase in MLD traffic on the link.

A.2. Host Suppression

In MLDv1, a host would not send a pending multicast listener report if a similar report was sent by another listener on the link. In MLDv2, the suppression of multicast listener reports has been removed. The following points explain this decision. 1. Routers may want to track per-host multicast listener status on an interface. This would allow routers to implement fast leaves (e.g., for layered multicast congestion control schemes), as well as track listener status for possible security or accounting purposes. The present specification does not require routers to implement per-host tracking. Nevertheless, the lack of host suppression in MLDv2 makes possible to implement either proprietary or future standard behavior of multicast routers that would support per-host tracking, while being fully interoperable with MLDv2 listeners and routers that implement the exact behavior described in this specification. 2. Multicast Listener Report suppression does not work well on bridged LANs. Many bridges and Layer2/Layer3 switches that implement MLD snooping do not forward MLD messages across LAN segments in order to prevent multicast listener report suppression.
Top   ToC   RFC3810 - Page 59
   3. By eliminating multicast listener report suppression, hosts have
      fewer messages to process; this leads to a simpler state machine
      implementation.

   4. In MLDv2, a single multicast listener report now bundles multiple
      multicast address records to decrease the number of packets sent.
      In comparison, the previous version of MLD required that each
      multicast address be reported in a separate message.

A.3. Switching router filter modes from EXCLUDE to INCLUDE

If on a link there are nodes in both EXCLUDE and INCLUDE modes for a single multicast address, the router must be in EXCLUDE mode as well (see section 7.2.1). In EXCLUDE mode, a router forwards traffic from all sources except those in the Exclude List. If all nodes in EXCLUDE mode cease to exist or to listen, it would be desirable for the router to switch back to INCLUDE mode seamlessly, without interrupting the flow of traffic to existing listeners. One of the ways to accomplish this is for routers to keep track of all sources that nodes that are in INCLUDE mode listen to, even though the router itself is in EXCLUDE mode. If the Filter Timer for a multicast address expires, it implies that there are no nodes in EXCLUDE mode on the link (otherwise a multicast listener report from that node would have refreshed the Filter Timer). The router can then switch to INCLUDE mode seamlessly; sources from the Requested List are moved to the Include List, while sources from the Exclude List are deleted.

APPENDIX B. Summary of Changes from MLDv1

The following is a summary of changes from MLDv1, specified in RFC 2710. o MLDv2 introduces source filtering. o The IP service interface of MLDv2 nodes is modified accordingly. It enables the specification of a filter mode and a source list. o An MLDv2 node keeps per-socket and per-interface multicast listening states that include a filter mode and a source list for each multicast address. This enables packet filtering based on a socket's multicast reception state. o MLDv2 state kept on routers includes a filter mode and a list of sources and source timers for each multicast address that has listeners on the link. MLDv1 routers kept only the list of multicast addresses.
Top   ToC   RFC3810 - Page 60
   o  Queries include additional fields (section 5.1).

   o  The S flag (Suppress Router-Side Processing) is included in
      queries in order to fix robustness issues.

   o  The Querier's Robustness Variable and Query Interval Code are
      included in Queries in order to synchronize all MLDv2 routers
      connected to the same link.

   o  A new Query type (Multicast Address and Source Specific Query) is
      introduced.

   o  The Maximum Response Delay is not directly included in the Query
      anymore.  Instead, an exponential algorithm is used to calculate
      its value, based on the Maximum Response Code included in the
      Query.  The maximum value is increased from 65535 milliseconds to
      about 140 minutes.

   o  Reports include Multicast Address Records.  Information on the
      listening state for several different multicast addresses can be
      included in the same Report message.

   o  Reports are sent to the "all MLDv2-capable multicast routers"
      address, instead of the multicast address the host listens to, as
      in MLDv1.  This facilitates the operation of layer-2 snooping
      switches.

   o  There is no "host suppression", as in MLDv1.  All nodes send
      Report messages.

   o  Unsolicited Reports, announcing changes in receiver listening
      state, are sent [Robustness Variable] times.  RFC 2710 is less
      explicit.

   o  There are no Done messages.

   o  Interoperability with MLDv1 systems is achieved by MLDv2 state
      operations.

   o  In order to ensure interoperability, hosts maintain a Host
      Compatibility Mode variable and an Older Version Querier Present
      timer per interface.  Routers maintain a Multicast Address
      Compatibility Mode variable and an Older Version Host Present
      timer per multicast address.
Top   ToC   RFC3810 - Page 61

Editors' Contact Information

Rolland Vida LIP6, Universite Pierre et Marie Curie 8, rue du Capitaine Scott 75015 Paris, France Phone: +33-1.44.27.30.58 EMail: Rolland.Vida@lip6.fr Luis Henrique Maciel Kosmalski Costa LIP6, Universite Pierre et Marie Curie 8, rue du Capitaine Scott 75015 Paris, France Phone: +33-1.44.27.30.58 EMail: Luis.Costa@lip6.fr

Authors' Addresses

This document was written by: Rolland Vida, LIP6 EMail: Rolland.Vida@lip6.fr Luis Henrique Maciel Kosmalski Costa, LIP6 EMail: Luis.Costa@lip6.fr Serge Fdida, LIP6 EMail: Serge.Fdida@lip6.fr Steve Deering, Cisco Systems, Inc. EMail: deering@cisco.com Bill Fenner, AT&T Labs - Research EMail: fenner@research.att.com Isidor Kouvelas, Cisco Systems, Inc. EMail: kouvelas@cisco.com Brian Haberman, Caspian Networks EMail: brian@innovationslab.net This document is the translation of [RFC3376] for IPv6 semantics. It was elaborated based on the translation of (RFC 2236) into [RFC2710].
Top   ToC   RFC3810 - Page 62
Full Copyright Statement

   Copyright (C) The Internet Society (2004).  This document is subject
   to the rights, licenses and restrictions contained in BCP 78, and
   except as set forth therein, the authors retain all their rights.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at ietf-
   ipr@ietf.org.

Acknowledgement

   Funding for the RFC Editor function is currently provided by the
   Internet Society.