Subject: [multimob] MLD general query when MN-MAG tunnel comes up

From: Stig Venaas <[email-masked]>
Date: Mon, 16 Nov 2009 15:22:37 -0800

In the multimob meeting we had some discussion on how quickly a MAG
would receive MLD reports from a new MN.

My understanding is as follows.

1. MN does not detect movement, hence it will not send reports by
    itself when moving to a new MAG.

2. When a MN moves to a MAG, a point-to-point tunnel is established,
    and this will then be a new link.

MLDv2 spec (RFC 3810) states:

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).
[...]

and then in 9.6 and 9.7:

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].

I believe this applies to when link between MN and MAG comes up. So the
initial query interval would then with default timers be 125s / 4.

Note that this timer can be tuned.

What I don't see in this document is anything saying when the first
query can be sent. I believe 125s / 4 is too long. When a link comes up,
or a router (or proxy in our case) starts up, it makes sense to send the
first query as quickly as possible.

At least if you look at MLDv1, RFC 2710, you will see a state machine
in section 6 starting with:

                                      --------------------------------
                              _______|________  gen. query timer      |
  ---------                  |                |        expired        |
| Initial |---------------->|                | (send general query,  |
  ---------  (send gen. q.,  |                |  start gen. q. timer) |
      start initial gen. q.  |                |<----------------------
              timer)         |    Querier     |
                             |                |
                        -----|                |<---
                       |     |                |    |
                       |     |________________|    |

I read this as immediately sending a general query, and afterwards
setting the timer.

Also RFC 4541 with considerations for snooping switches say:

    4) An IGMP snooping switch should be aware of link layer topology
       changes caused by Spanning Tree operation.  When a port is enabled
       or disabled by Spanning Tree, a General Query may be sent on all
       active non-router ports in order to reduce network convergence
       time.  Non-Querier switches should be aware of whether the Querier

This is not exactly our scenario, but the idea is the same.

I expect implementations to immediately send MLD queries on links
coming up. If someone wants, this could be tested with some
implementations. Or some of us have access to code we can check.

Stig