Requested revision
Standard: | IEEE802.1AS-2020 | Clause: | 11.2.19.4 / Figure 11-9 |
Clause title: | State diagram (of MDPdelayReq state machine) |
Rationale for revision
The calculation of meanLinkDelay depends on the variable neighborRateRatio (eq. 11-5.).
At startup, it requires at least two exchanges of pDelay messages until NRR has a valid value. Per the MDPdelayRequest state machine, meanLinkDelay is already computed with the first reception of a well-formatted Pdelay_Resp_Follow_Up message. At that time, NRR is not valid. The boolean variable neighborRateRatioValid, which is FALSE until sufficient messages have been exchanged, is already used in this state machine. However, this variable is not considered in the calculations of meanLinkDelay (compPropTime()).
In this initial situation, the scaling of the time interval (t4-t1) in equation
11-5 will be done with the default value of NRR which is 1.0.
With an assumed 10 ms pDelay turnaround time, a worst-case frequency difference of 200 ppm between requester and responder and a negligible physical propagation delay, the resulting error will be plus or minus 1 microsecond.
If the proposed formulas for propagation delay averaging (eq 11-2 to 11-4) are used with this first calculated value for meanLinkDelay, this initial error will influence the results of the calculations for several pDelay message exchanges before it slowly disappears, depending on the chosen values for the parameters a and M.
Therefore, the calculation, or at the least the use, of a calculated meanLinkDelay must be prevented if the boolean variable neighborRateRatioValid is FALSE.
Proposed text
In Figure 11-9 in state WAITING_FOR_PDELAY_INTERVAL_TIMER, change
if (computeMeanLinkDelay)
meanLinkDelay = computePropTime();,
isMeasuringDelay = TRUE;
to
if (neighborRateRatioValid)
{
if (computeMeanLinkDelay)
meanLinkDelay = computePropTime();
isMeasuringDelay = TRUE;
}
Impact on existing networks
I expect none. The externally observable change in behavior is that the managed object isMeasuringDelay (14.8.6 and 14.16.4) will become true after the second exchange of pDelay messages at startup and not after the first exchange of these messages. Working existing implementations are likely to have implemented proper handling of this initial situation (though we saw the described problem in interoperability tests).
Originator
Name: | Martin Ostertag | Email: | ostt@zhaw.ch |
Affiliation: | |||
Submitted: | 2024-09-17 |