draft-ietf-manet-dymo-01.txt   draft-ietf-manet-dymo-02.txt 
Mobile Ad hoc Networks Working I. Chakeres Mobile Ad hoc Networks Working I. Chakeres
Group E. Belding-Royer Group E. Belding-Royer
Internet-Draft UC Santa Barbara Internet-Draft UC Santa Barbara
Expires: November 9, 2005 C. Perkins Expires: December 23, 2005 C. Perkins
Nokia Nokia
May 8, 2005 June 21, 2005
Dynamic MANET On-demand (DYMO) Routing Dynamic MANET On-demand (DYMO) Routing
draft-ietf-manet-dymo-01 draft-ietf-manet-dymo-02
Status of this Memo Status of this Memo
This document is an Internet-Draft and is subject to all provisions By submitting this Internet-Draft, each author represents that any
of Section 3 of RFC 3667. By submitting this Internet-Draft, each applicable patent or other IPR claims of which he or she is aware
author represents that any applicable patent or other IPR claims of have been or will be disclosed, and any of which he or she becomes
which he or she is aware have been or will be disclosed, and any of aware will be disclosed, in accordance with Section 6 of BCP 79.
which he or she become aware will be disclosed, in accordance with
RFC 3668.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as other groups may also distribute working documents as Internet-
Internet-Drafts. Drafts.
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."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. The list of http://www.ietf.org/ietf/1id-abstracts.txt.
Internet-Draft Shadow Directories can be accessed at
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on November 9, 2005. This Internet-Draft will expire on December 23, 2005.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2005). Copyright (C) The Internet Society (2005).
Abstract Abstract
The Dynamic MANET On-demand (DYMO) routing protocol is intended for The Dynamic MANET On-demand (DYMO) routing protocol is intended for
use by mobile nodes in wireless multihop networks. It offers use by mobile nodes in wireless multihop networks. It offers
adaptation to changing network topology and determines unicast routes adaptation to changing network topology and determines unicast routes
between nodes within the network. between nodes within the network.
Table of Contents Table of Contents
1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. Data Structures . . . . . . . . . . . . . . . . . . . . . . . 6 3. Data Structures . . . . . . . . . . . . . . . . . . . . . . . 7
3.1 Route Table Entry . . . . . . . . . . . . . . . . . . . . 6 3.1 Route Table Entry . . . . . . . . . . . . . . . . . . . . 7
3.2 DYMO Message Elements . . . . . . . . . . . . . . . . . . 7 3.2 DYMO Message Elements . . . . . . . . . . . . . . . . . . 8
3.2.1 Generic DYMO Element Structure . . . . . . . . . . . . 7 3.2.1 Generic DYMO Element Structure . . . . . . . . . . . . 9
3.2.2 Routing Element (RE) . . . . . . . . . . . . . . . . . 9 3.2.2 Routing Element (RE) . . . . . . . . . . . . . . . . . 11
3.2.3 Route Error (RERR) . . . . . . . . . . . . . . . . . . 11 3.2.3 Route Error (RERR) . . . . . . . . . . . . . . . . . . 14
3.2.4 Unsupported-element Error (UERR) . . . . . . . . . . . 12 3.2.4 Unsupported-element Error (UERR) . . . . . . . . . . . 15
4. Detailed Operation . . . . . . . . . . . . . . . . . . . . . . 13 4. Detailed Operation . . . . . . . . . . . . . . . . . . . . . . 16
4.1 Sequence Numbers . . . . . . . . . . . . . . . . . . . . . 13 4.1 Sequence Numbers . . . . . . . . . . . . . . . . . . . . . 16
4.1.1 Maintaining a Sequence Number . . . . . . . . . . . . 13 4.1.1 Maintaining a Sequence Number . . . . . . . . . . . . 16
4.1.2 Incrementing a Sequence Number . . . . . . . . . . . . 13 4.1.2 Incrementing a Sequence Number . . . . . . . . . . . . 16
4.1.3 Sequence Number Rollover . . . . . . . . . . . . . . . 13 4.1.3 Sequence Number Rollover . . . . . . . . . . . . . . . 16
4.1.4 Actions After Sequence Number Loss . . . . . . . . . . 13 4.1.4 Actions After Sequence Number Loss . . . . . . . . . . 16
4.2 DYMO Routing Table Operations . . . . . . . . . . . . . . 13 4.2 DYMO Routing Table Operations . . . . . . . . . . . . . . 16
4.2.1 Creating or Updating a Route Table Entry from a 4.2.1 Creating or Updating a Route Table Entry from a
Routing Element Block . . . . . . . . . . . . . . . . 13 Routing Block . . . . . . . . . . . . . . . . . . . . 16
4.2.2 Route Table Entry Timeouts . . . . . . . . . . . . . . 14 4.2.2 Route Table Entry Timeouts . . . . . . . . . . . . . . 18
4.3 General DYMO Processing . . . . . . . . . . . . . . . . . 15 4.3 Routing Element . . . . . . . . . . . . . . . . . . . . . 18
4.3.1 DYMO Control Packet Processing . . . . . . . . . . . . 15 4.3.1 Routing Element Creation . . . . . . . . . . . . . . . 18
4.3.2 Generic Element Pre-processing . . . . . . . . . . . . 15 4.3.2 Routing Element Processing . . . . . . . . . . . . . . 18
4.3.3 Processing Unsupported DYMO Element Types . . . . . . 15 4.3.3 Appending Additional Routing Information to an
4.3.3.1 Generating an Unsupported-element Error . . . . . 16 Existing Routing Element . . . . . . . . . . . . . . . 19
4.3.4 Generic Element Post-processing . . . . . . . . . . . 16 4.4 Route Discovery . . . . . . . . . . . . . . . . . . . . . 19
4.3.5 DYMO Control Packet Transmission . . . . . . . . . . . 16 4.5 Route Maintenance . . . . . . . . . . . . . . . . . . . . 20
4.4 Routing Element . . . . . . . . . . . . . . . . . . . . . 17 4.5.1 Active Link Monitoring . . . . . . . . . . . . . . . . 20
4.4.1 Routing Element Creation . . . . . . . . . . . . . . . 17 4.5.2 Updating Route Lifetimes . . . . . . . . . . . . . . . 21
4.4.2 Routing Element Processing . . . . . . . . . . . . . . 17 4.5.3 Route Error Generation . . . . . . . . . . . . . . . . 21
4.4.3 Appending Additional Routing Information to an 4.5.4 Route Error Processing . . . . . . . . . . . . . . . . 22
Existing Routing Element . . . . . . . . . . . . . . . 18 4.6 General DYMO Processing . . . . . . . . . . . . . . . . . 22
4.5 Route Discovery . . . . . . . . . . . . . . . . . . . . . 18 4.6.1 DYMO Control Packet Processing . . . . . . . . . . . . 22
4.6 Route Maintenance . . . . . . . . . . . . . . . . . . . . 19 4.6.2 Generic Element Pre-processing . . . . . . . . . . . . 22
4.6.1 Active Link Monitoring . . . . . . . . . . . . . . . . 19 4.6.3 Processing Unsupported DYMO Element Types . . . . . . 23
4.6.2 Updating Route Lifetimes . . . . . . . . . . . . . . . 19 4.6.3.1 Generating an Unsupported-element Error . . . . . 23
4.6.3 Route Error Generation . . . . . . . . . . . . . . . . 19 4.6.4 Generic Element Post-processing . . . . . . . . . . . 24
4.6.4 Route Error Processing . . . . . . . . . . . . . . . . 20 4.6.5 DYMO Control Packet Transmission . . . . . . . . . . . 24
4.7 Routing Prefix . . . . . . . . . . . . . . . . . . . . . . 20 4.7 Routing Prefix . . . . . . . . . . . . . . . . . . . . . . 24
4.8 Internet Attachment . . . . . . . . . . . . . . . . . . . 21 4.8 Internet Attachment . . . . . . . . . . . . . . . . . . . 25
4.9 Multiple Interfaces . . . . . . . . . . . . . . . . . . . 21 4.9 Multiple Interfaces . . . . . . . . . . . . . . . . . . . 25
4.10 Packet Generation Limits . . . . . . . . . . . . . . . . . 22 4.10 Packet Generation Limits . . . . . . . . . . . . . . . . . 25
5. Configuration Parameters . . . . . . . . . . . . . . . . . . . 23 5. Configuration Parameters . . . . . . . . . . . . . . . . . . . 26
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 27
7. Security Considerations . . . . . . . . . . . . . . . . . . . 25 7. Security Considerations . . . . . . . . . . . . . . . . . . . 28
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 26 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 29
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 27 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 30
9.1 Normative References . . . . . . . . . . . . . . . . . . . 27 9.1 Normative References . . . . . . . . . . . . . . . . . . . 30
9.2 Informative References . . . . . . . . . . . . . . . . . . 27 9.2 Informative References . . . . . . . . . . . . . . . . . . 30
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 27 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 30
Intellectual Property and Copyright Statements . . . . . . . . 29 Intellectual Property and Copyright Statements . . . . . . . . 32
1. Overview 1. Overview
The Dynamic MANET On-demand (DYMO) routing protocol enables reactive, The Dynamic MANET On-demand (DYMO) routing protocol enables reactive,
multihop routing between participating nodes that wish to multihop routing between participating nodes that wish to
communicate. The basic operations of the DYMO protocol are route communicate. The basic operations of the DYMO protocol are route
discovery and management. During route discovery the originating discovery and management. During route discovery the originating
node initiates dissemination of a Route Request (RREQ) throughout the node initiates dissemination of a Route Request (RREQ) throughout the
network to find the target node. During this dissemination process, network to find the target node. During this dissemination process,
each intermediate node records a route to the originating node. When each intermediate node records a route to the originating node. When
the target node receives the RREQ, it responds with a Route Reply the target node receives the RREQ, it responds with a Route Reply
(RREP), unicast toward the originating node. Each node that receives (RREP) unicast toward the originating node. Each node that receives
the RREP records a route to the target node, and then the RREP is the RREP records a route to the target node, and then the RREP is
unicast toward the originating node. When the originating node unicast toward the originating node. When the originating node
receives the RREP, routes have then been established between the receives the RREP, routes have then been established between the
originating node and the target node in both directions. originating node and the target node in both directions.
In order to react to changes in the network topology nodes maintain In order to react to changes in the network topology nodes maintain
their routes and monitor their links. When a packet is received for their routes and monitor their links. When a packet is received for
a route that is no longer available the source of the packet is a route that is no longer available the source of the packet is
notified. A Route Error (RERR) is sent to the packet source to notified. A Route Error (RERR) is sent to the packet source to
indicate the current route is broken. Once the source receives the indicate the current route is broken. Once the source receives the
skipping to change at page 5, line 8 skipping to change at page 5, line 8
DYMO uses sequence numbers as they have been proven to ensure loop DYMO uses sequence numbers as they have been proven to ensure loop
freedom [3]. Sequence numbers enable nodes to determine the order of freedom [3]. Sequence numbers enable nodes to determine the order of
DYMO route discovery packets, thereby avoiding use of stale routing DYMO route discovery packets, thereby avoiding use of stale routing
information. information.
All DYMO packets are transmitted via UDP on port TBD. All DYMO packets are transmitted via UDP on port TBD.
2. Terminology 2. Terminology
IP Destination Address (IPDestinationAddress) IP Destination Address (IPDestinationAddress)
The destination of a packet, indicated by examining the IP The destination of a packet, indicated by examining the IP
header. header.
IP Source Address (IPSourceAddress) IP Source Address (IPSourceAddress)
The source of a packet, indicated by examining the IP header. The source of a packet, indicated by examining the IP header.
DYMOcast DYMOcast
Packet transmission to all MANET routers within reception
range. DYMOcast packets should be sent with an Packet transmission to all DYMO routers. DYMOcast packets
IPDestinationAddress of IPv4 TBD (IPv6 TBD), the should be sent with an IPDestinationAddress of IPv4 TBD (IPv6
DYMOcastAddress. TBD), the DYMOcastAddress.
Routing Element (RE) Routing Element (RE)
A DYMO message element that is used to distribute routing A DYMO message element that is used to distribute routing
information. information.
Route Invalidation Route Invalidation
Disabling the use of a route, causing it to be unavailable for Disabling the use of a route, causing it to be unavailable for
forwarding data. forwarding data.
Route Reply (RREP) Route Reply (RREP)
Upon receiving a RREQ, the target node generates a Route Reply Upon receiving a RREQ, the target node generates a Route Reply
(RREP). A RREP is a RE with a unicast IPDestinationAddress, (RREP). A RREP is a RE with a unicast IPDestinationAddress,
indicating that this RE is to be unicast hop-by-hop toward the indicating that this RE is to be unicast hop-by-hop toward the
TargetAddress. TargetAddress.
Route Request (RREQ) Route Request (RREQ)
A node generates a Route Request (RREQ) to discover a valid A node generates a Route Request (RREQ) to discover a valid
route to a particular destination (TargetAddress). A RREQ is route to a particular destination (TargetAddress). A RREQ is
simply a RE with the DYMOcastAddress in the simply a RE with the DYMOcastAddress in the
IPDestinationAddress field of the IP packet. Also, the A-bit IPDestinationAddress field of the IP packet. Also, the A-bit
is set to one (A=1) to indicate that the TargetNode must is set to one (A=1) to indicate that the TargetNode must
respond with a RREP. respond with a RREP.
Valid Route Valid Route
A known route where the Route.ValidTimeout is greater than the A known route where the Route.ValidTimeout is greater than the
current time. current time.
3. Data Structures 3. Data Structures
3.1 Route Table Entry 3.1 Route Table Entry
The route table entry is a conceptual data structure. The route table entry is a conceptual data structure.
Implementations may use any internal representation that conforms to Implementations may use any internal representation that conforms to
the semantics of a route as specified in this document. the semantics of a route as specified in this document.
skipping to change at page 8, line 9 skipping to change at page 9, line 44
Figure 2 Figure 2
The Type field identifies the element as well as the handling The Type field identifies the element as well as the handling
by nodes that do not implement or understand the element. The by nodes that do not implement or understand the element. The
most significant bit, the M-bit, denotes whether the element most significant bit, the M-bit, denotes whether the element
requires notification via an Unsupported-element Error (UERR) requires notification via an Unsupported-element Error (UERR)
when the element is not understood or handled by a particular when the element is not understood or handled by a particular
node. The next two bits, H-bits, identify how the Type is to node. The next two bits, H-bits, identify how the Type is to
be handled by nodes not implementing the Type, regardless of be handled by nodes not implementing the Type, regardless of
UERR delivery. Section 4.3.3 describes the handling behavior UERR delivery. Section 4.6.3 describes the handling behavior
based on the Type. based on the Type.
I-bit (I) I-bit (I)
1-bit selector indicating whether the element has been ignored 1-bit selector indicating whether the element has been ignored
by some node that has relayed this element. If I=1 the element by some node that has relayed this element. If I=1 the element
has been ignored. has been ignored.
Reserved (Reserved, Reservd, Res, R) Reserved (Reserved, Reservd, Res, R)
Reserved bits. These bits are set to zero (0) during element Reserved bits. These bits are set to zero (0) during element
creation and ignored during processing. creation and ignored during processing.
Element Time to Live (TTL) Element Time to Live (TTL)
6-bit field that identifies the maximum number of times the 6-bit field that identifies the maximum number of times the
element is to be retransmitted. The TTL field operates similar element is to be retransmitted. The TTL field operates similar
to IPTTL (MaxCount) and is decremented at each hop. When TTL to IPTTL (MaxCount) and is decremented at each hop. When TTL
reaches zero (0) the element is dropped. reaches zero (0) the element is dropped.
Element Length (Len) Element Length (Len)
12-bit field that indicates the size of the element in bytes, 12-bit field that indicates the size of the element in bytes,
including the fixed portion. including the fixed portion.
Element Notify Address (NotifyAddress) Element Notify Address (NotifyAddress)
The node to send a UERR if the Element Type is unsupported or The node to send a UERR if the Element Type is unsupported or
not handled by the processing node. The NotifyAddress field is not handled by the processing node. The NotifyAddress field is
only present if the Type field has the M-bit is set to one (1). only present if the Type field has the M-bit is set to one (1).
Element Target Address (TargetAddress) Element Target Address (TargetAddress)
The node that is the ultimate destination of the element. This The node that is the ultimate destination of the element. This
field is only required if the IPDestinationAddress is not the field is only required if the IPDestinationAddress is not the
DYMOcastAddress. During hop-by-hop transmission of a DYMO DYMOcastAddress. During hop-by-hop transmission of a DYMO
packet the IPDestinationAddress is filled with the packet the IPDestinationAddress is filled with the
Route.NextHopAddress of the route table entry associated with Route.NextHopAddress of the route table entry associated with
the TargetAddress. the TargetAddress.
Element Data (Data) Element Data (Data)
Type-specific payload. Type-specific payload.
3.2.2 Routing Element (RE) 3.2.2 Routing Element (RE)
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Len | TTL |I|A| Res | | Type | Len | TTL |I|A| Res |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. TargetAddress . . TargetAddress .
skipping to change at page 9, line 19 skipping to change at page 11, line 24
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Len | TTL |I|A| Res | | Type | Len | TTL |I|A| Res |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. TargetAddress . . TargetAddress .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TargetSeqNum | | TargetSeqNum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| THopCnt |Res| . | THopCnt |Res| .
+-+-+-+-+-+-+-+-+ . +-+-+-+-+-+-+-+-+ .
. . . .
. Routing Element Blocks (1 or more) . . Routing Block 1 (RBlock1) .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. Additional Routing Blocks .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3 Figure 3
A-bit (A) A-bit (A)
1-bit selector indicating whether this RE requires a RREP by 1-bit selector indicating whether this RE requires a RREP by
the TargetAddress. If A=1 a RREP is required. The the TargetAddress. If A=1 a RREP is required. The
instructions for generating a RREP are described in instructions for generating a RREP are described in
Section 4.4.2. Section 4.3.2.
Element Target Address (TargetAddress) Element Target Address (TargetAddress)
The node that is the ultimate destination of the Routing The node that is the ultimate destination of the Routing
Element. Element.
Target Sequence Number (TargetSeqNum) Target Sequence Number (TargetSeqNum)
The sequence number of the ultimate destination of this Routing The sequence number of the ultimate destination of this Routing
Element. If the Sequence Number is unknown for this particular Element. If the Sequence Number is unknown for this particular
Route.DestAddress then TargetSeqNum is set to zero (0). Route.DestAddress then TargetSeqNum is set to zero (0).
Target Hop Count (THopCnt) Target Hop Count (THopCnt)
6-bit field that identifies the number of intermediate nodes 6-bit field that identifies the number of intermediate nodes
through which a packet traversed on the route to this through which a packet traversed on the route to this
particular TargetAddress the last time a route was available. particular TargetAddress the last time a route was available.
The THopCnt is the Route.HopCnt of the TargetAddress, stored in The THopCnt is the Route.HopCnt of the TargetAddress, stored in
the routing table of the RREQ originator. If the hop count the routing table of the RREQ originator. If the hop count
information is not available at the originating node then the information is not available at the originating node then the
THopCnt is set to zero (0). THopCnt is set to zero (0).
Routing Element Block (REBlock) Routing Block (RBlock)
Data structure that describes routing information related to a Data structure that describes routing information related to a
particular IP address, RENodeAddress. particular IP address, RBNodeAddress.
Routing Element Block (REBlock) Routing Block (RBlock)
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|G| Prefix |Reservd| REHopCnt | |G| RBPrefix |Res| RBHopCnt |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. RENodeAddress . . RBNodeAddress .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RENodeSeqNum | | RBNodeSeqNum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 4 Figure 4
G-bit (G) G-bit (G)
1-bit selector to indicate whether the RENodeAddress is a 1-bit selector to indicate whether the RBNodeAddress is a
gateway. If G=1 RENodeAddress is a gateway. For more gateway. If G=1 RBNodeAddress is a gateway. For more
information on gateway operation see Section 4.8. information on gateway operation see Section 4.8.
Prefix Size (Prefix) Prefix Size (Prefix)
6-bit field that specifies the size of the subnet reachable
7-bit field that specifies the size of the subnet reachable
through the associated node, see Section 4.7. The through the associated node, see Section 4.7. The
definition of Prefix is different for gateways. definition of Prefix is different for gateways.
Routing Element Block Hop Count (REHopCnt) Routing Block Hop Count (RBHopCnt)
6-bit field that identifies the number of intermediate nodes 6-bit field that identifies the number of intermediate nodes
through which the associated REBlock has passed. through which the associated RBlock has passed.
Routing Element Node Address (RENodeAddress) Routing Block Node Address (RBNodeAddress)
The IP address of the node associated with this REBlock.
Routing Element Node Sequence Number (RENodeSeqNum) The IP address of the node associated with this RBlock.
The sequence number of the node associated with this
REBlock. Routing Block Node Sequence Number (RBNodeSeqNum)
The sequence number of the node associated with this RBlock.
3.2.3 Route Error (RERR) 3.2.3 Route Error (RERR)
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Len | TTL |I|Reserved | | Type | Len | TTL |I|Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. UNodeAddress1 . . UNodeAddress1 .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
skipping to change at page 11, line 24 skipping to change at page 14, line 24
| UNodeSeqNum1 | | UNodeSeqNum1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. Additional UNodeAddressN (if needed) . . Additional UNodeAddressN (if needed) .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Additional UNodeSeqNumN (if needed) | | Additional UNodeSeqNumN (if needed) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 5 Figure 5
Unreachable Node Address (UNodeAddress) Unreachable Node Address (UNodeAddress)
The IP address of the unreachable node. The IP address of the unreachable node.
Unreachable Node Sequence Number (UNodeSeqNum) Unreachable Node Sequence Number (UNodeSeqNum)
The sequence number of the unreachable node, if known; The sequence number of the unreachable node, if known;
otherwise, zero (0). RERR generation is described in otherwise, zero (0). RERR generation is described in
Section 4.6.3. Section 4.5.3.
3.2.4 Unsupported-element Error (UERR) 3.2.4 Unsupported-element Error (UERR)
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Len | TTL |I|Reserved | | Type | Len | TTL |I|Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. TargetAddress . . TargetAddress .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
skipping to change at page 13, line 13 skipping to change at page 16, line 13
The Type that required generation of the UERR. The Type that required generation of the UERR.
4. Detailed Operation 4. Detailed Operation
4.1 Sequence Numbers 4.1 Sequence Numbers
4.1.1 Maintaining a Sequence Number 4.1.1 Maintaining a Sequence Number
DYMO requires each node in the network to maintain its own sequence DYMO requires each node in the network to maintain its own sequence
number (OwnSeqNum). The circumstances for a node to change its number (OwnSeqNum). The circumstances for a node to change its
OwnSeqNum are described in Section 4.4.1. OwnSeqNum are described in Section 4.3.1.
4.1.2 Incrementing a Sequence Number 4.1.2 Incrementing a Sequence Number
When a node increments its OwnSeqNum (as described in Section 4.4.1 When a node increments its OwnSeqNum (as described in Section 4.3.1
and Section 4.4.2) it MUST do so by treating the sequence number and Section 4.3.2) it MUST do so by treating the sequence number
value as if it was an unsigned number. The sequence number zero (0) value as if it was an unsigned number. The sequence number zero (0)
is reserved and is used in several DYMO data structures to represent is reserved and is used in several DYMO data structures to represent
an unknown sequence number. an unknown sequence number.
4.1.3 Sequence Number Rollover 4.1.3 Sequence Number Rollover
If the sequence number has been assigned to be the largest possible If the sequence number has been assigned to be the largest possible
number representable as a 32-bit unsigned integer (i.e., 4294967295), number representable as a 32-bit unsigned integer (i.e., 4294967295),
then the sequence number MUST be set to one (1) when incremented. then the sequence number MUST be set to one (1) when incremented.
skipping to change at page 13, line 45 skipping to change at page 16, line 45
If a DYMO control packet is received during this period, the node If a DYMO control packet is received during this period, the node
SHOULD process it normally but MUST not retransmit any DYMO control SHOULD process it normally but MUST not retransmit any DYMO control
packets. If a data packet is received during this waiting period the packets. If a data packet is received during this waiting period the
node MUST send a RERR message to the IPSourceAddress with the node MUST send a RERR message to the IPSourceAddress with the
UNodeSeqNum set to zero (0) and restart its waiting period before UNodeSeqNum set to zero (0) and restart its waiting period before
transmitting any DYMO control packets except RERR generated by this transmitting any DYMO control packets except RERR generated by this
node. node.
4.2 DYMO Routing Table Operations 4.2 DYMO Routing Table Operations
4.2.1 Creating or Updating a Route Table Entry from a Routing Element 4.2.1 Creating or Updating a Route Table Entry from a Routing Block
Block
While processing a RE, as described in Section 4.4.2, a node checks While processing a RE, as described in Section 4.3.2, a node checks
its routing table for an entry to the RENodeAddress using its routing table for an entry to the RBNodeAddress using longest-
longest-prefix matching. In the event that no matching entry is prefix matching. In the event that no matching entry is found, an
found, an entry is created. entry is created.
If a matching entry is found, the routing information about If a matching entry is found, the routing information about
RENodeAddress contained in this REBlock is considered stale if: RBNodeAddress contained in this RBlock is considered stale if:
o the result of subtracting the Route.SeqNum from RENodeSeqNum is
o the result of subtracting the Route.SeqNum from RBNodeSeqNum is
less than zero (0) using signed 32-bit arithmetic, OR less than zero (0) using signed 32-bit arithmetic, OR
o the result of subtracting the Route.SeqNum from RENodeSeqNum is
equal to zero (0) using signed 32-bit arithmetic AND the REHopCnt o the result of subtracting the Route.SeqNum from RBNodeSeqNum is
equal to zero (0) using signed 32-bit arithmetic AND the RBHopCnt
is greater than Route.HopCnt. is greater than Route.HopCnt.
If there exists a valid route AND the result of subtracting the If there exists a route AND the result of subtracting the
Route.SeqNum from RENodeSeqNum is equal to zero (0) using signed Route.SeqNum from RBNodeSeqNum is equal to zero (0) using signed 32-
32-bit arithmetic AND the REHopCnt is equal to the Route.HopCnt in bit arithmetic AND the RBHopCnt is equal to the Route.HopCnt in this
this REBLock the information is not stale, but the routing RBlock the information is not stale, but the routing information
information SHOULD be disregarded and no routing update should occur. SHOULD be disregarded and no routing update should occur.
If the information in this REBLock is stale or disregarded and this If the information in this RBlock is stale or disregarded and this
REBlock is the first node in the RE this DYMO packet MUST be dropped. RBlock is the first node in the RR this DYMO packet MUST be dropped.
For other REBlocks containing stale or disregarded routing For other RBlocks containing stale or disregarded routing
information, the REBlock is simply removed from this RE and the RELen information, the RBlock is simply removed from this RE and the RELen
adjusted. Removing stale and disregarded REBlocks ensures that adjusted. Removing stale and disregarded RBlocks ensures that unused
unused information is not propagated further. information is not propagated further.
If the route information for RENodeAddress is not stale or If the route information for RBNodeAddress is not stale or
disregarded, then the following actions occur to the route table disregarded, then the following actions occur to the route table
entry for RENodeAddress: entry for RBNodeAddress:
1. the Route.HopCnt is set to the REHopCnt,
1. the Route.HopCnt is set to the RBHopCnt,
2. the Route.IsGateway is set to the G-bit, 2. the Route.IsGateway is set to the G-bit,
3. the Route.DeleteTimeout is set to the current time +
ROUTE_DELETE_TIMEOUT, 3. the Route.NextHopAddress is set to the node that transmitted this
4. the Route.NextHopAddress is set to the node that transmitted this
DYMO packet (IPSourceAddress), DYMO packet (IPSourceAddress),
5. the Route.NextHopInterface is set to the interface that this DYMO
4. the Route.NextHopInterface is set to the interface that this DYMO
packet was received on, packet was received on,
6. the Route.Prefix is set to Prefix,
7. the Route.SeqNum is set to the RENodeSeqNum, 5. the Route.Prefix is set to RBPrefix,
8. and the Route.ValidTimeout is set to the current time +
6. the Route.SeqNum is set to the RBNodeSeqNum,
7. and the Route.ValidTimeout is set to the current time +
ROUTE_TIMEOUT. ROUTE_TIMEOUT.
If a valid route exists to RENodeAddress, the route can be used to If a valid route exists to RBNodeAddress, the route can be used to
send any queued data packets and to fulfill any outstanding route send any queued data packets and to fulfill any outstanding route
requests. requests.
4.2.2 Route Table Entry Timeouts 4.2.2 Route Table Entry Timeouts
If the current time is later than a routing entry's If the current time is later than a routing entry's
Route.ValidTimeout, the route is stale and it is not be used to route Route.ValidTimeout, the route is stale and it is not be used to route
packets. The information in invalid entries may still be useful for packets. The information in invalid entries is still used for
generating RREQ messages. generating RREQ messages.
If the current time is after Route.DeleteTimeout the corresponding If the current time is after Route.DeleteTimeout the corresponding
routing table entry MUST be deleted. routing table entry MUST be deleted.
4.3 General DYMO Processing 4.3 Routing Element
4.3.1 DYMO Control Packet Processing
A DYMO packet may consist of multiple DYMO elements. Each element is
processed individually and in sequence, from first to last. An
incoming DYMO packet MUST be completely processed prior to any DYMO
packet transmissions.
The length of IP addresses (32-bits for IPv4 and 128-bits for IPv6)
inside DYMO elements is dependent on the IP packet header. For
example, if the IP header is IPv6 then all DYMO elements contained in
the payload use IPv6 addresses.
Unless specific element processing requires dropping the DYMO packet,
it is retransmitted after processing, according to the method
described in Section 4.3.5.
4.3.2 Generic Element Pre-processing
Each element in a DYMO packet undergoes pre-processing before the
element specific processing occurs. During pre-processing, the TTL
is decremented by one (1).
4.3.3 Processing Unsupported DYMO Element Types
This section describes the processing for unsupported DYMO element
Types. The Type field identifies the handling by nodes that do not
implement, support or understand a particular Element Type. The most
significant bit (M-bit) indicates whether an Unsupported-element
Error (UERR) SHOULD be sent to the NotifyAddress. The next two bits
(H-bits) identify how the element should be handled.
0 0
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
| Type | = |M| H | |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
If the M-bit is set in a DYMO element being processed by a node that
does not support this Element Type a UERR SHOULD be sent to the
NotifyAddress. This is accomplished by following the instructions in
Section 4.3.3.1.
Regardless of whether or not a UERR is sent in response to this
unsupported Element Type, the processing node MUST also examine the
H-bits to determine how this unsupported element is handled. The
unsupported element Type MUST be handled as follows:
o If H == 00 skip the element and continue as if the packet did not
contain this element.
o If H == 01 remove the unsupported element (using the Len field)
from the packet and continue as if the packet did not include this
element.
o If H == 10 set the ignored bit (I-bit) skip this element and
continue, as if the packet did not contain this element.
o If H == 11 drop the packet without processing any other DYMO
elements.
4.3.3.1 Generating an Unsupported-element Error
When an unsupported element type is received with the M-bit set, the
processing node SHOULD generate an Unsupported-element Error (UERR).
The TargetAddress is set to the NotifyAddress. The
IPDestinationAddress is set to the Route.NextHopAddress toward the
NotifyAddress. The UElemTargetAddress is set to the TargetAddress
from the unsupported element. The UERRNodeAddress is set to the node
address generating this UERR. The UElemType is the Type from the
unsupported element. The TTL SHOULD be set to NET_DIAMETER, but MAY
be set smaller. The Len is set to the total number of bytes in this
UERR. The element is then processed as described in Section 4.3.4.
4.3.4 Generic Element Post-processing
If the first element TTL is zero (0) the DYMO packet is dropped after
processing of all elements. If the TTL of the first element is
greater than zero the DYMO packet is re-transmitted after processing
of all elements. If the TTL of any element is zero (0) after
processing it MUST be removed from the DYMO packet prior to
transmission.
4.3.5 DYMO Control Packet Transmission
DYMO packet transmission and re-transmission is controlled by the 4.3.1 Routing Element Creation
IPDestinationAddress. If the IPDestinationAddress is a unicast
address, the packet IPDestinationAddress is replaced by the
Route.NextHopAddress from a route table lookup for the TargetAddress.
If a route for the TargetAddress is unknown or invalid the packet is
dropped and a RERR SHOULD be generated.
For all currently defined DYMO packets the IPTTL (IPMaxCount) SHOULD When a node creates a RREQ it SHOULD increment its OwnSeqNum by one
be set to 1 (IPTTL=1), since all DYMO packet communications are according to the rules specified in Section 4.1.2. When a node
between direct neighbors. creates a RREP, then it increments its OwnSeqNum under the following
conditions:
4.4 Routing Element o TargetSeqNum is greater than OwnSeqNum OR
4.4.1 Routing Element Creation o TargetSeqNum is equal to OwnSeqNum AND THopCnt is less than to
RBHopCnt.
When a node creates a RE it MUST increment its OwnSeqNum by one In either case (for RREQ or RREP), the node MUST create the first
according to the rules specified in Section 4.1.2, except under the RBlock. It sets the RBNodeAddress to its own address. The
following conditions: The RE being created is a RREP AND either the RBNodeSeqNum is the node's OwnSeqNum. The node may advertise a
o TargetSeqNum is less than OwnSeqNum OR
o TargetSeqNum is equal to OwnSeqNum AND the and THopCnt is less
than or equal to HopCnt.
Then the node sets the RENodeAddress1 to its own address. The
RENodeSeqNum1 is the node's OwnSeqNum. The node may advertise a
prefix using the Prefix field, as described in Section 4.7. prefix using the Prefix field, as described in Section 4.7.
Otherwise, the Prefix field is set to zero (0). The node may Otherwise, the Prefix field is set to zero (0). The node may
advertise it is a gateway by setting the G-bit if it is a gateway, as advertise it is a gateway by setting the G-bit if it is a gateway, as
described in Section 4.8. Otherwise, the G-bit is set to zero (0). described in Section 4.8. Otherwise, the G-bit is set to zero (0).
The TTL SHOULD be set to NET_DIAMETER, but MAY be set smaller. For The TTL SHOULD be set to NET_DIAMETER, but MAY be set smaller. For
the case of RREQ, the TTL MAY be set in accordance with an expanding the case of RREQ, the TTL MAY be set in accordance with an expanding
ring search as described in [2]. ring search as described in [2].
4.4.2 Routing Element Processing 4.3.2 Routing Element Processing
After general DYMO element pre-processing (Section 4.3.2), the After general DYMO element pre-processing (Section 4.6.2), the
REHopCnt for the first REBlock is incremented by one (1). A route to RBHopCnt for the first RBlock is incremented by one (1). A route to
the first REBlock is then created or updated, as described in the first RBlock is then created or updated, as described in
Section 4.2.1. If this REBlock does not result in a valid route the Section 4.2.1. If this RBlock does not result in a valid route the
packet MUST be dropped. packet MUST be dropped.
Each additional REBlock SHOULD be processed. For each REBlock the Each additional RBlock SHOULD be processed. For each RBlock the
REHopCnt is incremented by one (1), then a route is created or RBHopCnt is incremented by one (1), then a route is created or
updated as defined in Section 4.2.1. Each REBlock resulting in a updated as defined in Section 4.2.1. Each RBlock resulting in a
valid route entry may alleviate a future route discovery. Any valid route entry may alleviate a future route discovery. Any
REBlocks that do not result in a valid route update or that are not RBlocks that do not result in a valid route update or that are not
processed MUST be removed from the RE. processed MUST be removed from the RE.
If this node is the TargetAddress AND the A-bit is set (A=1), this If this node is the TargetAddress AND the A-bit is set (A=1), this
node MUST respond with a RREP. The target node creates a new RE as node MUST respond with a RREP. The target node creates a new RE as
described in Section 4.4.1. The TargetAddress in the new RE is set described in Section 4.3.1. The TargetAddress in the new RE is set
to the RENodeAddress1 from the RE currently being processed. The to the RBNodeAddress1 from the RE currently being processed. The
THopCnt is the hop count for the TargetAddress. The A-bit is set to THopCnt is the hop count for the TargetAddress. The A-bit is set to
(A=0). The IPDestinationAddress is set to the Route.NextHopAddress (A=0). The IPDestinationAddress is set to the Route.NextHopAddress
for the TargetAddress. The TargetSeqNum is set to Route.SeqNum for for the TargetAddress. The TargetSeqNum is set to Route.SeqNum for
the TargetAddress. Then the new RE undergoes post-processing, the TargetAddress. Then the new RE undergoes post-processing,
according to Section 4.3.4. according to Section 4.6.4.
After processing a RE, a node MAY append its routing information to After processing a RE, a node MAY append its routing information to
the RE, according to the process described in Section 4.4.3. The the RE, according to the process described in Section 4.3.3. The
additional routing information will reduce route discoveries to this additional routing information will reduce route discoveries to this
node. node.
If this node is not the TargetAddress, the current RE SHOULD be If this node is not the TargetAddress, the current RE SHOULD be
handled according to Section 4.3.4. handled according to Section 4.6.4.
If this node is the TargetAddress, the current packet and any If this node is the TargetAddress, the current packet and any
additional elements are processed, but this packet is not additional elements are processed, but this packet is not
retransmitted. retransmitted.
4.4.3 Appending Additional Routing Information to an Existing Routing 4.3.3 Appending Additional Routing Information to an Existing Routing
Element Element
Appending routing information will alleviate route discovery attempts Appending routing information will alleviate route discovery attempts
to this node from other nodes that process the resultant RE. Nodes to this node from other nodes that process the resultant RE. Nodes
SHOULD append a REBlock to RE processed. SHOULD append a RBlock to RE processed.
Prior to appending a REBlock to a RE, a node MUST increment its Prior to appending a RBlock to a RE, a node MUST increment its
OwnSeqNum as defined in Section 4.1.2. Then it appends its IP OwnSeqNum as defined in Section 4.1.2. Then it appends its IP
address, OwnSeqNum, Prefix and G-bit to the RE in a REBlock. The address, OwnSeqNum, Prefix and G-bit to the RE in a RBlock. The
REHopCnt is set to zero (0). The RE Len is also adjusted according RBHopCnt is set to zero (0). The RE Len is also adjusted according
to the number of REBlocks in the RE. to the number of RBlocks in the RE.
4.5 Route Discovery 4.4 Route Discovery
A node generates a Route Request (RREQ) to discover a valid route to A node generates a Route Request (RREQ) to discover a valid route to
a particular destination (TargetAddress). A RREQ is a RE with the a particular destination (TargetAddress). A RREQ is a RE with the
A-bit is set to one (A=1) to indicate that the TargetNode must A-bit is set to one (A=1) to indicate that the TargetNode must
respond with a RREP. If a sequence number is known for the respond with a RREP. If a sequence number is known for the
TargetAddress it is placed in the TargetSeqNum field. Otherwise, TargetAddress it is placed in the TargetSeqNum field. Otherwise,
TargetSeqNum is set to zero (0). Similarly, if a hop count is known TargetSeqNum is set to zero (0). Similarly, if a hop count is known
for the TargetAddress it is placed in the THopCnt field. Otherwise, for the TargetAddress it is placed in the THopCnt field. Otherwise,
the THopCnt is set to zero (o). The IPDestinationAddress is set to the THopCnt is set to zero ()). The IPDestinationAddress is set to
the DYMOcastAddress. Then the RE is then transmitted according to the DYMOcastAddress. Then the RE is then transmitted according to
the procedure defined in Section 4.3.5. the procedure defined in Section 4.6.5.
After issuing a RREQ, the originating node waits for a route to be After issuing a RREQ, the originating node waits for a route to be
created to the TargetNode. If a route is not received within created to the TargetNode. If a route is not received within
RREQ_WAIT_TIME milliseconds, this node MAY again try to discover a RREQ_WAIT_TIME milliseconds, this node MAY again try to discover a
route by issuing another RREQ. route by issuing another RREQ.
To reduce congestion in a network, repeated attempts at route To reduce congestion in a network, repeated attempts at route
discovery for a particular TargetNode SHOULD utilize a binary discovery for a particular TargetNode SHOULD utilize a binary
exponential backoff. The first time a node issues a RREQ, it waits exponential backoff. The first time a node issues a RREQ, it waits
RREQ_WAIT_TIME milliseconds for a route to the TargetNode. If a RREQ_WAIT_TIME milliseconds for a route to the TargetNode. If a
skipping to change at page 19, line 15 skipping to change at page 20, line 30
exponential backoff. exponential backoff.
Data packets awaiting for a route SHOULD be buffered. Data packets awaiting for a route SHOULD be buffered.
If a route discovery has been attempted RREQ_TRIES times without If a route discovery has been attempted RREQ_TRIES times without
receiving a route to the TargetNode, all data packets destined for receiving a route to the TargetNode, all data packets destined for
the corresponding TargetNode SHOULD be dropped from the buffer and a the corresponding TargetNode SHOULD be dropped from the buffer and a
Destination Unreachable ICMP message SHOULD be delivered to the Destination Unreachable ICMP message SHOULD be delivered to the
application. application.
4.6 Route Maintenance 4.5 Route Maintenance
4.6.1 Active Link Monitoring 4.5.1 Active Link Monitoring
Before a route can be used for forwarding a packet, it MUST be
checked to make sure that the route is still valid. If the
Route.ValidTimeout is earlier than the current time, the packet
cannot be forwarded, and a RERR message MUST be generated (see
section Section 4.5.3). In this case, the Route.DeleteTimeout is set
to Route.ValidTimeout + ROUTE_DELETE_TIMEOUT.
If the current time is after Route.DeleteTimeout, then the route
SHOULD be deleted, though a route MAY be deleted at any time.
Nodes MUST monitor links on active routes. This may be accomplished Nodes MUST monitor links on active routes. This may be accomplished
by one or several mechanisms. Including: by one or several mechanisms. Including:
o Link layer feedback o Link layer feedback
o Hello messages o Hello messages
o Neighbor discovery o Neighbor discovery
o Route timeout o Route timeout
Upon detecting a link break the detecting node MUST set the Upon detecting a link break the detecting node MUST set the
Route.ValidTimeout to the current time for all routes active routes Route.ValidTimeout to the current time for all routes active routes
utilizing the broken link. utilizing the broken link.
A RERR MUST be issued if a data packet is received and it cannot be A RERR MUST be issued if a data packet is received and it cannot be
delivered to the next hop. RERR generation is described in delivered to the next hop. RERR generation is described in
Section 4.6.3. A RERR SHOULD be issued after detecting a broken link Section 4.5.3. A RERR SHOULD be issued after detecting a broken link
of an active route to quickly notify nodes that a link break occurred of an active route to quickly notify nodes that a link break occurred
and a route or routes are no longer available. and a route or routes are no longer available.
4.6.2 Updating Route Lifetimes 4.5.2 Updating Route Lifetimes
To avoid route timeouts for active routes, a node MUST update the To avoid route timeouts for active routes, a node MUST update the
Route.ValidTimeout to the IPSourceAddress to be the current time + Route.ValidTimeout to the IPSourceAddress to be the current time +
ROUTE_TIMEOUT upon receiving a data packet. The Route.DeleteTimeout ROUTE_TIMEOUT upon receiving a data packet.
MUST also be updated to the current time + ROUTE_DELETE_TIMEOUT.
To avoid route timeouts for active routes, a node SHOULD update the To avoid route timeouts for active routes, a node SHOULD update the
Route.ValidTimeout to the IPDestinationAddress to be the current time Route.ValidTimeout to the IPDestinationAddress to be the current time
+ ROUTE_TIMEOUT upon successfully transmitting a packet to the next + ROUTE_TIMEOUT upon successfully transmitting a packet to the next
hop. The Route.DeleteTimeout SHOULD also be updated to the current hop.
time + ROUTE_DELETE_TIMEOUT.
4.6.3 Route Error Generation 4.5.3 Route Error Generation
When a data packet is received for a destination without a valid When a data packet is received for a destination without a valid
routing table entry, a Route Error (RERR) MUST be generated by this routing table entry, a Route Error (RERR) MUST be generated by this
node. A RERR informs the source that the current route is no longer node. A RERR informs the source that the current route is no longer
available. available.
In the RERR, the UNodeAddress1 field is the address of the In the RERR, the UNodeAddress1 field is the address of the
unreachable node (IPDestinationAddress) from the data packet. If the unreachable node (IPDestinationAddress) from the data packet. If the
UNodeSeqNum is known, it is placed in the RERR; otherwise, zero (0) UNodeSeqNum is known, it is placed in the RERR; otherwise, zero (0)
is placed in the UNodeSeqNum field of the RERR. The TTL SHOULD be is placed in the UNodeSeqNum field of the RERR. The TTL SHOULD be
set to NET_DIAMETER, but may be set smaller. The set to NET_DIAMETER, but may be set smaller. The
IPDestinationAddress is set to the DYMOcastAddress. IPDestinationAddress is set to the DYMOcastAddress.
Additional unreachable nodes that required the same unavailable link Additional unreachable nodes that required the same unavailable link
(routes with the same Route.NextHopAddress and (routes with the same Route.NextHopAddress and
Route.NextHopInterface) as the UNodeAddress1 SHOULD be appended to Route.NextHopInterface) as the UNodeAddress1 SHOULD be appended to
the RERR. For each unreachable node the UNodeAddress and UNodeSeqNum the RERR. For each unreachable node the UNodeAddress and UNodeSeqNum
are appended. The Len is set accordingly. are appended. The Len is set accordingly.
The RERR is then processed as described in Section 4.3.5. The RERR is then processed as described in Section 4.6.5.
4.6.4 Route Error Processing 4.5.4 Route Error Processing
When a node processes a RERR after generic element pre-processing When a node processes a RERR after generic element pre-processing
(Section 4.3.2), it SHOULD set the Route.ValidTimeout to the current (Section 4.6.2), it SHOULD set the Route.ValidTimeout to the current
time for each route to a UNodeAddress that meets all of the following time for each route to a UNodeAddress that meets all of the following
conditions: conditions:
1. The Route.NextHopAddress is the same as the RERR IPSourceAddress. 1. The Route.NextHopAddress is the same as the RERR IPSourceAddress.
2. The Route.NextHopInterface is the same as the interface on which 2. The Route.NextHopInterface is the same as the interface on which
the RERR was received. the RERR was received.
3. The UNodeSeqNum is zero (0) OR the result of subtracting 3. The UNodeSeqNum is zero (0) OR the result of subtracting
Route.SeqNum from UNodeSeqNum is less than or equal to zero using Route.SeqNum from UNodeSeqNum is less than or equal to zero using
signed 32-bit arithmetic. signed 32-bit arithmetic.
Each UNodeAddress that did not result in a change to Each UNodeAddress that did not result in a change to
Route.ValidTimeout SHOULD be removed from the RERR. Route.ValidTimeout SHOULD be removed from the RERR.
Prior to generic post processing a node MAY remove any UNodeAddressN, Prior to generic post processing a node MAY remove any UNodeAddressN,
UNodeSeqNumN pairs except UNodeAddress1 to decrease the element size. UNodeSeqNumN pairs except UNodeAddress1 to decrease the element size.
skipping to change at page 20, line 42 skipping to change at page 22, line 28
Route.SeqNum from UNodeSeqNum is less than or equal to zero using Route.SeqNum from UNodeSeqNum is less than or equal to zero using
signed 32-bit arithmetic. signed 32-bit arithmetic.
Each UNodeAddress that did not result in a change to Each UNodeAddress that did not result in a change to
Route.ValidTimeout SHOULD be removed from the RERR. Route.ValidTimeout SHOULD be removed from the RERR.
Prior to generic post processing a node MAY remove any UNodeAddressN, Prior to generic post processing a node MAY remove any UNodeAddressN,
UNodeSeqNumN pairs except UNodeAddress1 to decrease the element size. UNodeSeqNumN pairs except UNodeAddress1 to decrease the element size.
If at least one UNodeAddress remains and at least one route remains If at least one UNodeAddress remains and at least one route remains
in the RERR it SHOULD be handled as described in Section 4.3.4 to in the RERR it SHOULD be handled as described in Section 4.6.4 to
continue notification of nodes effected by the broken link. continue notification of nodes effected by the broken link.
Otherwise, the RERR is dropped. Otherwise, the RERR is dropped.
4.6 General DYMO Processing
4.6.1 DYMO Control Packet Processing
A DYMO packet may consist of multiple DYMO elements. Each element is
processed individually and in sequence, from first to last. An
incoming DYMO packet MUST be completely processed prior to any DYMO
packet transmissions.
The length of IP addresses (32-bits for IPv4 and 128-bits for IPv6)
inside DYMO elements is dependent on the IP packet header. For
example, if the IP header is IPv6 then all DYMO elements contained in
the payload use IPv6 addresses.
Unless specific element processing requires dropping the DYMO packet,
it is retransmitted after processing, according to the method
described in Section 4.6.5.
4.6.2 Generic Element Pre-processing
Each element in a DYMO packet undergoes pre-processing before the
element specific processing occurs. During pre-processing, the TTL
is decremented by one (1).
4.6.3 Processing Unsupported DYMO Element Types
This section describes the processing for unsupported DYMO element
Types. The Type field identifies the handling by nodes that do not
implement, support or understand a particular Element Type. The most
significant bit (M-bit) indicates whether an Unsupported-element
Error (UERR) SHOULD be sent to the NotifyAddress. The next two bits
(H-bits) identify how the element should be handled.
0 0
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
| Type | = |M| H | |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
If the M-bit is set in a DYMO element being processed by a node that
does not support this Element Type a UERR SHOULD be sent to the
NotifyAddress. This is accomplished by following the instructions in
Section 4.6.3.1.
Regardless of whether or not a UERR is sent in response to this
unsupported Element Type, the processing node MUST also examine the
H-bits to determine how this unsupported element is handled. The
unsupported element Type MUST be handled as follows:
o If H == 00 skip the element and continue as if the packet did not
contain this element.
o If H == 01 remove the unsupported element (using the Len field)
from the packet and continue as if the packet did not include this
element.
o If H == 10 set the ignored bit (I-bit) skip this element and
continue, as if the packet did not contain this element.
o If H == 11 drop the packet without processing any other DYMO
elements.
4.6.3.1 Generating an Unsupported-element Error
When an unsupported element type is received with the M-bit set, the
processing node SHOULD generate an Unsupported-element Error (UERR).
The TargetAddress is set to the NotifyAddress. The
IPDestinationAddress is set to the Route.NextHopAddress toward the
NotifyAddress. The UElemTargetAddress is set to the TargetAddress
from the unsupported element. The UERRNodeAddress is set to the node
address generating this UERR. The UElemType is the Type from the
unsupported element. The TTL SHOULD be set to NET_DIAMETER, but MAY
be set smaller. The Len is set to the total number of bytes in this
UERR. The element is then processed as described in Section 4.6.4.
4.6.4 Generic Element Post-processing
If the first element TTL is zero (0) the DYMO packet is dropped after
processing of all elements. If the TTL of the first element is
greater than zero the DYMO packet is re-transmitted after processing
of all elements. If the TTL of any element is zero (0) after
processing it MUST be removed from the DYMO packet prior to
transmission.
4.6.5 DYMO Control Packet Transmission
DYMO packet transmission and re-transmission is controlled by the
IPDestinationAddress. If the IPDestinationAddress is a unicast
address, the packet IPDestinationAddress is replaced by the
Route.NextHopAddress from a route table lookup for the TargetAddress.
If a route for the TargetAddress is unknown or invalid the packet is
dropped and a RERR SHOULD be generated.
For all currently defined DYMO packets the IPTTL (IPMaxCount) SHOULD
be set to 1 (IPTTL=1), since all DYMO packet communications are
between direct neighbors.
4.7 Routing Prefix 4.7 Routing Prefix
Any node can advertise connectivity to a subset of other nodes within Any node can advertise connectivity to a subset of other nodes within
its address space by using the prefix field in RE. The nodes within its address space by using the prefix field in RE. The nodes within
the advertised prefix SHOULD NOT participate in the MANET and MUST be the advertised prefix SHOULD NOT participate in the MANET and MUST be
reachable by forwarding packets to the node advertising connectivity. reachable by forwarding packets to the node advertising connectivity.
For example, 192.168.1.1 with a prefix of 16 indicates all nodes with For example, 192.168.1.1 with a prefix of 16 indicates all nodes with
the prefix 192.168.X.X are reachable through 192.168.1.1. the prefix 192.168.X.X are reachable through 192.168.1.1.
The meaning of the prefix field is altered for routes to the gateway; The meaning of the prefix field is altered for routes to the gateway;
Route.IsGateway is one (1). If the G-bit is set the prefix in Route.IsGateway is one (1). If the G-bit is set the prefix in
association with the IP address indicates that all nodes outside the association with the IP address indicates that all nodes outside the
subnet are reachable via the gateway node. For example, a route to a subnet are reachable via the gateway node. For example, a route to a
gateway with IP address 192.168.1.1 and a prefix of 16 indicates that gateway with IP address 192.168.1.1 and a prefix of 16 indicates that
all nodes with an IP address NOT matching 192.168.X.X are reachable all nodes with an IP address NOT matching 192.168.X.X are reachable
via this route. via this route.
skipping to change at page 21, line 34 skipping to change at page 25, line 23
MANET nodes wishing to be reachable from nodes in the Internet MUST MANET nodes wishing to be reachable from nodes in the Internet MUST
have IP addresses within the gateway's configured MANET subnet. have IP addresses within the gateway's configured MANET subnet.
Given a node with a globally routeable address or care-of address Given a node with a globally routeable address or care-of address
handled by the gateway, the gateway is responsible for routing and handled by the gateway, the gateway is responsible for routing and
forwarding packets received from the Internet destined for nodes forwarding packets received from the Internet destined for nodes
inside its MANET subnet. inside its MANET subnet.
Since many nodes may commonly wish to communicate with the gateway, Since many nodes may commonly wish to communicate with the gateway,
the gateway SHOULD indicate to nodes that it is a gateway by setting the gateway SHOULD indicate to nodes that it is a gateway by setting
the gateway bit (G-bit) in any RE created or processed. The G-bit the gateway bit (G-bit) in any RE created or processed. The G-bit
flag indicates to nodes in the MANET that the RENodeAddress is flag indicates to nodes in the MANET that the RBNodeAddress is
attached to the Internet and is capable of routing data packets to attached to the Internet and is capable of routing data packets to
all nodes outside of the configured MANET subnet, described by the all nodes outside of the configured MANET subnet, described by the
RENodeAddress and Prefix fields. RBNodeAddress and RBPrefix fields.
4.9 Multiple Interfaces 4.9 Multiple Interfaces
It is likely that DYMO will be used with multiple wireless It is likely that DYMO will be used with multiple wireless
interfaces; therefore, the particular interface over which packets interfaces; therefore, the particular interface over which packets
arrive must be known whenever a packet is received. Whenever a new arrive must be known whenever a packet is received. Whenever a new
route is created, the interface through which the Route.DestAddress route is created, the interface through which the Route.DestAddress
can be reached is also recorded into the route table entry. can be reached is also recorded into the route table entry.
When multiple interfaces are available, a node transmitting a When multiple interfaces are available, a node transmitting a
skipping to change at page 24, line 10 skipping to change at page 27, line 10
It is assumed that all nodes in the network share the same parameter It is assumed that all nodes in the network share the same parameter
settings. Different parameter values for ROUTE_TIMEOUT or settings. Different parameter values for ROUTE_TIMEOUT or
ROUTE_DELETE_TIMEOUT in addition to arbitrary packet delays may ROUTE_DELETE_TIMEOUT in addition to arbitrary packet delays may
result in frequent route breaks or routing loops. result in frequent route breaks or routing loops.
6. IANA Considerations 6. IANA Considerations
DYMO defines a Type field for each element within a packet sent to DYMO defines a Type field for each element within a packet sent to
port TBD. A new registry will be created for the values for this port TBD. A new registry will be created for the values for this
Type field, and the following values will be assigned: Type field, and the following values will be assigned:
Type Value Type Value
-------------------------------- ----- -------------------------------- -----
Routing Element (RE) 1 Routing Element (RE) 1
Route Error (RERR) 2 Route Error (RERR) 2
Unsupported-element Error (UERR) 3 Unsupported-element Error (UERR) 3
Future values of the Type will be allocated using standard actions as Future values of the Type will be allocated using standard actions as
described in [1]. For future Types with the M-bit set NotifyAddress described in [1]. For future Types with the M-bit set NotifyAddress
MUST be included. Similarly for future Types that are unicast MUST be included. Similarly for future Types that are unicast hop-
hop-by-hop (packets not sent to the DYMOcastAddress), these Types by-hop (packets not sent to the DYMOcastAddress), these Types MUST
MUST include the TargetAddress field. include the TargetAddress field.
7. Security Considerations 7. Security Considerations
Currently, DYMO does not specify any special security measures. Currently, DYMO does not specify any special security measures.
Routing protocols, however, are prime targets for impersonation Routing protocols, however, are prime targets for impersonation
attacks. In networks where the node membership is not known, it is attacks. In networks where the node membership is not known, it is
difficult to determine the occurrence of impersonation attacks, and difficult to determine the occurrence of impersonation attacks, and
security prevention techniques are difficult at best. However, when security prevention techniques are difficult at best. However, when
the network membership is known and there is a danger of such the network membership is known and there is a danger of such
attacks, DYMO elements must be protected by the use of authentication attacks, DYMO elements must be protected by the use of authentication
skipping to change at page 27, line 9 skipping to change at page 30, line 9
DYMO is a descendant of the design of previous MANET reactive DYMO is a descendant of the design of previous MANET reactive
protocols, especially AODV [2] and DSR [4]. Changes to previous protocols, especially AODV [2] and DSR [4]. Changes to previous
MANET reactive protocols stem from research and implementation MANET reactive protocols stem from research and implementation
experiences. Thanks to Luke Klein-Berndt for reviewing of DYMO, as experiences. Thanks to Luke Klein-Berndt for reviewing of DYMO, as
well as several specification suggestions. well as several specification suggestions.
9. References 9. References
9.1 Normative References 9.1 Normative References
[1] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA [1] T. Narten and H. Alvestrand, "Guidelines for Writing an IANA
Considerations Section in RFCs", RFC 2434, BCP 26, October 1998. Considerations Section in RFCs", RFC 2434, BCP 26, October 1998.
[2] Perkins, C., Belding-Royer, E. and S. Das, "Ad hoc On-demand [2] C. Perkins, E. Belding-Royer, and S. Das, "Ad hoc On-demand
Distance Vector (AODV) Routing", RFC 3561, July 2003. Distance Vector (AODV) Routing", RFC 3561, July 2003.
9.2 Informative References 9.2 Informative References
[3] Perkins, C. and E. Belding-Royer, "Ad hoc On-Demand Distance [3] C. Perkins and E. Belding-Royer, "Ad hoc On-Demand Distance
Vector (AODV) Routing", Proceedings of the 2nd IEEE Workshop on Vector (AODV) Routing", Proceedings of the 2nd IEEE Workshop on
Mobile Computing Systems and Applications, New Orleans, LA, pp. Mobile Computing Systems and Applications, New Orleans, LA, pp.
90-100, February 1999. 90-100, February 1999.
[4] Johnson, D. and D. Maltz, "Dynamic Source Routing (DSR) in Ad [4] D. Johnson and D. Maltz, "Dynamic Source Routing (DSR) in Ad hoc
hoc Networks", In Mobile Computing, Chapter 5, pp. 153-181, Networks", In Mobile Computing, Chapter 5, pp. 153-181, 1996.
1996.
Authors' Addresses Authors' Addresses
Ian Chakeres Ian Chakeres
University of California Santa Barbara University of California Santa Barbara
Dept. of Electrical and Computer Engineering Dept. of Electrical and Computer Engineering
Santa Barbara, CA 93106 Santa Barbara, CA 93106
USA USA
Phone: +1-805-893-8981 Phone: +1-805-893-8981
 End of changes. 

This html diff was produced by rfcdiff 1.24, available from http://www.levkowetz.com/ietf/tools/rfcdiff/