multicast address, from the specified source addresses. Multicast
Address and Source Specific Queries are only sent in response to
State Change Records and never in response to Current State Records.
Section 5.1.13 describes each query in more detail.
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
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.
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
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
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.
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.
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.
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.
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