Subject: [manet] When does a "timed route" have to be expunged?

From: "Charles E. Perkins" <[email-masked]>
Date: Sun, 02 Mar 2014 15:46:03 -0800

Hello folks,

The following language is currently found Section 6.3 of the AODVv2 draft:

     o  A route MUST be expunged if (Current_Time - Route.LastUsed) >=
           MAX_SEQNUM_LIFETIME.

     o  A route MUST be expunged if Current_Time >= Route.ExpirationTime

This is not terrible, but it seems inconsistent with the apparent meaning of
the following language in Section 8.1, which does not mandate expunging
the route:

       If Current_Time > Route.ExpirationTime, the route table entry has
       expired, and cannot be used for forwarding.

The background is that the current language was crafted so that "timed 
routes"
would be expunged when they expired, but that is probably too restrictive.
Keeping an expired route enables better comparisons against sequence 
numbers,
and so it's better to avoid expunging routes that might be useful in the 
future
until
     Current_Time - Route.LastUsed > MAX_SEQNUM_LIFETIME.

Roughly speaking, the following semantics are desired:
    o  An Active route MUST NOT be expunged.
    o  An Idle route SHOULD NOT be expunged.
    o  A route MUST be considered Expired if Current_Time >= 
Route.ExpirationTime
    o  An Expired route MAY be expunged (least recently used first).
    o  A route MUST be expunged if (Current_Time - Route.LastUsed) >=
       MAX_SEQNUM_LIFETIME.

and with the proviso that Route.ExpirationTime == MAXTIME is the usual
situation for Active and Idle routes (i.e., they do not have any specific
Expiration Time yet).

Comments on this matter are solicited, and I hope to have proposed
text within the next week or so.  However it is resolved, AODVv2 should not
mandate a lot of extra timeout management.  So, for instance, it would be
bad to update the timeout for Route.ExpirationTime every time an Active
route is used to forward another data packet.

Regards,
Charlie P.

-- 
Regards,
Charlie P.