Mobile Ad hoc Networks Working Group                          C. Perkins
Internet-Draft                                                 Futurewei
Intended status: Standards Track                             I. Chakeres
Expires: April 26, June 4, 2013                                             CenGen
                                                        October 23,
                                                        December 1, 2012

                Dynamic MANET On-demand (AODVv2) Routing
                        draft-ietf-manet-dymo-23
                        draft-ietf-manet-dymo-24

Abstract

   The Dynamic MANET On-demand (AODVv2) routing protocol is intended for
   use by mobile routers in wireless, multihop networks.  AODVv2
   determines unicast routes among AODVv2 routers within the network in
   an on-demand fashion, offering on-demand convergence in dynamic
   topologies.

Status of this Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on April 26, June 4, 2013.

Copyright Notice

   Copyright (c) 2012 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Overview . . . . . . . . . . . . . . . . . . . . . . . . . . .  4
   2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . . . .  5  4
   3.  Applicability Statement  Notational Conventions . . . . . . . . . . . . . . . . . . . .  7
   4.  Applicability Statement  . . . . . . . . . . . . . . . . . . .  9
   5.  Data Structures  . . . . . . . . . . . . . . . . . . . . . . .  8
     4.1. 10
     5.1.  Route Table Entry  . . . . . . . . . . . . . . . . . . . .  8
     4.2.  AODVv2 Message Structure 10
     5.2.  Bidirectional Connectivity During Route Discovery and Information Elements
           Blacklists . . . . . .  9
     4.3.  RteMsg-specific Protocol Elements . . . . . . . . . . . . 11
     4.4.  Route Error (RERR)-specific Protocol Elements . . . . . . 12
   5.  Detailed Operation for the Base Protocol
     5.3.  Router Clients and Client Networks . . . . . . . . . . . . 13
     5.1.
     5.4.  AODVv2 Sequence Numbers  . Packet Header Fields and Information Elements . . . 13
     5.5.  AODVv2 Sequence Numbers  . . . . . . . . . . . . . 13
       5.1.1.  Maintaining A Node's Own Sequence Number . . . . 14
     5.6.  Enabling Alternate Metrics . . . 13
       5.1.2.  Actions After OwnSeqNum Loss . . . . . . . . . . . . . 13
     5.2. 15
   6.  AODVv2 Routing Table Operations on Route Table Entries . . . . . . . . . . . 17
     6.1.  Evaluating Incoming Routing Information  . . 13
       5.2.1.  Judging Routing Information's Usefulness . . . . . . . 13
       5.2.2.  Creating or Updating 17
     6.2.  Applying Route Updates To Route Table Entries  . . . . . . . 15
       5.2.3. 19
     6.3.  Route Table Entry Timeouts . . . . . . . . . . . . . . 15
     5.3. . . 19
   7.  Routing Messages RREQ and RREP (RteMsgs) . . . . . . . . . . . 20
     7.1.  Route Discovery Retries and Buffering  . . . . . . . . . . 20
     7.2.  RteMsg Structure . 16
       5.3.1.  RREQ Creation . . . . . . . . . . . . . . . . . . . . 16
       5.3.2.  RREP Creation 21
     7.3.  RREQ Generation  . . . . . . . . . . . . . . . . . . . . 17
       5.3.3.  RteMsg Handling . 23
     7.4.  RREP Generation  . . . . . . . . . . . . . . . . . . 18
     5.4.  Route Discovery . . . 24
     7.5.  Handling a Received RteMsg . . . . . . . . . . . . . . . . 25
       7.5.1.  Additional Handling for Outgoing RREQ  . . . . . . 20
     5.5.  Route Maintenance . . 26
       7.5.2.  Additional Handling for Outgoing RREP  . . . . . . . . 27
   8.  Route Maintenance  . . . . . . . . . . . . 21
       5.5.1.  Active Next-hop Router Adjacency Monitoring . . . . . 21
       5.5.2.  Updating . . . . . 27
     8.1.  Handling Route Lifetimes During Packet Forwarding  . . 22
       5.5.3.  RERR Generation  . . . 27
     8.2.  Active Next-hop Router Adjacency Monitoring  . . . . . . . 28
     8.3.  RERR Generation  . . . . . . . . . 22
       5.5.4.  RERR Handling . . . . . . . . . . . . 28
       8.3.1.  Case 1: Undeliverable Packet . . . . . . . . 23
     5.6.  Unknown Message and TLV Types . . . . . 29
       8.3.2.  Case 2: Broken Link  . . . . . . . . . 24
     5.7.  Advertising Network Addresses . . . . . . . . 30
     8.4.  Receiving and Handling RERR Messages . . . . . . 24
     5.8.  Simple Internet Attachment . . . . . 30
   9.  Unknown Message and TLV Types  . . . . . . . . . . . 24
     5.9.  Multiple Interfaces . . . . . 31
   10. Simple Internet Attachment . . . . . . . . . . . . . . 25
     5.10. AODVv2 Control Packet/Message Generation Limits . . . . 32
   11. Multiple Interfaces  . 26
     5.11. Optional Features . . . . . . . . . . . . . . . . . . . . 26
       5.11.1. 33
   12. AODVv2 Control Packet/Message Generation Limits  . . . . . . . 33
   13. Optional Features  . . . . . . . . . . . . . . . . . . . . . . 33
     13.1. Expanding Rings Multicast  . . . . . . . . . . . . . . 26
       5.11.2. . . 34
     13.2. Intermediate RREP  . . . . . . . . . . . . . . . . . . 27
       5.11.3. . . 34
     13.3. Precursor Lists and Notifications  . . . . . . . . . . . . 34
       13.3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . 34
       13.3.2. Precursor Notification Details . . . . . . . . . . . . 35
     13.4. Multicast RREP Response to RREQ  . . . . 27
       5.11.4. Reporting Multiple Unreachable Nodes . . . . . . . . . 28
       5.11.5. 35
     13.5. RREP_ACK . . . . . . . . . . . . . . . . . . . . . . . . . 36
     13.6. Message Aggregation  . . . . . . . . . . . . . . . . . 28
       5.11.6. Adding Additional . . 36
     13.7. Added Routing Information to a RteMsg in RteMsgs . . 29
     5.12. . . . . . . . . . 36
       13.7.1. Including Added Node Information . . . . . . . . . . . 36
       13.7.2. Handling Added Node Information  . . . . . . . . . . . 37
   14. Administratively Configured Parameters and Timer Values  . 30
     5.13. . . 38
   15. IANA Considerations  . . . . . . . . . . . . . . . . . . . 33
       5.13.1. . . 41
     15.1. AODVv2 Message Types Specification . . . . . . . . . . 33
       5.13.2. . . 41
     15.2. Message and Address Block TLV Type Specification . . . 33
       5.13.3. . . 41
     15.3. Address Block TLV Specification  . . . . . . . . . . . 34

     5.14. . . 42
     15.4. Metric Type Number Allocation  . . . . . . . . . . . . . . 42
   16. Security Considerations  . . . . . . . . . . . . . . . . . 34
     5.15. . . 43
   17. Acknowledgments  . . . . . . . . . . . . . . . . . . . . . 36
   6. . . 45
   18. References . . . . . . . . . . . . . . . . . . . . . . . . . . 36
     6.1. 45
     18.1. Normative References . . . . . . . . . . . . . . . . . . . 36
     6.2. 45
     18.2. Informative References . . . . . . . . . . . . . . . . . . 37 46
   Appendix A.  Changes since the Previous Version  Example RFC 5444-compliant packet formats . . . . . . 47
     A.1.  RREQ Message Format  . . . 38
   Appendix B.  Shifting Network Prefix Advertisement Between
                AODVv2 Routers . . . . . . . . . . . . . . . . 48
     A.2.  RREP Message Format  . . . 39
   Authors' Addresses . . . . . . . . . . . . . . . . 48
     A.3.  RERR Message Format  . . . . . . . . 39

1.  Overview

   The Dynamic MANET On-demand (AODVv2) routing protocol [formerly . . . . . . . . . . . 49
     A.4.  RREP_ACK Message Format  . . . . . . . . . . . . . . . . . 50
   Appendix B.  Changes since revision ...-21.txt . . . . . . . . . . 50
   Appendix C.  Shifting Network Prefix Advertisement Between
                AODVv2 Routers  . . . . . . . . . . . . . . . . . . . 53
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 53

1.  Overview

   The Dynamic MANET On-demand (AODVv2) routing protocol [formerly named
   DYMO] enables on-demand, multihop unicast routing among AODVv2
   routers in mobile ad hod networks [MANETs][RFC2119]. [MANETs][RFC2501].  The basic
   operations of the AODVv2 protocol are route discovery and route
   maintenance.  Route discovery is performed when an AODVv2 router must
   transmit a packet towards a destination for which it does not have a
   route.  Route maintenance is performed to avoid prematurely expunging
   routes from the route table, and to avoid dropping packets, packets when a
   route being used to forward packets from the source to a destination breaks, and to avoid prematurely expunging routes from
   the route table.
   breaks.

   During route discovery, an AODVv2 router initiates flooding of multicasts a Route Request
   message (RREQ) throughout the network to find a route
   to toward a particular destination, via
   the AODVv2 router responsible for this destination.  During this hop-by-hop flooding process,  Using a hop-by-
   hop retransmission algorithm, each intermediate AODVv2 router
   receiving the RREQ message records a route
   to toward the originator.
   When the target's AODVv2 router (TargRtr) receives the RREQ, it
   records a route to toward the originator and responds with a Route Reply
   (RREP) unicast hop-by-hop toward the originating AODVv2 router.  Each
   intermediate AODVv2 router that receives the RREP creates a route to
   toward the target, and then unicasts the RREP is unicast hop-by-hop toward the
   originator.  When the originator's AODVv2 router receives the RREP,
   routes have then been established between the originating AODVv2
   router and the target AODVv2 router in both directions.

   Route maintenance consists of two operations.  In order to preserve
   routes in use,
   active routes, AODVv2 routers extend route lifetimes upon
   successfully forwarding a packet.  In order to react to changes in
   the network topology, AODVv2 routers monitor traffic being forwarded.  When a data packet is received for
   forwarding and a there is no valid route for the
   destination is not known or the route is broken, destination, then the
   AODVv2 router of the source of the packet is notified.  A notified via a Route
   Error (RERR)
   is transmitted to indicate the route to one or more affected
   destination addresses is Broken or missing.  When the source's AODVv2 message.  Each upstream router that receives the RERR, it RERR
   marks the route as broken.  Before the such an upstream AODVv2 router can
   could forward a packet to the same destination, it has would have to
   perform route discovery again for that destination.

   Similarly to AODV,

   AODVv2 uses sequence numbers to ensure assure loop freedom [Perkins99]. [Perkins99],
   similarly to AODV.  Sequence numbers enable AODVv2 routers to
   determine the temporal order of AODVv2 route discovery messages,
   thereby avoiding use of stale routing information.  Also,  Unlike AODV,
   AODVv2 uses RFC 5444 message and TLV formats.

2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   [RFC2119].

   Additionally, this

   This document also uses some terminology from [RFC5444].

   This document defines the following terminology:

   Adjacency
      A bi-directional relationship between selected bi-directional neighboring routers for the
      purpose of exchanging routing information.  Not every pair of
      neighboring routers will necessarily form an adjacency.
      Neighboring routers may form an adjacency based on various
      information or other protocols; for example, exchange of AODVv2
      routing messages, other protocols (e.g.  NDP [RFC4861] or NHDP
      [RFC6130]), or manual configuration.  Loss of a routing adjacency
      may also be based upon similar information; monitoring of
      adjacencies where packets are being forwarded is required (see
      Section 5.5.1).

   Distance (Dist) 8.2).

   AODVv2 Router
      An unsigned integer which measures IP addressable device in the distance a message or
      information element has traversed.  The minimum value of distance
      is ad-hoc network that performs the number of IP hops traversed, 0 for local information.  The
      maximum value is 254.  The value 255 is reserved to indicate that
      the distance is unknown.
      AODVv2 protocol operations specified in this document.

   AODVv2 Sequence Number (SeqNum)
      An AODVv2 Sequence Number is an unsigned integer maintained by
      each AODVv2 router.  This sequence number guarantees the temporal
      order of routing information to maintain loop-free routes.  The
      value zero (0) is reserved to indicate that the SeqNum for a
      destination address is unknown.

   Current_Time
      The current time as maintained by the AODVv2 router.

   disregard
      Ignore for further processing (see Section 5.4), and delete unless
      it is required to keep the message in the packet for purposes of
      authentication.

   Handling Router (HandlingRtr)
      HandlingRtr denotes the AODVv2 router handling an AODVv2 message.

   Incoming Link
      A link over which an AODVv2 has received a message from one of its
      adjacent routers.

   MANET
      A Mobile Ad Hoc Network as defined in [RFC2501].

   node
      An IP addressable device in the ad-hoc network.  A node may be an
      AODVv2 router, or it may be a device in the network that does not
      perform any AODVv2 protocol operations.  All nodes in this
      document are either AODVv2 Routers or else Router Clients.

   Originating Node (OrigNode)
      The Originating Node is the node that launched the application
      requiring communication with the Target Node.  If OrigNode is not
      itself an AODVv2 router, its AODVv2 router (OrigRtr) has the
      responsibility to generate a AODVv2 RREQ message on behalf of
      OrigNode when necessary to multicast a route discovery message.

   Originating Router (OrigRtr)
      The Originating Router is the AODVv2 router that serves OrigNode.
      OrigRtr generates the RREQ message to discover a route for
      TargNode.

   reactive
      A protocol operation is said to be "reactive" if it is performed
      only in reaction to specific events.  As used in this document,
      "reactive" is essentially synonymous with "on-demand".

   Router Client
      An AODVv2 router may

   Routable Unicast IP Address
      A routable unicast IP address is a unicast IP address that when
      put into the IP.DestinationAddress field is scoped sufficiently to
      be configured with forwarded by a list of other IP
      addresses and networks which correspond to other non-router nodes
      which require the services of the AODVv2 router for route
      discovery and maintenance.  An AODVv2 is always its own client, so
      that the list of client IP addresses is never empty. corresponds
      to the AODVv2 router process currently performing a calculation or
      processing a message.

   Flooding
      In this document, flooding a message refers to the process of
      delivering the message to every AODVv2 router in the network.
      This may be done according to methods specified in [RFC5148].

   Routable Unicast IP Address
      A routable unicast IP address is a unicast IP address that when
      put into the IP.SourceAddress or IP.DestinationAddress field is
      scoped sufficiently to be forwarded by a router.  Globally-scoped
      unicast router.  Globally-scoped unicast IP addresses
      and Unique Local Addresses (ULAs) [RFC6130] [RFC6549] are examples of
      routable unicast IP addresses.

   Originating Node (OrigNode)
      The originating node is the data source node; if it is not itself
      an AODVv2 router, its AODVv2 router creates a AODVv2 RREQ message
      on its behalf in an effort to flood some routing information.  The
      originating node is also referred to as a particular message's
      originator.

   Target Node (TargetNode)
      The TargetNode denotes the ultimate destination of a message.

   This Node (ThisNode)
      ThisNode denotes the AODVv2 router currently processing an AODVv2
      message.

   Route Error (RERR)
      A RERR message is used to indicate that an AODVv2 router no longer
      has does not
      have a route to toward one or more particular destinations.

   Route Reply (RREP)
      A RREP message is used to supply routing information about establish a route between the RREQ
      TargetNode to the RREQ OrigNode and OrigNode, at all the AODVv2 routers between them.

   Route Request (RREQ)
      An AODVv2 router uses a RREQ message to discover a valid route to
      a particular destination address, called the RREQ TargetNode.
      When an  An
      AODVv2 router processes processing a RREQ, it learns RREQ receives routing information on how to reach for
      the RREQ OrigNode.

   Type-Length-Value structure (TLV)
      A generic way to represent information as specified in [RFC5444].

   Unreachable Node (UnreachableNode)

   Router Client
      An UnreachableNode is AODVv2 router may be configured with a node for list of other IP
      addresses and networks which a forwarding route is
      unknown.

3.  Applicability Statement

   The correspond to other non-router nodes
      which require the services of the AODVv2 routing protocol is designed for stub (i.e., non-transit)
   or disconnected (i.e., from the Internet) mobile ad hoc networks
   (MANETs).  AODVv2 handles a wide variety of mobility patterns by
   dynamically determining routes on-demand.  AODVv2 also handles a wide
   variety of traffic patterns.  In networks with a large number of
   routers, AODVv2 is best suited for sparse traffic scenarios where any
   particular router forwards packets to only a small percentage of the
   AODVv2 routers in the network, due to the on-demand nature of for route
      discovery and route maintenance.  An AODVv2 is applicable to memory constrained devices, since little
   routing state is maintained in each AODVv2 router.  Only routing
   information related to routes between active sources and destinations
   is maintained, in contrast to proactive routing protocols always its own client, so
      that
   require routing information to all routers within the routing region
   be maintained.

   AODVv2 supports routers with multiple interfaces.  In addition to
   routing for their local processes, AODVv2 routers can also route on
   behalf list of other non-routing nodes (i.e., "hosts"), reachable via
   those interfaces.  Any such client IP addresses is never empty.

   Sequence Number (SeqNum)
      Same as AODVv2 Sequence Number.

   Target Node (TargNode)
      The Target Node denotes the node for which a route is not itself an needed.

   Target Router (TargRtr)
      The TargetRtr denotes the AODVv2 router
   SHOULD NOT be served by more than one AODVv2 router.  Although AODVv2
   is closely related which serves TargNode.

   Type-Length-Value structure (TLV)
      A generic way to AODV [RFC3561], and has some of the features of
   DSR [RFC4728], AODVv2 represent information as specified in [RFC5444].

   Unreachable Node (UnreachableNode)
      An UnreachableNode is not interoperable with either of those other
   two protocols.

   AODVv2 routers perform route discovery to find a route to a
   particular destination.  Therefore, AODVv2 routers MUST must be
   configured to respond to RREQs node for which a certain set of addresses.  When
   AODVv2 is the only protocol interacting with the forwarding table,
   AODVv2 MAY be configured to perform route discovery for all unknown
   unicast destinations.

   At all times within an AODVv2 routing region, only one AODVv2 router
   SHOULD is
      unknown.

   valid route
      A route that can be serve any routing client.  The coordination among multiple
   AODVv2 routers to distribute routing information correctly used for forwarding; in other words a
   shared address (i.e. an address route
      that is advertised and can be reached
   via multiple AODVv2 routers) is not described Broken or Expired.

3.  Notational Conventions

   This document uses the conventions found in this document.  The
   AODVv2 router operation of shifting responsibility for a routing
   client from one AODVv2 router Table 1 to another is mentioned in Appendix B
   Each AODVv2 router, if serving router clients other than itself, is
   configured with describe
   information about in the IP addresses of its clients.
   There is no requirement that an AODVv2 router have information about fields from [RFC5444].

    +--------------------+-------------------------------------------+
    |      Notation      |    Information Location and/or Meaning    |
    +--------------------+-------------------------------------------+
    |   Route[DestAddr]  |    A route table entry towards DestAddr   |
    | Route[Addr]{field} |       A field in a route table entry      |
    |         --         |                     --                    |
    |    RREQ.{field}    |               Field in RREQ               |
    |    RREP.{field}    |               Field in RREP               |
    |    RERR.{field}    |               Field in RERR               |
    |         --         |                     --                    |
    |       MsgHdr       |         the router clients of other AODVv2 routers.  Address assignment
   procedures are entirely out of scope RFC5444 Message Header        |
    |       MsgTLV       |           an RFC5444 Message TLV          |
    |    MetricTypeTLV   |    MetricType MsgTLV for AODVv2.

   AODVv2 only utilizes bidirectional links.  In the case of possible
   unidirectional links, either blacklists (see Section 5.13.2) or other
   means (e.g. adjacency establishment with only neighboring routers
   that have bidirectional communication as indicated by NHDP [RFC6130])
   of ensuring and monitoring bi-directionality is recommended.
   Otherwise, persistent packet loss could occur. Metric AddrTLV   |
    |         MAL        |          MsgHdr.<msg-addr-length>         |
    |         --         |                     --                    |
    |       AddrBlk      |          an RFC5444 address block         |
    |     AddrBlk[1]     |     The routing algorithm first address slot in AODVv2 may be operated at layers other than
   the network layer, using layer-appropriate addresses. AddrBlk     |
    |     AddrBlk[N]     |      The routing
   algorithm makes of some persistent state; if there is no persistent
   storage available for this state, recovery can exact a performance
   penalty Nth address slot in case of AODVv2 router reboots.

