home *** CD-ROM | disk | FTP | other *** search
/ Internet Core Protocols / Oreilly-InternetCoreProtocols.iso / RFCs / rfc2710.txt < prev    next >
Encoding:
Text File  |  1999-10-14  |  46.9 KB  |  1,236 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                        S. Deering
  8. Request for Comments: 2710                                Cisco Systems
  9. Category: Standards Track                                     W. Fenner
  10.                                                           AT&T Research
  11.                                                             B. Haberman
  12.                                                                     IBM
  13.                                                            October 1999
  14.  
  15.  
  16.               Multicast Listener Discovery (MLD) for IPv6
  17.  
  18. Status of this Memo
  19.  
  20.    This document specifies an Internet standards track protocol for the
  21.    Internet community, and requests discussion and suggestions for
  22.    improvements.  Please refer to the current edition of the "Internet
  23.    Official Protocol Standards" (STD 1) for the standardization state
  24.    and status of this protocol.  Distribution of this memo is unlimited.
  25.  
  26. Copyright Notice
  27.  
  28.    Copyright (C) The Internet Society (1999).  All Rights Reserved.
  29.  
  30. Abstract
  31.  
  32.    This document specifies the protocol used by an IPv6 router to
  33.    discover the presence of multicast listeners (that is, nodes wishing
  34.    to receive multicast packets) on its directly attached links, and to
  35.    discover specifically which multicast addresses are of interest to
  36.    those neighboring nodes.  This protocol is referred to as Multicast
  37.    Listener Discovery or MLD.  MLD is derived from version 2 of IPv4's
  38.    Internet Group Management Protocol, IGMPv2.  One important difference
  39.    to note is that MLD uses ICMPv6 (IP Protocol 58) message types,
  40.    rather than IGMP (IP Protocol 2) message types.
  41.  
  42. 1.  Definitions
  43.  
  44.    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
  45.    "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and "OPTIONAL" in this
  46.    document are to be interpreted as described in RFC 2119 [KEYWORDS].
  47.  
  48. 2.  Introduction
  49.  
  50.    The purpose of Multicast Listener Discovery (MLD) is to enable each
  51.    IPv6 router to discover the presence of multicast listeners (that is,
  52.    nodes wishing to receive multicast packets) on its directly attached
  53.    links, and to discover specifically which multicast addresses are of
  54.    interest to those neighboring nodes.  This information is then
  55.  
  56.  
  57.  
  58. Deering, et al.             Standards Track                     [Page 1]
  59.  
  60. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  61.  
  62.  
  63.    provided to whichever multicast routing protocol is being used by the
  64.    router, in order to ensure that multicast packets are delivered to
  65.    all links where there are interested receivers.
  66.  
  67.    MLD is an asymmetric protocol, specifying different behaviors for
  68.    multicast listeners and for routers.  For those multicast addresses
  69.    to which a router itself is listening, the router performs both parts
  70.    of the protocol, including responding to its own messages.
  71.  
  72.    If a router has more than one interface to the same link, it need
  73.    perform the router part of MLD over only one of those interfaces.
  74.    Listeners, on the other hand, must perform the listener part of MLD
  75.    on all interfaces from which an application or upper-layer protocol
  76.    has requested reception of multicast packets.
  77.  
  78. 3.  Message Format
  79.  
  80.    MLD is a sub-protocol of ICMPv6, that is, MLD message types are a
  81.    subset of the set of ICMPv6 messages, and MLD messages are identified
  82.    in IPv6 packets by a preceding Next Header value of 58.  All MLD
  83.    messages described in this document are sent with a link-local IPv6
  84.    Source Address, an IPv6 Hop Limit of 1, and an IPv6 Router Alert
  85.    option [RTR-ALERT] in a Hop-by-Hop Options header.  (The Router Alert
  86.    option is necessary to cause routers to examine MLD messages sent to
  87.    multicast addresses in which the routers themselves have no
  88.    interest.)
  89.  
  90.    MLD messages have the following format:
  91.  
  92.     0                   1                   2                   3
  93.     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
  94.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  95.    |     Type      |     Code      |          Checksum             |
  96.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  97.    |     Maximum Response Delay    |          Reserved             |
  98.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  99.    |                                                               |
  100.    +                                                               +
  101.    |                                                               |
  102.    +                       Multicast Address                       +
  103.    |                                                               |
  104.    +                                                               +
  105.    |                                                               |
  106.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114. Deering, et al.             Standards Track                     [Page 2]
  115.  
  116. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  117.  
  118.  
  119. 3.1.  Type
  120.  
  121.    There are three types of MLD messages:
  122.  
  123.    Multicast Listener Query (Type = decimal 130)
  124.  
  125.       There are two subtypes of Multicast Listener Query messages:
  126.  
  127.       - General Query, used to learn which multicast addresses have
  128.         listeners on an attached link.
  129.       - Multicast-Address-Specific Query, used to learn if a
  130.         particular multicast address has any listeners on an attached
  131.         link.
  132.  
  133.       These two subtypes are differentiated by the contents of the
  134.       Multicast Address field, as described in section 3.6.
  135.  
  136.       Multicast Listener Report (Type = decimal 131)
  137.  
  138.       Multicast Listener Done (Type = decimal 132)
  139.  
  140.    In the rest of this document, the above messages types are referred
  141.    to simply as "Query", "Report", and "Done".
  142.  
  143. 3.2.  Code
  144.  
  145.    Initialized to zero by the sender; ignored by receivers.
  146.  
  147. 3.3.  Checksum
  148.  
  149.    The standard ICMPv6 checksum, covering the entire MLD message plus a
  150.    "pseudo-header" of IPv6 header fields [ICMPv6,IPv6].
  151.  
  152. 3.4.  Maximum Response Delay
  153.  
  154.    The Maximum Response Delay field is meaningful only in Query
  155.    messages, and specifies the maximum allowed delay before sending a
  156.    responding Report, in units of milliseconds.  In all other messages,
  157.    it is set to zero by the sender and ignored by receivers.
  158.  
  159.    Varying this value allows the routers to tune the "leave latency"
  160.    (the time between the moment the last node on a link ceases listening
  161.    to a particular multicast address and moment the routing protocol is
  162.    notified that there are no longer any listeners for that address), as
  163.    discussed in section 7.8.  It also allows tuning of the burstiness of
  164.    MLD traffic on a link, as discussed in section 7.3.
  165.  
  166.  
  167.  
  168.  
  169.  
  170. Deering, et al.             Standards Track                     [Page 3]
  171.  
  172. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  173.  
  174.  
  175. 3.5.  Reserved
  176.  
  177.    Initialized to zero by the sender; ignored by receivers.
  178.  
  179. 3.6.  Multicast Address
  180.  
  181.    In a Query message, the Multicast Address field is set to zero when
  182.    sending a General Query, and set to a specific IPv6 multicast address
  183.    when sending a Multicast-Address-Specific Query.
  184.  
  185.    In a Report or Done message, the Multicast Address field holds a
  186.    specific IPv6 multicast address to which the message sender is
  187.    listening or is ceasing to listen, respectively.
  188.  
  189. 3.7.  Other fields
  190.  
  191.    The length of a received MLD message is computed by taking the IPv6
  192.    Payload Length value and subtracting the length of any IPv6 extension
  193.    headers present between the IPv6 header and the MLD message.  If that
  194.    length is greater than 24 octets, that indicates that there are other
  195.    fields present beyond the fields described above, perhaps belonging
  196.    to a future backwards-compatible version of MLD.  An implementation
  197.    of the version of MLD specified in this document MUST NOT send an MLD
  198.    message longer than 24 octets and MUST ignore anything past the first
  199.    24 octets of a received MLD message.  In all cases, the MLD checksum
  200.    MUST be computed over the entire MLD message, not just the first 24
  201.    octets.
  202.  
  203. 4.  Protocol Description
  204.  
  205.    Note that defaults for timer values are described later in this
  206.    document.  Timer and counter names appear in square brackets.
  207.  
  208.    Routers use MLD to learn which multicast addresses have listeners on
  209.    each of their attached links.  Each router keeps a list, for each
  210.    attached link, of which multicast addresses have listeners on that
  211.    link, and a timer associated with each of those addresses.  Note that
  212.    the router needs to learn only that listeners for a given multicast
  213.    address are present on a link; it does NOT need to learn the identity
  214.    (e.g., unicast address) of those listeners or even how many listeners
  215.    are present.
  216.  
  217.    For each attached link, a router selects one of its link-local
  218.    unicast addresses on that link to be used as the IPv6 Source Address
  219.    in all MLD packets it transmits on that link.
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226. Deering, et al.             Standards Track                     [Page 4]
  227.  
  228. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  229.  
  230.  
  231.    For each interface over which the router is operating the MLD
  232.    protocol, the router must configure that interface to listen to all
  233.    link-layer multicast address that can be generated by IPv6
  234.    multicasts.  For example, an Ethernet-attached router must set its
  235.    Ethernet address reception filter to accept all Ethernet multicast
  236.    addresses that start with the hexadecimal value 3333 [IPv6-ETHER]; in
  237.    the case of an Ethernet interface that does not support the filtering
  238.    of such a range of multicast address, it must be configured to accept
  239.    ALL Ethernet multicast addresses, in order to meet the requirements
  240.    of MLD.
  241.  
  242.    With respect to each of its attached links, a router may assume one
  243.    of two roles: Querier or Non-Querier.  There is normally only one
  244.    Querier per link.  All routers start up as a Querier on each of their
  245.    attached links.  If a router hears a Query message whose IPv6 Source
  246.    Address is numerically less than its own selected address for that
  247.    link, it MUST become a Non-Querier on that link.  If [Other Querier
  248.    Present Interval] passes without receiving, from a particular
  249.    attached link, any Queries from a router with an address less than
  250.    its own, a router resumes the role of Querier on that link.
  251.  
  252.    A Querier for a link periodically [Query Interval] sends a General
  253.    Query on that link, to solicit reports of all multicast addresses of
  254.    interest on that link.  On startup, a router SHOULD send [Startup
  255.    Query Count] General Queries spaced closely together [Startup Query
  256.    Interval] on all attached links in order to quickly and reliably
  257.    discover the presence of multicast listeners on those links.
  258.  
  259.    General Queries are sent to the link-scope all-nodes multicast
  260.    address (FF02::1), with a Multicast Address field of 0, and a Maximum
  261.    Response Delay of [Query Response Interval].
  262.  
  263.    When a node receives a General Query, it sets a delay timer for each
  264.    multicast address to which it is listening on the interface from
  265.    which it received the Query, EXCLUDING the link-scope all-nodes
  266.    address and any multicast addresses of scope 0 (reserved) or 1
  267.    (node-local).  Each timer is set to a different random value, using
  268.    the highest clock granularity available on the node, selected from
  269.    the range [0, Maximum Response Delay] with Maximum Response Delay as
  270.    specified in the Query packet.  If a timer for any address is already
  271.    running, it is reset to the new random value only if the requested
  272.    Maximum Response Delay is less than the remaining value of the
  273.    running timer.  If the Query packet specifies a Maximum Response
  274.    Delay of zero, each timer is effectively set to zero, and the action
  275.    specified below for timer expiration is performed immediately.
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282. Deering, et al.             Standards Track                     [Page 5]
  283.  
  284. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  285.  
  286.  
  287.    When a node receives a Multicast-Address-Specific Query, if it is
  288.    listening to the queried Multicast Address on the interface from
  289.    which the Query was received, it sets a delay timer for that address
  290.    to a random value selected from the range [0, Maximum Response
  291.    Delay], as above.  If a timer for the address is already running, it
  292.    is reset to the new random value only if the requested Maximum
  293.    Response Delay is less than the remaining value of the running timer.
  294.    If the Query packet specifies a Maximum Response Delay of zero, the
  295.    timer is effectively set to zero, and the action specified below for
  296.    timer expiration is performed immediately.
  297.  
  298.    If a node's timer for a particular multicast address on a particular
  299.    interface expires, the node transmits a Report to that address via
  300.    that interface; the address being reported is carried in both the
  301.    IPv6 Destination Address field and the MLD Multicast Address field of
  302.    the Report packet.  The IPv6 Hop Limit of 1 (as well as the presence
  303.    of a link-local IPv6 Source Address) prevent the packet from
  304.    traveling beyond the link to which the reporting interface is
  305.    attached.
  306.  
  307.    If a node receives another node's Report from an interface for a
  308.    multicast address while it has a timer running for that same address
  309.    on that interface, it stops its timer and does not send a Report for
  310.    that address, thus suppressing duplicate reports on the link.
  311.  
  312.    When a router receives a Report from a link, if the reported address
  313.    is not already present in the router's list of multicast address
  314.    having listeners on that link, the reported address is added to the
  315.    list, its timer is set to [Multicast Listener Interval], and its
  316.    appearance is made known to the router's multicast routing component.
  317.    If a Report is received for a multicast address that is already
  318.    present in the router's list, the timer for that address is reset to
  319.    [Multicast Listener Interval].  If an address's timer expires, it is
  320.    assumed that there are no longer any listeners for that address
  321.    present on the link, so it is deleted from the list and its
  322.    disappearance is made known to the multicast routing component.
  323.  
  324.    When a node starts listening to a multicast address on an interface,
  325.    it should immediately transmit an unsolicited Report for that address
  326.    on that interface, in case it is the first listener on the link.  To
  327.    cover the possibility of the initial Report being lost or damaged, it
  328.    is recommended that it be repeated once or twice after short delays
  329.    [Unsolicited Report Interval].  (A simple way to accomplish this is
  330.    to send the initial Report and then act as if a Multicast-Address-
  331.    Specific Query was received for that address, and set a timer
  332.    appropriately).
  333.  
  334.  
  335.  
  336.  
  337.  
  338. Deering, et al.             Standards Track                     [Page 6]
  339.  
  340. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  341.  
  342.  
  343.    When a node ceases to listen to a multicast address on an interface,
  344.    it SHOULD send a single Done message to the link-scope all-routers
  345.    multicast address (FF02::2), carrying in its Multicast Address field
  346.    the address to which it is ceasing to listen.  If the node's most
  347.    recent Report message was suppressed by hearing another Report
  348.    message, it MAY send nothing, as it is highly likely that there is
  349.    another listener for that address still present on the same link.  If
  350.    this optimization is implemented, it MUST be able to be turned off
  351.    but SHOULD default to on.
  352.  
  353.    When a router in Querier state receives a Done message from a link,
  354.    if the Multicast Address identified in the message is present in the
  355.    Querier's list of addresses having listeners on that link, the
  356.    Querier sends [Last Listener Query Count] Multicast-Address-Specific
  357.    Queries, one every [Last Listener Query Interval] to that multicast
  358.    address.  These Multicast-Address-Specific Queries have their Maximum
  359.    Response Delay set to [Last Listener Query Interval].  If no Reports
  360.    for the address are received from the link after the response delay
  361.    of the last query has passed, the routers on the link assume that the
  362.    address no longer has any listeners there; the address is therefore
  363.    deleted from the list and its disappearance is made known to the
  364.    multicast routing component.  This process is continued to its
  365.    resolution (i.e. until a Report is received or the last Multicast-
  366.    Address-Specific Query is sent with no response) despite any
  367.    transition from Querier to Non-Querier on this link.
  368.  
  369.    Routers in Non-Querier state MUST ignore Done messages.
  370.  
  371.    When a router in Non-Querier state receives a Multicast-Address-
  372.    Specific Query, if its timer value for the identified multicast
  373.    address is greater than [Last Listener Query Count] times the Maximum
  374.    Response Delay specified in the message, it sets the address's timer
  375.    to that latter value.
  376.  
  377. 5.  Node State Transition Diagram
  378.  
  379.    Node behavior is more formally specified by the state transition
  380.    diagram below.  A node may be in one of three possible states with
  381.    respect to any single IPv6 multicast address on any single interface:
  382.  
  383.    - "Non-Listener" state, when the node is not listening to the address
  384.       on the interface (i.e., no upper-layer protocol or application has
  385.       requested reception of packets to that multicast address).  This
  386.       is the initial state for all multicast addresses on all
  387.       interfaces; it requires no storage in the node.
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394. Deering, et al.             Standards Track                     [Page 7]
  395.  
  396. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  397.  
  398.  
  399.    - "Delaying Listener" state, when the node is listening to the
  400.       address on the interface and has a report delay timer running for
  401.       that address.
  402.  
  403.    - "Idle Listener" state, when the node is listening to the address on
  404.       the interface and does not have a report delay timer running for
  405.       that address.
  406.  
  407.    There are five significant events that can cause MLD state
  408.    transitions:
  409.  
  410.    - "start listening" occurs when the node starts listening to the
  411.       address on the interface.  It may occur only in the Non-Listener
  412.       state.
  413.  
  414.    - "stop listening" occurs when the node stops listening to the
  415.       address on the interface.  It may occur only in the Delaying
  416.       Listener and Idle Listener states.
  417.  
  418.    - "query received" occurs when the node receives either a valid
  419.       General Query message, or a valid Multicast-Address-Specific Query
  420.       message.  To be valid, the Query message MUST come from a link-
  421.       local IPv6 Source Address, be at least 24 octets long, and have a
  422.       correct MLD checksum.  The Multicast Address field in the MLD
  423.       message must contain either zero (a General Query) or a valid
  424.       multicast address (a Multicast- Address-Specific Query).  A
  425.       General Query applies to all multicast addresses on the interface
  426.       from which the Query is received.  A Multicast-Address-Specific
  427.       Query applies to a single multicast address on the interface from
  428.       which the Query is received.  Queries are ignored for addresses in
  429.       the Non-Listener state.
  430.  
  431.    - "report received" occurs when the node receives a valid MLD Report
  432.       message.  To be valid, the Report message MUST come from a link-
  433.       local IPv6 Source Address, be at least 24 octets long, and have a
  434.       correct MLD checksum.  A Report applies only to the address
  435.       identified in the Multicast Address field of the Report, on the
  436.       interface from which the Report is received.  It is ignored in the
  437.       Non-Listener or Idle Listener state.
  438.  
  439.    - "timer expired" occurs when the report delay timer for the address
  440.       on the interface expires.  It may occur only in the Delaying
  441.       Listener state.
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450. Deering, et al.             Standards Track                     [Page 8]
  451.  
  452. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  453.  
  454.  
  455.    All other events, such as receiving invalid MLD messages or MLD
  456.    message types other than Query or Report, are ignored in all states.
  457.  
  458.    There are seven possible actions that may be taken in response to the
  459.    above events:
  460.  
  461.    - "send report" for the address on the interface.  The Report message
  462.       is sent to the address being reported.
  463.  
  464.    - "send done" for the address on the interface.  If the flag saying
  465.       we were the last node to report is cleared, this action MAY be
  466.       skipped.  The Done message is sent to the link-scope all-routers
  467.       address (FF02::2).
  468.  
  469.    - "set flag" that we were the last node to send a report for this
  470.       address.
  471.  
  472.    - "clear flag" since we were not the last node to send a report for
  473.       this address.
  474.  
  475.    - "start timer" for the address on the interface, using a delay value
  476.       chosen uniformly from the interval [0, Maximum Response Delay],
  477.       where Maximum Response Delay is specified in the Query.  If this
  478.       is an unsolicited Report, the timer is set to a delay value chosen
  479.       uniformly from the interval [0, [Unsolicited Report Interval] ].
  480.  
  481.    - "reset timer" for the address on the interface to a new value,
  482.       using a delay value chosen uniformly from the interval [0, Maximum
  483.       Response Delay], as described in "start timer".
  484.  
  485.    - "stop timer" for the address on the interface.
  486.  
  487.    In all of the following state transition diagrams, each state
  488.    transition arc is labeled with the event that causes the transition,
  489.    and, in parentheses, any actions taken during the transition.  Note
  490.    that the transition is always triggered by the event; even if the
  491.    action is conditional, the transition still occurs.
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506. Deering, et al.             Standards Track                     [Page 9]
  507.  
  508. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  509.  
  510.  
  511.                              ________________
  512.                             |                |
  513.                             |                |
  514.                             |                |
  515.                             |                |
  516.                   --------->|  Non-Listener  |<---------
  517.                  |          |                |          |
  518.                  |          |                |          |
  519.                  |          |                |          |
  520.                  |          |________________|          |
  521.                  |                   |                  |
  522.                  | stop listening    | start listening  | stop listening
  523.                  | (stop timer,      |(send report,     | (send done if
  524.                  |  send done if     | set flag,        |  flag set)
  525.                  |  flag set)        | start timer)     |
  526.          ________|________           |          ________|________
  527.         |                 |<---------          |                 |
  528.         |                 |                    |                 |
  529.         |                 |<-------------------|                 |
  530.         |                 |   query received   |                 |
  531.         |     Delaying    |    (start timer)   |      Idle       |
  532.    ---->|     Listener    |------------------->|     Listener    |
  533.   |     |                 |   report received  |                 |
  534.   |     |                 |    (stop timer,    |                 |
  535.   |     |                 |     clear flag)    |                 |
  536.   |     |_________________|------------------->|_________________|
  537.   | query received    |        timer expired
  538.   | (reset timer if   |        (send report,
  539.   |  Max Resp Delay   |         set flag)
  540.   |  < current timer) |
  541.    -------------------
  542.  
  543.    The link-scope all-nodes address (FF02::1) is handled as a special
  544.    case.  The node starts in Idle Listener state for that address on
  545.    every interface, never transitions to another state, and never sends
  546.    a Report or Done for that address.
  547.  
  548.    MLD messages are never sent for multicast addresses whose scope is 0
  549.    (reserved) or 1 (node-local).
  550.  
  551.    MLD messages ARE sent for multicast addresses whose scope is 2
  552.    (link-local), including Solicited-Node multicast addresses [ADDR-
  553.    ARCH], except for the link-scope, all-nodes address (FF02::1).
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562. Deering, et al.             Standards Track                    [Page 10]
  563.  
  564. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  565.  
  566.  
  567. 6.  Router State Transition Diagram
  568.  
  569.    Router behavior is more formally specified by the state transition
  570.    diagrams below.
  571.  
  572.    A router may be in one of two possible states with respect to any
  573.    single attached link:
  574.  
  575.    - "Querier", when this router is designated to transmit MLD Queries
  576.       on this link.
  577.  
  578.    - "Non-Querier", when there is another router designated to transmit
  579.       MLD Queries on this link.
  580.  
  581.    The following three events can cause the router to change states:
  582.  
  583.    - "query timer expired" occurs when the timer set for query
  584.       transmission expires.  This event is significant only when in the
  585.       Querier state.
  586.  
  587.    - "query received from a router with a lower IP address" occurs when
  588.       a valid MLD Query is received from a router on the same link with
  589.       a lower IPv6 Source Address. To be valid, the Query message MUST
  590.       come from a link-local IPv6 Source Address, be at least 24 octets
  591.       long, and have a correct MLD checksum.
  592.  
  593.    - "other querier present timer expired" occurs when the timer set to
  594.       note the presence of another querier with a lower IP address on
  595.       the link expires.  This event is significant only when in the
  596.       Non-Querier state.
  597.  
  598.    There are three actions that may be taken in response to the above
  599.    events:
  600.  
  601.    - "start general query timer" for the attached link to [Query
  602.       Interval].
  603.  
  604.    - "start other querier present timer" for the attached link to [Other
  605.       Querier Present Interval].
  606.  
  607.    - "send general query" on the attached link.  The General Query is
  608.       sent to the link-scope all-nodes address (FF02::1), and has a
  609.       Maximum Response Delay of [Query Response Interval].
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618. Deering, et al.             Standards Track                    [Page 11]
  619.  
  620. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  621.  
  622.  
  623.                                      --------------------------------
  624.                              _______|________  gen. query timer      |
  625.  ---------                  |                |        expired        |
  626. | Initial |---------------->|                | (send general query,  |
  627.  ---------  (send gen. q.,  |                |  start gen. q. timer) |
  628.      start initial gen. q.  |                |<----------------------
  629.              timer)         |    Querier     |
  630.                             |                |
  631.                        -----|                |<---
  632.                       |     |                |    |
  633.                       |     |________________|    |
  634. query received from a |                           | other querier
  635. router with a lower   |                           | present timer
  636. IP address            |                           | expired
  637. (start other querier  |      ________________     | (send gen. query,
  638.  present timer)       |     |                |    | start gen. q. timer)
  639.                       |     |                |    |
  640.                       |     |                |    |
  641.                        ---->|      Non       |----
  642.                             |    Querier     |
  643.                             |                |
  644.                             |                |
  645.                        ---->|                |----
  646.                       |     |________________|    |
  647.                       | query received from a     |
  648.                       | router with a lower IP    |
  649.                       | address                   |
  650.                       | (start other querier      |
  651.                       |  present timer)           |
  652.                        ---------------------------
  653.  
  654.    A router starts in the Initial state on all attached links, and
  655.    immediately transitions to Querier state.
  656.  
  657.    In addition, to keep track of which multicast addresses have
  658.    listeners, a router may be in one of three possible states with
  659.    respect to any single IPv6 multicast address on any single attached
  660.    link:
  661.  
  662.    - "No Listeners Present" state, when there are no nodes on the link
  663.       that have sent a Report for this multicast address.  This is the
  664.       initial state for all multicast addresses on the router; it
  665.       requires no storage in the router.
  666.  
  667.    - "Listeners Present" state, when there is a node on the link that
  668.       has sent a Report for this multicast address.
  669.  
  670.  
  671.  
  672.  
  673.  
  674. Deering, et al.             Standards Track                    [Page 12]
  675.  
  676. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  677.  
  678.  
  679.    - "Checking Listeners" state, when the router has received a Done
  680.       message but has not yet heard a Report for the identified address.
  681.  
  682.    There are five significant events that can cause router state
  683.    transitions:
  684.  
  685.    - "report received" occurs when the router receives a Report for the
  686.       address from the link.  To be valid, the Report message MUST come
  687.       from a link-local IPv6 Source Address, be at least 24 octets long,
  688.       and have a correct MLD checksum.
  689.  
  690.    - "done received" occurs when the router receives a Done message for
  691.       the address from the link.  To be valid, the Done message MUST
  692.       come from a link-local IPv6 Source Address, be at least 24 octets
  693.       long, and have a correct MLD checksum.  This event is significant
  694.       only in the "Listerners Present" state and when the router is a
  695.       Querier.
  696.  
  697.    - "multicast-address-specific query received" occurs when a router
  698.       receives a Multicast-Address-Specific Query for the address from
  699.       the link.  To be valid, the Query message MUST come from a link-
  700.       local IPv6 Source Address, be at least 24 octets long, and have a
  701.       correct MLD checksum.  This event is significant only in the
  702.       "Listeners Present" state and when the router is a Non-Querier.
  703.  
  704.    - "timer expired" occurs when the timer set for a multicast address
  705.       expires.  This event is significant only in the "Listeners
  706.       Present" or "Checking Listeners" state.
  707.  
  708.    - "retransmit timer expired" occurs when the timer set to retransmit
  709.       a Multicast-Address-Specific Query expires.  This event is
  710.       significant only in the "Checking Listeners" state.
  711.  
  712.    There are seven possible actions that may be taken in response to the
  713.    above events:
  714.  
  715.    - "start timer" for the address on the link - also resets the timer
  716.       to its initial value [Multicast Listener Interval] if the timer is
  717.       currently running.
  718.  
  719.    - "start timer*" for the address on the link - this alternate action
  720.       sets the timer to the minimum of its current value and either
  721.       [Last Listener Query Interval] * [Last Listener Query Count] if
  722.       this router is a Querier, or the Maximum Response Delay in the
  723.       Query message * [Last Listener Query Count] if this router is a
  724.       non-Querier.
  725.  
  726.  
  727.  
  728.  
  729.  
  730. Deering, et al.             Standards Track                    [Page 13]
  731.  
  732. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  733.  
  734.  
  735.    - "start retransmit timer" for the address on the link [Last Listener
  736.       Query Interval].
  737.  
  738.    - "clear retransmit timer" for the address on the link.
  739.  
  740.    - "send multicast-address-specific query" for the address on the
  741.       link.  The Multicast-Address-Specific Query is sent to the address
  742.       being queried, and has a Maximum Response Delay of [Last Listener
  743.       Query Interval].
  744.  
  745.    - "notify routing +" internally notify the multicast routing protocol
  746.       that there are listeners to this address on this link.
  747.  
  748.    - "notify routing -" internally notify the multicast routing protocol
  749.       that there are no longer any listeners to this address on this
  750.       link.
  751.  
  752.    The following state diagrams apply per group per link.  There are two
  753.    diagrams; one for routers in Querier state and one for routers in
  754.    Non-Querier state.  The transition between Querier and Non-Querier
  755.    state on a link is handled specially.  All groups on that link in "No
  756.    Listeners Present" or "Listeners Present" states switch state
  757.    transition diagrams when the Querier/Non-Querier state transition
  758.    occurs.  However, any groups in "Checking Listeners" state continue
  759.    with the same state transition diagram until the "Checking Listeners"
  760.    state is exited.  E.g. a router that starts as a Querier, receives a
  761.    Done message for a group and then receives a Query from a router with
  762.    a lower address (causing a transition to the Non-Querier state)
  763.    continues to send multicast-address-specific queries for the group in
  764.    question until it either receives a Report or its timer expires, at
  765.    which time it starts performing the actions of a Non-Querier for this
  766.    group.
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786. Deering, et al.             Standards Track                    [Page 14]
  787.  
  788. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  789.  
  790.  
  791.    The state transition diagram for a router in Querier state follows:
  792.  
  793.                           ________________
  794.                          |                |
  795.                          |                |timer expired
  796.             timer expired|                |(notify routing -,
  797.        (notify routing -)|  No Listeners  |clear rxmt tmr)
  798.                  ------->|    Present     |<---------
  799.                 |        |                |          |
  800.                 |        |                |          |
  801.                 |        |________________|          |  ---------------
  802.                 |                    |               | | rexmt timer   |
  803.                 |     report received|               | |  expired      |
  804.                 |  (notify routing +,|               | | (send m-a-s   |
  805.                 |        start timer)|               | |  query,       |
  806.       __________|______              |       ________|_|______ st rxmt |
  807.      |                 |<------------       |                 | tmr)   |
  808.      |                 |                    |                 |<-------
  809.      |                 | report received    |                 |
  810.      |                 | (start timer,      |                 |
  811.      |                 |  clear rxmt tmr)   |                 |
  812.      |    Listeners    |<-------------------|    Checking     |
  813.      |     Present     | done received      |    Listeners    |
  814.      |                 | (start timer*,     |                 |
  815.      |                 |  start rxmt timer, |                 |
  816.      |                 |  send m-a-s query) |                 |
  817.  --->|                 |------------------->|                 |
  818. |    |_________________|                    |_________________|
  819. | report received |
  820. | (start timer)   |
  821.  -----------------
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842. Deering, et al.             Standards Track                    [Page 15]
  843.  
  844. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  845.  
  846.  
  847.    The state transition diagram for a router in Non-Querier state is
  848.    similar, but non-Queriers do not send any messages and are only
  849.    driven by message reception.
  850.  
  851.                               ________________
  852.                              |                |
  853.                              |                |
  854.                 timer expired|                |timer expired
  855.            (notify routing -)|  No Listeners  |(notify routing -)
  856.                    --------->|    Present     |<---------
  857.                   |          |                |          |
  858.                   |          |                |          |
  859.                   |          |                |          |
  860.                   |          |________________|          |
  861.                   |                   |                  |
  862.                   |                   |report received   |
  863.                   |                   |(notify routing +,|
  864.                   |                   | start timer)     |
  865.           ________|________           |          ________|________
  866.          |                 |<---------          |                 |
  867.          |                 |  report received   |                 |
  868.          |                 |  (start timer)     |                 |
  869.          |    Listeners    |<-------------------|     Checking    |
  870.          |     Present     | m-a-s query rec'd  |    Listeners    |
  871.          |                 | (start timer*)     |                 |
  872.     ---->|                 |------------------->|                 |
  873.    |     |_________________|                    |_________________|
  874.    | report received |
  875.    | (start timer)   |
  876.     -----------------
  877.  
  878. 7.  List of timers and default values
  879.  
  880.    Most of these timers are configurable.  If non-default settings are
  881.    used, they MUST be consistent among all routers on a single link.
  882.    Note that parentheses are used to group expressions to make the
  883.    algebra clear.
  884.  
  885. 7.1.  Robustness Variable
  886.  
  887.    The Robustness Variable allows tuning for the expected packet loss on
  888.    a link.  If a link is expected to be lossy, the Robustness Variable
  889.    may be increased.  MLD is robust to (Robustness Variable - 1) packet
  890.    losses.  The Robustness Variable MUST NOT be zero, and SHOULD NOT be
  891.    one.  Default: 2
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898. Deering, et al.             Standards Track                    [Page 16]
  899.  
  900. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  901.  
  902.  
  903. 7.2.  Query Interval
  904.  
  905.    The Query Interval is the interval between General Queries sent by
  906.    the Querier.  Default: 125 seconds.
  907.  
  908.    By varying the [Query Interval], an administrator may tune the number
  909.    of MLD messages on the link; larger values cause MLD Queries to be
  910.    sent less often.
  911.  
  912. 7.3.  Query Response Interval
  913.  
  914.    The Maximum Response Delay inserted into the periodic General
  915.    Queries.  Default: 10000 (10 seconds)
  916.  
  917.    By varying the [Query Response Interval], an administrator may tune
  918.    the burstiness of MLD messages on the link; larger values make the
  919.    traffic less bursty, as node responses are spread out over a larger
  920.    interval.  The number of seconds represented by the [Query Response
  921.    Interval] must be less than the [Query Interval].
  922.  
  923. 7.4.  Multicast Listener Interval
  924.  
  925.    The Multicast Listener Interval is the amount of time that must pass
  926.    before a router decides there are no more listeners for an address on
  927.    a link.  This value MUST be ((the Robustness Variable) times (the
  928.    Query Interval)) plus (one Query Response Interval).
  929.  
  930. 7.5.  Other Querier Present Interval
  931.  
  932.    The Other Querier Present Interval is the length of time that must
  933.    pass before a router decides that there is no longer another router
  934.    which should be the querier on a link.  This value MUST be ((the
  935.    Robustness Variable) times (the Query Interval)) plus (one half of
  936.    one Query Response Interval).
  937.  
  938. 7.6.  Startup Query Interval
  939.  
  940.    The Startup Query Interval is the interval between General Queries
  941.    sent by a Querier on startup.  Default: 1/4 the Query Interval.
  942.  
  943. 7.7.  Startup Query Count
  944.  
  945.    The Startup Query Count is the number of Queries sent out on startup,
  946.    separated by the Startup Query Interval.  Default: the Robustness
  947.    Variable.
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954. Deering, et al.             Standards Track                    [Page 17]
  955.  
  956. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  957.  
  958.  
  959. 7.8.  Last Listener Query Interval
  960.  
  961.    The Last Listener Query Interval is the Maximum Response Delay
  962.    inserted into Multicast-Address-Specific Queries sent in response to
  963.    Done messages, and is also the amount of time between Multicast-
  964.    Address-Specific Query messages.  Default: 1000 (1 second)
  965.  
  966.    This value may be tuned to modify the "leave latency" of the link.  A
  967.    reduced value results in reduced time to detect the departure of the
  968.    last listener for an address.
  969.  
  970. 7.9.  Last Listener Query Count
  971.  
  972.    The Last Listener Query Count is the number of Multicast-Address-
  973.    Specific Queries sent before the router assumes there are no
  974.    remaining listeners for an address on a link.  Default: the
  975.    Robustness Variable.
  976.  
  977. 7.10.  Unsolicited Report Interval
  978.  
  979.    The Unsolicited Report Interval is the time between repetitions of a
  980.    node's initial report of interest in a multicast address.  Default:
  981.    10 seconds.
  982.  
  983. 8.  Message Destinations
  984.  
  985.    This information is provided elsewhere in the document, but is
  986.    summarized here for convenience.
  987.  
  988. Message Type                       IPv6 Destination Address
  989. ------------                       ------------------------
  990. General Query                      link-scope all-nodes (FF02::1)
  991. Multicast-Address-Specific Query   the multicast address being queried
  992. Report                             the multicast address being reported
  993. Done                               link-scope all-routers (FF02::2)
  994.  
  995. 9.  Security Considerations
  996.  
  997.    We consider the ramifications of a forged message of each type.  Note
  998.    that the requirement that nodes verify that the IPv6 Source Address
  999.    of all received MLD messages is a link-local address defends them
  1000.    from acting on forged MLD messages originated off-link, so we discuss
  1001.    only the effects of on-link forgery.
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010. Deering, et al.             Standards Track                    [Page 18]
  1011.  
  1012. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  1013.  
  1014.  
  1015.    Query message:
  1016.  
  1017.         A forged Query message from a machine with a lower IP address
  1018.         than the current Querier will cause Querier duties to be
  1019.         assigned to the forger.  If the forger then sends no more Query
  1020.         messages, other routers' Other Querier Present timer will time
  1021.         out and one will resume the role of Querier.  During this time,
  1022.         if the forger ignores Done messages, traffic might flow to
  1023.         addresses with no listeners for up to [Multicast Listener
  1024.         Interval].
  1025.  
  1026.         A forged Query message sent to an address with listeners will
  1027.         cause one or more nodes that are listeners to that address to
  1028.         send a Report.  This causes a small amount of extra traffic on
  1029.         the link, but causes no protocol problems.
  1030.  
  1031.    Report message:
  1032.  
  1033.         A forged Report message may cause routers to think there are
  1034.         listeners for an address present on a link when there are not.
  1035.         However, since listening to a multicast address is generally an
  1036.         unprivileged operation, a local user may trivially gain the same
  1037.         result without forging any messages.
  1038.  
  1039.    Done message:
  1040.  
  1041.         A forged Done message will cause the Querier to send out
  1042.         Multicast-Address-Specific Queries for the address in question.
  1043.         This causes extra processing on each router and on each of the
  1044.         address's listeners, and extra packets on the link, but cannot
  1045.         cause loss of desired traffic.
  1046.  
  1047. 10.  Acknowledgments
  1048.  
  1049.    MLD was derived from IGMPv2 [IGMPv2], which was designed by Rosen
  1050.    Sharma and Steve Deering and documented by Bill Fenner.
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066. Deering, et al.             Standards Track                    [Page 19]
  1067.  
  1068. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  1069.  
  1070.  
  1071. 11.  References
  1072.  
  1073.    [ADDR-ARCH]  Hinden, R. and S. Deering, "IP Version 6 Addressing
  1074.                 Architecture", RFC 2373, July 1998.
  1075.  
  1076.    [ICMPv6]     Conta, A. and S. Deering, "Internet Control Message
  1077.                 Protocol (ICMPv6) for the Internet Protocol Version 6
  1078.                 (IPv6) Specification", RFC 2463, December 1998.
  1079.  
  1080.    [IGMPv2]     Fenner, W., "Internet Group Management Protocol, Version
  1081.                 2", RFC 2236, November 1997.
  1082.  
  1083.    [IPv6]       Deering, S. and R. Hinden, "Internet Protocol, Version 6
  1084.                 (IPv6) Specification", RFC 2460, December 1998.
  1085.  
  1086.    [IPv6-ETHER] Crawford, M., "Transmission of IPv6 Packets over
  1087.                 Ethernet Networks", RFC 2464, December, 1998.
  1088.  
  1089.    [KEYWORDS]   Bradner, S., "Key words for use in RFCs to Indicate
  1090.                 Requirement Levels", BCP 14, RFC 2119, March 1997.
  1091.  
  1092.    [RTR-ALERT]  Partridge, C. and A. Jackson, "IPv6 Router Alert
  1093.                 Option", RFC 2711, October 1999.
  1094.  
  1095.    [STD-PROC]   Bradner, S., "The Internet Standards Process -- Revision
  1096.                 3", BCP 9, RFC 2026, October 1996.
  1097.  
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122. Deering, et al.             Standards Track                    [Page 20]
  1123.  
  1124. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  1125.  
  1126.  
  1127. 12.  Authors' Addresses
  1128.  
  1129.    Stephen E. Deering
  1130.    Cisco Systems, Inc.
  1131.    170 West Tasman Drive
  1132.    San Jose, CA 95134-1706
  1133.    USA
  1134.  
  1135.    Phone: +1 408 527 8213
  1136.    EMail: deering@cisco.com
  1137.  
  1138.  
  1139.    William C. Fenner
  1140.    AT&T Research
  1141.    75 Willow Road
  1142.    Menlo Park, CA 94025
  1143.    USA
  1144.  
  1145.    Phone: +1 650 867 6073
  1146.    EMail: fenner@research.att.com
  1147.  
  1148.  
  1149.    Brian Haberman
  1150.    IBM Corporation
  1151.    800 Park Office Drive
  1152.    Research Triangle Park, NC  27709
  1153.    USA
  1154.  
  1155.    Phone: +1 919 254 2673
  1156.    EMail: haberman@raleigh.ibm.com
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178. Deering, et al.             Standards Track                    [Page 21]
  1179.  
  1180. RFC 2710         Multicast Listener Discovery for IPv6      October 1999
  1181.  
  1182.  
  1183. 13.  Full Copyright Statement
  1184.  
  1185.    Copyright (C) The Internet Society (1999).  All Rights Reserved.
  1186.  
  1187.    This document and translations of it may be copied and furnished to
  1188.    others, and derivative works that comment on or otherwise explain it
  1189.    or assist in its implementation may be prepared, copied, published
  1190.    and distributed, in whole or in part, without restriction of any
  1191.    kind, provided that the above copyright notice and this paragraph are
  1192.    included on all such copies and derivative works.  However, this
  1193.    document itself may not be modified in any way, such as by removing
  1194.    the copyright notice or references to the Internet Society or other
  1195.    Internet organizations, except as needed for the purpose of
  1196.    developing Internet standards in which case the procedures for
  1197.    copyrights defined in the Internet Standards process must be
  1198.    followed, or as required to translate it into languages other than
  1199.    English.
  1200.  
  1201.    The limited permissions granted above are perpetual and will not be
  1202.    revoked by the Internet Society or its successors or assigns.
  1203.  
  1204.    This document and the information contained herein is provided on an
  1205.    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  1206.    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
  1207.    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
  1208.    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  1209.    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  1210.  
  1211. Acknowledgement
  1212.  
  1213.    Funding for the RFC Editor function is currently provided by the
  1214.    Internet Society.
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234. Deering, et al.             Standards Track                    [Page 22]
  1235.  
  1236.