draft-ietf-manet-dymo-23.txt   draft-ietf-manet-dymo-24.txt 
Mobile Ad hoc Networks Working Group C. Perkins Mobile Ad hoc Networks Working Group C. Perkins
Internet-Draft Futurewei Internet-Draft Futurewei
Intended status: Standards Track I. Chakeres Intended status: Standards Track I. Chakeres
Expires: April 26, 2013 CenGen Expires: June 4, 2013 CenGen
October 23, 2012 December 1, 2012
Dynamic MANET On-demand (AODVv2) Routing Dynamic MANET On-demand (AODVv2) Routing
draft-ietf-manet-dymo-23 draft-ietf-manet-dymo-24
Abstract Abstract
The Dynamic MANET On-demand (AODVv2) routing protocol is intended for The Dynamic MANET On-demand (AODVv2) routing protocol is intended for
use by mobile routers in wireless, multihop networks. AODVv2 use by mobile routers in wireless, multihop networks. AODVv2
determines unicast routes among AODVv2 routers within the network in determines unicast routes among AODVv2 routers within the network in
an on-demand fashion, offering on-demand convergence in dynamic an on-demand fashion, offering on-demand convergence in dynamic
topologies. topologies.
Status of this Memo Status of this Memo
skipping to change at page 1, line 35 skipping to change at page 1, line 35
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 26, 2013. This Internet-Draft will expire on June 4, 2013.
Copyright Notice Copyright Notice
Copyright (c) 2012 IETF Trust and the persons identified as the Copyright (c) 2012 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Applicability Statement . . . . . . . . . . . . . . . . . . . 7 3. Notational Conventions . . . . . . . . . . . . . . . . . . . . 7
4. Data Structures . . . . . . . . . . . . . . . . . . . . . . . 8 4. Applicability Statement . . . . . . . . . . . . . . . . . . . 9
4.1. Route Table Entry . . . . . . . . . . . . . . . . . . . . 8 5. Data Structures . . . . . . . . . . . . . . . . . . . . . . . 10
4.2. AODVv2 Message Structure and Information Elements . . . . 9 5.1. Route Table Entry . . . . . . . . . . . . . . . . . . . . 10
4.3. RteMsg-specific Protocol Elements . . . . . . . . . . . . 11 5.2. Bidirectional Connectivity During Route Discovery and
4.4. Route Error (RERR)-specific Protocol Elements . . . . . . 12 Blacklists . . . . . . . . . . . . . . . . . . . . . . . . 12
5. Detailed Operation for the Base Protocol . . . . . . . . . . . 13 5.3. Router Clients and Client Networks . . . . . . . . . . . . 13
5.1. AODVv2 Sequence Numbers . . . . . . . . . . . . . . . . . 13 5.4. AODVv2 Packet Header Fields and Information Elements . . . 13
5.1.1. Maintaining A Node's Own Sequence Number . . . . . . . 13 5.5. AODVv2 Sequence Numbers . . . . . . . . . . . . . . . . . 14
5.1.2. Actions After OwnSeqNum Loss . . . . . . . . . . . . . 13 5.6. Enabling Alternate Metrics . . . . . . . . . . . . . . . . 15
5.2. AODVv2 Routing Table Operations . . . . . . . . . . . . . 13 6. AODVv2 Operations on Route Table Entries . . . . . . . . . . . 17
5.2.1. Judging Routing Information's Usefulness . . . . . . . 13 6.1. Evaluating Incoming Routing Information . . . . . . . . . 17
5.2.2. Creating or Updating Route Table Entries . . . . . . . 15 6.2. Applying Route Updates To Route Table Entries . . . . . . 19
5.2.3. Route Table Entry Timeouts . . . . . . . . . . . . . . 15 6.3. Route Table Entry Timeouts . . . . . . . . . . . . . . . . 19
5.3. Routing Messages . . . . . . . . . . . . . . . . . . . . . 16 7. Routing Messages RREQ and RREP (RteMsgs) . . . . . . . . . . . 20
5.3.1. RREQ Creation . . . . . . . . . . . . . . . . . . . . 16 7.1. Route Discovery Retries and Buffering . . . . . . . . . . 20
5.3.2. RREP Creation . . . . . . . . . . . . . . . . . . . . 17 7.2. RteMsg Structure . . . . . . . . . . . . . . . . . . . . . 21
5.3.3. RteMsg Handling . . . . . . . . . . . . . . . . . . . 18 7.3. RREQ Generation . . . . . . . . . . . . . . . . . . . . . 23
5.4. Route Discovery . . . . . . . . . . . . . . . . . . . . . 20 7.4. RREP Generation . . . . . . . . . . . . . . . . . . . . . 24
5.5. Route Maintenance . . . . . . . . . . . . . . . . . . . . 21 7.5. Handling a Received RteMsg . . . . . . . . . . . . . . . . 25
5.5.1. Active Next-hop Router Adjacency Monitoring . . . . . 21 7.5.1. Additional Handling for Outgoing RREQ . . . . . . . . 26
5.5.2. Updating Route Lifetimes During Packet Forwarding . . 22 7.5.2. Additional Handling for Outgoing RREP . . . . . . . . 27
5.5.3. RERR Generation . . . . . . . . . . . . . . . . . . . 22 8. Route Maintenance . . . . . . . . . . . . . . . . . . . . . . 27
5.5.4. RERR Handling . . . . . . . . . . . . . . . . . . . . 23 8.1. Handling Route Lifetimes During Packet Forwarding . . . . 27
5.6. Unknown Message and TLV Types . . . . . . . . . . . . . . 24 8.2. Active Next-hop Router Adjacency Monitoring . . . . . . . 28
5.7. Advertising Network Addresses . . . . . . . . . . . . . . 24 8.3. RERR Generation . . . . . . . . . . . . . . . . . . . . . 28
5.8. Simple Internet Attachment . . . . . . . . . . . . . . . . 24 8.3.1. Case 1: Undeliverable Packet . . . . . . . . . . . . . 29
5.9. Multiple Interfaces . . . . . . . . . . . . . . . . . . . 25 8.3.2. Case 2: Broken Link . . . . . . . . . . . . . . . . . 30
5.10. AODVv2 Control Packet/Message Generation Limits . . . . . 26 8.4. Receiving and Handling RERR Messages . . . . . . . . . . . 30
5.11. Optional Features . . . . . . . . . . . . . . . . . . . . 26 9. Unknown Message and TLV Types . . . . . . . . . . . . . . . . 31
5.11.1. Expanding Rings Multicast . . . . . . . . . . . . . . 26 10. Simple Internet Attachment . . . . . . . . . . . . . . . . . . 32
5.11.2. Intermediate RREP . . . . . . . . . . . . . . . . . . 27 11. Multiple Interfaces . . . . . . . . . . . . . . . . . . . . . 33
5.11.3. Precursor Notification . . . . . . . . . . . . . . . . 27 12. AODVv2 Control Packet/Message Generation Limits . . . . . . . 33
5.11.4. Reporting Multiple Unreachable Nodes . . . . . . . . . 28 13. Optional Features . . . . . . . . . . . . . . . . . . . . . . 33
5.11.5. Message Aggregation . . . . . . . . . . . . . . . . . 28 13.1. Expanding Rings Multicast . . . . . . . . . . . . . . . . 34
5.11.6. Adding Additional Routing Information to a RteMsg . . 29 13.2. Intermediate RREP . . . . . . . . . . . . . . . . . . . . 34
5.12. Administratively Configured Parameters and Timer Values . 30 13.3. Precursor Lists and Notifications . . . . . . . . . . . . 34
5.13. IANA Considerations . . . . . . . . . . . . . . . . . . . 33 13.3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . 34
5.13.1. AODVv2 Message Types Specification . . . . . . . . . . 33 13.3.2. Precursor Notification Details . . . . . . . . . . . . 35
5.13.2. Message and Address Block TLV Type Specification . . . 33 13.4. Multicast RREP Response to RREQ . . . . . . . . . . . . . 35
5.13.3. Address Block TLV Specification . . . . . . . . . . . 34 13.5. RREP_ACK . . . . . . . . . . . . . . . . . . . . . . . . . 36
13.6. Message Aggregation . . . . . . . . . . . . . . . . . . . 36
5.14. Security Considerations . . . . . . . . . . . . . . . . . 34 13.7. Added Routing Information in RteMsgs . . . . . . . . . . . 36
5.15. Acknowledgments . . . . . . . . . . . . . . . . . . . . . 36 13.7.1. Including Added Node Information . . . . . . . . . . . 36
6. References . . . . . . . . . . . . . . . . . . . . . . . . . . 36 13.7.2. Handling Added Node Information . . . . . . . . . . . 37
6.1. Normative References . . . . . . . . . . . . . . . . . . . 36 14. Administratively Configured Parameters and Timer Values . . . 38
6.2. Informative References . . . . . . . . . . . . . . . . . . 37 15. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 41
Appendix A. Changes since the Previous Version . . . . . . . . . 38 15.1. AODVv2 Message Types Specification . . . . . . . . . . . . 41
Appendix B. Shifting Network Prefix Advertisement Between 15.2. Message and Address Block TLV Type Specification . . . . . 41
AODVv2 Routers . . . . . . . . . . . . . . . . . . . 39 15.3. Address Block TLV Specification . . . . . . . . . . . . . 42
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 39 15.4. Metric Type Number Allocation . . . . . . . . . . . . . . 42
16. Security Considerations . . . . . . . . . . . . . . . . . . . 43
17. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 45
18. References . . . . . . . . . . . . . . . . . . . . . . . . . . 45
18.1. Normative References . . . . . . . . . . . . . . . . . . . 45
18.2. Informative References . . . . . . . . . . . . . . . . . . 46
Appendix A. Example RFC 5444-compliant packet formats . . . . . . 47
A.1. RREQ Message Format . . . . . . . . . . . . . . . . . . . 48
A.2. RREP Message Format . . . . . . . . . . . . . . . . . . . 48
A.3. RERR Message Format . . . . . . . . . . . . . . . . . . . 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 1. Overview
The Dynamic MANET On-demand (AODVv2) routing protocol [formerly named The Dynamic MANET On-demand (AODVv2) routing protocol [formerly named
DYMO] enables on-demand, multihop unicast routing among AODVv2 DYMO] enables on-demand, multihop unicast routing among AODVv2
routers in mobile ad hod networks [MANETs][RFC2119]. The basic routers in mobile ad hod networks [MANETs][RFC2501]. The basic
operations of the AODVv2 protocol are route discovery and route operations of the AODVv2 protocol are route discovery and route
maintenance. Route discovery is performed when an AODVv2 router must maintenance. Route discovery is performed when an AODVv2 router must
transmit a packet towards a destination for which it does not have a transmit a packet towards a destination for which it does not have a
route. Route maintenance is performed to avoid dropping packets, route. Route maintenance is performed to avoid prematurely expunging
when a route being used to forward packets from the source to a routes from the route table, and to avoid dropping packets when a
destination breaks, and to avoid prematurely expunging routes from route being used to forward packets from the source to a destination
the route table. breaks.
During route discovery, an AODVv2 router initiates flooding of a During route discovery, an AODVv2 router multicasts a Route Request
Route Request message (RREQ) throughout the network to find a route message (RREQ) to find a route toward a particular destination, via
to a particular destination, via the AODVv2 router responsible for the AODVv2 router responsible for this destination. Using a hop-by-
this destination. During this hop-by-hop flooding process, each hop retransmission algorithm, each intermediate AODVv2 router
intermediate AODVv2 router receiving the RREQ message records a route receiving the RREQ message records a route toward the originator.
to the originator. When the target's AODVv2 router receives the When the target's AODVv2 router (TargRtr) receives the RREQ, it
RREQ, it records a route to the originator and responds with a Route records a route toward the originator and responds with a Route Reply
Reply (RREP) unicast hop-by-hop toward the originating AODVv2 router. (RREP) unicast hop-by-hop toward the originating AODVv2 router. Each
Each intermediate AODVv2 router that receives the RREP creates a intermediate AODVv2 router that receives the RREP creates a route
route to the target, and then the RREP is unicast hop-by-hop toward toward the target, and unicasts the RREP hop-by-hop toward the
the originator. When the originator's AODVv2 router receives the originator. When the originator's AODVv2 router receives the RREP,
RREP, routes have then been established between the originating routes have then been established between the originating AODVv2
AODVv2 router and the target AODVv2 router in both directions. router and the target AODVv2 router in both directions.
Route maintenance consists of two operations. In order to preserve Route maintenance consists of two operations. In order to preserve
routes in use, AODVv2 routers extend route lifetimes upon active routes, AODVv2 routers extend route lifetimes upon
successfully forwarding a packet. In order to react to changes in successfully forwarding a packet. When a data packet is received for
the network topology, AODVv2 routers monitor traffic being forwarded. forwarding and there is no valid route for the destination, then the
When a data packet is received for forwarding and a route for the AODVv2 router of the source of the packet is notified via a Route
destination is not known or the route is broken, then the AODVv2 Error (RERR) message. Each upstream router that receives the RERR
router of the source of the packet is notified. A Route Error (RERR) marks the route as broken. Before such an upstream AODVv2 router
is transmitted to indicate the route to one or more affected could forward a packet to the same destination, it would have to
destination addresses is Broken or missing. When the source's AODVv2
router receives the RERR, it marks the route as broken. Before the
AODVv2 router can forward a packet to the same destination, it has to
perform route discovery again for that destination. perform route discovery again for that destination.
Similarly to AODV, AODVv2 uses sequence numbers to ensure loop AODVv2 uses sequence numbers to assure loop freedom [Perkins99],
freedom [Perkins99]. Sequence numbers enable AODVv2 routers to similarly to AODV. Sequence numbers enable AODVv2 routers to
determine the temporal order of AODVv2 route discovery messages, determine the temporal order of AODVv2 route discovery messages,
thereby avoiding use of stale routing information. Also, AODVv2 uses thereby avoiding use of stale routing information. Unlike AODV,
RFC 5444 message and TLV formats. AODVv2 uses RFC 5444 message and TLV formats.
2. Terminology 2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in "OPTIONAL" in this document are to be interpreted as described in
[RFC2119]. [RFC2119].
Additionally, this document uses some terminology from [RFC5444]. This document also uses some terminology from [RFC5444].
This document defines the following terminology: This document defines the following terminology:
Adjacency Adjacency
A relationship between selected bi-directional neighboring routers A bi-directional relationship between neighboring routers for the
for the purpose of exchanging routing information. Not every pair purpose of exchanging routing information. Not every pair of
of neighboring routers will necessarily form an adjacency. neighboring routers will necessarily form an adjacency.
Neighboring routers may form an adjacency based on various Neighboring routers may form an adjacency based on various
information or other protocols; for example, exchange of AODVv2 information or other protocols; for example, exchange of AODVv2
routing messages, other protocols (e.g. NDP [RFC4861] or NHDP routing messages, other protocols (e.g. NDP [RFC4861] or NHDP
[RFC6130]), or manual configuration. Loss of a routing adjacency [RFC6130]), or manual configuration. Loss of a routing adjacency
may also be based upon similar information; monitoring of may also be based upon similar information; monitoring of
adjacencies where packets are being forwarded is required (see adjacencies where packets are being forwarded is required (see
Section 5.5.1). Section 8.2).
Distance (Dist) AODVv2 Router
An unsigned integer which measures the distance a message or An IP addressable device in the ad-hoc network that performs the
information element has traversed. The minimum value of distance AODVv2 protocol operations specified in this document.
is 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 Sequence Number (SeqNum) AODVv2 Sequence Number (SeqNum)
An AODVv2 Sequence Number is an unsigned integer maintained by An AODVv2 Sequence Number is an unsigned integer maintained by
each AODVv2 router. This sequence number guarantees the temporal each AODVv2 router. This sequence number guarantees the temporal
order of routing information to maintain loop-free routes. The order of routing information to maintain loop-free routes. The
value zero (0) is reserved to indicate that the SeqNum for a value zero (0) is reserved to indicate that the SeqNum for a
destination address is unknown. destination address is unknown.
reactive Current_Time
A protocol operation is said to be "reactive" if it is performed The current time as maintained by the AODVv2 router.
only in reaction to specific events. As used in this document,
"reactive" is essentially synonymous with "on-demand".
Router Client disregard
An AODVv2 router may be configured with a list of other IP Ignore for further processing (see Section 5.4), and delete unless
addresses and networks which correspond to other non-router nodes it is required to keep the message in the packet for purposes of
which require the services of the AODVv2 router for route authentication.
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 Handling Router (HandlingRtr)
In this document, flooding a message refers to the process of HandlingRtr denotes the AODVv2 router handling an AODVv2 message.
delivering the message to every AODVv2 router in the network.
This may be done according to methods specified in [RFC5148].
Routable Unicast IP Address Incoming Link
A routable unicast IP address is a unicast IP address that when A link over which an AODVv2 has received a message from one of its
put into the IP.SourceAddress or IP.DestinationAddress field is adjacent routers.
scoped sufficiently to be forwarded by a router. Globally-scoped
unicast IP addresses and Unique Local Addresses (ULAs) [RFC6130] MANET
are examples of routable unicast IP addresses. 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) Originating Node (OrigNode)
The originating node is the data source node; if it is not itself The Originating Node is the node that launched the application
an AODVv2 router, its AODVv2 router creates a AODVv2 RREQ message requiring communication with the Target Node. If OrigNode is not
on its behalf in an effort to flood some routing information. The itself an AODVv2 router, its AODVv2 router (OrigRtr) has the
originating node is also referred to as a particular message's responsibility to generate a AODVv2 RREQ message on behalf of
originator. OrigNode when necessary to multicast a route discovery message.
Target Node (TargetNode) Originating Router (OrigRtr)
The TargetNode denotes the ultimate destination of a message. The Originating Router is the AODVv2 router that serves OrigNode.
OrigRtr generates the RREQ message to discover a route for
TargNode.
This Node (ThisNode) reactive
ThisNode denotes the AODVv2 router currently processing an AODVv2 A protocol operation is said to be "reactive" if it is performed
message. only in reaction to specific events. As used in this document,
"reactive" is essentially synonymous with "on-demand".
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 forwarded by a router. Globally-scoped unicast IP addresses
and Unique Local Addresses (ULAs) [RFC6549] are examples of
routable unicast IP addresses.
Route Error (RERR) Route Error (RERR)
A RERR message is used to indicate that an AODVv2 router no longer A RERR message is used to indicate that an AODVv2 router does not
has a route to one or more particular destinations. have a route toward one or more particular destinations.
Route Reply (RREP) Route Reply (RREP)
A RREP message is used to supply routing information about the A RREP message is used to establish a route between the RREQ
RREQ TargetNode to the RREQ OrigNode and the AODVv2 routers TargetNode and OrigNode, at all the AODVv2 routers between them.
between them.
Route Request (RREQ) Route Request (RREQ)
An AODVv2 router uses a RREQ message to discover a valid route to An AODVv2 router uses a RREQ message to discover a valid route to
a particular destination address, called the RREQ TargetNode. a particular destination address, called the RREQ TargetNode. An
When an AODVv2 router processes a RREQ, it learns routing AODVv2 router processing a RREQ receives routing information for
information on how to reach the RREQ OrigNode. the RREQ OrigNode.
Router Client
An AODVv2 router may be configured with 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.
Sequence Number (SeqNum)
Same as AODVv2 Sequence Number.
Target Node (TargNode)
The Target Node denotes the node for which a route is needed.
Target Router (TargRtr)
The TargetRtr denotes the AODVv2 router which serves TargNode.
Type-Length-Value structure (TLV) Type-Length-Value structure (TLV)
A generic way to represent information as specified in [RFC5444]. A generic way to represent information as specified in [RFC5444].
Unreachable Node (UnreachableNode) Unreachable Node (UnreachableNode)
An UnreachableNode is a node for which a forwarding route is An UnreachableNode is a node for which a forwarding route is
unknown. unknown.
3. Applicability Statement valid route
A route that can be used for forwarding; in other words a route
that is not Broken or Expired.
3. Notational Conventions
This document uses the conventions found in Table 1 to describe
information in the 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 RFC5444 Message Header |
| MsgTLV | an RFC5444 Message TLV |
| MetricTypeTLV | MetricType MsgTLV for Metric AddrTLV |
| MAL | MsgHdr.<msg-addr-length> |
| -- | -- |
| AddrBlk | an RFC5444 address block |
| AddrBlk[1] | The first address slot in AddrBlk |
| AddrBlk[N] | The Nth address slot in AddrBlk |
| AddrBlk[OrigNode] | AddrBlk[1] |
| AddrBlk[TargNode] | AddrBlk[2] |
| AddrTLV | an RFC5444 address block TLV |
| AddrTLV[1] | the first item in AddrTLV |
| AddrTLV[N] | the 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 main address block in a RteMsg |
| RteSeqNumTLV | Sequence Numbers for RteAddrBlk addresses |
| UnreachAddrBlk | Unreachable Node AddrBlk in RERR |
| -- | -- |
| OrigRtr | RREQ Originating Router |
| OrigNode | Originating Node |
| RREQ_Gen | AODVv2 router originating an RREQ |
| RREP_Gen | AODVv2 router responding to an RREQ |
| RteMsg | either RREQ or RREP |
| RteMsg_Orig | Originator of a RteMsg |
| HandlingRtr | Handling Router |
| TargRtr | Target Router |
| TargNode | Target Node |
| UnreachableNode | Unreachable Node |
+--------------------+-------------------------------------------+
Table 1
4. Applicability Statement
The AODVv2 routing protocol is designed for stub (i.e., non-transit) The AODVv2 routing protocol is designed for stub (i.e., non-transit)
or disconnected (i.e., from the Internet) mobile ad hoc networks or disconnected (i.e., from the Internet) mobile ad hoc networks
(MANETs). AODVv2 handles a wide variety of mobility patterns by (MANETs). AODVv2 handles a wide variety of mobility patterns by
dynamically determining routes on-demand. AODVv2 also handles a wide determining routes on-demand. AODVv2 also handles a wide variety of
variety of traffic patterns. In networks with a large number of traffic patterns. In networks with a large number of routers, AODVv2
routers, AODVv2 is best suited for sparse traffic scenarios where any is best suited for relatively sparse traffic scenarios where any
particular router forwards packets to only a small percentage of the particular router forwards packets to only a small percentage of the
AODVv2 routers in the network, due to the on-demand nature of route AODVv2 routers in the network, due to the on-demand nature of route
discovery and route maintenance. discovery and route maintenance.
Although AODVv2 is closely related to AODV [RFC3561], and has some of
the features of DSR [RFC4728], AODVv2 is not interoperable with
either of those other two protocols.
AODVv2 is applicable to memory constrained devices, since little AODVv2 is applicable to memory constrained devices, since little
routing state is maintained in each AODVv2 router. Only routing routing state is maintained in each AODVv2 router. Only routing
information related to routes between active sources and destinations information related to routes between active sources and destinations
is maintained, in contrast to proactive routing protocols that is maintained, in contrast to proactive routing protocols that
require routing information to all routers within the routing region require routing information to all routers within the MANET be
be maintained. maintained.
AODVv2 supports routers with multiple interfaces. In addition to AODVv2 supports routers with multiple interfaces, as long as each
routing for their local processes, AODVv2 routers can also route on interface has its own IP address. In addition to routing for their
behalf of other non-routing nodes (i.e., "hosts"), reachable via local processes, AODVv2 routers can also route on behalf of other
those interfaces. Any such node which is not itself an AODVv2 router non-routing nodes (i.e., "hosts", or, in this document, "clients"),
SHOULD NOT be served by more than one AODVv2 router. Although AODVv2 reachable via those interfaces. Any such node which is not itself an
is closely related to AODV [RFC3561], and has some of the features of AODVv2 router SHOULD NOT be served by more than one AODVv2 router.
DSR [RFC4728], AODVv2 is not interoperable with either of those other
two protocols.
AODVv2 routers perform route discovery to find a route to a Multi-homing is difficult unless the sequence number is expanded to
include the IP address as well as OwnSeqNum. Otherwise, comparing
sequence numbers would not work to evaluate freshness. Even when the
IP address is included, there isn't a good way to compare sequence
numbers from different IP addresses, but at least a handling node can
determine whether the two given sequence numbers are comparable. If
the route table can store multiple routes for the same destination,
then multi-homing can work with sequence numbers augmented by IP
addresses.
AODVv2 routers perform route discovery to find a route toward a
particular destination. Therefore, AODVv2 routers MUST must be particular destination. Therefore, AODVv2 routers MUST must be
configured to respond to RREQs for a certain set of addresses. When configured to respond to RREQs for a certain set of addresses. When
AODVv2 is the only protocol interacting with the forwarding table, AODVv2 is the only protocol interacting with the forwarding table,
AODVv2 MAY be configured to perform route discovery for all unknown AODVv2 MAY be configured to perform route discovery for all unknown
unicast destinations. unicast destinations.
At all times within an AODVv2 routing region, only one AODVv2 router At all times within an AODVv2 MANET, only one AODVv2 router SHOULD be
SHOULD be serve any routing client. The coordination among multiple serve any particular routing client. The coordination among multiple
AODVv2 routers to distribute routing information correctly for a AODVv2 routers to distribute routing information correctly for a
shared address (i.e. an address that is advertised and can be reached shared address (i.e. an address that is advertised and can be reached
via multiple AODVv2 routers) is not described in this document. The via multiple AODVv2 routers) is not described in this document. The
AODVv2 router operation of shifting responsibility for a routing AODVv2 router operation of shifting responsibility for a routing
client from one AODVv2 router to another is mentioned in Appendix B client from one AODVv2 router to another is mentioned in Appendix C.
Each AODVv2 router, if serving router clients other than itself, is Each AODVv2 router, if serving router clients other than itself, is
configured with information about the IP addresses of its clients. configured with information about the IP addresses of its clients.
There is no requirement that an AODVv2 router have information about No AODVv2 router is required to have information about the
the router clients of other AODVv2 routers. Address assignment relationship between any other AODVv2 router and its router clients.
procedures are entirely out of scope for AODVv2. Address assignment procedures are entirely out of scope for AODVv2.
AODVv2 only utilizes bidirectional links. In the case of possible AODVv2 only utilizes bidirectional links. In the case of possible
unidirectional links, either blacklists (see Section 5.13.2) or other unidirectional links, either blacklists (see Section 5.2) or other
means (e.g. adjacency establishment with only neighboring routers means (e.g. adjacency establishment with only neighboring routers
that have bidirectional communication as indicated by NHDP [RFC6130]) that have bidirectional communication as indicated by NHDP [RFC6130])
of ensuring and monitoring bi-directionality is recommended. of assuring and monitoring bi-directionality is recommended.
Otherwise, persistent packet loss could occur. Otherwise, persistent packet loss or persistent protocol failures
could occur. The Cost(L) of bidirectional link L may depend upon the
direction across the link for which the cost is measured.
The routing algorithm in AODVv2 may be operated at layers other than The routing algorithm in AODVv2 may be operated at layers other than
the network layer, using layer-appropriate addresses. The routing the network layer, using layer-appropriate addresses. The routing
algorithm makes of some persistent state; if there is no persistent algorithm makes of some persistent state; if there is no persistent
storage available for this state, recovery can exact a performance storage available for this state, recovery can impose a performance
penalty in case of AODVv2 router reboots. penalty in case of AODVv2 router reboots.
4. Data Structures 5. Data Structures
4.1. Route Table Entry 5.1. Route Table Entry
The route table entry is a conceptual data structure. The route table entry is a conceptual data structure.
Implementations may use any internal representation so long as it Implementations may use any internal representation so long as it
provides access to the same information as specified below. provides access to the same information as specified below.
Conceptually, a route table entry has the following fields: Conceptually, a route table entry has the following fields:
Route.Address Route.Address
The (host or network) destination address of the node(s) The (host or network) destination address of the node(s)
associated with the routing table entry. associated with the routing table entry
Route.Prefix Route.PfxLen
The value is the length of the netmask/prefix. If the value of The value is the length of the netmask/prefix. If the value of
the Route.Prefix is different than the length of addresses in the the Route.PfxLen is nonzero and different than the length of
address family used by the AODVv2 routers, the associated address addresses in the address family used by the AODVv2 routers, the
is a routing prefix, rather than a host address. associated address is a routing prefix, rather than a host
address.
Route.SeqNum Route.SeqNum
The AODVv2 SeqNum associated with a route table entry. The AODVv2 SeqNum associated with a route table entry
Route.NextHopAddress Route.NextHopAddress
An IP address of the adjacent AODVv2 router on the path toward the An IP address of the adjacent AODVv2 router on the path toward the
Route.Address. Route.Address
Route.NextHopInterface Route.NextHopInterface
The interface used to send packets toward the Route.Address. The interface used to send packets toward the Route.Address
Route.LastUsed
The time that this route was last used
Route.ExpirationTime
The time at which this route must expire
Route.Broken Route.Broken
A flag indicating whether this Route is broken. This flag is set A flag indicating whether this Route is broken. This flag is set
to true if the next-hop becomes unreachable or in response to to true if the next-hop becomes unreachable or in response to
processing to a RERR (see Section 5.5.4). processing to a RERR (see Section 8.4)
The following field is optional: Route.MetricType
The type of the metric for the route towards Route.Address
Route.Dist Route.Metric
A dimensionless metric indicating the distance traversed before The cost of the route towards Route.Address
reaching the Route.Address node.
Not including optional information may cause performance degradation, A route table entry (i.e., a route) may be in one of the following
but it will not prohibit the protocol from discovering valid routes. states:
In addition to a route table data structure, each route table entry Active
may have several timers associated with the information. Timers and An Active route is in current use for forwarding packets
timeouts are discussed in Section 5.2.3.
4.2. AODVv2 Message Structure and Information Elements Idle
An Idle route can be used for forwarding packets, even though it
is not in current use
IP Protocol Number 138 (manet) has been reserved for MANET protocols Expired
[RFC5498]. In addition to using this IP protocol number, AODVv2 may After a route has been idle for too long, it expires, and may no
use UDP at destination port 269 (manet) [RFC5498]. longer be used for forwarding packets
AODVv2 messages are transmitted in packets that conform to the Broken
generalized packet and message format as described in [RFC5444]. A route marked as Broken cannot be used for forwarding packets but
Here is a brief description of the format. still has valid destination sequence number information.
Timed
The expiration of a Timed route is controlled by the
Route.ExpirationTime time of the route table entry, not
MAX_IDLETIME. Until that time, a 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 Active route is maintained
continuously by AODVv2 and is considered to remain active as long as
it is used at least once during every ACTIVE_INTERVAL. When a route
is no longer Active, it becomes an Idle route. After a route remains
Idle for MAX_IDLETIME, it becomes an Expired route; after that, the
route is not used for forwarding, but the sequence number information
can be maintained until the destination sequence number has had no
updates for MAX_SEQNUM_LIFETIME. After MAX_SEQNUM_LIFETIME, old
sequence number information is considered no longer valuable and the
route is expunged.
MAX_SEQNUM_LIFETIME is the time after a reboot during which an AODVv2
router MUST NOT transmit any routing messages. Thus, if all other
AODVv2 routers expunge routes to the rebooted router after that time
interval, the rebooted AODVv2 router's sequence number will not be
considered stale by any other AODVv2 router in the MANET.
When the link to a route's next hop is broken, the route is marked as
being Broken, and the route may no longer be used.
5.2. Bidirectional Connectivity During Route Discovery and Blacklists
To avoid repeated failure of Route Discovery, an AODVv2 router
(HandlingRtr) handling a RREP message MAY attempt to verify
connectivity to the next upstream router towards AODVv2 router
originating an RREQ message, by including the Unicast Response
Request message TLV (see Section 15.2) in the RREP. Any unicast
packet will satisfy the Response Request, for example an ICMP REPLY
message. If the verification fails, HandlingRtr SHOULD put the
upstream neighbor in a blacklist. RREQs received from a blacklisted
node SHOULD NOT be retransmitted by HandlingRtr. However, the
upstream neighbor should not 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 IP address of the node that did not verify bidirectional
connectivity.
BlacklistRmTime
The time at which BlacklistNode will be removed from the
blacklist.
5.3. Router Clients and Client Networks
An AODVv2 router may offer routing services to other nodes that are
not AODVv2 routers. The AODVv2 Sequence Number is (by definition)
the same for the AODVv2 router and each of its clients.
For this purpose, a list of IP addresses nodes along with relevant
prefixes must be configured on each AODVv2:
Client IP address
The IP address of the node that requires routing service from the
AODVv2 router.
Client Prefix Length
The length of the routing prefix associated with the client IP
address.
If the Client Prefix Length is not the full length of the Client IP
address, then the prefix defines a Client Network. If an AODVv2
router is configured to serve a Client Network, then the AODVv2
router MUST serve every node that has an address within the range
defined by the routing prefix of the Client Network. The list of
Routing Clients for an AODVv2 router is never empty, since an AODVv2
router is always its own client as well.
5.4. AODVv2 Packet Header Fields and Information Elements
In its default mode of operation, AODVv2 uses the UDP port 269
[RFC5498] to carry protocol packets. In addition, IP Protocol Number
138 has been reserved for MANET protocols [RFC5498]. Most AODVv2
messages are sent with the IP destination address set to the link-
local multicast address LL-MANET-Routers [RFC5498] unless otherwise
specified. Therefore, all AODVv2 routers MUST subscribe to LL-MANET-
Routers [RFC5498] to receiving AODVv2 messages. In order to reduce
multicast overhead, retransmitting multicast packets in MANETs SHOULD
be done according to methods specified in [RFC6621]. AODVv2 does not
specify which method should be used to restrict the set of AODVv2
routers that have the responsibility to retransmit multicast packets.
Note that multicast packets MAY be sent via unicast. For example,
this may occur for certain link-types (non-broadcast media), for
manually configured router 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 packet is received with a value other
than 255, any AODVv2 message contained in the packet MUST be
disregarded by AODVv2. This mechanism, known as "The Generalized TTL
Security Mechanism" (GTSM) [RFC5082] helps to assure that packets
have not traversed any intermediate routers.
IP packets containing AODVv2 protocol messages SHOULD be given
priority queuing and channel access.
AODVv2 messages are transmitted in packets that conform to the packet
and message format described in [RFC5444]. Here is a brief
description of the format.
A packet formatted according to RFC5444 contains zero or more A packet formatted according to RFC5444 contains zero or more
messages. messages.
A message contains a message header, message TLV block, and zero A message contains a message header, message TLV block, and zero
or more address blocks. or more address blocks.
Each of the address blocks may also have an associated address TLV Each address block may also have associated TLV blocks.
block.
All AODVv2 messages SHOULD be sent using the IP protocol number (138) If a packet contains only a single AODVv2 message and no packet TLVs,
reserved for manet protocols [RFC5498]; or the UDP destination port it need not include a packet-header [RFC5444]. The length of an
(269) reserved for manet protocols [RFC5498] and IP protocol number address (32 bits for IPv4 and 128 bits for IPv6) inside an AODVv2
for UDP. message is indicated by the msg-addr-length (MAL) in the msg-header,
as specified in [RFC5444].
Most AODVv2 messages are sent with the IP destination address set to When multiple messages are aggregated into a single packet according
the link-local multicast address LL-MANET-Routers [RFC5498] unless to RFC 5444 formatting, and the aggregation of messages is also
otherwise specified. Therefore, all AODVv2 routers SHOULD subscribe authenticated (e.g., with IPsec), it becomes unfeasible to delete
to LL-MANET-Routers [RFC5498] to receiving AODVv2 messages. Note individual messages. In such cases, instead of deleting individual
that multicast packets MAY be sent via unicast. For example, this messages, they are maintained in the aggregation of messages, but
may occur for certain link-types (non broadcast mediums), for simply ignored for further processing. In such cases where
manually configured router adjacencies, or in order to improve individual messages cannot be deleted, in this document "disregarded"
robustness. means "ignored". Otherwise, any such "disregarded" AODVv2 messages
SHOULD be deleted from the aggregated messages in the RFC 5444
packet.
When describing AODVv2 protocol messages, it is necessary to refer to 5.5. AODVv2 Sequence Numbers
fields in several distinct parts of the overall packet. These
locations include the IP header, the UDP header, and fields from
[RFC5444]. This document uses the notational conventions found in
table 1.
+---------------------------+-------------------+ AODVv2 sequence numbers allow AODVv2 routers to evaluate the
| Information Location | Notational Prefix | freshness of routing information. Proper maintenance of sequence
+---------------------------+-------------------+ numbers assures that the destination sequence number value stored by
| IP header | IP. | intermediate AODVv2 routers is monotonically increasing along any
| RFC5444 message header | MsgHdr. | path from any source to the destination. As a consequence, loop
| RFC5444 message TLV | MsgTLV. | freedom is assured.
| RFC5444 address blocks | AddBlk. |
| RFC5444 address block TLV | AddTLV. |
+---------------------------+-------------------+
Table 1 Each AODVv2 router in the network MUST maintain its own sequence
number (OwnSeqNum, a 16-bit unsigned integer). An AODVv2 router
increments its OwnSeqNum as follows. Most of the time, OwnSeqNum is
incremented by simply adding one (1). But to increment OwnSeqNum
when it has the value of the largest largest possible number
representable as a 16-bit unsigned integer (i.e., 65,535), it MUST be
set to one (1). In other words, the sequence number after 65,535 is
1.
The IPv4 TTL (IPv6 Hop Limit) field for all packets containing AODVv2 An AODVv2 router SHOULD maintain OwnSeqNum in persistent storage. If
messages is set to 255. If a packet is received with a value other an AODVv2 router's OwnSeqNum is lost, it MUST take the following
than 255, any AODVv2 message contained in the packet MUST be ignored actions to avoid the danger of routing loops. First, the AODVv2
by AODVv2. This mechanism, known as "The Generalized TTL Security router MUST invalidate all route table entries, by setting
Mechanism" (GTSM) [RFC5082] helps to ensure that packets have not Route.Broken for each entry. Furthermore the AODVv2 router MUST wait
traversed any intermediate routers. for at least MAX_SEQNUM_LIFETIME before transmitting or
retransmitting any AODVv2 RREQ or RREP messages. If an AODVv2
protocol message is received during this waiting period, the AODVv2
router SHOULD perform normal route table entry updates. If a data
packet is received for forwarding to another destination during this
waiting period, the AODVv2 router MUST transmit a RERR message
indicating that no route is available. At the end of the waiting
period the AODVv2 router sets its OwnSeqNum to one (1) and begins
performing AODVv2 protocol functions again.
The length of an address (32 bits for IPv4 and 128 bits for IPv6) 5.6. Enabling Alternate Metrics
inside an AODVv2 message depends on the msg-addr-length (MAL) in the
msg-header, as specified in [RFC5444].
IP packets containing AODVv2 protocol messages SHOULD be given Route selection in AODVv2 MANETs depends upon associating metric
priority queuing and channel access. information with each route table entry. When presented with
candidate route update information, deciding whether to use the
update involves evaluating the metric. Some applications may require
the consideration of metric information other than Hop Count, which
has traditionally been the default metric associated with routes in
MANET. In fact, it is well known that reliance on Hop Count can
cause selection of the worst possible route in many situations.
AODVv2 messages require the following information: It is beyond the scope of this document to describe how applications
specify route selection at the time they launch processing. One
possibility would be to provide a route metric preference as part of
the library routines for opening sockets. In view of the above
considerations, it is important to enable route selection based on
metric information other than Hop Count -- in other words, based on
"alternate metrics". Each such alternate metric identifies a "cost"
of using the associated route, and there are many different kinds of
cost (latency, delay, financial, energy, etc.).
IP.SourceAddress The most significant change when enabling use of alternate metrics is
The IP address of the node currently sending this packet. This to require the possibility of multiple routes to the same
field is generally filled automatically by the operating system destination, where the "cost" of each of the multiple routes is
and should not require special handling. measured by a different alternate metric. The other change relevant
to AODVv2 is that the 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 document, is named
"Cost(R)", where 'R' is the route information to be evaluated. From
the above, the route table information for 'R' must always include
the type of metric by which Cost(R) is evaluated, so the metric type
does not have to be shown as a distinct parameter for Cost(R). Since
determining loop freedom is known to depend on comparing the Cost(R)
of route update information to the Cost(R) of an existing stored
route using the same metric, AODVv2 must also be able to invoke an
abstract routine which in this document is called "LoopFree(R1, R2)".
LoopFree(R1, R2) returns TRUE when, given that R2 is loop-free and
Cost(R2) is the cost of route R2, Cost(R1) is known to guarantee loop
freedom of the route R1. In this document, LoopFree(R1,R2) will only
be invoked for routes R1 and R2 which use the same metric.
IP.DestinationAddress Generally, HopCount may still be considered the default metric for
The IP address of the packet destination. For multicast messages use in MANETs, notwithstanding the above objections. Each metric has
the IP.DestinationAddress is set to LL-MANET-Routers [RFC5498]. to have a Metric Type, and the Metric Type is allocated by IANA as
For unicast messages the IP.DestinationAddress is set to the specified in [RFC6551]. Each Route has to include the Metric Type as
NextHopAddress toward the TargetNode. part of the 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 Hop Count between the router and the destination. For
routes R1 and R2 using Metric Type 3, LoopFree (R1, R2) is TRUE when
Cost(R2) <= (Cost(R1) + 1). The specification of Cost(R) and
LoopFree(R1,R2) for metric types other than 3 is beyond the scope of
this document.
MsgHdr.HopLimit Whenever an AODV router receives metric information in an incoming
The remaining number of hops this message is allowed to traverse. message, the value of the metric is as measured by the transmitting
If an AODVv2 message within a RFC 5444 packet has exhausted its router, and does not reflect the cost of traversing the incoming
hop limit, then it should be removed from the packet. link. In order to simplify the description of storing accrued route
costs in the route table, the Cost() function is also defined to
return the value of traversing a link 'L'. In other words, the
domain of the Cost() function is enlarged to include links as well as
routes. For Metric Type 3, (i.e., the HopCount metric) Cost(L) = 1
for all links. The specification of Cost(L) for metric types other
than 3 is beyond the scope of this document. Whether the argument of
the Cost() function is a link or a route will, in this document,
always be clear. As a natural result of the way routes are looked up
according to conformant metric type, all intermediate routers
handling a RteMsg will assign the same metric type to all metric
information in the RteMsg.
4.3. RteMsg-specific Protocol Elements For some metrics, a maximum value is defined, namely MAX_METRIC[i]
where 'i' is the Metric Type. AODVv2 does not store routes that cost
more than MAX_METRIC[i]. MAX_METRIC[3] is defined to be
MAX_HOPCOUNT, where as before 3 is the Metric Type of the HopCount
metric.
AODVv2 message types RREQ and RREP are denoted as Routing Messages 6. AODVv2 Operations on Route Table Entries
(RteMsgs) and used 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 the unicast response to RREQ. RteMsg creation
and handling are described in Section 5.3.
Unicast AODVv2 RteMsgs (e.g. RREP) unless otherwise specified are In this section, operations are specified for updating the route
sent with the IP destination set to the Route.NextHopAddress of the table due to timeouts and route updates within AODVv2 messages. The
route to the TargetNode. route update information in AODVv2 messages includes the destination
IP address (DestIP), SeqNum and prefix length associated with DestIP,
and the Metric from DestIP to the node transmitting the AODVv2
message. DestIP information and prefix length are 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 section, RteMsg is either RREQ or RREP,
RteMsg.Addr denotes the [i]th address in an RFC 5444 AddrBlk of the
RteMsg, RteMsg.PfxLen denotes the associated prefix length for
RteMsg.Addr, and RteMsg.{field} denotes the corresponding value in
the named AddrTLV block associated with RteMsg.Addr. All SeqNum
comparisons use signed 16-bit arithmetic.
A RteMsg REQUIRES the following information in addition to the fields 6.1. Evaluating Incoming Routing Information
indicated in Section 4.2:
AddBlk.TargetNode.Address If the incoming RteMsg does not have a MetricTypeTLV, then the metric
The IP address of the message TargetNode. In a RREQ the IP information contained by RteMsg is considered to be of type
address of the message TargetNode is the destination address for DEFAULT_METRIC_TYPE. Whenever an AODVv2 router (HandRtr) handles an
which route discovery is being performed. In a RREP the incoming RteMsg (i.e., RREQ or RREP), for every relevant address
TargetNode is the RREQ OrigNode address. The TargetNode address (RteMsg.Addr) in the RteMsg, HandRtr searches its route table to see
is the first address in a routing message. if there is a route table entry with the same MetricType of the
RteMsg, matching RteMsg.Addr. If not, HandRtr creates a route table
entry for RteMsg.Addr as described in Section 6.2. Otherwise,
HandRtr compares the incoming routing information in RteMsg against
the already stored routing information in the route table entry
(Route) for RteMsg.Addr, as described below.
AddBlk.OrigNode.Address Suppose a route table entry (Route[RteMsg.Addr]) uses the same metric
The IP address of the originator and its associated prefix length. type as the incoming routing information, and contains Route.SeqNum,
In a RREQ the OrigNode is the source's address and prefix. In a Route.Metric, and Route.Broken. Suppose the incoming routing
RREP the OrigNode is the RREQ TargetNode's address and prefix for information for Route.Addr is RteMsg.SeqNum and RteMsg.Metric. The
which a RREP is being generated. This address is the second incoming routing information is compared as follows:
address in the message for RREQ.
OrigNode.AddTLV.SeqNum 1. Stale:: RteMsg.SeqNum < Route.SeqNum :
The AODVv2 sequence number of the originator's AODVv2 router. If RteMsg.SeqNum < Route.SeqNum the incoming information is stale.
Using stale routing information is not allowed, since that might
result in routing loops. HandRtr MUST disregard the routing
information for RteMsg.Addr.
A RteMsg may optionally include the following information: 2. Unsafe against loops:: (TRUE != LoopFree (RteMsg, Route)) :
If RteMsg is 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 incoming RteMsg information is
not guaranteed to prevent routing loops, and it MUST NOT be used.
TargetNode.AddTLV.SeqNum 3. Longer::
The last known AODVv2 sequence number of the TargetNode. (RteMsg.Metric >= Route.Metric) && (Route.Broken==FALSE)
When RteMsg.SeqNum is the same as in a 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 update a route table entry is
not recommended.
AddBlk.AdditionalNode.Address 4. Offers improvement::
The IP address of an additional node that can be reached via the Incoming routing information that does not match any of the above
AODVv2 router adding this information. Each criteria is better than existing routing table information and
AdditionalNode.Address MUST include its prefix. Each SHOULD be used to improve the route table. The following pseudo-
AdditionalNode.Address MUST also have an associated Node.SeqNum in code illustrates whether incoming routing information should be
the address TLV block. used to update an existing route table entry as described in
Section 6.2.
AdditionalNode.AddTLV.SeqNum (RteMsg.SeqNum > Route.SeqNum) OR
The AODVv2 sequence number associated with this routing {(RteMsg.SeqNum == Route.SeqNum) AND
information. [(RteMsg.Metric < Route.Metric) OR
((Route.Broken == TRUE) && LoopFree (RteMsg, Route))]}
OrigNode.AddTLV.Dist The above logic corresponds to placing the following conditions on
A metric of the distance to reach the associated OrigNode.Address. the incoming route update (compared to the existing route table
This field is incremented by at least one at each intermediate entry) before it can be used:
AODVv2 router.
AdditionalNode.AddTLV.Dist * it is more recent, or
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. Route Error (RERR)-specific Protocol Elements * it is not stale and is shorter, or
A RERR message is used to flood the information that a route is not * it can safely repair a broken route.
available for one or more particular addresses.
RERR creation and handling are described in Section 5.5. 6.2. Applying Route Updates To Route Table Entries
A RERR requires the following information in addition to the field To apply the route update, the route table entry is populated with
indicated in Section 4.2: the following information:
AddBlk.UnreachableNode.Address o Route.Address := RteMsg.Addr
The address of an UnreachableNode and its associated prefix
length. Multiple unreachable addresses may be included in a RERR.
A Route Error may optionally include the following information: o If (RteMsg.PfxLen != 0), then Route.PfxLen := RteMsg.PfxLen
UnreachableNode.AddTLV.SeqNum o Route.SeqNum := RteMsg.SeqNum
The last known AODVv2 sequence number of the unreachable node. If
a SeqNum for an address is zero (0) or not included, it is assumed
to be unknown. This case occurs when a node receives a message to
forward to a destination for which it does not have any
information in its routing table.
5. Detailed Operation for the Base Protocol o Route.NextHopAddress := IP.SourceAddress (i.e., an address of the
node from which the RteMsg was received)
5.1. AODVv2 Sequence Numbers o Route.NextHopInterface is set to the interface on which RteMsg was
received
AODVv2 sequence numbers allow AODVv2 routers to judge the freshness o Route.Broken flag := FALSE
of routing information and consequently ensure loop freedom.
5.1.1. Maintaining A Node's Own Sequence Number o If RteMsg.MetricType is included, then
Route.MetricType := RteMsg.MetricType. Otherwise,
Route.MetricType := DEFAULT_METRIC_TYPE.
AODVv2 requires that each AODVv2 router in the network maintain its o Route.MetricType := RteMsg.MetricType
own AODVv2 sequence number (OwnSeqNum). OwnSeqNum a 16-bit unsigned
integer. An AODVv2 router increments its OwnSeqNum under the
circumstances described in Section 5.3.
Incrementing an OwnSeqNum whose value is the largest largest possible o Route.Metric := RteMsg.Metric
number representable as a 16-bit unsigned integer (i.e., 65,535),
MUST be set to one (1). In other words, the sequence number after
65,535 is 1.
5.1.2. Actions After OwnSeqNum Loss o Route.LastUsed := Current_Time
An AODVv2 router SHOULD maintain its own sequence number in o If RteMsg.VALIDITY_TIME is not included, then
persistent storage. Route.ExpirationTime := MAXTIME, otherwise Route.ExpirationTime :=
Current_Time + RteMsg.VALIDITY_TIME
If an AODVv2 router's OwnSeqNum is lost, it MUST take certain actions With these assignments to the route table entry, a route has been
to avoid creating routing loops. To prevent this possibility after made available, and the route can be used to send any buffered data
OwnSeqNum loss an AODVv2 router MUST wait for at least packets and subsequently to forward any incoming data packets for
ROUTE_DELETE_TIMEOUT before fully participating in the AODVv2 routing Route.Addr. An updated route entry also fulfills any outstanding
protocol. If an AODVv2 protocol message is received during this route discovery (RREQ) attempts for Route.Addr.
waiting period, the AODVv2 router SHOULD perform normal route table
entry updates but MUST NOT transmit or retransmit any AODVv2 RREQ or
RREP messages. If a data packet is received for forwarding to
another destination during this waiting period, the AODVv2 router
MUST transmit a RERR message indicating that this route is not
available and reset its waiting timeout. At the end of the waiting
period the 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 6.3. Route Table Entry Timeouts
end of the maximum waiting period a node SHOULD set its OwnSeqNum to
one (1) and begins participating.
5.2. AODVv2 Routing Table Operations During normal operation, AODVv2 does not require any explicit
timeouts to manage the lifetime of a route. However, the route table
entry MUST be examined be before using it to forward a packet, as
discussed in Section 8.1. Any required expiry or deletion can occur
at that time. Nevertheless, it is permissible to implement timers
and timeouts to achieve the same effect.
5.2.1. Judging Routing Information's Usefulness At any time, the route table can be examined and route table entries
can be expunged according to their current state at the time of
examination, as follows.
Given a route table entry (Route.SeqNum, Route.Dist, and o An Active route MUST NOT be expunged.
Route.Broken) and incoming routing information for a particular
destination in a RteMsg (Node.SeqNum, Node.Dist, and RteMsg message
type - RREQ/RREP), the incoming routing information is classified as
follows:
1. Stale (Node.SeqNum < Route.SeqNum) o An Idle route SHOULD NOT be expunged.
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 in routing loops.
2. Not safe against loops o An Expired route MAY be expunged (least recently used first).
If Node.SeqNum == Route.SeqNum, additional information MUST be
examined. If Route.Dist or Node.Dist is unknown or zero (0), or
if Node.Dist > Route.Dist + 1, then the incoming information is
not guaranteed to prevent routing loops. Using such incoming
routing information is not allowed. The following pseudocode is
offered to indicate the logical condition under which the incoming
information is not guaranteed to protect against loops.
(Node.SeqNum == Route.SeqNum) AND o A route MUST be expunged if (Current_Time - Route.LastUsed) >=
((Node.Dist > Route.Dist + 1) OR MAX_SEQNUM_LIFETIME.
(Route.Dist is unknown) OR (Node.Dist is unknown))
3. Offers no improvement o A route MUST be expunged if Current_Time >= Route.ExpirationTime
In case of known equal SeqNum, the information is considered worse
than the existing route table information in multiple cases: (case
i) if Node.Dist > Route.Dist (it is 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 be
retransmitted. Updating route table entries using such incoming
routing information is not allowed.
((Node.SeqNum == Route.SeqNum) AND If precursor lists are maintained for the route (as described in
(((Node.Dist > Route.Dist) AND (Route.Broken == false)) OR Section 13.3) then the precursor lists must also be expunged at the
((Node.Dist == Route.Dist) AND same time that the route itself is expunged.
(RteMsg is RREQ) AND (Route.Broken == false))))
4. Offers improvement 7. Routing Messages RREQ and RREP (RteMsgs)
Incoming routing information that does not match any of the above
criteria is loop-free and better than the existing routing table
information. We provide 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 AODVv2 message types RREQ and RREP are together known as Routing
((Node.SeqNum == Route.SeqNum) AND Messages (RteMsgs) and are used to discover a route between an
[(Node.Dist < Route.Dist) OR Originating and Target Node, denoted here by OrigNode and TargNode.
((Route.Broken == true) AND (Node.Dist <= Route.Dist + 1)) OR The constructed route is bidirectional, enabling packets to flow
((RteMsg is RREP) AND (Node.Dist == Route.Dist)] between OrigNode and TargNode. RREQ and RREP have similar
information and function, but have some differences in their rules
for handling. The main difference between the two messages is that
RREQ messages are typically multicast to solicit a RREP, whereas RREP
is typically unicast as a response to RREQ.
5.2.2. Creating or Updating Route Table Entries When an AODVv2 router needs to forward a data packet from a node
(OrigNode) in its set of router clients, and it does not have a
forwarding route toward the packet's IP destination address
(TargNode), the AODVv2 router (in this section, called RREQ_Gen)
generates a RREQ (as described in Section 7.3) to discover a route
toward TargNode. Subsequently RREQ_Gen awaits reception of an RREP
message (see Section 7.4) or other route table update (see
Section 6.2) to establish a route toward TargNode. The RREQ message
contains routing information to enable RREQ recipients to route
packets back to OrigNode, and the RREP message contains routing
information enabling RREP recipients to route packets to TargNode.
Each route table entry is populated with the following information: 7.1. Route Discovery Retries and Buffering
1. the Route.Address is set to Node.Address, After issuing a RREQ, as described above RREQ_Gen awaits a RREP
providing a bidirectional route toward Target Node. If the RREP is
not received within RREQ_WAIT_TIME, RREQ_Gen may retry the Route
Discovery by generating another RREQ. Route Discovery SHOULD be
considered to have failed after DISCOVERY_ATTEMPTS_MAX and the
corresponding wait time for a RREP response to the final RREQ. After
the attempted Route Discovery has failed, RREQ_Gen MUST wait at least
RREQ_HOLDDOWN_TIME before attempting another Route Discovery to the
same destination.
2. the Route.Prefix is set to the Node.Prefix. To reduce congestion in a network, repeated attempts at route
discovery for a particular Target Node SHOULD utilize an binary
exponential backoff.
3. the Route.SeqNum is set to the Node.SeqNum, Data packets awaiting a route SHOULD be buffered by RREQ_Gen. 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 the absence of policy
constraints, by default older data packets SHOULD be discarded first.
Buffering of data packets can have both positive and negative effects
(albeit usually positive). Nodes without sufficient memory available
for buffering SHOULD be configured to disable buffering by
configuring BUFFER_SIZE_PACKETS == 0 and BUFFER_SIZE_BYTES == 0.
Doing so will affect the latency required for launching TCP
applications to new destinations.
4. the Route.NextHopAddress is set to the IP.SourceAddress (i.e., an If a route discovery attempt has failed (i.e., DISCOVERY_ATTEMPTS_MAX
address of the node that last transmitted the RteMsg packet) attempts have been made without receiving a RREP) to find a route
toward the Target Node, any data packets buffered for the
corresponding Target Node MUST BE dropped and a Destination
Unreachable ICMP message (Type 3) SHOULD be delivered to the source
of the data packet. The code for the ICMP message is 1 (Host
unreachable error). If RREQ_Gen is not the source (OrigNode), then
the ICMP is sent over the interface from which OrigNode sent the
packet to the AODVv2 router.
5. the Route.NextHopInterface is set to the interface on which the 7.2. RteMsg Structure
incoming AODVv2 packet was received,
6. the Route.Broken flag is set to false, RteMsgs have the following general format:
7. if known, the Route.Dist is set to the Node.Dist, +---------------------------------------------------------------+
| RFC 5444 Packet Header |
+---------------------------------------------------------------+
| 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) |
+---------------------------------------------------------------+
| Added Node Address Block (Optional) |
+---------------------------------------------------------------+
| Added Node Address TLV (SeqNum) |
+---------------------------------------------------------------+
| Added Node Address TLV (Metric[MetricType]) |
+---------------------------------------------------------------+
The timer for the minimum delete timeout (ROUTE_AGE_MIN) is set to Figure 1: RREQ and RREP (RteMsg) message structure
ROUTE_AGE_MIN_TIMEOUT. The timer for the maximum delete timeout
(ROUTE_SEQNUM_AGE_MAX) is set to Node.AddTLV.VALIDITY_TIME [RFC5497]
if included; otherwise, ROUTE_SEQNUM_AGE_MAX is set to
ROUTE_SEQNUM_AGE_MAX_TIMEOUT. The usage of these timers and others
are described in Section 5.2.3.
With these assignments to the route table entry, a route has been Message Header
created and the Route.Forwarding flag set. Afterward, the route can This is typically mostly boilerplate but can contain MsgTLVs as
be used to send any buffered data packets and to forward any incoming below.
data packets for Route.Address. This route also fulfills any
outstanding route discovery (RREQ) attempts for Node.Address.
5.2.3. Route Table Entry Timeouts DestOnly TLV
RREQ only: no Intermediate RREP.
5.2.3.1. Minimum Delete Timeout (ROUTE_AGE_MIN) MetricType TLV
Metric Type for Metric AddrTLV
When an AODVv2 router transmits a RteMsg, other AODVv2 routers expect RteAddrBlk
the transmitting AODVv2 router to have a forwarding route to the This Address Block contains the IP addresses for RREQ Originating
RteMsg originator. A route table entry SHOULD be kept in the route and Target Node (OrigNode and TargNode). Note that for both RREP
table for at least ROUTE_AGE_MIN after it has been updated. Failure and RREQ, the OrigNode and TargNode are as identified in the
to maintain the route table entry might result in lost messages/ context of the RREQ message originator.
packets, or several duplicate messages.
After the ROUTE_AGE_MIN timeout a route can safely be deleted. RteSeqNumTLV (Sequence Number AddrTLV)
This Address Block TLV is REQUIRED and carries the destination
sequence numbers associated with either OrigNode or TargNode or
both.
5.2.3.2. Maximum Sequence Number Delete Timeout (ROUTE_SEQNUM_AGE_MAX) (Optional) Added Node AddrBlk
AODVv2 allows the inclusion of routing information for other nodes
in addition to OrigNode and TargNode.
Sequence number information for route table entries is time (Optional) SeqNum AddrTLV If the Added Node AddrBlk is present, the
sensitive, and MUST be deleted after a time in order to ensure loop- SeqNum AddrTLV is REQUIRED, to carry the destination sequence
free routing. numbers associated with the Added Nodes.
After the ROUTE_SEQNUM_AGE_MAX timeout a route's sequence number (Optional) Metric AddrTLV If the Added Node AddrBlk is present, this
information MUST be discarded. AddrTLV is REQUIRED, to carry the metric information associated
with the Added Nodes. See Below.
5.2.3.3. Recently Used Timeout (ROUTE_USED) The metric AddrTLV may be either a Metric8 AddrTLV or an Metric16
AddrTLV.
When a route is used to forward data packets, this timer is set to 7.3. RREQ Generation
expire after ROUTE_USED_TIMEOUT, as discussed in Section 5.5.2.
If a route has not been used recently, then a timer for ROUTE_DELETE RREQ_Gen generates the RREQ according to the following steps, with
is set to ROUTE_DELETE_TIMEOUT. order of protocol elements illustrated schematically in Figure 1.
5.2.3.4. Delete Information Timeout (ROUTE_DELETE) 1. RREQ_Gen MUST increment its OwnSeqNum by one (1) according to the
rules specified in Section 5.5. This assures that all nodes with
existing routing information will use RREQ_Gen's new information
to update existing routing table information.
As time progresses the likelihood that old routing information is 2. OrigNode MUST be a unicast address. If RREQ_Gen is not OrigNode,
useful decreases, especially if the network nodes are mobile. then OwnSeqNum will be used as the value of OrigNode.SeqNum. will
Therefore, old information SHOULD be deleted. be used by AODVv2 routers to create a route toward the OrigNode,
enabling a RREP from TargRtr, and eventually used for proper
forwarding of data packets.
After the ROUTE_DELETE timeout if a forwarding route exists it SHOULD 3. If RREQ_Gen requires that only TargRtr is allowed to generate a
be removed, and the routing table entry SHOULD also be deleted. RREP, then RREQ_Gen includes the "Destination RREP Only" TLV as
part of the 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).
5.3. Routing Messages 4. msg-hopcount MUST be set to 0.
5.3.1. RREQ Creation * This RFC 5444 constraint causes the typical RteMsg payload
incur additional enlargement.
Before an AODVv2 router creates a RREQ it SHOULD increment its 5. RREQ_Gen adds the TargNode.Addr to the RREQ.
OwnSeqNum by one (1) according to the rules specified 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 the sequence number is not
incremented, certain AODVv2 routers might not consider this
information preferable, if they have existing better routing
information.
First, ThisNode adds the AddBlk.TargetNode.Address to the RREQ; the 6. If a previous value of the TargNode's SeqNum is known (e.g., from
unicast IP Destination Address for which a forwarding route does not an invalid routing table entry using longest-prefix matching),
exist. RREQ_Gen SHOULD include TargNode.SeqNum in all but the last RREQ
attempt. If TargNode.SeqNum is not included, it is assumed to be
unknown by AODVv2 routers handling the RREQ; if the optional
feature Intermediate RREP is enabled, then any route to TargNode
will satisfy the RREQ [I-D.perkins-irrep].
If a previous value of the TargetNode.SeqNum is known (from a routing 7. RREQ_Gen adds OrigNode.Addr, its prefix, and the RREQ_Gen.SeqNum
table entry using longest-prefix matching), it SHOULD be placed in (OwnSeqNum) to the RREQ.
TargetNode.AddTLV.SeqNum in all but the last RREQ attempt. If a
TargetNode.SeqNum is not included, it is assumed to be unknown by
handling nodes. This operation ensures that no intermediate AODVv2
routers reply, and ensures that the TargetNode's AODVv2 router
increments its sequence number.
Next, ThisNode adds AddBlk.OrigNode.Address, its prefix, and the 8. If OrigNode.Metric is included it is set to the cost of the route
OrigNode.AddTLV.SeqNum (OwnSeqNum) to the RteMsg. between OrigNode and RREQ_Gen.
The OrigNode.Address is the address of the source for which this An example RREQ message format is illustrated in Appendix A.1.
AODVv2 router is initiating this route discovery. The
OrigNode.Address MUST be a unicast address. This information will be
used by nodes to create a route toward the OrigNode, enabling
delivery of a RREP, and eventually used for proper forwarding of data
packets.
If OrigNode.Dist is included it is set to a number, greater than zero 7.4. RREP Generation
(0), representing the distance between OrigNode and ThisNode.
The MsgHdr.HopLimit SHOULD be set to MSG_HOPLIMIT. An AODVv2 router (TargRtr, called in this section RREP_Gen) generates
a RREP in order to provide a route to the Target Node (TargNode) of a
RREQ, thus satisfying the routing requirement for packets to flow
between OrigNode and TargNode. This section specifies the generation
of an RREP by the RREP_Gen. The basic format of an RREP conforms to
the structure for RteMsgs as illustrated in Figure 1. Optionally,
RREP messages may be generated by AODVv2 routers other than TargRtr;
this optional message generation is known as "Intermediate RREP"
generation, and is specified in Internet Draft [I-D.perkins-irrep].
If TargNode is not a unicast IP address the RREP MUST NOT be
generated, and processing for the RREQ is complete.
5.3.2. RREP Creation Otherwise RREP_Gen generates the RREP as follows:
First, the AddBlk.TargetNode.Address is added to the RREP. The 1. RREP_Gen first uses the routing information to update its route
TargetNode is the ultimate destination of this RREP; the RREQ table entry for OrigNode if necessary as specified in
OrigNode.Address. Section 6.2.
Next, AddBlk.OrigNode.Address and prefix are added to the RREP. The 2. RREP_Gen MUST increment its OwnSeqNum by one (1) according to
AddBlk.OrigNode.Address is the RREQ TargetNode.Address. The the rules specified in Section 5.5.
AddBlk.OrigNode.Address MUST be a unicast IP address. ThisNode
SHOULD advertise the largest known prefix containing
AddBlk.OrigNode.Address.
When the RteMsg TargetNode's AODVv2 router creates a RREP, if the 3. RREP.AddrBlk[OrigNode] := RREQ.AddrBlk[OrigNode]
TargetNode.SeqNum was not included in the RREQ, ThisNode MUST
increment its OwnSeqNum by one (1) according to the rules specified
in Section 5.1.
If TargetNode.SeqNum was included in the RteMsg and TargetNode.SeqNum 4. RREP.AddrBlk[TargNode] := RREQ.AddrBlk[TargNode]
- OwnSeqNum < 0 (using signed 16-bit arithmetic), OwnSeqNum SHOULD be
incremented by one (1) according to the rules specified in
Section 5.1.
If TargetNode.SeqNum is included in the RteMsg and TargetNode.SeqNum 5. RREP.SeqNumTLV[OrigNode] := RREQ.SeqNumTLV[OrigNode]
== OwnSeqNum (using signed 16-bit arithmetic) and OrigNode.Dist will
not be included in the RREP being generated, OwnSeqNum SHOULD be
incremented by one (1) according to the rules specified in
Section 5.1.
If OwnSeqNum is not incremented the routing information might be 6. RREP.SeqNumTLV[TargNode] := OwnSeqNum
considered stale. In this case, the RREP might not reach the RREP
Target.
After any of the sequence number operations above, the RREP 7. If Route[TargNode].PfxLen/8 is equal to the number of bytes in
OrigNode.AddTLV.SeqNum (OwnSeqNum) MUST also be added to the RREP. the addresses of the RREQ (4 for IPv4, 16 for IPv6), then no
<prefix-length> is included with the iRREP. Otherwise,
RREP.PfxLen[TargNode] := RREQ.PfxLen[TargNode] according to the
rules of RFC 5444 AddrBlk encoding.
Other AddTLVs in the RREP for the OrigNode and TargetNode SHOULD be 8. RREP.MetricType[TargNode] := Route[TargNode].MetricType
included and set accordingly. If OrigNode.Dist is included it is set 9. RREP.Metric[TargNode] := Route[TargNode].Metric
to a number greater than zero (0) and less than or equal to 254. The
Distance value will influence judgment of 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. 10. <msg-hop-limit> SHOULD be set to RteMsg.<msg-hop-count>.
The IP.DestinationAddress for RREP is set to the IP address of the 11. IP.DestinationAddr := Route[OrigNode].NextHop
Route.NextHopAddress for the route to the RREP TargetNode.
5.3.3. RteMsg Handling The message format for RREP is illustrated in Appendix A.2.
First, ThisNode examines the RteMsg to ensure that it contains the 7.5. Handling a Received RteMsg
required information: MsgHdr.HopLimit, AddBlk.TargetNode.Address,
AddBlk.OrigNode.Address, and OrigNode.AddTLV.SeqNum. If the required
information does not exist, the message is discarded and further
processing stopped.
ThisNode MUST only handle AODVv2 messages from adjacent routers. Before an AODVv2 router (HandlingRtr) can process a received RteMsg
(i.e., RREQ or RREP), it first must verify that the RteMsg is
permissible according to the following steps. For RREQ, RteMsg_Gen
is OrigRtr, also called RREQ_Gen. For RREP, RteMsg_Gen is TargRtr,
also called RREP_Gen.
ThisNode checks if the AddBlk.OrigNode.Address is a valid routable 1. HandlingRtr MUST handle AODVv2 messages only from adjacent
unicast address. If not, the message is ignored and further routers as specified in Section 5.4. AODVv2 messages from other
processing stopped. sources MUST be disregarded.
ThisNode also checks whether AddBlk.OrigNode.Address is an address 2. If the RteMsg.<msg-hop-limit> is equal to 0, then the message is
handled by this AODVv2 router. If this node is the originating disregarded.
AODVv2 router, the RteMsg is dropped.
ThisNode checks if the AddBlk.TargetNode.Address is a valid routable 3. If the RteMsg.<msg-hop-count> is present, and RteMsg.<msg-hop-
unicast address. If the address is not a valid unicast address, the count> >= MAX_HOPCOUNT, then the message is disregarded.
message is discarded and further processing stopped.
Next, ThisNode checks whether its routing table has an entry to the 4. HandlingRtr examines the RteMsg to ascertain that it contains the
AddBlk.OrigNode.Address using longest-prefix matching [RFC1812]. If required information: TargNode.Addr, OrigNode.Addr,
a route with a valid Route.SeqNum does not exist, then the new RteMsg_Gen.Metric and RteMsg_Gen.SeqNum. If the required
routing information is used to create a new route table entry is information does not exist, the message is disregarded.
created and updated as described in Section 5.2.2. If a route table
entry does exists and it has a known Route.SeqNum, the incoming
routing information is compared with the route table entry following
the procedure described in Section 5.2.1. If the incoming routing
information is considered preferable, the route table entry is
updated as described in Section 5.2.2.
At this point, if the routing information for the OrigNode was not 5. HandlingRtr checks that OrigNode.Addr and TargNode.Addr are valid
preferable then this RteMsg SHOULD be discarded and no further routable unicast addresses. If not, the message is disregarded.
processing of this message SHOULD be performed.
If the TargetNode is a router client of ThisNode this RteMsg is a 6. HandlingRtr checks that the Metric Type associated with
RREQ, then ThisNode responds with a RREP to the RREQ OrigNode (the OrigNode.Metric and TargNode.Metric is known, and that Cost(L)
new RREP's TargetNode). The procedure for issuing a new RREP is can be computed. If not, the message is disregarded.
described in Section 5.3.2. Afterwards, ThisNode need not perform
any more operations for the RteMsg being processed.
As an alternative to issuing a RREP, ThisNode MAY choose to * DISCUSSION: alternatively, can change the AddrBlk metric to
distribute routing information about ThisNode (the RREQ TargetNode) use HopCount, measured from<msg-hop-limit>.
more widely. That is, ThisNode MAY optionally perform a route
discovery by issuing a RREQ with ThisNode listed as the TargetNode,
using the procedure in Section 5.3.1. At this point, ThisNode need
not perform any more operations for the RteMsg being processed.
For each address (except the TargetNode) in the RteMsg that includes 7. If MAX_METRIC[RteMsg.MetricType] <= (RteMsg_Gen.Metric +
AddTLV.Dist information, the AddTLV.Dist information is incremented Cost(L)), where 'L' is the incoming link, the RteMsg is
by at least one (1). The updated Distance value will influence disregarded.
judgment of the routing information (Section 5.2.1) against known
information at other AODVv2 routers that handle this RteMsg.
If the resulting Distance value for the OrigNode is greater than 254, An AODVv2 router (HandlingRtr) handles a permissible RteMsg according
the message is discarded. If the resulting Distance value for to the following steps.
another node is greater than 254, the associated address and its
information are removed from the RteMsg. If the MsgHdr.HopLimit is
equal to one (1), then the message is discarded. Otherwise, the
MsgHdr.HopLimit is decremented by one (1).
If ThisNode is not the TargetNode, AND this RteMsg is a RREQ, then 1. HandlingRtr MUST process the routing information contained in the
the current RteMsg (as altered by the procedure defined above) SHOULD RteMsg as speciied in Section 6.1.
be sent to the IP multicast address LL-MANET-Routers [RFC5498]. If
the RREQ is unicast, the IP.DestinationAddress is set to the
NextHopAddress.
If ThisNode is not the TargetNode, AND this RteMsg is a RREP, then 2. HandlingRtr MAY process AddedNode routing information (if
the current RteMsg is sent to the Route.NextHopAddress for the RREP's present) as specified in Section 13.7.1 Otherwise, if AddedNode
TargetNode.Address. If no forwarding route exists to information is not processed, it MUST be deleted.
TargetNode.Address, then a RERR SHOULD be issued to the OrigNode of
the RREP.
By sending the updated RteMsg, ThisNode advertises that it will route 3. By sending the updated RteMsg, HandlingRtr advertises that it
for addresses contained in the outgoing RteMsg based on the will route for addresses contained in the outgoing RteMsg based
information enclosed. ThisNode MAY choose not to send the RteMsg, on the information enclosed. HandlingRtr MAY choose not to send
though not resending this RteMsg could decrease connectivity in the the RteMsg, though not resending this RteMsg could decrease
network or result in a non-shortest distance path. connectivity in the network or result in a nonoptimal path. The
circumstances under which HandlingRtr might choose to not re-
transmit a RteMsg are not specified in this document. Some
examples might include the following:
The circumstances under which ThisNode might choose to not re-issue a * HandlingRtr is already heavily loaded and does not want to
RteMsg are not specified in this document. Some examples might advertise routing for the contained addresses
include the following:
o if ThisNode does not want to advertise routing for the contained * HandlingRtr recently transmitted identical routing information
addresses because it is already heavily loaded (e.g. in a RteMsg advertising the same metric)
o if ThisNode has already issued identical routing information (e.g. * HandlingRtr is low on energy and has to reduce energy expended
ThisNode had recently issued a RteMsg with the same distance) for sending protocol messages or packet forwarding
o if ThisNode is low on energy and does not want to expend energy Unless HandlingRtr is prepared to send an updated RteMsg, it
for protocol message sending or packet forwarding halts processing. Otherwise, processing continues as follows.
5.4. Route Discovery 4. HandlingRtr MUST decrement RteMsg.<msg-hop-limit>. If
RteMsg.<msg-hop-limit> is then zero (0), no further action is
taken.
When an AODVv2 router needs to forward a data packet and it does not 5. HandlingRtr MUST increment RteMsg.<msg-hop-count>.
have a forwarding route to the destination address, it sends a RREQ
(described in Section 5.3.1) to discover a route to the particular
destination (TargetNode).
After issuing a RREQ, the AODVv2 router (OrigNode) waits for a RREP Further actions to send an updated RteMsg depend upon whether the
indicating the next hop for a route to the TargetNode. If a route is RteMsg is an RREP or an RREQ
not created within RREQ_WAIT_TIME, OrigNode may again try to discover
a route by issuing another RREQ using the procedure defined in
Section 5.3.1 again. Route discovery SHOULD be considered to have
failed after DISCOVERY_ATTEMPTS_MAX and the corresponding wait time
for a response to the final RREQ.
To reduce congestion in a network, repeated attempts at route 7.5.1. Additional Handling for Outgoing RREQ
discovery for a particular TargetNode SHOULD utilize an binary
exponential backoff.
Data packets awaiting a route SHOULD be buffered by the source's o If the upstream router is in the Blacklist, and Current_Time <
AODVv2 router. This buffer SHOULD have a fixed limited size BlacklistRmTime, then HandlingRtr MUST NOT transmit any outgoing
(BUFFER_SIZE_PACKETS or BUFFER_SIZE_BYTES). Determining which RREQ, and processing is complete.
packets to discard first is a matter of policy at each AODVv2 router;
in the absence of policy constraints, by default older data packets
SHOULD be discarded first. Buffering of data packets can have both
positive and negative effects, 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 o Otherwise, if the upstream router is in the Blacklist, and
attempts have been made without receiving a RREP) to find a route to Current_Time >= BlacklistRmTime, then the upstream router SHOULD
the TargetNode, any data packets buffered for the corresponding be removed from the Blacklist, and message processing continued.
TargetNode MUST BE dropped and a Destination Unreachable ICMP message
(Type 3) SHOULD be delivered to the source of the data packet. The
code for the ICMP message is 1 (Host unreachable error). If the
AODVv2 router is not the source (OrigNode), then the ICMP is sent
over the interface from which the source sent the packet to the
AODVv2 router.
5.5. Route Maintenance o If TargNode is a client of HandlingRtr, then a RREP is generated
by the HandlingRtr (i.e., TargRtr) and unicast to the upstream
router towards the RREQ OrigNode, as specified in Section 7.4.
Afterwards, TargRtr processing for the RREQ is complete.
A RERR SHOULD be issued if a data packet is to be forwarded and it o If HandlingRtr is not the TargetNode, then the outgoing RREQ (as
cannot be delivered to the next-hop because no forwarding route for altered by the procedure defined above) SHOULD be sent to the IP
the IP.DestinationAddress exists; RERR generation is described in multicast address LL-MANET-Routers [RFC5498]. If the RREQ is
Section 5.5.3. unicast, the IP.DestinationAddress is set to the NextHopAddress.
Upon this condition, an ICMP Destination Unreachable message SHOULD 7.5.2. Additional Handling for Outgoing RREP
NOT be generated unless this router 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 o If HandlingRtr is not OrigRtr then the outgoing RREP is sent to
issued immediately after detecting a broken link (see Section 5.5.1) the Route.NextHopAddress for the RREP.AddrBlk[OrigNode]. If no
of a forwarding route to quickly notify AODVv2 routers that certain forwarding route exists to OrigNode, then a RERR SHOULD be
routes are no longer available. If a newly unavailable route has not transmitted to RREP.AddrBlk[TargNode]. See Table 1 for notational
been used recently (indicated by ROUTE_USED), the RERR SHOULD NOT be conventions; OrigRtr, OrigNode, and TargNode are routers named in
generated. the context of OrigRtr, that is, the router originating the RREQ
to which the RREP is responding.
5.5.1. Active Next-hop Router Adjacency Monitoring 8. Route Maintenance
AODVv2 routers attempt to maintain active routes. When a routing
problem is encountered, an AODVv2 router (namely, RERR_Gen) attempts
to quickly notify upstream routers. Two kinds of routing problems
may trigger generation of a RERR message. The first case happens
when the router receives a packet but does not have a route for the
destination of the packet. The second case happens immediately upon
detection of a broken link (see Section 8.2) of an Active route, to
quickly notify AODVv2 routers that that route is no longer available.
When the RERR message is generated, it MUST be the only message in
the 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 as follows.
If the route is marked has been marked as Broken, it cannot be
used for forwarding.
If Current_Time > Route.ExpirationTime, the route table entry has
expired, and 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 expunged.
Otherwise, if none of 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 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 Nodes SHOULD monitor connectivity to adjacent next-hop AODVv2 routers
on forwarding routes. This monitoring can be accomplished by one or on forwarding routes. This monitoring can be accomplished by one or
several mechanisms, including: several mechanisms, including:
o Neighborhood discovery [RFC6130] o Neighborhood discovery [RFC6130]
o Route timeout o Route timeout
o Lower layer trigger that a neighboring router is no longer o Lower layer trigger that a neighboring router is no longer
reachable reachable
o Other monitoring mechanisms or heuristics o Other monitoring mechanisms or heuristics
Upon determining that a next-hop AODVv2 router has become Upon determining that a next-hop AODVv2 router has become
unreachable, ThisNode MUST remove the affected forwarding routes unreachable, RERR_Gen follows the procedures specified in
(those using the unreachable next-hop) and unset the Route.Forwarding Section 8.3.2.
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 8.3. RERR Generation
To avoid removing the forwarding route to reach an IP.SourceAddress, An RERR message is generated by a AODVv2 router (in this section,
ThisNode SHOULD set the "ROUTE_USED" timeout to the value called RERR_Gen) in order to to notify upstream routers that packets
ROUTE_USED_TIMEOUT for the route to that IP.SourceAddress upon cannot be delivered to certain destinations. An RERR message has the
receiving a data packet or an AODVv2 message. If the timer for following general structure:
ROUTE_DELETE is set, that timer is removed. The Route.Broken flag is
unset.
To avoid removing the forwarding route to the IP.DestinationAddress +---------------------------------------------------------------+
that is being used, ThisNode SHOULD set the "ROUTE_USED" timeout to | RFC 5444 Packet Header |
the value ROUTE_USED_TIMEOUT for the route to the +---------------------------------------------------------------+
IP.DestinationAddress upon sending a data packet or an AODVv2 | RFC 5444 Message Header <msg-hoplimit> <msg-hopcount> |
message. If the timer for ROUTE_DELETE is set, it is removed. The +---------------------------------------------------------------+
Route.Broken flag is unset. | UnreachableNode AddrBlk (Unreachable Node addresses) |
+---------------------------------------------------------------+
| UnreachableNode SeqNum AddrBlk TLV |
+---------------------------------------------------------------+
5.5.3. RERR Generation Figure 2: RERR message structure
When an AODVv2 router receives a packet (from PrevHopAddress), and Message Header
the router (ThisNode) does not have a route available for the RFC 5444 MsgHdr may contain the following options:
destination of the packet, ThisNode uses an RERR message is used to
inform one or more neighboring AODVv2 routers that its route to the
packet destination is no longer available.
When ThisNode creates a new RERR, the address of the first * <msg-hop-limit>
UnreachableNode (IP.DestinationAddress from a data packet or
RREP.TargetNode.Address) is inserted into an Address Block
AddBlk.UnreachableNode.Address. If a prefix is known for the
UnreachableNode.Address, it SHOULD be included. Otherwise, the
UnreachableNode.Address is assumed to be a host address with a full
length prefix. If a value for the UnreachableNode's SeqNum
(UnreachableNode.AddTLV.SeqNum) is known, it SHOULD be placed in the
RERR. The MsgHdr.HopLimit SHOULD be set to MSG_HOPLIMIT.
If SeqNum information is not known or not included in the RERR, all * <msg-hop-count>
nodes handling the RERR will assume their routing information
associated with the UnreachableNode is no longer valid and flag those
routes as broken.
A RERR MAY be sent to the multicast address LL-MANET-Routers * PktSource MsgTLV
[RFC5498], thus notifying all nearby AODVv2 routers that might depend
on the now broken link. If the RERR is unicast, the
IP.DestinationAddress is set to the PrevHopAddress.
After sending the RERR, ThisNode SHOULD discard the packet or message 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 the UnreachableNodes when that information is
available.
UnreachableNode.PfxLen
The prefix length associated with an UnreachableNode.
There are two kinds of events indicating that packets cannot be
delivered to certain destinations. The two cases differ in the way
that the neighboring IP destination address for the RERR (i.e.,
RERR_dest) is chosen, and in the way that the set of UnreachableNodes
is identified.
In both cases, the MsgHdr.<msg-hop-limit> MUST be 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 packet but does not
have a valid route for the destination of the packet. In this case,
there is exactly one UnreachableNode to be included in the RERR's
AddrBlk. RERR_dest SHOULD be the multicast address LL-MANET-Routers,
but RERR_Gen MAY instead set RERR_dest to be the next hop towards the
source IP address of the packet which was undeliverable. In the
latter case, the PktSource MsgTLV MUST be included, containing the
the source IP address of the undeliverable packet. If a value for
the UnreachableNode's SeqNum (UnreachableNode.SeqNum) is known, it
MUST be placed in the RERR. Otherwise, if no Seqnum AddrTLV is
included, all nodes handling the RERR will assume their route through
RERR_Gen towards the UnreachableNode is no longer valid and flag
those routes as broken. RERR_Gen MUST discard the packet or message
that triggered generation of the RERR. that triggered generation of the RERR.
5.5.4. RERR Handling 8.3.2. Case 2: Broken Link
First, ThisNode examines the incoming RERR to ensure that it contains The second case happens when the link breaks to an active downstream
MsgHdr.HopLimit and AddBlk.UnreachableNode.Address. If the required neighbor (i.e., the next hop of an active route). In this case,
information does not exist, the incoming RERR message is discarded RERR_dest MUST be the multicast address LL-MANET-Routers, except when
and further processing stopped. the optional feature of maintaining precursor lists is used as
specified in Section 13.3. All Active, Idle and Expired routes that
use the broken link MUST be marked as Broken. The set of
UnreachableNodes is initialized by identifying those Active routes
which use the broken link. For each such Active Route, Route.Dest is
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 be included, as long as the packet size of the RERR
does not exceed the MTU of the physical medium.
When an AODVv2 router handles a RERR, it examines the information for If the set of UnreachableNodes is empty, no RERR is generated.
each UnreachableNode. The AODVv2 router removes the forwarding Otherwise, RERR_Gen generates a new RERR, and the address of each
route, unsets the Route.Forwarding flag, sets the Route.Broken flag, UnreachableNode (IP.DestinationAddress from a data packet or
and the timer for ROUTE_DELETE is set to ROUTE_DELETE_TIMEOUT for RREP.TargNode.Address) is inserted into an AddrBlock. If a prefix is
each UnreachableNode.Address found using longest prefix matching that known for the UnreachableNode.Address, it SHOULD be included.
meets all of the following conditions: Otherwise, the UnreachableNode.Address is assumed to be a host
address with a full length prefix. The value for each
UnreachableNode's SeqNum (UnreachableNode.SeqNum) MUST be placed in a
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 (HandlingRtr) receives a RERR message, it uses
the information provided to invalidate affected routes. If the
information in the RERR may be useful to upstream neighbors using
those routes, HandlingRtr subsequently sends another RERR to those
neighbors. This operation has the effect of retransmitting the RERR
information and is counted as another "hop" for purposes of properly
modifying Msg.<msg-hop-limit> and Msg.<msg-hop-count>.
HandlingRtr examines the incoming RERR to assure that it contains
Msg.<msg-hop-limit> and at least one UnreachableNode.Address. If the
required information does not exist, the incoming RERR message is
disregarded and further processing stopped. Otherwise, for each
UnreachableNode.Address, HandlingRtr searches its route table for a
route using longest prefix matching. If no such Route is found,
processing is complete for that UnreachableNode.Address. Otherwise,
HandlingRtr verifies the following:
1. The UnreachableNode.Address is a routable unicast address. 1. The UnreachableNode.Address is a routable unicast address.
2. The Route.NextHopAddress is the same as the RERR 2. Route.NextHopAddress is the same as RERR IP.SourceAddress.
IP.SourceAddress.
3. The Route.NextHopInterface is the same as the interface on which 3. Route.NextHopInterface is the same as the interface on which the
the RERR was received. RERR was received.
4. The Route.SeqNum is zero (0), unknown, OR the 4. The UnreachableNode.SeqNum is unknown, OR Route.SeqNum <=
UnreachableNode.SeqNum is zero (0), unknown, OR Route.SeqNum - UnreachableNode.SeqNum (using signed 16-bit arithmetic).
UnreachableNode.SeqNum <= 0 (using signed 16-bit arithmetic).
If Route.SeqNum is zero (0) or unknown and UnreachableNode.SeqNum If the route satisfies all of the above conditions, HandlingRtr sets
exists in the RERR and is not zero (0), then Route.SeqNum SHOULD be the Route.Broken flag for that route. Furthermore, if Msg.<msg-hop-
set to UnreachableNode.SeqNum. Setting Route.SeqNum can reduce limit> is greater than 0, then HandlingRtr adds the UnreachableNode
future RERR handling and forwarding. address and TLV information to an AddrBlk for for delivery in the
outgoing RERR message to one or more of HandlingRtr's upstream
neighbors.
Each UnreachableNode that did not result in marking a route table If there are no UnreachableNode addresses to be transmitted in an
entry as broken route is removed from the RERR, since propagation of RERR to upstream routers, HandlingRtr MUST discard the RERR, and no
such information will not result in any benefit. further action is taken.
Each UnreachableNode that did indicate a broken route SHOULD remain Otherwise, Msg.<msg-hop-limit> is decremented by one (1) and
in the RERR. processing continues as follows:
If any UnreachableNode was removed, all other information (AddTLVs) o If precursor lists are (optionally) maintained, the outgoing RERR
associated with the UnreachableNode address(es) MUST also be removed. SHOULD be sent to the active precursors of the broken route as
specified in Section 13.3.
If Route.SeqNum is known and an UnreachableNode.SeqNum is not o Otherwise, if the incoming RERR message was received at the LL-
included in the RERR, then Route.SeqNum (i.e. MANET-Routers [RFC5498] multicast address, the outgoing RERR
UnreachableNode.SeqNum) MAY be included with the RERR. Including SHOULD also be sent to LL-MANET-Routers.
UnreachableNode.SeqNum can reduce future RERR handling and
forwarding.
If no UnreachableNode addresses remain in the RERR, or if the o Otherwise, if the PktSource MsgTLV is present, and HandlingRtr has
MsgHdr.HopLimit is equal to one (1), then the RERR MUST be discarded. a Route to PktSource.Addr, then HandlingRtr MUST send the outgoing
RERR to Route[PktSource.Addr].NextHop.
Otherwise, the MsgHdr.HopLimit is decremented by one (1). The RERR o Otherwise, the outgoing RERR MUST be sent to LL-MANET-Routers.
SHOULD be sent to the multicast address LL-MANET-Routers [RFC5498].
Alternatively, if the RERR is unicast, the IP.DestinationAddress is
set to the PrevHopAddress.
5.6. Unknown Message and TLV Types 9. Unknown Message and TLV Types
If a message with an unknown type is received, the message is If a message with an unknown type is received, the message is
ignored. disregarded.
For handling of messages that contain unknown TLV types, ignore the For handling of messages that contain unknown TLV types, ignore the
information for processing, preserve it unmodified for forwarding. information for processing, preserve it unmodified for forwarding.
5.7. Advertising Network Addresses 10. Simple Internet Attachment
AODVv2 routers MAY specify a prefix length for each advertised
address. Any nodes (other than the advertising AODVv2 router) within
the advertised prefix MUST NOT participate in the AODVv2 protocol
directly. For example, advertising 192.0.2.1 with a prefix length 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 can guarantee its ability for forwarding
packets to any host address within the address range of the
corresponding network.
5.8. Simple Internet Attachment
Simple Internet attachment consists of a stub (i.e., non-transit) Simple Internet attachment means attachment of a stub (i.e., non-
network of AODVv2 routers connected to the Internet via a single transit) network of AODVv2 routers to the Internet via a single
Internet AODVv2 router (IAR). Internet AODVv2 router (called IAR).
As in any Internet-attached network, AODVv2 routers, and hosts behind As in any Internet-attached network, AODVv2 routers, and their
these routers, wishing to be reachable from hosts on the Internet clients, wishing to be reachable from hosts on the Internet MUST have
MUST have IP addresses within the IAR's routable and topologically IP addresses within the IAR's routable and topologically correct
correct prefix (e.g. 192.0.2.0/24). prefix (e.g. 191.0.2.0/24).
The IAR is responsible for generating RREQ to find nodes within the The IAR is responsible for generating RREQ messages to find nodes
AODVv2 Region on behalf of nodes on the Internet, as well as within the MANET on behalf of nodes on the Internet, as well as
responding to route requests from the AODVv2 region on behalf of the responding to route requests from the AODVv2 MANET on behalf of the
nodes on the Internet. nodes on the Internet.
/--------------------------\ /-------------------------\
/ Internet \ / +----------------+ \
\ / / | AODVv2 Router | \
\------------+-------------/ | | 191.0.2.2/32 | |
| | +----------------+ | Routable
Routable & | | +-----+--------+ Prefix
Topologically | | | Internet | /191.0.2/24
Correct | | | AODVv2 Router| /
Prefix | | | 191.0.2.1 |/ /----------------\
+-----+--------+ | | serving net +-------+ Internet \
| Internet | | | 191.0.2/24 | \ /
/------| AODVv2 |-------\ | +-----+--------+ \----------------/
/ | Router | \ | +----------------+ |
/ |192.0.2.1/32 | \ | | AODVv2 Router | |
| |Responsible | | | | 191.0.2.3/32 | |
| | for | | \ +----------------+ /
| |AODVv2 Region | | \ /
| |192.0.2.0/24 | | \-------------------------/
| +--------------+ |
| +----------------+ |
| | AODVv2 Router | |
| | 192.0.2.2/32 | |
| +----------------+ |
| +----------------+ |
| | AODVv2 Router | |
| | 192.0.2.3/32 | |
\ +----------------+ /
\ /
\-----------------------------/
Figure 1: Simple Internet Attachment Example Figure 3: Simple Internet Attachment Example
When an AODVv2 router within the AODVv2 Region wants to discover a When an AODVv2 router within the AODVv2 MANET wants to discover a
route to a node on the Internet, it uses the normal AODVv2 route route toward a node on the Internet, it uses the normal AODVv2 route
discovery for that IP Destination Address. The IAR MUST respond to discovery for that IP Destination Address. The IAR MUST respond to
RREQ on behalf of the Internet destination. RREQ on behalf of all Internet destinations.
When a packet from a node on the Internet destined for a node in the When a packet from a node on the Internet destined for a node in the
AODVv2 region reaches the IAR, if the IAR does not have a route to AODVv2 MANET reaches the IAR, if the IAR does not have a route toward
that destination it will perform normal AODVv2 route discovery for that destination it will perform normal AODVv2 route discovery for
that destination. that destination.
5.9. Multiple Interfaces 11. Multiple Interfaces
AODVv2 may be used with multiple interfaces; therefore, the AODVv2 may be used with multiple interfaces; therefore, the
particular interface over which packets arrive MUST be known whenever particular interface over which packets arrive MUST be known whenever
a packet is received. Whenever a new route is created, the interface a packet is received. Whenever a new route is created, the interface
through which the Route.Address can be reached is also recorded in through which the Route.Address can be reached is also recorded in
the route table entry. the route table entry.
When multiple interfaces are available, a node transmitting a When multiple interfaces are available, a node transmitting a
multicast packet with IP.DestinationAddress set to LL-MANET-Routers multicast packet with IP.DestinationAddress set to LL-MANET-Routers
SHOULD send the packet on all interfaces that have been configured SHOULD send the packet on all interfaces that have been configured
for AODVv2 operation. for AODVv2 operation.
Similarly, AODVv2 routers SHOULD subscribe to LL-MANET-Routers on all Similarly, AODVv2 routers SHOULD subscribe to LL-MANET-Routers on all
their AODVv2 interfaces. their AODVv2 interfaces.
5.10. AODVv2 Control Packet/Message Generation Limits 12. AODVv2 Control Packet/Message Generation Limits
To ensure predictable messaging overhead, AODVv2 router's rate of To avoid messaging overload, each AODVv2 router's rate of packet/
packet/message generation SHOULD be limited. The rate and algorithm message generation SHOULD be limited. The rate and algorithm for
for limiting messages (CONTROL_TRAFFIC_LIMITS) is left to the limiting messages (CONTROL_TRAFFIC_LIMITS) is left to the implementor
implementor and should be administratively configurable. AODVv2 and should be administratively configurable. AODVv2 messages SHOULD
messages SHOULD be discarded in the following order of preference: be discarded in the following order of preference: RREQ, RREP, and
RREQ, RREP, and finally RERR. finally RERR.
5.11. Optional Features 13. Optional Features
Several optional features of AODVv2, and associated with AODV, are Some optional features of AODVv2, associated with AODV, are not
not required by minimal implementations. These features are expected required by minimal implementations. These features are expected to
to be useful in networks with greater mobility, or larger node be useful in networks with greater mobility, or larger node
populations, or requiring shorter latency for application launches. populations, or requiring shorter latency for application launches.
The optional features are as follows: The optional features are as follows:
o Expanding Rings Multicast o Expanding Rings Multicast
o Intermediate RREPs (iRREPs): Without iRREP, only the destination o Intermediate RREPs (iRREPs): Without iRREP, only the destination
can respond to a RREQ. can respond to a RREQ.
o Precursor lists. o Precursor lists.
o Reporting Multiple Unreachable Nodes. An RERR message can carry o Reporting Multiple Unreachable Nodes. An RERR message can carry
more than one Unreachable Destination node for cases when a single more than one Unreachable Destination node for cases when a single
link breakage causes multiple destinations to become unreachable link breakage causes multiple destinations to become unreachable
from an intermediate router. from an intermediate router.
5.11.1. Expanding Rings Multicast o RREP_ACK.
For multicast RREQ, the MsgHdr.HopLimit MAY be set in accordance with 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 an expanding ring search as described in [RFC3561] to limit the RREQ
propagation to a subset of the local network and possibly reduce propagation to a subset of the local network and possibly reduce
route discovery overhead. route discovery overhead.
5.11.2. Intermediate RREP 13.2. Intermediate RREP
This specification has been published as a separate Internet Draft . This specification has been published as a separate Internet Draft
[I-D.perkins-irrep].
5.11.3. Precursor Notification 13.3. Precursor Lists and Notifications
The Dynamic MANET On-demand (AODVv2) routing protocol is intended for This section specifies an interoperable enhancement to AODVv2 (and
use by mobile routers in wireless, multihop networks. AODVv2 possibly other reactive routing protocols) enabling more economical
determines unicast routes among AODVv2 routers within the network in notifications to active sources of traffic upon determination that a
an on-demand fashion, offering on-demand convergence in dynamic route needed to forward such traffic to its destination has become
topologies. This document specifies a simple modification to AODVv2 Broken.
(and possibly other reactive routing protocols) enabling faster
notifications to known sources of traffic upon determination that a
route for such traffic's destination has become Broken.
5.11.3.1. Overview 13.3.1. Overview
If an AODVv2 router, while attempting to forward a packet to a In many circumstances, there might be several sources of traffic for
particular destination, determines that the next hop (one of its any particular destination. Each such source of traffic is known as
neighbors) is no longer reachable, AODVv2 specifies that the router a "precursor" for the destination, as well as all upstream routers
notify the source of that packet that the route to the destination between the forwarding AODVv2 router and the traffic source. For
has become Broken. In the existing specification, the notification each active destination, an AODVv2 router MAY choose to keep track of
to the source is a unicast RERR message. 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.
However, in many cases there will be several sources of of traffic Moreover, any particular link to an adjacent AODVv2 router may be a
for that particular destination. In fact, the broken link for the path component of multiple routes towards various destinations. The
next hop in question may be a path component of numerous other routes precursors for all destinations using the next hop across any link
for other destinations, and in that case the node detecting the are collectively known as the precursors for that next hop.
broken link must mark as Broken multiple routes, one for each of the
newly unreachable destinations. Each route that uses the newly
broken link is no longer valid. For each such route, every node
along the way from the source using that route, to the node detecting
the broken link, is known as a "precursor" for the broken next hop.
All the precursors for a particular next hop should be notified about
the change in status of their route to a destination downstream from
the broken next hop.
5.11.3.2. Precursor Notification 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.
During normal operation, each node wishing to enable the improved 13.3.2. Precursor Notification Details
notification for precursors of any links to its next hop neighbors
has to keep track of the precursors. This is done by maintaining a
precursor table and updating the table whenever the node initiates or
relays a RREP message back to a node originating a RREQ message.
When the node transmits the RREP message, it is implicitly agreeing
to forward traffic from the RREQ originator towards the RREP
originator (i.e., along the next hop link to the neighbor from which
the RREP was received). The "other" next hop, which is the neighbor
along the way towards the originator of the RREQ message, is 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 During normal operation, each AODVv2 router wishing to maintain
route along the next hop. The same next hop may be in service for precursor lists as described above, maintains a precursor table and
routes to multiple destinations, but for precursor list management it updates the table whenever the node forwards traffic to one of the
is only important to keep track of precursors for a particular next destinations in its route table. For each precursor in the precursor
hop; the exact destination does not matter, only the particular next list, a record must be maintained to indicate whether the precursor
hop towards the destination(s). 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 a node observes that one of its neighbors is no longer When an AODVv2 router detects that a link is broken, then for each
reachable, the node first checks to see whether the link to that precursor using that next hop, the node MAY notify the precursor
neighbor is a next hop for any more distant destination in its route using either unicast or multicast RERR:
table. 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 the unicast RERR to each Active precursor
changed status of the next hop, the node first checks to see whether This option is useful when there are few Active precursors
the link to that neighbor is a next hop for any more distant compared to the number of neighboring AODVv2 routers.
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 the next hop, the node MAY notify the precursor multicast RERR to RERR_PRECURSORS
in one of three ways: RERR_PRECURSORS is, by default, LL-MANET-Routers [RFC5498]. This
option is typically preferable since fewer packet transmissions
are required.
o unicast RERR Each active upstream neighbor (i.e., precursor) MAY then execute the
same procedure until all active upstream routers have received the
RERR notification.
o broadcast RERR 13.4. Multicast RREP Response to RREQ
o multicast RERR to multicast group PRECURSOR_RERR_RECEIVERS 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.
Each precursor then MAY execute the same procedure until all affected Broadcast response to incoming RREQ was originally specified to
traffic sources have received the RERR route maintenance information. 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.
When a precursor receives a unicast RERR, the precursor MUST further 13.5. RREP_ACK
unicast the RERR message towards the affected traffic source. If a
precursor receives a broadcast or multicast RERR, the precursor MAY
further retransmit the RERR towards the traffic source.
5.11.4. Reporting Multiple Unreachable Nodes 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].
5.11.5. Message Aggregation 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.
The aggregation of multiple messages into a packet is not specified 13.6. Message Aggregation
in this document, but if aggregation does occur the IP.SourceAddress
and IP.DestinationAddress of all contained messages MUST be the same.
Implementations MAY choose to temporarily delay transmission of The aggregation of multiple messages into a packet is specified in
messages for the purpose of aggregation (into a single packet) or to RFC 5444 [RFC5444].
improve performance by using jitter [RFC5148].
5.11.6. Adding Additional Routing Information to a RteMsg 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 DSR [RFC4728] includes source routes as part of the data of its RREPs
and RREQs. Doign so allows additional topology information to be and RREQs. Doign so allows additional topology information to be
flooded along with the RteMsg, and potentially allows updating for multicast along with the RteMsg, and potentially allows updating for
stale routing information at MANET routers along new paths between stale routing information at MANET routers along new paths between
source and destination. To maintain this functionality, AODVv2 has source and destination. To maintain this functionality, AODVv2 has
defined a somewhat more general method that enables inclusion of defined a somewhat more general method that enables inclusion of
source routes in RteMsgs. source routes in RteMsgs.
Appending routing information can alleviate route discovery attempts Appending routing information can eliminate some route discovery
to the nodes whose information is included, if other AODVv2 routers attempts to the nodes whose information is included, if handling
use this information to update their routing tables. AODVv2 routers use this information to update their routing tables.
Note that, since the initial merger of DSR with AODV to create this Note that, since the initial merger of DSR with AODV to create this
protocol, further experimentation has shown that including the protocol, further experimentation has shown that including the
additional routing information is not always helpful. Sometimes it additional routing information is not always helpful. Sometimes it
seems to help, and other times it seems to reduct overall seems to help, and other times it seems to reduce overall
performance. performance. The results depend upon packet size and traffic
patterns.
AODVv2 routers can append routing information to a RteMsg. This is 13.7.1. Including Added Node Information
controllable by an option (APPEND_INFORMATION) which SHOULD be
administratively configurable or controlled according to the traffic
characteristics of the network.
Prior to appending an address controlled by this AODVv2 router to a An AODVv2 router (HandlingRtr) MAY optionally append AddedNode
RteMsg, ThisNode MAY increment its OwnSeqNum as defined in routing information to a RteMsg. This is controllable by an option
Section 5.1. If OwnSeqNum is not incremented the appended routing (APPEND_INFORMATION) which SHOULD be administratively configurable or
information might not be considered preferable, when received by controlled according to the traffic characteristics of the network.
nodes with existing routing information. Incrementation of the
sequence number when appending information to a RteMsg in transit
(APPEND_INFORMATION_SEQNUM) SHOULD be administratively configurable.
Note that, during handling of this RteMsg OwnSeqNum may have already
been incremented; and in this case OwnSeqNum need not be incremented
again.
If an address controlled by this AODVv2 router includes The following notation is used to specify the methods for inclusion
ThisNode.Dist, it is set to a number greater than zero (0). of routing information for addtional nodes.
For added addresses (and their prefixes) not controlled by this AddedNode
AODVv2 router, Route.Dist can be included if known. 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) The VALIDITY_TIME of routing information for appended address(es)
MUST be included, to inform routers about when to delete this MUST be included, to inform routers about when to expire this
information. The VALIDITY_TIME TLV is defined in Section 5.13.3. 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].
Additional information (e.g. SeqNum and Dist) about any appended SeqNum and Metric AddrTLVs about any appended address(es) MUST be
address(es) SHOULD be included. included.
Note that the routing information about the TargetNode MUST NOT be Routing information about the TargNode MUST NOT be added to the
added. Also, duplicate address entries SHOULD NOT be added. AddedAddrBlk. Also, duplicate address entries SHOULD NOT be added.
Instead, only the best routing information (Section 5.2.1) for a Only the best routing information (Section 6.1) for a particular
particular address SHOULD be included. 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.
Intermediate nodes obey the following procedures when processing 13.7.2. Handling Added Node Information
AddBlk.AdditionalNode.Address information and other associated TLVs
that are included with a RteMsg. For each address (except the An intermediate node (i.e., HandlingRtr) obeys the following
TargetNode) in the RteMsg that includes AddTLV.Dist information, the procedures when processing AddedNode.Address information and other
AddTLV.Dist information MUST be incremented. If the resulting associated TLVs that are included with a RteMsg. For each AddedNode
Distance value for the OrigNode is greater than 254, the message is (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 discarded. If the resulting Distance value for another node is
greater than 254, the associated address and its information are greater than MAX_METRIC[i], the associated address and its
removed from the RteMsg. information are removed from the RteMsg.
After handling the OrigNode's routing information, then each address After handling the OrigNode's routing information, then each address
that is not the TargetNode MAY be considered for creating and that is not the TargetNode MAY be considered for creating and
updating routes. Creating and updating routes to other nodes can updating routes. Creating and updating routes to other nodes can
eliminate RREQ for those IP destinations, in the event that data 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 needs to be forwarded to the IP destination(s) now or in the near
future. future.
For each of the additional addresses considered, ThisNode first For each of the additional addresses considered, HandlingRtr first
checks that the address is a routable unicast address. If the checks that the address is a routable unicast address. If the
address is not a unicast address, then the address and all related address is not a unicast address, then the address and all related
information MUST be removed. information MUST be removed.
If the routing table does not have a matching route with a known If the routing table does not have a matching route with a known
Route.SeqNum for this additional address using longest-prefix Route.SeqNum for this additional address using longest-prefix
matching, then a route MAY be created and updated as described in matching, then a route MAY be created and updated as described in
Section 5.2.2. If a route table entry exists with a known Section 6.2. If a route table entry exists with a known
Route.SeqNum, the incoming routing information is compared with the Route.SeqNum, the incoming routing information is compared with the
route table entry following the procedure described in Section 5.2.1. route table entry following the procedure described in Section 6.1.
If the incoming routing information is used, the route table entry If the incoming routing information is used, the route table entry
SHOULD be updated as described in Section 5.2.2. SHOULD be updated as described in Section 6.2.
If the routing information for an AdditionalNode.Address is not used, If the routing information for an AddedNode.Address is not used, then
then it is removed from the RteMsg. it is removed from the RteMsg.
5.12. Administratively Configured Parameters and Timer Values 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 AODVv2 contains several parameters which MUST be administratively
configured. The list of these follows: configured. The list of these follows:
Required Administratively Configured Parameters
+------------------------+------------------------------------------+ +------------------------+------------------------------------------+
| Name | Description | | Name | Description |
+------------------------+------------------------------------------+ +------------------------+------------------------------------------+
| RESPONSIBLE_ADDRESSES | List of addresses or routing prefixes, | | CLIENT_ADDRESSES | List of addresses and routing prefixes, |
| | for which this AODVv2 router is | | | for which this AODVv2 router is |
| | responsible. If, RESPONSIBLE_ADDRESSES | | | responsible. If the list is empty, this |
| | is zero, this AODVv2 router is only | | | AODVv2 router is only responsible for |
| | responsible for its own addresses. | | | 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_INTERFACES | List of the interfaces participating in |
| | AODVv2 routing protocol. | | | AODVv2 routing protocol. |
+------------------------+------------------------------------------+ +------------------------+------------------------------------------+
Table 2 Table 2: Required Administratively Configured Parameters
AODVv2 contains a number of timers. The default timing parameter
values follow:
Default Timing Parameter Values AODVv2 requires certain timing information to be associated with
route table entries. The default values are as follows:
+------------------------------+-------------------+ +------------------------------+-------------+
| Name | Value | | Name | Value |
+------------------------------+-------------------+ +------------------------------+-------------+
| ROUTE_TIMEOUT | 5 seconds | | ACTIVE_INTERVAL | 5 second |
| ROUTE_AGE_MIN_TIMEOUT | 1 second | | MAX_IDLETIME | 200 seconds |
| ROUTE_SEQNUM_AGE_MAX_TIMEOUT | 600 seconds | | MAX_SEQNUM_LIFETIME | 300 seconds |
| ROUTE_USED_TIMEOUT | ROUTE_TIMEOUT | | ROUTE_RREQ_WAIT_TIME | 2 seconds |
| ROUTE_DELETE_TIMEOUT | 2 * ROUTE_TIMEOUT | | UNICAST_MESSAGE_SENT_TIMEOUT | 1 second |
| ROUTE_RREQ_WAIT_TIME | 2 seconds | | RREQ_HOLDDOWN_TIME | 10 seconds |
| UNICAST_MESSAGE_SENT_TIMEOUT | 1 second | +------------------------------+-------------+
+------------------------------+-------------------+
Table 3 Table 3: Default Timing Parameter Values
The above timing parameter values work well for small and medium The above timing parameter values have worked well for small and
well-connected networks with moderate topology changes. medium well-connected networks with moderate topology changes.
The timing parameters SHOULD be administratively configurable for the The timing parameters SHOULD be administratively configurable for the
network where AODVv2 is used. Ideally, for networks with frequent network where AODVv2 is used. Ideally, for networks with frequent
topology changes the AODVv2 parameters should be adjusted using topology changes the AODVv2 parameters should be adjusted using
either experimentally determined values or dynamic adaptation. For either experimentally determined values or dynamic adaptation. For
example, in networks with infrequent topology changes example, in networks with infrequent topology changes MAX_IDLETIME
ROUTE_USED_TIMEOUT may be set to a much larger value. may be set to a much larger value.
Default Parameter Values
+------------------------+-------+----------------------------------+ +------------------------+-----------+------------------------------+
| Name | Value | Description | | Name | Value | Description |
+------------------------+-------+----------------------------------+ +------------------------+-----------+------------------------------+
| MSG_HOPLIMIT | 20 | This value MUST be larger than | | MAX_HOPCOUNT | 20 hops | This value MUST be larger |
| | hops | the AODVv2 network diameter. | | | | than the AODVv2 network |
| | | Otherwise, routing messages may | | | | diameter. Otherwise, |
| | | not reach their intended | | | | routing messages may not |
| | | destinations. | | | | reach their intended |
| DISCOVERY_ATTEMPTS_MAX | 3 | The number of route discovery | | | | destinations. |
| | | attempts to make before | | MAX_METRIC[i] | Not | If defined, this is the |
| | | indicating that a particular | | | Specified | maximum permissible value |
| | | address is not reachable. | | | 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 Table 4: Default Parameter Values
In addition to the above parameters and timing values, several In addition to the above parameters and timing values, several
administrative options exist. These options have no influence on administrative options exist. These options have no influence on
correct routing behavior, although they may potentially reduce AODVv2 correct routing behavior, although they may potentially reduce AODVv2
protocol messaging in certain situations. The default behavior is to protocol messaging in certain situations. The default behavior is to
NOT enable any of these options; and although many of these options NOT enable any of these options; and although many of these options
can be administratively controlled, they may be better served by can be administratively controlled, they may be better served by
intelligent control. The following table enumerates several of the intelligent control. The following table enumerates several of the
options. options.
Administratively Controlled Options +-------------------------+-----------------------------------------+
| Name | Description |
+--------------------------+----------------------------------------+ +-------------------------+-----------------------------------------+
| Name | Description | | APPEND_INFORMATION | Whether or not appending routing |
+--------------------------+----------------------------------------+ | | information for AddedNodes to a RteMsg |
| BUFFER_DURING_DISCOVERY | Whether and how much data to buffer | | | is enabled. |
| | during route discovery. | | BUFFER_SIZE_PACKETS | 2 |
| APPEND_EXTRA_UNREACHABLE | Whether to append additional | | BUFFER_SIZE_BYTES | MAX_PACKET_SIZE [TBD] |
| | Unreachable information to RERR. | | APPEND_IDLE_UNREACHABLE | Whether to append Unreachable |
| CONTROL_TRAFFIC_LIMITS | AODVv2 messaging SHOULD be limited to | | | information about idle routes to RERR. |
| | avoid consuming all the network | | CONTROL_TRAFFIC_LIMIT | TBD [50 msgs/sec?] |
| | bandwidth. | +-------------------------+-----------------------------------------+
+--------------------------+----------------------------------------+
Table 5 Table 5: Administratively Controlled Options
Note: several fields have limited size (bits or bytes) these sizes Note: several fields have limited size (bits or bytes). These sizes
and their encoding may place specific limitations on the values that and their encoding may place specific limitations on the values that
can be set. For example, MsgHdr.HopLimit is a 8-bit field and can be set. For example, MsgHdr.<msg-hop-count> is a 8-bit field and
therefore MSG_HOPLIMIT cannot be larger than 255. therefore MAX_HOPCOUNT cannot be larger than 255.
5.13. IANA Considerations
In its default mode of operation, AODVv2 uses the UDP port 269 15. IANA Considerations
[RFC5498] to carry protocol packets. AODVv2 also uses the link-local
multicast address LL-MANET-Routers [RFC5498].
This section specifies several message types, message tlv-types, and This section specifies several message types, message tlv-types, and
address tlv-types. address tlv-types. Also, a new registry of 16-bit alternate metric
types is specified.
5.13.1. AODVv2 Message Types Specification
AODVv2 Message Types
+------------------------+----------+ 15.1. AODVv2 Message Types Specification
| Name | Type |
+------------------------+----------+
| Route Request (RREQ) | 10 - TBD |
| Route Reply (RREP) | 11 - TBD |
| Route Error (RERR) | 12 - TBD |
+------------------------+----------+
Table 6 +----------------------------------------+----------+
| Name | Type |
+----------------------------------------+----------+
| Route Request (RREQ) | 10 - TBD |
| Route Reply (RREP) | 11 - TBD |
| Route Error (RERR) | 12 - TBD |
| Route Reply Acknowledgement (RREP_ACK) | 13 - TBD |
+----------------------------------------+----------+
5.13.2. Message and Address Block TLV Type Specification Table 6: AODVv2 Message Types
Message TLV Types 15.2. Message and Address Block TLV Type Specification
+-------------------+------+--------+-------------------------------+ +-------------------+------+--------+-------------------------------+
| Name | Type | Length | Value | | Name | Type | Length | Value |
+-------------------+------+--------+-------------------------------+ +-------------------+------+--------+-------------------------------+
| Unicast Response | 10 - | 0 | Indicates to the processing | | Unicast Response | 10 - | 0 | Indicates to the handling |
| Request | TBD | octets | node that the previous hop | | Request (RespReq) | TBD | octets | (receiving) AODVv2 router |
| | | | that the previous hop |
| | | | (IP.SourceAddress) expects a | | | | | (IP.SourceAddress) expects a |
| | | | unicast reply message within | | | | | unicast reply message within |
| | | | UNICAST_MESSAGE_SENT_TIMEOUT. | | | | | UNICAST_MESSAGE_SENT_TIMEOUT. |
| | | | Any unicast packet will serve | | | | | -- |
| | | | this purpose, and it MAY be | | Destination RREP | 11 - | 0 | Indicates that intermediate |
| | | | an ICMP REPLY message. If | | Only (DestOnly) | TBD | octets | RREPs are prohibited. |
| | | | the reply is not received, | | | | | -- |
| | | | then the previous hop can | | Packet source IP | 12 - | 4 or | Provides the IP address for |
| | | | assume that the link is | | address | TBD | 16 | RERR messages generated due |
| | | | unidirectional and MAY | | (PktSource) | | octets | to inability to deliver a |
| | | | blacklist the link to this | | | | | packet. |
| | | | node. | | | | | -- |
| Metric Type | 13 - | 1 | Type of metric in the Metric8 |
| | TBD | octet | or Metric16 AddrTLV. |
+-------------------+------+--------+-------------------------------+ +-------------------+------+--------+-------------------------------+
Table 7 Table 7: Message TLV Types
5.13.3. Address Block TLV Specification 15.3. Address Block TLV Specification
Address Block TLV Types +---------------+------------+----------+---------------------------+
| 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
| Name | Type | Length | Value |
+----------------+------------+----------+--------------------------+
| AODVv2 | 10 - TBD | up to 2 | The AODVv2 sequence num |
| Sequence | | octets | associated with this |
| Number | | | address. The sequence |
| (AODVv2SeqNum) | | | number may be the last |
| | | | known sequence number. |
| Distance | 11 - TBD | up to 2 | A metric of the distance |
| | | octets | traversed by the |
| | | | information associated |
| | | | with this address. |
| VALIDITY_TIME | 1[RFC5497] | | The maximum amount of |
| | | | time that information |
| | | | can be maintained before |
| | | | being deleted. The |
| | | | VALIDITY_TIME TLV is |
| | | | defined in [RFC5497]. |
+----------------+------------+----------+--------------------------+
Table 8 The same number space should be used for both Metric8 and Metric16
metric types.
5.14. Security Considerations 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 The objective of the AODVv2 protocol is for each router to
communicate reachability information to addresses for which it is communicate reachability information about addresses for which it is
responsible. Positive routing information (i.e. a route exists) is responsible. Positive routing information (i.e. a route exists) is
distributed via RteMsgs and negative routing information (i.e. a distributed via RteMsgs and negative routing information (i.e. a
route does not exist) via RERRs. AODVv2 routers that handle these route does not exist) via RERRs. AODVv2 routers that handle these
messages store the contained information to properly forward data messages store the contained information to properly forward data
packets, and they generally provide this information to other AODVv2 packets, and they generally provide this information to other AODVv2
routers. routers.
This section does not mandate any specific security measures. This section does not mandate any specific security measures.
Instead, this section describes various security considerations and Instead, this section describes various security considerations and
potential avenues to secure AODVv2 routing. potential avenues to secure AODVv2 routing.
skipping to change at page 36, line 6 skipping to change at page 44, line 41
authenticated in order to prevent malicious nodes from disrupting authenticated in order to prevent malicious nodes from disrupting
active routes between communicating nodes. active routes between communicating nodes.
If the mobile nodes in the ad hoc network have pre-established If the mobile nodes in the ad hoc network have pre-established
security associations, the purposes for which the security security associations, the purposes for which the security
associations are created should include that of authorizing the associations are created should include that of authorizing the
processing of AODVv2 control packets. Given this understanding, the processing of AODVv2 control packets. Given this understanding, the
mobile nodes should be able to use the same authentication mechanisms mobile nodes should be able to use the same authentication mechanisms
based on their IP addresses as they would have used otherwise. based on their IP addresses as they would have used otherwise.
5.15. Acknowledgments 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 AODVv2 is a descendant of the design of previous MANET on-demand
protocols, especially AODV [RFC3561] and DSR [RFC4728]. Changes to protocols, especially AODV [RFC3561] and DSR [RFC4728]. Changes to
previous MANET on-demand protocols stem from research and previous MANET on-demand protocols stem from research and
implementation experiences. Thanks to Elizabeth Belding-Royer for implementation experiences. Thanks to Elizabeth Belding-Royer for
her long time authorship of AODV. Additional thanks to Luke Klein- her long time authorship of AODV. Additional thanks to Luke Klein-
Berndt, Pedro Ruiz, Fransisco Ros, Koojana Kuladinithi, Ramon Berndt, Pedro Ruiz, Fransisco Ros, Henning Rogge, Koojana
Caceres, Thomas Clausen, Christopher Dearlove, Seung Yi, Romain Kuladinithi, Ramon Caceres, Thomas Clausen, Christopher Dearlove,
Thouvenin, Tronje Krop, Henner Jakob, Alexandru Petrescu, Christoph Seung Yi, Romain Thouvenin, Tronje Krop, Henner Jakob, Alexandru
Sommer, Cong Yuan, Lars Kristensen, and Derek Atkins for reviewing of Petrescu, Christoph Sommer, Cong Yuan, Lars Kristensen, and Derek
AODVv2, as well as several specification suggestions. Atkins for reviewing of AODVv2, as well as several specification
suggestions.
This revision of AODVv2 isolates the minimal base specification and This revision of AODVv2 separates the minimal base specification from
other optional features to simplify the process of ensuring other optional features to expedite the process of assuring
compatibility with the existing LOADng specification compatibility with the existing LOADng specification
[I-D.clausen-lln-loadng] (minimal reactive routing protocol [I-D.clausen-lln-loadng] (minimal reactive routing protocol
specification). Thanks are due to T. Clausen, A. Colin de Verdiere, specification). Thanks are due to T. Clausen, A. Colin de Verdiere,
J. Yi, A. Niktash, Y. Igarashi, Satoh. H., and U. Herberg for their J. Yi, A. Niktash, Y. Igarashi, Satoh. H., and U. Herberg for their
development of LOADng and sharing details for ensuring development of LOADng and sharing details for assuring
appropriateness of AODVv2 for LLNs. appropriateness of AODVv2 for their application.
6. References 18. References
6.1. Normative References 18.1. Normative References
[RFC1812] Baker, F., "Requirements for IP Version 4 Routers", [RFC1812] Baker, F., "Requirements for IP Version 4 Routers",
RFC 1812, June 1995. RFC 1812, June 1995.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC5082] Gill, V., Heasley, J., Meyer, D., Savola, P., and C. [RFC5082] Gill, V., Heasley, J., Meyer, D., Savola, P., and C.
Pignataro, "The Generalized TTL Security Mechanism Pignataro, "The Generalized TTL Security Mechanism
(GTSM)", RFC 5082, October 2007. (GTSM)", RFC 5082, October 2007.
skipping to change at page 37, line 6 skipping to change at page 46, line 8
"Generalized Mobile Ad Hoc Network (MANET) Packet/Message "Generalized Mobile Ad Hoc Network (MANET) Packet/Message
Format", RFC 5444, February 2009. Format", RFC 5444, February 2009.
[RFC5497] Clausen, T. and C. Dearlove, "Representing Multi-Value [RFC5497] Clausen, T. and C. Dearlove, "Representing Multi-Value
Time in Mobile Ad Hoc Networks (MANETs)", RFC 5497, Time in Mobile Ad Hoc Networks (MANETs)", RFC 5497,
March 2009. March 2009.
[RFC5498] Chakeres, I., "IANA Allocations for Mobile Ad Hoc Network [RFC5498] Chakeres, I., "IANA Allocations for Mobile Ad Hoc Network
(MANET) Protocols", RFC 5498, March 2009. (MANET) Protocols", RFC 5498, March 2009.
6.2. Informative References [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] [I-D.clausen-lln-loadng]
Clausen, T., Verdiere, A., Yi, J., Niktash, A., Igarashi, Clausen, T., Verdiere, A., Yi, J., Niktash, A., Igarashi,
Y., Satoh, H., Herberg, U., Lavenu, C., Lys, T., and C. Y., Satoh, H., Herberg, U., Lavenu, C., Lys, T., Perkins,
Perkins, "The LLN On-demand Ad hoc Distance-vector Routing C., and J. Dean, "The Lightweight On-demand Ad hoc
Protocol - Next Generation (LOADng)", Distance-vector Routing Protocol - Next Generation
draft-clausen-lln-loadng-05 (work in progress), July 2012. (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] [Perkins99]
Perkins, C. and E. Belding-Royer, "Ad hoc On-Demand Perkins, C. and E. Belding-Royer, "Ad hoc On-Demand
Distance Vector (AODV) Routing", Proceedings of the 2nd Distance Vector (AODV) Routing", Proceedings of the 2nd
IEEE Workshop on Mobile Computing Systems and IEEE Workshop on Mobile Computing Systems and
Applications, New Orleans, LA, pp. 90-100, February 1999. Applications, New Orleans, LA, pp. 90-100, February 1999.
[RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, April 1998. [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, April 1998.
[RFC2501] Corson, M. and J. Macker, "Mobile Ad hoc Networking [RFC2501] Corson, M. and J. Macker, "Mobile Ad hoc Networking
skipping to change at page 38, line 11 skipping to change at page 47, line 22
[RFC6130] Clausen, T., Dearlove, C., and J. Dean, "Mobile Ad Hoc [RFC6130] Clausen, T., Dearlove, C., and J. Dean, "Mobile Ad Hoc
Network (MANET) Neighborhood Discovery Protocol (NHDP)", Network (MANET) Neighborhood Discovery Protocol (NHDP)",
RFC 6130, April 2011. RFC 6130, April 2011.
[RFC6549] Lindem, A., Roy, A., and S. Mirtorabi, "OSPFv2 Multi- [RFC6549] Lindem, A., Roy, A., and S. Mirtorabi, "OSPFv2 Multi-
Instance Extensions", RFC 6549, March 2012. Instance Extensions", RFC 6549, March 2012.
[RFC6621] Macker, J., "Simplified Multicast Forwarding", RFC 6621, [RFC6621] Macker, J., "Simplified Multicast Forwarding", RFC 6621,
May 2012. May 2012.
Appendix A. Changes since the Previous Version 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 - Two Unreachable Node address in 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 23 were
produced without sufficient time for preparation, and suffered from
numerous editorial errors. Therefore, this list of changes is
enumerated based on differences between this revision (24) and
revision 21.
o Alternate metrics enabled:
* New section added to describe general design approach.
* Abstract functions "Cost()" and "LoopFree()" defined.
* MAX_HOPCOUNT typically replaced by MAX_METRIC.
* DEFAULT_METRIC_TYPE parameter defined, defaulting to HopCount.
* MetricType MsgTLV defined.
* Metric8 and Metric16 AddrTLVs defined.
o Many changes for RFC 5444 compliance
o New section added for "Notational Conventions" (see Table 1).
Many changes to improve readability and accuracy (e.g., eliminate
use of "Flooding", "ThisNode", ...).
o Reorganized and simplified route lifetime management (see
Section 5.1).
o Reorganized document structure, combining closely related small
sections and eliminating top-level "Detailed ..." section.
* RREQ and 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 Internet-Facing AODVv2 router renamed to be IAR
o "Optional Features" section created to contain features not o "Optional Features" section (see Section 13) created to contain
required within base specification, including: 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 * Intermediate RREPs (iRREPs): Without iRREP, only the
destination can respond to a RREQ. destination can respond to a RREQ.
* Precursor lists. * Precursor lists.
* An RERR may reporting multiple unreachable nodes. * 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.
* Message Aggregation. * 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 o Sequence number MUST (instead of SHOULD) be set to 1 after
rollover. rollover.
o ThisNode MUST (instead of SHOULD) only handle AODVv2 messages from o AODVv2 routers MUST (instead of SHOULD) only handle AODVv2
adjacent routers. messages from adjacent routers.
o Clarification that Additional Routing information in RteMsgs is o Clarification that Added Routing information in RteMsgs is
optional (MAY) to use. optional (MAY) to use.
o Clarification that if Additional Routing information in RteMsgs is o Clarification that if Added Routing information in RteMsgs is
used, then the Route Table Entry SHOULD be updated using normal used, then the Route Table Entry SHOULD be updated using normal
procedures as described in Section 5.2.2. procedures as described in Section 6.2.
o Clarification in Section 5.4 that nodes may be configured to o Clarification in Section 7.1 that nodes may be configured to
buffer zero packets. buffer zero packets.
o Clarification in Section 5.4 that buffered packets MUST be dropped o Clarification in Section 7.1 that buffered packets MUST be dropped
if route discovery fails. if route discovery fails.
o In Section 5.5.1, relax mandate for monitoring connectivity to o In Section 8.2, relax mandate for monitoring connectivity to next-
next-hop AODVv2 neighbors (from MUST to SHOULD), in order to allow hop AODVv2 neighbors (from MUST to SHOULD), in order to allow for
for minimal implementations minimal implementations
o Remove Route.Forwarding flag; identical to "NOT" Route.Broken. o Remove Route.Forwarding flag; identical to "NOT" Route.Broken.
o Routing Messages MUST be originated with the MsgHdr.HopLimit set o Routing Messages MUST be originated with the MsgHdr.<msg-hop-
to MSG_HOPLIMIT. Previously, this was not mandated. limit> set to MAX_HOPCOUNT.
o Maximum hop count set to 254, with 255 reserved for "unknown". o Maximum hop count set to MAX_HOPCOUNT, and 255 is reserved for
Since the current draft only uses hop-count as distance, this is "unknown". Since the current draft only uses hop-count as
also the current maximum distance. distance, this is also the current maximum distance.
Appendix B. Shifting Network Prefix Advertisement Between AODVv2 Appendix C. Shifting Network Prefix Advertisement Between AODVv2
Routers Routers
Only one AODVv2 router within a routing region SHOULD be responsible Only one AODVv2 router within a MANET SHOULD be responsible for a
for a particular address at any time. If two AODVv2 routers particular address at any time. If two AODVv2 routers dynamically
dynamically shift the advertisement of a network prefix, correct shift the advertisement of a network prefix, correct AODVv2 routing
AODVv2 routing behavior must be observed. The AODVv2 router adding behavior must be observed. The AODVv2 router adding the new network
the new network prefix must wait for any existing routing information prefix must wait for any existing routing information about this
about this network prefix to be purged from the network. Therefore, network prefix to be purged from the network. Therefore, it must
it must wait at least ROUTER_SEQNUM_AGE_MAX_TIMEOUT after the wait at least ROUTER_SEQNUM_AGE_MAX_TIMEOUT after the previous AODVv2
previous AODVv2 router for this address stopped advertising routing router for this address stopped advertising routing information on
information on its behalf. its behalf.
Authors' Addresses Authors' Addresses
Charles E. Perkins Charles E. Perkins
Futurewei Inc. Futurewei Inc.
2330 Central Expressway 2330 Central Expressway
Santa Clara, CA 95050 Santa Clara, CA 95050
USA USA
Phone: +1-408-330-5305 Phone: +1-408-330-5305
 End of changes. 316 change blocks. 
1071 lines changed or deleted 1667 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/