4.  Data Structures

4.1.  Route Table Entry

   The route table entry is a conceptual data structure.
   Implementations may use any internal representation so long as it
   provides access to the same information as specified below.

   Conceptually, a route table entry has the following fields:

   Route.Address
      The (host or network) destination AddrBlk      |
    |  AddrBlk[OrigNode] |                 AddrBlk[1]                |
    |  AddrBlk[TargNode] |                 AddrBlk[2]                |
    |       AddrTLV      |        an RFC5444 address of the node(s)
      associated with the routing table entry.

   Route.Prefix
      The value is the length of the netmask/prefix.  If the value of
      the Route.Prefix is different than block TLV       |
    |     AddrTLV[1]     |         the length of addresses first item in AddrTLV         |
    |     AddrTLV[N]     |          the
      address family used by the AODVv2 routers, Nth item in AddrTLV          |
    |  AddrTLV[OrigNode] |                 AddrTLV[1]                |
    |  AddrTLV[TargNode] |                 AddrTLV[2]                |
    |     HopCountTLV    |    Metric8 AddrTLV when MetricTypeTLV=3   |
    |     Metric8TLV     |              Metric8 AddrTLV              |
    |      SeqNumTLV     | Sequence Number TLV for AddrBlk addresses |
    |     RteAddrBlk     |     the associated main address
      is a routing prefix, rather than a host address.

   Route.SeqNum
      The AODVv2 SeqNum associated with block in a route table entry.

   Route.NextHopAddress
      An IP address of the adjacent AODVv2 RteMsg    |
    |    RteSeqNumTLV    | Sequence Numbers for RteAddrBlk addresses |
    |   UnreachAddrBlk   |      Unreachable Node AddrBlk in RERR     |
    |         --         |                     --                    |
    |       OrigRtr      |          RREQ Originating Router          |
    |      OrigNode      |              Originating Node             |
    |      RREQ_Gen      |     AODVv2 router on the path toward the
      Route.Address.

   Route.NextHopInterface
      The interface used to send packets toward the Route.Address.

   Route.Broken
      A flag indicating whether this Route is broken.  This flag is set originating an RREQ     |
    |      RREP_Gen      |    AODVv2 router responding to true if the next-hop becomes unreachable an RREQ    |
    |       RteMsg       |            either RREQ or in response to
      processing to RREP            |
    |     RteMsg_Orig    |           Originator of a RERR (see Section 5.5.4). RteMsg          |
    |     HandlingRtr    |              Handling Router              |
    |       TargRtr      |               Target Router               |
    |      TargNode      |                Target Node                |
    |   UnreachableNode  |              Unreachable Node             |
    +--------------------+-------------------------------------------+

                                  Table 1

4.  Applicability Statement

   The following field is optional:

   Route.Dist
      A dimensionless metric indicating the distance traversed before
      reaching the Route.Address node.

   Not including optional information may cause performance degradation,
   but it will not prohibit the AODVv2 routing protocol is designed for stub (i.e., non-transit)
   or disconnected (i.e., from discovering valid routes. the Internet) mobile ad hoc networks
   (MANETs).  AODVv2 handles a wide variety of mobility patterns by
   determining routes on-demand.  AODVv2 also handles a wide variety of
   traffic patterns.  In addition networks with a large number of routers, AODVv2
   is best suited for relatively sparse traffic scenarios where any
   particular router forwards packets to only a route table data structure, each route table entry
   may have several timers associated with small percentage of the information.  Timers and
   timeouts are discussed in Section 5.2.3.

4.2.
   AODVv2 Message Structure routers in the network, due to the on-demand nature of route
   discovery and Information Elements

   IP Protocol Number 138 (manet) has been reserved for MANET protocols
   [RFC5498].  In addition route maintenance.

   Although AODVv2 is closely related to using this IP protocol number, AODV [RFC3561], and has some of
   the features of DSR [RFC4728], AODVv2 may
   use UDP at destination port 269 (manet) [RFC5498]. is not interoperable with
   either of those other two protocols.

   AODVv2 messages are transmitted is applicable to memory constrained devices, since little
   routing state is maintained in packets that conform each AODVv2 router.  Only routing
   information related to the
   generalized packet routes between active sources and message format as described in [RFC5444].
   Here destinations
   is a brief description of the format.

      A packet formatted according maintained, in contrast to RFC5444 contains zero or more
      messages.

      A message contains a message header, message TLV block, and zero
      or more address blocks.

      Each of proactive routing protocols that
   require routing information to all routers within the address blocks may MANET be
   maintained.

   AODVv2 supports routers with multiple interfaces, as long as each
   interface has its own IP address.  In addition to routing for their
   local processes, AODVv2 routers can also have route on behalf of other
   non-routing nodes (i.e., "hosts", or, in this document, "clients"),
   reachable via those interfaces.  Any such node which is not itself an associated address TLV
      block.

   All
   AODVv2 messages router SHOULD NOT be sent using the IP protocol number (138)
   reserved for manet protocols [RFC5498]; or served by more than one AODVv2 router.

   Multi-homing is difficult unless the UDP destination port
   (269) reserved for manet protocols [RFC5498] and IP protocol sequence number
   for UDP.

   Most AODVv2 messages are sent with is expanded to
   include the IP destination address set as well as OwnSeqNum.  Otherwise, comparing
   sequence numbers would not work to evaluate freshness.  Even when the link-local multicast
   IP address LL-MANET-Routers [RFC5498] unless
   otherwise specified.  Therefore, all AODVv2 routers SHOULD subscribe
   to LL-MANET-Routers [RFC5498] to receiving AODVv2 messages.  Note
   that multicast packets MAY be sent via unicast.  For example, this
   may occur for certain link-types (non broadcast mediums), for
   manually configured router adjacencies, or in order to improve
   robustness.

   When describing AODVv2 protocol messages, it is necessary to refer included, there isn't a good way to
   fields in several distinct parts of the overall packet.  These
   locations include the compare sequence
   numbers from different IP header, addresses, but at least a handling node can
   determine whether the UDP header, and fields from
   [RFC5444].  This document uses two given sequence numbers are comparable.  If
   the notational conventions found in route table 1.

             +---------------------------+-------------------+
             |    Information Location   | Notational Prefix |
             +---------------------------+-------------------+
             |         IP header         |        IP.        |
             |   RFC5444 message header  |      MsgHdr.      |
             |    RFC5444 message TLV    |      MsgTLV.      |
             |   RFC5444 address blocks  |      AddBlk.      |
             | RFC5444 address block TLV |      AddTLV.      |
             +---------------------------+-------------------+

                                  Table 1

   The IPv4 TTL (IPv6 Hop Limit) field can store multiple routes for all packets containing the same destination,
   then multi-homing can work with sequence numbers augmented by IP
   addresses.

   AODVv2
   messages is set routers perform route discovery to 255.  If find a packet is received with route toward a value other
   than 255, any
   particular destination.  Therefore, AODVv2 message contained in the packet routers MUST must be ignored
   by AODVv2.  This mechanism, known as "The Generalized TTL Security
   Mechanism" (GTSM) [RFC5082] helps
   configured to ensure that packets have not
   traversed any intermediate routers.

   The length of an address (32 bits for IPv4 and 128 bits respond to RREQs for IPv6)
   inside an a certain set of addresses.  When
   AODVv2 message depends on is the msg-addr-length (MAL) in only protocol interacting with the
   msg-header, as specified in [RFC5444].

   IP packets containing forwarding table,
   AODVv2 protocol messages SHOULD MAY be given
   priority queuing and channel access. configured to perform route discovery for all unknown
   unicast destinations.

   At all times within an AODVv2 messages require the following information:

   IP.SourceAddress MANET, only one AODVv2 router SHOULD be
   serve any particular routing client.  The IP coordination among multiple
   AODVv2 routers to distribute routing information correctly for a
   shared address of the node currently sending this packet.  This
      field (i.e. an address that is generally filled automatically by the operating system advertised and should can be reached
   via multiple AODVv2 routers) is not require special handling.

   IP.DestinationAddress described in this document.  The IP address
   AODVv2 router operation of the packet destination.  For multicast messages
      the IP.DestinationAddress is set shifting responsibility for a routing
   client from one AODVv2 router to LL-MANET-Routers [RFC5498].
      For unicast messages the IP.DestinationAddress another is set to the
      NextHopAddress toward mentioned in Appendix C.
   Each AODVv2 router, if serving router clients other than itself, is
   configured with information about the TargetNode.

   MsgHdr.HopLimit
      The remaining number IP addresses of hops this message is allowed to traverse.
      If an AODVv2 message within a RFC 5444 packet has exhausted its
      hop limit, then it should be removed from the packet.

4.3.  RteMsg-specific Protocol Elements clients.
   No AODVv2 message types RREQ and RREP are denoted as Routing Messages
   (RteMsgs) and used router is required to flood routing information.  RREQ and RREP have
   similar information and function, but have slightly different
   handling rules.  The main difference between the two messages is that
   RREQ messages are generally broadcast to solicit a RREP, and
   conversely a RREP is about the unicast response to RREQ.  RteMsg creation
   relationship between any other AODVv2 router and handling its router clients.
   Address assignment procedures are described in Section 5.3.

   Unicast entirely out of scope for AODVv2.

   AODVv2 RteMsgs only utilizes bidirectional links.  In the case of possible
   unidirectional links, either blacklists (see Section 5.2) or other
   means (e.g.  RREP) unless otherwise specified are
   sent adjacency establishment with the IP destination set to the Route.NextHopAddress only neighboring routers
   that have bidirectional communication as indicated by NHDP [RFC6130])
   of assuring and monitoring bi-directionality is recommended.
   Otherwise, persistent packet loss or persistent protocol failures
   could occur.  The Cost(L) of bidirectional link L may depend upon the
   route to
   direction across the TargetNode.

   A RteMsg REQUIRES link for which the following information cost is measured.

   The routing algorithm in addition to AODVv2 may be operated at layers other than
   the fields
   indicated in Section 4.2:

   AddBlk.TargetNode.Address network layer, using layer-appropriate addresses.  The IP address of the message TargetNode.  In a RREQ the IP
      address routing
   algorithm makes of the message TargetNode some persistent state; if there is the destination address no persistent
   storage available for
      which this state, recovery can impose a performance
   penalty in case of AODVv2 router reboots.

5.  Data Structures

5.1.  Route Table Entry

   The route discovery table entry is being performed.  In a RREP conceptual data structure.
   Implementations may use any internal representation so long as it
   provides access to the
      TargetNode is same information as specified below.

   Conceptually, a route table entry has the RREQ OrigNode address. following fields:

   Route.Address
      The TargetNode (host or network) destination address
      is of the node(s)
      associated with the first address in a routing message.

   AddBlk.OrigNode.Address table entry

   Route.PfxLen
      The IP address value is the length of the originator and its associated prefix length.
      In a RREQ netmask/prefix.  If the OrigNode is value of
      the source's address Route.PfxLen is nonzero and prefix.  In a
      RREP different than the OrigNode is length of
      addresses in the RREQ TargetNode's address and prefix for
      which a RREP is being generated.  This address is the second
      address in the message for RREQ.

   OrigNode.AddTLV.SeqNum
      The AODVv2 sequence number of family used by the originator's AODVv2 router.

   A RteMsg may optionally include routers, the following information:

   TargetNode.AddTLV.SeqNum
      associated address is a routing prefix, rather than a host
      address.

   Route.SeqNum
      The last known AODVv2 sequence number of the TargetNode.

   AddBlk.AdditionalNode.Address
      The SeqNum associated with a route table entry

   Route.NextHopAddress
      An IP address of an additional node that can be reached via the adjacent AODVv2 router adding this information.  Each
      AdditionalNode.Address MUST include its prefix.  Each
      AdditionalNode.Address MUST also have an associated Node.SeqNum in on the address TLV block.

   AdditionalNode.AddTLV.SeqNum
      The AODVv2 sequence number associated with this routing
      information.

   OrigNode.AddTLV.Dist
      A metric of path toward the distance
      Route.Address

   Route.NextHopInterface
      The interface used to reach send packets toward the associated OrigNode.Address.
      This field is incremented by at least one Route.Address

   Route.LastUsed
      The time that this route was last used

   Route.ExpirationTime
      The time at each intermediate
      AODVv2 router.

   AdditionalNode.AddTLV.Dist which this route must expire

   Route.Broken
      A metric of the distance to reach the associated
      AdditionalNode.Address.  This field is incremented by at least one
      at each intermediate AODVv2 router.

4.4. flag indicating whether this Route Error (RERR)-specific Protocol Elements

   A RERR message is used broken.  This flag is set
      to flood true if the information that a route is not
   available for one next-hop becomes unreachable or more particular addresses.

   RERR creation and handling are described in Section 5.5.

   A response to
      processing to a RERR requires (see Section 8.4)

   Route.MetricType
      The type of the following information in addition to metric for the field
   indicated in Section 4.2:

   AddBlk.UnreachableNode.Address route towards Route.Address

   Route.Metric
      The address cost of an UnreachableNode and its associated prefix
      length.  Multiple unreachable addresses the route towards Route.Address

   A route table entry (i.e., a route) may be included in a RERR.

   A Route Error may optionally include one of the following information:

   UnreachableNode.AddTLV.SeqNum
      The last known AODVv2
   states:

   Active
      An Active route is in current use for forwarding packets

   Idle
      An Idle route can be used for forwarding packets, even though it
      is not in current use

   Expired
      After a route has been idle for too long, it expires, and may no
      longer be used for forwarding packets

   Broken
      A route marked as Broken cannot be used for forwarding packets but
      still has valid destination sequence number information.

   Timed
      The expiration of a Timed route is controlled by the
      Route.ExpirationTime time of the unreachable node.  If route table entry, not
      MAX_IDLETIME.  Until that time, a SeqNum Timed route can be used for
      forwarding packets.  Afterwards, the route must be Expired (or
      expunged).

   The route's state determines the operations that can be performed on
   the route table entry.  During use, an address Active route is zero (0) or not included, it maintained
   continuously by AODVv2 and is assumed considered to be unknown.  This case occurs when a node receives remain active as long as
   it is used at least once during every ACTIVE_INTERVAL.  When a message to
      forward to route
   is no longer Active, it becomes an Idle route.  After a destination route remains
   Idle for which MAX_IDLETIME, it does becomes an Expired route; after that, the
   route is not have any
      information in its routing table.

5.  Detailed Operation used for forwarding, but the Base Protocol

5.1.  AODVv2 Sequence Numbers

   AODVv2 sequence numbers allow AODVv2 routers to judge the freshness
   of routing number information and consequently ensure loop freedom.

5.1.1.  Maintaining A Node's Own Sequence Number

   AODVv2 requires that each AODVv2 router in
   can be maintained until the network maintain its
   own AODVv2 destination sequence number (OwnSeqNum).  OwnSeqNum a 16-bit unsigned
   integer.  An AODVv2 router increments its OwnSeqNum under has had no
   updates for MAX_SEQNUM_LIFETIME.  After MAX_SEQNUM_LIFETIME, old
   sequence number information is considered no longer valuable and the
   circumstances described in Section 5.3.

   Incrementing an OwnSeqNum whose value
   route is expunged.

   MAX_SEQNUM_LIFETIME is the largest largest possible
   number representable as time after a 16-bit unsigned integer (i.e., 65,535), reboot during which an AODVv2
   router MUST be set to one (1).  In NOT transmit any routing messages.  Thus, if all other words,
   AODVv2 routers expunge routes to the sequence number rebooted router after
   65,535 is 1.

5.1.2.  Actions After OwnSeqNum Loss

   An that time
   interval, the rebooted AODVv2 router SHOULD maintain its own router's sequence number in
   persistent storage.

   If an AODVv2 router's OwnSeqNum is lost, it MUST take certain actions
   to avoid creating routing loops.  To prevent this possibility after
   OwnSeqNum loss an will not be
   considered stale by any other AODVv2 router MUST wait for at least
   ROUTE_DELETE_TIMEOUT before fully participating in the AODVv2 routing
   protocol.  If an AODVv2 protocol message is received during this
   waiting period, MANET.

   When the AODVv2 router SHOULD perform normal route table
   entry updates but MUST NOT transmit or retransmit any AODVv2 RREQ or
   RREP messages.  If link to a data packet route's next hop is received for forwarding to
   another destination during this waiting period, broken, the AODVv2 router
   MUST transmit a RERR message indicating that this route is not
   available marked as
   being Broken, and reset its waiting timeout.  At the end route may no longer be used.

5.2.  Bidirectional Connectivity During Route Discovery and Blacklists

   To avoid repeated failure of the waiting
   period the Route Discovery, an AODVv2 router sets its OwnSeqNum to one (1) and begin
   participating.

   The longest a node need wait is ROUTE_SEQNUM_AGE_MAX_TIMEOUT.  At the
   end of the maximum waiting period
   (HandlingRtr) handling a node SHOULD set its OwnSeqNum RREP message MAY attempt to
   one (1) and begins participating.

5.2. verify
   connectivity to the next upstream router towards AODVv2 Routing Table Operations

5.2.1.  Judging Routing Information's Usefulness

   Given a route table entry (Route.SeqNum, Route.Dist, and
   Route.Broken) and incoming routing information for a particular
   destination in a RteMsg (Node.SeqNum, Node.Dist, and RteMsg router
   originating an RREQ message, by including the Unicast Response
   Request message
   type - RREQ/RREP), TLV (see Section 15.2) in the incoming routing information is classified as
   follows:

   1. Stale (Node.SeqNum < Route.SeqNum) RREP.  Any unicast
   packet will satisfy the Response Request, for example an ICMP REPLY
   message.  If Node.SeqNum < Route.SeqNum (using signed 16-bit arithmetic) the
      incoming information is stale.  Using stale routing information is
      not allowed, since that might result verification fails, HandlingRtr SHOULD put the
   upstream neighbor in routing loops.

   2. Not safe against loops
      If Node.SeqNum == Route.SeqNum, additional information MUST a blacklist.  RREQs received from a blacklisted
   node SHOULD NOT be
      examined.  If Route.Dist or Node.Dist is unknown or zero (0), or
      if Node.Dist > Route.Dist + 1, then retransmitted by HandlingRtr.  However, the incoming information is
      not guaranteed to prevent routing loops.  Using such incoming
      routing information is
   upstream neighbor should not allowed. be permanently blacklisted; after a
   certain time (MAX_BLACKLIST_TIME), it should once again be considered
   as a viable upstream neighbor for route discovery operations.

   For this purpose, a list of blacklisted nodes along with their time
   of removal should be maintained:

   BlacklistNode
      The following pseudocode is
      offered to indicate IP address of the logical condition under node that did not verify bidirectional
      connectivity.

   BlacklistRmTime
      The time at which BlacklistNode will be removed from the incoming
      information is not guaranteed
      blacklist.

