I read the following from RFC 3561 - AODV, page 11:

A destination node increments its own sequence number in two circumstances:

   -  Immediately before a node originates a route discovery, it MUST
      increment its own sequence number.  This prevents conflicts with
      previously established reverse routes towards the originator of a

   -  Immediately before a destination node originates a RREP in
      response to a RREQ, it MUST update its own sequence number to the
      maximum of its current sequence number and the destination

I don't understand how incrementing sequence numbers prevents conflicts with previously established reverse routes; why does this help? Also, what does it mean by "it MUST update its own sequence number to the maximum of its current sequence number", what does this maximum mean?

1 Answer 1


Case of RREP: When nodes receive RREQ (Route request) for a destination node, then two types of nodes can respond to it. One is the destination node itself -- in this case, it can increase the seqeunce ID. The second types of nodes are those that have an existing route to the destination node. Now, they have already saved the seq number that was generated by the destination node, when they received the route. When sending a RREP, these intermediate nodes simply copy the earlier learnt sequence number (and do not generate a new one). This way, if the destination were to send a new route, then the node that generated RREQ, when it receives the RREP, it can pick the one with the latest sequence number and ignore the ones that are stale.

Here is what the RFC says about the destination node sending RREP:

If the generating node is the destination itself, it MUST increment its own sequence number by one if the sequence number in the RREQ packet is equal to that incremented value.

Case of RREQ: Nodes also maintain reverse routes (let us say, for node X) and they would want to update the route to originator of RREQ (node X) only when they receive a new RREQ from node X. One way to do this is to let X increment the sequence number whenever it sends a RREQ.

A note on destination sequence number field in the RREQ: As per section 5.1, when originating RREQ: "Destination Sequence Number: The latest sequence number received in the past by the originator for any route towards the destination.". As per section 6.5, when processing RREQ: "Lastly, the Destination Sequene number for the requested dest is set to the maximum of the corresponding value received in the RREQ message, and the destination sequence value currently maintained by the node for the requested destination."

So, basically, settting/updating Dest Seq Number means that the sender or forwarder of RREQ is indicating that I have the information till, let us say seq 101, that was sent by the destination node. If that is not the latest, then the destination node does not bother to increase its own sequence number before sending the RREP (section 6.6.1).

  • Hi, as I read more about AODV, I encountered another question, if hobA wants to send packet to hobZ, but at the beginning hobA doesn't know the if there is any route to hobZ, then in this case what is the destination sequence number hobA sends in RREQ?
    – jolin
    Sep 14, 2013 at 22:01
  • PS: the line I read in AODV paper written by the creators of this protocol says: The source node initiates path discovery by broadcasting a route request(RREQ) packet to its neighbours. The RREQ contains the following fields: <source_addr, source_sesquence_#,broadcast_id,dest_addr,dest_sequence_#,hob_cnt>. What is this destination sequence number if as I pointed out above that originator has no idea how many hops it needs to go through to reach destination?
    – jolin
    Sep 14, 2013 at 22:05
  • @jolin, as per the AODV RFC (Section 6.1): "Immediately before a node originates a route discovery, it MUST increment its own sequence number." So, the sequence number is associated with the node. As far as I know, it is a global variable (unsigned int) stored in the AODV layer that the node increments when it needs to. So, if the current sequence number is 100 and the node needs to send a RREQ for a new destination, then it would increment the sequence number to 101 and send the RREQ. It is not attached with any host, instead it is a global parameter that gets incremented. Sep 15, 2013 at 3:15
  • Hi Manoj, thank you a lot! yes, but the RREQ has the source_sequence_# and dest_sequence_#, what is the dest_sequence_# in this case?
    – jolin
    Sep 15, 2013 at 7:37
  • @jolin I have updated the answer with this comment. The comment was too long so I had to add it to the answer. Sep 15, 2013 at 8:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.