OLSR link hysteresis is based on a variable maintained for all links
describing their current link quality. If the link is not set to
symmetric and the link quality value passes some upper threshold, then
the link is marked as symmetric. If a link is marked as symmetric, and
its quality value sinks below some lower threshold, the link is set to
asymmetric.
Most link hysteresis code can be found in src/hysteresis.c.
The link-hysteresis implemented in olsrd is based on the suggested exponentially smoothed moving average approach from RFC3626 section 14.3. To maintain the hysteresis variable, two rules are introduced as explained in section 4.3. These are to be applied to the link quality when packets arrives as expected or when a packet-loss is detected. Packet-loss is detected by two mechanisms. The first one is based on announced emission interval and the second one is based on sequence numbering.