5.3.  Router Clients and Client Networks

   An AODVv2 router may offer routing services to protect against loops.

      (Node.SeqNum == Route.SeqNum) AND
      ((Node.Dist > Route.Dist + 1) OR
       (Route.Dist is unknown) OR (Node.Dist other nodes that are
   not AODVv2 routers.  The AODVv2 Sequence Number is unknown))

   3. Offers no improvement
      In case of known equal SeqNum, (by definition)
   the information is considered worse
      than same for the existing route table information in multiple cases: (case
      i) if Node.Dist > Route.Dist (it is AODVv2 router and each of its clients.

   For this purpose, a more expensive route) AND
      Route.Broken == false; (case ii) if Node.Dist == Route.Dist (equal
      distance route) AND Route.Broken == false AND this RteMsg is a
      RREQ.  Such RREQs offer no improvement and SHOULD NOT list of IP addresses nodes along with relevant
   prefixes must be
      retransmitted.  Updating route table entries using such incoming
      routing information is not allowed.

      ((Node.SeqNum == Route.SeqNum) AND
          (((Node.Dist > Route.Dist) AND (Route.Broken == false)) OR
            ((Node.Dist == Route.Dist) AND
             (RteMsg is RREQ) AND (Route.Broken == false))))

   4. Offers improvement
      Incoming routing information that does not match any configured on each AODVv2:

   Client IP address
      The IP address of the above
      criteria is loop-free and better than the existing node that requires routing table
      information.  We provide service from the
      AODVv2 router.

   Client Prefix Length
      The length of the following pseudo-code to determine
      whether incoming routing information should be used to update an
      existing route table entry.

      (/* signed 16-bit arithmetic */ Node.SeqNum - Route.SeqNum > 0) OR
      ((Node.SeqNum == Route.SeqNum) AND
          [(Node.Dist < Route.Dist) OR
          ((Route.Broken == true) AND (Node.Dist <= Route.Dist + 1)) OR
          ((RteMsg is RREP) AND (Node.Dist == Route.Dist)]

5.2.2.  Creating or Updating Route Table Entries

   Each route table entry is populated prefix associated with the following information:

   1.  the Route.Address is set to Node.Address,

   2. client IP
      address.

   If the Route.Prefix Client Prefix Length is set to the Node.Prefix.

   3. not the Route.SeqNum is set to full length of the Node.SeqNum,

   4. Client IP
   address, then the Route.NextHopAddress prefix defines a Client Network.  If an AODVv2
   router is set configured to serve a Client Network, then the IP.SourceAddress (i.e., AODVv2
   router MUST serve every node that has an address of within the node that last transmitted range
   defined by the RteMsg packet)

   5. routing prefix of the Route.NextHopInterface Client Network.  The list of
   Routing Clients for an AODVv2 router is set to the interface on which the
       incoming never empty, since an AODVv2 packet was received,

   6.  the Route.Broken flag
   router is set to false,

   7.  if known, always its own client as well.

5.4.  AODVv2 Packet Header Fields and Information Elements

   In its default mode of operation, AODVv2 uses the Route.Dist is set UDP port 269
   [RFC5498] to the Node.Dist,

   The timer carry protocol packets.  In addition, IP Protocol Number
   138 has been reserved for MANET protocols [RFC5498].  Most AODVv2
   messages are sent with the minimum delete timeout (ROUTE_AGE_MIN) is IP destination address set to
   ROUTE_AGE_MIN_TIMEOUT.  The timer for the maximum delete timeout
   (ROUTE_SEQNUM_AGE_MAX) is set link-
   local multicast address LL-MANET-Routers [RFC5498] unless otherwise
   specified.  Therefore, all AODVv2 routers MUST subscribe to Node.AddTLV.VALIDITY_TIME [RFC5497]
   if included; otherwise, ROUTE_SEQNUM_AGE_MAX is set LL-MANET-
   Routers [RFC5498] to
   ROUTE_SEQNUM_AGE_MAX_TIMEOUT.  The usage of these timers and others
   are described receiving AODVv2 messages.  In order to reduce
   multicast overhead, retransmitting multicast packets in Section 5.2.3.

   With these assignments MANETs SHOULD
   be done according to the route table entry, a route has been
   created and the Route.Forwarding flag set.  Afterward, the route can methods specified in [RFC6621].  AODVv2 does not
   specify which method should be used to send any buffered data packets and restrict the set of AODVv2
   routers that have the responsibility to forward any incoming
   data retransmit multicast packets.
   Note that multicast packets MAY be sent via unicast.  For example,
   this may occur for Route.Address.  This route also fulfills any
   outstanding route discovery (RREQ) attempts certain link-types (non-broadcast media), for Node.Address.

5.2.3.  Route Table Entry Timeouts

5.2.3.1.  Minimum Delete Timeout (ROUTE_AGE_MIN)

   When an AODVv2
   manually configured router transmits adjacencies, or in order to improve
   robustness.

   The IPv4 TTL (IPv6 Hop Limit) field for all packets containing AODVv2
   messages is set to 255.  If a RteMsg, packet is received with a value other
   than 255, any AODVv2 routers expect message contained in the transmitting AODVv2 router packet MUST be
   disregarded by AODVv2.  This mechanism, known as "The Generalized TTL
   Security Mechanism" (GTSM) [RFC5082] helps to assure that packets
   have a forwarding route to the
   RteMsg originator.  A route table entry not traversed any intermediate routers.

   IP packets containing AODVv2 protocol messages SHOULD be kept given
   priority queuing and channel access.

   AODVv2 messages are transmitted in the route
   table for at least ROUTE_AGE_MIN after it has been updated.  Failure packets that conform to maintain the route table entry might result packet
   and message format described in lost messages/
   packets, or several duplicate messages.

   After the ROUTE_AGE_MIN timeout a route can safely be deleted.

5.2.3.2.  Maximum Sequence Number Delete Timeout (ROUTE_SEQNUM_AGE_MAX)

   Sequence number information for route table entries [RFC5444].  Here is time
   sensitive, and MUST be deleted after a time in order to ensure loop-
   free routing.

   After brief
   description of the ROUTE_SEQNUM_AGE_MAX timeout a route's sequence number
   information MUST be discarded.

5.2.3.3.  Recently Used Timeout (ROUTE_USED)

   When a route is used to forward data packets, this timer is set format.

      A packet formatted according to
   expire after ROUTE_USED_TIMEOUT, as discussed in Section 5.5.2. RFC5444 contains zero or more
      messages.

      A message contains a message header, message TLV block, and zero
      or more address blocks.

      Each address block may also have associated TLV blocks.

   If a route has packet contains only a single AODVv2 message and no packet TLVs,
   it need not been used recently, then include a timer packet-header [RFC5444].  The length of an
   address (32 bits for IPv4 and 128 bits for ROUTE_DELETE IPv6) inside an AODVv2
   message is set to ROUTE_DELETE_TIMEOUT.

5.2.3.4.  Delete Information Timeout (ROUTE_DELETE)

   As time progresses indicated by the likelihood that old routing information is
   useful decreases, especially if msg-addr-length (MAL) in the network nodes msg-header,
   as specified in [RFC5444].

   When multiple messages are mobile.
   Therefore, old information SHOULD be deleted.

   After the ROUTE_DELETE timeout if aggregated into a forwarding route exists it SHOULD
   be removed, single packet according
   to RFC 5444 formatting, and the routing table entry SHOULD aggregation of messages is also be deleted.

5.3.  Routing Messages

5.3.1.  RREQ Creation

   Before an AODVv2 router creates a RREQ
   authenticated (e.g., with IPsec), it SHOULD increment its
   OwnSeqNum by one (1) according becomes unfeasible to delete
   individual messages.  In such cases, instead of deleting individual
   messages, they are maintained in the rules specified aggregation of messages, but
   simply ignored for further processing.  In such cases where
   individual messages cannot be deleted, in Section 5.1.
   Incrementing OwnSeqNum will ensure that all nodes with existing
   routing information will consider this new information preferable to
   existing routing table information.  If document "disregarded"
   means "ignored".  Otherwise, any such "disregarded" AODVv2 messages
   SHOULD be deleted from the aggregated messages in the RFC 5444
   packet.

5.5.  AODVv2 Sequence Numbers

   AODVv2 sequence number is not
   incremented, certain numbers allow AODVv2 routers might not consider this
   information preferable, if they have existing better routing
   information.

   First, ThisNode adds the AddBlk.TargetNode.Address to evaluate the RREQ; the
   unicast IP Destination Address for which a forwarding route does not
   exist.

   If a previous value
   freshness of the TargetNode.SeqNum is known (from a routing
   table entry using longest-prefix matching), it SHOULD be placed in
   TargetNode.AddTLV.SeqNum in all but information.  Proper maintenance of sequence
   numbers assures that the last RREQ attempt.  If a
   TargetNode.SeqNum is not included, it is assumed to be unknown destination sequence number value stored by
   handling nodes.  This operation ensures that no
   intermediate AODVv2 routers reply, and ensures that is monotonically increasing along any
   path from any source to the TargetNode's destination.  As a consequence, loop
   freedom is assured.

   Each AODVv2 router
   increments in the network MUST maintain its own sequence number.

   Next, ThisNode adds AddBlk.OrigNode.Address,
   number (OwnSeqNum, a 16-bit unsigned integer).  An AODVv2 router
   increments its prefix, and the
   OrigNode.AddTLV.SeqNum (OwnSeqNum) to OwnSeqNum as follows.  Most of the RteMsg.

   The OrigNode.Address time, OwnSeqNum is
   incremented by simply adding one (1).  But to increment OwnSeqNum
   when it has the address value of the source for which this
   AODVv2 router is initiating this route discovery.  The
   OrigNode.Address MUST be largest largest possible number
   representable as a unicast address.  This information will 16-bit unsigned integer (i.e., 65,535), it MUST be
   used by nodes
   set to create a route toward one (1).  In other words, the OrigNode, enabling
   delivery of a RREP, and eventually used for proper forwarding of data
   packets. sequence number after 65,535 is
   1.

   An AODVv2 router SHOULD maintain OwnSeqNum in persistent storage.  If OrigNode.Dist
   an AODVv2 router's OwnSeqNum is included lost, it is set to a number, greater than zero
   (0), representing MUST take the distance between OrigNode and ThisNode.

   The MsgHdr.HopLimit SHOULD be set following
   actions to MSG_HOPLIMIT.

5.3.2.  RREP Creation avoid the danger of routing loops.  First, the AddBlk.TargetNode.Address is added to AODVv2
   router MUST invalidate all route table entries, by setting
   Route.Broken for each entry.  Furthermore the RREP.  The
   TargetNode 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 the ultimate destination of received during this RREP; the RREQ
   OrigNode.Address.

   Next, AddBlk.OrigNode.Address and prefix are added to waiting period, the RREP.  The
   AddBlk.OrigNode.Address AODVv2
   router SHOULD perform normal route table entry updates.  If a data
   packet is received for forwarding to another destination during this
   waiting period, the RREQ TargetNode.Address.  The
   AddBlk.OrigNode.Address AODVv2 router MUST be transmit a unicast IP address.  ThisNode
   SHOULD advertise RERR message
   indicating that no route is available.  At the largest known prefix containing
   AddBlk.OrigNode.Address.

   When end of the waiting
   period the RteMsg TargetNode's AODVv2 router creates a RREP, if the
   TargetNode.SeqNum was not included in the RREQ, ThisNode MUST
   increment sets its OwnSeqNum by to one (1) according and begins
   performing AODVv2 protocol functions again.

5.6.  Enabling Alternate Metrics

   Route selection in AODVv2 MANETs depends upon associating metric
   information with each route table entry.  When presented with
   candidate route update information, deciding whether to use the rules specified
   in Section 5.1.

   If TargetNode.SeqNum was included in
   update involves evaluating the RteMsg and TargetNode.SeqNum
   - OwnSeqNum < 0 (using signed 16-bit arithmetic), OwnSeqNum SHOULD be
   incremented by one (1) according to metric.  Some applications may require
   the rules specified in
   Section 5.1.

   If TargetNode.SeqNum is included in consideration of metric information other than Hop Count, which
   has traditionally been the RteMsg and TargetNode.SeqNum
   == OwnSeqNum (using signed 16-bit arithmetic) and OrigNode.Dist will
   not be included default metric associated with routes in
   MANET.  In fact, it is well known that reliance on Hop Count can
   cause selection of the RREP being generated, OwnSeqNum SHOULD be
   incremented by one (1) according to the rules specified worst possible route in
   Section 5.1.

   If OwnSeqNum many situations.

   It is not incremented the routing information might be
   considered stale.  In this case, the RREP might not reach beyond the RREP
   Target.

   After any scope of this document to describe how applications
   specify route selection at the sequence number operations above, the RREP
   OrigNode.AddTLV.SeqNum (OwnSeqNum) MUST also time they launch processing.  One
   possibility would be added to provide a route metric preference as part of
   the RREP.

   Other AddTLVs in the RREP library routines for opening sockets.  In view of the OrigNode and TargetNode SHOULD be
   included and set accordingly.  If OrigNode.Dist is included above
   considerations, it is set important to a number greater than zero (0) and less enable route selection based on
   metric information other than or equal to 254.  The
   Distance value will influence judgment Hop Count -- in other words, based on
   "alternate metrics".  Each such alternate metric identifies a "cost"
   of using the routing information
   (Section 5.2.1) against known information at other AODVv2 routers
   that handle this RteMsg.

   The MsgHdr.HopLimit is set to MSG_HOPLIMIT. associated route, and there are many different kinds of
   cost (latency, delay, financial, energy, etc.).

   The IP.DestinationAddress for RREP most significant change when enabling use of alternate metrics is set
   to require the IP address possibility of the
   Route.NextHopAddress for the route multiple routes to the RREP TargetNode.

5.3.3.  RteMsg Handling

   First, ThisNode examines the RteMsg to ensure that it contains same
   destination, where the
   required information: MsgHdr.HopLimit, AddBlk.TargetNode.Address,
   AddBlk.OrigNode.Address, and OrigNode.AddTLV.SeqNum.  If "cost" of each of the required
   information does not exist, the message multiple routes is discarded and further
   processing stopped.

   ThisNode MUST only handle
   measured by a different alternate metric.  The other change relevant
   to AODVv2 messages from adjacent routers.

   ThisNode checks if the AddBlk.OrigNode.Address is a valid routable
   unicast address.  If not, that the message is ignored and further
   processing stopped.

   ThisNode also checks whether AddBlk.OrigNode.Address is an address
   handled method by which route updates are tested for
   usefulness has to be slightly generalized to depend upon a more
   abstract method of evaluation which, in this AODVv2 router.  If this node document, is the originating
   AODVv2 router, the RteMsg named
   "Cost(R)", where 'R' is dropped.

   ThisNode checks if the AddBlk.TargetNode.Address is a valid routable
   unicast address.  If route information to be evaluated.  From
   the address is not a valid unicast address, above, the
   message is discarded and further processing stopped.

   Next, ThisNode checks whether its routing route table has an entry to information for 'R' must always include
   the
   AddBlk.OrigNode.Address using longest-prefix matching [RFC1812].  If
   a route with a valid Route.SeqNum type of metric by which Cost(R) is evaluated, so the metric type
   does not exist, then the new
   routing information is used have to create a new route table entry is
   created and updated be shown as described in Section 5.2.2.  If a route table
   entry does exists and it has a distinct parameter for Cost(R).  Since
   determining loop freedom is known Route.SeqNum, to depend on comparing the incoming
   routing Cost(R)
   of route update information is compared with to the Cost(R) of an existing stored
   route table entry following using the procedure described same metric, AODVv2 must also be able to invoke an
   abstract routine which in Section 5.2.1.  If the incoming routing
   information this document is called "LoopFree(R1, R2)".
   LoopFree(R1, R2) returns TRUE when, given that R2 is loop-free and
   Cost(R2) is considered preferable, the cost of route table entry R2, Cost(R1) is
   updated as described in Section 5.2.2.

   At this point, if known to guarantee loop
   freedom of the routing information for the OrigNode was not
   preferable then route R1.  In this RteMsg SHOULD document, LoopFree(R1,R2) will only
   be discarded invoked for routes R1 and no further
   processing of this message SHOULD be performed.

   If R2 which use the TargetNode is a router client of ThisNode this RteMsg is a
   RREQ, then ThisNode responds with a RREP to same metric.

   Generally, HopCount may still be considered the RREQ OrigNode (the
   new RREP's TargetNode).  The procedure default metric for issuing a new RREP is
   described
   use in Section 5.3.2.  Afterwards, ThisNode need not perform
   any more operations for MANETs, notwithstanding the RteMsg being processed.

   As an alternative to issuing a RREP, ThisNode MAY choose above objections.  Each metric has
   to
   distribute routing information about ThisNode (the RREQ TargetNode)
   more widely.  That is, ThisNode MAY optionally perform have a route
   discovery Metric Type, and the Metric Type is allocated by issuing a RREQ with ThisNode listed IANA as
   specified in [RFC6551].  Each Route has to include the TargetNode,
   using Metric Type as
   part of the procedure in Section 5.3.1.  At this point, ThisNode need
   not perform any more operations route table entry for that route.  Hop Count has Metric
   Type assignment 3.  The Cost of a route using Metric Type 3 is
   naturally the RteMsg being processed.

   For each address (except the TargetNode) in Hop Count between the RteMsg that includes
   AddTLV.Dist information, router and the AddTLV.Dist information destination.  For
   routes R1 and R2 using Metric Type 3, LoopFree (R1, R2) is incremented
   by at least one (1). TRUE when
   Cost(R2) <= (Cost(R1) + 1).  The updated Distance value will influence
   judgment specification of the routing information (Section 5.2.1) against known
   information at Cost(R) and
   LoopFree(R1,R2) for metric types other AODVv2 routers that handle than 3 is beyond the scope of
   this RteMsg.

   If document.

   Whenever an AODV router receives metric information in an incoming
   message, the resulting Distance value for of the OrigNode metric is greater than 254, as measured by the message is discarded.  If transmitting
   router, and does not reflect the resulting Distance value for
   another node is greater than 254, the associated address and its
   information are removed from the RteMsg.  If cost of traversing the MsgHdr.HopLimit is
   equal incoming
   link.  In order to one (1), then simplify the message is discarded.  Otherwise, description of storing accrued route
   costs in the
   MsgHdr.HopLimit is decremented by one (1).

   If ThisNode is not route table, the TargetNode, AND this RteMsg Cost() function is a RREQ, then
   the current RteMsg (as altered by the procedure also defined above) SHOULD
   be sent to
   return the IP multicast address LL-MANET-Routers [RFC5498].  If value of traversing a link 'L'.  In other words, the RREQ is unicast,
   domain of the IP.DestinationAddress Cost() function is set enlarged to include links as well as
   routes.  For Metric Type 3, (i.e., the
   NextHopAddress.

   If ThisNode HopCount metric) Cost(L) = 1
   for all links.  The specification of Cost(L) for metric types other
   than 3 is not beyond the TargetNode, AND scope of this RteMsg document.  Whether the argument of
   the Cost() function is a RREP, then link or a route will, in this document,
   always be clear.  As a natural result of the current way routes are looked up
   according to conformant metric type, all intermediate routers
   handling a RteMsg is sent will assign the same metric type to all metric
   information in the Route.NextHopAddress for RteMsg.

   For some metrics, a maximum value is defined, namely MAX_METRIC[i]
   where 'i' is the RREP's
   TargetNode.Address.  If no forwarding route exists Metric Type.  AODVv2 does not store routes that cost
   more than MAX_METRIC[i].  MAX_METRIC[3] is defined to
   TargetNode.Address, then a RERR SHOULD be issued to
   MAX_HOPCOUNT, where as before 3 is the OrigNode Metric Type of the RREP.

   By sending HopCount
   metric.

6.  AODVv2 Operations on Route Table Entries

   In this section, operations are specified for updating the updated RteMsg, ThisNode advertises that it will route
   for addresses contained
   table due to timeouts and route updates within AODVv2 messages.  The
   route update information in AODVv2 messages includes the outgoing RteMsg based on destination
   IP address (DestIP), SeqNum and prefix length associated with DestIP,
   and the
   information enclosed.  ThisNode MAY choose not Metric from DestIP to send the RteMsg,
   though not resending this RteMsg could decrease connectivity in node transmitting the
   network or result in a non-shortest distance path.

   The circumstances under which ThisNode might choose to not re-issue a
   RteMsg AODVv2
   message.  DestIP information and prefix length are not encoded within an
   RFC 5444 Address Block, and the SeqNum and Metric associated with
   each DestIP are encoded in RFC 5444 AddrTLVs.  Optionally, there may
   be AddedNode route updates included in AODVv2 messages, as specified
   in Section 13.7.  In this document.  Some examples might
   include the following:

   o  if ThisNode does not want to advertise routing for the contained
      addresses because it is already heavily loaded

   o  if ThisNode has already issued identical routing information (e.g.
      ThisNode had recently issued a section, RteMsg with the same distance)

   o  if ThisNode is low on energy and does not want to expend energy
      for protocol message sending either RREQ or packet forwarding

5.4.  Route Discovery

   When RREP,
   RteMsg.Addr denotes the [i]th address in an AODVv2 router needs to forward a data packet RFC 5444 AddrBlk of the
   RteMsg, RteMsg.PfxLen denotes the associated prefix length for
   RteMsg.Addr, and it RteMsg.{field} denotes the corresponding value in
   the named AddrTLV block associated with RteMsg.Addr.  All SeqNum
   comparisons use signed 16-bit arithmetic.

6.1.  Evaluating Incoming Routing Information

   If the incoming RteMsg does not have a forwarding route to MetricTypeTLV, then the destination address, it sends a RREQ
   (described in Section 5.3.1) to discover a route metric
   information contained by RteMsg is considered to the particular
   destination (TargetNode).

   After issuing a RREQ, the be of type
   DEFAULT_METRIC_TYPE.  Whenever an AODVv2 router (OrigNode) waits (HandRtr) handles an
   incoming RteMsg (i.e., RREQ or RREP), for a RREP
   indicating every relevant address
   (RteMsg.Addr) in the next hop for a RteMsg, HandRtr searches its route table to the TargetNode.  If a route see
   if there is
   not created within RREQ_WAIT_TIME, OrigNode may again try to discover a route by issuing another RREQ using table entry with the procedure defined same MetricType of the
   RteMsg, matching RteMsg.Addr.  If not, HandRtr creates a route table
   entry for RteMsg.Addr as described in Section 5.3.1 again.  Route discovery SHOULD be considered to have
   failed after DISCOVERY_ATTEMPTS_MAX and 6.2.  Otherwise,
   HandRtr compares the corresponding wait time
   for a response to incoming routing information in RteMsg against
   the final RREQ.

   To reduce congestion already stored routing information in a network, repeated attempts at the route
   discovery table entry
   (Route) for a particular TargetNode SHOULD utilize an binary
   exponential backoff.

   Data packets awaiting RteMsg.Addr, as described below.

   Suppose a route SHOULD be buffered by table entry (Route[RteMsg.Addr]) uses the source's
   AODVv2 router.  This buffer SHOULD have a fixed limited size
   (BUFFER_SIZE_PACKETS or BUFFER_SIZE_BYTES).  Determining which
   packets to discard first is a matter of policy at each AODVv2 router;
   in same metric
   type as the absence of policy constraints, by default older data packets
   SHOULD be discarded first.  Buffering of data packets can have both
   positive incoming routing information, and negative effects, contains Route.SeqNum,
   Route.Metric, and therefore settings for buffering
   (BUFFER_DURING_DISCOVERY) SHOULD be administratively configurable.
   Nodes without sufficient memory available for buffering may be
   configured with BUFFER_DURING_DISCOVERY = FALSE; this will affect the
   latency required for launching TCP applications to new destinations.

   If a route discovery attempt has failed (i.e. an attempt or multiple
   attempts have been made without receiving a RREP) to find a route to Route.Broken.  Suppose the TargetNode, any data packets buffered incoming routing
   information for the corresponding
   TargetNode MUST BE dropped Route.Addr is RteMsg.SeqNum and a Destination Unreachable ICMP message
   (Type 3) SHOULD be delivered to the source of the data packet. RteMsg.Metric.  The
   code for the ICMP message
   incoming routing information is 1 (Host unreachable error). compared as follows:

   1. Stale::  RteMsg.SeqNum < Route.SeqNum :
      If RteMsg.SeqNum < Route.SeqNum the
   AODVv2 router incoming information is stale.
      Using stale routing information is not allowed, since that might
      result in routing loops.  HandRtr MUST disregard the source (OrigNode), then the ICMP routing
      information for RteMsg.Addr.

   2. Unsafe against loops::  (TRUE != LoopFree (RteMsg, Route)) :
      If RteMsg is sent
   over the interface from which the source sent the packet not Stale (as in (1)), RteMsg.Metric is next
      considered to insure loop freedom.  If (TRUE != LoopFree (RteMsg,
      Route)) (see Section 5.6), then the
   AODVv2 router.

5.5.  Route Maintenance

   A RERR SHOULD be issued if a data packet incoming RteMsg information is
      not guaranteed to be forwarded prevent routing loops, and it
   cannot be delivered to the next-hop because no forwarding route for
   the IP.DestinationAddress exists; RERR generation is described in
   Section 5.5.3.

   Upon this condition, an ICMP Destination Unreachable message SHOULD MUST NOT be generated unless this router used.

   3. Longer::
      (RteMsg.Metric >= Route.Metric) && (Route.Broken==FALSE)
      When RteMsg.SeqNum is responsible for the
   IP.DestinationAddress and that IP.DestinationAddress is known to be
   unreachable.

   In addition to inability to forward a data packet, a RERR SHOULD be
   issued immediately after detecting a broken link (see Section 5.5.1)
   of same as in a forwarding valid route table entry,
      and LoopFree (RteMsg, Route) assures loop freedom, incoming
      information still does not offer any improvement over the existing
      route table information if RteMsg.Metric >= Route.Metric.  Using
      such incoming routing information to quickly notify AODVv2 routers that certain
   routes are no longer available.  If update a newly unavailable route has table entry is
      not
   been used recently (indicated by ROUTE_USED), recommended.

   4. Offers improvement::
      Incoming routing information that does not match any of the RERR above
      criteria is better than existing routing table information and
      SHOULD NOT be
   generated.

5.5.1.  Active Next-hop Router Adjacency Monitoring

   Nodes SHOULD monitor connectivity used to adjacent next-hop AODVv2 routers
   on forwarding routes.  This monitoring can improve the route table.  The following pseudo-
      code illustrates whether incoming routing information should be accomplished by one or
   several mechanisms, including:

   o  Neighborhood discovery [RFC6130]

   o  Route timeout

   o  Lower layer trigger that a neighboring router is no longer
      reachable

   o  Other monitoring mechanisms or heuristics

   Upon determining that a next-hop AODVv2 router has become
   unreachable, ThisNode MUST remove the affected forwarding routes
   (those using the unreachable next-hop) and unset the Route.Forwarding
   flag.  ThisNode also flags the associated routes in AODVv2's routing
   table as Broken.  For each broken route the timer for ROUTE_DELETE is
   set to ROUTE_DELETE_TIMEOUT.

5.5.2.  Updating Route Lifetimes During Packet Forwarding

   To avoid removing the forwarding route
      used to reach update an IP.SourceAddress,
   ThisNode SHOULD set the "ROUTE_USED" timeout existing route table entry as described in
      Section 6.2.

            (RteMsg.SeqNum > Route.SeqNum) OR
           {(RteMsg.SeqNum == Route.SeqNum) AND
          [(RteMsg.Metric < Route.Metric) OR
          ((Route.Broken == TRUE) && LoopFree (RteMsg, Route))]}

      The above logic corresponds to placing the value
   ROUTE_USED_TIMEOUT for following conditions on
      the incoming route update (compared to that IP.SourceAddress upon
   receiving a data packet or an AODVv2 message.  If the timer for
   ROUTE_DELETE existing route table
      entry) before it can be used:

      *  it is set, that timer more recent, or

      *  it is removed.  The Route.Broken flag not stale and is
   unset. shorter, or

      *  it can safely repair a broken route.

6.2.  Applying Route Updates To avoid removing Route Table Entries

   To apply the forwarding route to update, the IP.DestinationAddress
   that route table entry is being used, ThisNode SHOULD set populated with
   the "ROUTE_USED" timeout to following information:

   o  Route.Address := RteMsg.Addr

   o  If (RteMsg.PfxLen != 0), then Route.PfxLen := RteMsg.PfxLen

   o  Route.SeqNum := RteMsg.SeqNum

   o  Route.NextHopAddress := IP.SourceAddress (i.e., an address of the value ROUTE_USED_TIMEOUT for
      node from which the route RteMsg was received)

   o  Route.NextHopInterface is set to the
   IP.DestinationAddress upon sending a data packet or an AODVv2
   message.  If the timer for ROUTE_DELETE is set, it is removed.  The interface on which RteMsg was
      received

   o  Route.Broken flag := FALSE

   o  If RteMsg.MetricType is included, then
      Route.MetricType := RteMsg.MetricType.  Otherwise,
      Route.MetricType := DEFAULT_METRIC_TYPE.

   o  Route.MetricType := RteMsg.MetricType

   o  Route.Metric := RteMsg.Metric

   o  Route.LastUsed := Current_Time

   o  If RteMsg.VALIDITY_TIME is unset.

5.5.3.  RERR Generation

   When an AODVv2 router receives a packet (from PrevHopAddress), and
   the router (ThisNode) does not have a route available for the
   destination of included, then
      Route.ExpirationTime := MAXTIME, otherwise Route.ExpirationTime :=
      Current_Time + RteMsg.VALIDITY_TIME

   With these assignments to the packet, ThisNode uses an RERR message is route table entry, a route has been
   made available, and the route can be used to
   inform one or more neighboring AODVv2 routers that its send any buffered data
   packets and subsequently to forward any incoming data packets for
   Route.Addr.  An updated route entry also fulfills any outstanding
   route discovery (RREQ) attempts for Route.Addr.

6.3.  Route Table Entry Timeouts

   During normal operation, AODVv2 does not require any explicit
   timeouts to manage the
   packet destination is no longer available.

   When ThisNode creates a new RERR, the address lifetime of a route.  However, the first
   UnreachableNode (IP.DestinationAddress from route table
   entry MUST be examined be before using it to forward a data packet packet, as
   discussed in Section 8.1.  Any required expiry or
   RREP.TargetNode.Address) is inserted into an Address Block
   AddBlk.UnreachableNode.Address.  If a prefix deletion can occur
   at that time.  Nevertheless, it is known for permissible to implement timers
   and timeouts to achieve the
   UnreachableNode.Address, it SHOULD be included.  Otherwise, same effect.

   At any time, the
   UnreachableNode.Address is assumed route table can be examined and route table entries
   can be expunged according to their current state at the time of
   examination, as follows.

   o  An Active route MUST NOT be a host address with a full
   length prefix. expunged.

   o  An Idle route SHOULD NOT be expunged.

   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.

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

   If a value precursor lists are maintained for the UnreachableNode's SeqNum
   (UnreachableNode.AddTLV.SeqNum) is known, it SHOULD be placed route (as described in
   Section 13.3) then the
   RERR.  The MsgHdr.HopLimit SHOULD precursor lists must also be set to MSG_HOPLIMIT.

   If SeqNum information is not known or not included in expunged at the RERR, all
   nodes handling
   same time that the RERR will assume their routing information
   associated with the UnreachableNode route itself is no longer valid expunged.

7.  Routing Messages RREQ and flag those
   routes RREP (RteMsgs)

   AODVv2 message types RREQ and RREP are together known as broken.

   A RERR MAY be sent Routing
   Messages (RteMsgs) and are used to the multicast address LL-MANET-Routers
   [RFC5498], thus notifying all nearby AODVv2 routers that might depend
   on the now broken link.  If the RERR is unicast, the
   IP.DestinationAddress discover a route between an
   Originating and Target Node, denoted here by OrigNode and TargNode.
   The constructed route is set to the PrevHopAddress.

   After sending the RERR, ThisNode SHOULD discard the packet or message
   that triggered generation of the RERR.

5.5.4.  RERR Handling

   First, ThisNode examines the incoming RERR bidirectional, enabling packets to ensure that it contains
   MsgHdr.HopLimit flow
   between OrigNode and AddBlk.UnreachableNode.Address.  If the required TargNode.  RREQ and RREP have similar
   information does not exist, and function, but have some differences in their rules
   for handling.  The main difference between the incoming RERR message two messages is discarded
   and further processing stopped. that
   RREQ messages are typically multicast to solicit a RREP, whereas RREP
   is typically unicast as a response to RREQ.

   When an AODVv2 router handles needs to forward a RERR, it examines the information for
   each UnreachableNode.  The AODVv2 data packet from a node
   (OrigNode) in its set of router removes the clients, and it does not have a
   forwarding
   route, unsets the Route.Forwarding flag, sets route toward the Route.Broken flag,
   and packet's IP destination address
   (TargNode), the timer for ROUTE_DELETE is set AODVv2 router (in this section, called RREQ_Gen)
   generates a RREQ (as described in Section 7.3) to ROUTE_DELETE_TIMEOUT for
   each UnreachableNode.Address found using longest prefix matching that
   meets all discover a route
   toward TargNode.  Subsequently RREQ_Gen awaits reception of the following conditions:

   1.  The UnreachableNode.Address is an RREP
   message (see Section 7.4) or other route table update (see
   Section 6.2) to establish a routable unicast address.

   2. route toward TargNode.  The Route.NextHopAddress is the same as the RERR
       IP.SourceAddress.

   3.  The Route.NextHopInterface is the same as the interface on which
       the RERR was received.

   4.  The Route.SeqNum is zero (0), unknown, OR the
       UnreachableNode.SeqNum is zero (0), unknown, OR Route.SeqNum -
       UnreachableNode.SeqNum <= 0 (using signed 16-bit arithmetic).

   If Route.SeqNum is zero (0) or unknown RREQ message
   contains routing information to enable RREQ recipients to route
   packets back to OrigNode, and UnreachableNode.SeqNum
   exists in the RERR and is not zero (0), then Route.SeqNum SHOULD be
   set RREP message contains routing
   information enabling RREP recipients to UnreachableNode.SeqNum.  Setting Route.SeqNum can reduce
   future RERR handling route packets to TargNode.

7.1.  Route Discovery Retries and forwarding.

   Each UnreachableNode that did not result in marking Buffering

   After issuing a route table
   entry RREQ, as broken route is removed from the RERR, since propagation of
   such information will not result in any benefit.

   Each UnreachableNode that did indicate described above RREQ_Gen awaits a broken RREP
   providing a bidirectional route SHOULD remain
   in the RERR. toward Target Node.  If any UnreachableNode was removed, all other information (AddTLVs)
   associated with the UnreachableNode address(es) MUST also be removed.

   If Route.SeqNum is known and an UnreachableNode.SeqNum RREP is
   not
   included in received within RREQ_WAIT_TIME, RREQ_Gen may retry the RERR, then Route.SeqNum (i.e.
   UnreachableNode.SeqNum) MAY Route
   Discovery by generating another RREQ.  Route Discovery SHOULD be included with the RERR.  Including
   UnreachableNode.SeqNum can reduce future RERR handling
   considered to have failed after DISCOVERY_ATTEMPTS_MAX and
   forwarding.

   If no UnreachableNode addresses remain in the RERR, or if the
   MsgHdr.HopLimit is equal
   corresponding wait time for a RREP response to one (1), then the RERR final RREQ.  After
   the attempted Route Discovery has failed, RREQ_Gen MUST be discarded.

   Otherwise, wait at least
   RREQ_HOLDDOWN_TIME before attempting another Route Discovery to the MsgHdr.HopLimit is decremented by one (1).  The RERR
   same destination.

   To reduce congestion in a network, repeated attempts at route
   discovery for a particular Target Node SHOULD utilize an binary
   exponential backoff.

   Data packets awaiting a route SHOULD be sent buffered by RREQ_Gen. This
   buffer SHOULD have a fixed limited size (BUFFER_SIZE_PACKETS or
   BUFFER_SIZE_BYTES).  Determining which packets to the multicast address LL-MANET-Routers [RFC5498].
   Alternatively, if the RERR is unicast, the IP.DestinationAddress discard first is
   set to the PrevHopAddress.

5.6.  Unknown Message and TLV Types

   If a message with an unknown type is received, the message is
   ignored.

   For handling
   matter of messages that contain unknown TLV types, ignore the
   information for processing, preserve it unmodified for forwarding.

5.7.  Advertising Network Addresses

   AODVv2 routers MAY specify a prefix length for policy at each advertised
   address.  Any nodes (other than the advertising AODVv2 router) within
   the advertised prefix MUST NOT participate router; in the AODVv2 protocol
   directly.  For example, advertising 192.0.2.1 with a prefix length absence of
   24 indicates that all nodes with the matching 192.0.2.X are reachable
   through this AODVv2 router.  An AODVv2 router MUST NOT advertise
   network addresses unless it policy
   constraints, by default older data packets SHOULD be discarded first.
   Buffering of data packets can guarantee its ability have both positive and negative effects
   (albeit usually positive).  Nodes without sufficient memory available
   for forwarding
   packets buffering SHOULD be configured to any host address within the address range of disable buffering by
   configuring BUFFER_SIZE_PACKETS == 0 and BUFFER_SIZE_BYTES == 0.
   Doing so will affect the
   corresponding network.

5.8.  Simple Internet Attachment

   Simple Internet attachment consists of latency required for launching TCP
   applications to new destinations.

   If a stub route discovery attempt has failed (i.e., non-transit)
   network of AODVv2 routers connected DISCOVERY_ATTEMPTS_MAX
   attempts have been made without receiving a RREP) to the Internet via find a single
   Internet AODVv2 router (IAR).

   As in route
   toward the Target Node, any Internet-attached network, AODVv2 routers, data packets buffered for the
   corresponding Target Node MUST BE dropped and hosts behind
   these routers, wishing to a Destination
   Unreachable ICMP message (Type 3) SHOULD be reachable from hosts on delivered to the Internet
   MUST have IP addresses within source
   of the IAR's routable and topologically
   correct prefix (e.g. 192.0.2.0/24). data packet.  The IAR is responsible code for generating RREQ to find nodes within the
   AODVv2 Region on behalf of nodes on ICMP message is 1 (Host
   unreachable error).  If RREQ_Gen is not the Internet, as well as
   responding to route requests from source (OrigNode), then
   the AODVv2 region on behalf of ICMP is sent over the
   nodes on interface from which OrigNode sent the
   packet to the Internet.

         /--------------------------\
        /          Internet          \
        \                            /
         \------------+-------------/
                      |
       Routable &     |
       Topologically  |
       Correct        |
       Prefix         |
                +-----+--------+
                |  Internet    |
         /------|  AODVv2      |-------\
        /       |  Router      |        \
       /        |192.0.2.1/32  |         \
       |        |Responsible   |         |
       |        |  for         |         |
       |        |AODVv2 Region |         |
       |        |192.0.2.0/24  |         |
       |        +--------------+         |
       | +----------------+              |
       | | AODVv2 Router  |              | router.

7.2.  RteMsg Structure

   RteMsgs have the following general format:

       +---------------------------------------------------------------+
       |                     RFC 5444 Packet Header                    | 192.0.2.2/32
       +---------------------------------------------------------------+
       |             RFC 5444 Message Header <msg-hopcount>            |
       +---------------------------------------------------------------+
       | +----------------+    RFC 5444 MsgHdr, opt. DestOnly TLV, opt. MetricTypeTLV     |
       +---------------------------------------------------------------+
       |              +----------------+       RteAddrBlk {[1]:=RREQ.OrigNode,[2]:=RREQ.TargNode)}     |
       +---------------------------------------------------------------+
       |         RteSeqNumTLV (OrigRtr.Seqnum, TargNode.Seqnum)        | AODVv2 Router
       +---------------------------------------------------------------+
       |              Added Node Address Block (Optional)              |
       +---------------------------------------------------------------+
       |                Added Node Address TLV (SeqNum)                | 192.0.2.3/32
       +---------------------------------------------------------------+
       |          Added Node Address TLV (Metric[MetricType])          |
       \              +----------------+ /
        \                               /
         \-----------------------------/
       +---------------------------------------------------------------+

            Figure 1: Simple Internet Attachment Example

   When an AODVv2 router within the AODVv2 Region wants to discover a
   route to a node on the Internet, it uses the normal AODVv2 route
   discovery RREQ and RREP (RteMsg) message structure

   Message Header
      This is typically mostly boilerplate but can contain MsgTLVs as
      below.

   DestOnly TLV
      RREQ only: no Intermediate RREP.

   MetricType TLV
      Metric Type for that Metric AddrTLV

   RteAddrBlk
      This Address Block contains the IP Destination Address.  The IAR MUST respond to addresses for RREQ on behalf of the Internet destination.

   When a packet from a node on the Internet destined Originating
      and Target Node (OrigNode and TargNode).  Note that for a node both RREP
      and RREQ, the OrigNode and TargNode are as identified in the
   AODVv2 region reaches
      context of the IAR, if RREQ message originator.

   RteSeqNumTLV (Sequence Number AddrTLV)
      This Address Block TLV is REQUIRED and carries the IAR does not have a route to
   that destination it will perform normal
      sequence numbers associated with either OrigNode or TargNode or
      both.

   (Optional) Added Node AddrBlk
      AODVv2 route discovery allows the inclusion of routing information for
   that destination.

5.9.  Multiple Interfaces

   AODVv2 may be used with multiple interfaces; therefore, other nodes
      in addition to OrigNode and TargNode.

   (Optional) SeqNum AddrTLV  If the
   particular interface over which packets arrive MUST be known whenever
   a packet is received.  Whenever a new route Added Node AddrBlk is created, the interface
   through which present, the Route.Address can be reached
      SeqNum AddrTLV is also recorded in REQUIRED, to carry the route table entry.

   When multiple interfaces are available, a node transmitting a
   multicast packet destination sequence
      numbers associated with IP.DestinationAddress set to LL-MANET-Routers
   SHOULD send the packet on all interfaces that have been configured
   for AODVv2 operation.

   Similarly, AODVv2 routers SHOULD subscribe to LL-MANET-Routers on all
   their AODVv2 interfaces.

5.10.  AODVv2 Control Packet/Message Generation Limits

   To ensure predictable messaging overhead, AODVv2 router's rate of
   packet/message generation SHOULD be limited.  The rate and algorithm
   for limiting messages (CONTROL_TRAFFIC_LIMITS) Added Nodes.

   (Optional) Metric AddrTLV  If the Added Node AddrBlk is left present, this
      AddrTLV is REQUIRED, to carry the
   implementor and should be administratively configurable.  AODVv2
   messages SHOULD metric information associated
      with the Added Nodes.  See Below.

   The metric AddrTLV may be discarded in either a Metric8 AddrTLV or an Metric16
   AddrTLV.

7.3.  RREQ Generation

   RREQ_Gen generates the RREQ according to the following steps, with
   order of preference:
   RREQ, RREP, and finally RERR.

5.11.  Optional Features

   Several optional features of AODVv2, and associated with AODV, are
   not required protocol elements illustrated schematically in Figure 1.

   1.  RREQ_Gen MUST increment its OwnSeqNum by minimal implementations.  These features are expected one (1) according to be useful the
       rules specified in networks Section 5.5.  This assures that all nodes with greater mobility, or larger node
   populations, or requiring shorter latency for application launches.
   The optional features are
       existing routing information will use RREQ_Gen's new information
       to update existing routing table information.

   2.  OrigNode MUST be a unicast address.  If RREQ_Gen is not OrigNode,
       then OwnSeqNum will be used as follows:

   o  Expanding Rings Multicast

   o  Intermediate RREPs (iRREPs): Without iRREP, only the destination
      can respond value of OrigNode.SeqNum. will
       be used by AODVv2 routers to create a RREQ.

   o  Precursor lists.

   o  Reporting Multiple Unreachable Nodes.  An RERR message can carry
      more than one Unreachable Destination node for cases when route toward the OrigNode,
       enabling a single
      link breakage causes multiple destinations to become unreachable RREP from an intermediate router.

5.11.1.  Expanding Rings Multicast

   For multicast RREQ, TargRtr, and eventually used for proper
       forwarding of data packets.

   3.  If RREQ_Gen requires that only TargRtr is allowed to generate a
       RREP, then RREQ_Gen includes the "Destination RREP Only" TLV as
       part of the MsgHdr.HopLimit RFC 5444 message header.  This also assures that
       TargRtr increments its sequence number.  Otherwise, intermediate
       AODVv2 routers MAY respond to the RREQ_Gen's RREQ if they have an
       valid route to TargNode (see Section 13.2).

   4.  msg-hopcount MUST be set in accordance with
   an expanding ring search as described in [RFC3561] to limit 0.

       *  This RFC 5444 constraint causes the RREQ
   propagation typical RteMsg payload
          incur additional enlargement.

   5.  RREQ_Gen adds the TargNode.Addr to the RREQ.

   6.  If a subset previous value of the local network and possibly reduce
   route discovery overhead.

5.11.2.  Intermediate RREP

   This specification has been published as a separate Internet Draft .

5.11.3.  Precursor Notification

   The Dynamic MANET On-demand (AODVv2) TargNode's SeqNum is known (e.g., from
       an invalid routing protocol table entry using longest-prefix matching),
       RREQ_Gen SHOULD include TargNode.SeqNum in all but the last RREQ
       attempt.  If TargNode.SeqNum is intended for
   use not included, it is assumed to be
       unknown by mobile routers in wireless, multihop networks.  AODVv2
   determines unicast routes among AODVv2 routers within handling the network in
   an on-demand fashion, offering on-demand convergence in dynamic
   topologies.  This document specifies a simple modification RREQ; if the optional
       feature Intermediate RREP is enabled, then any route to AODVv2
   (and possibly other reactive routing protocols) enabling faster
   notifications TargNode
       will satisfy the RREQ [I-D.perkins-irrep].

   7.  RREQ_Gen adds OrigNode.Addr, its prefix, and the RREQ_Gen.SeqNum
       (OwnSeqNum) to known sources of traffic upon determination that a
   route for such traffic's destination has become Broken.

