On 13/06/2011 4:53 PM, Ben Greear wrote:
On 06/13/2011 01:01 PM, Philip Hugg wrote:
Hello Ben /all

I have attached the modified file 'topology.cc' that contains the
changes I've made
in the attempt to make OLSR more stable. Unfortunately, there are still
problems
with the OLSR but at least we are one step closer.

Tested Topologies:

1) 9 nodes inline (wireless)
n9 - n8 - n7 - n6 - n1 - n2 - n3 - n4 - n5


2) 16 nodes, in 4x4 grid (wireless)

n1 - n2 - n3 - n4
n5 - n6 - n7 - n8
n9 - 10 - 11 - 12
13 - 14 - 15 - 16

where, N1 is nei with N2, n5, n6,
N2 is nei with n1,n3,n5,n6,n7
N3 is nei with N2,n4,n6,n7,n8
...
N16 is nei with n11, n12, n15.

Topology is stable however a ping from N1 to N16 may not take the
shortest path
(n1-n6-n11-n16) which is 3 hops. Instead, it may follow path from
N1-N2-N7-N12-N16 (4-hops?).
When I re-issue the ping many times, it may take a different paths.

I'm not sure how OLSR is supposed to work exactly, but that does
sound buggy.  Could you open a bug with that test case and results?


3) Mobility test: 9 nodes inline (as above).
When moving N9 from N8 to N7 until we get

N9
|
N8 - N7 - N6 - N1 ...

In this case, OLSR asserts.

Can you open a bug with the test case and assert message?  Might help the
next person to attempt this...

These are some of the scenarios I used to find the bugs. However, I was
pulled off
this work and assigned something else. I just thought I would contribute
my findings
if anyone want to continue.

Thanks for the patch.

But, any chance you could generate a unified patch, ie: diff -u
or something like that?

That's a lot easier for me to read.

If you don't have time to open these bugs or generate a new diff,
let me know and I'll take care of it.

Thanks,
Ben

I've included file 'topology.cc.patch'. Generated by
'diff -uEw modified  original > topology.cc.patch'.
Is this OK?

I will issue a bug report for the above.

Phil.

--- xorp-1.8.3/contrib/olsr/topology.cc 2011-06-13 14:46:03.179863942 -0400
+++ xorp-1.8.3(Original)/contrib/olsr/topology.cc       2011-03-22 
17:08:58.000000000 -0400
@@ -100,8 +100,7 @@
     TcDestMap::iterator ii = _tc_destinations.find(dest_addr);
     for (; ii != _tc_destinations.end(); ii++) {
        tcid = (*ii).second;
-       if (_topology[tcid]->destination() == dest_addr &&
-        _topology[tcid]->lasthop() == origin_addr) {
+       if (_topology[tcid]->lasthop() == origin_addr) {
            is_found = true;
            break;
        }
@@ -251,7 +250,6 @@
        jj = ii++;
        OlsrTypes::TopologyID tcid = (*jj).second;
 
-       if( (*jj).first == origin_addr && _topology[tcid]->seqno() != ansn ) {  
// PRH Mar.18/11
        if (is_seq_newer(_topology[tcid]->seqno(), ansn)) {
            // 9.5, 2: If any tuple in the topology set has T_seq > ANSN,
            // then the TC message was received out of order and MUST be
@@ -262,7 +260,6 @@
            // MUST be removed from the topology set.
            delete_tc_entry(tcid);
        }
-       } // PRH Mar.18/11
     }
 
     return is_valid;
_______________________________________________
Xorp-hackers mailing list
[email protected]
http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/xorp-hackers

Reply via email to