Question about MLDv2 implemenation in Kernel
Rui Paulo
rpaulo at felyko.com
Wed Jun 20 21:20:15 UTC 2012
On 20 Jun 2012, at 01:12, GuYong <guyong1978 at hotmail.com> wrote:
> 1. RFC3810 clause 6.1 mentions there is a Source Retransmission Counter associated to each source, so that the merged report could contain the content that is interrupted by a new state change report BUT, I didn't see this is implemented currently!
I think this is stored in the mli_rv variable and decremented accordingly.
> 2. Regarding the 'Older Version Querier Present timer', the code is like this:old_version_timer = (mli->mli_rv * mli->mli_qi) + mli->mli_qri;
> while mli->mli_qri = maxdelay, and maxdelay = ntohs(mld->mld_maxdelay). BUT, mld_maxdelay is in units of milliseconds (clause 5.1.3), I think it should be divided by 1000 before it adds to old_version_timer.
I think you're right and it should be divided by MLD_TIMER_SCALE.
> 3. According to RFC, a node MUST accept and process any Query whose IP Destination Address field contains *any* of the address (unicast or multicast) assigned to the interface on which the Query arrives. BUT, I see the code only accept General Query addressed to FF02::1.
Hmm, I disagree. Here's what the RFC says:
5.1.15. Destination Addresses for Queries
In MLDv2, General Queries are sent to the link-scope all-nodes
multicast address (FF02::1). Multicast Address Specific and
Multicast Address and Source Specific Queries are sent with an IP
destination address equal to the multicast address of interest.
*However*, a node MUST accept and process any Query whose IP
Destination Address field contains *any* of the addresses (unicast or
multicast) assigned to the interface on which the Query arrives. This
might be useful, e.g., for debugging purposes.
My reading of it suggests that we are doing the right thing. We do accept it and process it, but, like the text implies, we shouldn't take any action.
--
Rui Paulo
More information about the freebsd-net
mailing list