5.11.3.1.  Overview the RREQ.

   8.  If an AODVv2 router, while attempting to forward a packet OrigNode.Metric is included it is set to a
   particular destination, determines that the next hop (one cost of its
   neighbors) the route
       between OrigNode and RREQ_Gen.

   An example RREQ message format is no longer reachable, illustrated in Appendix A.1.

7.4.  RREP Generation

   An AODVv2 specifies that the router
   notify the source of that packet that the (TargRtr, called in this section RREP_Gen) generates
   a RREP in order to provide a route to the destination
   has become Broken.  In the existing specification, Target Node (TargNode) of a
   RREQ, thus satisfying the notification routing requirement for packets to flow
   between OrigNode and TargNode.  This section specifies the source is a unicast RERR message.

   However, in many cases there will be several sources generation
   of an RREP by the RREP_Gen. The basic format of traffic
   for that particular destination.  In fact, an RREP conforms to
   the broken link structure for the
   next hop RteMsgs as illustrated in question Figure 1.  Optionally,
   RREP messages may be a path component of numerous other routes
   for generated by AODVv2 routers other destinations, than TargRtr;
   this optional message generation is known as "Intermediate RREP"
   generation, and is specified in that case the node detecting Internet Draft [I-D.perkins-irrep].
   If TargNode is not a unicast IP address the
   broken link must mark as Broken multiple routes, one RREP MUST NOT be
   generated, and processing for each of the
   newly unreachable destinations.  Each route that uses the newly
   broken link RREQ is no longer valid.  For each such route, every node
   along the way from complete.

   Otherwise RREP_Gen generates the source using that route, to the node detecting
   the broken link, is known RREP as a "precursor" for the broken next hop.
   All follows:

   1.   RREP_Gen first uses the precursors routing information to update its route
        table entry for a particular next hop should be notified about
   the change OrigNode if necessary as specified in status of their route
        Section 6.2.

   2.   RREP_Gen MUST increment its OwnSeqNum by one (1) according to a destination downstream from
        the broken next hop.

5.11.3.2.  Precursor Notification

   During normal operation, each node wishing rules specified in Section 5.5.

   3.   RREP.AddrBlk[OrigNode] := RREQ.AddrBlk[OrigNode]

   4.   RREP.AddrBlk[TargNode] := RREQ.AddrBlk[TargNode]

   5.   RREP.SeqNumTLV[OrigNode] := RREQ.SeqNumTLV[OrigNode]

   6.   RREP.SeqNumTLV[TargNode] := OwnSeqNum

   7.   If Route[TargNode].PfxLen/8 is equal to enable the improved
   notification for precursors number of any links to its next hop neighbors
   has to keep track bytes in
        the addresses of the precursors.  This RREQ (4 for IPv4, 16 for IPv6), then no
        <prefix-length> is done by maintaining a
   precursor table and updating included with the table whenever iRREP.  Otherwise,
        RREP.PfxLen[TargNode] := RREQ.PfxLen[TargNode] according to the node initiates or
   relays a RREP message back
        rules of RFC 5444 AddrBlk encoding.

   8.   RREP.MetricType[TargNode] := Route[TargNode].MetricType
   9.   RREP.Metric[TargNode] := Route[TargNode].Metric

   10.  <msg-hop-limit> SHOULD be set to RteMsg.<msg-hop-count>.

   11.  IP.DestinationAddr := Route[OrigNode].NextHop

   The message format for RREP is illustrated in Appendix A.2.

7.5.  Handling a node originating Received RteMsg

   Before an AODVv2 router (HandlingRtr) can process a received RteMsg
   (i.e., RREQ message.
   When the node transmits the RREP message, or RREP), it is implicitly agreeing
   to forward traffic from the RREQ originator towards the RREP
   originator (i.e., along first must verify that the next hop link RteMsg is
   permissible according to the neighbor following steps.  For RREQ, RteMsg_Gen
   is OrigRtr, also called RREQ_Gen. For RREP, RteMsg_Gen is TargRtr,
   also called RREP_Gen.

   1.  HandlingRtr MUST handle AODVv2 messages only from which adjacent
       routers as specified in Section 5.4.  AODVv2 messages from other
       sources MUST be disregarded.

   2.  If the RREP was received).  The "other" next hop, which RteMsg.<msg-hop-limit> is equal to 0, then the neighbor
   along the way towards the originator of message is
       disregarded.

   3.  If the RREQ message, RteMsg.<msg-hop-count> is present, and RteMsg.<msg-hop-
       count> >= MAX_HOPCOUNT, then the
   next precursor for the route towards the destination requested by the
   RREQ.

   Each such precursor should then be recorded as a precursor for a
   route along message is disregarded.

   4.  HandlingRtr examines the next hop.  The same next hop may be in service for
   routes RteMsg to multiple destinations, but for precursor list management ascertain that it
   is only important to keep track of precursors for a particular next
   hop; contains the exact destination
       required information: TargNode.Addr, OrigNode.Addr,
       RteMsg_Gen.Metric and RteMsg_Gen.SeqNum.  If the required
       information does not matter, only the particular next
   hop towards exist, the destination(s).

   When a node observes that one of its neighbors message is no longer
   reachable, the node first disregarded.

   5.  HandlingRtr checks to see whether that OrigNode.Addr and TargNode.Addr are valid
       routable unicast addresses.  If not, the link to message is disregarded.

   6.  HandlingRtr checks that
   neighbor the Metric Type associated with
       OrigNode.Metric and TargNode.Metric is a next hop for any more distant destination in its route
   table. known, and that Cost(L)
       can be computed.  If not, then the node simply updates any relevant neighorhood
   information and takes no further action.

   Otherwise, for all destinations no longer reachable because of message is disregarded.

       *  DISCUSSION: alternatively, can change the
   changed status of AddrBlk metric to
          use HopCount, measured from<msg-hop-limit>.

   7.  If MAX_METRIC[RteMsg.MetricType] <= (RteMsg_Gen.Metric +
       Cost(L)), where 'L' is the next hop, incoming link, the node first checks to see whether
   the link to that neighbor RteMsg is
       disregarded.

   An AODVv2 router (HandlingRtr) handles a next hop for any more distant
   destination in its route table.  If not, then the node simply updates
   any relevant neighorhood information and takes no further action.

   For each precursor of permissible RteMsg according
   to the next hop, following steps.

   1.  HandlingRtr MUST process the node MAY notify routing information contained in the precursor
       RteMsg as speciied in one of three ways:

   o  unicast RERR

   o  broadcast RERR

   o  multicast RERR to multicast group PRECURSOR_RERR_RECEIVERS

   Each precursor then Section 6.1.

   2.  HandlingRtr MAY execute the same procedure until all affected
   traffic sources have received the RERR route maintenance information.

   When a precursor receives a unicast RERR, the precursor process AddedNode routing information (if
       present) as specified in Section 13.7.1 Otherwise, if AddedNode
       information is not processed, it MUST further
   unicast be deleted.

   3.  By sending the RERR message towards updated RteMsg, HandlingRtr advertises that it
       will route for addresses contained in the affected traffic source.  If a
   precursor receives a broadcast or multicast RERR, outgoing RteMsg based
       on the precursor information enclosed.  HandlingRtr MAY
   further retransmit choose not to send
       the RERR towards RteMsg, though not resending this RteMsg could decrease
       connectivity in the traffic source.

5.11.4.  Reporting Multiple Unreachable Nodes

5.11.5.  Message Aggregation network or result in a nonoptimal path.  The aggregation of multiple messages into
       circumstances under which HandlingRtr might choose to not re-
       transmit a packet is RteMsg are not specified in this document, but if aggregation does occur document.  Some
       examples might include the IP.SourceAddress following:

       *  HandlingRtr is already heavily loaded and IP.DestinationAddress of all contained messages MUST be the same.

   Implementations MAY choose does not want to temporarily delay transmission of
   messages
          advertise routing for the purpose of aggregation (into a single packet) or to
   improve performance by using jitter [RFC5148].

5.11.6.  Adding Additional Routing Information to contained addresses

       *  HandlingRtr recently transmitted identical routing information
          (e.g. in a RteMsg

   DSR [RFC4728] includes source routes as part of the data of its RREPs
   and RREQs.  Doign so allows additional topology information to be
   flooded along with advertising the RteMsg, and potentially allows updating for
   stale routing information at MANET routers along new paths between
   source same metric)

       *  HandlingRtr is low on energy and destination.  To maintain this functionality, AODVv2 has
   defined a somewhat more general method that enables inclusion of
   source routes in RteMsgs.

   Appending routing information can alleviate route discovery attempts to the nodes whose information reduce energy expended
          for sending protocol messages or packet forwarding

       Unless HandlingRtr is included, if other AODVv2 routers
   use this information to update their routing tables.

   Note that, since the initial merger of DSR with AODV prepared to create this
   protocol, send an updated RteMsg, it
       halts processing.  Otherwise, processing continues as follows.

   4.  HandlingRtr MUST decrement RteMsg.<msg-hop-limit>.  If
       RteMsg.<msg-hop-limit> is then zero (0), no further experimentation has shown that including the
   additional routing information action is not always helpful.  Sometimes it
   seems to help, and other times it seems to reduct overall
   performance.

   AODVv2 routers can append routing information
       taken.

   5.  HandlingRtr MUST increment RteMsg.<msg-hop-count>.

   Further actions to a RteMsg.  This send an updated RteMsg depend upon whether the
   RteMsg is
   controllable by an option (APPEND_INFORMATION) which SHOULD be
   administratively configurable RREP or controlled according to the traffic
   characteristics of the network.

   Prior to appending an address controlled by this AODVv2 router to a
   RteMsg, ThisNode MAY increment its OwnSeqNum as defined in
   Section 5.1. RREQ

7.5.1.  Additional Handling for Outgoing RREQ

   o  If OwnSeqNum the upstream router is not incremented in the appended routing
   information might not be considered preferable, when received by
   nodes with existing routing information.  Incrementation of Blacklist, and Current_Time <
      BlacklistRmTime, then HandlingRtr MUST NOT transmit any outgoing
      RREQ, and processing is complete.

   o  Otherwise, if the
   sequence number when appending information to a RteMsg upstream router is in transit
   (APPEND_INFORMATION_SEQNUM) the Blacklist, and
      Current_Time >= BlacklistRmTime, then the upstream router SHOULD
      be administratively configurable.
   Note that, during handling of this RteMsg OwnSeqNum may have already
   been incremented; removed from the Blacklist, and in this case OwnSeqNum need not be incremented
   again. message processing continued.

   o  If an address controlled by this AODVv2 router includes
   ThisNode.Dist, it TargNode is set to a number greater than zero (0).

   For added addresses (and their prefixes) not controlled by this
   AODVv2 router, Route.Dist can be included if known.

   The VALIDITY_TIME client of routing information for appended address(es)
   MUST be included, to inform routers about when to delete this
   information.  The VALIDITY_TIME TLV HandlingRtr, then a RREP is defined in Section 5.13.3.

   Additional information (e.g.  SeqNum and Dist) about any appended
   address(es) SHOULD be included.

   Note that generated
      by the routing information about HandlingRtr (i.e., TargRtr) and unicast to the TargetNode MUST NOT be
   added.  Also, duplicate address entries SHOULD NOT be added.
   Instead, only upstream
      router towards the best routing information (Section 5.2.1) RREQ OrigNode, as specified in Section 7.4.
      Afterwards, TargRtr processing for a
   particular address SHOULD be included.

   Intermediate nodes obey the following procedures when processing
   AddBlk.AdditionalNode.Address information and other associated TLVs
   that are included with a RteMsg.  For each address (except RREQ is complete.

   o  If HandlingRtr is not the
   TargetNode) in TargetNode, then the RteMsg that includes AddTLV.Dist information, outgoing RREQ (as
      altered by the
   AddTLV.Dist information MUST procedure defined above) SHOULD be incremented.  If sent to the resulting
   Distance value for IP
      multicast address LL-MANET-Routers [RFC5498].  If the OrigNode RREQ is greater than 254,
      unicast, the message IP.DestinationAddress is
   discarded.  If set to the resulting Distance value for another node is
   greater than 254, the associated address and its information are
   removed from the RteMsg.

   After handling the OrigNode's routing information, then each address
   that NextHopAddress.

7.5.2.  Additional Handling for Outgoing RREP

   o  If HandlingRtr is not OrigRtr then the TargetNode MAY be considered for creating and
   updating routes.  Creating and updating routes outgoing RREP is sent to other nodes can
   eliminate RREQ
      the Route.NextHopAddress for those IP destinations, in the event that data
   needs RREP.AddrBlk[OrigNode].  If no
      forwarding route exists to OrigNode, then a RERR SHOULD be forwarded
      transmitted to the IP destination(s) now or RREP.AddrBlk[TargNode].  See Table 1 for notational
      conventions; OrigRtr, OrigNode, and TargNode are routers named in
      the near
   future.

   For each context of the additional addresses considered, ThisNode first
   checks OrigRtr, that is, the address router originating the RREQ
      to which the RREP is responding.

8.  Route Maintenance

   AODVv2 routers attempt to maintain active routes.  When a routable unicast address.  If the
   address routing
   problem is not encountered, an AODVv2 router (namely, RERR_Gen) attempts
   to quickly notify upstream routers.  Two kinds of routing problems
   may trigger generation of a unicast address, then the address and all related
   information MUST be removed.

   If RERR message.  The first case happens
   when the routing table router receives a packet but does not have a matching route with a known
   Route.SeqNum for this additional address using longest-prefix
   matching, then the
   destination of the packet.  The second case happens immediately upon
   detection of a route MAY be created and updated as described in broken link (see Section 5.2.2.  If a 8.2) of an Active route, to
   quickly notify AODVv2 routers that that route table entry exists with a known
   Route.SeqNum, the incoming routing information is compared with no longer available.
   When the
   route table entry following RERR message is generated, it MUST be the procedure described only message in Section 5.2.1.
   If
   the incoming routing information is used, RFC 5444 packet.

8.1.  Handling Route Lifetimes During Packet Forwarding

   Before using a route to forward a packet, an AODVv2 router MUST check
   the status of the route table entry
   SHOULD be updated as described in Section 5.2.2. follows.

      If the routing information for an AdditionalNode.Address route is not used,
   then marked has been marked as Broken, it is removed from cannot be
      used for forwarding.

      If Current_Time > Route.ExpirationTime, the RteMsg.

5.12.  Administratively Configured Parameters route table entry has
      expired, and Timer Values

   AODVv2 contains several parameters which a RERR SHOULD be generated.

      Similarly, if (Route.ExpirationTime == MAXTIME), and if
      Current_Time - Route.LastUsed > (ACTIVE_INTERVAL+MAX_IDLETIME),
      the route has expired, and a RERR SHOULD be generated.

      Furthermore, if Current_Time - Route.LastUsed >
      (MAX_SEQNUM_LIFETIME), the route table entry MUST be administratively
   configured.  The list of these follows:

              Required Administratively Configured Parameters

   +------------------------+------------------------------------------+
   |          Name          |                Description               |
   +------------------------+------------------------------------------+
   |  RESPONSIBLE_ADDRESSES |  List expunged.

   Otherwise, if none of addresses or routing prefixes,  |
   |                        | the above route error conditions are indicated,
   Route.LastUsed := Current_Time, and the packet is forwarded to the
   route's next hop.

   Optionally, if a precursor list is maintained for which this the route, see
   Section 13.3 for precursor lifetime operations.

