[aodvv2-discuss] Re: Section 6.5.2/Unconfirmed routes

  • From: Lotte Steenbrink <lotte.steenbrink@xxxxxxxxxxxx>
  • To: aodvv2-discuss@xxxxxxxxxxxxx
  • Date: Thu, 11 Jun 2015 11:17:57 +0200

Hi Vicky,

Am 10.06.2015 um 21:29 schrieb Victoria Mercieca <vmercieca0@xxxxxxxxx>:

Hi Lotte,

Let me first apologise for the fact I haven't been following this very
closely. I'm just reading this one quick on my phone but if I've missed
something, just shout at me and I'll read the thread properly.

When the RREP comes back to B, B regenerates that and sends to the next hop
towards OrigAddr. If the RREP was to be forwarded like a data packet then the
unconfirmed route to OrigAddr wouldn't allow this. But we are regenerating,
and we know the next hop we should use to send the RREP towards OrigAddr. I
don't think there's a problem using this info to send a regenerated RREP?

I don't think so either, but I'm not sure if the resolution is as easy as that.
I'm not sure if I'm thinking too implementation-specific here... But in the
end, to whatever stack transporting our packets, a RREP is a data packet like
any other, so if we want to transmit it to the next hop and there's no known
route to the next hop (yet), this could end up being a problem (maybe this is
part of the “who can access the routing table” question?).
Do we allow neighbor checking to not be used? I cant remember the wording we
used, but when B receives the RREQ via A, doesnt it save A as a neighbor?

The draft says:

The RREP SHOULD include an AckReq data element in order to achieve
adjacency monitoring as described in Section 6.2.

on the other hand, it also says:

Until
bidirectionality is confirmed, the state is Unknown, and
acknowledgement of RREP messages MUST be requested.

(and now I'm confused :D)
The router B, in the example, should have a neighbor entry for A. It may not
be confirmed to be bidirectional, which is why we might request a RREP_Ack,
but we should have no problem sending a RREP to A.

I can't find any text in the draft that allows this...
Or does this link into Charlie's comment a while ago that we should have a
route installed for each neighbor AODVv2 router? We still need to add that to
the draft. Actually, those routes to neighbors, even if not known to have a
bidirectional link, would have to be set as valid routes in the routing
table, in order to regenerate the RREP to them, to request the RREP_Ack to
confirm bidirectionality! (I guess that's what you meant? Good catch!)

Pretty much... But that would mean reverting back to the state where we have no
unconfirmed routes and use halfway learned routes blindly :(
So the question is, is it ok to add a valid route to each one hop neighbor,
before we have confirmation that the link to the neighbor is bidirectional?
If bidirectionality was not then confirmed, do we blacklist the neighbor, in
which case we probably should remove the route to the neighbor? Then when
un-blacklisted, reinstall it?

That would only work with mandatory AckReq/RREP_ACKs, right?

Regards,
Lotte

Kind regards,
Vicky.

On 10 Jun 2015 19:28, "Lotte Steenbrink" <lotte.steenbrink@xxxxxxxxxxxx>
wrote:
Hi Vicky,

Am 03.06.2015 um 13:01 schrieb Victoria Mercieca <vmercieca0@xxxxxxxxx>:

Hi Lotte,

You are right, it would be better to explicitly define it, and we should
incorporate this text.


Okay. Do you want me to send you some text to integrate?

Also, while talking to a friend about AODVv2, it occurred to me that I think
unconfirmed routes could actually prevent RREPs from being delivered... Stop
me if I'm wrong here:

Say we have this (very simplified) setup:
OrigNode <-> A <-> B <-> TargNode

When B receives a RREP from TargNode, it needs to send it along towards
OrigNode. IntermediateNode has a route table entry that says A is the next
hop towards OrigNode from the RREQ that was sent before, but the route is set
to Unconfirmed, so B can't actually use this entry to send the RREP back.
Now, even if we say “Unconfirmed routes can be used to send RREPs”, we still
have a problem if there's no Neighbor checking mechanism enabled. If, for
example, I don't have a neighbor cache telling B “A (which is now set as the
recipient of our RREQ) is a next-hop neighbor, you can safely send this”,
AODVv2 will be asked for a route towards A by the network stack, and this
time we don't have the context that we're trying to send a RREP, so AODVv2
will start a route discovery for A. AckReq/RREP_Acks wouldn't help here
either because this mechanism only kicks in *after* the RREQ has ben sent
(which it can't because... see above.)

Am I missing something or is this an issue we need to address?

regards,
Lotte

Kind regards,
Vicky.

On Wed, Jun 3, 2015 at 9:39 AM, Lotte Steenbrink
<lotte.steenbrink@xxxxxxxxxxxx> wrote:
Hi all,
while implementing Unconfirmed routes, I had a bit of a hang up with section
6.5.2., which says:

If the RteMsg containing AdvRte is a RREQ, the route is not yet
confirmed. It should be stored, so that a corresponding RREP can be
sent, but should not be used to forward data. If there is already a
matching route, this new route should be saved as an additional route
using the process below, and can replace the original route when
adjacency with the next hop is confirmed.

Because there is no mention of the word Unconfirmed, I first missed this
part while searching through the Draft for cues how to implement Unconfirmed
routes...
I'm wondering, would it make sense to explicitly write down the process
hinted at above? After all, it is a routing table ,not a FIB... It could
have several entries for one route. So the process could be something like
this:

- if no other route exists and the RteMsg is a RREQ, add the entry and set
it to Unconfirmed.
- if another route exists and the RteMsg is a RREQ, add another entry and
set it to Unconfirmed
- if other route(s) exist and the RteMsg is a RREP:
- if the only other route is Unconfirmed, set it to confirmed.
- if there is an Active/Idle/Invalid route and an Unconfirmed route,
set the Unconfirmed route and expunge the old Active/Idle/Invalid route.

(maybe the third point plus subpoints could also be woven into section
6.5.1.)

Regards,
Lotte



Other related posts: