Mobile Ad hoc Networks Working I. Chakeres
Group Motorola
Internet-Draft C. Perkins
Intended status: Standards Track Nokia
Expires: November 3, 2007 May 2, 2007
Dynamic MANET On-demand (DYMO) Routing
draft-ietf-manet-dymo-09
Status of this Memo
By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on November 3, 2007.
Copyright Notice
Copyright (C) The IETF Trust (2007).
Abstract
The Dynamic MANET On-demand (DYMO) routing protocol is intended for
use by mobile nodes in wireless, multihop networks. It offers
adaptation to changing network topology and determines unicast routes
between nodes within the network in an on-demand fashion.
Chakeres & Perkins Expires November 3, 2007 [Page 1]
Internet-Draft DYMO May 2007
Table of Contents
1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Applicability Statement . . . . . . . . . . . . . . . . . . . 4
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5
4. Data Structures . . . . . . . . . . . . . . . . . . . . . . . 6
4.1. Route Table Entry . . . . . . . . . . . . . . . . . . . . 6
4.2. DYMO Messages . . . . . . . . . . . . . . . . . . . . . . 7
4.2.1. Generalized MANET Packet and Message Structure . . . . 8
4.2.2. Routing Messages (RM) - RREQ & RREP . . . . . . . . . 8
4.2.3. Route Error (RERR) . . . . . . . . . . . . . . . . . . 11
5. Detailed Operation . . . . . . . . . . . . . . . . . . . . . . 12
5.1. DYMO Sequence Numbers . . . . . . . . . . . . . . . . . . 12
5.1.1. Maintaining A Node's Own Sequence Number . . . . . . . 12
5.1.2. Numerical Operations on OwnSeqNum . . . . . . . . . . 13
5.1.3. OwnSeqNum Rollover . . . . . . . . . . . . . . . . . . 13
5.1.4. Actions After OwnSeqNum Loss . . . . . . . . . . . . . 13
5.2. DYMO Routing Table Operations . . . . . . . . . . . . . . 13
5.2.1. Judging Routing Information's Usefulness . . . . . . . 13
5.2.2. Creating or Updating a Route Table Entry with New
Routing Information . . . . . . . . . . . . . . . . . 15
5.2.3. Route Table Entry Timeouts . . . . . . . . . . . . . . 16
5.3. Routing Messages . . . . . . . . . . . . . . . . . . . . . 17
5.3.1. RREQ Creation . . . . . . . . . . . . . . . . . . . . 17
5.3.2. RREP Creation . . . . . . . . . . . . . . . . . . . . 18
5.3.3. Intermediate Node RREP Creation . . . . . . . . . . . 18
5.3.4. RM Processing . . . . . . . . . . . . . . . . . . . . 19
5.3.5. Adding Additional Routing Information to a RM . . . . 20
5.4. Route Discovery . . . . . . . . . . . . . . . . . . . . . 21
5.5. Route Maintenance . . . . . . . . . . . . . . . . . . . . 22
5.5.1. Active Link Monitoring . . . . . . . . . . . . . . . . 22
5.5.2. Updating Route Lifetimes During Packet Forwarding . . 22
5.5.3. Route Error Generation . . . . . . . . . . . . . . . . 23
5.5.4. RERR Processing . . . . . . . . . . . . . . . . . . . 23
5.6. Unknown Message & TLV Types . . . . . . . . . . . . . . . 24
5.7. Advertising Network Addresses . . . . . . . . . . . . . . 24
5.8. Simple Internet Attachment and Gatewaying . . . . . . . . 24
5.9. Multiple Interfaces . . . . . . . . . . . . . . . . . . . 26
5.10. Packet/Message Generation Limits . . . . . . . . . . . . . 26
6. Configuration Parameters and Other Administrative Options . . 26
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 27
7.1. DYMO Message Type Specification . . . . . . . . . . . . . 28
7.2. Packet TLV Type Specification . . . . . . . . . . . . . . 28
7.3. Address Block TLV Specification . . . . . . . . . . . . . 29
8. Security Considerations . . . . . . . . . . . . . . . . . . . 29
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 30
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 30
10.1. Normative References . . . . . . . . . . . . . . . . . . . 30
Chakeres & Perkins Expires November 3, 2007 [Page 2]
Internet-Draft DYMO May 2007
10.2. Informative References . . . . . . . . . . . . . . . . . . 30
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 31
Intellectual Property and Copyright Statements . . . . . . . . . . 32
Chakeres & Perkins Expires November 3, 2007 [Page 3]
Internet-Draft DYMO May 2007
1. Overview
The Dynamic MANET On-demand (DYMO) routing protocol enables reactive,
multihop unicast routing between participating nodes that wish to
communicate. The basic operations of the DYMO protocol are route
discovery and route management. During route discovery, the
originating node initiates dissemination of a Route Request (RREQ)
throughout the network to find a route to the target node. During
this hop-by-hop dissemination process, each intermediate node records
a route to the originating node. When the target node receives the
RREQ, it responds with a Route Reply (RREP) sent hop-by-hop toward
the originating node. Each node that receives the RREP records a
route to the target node, and then the RREP is unicast hop-by-hop
toward the originating node. When the originating node receives the
RREP, routes have then been established between the originating node
and the target node in both directions.
In order to react to changes in the network topology nodes maintain
their routes and monitor links over which traffic is moving. When a
data packet is received for forwarding if a route for the destination
is not known or the route is broken, then the source of the packet is
notified. A Route Error (RERR) is sent to the packet source to
indicate the current route to a particular destination is broken.
When the source receives the RERR, it knows that it must perform
route discovery if it still has packets to deliver to that
destination.
DYMO uses sequence numbers to ensure loop freedom [Perkins99].
Sequence numbers enable nodes to determine the order of DYMO route
discovery messages, thereby avoiding use of stale routing
information.
2. Applicability Statement
The DYMO routing protocol is designed for stub mobile ad hoc
networks. DYMO handles a wide variety of mobility patterns by
dynamically determining routes on-demand. DYMO also handles a wide
variety of traffic patterns. In large networks DYMO is best suited
for traffic scenarios where nodes communicate with only a portion of
other the nodes.
DYMO is applicable to memory constrained devices, since little
routing state needs to be maintained in each node. Only routing
information related to active sources and destinations must be
maintained, in contrast to other routing protocols that require
routing information to all nodes within the autonomous system be
maintained.
Chakeres & Perkins Expires November 3, 2007 [Page 4]
Internet-Draft DYMO May 2007
The routing algorithm in DYMO may be operated at layers other than
the network layer, using layer-appropriate addresses. Only
modification of the packet format is required. The routing algorithm
need not change. Note that, using the DYMO algorithm with message
formats (other than those specified in this document) will not be
interoperable.
3. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
Additionally, this document uses some terminology from
[I-D.ietf-manet-packetbb].
This document defines the following terminology:
DYMO Sequence Number (SeqNum)
A DYMO Sequence Number is maintained by each node. This sequence
number is used by other nodes to identify the order of routing
information generated by a node and to ensure loop-free routes.
Forwarding Route
A route that is used to forward data packets. Forwarding routes
are generally maintained in a forwarding information base (FIB) or
the kernel forwarding/routing table.
Hop Count (HopCnt)
The number of IP hops a message or piece of information has
traversed.
Originating Node (OrigNode)
The originating node is the node that created a DYMO Message in an
effort to disseminate some information. The originating node is
also referred to as a particular message's originator.
Route Error (RERR)
A node generates and disseminates a RERR to indicate that it does
not have forwarding route to one or more particular addresses.
Route Reply (RREP)
A RREP is used to disseminate routing information about the RREP
OrigNode to the TargetNode and the nodes between them.
Chakeres & Perkins Expires November 3, 2007 [Page 5]
Internet-Draft DYMO May 2007
Route Request (RREQ)
A node (the RREQ OrigNode) generates a RREQ to discover a valid
route to a particular destination address, called the RREQ
TargetNode. When a node processes a RREQ, it learns routing
information on how to reach the RREQ OrigNode.
Target Node (TargetNode)
The TargetNode is the ultimate destination of a message.
This Node (ThisNode)
ThisNode corresponds to the node currently performing a
calculation or processing a message.
Type-Length-Value structure (TLV)
A generic way to represent information, see
[I-D.ietf-manet-packetbb].
Unreachable Node (UnreachableNode)
An UnreachableNode is a node for which ThisNode does not have a
forwarding route.
4. Data Structures
4.1. Route Table Entry
The route table entry is a conceptual data structure.
Implementations may use any internal representation that conforms to
the semantics of a route as specified in this document.
Conceptually, a route table entry has the following fields:
Route.Address
The IP destination address of the node associated with the routing
table entry.
Route.SeqNum
The DYMO SeqNum associated with this routing information.
Route.NextHopAddress
The IP address of the next node on the path toward the
Route.Address.
Route.NextHopInterface
The interface used to send packets toward the Route.Address.
Chakeres & Perkins Expires November 3, 2007 [Page 6]
Internet-Draft DYMO May 2007
Route.Broken
A flag indicating whether this Route is broken. This flag is set
if the next hop becomes unreachable or in response to processing a
RERR (see Section 5.5.4).
The following fields are optional:
Route.HopCnt
The number of intermediate node hops traversed before reaching the
Route.Address node. Route.HopCnt assists in determining whether
received routing information is better than existing known
information.
Route.Prefix
Indicates that the associated address is a network address, rather
than a host address. The value is the length of the netmask/
prefix. If an address block does not have an associated
PREFIX_LENGTH TLV [I-D.ietf-manet-packetbb], the prefix may be
considered to have a prefix length equal to the address length (in
bits).
Not including optional information may cause performance degradation,
but it will not cause the protocol to operate incorrectly otherwise.
In addition to a route table data structure, each route table entry
may have several timers associated with the information. These
timers/timeouts are discussed in Section 5.2.3.
4.2. DYMO Messages
When describing DYMO protocol messages, it is necessary to refer to
fields in several distinct parts of the overall packet. These
locations include the IP or IPv6 header, the UDP header, and fields
from [I-D.ietf-manet-packetbb]. This document uses the following
notation conventions. Information found in the table.
+----------------------------+-------------------+
| Information Location | Notational Prefix |
+----------------------------+-------------------+
| IP header | IP. |
| UDP header | UDP. |
| packetbb message header | MsgHdr. |
| packetbb message TLV | MsgTLV. |
| packetbb address blocks | AddBlk. |
| packetbb address block TLV | AddTLV. |
+----------------------------+-------------------+
Table 1
Chakeres & Perkins Expires November 3, 2007 [Page 7]
Internet-Draft DYMO May 2007
4.2.1. Generalized MANET Packet and Message Structure
DYMO messages conform to the generalized packet and message format as
described in [I-D.ietf-manet-packetbb]. Here is a brief description
of the format. A packet is made up of messages. A message is made
up of a message header, message TLV block, and zero or more address
blocks. Each of the address blocks may also have an associated
address TLV block.
All DYMO messages specified in this document are sent using UDP to
the destination port TBD.
Most DYMO messages are sent with the IP destination address set to
the link-local multicast address LL MANET ROUTERS unless otherwise
stated. Unicast DYMO messages specified in this document are sent
with the IP destination set to the Route.NextHopAddress of the route
to the TargetNode.
The IP TTL (IP Hop Limit) field for DYMO messages is set to one (1)
for all messages specified in this document.
The length of an IP address (32 bits for IPv4 and 128 bits for IPv6)
inside a DYMO message depends on the IP packet header containing the
DYMO message/packet. For example, if the IP header uses IPv6
addresses then all messages and addresses contained in the payload
use IPv6 addresses. In the case of mixed IPv6 and IPv4 addresses,
IPv4 addresses are carried in IPv6 as specified in [RFC4291].
4.2.2. Routing Messages (RM) - RREQ & RREP
Routing Messages (RMs) are used to disseminate routing information.
There are two DYMO message types that are considered to be routing
messages (RMs): RREQ and RREP. They contain very similar information
and function, but have slightly different processing rules. The main
difference between the two messages is that RREQ messages solicit a
RREP, whereas a RREP is the response to RREQ.
RM creation and processing are described in Section 5.3.
A RM requires the following information:
IP.DestinationAddress
The IP address of the packet destination. For RREQ the
IP.DestinationAddress is set to LL MANET ROUTERS. For RREP the
IP.DestinationAddress is set to the NextHopAddress toward the
TargetNode.
Chakeres & Perkins Expires November 3, 2007 [Page 8]
Internet-Draft DYMO May 2007
UDP.DestinationPort
The UDP destination port is set to TBD.
MsgHdr.HopLimit
The remaining number of hops this message is allowed to traverse.
MsgHdr.HopCnt
The number of hops this message has traversed.
AddBlk.TargetNode.Address
The IP address of the message TargetNode. In a RREQ the
TargetNode is the destination for which a forwarding route does
not exist and route discovery is being performed. In a RREP the
target node is the RREQ OrigNode. The TargetNode address is the
first address in the routing message.
AddBlk.OrigNode.Address
The IP address of the OrigNode. This address is in an address
block and not in the message header to allow for address
compression and additional AddTLVs. This address is the second
address in the message for RREQ.
OrigNode.AddTLV.SeqNum
The DYMO sequence number of the OrigNode.
A RM may optionally include the following information:
TargetNode.AddTLV.SeqNum
The last known DYMO sequence number of the TargetNode.
TargetNode.AddTLV.HopCnt
The last known HopCnt to the TargetNode.
AddBlk.AdditionalNode.Address
The IP address of an additional node that can be reached via the
node adding this information. Each AdditionalNode.Address must
have an associated SeqNum in the address TLV block.
AdditionalNode.AddTLV.SeqNum
The DYMO sequence number of an additional intermediate node's
routing information.
Node.AddTLV.HopCnt
The number of IP hops to reach the associated Node.Address. This
field is incremented at each intermediate hop, for each node
except the TargetNode's HopCnt information.
Chakeres & Perkins Expires November 3, 2007 [Page 9]
Internet-Draft DYMO May 2007
Node.AddTLV.Prefix
The Node.Address is a network address with a particular prefix
length.
Example IPv4 RREQ
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
IP Header
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP.DestinationAddress = LL MANET ROUTERS |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...
UDP Header
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Port=TBD |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...
Message Header
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RREQ-type | Resv |0|0|1| msg-size=23 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| msg-hoplimit | msg-hopcnt |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...
Message Body - Message TLV Block
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| msg-tlv-block-size=0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Message Body - Address Block
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Number Addrs=2 |0|HeadLength=3 | Head :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
: (cont) | Target.Tail | Orig.Tail |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Message Body - Address Block TLV Block
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| tlv-block-size=6 |DYMOSeqNum-type|Resv |0|1|0|0|0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Index-start=1 | tlv-length=2 | Orig.SeqNum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1
Chakeres & Perkins Expires November 3, 2007 [Page 10]
Internet-Draft DYMO May 2007
4.2.3. Route Error (RERR)
A RERR message is used to disseminate the information that a route is
not available for one or more particular IP addresses.
RERR creation and processing are described in Section 5.5.
A RERR requires the following information:
IP.DestinationAddress
The IP address is set to LL MANET ROUTERS.
UDP.DestinationPort
The UDP destination port is set to TBD.
MsgHdr.HopLimit
The remaining number of hops this message is allowed to traverse.
AddBlk.UnreachableNode.Address
The IP address of an UnreachableNode. Multiple unreachable
addresses may be included in a RERR.
A Route Error may optionally include the following information:
UnreachableNode.AddTLV.SeqNum
The last known DYMO sequence number of the unreachable node. If a
SeqNum for an address is not included, it is assumed to be
unknown. This case occurs when a node receives a message to
forward for which it does not have any information in its routing
table.
Chakeres & Perkins Expires November 3, 2007 [Page 11]
Internet-Draft DYMO May 2007
Example IPv4 RERR
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
IP Header
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP.DestinationAddress = LL MANET ROUTERS |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...
UDP Header
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Port=TBD |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...
Message Header
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RERR-type | Resv |0|0|1| msg-size=16 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| msg-hoplimit | msg-hopcnt |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...
Message Body
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| msg-tlv-block-size=0 |Number Addrs=1 |1|HeadLength=4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Unreachable.Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TLV-blk-size=0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2
5. Detailed Operation
5.1. DYMO Sequence Numbers
DYMO sequence numbers allow nodes to judge the freshness of routing
information and ensure loop freedom.
5.1.1. Maintaining A Node's Own Sequence Number
DYMO requires that each node in the network to maintain its own DYMO
sequence number (OwnSeqNum), a 16-bit unsigned integer. The
circumstances for ThisNode to incrementing its OwnSeqNum are
Chakeres & Perkins Expires November 3, 2007 [Page 12]
Internet-Draft DYMO May 2007
described in Section 5.3.
5.1.2. Numerical Operations on OwnSeqNum
When ThisNode increments its OwnSeqNum (as described in Section 5.3)
it MUST do so by treating the sequence number value as an unsigned
number.
Note: The sequence number zero (0) is reserved.
5.1.3. OwnSeqNum Rollover
If the sequence number has been assigned to be the largest possible
number representable as a 16-bit unsigned integer (i.e., 65535), then
the sequence number is set to 256 when incremented. Setting the
sequence number to 256 allows other nodes to detect that the number
has rolled over and the node has not lost its sequence number.
5.1.4. Actions After OwnSeqNum Loss
A node should maintain its sequence number in persistent storage,
between reboots.
If a node's OwnSeqNum is lost, it must take certain actions to avoid
creating routing loops. To prevent this possibility after OwnSeqNum
loss a node MUST wait for at least ROUTE_DELETE_TIMEOUT before fully
participating in the DYMO routing protocol. If a DYMO control
message is received during this waiting period, the node SHOULD
process it normally but MUST not transmit or retransmit any DYMO
messages. If a data packet is received for forwarding to another
destination during this waiting period, the node MUST generate a RERR
message indicating that this route is not available and reset its
waiting timeout. At the end of the waiting period a node sets its
OwnSeqNum to one (1).
The longest a node must wait is ROUTE_AGE_MAX_TIMEOUT. At the end of
the maximum waiting period a node sets its OwnSeqNum to one (1) and
begins participating.
5.2. DYMO Routing Table Operations
5.2.1. Judging Routing Information's Usefulness
Given a route table entry (Route.SeqNum, Route.HopCnt, and
Route.Broken) and new incoming routing information for a particular
node in a RM (Node.SeqNum, Node.HopCnt, and RM message type - RREQ/
RREP), the quality of the new routing information is evaluated to
determine its usefulness. Incoming routing information is classified
Chakeres & Perkins Expires November 3, 2007 [Page 13]
Internet-Draft DYMO May 2007
as follows:
1. Stale
If Node.SeqNum - Route.SeqNum < 0 (using signed 16-bit arithmetic)
the incoming information is stale. Using stale routing
information is not allowed, since doing so might result in routing
loops.
(Node.SeqNum - Route.SeqNum < 0)
2. Loop-possible
If Node.SeqNum == Route.SeqNum the incoming information may cause
loops if used; in this case additional information must be
examined. If Route.HopCnt or Node.HopCnt is unknown or zero (0),
then the routing information is loop-possible. If Node.HopCnt >
Route.HopCnt + 1, then the routing information is loop-possible.
Using loop-possible routing information is not allowed, otherwise
routing loops may be formed.
(Node.SeqNum == Route.SeqNum) AND
((Node.HopCnt is unknown) OR
(Route.HopCnt is unknown) OR
(Node.HopCnt > Route.HopCnt + 1))
3. Inferior
Information is always inferior if Node.SeqNum - Route.SeqNum < 0
(using 16-bit signed arithmetic). In case of equal SeqNum, the
information is inferior, if Node.HopCnt > Route.HopCnt (it is a
longer route). In case of equal SeqNum, the information is
inferior, if Node.HopCnt == Route.HopCnt (equal distance route)
AND Route.Broken == false AND this RM is a RREQ. This condition
stops forwarding of RREQ with equivalent distance.
(Node.SeqNum - Route.SeqNum < 0) OR
((Node.SeqNum == Route.SeqNum) AND
((Node.HopCnt > Route.HopCnt) OR
((Node.HopCnt == Route.HopCnt) AND
(RM is RREQ) AND (Route.Broken == false))))
4. Superior
Incoming routing information that does not match any of the above
criteria is loop-free and better than the information existing in
the routing table. Information is always superior if Node.SeqNum
- Route.SeqNum > 0 (using 16-bit signed arithmetic). In the case
of equal sequence numbers, the information is superior, if
Node.HopCnt < Route.HopCnt. In the case of equal sequence
numbers, the information is superior, if Node.HopCnt ==
Route.HopCnt AND it is a RREP (RREP with equal HopCnt are
Chakeres & Perkins Expires November 3, 2007 [Page 14]
Internet-Draft DYMO May 2007
forwarded) OR Route.Broken == true (a broken route is being
repaired). For completeness, we provide the following (optimized)
pseudo-code.
(Node.SeqNum - Route.SeqNum > 0) OR
((Node.SeqNum == Route.SeqNum) AND
((Node.HopCnt < Route.HopCnt) OR
((Node.HopCnt == Route.HopCnt) AND
((RM is RREP) OR (Route.Broken == true)))))
5.2.2. Creating or Updating a Route Table Entry with New Routing
Information
The route table entry is populated with the following information:
1. the Route.Address is set to Node.Address,
2. the Route.SeqNum is set to the Node.SeqNum,
3. the Route.NextHopAddress is set to the node that transmitted this
DYMO RM packet (i.e., the IP.SourceAddress),
4. the Route.NextHopInterface is set to the interface that this DYMO
packet was received on,
5. if known, the Route.HopCnt is set to the Node.HopCnt,
6. if known, the Route.Prefix is set to the Node.Prefix.
Fields without known values are not populated with any value.
Previous timers for this route table entry are removed. A timer for
the minimum delete timeout (ROUTE_AGE_MIN) is set to
ROUTE_AGE_MIN_TIMEOUT. A timer to indicate a recently learned route
(ROUTE_NEW) is set to ROUTE_NEW_TIMEOUT. A timer for the maximum
delete timeout (ROUTE_AGE_MAX). ROUTE_AGE_MAX is set to
Node.AddTLV.MaxAge if included; otherwise, ROUTE_AGE_MAX is set to
ROUTE_AGE_MAX_TIMEOUT. The usage of these timers and others are
described in Section 5.2.3.
At this point, a forwarding route should be installed. Afterward,
the route can be used to send any queued data packets and forwarding
any incoming data packets for Route.Address. This route also
fulfills any outstanding route discovery attempts for Node.Address.
Chakeres & Perkins Expires November 3, 2007 [Page 15]
Internet-Draft DYMO May 2007
5.2.3. Route Table Entry Timeouts
5.2.3.1. Minimum Delete Timeout (ROUTE_AGE_MIN)
When a node transmits a RM, other nodes expect the transmitting node
to have a forwarding route to the RM originator. After updating a
route table entry, it should be maintained for at least
ROUTE_AGE_MIN. Failure to maintain the information might result in
lost messages/packets, or in the worst case scenario several
duplicate messages.
After the ROUTE_AGE_MIN timeout a route can safely be deleted.
5.2.3.2. Maximum Delete Timeout (ROUTE_AGE_MAX)
Sequence number information is time sensitive, and must be deleted
after a time in order to avoid conflicts due to reboots and
rollovers. When a node has lost its sequence number (e.g, due to
daemon reboot or node replacement) the node must wait until routing
information associated with its IP address and sequence number are no
longer maintained by other nodes in the network to ensure loop-free
routing.
After the ROUTE_AGE_MAX timeout a route must be deleted. All
information about the route is deleted upon ROUTE_AGE_MAX timeout.
If a forwarding route exists it is also removed.
5.2.3.3. New Information Timeout (ROUTE_NEW)
As time progresses the likelihood that a route remains intact
decreases, if the network nodes are mobile. Maintaining and using
old routing information can lead to many DYMO messages and excess
route discovery delay.
After the ROUTE_NEW timeout if the route has not been used, a timer
for deleting the route (ROUTE_DELETE) is set to ROUTE_DELETE_TIMEOUT.
5.2.3.4. Recently Used Timeout (ROUTE_USED)
When a route is used to forward data packets, this timer is set to
expire after ROUTE_USED_TIMEOUT. This operation is also discussed in
Section 5.5.2.
If a route has not been used recently, then a timer for ROUTE_DELETE
is set to ROUTE_DELETE_TIMEOUT.
Chakeres & Perkins Expires November 3, 2007 [Page 16]
Internet-Draft DYMO May 2007
5.2.3.5. Delete Information Timeout (ROUTE_DELETE)
As time progresses the likelihood that old routing information is
useful decreases, especially if the network nodes are mobile.
Therefore, old information should be deleted.
After the ROUTE_DELETE timeout, the routing table entry should be
deleted. If a forwarding route exists, it should also be removed.
5.3. Routing Messages
5.3.1. RREQ Creation
When a node creates a RREQ it SHOULD increment its OwnSeqNum by one
(1) according to the rules specified in Section 5.1.2. Incrementing
OwnSeqNum will ensure that all nodes with existing routing
information to consider this new information fresh. If the sequence
number is not incremented, certain nodes might not consider this
information useful if they have superior information already.
First, the node adds the AddBlk.TargetNode.Address to the RREQ.
If a previous value of the TargetNode.SeqNum is known (from a routing
table entry), it SHOULD be placed in TargetNode.AddTLV.SeqNum in all
but the last RREQ attempt. If a TargetNode.SeqNum is not included,
it is assumed to be unknown by processing nodes. This operation
ensures that no intermediate nodes reply, and ensures that the
TargetNode increments its sequence number.
Similarly, if a previous value of the TargetNode.HopCnt is known, it
SHOULD be placed in TargetNode.AddTLV.HopCnt. Otherwise, the
TargetNode.AddTLV.HopCnt is not included and assumed unknown by
processing nodes.
Next, the node adds AddBlk.OrigNode.Address to the RM and the
OrigNode.AddTLV.SeqNum (OwnSeqNum) in an address block TLV. The
OrigNode.Address is this node's address, and it must be a routable IP
address. This information will be used by nodes to create a route
toward the OrigNode and enable delivery of a RREP.
If OrigNode.HopCnt is included it is set to zero (0).
The MsgHdr.HopCnt is set to zero (0). The MsgHdr.HopLimit should be
set to MAX_HOPLIMIT, but may be set smaller. For RREQ, the
MsgHdr.HopLimit may be set in accordance with an expanding ring
search as described in [RFC3561] to limit the RREQ propagation to a
subset of the network and possibly reduce route discovery overhead.
Chakeres & Perkins Expires November 3, 2007 [Page 17]
Internet-Draft DYMO May 2007
The IP.DestinationAddress for RREQ is set to LL MANET ROUTERS.
5.3.2. RREP Creation
When ThisNode creates a RREP, if the ThisNode.SeqNum was not included
in the RREQ it SHOULD increment its OwnSeqNum by one (1) according to
the rules specified in Section 5.1.2.
If ThisNode.SeqNum is included in the RM and ThisNode.SeqNum from the
RM is less than OwnSeqNum, OwnSeqNum SHOULD be incremented by one (1)
according to the rules specified in Section 5.1.2.
If OwnSeqNum is not incremented the routing information might be
considered stale. In this case, the RREP would not reach the RREP
Target.
ThisNode first adds the RREP AddBlk.TargetNode.Address to the RREP.
The TargetNode is the ultimate destination of this RREP.
ThisNode then adds the RREP AddBlk.OrigNode.Address
(ThisNode.Address) and the RREP OrigNode.AddTLV.SeqNum (OwnSeqNum) to
the RREP.
Other AddTLVs in the RREP for the OrigNode and TargetNode SHOULD be
included and set accordingly. If OrigNode.HopCnt is included it is
set to zero (0).
The MsgHdr.HopCnt is set to zero (0). The MsgHdr.HopLimit is set to
MAX_HOPLIMIT.
The IP.DestinationAddress for RREP is set to the IP address of the
Route.NextHopAddress for the route to the RREP TargetNode.
5.3.3. Intermediate Node RREP Creation
Sometimes a node other than the TargetNode (call it an "intermediate
node") has routing information that can satisfy an incoming RREQ.
When an intermediate node originates a RREP in response to a RREQ, it
sends the RREP to the RREQ OrigNode with additional routing
information (Address, SeqNum, etc.) about the RREQ TargetNode.
Appending additional routing information is described in
Section 5.3.5.
The Intermediate Node SHOULD also issue a gratuitous RREP to the RREQ
TargetNode, so that the RREQ TargetNode receives routing information
on how to reach the RREQ OrigNode.
When an intermediate node creates a gratuitous RREP, it sends a RREP
Chakeres & Perkins Expires November 3, 2007 [Page 18]
Internet-Draft DYMO May 2007
to the RREQ TargetNode with additional routing information (Address,
SeqNum, etc.) about the RREQ OrigNode.
5.3.4. RM Processing
Before processing a RM, a node checks the IP.Destination to ensure
that it is a link-local packet.
When a RM is received the MsgHdr.HopLimit is decremented by one (1)
and MsgHdr.HopCnt is incremented by one (1).
For each address (except the TargetNode) in the RM that includes
AddTLV.HopCnt information, the AddTLV.HopCnt information is
incremented by one (1).
Next, this node checks whether AddBlk.OrigNode.Address is its own
address. If this node is the originator, the RM is dropped.
Next, this node checks whether its routing table has an entry to the
AddBlk.OrigNode.Address using longest-prefix matching [RFC1812]. If
a route does not exist and the address is a unicast address, then the
new routing information is considered fresh and a new route table
entry is created and updated as described in Section 5.2.2. If a
route table entry does exists, the new node's information is compared
with the route table entry following the procedure described in
Section 5.2.1. If the new node's routing information is considered
superior, the route table entry is updated as described in
Section 5.2.2.
After processing the OrigNode's routing information, then each
address that is not the TargetNode should be considered for creating
and updating routes. Creating and updating routes to other nodes can
eliminate RREQ for those IP destinations, in the event that data
needs to be forwarded to the IP destination(s) in the near future.
For each of the additional addresses considered, if address is a
unicast address and the routing table does not have a matching route
using longest-prefix matching, then a route is created and updated as
described in Section 5.2.2. If a route table entry exists, the new
node's information is compared with the route table entry following
the procedure described in Section 5.2.1. If the new node's routing
information is considered superior, the route table entry is updated
as described in Section 5.2.2.
If the routing information for an AdditionalNode.Address is not
considered superior, then it is removed from the RM. Removing this
information ensures that the information is not propagated.
Chakeres & Perkins Expires November 3, 2007 [Page 19]
Internet-Draft DYMO May 2007
At this point, if the routing information for the OrigNode was not
superior then this RM should be discarded and no further processing
of this message is performed.
If the ThisNode is the TargetNode and this RM is a RREQ, then
ThisNode responds with a RREQ flood (a RREQ addressed to oneself) or
a RREP to the RREQ OrigNode (the new RREP's TargetNode). The
procedure for issuing a new RREP is described in Section 5.3.2.
Note: it is important that when creating the RREP, the RREP
OrigNode.Address be the same as the RREQ TargetNode.Address, if
ThisNode has several addresses. At this point, ThisNode need not
perform any more operations for this RM.
If ThisNode is not the TargetNode, this RM is a RREQ, the RREQ
contains the TargetNode.AddTLV.SeqNum, and ThisNode has a forwarding
route to the TargetNode with a SeqNum (Route.TargetNode.SeqNum)
greater than or equal to the RREQ TargetNode.AddTLV.SeqNum; then this
node MAY respond with an intermediate node RREP. The procedure for
performing intermediate node RREP is described in Section 5.3.3. At
this point, ThisNode need not perform any more operations for this
RM.
After processing a RM or creating a new RM, a node can append
additional routing information to the RM, according to the procedure
described in Section 5.3.5. The additional routing information can
help reduce route discoveries at the expense of increased message
size.
If this RM's MsgHdr.HopLimit is greater than or equal to one (1),
ThisNode is not the TargetNode, AND this RM is a RREQ, then the
current RM (altered by the procedure defined above) is sent to the LL
MANET ROUTERS IP.DestinationAddress.
If this RM's MsgHdr.HopLimit is greater than or equal to one (1),
ThisNode is not the TargetNode, AND this RM is a RREP, then the
current RM is sent to the Route.NextHopAddress for the RREP's
TargetNode.Address. If no forwarding route exists to Target.Address,
then a RERR is issued to the OrigNode of the RREP.
5.3.5. Adding Additional Routing Information to a RM
Appending routing information can alleviate route discovery attempts
to the nodes whose information is included, if other nodes use this
information to update their routing tables.
Nodes can append routing information to a RM. Appending additional
routing information can help alleviate future RREQ. This option
should be administratively configurable.
Chakeres & Perkins Expires November 3, 2007 [Page 20]
Internet-Draft DYMO May 2007
Prior to appending its own address to a RM, ThisNode MAY increment
its OwnSeqNum as defined in Section 5.1.2. If OwnSeqNum is not
incremented the appended routing information might not be considered
fresh, when received by nodes with existing routing information.
Incrementation of the sequence number when appending information to
an RM in transit should be administratively configurable.
If included ThisNode.HopCnt, it is set to zero (0). Additional
information about the address(es) can also be appended, such as a
PREFIX_LENGTH AddTLV.
5.4. Route Discovery
When a node originates a data packet and does not have a forwarding
route to the IP.DestinationAddress, it sends a RREQ (described in
Section 5.3.1) to discover a route to the particular destination
(TargetNode).
After issuing a RREQ, the OrigNode waits for a route to be created to
the TargetNode. If a route is not created within RREQ_WAIT_TIME,
ThisNode may again try to discover a route by issuing another RREQ.
To reduce congestion in a network, repeated attempts at route
discovery for a particular TargetNode should utilize an exponential
backoff.
For example, the first time a node issues a RREQ, it waits
RREQ_WAIT_TIME for a route to the TargetNode. If a route is not
found within that time, the node MAY send another RREQ. If a route
is not found within two (2) times the current waiting time, another
RREQ may be sent, up to a total of RREQ_TRIES. For each additional
attempt, the waiting time for the previous RREQ is multiplied by two
(2) so that the waiting time conforms to a binary exponential
backoff.
Data packets awaiting a route should be buffered at the source. This
buffer should have a fixed limited size (BUFFER_SIZE_PACKETS or
BUFFER_SIZE_BYTES) and older data packets SHOULD be discarded first.
If a route discovery has been attempted RREQ_TRIES times without
receiving a route to the TargetNode, all data packets destined for
the corresponding TargetNode are dropped from the buffer and a
Destination Unreachable ICMP message should be delivered to the
application.
Chakeres & Perkins Expires November 3, 2007 [Page 21]
Internet-Draft DYMO May 2007
5.5. Route Maintenance
A RERR MUST be issued if a data packet is to be forwarded and it
cannot be delivered to the next hop because no forwarding route for
the IP.Destination exists; RERR generation is described in
Section 5.5.3. In this case, an ICMP Destination Unreachable message
SHOULD NOT be generated, unless this router is responsible for the
IP.Destination and the IP.Destination is not reachable.
In addition to inability to forward a data packet, a RERR SHOULD be
issued immediately after detecting a broken link of an forwarding
route to quickly notify nodes that a link break occurred and that
certain routes are no longer available. If the route with the broken
link has not been used recently (indicated by ROUTE_USED), the RERR
SHOULD NOT be generated.
5.5.1. Active Link Monitoring
Nodes MUST monitor next hop links on forwarding routes. This
monitoring can be accomplished by one or several mechanisms,
including:
o Link layer feedback
o Neighborhood discovery [I-D.ietf-manet-nhdp]
o Route timeout
o Other monitoring mechanisms or heuristics
Upon detecting a link break (or an unreachable next hop) ThisNode
must remove the affected forwarding routes (those with an unreachable
next hop). ThisNode also flags these routes as Broken. For each
broken route a timer for ROUTE_DELETE is set to ROUTE_DELETE_TIMEOUT.
5.5.2. Updating Route Lifetimes During Packet Forwarding
To avoid removing the forwarding route to reach the IP.SourceAddress,
a node SHOULD set a timeout (ROUTE_USED) to ROUTE_USED_TIMEOUT for
the route to the IP.SourceAddress upon receiving a data packet. If a
timer for ROUTE_DELETE is set, it is removed.
To avoid removing the forwarding route to the IP.DestinationAddress
that is being used, a node SHOULD set a timeout (ROUTE_USED) to
ROUTE_USED_TIMEOUT for the route to the IP.DestinationAddress upon
sending a data packet. If a timer for ROUTE_DELETE is set, it is
removed.
Chakeres & Perkins Expires November 3, 2007 [Page 22]
Internet-Draft DYMO May 2007
5.5.3. Route Error Generation
A RERR informs the IP.SourceAddress or RREP.OrigNode.Address that the
route does not exist, and a route is not available through this node.
When creating a new RERR, the address of first UnreachableNode
(IP.DestinationAddress from the data packet or
RREP.TargetNode.Address) is inserted into an Address Block
AddBlk.UnreachableNode.Address. If a value for the UnreachableNode's
SeqNum (UnreachableNode.AddTLV.SeqNum) is known, it SHOULD be placed
in the RERR. The MsgHdr.HopLimit is set to MAX_HOPLIMIT. The
MsgHdr.HopCnt is set to one (1).
Additional UnreachableNodes that require the same unavailable link
(routes with the same Route.NextHopAddress and
Route.NextHopInterface) SHOULD be added to the RERR, as additional
AddBlk.UnreachableNode.Address. The SeqNum if known SHOULD also be
included. Appending UnreachableNode information notifies each
processing node of additional routes that are no longer available.
This option SHOULD be administratively configurable.
If SeqNum information is not known or not included in the RERR, all
nodes processing the RERR will assume their routing information
associated with the UnreachableNode is no longer valid.
The RERR is sent to the IP.DestinationAddress LL MANET ROUTERS.
Sending the RERR to the LL MANET ROUTERS address notifies nearby
nodes that might depend on the now broken link.
The packet or message that forced generation of this RERR is
discarded.
5.5.4. RERR Processing
Before processing a RERR, a node checks the IP.Destination to ensure
that it is a link-local packet.
When a node processes a RERR, it processes each UnreachableNode's
information. The processing node removes the forwarding route and
sets the broken flag for each UnreachableNode.Address found using
longest prefix matching that meet all of the following conditions:
1. The UnreachableNode.Address is a unicast address.
2. The Route.NextHopAddress is the same as the RERR
IP.SourceAddress.
Chakeres & Perkins Expires November 3, 2007 [Page 23]
Internet-Draft DYMO May 2007
3. The Route.NextHopInterface is the same as the interface on which
the RERR was received.
4. The Route.SeqNum is zero (0), unknown, OR the
UnreachableNode.SeqNum is zero (0), unknown, OR Route.SeqNum -
UnreachableNode.SeqNum <= 0 (using signed 16-bit arithmetic).
Each UnreachableNode that did not result in a broken route is removed
from the RERR, since propagation of this information will not result
in any benefit. Any other information (AddTLVs) associated with the
removed address(es) is also removed.
If no UnreachableNode addresses remain in the RERR, no other
processing is required and the RERR is discarded.
If this RERR's MsgHdr.HopLimit is greater than one (1) and at least
one unreachable node address remains in the RERR, then the updated
RERR is sent to the IP.DestinationAddress LL MANET ROUTERS.
5.6. Unknown Message & TLV Types
If a message with an unknown type is received, the message is
discarded.
If a message contains TLVs of an unknown type, a node ignores these
during processing. The processing node can remove these TLVs from
any resulting transmitted messages. The behavior for unknown TLV
types should be administratively configurable.
5.7. Advertising Network Addresses
Any node can advertise a network address by using a PREFIX_LENGTH TLV
[I-D.ietf-manet-packetbb]. Any nodes (other than the advertising
node) within the advertised prefix SHOULD NOT participate in the DYMO
protocol directly and these nodes MUST be reachable by forwarding
packets to the node advertising connectivity. Nodes other than the
advertising node that do participate in DYMO must forward the DYMO
control packets to the advertising node. For example, A.B.C.1 with a
prefix length of 24 indicates all nodes with the matching A.B.C.X are
reachable through the node with address A.B.C.1.
5.8. Simple Internet Attachment and Gatewaying
Simple Internet attachment consists of a network of MANET nodes
connected to the Internet via a single Internet gateway node. The
gateway is responsible for responding to RREQs for TargetNodes
outside its configured DYMO prefix, as well as delivering packets to
destinations outside the MANET.
Chakeres & Perkins Expires November 3, 2007 [Page 24]
Internet-Draft DYMO May 2007
/--------------------------\
/ Internet \
\ /
\------------+-------------/
Gateway's |
Advertised | A.B.C.X
Prefix |
+-----+-----+
| DYMO |
/------| Internet |------\
/ | Gateway | \
/ | A.B.C.1 | \
| +-----------+ |
| DYMO Region |
| |
| +------------+ |
| | DYMO Node | |
| | A.B.C.2 | |
| +------------+ |
| +------------+ |
| | DYMO Node | |
| | A.B.C.3 | |
\ +------------+ /
\ /
\-------------------------/
Figure 7: Simple Internet Attachament Example
DYMO nodes wishing to be reachable from nodes in the Internet MUST
have IP addresses within the gateway's configured and advertised
prefix. Given a node with a globally routeable address or care-of
address handled by the gateway, the gateway is responsible for
routing and forwarding packets received from the Internet destined
for nodes inside its MANET.
When nodes within the MANET want to send messages to nodes in the
Internet, they simply issue RREQ for those IP.DestinationAddresses.
The gateway is responsible for responding to RREQ on behalf of the
Internet destinations and maintaining their associated sequence
numbers.
For an Internet gateway and other nodes that maintain the sequence
number on behalf of other nodes, these routers must be
administratively configurable to know the IP addresses for which they
must generate DYMO messages and maintain OwnSeqNum.
Chakeres & Perkins Expires November 3, 2007 [Page 25]
Internet-Draft DYMO May 2007
5.9. Multiple Interfaces
DYMO may be used with multiple interfaces; therefore, the particular
interface over which packets arrive must be known whenever a packet
is received. Whenever a new route is created, the interface through
which the Route.Address can be reached is also recorded in the route
table entry.
When multiple interfaces are available, a node transmitting a packet
with IP.DestinationAddress set to LL MANET ROUTERS SHOULD send the
packet on all interfaces that have been configured for DYMO
operation.
5.10. Packet/Message Generation Limits
To avoid congestion, a node's rate of packet/message generation
should be limited. The rate and algorithm for limiting messages is
left to the implementor and should be administratively configurable.
Messages should be discarded in the following order of preferences
RREQ, RREP, and finally RERR.
6. Configuration Parameters and Other Administrative Options
Suggested Parameter Values
+------------------------------+------------------------+
| Name | Value |
+------------------------------+------------------------+
| MAX_HOPLIMIT | 10 hops |
| NET_TRAVERSAL_TIME | 1000 milliseconds |
| ROUTE_TIMEOUT | 5 seconds |
| ROUTE_AGE_MIN_TIMEOUT | NET_TRAVERSAL_TIME |
| ROUTE_AGE_MAX_TIMEOUT | 60 seconds |
| ROUTE_NEW_TIMEOUT | ROUTE_TIMEOUT |
| ROUTE_USED_TIMEOUT | ROUTE_TIMEOUT |
| ROUTE_DELETE_TIMEOUT | 2 * ROUTE_TIMEOUT |
| ROUTE_RREQ_WAIT_TIME | 2 * NET_TRAVERSAL_TIME |
| RREQ_TRIES | 3 tries |
| UNICAST_MESSAGE_SENT_TIMEOUT | 1 second |
+------------------------------+------------------------+
Table 2
These suggested values work well for small and medium well connected
networks with infrequent topology changes. These parameters should
be administratively configurable for the network where DYMO is used.
Ideally, for networks with frequent topology changes the DYMO
Chakeres & Perkins Expires November 3, 2007 [Page 26]
Internet-Draft DYMO May 2007
parameters should be adjusted using either experimentally determined
values or dynamic adaptation. For example, in networks with
infrequent topology changes ROUTE_USED_TIMEOUT may be set to a much
larger value.
In addition to the parameters above several administrative options
exist. The following table enumerates several of the options and
suggested values.
Suggested Options Settings
+-------------------------------------+----------------------------+
| Name | Value |
+-------------------------------------+----------------------------+
| RESPONSIBLE_ADDRESSES | Self or Prefix |
| DYMO_INTERFACES | User Specified |
| INCLUDE_INFORMATION | Yes-SeqNum,HopCnt,Prefix |
| APPEND_ADDRESS | Yes - RREQ & RREP |
| APPEND_OWN_ADDRESS_INCREMENT_SEQNUM | Yes for RREQ |
| GENERATE_RERR_IMMEDIATELY | No |
| RERR_INCLUDE_ALL_UNREACHABLES | Yes |
| UNKNOWN_TYPE_HANDLING | Ignore |
| BUFFER_SIZE_PACKETS | 50 packets |
| BUFFER_SIZE_BYTES | 1500 * BUFFER_SIZE_PACKETS |
+-------------------------------------+----------------------------+
Table 3
7. IANA Considerations
DYMO requires a UDP port number to carry protocol packets - TBD.
DYMO also requires the link-local multicast address LL MANET ROUTERS;
IPv4 TBD, IPv6 TBD [I-D.chakeres-manet-iana].
This section specifies several messages types, message tlv-types, and
address tlv-types.
Future types will be allocated using standard actions as described in
[RFC2434].
Chakeres & Perkins Expires November 3, 2007 [Page 27]
Internet-Draft DYMO May 2007
7.1. DYMO Message Type Specification
DYMO Message Types
+------------------------+----------+
| Name | Type |
+------------------------+----------+
| Route Request (RREQ) | 10 - TBD |
| Route Reply (RREP) | 11 - TBD |
| Route Error (RERR) | 12 - TBD |
+------------------------+----------+
Table 4
7.2. Packet TLV Type Specification
Packet TLV Types
+-------------------+------+--------+-------------------------------+
| Name | Type | Length | Value |
+-------------------+------+--------+-------------------------------+
| Unicast Response | 10 - | 0 | Indicates to the processing |
| Request | TBD | | node that the previous hop |
| | | | (IP.SourceAddress) expects a |
| | | | unicast message within |
| | | | UNICAST_MESSAGE_SENT_TIMEOUT. |
| | | | Any unicast packet will serve |
| | | | this purpose, and it MAY be |
| | | | an ICMP REPLY message. If a |
| | | | message is not sent, then the |
| | | | previous hop may assume that |
| | | | the link is unidirectional |
| | | | and may blacklist the link to |
| | | | this node. |
+-------------------+------+--------+-------------------------------+
Table 5
Chakeres & Perkins Expires November 3, 2007 [Page 28]
Internet-Draft DYMO May 2007
7.3. Address Block TLV Specification
Address Block TLV Types
+----------------+------+---------+---------------------------------+
| Name | Type | Length | Value |
+----------------+------+---------+---------------------------------+
| DYMOSeqNum | 10 - | 16 bits | The DYMO sequence num |
| | TBD | | associated with this address. |
| | | | The sequence number may be the |
| | | | last known sequence number. |
| HopCount | 11 - | 8 bits | The number of hops traversed by |
| | TBD | | the information associated with |
| | | | this address. |
| MaxAge | 12 - | Any | The maximum number of |
| | TBD | length | milliseconds that the |
| | | | associated routing information |
| | | | can be kept before being |
| | | | deleted. |
+----------------+------+---------+---------------------------------+
Table 6
8. Security Considerations
Currently, DYMO does not specify any special security measures.
Routing protocols, however, are prime targets for impersonation
attacks. In networks where the node membership is not known, it is
difficult to determine the occurrence of impersonation attacks, and
security prevention techniques are difficult at best. However, when
the network membership is known and there is a danger of such
attacks, DYMO messages must be protected by the use of authentication
techniques, such as those involving generation of unforgeable and
cryptographically strong message digests or digital signatures.
While DYMO does not place restrictions on the authentication
mechanism used for this purpose, IPsec Authentication Message (AH) is
an appropriate choice for cases where the nodes share an appropriate
security association that enables the use of AH.
In particular, RM messages SHOULD be authenticated to avoid creation
of spurious routes to a destination. Otherwise, an attacker could
masquerade as that destination and maliciously deny service to the
destination and/or maliciously inspect and consume traffic intended
for delivery to the destination. RERR messages SHOULD be
authenticated in order to prevent malicious nodes from disrupting
active routes between communicating nodes.
Chakeres & Perkins Expires November 3, 2007 [Page 29]
Internet-Draft DYMO May 2007
If the mobile nodes in the ad hoc network have pre-established
security associations, the purposes for which the security
associations are created should include that of authorizing the
processing of DYMO control packets. Given this understanding, the
mobile nodes should be able to use the same authentication mechanisms
based on their IP addresses as they would have used otherwise.
9. Acknowledgments
DYMO is a descendant of the design of previous MANET reactive
protocols, especially AODV [RFC3561] and DSR [Johnson96]. Changes to
previous MANET reactive protocols stem from research and
implementation experiences. Thanks to Elizabeth Belding-Royer for
her long time authorship of DYMO. Additional thanks to Luke Klein-
Berndt, Pedro Ruiz, Fransisco Ros, Koojana Kuladinithi, Ramon
Caceres, Thomas Clausen, Christopher Dearlove, Seung Yi, Romain
Thouvenin, Tronje Krop and Henner Jakob for reviewing of DYMO, as
well as several specification suggestions.
10. References
10.1. Normative References
[I-D.ietf-manet-packetbb]
Clausen, T., "Generalized MANET Packet/Message Format",
draft-ietf-manet-packetbb-03 (work in progress),
January 2007.
[RFC1812] Baker, F., "Requirements for IP Version 4 Routers",
RFC 1812, June 1995.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an
IANA Considerations Section in RFCs", BCP 26, RFC 2434,
October 1998.
[RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing
Architecture", RFC 4291, February 2006.
10.2. Informative References
[I-D.chakeres-manet-iana]
Chakeres, I., "MANET IANA Needs",
draft-chakeres-manet-iana-02 (work in progress),
Chakeres & Perkins Expires November 3, 2007 [Page 30]
Internet-Draft DYMO May 2007
October 2006.
[I-D.ietf-manet-nhdp]
Clausen, T., "MANET Neighborhood Discovery Protocol
(NHDP)", draft-ietf-manet-nhdp-01 (work in progress),
February 2007.
[Johnson96]
Johnson, D. and D. Maltz, "Dynamic Source Routing (DSR) in
Ad hoc Networks", In Mobile Computing, Chapter 5, pp. 153-
181, 1996.
[Perkins99]
Perkins, C. and E. Belding-Royer, "Ad hoc On-Demand
Distance Vector (AODV) Routing", Proceedings of the 2nd
IEEE Workshop on Mobile Computing Systems and
Applications, New Orleans, LA, pp. 90-100,
February 1999.
[RFC3561] Perkins, C., Belding-Royer, E., and S. Das, "Ad hoc On-
Demand Distance Vector (AODV) Routing", RFC 3561,
July 2003.
Authors' Addresses
Ian D Chakeres
Motorola
Bangalore
India
Email: ian.chakeres@gmail.com
Charles E. Perkins
Palo Alto Systems Research Center
975 Page Mill Road, Suite 200
Palo Alto, CA 94304-1003
USA
Phone: +1-650-496-4402
Fax: +1-650-739-0779
Email: charles.perkins@nokia.com
Chakeres & Perkins Expires November 3, 2007 [Page 31]
Internet-Draft DYMO May 2007
Full Copyright Statement
Copyright (C) The IETF Trust (2007).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Acknowledgment
Funding for the RFC Editor function is provided by the IETF
Administrative Support Activity (IASA).
Chakeres & Perkins Expires November 3, 2007 [Page 32]