8.2.  Active Next-hop Router Adjacency Monitoring

   Nodes SHOULD monitor connectivity to adjacent next-hop AODVv2 routers
   on forwarding routes.  This monitoring can be accomplished by one or
   several mechanisms, including:

   o  Neighborhood discovery [RFC6130]

   o  Route timeout

   o  Lower layer trigger that a neighboring router is     |
   |                        |  responsible.  If, RESPONSIBLE_ADDRESSES |
   |                        |    is zero, this no longer
      reachable

   o  Other monitoring mechanisms or heuristics

   Upon determining that a next-hop AODVv2 router is only   |
   |                        |    responsible for its own addresses.    |
   |    AODVv2_INTERFACES   |  List of has become
   unreachable, RERR_Gen follows the interfaces participating procedures specified in |
   |                        |         AODVv2 routing protocol.         |
   +------------------------+------------------------------------------+

                                  Table 2

   AODVv2 contains
   Section 8.3.2.

8.3.  RERR Generation

   An RERR message is generated by a number of timers.  The default timing parameter
   values follow:

                      Default Timing Parameter Values

           +------------------------------+-------------------+
           |             Name             |       Value       |
           +------------------------------+-------------------+
           |         ROUTE_TIMEOUT        |     5 seconds     |
           |     ROUTE_AGE_MIN_TIMEOUT    |      1 second     | AODVv2 router (in this section,
   called RERR_Gen) in order to to notify upstream routers that packets
   cannot be delivered to certain destinations.  An RERR message has the
   following general structure:

       +---------------------------------------------------------------+
       | ROUTE_SEQNUM_AGE_MAX_TIMEOUT                     RFC 5444 Packet Header                    |    600 seconds
       +---------------------------------------------------------------+
       |     RFC 5444 Message Header <msg-hoplimit> <msg-hopcount>     |      ROUTE_USED_TIMEOUT
       +---------------------------------------------------------------+
       |   ROUTE_TIMEOUT      UnreachableNode AddrBlk (Unreachable Node addresses)     |
       +---------------------------------------------------------------+
       |     ROUTE_DELETE_TIMEOUT             UnreachableNode SeqNum AddrBlk TLV                | 2
       +---------------------------------------------------------------+

                     Figure 2: RERR message structure

   Message Header
      RFC 5444 MsgHdr may contain the following options:

      * ROUTE_TIMEOUT |
           |     ROUTE_RREQ_WAIT_TIME     |     2 seconds     |
           | UNICAST_MESSAGE_SENT_TIMEOUT |      1 second     |
           +------------------------------+-------------------+

                                  Table 3

   The above timing parameter values work well for small and medium
   well-connected networks  <msg-hop-limit>

      *  <msg-hop-count>

      *  PktSource MsgTLV

   UnreachableNode AddrBlk
      This Address Block contains the IP addresses unreachable by AODVv2
      router transmitting the RERR.

   Sequence Number AddrBlk TLV
      This Address Block TLV carries the destination sequence number
      associated with moderate topology changes. the UnreachableNodes when that information is
      available.

   UnreachableNode.PfxLen
      The timing parameters SHOULD prefix length associated with an UnreachableNode.

   There are two kinds of events indicating that packets cannot be administratively configurable
   delivered to certain destinations.  The two cases differ in the way
   that the neighboring IP destination address for the
   network where AODVv2 RERR (i.e.,
   RERR_dest) is used.  Ideally, for networks with frequent
   topology changes chosen, and in the AODVv2 parameters should way that the set of UnreachableNodes
   is identified.

   In both cases, the MsgHdr.<msg-hop-limit> MUST be adjusted using
   either experimentally determined values or dynamic adaptation.  For
   example, in networks with infrequent topology changes
   ROUTE_USED_TIMEOUT may set to
   MAX_HOPCOUNT.  MsgHdr.<msg-hop-count> SHOULD be be included and set
   to 0, to facilitate use of various route repair strategies including
   Intermediate RREP [I-D.perkins-irrep].

8.3.1.  Case 1: Undeliverable Packet

   The first case happens when the router receives a much larger value.

                         Default Parameter Values

   +------------------------+-------+----------------------------------+
   |          Name          | Value |            Description           |
   +------------------------+-------+----------------------------------+
   |      MSG_HOPLIMIT      |   20  |  This value MUST be larger than  |
   |                        |  hops |   the AODVv2 network diameter.   |
   |                        |       |  Otherwise, routing messages may |
   |                        |       | packet but does not reach their intended     |
   |                        |       |           destinations.          |
   | DISCOVERY_ATTEMPTS_MAX |   3   |   The number of route discovery  |
   |                        |       |      attempts to make before     |
   |                        |       |   indicating that
   have a particular   |
   |                        |       |     address is not reachable.    |
   +------------------------+-------+----------------------------------+

                                  Table 4

   In addition to valid route for the above parameters and timing values, several
   administrative options exist.  These options have no influence on
   correct routing behavior, although they may potentially reduce AODVv2
   protocol messaging in certain situations.  The default behavior destination of the packet.  In this case,
   there is exactly one UnreachableNode to
   NOT enable any of these options; and although many of these options
   can be administratively controlled, they may be better served by
   intelligent control.  The following table enumerates several of included in the
   options.

                    Administratively Controlled Options

   +--------------------------+----------------------------------------+
   |           Name           |               Description              |
   +--------------------------+----------------------------------------+
   |  BUFFER_DURING_DISCOVERY |   Whether and how much data to buffer  |
   |                          |         during route discovery.        |
   | APPEND_EXTRA_UNREACHABLE |      Whether to append additional      |
   |                          |    Unreachable information to RERR.    |
   |  CONTROL_TRAFFIC_LIMITS  |  AODVv2 messaging RERR's
   AddrBlk.  RERR_dest SHOULD be limited the multicast address LL-MANET-Routers,
   but RERR_Gen MAY instead set RERR_dest to |
   |                          |     avoid consuming all be the network    |
   |                          |               bandwidth.               |
   +--------------------------+----------------------------------------+

                                  Table 5

   Note: several fields have limited size (bits or bytes) these sizes
   and their encoding may place specific limitations on next hop towards the values that
   can be set.  For example, MsgHdr.HopLimit is a 8-bit field and
   therefore MSG_HOPLIMIT cannot be larger than 255.

5.13.  IANA Considerations

   In its default mode
   source IP address of operation, AODVv2 uses the UDP port 269
   [RFC5498] to carry protocol packets.  AODVv2 also uses packet which was undeliverable.  In the link-local
   multicast address LL-MANET-Routers [RFC5498].

   This section specifies several message types, message tlv-types, and
   address tlv-types.

5.13.1.  AODVv2 Message Types Specification

                           AODVv2 Message Types

                   +------------------------+----------+
                   |          Name          |   Type   |
                   +------------------------+----------+
                   |  Route Request (RREQ)  | 10 - TBD |
                   |   Route Reply (RREP)   | 11 - TBD |
                   |   Route Error (RERR)   | 12 - TBD |
                   +------------------------+----------+

                                  Table 6

5.13.2.  Message and Address Block TLV Type Specification

                             Message TLV Types

   +-------------------+------+--------+-------------------------------+
   |        Name       | Type | Length | Value                         |
   +-------------------+------+--------+-------------------------------+
   |  Unicast Response | 10 - |    0   | Indicates to
   latter case, the processing   |
   |      Request      |  TBD | octets | node that PktSource MsgTLV MUST be included, containing the previous hop    |
   |                   |      |        | (IP.SourceAddress) expects
   the source IP address of the undeliverable packet.  If a  |
   |                   |      |        | unicast reply message within  |
   |                   |      |        | UNICAST_MESSAGE_SENT_TIMEOUT. |
   |                   |      |        | Any unicast packet will serve |
   |                   |      |        | this purpose, and value for
   the UnreachableNode's SeqNum (UnreachableNode.SeqNum) is known, it MAY
   MUST be   |
   |                   |      |        | an ICMP REPLY message.  If    |
   |                   |      |        | placed in the reply RERR.  Otherwise, if no Seqnum AddrTLV is not received,    |
   |                   |      |        | then
   included, all nodes handling the previous hop can     |
   |                   |      |        | RERR will assume that their route through
   RERR_Gen towards the link UnreachableNode is       |
   |                   |      |        | unidirectional no longer valid and MAY        |
   |                   |      |        | blacklist flag
   those routes as broken.  RERR_Gen MUST discard the link to this    |
   |                   |      |        | node.                         |
   +-------------------+------+--------+-------------------------------+

                                  Table 7

5.13.3.  Address Block TLV Specification

                          Address Block TLV Types

   +----------------+------------+----------+--------------------------+
   |      Name      |    Type    |  Length  | Value                    |
   +----------------+------------+----------+--------------------------+
   |     AODVv2     |  10 - TBD  |  up to 2 | The AODVv2 sequence num  |
   |    Sequence    |            |  octets  | associated with this     |
   |     Number     |            |          | address. packet or message
   that triggered generation of the RERR.

8.3.2.  Case 2: Broken Link

   The sequence   |
   | (AODVv2SeqNum) |            |          | number may be second case happens when the last   |
   |                |            |          | known sequence number.   |
   |    Distance    |  11 - TBD  |  up link breaks to 2 | A metric an active downstream
   neighbor (i.e., the next hop of an active route).  In this case,
   RERR_dest MUST be the distance |
   |                |            |  octets  | traversed by multicast address LL-MANET-Routers, except when
   the         |
   |                |            |          | information associated   |
   |                |            |          | with this address.       |
   |  VALIDITY_TIME | 1[RFC5497] |          | The maximum amount optional feature of    |
   |                |            |          | time that information    |
   |                |            |          | can be maintained before |
   |                |            |          | being deleted.  The      |
   |                |            |          | VALIDITY_TIME TLV maintaining precursor lists is     |
   |                |            |          | defined used as
   specified in [RFC5497].    |
   +----------------+------------+----------+--------------------------+

                                  Table 8

5.14.  Security Considerations Section 13.3.  All Active, Idle and Expired routes that
   use the broken link MUST be marked as Broken.  The objective set of the AODVv2 protocol
   UnreachableNodes is for each router to
   communicate reachability information to addresses for initialized by identifying those Active routes
   which it is
   responsible.  Positive routing information (i.e. a route exists) is
   distributed via RteMsgs and negative routing information (i.e. a
   route does not exist) via RERRs.  AODVv2 routers that handle these
   messages store use the contained information to properly forward data
   packets, and they generally provide this information to other AODVv2
   routers.

   This section does not mandate any specific security measures.
   Instead, this section describes various security considerations and
   potential avenues to secure AODVv2 routing.

   The most important security mechanisms for AODVv2 routing are
   integrity/authentication and confidentiality.

   In situations where routing information or router identity are
   suspect, integrity and authentication techniques SHOULD be applied to
   AODVv2 messages.  In these situations, routing information that broken link.  For each such Active Route, Route.Dest is
   distributed over multiple hops SHOULD
   added to the set of Unreachable Nodes.  After the Active Routes using
   the broken link have all been included as UnreachableNodes, idle
   routes MAY also verify be included, as long as the integrity and
   identity packet size of information based on originator the RERR
   does not exceed the MTU of the routing
   information.

   A digital signature could be used to identify physical medium.

   If the source set of AODVv2
   messages UnreachableNodes is empty, no RERR is generated.
   Otherwise, RERR_Gen generates a new RERR, and information, along with its authenticity.  A nonce the address of each
   UnreachableNode (IP.DestinationAddress from a data packet or
   timestamp
   RREP.TargNode.Address) is inserted into an AddrBlock.  If a prefix is
   known for the UnreachableNode.Address, it SHOULD also be used included.
   Otherwise, the UnreachableNode.Address is assumed to protect against replay attacks.
   S/MIME and OpenPGP are two authentication/integrity protocols that
   could be adapted a host
   address with a full length prefix.  The value for this purpose.

   In situations where confidentiality of AODVv2 messages is important,
   cryptographic techniques can each
   UnreachableNode's SeqNum (UnreachableNode.SeqNum) MUST be applied.

   In certain situations, for example sending placed in a RREP or RERR,
   SeqNum AddrTLV.  If none of UnreachableNode.Addr entries are
   associated with known prefix lengths, then the AddrBLK SHOULD NOT
   include any prefix-length information.  Otherwise, for each
   UnreachableNode.Addr that does not have any associated prefix-length
   information, the prefix-length for that address MUST be assigned to
   zero.

8.4.  Receiving and Handling RERR Messages

   When an AODVv2 router could include proof that (HandlingRtr) receives a RERR message, it has previously received valid
   routing uses
   the information provided to reach invalidate affected routes.  If the destination, at one point of time
   information in the past.  In situations where routers are suspected RERR may be useful to upstream neighbors using
   those routes, HandlingRtr subsequently sends another RERR to those
   neighbors.  This operation has the effect of transmitting
   maliciously erroneous information, retransmitting the original routing RERR
   information
   along with its security credentials SHOULD be included.

   Note that if multicast is used, any confidentiality and integrity
   algorithms used MUST permit multiple receivers to handle the message.

   Routing protocols, however, are prime targets is counted as another "hop" for impersonation
   attacks.  In networks where purposes of properly
   modifying Msg.<msg-hop-limit> and Msg.<msg-hop-count>.

   HandlingRtr examines the node membership is not known, it is
   difficult incoming RERR to determine the occurrence of impersonation attacks, assure that it contains
   Msg.<msg-hop-limit> and
   security prevention techniques are difficult at best.  However, when least one UnreachableNode.Address.  If the network membership
   required information does not exist, the incoming RERR message is known
   disregarded and there is further processing stopped.  Otherwise, for each
   UnreachableNode.Address, HandlingRtr searches its route table for a danger of
   route using longest prefix matching.  If no such
   attacks, AODVv2 messages must be protected by Route is found,
   processing is complete for that UnreachableNode.Address.  Otherwise,
   HandlingRtr verifies the use of
   authentication techniques, such as those involving generation of
   unforgeable and cryptographically strong message digests or digital
   signatures.  While AODVv2 does not place restrictions following:

   1.  The UnreachableNode.Address is a routable unicast address.

   2.  Route.NextHopAddress is the same as RERR IP.SourceAddress.

   3.  Route.NextHopInterface is the same as the interface on which the
   authentication mechanism used for this purpose, IPsec Authentication
   Message (AH)
       RERR was received.

   4.  The UnreachableNode.SeqNum is an appropriate choice unknown, OR Route.SeqNum <=
       UnreachableNode.SeqNum (using signed 16-bit arithmetic).

   If the route satisfies all of the above conditions, HandlingRtr sets
   the Route.Broken flag for cases where that route.  Furthermore, if Msg.<msg-hop-
   limit> is greater than 0, then HandlingRtr adds the nodes share UnreachableNode
   address and TLV information to an appropriate security association that enables AddrBlk for for delivery in the use of AH.

   In particular, routing messages SHOULD be authenticated
   outgoing RERR message to avoid
   creation one or more of spurious routes HandlingRtr's upstream
   neighbors.

   If there are no UnreachableNode addresses to a destination.  Otherwise, be transmitted in an attacker
   could masquerade as that destination and maliciously deny service
   RERR to upstream routers, HandlingRtr MUST discard the destination and/or maliciously inspect RERR, and consume traffic
   intended for delivery to no
   further action is taken.

   Otherwise, Msg.<msg-hop-limit> is decremented by one (1) and
   processing continues as follows:

   o  If precursor lists are (optionally) maintained, the destination. outgoing RERR messages
      SHOULD be
   authenticated in order sent to prevent malicious nodes from disrupting the active routes between communicating nodes.

   If precursors of the mobile nodes broken route as
      specified in Section 13.3.

   o  Otherwise, if the ad hoc network have pre-established
   security associations, incoming RERR message was received at the purposes for which LL-
      MANET-Routers [RFC5498] multicast address, the security
   associations are created should include that of authorizing outgoing RERR
      SHOULD also be sent to LL-MANET-Routers.

   o  Otherwise, if the
   processing of AODVv2 control packets.  Given this understanding, PktSource MsgTLV is present, and HandlingRtr has
      a Route to PktSource.Addr, then HandlingRtr MUST send the
   mobile nodes should outgoing
      RERR to Route[PktSource.Addr].NextHop.

   o  Otherwise, the outgoing RERR MUST be able sent to use LL-MANET-Routers.

9.  Unknown Message and TLV Types

   If a message with an unknown type is received, the same authentication mechanisms
   based on their IP addresses as they would have used otherwise.

5.15.  Acknowledgments

   AODVv2 message is a descendant
   disregarded.

   For handling of messages that contain unknown TLV types, ignore the design
   information for processing, preserve it unmodified for forwarding.

10.  Simple Internet Attachment

   Simple Internet attachment means attachment of previous MANET on-demand
   protocols, especially AODV [RFC3561] a stub (i.e., non-
   transit) network of AODVv2 routers to the Internet via a single
   Internet AODVv2 router (called IAR).

   As in any Internet-attached network, AODVv2 routers, and DSR [RFC4728].  Changes their
   clients, wishing to
   previous MANET on-demand protocols stem be reachable from research hosts on the Internet MUST have
   IP addresses within the IAR's routable and
   implementation experiences.  Thanks to Elizabeth Belding-Royer topologically correct
   prefix (e.g. 191.0.2.0/24).

   The IAR is responsible for
   her long time authorship of AODV.  Additional thanks generating RREQ messages to Luke Klein-
   Berndt, Pedro Ruiz, Fransisco Ros, Koojana Kuladinithi, Ramon
   Caceres, Thomas Clausen, Christopher Dearlove, Seung Yi, Romain
   Thouvenin, Tronje Krop, Henner Jakob, Alexandru Petrescu, Christoph
   Sommer, Cong Yuan, Lars Kristensen, and Derek Atkins for reviewing find nodes
   within the MANET on behalf of
   AODVv2, nodes on the Internet, as well as several specification suggestions.

   This revision of AODVv2 isolates the minimal base specification and
   other optional features
   responding to simplify route requests from the process AODVv2 MANET on behalf of ensuring
   compatibility with the existing LOADng specification
   [I-D.clausen-lln-loadng] (minimal reactive routing protocol
   specification).  Thanks are due
   nodes on the Internet.

       /-------------------------\
      / +----------------+        \
     /  |  AODVv2 Router |         \
     |  |  191.0.2.2/32  |         |
     |  +----------------+         |            Routable
     |                       +-----+--------+   Prefix
     |                       |   Internet   |  /191.0.2/24
     |                       | AODVv2 Router| /
     |                       |  191.0.2.1   |/       /----------------\
     |                       | serving net  +-------+     Internet     \
     |                       |  191.0.2/24  |       \                  /
     |                       +-----+--------+        \----------------/
     |         +----------------+  |
     |         |  AODVv2 Router |  |
     |         |  191.0.2.3/32  |  |
     \         +----------------+  /
      \                           /
       \-------------------------/

               Figure 3: Simple Internet Attachment Example

   When an AODVv2 router within the AODVv2 MANET wants to T. Clausen, A. Colin de Verdiere,
   J. Yi, A. Niktash, Y. Igarashi, Satoh.  H., and U. Herberg discover a
   route toward a node on the Internet, it uses the normal AODVv2 route
   discovery for their
   development that IP Destination Address.  The IAR MUST respond to
   RREQ on behalf of LOADng and sharing details all Internet destinations.

   When a packet from a node on the Internet destined for ensuring
   appropriateness of a node in the
   AODVv2 MANET reaches the IAR, if the IAR does not have a route toward
   that destination it will perform normal AODVv2 route discovery for LLNs.

6.  References

6.1.  Normative References

   [RFC1812]  Baker, F., "Requirements for IP Version 4 Routers",
              RFC 1812, June 1995.

   [RFC2119]  Bradner, S., "Key words for use
   that destination.

11.  Multiple Interfaces

   AODVv2 may be used with multiple interfaces; therefore, the
   particular interface over which packets arrive MUST be known whenever
   a packet is received.  Whenever a new route is created, the interface
   through which the Route.Address can be reached is also recorded in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC5082]  Gill, V., Heasley, J., Meyer, D., Savola, P.,
   the route table entry.

   When multiple interfaces are available, a node transmitting a
   multicast packet with IP.DestinationAddress set to LL-MANET-Routers
   SHOULD send the packet on all interfaces that have been configured
   for AODVv2 operation.

   Similarly, AODVv2 routers SHOULD subscribe to LL-MANET-Routers on all
   their AODVv2 interfaces.

