draft-ietf-manet-dymo-10.txt | draft-ietf-manet-dymo-11.txt | |||
---|---|---|---|---|
Mobile Ad hoc Networks Working I. Chakeres | Mobile Ad hoc Networks Working I. Chakeres | |||
Group Motorola | Group Motorola | |||
Internet-Draft C. Perkins | Internet-Draft C. Perkins | |||
Intended status: Standards Track Nokia | Intended status: Standards Track Nokia | |||
Expires: January 6, 2008 July 5, 2007 | Expires: May 21, 2008 November 18, 2007 | |||
Dynamic MANET On-demand (DYMO) Routing | Dynamic MANET On-demand (DYMO) Routing | |||
draft-ietf-manet-dymo-10 | draft-ietf-manet-dymo-11 | |||
Status of this Memo | Status of this Memo | |||
By submitting this Internet-Draft, each author represents that any | By submitting this Internet-Draft, each author represents that any | |||
applicable patent or other IPR claims of which he or she is aware | 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 | 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. | aware will be disclosed, in accordance with Section 6 of BCP 79. | |||
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 | |||
skipping to change at page 1, line 35 | skipping to change at page 1, line 35 | |||
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. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
The list of 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 January 6, 2008. | This Internet-Draft will expire on May 21, 2008. | |||
Copyright Notice | Copyright Notice | |||
Copyright (C) The IETF Trust (2007). | Copyright (C) The IETF Trust (2007). | |||
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 modes in wireless, multihop networks. It offers | use by mobile modes in wireless, multihop networks. It offers | |||
adaptation to changing network topology and determines unicast routes | adaptation to changing network topology and determines unicast routes | |||
skipping to change at page 2, line 15 | skipping to change at page 2, line 15 | |||
Table of Contents | Table of Contents | |||
1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2. Applicability Statement . . . . . . . . . . . . . . . . . . . 4 | 2. Applicability Statement . . . . . . . . . . . . . . . . . . . 4 | |||
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
4. Data Structures . . . . . . . . . . . . . . . . . . . . . . . 7 | 4. Data Structures . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
4.1. Route Table Entry . . . . . . . . . . . . . . . . . . . . 7 | 4.1. Route Table Entry . . . . . . . . . . . . . . . . . . . . 7 | |||
4.2. DYMO Messages . . . . . . . . . . . . . . . . . . . . . . 8 | 4.2. DYMO Messages . . . . . . . . . . . . . . . . . . . . . . 8 | |||
4.2.1. Generalized MANET Packet and Message Structure . . . . 8 | 4.2.1. Generalized MANET Packet and Message Structure . . . . 8 | |||
4.2.2. Routing Messages (RM) - RREQ & RREP . . . . . . . . . 9 | 4.2.2. Routing Messages (RM) - RREQ & RREP . . . . . . . . . 9 | |||
4.2.3. Route Error (RERR) . . . . . . . . . . . . . . . . . . 11 | 4.2.3. Route Error (RERR) . . . . . . . . . . . . . . . . . . 13 | |||
5. Detailed Operation . . . . . . . . . . . . . . . . . . . . . . 13 | 5. Detailed Operation . . . . . . . . . . . . . . . . . . . . . . 14 | |||
5.1. DYMO Sequence Numbers . . . . . . . . . . . . . . . . . . 13 | 5.1. DYMO Sequence Numbers . . . . . . . . . . . . . . . . . . 14 | |||
5.1.1. Maintaining A Node's Own Sequence Number . . . . . . . 13 | 5.1.1. Maintaining A Node's Own Sequence Number . . . . . . . 15 | |||
5.1.2. Numerical Operations on OwnSeqNum . . . . . . . . . . 14 | 5.1.2. Numerical Operations on OwnSeqNum . . . . . . . . . . 15 | |||
5.1.3. OwnSeqNum Rollover . . . . . . . . . . . . . . . . . . 14 | 5.1.3. OwnSeqNum Rollover . . . . . . . . . . . . . . . . . . 15 | |||
5.1.4. Actions After OwnSeqNum Loss . . . . . . . . . . . . . 14 | 5.1.4. Actions After OwnSeqNum Loss . . . . . . . . . . . . . 15 | |||
5.2. DYMO Routing Table Operations . . . . . . . . . . . . . . 14 | 5.2. DYMO Routing Table Operations . . . . . . . . . . . . . . 15 | |||
5.2.1. Judging Routing Information's Usefulness . . . . . . . 14 | 5.2.1. Judging Routing Information's Usefulness . . . . . . . 16 | |||
5.2.2. Creating or Updating a Route Table Entry with New | 5.2.2. Creating or Updating a Route Table Entry with New | |||
Routing Information . . . . . . . . . . . . . . . . . 16 | Routing Information . . . . . . . . . . . . . . . . . 17 | |||
5.2.3. Route Table Entry Timeouts . . . . . . . . . . . . . . 16 | 5.2.3. Route Table Entry Timeouts . . . . . . . . . . . . . . 18 | |||
5.3. Routing Messages . . . . . . . . . . . . . . . . . . . . . 18 | 5.3. Routing Messages . . . . . . . . . . . . . . . . . . . . . 19 | |||
5.3.1. RREQ Creation . . . . . . . . . . . . . . . . . . . . 18 | 5.3.1. RREQ Creation . . . . . . . . . . . . . . . . . . . . 19 | |||
5.3.2. RREP Creation . . . . . . . . . . . . . . . . . . . . 19 | 5.3.2. RREP Creation . . . . . . . . . . . . . . . . . . . . 20 | |||
5.3.3. Intermediate DYMO Router RREP Creation . . . . . . . . 19 | 5.3.3. Intermediate DYMO Router RREP Creation . . . . . . . . 21 | |||
5.3.4. RM Processing . . . . . . . . . . . . . . . . . . . . 20 | 5.3.4. RM Processing . . . . . . . . . . . . . . . . . . . . 21 | |||
5.3.5. Adding Additional Routing Information to a RM . . . . 22 | 5.3.5. Adding Additional Routing Information to a RM . . . . 24 | |||
5.4. Route Discovery . . . . . . . . . . . . . . . . . . . . . 23 | 5.4. Route Discovery . . . . . . . . . . . . . . . . . . . . . 24 | |||
5.5. Route Maintenance . . . . . . . . . . . . . . . . . . . . 23 | 5.5. Route Maintenance . . . . . . . . . . . . . . . . . . . . 25 | |||
5.5.1. Active Link Monitoring . . . . . . . . . . . . . . . . 24 | 5.5.1. Active Link Monitoring . . . . . . . . . . . . . . . . 26 | |||
5.5.2. Updating Route Lifetimes During Packet Forwarding . . 24 | 5.5.2. Updating Route Lifetimes During Packet Forwarding . . 26 | |||
5.5.3. Route Error Generation . . . . . . . . . . . . . . . . 24 | 5.5.3. Route Error Generation . . . . . . . . . . . . . . . . 26 | |||
5.5.4. RERR Processing . . . . . . . . . . . . . . . . . . . 25 | 5.5.4. RERR Processing . . . . . . . . . . . . . . . . . . . 27 | |||
5.6. Unknown Message & TLV Types . . . . . . . . . . . . . . . 26 | 5.6. Unknown Message & TLV Types . . . . . . . . . . . . . . . 28 | |||
5.7. Advertising Network Addresses . . . . . . . . . . . . . . 26 | 5.7. Advertising Network Addresses . . . . . . . . . . . . . . 28 | |||
5.8. Simple Internet Attachment and Gatewaying . . . . . . . . 26 | 5.8. Simple Internet Attachment and Gatewaying . . . . . . . . 28 | |||
5.9. Multiple Interfaces . . . . . . . . . . . . . . . . . . . 28 | 5.9. Multiple Interfaces . . . . . . . . . . . . . . . . . . . 30 | |||
5.10. Packet/Message Generation Limits . . . . . . . . . . . . . 28 | 5.10. Packet/Message Generation Limits . . . . . . . . . . . . . 30 | |||
6. Configuration Parameters and Other Administrative Options . . 28 | 6. Configuration Parameters and Other Administrative Options . . 30 | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 31 | |||
7.1. DYMO Message Type Specification . . . . . . . . . . . . . 30 | 7.1. DYMO Message Type Specification . . . . . . . . . . . . . 32 | |||
7.2. Packet and Message TLV Type Specification . . . . . . . . 30 | 7.2. Packet and Message TLV Type Specification . . . . . . . . 32 | |||
7.3. Address Block TLV Specification . . . . . . . . . . . . . 31 | 7.3. Address Block TLV Specification . . . . . . . . . . . . . 33 | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 31 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 33 | |||
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 31 | 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 34 | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 32 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 34 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . . 32 | 10.1. Normative References . . . . . . . . . . . . . . . . . . . 34 | |||
10.2. Informative References . . . . . . . . . . . . . . . . . . 32 | 10.2. Informative References . . . . . . . . . . . . . . . . . . 34 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 33 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 35 | |||
Intellectual Property and Copyright Statements . . . . . . . . . . 34 | Intellectual Property and Copyright Statements . . . . . . . . . . 36 | |||
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 unicast routing between participating DYMO routers. The | multihop unicast routing between participating DYMO routers. The | |||
basic operations of the DYMO protocol are route discovery and route | basic operations of the DYMO protocol are route discovery and route | |||
management. During route discovery, the originator's DYMO router | management. During route discovery, the originator's DYMO router | |||
initiates dissemination of a Route Request (RREQ) throughout the | initiates dissemination of a Route Request (RREQ) throughout the | |||
network to find a route to the target's DYMO router. During this | network to find a route to the target's DYMO router. During this | |||
hop-by-hop dissemination process, each intermediate DYMO router | hop-by-hop dissemination process, each intermediate DYMO router | |||
skipping to change at page 4, line 25 | skipping to change at page 4, line 25 | |||
receives the RREQ, it responds with a Route Reply (RREP) sent hop-by- | receives the RREQ, it responds with a Route Reply (RREP) sent hop-by- | |||
hop toward the originator. Each intermediate DYMO router that | hop toward the originator. Each intermediate DYMO router that | |||
receives the RREP records a route to the target, and then the RREP is | receives the RREP records a route to the target, and then the RREP is | |||
unicast hop-by-hop toward the originator. When the originator's DYMO | unicast hop-by-hop toward the originator. When the originator's DYMO | |||
router receives the RREP, routes have then been established between | router receives the RREP, routes have then been established between | |||
the originating DYMO router and the target DYMO router in both | the originating DYMO router and the target DYMO router in both | |||
directions. | directions. | |||
In order to preserve routes in use, DYMO routers extend route | In order to preserve routes in use, DYMO routers extend route | |||
lifetimes upon successfully forwarding a packet. In order to react | lifetimes upon successfully forwarding a packet. In order to react | |||
to react to changes in the network topology, DYMO routers monitor | to changes in the network topology, DYMO routers monitor links over | |||
links over which traffic is moving. When a data packet is received | which traffic is moving. When a data packet is received for | |||
for forwarding if a route for the destination is not known or the | forwarding if a route for the destination is not known or the route | |||
route is broken, then the DYMO router of source of the packet is | is broken, then the DYMO router of source of the packet is notified. | |||
notified. A Route Error (RERR) is sent toward the packet source to | A Route Error (RERR) is sent toward the packet source to indicate the | |||
indicate the current route to a particular destination is broken. | current route to a particular destination is broken. When the | |||
When the source's DYMO router receives the RERR, it deletes the | source's DYMO router receives the RERR, it deletes the route. If the | |||
route. If the DYMO router later receives a packet for forwarding to | DYMO router later receives a packet for forwarding to the same | |||
the same destination, it must perform route discovery again. | destination, it must perform route discovery again. | |||
DYMO uses sequence numbers to ensure loop freedom [Perkins99]. | DYMO uses sequence numbers to ensure loop freedom [Perkins99]. | |||
Sequence numbers enable DYMO routers to determine the order of DYMO | Sequence numbers enable DYMO routers to determine the order of DYMO | |||
route discovery messages, thereby avoiding use of stale routing | route discovery messages, thereby avoiding use of stale routing | |||
information. | information. | |||
2. Applicability Statement | 2. Applicability Statement | |||
The DYMO routing protocol is designed for stub or disconnected mobile | The DYMO routing protocol is designed for stub or disconnected mobile | |||
ad hoc networks. DYMO handles a wide variety of mobility patterns by | ad hoc networks. DYMO handles a wide variety of mobility patterns by | |||
dynamically determining routes on-demand. DYMO also handles a wide | dynamically determining routes on-demand. DYMO also handles a wide | |||
variety of traffic patterns. In large networks DYMO is best suited | variety of traffic patterns. In large networks DYMO is best suited | |||
for traffic scenarios where nodes communicate with only a portion of | for traffic scenarios where nodes communicate with only a portion of | |||
other the nodes. | the other nodes. | |||
DYMO is applicable to memory constrained devices, since little | DYMO is applicable to memory constrained devices, since little | |||
routing state must be maintained in each DYMO router. Only routing | routing state must be maintained in each DYMO router. Only routing | |||
information related to active sources and destinations must be | information related to active sources and destinations must be | |||
maintained, in contrast to other routing protocols that require | maintained, in contrast to other routing protocols that require | |||
routing information to all routers within the routing region be | routing information to all routers within the routing region be | |||
maintained. | maintained. | |||
DYMO supports routers which have multiple interfaces participating in | DYMO supports routers which have multiple interfaces participating in | |||
the MANET. DYMO also supports nodes which have non-MANET interfaces | the MANET. DYMO also supports nodes which have non-MANET interfaces | |||
skipping to change at page 5, line 47 | skipping to change at page 5, line 47 | |||
document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
Additionally, this document uses some terminology from | Additionally, this document uses some terminology from | |||
[I-D.ietf-manet-packetbb]. | [I-D.ietf-manet-packetbb]. | |||
This document defines the following terminology: | This document defines the following terminology: | |||
Distance (Dist) | Distance (Dist) | |||
A metric of the distance a message or piece of information has | A metric of the distance a message or piece of information has | |||
traversed. The minimum value of distance is the number of IP hops | traversed. The minimum value of distance is the number of IP hops | |||
traversed. | traversed. The maximum value is 65,535. | |||
DYMO Sequence Number (SeqNum) | DYMO Sequence Number (SeqNum) | |||
A DYMO Sequence Number is maintained by each DYMO router. This | A DYMO Sequence Number is maintained by each DYMO router. This | |||
sequence number is used by other DYMO routers to identify the | sequence number is used by other DYMO routers to identify the | |||
order of routing information generated and ensure loop-free | order of routing information generated and ensure loop-free | |||
routes. | routes. | |||
Forwarding Route | Forwarding Route | |||
A route that is used to forward data packets. Forwarding routes | A route that is used to forward data packets. Forwarding routes | |||
are generally maintained in a forwarding information base (FIB) or | are generally maintained in a forwarding information base (FIB) or | |||
skipping to change at page 7, line 16 | skipping to change at page 7, line 16 | |||
4.1. Route Table Entry | 4.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. | |||
Conceptually, a route table entry has the following fields: | Conceptually, a route table entry has the following fields: | |||
Route.Address | Route.Address | |||
The IP destination address of the node(s) associated with the | The IP (host or network) destination address of the node(s) | |||
routing table entry. | associated with the routing table entry. | |||
Route.SeqNum | Route.SeqNum | |||
The DYMO SeqNum associated with this routing information. | The DYMO SeqNum associated with this routing information. | |||
Route.NextHopAddress | Route.NextHopAddress | |||
The IP address of the next DYMO router on the path toward the | The IP address of the next DYMO router on the path toward the | |||
Route.Address. | Route.Address. | |||
Route.NextHopInterface | Route.NextHopInterface | |||
The interface used to send packets toward the Route.Address. | The interface used to send packets toward the Route.Address. | |||
skipping to change at page 7, line 45 | skipping to change at page 7, line 45 | |||
Route.Dist | Route.Dist | |||
A metric indicating the distance traversed before reaching the | A metric indicating the distance traversed before reaching the | |||
Route.Address node. | Route.Address node. | |||
Route.Prefix | Route.Prefix | |||
Indicates that the associated address is a network address, rather | Indicates that the associated address is a network address, rather | |||
than a host address. The value is the length of the netmask/ | than a host address. The value is the length of the netmask/ | |||
prefix. If an address block does not have an associated | prefix. If an address block does not have an associated | |||
PREFIX_LENGTH TLV [I-D.ietf-manet-packetbb], the prefix may be | PREFIX_LENGTH TLV [I-D.ietf-manet-packetbb], the prefix may be | |||
considered to have a prefix length equal to the address length (in | considered to have a prefix length equal to the address length in | |||
bits). | bits. | |||
Not including optional information may cause performance degradation, | Not including optional information may cause performance degradation, | |||
but it will not cause the protocol to operate incorrectly. | but it will not cause the protocol to operate incorrectly. | |||
In addition to a route table data structure, each route table entry | In addition to a route table data structure, each route table entry | |||
may have several timers associated with the information. These | may have several timers associated with the information. These | |||
timers/timeouts are discussed in Section 5.2.3. | timers/timeouts are discussed in Section 5.2.3. | |||
4.2. DYMO Messages | 4.2. DYMO Messages | |||
skipping to change at page 9, line 34 | skipping to change at page 9, line 34 | |||
There are two DYMO message types that are considered to be routing | There are two DYMO message types that are considered to be routing | |||
messages (RMs): RREQ and RREP. They contain very similar information | messages (RMs): RREQ and RREP. They contain very similar information | |||
and function, but have slightly different processing rules. The main | and function, but have slightly different processing rules. The main | |||
difference between the two messages is that RREQ messages generally | difference between the two messages is that RREQ messages generally | |||
solicit a RREP, whereas a RREP is the response to RREQ. | solicit a RREP, whereas a RREP is the response to RREQ. | |||
RM creation and processing are described in Section 5.3. | RM creation and processing are described in Section 5.3. | |||
A RM requires the following information: | A RM requires the following information: | |||
IP.SourceAddress | ||||
The IP address of the node currently sending this packet. This | ||||
field is generally filled automatically by the operating system | ||||
and should not require special handling. | ||||
IP.DestinationAddress | IP.DestinationAddress | |||
The IP address of the packet destination. For RREQ the | 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 LL MANET ROUTERS. For RREP the | |||
IP.DestinationAddress is set to the NextHopAddress toward the RREP | IP.DestinationAddress is set to the NextHopAddress toward the RREP | |||
TargetNode. | TargetNode. | |||
UDP.DestinationPort | UDP.DestinationPort | |||
The UDP destination port is set to MANET [I-D.ietf-manet-iana]. | The UDP destination port is set to MANET [I-D.ietf-manet-iana]. | |||
MsgHdr.HopLimit | MsgHdr.HopLimit | |||
skipping to change at page 10, line 31 | skipping to change at page 10, line 38 | |||
The last known distance to the TargetNode. | The last known distance to the TargetNode. | |||
AddBlk.AdditionalNode.Address | AddBlk.AdditionalNode.Address | |||
The IP address of an additional node that can be reached via the | The IP address of an additional node that can be reached via the | |||
DYMO router adding this information. Each AdditionalNode.Address | DYMO router adding this information. Each AdditionalNode.Address | |||
must have an associated Node.SeqNum in the address TLV block. | must have an associated Node.SeqNum in the address TLV block. | |||
AdditionalNode.AddTLV.SeqNum | AdditionalNode.AddTLV.SeqNum | |||
The DYMO sequence number associated with this routing information. | The DYMO sequence number associated with this routing information. | |||
Node.AddTLV.Dist | OrigNode.AddTLV.Dist | |||
A metric of the distance to reach the associated Node.Address. | A metric of the distance to reach the associated OrigNode.Address. | |||
This field is incremented by at least one at each intermediate | This field is incremented by at least one at each intermediate | |||
DYMO router, except the TargetNode.AddTLV.Dist. The TargetNode's | DYMO router. | |||
distance information is not modified. | ||||
Node.AddTLV.Prefix | AdditionalNode.AddTLV.Dist | |||
The Node.Address is a network address with a particular prefix | A metric of the distance to reach the associated | |||
AdditionalNode.Address. This field is incremented by at least one | ||||
at each intermediate DYMO router. | ||||
OrigNode.AddTLV.Prefix | ||||
The OrigNode.Address is a network address with a particular prefix | ||||
length. | length. | |||
AdditionalNode.AddTLV.Prefix | ||||
The AdditionalNode.Address is a network address with a particular | ||||
prefix length. | ||||
Example IPv4 RREQ | Example IPv4 RREQ | |||
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 | |||
IP Header | IP Header | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| IP.SourceAddress | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| IP.DestinationAddress = LL MANET ROUTERS | | | IP.DestinationAddress = LL MANET ROUTERS | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
... | ... | |||
UDP Header | UDP Header | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Destination Port = MANET | | | Destination Port = MANET | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
... | ... | |||
Message Header | Message Header | |||
skipping to change at page 12, line 9 | skipping to change at page 13, line 14 | |||
4.2.3. Route Error (RERR) | 4.2.3. Route Error (RERR) | |||
A RERR message is used to disseminate the information that a route is | A RERR message is used to disseminate the information that a route is | |||
not available for one or more particular IP addresses. | not available for one or more particular IP addresses. | |||
RERR creation and processing are described in Section 5.5. | RERR creation and processing are described in Section 5.5. | |||
A RERR requires the following information: | A RERR requires the following information: | |||
IP.SourceAddress | ||||
The IP address of the node currently sending this packet. This | ||||
field is generally filled automatically by the operating system | ||||
and should not require special handling. | ||||
IP.DestinationAddress | IP.DestinationAddress | |||
The IP address is set to LL MANET ROUTERS. | The IP address is set to LL MANET ROUTERS. | |||
UDP.DestinationPort | UDP.DestinationPort | |||
The UDP destination port is set to MANET [I-D.ietf-manet-iana]. | The UDP destination port is set to MANET [I-D.ietf-manet-iana]. | |||
MsgHdr.HopLimit | MsgHdr.HopLimit | |||
The remaining number of hops this message is allowed to traverse. | The remaining number of hops this message is allowed to traverse. | |||
AddBlk.UnreachableNode.Address | AddBlk.UnreachableNode.Address | |||
skipping to change at page 13, line 12 | skipping to change at page 14, line 12 | |||
forward to a destination for which it does not have any | forward to a destination for which it does not have any | |||
information in its routing table. | information in its routing table. | |||
Example IPv4 RERR | Example IPv4 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 | |||
IP Header | IP Header | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| IP.SourceAddress | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| IP.DestinationAddress = LL MANET ROUTERS | | | IP.DestinationAddress = LL MANET ROUTERS | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
... | ... | |||
UDP Header | UDP Header | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Destination Port = MANET | | | Destination Port = MANET | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
... | ... | |||
Message Header | Message Header | |||
skipping to change at page 14, line 17 | skipping to change at page 15, line 23 | |||
When ThisNode increments its OwnSeqNum (as described in Section 5.3) | When ThisNode increments its OwnSeqNum (as described in Section 5.3) | |||
it MUST do so by treating the sequence number value as an unsigned | it MUST do so by treating the sequence number value as an unsigned | |||
number. | number. | |||
Note: The sequence number zero (0) is reserved. | Note: The sequence number zero (0) is reserved. | |||
5.1.3. OwnSeqNum Rollover | 5.1.3. OwnSeqNum 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 16-bit unsigned integer (i.e., 65535), then | number representable as a 16-bit unsigned integer (i.e., 65,535), | |||
the sequence number is set to 256 when incremented. Setting the | then the sequence number is set to 256 when incremented. Setting the | |||
sequence number to 256 allows other nodes to detect that the number | sequence number to 256 allows other nodes to detect that the number | |||
has rolled over and the node has not lost its sequence number. | has rolled over and the node has not lost its sequence number. | |||
5.1.4. Actions After OwnSeqNum Loss | 5.1.4. Actions After OwnSeqNum Loss | |||
A node should maintain its sequence number in persistent storage, | A node should maintain its sequence number in persistent storage, | |||
between reboots. | between reboots. | |||
If a node's OwnSeqNum is lost, it must take certain actions to avoid | If a node's OwnSeqNum is lost, it must take certain actions to avoid | |||
creating routing loops. To prevent this possibility after OwnSeqNum | creating routing loops. To prevent this possibility after OwnSeqNum | |||
loss a node MUST wait for at least ROUTE_DELETE_TIMEOUT before fully | loss a node MUST wait for at least ROUTE_DELETE_TIMEOUT before fully | |||
participating in the DYMO routing protocol. If a DYMO control | participating in the DYMO routing protocol. If a DYMO control | |||
message is received during this waiting period, the node SHOULD | message is received during this waiting period, the node SHOULD | |||
process it normally but MUST not transmit or retransmit any DYMO | process it normally but MUST NOT transmit or retransmit any DYMO | |||
messages. If a data packet is received for forwarding to another | messages. If a data packet is received for forwarding to another | |||
destination during this waiting period, the node MUST generate a RERR | destination during this waiting period, the node MUST generate a RERR | |||
message indicating that this route is not available and reset its | message indicating that this route is not available and reset its | |||
waiting timeout. At the end of the waiting period a node sets its | waiting timeout. At the end of the waiting period a node sets its | |||
OwnSeqNum to one (1). | OwnSeqNum to one (1). | |||
The longest a node must wait is ROUTE_AGE_MAX_TIMEOUT. At the end of | 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 | the maximum waiting period a node sets its OwnSeqNum to one (1) and | |||
begins participating. | begins participating. | |||
skipping to change at page 15, line 29 | skipping to change at page 16, line 37 | |||
Route.Dist + 1, then the routing information is loop-possible. | Route.Dist + 1, then the routing information is loop-possible. | |||
Using loop-possible routing information is not allowed, otherwise | Using loop-possible routing information is not allowed, otherwise | |||
routing loops may be formed. | routing loops may be formed. | |||
(Node.SeqNum == Route.SeqNum) AND | (Node.SeqNum == Route.SeqNum) AND | |||
((Node.Dist is unknown) OR | ((Node.Dist is unknown) OR | |||
(Route.Dist is unknown) OR | (Route.Dist is unknown) OR | |||
(Node.Dist > Route.Dist + 1)) | (Node.Dist > Route.Dist + 1)) | |||
3. Inferior | 3. Inferior | |||
In case of known equal SeqNum, the information is inferior, if | In case of known equal SeqNum, the information is inferior in | |||
Node.Dist > Route.Dist (it is a greater distance route). In case | multiple cases: (case i) if Node.Dist == Route.Dist + 1 (it is a | |||
of equal SeqNum, the information is inferior, if Node.Dist == | greater distance route) AND Route.Broken == false; (case ii) if | |||
Route.Dist (equal distance route) AND Route.Broken == false AND | Node.Dist == Route.Dist (equal distance route) AND Route.Broken == | |||
this RM is a RREQ. This condition stops forwarding of RREQ with | false AND this RM is a RREQ. The inferior condition stops | |||
equivalent distance. | forwarding of RREQ with equivalent distance. | |||
((Node.SeqNum == Route.SeqNum) AND | ((Node.SeqNum == Route.SeqNum) AND | |||
((Node.Dist > Route.Dist) OR | (((Node.Dist == Route.Dist + 1) AND (Route.Broken == false)) OR | |||
((Node.Dist == Route.Dist) AND | ((Node.Dist == Route.Dist) AND | |||
(RM is RREQ) AND (Route.Broken == false)))) | (RM is RREQ) AND (Route.Broken == false)))) | |||
4. Superior | 4. Superior | |||
Incoming routing information that does not match any of the above | Incoming routing information that does not match any of the above | |||
criteria is loop-free and better than the information existing in | criteria is loop-free and better than the information existing in | |||
the routing table. Information is always superior if Node.SeqNum | the routing table. Information is always superior if Node.SeqNum | |||
- Route.SeqNum > 0 (using 16-bit signed arithmetic). In the case | - Route.SeqNum > 0 (using 16-bit signed arithmetic). In the case | |||
of equal sequence numbers, the information is superior, if | of equal sequence numbers, the information is superior in multiple | |||
Node.Dist < Route.Dist. In the case of equal sequence numbers, | cases: (case i) if Node.Dist < Route.Dist; (case ii) if Node.Dist | |||
the information is superior, if Node.Dist == Route.Dist AND it is | == Route.Dist + 1 AND Route.Broken == true (a broken route is | |||
a RREP (RREP with equal distance are forwarded) OR Route.Broken == | being repaired); (case iii) if Node.Dist == Route.Dist AND it is a | |||
RREP (RREP with equal distance are forwarded) OR Route.Broken == | ||||
true (a broken route is being repaired). For completeness, we | true (a broken route is being repaired). For completeness, we | |||
provide the following (optimized) pseudo-code. | provide the following (optimized) pseudo-code. | |||
(Node.SeqNum - Route.SeqNum > 0) OR | (Node.SeqNum - Route.SeqNum > 0) OR | |||
((Node.SeqNum == Route.SeqNum) AND | ((Node.SeqNum == Route.SeqNum) AND | |||
((Node.Dist < Route.Dist) OR | ((Node.Dist < Route.Dist) OR | |||
((Node.Dist == Route.Dist + 1) AND (Route.Broken == true)) OR | ||||
((Node.Dist == Route.Dist) AND | ((Node.Dist == Route.Dist) AND | |||
((RM is RREP) OR (Route.Broken == true))))) | ((RM is RREP) OR (Route.Broken == true))))) | |||
5.2.2. Creating or Updating a Route Table Entry with New Routing | 5.2.2. Creating or Updating a Route Table Entry with New Routing | |||
Information | Information | |||
The route table entry is populated with the following information: | The route table entry is populated with the following information: | |||
1. the Route.Address is set to Node.Address, | 1. the Route.Address is set to Node.Address, | |||
skipping to change at page 18, line 39 | skipping to change at page 20, line 4 | |||
SHOULD be placed in TargetNode.AddTLV.Dist. Otherwise, the | SHOULD be placed in TargetNode.AddTLV.Dist. Otherwise, the | |||
TargetNode.AddTLV.Dist is not included and assumed unknown by | TargetNode.AddTLV.Dist is not included and assumed unknown by | |||
processing nodes. | processing nodes. | |||
Next, the node adds AddBlk.OrigNode.Address to the RM and the | Next, the node adds AddBlk.OrigNode.Address to the RM and the | |||
OrigNode.AddTLV.SeqNum (OwnSeqNum) in an address block TLV. | OrigNode.AddTLV.SeqNum (OwnSeqNum) in an address block TLV. | |||
The OrigNode.Address is the address of the DYMO router that is | The OrigNode.Address is the address of the DYMO router that is | |||
initiating this route discovery. The OrigNode.Address must be a | initiating this route discovery. The OrigNode.Address must be a | |||
routable IP address. If this DYMO router is performing route | routable IP address. If this DYMO router is performing route | |||
discovery on behalf of an attached node (the source of the data | discovery on behalf of an attached node (i.e. the source of the data | |||
packet forcing this route discovery), it MUST advertise it's address | packet causing this route discovery), the DYMO router MUST advertise | |||
and prefix that contain the source address. This information will be | it's address and prefix that contain the source's address. This | |||
used by nodes to create a route toward the OrigNode, enable delivery | information will be used by nodes to create a route toward the | |||
of a RREP, and eventually for data packets. | OrigNode, enable delivery of a RREP, and eventually for data packets. | |||
If OrigNode.Dist is included it is set to zero (0). | If OrigNode.Dist is included it is set to a number greater than zero | |||
(0). | ||||
The MsgHdr.HopLimit should be set to MAX_HOPLIMIT, but may be set | The MsgHdr.HopLimit should be set to MAX_HOPLIMIT, but may be set | |||
smaller. | smaller. | |||
For RREQ, the MsgHdr.HopLimit may be set in accordance with an | For RREQ, the MsgHdr.HopLimit may be set in accordance with an | |||
expanding ring search as described in [RFC3561] to limit the RREQ | expanding ring search as described in [RFC3561] to limit the RREQ | |||
propagation to a subset of the network and possibly reduce route | propagation to a subset of the network and possibly reduce route | |||
discovery overhead. | discovery overhead. | |||
The IP.DestinationAddress for RREQ is set to LL MANET ROUTERS. | The IP.DestinationAddress for RREQ is set to LL MANET ROUTERS. | |||
5.3.2. RREP Creation | 5.3.2. RREP Creation | |||
When the TargetNode's DYMO router creates a RREP, if the | When the TargetNode's DYMO router creates a RREP, if the | |||
TargetNode.SeqNum was not included in the RREQ it MUST increment its | TargetNode.SeqNum was not included in the RREQ it MUST increment its | |||
OwnSeqNum by one (1) according to the rules specified in | OwnSeqNum by one (1) according to the rules specified in | |||
Section 5.1.2. | Section 5.1.2. | |||
If TargetNode.SeqNum is included in the RM and TargetNode.SeqNum from | If TargetNode.SeqNum is included in the RM and TargetNode.SeqNum - | |||
the RM is less than OwnSeqNum, OwnSeqNum SHOULD be incremented by one | OwnSeqNum < 0 (using signed 16-bit arithmetic), OwnSeqNum SHOULD be | |||
(1) according to the rules specified in Section 5.1.2. | incremented by one (1) according to the rules specified in | |||
Section 5.1.2. | ||||
If TargetNode.SeqNum is included in the RM and TargetNode.SeqNum == | ||||
OwnSeqNum (using signed 16-bit arithmetic) and Dist will not be | ||||
included in the RREP being generated, OwnSeqNum SHOULD be incremented | ||||
by one (1) according to the rules specified in Section 5.1.2. | ||||
If OwnSeqNum is not incremented the routing information might be | If OwnSeqNum is not incremented the routing information might be | |||
considered stale. In this case, the RREP would not reach the RREP | considered stale. In this case, the RREP would not reach the RREP | |||
Target. | Target. | |||
First, the AddBlk.TargetNode.Address is added to the RREP. The | First, the AddBlk.TargetNode.Address is added to the RREP. The | |||
TargetNode is the ultimate destination of this RREP; the RREQ | TargetNode is the ultimate destination of this RREP; the RREQ | |||
OrigNode.Address. | OrigNode.Address. | |||
Next, AddBlk.OrigNode.Address is added to the RREP. The | Next, AddBlk.OrigNode.Address is added to the RREP. The | |||
AddBlk.OrigNode.Address must be a routable IP address. If the RREQ | AddBlk.OrigNode.Address must be a routable IP address. If the RREQ | |||
TargetNode is this DYMO router, its address added to the RREP as the | TargetNode is this DYMO router, its address added to the RREP as the | |||
OrigNode.Address. If the RREQ TargetNode is attached to this DYMO | OrigNode.Address. If the RREQ TargetNode is attached to this DYMO | |||
router, it MUST advertise its address and prefix that contain the | router, it MUST advertise its address and prefix that contain the | |||
RREQ TargetNode.Address. The RREP OrigNode.AddTLV.SeqNum (OwnSeqNum) | RREQ TargetNode.Address. The RREP OrigNode.AddTLV.SeqNum (OwnSeqNum) | |||
must also added to the RREP. | must also added to the RREP. | |||
Other AddTLVs in the RREP for the OrigNode and TargetNode SHOULD be | Other AddTLVs in the RREP for the OrigNode and TargetNode SHOULD be | |||
included and set accordingly. If OrigNode.Dist is included it is set | included and set accordingly. If OrigNode.Dist is included it is set | |||
to zero (0). | to a number greater than zero (0). | |||
The MsgHdr.HopLimit is set to MAX_HOPLIMIT. | The MsgHdr.HopLimit is set to MAX_HOPLIMIT. | |||
The IP.DestinationAddress for RREP is set to the IP address of the | The IP.DestinationAddress for RREP is set to the IP address of the | |||
Route.NextHopAddress for the route to the RREP TargetNode. | Route.NextHopAddress for the route to the RREP TargetNode. | |||
5.3.3. Intermediate DYMO Router RREP Creation | 5.3.3. Intermediate DYMO Router RREP Creation | |||
Sometimes a DYMO router other than the TargetNode's DYMO router (call | Sometimes a DYMO router other than the TargetNode's DYMO router (call | |||
it an "intermediate DYMO router") has routing information that can | it an "intermediate DYMO router") has routing information that can | |||
satisfy an incoming RREQ. When an intermediate DYMO router | satisfy an incoming RREQ. An intermediate DYMO router can issue a | |||
originates a RREP in response to a RREQ on behalf of the TargetNode, | intermediate DYMO router RREP on behalf of the TargetNode's DYMO | |||
it sends the RREP to the RREQ OrigNode with additional routing | router. | |||
information (Address, SeqNum, etc.) about the RREQ TargetNode. | ||||
Appending additional routing information is described in | Before creating a intermediate DYMO router RREP, OwnSeqNum SHOULD be | |||
Section 5.3.5. | 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 by a processing DYMO router. In this case, the RREP | ||||
would not reach the RREP Target. | ||||
When an intermediate DYMO router originates a RREP in response to a | ||||
RREQ on behalf of the TargetNode's DYMO router, it sends the RREP to | ||||
the RREQ OrigNode with additional routing information (Address, | ||||
SeqNum, Prefix, Dist, etc.) about the RREQ TargetNode. Appending | ||||
additional routing information is described in Section 5.3.5. | ||||
The Intermediate DYMO router SHOULD also issue a RREP to the RREQ | The Intermediate DYMO router SHOULD also issue a RREP to the RREQ | |||
TargetNode, so that the RREQ TargetNode receives routing information | TargetNode, so that the RREQ TargetNode receives routing information | |||
on how to reach the RREQ OrigNode. | on how to reach the RREQ OrigNode. | |||
When an intermediate DYMO router creates this RREP, it sends a RREP | When an intermediate DYMO router creates this RREP, it sends a RREP | |||
to the RREQ TargetNode with additional routing information (Address, | to the RREQ TargetNode with additional routing information (Address, | |||
SeqNum, etc.) about the RREQ OrigNode. | SeqNum, Dist, Prefix, etc.) about the RREQ OrigNode. | |||
5.3.4. RM Processing | 5.3.4. RM Processing | |||
Before processing a RM, the DYMO router checks the IP.Destination to | Before processing a RM, the DYMO router checks the IP.Destination to | |||
ensure that it was sent to LL MANET ROUTERS. | ensure that it was sent to LL MANET ROUTERS. | |||
When a RM is received the MsgHdr.HopLimit is decremented by one (1) | When a RM is received the MsgHdr.HopLimit is decremented by one (1). | |||
For each address (except the TargetNode) in the RM that includes | For each address (except the TargetNode) in the RM that includes | |||
AddTLV.Dist information, the AddTLV.Dist information is incremented | AddTLV.Dist information, the AddTLV.Dist information is incremented | |||
by one (1). | by at lease one (1). | |||
Next, ThisNode checks whether AddBlk.OrigNode.Address is an address | Next, ThisNode checks whether AddBlk.OrigNode.Address is an address | |||
handled by this DYMO router. If this node is the originating DYMO | handled by this DYMO router. If this node is the originating DYMO | |||
router, the RM is dropped. | router, the RM is dropped. | |||
Next, ThisNode checks whether its routing table has an entry to the | Next, ThisNode checks whether its routing table has an entry to the | |||
AddBlk.OrigNode.Address using longest-prefix matching [RFC1812]. If | AddBlk.OrigNode.Address using longest-prefix matching [RFC1812]. If | |||
a route does not exist and the address is a unicast address, then the | 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 | 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 | entry is created and updated as described in Section 5.2.2. If a | |||
skipping to change at page 21, line 18 | skipping to change at page 22, line 51 | |||
If the routing information for an AdditionalNode.Address is not a | If the routing information for an AdditionalNode.Address is not a | |||
unicast address and considered superior, then it is removed from the | unicast address and considered superior, then it is removed from the | |||
RM. Removing this information ensures that the information is not | RM. Removing this information ensures that the information is not | |||
propagated. | propagated. | |||
At this point, if the routing information for the OrigNode was not | At this point, if the routing information for the OrigNode was not | |||
superior then this RM should be discarded and no further processing | superior then this RM should be discarded and no further processing | |||
of this message is performed. | of this message is performed. | |||
If the ThisNode is the DYMO router for the TargetNode and this RM is | If the ThisNode is the DYMO router for the TargetNode and this RM is | |||
a RREQ, then ThisNode responds with a RREQ flood (a RREQ addressed to | a RREQ, then ThisNode responds with a RREP to the RREQ OrigNode (the | |||
oneself) or a RREP to the RREQ OrigNode (the new RREP's TargetNode). | new RREP's TargetNode). Alternatively, to distribute routing | |||
The procedure for issuing a new RREP is described in Section 5.3.2. | information about ThisNode (the RREQ TargetNode) more widely, | |||
Note: it is important that when creating the RREP, the RREP | ThisNode may optionally perform a RREQ; by issuing a RREQ with | |||
OrigNode.Address be the same as the RREQ TargetNode.Address, if | ThisNode listed as the TargetNode, using the procedure in | |||
ThisNode is responsible for several addresses. At this point, | Section 5.3.1. 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 is responsible for several addresses. At this point, | ||||
ThisNode need not perform any more operations for this RM. | ThisNode need not perform any more operations for this RM. | |||
If ThisNode is not the TargetNode, this RM is a RREQ, the RREQ | If ThisNode is not the TargetNode, this RM is a RREQ, the RREQ | |||
contains the TargetNode.AddTLV.SeqNum, and ThisNode has a forwarding | contains the TargetNode.AddTLV.SeqNum, and ThisNode has a forwarding | |||
route to the TargetNode with a SeqNum (Route.TargetNode.SeqNum) | route to the TargetNode with a SeqNum where Route.TargetNode.SeqNum - | |||
greater than or equal to the RREQ TargetNode.AddTLV.SeqNum; then this | RREQ.TargetNode.AddTLV.SeqNum >= 0 (using signed 16-bit arithmetic); | |||
node MAY respond with an intermediate DYMO router RREP. The | then this node MAY respond with an intermediate DYMO router RREP. | |||
procedure for performing intermediate DYMO router RREP is described | The procedure for performing intermediate DYMO router RREP is | |||
in Section 5.3.3. At this point, ThisNode need not perform any more | described in Section 5.3.3. At this point, ThisNode need not perform | |||
operations for this RM. | any more operations for this RM. | |||
After processing a RM or creating a new RM, a node can append | After processing a RM or creating a new RM, a node can append | |||
additional routing information to the RM, according to the procedure | additional routing information to the RM, according to the procedure | |||
described in Section 5.3.5. The additional routing information can | described in Section 5.3.5. The additional routing information can | |||
help reduce route discoveries at the expense of increased message | help reduce route discoveries at the expense of increased message | |||
size. | size. | |||
For each address (except the TargetNode) in the RM that includes | For each address (except the TargetNode) in the RM that includes | |||
AddTLV.Dist information, the AddTLV.Dist information is incremented | AddTLV.Dist information, the AddTLV.Dist information is incremented | |||
by a cost value. Advice regarding the cost value is not included in | by a cost value. Advice regarding the cost value is not included in | |||
this specification, it is left up to the implementation. | this specification, it is left up to the implementation. | |||
The updated distance value will be an measure in determining whether | The updated distance value will be an measure in determining whether | |||
the routing information is inferior or superior to known information | the routing information is inferior or superior to known information | |||
at other DYMO routers that process this RM. | at other DYMO routers that process this RM. | |||
If the resulting distance value for the OrigNode is greater than 254, | If the resulting distance value for the OrigNode is greater than | |||
the message is discarded. If the resulting distance value for | 65,535, the message is discarded. If the resulting distance value | |||
another node is greater than 254, the associated address and its | for another node is greater than 65,535, the associated address and | |||
information are removed from the RM. | its information are removed from the RM. | |||
If this RM's MsgHdr.HopLimit is greater than or equal to one (1), | 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 | ThisNode is not the TargetNode, AND this RM is a RREQ, then the | |||
current RM (altered by the procedure defined above) SHOULD be sent to | current RM (altered by the procedure defined above) SHOULD be sent to | |||
the LL MANET ROUTERS IP.DestinationAddress. | the LL MANET ROUTERS IP.DestinationAddress. | |||
By sending the RM ThisNode is advertising that it will provide | By sending the RM ThisNode is advertising that it will provide | |||
routing for IP addresses contained in the outgoing RM based on the | routing for IP addresses contained in the outgoing RM based on the | |||
information enclosed. ThisNode MAY choose not to send the RM, though | information enclosed. ThisNode MAY choose not to send the RM, though | |||
not resending this RM could decrease connectivity in the network or | not resending this RM could decrease connectivity in the network or | |||
skipping to change at page 22, line 50 | skipping to change at page 24, line 37 | |||
should be administratively configurable. | should be administratively configurable. | |||
Prior to appending an address controlled by this DYMO router to a RM, | Prior to appending an address controlled by this DYMO router to a RM, | |||
ThisNode MAY increment its OwnSeqNum as defined in Section 5.1.2. If | ThisNode MAY increment its OwnSeqNum as defined in Section 5.1.2. If | |||
OwnSeqNum is not incremented the appended routing information might | OwnSeqNum is not incremented the appended routing information might | |||
not be considered fresh, when received by nodes with existing routing | not be considered fresh, when received by nodes with existing routing | |||
information. Incrementation of the sequence number when appending | information. Incrementation of the sequence number when appending | |||
information to an RM in transit should be administratively | information to an RM in transit should be administratively | |||
configurable. | configurable. | |||
If an address controlled by this DYMO router is included | If an address controlled by this DYMO router includes ThisNode.Dist, | |||
ThisNode.Dist, it is set to zero (0). Additional information about | it is set to a number greater than zero (0). | |||
the address(es) can also be appended, such as a PREFIX_LENGTH AddTLV. | ||||
For added addresses not controlled by this DYMO router, Route.Dist | ||||
can be included if known. If Route.Dist is not known, it cannot be | ||||
included. | ||||
Additional information about the appended address(es) can also be | ||||
included (e.g. Prefix). | ||||
5.4. Route Discovery | 5.4. Route Discovery | |||
When a source's DYMO router needs to forward a data packet and it | When a source's DYMO router needs to forward a data packet and it | |||
does not have a forwarding route to the IP.DestinationAddress, it | 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 | sends a RREQ (described in Section 5.3.1) to discover a route to the | |||
particular destination (TargetNode). | particular destination (TargetNode). | |||
After issuing a RREQ, the OrigNode DYMO router waits for a route to | After issuing a RREQ, the OrigNode DYMO router waits for a route to | |||
be created to the TargetNode. If a route is not created within | 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 | RREQ_WAIT_TIME, ThisNode may again try to discover a route by issuing | |||
another RREQ. | another RREQ using the procedure defined in Section 5.3.1. | |||
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 an exponential | discovery for a particular TargetNode should utilize an exponential | |||
backoff. | backoff. | |||
For example, the first time a DYMO router issues a RREQ, it waits | For example, the first time a DYMO router issues a RREQ, it waits | |||
RREQ_WAIT_TIME for a route to the TargetNode. If a route is not | RREQ_WAIT_TIME for a route to the TargetNode. If a route is not | |||
found within that time, the DYMO router MAY send another RREQ. If a | found within that time, the DYMO router MAY send another RREQ. If a | |||
route is not found within two (2) times the current waiting time, | 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 | another RREQ may be sent, up to a total of RREQ_TRIES. For each | |||
skipping to change at page 25, line 37 | skipping to change at page 27, line 27 | |||
nodes that might depend on the now broken link. | nodes that might depend on the now broken link. | |||
The packet or message that forced generation of this RERR is | The packet or message that forced generation of this RERR is | |||
discarded. | discarded. | |||
5.5.4. RERR Processing | 5.5.4. RERR Processing | |||
Before processing a RERR, the DYMO router checks the IP.Destination | Before processing a RERR, the DYMO router checks the IP.Destination | |||
to ensure that it is addressed to LL MANET ROUTERS. | to ensure that it is addressed to LL MANET ROUTERS. | |||
Upon reception of a RERR the MsgHdr.HopLimit is decremented by one | ||||
(1). | ||||
When a DYMO router processes a RERR, it processes each | When a DYMO router processes a RERR, it processes each | |||
UnreachableNode's information. The processing DYMO router removes | UnreachableNode's information. The processing DYMO router removes | |||
the forwarding route and sets the broken flag for each | the forwarding route, sets the broken flag, and a timer for | |||
ROUTE_DELETE is set to ROUTE_DELETE_TIMEOUT for each | ||||
UnreachableNode.Address found using longest prefix matching that meet | UnreachableNode.Address found using longest prefix matching that meet | |||
all of the following conditions: | all of the following conditions: | |||
1. The UnreachableNode.Address is a unicast address. | 1. The UnreachableNode.Address is a unicast address. | |||
2. The Route.NextHopAddress is the same as the RERR | 2. The Route.NextHopAddress is the same as the RERR | |||
IP.SourceAddress. | IP.SourceAddress. | |||
3. The Route.NextHopInterface is the same as the interface on which | 3. The Route.NextHopInterface is the same as the interface on which | |||
the RERR was received. | the RERR was received. | |||
4. The Route.SeqNum is zero (0), unknown, OR the | 4. The Route.SeqNum is zero (0), unknown, OR the | |||
UnreachableNode.SeqNum is zero (0), unknown, OR Route.SeqNum - | UnreachableNode.SeqNum is zero (0), unknown, OR Route.SeqNum - | |||
UnreachableNode.SeqNum <= 0 (using signed 16-bit arithmetic). | UnreachableNode.SeqNum <= 0 (using signed 16-bit arithmetic). | |||
During processing if Route.SeqNum is zero (0) or unknown and | ||||
Unreachable.SeqNum exists in the RERR, then Route.SeqNum can be set | ||||
to Unreachable.SeqNum. Setting Route.SeqNum can reduce future RRER | ||||
processing and forwarding. | ||||
Each UnreachableNode that did not result in a broken route is removed | Each UnreachableNode that did not result in a broken route is removed | |||
from the RERR, since propagation of this information will not result | from the RERR, since propagation of this information will not result | |||
in any benefit. Any other information (AddTLVs) associated with the | in any benefit. Any other information (AddTLVs) associated with the | |||
removed address(es) is also removed. | removed address(es) is also removed. | |||
After processing if Route.SeqNum is known and an Unreachable.SeqNum | ||||
is not included in the RERR, then Route.SeqNum (i.e. | ||||
Unreachable.SeqNum) can be added to the RERR. Including | ||||
Unreachable.SeqNum can reduce future RRER processing and forwarding. | ||||
If no UnreachableNode addresses remain in the RERR, no other | If no UnreachableNode addresses remain in the RERR, no other | |||
processing is required and the RERR is discarded. | processing is required and the RERR is discarded. | |||
If this RERR's MsgHdr.HopLimit is greater than one (1) and at least | 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 | one unreachable node address remains in the RERR, then the updated | |||
RERR is sent to the IP.DestinationAddress LL MANET ROUTERS. | RERR is sent to the IP.DestinationAddress LL MANET ROUTERS. | |||
5.6. Unknown Message & TLV Types | 5.6. Unknown Message & TLV Types | |||
If a message with an unknown type is received, the message is | If a message with an unknown type is received, the message is | |||
skipping to change at page 26, line 43 | skipping to change at page 28, line 48 | |||
the DYMO protocol directly and these nodes MUST be reachable by | the DYMO protocol directly and these nodes MUST be reachable by | |||
forwarding packets to the DYMO router advertising connectivity. | forwarding packets to the DYMO router advertising connectivity. | |||
Nodes other than the advertising DYMO router that do participate in | Nodes other than the advertising DYMO router that do participate in | |||
DYMO must forward the DYMO control packets to the advertising DYMO | DYMO must forward the DYMO control packets to the advertising DYMO | |||
router. For example, A.B.C.1 with a prefix length of 24 indicates | router. 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 DYMO | all nodes with the matching A.B.C.X are reachable through the DYMO | |||
router with address A.B.C.1. | router with address A.B.C.1. | |||
5.8. Simple Internet Attachment and Gatewaying | 5.8. Simple Internet Attachment and Gatewaying | |||
Simple Internet attachment consists of a stub network of MANET router | Simple Internet attachment consists of a stub network of MANET | |||
connected to the Internet via a single Internet gateway node. The | routers connected to the Internet via a single Internet gateway node. | |||
gateway is responsible for responding to RREQs for TargetNodes | DYMO can operate with multiple gateways, but such behavior is not | |||
specified in this document. | ||||
The gateway is responsible for responding to RREQs for TargetNodes | ||||
outside its configured DYMO prefix, as well as delivering packets to | outside its configured DYMO prefix, as well as delivering packets to | |||
destinations outside the MANET. | destinations outside the MANET. | |||
/--------------------------\ | /--------------------------\ | |||
/ Internet \ | / Internet \ | |||
\ / | \ / | |||
\------------+-------------/ | \------------+-------------/ | |||
Gateway's | | Gateway's | | |||
Advertised | A.B.C.X/24 | Advertised | A.B.C.X/24 | |||
Prefix | | Prefix | | |||
skipping to change at page 27, line 31 | skipping to change at page 29, line 35 | |||
| | DYMO Router | | | | | DYMO Router | | | |||
| | A.B.C.2 | | | | | A.B.C.2 | | | |||
| +--------------+ | | | +--------------+ | | |||
| +--------------+ | | | +--------------+ | | |||
| | DYMO Router | | | | | DYMO Router | | | |||
| | A.B.C.3 | | | | | A.B.C.3 | | | |||
\ +--------------+ / | \ +--------------+ / | |||
\ / | \ / | |||
\---------------------------/ | \---------------------------/ | |||
Figure 7: Simple Internet Attachament Example | Figure 7: Simple Internet Attachment Example | |||
DYMO routers wishing to be reachable from nodes in the Internet MUST | DYMO routers wishing to be reachable from nodes in the Internet MUST | |||
have IP addresses within the gateway's configured and advertised | have IP addresses within the gateway's configured and advertised | |||
prefix. Given a node with a globally routeable address or care-of | prefix. Given a node with a globally routeable address or care-of | |||
address handled by the gateway, the gateway is responsible for | address handled by the gateway, the gateway is responsible for | |||
routing and forwarding packets received from the Internet destined | routing and forwarding packets received from the Internet destined | |||
for nodes inside its MANET. | for nodes inside its MANET. | |||
When DYMO router within the MANET want to send messages to nodes in | When DYMO router within the MANET want to send messages to nodes in | |||
the Internet, they simply issue RREQ for those | the Internet, they simply issue RREQ for those | |||
skipping to change at page 31, line 9 | skipping to change at page 33, line 9 | |||
| | | | and may blacklist the link to | | | | | | and may blacklist the link to | | |||
| | | | this node. | | | | | | this node. | | |||
+-------------------+------+--------+-------------------------------+ | +-------------------+------+--------+-------------------------------+ | |||
Table 5 | Table 5 | |||
7.3. Address Block TLV Specification | 7.3. Address Block TLV Specification | |||
Address Block TLV Types | Address Block TLV Types | |||
+----------------+-------+--------+---------------------------------+ | +----------------+------+---------+---------------------------------+ | |||
| Name | Type | Length | Value | | | Name | Type | Length | Value | | |||
+----------------+-------+--------+---------------------------------+ | +----------------+------+---------+---------------------------------+ | |||
| DYMOSeqNum | 10 - | 16 | The DYMO sequence num | | | DYMOSeqNum | 10 - | 16 bits | The DYMO sequence num | | |||
| | TBD | bits | associated with this address. | | | | TBD | (2 | associated with this address. | | |||
| | | | The sequence number may be the | | | | | bytes) | The sequence number may be the | | |||
| | | | last known sequence number. | | | | | | last known sequence number. | | |||
| Distance | 11 - | 8 bits | A metric of the distance | | | Distance | 11 - | up to | A metric of the distance | | |||
| | TBD | | traversed by the information | | | | TBD | 16 bits | traversed by the information | | |||
| | | | associated with this address. | | | | | (2 | associated with this address. | | |||
| | | bytes) | | | ||||
| MaxAge | 12 - | | The maximum amount of time that | | | MaxAge | 12 - | | The maximum amount of time that | | |||
| | TBD | | information can be maintained | | | | TBD | | information can be maintained | | |||
| | | | before being deleted. This TLV | | | | | | before being deleted. This TLV | | |||
| | | | conforms to | | | | | | conforms to | | |||
| | | | [I-D.ietf-manet-timetlv] | | | | | | [I-D.ietf-manet-timetlv] | | |||
| | | | VALIDITY_TIME TLV, except that | | | | | | VALIDITY_TIME TLV, except that | | |||
| | | | the TLV is attached to | | | | | | the TLV is attached to | | |||
| | | | addresses. | | | | | | addresses. | | |||
+----------------+-------+--------+---------------------------------+ | +----------------+------+---------+---------------------------------+ | |||
Table 6 | Table 6 | |||
8. Security Considerations | 8. Security Considerations | |||
Currently, DYMO does not specify any special security measures. | Currently, DYMO does not specify any special security measures. | |||
In situations where confidentiality o DYMO messages is important, | In situations where confidentiality o DYMO messages is important, | |||
traditional cryptographic techniques can be applied. | traditional cryptographic techniques can be applied. | |||
skipping to change at page 32, line 10 | skipping to change at page 34, line 14 | |||
9. Acknowledgments | 9. Acknowledgments | |||
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 [RFC3561] and DSR [RFC4728]. Changes to | protocols, especially AODV [RFC3561] and DSR [RFC4728]. Changes to | |||
previous MANET reactive protocols stem from research and | previous MANET reactive protocols stem from research and | |||
implementation experiences. Thanks to Elizabeth Belding-Royer for | implementation experiences. Thanks to Elizabeth Belding-Royer for | |||
her long time authorship of DYMO. Additional thanks to Luke Klein- | her long time authorship of DYMO. Additional thanks to Luke Klein- | |||
Berndt, Pedro Ruiz, Fransisco Ros, Koojana Kuladinithi, Ramon | Berndt, Pedro Ruiz, Fransisco Ros, Koojana Kuladinithi, Ramon | |||
Caceres, Thomas Clausen, Christopher Dearlove, Seung Yi, Romain | Caceres, Thomas Clausen, Christopher Dearlove, Seung Yi, Romain | |||
Thouvenin, Tronje Krop, Henner Jakob and Alexandru Petrescu for | Thouvenin, Tronje Krop, Henner Jakob, Alexandru Petrescu, Christoph | |||
reviewing of DYMO, as well as several specification suggestions. | Sommer, Cong Yuan, and Lars Kristensen for reviewing of DYMO, as well | |||
as several specification suggestions. | ||||
10. References | 10. References | |||
10.1. Normative References | 10.1. Normative References | |||
[I-D.ietf-manet-iana] | [I-D.ietf-manet-iana] | |||
Chakeres, I., "Internet Assigned Numbers Authority (IANA) | Chakeres, I., "IANA Allocations for Mobile Ad hoc Network | |||
Allocations for the Mobile Ad hoc Networks (MANET) | (MANET) Protocols", draft-ietf-manet-iana-06 (work in | |||
Working Group", draft-ietf-manet-iana-05 (work in | progress), October 2007. | |||
progress), June 2007. | ||||
[I-D.ietf-manet-packetbb] | [I-D.ietf-manet-packetbb] | |||
Clausen, T., "Generalized MANET Packet/Message Format", | Clausen, T., "Generalized MANET Packet/Message Format", | |||
draft-ietf-manet-packetbb-07 (work in progress), | draft-ietf-manet-packetbb-10 (work in progress), | |||
July 2007. | October 2007. | |||
[I-D.ietf-manet-timetlv] | [I-D.ietf-manet-timetlv] | |||
Clausen, T. and C. Dearlove, "Representing multi-value | Clausen, T. and C. Dearlove, "Representing multi-value | |||
time in MANETs", draft-ietf-manet-timetlv-01 (work in | time in MANETs", draft-ietf-manet-timetlv-02 (work in | |||
progress), July 2007. | progress), August 2007. | |||
[RFC1812] Baker, F., "Requirements for IP Version 4 Routers", | [RFC1812] Baker, F., "Requirements for IP Version 4 Routers", | |||
RFC 1812, June 1995. | RFC 1812, June 1995. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an | |||
IANA Considerations Section in RFCs", BCP 26, RFC 2434, | IANA Considerations Section in RFCs", BCP 26, RFC 2434, | |||
October 1998. | October 1998. | |||
[RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing | ||||
Architecture", RFC 4291, February 2006. | ||||
10.2. Informative References | 10.2. Informative References | |||
[I-D.ietf-manet-jitter] | [I-D.ietf-manet-jitter] | |||
Clausen, T., "Jitter considerations in MANETs", | Clausen, T., "Jitter considerations in MANETs", | |||
draft-ietf-manet-jitter-01 (work in progress), July 2007. | draft-ietf-manet-jitter-02 (work in progress), | |||
August 2007. | ||||
[I-D.ietf-manet-nhdp] | [I-D.ietf-manet-nhdp] | |||
Clausen, T., "MANET Neighborhood Discovery Protocol | Clausen, T., "MANET Neighborhood Discovery Protocol | |||
(NHDP)", draft-ietf-manet-nhdp-04 (work in progress), | (NHDP)", draft-ietf-manet-nhdp-04 (work in progress), | |||
July 2007. | July 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] | [Perkins99] | |||
Perkins, C. and E. Belding-Royer, "Ad hoc On-Demand | Perkins, C. and E. Belding-Royer, "Ad hoc On-Demand | |||
Distance Vector (AODV) Routing", Proceedings of the 2nd | Distance Vector (AODV) Routing", Proceedings of the 2nd | |||
IEEE Workshop on Mobile Computing Systems and | IEEE Workshop on Mobile Computing Systems and | |||
Applications, New Orleans, LA, pp. 90-100, | Applications, New Orleans, LA, pp. 90-100, | |||
February 1999. | February 1999. | |||
[RFC3561] Perkins, C., Belding-Royer, E., and S. Das, "Ad hoc On- | [RFC3561] Perkins, C., Belding-Royer, E., and S. Das, "Ad hoc On- | |||
Demand Distance Vector (AODV) Routing", RFC 3561, | Demand Distance Vector (AODV) Routing", RFC 3561, | |||
July 2003. | July 2003. | |||
End of changes. 56 change blocks. | ||||
151 lines changed or deleted | 211 lines changed or added | |||
This html diff was produced by rfcdiff 1.34. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |