Subject: [manet] AODVv2 5.5. Sequence Numbers restructuring

From: Lotte Steenbrink <[email-masked]>
Date: Wed, 4 Dec 2013 18:59:49 +0100

Hello,
following Charlie's call for comments on the AODVv2 draft, I'd like to start a discussion on 5.5 Sequence Numbers, a small section that proved to be a bit cumbersome when I wanted to implement it. (To my eyes, the general structure of the draft and specific details of particular sections are two seperate issues that should also be discussed seperately. While a complete restructuring is out of my scope (?), I'm trying to tackle small bits as I go along. )

To my mind, the wording is very hard to grasp when you're not equipped with previous knowledge from, for example, RFC3561 or the LOADng draft. It took me several E-Mails back and forth with Charlie to understand how exactly aodvv2s Sequence Numbers are supposed to work, so I've tried to restructure section 5.5 in a way that I think could be more plausible to "rookie" readers. Charlie was so kind as to smoothen out the wording.

The structure I had in mind was the following:

   <general introduction to sequence numbers>
   <explanation how loop freedom is assured>
   <explanation how seqnum is incremented properly>
   <persistent seqnum storage>

5.5.  Sequence Numbers

   Sequence Numbers allow AODVv2 routers to evaluate the freshness of
   routing information. Each AODVv2 router in the network MUST maintain one 
   single sequence number. Each RREQ and RREQ generated by an AODVv2 
   router includes its sequence number.
   Each AODVv2 router MUST make sure that its sequence number is 
   unique and monotonically increasing. This can be achieved by incrementing it
   with every RREQ or RREP it generates.

   Every router receiving a RREQ or RREP can thus use the Sequence Number
   of a RREQ or RREP as information concerning the freshness of the packet's route update:
   If the new packet's Sequence Number is lower than the one already stored in the 
   routing table, its information is considered stale.

   As a consequence, loop freedom is assured.

   An AODVv2 router increments its SeqNum as follows.  Most of
   the time, SeqNum is incremented by simply adding one (1).  But to
   increment SeqNum when it has the value of the largest possible number
   representable as a 16-bit unsigned integer (i.e., 65,535), it MUST be
   set to one (1).  In other words, the sequence number after 65,535 is
   1.

   An AODVv2 router SHOULD maintain its SeqNum in persistent storage.
   If an AODVv2 router's SeqNum is lost, it MUST take the following
   actions to avoid the danger of routing loops.  First, the AODVv2
   router MUST invalidate all route table entries, by setting
   Route.Broken for each entry.  Furthermore the AODVv2 router MUST wait
   for at least MAX_SEQNUM_LIFETIME before transmitting or
   retransmitting any AODVv2 RREQ or RREP messages.  If an AODVv2
   protocol message is received during this waiting period, the AODVv2
   router SHOULD perform normal route table entry updates, but not
   forward the message to other nodes.  If a data packet is received for
   forwarding to another destination during this waiting period, the
   AODVv2 router MUST transmit a RERR message indicating that no route
   is available.  At the end of the waiting period the AODVv2 router
   sets its SeqNum to one (1) and begins performing AODVv2 protocol
   operations again. 

Additionally, I think it would make sense to adjust the description of Route.SeqNum 
in 5.1.  Route Table Entry:

  Route.SeqNum
      The Sequence Number associated with destination of the
      route, as obtained from the last packet that updated the
      route table entry

Again, any feedback would be greatly appreciated.

With kind regards,
Lotte Steenbrink

---

From: Charlie Perkins <[email-masked]>
Date: Wed, 11 Dec 2013 11:12:11 -0800

Hello Lotte,

Thanks for your observations on the explanation for sequence numbers.
I think your suggestions read well, and I expect to incorporate them into
the next revision of the AODVv2 draft.

Regards,
Charlie P.

On 12/4/2013 9:59 AM, Lotte Steenbrink wrote:
> _______________________________________________
> manet mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/manet
>