12.  AODVv2 Control Packet/Message Generation Limits

   To avoid messaging overload, each AODVv2 router's rate of packet/
   message generation SHOULD be limited.  The rate and C.
              Pignataro, "The Generalized TTL Security Mechanism
              (GTSM)", RFC 5082, October 2007.

   [RFC5444]  Clausen, T., Dearlove, C., Dean, J., algorithm for
   limiting messages (CONTROL_TRAFFIC_LIMITS) is left to the implementor
   and C. Adjih,
              "Generalized Mobile Ad Hoc Network (MANET) Packet/Message
              Format", RFC 5444, February 2009.

   [RFC5497]  Clausen, T. should be administratively configurable.  AODVv2 messages SHOULD
   be discarded in the following order of preference: RREQ, RREP, and C. Dearlove, "Representing Multi-Value
              Time
   finally RERR.

13.  Optional Features

   Some optional features of AODVv2, associated with AODV, are not
   required by minimal implementations.  These features are expected to
   be useful in Mobile Ad Hoc Networks (MANETs)", RFC 5497,
              March 2009.

   [RFC5498]  Chakeres, I., "IANA Allocations networks with greater mobility, or larger node
   populations, or requiring shorter latency for Mobile Ad Hoc Network
              (MANET) Protocols", RFC 5498, March 2009.

6.2.  Informative References

   [I-D.clausen-lln-loadng]
              Clausen, T., Verdiere, A., Yi, J., Niktash, A., Igarashi,
              Y., Satoh, H., Herberg, U., Lavenu, C., Lys, T., and C.
              Perkins, "The LLN On-demand Ad hoc Distance-vector Routing
              Protocol application launches.
   The optional features are as follows:

   o  Expanding Rings Multicast

   o  Intermediate RREPs (iRREPs): Without iRREP, only the destination
      can respond to a RREQ.

   o  Precursor lists.

   o  Reporting Multiple Unreachable Nodes.  An RERR message can carry
      more than one Unreachable Destination node for cases when a single
      link breakage causes multiple destinations to become unreachable
      from an intermediate router.

   o  RREP_ACK.

   o  Message Aggregation.

   o  Inclusion of Added Routing Information.

13.1.  Expanding Rings Multicast

   For multicast RREQ, Msg.<msg-hop-limit> MAY be set in accordance with
   an expanding ring search as described in [RFC3561] to limit the RREQ
   propagation to a subset of the local network and possibly reduce
   route discovery overhead.

13.2.  Intermediate RREP

   This specification has been published as a separate Internet Draft
   [I-D.perkins-irrep].

13.3.  Precursor Lists and Notifications

   This section specifies an interoperable enhancement to AODVv2 (and
   possibly other reactive routing protocols) enabling more economical
   notifications to active sources of traffic upon determination that a
   route needed to forward such traffic to its destination has become
   Broken.

13.3.1.  Overview

   In many circumstances, there might be several sources of traffic for
   any particular destination.  Each such source of traffic is known as
   a "precursor" for the destination, as well as all upstream routers
   between the forwarding AODVv2 router and the traffic source.  For
   each active destination, an AODVv2 router MAY choose to keep track of
   the upstream neighbors that have provided traffic for that
   destination; there is no need to keep track of upstream routers any
   farther away than the next hop.

   Moreover, any particular link to an adjacent AODVv2 router may be a
   path component of multiple routes towards various destinations.  The
   precursors for all destinations using the next hop across any link
   are collectively known as the precursors for that next hop.

   When an AODVv2 router determines that an active link to one of its
   downstream neighbors has broken, the AODVv2 router detecting the
   broken link must mark multiple routes as Broken, for each of the
   newly unreachable destinations, as described in Section 8.3.  Each
   route that relies on the newly broken link is no longer valid.
   Furthermore, the precursors of the broken link should be notified
   (using RERR) about the change in status of their route to a
   destination downstream along the broken next hop.

13.3.2.  Precursor Notification Details

   During normal operation, each AODVv2 router wishing to maintain
   precursor lists as described above, maintains a precursor table and
   updates the table whenever the node forwards traffic to one of the
   destinations in its route table.  For each precursor in the precursor
   list, a record must be maintained to indicate whether the precursor
   has been used for recent traffic (in other words, whether the
   precursor is an Active precursor).  So, when traffic arrives from a
   precursor, the Current_Time is used to mark the time of last use for
   the precursor list element associated with that precursor.

   When an AODVv2 router detects that a link is broken, then for each
   precursor using that next hop, the node MAY notify the precursor
   using either unicast or multicast RERR:

   unicast RERR to each Active precursor
      This option is useful when there are few Active precursors
      compared to the number of neighboring AODVv2 routers.

   multicast RERR to RERR_PRECURSORS
      RERR_PRECURSORS is, by default, LL-MANET-Routers [RFC5498].  This
      option is typically preferable since fewer packet transmissions
      are required.

   Each active upstream neighbor (i.e., precursor) MAY then execute the
   same procedure until all active upstream routers have received the
   RERR notification.

