On Thursday 20 February 2014 10:44:37 Antonio Quartulli wrote:
The missing degradation is the part where I don't agree.
Just to be sure we are understanding each other, I am talking about the scenario depicted in this picture:
http://www.open-mesh.org/attachments/download/52/triangle.png
'A' is the source node and 'B' is our destination. B moves and breaks the line-of-sight with A, thus making the A<->B link unusable at all (we assume that now packet loss on A<->B is 100%).
At this point A still receives B's OGMs via N1.
According to batadv_iv_ogm_orig_update() (in bat_iv_ogm.c) each time a packet with a _new_seqno_ is received the global window of _each_ neighbour for the given originator is shifted by one slot and the averages are computed again.
This operation makes the average degrade because we are now averaging N-1 old values and one 0 (with N being the size of the global window). On the next OGM it will be worse: average on N-2 values and two 0s. And so on..
Doesn't this mean that the metric is degrading (consider that the metric is the average)?
Your explanation is mostly correct - one minor objection though: Values of '0' are not considered when the global average is computed (bat_iv_ogm.c line 73). The idea being: The unilateral degradation of TQ values without any network event will eventually lead to loops. Nonetheless, the general idea of your statement still holds true: Since new sequence numbers keep coming in via an alternative, albeit less optimal route, the stale route will be purged as soon as the global TQ window has elapsed (default: 5 seqnos). Long before the neighbor timeout has had the time to purge the neighbor entirely.
@Andrew: The algorithm always worked that way. In fact, it was your suggestion to reduce the global window to 5 seqnos in order to speed it up. Furthermore, ELP only improves reaction time on a local basis (single hop neighborhood). Network-wide route updates are as slow as before which is why we had to devise yet-another-improvement: RIP http://www.open-mesh.org/projects/batman-adv/wiki/RIP
Cheers, Marek