draft-ietf-manet-dymo-25.txt   draft-ietf-manet-dymo-26.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 S. Ratliff
Expires: July 8, 2013 CenGen Expires: August 29, 2013 Cisco
January 4, 2013 J. Dowdell
Cassidian
February 25, 2013
Dynamic MANET On-demand (AODVv2) Routing Dynamic MANET On-demand (AODVv2) Routing
draft-ietf-manet-dymo-25 draft-ietf-manet-dymo-26
Abstract Abstract
The Dynamic MANET On-demand (AODVv2) routing protocol is intended for The revised Ad Hoc On-demand Distance Vector (AODVv2) routing
use by mobile routers in wireless, multihop networks. AODVv2 protocol is intended for use by mobile routers in wireless, multihop
determines unicast routes among AODVv2 routers within the network in networks. AODVv2 determines unicast routes among AODVv2 routers
an on-demand fashion, offering on-demand convergence in dynamic within the network in an on-demand fashion, offering on-demand
topologies. convergence in dynamic topologies.
Status of this Memo Status of this Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
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 July 8, 2013. This Internet-Draft will expire on August 29, 2013.
Copyright Notice Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the Copyright (c) 2013 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
skipping to change at page 2, line 19 skipping to change at page 2, line 21
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Notational Conventions . . . . . . . . . . . . . . . . . . . . 8 3. Notational Conventions . . . . . . . . . . . . . . . . . . . . 8
4. Applicability Statement . . . . . . . . . . . . . . . . . . . 8 4. Applicability Statement . . . . . . . . . . . . . . . . . . . 8
5. Data Structures . . . . . . . . . . . . . . . . . . . . . . . 10 5. Data Structures . . . . . . . . . . . . . . . . . . . . . . . 10
5.1. Route Table Entry . . . . . . . . . . . . . . . . . . . . 10 5.1. Route Table Entry . . . . . . . . . . . . . . . . . . . . 10
5.2. Bidirectional Connectivity and Blacklists . . . . . . . . 12 5.2. Bidirectional Connectivity and Blacklists . . . . . . . . 12
5.3. Router Clients and Client Networks . . . . . . . . . . . . 13 5.3. Router Clients and Client Networks . . . . . . . . . . . . 13
5.4. AODVv2 Packet Header Fields and Information Elements . . . 13 5.4. AODVv2 Packet Header Fields and Information Elements . . . 13
5.5. Sequence Numbers . . . . . . . . . . . . . . . . . . . . . 14 5.5. Sequence Numbers . . . . . . . . . . . . . . . . . . . . . 14
5.6. Enabling Alternate Metrics . . . . . . . . . . . . . . . . 15 5.6. Enabling Alternate Metrics . . . . . . . . . . . . . . . . 15
5.7. RREQ Table: Received RREQ . . . . . . . . . . . . . . . . 17 5.7. RREQ Table: Received RREQ Messages . . . . . . . . . . . . 17
6. AODVv2 Operations on Route Table Entries . . . . . . . . . . . 18 6. AODVv2 Operations on Route Table Entries . . . . . . . . . . . 18
6.1. Evaluating Incoming Routing Information . . . . . . . . . 18 6.1. Evaluating Incoming Routing Information . . . . . . . . . 19
6.2. Applying Route Updates To Route Table Entries . . . . . . 20 6.2. Applying Route Updates To Route Table Entries . . . . . . 20
6.3. Route Table Entry Timeouts . . . . . . . . . . . . . . . . 21 6.3. Route Table Entry Timeouts . . . . . . . . . . . . . . . . 21
7. Routing Messages RREQ and RREP (RteMsgs) . . . . . . . . . . . 21 7. Routing Messages RREQ and RREP (RteMsgs) . . . . . . . . . . . 21
7.1. Route Discovery Retries and Buffering . . . . . . . . . . 22 7.1. Route Discovery Retries and Buffering . . . . . . . . . . 22
7.2. RteMsg Structure . . . . . . . . . . . . . . . . . . . . . 22 7.2. RteMsg Structure . . . . . . . . . . . . . . . . . . . . . 23
7.3. RREQ Generation . . . . . . . . . . . . . . . . . . . . . 24 7.3. RREQ Generation . . . . . . . . . . . . . . . . . . . . . 25
7.4. RREP Generation . . . . . . . . . . . . . . . . . . . . . 25 7.4. RREP Generation . . . . . . . . . . . . . . . . . . . . . 26
7.5. Handling a Received RteMsg . . . . . . . . . . . . . . . . 26 7.5. Handling a Received RteMsg . . . . . . . . . . . . . . . . 27
7.5.1. Additional Handling for Incoming RREQ . . . . . . . . 28 7.5.1. Additional Handling for Incoming RREQ . . . . . . . . 28
7.5.2. Additional Handling for Incoming RREP . . . . . . . . 28 7.5.2. Additional Handling for Incoming RREP . . . . . . . . 29
7.6. Suppressing Useless RteMsgs . . . . . . . . . . . . . . . 29 7.6. Suppressing Redundant RREQ messages . . . . . . . . . . . 30
8. Route Maintenance . . . . . . . . . . . . . . . . . . . . . . 29 8. Route Maintenance and RERR Messages . . . . . . . . . . . . . 30
8.1. Maintaining Route Lifetimes During Packet Forwarding . . . 29 8.1. Maintaining Route Lifetimes During Packet Forwarding . . . 30
8.2. Active Next-hop Router Adjacency Monitoring . . . . . . . 30 8.2. Active Next-hop Router Adjacency Monitoring . . . . . . . 31
8.3. RERR Generation . . . . . . . . . . . . . . . . . . . . . 30 8.3. RERR Generation . . . . . . . . . . . . . . . . . . . . . 32
8.3.1. Case 1: Undeliverable Packet . . . . . . . . . . . . . 32 8.3.1. Case 1: Undeliverable Packet . . . . . . . . . . . . . 33
8.3.2. Case 2: Broken Link . . . . . . . . . . . . . . . . . 32 8.3.2. Case 2: Broken Link . . . . . . . . . . . . . . . . . 33
8.4. Receiving and Handling RERR Messages . . . . . . . . . . . 33 8.4. Receiving and Handling RERR Messages . . . . . . . . . . . 34
9. Unknown Message and TLV Types . . . . . . . . . . . . . . . . 34 9. Unknown Message and TLV Types . . . . . . . . . . . . . . . . 35
10. Simple Internet Attachment . . . . . . . . . . . . . . . . . . 34 10. Simple Internet Attachment . . . . . . . . . . . . . . . . . . 35
11. Multiple Interfaces . . . . . . . . . . . . . . . . . . . . . 35 11. Multiple Interfaces . . . . . . . . . . . . . . . . . . . . . 36
12. AODVv2 Control Packet/Message Generation Limits . . . . . . . 36 12. AODVv2 Control Packet/Message Generation Limits . . . . . . . 37
13. Optional Features . . . . . . . . . . . . . . . . . . . . . . 36 13. Optional Features . . . . . . . . . . . . . . . . . . . . . . 37
13.1. Expanding Rings Multicast . . . . . . . . . . . . . . . . 36 13.1. Expanding Rings Multicast . . . . . . . . . . . . . . . . 37
13.2. Intermediate RREP . . . . . . . . . . . . . . . . . . . . 36 13.2. Intermediate RREP . . . . . . . . . . . . . . . . . . . . 37
13.3. Precursor Lists and Notifications . . . . . . . . . . . . 37 13.3. Precursor Lists and Notifications . . . . . . . . . . . . 38
13.3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . 37 13.3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . 38
13.3.2. Precursor Notification Details . . . . . . . . . . . . 37 13.3.2. Precursor Notification Details . . . . . . . . . . . . 38
13.4. Multicast RREP Response to RREQ . . . . . . . . . . . . . 38 13.4. Multicast RREP Response to RREQ . . . . . . . . . . . . . 39
13.5. RREP_ACK . . . . . . . . . . . . . . . . . . . . . . . . . 38 13.5. RREP_ACK . . . . . . . . . . . . . . . . . . . . . . . . . 39
13.6. Message Aggregation . . . . . . . . . . . . . . . . . . . 39 13.6. Message Aggregation . . . . . . . . . . . . . . . . . . . 40
13.7. Added Routing Information in RteMsgs . . . . . . . . . . . 39 13.7. Added Routing Information in RteMsgs . . . . . . . . . . . 40
13.7.1. Including Added Node Information . . . . . . . . . . . 39 13.7.1. Including Added Node Information . . . . . . . . . . . 40
13.7.2. Handling Added Node Information . . . . . . . . . . . 40 13.7.2. Handling Added Node Information . . . . . . . . . . . 41
14. Administratively Configurable Parameters and Timer Values . . 41 14. Administratively Configurable Parameters and Timer Values . . 42
14.1. Timers . . . . . . . . . . . . . . . . . . . . . . . . . . 42 14.1. Timers . . . . . . . . . . . . . . . . . . . . . . . . . . 43
14.2. Protocol constants . . . . . . . . . . . . . . . . . . . . 42 14.2. Protocol constants . . . . . . . . . . . . . . . . . . . . 43
14.3. Administrative (functional) controls . . . . . . . . . . . 43 14.3. Administrative (functional) controls . . . . . . . . . . . 44
14.4. Other administrative parameters and lists . . . . . . . . 43 14.4. Other administrative parameters and lists . . . . . . . . 44
15. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 43 15. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 44
15.1. AODVv2 Message Types Specification . . . . . . . . . . . . 44 15.1. AODVv2 Message Types Specification . . . . . . . . . . . . 45
15.2. Message TLV Type Specification . . . . . . . . . . . . . . 44 15.2. Message TLV Type Specification . . . . . . . . . . . . . . 45
15.3. Address Block TLV Specification . . . . . . . . . . . . . 44 15.3. Address Block TLV Specification . . . . . . . . . . . . . 45
15.4. Metric Type Number Allocation . . . . . . . . . . . . . . 44 15.4. Metric Type Number Allocation . . . . . . . . . . . . . . 46
16. Security Considerations . . . . . . . . . . . . . . . . . . . 45 16. Security Considerations . . . . . . . . . . . . . . . . . . . 46
17. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 47 17. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 48
18. References . . . . . . . . . . . . . . . . . . . . . . . . . . 47 18. References . . . . . . . . . . . . . . . . . . . . . . . . . . 48
18.1. Normative References . . . . . . . . . . . . . . . . . . . 47 18.1. Normative References . . . . . . . . . . . . . . . . . . . 48
18.2. Informative References . . . . . . . . . . . . . . . . . . 48 18.2. Informative References . . . . . . . . . . . . . . . . . . 49
Appendix A. Example RFC 5444-compliant packet formats . . . . . . 49 Appendix A. Example RFC 5444-compliant packet formats . . . . . . 50
A.1. RREQ Message Format . . . . . . . . . . . . . . . . . . . 50 A.1. RREQ Message Format . . . . . . . . . . . . . . . . . . . 51
A.2. RREP Message Format . . . . . . . . . . . . . . . . . . . 52 A.2. RREP Message Format . . . . . . . . . . . . . . . . . . . 53
A.3. RERR Message Format . . . . . . . . . . . . . . . . . . . 54 A.3. RERR Message Format . . . . . . . . . . . . . . . . . . . 55
A.4. RREP_ACK Message Format . . . . . . . . . . . . . . . . . 55 A.4. RREP_ACK Message Format . . . . . . . . . . . . . . . . . 56
Appendix B. Changes since revision ...-24.txt . . . . . . . . . . 55 Appendix B. Changes since revision ...-25.txt . . . . . . . . . . 56
Appendix C. Changes between revisions ...-21.txt and Appendix C. Changes since revision ...-24.txt . . . . . . . . . . 57
...-24.txt . . . . . . . . . . . . . . . . . . . . . 56 Appendix D. Changes between revisions ...-21.txt and
Appendix D. Shifting Network Prefix Advertisement Between ...-24.txt . . . . . . . . . . . . . . . . . . . . . 57
AODVv2 Routers . . . . . . . . . . . . . . . . . . . 57 Appendix E. Shifting Network Prefix Advertisement Between
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 58 AODVv2 Routers . . . . . . . . . . . . . . . . . . . 59
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 59
1. Overview 1. Overview
The Dynamic MANET On-demand (AODVv2) routing protocol [formerly named The revised Ad Hoc On-demand Distance Vector (AODVv2) routing
DYMO] enables on-demand, multihop unicast routing among AODVv2 protocol [formerly named DYMO] enables on-demand, multihop unicast
routers in mobile ad hod networks [MANETs][RFC2501]. The basic routing among AODVv2 routers in mobile ad hod networks
operations of the AODVv2 protocol are route discovery and route [MANETs][RFC2501]. The basic operations of the AODVv2 protocol are
maintenance. Route discovery is performed when an AODVv2 router must route discovery and route maintenance. Route discovery is performed
transmit a packet towards a destination for which it does not have a when an AODVv2 router must transmit a packet towards a destination
route. Route maintenance is performed to avoid prematurely expunging for which it does not have a route. Route maintenance is performed
routes from the route table, and to avoid dropping packets when an to avoid prematurely expunging routes from the route table, and to
active route breaks. avoid dropping packets when an active route breaks.
During route discovery, an AODVv2 router (RREQ_Gen) multicasts a During route discovery, the originating AODVv2 router (RREQ_Gen)
Route Request message (RREQ) to find a route toward some target multicasts a Route Request message (RREQ) to find a route toward some
destination. Using a hop-by-hop retransmission algorithm, each target destination. Using a hop-by-hop retransmission algorithm,
AODVv2 router receiving the RREQ message records a route toward the each AODVv2 router receiving the RREQ message records a route toward
originator. When the target's AODVv2 router (RREP_Gen) receives the the originator. When the target's AODVv2 router (RREP_Gen) receives
RREQ, it records a route toward RREQ_Gen and generates a Route Reply the RREQ, it records a route toward RREQ_Gen and generates a Route
(RREP) unicast toward RREQ_Gen. Each AODVv2 router that receives the Reply (RREP) unicast toward RREQ_Gen. Each AODVv2 router that
RREP stores a route toward the target, and again unicasts the RREP receives the RREP stores a route toward the target, and again
toward the originator. When RREQ_Gen receives the RREP, routes have unicasts the RREP toward the originator. When RREQ_Gen receives the
then been established between RREQ_Gen (the originating AODVv2 RREP, routes have then been established between RREQ_Gen (the
router) and RREP_Gen (the target's AODVv2 router) in both directions. originating AODVv2 router) and RREP_Gen (the target's AODVv2 router)
in both directions.
Route maintenance consists of two operations. In order to maintain Route maintenance consists of two operations. In order to maintain
active routes, AODVv2 routers extend route lifetimes upon active routes, AODVv2 routers extend route lifetimes upon
successfully forwarding a packet. When a data packet is received successfully forwarding a packet. When a data packet is received to
downstream for forwarding but there is no valid route for the be forwarded downstream but there is no valid route for the
destination, then the AODVv2 router of the source of the packet is destination, then the AODVv2 router of the source of the packet is
notified via a Route Error (RERR) message. Each upstream router that notified via a Route Error (RERR) message. Each upstream router that
receives the RERR marks the route as broken. Before such an upstream receives the RERR marks the route as broken. Before such an upstream
AODVv2 router could forward a packet to the same destination, it AODVv2 router could forward a packet to the same destination, it
would have to perform route discovery again for that destination. would have to perform route discovery again for that destination.
AODVv2 uses sequence numbers to assure loop freedom [Perkins99], AODVv2 uses sequence numbers to assure loop freedom [Perkins99],
similarly to AODV. 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. Unlike AODV, thereby avoiding use of stale routing information. Unlike AODV,
skipping to change at page 5, line 17 skipping to change at page 5, line 17
This document defines the following terminology: This document defines the following terminology:
Adjacency Adjacency
A bi-directional relationship between neighboring AODVv2 routers A bi-directional relationship between neighboring AODVv2 routers
for the purpose of exchanging routing information. Not every pair for the purpose of exchanging routing information. Not every pair
of neighboring routers will necessarily form an adjacency. of 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 indicated by similar information; monitoring of
adjacencies where packets are being forwarded is required (see adjacencies where packets are being forwarded is required (see
Section 8.2). Section 8.2).
AODVv2 Router AODVv2 Router
An IP addressable device in the ad-hoc network that performs the An IP addressable device in the ad-hoc network that performs the
AODVv2 protocol operations specified in this document. AODVv2 protocol operations specified in this document.
AODVv2 Sequence Number (SeqNum) AODVv2 Sequence Number (SeqNum)
Same as Sequence Number. Same as Sequence Number.
Current_Time Current_Time
The current time as maintained by the AODVv2 router. The current time as maintained by the AODVv2 router.
disregard disregard
Ignore for further processing (see Section 5.4), and delete unless Ignore for further processing (see Section 5.4), and discard
it is required to keep the message in the packet for purposes of unless it is required to keep the message in the packet for
authentication. purposes of authentication.
Handling Router (HandlingRtr) Handling Router (HandlingRtr)
HandlingRtr denotes the AODVv2 router receiving and handling an HandlingRtr denotes the AODVv2 router receiving and handling an
AODVv2 message. AODVv2 message.
Incoming Link Incoming Link
A link over which an AODVv2 router has received a message from an A link over which an AODVv2 router has received a message from an
adjacent router. adjacent router.
MANET MANET
skipping to change at page 6, line 34 skipping to change at page 6, line 34
Route Error (RERR) Route Error (RERR)
A RERR message is used to indicate that an AODVv2 router does not A RERR message is used to indicate that an AODVv2 router does not
have a route toward 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 establish a route between the RREQ A RREP message is used to establish a route between the RREQ
TargetNode and OrigNode, at all the AODVv2 routers between them. TargetNode and OrigNode, at all the AODVv2 routers 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. An a particular destination address, called the TargetNode. An
AODVv2 router processing a RREQ receives routing information for AODVv2 router processing a RREQ receives routing information for
the RREQ OrigNode. the RREQ OrigNode.
Router Client Router Client
An AODVv2 router may be configured with a list of other IP An AODVv2 router may be configured with a list of other IP
addresses and networks which correspond to other non-router nodes addresses and networks which correspond to other non-router nodes
which require the services of the AODVv2 router for route which require the services of the AODVv2 router for route
discovery and maintenance. An AODVv2 is always its own client, so discovery and maintenance. An AODVv2 router is always its own
that the list of client IP addresses is never empty. client, so that the list of client IP addresses is never empty.
RREP Generating Router (RREP_Gen) RREP Generating Router (RREP_Gen)
The RREP Generating Router is the AODVv2 router that serves The RREP Generating Router is the AODVv2 router that serves
TargNode. RREP_Gen generates the RREP message to advertise a TargNode. RREP_Gen generates the RREP message to advertise a
route for TargNode. route for TargNode.
RREQ Generating Router (RREQ_Gen) RREQ Generating Router (RREQ_Gen)
The RREQ Generating Router is the AODVv2 router that serves The RREQ Generating Router is the AODVv2 router that serves
OrigNode. RREQ_Gen generates the RREQ message to discover a route OrigNode. RREQ_Gen generates the RREQ message to discover a route
for TargNode. for TargNode.
Sequence Number (SeqNum) Sequence Number (SeqNum)
AODVv2 mandates that each AODVv2 router maintain an unsigned AODVv2 mandates that each AODVv2 router maintain an unsigned
integer known as the router's "Sequence Number". This Sequence integer known as the router's "Sequence Number". The Sequence
Number guarantees the temporal order of routing information to Number guarantees the temporal order of routing information to
maintain loop-free routes. This Sequence Number fulfills the same maintain loop-free routes, and fulfills the same role as the
role as the "Destination Sequence Number" of DSDV, and of AODV "Destination Sequence Number" of DSDV, and as the AODV Sequence
Sequence Number in RFC 3561[RFC3561]. The value zero (0) is Number in RFC 3561[RFC3561]. The value zero (0) is reserved to
reserved to indicate that the Sequence Number for an address is indicate that the Sequence Number for an address is unknown.
unknown.
Target Node (TargNode) Target Node (TargNode)
The Target Node denotes the node for which a route is needed. The Target Node denotes the node for which a route is needed.
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.
valid route valid route
A route that can be used for forwarding; in other words a route A route that can be used for forwarding; in other words a route
that is not Broken or Expired. that is not Broken or Expired.
3. Notational Conventions 3. Notational Conventions
This document uses the conventions found in Table 1 to describe This document uses the conventions found in Table 1 to describe
information in the fields from [RFC5444]. information in the fields from [RFC5444].
+---------------------+-----------------------------------------+ +---------------------+------------------------------------------+
| Notation | Information Location and/or Meaning | | Notation | Information Location and/or Meaning |
+---------------------+-----------------------------------------+ +---------------------+------------------------------------------+
| Route[DestAddr] | A route table entry towards DestAddr | | Route[Addr] | A route table entry towards Addr |
| Route[Addr].{field} | A field in a route table entry | | Route[Addr].{field} | A field in a route table entry |
| -- | -- | | -- | -- |
| <msg-hop-count> | RFC 5444 Message Header <msg-hop-count> | | <msg-hop-count> | RFC 5444 Message Header <msg-hop-count> |
| <msg-hop-limit> | RFC 5444 Message Header <msg-hop-limit> | | <msg-hop-limit> | RFC 5444 Message Header <msg-hop-limit> |
| AddrBlk | an RFC 5444 Address TLV Block | | AddrBlk | an RFC 5444 Address TLV Block |
| AddrBlk[1] | The first address slot in AddrBlk | | AddrBlk[1] | The first address slot in AddrBlk |
| AddrBlk[N] | The Nth address slot in AddrBlk | | AddrBlk[N] | The Nth address slot in AddrBlk |
| AddrBlk[OrigNode] | AddrBlk[1] | | OrigNdx | The index of OrigNode within the AddrBlk |
| AddrBlk[TargNode] | AddrBlk[2] | | TargNdx | The index of TargNode within the AddrBlk |
| AddrTLV | an RFC 5444 Address Block TLV | | AddrBlk[OrigNode] | AddrBlk[OrigNdx] |
| AddrTLV[1] | the first item in AddrTLV | | AddrBlk[TargNode] | AddrBlk[TargNdx] |
| AddrTLV[N] | the Nth item in AddrTLV | | AddrTLV | an RFC 5444 Address Block TLV |
| AddrTLV[OrigNode] | AddrTLV[1] | | AddrTLV[1] | the first item in AddrTLV |
| AddrTLV[TargNode] | AddrTLV[2] | | AddrTLV[N] | the Nth item in AddrTLV |
| MetricTLV | Metric AddrTLV for AddrBlk | | AddrTLV[OrigNode] | AddrTLV[OrigNdx] |
| SeqNumTLV | Sequence Number AddrTLV for AddrBlk | | AddrTLV[TargNode] | AddrTLV[TargNdx] |
| -- | -- | | MetricTLV | Metric AddrTLV for AddrBlk |
| OrigNode | Originating Node | | SeqNumTLV | Sequence Number AddrTLV for AddrBlk |
| RREQ_Gen | AODVv2 router originating an RREQ | | OrigSeqNumTLV | Originating Node Sequence Number AddrTLV |
| RREP_Gen | AODVv2 router responding to an RREQ | | TargSeqNumTLV | Target Node Sequence Number AddrTLV |
| RteMsg | Either RREQ or RREP | | -- | -- |
| RteMsg.{field} | Field in RREQ or RREP | | OrigNode | Originating Node |
| HandlingRtr | Handling Router | | RREQ_Gen | AODVv2 router originating an RREQ |
| TargNode | Target Node | | RREP_Gen | AODVv2 router responding to an RREQ |
| UnreachableNode | Unreachable Node | | RteMsg | Either RREQ or RREP |
+---------------------+-----------------------------------------+ | RteMsg.{field} | Field in RREQ or RREP |
| HandlingRtr | Handling Router |
| TargNode | Target Node |
| UnreachableNode | Unreachable Node |
+---------------------+------------------------------------------+
Table 1 Table 1
4. Applicability Statement 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
determining routes on-demand. AODVv2 also handles a wide variety of determining routes on-demand. AODVv2 also handles a wide variety of
traffic patterns. In networks with a large number of routers, AODVv2 traffic patterns. In networks with a large number of routers, AODVv2
skipping to change at page 9, line 22 skipping to change at page 9, line 26
the features of DSR [RFC4728], AODVv2 is not interoperable with the features of DSR [RFC4728], AODVv2 is not interoperable with
either of those other two protocols. 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 MANET be require routing information to all routers within the MANET be
maintained. maintained.
In addition to routing for their local applications, AODVv2 routers In addition to routing for its own local applications, each AODVv2
can also route on behalf of other non-routing nodes (i.e., "hosts", router can also route on behalf of other non-routing nodes (i.e.,
or, in this document, "clients"), reachable via those interfaces. "hosts", or, in this document, "clients"), reachable via those
Each AODVv2 router, if serving router clients other than itself, is interfaces. Each AODVv2 router, if serving router clients other than
configured with information about the IP addresses of its clients. itself, is configured with information about the IP addresses of its
No AODVv2 router is required to have information about the clients. No AODVv2 router is required to have information about the
relationship between any other AODVv2 router and its router clients. relationship between any other AODVv2 router and its router clients
(see Section 5.3).
The coordination among multiple AODVv2 routers to distribute routing The coordination among multiple AODVv2 routers to distribute routing
information correctly for a shared address (i.e. an address that is information correctly for a shared address (i.e. an address that is
advertised and can be reached via multiple AODVv2 routers) is not advertised and can be reached via multiple AODVv2 routers) is not
described in this document. The AODVv2 router operation of shifting described in this document. The AODVv2 router operation of shifting
responsibility for a routing client from one AODVv2 router to another responsibility for a routing client from one AODVv2 router to another
is mentioned in Appendix D. Address assignment procedures are is mentioned in Appendix E. Address assignment procedures are
entirely out of scope for AODVv2. Any such node which is not itself entirely out of scope for AODVv2. Any such node which is not itself
an AODVv2 router SHOULD NOT be served by more than one AODVv2 router. an AODVv2 router SHOULD NOT be served by more than one AODVv2 router
at any one time.
Multi-homing is difficult unless the sequence number is expanded to Multi-homing is difficult unless the sequence number is expanded to
include the AODVv2 router's IP address as well as SeqNum. Otherwise, include the AODVv2 router's IP address as well as SeqNum. Otherwise,
comparing sequence numbers would not work to evaluate freshness. comparing sequence numbers would not work to evaluate freshness.
Even when the IP address is included, there isn't a good way to 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 compare sequence numbers from different IP addresses, but at least a
handling node can determine whether the two given sequence numbers handling node can determine whether the two given sequence numbers
are comparable. If the route table can store multiple routes for the are comparable. If the route table can store multiple routes for the
same destination, then multi-homing can work with sequence numbers same destination, then multi-homing can work with sequence numbers
augmented by IP addresses. augmented by IP addresses.
AODVv2 routers perform route discovery to find a route toward a 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.
AODVv2 only utilizes bidirectional links. In the case of possible AODVv2 only supports bidirectional links. In the case of possible
unidirectional links, either blacklists (see Section 5.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 assuring and monitoring bi-directionality is recommended. of assuring and monitoring bi-directionality are recommended.
Otherwise, persistent packet loss or persistent protocol failures Otherwise, persistent packet loss or persistent protocol failures
could occur. The Cost(L) of bidirectional link L may depend upon the could occur. The cost of bidirectional link L (denoted Cost(L)) may
direction across the link for which the cost is measured. 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 impose a performance storage available for this state, recovery can impose a performance
penalty (e.g., in case of AODVv2 router reboots). penalty (e.g., in case of AODVv2 router reboots).
5. Data Structures 5. Data Structures
5.1. Route Table Entry 5.1. Route Table Entry
skipping to change at page 11, line 45 skipping to change at page 12, line 7
Expired Expired
After a route has been idle for too long, it expires, and may no After a route has been idle for too long, it expires, and may no
longer be used for forwarding packets longer be used for forwarding packets
Broken Broken
A route marked as Broken cannot be used for forwarding packets but A route marked as Broken cannot be used for forwarding packets but
still has valid destination sequence number information. still has valid destination sequence number information.
Timed Timed
The expiration of a Timed route is controlled by the The expiration of a Timed route is controlled by the
Route.ExpirationTime time of the route table entry, not Route.ExpirationTime time of the route table entry (instead of
MAX_IDLETIME. Until that time, a Timed route can be used for MAX_IDLETIME). Until that time, a Timed route can be used for
forwarding packets. Afterwards, the route must be Expired (or forwarding packets. Afterwards, the route must be Expired (or
expunged). expunged).
The route's state determines the operations that can be performed on The route's state determines the operations that can be performed on
the route table entry. During use, an Active route is maintained the route table entry. During use, an Active route is maintained
continuously by AODVv2 and is considered to remain active as long as 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 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 is no longer Active, it becomes an Idle route. After an idle route
Idle for MAX_IDLETIME, it becomes an Expired route; an Expired route remains Idle for MAX_IDLETIME, it becomes an Expired route. An
is not used for forwarding, but the sequence number information can Expired route is not used for forwarding, but the sequence number
be maintained until the destination sequence number has had no information can be maintained until the destination sequence number
updates for MAX_SEQNUM_LIFETIME. After MAX_SEQNUM_LIFETIME, old has had no updates for MAX_SEQNUM_LIFETIME; after that time, old
sequence number information is considered no longer valuable and the sequence number information is considered no longer valuable and the
route is expunged. Expired route MUST BE expunged.
MAX_SEQNUM_LIFETIME is the time after a reboot during which an AODVv2 MAX_SEQNUM_LIFETIME is the time after a reboot during which an AODVv2
router MUST NOT transmit any routing messages. Thus, if all other router MUST NOT transmit any routing messages. Thus, if all other
AODVv2 routers expunge routes to the rebooted router after that time AODVv2 routers expunge routes to the rebooted router after that time
interval, the rebooted AODVv2 router's sequence number will not be interval, the rebooted AODVv2 router's sequence number will not be
considered stale by any other AODVv2 router in the MANET. 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 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. being Broken, and the route may no longer be used.
skipping to change at page 12, line 34 skipping to change at page 12, line 45
To avoid repeated failure of Route Discovery, an AODVv2 router To avoid repeated failure of Route Discovery, an AODVv2 router
(HandlingRtr) handling a RREP message MAY attempt to verify (HandlingRtr) handling a RREP message MAY attempt to verify
connectivity to the next upstream router towards AODVv2 router connectivity to the next upstream router towards AODVv2 router
originating an RREQ message, by including the Acknowledgement Request originating an RREQ message, by including the Acknowledgement Request
(AckReq) message TLV (see Section 15.2) in the RREP. Any unicast (AckReq) message TLV (see Section 15.2) in the RREP. Any unicast
packet will satisfy the Acknowledgement Request, for example an ICMP packet will satisfy the Acknowledgement Request, for example an ICMP
REPLY message. If the verification is not received within REPLY message. If the verification is not received within
UNICAST_MESSAGE_SENT_TIMEOUT, HandlingRtr SHOULD put the upstream UNICAST_MESSAGE_SENT_TIMEOUT, HandlingRtr SHOULD put the upstream
neighbor in the blacklist. RREQs received from a blacklisted node neighbor in the blacklist. RREQs received from a blacklisted node
SHOULD NOT be retransmitted by HandlingRtr. However, the upstream SHOULD NOT be retransmitted by HandlingRtr. However, the upstream
neighbor should not be permanently blacklisted; after a certain time neighbor SHOULD NOT be permanently blacklisted; after a certain time
(MAX_BLACKLIST_TIME), it should once again be considered as a viable (MAX_BLACKLIST_TIME), it SHOULD once again be considered as a viable
upstream neighbor for route discovery operations. upstream neighbor for route discovery operations.
For this purpose, a list of blacklisted nodes along with their time For this purpose, a list of blacklisted nodes along with their time
of removal should be maintained: of removal SHOULD be maintained:
Blacklist.Node Blacklist.Node
The IP address of the node that did not verify bidirectional The IP address of the node that did not verify bidirectional
connectivity. connectivity.
Blacklist.RemoveTime Blacklist.RemoveTime
The time at which Blacklist.Node will be removed from the The time at which Blacklist.Node will be removed from the
blacklist. blacklist.
5.3. Router Clients and Client Networks 5.3. Router Clients and Client Networks
skipping to change at page 13, line 32 skipping to change at page 13, line 40
If the Client Prefix Length is not the full length of the Client IP 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 address, then the prefix defines a Client Network. If an AODVv2
router is configured to serve a Client Network, then the AODVv2 router is configured to serve a Client Network, then the AODVv2
router MUST serve every node that has an address within the range router MUST serve every node that has an address within the range
defined by the routing prefix of the Client Network. The list of defined by the routing prefix of the Client Network. The list of
Routing Clients for an AODVv2 router is never empty, since an AODVv2 Routing Clients for an AODVv2 router is never empty, since an AODVv2
router is always its own client as well. router is always its own client as well.
5.4. AODVv2 Packet Header Fields and Information Elements 5.4. AODVv2 Packet Header Fields and Information Elements
In its default mode of operation, AODVv2 uses the UDP port 269 In its default mode of operation, AODVv2 transmits UDP packets using
[RFC5498] to carry protocol packets. In addition, IP Protocol Number the parameters for port number and IP protocol specified in [RFC5498]
138 has been reserved for MANET protocols [RFC5498]. Most AODVv2 to carry protocol packets. By default, AODVv2 packets are sent with
packets are sent with the IP destination address set to the link- the IP destination address set to the link-local multicast address
local multicast address LL-MANET-Routers [RFC5498] unless otherwise LL-MANET-Routers [RFC5498] unless otherwise specified. Therefore,
specified. Therefore, all AODVv2 routers MUST subscribe to LL-MANET- all AODVv2 routers MUST subscribe to LL-MANET-Routers [RFC5498] to
Routers [RFC5498] to receiving AODVv2 messages. In order to reduce receiving AODVv2 messages. In order to reduce multicast overhead,
multicast overhead, retransmitting multicast packets in MANETs SHOULD retransmitting multicast packets in MANETs SHOULD be done according
be done according to methods specified in [RFC6621]. AODVv2 does not to methods specified in [RFC6621]. AODVv2 does not specify which
specify which method should be used to restrict the set of AODVv2 method should be used to restrict the set of AODVv2 routers that have
routers that have the responsibility to retransmit multicast packets. the responsibility to retransmit multicast packets. Note that
Note that multicast packets MAY be sent via unicast. For example, multicast packets MAY be sent via unicast. For example, this may
this may occur for certain link-types (non-broadcast media), for occur for certain link-types (non-broadcast media), for manually
manually configured router adjacencies, or in order to improve configured router adjacencies, or in order to improve robustness.
robustness.
The IPv4 TTL (IPv6 Hop Limit) field for all packets containing AODVv2 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 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 than 255, any AODVv2 message contained in the packet MUST be
disregarded by AODVv2. This mechanism, known as "The Generalized TTL disregarded by AODVv2. This mechanism, known as "The Generalized TTL
Security Mechanism" (GTSM) [RFC5082] helps to assure that packets Security Mechanism" (GTSM) [RFC5082] helps to assure that packets
have not traversed any intermediate routers. have not traversed any intermediate routers.
IP packets containing AODVv2 protocol messages SHOULD be given IP packets containing AODVv2 protocol messages SHOULD be given
priority queuing and channel access. priority queuing and channel access.
skipping to change at page 14, line 50 skipping to change at page 15, line 9
5.5. Sequence Numbers 5.5. Sequence Numbers
Sequence Numbers allow AODVv2 routers to evaluate the freshness of Sequence Numbers allow AODVv2 routers to evaluate the freshness of
routing information. Proper maintenance of sequence numbers assures routing information. Proper maintenance of sequence numbers assures
that the destination sequence number value stored by intermediate that the destination sequence number value stored by intermediate
AODVv2 routers is monotonically increasing along any path from any AODVv2 routers is monotonically increasing along any path from any
source to the destination. As a consequence, loop freedom is source to the destination. As a consequence, loop freedom is
assured. assured.
Each AODVv2 router in the network MUST maintain its own sequence Each AODVv2 router in the network MUST maintain its own sequence
number An AODVv2 router increments its SeqNum as follows. Most of number. An AODVv2 router increments its SeqNum as follows. Most of
the time, SeqNum is incremented by simply adding one (1). But to the time, SeqNum is incremented by simply adding one (1). But to
increment SeqNum when it has the value of the largest largest increment SeqNum when it has the value of the largest possible number
possible number representable as a 16-bit unsigned integer (i.e., representable as a 16-bit unsigned integer (i.e., 65,535), it MUST be
65,535), it MUST be set to one (1). In other words, the sequence set to one (1). In other words, the sequence number after 65,535 is
number after 65,535 is 1. 1.
An AODVv2 router SHOULD maintain its SeqNum in persistent storage. An AODVv2 router SHOULD maintain its SeqNum in persistent storage.
If an AODVv2 router's SeqNum is lost, it MUST take the following If an AODVv2 router's SeqNum is lost, it MUST take the following
actions to avoid the danger of routing loops. First, the AODVv2 actions to avoid the danger of routing loops. First, the AODVv2
router MUST invalidate all route table entries, by setting router MUST invalidate all route table entries, by setting
Route.Broken for each entry. Furthermore the AODVv2 router MUST wait Route.Broken for each entry. Furthermore the AODVv2 router MUST wait
for at least MAX_SEQNUM_LIFETIME before transmitting or for at least MAX_SEQNUM_LIFETIME before transmitting or
retransmitting any AODVv2 RREQ or RREP messages. If an AODVv2 retransmitting any AODVv2 RREQ or RREP messages. If an AODVv2
protocol message is received during this waiting period, the AODVv2 protocol message is received during this waiting period, the AODVv2
router SHOULD perform normal route table entry updates. If a data router SHOULD perform normal route table entry updates, but not
packet is received for forwarding to another destination during this forward the message to other nodes. If a data packet is received for
waiting period, the AODVv2 router MUST transmit a RERR message forwarding to another destination during this waiting period, the
indicating that no route is available. At the end of the waiting AODVv2 router MUST transmit a RERR message indicating that no route
period the AODVv2 router sets its SeqNum to one (1) and begins is available. At the end of the waiting period the AODVv2 router
performing AODVv2 protocol functions again. sets its SeqNum to one (1) and begins performing AODVv2 protocol
operations again.
5.6. Enabling Alternate Metrics 5.6. Enabling Alternate Metrics
AODVv2 route selection in MANETs depends upon associating metric AODVv2 route selection in MANETs depends upon associating metric
information with each route table entry. When presented with information with each route table entry. When presented with
candidate route update information, deciding whether to use the candidate route update information, deciding whether to use the
update involves evaluating the metric. Some applications may require update involves evaluating the metric. Some applications may require
metric information other than Hop Count, which has traditionally been metric information other than Hop Count, which has traditionally been
the default metric associated with routes in MANET. Unfortunately, the default metric associated with routes in MANET. Unfortunately,
it is well known that reliance on Hop Count can cause selection of it is well known that reliance on Hop Count can cause selection of
skipping to change at page 16, line 4 skipping to change at page 16, line 12
using the associated route, and there are many different kinds of using the associated route, and there are many different kinds of
cost (latency, delay, monetary, energy, etc.). cost (latency, delay, monetary, energy, etc.).
The most significant change when enabling use of alternate metrics is The most significant change when enabling use of alternate metrics is
to require the possibility of multiple routes to the same to require the possibility of multiple routes to the same
destination, where the "cost" of each of the multiple routes is destination, where the "cost" of each of the multiple routes is
measured by a different metric. Moreover, the method by which route measured by a different metric. Moreover, the method by which route
updates are tested for usefulness has to be slightly generalized to updates are tested for usefulness has to be slightly generalized to
depend upon a more abstract method of evaluation which, in this depend upon a more abstract method of evaluation which, in this
document, is named "Cost(R)", where 'R' is the route for which the document, is named "Cost(R)", where 'R' is the route for which the
Cost to be evaluated. From the above, the route table information Cost is to be evaluated. From the above, the route table information
for 'R' must always include the type of metric by which Cost(R) is 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 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 parameter for Cost(R). Since determining loop freedom is known to
depend on comparing the Cost(R) of route update information to the depend on comparing the Cost(R) of route update information to the
Cost(R) of an existing stored route using the same metric, AODVv2 Cost(R) of an existing stored route using the same metric, AODVv2
must also be able to invoke an abstract routine which in this must also be able to invoke an abstract routine which in this
document is called "LoopFree(R1, R2)". LoopFree(R1, R2) returns TRUE document is called "LoopFree(R1, R2)". LoopFree(R1, R2) returns TRUE
when, (under the assumption of nondecreasing SeqNum during Route when, (under the assumption of nondecreasing SeqNum during Route
Discovery) given that R2 is loop-free and Cost(R2) is the cost of Discovery) 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 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 R1. In this document, LoopFree(R1,R2) will only be invoked for
routes R1 and R2 which use the same metric. routes R1 and R2 to the same destination which use the same metric.
Generally, HopCount may still be considered the default metric for Generally, HopCount may still be considered the default metric for
use in MANETs, notwithstanding the above objections. Each metric has use in MANETs, notwithstanding the above objections. Each metric has
to have a Metric Type, and the Metric Type is allocated by IANA as to have a Metric Type, and the Metric Type is allocated by IANA as
specified in [RFC6551]. Each Route has to include the Metric Type as specified in [RFC6551]. Each Route has to include the Metric Type as
part of the route table entry for that route. Hop Count has Metric 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 simply Type assignment 3. The Cost of a route using Metric Type 3 is simply
the hop count between the router and the destination. For routes R1 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) 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) <= (Cost(R1) + 1). The specification of Cost(R) and LoopFree(R1,R2)
skipping to change at page 17, line 5 skipping to change at page 17, line 13
information in the RteMsg. information in the RteMsg.
For some metrics, a maximum value is defined, namely MAX_METRIC[i] 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 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 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 MAX_HOPCOUNT, where as before 3 is the Metric Type of the HopCount
metric. MAX_HOPCOUNT MUST be larger than the AODVv2 network metric. MAX_HOPCOUNT MUST be larger than the AODVv2 network
diameter. Otherwise, AODVv2 protocol messages may not reach their diameter. Otherwise, AODVv2 protocol messages may not reach their
intended destinations. intended destinations.
5.7. RREQ Table: Received RREQ 5.7. RREQ Table: Received RREQ Messages
Two incoming RREQ messages are considered to be "comparable" if they Two incoming RREQ messages are considered to be "comparable" if they
were generated by the same AODVv2 router in order to discover a route were generated by the same AODVv2 router in order to discover a route
for the same destination with the same metric type. Using that for the same destination with the same metric type. According to
notion of comparability, when RREQ messages are flooded in a MANET, that notion of comparability, when RREQ messages are flooded in a
an AODVv2 router may well receive comparable RREQ messages from more MANET, an AODVv2 router may well receive comparable RREQ messages
than one of its neighbors. A router, after receiving an RREQ from more than one of its neighbors. A router, after receiving an
message, MUST check against previous RREQs to assure that its RREQ message, MUST check against previous RREQs to assure that its
response message would contain useful information. Otherwise, response message would contain information that is not redundant.
multicast RREQs are likely to be retransmitted over and over again Otherwise, multicast RREQs are likely to be retransmitted again and
with zero additional benefit but generating a great deal of again with almost no additional benefit, but generating a great deal
unnecessary signaling traffic and interference. of unnecessary signaling traffic and interference.
When optional multicast RREP (see Section 13.4) is used to enable
selection from among multiple possible return routes, an AODVv2
router can eliminate useless RREP messages using the analogous
mechanism along with a RREP Table. Nevertheless, the description in
this section only refers to RREQ multicast messages.
To avoid transmission of useless RREQ messages, while still enabling To avoid transmission of redundant RREQ messages, while still
the proper handling of earlier RREQ messages that may have somehow enabling the proper handling of earlier RREQ messages that may have
been delayed in the network, it is needed for each AODVv2 router to somehow been delayed in the network, it is needed for each AODVv2
keep a list of the certain information about RREQ messages which it router to keep a list of the certain information about RREQ messages
has recently received. which it has recently received.
This list is called the AODVv2 Received RREQ Table -- or, more This list is called the AODVv2 Received RREQ Table -- or, more
briefly, the RREQ Table. Two AODVv2 RREQ messages are comparable if: briefly, the RREQ Table. Two AODVv2 RREQ messages are comparable if:
o they have the same metric type o they have the same metric type
o they have the same OrigNode and TargNode addresses o they have the same OrigNode and TargNode addresses
The RREQ Table is maintained so that no two entries in the RREQ Table
are comparable -- that is, all RREQs represented in the RREQ Table
either have different OrigNode addresses, different TargNode
addresses, different metric types, or different message types. If
two RREQs have the same metric type and OrigNode and Targnode
addresses, the information from the one with the older Sequence
Number is not needed in the table; in case they have the same
Sequence Number, the one with the greater Metric value is not needed;
in case they have the same Metric as well, it does not matter which
table entry is maintained. Whenever a RREQ Table entry is updated,
its Timestamp field should also be updated to reflect the
Current_Time.
Each entry in the RREQ Table has the following fields: Each entry in the RREQ Table has the following fields:
o Metric Type o Metric Type
o OrigNode address o OrigNode address
o TargNode address o TargNode address
o Sequence Number o Sequence Number
skipping to change at page 18, line 14 skipping to change at page 18, line 4
o Metric Type o Metric Type
o OrigNode address o OrigNode address
o TargNode address o TargNode address
o Sequence Number o Sequence Number
o Metric o Metric
o Timestamp o Timestamp
The RREQ Table is maintained so that no two entries in the RREQ Table
are comparable -- that is, all RREQs represented in the RREQ Table
either have different OrigNode addresses, different TargNode
addresses, or different metric types. If two RREQs have the same
metric type and OrigNode and Targnode addresses, the information from
the one with the older Sequence Number is not needed in the table; in
case they have the same Sequence Number, the one with the greater
Metric value is not needed; in case they have the same Metric as
well, it does not matter which table entry is maintained. Whenever a
RREQ Table entry is updated, its Timestamp field should also be
updated to reflect the Current_Time.
When optional multicast RREP (see Section 13.4) is used to enable
selection from among multiple possible return routes, an AODVv2
router can eliminate redundant RREP messages using the analogous
mechanism along with a RREP Table. Nevertheless, the description in
this section only refers to RREQ multicast messages.
Protocol handling of RERR messages eliminates the need for tracking Protocol handling of RERR messages eliminates the need for tracking
RERR messages, since the rules for RERR regeneration prevent the RERR messages, since the rules for RERR regeneration prevent the
phenomenon of useless retansmission that affects RREQ and RREP phenomenon of redundant retansmission that affects RREQ and RREP
multicast. multicast.
6. AODVv2 Operations on Route Table Entries 6. AODVv2 Operations on Route Table Entries
In this section, operations are specified for updating the route In this section, operations are specified for updating the route
table due to timeouts and route updates within AODVv2 messages. table due to timeouts and route updates within AODVv2 messages.
Route update information in AODVv2 messages includes a destination IP Route update information in AODVv2 messages includes IP addresses,
address (DestIP), SeqNum and prefix length associated with DestIP, along with the SeqNum and prefix length associated with each IP
and the Metric from the node transmitting the AODVv2 message to address, and including the Metric measured from the node transmitting
DestIP. DestIP and prefix length are encoded within an RFC 5444 the AODVv2 message to the IP address in the route update. IP
Address Block, and the SeqNum and Metric associated with each DestIP addresses and prefix length are encoded within an RFC 5444 AddrBlk,
and the SeqNum and Metric associated with each address in the AddrBlk
are encoded in RFC 5444 AddrTLVs. Optionally, there may be AddedNode are encoded in RFC 5444 AddrTLVs. Optionally, there may be AddedNode
route updates included in AODVv2 messages, as specified in route updates included in AODVv2 messages, as specified in
Section 13.7. In this section, RteMsg is either RREQ or RREP, 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.Addr[i] denotes the [i]th address in an RFC 5444 AddrBlk of
RteMsg, RteMsg.PrefixLength denotes the associated prefix length for the RteMsg. RteMsg.PrefixLength[i] denotes the associated prefix
RteMsg.Addr, and RteMsg.{field} denotes the corresponding value in length for RteMsg.Addr[i], and RteMsg.{field} denotes the
the named AddrTLV block associated with RteMsg.Addr. All SeqNum corresponding value in the named AddrTLV block associated with
comparisons use signed 16-bit arithmetic. RteMsg.Addr[i]. All SeqNum comparisons use signed 16-bit arithmetic.
6.1. Evaluating Incoming Routing Information 6.1. Evaluating Incoming Routing Information
If the incoming RteMsg does not have a MetricType Message TLV, then If the incoming RteMsg does not have a MetricType Message TLV, then
the metric information contained by RteMsg is considered to be of the metric information contained by RteMsg is considered to be of
type DEFAULT_METRIC_TYPE -- by default, 3 (for HopCount). Whenever type DEFAULT_METRIC_TYPE -- which is 3 (for HopCount) unless changed
an AODVv2 router (HandlingRtr) handles an incoming RteMsg (i.e., RREQ by administrative action. Whenever an AODVv2 router (HandlingRtr)
or RREP), for every relevant address (RteMsg.Addr) in the RteMsg, handles an incoming RteMsg (i.e., RREQ or RREP), for every relevant
HandlingRtr searches its route table to see if there is a route table address (RteMsg.Addr) in the RteMsg, HandlingRtr searches its route
entry with the same MetricType of the RteMsg, matching RteMsg.Addr. table to see if there is a route table entry with the same MetricType
If not, HandlingRtr creates a route table entry for RteMsg.Addr as of the RteMsg, matching RteMsg.Addr. If not, HandlingRtr creates a
described in Section 6.2. Otherwise, HandlingRtr compares the route table entry for RteMsg.Addr as described in Section 6.2.
incoming routing information in RteMsg against the already stored Otherwise, HandlingRtr compares the incoming routing information in
routing information in the route table entry (Route) for RteMsg.Addr, RteMsg against the already stored routing information in the route
as described below. table entry (Route) for RteMsg.Addr, as described below.
Suppose Route[RteMsg.Addr] uses the same metric type as the incoming Suppose Route[RteMsg.Addr] uses the same metric type as the incoming
routing information, and contains Route.SeqNum, Route.Metric, and routing information, and the route entry contains Route.SeqNum,
Route.Broken. Suppose the incoming routing information for Route.Metric, and Route.Broken. Suppose the incoming routing
Route.Addr is RteMsg.SeqNum and RteMsg.Metric. Define RteMsg.Cost to information for Route.Addr is RteMsg.SeqNum and RteMsg.Metric.
be (RteMsg.Metric + Cost(L)), where L is the incoming link. The Define RteMsg.Cost to be (RteMsg.Metric + Cost(L)), where L is the
incoming routing information is compared as follows: incoming link. The incoming routing information is classified as
follows:
1. Stale:: RteMsg.SeqNum < Route.SeqNum : 1. Stale:: RteMsg.SeqNum < Route.SeqNum :
If RteMsg.SeqNum < Route.SeqNum the incoming information is stale. If RteMsg.SeqNum < Route.SeqNum the incoming information is stale.
Using stale routing information is not allowed, since that might Using stale routing information is not allowed, since that might
result in routing loops. HandlingRtr MUST NOT update the route result in routing loops. HandlingRtr MUST NOT update the route
table entry using the routing information for RteMsg.Addr. table entry using the routing information for RteMsg.Addr.
2. Unsafe against loops:: (TRUE != LoopFree (RteMsg, Route)) : 2. Unsafe against loops:: (TRUE != LoopFree (RteMsg, Route)) :
If RteMsg is not Stale (as in (1) above), RteMsg.Cost is next If RteMsg is not Stale (as in (1) above), RteMsg.Cost is next
considered to insure loop freedom. If (TRUE != LoopFree (RteMsg, considered to insure loop freedom. If (TRUE != LoopFree (RteMsg,
Route)) (see Section 5.6), then the incoming RteMsg information is Route)) (see Section 5.6), then the incoming RteMsg information is
not guaranteed to prevent routing loops, and it MUST NOT be used not guaranteed to prevent routing loops, and it MUST NOT be used
to update any route table entry. to update any route table entry.
3. Longer:: 3. More costly::
(RteMsg.Cost >= Route.Metric) && (Route.Broken==FALSE) (RteMsg.Cost >= Route.Metric) && (Route.Broken==FALSE)
When RteMsg.SeqNum is the same as in a valid route table entry, When RteMsg.SeqNum is the same as in a valid route table entry,
and LoopFree (RteMsg, Route) assures loop freedom, incoming and LoopFree (RteMsg, Route) assures loop freedom, incoming
information still does not offer any improvement over the existing information still does not offer any improvement over the existing
route table information if RteMsg.Cost >= Route.Metric. Using route table information if RteMsg.Cost >= Route.Metric. Using
such incoming routing information to update a route table entry is such incoming routing information to update a route table entry is
not recommended. not recommended.
4. Offers improvement:: 4. Offers improvement::
Incoming routing information that does not match any of the above Incoming routing information that does not match any of the above
skipping to change at page 20, line 7 skipping to change at page 20, line 24
{(RteMsg.SeqNum == Route.SeqNum) AND {(RteMsg.SeqNum == Route.SeqNum) AND
[(RteMsg.Cost < Route.Metric) OR [(RteMsg.Cost < Route.Metric) OR
((Route.Broken == TRUE) && LoopFree (RteMsg, Route))]} ((Route.Broken == TRUE) && LoopFree (RteMsg, Route))]}
The above logic corresponds to placing the following conditions on The above logic corresponds to placing the following conditions on
the incoming route update (compared to the existing route table the incoming route update (compared to the existing route table
entry) before it can be used: entry) before it can be used:
* it is more recent, or * it is more recent, or
* it is not stale and is shorter, or * it is not stale and is less costly, or
* it can safely repair a broken route. * it can safely repair a broken route.
6.2. Applying Route Updates To Route Table Entries 6.2. Applying Route Updates To Route Table Entries
To apply the route update, the route table entry is populated with To apply the route update, the route table entry is populated with
the following information: the following information:
o Route.Address := RteMsg.Addr o Route.Address := RteMsg.Addr
skipping to change at page 21, line 9 skipping to change at page 21, line 25
With these assignments to the route table entry, a route has been With these assignments to the route table entry, a route has been
made available, and the route can be used to send any buffered data made available, and the route can be used to send any buffered data
packets and subsequently to forward any incoming data packets for packets and subsequently to forward any incoming data packets for
Route.Addr. An updated route entry also fulfills any outstanding Route.Addr. An updated route entry also fulfills any outstanding
route discovery (RREQ) attempts for Route.Addr. route discovery (RREQ) attempts for Route.Addr.
6.3. Route Table Entry Timeouts 6.3. Route Table Entry Timeouts
During normal operation, AODVv2 does not require any explicit During normal operation, AODVv2 does not require any explicit
timeouts to manage the lifetime of a route. However, the route table 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 entry MUST be examined before using it to forward a packet, as
discussed in Section 8.1. Any required expiry or deletion can occur discussed in Section 8.1. Any required expiry or deletion can occur
at that time. Nevertheless, it is permissible to implement timers at that time. Nevertheless, it is permissible to implement timers
and timeouts to achieve the same effect. and timeouts to achieve the same effect.
At any time, the route table can be examined and route table entries 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 can be expunged according to their current state at the time of
examination, as follows. examination, as follows.
o An Active route MUST NOT be expunged. o An Active route MUST NOT be expunged.
skipping to change at page 22, line 4 skipping to change at page 22, line 20
RREQ messages are typically multicast to solicit a RREP, whereas RREP RREQ messages are typically multicast to solicit a RREP, whereas RREP
is typically unicast as a response to RREQ. is typically unicast as a response to RREQ.
When an AODVv2 router needs to forward a data packet from a node 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 (OrigNode) in its set of router clients, and it does not have a
forwarding route toward the packet's IP destination address forwarding route toward the packet's IP destination address
(TargNode), the AODVv2 router (RREQ_Gen) generates a RREQ (as (TargNode), the AODVv2 router (RREQ_Gen) generates a RREQ (as
described in Section 7.3) to discover a route toward TargNode. described in Section 7.3) to discover a route toward TargNode.
Subsequently RREQ_Gen awaits reception of an RREP message (see Subsequently RREQ_Gen awaits reception of an RREP message (see
Section 7.4) or other route table update (see Section 6.2) to Section 7.4) or other route table update (see Section 6.2) to
establish a route toward TargNode. The RREQ message contains routing establish a route toward TargNode. Optionally, RREQ_Gen MAY specify
information to enable RREQ recipients to route packets back to that only the router serving TargNode is allowed to generate an RREP
OrigNode, and the RREP message contains routing information enabling message, by including the DestOnly message TLV (see Section 7.3).
RREP recipients to route packets to 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.
7.1. Route Discovery Retries and Buffering 7.1. Route Discovery Retries and Buffering
After issuing a RREQ, as described above RREQ_Gen awaits a RREP After issuing a RREQ, as described above RREQ_Gen awaits a RREP
providing a bidirectional route toward Target Node. If the RREP is providing a bidirectional route toward Target Node. If the RREP is
not received within RREQ_WAIT_TIME, RREQ_Gen may retry the Route not received within RREQ_WAIT_TIME, RREQ_Gen may retry the Route
Discovery by generating another RREQ. Route Discovery SHOULD be Discovery by generating another RREQ. Route Discovery SHOULD be
considered to have failed after DISCOVERY_ATTEMPTS_MAX and the considered to have failed after DISCOVERY_ATTEMPTS_MAX and the
corresponding wait time for a RREP response to the final RREQ. After corresponding wait time for a RREP response to the final RREQ. After
the attempted Route Discovery has failed, RREQ_Gen MUST wait at least the attempted Route Discovery has failed, RREQ_Gen MUST wait at least
RREQ_HOLDDOWN_TIME before attempting another Route Discovery to the RREQ_HOLDDOWN_TIME before attempting another Route Discovery to the
same destination. same destination.
To reduce congestion in a network, repeated attempts at route To reduce congestion in a network, repeated attempts at route
discovery for a particular Target Node SHOULD utilize an binary discovery for a particular Target Node SHOULD utilize a binary
exponential backoff. exponential backoff.
Data packets awaiting a route SHOULD be buffered by RREQ_Gen. This Data packets awaiting a route SHOULD be buffered by RREQ_Gen. This
buffer SHOULD have a fixed limited size (BUFFER_SIZE_PACKETS or buffer SHOULD have a fixed limited size (BUFFER_SIZE_PACKETS or
BUFFER_SIZE_BYTES). Determining which packets to discard first is a BUFFER_SIZE_BYTES). Determining which packets to discard first is a
matter of policy at each AODVv2 router; in the absence of policy matter of policy at each AODVv2 router; in the absence of policy
constraints, by default older data packets SHOULD be discarded first. constraints, by default older data packets SHOULD be discarded first.
Buffering of data packets can have both positive and negative effects Buffering of data packets can have both positive and negative effects
(albeit usually positive). Nodes without sufficient memory available (albeit usually positive). Nodes without sufficient memory available
for buffering SHOULD be configured to disable buffering by for buffering SHOULD be configured to disable buffering by
skipping to change at page 23, line 8 skipping to change at page 23, line 25
the ICMP is sent over the interface from which OrigNode sent the the ICMP is sent over the interface from which OrigNode sent the
packet to the AODVv2 router. packet to the AODVv2 router.
7.2. RteMsg Structure 7.2. RteMsg Structure
RteMsgs have the following general format: RteMsgs have the following general format:
+---------------------------------------------------------------+ +---------------------------------------------------------------+
| RFC 5444 Message Header (optionally, with MsgTLVs) | | RFC 5444 Message Header (optionally, with MsgTLVs) |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
| AddrBlk[1,2]:= [OrigNode,TargNode] | | AddrBlk := {OrigNode,TargNode} |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
| AddrBlk.PrefixLength[OrigNode OR TargNode] (Optional) | | AddrBlk.PrefixLength[OrigNode OR TargNode] (Optional) |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
| SeqNumTLV [OrigNode AND/OR TargNode] | | OrigSeqNumTLV AND/OR TargSeqNumTLV |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
| MetricTLV [OrigNode, TargNode] (Optional) | | MetricTLV {OrigNode, TargNode} (Optional) |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
| Added Node Address Block (Optional) | | Added Node Address Block (Optional) |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
| Added Node Address SeqNumTLV | | Added Node Address SeqNumTLV |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
| Added Node Address MetricTLV[MetricType] | | Added Node Address MetricTLV[MetricType] |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
Figure 1: RREQ and RREP (RteMsg) message structure Figure 1: RREQ and RREP (RteMsg) message structure
skipping to change at page 23, line 49 skipping to change at page 24, line 22
* MetricType TLV (Metric Type for Metric AddrTLV) * MetricType TLV (Metric Type for Metric AddrTLV)
* AckReq TLV (Acknowledgement Requested) * AckReq TLV (Acknowledgement Requested)
AddrBlk AddrBlk
This Address Block contains the IP addresses for RREQ Originating This Address Block contains the IP addresses for RREQ Originating
and Target Node (OrigNode and TargNode). For both RREP and RREQ, and Target Node (OrigNode and TargNode). For both RREP and RREQ,
OrigNode and TargNode are as identified in the context of the RREQ OrigNode and TargNode are as identified in the context of the RREQ
message originator. message originator.
SeqNumTLV (Sequence Number AddrTLV) OrigSeqNum AND/OR TargSeqNum AddrTLV
This Address Block TLV is REQUIRED and carries the destination At least one of OrigSeqNum or TargSeqNum Address Block TLV is
sequence numbers associated with either OrigNode or TargNode or REQUIRED and carries the destination sequence numbers associated
both. with either OrigNode or TargNode. Both may appear when SeqNum
information is available for both OrigNode and TargNode.
(Optional) Added Node AddrBlk (Optional) Added Node AddrBlk
AODVv2 allows the inclusion of routing information for other nodes AODVv2 allows the inclusion of routing information for other nodes
in addition to OrigNode and TargNode. in addition to OrigNode and TargNode.
(Optional) SeqNum AddrTLV If the Added Node AddrBlk is present, the (Optional) SeqNum AddrTLV If the Added Node AddrBlk is present, the
SeqNum AddrTLV is REQUIRED, to carry the destination sequence SeqNum AddrTLV is REQUIRED, to carry the destination sequence
numbers associated with the Added Nodes. numbers associated with the Added Nodes.
(Optional) Metric AddrTLV If the Added Node AddrBlk is present, this (Optional) Metric AddrTLV If the Added Node AddrBlk is present, this
AddrTLV is REQUIRED, to carry the metric information associated AddrTLV is REQUIRED, to carry the metric information associated
with the Added Nodes. See Below. with the Added Nodes. See below.
RteMsgs carry information about OrigNode and TargNode. Since their
addresses may appear in arbitrary order within the RFC 5444 AddrBlk,
the OrigSeqNum and/or TargSeqNum TLVs must be used to distinguish the
nature of the node addresses present in the AddrBlk. In each RteMsg,
at least one of OrigSeqNumTLV or TargSeqNumTLV MUST appear. Both
TLVs MAY appear in the same RteMsg, but each one MUST NOT appear more
than once, because there is only one OrigNode and only one TargNode
address in the AddrBlk.
If the OrigSeqNum TLV appears, then the address range for the
OrigSeqNum TLV MUST be limited to a single position in the AddrBlk.
That position is used as the OrigNdx, identifying the OrigNode
address. The other address in the AddrBlk is, by elimination, the
TargNode address, and TargNdx is set appropriately.
Otherwise, if the TargSeqNum TLV appears, then the address range for
the TargSeqNum TLV MUST be limited to a single position in the
AddrBlk. That position is used as the TargNdx, identifying the
TargNode address. The other address in the AddrBlk is, by
elimination, the OrigNode address, and OrigNdx is set appropriately.
7.3. RREQ Generation 7.3. RREQ Generation
The AODVv2 router generating the RREQ (RREQ_Gen) on behalf of its The AODVv2 router generating the RREQ (RREQ_Gen) on behalf of its
client OrigNode follows the steps in this section. OrigNode MUST be client OrigNode follows the steps in this section. OrigNode MUST be
a unicast address. The order of protocol elements is illustrated a unicast address. The order of protocol elements is illustrated
schematically in Figure 1. schematically in Figure 1.
1. RREQ_Gen MUST increment its SeqNum by one (1) according to the 1. RREQ_Gen MUST increment its SeqNum by one (1) according to the
rules specified in Section 5.5. This assures that each node rules specified in Section 5.5. This assures that each node
receiving the RREQ will update its route table using the receiving the RREQ will update its route table using the
information in the RREQ. information in the RREQ.
2. If RREQ_Gen requires that only the router providing connectivity 2. If RREQ_Gen requires that only the router providing connectivity
to TargNode is allowed to generate a RREP, then RREQ_Gen to TargNode is allowed to generate a RREP, then RREQ_Gen includes
includes the "Destination RREP Only" (DestOnly) TLV as part of the "Destination RREP Only" (DestOnly) TLV as part of the RFC
the RFC 5444 message header. This also assures that RREP_Gen 5444 message header. This also assures that RREP_Gen increments
increments its sequence number. Otherwise, (if the optional its sequence number. Otherwise, (if the optional behavior is
behavior is enabled) other AODVv2 routers MAY respond to the enabled) other AODVv2 routers MAY respond to the RREQ if they
RREQ if they have an valid route to TargNode (see Section 13.2). have a valid route to TargNode (see Section 13.2).
3. <msg-hop-limit> SHOULD be set to MAX_HOPCOUNT. 3. <msg-hop-limit> SHOULD be set to MAX_HOPCOUNT.
4. <msg-hop-count>, if included, MUST be set to 0. 4. <msg-hop-count>, if included, MUST be set to 0.
* This RFC 5444 constraint causes the typical RREQ payload to * This RFC 5444 constraint causes the typical RREQ payload to
incur additional enlargement (otherwise, <msg-hop-count> incur additional enlargement (otherwise, <msg-hop-count> could
could often be used as the metric). often be used as the metric).
5. RREQ.AddrBlk[1] := OrigNode.Addr 5. RREQ.AddrBlk := {OrigNode.Addr, TargNode.Addr}
6. RREQ.AddrBlk[2] := TargNode.Addr Let OrigNodeNdx and TargNodeNdx denote the indexes of OrigNode
and TargNode respectively in the RREQ.AddrBlk list.
7. If Route[OrigNode].PrefixLength/8 is equal to the number of 6. If Route[OrigNode].PrefixLength/8 is equal to the number of bytes
bytes in the addresses of the RREQ (4 for IPv4, 16 for IPv6), in the addresses of the RREQ (4 for IPv4, 16 for IPv6), then no
then no <prefix-length> is included with the RREQ.AddrBlk. <prefix-length> is included with the RREQ.AddrBlk. Otherwise,
Otherwise, RREQ.PrefixLength[OrigNode] := RREQ.PrefixLength[OrigNodeNdx] := Route[OrigNode].PrefixLength
Route[OrigNode].PrefixLength according to the rules of RFC 5444 according to the rules of RFC 5444 AddrBlk encoding.
AddrBlk encoding.
8. RREQ.AddrTLV.SeqNum[1] := RREQ_Gen SeqNum 7. RREQ.OrigSeqNumTLV[OrigNodeNdx] := RREQ_Gen SeqNum
9. RREQ.AddrTLV.SeqNum[2] := TargNode SeqNum (only if known) 8. RREQ.TargSeqNumTLV[TargNodeNdx] := TargNode SeqNum (only if
known)
If a previous value of the TargNode's SeqNum is known (e.g., RREQ_Gen SHOULD include TargNode's SeqNum, if a previous value of
from an invalid routing table entry using longest-prefix the TargNode's SeqNum is known (e.g., from an invalid routing
matching), RREQ_Gen SHOULD include TargNode's SeqNum. If table entry using longest-prefix matching). If TargNode's SeqNum
TargNode's SeqNum is not included, AODVv2 routers handling the is not included, AODVv2 routers handling the RREQ assume that
RREQ assumed that RREQ_Gen does not have that information. If RREQ_Gen does not have that information. If ENABLE_IRREP is
ENABLE_IRREP is enabled, then any route to TargNode will satisfy enabled, then any route to TargNode will satisfy the RREQ
the RREQ [I-D.perkins-irrep]. [I-D.perkins-irrep].
10. RREQ.MetricTLV[1] := Route[OrigNode].Metric 9. RREQ.MetricTLV[1] := Route[OrigNode].Metric
An example RREQ message format is illustrated in Appendix A.1. An example RREQ message format is illustrated in Appendix A.1.
7.4. RREP Generation 7.4. RREP Generation
This section specifies the generation of an RREP by an AODVv2 router This section specifies the generation of an RREP by an AODVv2 router
(RREP_Gen) that provides connectivity for the Target Node (TargNode) (RREP_Gen) that provides connectivity for the Target Node (TargNode)
of a RREQ, thus satisfying the routing requirement for packets to of a RREQ, thus enabling the establishment of a route between
flow between OrigNode and TargNode. If TargNode is not a unicast IP OrigNode and TargNode. If TargNode is not a unicast IP address the
address the RREP MUST NOT be generated, and processing for the RREQ RREP MUST NOT be generated, and processing for the RREQ is complete.
is complete. Before transmitting a RREP, the routing information of Before transmitting a RREP, the routing information of the RREQ is
the RREQ is processed as specified in Section 6.2. The basic format processed as specified in Section 6.2; after such processing,
of an RREP conforms to the structure for RteMsgs as shown in RREP_Gen has an updated route to OrigNode as well as TargNode. The
Figure 1. basic format of an RREP conforms to the structure for RteMsgs as
shown in Figure 1.
RREP_Gen generates the RREP as follows: RREP_Gen generates the RREP as follows:
1. RREP_Gen checks the RREQ against recently received RREQ 1. RREP_Gen checks the RREQ against recently received RREQ
information as specified in Section 7.6. If a previously information as specified in Section 7.6. If a previously
received RREQ has made the information in the incoming RREQ to received RREQ has made the information in the incoming RREQ to
be useless, no RREP is generated and processing is complete. be redundant, no RREP is generated and processing is complete.
2. RREP_Gen MUST increment its SeqNum by one (1) according to the 2. RREP_Gen MUST increment its SeqNum by one (1) according to the
rules specified in Section 5.5. rules specified in Section 5.5.
3. RREP.AddrBlk[OrigNode] := RREQ.AddrBlk[OrigNode] 3. RREP.AddrBlk := {OrigNode.Addr, TargNode.Addr}
4. RREP.AddrBlk[TargNode] := RREQ.AddrBlk[TargNode] Let OrigNodeNdx and TargNodeNdx denote the indexes of OrigNode
and TargNode respectively in the RREQ.AddrBlk list.
5. RREP.SeqNumTLV[OrigNode] := RREQ.SeqNumTLV[OrigNode] 4. RREP.OrigSeqNumTLV[OrigNodeNdx] := Route[OrigNode].Seqnum
6. RREP.SeqNumTLV[TargNode] := RREP_Gen's SeqNum 5. RREP.TargSeqNumTLV[TargNodeNdx] := RREP_Gen's SeqNum
7. If Route[TargNode].PrefixLength/8 is equal to the number of 6. If Route[TargNode].PrefixLength/8 is equal to the number of
bytes in the addresses of the RREQ (4 for IPv4, 16 for IPv6), bytes in the addresses of the RREQ (4 for IPv4, 16 for IPv6),
then no <prefix-length> is included with the RREP.AddrBlk. then no <prefix-length> is included with the RREP.AddrBlk.
Otherwise, RREP.PrefixLength[TargNode] := Otherwise, RREP.PrefixLength[TargNodeNdx] :=
Route[TargNode].PrefixLength according to the rules of RFC 5444 Route[TargNode].PrefixLength according to the rules of RFC 5444
AddrBlk encoding. AddrBlk encoding.
8. RREP.MetricType[TargNode] := Route[TargNode].MetricType 7. RREP.MetricType[TargNodeNdx] := Route[TargNode].MetricType
9. RREP.Metric[TargNode] := Route[TargNode].Metric 8. RREP.Metric[TargNodeNdx] := Route[TargNode].Metric
10. <msg-hop-count>, if included, MUST be set to 0. 9. <msg-hop-count>, if included, MUST be set to 0.
11. <msg-hop-limit> SHOULD be set to RREQ.<msg-hop-count>. 10. <msg-hop-limit> SHOULD be set to RREQ.<msg-hop-count>.
12. IP.DestinationAddr := Route[OrigNode].NextHop 11. IP.DestinationAddr := Route[OrigNode].NextHop
An example message format for RREP is illustrated in Appendix A.2. An example message format for RREP is illustrated in Appendix A.2.
7.5. Handling a Received RteMsg 7.5. Handling a Received RteMsg
Before an AODVv2 router (HandlingRtr) can make use of a received Before an AODVv2 router can make use of a received RteMsg (i.e., RREQ
RteMsg (i.e., RREQ or RREP), it first must verify that the RteMsg is or RREP), the router first must verify that the RteMsg is permissible
permissible according to the following steps. For RREQ, according to the following steps. OrigNodeNdx and TargNodeNdx are
RteMsg.Metric is MetricTLV[OrigNode]. For RREP, RteMsg.Metric is set according to the rules in Section 7.2. For RREQ, RteMsg.Metric
MetricTLV[TargNode]. is MetricTLV[OrigNodeNdx]. For RREP, RteMsg.Metric is
MetricTLV[TargNodeNdx]. In this section (unless qualified by
additional description such as "upstream" or "neighboring") all
occurrences of the term "router" refer to the AODVv2 router handling
the received RteMsg.
1. HandlingRtr MUST handle RteMsgs only from adjacent routers as 1. A router MUST handle RteMsgs only from neighbors as specified in
specified in Section 5.4. RteMsgs from other sources MUST be Section 5.4. RteMsgs from other sources MUST be disregarded.
disregarded.
2. HandlingRtr examines the RteMsg to ascertain that it contains the 2. The router examines the RteMsg to ascertain that it contains the
required information: TargNode.Addr, OrigNode.Addr, required information: <msg-hop-limit>, TargNode.Addr,
RteMsg.Metric, RteMsg.SeqNum and <msg-hop-limit>. If the OrigNode.Addr, RteMsg.Metric, and either RteMsg.OrigSeqNum or
required information does not exist, the message is disregarded. RteMsg.TargSeqNum. If the required information does not exist,
the message is disregarded.
3. HandlingRtr checks that OrigNode.Addr and TargNode.Addr are valid 3. The router checks that OrigNode.Addr and TargNode.Addr are valid
routable unicast addresses. If not, the message is disregarded. routable unicast addresses. If not, the message is disregarded.
4. HandlingRtr checks the Metric Type MsgTLV (if present) to assure 4. The router checks the Metric Type MsgTLV (if present) to assure
that the Metric Type associated with the Metric AddrTLV that the Metric Type associated with the Metric AddrTLV
information in the RREQ or RREP is known, and that Cost(L) can be information in the RREQ or RREP is known, and that Cost(L) can be
computed, where 'L' is the incoming link. If not, the message is computed, where 'L' is the incoming link. If not, the message is
disregarded. disregarded.
* DISCUSSION: or, can change the AddrBlk metric to use HopCount, * DISCUSSION: or, can change the AddrBlk metric to use HopCount,
e.g., measured from <msg-hop-count>. e.g., measured from <msg-hop-count>.
5. If (MAX_METRIC[RteMsg.MetricType] - Cost(L)) <= RteMsg.Metric, 5. If (MAX_METRIC[RteMsg.MetricType] - Cost(L)) <= RteMsg.Metric,
the RteMsg is disregarded, where Cost(L) denotes the cost of the RteMsg is disregarded, where Cost(L) denotes the cost of
traversing the incoming link (i.e., as measured by the network traversing the incoming link (i.e., as measured by the network
interface receiving the incoming RteMsg). interface receiving the incoming RteMsg).
An AODVv2 router (HandlingRtr) handles a permissible RteMsg according An AODVv2 router handles a permissible RteMsg according to the
to the following steps. following steps.
1. HandlingRtr MUST process the routing information for OrigNode and 1. The router MUST process the routing information for OrigNode and
TargNode contained in the RteMsg as specified in Section 6.1. TargNode contained in the RteMsg as specified in Section 6.1.
2. HandlingRtr MAY process AddedNode routing information (if 2. The router MAY process AddedNode routing information (if present)
present) as specified in Section 13.7.1. Otherwise, if AddedNode as specified in Section 13.7.1. Otherwise, if AddedNode
information is not processed, it MUST be deleted. information is not processed, it MUST be deleted, because it may
no longer be accurate as a route update to any upstream router.
3. If RteMsg.<msg-hop-limit> is zero (0), no further action is 3. If RteMsg.<msg-hop-limit> is zero (0), no further action is
taken. Otherwise, HandlingRtr MUST decrement RteMsg.<msg-hop- taken, and the RteMsg is not retransmitted. Otherwise, the
limit>. router MUST decrement RteMsg.<msg-hop-limit>.
4. If the RteMsg.<msg-hop-count> is present, and <msg-hop-count> == 4. If the RteMsg.<msg-hop-count> is present, and <msg-hop-count> ==
MAX_HOPCOUNT, then no further action is taken. Otherwise, MAX_HOPCOUNT, then no further action is taken. Otherwise, the
HandlingRtr MUST increment RteMsg.<msg-hop-count> router MUST increment RteMsg.<msg-hop-count>
5. By sending a RteMsg, HandlingRtr advertises that it will route Further actions to transmit an updated RteMsg depend upon whether the
for addresses contained in the RteMsg based on the information incoming RteMsg is an RREP or an RREQ.
enclosed. HandlingRtr MAY choose not to send the RteMsg, though
not resending the RteMsg could decrease connectivity in the
network or result in nonoptimal paths. The circumstances under
which HandlingRtr might choose not to re-transmit a RteMsg are
not specified in this document. Some examples might include the
following:
* HandlingRtr is already heavily loaded and does not want to 7.5.1. Additional Handling for Incoming RREQ
advertise routing for more traffic
* HandlingRtr recently transmitted identical routing information o By sending a RREQ, a router advertises that it will route for
(e.g. in a RteMsg advertising the same metric) Section 7.6 addresses contained in the RteMsg based on the information
enclosed. The router MAY choose not to send the RREQ, though not
resending the RREQ could decrease connectivity in the network or
result in nonoptimal paths. The circumstances under which a
router might choose not to re-transmit a RREQ are not specified in
this document. Some examples might include the following:
* HandlingRtr is low on energy and has to reduce energy expended * The router is already heavily loaded and does not want to
for sending protocol messages or packet forwarding advertise routing for more traffic
Unless HandlingRtr is prepared to send a RteMsg, it halts * The router recently transmitted identical routing information
processing. Otherwise, further actions to transmit an updated (e.g. in a RREQ advertising the same metric) Section 7.6
RteMsg depend upon whether the incoming RteMsg is an RREP or an
RREQ.
7.5.1. Additional Handling for Incoming RREQ * The router is low on energy and has to reduce energy expended
for sending protocol messages or packet forwarding
o If the upstream router is in the Blacklist, and Current_Time < Unless the router is prepared to send a RREQ, it halts processing.
Blacklist.RemoveTime, then HandlingRtr MUST NOT transmit any
outgoing RteMsg, and processing is complete. o If the upstream router sending a RREQ is in the Blacklist, and
Current_Time < Blacklist.RemoveTime, then the router receiving
that RREQ MUST NOT transmit any outgoing RteMsg, and processing is
complete.
o Otherwise, if the upstream router is in the Blacklist, and o Otherwise, if the upstream router is in the Blacklist, and
Current_Time >= Blacklist.RemoveTime, then the upstream router Current_Time >= Blacklist.RemoveTime, then the upstream router
SHOULD be removed from the Blacklist, and message processing SHOULD be removed from the Blacklist, and message processing
continued. continued.
o The incoming RREQ MUST be checked against previously received o The incoming RREQ MUST be checked against previously received
information from the RREQ Table Section 7.6. If the information information from the RREQ Table Section 7.6. If the information
in the incoming RteMsg is useless, then then no further action is in the incoming RteMsg is redundant, then then no further action
taken. is taken.
o If TargNode is a client of HandlingRtr, then HandlingRtr generates o If TargNode is a client of the router receiving the RREQ, then the
a RREP message as specified in Section 7.4, and subsequently router generates a RREP message as specified in Section 7.4, and
processing for the RREQ is complete. Otherwise, processing subsequently processing for the RREQ is complete. Otherwise,
continues as follows. processing continues as follows.
o RREQ.MetricType := Route[OrigNode].MetricType o RREQ.MetricType := Route[OrigNode].MetricType
o RREQ.MetricTLV[OrigNode] := Route[OrigNode].Metric o RREQ.MetricTLV[OrigNodeNdx] := Route[OrigNode].Metric
o The RREQ (with updated fields as specified above>) SHOULD be sent o The RREQ (with updated fields as specified above>) SHOULD be sent
to the IP multicast address LL-MANET-Routers [RFC5498]. If the to the IP multicast address LL-MANET-Routers [RFC5498]. If the
RREQ is unicast, the IP.DestinationAddress is set to RREQ is unicast, the IP.DestinationAddress is set to
Route[RREQ.TargNode].NextHopAddress. Route[RREQ.TargNode].NextHopAddress.
7.5.2. Additional Handling for Incoming RREP 7.5.2. Additional Handling for Incoming RREP
As before, OrigNode and TargNode are named in the context of the As before, OrigNode and TargNode are named in the context of RREQ_Gen
router (i.e., RREQ_Gen) originating the RREQ for which the RREP was (i.e., the router originating the RREQ for which the RREP was
generated (see Table 1). generated) (see Table 1). OrigNodeNdx and TargNodeNdx are set
according to the rules in Section 7.2.
o If no forwarding route exists to OrigNode, then a RERR SHOULD be o If no forwarding route exists to OrigNode, then a RERR SHOULD be
transmitted to RREP.AddrBlk[TargNode]. Otherwise, if HandlingRtr transmitted to RREP.AddrBlk[TargNodeNdx]. Otherwise, if
is not RREQ_Gen then the outgoing RREP is sent to the HandlingRtr is not RREQ_Gen then the outgoing RREP is sent to the
Route.NextHopAddress for the RREP.AddrBlk[OrigNode]. Route.NextHopAddress for the RREP.AddrBlk[OrigNodeNdx].
o If HandlingRtr is RREQ_Gen then the RREP satisfies RREQ_Gen's o If HandlingRtr is RREQ_Gen then the RREP satisfies RREQ_Gen's
earlier RREQ, and RREP processing is completed. Any packets earlier RREQ, and RREP processing is completed. Any packets
buffered for OrigNode should be transmitted. buffered for OrigNode should be transmitted.
7.6. Suppressing Useless RteMsgs 7.6. Suppressing Redundant RREQ messages
Since RREQ messages are multicast, there are common circumstances in Since RREQ messages are multicast, there are common circumstances in
which an AODVv2 router might respond by sending out a RteMsgs (RREQ which an AODVv2 router might transmit a redundant response (RREQ or
or RREQ) that is useless, given the information transmitted after RREP), duplicating the information transmitted in response to some
receiving in some other recent RteMsg (see Section 5.7). Before other recent RREQ (see Section 5.7). Before responding, an AODVv2
transmitting a RteMsg, AODVv2 routers MUST suppress such useless router MUST suppress such redundant RREQ messages. This is done by
RteMsgs; this is done by checking the list of recently received checking the list of recently received RREQs to determine whether the
RteMsgs to determine whether the incoming RteMsg contains useful new incoming RREQ contains new information, as follows:
information, as follows:
o The AODVv2 router searches the RteMsg Table for recent entries o The AODVv2 router searches the RREQ Table for recent entries with
with the same OrigNode, TargNode, and Metric Type. If there is no the same OrigNode, TargNode, and Metric Type. If there is no such
such entry, the incoming RteMsg message is not suppressed. A new entry, the incoming RREQ message is not suppressed. A new entry
entry for the incoming RteMsg information is created in the RteMsg for the incoming RREQ is created in the RREQ Table.
Table.
o If there is such an entry, and the incoming RteMsg has a newer o If there is such an entry, and the incoming RREQ has a newer
sequence number, the incoming RteMsg is not suppressed, and the sequence number, the incoming RREQ is not suppressed, and the
existing table entry MUST be updated to reflect the new Sequence existing table entry MUST be updated to reflect the new Sequence
Number and Metric. Number and Metric.
o Similarly, if the Sequence Numbers are the same, and the incoming o Similarly, if the Sequence Numbers are the same, and the incoming
RteMsg offers a better Metric, the incoming RteMsg not suppressed, RREQ offers a better Metric, the incoming RREQ is not suppressed,
and the RteMsg Table entry MUST be updated to reflect the new and the RREQ Table entry MUST be updated to reflect the new
Metric. Metric.
o Otherwise, the incoming RteMsg is suppressed. o Otherwise, the incoming RREQ is suppressed.
8. Route Maintenance 8. Route Maintenance and RERR Messages
AODVv2 routers attempt to maintain active routes. When a routing AODVv2 routers attempt to maintain active routes. When a routing
problem is encountered, an AODVv2 router (denoted RERR_Gen) attempts problem is encountered, an AODVv2 router (denoted RERR_Gen) attempts
to quickly notify upstream routers. Two kinds of routing problems to quickly notify upstream routers. Two kinds of routing problems
may trigger generation of a RERR message. The first case happens 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 when the router receives a packet but does not have a route for the
destination of the packet. The second case happens immediately upon destination of the packet. The second case happens immediately upon
detection of a broken link (see Section 8.2) of an Active route, to detection of a broken link (see Section 8.2) of an Active route, to
quickly notify upstream AODVv2 routers that that route is no longer quickly notify upstream AODVv2 routers that that route is no longer
available. When the RERR message is generated, it MUST be the only available.
message in the RFC 5444 packet.
8.1. Maintaining Route Lifetimes During Packet Forwarding 8.1. Maintaining Route Lifetimes During Packet Forwarding
Before using a route to forward a packet, an AODVv2 router MUST check Before using a route to forward a packet, an AODVv2 router MUST check
the status of the route as follows. the status of the route as follows.
If the route is marked has been marked as Broken, it cannot be If the route is marked has been marked as Broken, it cannot be
used for forwarding. used for forwarding.
If Current_Time > Route.ExpirationTime, the route table entry has If Current_Time > Route.ExpirationTime, the route table entry has
expired. expired, and cannot be used for forwarding.
Similarly, if (Route.ExpirationTime == MAXTIME), and if Similarly, if (Route.ExpirationTime == MAXTIME), and if
(Current_Time - Route.LastUsed) > (ACTIVE_INTERVAL + (Current_Time - Route.LastUsed) > (ACTIVE_INTERVAL +
MAX_IDLETIME), the route has expired. MAX_IDLETIME), the route has expired, and cannot be used for
forwarding.
Furthermore, if Current_Time - Route.LastUsed > Furthermore, if Current_Time - Route.LastUsed >
(MAX_SEQNUM_LIFETIME), the route table entry MUST be expunged. (MAX_SEQNUM_LIFETIME), the route table entry MUST be expunged.
If any of the above route error conditions hold true, the route If any of the above route error conditions hold true, the route
cannot be used to forward the packet, and an RERR message MUST be cannot be used to forward the packet, and an RERR message MUST be
generated (see Section 8.3). generated (see Section 8.3).
Otherwise, Route.LastUsed := Current_Time, and the packet is Otherwise, Route.LastUsed := Current_Time, and the packet is
forwarded to the route's next hop. forwarded to the route's next hop.
skipping to change at page 30, line 42 skipping to change at page 31, line 43
mechanisms, including: mechanisms, including:
o Neighborhood discovery [RFC6130] o Neighborhood discovery [RFC6130]
o Route timeout o Route timeout
o Lower layer trigger that a link is broken o Lower layer trigger that a link is broken
o TCP timeouts o TCP timeouts
o Promiscuous listening
o Other monitoring mechanisms or heuristics o Other monitoring mechanisms or heuristics
If a next-hop AODVv2 router has become unreachable, RERR_Gen follows If a next-hop AODVv2 router has become unreachable, RERR_Gen follows
the procedures specified in Section 8.3.2. the procedures specified in Section 8.3.2.
8.3. RERR Generation 8.3. RERR Generation
An RERR message is generated by a AODVv2 router (in this section, An RERR message is generated by a AODVv2 router (i.e., RERR_Gen) in
called RERR_Gen) in order to notify upstream routers that packets order to notify upstream routers that packets cannot be delivered to
cannot be delivered to certain destinations. An RERR message has the certain destinations. An RERR message has the following general
following general structure: structure:
+---------------------------------------------------------------+ +---------------------------------------------------------------+
| RFC 5444 Message Header <msg-hoplimit> <msg-hopcount> | | RFC 5444 Message Header <msg-hoplimit> <msg-hopcount> |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
| UnreachableNode AddrBlk (Unreachable Node addresses) | | UnreachableNode AddrBlk (Unreachable Node addresses) |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
| UnreachableNode SeqNum AddrBlk TLV | | UnreachableNode SeqNum AddrBlk TLV |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
Figure 2: RERR message structure Figure 2: RERR message structure
Required Message Header Fields Required Message Header Fields
The RERR MUST contain the following: The RERR MUST contain the following:
* <msg-hop-limit> * <msg-hop-limit>
* PktSource Message TLV, if the RERR is unicast * PktSource Message TLV (see Section 15), if the RERR is unicast
* Metric Type Message TLV, if MetricType != 3 * Metric Type Message TLV (see Section 15), if MetricType != 3
Optional Message Header Fields Optional Message Header Fields
The RERR may contain the following: The RERR may contain the following:
* <msg-hop-count> * <msg-hop-count>
UnreachableNode AddrBlk UnreachableNode AddrBlk
This Address Block contains the IP addresses unreachable by AODVv2 This Address Block contains the IP addresses unreachable by AODVv2
router transmitting the RERR. router transmitting the RERR.
skipping to change at page 31, line 47 skipping to change at page 33, line 6
UnreachableNode.PrefixLength UnreachableNode.PrefixLength
The prefix length associated with an UnreachableNode. The prefix length associated with an UnreachableNode.
There are two kinds of events indicating that packets cannot be There are two kinds of events indicating that packets cannot be
delivered to certain destinations. The two cases differ in the way delivered to certain destinations. The two cases differ in the way
that the neighboring IP destination address for the RERR is chosen, that the neighboring IP destination address for the RERR is chosen,
and in the way that the set of UnreachableNodes is identified. and in the way that the set of UnreachableNodes is identified.
In both cases, the <msg-hop-limit> MUST be included and SHOULD be set In both cases, the <msg-hop-limit> MUST be included and SHOULD be set
to MAX_HOPCOUNT. <msg-hop-count> SHOULD be be included and set to 0, to MAX_HOPCOUNT. <msg-hop-count> SHOULD be included and set to 0, to
to facilitate use of various route repair strategies including facilitate use of various route repair strategies including expanding
expanding rings multicast and Intermediate RREP [I-D.perkins-irrep]. rings multicast and Intermediate RREP [I-D.perkins-irrep].
8.3.1. Case 1: Undeliverable Packet 8.3.1. Case 1: Undeliverable Packet
The first case happens when the router receives a packet but does not The first case happens when the router receives a packet from another
have a valid route for the destination of the packet. In this case, AODVv2 router but does not have a valid route for the destination of
there is exactly one UnreachableNode to be included in the RERR's the packet. In this case, there is exactly one UnreachableNode to be
AddrBlk (either IP.DestinationAddress from a data packet or included in the RERR's AddrBlk (either IP.DestinationAddress from a
RREP.AddrBlk[TargNode]). The RERR SHOULD be sent to the multicast data packet or RREP.AddrBlk[OrigNode]). The RERR SHOULD be sent to
address LL-MANET-Routers, but RERR_Gen MAY instead send the RERR to the multicast address LL-MANET-Routers, but RERR_Gen MAY instead send
the next hop towards the source IP address of the packet which was the RERR to the next hop towards the source IP address of the packet
undeliverable. In the latter case, the PktSource Message TLV MUST be which was undeliverable. For unicast RERR, the PktSource Message TLV
included, containing the the source IP address of the undeliverable MUST be included, containing the the source IP address of the
packet. If SeqNum UnreachableNode is known, it SHOULD be placed in undeliverable packet, or the IP address of TargRtr in case the
the RERR. Otherwise, if no Seqnum AddrTLV is included, all nodes undeliverable packet was an RREP message generated by TargRtr. If a
Sequence Number for UnreachableNode is known, that Sequence Number
SHOULD be included in a Seqnum AddrTLV the RERR. Otherwise all nodes
handling the RERR will assume their route through RERR_Gen towards handling the RERR will assume their route through RERR_Gen towards
the UnreachableNode is no longer valid and flag those routes as the UnreachableNode is no longer valid and flag those routes as
broken. RERR_Gen MUST discard the packet or message that triggered broken, regardless of the Sequnce Number information for those
routes. RERR_Gen MUST discard the packet or message that triggered
generation of the RERR. generation of the RERR.
If an AODVv2 router receives an ICMP packet from the address of one If an AODVv2 router receives an ICMP packet from the address of one
of its client nodes, it simply relays the packet to the ICMP packet's of its client nodes, it simply relays the packet to the ICMP packet's
destination address, and does not generate any RERR message. destination address, and does not generate any RERR message.
8.3.2. Case 2: Broken Link 8.3.2. Case 2: Broken Link
The second case happens when the link breaks to an active adjacent The second case happens when the link breaks to an active adjacent
AODVv2 router (i.e., the next hop of an active route). In this case, AODVv2 router (i.e., the next hop of an active route). In this case,
the RERR MUST be sent to the multicast address LL-MANET-Routers, the RERR MUST be sent to the multicast address LL-MANET-Routers,
except when the optional feature of maintaining precursor lists is except when the optional feature of maintaining precursor lists is
used as specified in Section 13.3. All routes (Active, Idle and used as specified in Section 13.3. All routes (Active, Idle and
Expired) that use the broken link MUST be marked as Broken. The set Expired) that use the broken link MUST be marked as Broken. The set
of UnreachableNodes is initialized by identifying those Active routes of UnreachableNodes is initialized by identifying those Active routes
which use the broken link. For each such Active Route, Route.Dest is 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 added to the set of Unreachable Nodes. After the Active Routes using
the broken link have all been included as UnreachableNodes, idle the broken link have all been included as UnreachableNodes, Idle
routes MAY also be included, if allowed by the setting of routes MAY also be included, if allowed by the setting of
ENABLE_IDLE_UNREACHABLE, as long as the packet size of the RERR does ENABLE_IDLE_UNREACHABLE, as long as the packet size of the RERR does
not exceed the MTU (interface "Maximum Transfer Unit") of the not exceed the MTU (interface "Maximum Transfer Unit") of the
physical medium. physical medium.
If the set of UnreachableNodes is empty, no RERR is generated. If the set of UnreachableNodes is empty, no RERR is generated.
Otherwise, RERR_Gen generates a new RERR, and the address of each Otherwise, RERR_Gen generates a new RERR, and the address of each
UnreachableNode is inserted into an AddrBlock. If a prefix is known UnreachableNode is inserted into an AddrBlock. If a prefix is known
for the UnreachableNode.Address, it SHOULD be included. Otherwise, for the UnreachableNode.Address, it SHOULD be included. Otherwise,
the UnreachableNode.Address is assumed to be a host address with a the UnreachableNode.Address is assumed to be a host address with a
full length prefix. The value for each UnreachableNode's SeqNum full length prefix. The value for each UnreachableNode's SeqNum
(UnreachableNode.SeqNum) MUST be placed in a SeqNum AddrTLV. If none (UnreachableNode.SeqNum) MUST be placed in a SeqNum AddrTLV. If none
of UnreachableNode.Addr entries are associated with known prefix of UnreachableNode.Addr entries are associated with known prefix
lengths, then the AddrBlk SHOULD NOT include any prefix-length lengths, then the AddrBlk SHOULD NOT include any prefix-length
information. Otherwise, for each UnreachableNode.Addr that does not information. Otherwise, for each UnreachableNode.Addr that does not
have any associated prefix-length information, the prefix-length for have any associated prefix-length information, the prefix-length for
skipping to change at page 33, line 18 skipping to change at page 34, line 27
Every broken route reported in the RERR MUST have the same Metric Every broken route reported in the RERR MUST have the same Metric
Type. If the Metric Type is not 3, then the RERR message MUST Type. If the Metric Type is not 3, then the RERR message MUST
contain a MetricType MsgTLV indicating the Metric Type of the broken contain a MetricType MsgTLV indicating the Metric Type of the broken
route(s). route(s).
8.4. Receiving and Handling RERR Messages 8.4. Receiving and Handling RERR Messages
When an AODVv2 router (HandlingRtr) receives a RERR message, it uses When an AODVv2 router (HandlingRtr) receives a RERR message, it uses
the information provided to invalidate affected routes. If the the information provided to invalidate affected routes. If the
information in the RERR may be useful to upstream neighbors using information in the RERR may be relevant to upstream neighbors using
those routes, HandlingRtr subsequently sends another RERR to those those routes, HandlingRtr subsequently sends another RERR to those
neighbors. This operation has the effect of retransmitting the RERR neighbors. This operation has the effect of retransmitting the RERR
information and is counted as another "hop" for purposes of properly information and is counted as another "hop" for purposes of properly
modifying Msg.<msg-hop-limit> and Msg.<msg-hop-count>. modifying <msg-hop-limit> and <msg-hop-count> in the RERR message
header.
HandlingRtr examines the incoming RERR to assure that it contains HandlingRtr examines the incoming RERR to assure that it contains
Msg.<msg-hop-limit> and at least one UnreachableNode.Address. If the <msg-hop-limit> and at least one UnreachableNode.Address. If the
required information does not exist, the incoming RERR message is required information does not exist, the incoming RERR message is
disregarded and further processing stopped. Otherwise, for each disregarded and further processing stopped. Otherwise, for each
UnreachableNode.Address, HandlingRtr searches its route table for a UnreachableNode.Address, HandlingRtr searches its route table for a
route using longest prefix matching. If no such Route is found, route using longest prefix matching. If no such Route is found,
processing is complete for that UnreachableNode.Address. Otherwise, processing is complete for that UnreachableNode.Address. Otherwise,
HandlingRtr verifies the following: HandlingRtr verifies the following:
1. The UnreachableNode.Address is a routable unicast address. 1. The UnreachableNode.Address is a routable unicast address.
2. Route.NextHopAddress is the same as RERR IP.SourceAddress. 2. Route.NextHopAddress is the same as RERR IP.SourceAddress.
3. Route.NextHopInterface is the same as the interface on which the 3. Route.NextHopInterface is the same as the interface on which the
RERR was received. RERR was received.
4. The UnreachableNode.SeqNum is unknown, OR Route.SeqNum <= 4. The UnreachableNode.SeqNum is unknown, OR Route.SeqNum <=
UnreachableNode.SeqNum (using signed 16-bit arithmetic). UnreachableNode.SeqNum (using signed 16-bit arithmetic).
If the route satisfies all of the above conditions, HandlingRtr sets If the route satisfies all of the above conditions, HandlingRtr sets
the Route.Broken flag for that route. Furthermore, if Msg.<msg-hop- the Route.Broken flag for that route. Furthermore, if <msg-hop-
limit> is greater than 0, then HandlingRtr adds the UnreachableNode limit> is greater than 0, then HandlingRtr adds the UnreachableNode
address and TLV information to an AddrBlk for delivery in the address and TLV information to an AddrBlk for delivery in the
outgoing RERR message. outgoing RERR message.
If there are no UnreachableNode addresses to be transmitted in an If there are no UnreachableNode addresses to be transmitted in an
RERR to upstream routers, HandlingRtr MUST discard the RERR, and no RERR to upstream routers, HandlingRtr MUST discard the RERR, and no
further action is taken. further action is taken.
Otherwise, Msg.<msg-hop-limit> is decremented by one (1) and Otherwise, <msg-hop-limit> is decremented by one (1) and processing
processing continues as follows: continues as follows:
o (Optional) If precursor lists are maintained, the outgoing RERR o (Optional) If precursor lists are maintained, the outgoing RERR
SHOULD be sent to the active precursors of the broken route as SHOULD be sent to the active precursors of the broken route as
specified in Section 13.3. specified in Section 13.3.
o Otherwise, if the incoming RERR message was received at the LL- o Otherwise, if the incoming RERR message was received at the LL-
MANET-Routers [RFC5498] multicast address, the outgoing RERR MANET-Routers [RFC5498] multicast address, the outgoing RERR
SHOULD also be sent to LL-MANET-Routers. SHOULD also be sent to LL-MANET-Routers.
o Otherwise, if the PktSource Message TLV is present, and o Otherwise, if the PktSource Message TLV is present, and
skipping to change at page 36, line 18 skipping to change at page 37, line 18
message generation SHOULD be limited. The rate and algorithm for message generation SHOULD be limited. The rate and algorithm for
limiting messages (CONTROL_TRAFFIC_LIMITS) is left to the implementor limiting messages (CONTROL_TRAFFIC_LIMITS) is left to the implementor
and should be administratively configurable. AODVv2 messages SHOULD and should be administratively configurable. AODVv2 messages SHOULD
be discarded in the following order of preference: RREQ, RREP, and be discarded in the following order of preference: RREQ, RREP, and
finally RERR. finally RERR.
13. Optional Features 13. Optional Features
Some optional features of AODVv2, associated with AODV, are not Some optional features of AODVv2, associated with AODV, are not
required by minimal implementations. These features are expected to required by minimal implementations. These features are expected to
be useful in networks with greater mobility, or larger node apply in networks with greater mobility, or larger node populations,
populations, or requiring shorter latency for application launches. or requiring reduced latency for application launches. The optional
The optional features are as follows: 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
skipping to change at page 36, line 42 skipping to change at page 37, line 42
from an intermediate router. from an intermediate router.
o RREP_ACK. o RREP_ACK.
o Message Aggregation. o Message Aggregation.
o Inclusion of Added Routing Information. o Inclusion of Added Routing Information.
13.1. Expanding Rings Multicast 13.1. Expanding Rings Multicast
For multicast RREQ, Msg.<msg-hop-limit> MAY be set in accordance with For multicast RREQ, <msg-hop-limit> MAY be set in accordance with an
an expanding ring search as described in [RFC3561] to limit the RREQ 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.
13.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]. [I-D.perkins-irrep].
13.3. Precursor Lists and Notifications 13.3. Precursor Lists and Notifications
skipping to change at page 38, line 6 skipping to change at page 39, line 6
has been used for recent traffic (in other words, whether the has been used for recent traffic (in other words, whether the
precursor is an Active precursor). So, when traffic arrives from a 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 precursor, the Current_Time is used to mark the time of last use for
the precursor list element associated with that precursor. the precursor list element associated with that precursor.
When an AODVv2 router detects that a link is broken, then for each When an AODVv2 router detects that a link is broken, then for each
precursor using that next hop, the node MAY notify the precursor precursor using that next hop, the node MAY notify the precursor
using either unicast or multicast RERR: using either unicast or multicast RERR:
unicast RERR to each Active precursor unicast RERR to each Active precursor
This option is useful when there are few Active precursors This option is applicable when there are few Active precursors
compared to the number of neighboring AODVv2 routers. compared to the number of neighboring AODVv2 routers.
multicast RERR to RERR_PRECURSORS multicast RERR to RERR_PRECURSORS
RERR_PRECURSORS is, by default, LL-MANET-Routers [RFC5498]. This RERR_PRECURSORS is, by default, LL-MANET-Routers [RFC5498]. This
option is typically preferable when there are many precursors, option is typically preferable when there are many precursors,
since fewer packet transmissions are required. since fewer packet transmissions are required.
Each active upstream neighbor (i.e., precursor) MAY then execute the Each active upstream neighbor (i.e., precursor) MAY then execute the
same procedure until all active upstream routers have received the same procedure until all active upstream routers have received the
RERR notification. RERR notification.
13.4. Multicast RREP Response to RREQ 13.4. Multicast RREP Response to RREQ
The RREQ Target Router (RREP_Gen) MAY, as an alternative to The RREQ Target Router (RREP_Gen) MAY, as an alternative to
unicasting a RREP, be configured to distribute routing information unicasting a RREP, be configured to distribute routing information
about the route toward the RREQ TargNode (RREP_Gen's client) more about the route toward the RREQ TargNode (RREP_Gen's client) more
widely. That is, RREP_Gen MAY be configured respond to a route widely. That is, RREP_Gen MAY be configured respond to a route
discovery by generating a RREP, using the procedure in Section 7.4, discovery by generating a RREP, using the procedure in Section 7.4,
but multicasting the RREP to LL-MANET-Routers [RFC5498] (subject to but multicasting the RREP to LL-MANET-Routers [RFC5498] (subject to
similar suppression algorithm for useless RREP multicasts as similar suppression algorithm for redundant RREP multicasts as
described in Section 7.6). The useless message suppression must described in Section 7.6). The redundant message suppression must
occur at every router handling the multicast RREP. Afterwards, occur at every router handling the multicast RREP. Afterwards,
RREP_Gen processing for the incoming RREQ is complete. RREP_Gen processing for the incoming RREQ is complete.
Broadcast RREP response to incoming RREQ was originally specified to Broadcast RREP response to incoming RREQ was originally specified to
handle unidirectional links, but it is expensive. Due to the handle unidirectional links, but it is expensive. Due to the
significant overhead, AODVv2 routers MUST NOT use multicast RREP significant overhead, AODVv2 routers MUST NOT use multicast RREP
unless configured to do so by setting the administrative parameter unless configured to do so by setting the administrative parameter
USE_MULTICAST_RREP. USE_MULTICAST_RREP.
13.5. RREP_ACK 13.5. RREP_ACK
skipping to change at page 39, line 39 skipping to change at page 40, line 39
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 reduce overall seems to help, and other times it seems to reduce overall
performance. The results depend upon packet size and traffic performance. The results depend upon packet size and traffic
patterns. patterns.
13.7.1. Including Added Node Information 13.7.1. Including Added Node Information
An AODVv2 router (HandlingRtr) MAY optionally append AddedNode An AODVv2 router (HandlingRtr) MAY optionally append AddedNode
routing information to a RteMsg. This is controllable by an option routing information to a RREQ or RREP. This is controllable by an
(APPEND_INFORMATION) which SHOULD be administratively configurable or option (APPEND_INFORMATION) which SHOULD be administratively
controlled according to the traffic characteristics of the network. configurable or controlled according to the traffic characteristics
of the network.
The following notation is used to specify the methods for inclusion The following notation is used to specify the methods for inclusion
of routing information for addtional nodes. of routing information for addtional nodes.
AddedNode AddedNode
The IP address of an additional node that can be reached via the The IP address of an additional node that can be reached via the
AODVv2 router adding this information. Each AddedNode.Address AODVv2 router adding this information. Each AddedNode.Address
MUST include its prefix. Each AddedNode.Address MUST also have an MUST include its prefix. Each AddedNode.Address MUST also have an
associated Node.SeqNum in the address TLV block. associated Node.SeqNum in the address TLV block.
skipping to change at page 44, line 42 skipping to change at page 45, line 42
15.3. Address Block TLV Specification 15.3. Address Block TLV Specification
+----------------------------+--------+---------------+-------------+ +----------------------------+--------+---------------+-------------+
| Name | Type | Length | Value | | Name | Type | Length | Value |
| | (TBD) | | | | | (TBD) | | |
+----------------------------+--------+---------------+-------------+ +----------------------------+--------+---------------+-------------+
| Metric | 10 | depends on | Section 7.2 | | Metric | 10 | depends on | Section 7.2 |
| | | Metric Type | | | | | Metric Type | |
| Sequence Number (SeqNum) | 11 | 2 octets | Section 7.2 | | Sequence Number (SeqNum) | 11 | 2 octets | Section 7.2 |
| Originating Node Sequence | 12 | 2 octets | Section 7.2 |
| Number (OrigSeqNum) | | | |
| Target Node Sequence | 13 | 2 octets | Section 7.2 |
| Number (TargSeqNum) | | | |
| VALIDITY_TIME | 1 | 1 octet | [RFC5497] | | VALIDITY_TIME | 1 | 1 octet | [RFC5497] |
+----------------------------+--------+---------------+-------------+ +----------------------------+--------+---------------+-------------+
Table 8: Address Block TLV (AddrTLV) Types Table 8: Address Block TLV (AddrTLV) Types
15.4. Metric Type Number Allocation 15.4. Metric Type Number Allocation
Metric types are identified according to the assignments as specified Metric types are identified according to the assignments as specified
in [RFC6551]. The metric type of the Hop Count metric is assigned to 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 be 3, in order to maintain compatibility with that existing table of
skipping to change at page 48, line 20 skipping to change at page 49, line 27
Barthel, "Routing Metrics Used for Path Calculation in Barthel, "Routing Metrics Used for Path Calculation in
Low-Power and Lossy Networks", RFC 6551, March 2012. Low-Power and Lossy Networks", RFC 6551, March 2012.
18.2. Informative References 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., Perkins, Y., Satoh, H., Herberg, U., Lavenu, C., Lys, T., Perkins,
C., and J. Dean, "The Lightweight On-demand Ad hoc C., and J. Dean, "The Lightweight On-demand Ad hoc
Distance-vector Routing Protocol - Next Generation Distance-vector Routing Protocol - Next Generation
(LOADng)", draft-clausen-lln-loadng-06 (work in progress), (LOADng)", draft-clausen-lln-loadng-08 (work in progress),
October 2012. January 2013.
[I-D.perkins-irrep] [I-D.perkins-irrep]
Perkins, C. and I. Chakeres, "Intermediate RREP for Perkins, C. and I. Chakeres, "Intermediate RREP for
dynamic MANET On-demand (AODVv2) Routing", dynamic MANET On-demand (AODVv2) Routing",
draft-perkins-irrep-02 (work in progress), November 2012. 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
skipping to change at page 55, line 28 skipping to change at page 56, line 28
0 1 2 3 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 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 |msgtype=RREPAck| MF=0 | MAL=3 | msg-size=4 | | PV=0 | PF=0 |msgtype=RREPAck| MF=0 | MAL=3 | msg-size=4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| msg-size=4 | | msg-size=4 |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
Figure 7: Example IPv4 RREP_ACK Figure 7: Example IPv4 RREP_ACK
Appendix B. Changes since revision ...-24.txt Appendix B. Changes since revision ...-25.txt
The main goals of this revision are to improve readability and to
introduce a protocol update which enables order-independent listing
of the Originating Node and Target Node (OrigNode and TargNode) in
the AddrBlk of RREQ and RREP messages.
o Added two new AddrTLV types, OrigSeqNum and TargSeqNum. Changed
processing description to identify OrigNdx and TargNdx, instead of
implicitly assuming OrigNdx = 1 and TargNdx = 2 as in previous
versions of the specification. See Section 7.2, Section 7.3,
Section 7.4, Section 7.5, and Section 15.3.
o Reworded initial paragraph of Section 6 to eliminate the use of
terminology "DestIP", in order to reduce possible confusion with
the meaning of the term "TargNode", etc.
o Moved description of reasons why a node might not elect to
retransmit a RteMsg from Section 7.5 to section Section 7.5.1. If
an AODVv2 router would elect to not send an RREP message, it
should not send the RREQ message which might elicit that RREP
message. Otherwise, valid routes will go undiscovered.
o Eliminated use of terminology for "Msg." to indicate fields in the
RFC 5444 Message Header.
o Replaced instances of "useless" by "redundant". Made numerous
other editorial changes and corrections.
o Changed membership of editorial team.
o Formally changed document name to "aodvv2" instead of "dymo".
Appendix C. Changes since revision ...-24.txt
The main goals of this revision are to improve readability and to The main goals of this revision are to improve readability and to
introduce a protocol update to handle suppression of unnecessary introduce a protocol update to handle suppression of unnecessary
multicast RREQs and certain other messages. multicast RREQs and certain other messages.
o Specified operations for maintenance and use of RREQ Table (see o Specified operations for maintenance and use of RREQ Table (see
Section 5.7, Section 7.6). Section 5.7, Section 7.6).
o Inserted explanations for example packet formats in appendix (see o Inserted explanations for example packet formats in appendix (see
Appendix A). Appendix A).
o Eliminated OwnSeqNum, RERR_dest, and various other abbreviations, o Eliminated OwnSeqNum, RERR_dest, and various other abbreviations,
reworded relevant text. reworded relevant text.
skipping to change at page 56, line 17 skipping to change at page 57, line 42
o Renamed Unicast Response Request MsgTLV to be Acknowledgment o Renamed Unicast Response Request MsgTLV to be Acknowledgment
Request. Request.
o Clarified <msg-hop-limit> and <msg-hop-count> mandates and o Clarified <msg-hop-limit> and <msg-hop-count> mandates and
initialization. initialization.
o Reformatted various tables to improve readability. o Reformatted various tables to improve readability.
o Changed some descriptions to apply to "Incoming" messages instead o Changed some descriptions to apply to "Incoming" messages instead
of "Outgoing" messages, enabling simpler specification. of "Outgoing" messages, enabling simpler specification.
o Many other minor editorial improvements to improve readability and o Many other minor editorial improvements to improve readability and
eliminate possibly ambiguities. eliminate possibly ambiguities.
Appendix C. Changes between revisions ...-21.txt and ...-24.txt Appendix D. Changes between revisions ...-21.txt and ...-24.txt
The revisions of this document that were numbered 22 and 23 were The revisions of this document that were numbered 22 and 23 were
produced without sufficient time for preparation, and suffered from produced without sufficient time for preparation, and suffered from
numerous editorial errors. Therefore, this list of changes is numerous editorial errors. Therefore, this list of changes is
enumerated based on differences between this revision (24) and enumerated based on differences between this revision (24) and
revision 21. revision 21.
o Alternate metrics enabled: o Alternate metrics enabled:
* New section added to describe general design approach. * New section added to describe general design approach.
* Abstract functions "Cost()" and "LoopFree()" defined. * Abstract functions "Cost()" and "LoopFree()" defined.
* MAX_HOPCOUNT typically replaced by MAX_METRIC. * MAX_HOPCOUNT typically replaced by MAX_METRIC.
* DEFAULT_METRIC_TYPE parameter defined, defaulting to HopCount. * DEFAULT_METRIC_TYPE parameter defined, defaulting to HopCount.
* MetricType Message TLV defined. * MetricType Message TLV defined.
* Metric Address TLV defined. * Metric Address TLV defined.
o Many changes for RFC 5444 compliance o Many changes for RFC 5444 compliance
o New section added for "Notational Conventions" (see Table 1). o New section added for "Notational Conventions" (see Table 1).
Many changes to improve readability and accuracy (e.g., eliminate Many changes to improve readability and accuracy (e.g., eliminate
skipping to change at page 57, line 38 skipping to change at page 59, line 19
o In Section 8.2, relax mandate for monitoring connectivity to next- o In Section 8.2, relax mandate for monitoring connectivity to next-
hop AODVv2 neighbors (from MUST to SHOULD), in order to allow for hop AODVv2 neighbors (from MUST to SHOULD), in order to allow 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 <msg-hop-limit> set o Routing Messages MUST be originated with the <msg-hop-limit> set
to MAX_HOPCOUNT. to MAX_HOPCOUNT.
o Maximum hop count set to MAX_HOPCOUNT, and 255 is reserved for o Maximum hop count set to MAX_HOPCOUNT, and 255 is reserved for
"unknown". Since the current draft only uses hop-count as "unknown". Since the current draft only uses hop-count as
distance, this is also the current maximum distance. distance, this is also the current maximum distance.
Appendix D. Shifting Network Prefix Advertisement Between AODVv2 Appendix E. Shifting Network Prefix Advertisement Between AODVv2
Routers Routers
Only one AODVv2 router within a MANET SHOULD be responsible for a Only one AODVv2 router within a MANET SHOULD be responsible for a
particular address at any time. If two AODVv2 routers dynamically particular address at any time. If two AODVv2 routers dynamically
shift the advertisement of a network prefix, correct AODVv2 routing shift the advertisement of a network prefix, correct AODVv2 routing
behavior must be observed. The AODVv2 router adding the new network behavior must be observed. The AODVv2 router adding the new network
prefix must wait for any existing routing information about this prefix must wait for any existing routing information about this
network prefix to be purged from the network. Therefore, it must network prefix to be purged from the network. Therefore, it must
wait at least ROUTER_SEQNUM_AGE_MAX_TIMEOUT after the previous AODVv2 wait at least ROUTER_SEQNUM_AGE_MAX_TIMEOUT after the previous AODVv2
router for this address stopped advertising routing information on router for this address stopped advertising routing information on
skipping to change at page 58, line 15 skipping to change at page 60, line 4
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
Email: charliep@computer.org Email: charliep@computer.org
Stan Ratliff
Ian D Chakeres Cisco
CenGen 170 West Tasman Drive
9250 Bendix Road North San Jose, CA 95134
Columbia, Maryland 21045
USA USA
Email: ian.chakeres@gmail.com Email: sratliff@cisco.com
URI: http://www.ianchak.com/
John Dowdell
Cassidian
Celtic Springs
Newport, Wales NP10 8FZ
United Kingdom
Email: John.Dowdell@Cassidian.com
 End of changes. 139 change blocks. 
445 lines changed or deleted 526 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/