[aodvv2-discuss] Re: loop scenario

  • From: Lotte Steenbrink <lotte.steenbrink@xxxxxxxxxxxx>
  • To: Behnaz yousefi <behyousefi@xxxxxxxxx>
  • Date: Mon, 14 Mar 2016 19:09:53 +0100

Dear Ms. Yousefi,


Am 08.03.2016 um 21:03 schrieb Behnaz yousefi <behyousefi@xxxxxxxxx>:

Dear Mr. Lotte Steenbrink
Again sorry for the delay, we were busy revising our paper. You can publish 
our finding in the MANET group since our paper is under revision we will 
upload its revised version near a week on the arXiv.

Great, thanks!

We really appreciate it if you answer our previous question that whether the 
scenario we have found can happen in reality.  As we mentioned before, your 
answer will effect on our theorem since as we explained before we found that 
scenario based on some assumptions. If our assumptions don’t hold we need to 
change our paper and that’s why we would really like to get a feedback from 
you.

Oh, of course, I’m sorry I didn’t get back to you sooner. We’ve discussed your 
scenario and thought it was feasible. Based on your findings, we’ve decided to 
stop storing multiple Unconfirmed routes.

However, regarding your stated assumptions:
·n0 attempts to resend the “rreq” message when it doesn’t receive an “ack” 
from n1
·The resending procedure of the “rreq” message by n0 takes long enough that 
the “rreq” message passes through two nodes and be processed by them.

What exactly do you mean by „an „ack“ from n1“? RREQs are not acked per se– are 
you referring to a RREP (which implicitly acks the RREQ, i suppose)? Or do you 
mean that n0 didn’t see n1 re-broadcasting the RREQ and therefore re-sends the 
RREQ to n1? The latter shouldn’t happen… n1 should only re-send if the RREP 
isn’t received within RREQ_WAIT_TIME. If the RREP takes longer than 
RREQ_WAIT_TIME to arrive at n0, and n0 reacts with a RREQ retransmission, the 
loop you’ve described will form.

Out of curiosity– I don’t know much about Model Checking, so I had a hard time 
reading your paper, but I want to make sure I don’t misunderstand what you’re 
doing. The way I understand it, you didn’t implement AODVv2, but rather 
extracted a set of rules from the specification, fed those to a specialized 
model checker, and checked whether the rules allowed unwanted behavior. Is that 
correct?

 In addition, we found another loop scenario which involves resending the 
“rreq” messages and is given for a network of four nodes with the network 
topologies shown in Fig.1.


<network.jpg>
 
At first nodes are connected to each other as shown in Fig1.a.
n0 initiates a route discovery procedure for destination n3 by multicasting a 
“rreq” message to n2 with sq=2.
n2 after updating its routing table, multicast the “rreq” to its neighbors, 
n1 and n3.
n1 upon receiving the “rreq” message sent by n2 updates its routing table and 
adds a route with hop-count=2, sq=2 and next-hope=2
Consider that topology changes at this point and n1 moves into communication 
range of n0, gets connected to n0, and n2 leaves n0 communication range, gets 
disconnected from n0, which leads to network topology shown in Fig1.b.
n0, which hasn’t received an “rrep” yet, resend the “rreq” message after 
increasing its sequence number to 3.
n1 receives the new “rreq” message, with sq=3, next-hop=0 and hop-count=1, 
since it’s a better route it would be added to the routing table. Then n1 
multicast the “rreq” message to its neighbors, n2 and n3.
n2 evaluate the received message sent by n1 and adds a new route to its 
routing table with sq=3, next-hop=1 and hop-count=2 since the sequence number 
of the received message is greater than the stored one.
At this point a loop has been formed between nodes n1 and n2. This loop 
scenario and the one we mentioned before occur because the existing route has 
not been replaced by the better route, the received one. Instead the new 
route is added to the table. The new route replaces the existing one only 
when the route state of the existing route is “invalid” or the route state of 
the new route is “confirmed”.   It is been said in the protocol that when the 
route state of the existing route is “unconfirmed” and the neighbor state of 
the next-hop of the new route is “unknown”, the new route should be added to 
the table, if it’s a better route and loop free, not replace the existing one.
We believe, these loop scenarios won’t happen if the routing table only keeps 
the best and freshest routes. In other words, whenever a better route is 
discovered the existing routes which are worse than the new route are 
expunged from the routing table.

We agree. :) This problem should be fixed with the new (not yet published) 
version.


We hope are findings would be helpful.

Very helpful! Thanks again for sharing.

Best regards,
Lotte Steenbrink

We are looking forward to receive your feedback especially about our question 
as I explained earlier it means a lot to us.   

Best regards
Behnaz Yousefi
 
<network.jpg>

Other related posts: