Problems

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