13.4.  Multicast RREP Response to RREQ

   The RREQ Target Router (RREP_Gen) MAY, as an alternative to
   unicasting a RREP, be configured to distribute routing information
   about the route toward the RREQ TargNode (TargRtr's client) more
   widely.  That is, RREP_Gen MAY be configured respond to a route
   discovery by generating a RREP, using the procedure in Section 7.4,
   but multicasting the RREP to LL-MANET-Routers [RFC5498].  Afterwards,
   RREP_Gen processing for the incoming RREQ is complete.

   Broadcast response to incoming RREQ was originally specified to
   handle unidirectional links, but it is expensive.  Due to the
   significant overhead, AODVv2 routers MUST NOT use multicast RREP
   unless configured to do so by setting the administrative parameter
   USE_MULTICAST_RREP.

13.5.  RREP_ACK

   Instead of relying on existing mechanisms for requesting verification
   of link bidirectionality during Route Discovery, RREP_Ack is provided
   as an optional feature and modeled on the RREP_Ack message type from
   AODV [RFC3561].

   Since the RREP_ACK is simply echoed back to the node from which the
   RREP was received, there is no need for any additional RFC 5444
   address information (or TLVs).  Considerations of packet TTL are as
   specified in Section 5.4.  The message format is illustrated in
   section Appendix A.4.

13.6.  Message Aggregation

   The aggregation of multiple messages into a packet is specified in
   RFC 5444 [RFC5444].

   Implementations MAY choose to briefly delay transmission of messages
   for the purpose of aggregation (into a single packet) or to improve
   performance by using jitter [RFC5148].

13.7.  Added Routing Information in RteMsgs

   DSR [RFC4728] includes source routes as part of the data of its RREPs
   and RREQs.  Doign so allows additional topology information to be
   multicast along with the RteMsg, and potentially allows updating for
   stale routing information at MANET routers along new paths between
   source and destination.  To maintain this functionality, AODVv2 has
   defined a somewhat more general method that enables inclusion of
   source routes in RteMsgs.

   Appending routing information can eliminate some route discovery
   attempts to the nodes whose information is included, if handling
   AODVv2 routers use this information to update their routing tables.

   Note that, since the initial merger of DSR with AODV to create this
   protocol, further experimentation has shown that including the
   additional routing information is not always helpful.  Sometimes it
   seems to help, and other times it seems to reduce overall
   performance.  The results depend upon packet size and traffic
   patterns.

13.7.1.  Including Added Node Information

   An AODVv2 router (HandlingRtr) MAY optionally append AddedNode
   routing information to a RteMsg.  This is controllable by an option
   (APPEND_INFORMATION) which SHOULD be administratively configurable or
   controlled according to the traffic characteristics of the network.

   The following notation is used to specify the methods for inclusion
   of routing information for addtional nodes.

   AddedNode
      The IP address of an additional node that can be reached via the
      AODVv2 router adding this information.  Each AddedNode.Address
      MUST include its prefix.  Each AddedNode.Address MUST also have an
      associated Node.SeqNum in the address TLV block.

   AddedNode.SeqNum
      The AODVv2 sequence number associated with this routing
      information.

   AddedNode.Metric
      The cost of the route needed to reach the associated
      AddedNode.Address.  This field is increased by Cost(L) at each
      intermediate AODVv2 router, where 'L' is the incoming link.  If,
      for the Metric Type of the AddrBlk, it is not known how to compute
      Cost(L), the AddedNode.Addr information MUST be deleted from the
      AddedNode AddrBlk.

   The VALIDITY_TIME of routing information for appended address(es)
   MUST be included, to inform routers about when to expire this
   information.  A typical value for VALIDITY_TIME is (ACTIVE_INTERVAL+
   MAX_IDLETIME) - (Current_Time - Route.LastUsed) but other values
   (less than MAX_SEQNUM_TIME) MAY be chosen.  The VALIDITY_TIME TLV is
   defined in [RFC5497].

   SeqNum and Metric AddrTLVs about any appended address(es) MUST be
   included.

   Routing information about the TargNode MUST NOT be added to the
   AddedAddrBlk.  Also, duplicate address entries SHOULD NOT be added.
   Only the best routing information (Section 6.1) for a particular
   address SHOULD be included; if route information is included for a
   destination address already in the AddedAddrBlk, the previous
   information SHOULD NOT be included in the outgoing RteMsg.

13.7.2.  Handling Added Node Information

   An intermediate node (i.e., HandlingRtr) obeys the following
   procedures when processing AddedNode.Address information and other
   associated TLVs that are included with a RteMsg.  For each AddedNode
   (except the TargetNode) in the RteMsg, the AddedNode.Metric
   information MUST be increased by Cost(L), where 'L' is the incoming
   link.  If, for the Metric Type of the AddrBlk, it is not known how to
   compute Cost(L), the AddedNode.Addr information MUST be deleted from
   the AddedNode AddrBlk.  If the resulting Cost of the route to the
   AddedNode is greater than MAX_METRIC[i], the AddedNode information is
   discarded.  If the resulting Distance value for another node is
   greater than MAX_METRIC[i], the associated address and its
   information are removed from the RteMsg.

   After handling the OrigNode's routing information, then each address
   that is not the TargetNode MAY be considered for creating and
   updating routes.  Creating and updating routes to other nodes can
   eliminate RREQ for those IP destinations, in the event that data
   needs to be forwarded to the IP destination(s) now or in the near
   future.

   For each of the additional addresses considered, HandlingRtr first
   checks that the address is a routable unicast address.  If the
   address is not a unicast address, then the address and all related
   information MUST be removed.

   If the routing table does not have a matching route with a known
   Route.SeqNum for this additional address using longest-prefix
   matching, then a route MAY be created and updated as described in
   Section 6.2.  If a route table entry exists with a known
   Route.SeqNum, the incoming routing information is compared with the
   route table entry following the procedure described in Section 6.1.
   If the incoming routing information is used, the route table entry
   SHOULD be updated as described in Section 6.2.

   If the routing information for an AddedNode.Address is not used, then
   it is removed from the RteMsg.

   If route information is included for a destination address already in
   the AddedAddrBlk, the previous information SHOULD NOT be included in
   the outgoing RteMsg.

14.  Administratively Configured Parameters and Timer Values

   AODVv2 contains several parameters which MUST be administratively
   configured.  The list of these follows:

   +------------------------+------------------------------------------+
   |          Name          |                Description               |
   +------------------------+------------------------------------------+
   |    CLIENT_ADDRESSES    |  List of addresses and routing prefixes, |
   |                        |      for which this AODVv2 router is     |
   |                        | responsible.  If the list is empty, this |
   |                        |   AODVv2 router is only responsible for  |
   |                        |            its own addresses.            |
   |   USE_MULTICAST_RREP   |   Whether or not to use multicast RREP   |
   |                        |            (see Section 13.4).           |
   |   DEFAULT_METRIC_TYPE  |       3 (Hop Count {see [RFC6551]}       |
   |    AODVv2_INTERFACES   |  List of the interfaces participating in |
   |                        |         AODVv2 routing protocol.         |
   +------------------------+------------------------------------------+

         Table 2: Required Administratively Configured Parameters

   AODVv2 requires certain timing information to be associated with
   route table entries.  The default values are as follows:

              +------------------------------+-------------+
              |             Name             |    Value    |
              +------------------------------+-------------+
              |        ACTIVE_INTERVAL       |   5 second  |
              |         MAX_IDLETIME         | 200 seconds |
              |      MAX_SEQNUM_LIFETIME     | 300 seconds |
              |     ROUTE_RREQ_WAIT_TIME     |  2 seconds  |
              | UNICAST_MESSAGE_SENT_TIMEOUT |   1 second  |
              |      RREQ_HOLDDOWN_TIME      |  10 seconds |
              +------------------------------+-------------+

                 Table 3: Default Timing Parameter Values

   The above timing parameter values have worked well for small and
   medium well-connected networks with moderate topology changes.

   The timing parameters SHOULD be administratively configurable for the
   network where AODVv2 is used.  Ideally, for networks with frequent
   topology changes the AODVv2 parameters should be adjusted using
   either experimentally determined values or dynamic adaptation.  For
   example, in networks with infrequent topology changes MAX_IDLETIME
   may be set to a much larger value.

   +------------------------+-----------+------------------------------+
   |          Name          |   Value   |          Description         |
   +------------------------+-----------+------------------------------+
   |      MAX_HOPCOUNT      |  20 hops  |   This value MUST be larger  |
   |                        |           |    than the AODVv2 network   |
   |                        |           |     diameter.  Otherwise,    |
   |                        |           |   routing messages may not   |
   |                        |           |     reach their intended     |
   |                        |           |         destinations.        |
   |      MAX_METRIC[i]     |    Not    |    If defined, this is the   |
   |                        | Specified |   maximum permissible value  |
   |                        |  in This  |   for Metric Type 'i' (see   |
   |                        |  Document |          [RFC6551]).         |
   |         MAXTIME        |    TBD    |    The maximum expressible   |
   |                        |           |     value for clock time.    |
   | DISCOVERY_ATTEMPTS_MAX |     3     |      The number of route     |
   |                        |           |  discovery attempts to make  |
   |                        |           |   before indicating that a   |
   |                        |           |   particular address is not  |
   |                        |           |          reachable.          |
   |           MTU          |   TBD --  |    Determines the maximum    |
   |                        |  depends  |  number of RFC 5444 AddrBlk  |
   |                        |     on    |            entries           |
   |                        |  address  |                              |
   |                        |   family  |                              |
   +------------------------+-----------+------------------------------+

                     Table 4: Default Parameter Values

   In addition to the above parameters and timing values, several
   administrative options exist.  These options have no influence on
   correct routing behavior, although they may potentially reduce AODVv2
   protocol messaging in certain situations.  The default behavior is to
   NOT enable any of these options; and although many of these options
   can be administratively controlled, they may be better served by
   intelligent control.  The following table enumerates several of the
   options.

   +-------------------------+-----------------------------------------+
   |           Name          |               Description               |
   +-------------------------+-----------------------------------------+
   |    APPEND_INFORMATION   |     Whether or not appending routing    |
   |                         |  information for AddedNodes to a RteMsg |
   |                         |               is enabled.               |
   |   BUFFER_SIZE_PACKETS   |                    2                    |
   |    BUFFER_SIZE_BYTES    |          MAX_PACKET_SIZE [TBD]          |
   | APPEND_IDLE_UNREACHABLE |      Whether to append Unreachable      |
   |                         |  information about idle routes to RERR. |
   |  CONTROL_TRAFFIC_LIMIT  |            TBD [50 msgs/sec?]           |
   +-------------------------+-----------------------------------------+

               Table 5: Administratively Controlled Options

   Note: several fields have limited size (bits or bytes).  These sizes
   and their encoding may place specific limitations on the values that
   can be set.  For example, MsgHdr.<msg-hop-count> is a 8-bit field and
   therefore MAX_HOPCOUNT cannot be larger than 255.

15.  IANA Considerations

   This section specifies several message types, message tlv-types, and
   address tlv-types.  Also, a new registry of 16-bit alternate metric
   types is specified.

15.1.  AODVv2 Message Types Specification

           +----------------------------------------+----------+
           |                  Name                  |   Type   |
           +----------------------------------------+----------+
           |          Route Request (RREQ)          | 10 - TBD |
           |           Route Reply (RREP)           | 11 - TBD |
           |           Route Error (RERR)           | 12 - TBD |
           | Route Reply Acknowledgement (RREP_ACK) | 13 - TBD |
           +----------------------------------------+----------+

                       Table 6: AODVv2 Message Types

15.2.  Message and Address Block TLV Type Specification

   +-------------------+------+--------+-------------------------------+
   |        Name       | Type | Length | Value                         |
   +-------------------+------+--------+-------------------------------+
   |  Unicast Response | 10 - |    0   | Indicates to the handling     |
   | Request (RespReq) |  TBD | octets | (receiving) AODVv2 router     |
   |                   |      |        | that the previous hop         |
   |                   |      |        | (IP.SourceAddress) expects a  |
   |                   |      |        | unicast reply message within  |
   |                   |      |        | UNICAST_MESSAGE_SENT_TIMEOUT. |
   |                   |      |        | --                            |
   |  Destination RREP | 11 - |    0   | Indicates that intermediate   |
   |  Only (DestOnly)  |  TBD | octets | RREPs are prohibited.         |
   |                   |      |        | --                            |
   |  Packet source IP | 12 - |  4 or  | Provides the IP address for   |
   |      address      |  TBD |   16   | RERR messages generated due   |
   |    (PktSource)    |      | octets | to inability to deliver a     |
   |                   |      |        | packet.                       |
   |                   |      |        | --                            |
   |    Metric Type    | 13 - |    1   | Type of metric in the Metric8 |
   |                   |  TBD |  octet | or Metric16 AddrTLV.          |
   +-------------------+------+--------+-------------------------------+

                        Table 7: Message TLV Types

15.3.  Address Block TLV Specification

   +---------------+------------+----------+---------------------------+
   |      Name     |    Type    |  Length  | Value                     |
   +---------------+------------+----------+---------------------------+
   | VALIDITY_TIME | 1[RFC5497] |  1 octet | The maximum amount of     |
   |               |            |          | time that information can |
   |               |            |          | be maintained before      |
   |               |            |          | being deleted.  The       |
   |               |            |          | VALIDITY_TIME TLV is      |
   |               |            |          | defined in [RFC5497].     |
   |               |            |          | --                        |
   |    Sequence   |  10 - TBD  | 2 octets | The latest AODVv2         |
   |     Number    |            |          | sequence number           |
   |    (SeqNum)   |            |          | associated with the       |
   |               |            |          | address.                  |
   |    Metric8    |  11 - TBD  |  1 octet | 8-bit Cost of the route   |
   |               |            |          | to reach the destination  |
   |               |            |          | address.                  |
   |    Metric16   |  12 - TBD  | 2 octets | 16-bit Cost of the route  |
   |               |            |          | to reach the destination  |
   |               |            |          | address.                  |
   +---------------+------------+----------+---------------------------+

                Table 8: Address Block TLV (AddrTLV) Types

   The same number space should be used for both Metric8 and Metric16
   metric types.

15.4.  Metric Type Number Allocation

   Metric types are identified according to the assignments as specified
   in [RFC6551].  The metric type of the Hop Count metric is assigned to
   be 3, in order to maintain compatibility with that existing table of
   values from RFC 6551.  If non-additive metrics are to be used, the
   specification for assessing the usability of route updates (see
   Section 6.1 ) may require changes.

             +-----------------------+----------+-----------+
             |          Name         |   Type   |    Size   |
             +-----------------------+----------+-----------+
             |        Reserved       |     0    | Undefined |
             |      Unallocated      |  1 -- 2  |    TBD    |
             |       Hop Count       |  3 - TBD |  1 octet  |
             |      Unallocated      | 4 -- 254 |    TBD    |
             |        Reserved       |    255   | Undefined |
             +-----------------------+----------+-----------+

                           Table 9: Metric Types

16.  Security Considerations

   The objective of the AODVv2 protocol is for each router to
   communicate reachability information about addresses for which it is
   responsible.  Positive routing information (i.e. a route exists) is
   distributed via RteMsgs and negative routing information (i.e. a
   route does not exist) via RERRs.  AODVv2 routers that handle these
   messages store the contained information to properly forward data
   packets, and they generally provide this information to other AODVv2
   routers.

   This section does not mandate any specific security measures.
   Instead, this section describes various security considerations and
   potential avenues to secure AODVv2 routing.

   The most important security mechanisms for AODVv2 routing are
   integrity/authentication and confidentiality.

   In situations where routing information or router identity are
   suspect, integrity and authentication techniques SHOULD be applied to
   AODVv2 messages.  In these situations, routing information that is
   distributed over multiple hops SHOULD also verify the integrity and
   identity of information based on originator of the routing
   information.

   A digital signature could be used to identify the source of AODVv2
   messages and information, along with its authenticity.  A nonce or
   timestamp SHOULD also be used to protect against replay attacks.
   S/MIME and OpenPGP are two authentication/integrity protocols that
   could be adapted for this purpose.

   In situations where confidentiality of AODVv2 messages is important,
   cryptographic techniques can be applied.

   In certain situations, for example sending a RREP or RERR, an AODVv2
   router could include proof that it has previously received valid
   routing information to reach the destination, at one point of time in
   the past.  In situations where routers are suspected of transmitting
   maliciously erroneous information, the original routing information
   along with its security credentials SHOULD be included.

   Note that if multicast is used, any confidentiality and integrity
   algorithms used MUST permit multiple receivers to handle the message.

   Routing protocols, however, are prime targets for impersonation
   attacks.  In networks where the node membership is not known, it is
   difficult to determine the occurrence of impersonation attacks, and
   security prevention techniques are difficult at best.  However, when
   the network membership is known and there is a danger of such
   attacks, AODVv2 messages must be protected by the use of
   authentication techniques, such as those involving generation of
   unforgeable and cryptographically strong message digests or digital
   signatures.  While AODVv2 does not place restrictions on the
   authentication mechanism used for this purpose, IPsec Authentication
   Message (AH) is an appropriate choice for cases where the nodes share
   an appropriate security association that enables the use of AH.

   In particular, routing messages SHOULD be authenticated to avoid
   creation of spurious routes to a destination.  Otherwise, an attacker
   could masquerade as that destination and maliciously deny service to
   the destination and/or maliciously inspect and consume traffic
   intended for delivery to the destination.  RERR messages SHOULD be
   authenticated in order to prevent malicious nodes from disrupting
   active routes between communicating nodes.

   If the mobile nodes in the ad hoc network have pre-established
   security associations, the purposes for which the security
   associations are created should include that of authorizing the
   processing of AODVv2 control packets.  Given this understanding, the
   mobile nodes should be able to use the same authentication mechanisms
   based on their IP addresses as they would have used otherwise.

   If the mobile nodes in the ad hoc network have pre-established
   security associations, the purposes for which the security
   associations Most AODVv2 messages are transmitted to the multicast
   address LL-MANET-Routers [RFC5498].  It is therefore required for
   security that AODVv2 neighbors exchange security information that can
   be used to insert an ICV [RFC6621] into the AODVv2 message block
   [RFC5444].  This enables hop-by-hop security, which is proper for
   these message types that may have mutable fields.  For destination-
   only RREP discovery procedures, AODVv2 routers that share a security
   association SHOULD use the appropriate mechanisms as specified in RFC
   6621.  The establishment of these security associations is out of
   scope for this document.

17.  Acknowledgments

   AODVv2 is a descendant of the design of previous MANET on-demand
   protocols, especially AODV [RFC3561] and DSR [RFC4728].  Changes to
   previous MANET on-demand protocols stem from research and
   implementation experiences.  Thanks to Elizabeth Belding-Royer for
   her long time authorship of AODV.  Additional thanks to Luke Klein-
   Berndt, Pedro Ruiz, Fransisco Ros, Henning Rogge, Koojana
   Kuladinithi, Ramon Caceres, Thomas Clausen, Christopher Dearlove,
   Seung Yi, Romain Thouvenin, Tronje Krop, Henner Jakob, Alexandru
   Petrescu, Christoph Sommer, Cong Yuan, Lars Kristensen, and Derek
   Atkins for reviewing of AODVv2, as well as several specification
   suggestions.

   This revision of AODVv2 separates the minimal base specification from
   other optional features to expedite the process of assuring
   compatibility with the existing LOADng specification
   [I-D.clausen-lln-loadng] (minimal reactive routing protocol
   specification).  Thanks are due to T. Clausen, A. Colin de Verdiere,
   J. Yi, A. Niktash, Y. Igarashi, Satoh.  H., and U. Herberg for their
   development of LOADng and sharing details for assuring
   appropriateness of AODVv2 for their application.

18.  References

18.1.  Normative References

   [RFC1812]  Baker, F., "Requirements for IP Version 4 Routers",
              RFC 1812, June 1995.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC5082]  Gill, V., Heasley, J., Meyer, D., Savola, P., and C.
              Pignataro, "The Generalized TTL Security Mechanism
              (GTSM)", RFC 5082, October 2007.

   [RFC5444]  Clausen, T., Dearlove, C., Dean, J., and C. Adjih,
              "Generalized Mobile Ad Hoc Network (MANET) Packet/Message
              Format", RFC 5444, February 2009.

   [RFC5497]  Clausen, T. and C. Dearlove, "Representing Multi-Value
              Time in Mobile Ad Hoc Networks (MANETs)", RFC 5497,
              March 2009.

   [RFC5498]  Chakeres, I., "IANA Allocations for Mobile Ad Hoc Network
              (MANET) Protocols", RFC 5498, March 2009.

   [RFC6551]  Vasseur, JP., Kim, M., Pister, K., Dejean, N., and D.
              Barthel, "Routing Metrics Used for Path Calculation in
              Low-Power and Lossy Networks", RFC 6551, March 2012.

18.2.  Informative References

   [I-D.clausen-lln-loadng]
              Clausen, T., Verdiere, A., Yi, J., Niktash, A., Igarashi,
              Y., Satoh, H., Herberg, U., Lavenu, C., Lys, T., Perkins,
              C., and J. Dean, "The Lightweight On-demand Ad hoc
              Distance-vector Routing Protocol - Next Generation
              (LOADng)", draft-clausen-lln-loadng-06 (work in progress),
              October 2012.

   [I-D.perkins-irrep]
              Perkins, C. and I. Chakeres, "Intermediate RREP for
              dynamic MANET On-demand (AODVv2) Routing",
              draft-perkins-irrep-02 (work in progress), November 2012.

   [Perkins99]
              Perkins, C. and E. Belding-Royer, "Ad hoc On-Demand
              Distance Vector (AODV) Routing", Proceedings of the 2nd
              IEEE Workshop on Mobile Computing Systems and
              Applications, New Orleans, LA, pp. 90-100, February 1999.

   [RFC2328]  Moy, J., "OSPF Version 2", STD 54, RFC 2328, April 1998.

   [RFC2501]  Corson, M. and J. Macker, "Mobile Ad hoc Networking
              (MANET): Routing Protocol Performance Issues and
              Evaluation Considerations", RFC 2501, January 1999.

   [RFC3561]  Perkins, C., Belding-Royer, E., and S. Das, "Ad hoc On-
              Demand Distance Vector (AODV) Routing", RFC 3561,
              July 2003.

   [RFC4193]  Hinden, R. and B. Haberman, "Unique Local IPv6 Unicast
              Addresses", RFC 4193, October 2005.

   [RFC4728]  Johnson, D., Hu, Y., and D. Maltz, "The Dynamic Source
              Routing Protocol (DSR) for Mobile Ad Hoc Networks for
              IPv4", RFC 4728, February 2007.

   [RFC4861]  Narten, T., Nordmark, E., Simpson, W., and H. Soliman,
              "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861,
              September 2007.

   [RFC5148]  Clausen, T., Dearlove, C., and B. Adamson, "Jitter
              Considerations in Mobile Ad Hoc Networks (MANETs)",
              RFC 5148, February 2008.

   [RFC5340]  Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF
              for IPv6", RFC 5340, July 2008.

   [RFC6130]  Clausen, T., Dearlove, C., and J. Dean, "Mobile Ad Hoc
              Network (MANET) Neighborhood Discovery Protocol (NHDP)",
              RFC 6130, April 2011.

   [RFC6549]  Lindem, A., Roy, A., and S. Mirtorabi, "OSPFv2 Multi-
              Instance Extensions", RFC 6549, March 2012.

   [RFC6621]  Macker, J., "Simplified Multicast Forwarding", RFC 6621,
              May 2012.

Appendix A.  Example RFC 5444-compliant packet formats

   The following three subsections show example RFC 5444-compliant
   packets for AODVv2 message types RREQ, RREP, and RERR.  These
   proposed message formats are designed based on expected savings from
   IPv6 addressable MANET nodes, and a layout for the Address TLVs that
   may be viewed as natural, even if perhaps not the absolute most
   compact possible encoding.

   For RteMsgs, the msg-hdr fields are followed by at least one and
   optionally two Address Blocks.  The first AddrBlk contains OrigNode
   and TargNode.  For each AddrBlk, there must be AddrTLVs of type
   Seqnum and of type Metric.

   In addition to the Seqnum TLV, there MUST be an AddrTLV of type
   Metric.  The msg-hop-count is counts the number of hops followed by
   the RteMsg from RteMsg_Orig to the current intermediate AODVv2 router
   handling the RteMsg.  Alternate metrics are enabled by the inclusion
   of the MetricType MsgTLV.  When there is no such MetricType MsgTLV
   present, then the Metric AddrTLV measures HopCount.  The Metric
   AddrTLV also provides a way for the RteMsg_Orig to supply an initial
   nonzero cost for the route between the RteMsg_Orig and its client
   node, i.e., either OrigNode or TargNode.

   AddedNode information MAY be included in a RteMsg by adding a second
   AddrBlk.  Both Metric AddrTLVs use the same Metric Type.

A.1.  RREQ Message Format

   The figure below illustrates a packet format for an example RREQ
   message.

        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | PV=0 |  PF=0  | msg-type=RREQ | MF=4  | MAL=3 |  msg-size=24  |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |  msg-size=24  | msg-hop-limit |      msg.tlvs-length=0        |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |   num-addr=2  |1|0|0|0|0| Rsv | head-length=3 |Head(Orig&Targ)|
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | Head (bytes for Orig & Target)|   Orig.Tail   |  Target.Tail  |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |      addr.tlvs-length=11      |  type=SeqNum  |0|1|0|1|0|0|Rsv|
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | Index-start=0 | tlv-length=2  |     Orig.Node Sequence #      |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |  type=SeqNum  |0|1|0|1|0|0|Rsv| Index-start=0 | tlv-length=1  |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | OrigNodeHopCt |
       +-+-+-+-+-+-+-+-+

   RREQ with SeqNum and Metric AddrTLVs added, and: - two addresses in
   Address Block - address length = 4 [IPv4], shared initial bytes = 3 -
   Sequence Number available only for Orig.Node in addr.tlv - Hop Count
   available only for Orig.Node in Metric8 AddrTLV - Addresses stored in
   the order OrigNode, TargNode

                        Figure 4: Example IPv4 RREQ

A.2.  RREP Message Format

   The figure below illustrates a packet format for an example RREP
   message.

        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | PV=0 |  PF=0  | msg-type=RREP | MF=4  | MAL=3 |  msg-size=30  |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |  msg-size=30  | msg-hop-limit |      msg.tlvs-length=0        |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |   num-addr=2  |1|0|0|0|0| Rsv | head-length=3 |Head(Orig&Targ)|
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | Head (bytes for Orig & Target)|   Orig.Tail   |  Target.Tail  |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |      addr.tlvs-length=13      |  type=SeqNum  |0|1|0|1|0|0|Rsv|
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | Index-start=0 | tlv-length=2  |     Orig.Node Sequence #      |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |    Target.Node Sequence #     |  type=Metric8 |0|1|0|1|0|0|Rsv|
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | Index-start=1 | tlv-length=1  | TargNodeHopCt |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   RREP with SeqNum and Metric AddrTLVs added, and: - two addresses in
   AddrBlk - address length = 4 [IPv4], shared initial bytes = 3 - One
   Sequence Number (for TargNode) in SeqNum AddrTLV - Hop Count
   available only for Targ.Node in Metric8 AddrTLV - Addresses stored in
   the order OrigNode, TargNode

                        Figure 5: Example IPv4 RREP

A.3.  RERR Message Format

   The figure below illustrates a packet format for an example RERR
   message.

        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | PV=0 |  PF=0  | msg-type=RERR | MF=4  | MAL=3 |  msg-size=25  |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |  msg-size=25  | msg-hop-limit |      msg.tlvs-length=0        |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |   num-addr=2  |1|0|0|0|0| Rsv | head-length=3 |Head(Two Dests)|
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | Head (for both destinations)  |  Tail(Dest_1) | Tail(Dest_2)  |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |      addr.tlvs-length=8       |  type=SeqNum  |0|1|0|1|0|0|Rsv|
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | Index-start=0 | tlv-length=2  |        Dest_1 Sequence #      |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |        Dest_2 Sequence #      |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   RERR with - Next Generation (LOADng)",
              draft-clausen-lln-loadng-05 (work Two Unreachable Node address in progress), July 2012.

   [Perkins99]
              Perkins, C. Address Block - address
   length = 4 [IPv4], shared initial bytes = 3 - Two Sequence Numbers
   available in addr.tlv - Addresses stored from Originator to Target

                        Figure 6: Example IPv4 RERR

A.4.  RREP_ACK Message Format

   The figure below illustrates a packet format for an example RREP_ACK
   message.

        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | PV=0 |  PF=0  |msg-type=RREPAk| MF=0  | MAL=3 |  msg-size=3   |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |  msg-size=3   |
       +-+-+-+-+-+-+-+-+

   RREP_ACK - address length = 4 [IPv4]

                      Figure 7: Example IPv4 RREP_ACK

Appendix B.  Changes since revision ...-21.txt

   The revisions of this document that were numbered 22 and E. Belding-Royer, "Ad hoc On-Demand
              Distance Vector (AODV) Routing", Proceedings 23 were
   produced without sufficient time for preparation, and suffered from
   numerous editorial errors.  Therefore, this list of the 2nd
              IEEE Workshop changes is
   enumerated based on Mobile Computing Systems differences between this revision (24) and
              Applications,
   revision 21.

   o  Alternate metrics enabled:

      *  New Orleans, LA, pp. 90-100, February 1999.

   [RFC2328]  Moy, J., "OSPF Version 2", STD 54, RFC 2328, April 1998.

   [RFC2501]  Corson, M. and J. Macker, "Mobile Ad hoc Networking
              (MANET): Routing Protocol Performance Issues and
              Evaluation Considerations", RFC 2501, January 1999.

   [RFC3561]  Perkins, C., Belding-Royer, E., and S. Das, "Ad hoc On-
              Demand Distance Vector (AODV) Routing", RFC 3561,
              July 2003.

   [RFC4193]  Hinden, R. and B. Haberman, "Unique Local IPv6 Unicast
              Addresses", RFC 4193, October 2005.

   [RFC4728]  Johnson, D., Hu, Y., section added to describe general design approach.

      *  Abstract functions "Cost()" and D. Maltz, "The Dynamic Source
              Routing Protocol (DSR) for Mobile Ad Hoc Networks for
              IPv4", RFC 4728, February 2007.

   [RFC4861]  Narten, T., Nordmark, E., Simpson, W., "LoopFree()" defined.

      *  MAX_HOPCOUNT typically replaced by MAX_METRIC.

      *  DEFAULT_METRIC_TYPE parameter defined, defaulting to HopCount.

      *  MetricType MsgTLV defined.

      *  Metric8 and H. Soliman,
              "Neighbor Discovery Metric16 AddrTLVs defined.

   o  Many changes for IP version 6 (IPv6)", RFC 4861,
              September 2007.

   [RFC5148]  Clausen, T., Dearlove, C., 5444 compliance

   o  New section added for "Notational Conventions" (see Table 1).
      Many changes to improve readability and B. Adamson, "Jitter
              Considerations in Mobile Ad Hoc Networks (MANETs)",
              RFC 5148, February 2008.

   [RFC5340]  Coltun, R., Ferguson, D., Moy, J., accuracy (e.g., eliminate
      use of "Flooding", "ThisNode", ...).

   o  Reorganized and A. Lindem, "OSPF
              for IPv6", RFC 5340, July 2008.

   [RFC6130]  Clausen, T., Dearlove, C., simplified route lifetime management (see
      Section 5.1).

   o  Reorganized document structure, combining closely related small
      sections and J. Dean, "Mobile Ad Hoc
              Network (MANET) Neighborhood Discovery Protocol (NHDP)",
              RFC 6130, April 2011.

   [RFC6549]  Lindem, A., Roy, A., eliminating top-level "Detailed ..." section.

      *  RREQ and S. Mirtorabi, "OSPFv2 Multi-
              Instance Extensions", RFC 6549, March 2012.

   [RFC6621]  Macker, J., "Simplified Multicast Forwarding", RFC 6621,
              May 2012.

Appendix A.  Changes since the Previous Version RREP specification sections coalesced.

      *  RERR specification sections coalesced.

      *  Eliminated resulting duplicated specification.

      *  New section added for "Notational Conventions".

   o  Internet-Facing AODVv2 router renamed to be IAR

   o  "Optional Features" section (see Section 13) created to contain
      features not required within base specification, including:

   o

      *  Adding RREP-ACK message type instead of relying on reception of
         arbitrary packets as sufficient response to establish
         bidirectionality.

      *  Expanding Rings Multicast
      *  Intermediate RREPs (iRREPs): Without iRREP, only the
         destination can respond to a RREQ.

      *  Precursor lists.

      *  Reporting Multiple Unreachable Nodes.  An RERR may reporting message can
         carry more than one Unreachable Destination node for cases when
         a single link breakage causes multiple destinations to become
         unreachable nodes. from an intermediate router.

      *  Message Aggregation.

      *  Inclusion of Added Routing Information.

   o  Sequence number MUST be incremented after generating any RteMsg.

   o  Resulting simplifications for accepting route updates in RteMsgs.

   o  Sequence number MUST (instead of SHOULD) be set to 1 after
      rollover.

   o  ThisNode  AODVv2 routers MUST (instead of SHOULD) only handle AODVv2
      messages from adjacent routers.

   o  Clarification that Additional Added Routing information in RteMsgs is
      optional (MAY) to use.

   o  Clarification that if Additional Added Routing information in RteMsgs is
      used, then the Route Table Entry SHOULD be updated using normal
      procedures as described in Section 5.2.2. 6.2.

   o  Clarification in Section 5.4 7.1 that nodes may be configured to
      buffer zero packets.

   o  Clarification in Section 5.4 7.1 that buffered packets MUST be dropped
      if route discovery fails.

   o  In Section 5.5.1, 8.2, relax mandate for monitoring connectivity to
      next-hop next-
      hop AODVv2 neighbors (from MUST to SHOULD), in order to allow for
      minimal implementations

   o  Remove Route.Forwarding flag; identical to "NOT" Route.Broken.

   o  Routing Messages MUST be originated with the MsgHdr.HopLimit MsgHdr.<msg-hop-
      limit> set to MSG_HOPLIMIT.  Previously, this was not mandated. MAX_HOPCOUNT.

   o  Maximum hop count set to 254, with MAX_HOPCOUNT, and 255 is reserved for
      "unknown".  Since the current draft only uses hop-count as
      distance, this is also the current maximum distance.

Appendix B. C.  Shifting Network Prefix Advertisement Between AODVv2
             Routers

   Only one AODVv2 router within a routing region MANET SHOULD be responsible for a
   particular address at any time.  If two AODVv2 routers dynamically
   shift the advertisement of a network prefix, correct AODVv2 routing
   behavior must be observed.  The AODVv2 router adding the new network
   prefix must wait for any existing routing information about this
   network prefix to be purged from the network.  Therefore, it must
   wait at least ROUTER_SEQNUM_AGE_MAX_TIMEOUT after the previous AODVv2
   router for this address stopped advertising routing information on
   its behalf.

Authors' Addresses

   Charles E. Perkins
   Futurewei Inc.
   2330 Central Expressway
   Santa Clara, CA  95050
   USA

   Phone: +1-408-330-5305
   Email: charliep@computer.org

   Ian D Chakeres
   CenGen
   9250 Bendix Road North
   Columbia, Maryland  21045
   USA

   Email: ian.chakeres@gmail.com
   URI:   http://www.ianchak.com/