[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