summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc3561.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc3561.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc3561.txt')
-rw-r--r--doc/rfc/rfc3561.txt2075
1 files changed, 2075 insertions, 0 deletions
diff --git a/doc/rfc/rfc3561.txt b/doc/rfc/rfc3561.txt
new file mode 100644
index 0000000..3b984dd
--- /dev/null
+++ b/doc/rfc/rfc3561.txt
@@ -0,0 +1,2075 @@
+
+
+
+
+
+
+Network Working Group C. Perkins
+Request for Comments: 3561 Nokia Research Center
+Category: Experimental E. Belding-Royer
+ University of California, Santa Barbara
+ S. Das
+ University of Cincinnati
+ July 2003
+
+
+ Ad hoc On-Demand Distance Vector (AODV) Routing
+
+Status of this Memo
+
+ This memo defines an Experimental Protocol for the Internet
+ community. It does not specify an Internet standard of any kind.
+ Discussion and suggestions for improvement are requested.
+ Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2003). All Rights Reserved.
+
+Abstract
+
+ The Ad hoc On-Demand Distance Vector (AODV) routing protocol is
+ intended for use by mobile nodes in an ad hoc network. It offers
+ quick adaptation to dynamic link conditions, low processing and
+ memory overhead, low network utilization, and determines unicast
+ routes to destinations within the ad hoc network. It uses
+ destination sequence numbers to ensure loop freedom at all times
+ (even in the face of anomalous delivery of routing control messages),
+ avoiding problems (such as "counting to infinity") associated with
+ classical distance vector protocols.
+
+Table of Contents
+
+ 1. Introduction ............................................... 2
+ 2. Overview .................................................. 3
+ 3. AODV Terminology ........................................... 4
+ 4. Applicability Statement .................................... 6
+ 5. Message Formats ............................................ 7
+ 5.1. Route Request (RREQ) Message Format ................... 7
+ 5.2. Route Reply (RREP) Message Format ..................... 8
+ 5.3. Route Error (RERR) Message Format ..................... 10
+ 5.4. Route Reply Acknowledgment (RREP-ACK) Message Format .. 11
+ 6. AODV Operation ............................................. 11
+ 6.1. Maintaining Sequence Numbers .......................... 11
+ 6.2. Route Table Entries and Precursor Lists ............... 13
+
+
+
+Perkins, et. al. Experimental [Page 1]
+
+RFC 3561 AODV Routing July 2003
+
+
+ 6.3. Generating Route Requests ............................. 14
+ 6.4. Controlling Dissemination of Route Request Messages ... 15
+ 6.5. Processing and Forwarding Route Requests .............. 16
+ 6.6. Generating Route Replies .............................. 18
+ 6.6.1. Route Reply Generation by the Destination ...... 18
+ 6.6.2. Route Reply Generation by an Intermediate
+ Node ........................................... 19
+ 6.6.3. Generating Gratuitous RREPs .................... 19
+ 6.7. Receiving and Forwarding Route Replies ................ 20
+ 6.8. Operation over Unidirectional Links ................... 21
+ 6.9. Hello Messages ........................................ 22
+ 6.10 Maintaining Local Connectivity ........................ 23
+ 6.11 Route Error (RERR) Messages, Route Expiry and Route
+ Deletion .............................................. 24
+ 6.12 Local Repair .......................................... 26
+ 6.13 Actions After Reboot ................................. 27
+ 6.14 Interfaces ............................................ 28
+ 7. AODV and Aggregated Networks ............................... 28
+ 8. Using AODV with Other Networks ............................. 29
+ 9. Extensions ................................................. 30
+ 9.1. Hello Interval Extension Format ....................... 30
+ 10. Configuration Parameters ................................... 31
+ 11. Security Considerations .................................... 33
+ 12. IANA Considerations ........................................ 34
+ 13. IPv6 Considerations ........................................ 34
+ 14. Acknowledgments ............................................ 34
+ 15. Normative References ....................................... 35
+ 16. Informative References ..................................... 35
+ 17. Authors' Addresses ......................................... 36
+ 18. Full Copyright Statement ................................... 37
+
+1. Introduction
+
+ The Ad hoc On-Demand Distance Vector (AODV) algorithm enables
+ dynamic, self-starting, multihop routing between participating mobile
+ nodes wishing to establish and maintain an ad hoc network. AODV
+ allows mobile nodes to obtain routes quickly for new destinations,
+ and does not require nodes to maintain routes to destinations that
+ are not in active communication. AODV allows mobile nodes to respond
+ to link breakages and changes in network topology in a timely manner.
+ The operation of AODV is loop-free, and by avoiding the Bellman-Ford
+ "counting to infinity" problem offers quick convergence when the ad
+ hoc network topology changes (typically, when a node moves in the
+ network). When links break, AODV causes the affected set of nodes to
+ be notified so that they are able to invalidate the routes using the
+ lost link.
+
+
+
+
+
+Perkins, et. al. Experimental [Page 2]
+
+RFC 3561 AODV Routing July 2003
+
+
+ One distinguishing feature of AODV is its use of a destination
+ sequence number for each route entry. The destination sequence
+ number is created by the destination to be included along with any
+ route information it sends to requesting nodes. Using destination
+ sequence numbers ensures loop freedom and is simple to program.
+ Given the choice between two routes to a destination, a requesting
+ node is required to select the one with the greatest sequence number.
+
+2. Overview
+
+ Route Requests (RREQs), Route Replies (RREPs), and Route Errors
+ (RERRs) are the message types defined by AODV. These message types
+ are received via UDP, and normal IP header processing applies. So,
+ for instance, the requesting node is expected to use its IP address
+ as the Originator IP address for the messages. For broadcast
+ messages, the IP limited broadcast address (255.255.255.255) is used.
+ This means that such messages are not blindly forwarded. However,
+ AODV operation does require certain messages (e.g., RREQ) to be
+ disseminated widely, perhaps throughout the ad hoc network. The
+ range of dissemination of such RREQs is indicated by the TTL in the
+ IP header. Fragmentation is typically not required.
+
+ As long as the endpoints of a communication connection have valid
+ routes to each other, AODV does not play any role. When a route to a
+ new destination is needed, the node broadcasts a RREQ to find a route
+ to the destination. A route can be determined when the RREQ reaches
+ either the destination itself, or an intermediate node with a 'fresh
+ enough' route to the destination. A 'fresh enough' route is a valid
+ route entry for the destination whose associated sequence number is
+ at least as great as that contained in the RREQ. The route is made
+ available by unicasting a RREP back to the origination of the RREQ.
+ Each node receiving the request caches a route back to the originator
+ of the request, so that the RREP can be unicast from the destination
+ along a path to that originator, or likewise from any intermediate
+ node that is able to satisfy the request.
+
+ Nodes monitor the link status of next hops in active routes. When a
+ link break in an active route is detected, a RERR message is used to
+ notify other nodes that the loss of that link has occurred. The RERR
+ message indicates those destinations (possibly subnets) which are no
+ longer reachable by way of the broken link. In order to enable this
+ reporting mechanism, each node keeps a "precursor list", containing
+ the IP address for each its neighbors that are likely to use it as a
+ next hop towards each destination. The information in the precursor
+ lists is most easily acquired during the processing for generation of
+ a RREP message, which by definition has to be sent to a node in a
+ precursor list (see section 6.6). If the RREP has a nonzero prefix
+
+
+
+
+Perkins, et. al. Experimental [Page 3]
+
+RFC 3561 AODV Routing July 2003
+
+
+ length, then the originator of the RREQ which solicited the RREP
+ information is included among the precursors for the subnet route
+ (not specifically for the particular destination).
+
+ A RREQ may also be received for a multicast IP address. In this
+ document, full processing for such messages is not specified. For
+ example, the originator of such a RREQ for a multicast IP address may
+ have to follow special rules. However, it is important to enable
+ correct multicast operation by intermediate nodes that are not
+ enabled as originating or destination nodes for IP multicast
+ addresses, and likewise are not equipped for any special multicast
+ protocol processing. For such multicast-unaware nodes, processing
+ for a multicast IP address as a destination IP address MUST be
+ carried out in the same way as for any other destination IP address.
+
+ AODV is a routing protocol, and it deals with route table management.
+ Route table information must be kept even for short-lived routes,
+ such as are created to temporarily store reverse paths towards nodes
+ originating RREQs. AODV uses the following fields with each route
+ table entry:
+
+ - Destination IP Address
+ - Destination Sequence Number
+ - Valid Destination Sequence Number flag
+ - Other state and routing flags (e.g., valid, invalid, repairable,
+ being repaired)
+ - Network Interface
+ - Hop Count (number of hops needed to reach destination)
+ - Next Hop
+ - List of Precursors (described in Section 6.2)
+ - Lifetime (expiration or deletion time of the route)
+
+ Managing the sequence number is crucial to avoiding routing loops,
+ even when links break and a node is no longer reachable to supply its
+ own information about its sequence number. A destination becomes
+ unreachable when a link breaks or is deactivated. When these
+ conditions occur, the route is invalidated by operations involving
+ the sequence number and marking the route table entry state as
+ invalid. See section 6.1 for details.
+
+3. AODV Terminology
+
+ This protocol specification uses conventional meanings [1] for
+ capitalized words such as MUST, SHOULD, etc., to indicate requirement
+ levels for various protocol features. This section defines other
+ terminology used with AODV that is not already defined in [3].
+
+
+
+
+
+Perkins, et. al. Experimental [Page 4]
+
+RFC 3561 AODV Routing July 2003
+
+
+ active route
+
+ A route towards a destination that has a routing table entry
+ that is marked as valid. Only active routes can be used to
+ forward data packets.
+
+ broadcast
+
+ Broadcasting means transmitting to the IP Limited Broadcast
+ address, 255.255.255.255. A broadcast packet may not be
+ blindly forwarded, but broadcasting is useful to enable
+ dissemination of AODV messages throughout the ad hoc network.
+
+ destination
+
+ An IP address to which data packets are to be transmitted.
+ Same as "destination node". A node knows it is the destination
+ node for a typical data packet when its address appears in the
+ appropriate field of the IP header. Routes for destination
+ nodes are supplied by action of the AODV protocol, which
+ carries the IP address of the desired destination node in route
+ discovery messages.
+
+ forwarding node
+
+ A node that agrees to forward packets destined for another
+ node, by retransmitting them to a next hop that is closer to
+ the unicast destination along a path that has been set up using
+ routing control messages.
+
+ forward route
+
+ A route set up to send data packets from a node originating a
+ Route Discovery operation towards its desired destination.
+
+ invalid route
+
+ A route that has expired, denoted by a state of invalid in the
+ routing table entry. An invalid route is used to store
+ previously valid route information for an extended period of
+ time. An invalid route cannot be used to forward data packets,
+ but it can provide information useful for route repairs, and
+ also for future RREQ messages.
+
+
+
+
+
+
+
+
+Perkins, et. al. Experimental [Page 5]
+
+RFC 3561 AODV Routing July 2003
+
+
+ originating node
+
+ A node that initiates an AODV route discovery message to be
+ processed and possibly retransmitted by other nodes in the ad
+ hoc network. For instance, the node initiating a Route
+ Discovery process and broadcasting the RREQ message is called
+ the originating node of the RREQ message.
+
+ reverse route
+
+ A route set up to forward a reply (RREP) packet back to the
+ originator from the destination or from an intermediate node
+ having a route to the destination.
+
+ sequence number
+
+ A monotonically increasing number maintained by each
+ originating node. In AODV routing protocol messages, it is
+ used by other nodes to determine the freshness of the
+ information contained from the originating node.
+
+ valid route
+
+ See active route.
+
+4. Applicability Statement
+
+ The AODV routing protocol is designed for mobile ad hoc networks with
+ populations of tens to thousands of mobile nodes. AODV can handle
+ low, moderate, and relatively high mobility rates, as well as a
+ variety of data traffic levels. AODV is designed for use in networks
+ where the nodes can all trust each other, either by use of
+ preconfigured keys, or because it is known that there are no
+ malicious intruder nodes. AODV has been designed to reduce the
+ dissemination of control traffic and eliminate overhead on data
+ traffic, in order to improve scalability and performance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Perkins, et. al. Experimental [Page 6]
+
+RFC 3561 AODV Routing July 2003
+
+
+5. Message Formats
+
+5.1. Route Request (RREQ) Message Format
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Type |J|R|G|D|U| Reserved | Hop Count |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | RREQ ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Destination IP Address |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Destination Sequence Number |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Originator IP Address |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Originator Sequence Number |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ The format of the Route Request message is illustrated above, and
+ contains the following fields:
+
+ Type 1
+
+ J Join flag; reserved for multicast.
+
+ R Repair flag; reserved for multicast.
+
+ G Gratuitous RREP flag; indicates whether a
+ gratuitous RREP should be unicast to the node
+ specified in the Destination IP Address field (see
+ sections 6.3, 6.6.3).
+
+ D Destination only flag; indicates only the
+ destination may respond to this RREQ (see
+ section 6.5).
+
+ U Unknown sequence number; indicates the destination
+ sequence number is unknown (see section 6.3).
+
+ Reserved Sent as 0; ignored on reception.
+
+ Hop Count The number of hops from the Originator IP Address
+ to the node handling the request.
+
+
+
+
+
+
+Perkins, et. al. Experimental [Page 7]
+
+RFC 3561 AODV Routing July 2003
+
+
+ RREQ ID A sequence number uniquely identifying the
+ particular RREQ when taken in conjunction with the
+ originating node's IP address.
+
+ Destination IP Address
+ The IP address of the destination for which a route
+ is desired.
+
+ Destination Sequence Number
+ The latest sequence number received in the past
+ by the originator for any route towards the
+ destination.
+
+ Originator IP Address
+ The IP address of the node which originated the
+ Route Request.
+
+ Originator Sequence Number
+ The current sequence number to be used in the route
+ entry pointing towards the originator of the route
+ request.
+
+5.2. Route Reply (RREP) Message Format
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Type |R|A| Reserved |Prefix Sz| Hop Count |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Destination IP address |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Destination Sequence Number |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Originator IP address |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Lifetime |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ The format of the Route Reply message is illustrated above, and
+ contains the following fields:
+
+ Type 2
+
+ R Repair flag; used for multicast.
+
+ A Acknowledgment required; see sections 5.4 and 6.7.
+
+ Reserved Sent as 0; ignored on reception.
+
+
+
+Perkins, et. al. Experimental [Page 8]
+
+RFC 3561 AODV Routing July 2003
+
+
+ Prefix Size If nonzero, the 5-bit Prefix Size specifies that the
+ indicated next hop may be used for any nodes with
+ the same routing prefix (as defined by the Prefix
+ Size) as the requested destination.
+
+ Hop Count The number of hops from the Originator IP Address
+ to the Destination IP Address. For multicast route
+ requests this indicates the number of hops to the
+ multicast tree member sending the RREP.
+
+ Destination IP Address
+ The IP address of the destination for which a route
+ is supplied.
+
+ Destination Sequence Number
+ The destination sequence number associated to the
+ route.
+
+ Originator IP Address
+ The IP address of the node which originated the RREQ
+ for which the route is supplied.
+
+ Lifetime The time in milliseconds for which nodes receiving
+ the RREP consider the route to be valid.
+
+ Note that the Prefix Size allows a subnet router to supply a route
+ for every host in the subnet defined by the routing prefix, which is
+ determined by the IP address of the subnet router and the Prefix
+ Size. In order to make use of this feature, the subnet router has to
+ guarantee reachability to all the hosts sharing the indicated subnet
+ prefix. See section 7 for details. When the prefix size is nonzero,
+ any routing information (and precursor data) MUST be kept with
+ respect to the subnet route, not the individual destination IP
+ address on that subnet.
+
+ The 'A' bit is used when the link over which the RREP message is sent
+ may be unreliable or unidirectional. When the RREP message contains
+ the 'A' bit set, the receiver of the RREP is expected to return a
+ RREP-ACK message. See section 6.8.
+
+
+
+
+
+
+
+
+
+
+
+
+Perkins, et. al. Experimental [Page 9]
+
+RFC 3561 AODV Routing July 2003
+
+
+5.3. Route Error (RERR) Message Format
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Type |N| Reserved | DestCount |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Unreachable Destination IP Address (1) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Unreachable Destination Sequence Number (1) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
+ | Additional Unreachable Destination IP Addresses (if needed) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |Additional Unreachable Destination Sequence Numbers (if needed)|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ The format of the Route Error message is illustrated above, and
+ contains the following fields:
+
+ Type 3
+
+ N No delete flag; set when a node has performed a local
+ repair of a link, and upstream nodes should not delete
+ the route.
+
+ Reserved Sent as 0; ignored on reception.
+
+ DestCount The number of unreachable destinations included in the
+ message; MUST be at least 1.
+
+ Unreachable Destination IP Address
+ The IP address of the destination that has become
+ unreachable due to a link break.
+
+ Unreachable Destination Sequence Number
+ The sequence number in the route table entry for
+ the destination listed in the previous Unreachable
+ Destination IP Address field.
+
+ The RERR message is sent whenever a link break causes one or more
+ destinations to become unreachable from some of the node's neighbors.
+ See section 6.2 for information about how to maintain the appropriate
+ records for this determination, and section 6.11 for specification
+ about how to create the list of destinations.
+
+
+
+
+
+
+
+Perkins, et. al. Experimental [Page 10]
+
+RFC 3561 AODV Routing July 2003
+
+
+5.4. Route Reply Acknowledgment (RREP-ACK) Message Format
+
+ The Route Reply Acknowledgment (RREP-ACK) message MUST be sent in
+ response to a RREP message with the 'A' bit set (see section 5.2).
+ This is typically done when there is danger of unidirectional links
+ preventing the completion of a Route Discovery cycle (see section
+ 6.8).
+
+ 0 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Type | Reserved |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Type 4
+
+ Reserved Sent as 0; ignored on reception.
+
+6. AODV Operation
+
+ This section describes the scenarios under which nodes generate Route
+ Request (RREQ), Route Reply (RREP) and Route Error (RERR) messages
+ for unicast communication towards a destination, and how the message
+ data are handled. In order to process the messages correctly,
+ certain state information has to be maintained in the route table
+ entries for the destinations of interest.
+
+ All AODV messages are sent to port 654 using UDP.
+
+6.1. Maintaining Sequence Numbers
+
+ Every route table entry at every node MUST include the latest
+ information available about the sequence number for the IP address of
+ the destination node for which the route table entry is maintained.
+ This sequence number is called the "destination sequence number". It
+ is updated whenever a node receives new (i.e., not stale) information
+ about the sequence number from RREQ, RREP, or RERR messages that may
+ be received related to that destination. AODV depends on each node
+ in the network to own and maintain its destination sequence number to
+ guarantee the loop-freedom of all routes towards that node. A
+ destination node increments its own sequence number in two
+ circumstances:
+
+ - Immediately before a node originates a route discovery, it MUST
+ increment its own sequence number. This prevents conflicts with
+ previously established reverse routes towards the originator of a
+ RREQ.
+
+
+
+
+Perkins, et. al. Experimental [Page 11]
+
+RFC 3561 AODV Routing July 2003
+
+
+ - Immediately before a destination node originates a RREP in
+ response to a RREQ, it MUST update its own sequence number to the
+ maximum of its current sequence number and the destination
+ sequence number in the RREQ packet.
+
+ When the destination increments its sequence number, it MUST do so by
+ treating the sequence number value as if it were an unsigned number.
+ To accomplish sequence number rollover, if the sequence number has
+ already been assigned to be the largest possible number representable
+ as a 32-bit unsigned integer (i.e., 4294967295), then when it is
+ incremented it will then have a value of zero (0). On the other
+ hand, if the sequence number currently has the value 2147483647,
+ which is the largest possible positive integer if 2's complement
+ arithmetic is in use with 32-bit integers, the next value will be
+ 2147483648, which is the most negative possible integer in the same
+ numbering system. The representation of negative numbers is not
+ relevant to the increment of AODV sequence numbers. This is in
+ contrast to the manner in which the result of comparing two AODV
+ sequence numbers is to be treated (see below).
+
+ In order to ascertain that information about a destination is not
+ stale, the node compares its current numerical value for the sequence
+ number with that obtained from the incoming AODV message. This
+ comparison MUST be done using signed 32-bit arithmetic, this is
+ necessary to accomplish sequence number rollover. If the result of
+ subtracting the currently stored sequence number from the value of
+ the incoming sequence number is less than zero, then the information
+ related to that destination in the AODV message MUST be discarded,
+ since that information is stale compared to the node's currently
+ stored information.
+
+ The only other circumstance in which a node may change the
+ destination sequence number in one of its route table entries is in
+ response to a lost or expired link to the next hop towards that
+ destination. The node determines which destinations use a particular
+ next hop by consulting its routing table. In this case, for each
+ destination that uses the next hop, the node increments the sequence
+ number and marks the route as invalid (see also sections 6.11, 6.12).
+ Whenever any fresh enough (i.e., containing a sequence number at
+ least equal to the recorded sequence number) routing information for
+ an affected destination is received by a node that has marked that
+ route table entry as invalid, the node SHOULD update its route table
+ information according to the information contained in the update.
+
+
+
+
+
+
+
+
+Perkins, et. al. Experimental [Page 12]
+
+RFC 3561 AODV Routing July 2003
+
+
+ A node may change the sequence number in the routing table entry of a
+ destination only if:
+
+ - it is itself the destination node, and offers a new route to
+ itself, or
+
+ - it receives an AODV message with new information about the
+ sequence number for a destination node, or
+
+ - the path towards the destination node expires or breaks.
+
+6.2. Route Table Entries and Precursor Lists
+
+ When a node receives an AODV control packet from a neighbor, or
+ creates or updates a route for a particular destination or subnet, it
+ checks its route table for an entry for the destination. In the
+ event that there is no corresponding entry for that destination, an
+ entry is created. The sequence number is either determined from the
+ information contained in the control packet, or else the valid
+ sequence number field is set to false. The route is only updated if
+ the new sequence number is either
+
+ (i) higher than the destination sequence number in the route
+ table, or
+
+ (ii) the sequence numbers are equal, but the hop count (of the
+ new information) plus one, is smaller than the existing hop
+ count in the routing table, or
+
+ (iii) the sequence number is unknown.
+
+ The Lifetime field of the routing table entry is either determined
+ from the control packet, or it is initialized to
+ ACTIVE_ROUTE_TIMEOUT. This route may now be used to send any queued
+ data packets and fulfills any outstanding route requests.
+
+ Each time a route is used to forward a data packet, its Active Route
+ Lifetime field of the source, destination and the next hop on the
+ path to the destination is updated to be no less than the current
+ time plus ACTIVE_ROUTE_TIMEOUT. Since the route between each
+ originator and destination pair is expected to be symmetric, the
+ Active Route Lifetime for the previous hop, along the reverse path
+ back to the IP source, is also updated to be no less than the current
+ time plus ACTIVE_ROUTE_TIMEOUT. The lifetime for an Active Route is
+ updated each time the route is used regardless of whether the
+ destination is a single node or a subnet.
+
+
+
+
+
+Perkins, et. al. Experimental [Page 13]
+
+RFC 3561 AODV Routing July 2003
+
+
+ For each valid route maintained by a node as a routing table entry,
+ the node also maintains a list of precursors that may be forwarding
+ packets on this route. These precursors will receive notifications
+ from the node in the event of detection of the loss of the next hop
+ link. The list of precursors in a routing table entry contains those
+ neighboring nodes to which a route reply was generated or forwarded.
+
+6.3. Generating Route Requests
+
+ A node disseminates a RREQ when it determines that it needs a route
+ to a destination and does not have one available. This can happen if
+ the destination is previously unknown to the node, or if a previously
+ valid route to the destination expires or is marked as invalid. The
+ Destination Sequence Number field in the RREQ message is the last
+ known destination sequence number for this destination and is copied
+ from the Destination Sequence Number field in the routing table. If
+ no sequence number is known, the unknown sequence number flag MUST be
+ set. The Originator Sequence Number in the RREQ message is the
+ node's own sequence number, which is incremented prior to insertion
+ in a RREQ. The RREQ ID field is incremented by one from the last
+ RREQ ID used by the current node. Each node maintains only one RREQ
+ ID. The Hop Count field is set to zero.
+
+ Before broadcasting the RREQ, the originating node buffers the RREQ
+ ID and the Originator IP address (its own address) of the RREQ for
+ PATH_DISCOVERY_TIME. In this way, when the node receives the packet
+ again from its neighbors, it will not reprocess and re-forward the
+ packet.
+
+ An originating node often expects to have bidirectional
+ communications with a destination node. In such cases, it is not
+ sufficient for the originating node to have a route to the
+ destination node; the destination must also have a route back to the
+ originating node. In order for this to happen as efficiently as
+ possible, any generation of a RREP by an intermediate node (as in
+ section 6.6) for delivery to the originating node SHOULD be
+ accompanied by some action that notifies the destination about a
+ route back to the originating node. The originating node selects
+ this mode of operation in the intermediate nodes by setting the 'G'
+ flag. See section 6.6.3 for details about actions taken by the
+ intermediate node in response to a RREQ with the 'G' flag set.
+
+ A node SHOULD NOT originate more than RREQ_RATELIMIT RREQ messages
+ per second. After broadcasting a RREQ, a node waits for a RREP (or
+ other control message with current information regarding a route to
+ the appropriate destination). If a route is not received within
+ NET_TRAVERSAL_TIME milliseconds, the node MAY try again to discover a
+ route by broadcasting another RREQ, up to a maximum of RREQ_RETRIES
+
+
+
+Perkins, et. al. Experimental [Page 14]
+
+RFC 3561 AODV Routing July 2003
+
+
+ times at the maximum TTL value. Each new attempt MUST increment and
+ update the RREQ ID. For each attempt, the TTL field of the IP header
+ is set according to the mechanism specified in section 6.4, in order
+ to enable control over how far the RREQ is disseminated for the each
+ retry.
+
+ Data packets waiting for a route (i.e., waiting for a RREP after a
+ RREQ has been sent) SHOULD be buffered. The buffering SHOULD be
+ "first-in, first-out" (FIFO). If a route discovery has been
+ attempted RREQ_RETRIES times at the maximum TTL without receiving any
+ RREP, all data packets destined for the corresponding destination
+ SHOULD be dropped from the buffer and a Destination Unreachable
+ message SHOULD be delivered to the application.
+
+ To reduce congestion in a network, repeated attempts by a source node
+ at route discovery for a single destination MUST utilize a binary
+ exponential backoff. The first time a source node broadcasts a RREQ,
+ it waits NET_TRAVERSAL_TIME milliseconds for the reception of a RREP.
+ If a RREP is not received within that time, the source node sends a
+ new RREQ. When calculating the time to wait for the RREP after
+ sending the second RREQ, the source node MUST use a binary
+ exponential backoff. Hence, the waiting time for the RREP
+ corresponding to the second RREQ is 2 * NET_TRAVERSAL_TIME
+ milliseconds. If a RREP is not received within this time period,
+ another RREQ may be sent, up to RREQ_RETRIES additional attempts
+ after the first RREQ. For each additional attempt, the waiting time
+ for the RREP is multiplied by 2, so that the time conforms to a
+ binary exponential backoff.
+
+6.4. Controlling Dissemination of Route Request Messages
+
+ To prevent unnecessary network-wide dissemination of RREQs, the
+ originating node SHOULD use an expanding ring search technique. In
+ an expanding ring search, the originating node initially uses a TTL =
+ TTL_START in the RREQ packet IP header and sets the timeout for
+ receiving a RREP to RING_TRAVERSAL_TIME milliseconds.
+ RING_TRAVERSAL_TIME is calculated as described in section 10. The
+ TTL_VALUE used in calculating RING_TRAVERSAL_TIME is set equal to the
+ value of the TTL field in the IP header. If the RREQ times out
+ without a corresponding RREP, the originator broadcasts the RREQ
+ again with the TTL incremented by TTL_INCREMENT. This continues
+ until the TTL set in the RREQ reaches TTL_THRESHOLD, beyond which a
+ TTL = NET_DIAMETER is used for each attempt. Each time, the timeout
+ for receiving a RREP is RING_TRAVERSAL_TIME. When it is desired to
+ have all retries traverse the entire ad hoc network, this can be
+ achieved by configuring TTL_START and TTL_INCREMENT both to be the
+ same value as NET_DIAMETER.
+
+
+
+
+Perkins, et. al. Experimental [Page 15]
+
+RFC 3561 AODV Routing July 2003
+
+
+ The Hop Count stored in an invalid routing table entry indicates the
+ last known hop count to that destination in the routing table. When
+ a new route to the same destination is required at a later time
+ (e.g., upon route loss), the TTL in the RREQ IP header is initially
+ set to the Hop Count plus TTL_INCREMENT. Thereafter, following each
+ timeout the TTL is incremented by TTL_INCREMENT until TTL =
+ TTL_THRESHOLD is reached. Beyond this TTL = NET_DIAMETER is used.
+ Once TTL = NET_DIAMETER, the timeout for waiting for the RREP is set
+ to NET_TRAVERSAL_TIME, as specified in section 6.3.
+
+ An expired routing table entry SHOULD NOT be expunged before
+ (current_time + DELETE_PERIOD) (see section 6.11). Otherwise, the
+ soft state corresponding to the route (e.g., last known hop count)
+ will be lost. Furthermore, a longer routing table entry expunge time
+ MAY be configured. Any routing table entry waiting for a RREP SHOULD
+ NOT be expunged before (current_time + 2 * NET_TRAVERSAL_TIME).
+
+6.5. Processing and Forwarding Route Requests
+
+ When a node receives a RREQ, it first creates or updates a route to
+ the previous hop without a valid sequence number (see section 6.2)
+ then checks to determine whether it has received a RREQ with the same
+ Originator IP Address and RREQ ID within at least the last
+ PATH_DISCOVERY_TIME. If such a RREQ has been received, the node
+ silently discards the newly received RREQ. The rest of this
+ subsection describes actions taken for RREQs that are not discarded.
+
+ First, it first increments the hop count value in the RREQ by one, to
+ account for the new hop through the intermediate node. Then the node
+ searches for a reverse route to the Originator IP Address (see
+ section 6.2), using longest-prefix matching. If need be, the route
+ is created, or updated using the Originator Sequence Number from the
+ RREQ in its routing table. This reverse route will be needed if the
+ node receives a RREP back to the node that originated the RREQ
+ (identified by the Originator IP Address). When the reverse route is
+ created or updated, the following actions on the route are also
+ carried out:
+
+ 1. the Originator Sequence Number from the RREQ is compared to the
+ corresponding destination sequence number in the route table entry
+ and copied if greater than the existing value there
+
+ 2. the valid sequence number field is set to true;
+
+ 3. the next hop in the routing table becomes the node from which the
+ RREQ was received (it is obtained from the source IP address in
+ the IP header and is often not equal to the Originator IP Address
+ field in the RREQ message);
+
+
+
+Perkins, et. al. Experimental [Page 16]
+
+RFC 3561 AODV Routing July 2003
+
+
+ 4. the hop count is copied from the Hop Count in the RREQ message;
+
+ Whenever a RREQ message is received, the Lifetime of the reverse
+ route entry for the Originator IP address is set to be the maximum of
+ (ExistingLifetime, MinimalLifetime), where
+
+ MinimalLifetime = (current time + 2*NET_TRAVERSAL_TIME -
+ 2*HopCount*NODE_TRAVERSAL_TIME).
+
+ The current node can use the reverse route to forward data packets in
+ the same way as for any other route in the routing table.
+
+ If a node does not generate a RREP (following the processing rules in
+ section 6.6), and if the incoming IP header has TTL larger than 1,
+ the node updates and broadcasts the RREQ to address 255.255.255.255
+ on each of its configured interfaces (see section 6.14). To update
+ the RREQ, the TTL or hop limit field in the outgoing IP header is
+ decreased by one, and the Hop Count field in the RREQ message is
+ incremented by one, to account for the new hop through the
+ intermediate node. Lastly, the Destination Sequence number for the
+ requested destination is set to the maximum of the corresponding
+ value received in the RREQ message, and the destination sequence
+ value currently maintained by the node for the requested destination.
+ However, the forwarding node MUST NOT modify its maintained value for
+ the destination sequence number, even if the value received in the
+ incoming RREQ is larger than the value currently maintained by the
+ forwarding node.
+
+ Otherwise, if a node does generate a RREP, then the node discards the
+ RREQ. Notice that, if intermediate nodes reply to every transmission
+ of RREQs for a particular destination, it might turn out that the
+ destination does not receive any of the discovery messages. In this
+ situation, the destination does not learn of a route to the
+ originating node from the RREQ messages. This could cause the
+ destination to initiate a route discovery (for example, if the
+ originator is attempting to establish a TCP session). In order that
+ the destination learn of routes to the originating node, the
+ originating node SHOULD set the "gratuitous RREP" ('G') flag in the
+ RREQ if for any reason the destination is likely to need a route to
+ the originating node. If, in response to a RREQ with the 'G' flag
+ set, an intermediate node returns a RREP, it MUST also unicast a
+ gratuitous RREP to the destination node (see section 6.6.3).
+
+
+
+
+
+
+
+
+
+Perkins, et. al. Experimental [Page 17]
+
+RFC 3561 AODV Routing July 2003
+
+
+6.6. Generating Route Replies
+
+ A node generates a RREP if either:
+
+ (i) it is itself the destination, or
+
+ (ii) it has an active route to the destination, the destination
+ sequence number in the node's existing route table entry
+ for the destination is valid and greater than or equal to
+ the Destination Sequence Number of the RREQ (comparison
+ using signed 32-bit arithmetic), and the "destination only"
+ ('D') flag is NOT set.
+
+ When generating a RREP message, a node copies the Destination IP
+ Address and the Originator Sequence Number from the RREQ message into
+ the corresponding fields in the RREP message. Processing is slightly
+ different, depending on whether the node is itself the requested
+ destination (see section 6.6.1), or instead if it is an intermediate
+ node with an fresh enough route to the destination (see section
+ 6.6.2).
+
+ Once created, the RREP is unicast to the next hop toward the
+ originator of the RREQ, as indicated by the route table entry for
+ that originator. As the RREP is forwarded back towards the node
+ which originated the RREQ message, the Hop Count field is incremented
+ by one at each hop. Thus, when the RREP reaches the originator, the
+ Hop Count represents the distance, in hops, of the destination from
+ the originator.
+
+6.6.1. Route Reply Generation by the Destination
+
+ If the generating node is the destination itself, it MUST increment
+ its own sequence number by one if the sequence number in the RREQ
+ packet is equal to that incremented value. Otherwise, the
+ destination does not change its sequence number before generating the
+ RREP message. The destination node places its (perhaps newly
+ incremented) sequence number into the Destination Sequence Number
+ field of the RREP, and enters the value zero in the Hop Count field
+ of the RREP.
+
+ The destination node copies the value MY_ROUTE_TIMEOUT (see section
+ 10) into the Lifetime field of the RREP. Each node MAY reconfigure
+ its value for MY_ROUTE_TIMEOUT, within mild constraints (see section
+ 10).
+
+
+
+
+
+
+
+Perkins, et. al. Experimental [Page 18]
+
+RFC 3561 AODV Routing July 2003
+
+
+6.6.2. Route Reply Generation by an Intermediate Node
+
+ If the node generating the RREP is not the destination node, but
+ instead is an intermediate hop along the path from the originator to
+ the destination, it copies its known sequence number for the
+ destination into the Destination Sequence Number field in the RREP
+ message.
+
+ The intermediate node updates the forward route entry by placing the
+ last hop node (from which it received the RREQ, as indicated by the
+ source IP address field in the IP header) into the precursor list for
+ the forward route entry -- i.e., the entry for the Destination IP
+ Address. The intermediate node also updates its route table entry
+ for the node originating the RREQ by placing the next hop towards the
+ destination in the precursor list for the reverse route entry --
+ i.e., the entry for the Originator IP Address field of the RREQ
+ message data.
+
+ The intermediate node places its distance in hops from the
+ destination (indicated by the hop count in the routing table) Count
+ field in the RREP. The Lifetime field of the RREP is calculated by
+ subtracting the current time from the expiration time in its route
+ table entry.
+
+6.6.3. Generating Gratuitous RREPs
+
+ After a node receives a RREQ and responds with a RREP, it discards
+ the RREQ. If the RREQ has the 'G' flag set, and the intermediate
+ node returns a RREP to the originating node, it MUST also unicast a
+ gratuitous RREP to the destination node. The gratuitous RREP that is
+ to be sent to the desired destination contains the following values
+ in the RREP message fields:
+
+ Hop Count The Hop Count as indicated in the
+ node's route table entry for the
+ originator
+
+ Destination IP Address The IP address of the node that
+ originated the RREQ
+
+ Destination Sequence Number The Originator Sequence Number from
+ the RREQ
+
+ Originator IP Address The IP address of the Destination
+ node in the RREQ
+
+
+
+
+
+
+Perkins, et. al. Experimental [Page 19]
+
+RFC 3561 AODV Routing July 2003
+
+
+ Lifetime The remaining lifetime of the route
+ towards the originator of the RREQ,
+ as known by the intermediate node.
+
+ The gratuitous RREP is then sent to the next hop along the path to
+ the destination node, just as if the destination node had already
+ issued a RREQ for the originating node and this RREP was produced in
+ response to that (fictitious) RREQ. The RREP that is sent to the
+ originator of the RREQ is the same whether or not the 'G' bit is set.
+
+6.7. Receiving and Forwarding Route Replies
+
+ When a node receives a RREP message, it searches (using longest-
+ prefix matching) for a route to the previous hop. If needed, a route
+ is created for the previous hop, but without a valid sequence number
+ (see section 6.2). Next, the node then increments the hop count
+ value in the RREP by one, to account for the new hop through the
+ intermediate node. Call this incremented value the "New Hop Count".
+ Then the forward route for this destination is created if it does not
+ already exist. Otherwise, the node compares the Destination Sequence
+ Number in the message with its own stored destination sequence number
+ for the Destination IP Address in the RREP message. Upon comparison,
+ the existing entry is updated only in the following circumstances:
+
+ (i) the sequence number in the routing table is marked as
+ invalid in route table entry.
+
+ (ii) the Destination Sequence Number in the RREP is greater than
+ the node's copy of the destination sequence number and the
+ known value is valid, or
+
+ (iii) the sequence numbers are the same, but the route is is
+ marked as inactive, or
+
+ (iv) the sequence numbers are the same, and the New Hop Count is
+ smaller than the hop count in route table entry.
+
+ If the route table entry to the destination is created or updated,
+ then the following actions occur:
+
+ - the route is marked as active,
+
+ - the destination sequence number is marked as valid,
+
+ - the next hop in the route entry is assigned to be the node from
+ which the RREP is received, which is indicated by the source IP
+ address field in the IP header,
+
+
+
+
+Perkins, et. al. Experimental [Page 20]
+
+RFC 3561 AODV Routing July 2003
+
+
+ - the hop count is set to the value of the New Hop Count,
+
+ - the expiry time is set to the current time plus the value of the
+ Lifetime in the RREP message,
+
+ - and the destination sequence number is the Destination Sequence
+ Number in the RREP message.
+
+ The current node can subsequently use this route to forward data
+ packets to the destination.
+
+ If the current node is not the node indicated by the Originator IP
+ Address in the RREP message AND a forward route has been created or
+ updated as described above, the node consults its route table entry
+ for the originating node to determine the next hop for the RREP
+ packet, and then forwards the RREP towards the originator using the
+ information in that route table entry. If a node forwards a RREP
+ over a link that is likely to have errors or be unidirectional, the
+ node SHOULD set the 'A' flag to require that the recipient of the
+ RREP acknowledge receipt of the RREP by sending a RREP-ACK message
+ back (see section 6.8).
+
+ When any node transmits a RREP, the precursor list for the
+ corresponding destination node is updated by adding to it the next
+ hop node to which the RREP is forwarded. Also, at each node the
+ (reverse) route used to forward a RREP has its lifetime changed to be
+ the maximum of (existing-lifetime, (current time +
+ ACTIVE_ROUTE_TIMEOUT). Finally, the precursor list for the next hop
+ towards the destination is updated to contain the next hop towards
+ the source.
+
+6.8. Operation over Unidirectional Links
+
+ It is possible that a RREP transmission may fail, especially if the
+ RREQ transmission triggering the RREP occurs over a unidirectional
+ link. If no other RREP generated from the same route discovery
+ attempt reaches the node which originated the RREQ message, the
+ originator will reattempt route discovery after a timeout (see
+ section 6.3). However, the same scenario might well be repeated
+ without any improvement, and no route would be discovered even after
+ repeated retries. Unless corrective action is taken, this can happen
+ even when bidirectional routes between originator and destination do
+ exist. Link layers using broadcast transmissions for the RREQ will
+ not be able to detect the presence of such unidirectional links. In
+ AODV, any node acts on only the first RREQ with the same RREQ ID and
+ ignores any subsequent RREQs. Suppose, for example, that the first
+
+
+
+
+
+Perkins, et. al. Experimental [Page 21]
+
+RFC 3561 AODV Routing July 2003
+
+
+ RREQ arrives along a path that has one or more unidirectional
+ link(s). A subsequent RREQ may arrive via a bidirectional path
+ (assuming such paths exist), but it will be ignored.
+
+ To prevent this problem, when a node detects that its transmission of
+ a RREP message has failed, it remembers the next-hop of the failed
+ RREP in a "blacklist" set. Such failures can be detected via the
+ absence of a link-layer or network-layer acknowledgment (e.g., RREP-
+ ACK). A node ignores all RREQs received from any node in its
+ blacklist set. Nodes are removed from the blacklist set after a
+ BLACKLIST_TIMEOUT period (see section 10). This period should be set
+ to the upper bound of the time it takes to perform the allowed number
+ of route request retry attempts as described in section 6.3.
+
+ Note that the RREP-ACK packet does not contain any information about
+ which RREP it is acknowledging. The time at which the RREP-ACK is
+ received will likely come just after the time when the RREP was sent
+ with the 'A' bit. This information is expected to be sufficient to
+ provide assurance to the sender of the RREP that the link is
+ currently bidirectional, without any real dependence on the
+ particular RREP message being acknowledged. However, that assurance
+ typically cannot be expected to remain in force permanently.
+
+6.9. Hello Messages
+
+ A node MAY offer connectivity information by broadcasting local Hello
+ messages. A node SHOULD only use hello messages if it is part of an
+ active route. Every HELLO_INTERVAL milliseconds, the node checks
+ whether it has sent a broadcast (e.g., a RREQ or an appropriate layer
+ 2 message) within the last HELLO_INTERVAL. If it has not, it MAY
+ broadcast a RREP with TTL = 1, called a Hello message, with the RREP
+ message fields set as follows:
+
+ Destination IP Address The node's IP address.
+
+ Destination Sequence Number The node's latest sequence number.
+
+ Hop Count 0
+
+ Lifetime ALLOWED_HELLO_LOSS * HELLO_INTERVAL
+
+ A node MAY determine connectivity by listening for packets from its
+ set of neighbors. If, within the past DELETE_PERIOD, it has received
+ a Hello message from a neighbor, and then for that neighbor does not
+ receive any packets (Hello messages or otherwise) for more than
+
+
+
+
+
+
+Perkins, et. al. Experimental [Page 22]
+
+RFC 3561 AODV Routing July 2003
+
+
+ ALLOWED_HELLO_LOSS * HELLO_INTERVAL milliseconds, the node SHOULD
+ assume that the link to this neighbor is currently lost. When this
+ happens, the node SHOULD proceed as in Section 6.11.
+
+ Whenever a node receives a Hello message from a neighbor, the node
+ SHOULD make sure that it has an active route to the neighbor, and
+ create one if necessary. If a route already exists, then the
+ Lifetime for the route should be increased, if necessary, to be at
+ least ALLOWED_HELLO_LOSS * HELLO_INTERVAL. The route to the
+ neighbor, if it exists, MUST subsequently contain the latest
+ Destination Sequence Number from the Hello message. The current node
+ can now begin using this route to forward data packets. Routes that
+ are created by hello messages and not used by any other active routes
+ will have empty precursor lists and would not trigger a RERR message
+ if the neighbor moves away and a neighbor timeout occurs.
+
+6.10. Maintaining Local Connectivity
+
+ Each forwarding node SHOULD keep track of its continued connectivity
+ to its active next hops (i.e., which next hops or precursors have
+ forwarded packets to or from the forwarding node during the last
+ ACTIVE_ROUTE_TIMEOUT), as well as neighbors that have transmitted
+ Hello messages during the last (ALLOWED_HELLO_LOSS * HELLO_INTERVAL).
+ A node can maintain accurate information about its continued
+ connectivity to these active next hops, using one or more of the
+ available link or network layer mechanisms, as described below.
+
+ - Any suitable link layer notification, such as those provided by
+ IEEE 802.11, can be used to determine connectivity, each time a
+ packet is transmitted to an active next hop. For example, absence
+ of a link layer ACK or failure to get a CTS after sending RTS,
+ even after the maximum number of retransmission attempts,
+ indicates loss of the link to this active next hop.
+
+ - If layer-2 notification is not available, passive acknowledgment
+ SHOULD be used when the next hop is expected to forward the
+ packet, by listening to the channel for a transmission attempt
+ made by the next hop. If transmission is not detected within
+ NEXT_HOP_WAIT milliseconds or the next hop is the destination (and
+ thus is not supposed to forward the packet) one of the following
+ methods SHOULD be used to determine connectivity:
+
+ * Receiving any packet (including a Hello message) from the next
+ hop.
+
+ * A RREQ unicast to the next hop, asking for a route to the next
+ hop.
+
+
+
+
+Perkins, et. al. Experimental [Page 23]
+
+RFC 3561 AODV Routing July 2003
+
+
+ * An ICMP Echo Request message unicast to the next hop.
+
+ If a link to the next hop cannot be detected by any of these methods,
+ the forwarding node SHOULD assume that the link is lost, and take
+ corrective action by following the methods specified in Section 6.11.
+
+6.11. Route Error (RERR) Messages, Route Expiry and Route Deletion
+
+ Generally, route error and link breakage processing requires the
+ following steps:
+
+ - Invalidating existing routes
+
+ - Listing affected destinations
+
+ - Determining which, if any, neighbors may be affected
+
+ - Delivering an appropriate RERR to such neighbors
+
+ A Route Error (RERR) message MAY be either broadcast (if there are
+ many precursors), unicast (if there is only 1 precursor), or
+ iteratively unicast to all precursors (if broadcast is
+ inappropriate). Even when the RERR message is iteratively unicast to
+ several precursors, it is considered to be a single control message
+ for the purposes of the description in the text that follows. With
+ that understanding, a node SHOULD NOT generate more than
+ RERR_RATELIMIT RERR messages per second.
+
+ A node initiates processing for a RERR message in three situations:
+
+ (i) if it detects a link break for the next hop of an active
+ route in its routing table while transmitting data (and
+ route repair, if attempted, was unsuccessful), or
+
+ (ii) if it gets a data packet destined to a node for which it
+ does not have an active route and is not repairing (if
+ using local repair), or
+
+ (iii) if it receives a RERR from a neighbor for one or more
+ active routes.
+
+ For case (i), the node first makes a list of unreachable destinations
+ consisting of the unreachable neighbor and any additional
+ destinations (or subnets, see section 7) in the local routing table
+ that use the unreachable neighbor as the next hop. In this case, if
+ a subnet route is found to be newly unreachable, an IP destination
+ address for the subnet is constructed by appending zeroes to the
+
+
+
+
+Perkins, et. al. Experimental [Page 24]
+
+RFC 3561 AODV Routing July 2003
+
+
+ subnet prefix as shown in the route table entry. This is
+ unambiguous, since the precursor is known to have route table
+ information with a compatible prefix length for that subnet.
+
+ For case (ii), there is only one unreachable destination, which is
+ the destination of the data packet that cannot be delivered. For
+ case (iii), the list should consist of those destinations in the RERR
+ for which there exists a corresponding entry in the local routing
+ table that has the transmitter of the received RERR as the next hop.
+
+ Some of the unreachable destinations in the list could be used by
+ neighboring nodes, and it may therefore be necessary to send a (new)
+ RERR. The RERR should contain those destinations that are part of
+ the created list of unreachable destinations and have a non-empty
+ precursor list.
+
+ The neighboring node(s) that should receive the RERR are all those
+ that belong to a precursor list of at least one of the unreachable
+ destination(s) in the newly created RERR. In case there is only one
+ unique neighbor that needs to receive the RERR, the RERR SHOULD be
+ unicast toward that neighbor. Otherwise the RERR is typically sent
+ to the local broadcast address (Destination IP == 255.255.255.255,
+ TTL == 1) with the unreachable destinations, and their corresponding
+ destination sequence numbers, included in the packet. The DestCount
+ field of the RERR packet indicates the number of unreachable
+ destinations included in the packet.
+
+ Just before transmitting the RERR, certain updates are made on the
+ routing table that may affect the destination sequence numbers for
+ the unreachable destinations. For each one of these destinations,
+ the corresponding routing table entry is updated as follows:
+
+ 1. The destination sequence number of this routing entry, if it
+ exists and is valid, is incremented for cases (i) and (ii) above,
+ and copied from the incoming RERR in case (iii) above.
+
+ 2. The entry is invalidated by marking the route entry as invalid
+
+ 3. The Lifetime field is updated to current time plus DELETE_PERIOD.
+ Before this time, the entry SHOULD NOT be deleted.
+
+ Note that the Lifetime field in the routing table plays dual role --
+ for an active route it is the expiry time, and for an invalid route
+ it is the deletion time. If a data packet is received for an invalid
+ route, the Lifetime field is updated to current time plus
+ DELETE_PERIOD. The determination of DELETE_PERIOD is discussed in
+ Section 10.
+
+
+
+
+Perkins, et. al. Experimental [Page 25]
+
+RFC 3561 AODV Routing July 2003
+
+
+6.12. Local Repair
+
+ When a link break in an active route occurs, the node upstream of
+ that break MAY choose to repair the link locally if the destination
+ was no farther than MAX_REPAIR_TTL hops away. To repair the link
+ break, the node increments the sequence number for the destination
+ and then broadcasts a RREQ for that destination. The TTL of the RREQ
+ should initially be set to the following value:
+
+ max(MIN_REPAIR_TTL, 0.5 * #hops) + LOCAL_ADD_TTL,
+
+ where #hops is the number of hops to the sender (originator) of the
+ currently undeliverable packet. Thus, local repair attempts will
+ often be invisible to the originating node, and will always have TTL
+ >= MIN_REPAIR_TTL + LOCAL_ADD_TTL. The node initiating the repair
+ then waits the discovery period to receive RREPs in response to the
+ RREQ. During local repair data packets SHOULD be buffered. If, at
+ the end of the discovery period, the repairing node has not received
+ a RREP (or other control message creating or updating the route) for
+ that destination, it proceeds as described in Section 6.11 by
+ transmitting a RERR message for that destination.
+
+ On the other hand, if the node receives one or more RREPs (or other
+ control message creating or updating the route to the desired
+ destination) during the discovery period, it first compares the hop
+ count of the new route with the value in the hop count field of the
+ invalid route table entry for that destination. If the hop count of
+ the newly determined route to the destination is greater than the hop
+ count of the previously known route the node SHOULD issue a RERR
+ message for the destination, with the 'N' bit set. Then it proceeds
+ as described in Section 6.7, updating its route table entry for that
+ destination.
+
+ A node that receives a RERR message with the 'N' flag set MUST NOT
+ delete the route to that destination. The only action taken should
+ be the retransmission of the message, if the RERR arrived from the
+ next hop along that route, and if there are one or more precursor
+ nodes for that route to the destination. When the originating node
+ receives a RERR message with the 'N' flag set, if this message came
+ from its next hop along its route to the destination then the
+ originating node MAY choose to reinitiate route discovery, as
+ described in Section 6.3.
+
+ Local repair of link breaks in routes sometimes results in increased
+ path lengths to those destinations. Repairing the link locally is
+ likely to increase the number of data packets that are able to be
+ delivered to the destinations, since data packets will not be dropped
+ as the RERR travels to the originating node. Sending a RERR to the
+
+
+
+Perkins, et. al. Experimental [Page 26]
+
+RFC 3561 AODV Routing July 2003
+
+
+ originating node after locally repairing the link break may allow the
+ originator to find a fresh route to the destination that is better,
+ based on current node positions. However, it does not require the
+ originating node to rebuild the route, as the originator may be done,
+ or nearly done, with the data session.
+
+ When a link breaks along an active route, there are often multiple
+ destinations that become unreachable. The node that is upstream of
+ the lost link tries an immediate local repair for only the one
+ destination towards which the data packet was traveling. Other
+ routes using the same link MUST be marked as invalid, but the node
+ handling the local repair MAY flag each such newly lost route as
+ locally repairable; this local repair flag in the route table MUST be
+ reset when the route times out (e.g., after the route has been not
+ been active for ACTIVE_ROUTE_TIMEOUT). Before the timeout occurs,
+ these other routes will be repaired as needed when packets arrive for
+ the other destinations. Hence, these routes are repaired as needed;
+ if a data packet does not arrive for the route, then that route will
+ not be repaired. Alternatively, depending upon local congestion, the
+ node MAY begin the process of establishing local repairs for the
+ other routes, without waiting for new packets to arrive. By
+ proactively repairing the routes that have broken due to the loss of
+ the link, incoming data packets for those routes will not be subject
+ to the delay of repairing the route and can be immediately forwarded.
+ However, repairing the route before a data packet is received for it
+ runs the risk of repairing routes that are no longer in use.
+ Therefore, depending upon the local traffic in the network and
+ whether congestion is being experienced, the node MAY elect to
+ proactively repair the routes before a data packet is received;
+ otherwise, it can wait until a data is received, and then commence
+ the repair of the route.
+
+6.13. Actions After Reboot
+
+ A node participating in the ad hoc network must take certain actions
+ after reboot as it might lose all sequence number records for all
+ destinations, including its own sequence number. However, there may
+ be neighboring nodes that are using this node as an active next hop.
+ This can potentially create routing loops. To prevent this
+ possibility, each node on reboot waits for DELETE_PERIOD before
+ transmitting any route discovery messages. If the node receives a
+ RREQ, RREP, or RERR control packet, it SHOULD create route entries as
+ appropriate given the sequence number information in the control
+ packets, but MUST not forward any control packets. If the node
+ receives a data packet for some other destination, it SHOULD
+ broadcast a RERR as described in subsection 6.11 and MUST reset the
+ waiting timer to expire after current time plus DELETE_PERIOD.
+
+
+
+
+Perkins, et. al. Experimental [Page 27]
+
+RFC 3561 AODV Routing July 2003
+
+
+ It can be shown [4] that by the time the rebooted node comes out of
+ the waiting phase and becomes an active router again, none of its
+ neighbors will be using it as an active next hop any more. Its own
+ sequence number gets updated once it receives a RREQ from any other
+ node, as the RREQ always carries the maximum destination sequence
+ number seen en route. If no such RREQ arrives, the node MUST
+ initialize its own sequence number to zero.
+
+6.14. Interfaces
+
+ Because AODV should operate smoothly over wired, as well as wireless,
+ networks, and because it is likely that AODV will also be used with
+ multiple wireless devices, the particular interface over which
+ packets arrive must be known to AODV whenever a packet is received.
+ This includes the reception of RREQ, RREP, and RERR messages.
+ Whenever a packet is received from a new neighbor, the interface on
+ which that packet was received is recorded into the route table entry
+ for that neighbor, along with all the other appropriate routing
+ information. Similarly, whenever a route to a new destination is
+ learned, the interface through which the destination can be reached
+ is also recorded into the destination's route table entry.
+
+ When multiple interfaces are available, a node retransmitting a RREQ
+ message rebroadcasts that message on all interfaces that have been
+ configured for operation in the ad-hoc network, except those on which
+ it is known that all of the nodes neighbors have already received the
+ RREQ For instance, for some broadcast media (e.g., Ethernet) it may
+ be presumed that all nodes on the same link receive a broadcast
+ message at the same time. When a node needs to transmit a RERR, it
+ SHOULD only transmit it on those interfaces that have neighboring
+ precursor nodes for that route.
+
+7. AODV and Aggregated Networks
+
+ AODV has been designed for use by mobile nodes with IP addresses that
+ are not necessarily related to each other, to create an ad hoc
+ network. However, in some cases a collection of mobile nodes MAY
+ operate in a fixed relationship to each other and share a common
+ subnet prefix, moving together within an area where an ad hoc network
+ has formed. Call such a collection of nodes a "subnet". In this
+ case, it is possible for a single node within the subnet to advertise
+ reachability for all other nodes on the subnet, by responding with a
+ RREP message to any RREQ message requesting a route to any node with
+ the subnet routing prefix. Call the single node the "subnet router".
+ In order for a subnet router to operate the AODV protocol for the
+ whole subnet, it has to maintain a destination sequence number for
+ the entire subnet. In any such RREP message sent by the subnet
+ router, the Prefix Size field of the RREP message MUST be set to the
+
+
+
+Perkins, et. al. Experimental [Page 28]
+
+RFC 3561 AODV Routing July 2003
+
+
+ length of the subnet prefix. Other nodes sharing the subnet prefix
+ SHOULD NOT issue RREP messages, and SHOULD forward RREQ messages to
+ the subnet router.
+
+ The processing for RREPs that give routes to subnets (i.e., have
+ nonzero prefix length) is the same as processing for host-specific
+ RREP messages. Every node that receives the RREP with prefix size
+ information SHOULD create or update the route table entry for the
+ subnet, including the sequence number supplied by the subnet router,
+ and including the appropriate precursor information. Then, in the
+ future the node can use the information to avoid sending future RREQs
+ for other nodes on the same subnet.
+
+ When a node uses a subnet route it may be that a packet is routed to
+ an IP address on the subnet that is not assigned to any existing node
+ in the ad hoc network. When that happens, the subnet router MUST
+ return ICMP Host Unreachable message to the sending node. Upstream
+ nodes receiving such an ICMP message SHOULD record the information
+ that the particular IP address is unreachable, but MUST NOT
+ invalidate the route entry for any matching subnet prefix.
+
+ If several nodes in the subnet advertise reachability to the subnet
+ defined by the subnet prefix, the node with the lowest IP address is
+ elected to be the subnet router, and all other nodes MUST stop
+ advertising reachability.
+
+ The behavior of default routes (i.e., routes with routing prefix
+ length 0) is not defined in this specification. Selection of routes
+ sharing prefix bits should be according to longest match first.
+
+8. Using AODV with Other Networks
+
+ In some configurations, an ad hoc network may be able to provide
+ connectivity between external routing domains that do not use AODV.
+ If the points of contact to the other networks can act as subnet
+ routers (see Section 7) for any relevant networks within the external
+ routing domains, then the ad hoc network can maintain connectivity to
+ the external routing domains. Indeed, the external routing networks
+ can use the ad hoc network defined by AODV as a transit network.
+
+ In order to provide this feature, a point of contact to an external
+ network (call it an Infrastructure Router) has to act as the subnet
+ router for every subnet of interest within the external network for
+ which the Infrastructure Router can provide reachability. This
+ includes the need for maintaining a destination sequence number for
+ that external subnet.
+
+
+
+
+
+Perkins, et. al. Experimental [Page 29]
+
+RFC 3561 AODV Routing July 2003
+
+
+ If multiple Infrastructure Routers offer reachability to the same
+ external subnet, those Infrastructure Routers have to cooperate (by
+ means outside the scope of this specification) to provide consistent
+ AODV semantics for ad hoc access to those subnets.
+
+9. Extensions
+
+ In this section, the format of extensions to the RREQ and RREP
+ messages is specified. All such extensions appear after the message
+ data, and have the following format:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Type | Length | type-specific data ...
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ where:
+
+ Type 1-255
+
+ Length The length of the type-specific data, not including the Type
+ and Length fields of the extension in bytes.
+
+ Extensions with types between 128 and 255 may NOT be skipped. The
+ rules for extensions will be spelled out more fully, and conform to
+ the rules for handling IPv6 options.
+
+9.1. Hello Interval Extension Format
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Type | Length | Hello Interval ... |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | ... Hello Interval, continued |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Type 1
+
+ Length 4
+
+ Hello Interval
+ The number of milliseconds between successive transmissions
+ of a Hello message.
+
+
+
+
+
+
+Perkins, et. al. Experimental [Page 30]
+
+RFC 3561 AODV Routing July 2003
+
+
+ The Hello Interval extension MAY be appended to a RREP message with
+ TTL == 1, to be used by a neighboring receiver in determine how long
+ to wait for subsequent such RREP messages (i.e., Hello messages; see
+ section 6.9).
+
+10. Configuration Parameters
+
+ This section gives default values for some important parameters
+ associated with AODV protocol operations. A particular mobile node
+ may wish to change certain of the parameters, in particular the
+ NET_DIAMETER, MY_ROUTE_TIMEOUT, ALLOWED_HELLO_LOSS, RREQ_RETRIES, and
+ possibly the HELLO_INTERVAL. In the latter case, the node should
+ advertise the HELLO_INTERVAL in its Hello messages, by appending a
+ Hello Interval Extension to the RREP message. Choice of these
+ parameters may affect the performance of the protocol. Changing
+ NODE_TRAVERSAL_TIME also changes the node's estimate of the
+ NET_TRAVERSAL_TIME, and so can only be done with suitable knowledge
+ about the behavior of other nodes in the ad hoc network. The
+ configured value for MY_ROUTE_TIMEOUT MUST be at least 2 *
+ PATH_DISCOVERY_TIME.
+
+ Parameter Name Value
+ ---------------------- -----
+ ACTIVE_ROUTE_TIMEOUT 3,000 Milliseconds
+ ALLOWED_HELLO_LOSS 2
+ BLACKLIST_TIMEOUT RREQ_RETRIES * NET_TRAVERSAL_TIME
+ DELETE_PERIOD see note below
+ HELLO_INTERVAL 1,000 Milliseconds
+ LOCAL_ADD_TTL 2
+ MAX_REPAIR_TTL 0.3 * NET_DIAMETER
+ MIN_REPAIR_TTL see note below
+ MY_ROUTE_TIMEOUT 2 * ACTIVE_ROUTE_TIMEOUT
+ NET_DIAMETER 35
+ NET_TRAVERSAL_TIME 2 * NODE_TRAVERSAL_TIME * NET_DIAMETER
+ NEXT_HOP_WAIT NODE_TRAVERSAL_TIME + 10
+ NODE_TRAVERSAL_TIME 40 milliseconds
+ PATH_DISCOVERY_TIME 2 * NET_TRAVERSAL_TIME
+ RERR_RATELIMIT 10
+ RING_TRAVERSAL_TIME 2 * NODE_TRAVERSAL_TIME *
+ (TTL_VALUE + TIMEOUT_BUFFER)
+ RREQ_RETRIES 2
+ RREQ_RATELIMIT 10
+ TIMEOUT_BUFFER 2
+ TTL_START 1
+ TTL_INCREMENT 2
+ TTL_THRESHOLD 7
+ TTL_VALUE see note below
+
+
+
+
+Perkins, et. al. Experimental [Page 31]
+
+RFC 3561 AODV Routing July 2003
+
+
+ The MIN_REPAIR_TTL should be the last known hop count to the
+ destination. If Hello messages are used, then the
+ ACTIVE_ROUTE_TIMEOUT parameter value MUST be more than the value
+ (ALLOWED_HELLO_LOSS * HELLO_INTERVAL). For a given
+ ACTIVE_ROUTE_TIMEOUT value, this may require some adjustment to the
+ value of the HELLO_INTERVAL, and consequently use of the Hello
+ Interval Extension in the Hello messages.
+
+ TTL_VALUE is the value of the TTL field in the IP header while the
+ expanding ring search is being performed. This is described further
+ in section 6.4. The TIMEOUT_BUFFER is configurable. Its purpose is
+ to provide a buffer for the timeout so that if the RREP is delayed
+ due to congestion, a timeout is less likely to occur while the RREP
+ is still en route back to the source. To omit this buffer, set
+ TIMEOUT_BUFFER = 0.
+
+ DELETE_PERIOD is intended to provide an upper bound on the time for
+ which an upstream node A can have a neighbor B as an active next hop
+ for destination D, while B has invalidated the route to D. Beyond
+ this time B can delete the (already invalidated) route to D. The
+ determination of the upper bound depends somewhat on the
+ characteristics of the underlying link layer. If Hello messages are
+ used to determine the continued availability of links to next hop
+ nodes, DELETE_PERIOD must be at least ALLOWED_HELLO_LOSS *
+ HELLO_INTERVAL. If the link layer feedback is used to detect loss of
+ link, DELETE_PERIOD must be at least ACTIVE_ROUTE_TIMEOUT. If hello
+ messages are received from a neighbor but data packets to that
+ neighbor are lost (e.g., due to temporary link asymmetry), we have to
+ make more concrete assumptions about the underlying link layer. We
+ assume that such asymmetry cannot persist beyond a certain time, say,
+ a multiple K of HELLO_INTERVAL. In other words, a node will
+ invariably receive at least one out of K subsequent Hello messages
+ from a neighbor if the link is working and the neighbor is sending no
+ other traffic. Covering all possibilities,
+
+ DELETE_PERIOD = K * max (ACTIVE_ROUTE_TIMEOUT, HELLO_INTERVAL)
+ (K = 5 is recommended).
+
+ NET_DIAMETER measures the maximum possible number of hops between two
+ nodes in the network. NODE_TRAVERSAL_TIME is a conservative estimate
+ of the average one hop traversal time for packets and should include
+ queuing delays, interrupt processing times and transfer times.
+ ACTIVE_ROUTE_TIMEOUT SHOULD be set to a longer value (at least 10,000
+ milliseconds) if link-layer indications are used to detect link
+ breakages such as in IEEE 802.11 [5] standard. TTL_START should be
+ set to at least 2 if Hello messages are used for local connectivity
+ information. Performance of the AODV protocol is sensitive to the
+ chosen values of these constants, which often depend on the
+
+
+
+Perkins, et. al. Experimental [Page 32]
+
+RFC 3561 AODV Routing July 2003
+
+
+ characteristics of the underlying link layer protocol, radio
+ technologies etc. BLACKLIST_TIMEOUT should be suitably increased if
+ an expanding ring search is used. In such cases, it should be
+ {[(TTL_THRESHOLD - TTL_START)/TTL_INCREMENT] + 1 + RREQ_RETRIES} *
+ NET_TRAVERSAL_TIME. This is to account for possible additional route
+ discovery attempts.
+
+11. Security Considerations
+
+ Currently, AODV does not specify any special security measures. Route
+ 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,
+ AODV control messages must be protected by use of authentication
+ techniques, such as those involving generation of unforgeable and
+ cryptographically strong message digests or digital signatures.
+ While AODV does not place restrictions on the authentication
+ mechanism used for this purpose, IPsec AH is an appropriate choice
+ for cases where the nodes share an appropriate security association
+ that enables the use of AH.
+
+ In particular, RREP messages SHOULD be authenticated to avoid
+ creation of spurious routes to a desired destination. Otherwise, an
+ attacker could masquerade as the desired destination, and maliciously
+ deny service to the destination and/or maliciously inspect and
+ consume traffic intended for delivery to the destination. RERR
+ messages, while less dangerous, SHOULD be authenticated in order to
+ prevent malicious nodes from disrupting valid routes between nodes
+ that are communication partners.
+
+ AODV does not make any assumption about the method by which addresses
+ are assigned to the mobile nodes, except that they are presumed to
+ have unique IP addresses. Therefore, no special consideration, other
+ than what is natural because of the general protocol specifications,
+ can be made about the applicability of IPsec authentication headers
+ or key exchange mechanisms. However, if the mobile nodes in the ad
+ hoc network have pre-established security associations, it is
+ presumed that the purposes for which the security associations are
+ created include that of authorizing the processing of AODV control
+ messages. 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.
+
+
+
+
+
+
+
+Perkins, et. al. Experimental [Page 33]
+
+RFC 3561 AODV Routing July 2003
+
+
+12. IANA Considerations
+
+ AODV defines a "Type" field for messages sent to port 654. A new
+ registry has been created for the values for this Type field, and the
+ following values have been assigned:
+
+ Message Type Value
+ --------------------------- -----
+ Route Request (RREQ) 1
+ Route Reply (RREP) 2
+ Route Error (RERR) 3
+ Route-Reply Ack (RREP-ACK) 4
+
+ AODV control messages can have extensions. Currently, only one
+ extension is defined. A new registry has been created for the Type
+ field of the extensions:
+
+ Extension Type Value
+ --------------------------- -----
+ Hello Interval 1
+
+ Future values of the Message Type or Extension Type can be allocated
+ using standards action [2].
+
+13. IPv6 Considerations
+
+ See [6] for detailed operation for IPv6. The only changes to the
+ protocol are that the address fields are enlarged.
+
+14. Acknowledgments
+
+ Special thanks to Ian Chakeres, UCSB, for his extensive suggestions
+ and contributions to recent revisions.
+
+ We acknowledge with gratitude the work done at University of
+ Pennsylvania within Carl Gunter's group, as well as at Stanford and
+ CMU, to determine some conditions (especially involving reboots and
+ lost RERRs) under which previous versions of AODV could suffer from
+ routing loops. Contributors to those efforts include Karthikeyan
+ Bhargavan, Joshua Broch, Dave Maltz, Madanlal Musuvathi, and Davor
+ Obradovic. The idea of a DELETE_PERIOD, for which expired routes
+ (and, in particular, the sequence numbers) to a particular
+ destination must be maintained, was also suggested by them.
+
+ We also acknowledge the comments and improvements suggested by Sung-
+ Ju Lee (especially regarding local repair), Mahesh Marina, Erik
+ Nordstrom (who provided text for section 6.11), Yves Prelot, Marc
+ Mosko, Manel Guerrero Zapata, Philippe Jacquet, and Fred Baker.
+
+
+
+Perkins, et. al. Experimental [Page 34]
+
+RFC 3561 AODV Routing July 2003
+
+
+15. Normative References
+
+ [1] Bradner, S. "Key words for use in RFCs to Indicate Requirement
+ Levels", BCP 14, RFC 2119, March 1997.
+
+ [2] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA
+ Considerations Section in RFCs", BCP 26, RFC 2434, October 1998.
+
+16. Informative References
+
+ [3] Manner, J., et al., "Mobility Related Terminology", Work in
+ Progress, July 2001.
+
+ [4] Karthikeyan Bhargavan, Carl A. Gunter, and Davor Obradovic.
+ Fault Origin Adjudication. In Proceedings of the Workshop on
+ Formal Methods in Software Practice, Portland, OR, August 2000.
+
+ [5] IEEE 802.11 Committee, AlphaGraphics #35, 10201 N.35th Avenue,
+ Phoenix AZ 85051. Wireless LAN Medium Access Control MAC and
+ Physical Layer PHY Specifications, June 1997. IEEE Standard
+ 802.11-97.
+
+ [6] Perkins, C., Royer, E. and S. Das, "Ad hoc on demand distance
+ vector (AODV) routing for ip version 6", Work in Progress.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Perkins, et. al. Experimental [Page 35]
+
+RFC 3561 AODV Routing July 2003
+
+
+17. Authors' Addresses
+
+ Charles E. Perkins
+ Communications Systems Laboratory
+ Nokia Research Center
+ 313 Fairchild Drive
+ Mountain View, CA 94303
+ USA
+
+ Phone: +1 650 625 2986
+ Fax: +1 650 691 2170 (fax)
+ EMail: Charles.Perkins@nokia.com
+
+
+ Elizabeth M. Belding-Royer
+ Department of Computer Science
+ University of California, Santa Barbara
+ Santa Barbara, CA 93106
+
+ Phone: +1 805 893 3411
+ Fax: +1 805 893 8553
+ EMail: ebelding@cs.ucsb.edu
+
+
+ Samir R. Das
+ Department of Electrical and Computer Engineering
+ & Computer Science
+ University of Cincinnati
+ Cincinnati, OH 45221-0030
+
+ Phone: +1 513 556 2594
+ Fax: +1 513 556 7326
+ EMail: sdas@ececs.uc.edu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Perkins, et. al. Experimental [Page 36]
+
+RFC 3561 AODV Routing July 2003
+
+
+18. Full Copyright Statement
+
+ Copyright (C) The Internet Society (2003). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Perkins, et. al. Experimental [Page 37]
+