[Olsr-dev] problem with olsr-0.5.6 branch: old links remain in the topology

L. Aaron Kaplan (spam-protected)
Sun Feb 1 23:05:33 CET 2009


Hi!

So, Henning and me were debugging tonight... we could reproduce a bug  
which was reported by markus kittenberger earlier.
Problem is that when one node loses connectivity (in the experiment  
olsrd was killed there), then other nodes will keep a route to it.
This is IMHO still a showstopper for 0.5.6-r4.

Testsetup (how to repeat):

192.168.100.1  (linksys, freifunk firmware 1.3.36)

    |         \
    |          \
    |    -----> \ 192.168.100.127 (freebsd, olsr-0.5.6 branch )
    |<--/
  192.168.100.126 (openbsd, olsr-0.5.6 branch)


so all nodes see each other.

The topology tables of 100.127 will still show:

Source IP addr  Dest IP addr          LQ        ETX
192.168.100.1   192.168.100.126 0.592/1.000    1.689
192.168.100.1   192.168.100.127 0.541/0.992    1.862
192.168.100.126 192.168.100.1   0.996/0.514    1.954
192.168.100.126 192.168.100.127 0.984/0.965    1.053
192.168.100.127 192.168.100.1   0.996/0.529    1.896
192.168.100.127 192.168.100.126 0.984/0.992    1.024


Let ETX values settle to ~ 1.0. Then turn off for example 100.126.
Afterwards the topology table will look like this:

Source IP addr  Dest IP addr          LQ        ETX
192.168.100.1   192.168.100.126 0.592/1.000    1.689
192.168.100.1   192.168.100.127 0.541/0.992    1.862
192.168.100.127 192.168.100.1   0.996/0.529    1.896
192.168.100.127 192.168.100.126 0.984/0.992    1.024

So essentially the entries with src address 100.126 were deleted.
But the nodes 100.127 and 100.1 still keep a topology link to 100.126  
even though it is gone!


Henning and me stepped thru the src/link_set.c functions
static void olsr_delete_link_entry(struct link_entry *link)
   and

void olsr_set_link_timer(struct link_entry *link, unsigned int  
rel_timer)

olsr_set_link_timer gets actually called regularly.
olsr_delete_link_entry seems to get called once.

Nevertheless the wrong topology entries still remain.

More debugging is needed here. I am just documenting this here now,  
maybe someone else can spot the bug.

a.






More information about the Olsr-dev mailing list