Re: Premature timeout for MLDv1 Host compatibility mode?
From: Dragos Ilie <hidden>
Date: 2012-08-02 13:28:50
On Thu, Aug 2, 2012 at 2:58 PM, David Stevens [off-list ref] wrote:
netdev-owner@vger.kernel.org wrote on 07/26/2012 10:57:43 AM:quoted
RFC 3810 says that the timeout should be computed as Robustness_Variable * Query_Interval + Query_Response_Interval. This suggests that the line where switchback is computed should be changed to something like switchback = (idev->mc_qrv * 125 * HZ) + max_delay; where 125 is the default Query_Interval in secondsDragos, I agree that it's too short, but this shouldn't be using the default value, but rather the actual value of the querier, if one is present, as calculated from a QQIC in a query. I suggest saving the QQI, decoded, in a new "idev->mc_qqi" which should be initialized to 125 but updated by received queries and then using: switchback = idev->mc_qrv * idev->mc_qqi * HZ + max_delay; +-DLS
David, MLDv1 packets do not have a QQIC field in the Query header. That is a available for MLDv2 only. Consequently, MLDv1 queriers should fallback on the Query Interval variable, which has a default value of 125 seconds. Since the Query Interval value is not user-configurable, I assume that using the default value is a reasonable choice. RFC 3810(MLDv2) does mention that the Older Version Querier Present Timeout must be calculated using the Query Interval from the last received Query. I think the RFC is wrong on that point because I don't see how a MLDv1 querier can convey its Query Interval to a listener. Regards, Dragos