The usage of these two mechanisms combined leads to a highly
undesired situation. Consider a scenario where nodes A
and B are
running OLSR with link-hysteresis using the proposed
values(scaling=0.5, upper threshold=0.8 and lower threshold=0.3).
We will look at the situation from As point of view.
A has received a continues series of HELLO messages from B which
has set As entry of B->L_link_quality to 0.99.
A then misses out on one of Bs HELLO messages.
This leads to the instability rule being applied on As registered
B->L_link_quality, due to a detected ``long period of
silence''. As registered link quality for B
would now be 0.5. This is not beneath the lower
threshold, so no change in link state is set.
But as soon as A receives the next HELLO message from B, a missing
package is detected due to the packet sequence number of the received
OLSR packet. Now the instability rule is applied to B->L_link_quality
again. This time it ends up at 0.25 which is below the lower threshold
therefore the link status is recalculated and the neighbor is set to be
asymmetric.
Of course, B->L_link_quality is recalculated immediately since the
stability rule is to be applied upon every received HELLO, but
this will not bring the quality up above the upper threshold. Upon
the next received HELLO(in sequence) the quality will be high enough
for the status to be recalculated.
This means that missing out on one HELLO packet causes a link, and therefore a neighbor if no other symmetric links to it exist, to be set to asymmetric, and the MPR set and routing table to be recalculated. This is a double-counting of a lost packet. In olsrd this is avoided by incrementing the OLSR packet sequence number corresponding to the neighbor whenever such a loss of a HELLO packet is detected by a long period of silence.
Andreas 2004-07-29