draft-ietf-roll-aodv-rpl-02.txt | draft-ietf-roll-aodv-rpl-03.txt | |||
---|---|---|---|---|
ROLL S. Anamalamudi | ROLL S. Anamalamudi | |||
Internet-Draft Huaiyin Institute of Technology | Internet-Draft Huaiyin Institute of Technology | |||
Intended status: Standards Track M. Zhang | Intended status: Standards Track M. Zhang | |||
Expires: March 13, 2018 AR. Sangi | Expires: September 6, 2018 Huawei Technologies | |||
Huawei Technologies | AR. Sangi | |||
Huaiyin Institute of Technology | ||||
C. Perkins | C. Perkins | |||
Futurewei | Futurewei | |||
S.V.R.Anand | S.V.R.Anand | |||
Indian Institute of Science | Indian Institute of Science | |||
September 9, 2017 | B. Liu | |||
Huawei Technologies | ||||
March 5, 2018 | ||||
Asymmetric AODV-P2P-RPL in Low-Power and Lossy Networks (LLNs) | Asymmetric AODV-P2P-RPL in Low-Power and Lossy Networks (LLNs) | |||
draft-ietf-roll-aodv-rpl-02 | draft-ietf-roll-aodv-rpl-03 | |||
Abstract | Abstract | |||
Route discovery for symmetric and asymmetric Point-to-Point (P2P) | Route discovery for symmetric and asymmetric Point-to-Point (P2P) | |||
traffic flows is a desirable feature in Low power and Lossy Networks | traffic flows is a desirable feature in Low power and Lossy Networks | |||
(LLNs). For that purpose, this document specifies a reactive P2P | (LLNs). For that purpose, this document specifies a reactive P2P | |||
route discovery mechanism for hop-by-hop routing (storing mode) based | route discovery mechanism for both hop-by-hop routing and source | |||
on Ad Hoc On-demand Distance Vector Routing (AODV) based RPL | routing: Ad Hoc On-demand Distance Vector Routing (AODV) based RPL | |||
protocol. Two separate Instances are used to construct directional | protocol. Paired Instances are used to construct directional paths, | |||
paths in case some of the links between source and target node are | in case some of the links between source and target node are | |||
asymmetric. | asymmetric. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on March 13, 2018. | This Internet-Draft will expire on September 6, 2018. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2018 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3. Overview of AODV-RPL . . . . . . . . . . . . . . . . . . . . 5 | 3. Overview of AODV-RPL . . . . . . . . . . . . . . . . . . . . 6 | |||
4. AODV-RPL Mode of Operation (MoP) . . . . . . . . . . . . . . 5 | 4. AODV-RPL DIO Options . . . . . . . . . . . . . . . . . . . . 6 | |||
5. RREQ Message . . . . . . . . . . . . . . . . . . . . . . . . 9 | 4.1. AODV-RPL DIO RREQ Option . . . . . . . . . . . . . . . . 6 | |||
6. RREP Message . . . . . . . . . . . . . . . . . . . . . . . . 10 | 4.2. AODV-RPL DIO RREP Option . . . . . . . . . . . . . . . . 8 | |||
7. Gratuitous RREP . . . . . . . . . . . . . . . . . . . . . . . 12 | 4.3. AODV-RPL DIO Target Option . . . . . . . . . . . . . . . 10 | |||
8. Operation of Trickle Timer . . . . . . . . . . . . . . . . . 13 | 5. Symmetric and Asymmetric Routes . . . . . . . . . . . . . . . 11 | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | 6. AODV-RPL Operation . . . . . . . . . . . . . . . . . . . . . 13 | |||
9.1. New Mode of Operation: AODV-RPL . . . . . . . . . . . . . 13 | 6.1. Generating Route Request at OrigNode . . . . . . . . . . 13 | |||
9.2. AODV-RPL Options: RREQ and RREP . . . . . . . . . . . . . 13 | 6.2. Receiving and Forwarding Route Request . . . . . . . . . 14 | |||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 6.3. Generating Route Reply at TargNode . . . . . . . . . . . 15 | |||
11. Future Work . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 6.3.1. RREP-DIO for Symmetric route . . . . . . . . . . . . 15 | |||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 6.3.2. RREP-DIO for Asymmetric Route . . . . . . . . . . . . 16 | |||
12.1. Normative References . . . . . . . . . . . . . . . . . . 14 | 6.3.3. RPLInstanceID Pairing . . . . . . . . . . . . . . . . 16 | |||
12.2. Informative References . . . . . . . . . . . . . . . . . 15 | 6.4. Receiving and Forwarding Route Reply . . . . . . . . . . 17 | |||
Appendix A. ETX/RSSI Values to select S bit . . . . . . . . . . 15 | 7. Gratuitous RREP . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 | 8. Operation of Trickle Timer . . . . . . . . . . . . . . . . . 19 | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | ||||
9.1. New Mode of Operation: AODV-RPL . . . . . . . . . . . . . 19 | ||||
9.2. AODV-RPL Options: RREQ, RREP, and Target . . . . . . . . 19 | ||||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 20 | ||||
11. Future Work . . . . . . . . . . . . . . . . . . . . . . . . . 20 | ||||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | ||||
12.1. Normative References . . . . . . . . . . . . . . . . . . 20 | ||||
12.2. Informative References . . . . . . . . . . . . . . . . . 21 | ||||
Appendix A. ETX/RSSI Values to select S bit . . . . . . . . . . 21 | ||||
Appendix B. Changes to version 02 . . . . . . . . . . . . . . . 22 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 | ||||
1. Introduction | 1. Introduction | |||
RPL[RFC6550], the IPv6 distance vector routing protocol for Low-power | RPL[RFC6550] is a IPv6 distance vector routing protocol for Low-power | |||
and Lossy Networks (LLNs), is designed to support multiple traffic | and Lossy Networks (LLNs), and is designed to support multiple | |||
flows through a root-based Destination-Oriented Directed Acyclic | traffic flows through a root-based Destination-Oriented Directed | |||
Graph (DODAG). For traffic flows between routers within the DODAG | Acyclic Graph (DODAG). Typically, a router does not have routing | |||
(i.e., Point-to-Point (P2P) traffic), this means that data packets | information for most other routers. Consequently, for traffic | |||
either have to traverse the root in non-storing mode (source | between routers within the DODAG (i.e., Point-to-Point (P2P) traffic) | |||
routing), or traverse a common ancestor in storing mode (hop-by-hop | data packets either have to traverse the root in non-storing mode, or | |||
routing). Such P2P traffic is thereby likely to flow along sub- | traverse a common ancestor in storing mode. Such P2P traffic is | |||
optimal routes and may suffer severe traffic congestion near the DAG | thereby likely to traverse sub-optimal routes and may suffer severe | |||
root [RFC6997], [RFC6998]. | congestion near the DAG root [RFC6997], [RFC6998]. | |||
To discover optimal paths for P2P traffic flows in RPL, P2P-RPL | To discover optimal paths for P2P traffic flows in RPL, P2P-RPL | |||
[RFC6997] specifies a temporary DODAG where the source acts as | [RFC6997] specifies a temporary DODAG where the source acts as a | |||
temporary root. The source initiates "P2P Route Discovery mode (P2P- | temporary root. The source initiates DIOs encapsulating the P2P | |||
RDO)" with an address vector for both non-storing mode (H=0) and | Route Discovery option (P2P-RDO) with an address vector for both hop- | |||
storing mode (H=1). Subsequently, each intermediate router adds its | by-hop mode (H=1) and source routing mode (H=0). Subsequently, each | |||
IP address and multicasts the P2P-RDO message, until the message | intermediate router adds its IP address and multicasts the P2P mode | |||
reaches the target node (TargNode). TargNode sends the "Discovery | DIOs, until the message reaches the target node (TargNode). TargNode | |||
Reply" option. P2P-RPL is efficient for source routing, but much | sends the "Discovery Reply" object. P2P-RPL is efficient for source | |||
less efficient for hop-by-hop routing due to the extra address vector | routing, but much less efficient for hop-by-hop routing due to the | |||
overhead. In fact, when the P2P-RDO message is being multicast from | extra address vector overhead. However, for symmetric links, when | |||
the source hop-by-hop, receiving nodes are able to determine a next | the P2P mode DIO message is being multicast from the source hop-by- | |||
hop towards the source in symmetric links. When TargNode | hop, receiving nodes can infer a next hop towards the source. When | |||
subsequently replies to the source along the established forward | TargNode subsequently replies to the source along the established | |||
route, receiving nodes can determine the next hop towards TargNode. | forward route, receiving nodes determine the next hop towards | |||
In other words, it is efficient to use only routing tables for P2P- | TargNode. In other words, it is efficient to use only routing tables | |||
RDO message instead of "Address vector" for hop-by-hop routes (H=1) | for P2P-RDO message instead of "Address vector" for hop-by-hop routes | |||
in symmetric links. | (H=1) over symmetric links. | |||
RPL and P2P-RPL both specify the use of a single DODAG in networks of | RPL and P2P-RPL both specify the use of a single DODAG in networks of | |||
symmetric links. But, application-specific routing requirements that | symmetric links, where the two directions of a link MUST both satisfy | |||
are defined in IETF ROLL Working Group [RFC5548], [RFC5673], | the constraints of the objective function. This eliminates the | |||
[RFC5826] and [RFC5867] may need routing metrics and constraints | possibility to use asymmetric links which are qualified in one | |||
enabling use of asymmetric bidirectional links. For this purpose, | direction. But, application-specific routing requirements as defined | |||
[I-D.thubert-roll-asymlink] describes bidirectional asymmetric links | in IETF ROLL Working Group [RFC5548], [RFC5673], [RFC5826] and | |||
for RPL [RFC6550] with Paired DODAGs, for which the DAG root | [RFC5867] may be satisfied by routing paths using bidirectional | |||
(DODAGID) is common for two Instances. This can satisfy application- | asymmetric links. For this purpose, [I-D.thubert-roll-asymlink] | |||
specific routing requirements for bidirectional asymmetric links in | describes bidirectional asymmetric links for RPL [RFC6550] with | |||
base RPL [RFC6550]. P2P-RPL for Paired DODAGs, on the other hand, | Paired DODAGs, for which the DAG root (DODAGID) is common for two | |||
requires two DAG roots: one for the source and another for the target | Instances. This can satisfy application-specific routing | |||
node due to temporary DODAG formation. For networks composed of | requirements for bidirectional asymmetric links in core RPL | |||
bidirectional asymmetric links (see Section 4), AODV-RPL specifies | [RFC6550]. Using P2P-RPL twice with Paired DODAGs, on the other | |||
hand, requires two roots: one for the source and another for the | ||||
target node due to temporary DODAG formation. For networks composed | ||||
of bidirectional asymmetric links (see Section 5), AODV-RPL specifies | ||||
P2P route discovery, utilizing RPL with a new MoP. AODV-RPL makes | P2P route discovery, utilizing RPL with a new MoP. AODV-RPL makes | |||
use of two multicast messages to discover possibly asymmetric routes. | use of two multicast messages to discover possibly asymmetric routes, | |||
AODV-RPL eliminates the need for address vector control overhead, | which can achieve higher route diversity. AODV-RPL eliminates the | |||
significantly reducing the control packet size which is important for | need for address vector control overhead in hop-by-hop mode. This | |||
Constrained LLN networks. Both discovered routes meet the | significantly reduces the control packet size, which is important for | |||
application specific metrics and constraints that are defined in the | Constrained LLN networks. Both discovered routes (upward and | |||
Objective Function for each Instance [RFC6552]. | downward) meet the application specific metrics and constraints that | |||
are defined in the Objective Function for each Instance [RFC6552]. | ||||
The route discovery process in AODV-RPL is modeled on the analogous | The route discovery process in AODV-RPL is modeled on the analogous | |||
process that has been specified in AODV [RFC6550]. The on-demand | procedure specified in AODV [RFC3561]. The on-demand nature of AODV | |||
nature of AODV route discovery is natural for the needs of peer-to- | route discovery is natural for the needs of peer-to-peer routing in | |||
peer routing as envisioned for RPL-based LLNs. Similar terminology | RPL-based LLNs. AODV terminology has been adapted for use with AODV- | |||
has been adopted for use with the discovery messages, namely RREQ for | RPL messages, namely RREQ for Route Request, and RREP for Route | |||
Route Request, and RREP for Route Reply. AODV-RPL is, at heart, a | Reply. AODV-RPL currently omits some features compared to AODV -- in | |||
simpler protocol than AODV, since there are no analogous operations | particular, flagging Route Errors, blacklisting unidirectional links, | |||
for flagging Route Errors, blacklisting unidirectional links, | multihoming, and handling unnumbered interfaces. | |||
multihoming, or handling unnumbered interfaces. Some of the simpler | ||||
features of AODV, on the other hand, have been imported into AODV-RPL | ||||
-- for instance, prefix advertisement is allowed on RREP and RREQ | ||||
message where appropriate. | ||||
2. Terminology | 2. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
[RFC2119]. Additionally, this document uses the following terms: | [RFC2119]. Additionally, this document uses the following terms: | |||
AODV | AODV | |||
Ad Hoc On-demand Distance Vector Routing[RFC3561]. | Ad Hoc On-demand Distance Vector Routing[RFC3561]. | |||
AODV-Instance | AODV-RPL Instance | |||
Either the RREQ-Instance or RREP-Instance | Either the RREQ-Instance or RREP-Instance | |||
Asymmetric Route | ||||
The route from the OrigNode to the TargNode can traverse different | ||||
nodes than the route from the TargNode to the OrigNode. An | ||||
asymmetric route may result from the asymmetry of links, such that | ||||
only one direction of the series of links fulfills the constraints | ||||
in route discovery. If the OrigNode doesn't require an upward | ||||
route towards itself, the route is also considered as asymmetric. | ||||
Bi-directional Asymmetric Link | Bi-directional Asymmetric Link | |||
A link that can be used in both directions but with different link | A link that can be used in both directions but with different link | |||
characteristics (see [I-D.thubert-roll-asymlink]). | characteristics. | |||
DODAG RREQ-Instance (or simply RREQ-Instance) | DODAG RREQ-Instance (or simply RREQ-Instance) | |||
AODV Instance built using the RREQ option; used for control | RPL Instance built using the DIO with RREQ option; used for | |||
transmission from OrigNode to TargNode, thus enabling data | control message transmission from OrigNode to TargNode, thus | |||
transmission from TargNode to OrigNode. | enabling data transmission from TargNode to OrigNode. | |||
DODAG RREP-Instance (or simply RREP-Instance) | DODAG RREP-Instance (or simply RREP-Instance) | |||
AODV Instance built using the RREP option; used for control | RPL Instance built using the DIO with RREP option; used for | |||
transmission from TargNode to OrigNode thus enabling data | control message transmission from TargNode to OrigNode thus | |||
transmission from OrigNode to TargNode. | enabling data transmission from OrigNode to TargNode. | |||
downstream | Downward Direction | |||
Routing along the direction from OrigNode to TargNode. | The direction from the OrigNode to the TargNode. | |||
Downward Route | ||||
A route in the downward direction. | ||||
hop-by-hop routing | hop-by-hop routing | |||
Routing when each node stores routing information about the next | Routing when each node stores routing information about the next | |||
hop. | hop. | |||
OrigNode | OrigNode | |||
The IPv6 router (Originating Node) initiating the AODV-RPL route | The IPv6 router (Originating Node) initiating the AODV-RPL route | |||
discovery to obtain a route to TargNode. | discovery to obtain a route to TargNode. | |||
Paired DODAGs | Paired DODAGs | |||
Two DODAGs for a single application. | Two DODAGs for a single route discovery process of an application. | |||
P2P | P2P | |||
Point-to-Point -- in other words, not constrained to traverse a | Point-to-Point -- in other words, not constrained to traverse a | |||
common ancestor. | common ancestor. | |||
RREQ message | RREQ-DIO message | |||
An AODV-RPL MoP DIO message containing the RREQ option. The | An AODV-RPL MoP DIO message containing the RREQ option. The | |||
InstanceID in the DIO object of the RREQ option MUST be always an | RPLInstanceID in RREQ-DIO is assigned locally by the OrigNode. | |||
odd number. | ||||
RREP message | RREP-DIO message | |||
An AODV-RPL MoP DIO message containing the RREP option. The | An AODV-RPL MoP DIO message containing the RREP option. The | |||
InstanceID in the DIO object of the RREP option MUST be always an | RPLInstanceID in RREP-DIO is typically paired to the one in the | |||
even number (usually, InstanceID of RREQ-Instance+1). | associated RREQ-DIO message. | |||
source routing | Source routing | |||
The mechanism by which the source supplies the complete route | The mechanism by which the source supplies the complete route | |||
towards the target node along with each data packet. [RFC6997]. | towards the target node along with each data packet [RFC6550]. | |||
Symmetric route | ||||
The upstream and downstream routes traverse the same routers. | ||||
Both directions fulfill the constraints in route discovery. | ||||
TargNode | TargNode | |||
The IPv6 router (Target Node) for which OrigNode requires a route | The IPv6 router (Target Node) for which OrigNode requires a route | |||
and initiates Route Discovery within the LLN network. | and initiates Route Discovery within the LLN network. | |||
upstream | Upward Direction | |||
Routing along the direction from TargNode to OrigNode. | The direction from the TargNode to the OrigNode. | |||
Upward Route | ||||
A route in the upward direction. | ||||
3. Overview of AODV-RPL | 3. Overview of AODV-RPL | |||
With AODV-RPL, routes from OrigNode to TargNode within the LLN | With AODV-RPL, routes from OrigNode to TargNode within the LLN | |||
network established are "on-demand". In other words, the route | network established are "on-demand". In other words, the route | |||
discovery mechanism in AODV-RPL is invoked reactively when OrigNode | discovery mechanism in AODV-RPL is invoked reactively when OrigNode | |||
has data for delivery to the TargNode but existing routes do not | has data for delivery to the TargNode but existing routes do not | |||
satisfy the application's requirements. The routes discovered by | satisfy the application's requirements. The routes discovered by | |||
AODV-RPL are point-to-point; in other words the routes are not | AODV-RPL are point-to-point; in other words the routes are not | |||
constrained to traverse a common ancestor. Unlike base RPL [RFC6550] | constrained to traverse a common ancestor. Unlike core RPL [RFC6550] | |||
and P2P-RPL [RFC6997], AODV-RPL can enable asymmetric communication | and P2P-RPL [RFC6997], AODV-RPL can enable asymmetric communication | |||
paths in networks with bidirectional asymmetric links. For this | paths in networks with bidirectional asymmetric links. For this | |||
purpose, AODV-RPL enables discovery of two routes: namely, one from | purpose, AODV-RPL enables discovery of two routes: namely, one from | |||
OrigNode to TargNode, and another from TargNode to OrigNode. When | OrigNode to TargNode, and another from TargNode to OrigNode. When | |||
possible, AODV-RPL also enables symmetric routing along Paired DODAGs | possible, AODV-RPL also enables symmetric route discovery along | |||
(see Section 4). | Paired DODAGs (see Section 5). | |||
4. AODV-RPL Mode of Operation (MoP) | ||||
In AODV-RPL, route discovery is initiated by forming a temporary DAG | In AODV-RPL, route discovery is initiated by forming a temporary DAG | |||
rooted at the OrigNode. Paired DODAGs (Instances) are constructed | rooted at the OrigNode. Paired DODAGs (Instances) are constructed | |||
according to a new AODV-RPL Mode of Operation (MoP) during route | according to a new AODV-RPL Mode of Operation (MoP) during route | |||
formation between the OrigNode and TargNode. The RREQ-Instance is | formation between the OrigNode and TargNode. The RREQ-Instance is | |||
formed by route control messages from OrigNode to TargNode whereas | formed by route control messages from OrigNode to TargNode whereas | |||
the RREP-Instance is formed by route control messages from TargNode | the RREP-Instance is formed by route control messages from TargNode | |||
to OrigNode (as shown in Figure 2). Intermediate routers join the | to OrigNode (as shown in Figure 4). Intermediate routers join the | |||
Paired DODAGs based on the rank as calculated from the DIO message. | Paired DODAGs based on the rank as calculated from the DIO message. | |||
Henceforth in this document, the RREQ-Instance message means the | Henceforth in this document, the RREQ-DIO message means the AODV-RPL | |||
AODV-RPL DIO message from OrigNode to TargNode, containing the RREQ | mode DIO message from OrigNode to TargNode, containing the RREQ | |||
option. Similarly, the RREP-Instance message means the AODV-RPL DIO | option. Similarly, the RREP-DIO message means the AODV-RPL mode DIO | |||
message from TargNode to OrigNode, containing the RREP option. | message from TargNode to OrigNode, containing the RREP option. | |||
Subsequently, the RREQ-Instance is used for data transmission from | Subsequently, the route discovered in the RREQ-Instance is used for | |||
TargNode to OrigNode and RREP-Instance is used for Data transmission | data transmission from TargNode to OrigNode, and the route discovered | |||
from OrigNode to TargNode. | in RREP-Instance is used for Data transmission from OrigNode to | |||
TargNode. | ||||
The AODV-RPL Mode of Operation defines a new bit, the Symmetric bit | 4. AODV-RPL DIO Options | |||
('S'), which is added to the base DIO message as illustrated in | ||||
Figure 1. OrigNode sets the the 'S' bit to 1 in the RREQ-Instance | ||||
message when initiating route discovery. | ||||
0 1 2 3 | 4.1. AODV-RPL DIO RREQ Option | |||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | A RREQ-DIO message MUST carry exactly one RREQ option. | |||
| RPLInstanceID |Version Number | Rank | | ||||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Type | Option Length |S|H|X| Compr | L | MaxRank | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Orig SeqNo | | | ||||
+-+-+-+-+-+-+-+-+ | | ||||
| | | ||||
| | | ||||
| Address Vector (Optional, Variable Length) | | ||||
| | | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
Figure 1: DIO RREQ option format for AODV-RPL MoP | ||||
OrigNode supplies the following information in the RREQ option of the | ||||
RREQ-Instance message: | ||||
Type | ||||
The type of the RREQ option(see Section 9.2). | ||||
Option Length | ||||
Length of the option in octets excluding the Type and Length | ||||
fields. Variable due to the presence of the address vector and | ||||
the number of octets elided according to the Compr value. | ||||
S | ||||
Symmetric bit indicating a symmetric route from the OrigNode to | ||||
the router issuing this RREQ-DIO. The bit SHOULD be set to 1 in | ||||
the RREQ-DIO when the OrigNode initiates the route discovery. | ||||
X | ||||
Reserved. | ||||
H | ||||
The OrigNode sets this flag to one if it desires a hop-by-hop | ||||
route. It sets this flag to zero if it desires a source route. | ||||
This flag is valid to both downstream route and upstream route. | ||||
Compr | ||||
4-bit unsigned integer. Number of prefix octets that are elided | ||||
from the Address Vector. The octets elided are shared with the | ||||
IPv6 address in the DODAGID. | ||||
L | ||||
2-bit unsigned integer. This field indicates the duration that a | ||||
node joining the temporary DAG in RREQ-Instance, including the | ||||
OrigNode and the TargNode. Once the time is reached, a node MUST | ||||
leave the DAG and stop sending or receiving any more DIOs for the | ||||
temporary DODAG. The detailed definition can be found in | ||||
[RFC6997]. | ||||
* 0x00: No duration time imposed. | ||||
* 0x01: 2 seconds | ||||
* 0x02: 16 seconds | ||||
* 0x03: 64 seconds | ||||
It should be indicated here that L is not the route lifetime, | ||||
which is defined in the DODAG configuration option. The route | ||||
entries in hop-by-hop routing and states of source routing can | ||||
still be maintained even after the DAG expires. | ||||
MaxRank | ||||
This field indicates the upper limit on the integer portion of the | ||||
rank. A node MUST NOT join a temporary DODAG if its own rank | ||||
would equal to or higher than the limit. A value of 0 in this | ||||
field indicates the limit is infinity. For more details please | ||||
refer to [RFC6997]. | ||||
OrigNode Sequence Number | ||||
Sequence Number of OrigNode, defined similarly as in AODV | ||||
[RFC3561]. | ||||
Address Vector (Optional) | ||||
A vector of IPv6 addresses representing the route that the RREQ- | ||||
DIO has passed. It is only present when the 'H' bit is set to 0. | ||||
The prefix of each address is elided according to the Compr field. | ||||
4.2. AODV-RPL DIO RREP Option | ||||
A RREP-DIO message MUST carry exactly one RREP option. | ||||
The TargNode supplies the following information in the RREP option: | ||||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|G|0| MOP | Prf | DTSN |S| Flags | Reserved | | | Type | Option Length |H|X| Compr | L | MaxRank | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|T|G| SHIFT | Reserved | | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ||||
| | | | | | |||
+ + | ||||
| | | ||||
+ DODAGID + | ||||
| | | ||||
+ + | ||||
| | | | | | |||
| Address Vector (Optional, Variable Length) | | ||||
. . | ||||
. . | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Option(s)... | ||||
Figure 1: DIO modification to support asymmetric route discovery | Figure 2: DIO RREP option format for AODV-RPL MoP | |||
A device originating a AODV-RPL message supplies the following | Type | |||
information in the DIO header of the message: | The type of the RREP option (see Section 9.2) | |||
'S' bit | Option Length | |||
Length of the option in octets excluding the Type and Length | ||||
fields. Variable due to the presence of the address vector and | ||||
the number of octets elided according to the Compr value. | ||||
Symmetric bit in the DIO base object | H | |||
This bit indicates the downstream route is source routing (H=0) or | ||||
hop-by-hop (H=1). It SHOULD be set to be the same as the 'H' bit | ||||
in RREQ option. | ||||
MOP | X | |||
MOP operation in the DIO object MUST be set to "5(TBD1)" for AODV- | Reserved. | |||
RPL DIO messages | ||||
RPLInstanceID | Compr | |||
4-bit unsigned integer. Same definition as in RREQ option. | ||||
RPLInstanceID in the DIO object MUST be the InstanceID of AODV- | L | |||
Instance(RREQ-Instance). The InstanceID for RREQ-Instance MUST be | 2-bit unsigned integer with the same definition as in Section 4.1. | |||
always an odd number. | ||||
DODAGID | MaxRank | |||
Same definition as in RREQ option. | ||||
For RREQ-Instance : | T | |||
'T' is set to 1 to indicate that the RREP-DIO MUST include exactly | ||||
one AODV-RPL Target Option. Otherwise, the Target Option is not | ||||
necessary in the RREP-DIO. | ||||
DODAGID in the DIO object MUST be the IPv6 address of the device | G | |||
that initiates the RREQ-Instance. | Gratuitous route (see Section 7). | |||
For RREP-Instance | SHIFT | |||
6-bit unsigned integer. This field indicates the how many the | ||||
original InstanceID (see Section 6.3.3) is shifted (added an | ||||
integer from 0 to 63). 0 indicates that the original InstanceID | ||||
is used. | ||||
DODAGID in the DIO object MUST be the IPv6 address of the device | Reserved | |||
that initiates the RREP-Instance. | Reserved for future usage; MUST be initialized to zero and MUST be | |||
ignored upon reception. | ||||
Rank | Address Vector (Optional) | |||
It is only present when the 'H' bit is set to 0. For an | ||||
asymmetric route, it is a vector of IPv6 addresses representing | ||||
the route that the RREP-DIO has passed. For symmetric route, it | ||||
is the accumulated vector when the RREQ-DIO arrives at the | ||||
TargNode. | ||||
Rank in the DIO object MUST be the the rank of the AODV-Instance | 4.3. AODV-RPL DIO Target Option | |||
(RREQ-Instance). | ||||
Metric Container Options | The AODV-RPL Target Option is defined based on the Target Option in | |||
core RPL [RFC6550]: the Destination Sequence Number of the TargNode | ||||
is added. | ||||
AODV-Instance(RREQ-Instance) messages MAY carry one or more Metric | A RREQ-DIO message MUST carry at least one AODV-RPL Target Options. | |||
Container options to indicate the relevant routing metrics. | A RREP-DIO message MUST carry exactly one AODV-RPL Target Option | |||
encapsulating the address of the OrigNode if the 'T' bit is set to 1. | ||||
The 'S' bit is set to mean that the route is symmetric. If the RREQ- | If an OrigNode want to discover routes to multiple TargNodes, and | |||
Instance arrives over an interface that is known to be symmetric, and | these routes share the same constraints, then the OrigNode can | |||
the 'S' bit is set to 1, then it remains set at 1, as illustrated in | include all the addresses of the TargNodes into multiple AODV-RPL | |||
Figure 2. In Figure 2 and Figure 3, BR is the BorderRouter, S is the | Target Options in the RREQ-DIO, so that the cost can be reduced to | |||
OrigNode, R is an intermediate node, and D is the TargNode. | building only one DODAG. Different addresses of the TargNodes can | |||
merge if they share the same prefix. | ||||
BR | 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 | |||
/ | \ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
/ | \ | | Type | Option Length | Dest SeqNo | Prefix Length | | |||
R R R | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
/ \ | / \ | | | | |||
/ \ | / \ | + | | |||
/ \ | / \ | | Target Prefix (Variable Length) | | |||
R -------- R --- R ----- R -------- R | . . | |||
/ \ <--s=1--> / \ <--s=1--> / \ | . . | |||
<--s=1--> \ / \ / <--s=1--> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
/ \ / \ / \ | ||||
S ---------- R ------ R------ R ----- R ----------- D | ||||
/ \ / \ / \ / \ | ||||
/ \ / \ / \ / \ | ||||
/ \ / \ / \ / \ | ||||
R ----- R ----------- R ----- R ----- R ----- R ---- R----- R | ||||
>---- RREQ-Instance (Control: S-->D; Data: D-->S) -------> | Figure 3: Target option format for AODV-RPL MoP | |||
<---- RREP-Instance (Control: D-->S; Data: S-->D) -------< | ||||
Figure 2: AODV-RPL with Symmetric Paired Instances | Type | |||
The type of the AODV-RPL Target Option (see Section 9.2) | ||||
If the RREQ-Instance arrives over an interface that is not known to | Destination Sequence Number | |||
be symmetric, or is known to be asymmetric, the 'S' bit is set to be | ||||
0. Moreover, if the 'S' bit arrives already set to be '0', it is set | In RREQ-DIO, if nonzero, it is the last known Sequence Number for | |||
to be '0' on retransmission (Figure 3). Based on the 'S' bit | TargNode for which a route is desired. In RREP-DIO, it is the | |||
received in RREQ-Instance, the TargNode decides whether or not the | destination sequence number associated to the route. | |||
route is symmetric before transmitting the RREP-Instance message | ||||
upstream towards the OrigNode. The metric used to determine symmetry | 5. Symmetric and Asymmetric Routes | |||
(i.e., set the "S" bit to be "1" (Symmetric) or "0" (asymmetric)) is | ||||
implementation specific. We used ETX/RSSI to verify the feasibility | In Figure 4 and Figure 5, BR is the BorderRouter, O is the OrigNode, | |||
of the protocol operations in this draft, as discussed in Appendix A. | R is an intermediate router, and T is the TargNode. If the RREQ-DIO | |||
arrives over an interface that is known to be symmetric, and the 'S' | ||||
bit is set to 1, then it remains as 1, as illustrated in Figure 4. | ||||
An intermediate router sends out RREQ-DIO with the 'S' bit set to 1, | ||||
meaning that all the one-hop links on the route from the OrigNode to | ||||
this router meet the requirements of route discovery; thus the route | ||||
can be used symmetrically. | ||||
BR | ||||
/ | \ | ||||
/ | \ | ||||
/ | \ | ||||
R R R | ||||
/ \ | / \ | ||||
/ \ | / \ | ||||
/ \ | / \ | ||||
R -------- R --- R ----- R -------- R | ||||
/ \ <--S=1--> / \ <--S=1--> / \ | ||||
<--S=1--> \ / \ / <--S=1--> | ||||
/ \ / \ / \ | ||||
O ---------- R ------ R------ R ----- R ----------- T | ||||
/ \ / \ / \ / \ | ||||
/ \ / \ / \ / \ | ||||
/ \ / \ / \ / \ | ||||
R ----- R ----------- R ----- R ----- R ----- R ---- R----- R | ||||
>---- RREQ-Instance (Control: S-->D; Data: D-->S) -------> | ||||
<---- RREP-Instance (Control: D-->S; Data: S-->D) -------< | ||||
Figure 4: AODV-RPL with Symmetric Paired Instances | ||||
Upon receiving a RREQ-DIO with the 'S' bit set to 1, a node MUST | ||||
decide if this one-hop link can be used symmetrically, i.e., both the | ||||
two directions meet the requirements of data transmission. If the | ||||
RREQ-DIO arrives over an interface that is not known to be symmetric, | ||||
or is known to be asymmetric, the 'S' bit is set to 0. Moreover, if | ||||
the 'S' bit arrives already set to be '0', it is set to be '0' on | ||||
retransmission (Figure 5). Therefore, for asymmetric route, there is | ||||
at least one hop which doesn't fulfill the constraints in the two | ||||
directions. Based on the 'S' bit received in RREQ-DIO, the TargNode | ||||
decides whether or not the route is symmetric before transmitting the | ||||
RREP-DIO message upstream towards the OrigNode. | ||||
The criterion and the corresponding metric used to determine if a | ||||
one-hop link is symmetric or not is implementation specific and | ||||
beyond the scope of the document. Also, the difference in the metric | ||||
values for upward and downward directions of a link that can be | ||||
establish its symmetric and asymmetric nature is implementation | ||||
specific. For instance, the intermediate routers MAY choose to use | ||||
local information (e.g., bit rate, bandwidth, number of cells used in | ||||
6tisch), a priori knowledge (e.g. link quality according to previous | ||||
communication) or estimate the metric using averaging techniques or | ||||
any other means that is appropriate to the application context. | ||||
Appendix A describes an example method using the ETX and RSSI to | ||||
estimate whether the link is symmetric in terms of link quality is | ||||
given in using an averaging technique. | ||||
BR | BR | |||
/ | \ | / | \ | |||
/ | \ | / | \ | |||
/ | \ | / | \ | |||
R R R | R R R | |||
/ \ | / \ | / \ | / \ | |||
/ \ | / \ | / \ | / \ | |||
/ \ | / \ | / \ | / \ | |||
R --------- R --- R ---- R --------- R | R --------- R --- R ---- R --------- R | |||
/ \ --s=1--> / \ --s=0--> / \ | / \ --S=1--> / \ --S=0--> / \ | |||
--s=1--> \ / \ / --s=0--> | --S=1--> \ / \ / --S=0--> | |||
/ \ / \ / \ | / \ / \ / \ | |||
S ---------- R ------ R------ R ----- R ----------- D | O ---------- R ------ R------ R ----- R ----------- T | |||
/ \ / \ / \ / \ | / \ / \ / \ / \ | |||
/ <--s=0-- / \ / \ / <--s=0-- | / <--S=0-- / \ / \ / <--S=0-- | |||
/ \ / \ / \ / \ | / \ / \ / \ / \ | |||
R ----- R ----------- R ----- R ----- R ----- R ---- R----- R | R ----- R ----------- R ----- R ----- R ----- R ---- R----- R | |||
<--s=0-- <--s=0-- <--s=0-- <--s=0-- <--s=0-- | <--S=0-- <--S=0-- <--S=0-- <--S=0-- <--S=0-- | |||
>---- RREQ-Instance (Control: S-->D; Data: D-->S) -------> | >---- RREQ-Instance (Control: S-->D; Data: D-->S) -------> | |||
<---- RREP-Instance (Control: D-->S; Data: S-->D) -------< | <---- RREP-Instance (Control: D-->S; Data: S-->D) -------< | |||
Figure 3: AODV-RPL with Asymmetric Paired Instances | Figure 5: AODV-RPL with Asymmetric Paired Instances | |||
5. RREQ Message | 6. AODV-RPL Operation | |||
0 1 2 3 | 6.1. Generating Route Request at OrigNode | |||
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 | Orig SeqNo | Dest SeqNo | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
| TargNode IPv6 Address | | ||||
| | | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
Figure 4: DIO RREQ option format for AODV-RPL MoP | The route discovery process is initiated on-demand when an | |||
application at the OrigNode has data to be transmitted to the | ||||
TargNode, but no route for the target exists or the current routes | ||||
don't fulfill the requirements of the data transmission. In this | ||||
case, the OrigNode MUST build a local RPLInstance and a DODAG rooted | ||||
at itself. Then it begins to send out DIO message in AODV-RPL MoP | ||||
via link-local multicast. The DIO MUST contain exactly one RREQ | ||||
option as defined in Section 4.1, and at least one AODV-RPL Target | ||||
Option as defined in Figure 3. This DIO message is noted as RREQ- | ||||
DIO. The 'S' bit in RREQ-DIO sent out by the OrigNode is set as 1. | ||||
OrigNode supplies the following information in the RREQ option of the | The maintenance of Originator and Destination Sequence Number in the | |||
RREQ-Instance message: | RREQ option is as defined in AODV [RFC3561]. | |||
Type | The address in the AODV-RPL Target Option can be a unicast IPv6 | |||
address, a prefix or a multicast address. The OrigNode can initiate | ||||
the route discovery process for multiple targets simultaneously by | ||||
including multiple AODV-RPL Target Options, and within a RREQ-DIO the | ||||
requirements for the routes to different TargNodes MUST be the same. | ||||
The type of the RREQ option(see Section 9.2). | The OrigNode can maintain different RPLInstances to discover routes | |||
with different requirements to the same targets. Due to the | ||||
InstanceID pairing mechanism Section 6.3.3, route replies (RREP-DIOs) | ||||
from different paired RPLInstances can be distinguished. | ||||
Orig SeqNo | The transmission of RREQ-DIO follows the Trickle timer. When the L | |||
Sequence Number of OrigNode. | duration has transpired, the OrigNode MUST leave the DODAG and stop | |||
sending any RREQ-DIOs in the related RPLInstance. | ||||
Dest SeqNo | 6.2. Receiving and Forwarding Route Request | |||
If nonzero, the last known Sequence Number for TargNode for which | Upon receiving a RREQ-DIO, a router out of the RREQ-instance goes | |||
a route is desired. | through the following steps: | |||
TargNode IPv6 Address | Step 1: | |||
IPv6 address of the TargNode that receives RREQ-Instance message. | If the 'S' bit in the received RREQ-DIO is set to 1, the router | |||
MUST look into the two directions of the link by which the RREQ- | ||||
DIO is received. In case that the downward (i.e. towards the | ||||
TargNode) direction of the link can't fulfill the requirements, | ||||
then the link can't be used symmetrically, thus the 'S' bit of the | ||||
RREQ-DIO to be send out MUST be set as 0. If the 'S' bit in the | ||||
received RREQ-DIO is set to 0, the router MUST look only into the | ||||
upward direction (i.e. towards the OrigNode) of the link. If the | ||||
upward direction of the link can fulfill the requirements | ||||
indicated in the constraint option, and the router's rank would be | ||||
inferior to the MaxRank limit, the router chooses to join in the | ||||
DODAG of the RREQ-Instance. The router issuing the received RREQ- | ||||
DIO is selected as the preferred parent. Afterwards, other RREQ- | ||||
DIO message can be received. How to maintain the parent set, | ||||
select the preferred parent, and update the router's rank follows | ||||
the core RPL and the OFs defined in ROLL WG. | ||||
In order to establish the upstream route from TargNode to OrigNode, | In case that the constraint or the MaxRank limit is not fulfilled, | |||
OrigNode multicasts the RREQ-Instance message (see Figure 4) to its | the router MUST NOT join in the DODAG. Otherwise, go to the | |||
one-hop neighbours. In order to enable intermediate nodes R_i to | following steps 2, 3, 4 and 5. | |||
associate a future RREP message to an incoming RREQ message, the | ||||
InstanceID of RREQ-Instance MUST assign an odd number. | ||||
Each intermediate node R_i computes the rank for RREQ-Instance and | A router MUST discard a received RREQ-DIO if the advertised rank | |||
creates a routing table entry for the upstream route towards the | equals or exceeds the MaxRank limit. | |||
source if the routing metrics/constraints are satisfied. For this | ||||
purpose R_i must use the asymmetric link metric measured in the | ||||
upstream direction, from R_i to its upstream neighbor that | ||||
multicasted the RREQ-Instance message. | ||||
When an intermediate node R_i receives a RREQ message in storing | Step 2: | |||
mode, it MUST store the OrigNode's InstanceID (RREQ-Instance) along | ||||
with the other routing information needed to establish the route back | ||||
to the OrigNode. This will enable R_i to determine that a future | ||||
RREP message (containing a paired InstanceID for the TargNode) must | ||||
be transmitted back to the OrigNode's IP address. | ||||
If the paths to and from TargNode are not known, the intermediate | Then the router checks if one of its addresses is included in one | |||
node multicasts the RREQ-Instance message with updated rank to its | of the AODV-RPL Target Options or belongs to the indicated | |||
next-hop neighbors until the message reaches TargNode (Figure 2). | multicast group. If so, this router is one of the TargNodes. | |||
Based on the 'S' bit in the received RREQ message, the TargNode will | Otherwise, it is an intermediate router. | |||
decide whether to unicast or multicast the RREP message back to | ||||
OrigNode. | ||||
As described in Section 7, in certain circumstances R_i MAY unicast a | Step 3: | |||
Gratuitous RREP towards OrigNode, thereby helping to minimize | ||||
multicast overhead during the Route Discovery process. | ||||
6. RREP Message | If the 'H' bit is set to 1, then the router (TargNode or | |||
intermediate) MUST build route entry towards its preferred parent. | ||||
The route entry SHOULD be stored along with the associated | ||||
RPLInstanceID and DODAGID. If the 'H' bit is set to 0, an | ||||
intermediate router MUST include the address of the interface | ||||
receiving the RREQ-DIO into the address vector. | ||||
The TargNode supplies the following information in the RREP message: | Step 4: | |||
0 1 2 3 | If there are multiple AODV-RPL Target Options in the received | |||
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 | RREQ-DIO, a TargNode SHOULD continue sending RREQ-DIO to reach | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | other targets. When preparing its own RREQ-DIO, the TargNode MUST | |||
| Type | Dest SeqNo | Prefix Sz |T|G| Rsvd | | delete the AODV-RPL Target Option related to its own address, so | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | that the routers which higher ranks would know the route to this | |||
| | | target has already been found. When an intermediate router | |||
| TargNode IPv6 Address (when present) | | receives several RREQ-DIOs which include different lists of AODV- | |||
| | | RPL Target Options, the intersection of these lists will be | |||
| | | included in its own RREQ-DIO. If the intersection is empty, the | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | router SHOULD NOT send out any RREQ-DIO. Any RREQ-DIO message | |||
with different AODV-RPL Target Options coming from a router with | ||||
higher rank is ignored. | ||||
Figure 5: DIO RREP option format for AODV-RPL MoP | Step 5: | |||
Type | For an intermediate router, it sends out its own RREQ-DIO via | |||
link-local multicast. For a TargNode, it can begin to prepare the | ||||
RREP-DIO. | ||||
The type of the RREP option (see Section 9.2) | 6.3. Generating Route Reply at TargNode | |||
Dest SeqNo | 6.3.1. RREP-DIO for Symmetric route | |||
The Sequence Number for the TargNode for which a route is | When a RREQ-DIO arrives at a TargNode with the 'S' bit set to 1, it | |||
established. | means there exists a symmetric route in which the two directions can | |||
fulfill the requirements. Other RREQ-DIOs can bring the upward | ||||
direction of asymmetric routes (i.e. S=0). How to choose between a | ||||
qualified symmetric route and an asymmetric route hopefully having | ||||
better performance is implementation-specific and out of scope. If | ||||
the implementation choose to use the symmetric route, the TargNode | ||||
MAY send out the RREP-DIO after a duration RREP_WAIT_TIME to wait for | ||||
the convergence of RD to an optimal symmetric route. | ||||
Prefix Sz | For symmetric route, the RREP-DIO message is sent via unicast to the | |||
OrigNode; therefore the DODAG in RREP-Instance doesn't need to be | ||||
actually built. The RPLInstanceID in the RREP-Instance is paired as | ||||
defined in Section 6.3.3. The 'S' bit in the base DIO remains as 1. | ||||
In the RREP option, The 'SHIFT' field and the 'T' bit are set as | ||||
defined in Section 6.3.3. The address vector received in the RREQ- | ||||
DIO MUST be included in this RREP option in case the 'H' bit is set | ||||
to 0 (both in RREQ-DIO and RREP-DIO). If the 'T' bit is set to 1, | ||||
the address of the OrigNode MUST be encapsulated in an AODV-RPL | ||||
Target Option and included in this RREP-DIO message, and the | ||||
Destination Sequence Number is set according to AODV [RFC3561]. | ||||
The size of the prefix which the route to the TargNode is | 6.3.2. RREP-DIO for Asymmetric Route | |||
available. This allows routing to other nodes on the same subnet | ||||
as the TargNode. | ||||
'T' bit | When a RREQ-DIO arrives at a TargNode with the 'S' bit set to 0, the | |||
TargNode MUST build a DODAG in the RREP-Instance rooted at itself in | ||||
order to discover the downstream route from the OrigNode to the | ||||
TargNode. The RREP-DIO message MUST be send out via link-local | ||||
multicast until the OrigNode is reached or the MaxRank limit is | ||||
exceeded. | ||||
'T' is set to true to indicate that the TargNode IPv6 Address | The settings of the RREP-DIO are the same as in symmetric route. | |||
field is present | ||||
'G' bit | 6.3.3. RPLInstanceID Pairing | |||
(see Section 7) | Since the RPLInstanceID is assigned locally (i.e., there is no | |||
coordination between routers in the assignment of RPLInstanceID) the | ||||
tuple (RPLInstanceID, DODAGID, Address in the AODV-RPL Target Option) | ||||
is needed to uniquely identify a DODAG in an AODV-RPL instance. | ||||
Between the OrigNode and the TargNode, there can be multiple AODV-RPL | ||||
instances when applications upper layer have different requirements. | ||||
Therefore the RREQ-Instance and the RREP-Instance in the same route | ||||
discovery MUST be paired. The way to realize this is to pair their | ||||
RPLInstance IDs. | ||||
TargNode IPv6 Address (when present) | Typically, the two InstanceIDs are set as the local InstanceID in | |||
core RPL: | ||||
IPv6 address of the TargNode that receives RREP-Instance message. | 0 1 2 3 4 5 6 7 | |||
+-+-+-+-+-+-+-+-+ | ||||
|1|D| ID | Local RPLInstanceID in 0..63 | ||||
+-+-+-+-+-+-+-+-+ | ||||
In order to reduce the need for the TargNode IPv6 Address to be | Figure 6: Local Instance ID | |||
included with the RREP message, the InstanceID of the RREP-Instance | ||||
is paired, whenever possible, with the InstanceID from the RREQ | ||||
message, which is always an odd number. The pairing is accomplished | ||||
by adding one to the InstanceID from the RREQ message and using that, | ||||
whenever possible, as the InstanceID for the RREP message. If this | ||||
is not possible (for instance because the incremented InstanceID is | ||||
still a valid InstanceID for another route to the TargNode from an | ||||
earlier Route Discovery operation), then the 'T' bit is set and an | ||||
alternative even number is chosen for the InstanceID of RREP from | ||||
TargNode. | ||||
The OrigNode IP address for RREQ-Instance is available as the DODAGID | The first bit is set to 1 indicating the RPLInstanceID is local. The | |||
in the DIO base message (see Figure 1). When TargNode receives a | 'D' bit here is used to distinguish the two AODV-RPL instances: D=0 | |||
RREQ message with the 'S' bit set to 1 (as illustrated in Figure 2), | for RREQ-Instance, D=1 for RREP-Instance. The ID of 6 bits SHOULD be | |||
it unicasts the RREP message with the 'S' bit set to 1. In this | the same for RREQ-Instance and RREP-Instance. Here, the 'D' bit is | |||
case, route control messages and application data between OrigNode | used slightly differently than in RPL. | |||
and TargNode for both RREQ-Instance and RREP-Instance are transmitted | ||||
along symmetric links. When the 'T' bit is set to "1" in the RREP- | ||||
Instance, then the TargNode IPv6 Address is transmitted in the RREP | ||||
option. Otherwise, the TargNode IPv6 Address is elided in the RREP | ||||
option. | ||||
When (as illustrated in Figure 3) the TargNode receives RREQ message | When preparing the RREP-DIO, a TargNode could find the RPLInstanceID | |||
with the 'S' bit set to 0, it also multicasts the RREP message with | to be used for the RREP-Instance is already occupied by another | |||
the 'S' bit set to 0. Intermediate nodes create a routing table | instance from an earlier route discovery operation which is still | |||
entry for the path towards the TargNode while processing the RREP | active. In other words, two OrigNodes need routes to the same | |||
message to OrigNode. Once OrigNode receives the RREP message, it | TargNode and they happen to use the same RPLInstanceID for RREQ- | |||
starts transmitting the application data to TargNode along the path | Instance. In this case, the occupied RPLInstanceID MUST NOT be used | |||
as discovered through RREP messages. On the other hand, application | again. Then this RPLInstanceID SHOULD be shifted into another | |||
data from TargNode to OrigNode is transmitted through the path that | integer and shifted back to the original one at the OrigNode. In | |||
is discovered from RREQ message. | RREP option, the SHIFT field indicates the how many the original | |||
RPLInstanceID is shifted. When the new InstanceID after shifting | ||||
exceeds 63, it will come back counting from 0. For example, the | ||||
original InstanceID is 60, and shifted by 6, the new InstanceID will | ||||
be 2. The 'T' MUST be set to 1 to make sure the two RREP-DIOs can be | ||||
distinguished by the address of the OrigNode in the AODV-RPL Target | ||||
Option. | ||||
6.4. Receiving and Forwarding Route Reply | ||||
Upon receiving a RREP-DIO, a router out of the RREP-Instance goes | ||||
through the following steps: | ||||
Step 1: | ||||
If the 'S' bit of the RREP-DIO is set to 0, the router MUST look | ||||
into the downward direction of the link (towards the TargNode) by | ||||
which the RREP-DIO is received. If the downward direction of the | ||||
link can fulfill the requirements indicated in the constraint | ||||
option, and the router's rank would be inferior to the MaxRank | ||||
limit, the router chooses to join in the DODAG of the RREP- | ||||
Instance. The router issuing the received RREP-DIO is selected as | ||||
the preferred parent. Afterwards, other RREQ-DIO messages can be | ||||
received. How to maintain the parent set, select the preferred | ||||
parent, and update the router's rank follows the core RPL and the | ||||
OFs defined in ROLL WG. | ||||
If the constraints are not fulfilled, the router MUST NOT join in | ||||
the DODAG, and will not go through steps 2, 3, and 4. | ||||
A router MUST discard a received RREQ-DIO if the advertised rank | ||||
equals or exceeds the MaxRank limit. | ||||
If the 'S' bit is set to 1, the router does nothing in this step. | ||||
Step 2: | ||||
Then the router checks if one of its addresses is included in the | ||||
AODV-RPL Target Option. If so, this router is the OrigNode of the | ||||
route discovery. Otherwise, it is an intermediate router. | ||||
Step 3: | ||||
If the 'H' bit is set to 1, then the router (OrigNode or | ||||
intermediate) MUST build route entry including the RPLInstanceID | ||||
of RREP-Instance and the DODAGID. For symmetric route, the route | ||||
entry is to the router from which the RREP-DIO is received. For | ||||
asymmetric route, the route entry is to the preferred parent in | ||||
the DODAG of RREQ-Instance. | ||||
If the 'H' bit is set to 0, for asymmetric route, an intermediate | ||||
router MUST include the address of the interface receiving the | ||||
RREP-DIO into the address vector, and for symmetric route, there | ||||
is nothing to do in this step. | ||||
Step 4: | ||||
For an intermediate router, in case of asymmetric route, the RREP- | ||||
DIO is sent out via link-local multicast; in case of symmetric | ||||
route, the RREP-DIO is unicasted to the OrigNode via the next hop | ||||
in source routing (H=0), or via the next hop in the route entry | ||||
built in the RREQ-Instance (H=1). For the OrigNode, it can start | ||||
transmitting the application data to TargNode along the path as | ||||
discovered through RREP-Instance. | ||||
7. Gratuitous RREP | 7. Gratuitous RREP | |||
Under some circumstances, an Intermediate Node that receives a RREQ | In some cases, an Intermediate router that receives a RREQ-DIO | |||
message MAY transmit a "Gratuitous" RREP message back to OrigNode | message MAY transmit a "Gratuitous" RREP-DIO message back to OrigNode | |||
instead of continuing to multicast the RREQ message towards TargNode. | instead of continuing to multicast the RREQ-DIO towards TargNode. | |||
For these circumstances, the 'G' bit of the RREP option is provided | The intermediate router effectively builds the RREP-Instance on | |||
to distinguish the Gratuitous RREP sent by the Intermediate node from | behalf of the actual TargNode. The 'G' bit of the RREP option is | |||
the RREP sent by TargNode. | provided to distinguish the Gratuitous RREP-DIO (G=1) sent by the | |||
Intermediate node from the RREP-DIO sent by TargNode (G=0). | ||||
When an Intermediate node R receives a RREQ message and has recent | The gratuitous RREP-DIO can be sent out when an intermediate router R | |||
information about the cost of an upstream route from TargNode to R, | receives a RREQ-DIO for a TargNode T, and R happens to have both | |||
then R MAY unicast the Gratuitous RREP (GRREP) message to OrigNode. | forward and reverse routes to T which also fulfill the requirements. | |||
R determines whether its information is sufficiently recent by | ||||
comparing the value it has stored for the Sequence Number of TargNode | In case of source routing, the intermediate router R MUST unicast the | |||
against the DestSeqno in the incoming RREQ message. R also must have | received RREQ-DIO to TargNode T including the address vector between | |||
information about the metric information of the upstream route from | the OrigNode O and the router R. Thus T can have a complete address | |||
TargNode. The GRREP message MUST have PrefixSz == 0 and the 'G' bit | vector between O and itself. Then T MUST unicast a RREP-DIO | |||
set to 1. R SHOULD also unicast the RREQ message to TargNode, to | including the address vector between T and R. | |||
make sure that TargNode will have a route to OrigNode. | ||||
In case of hop-by-hop routing, R MUST unicast the received RREQ-DIO | ||||
to T. The routers along the route SHOULD build new route entries | ||||
with the related RPLInstanceID and DODAGID in the downward direction. | ||||
Then T MUST unicast the RREP-DIO to R, and the routers along the | ||||
route SHOULD build new route entries in the upward direction. Upon | ||||
received the unicast RREP-DIO, R sends the gratuitous RREP-DIO to the | ||||
OrigNode as the same way defined in Section 6.3. | ||||
8. Operation of Trickle Timer | 8. Operation of Trickle Timer | |||
The trickle timer operation to control RREQ-Instance/RREP-Instance | The trickle timer operation to control RREQ-Instance/RREP-Instance | |||
multicast is similar to that in P2P-RPL [RFC6997]. | multicast is similar to that in P2P-RPL [RFC6997]. | |||
9. IANA Considerations | 9. IANA Considerations | |||
9.1. New Mode of Operation: AODV-RPL | 9.1. New Mode of Operation: AODV-RPL | |||
IANA is required to assign a new Mode of Operation, named "AODV-RPL" | IANA is required to assign a new Mode of Operation, named "AODV-RPL" | |||
for Point-to-Point(P2P) hop-by-hop routing under the RPL registry. | for Point-to-Point(P2P) hop-by-hop routing under the RPL registry. | |||
The value of TBD1 is assigned from the "Mode of Operation" space | The value of TBD1 is assigned from the "Mode of Operation" space | |||
[RFC6550]. | [RFC6550]. | |||
+-------------+---------------+---------------+ | +-------------+---------------+---------------+ | |||
| Value | Description | Reference | | | Value | Description | Reference | | |||
+-------------+---------------+---------------+ | +-------------+---------------+---------------+ | |||
| TBD1 (5) | AODV-RPL | This document | | | TBD1 (5) | AODV-RPL | This document | | |||
+-------------+---------------+---------------+ | +-------------+---------------+---------------+ | |||
Figure 6: Mode of Operation | Figure 7: Mode of Operation | |||
9.2. AODV-RPL Options: RREQ and RREP | 9.2. AODV-RPL Options: RREQ, RREP, and Target | |||
Two entries are required for new AODV-RPL options "RREQ-Instance" and | Three entries are required for new AODV-RPL options "RREQ", "RREP" | |||
"RREQ-Instance", with values of TBD2 (0x0A) and TBD3 (0x0B) from the | and "AODV-RPL Target" with values of TBD2 (0x0A), TBD3 (0x0B) and | |||
"RPL Control Message Options" space [RFC6550]. | TBD4 (0x0C) from the "RPL Control Message Options" space [RFC6550]. | |||
+-------------+---------------------+---------------+ | +-------------+------------------------+---------------+ | |||
| Value | Meaning | Reference | | | Value | Meaning | Reference | | |||
+-------------+---------------------+---------------+ | +-------------+------------------------+---------------+ | |||
| TBD2 (0x0A) | RREQ Option | This document | | | TBD2 (0x0A) | RREQ Option | This document | | |||
+-------------+---------------------+---------------+ | +-------------+------------------------+---------------+ | |||
| TBD3 (0x0B) | RREP Option | This document | | | TBD3 (0x0B) | RREP Option | This document | | |||
+-------------+---------------------+---------------+ | +-------------+------------------------+---------------+ | |||
| TBD3 (0x0C) | AODV-RPL Target Option | This document | | ||||
+-------------+------------------------+---------------+ | ||||
Figure 7: AODV-RPL Options | Figure 8: AODV-RPL Options | |||
10. Security Considerations | 10. Security Considerations | |||
This document does not introduce additional security issues compared | This document does not introduce additional security issues compared | |||
to base RPL. For general RPL security considerations, see [RFC6550]. | to base RPL. For general RPL security considerations, see [RFC6550]. | |||
11. Future Work | 11. Future Work | |||
It may become feasible in the future to design a non-storing version | ||||
of AODV-RPL's route discovery protocol. Under the current assumption | ||||
of route asymmetry across bidirectional links, the specification is | ||||
expected to be straightforward. It should be possible to re-use the | ||||
same methods of incremental construction for source routes within | ||||
analogous fields within AODV-RPL's RREQ and RREP messages as is | ||||
currently done for DAO messages -- in other words the RPL messages | ||||
for DODAG construction. | ||||
There has been some discussion about how to determine the initial | There has been some discussion about how to determine the initial | |||
state of a link after an AODV-RPL-based network has begun operation. | state of a link after an AODV-RPL-based network has begun operation. | |||
The current draft operates as if the links are symmetric until | The current draft operates as if the links are symmetric until | |||
additional metric information is collected. The means for making | additional metric information is collected. The means for making | |||
link metric information is considered out of scope for AODV-RPL. In | link metric information is considered out of scope for AODV-RPL. In | |||
the future, RREQ and RREP messages could be equipped with new fields | the future, RREQ and RREP messages could be equipped with new fields | |||
for use in verifying link metrics. In particular, it is possible to | for use in verifying link metrics. In particular, it is possible to | |||
identify unidirectional links; an RREQ received across a | identify unidirectional links; an RREQ received across a | |||
unidirectional link has to be dropped, since the destination node | unidirectional link has to be dropped, since the destination node | |||
cannot make use of the received DODAG to route packets back to the | cannot make use of the received DODAG to route packets back to the | |||
skipping to change at page 16, line 5 ¶ | skipping to change at page 22, line 5 ¶ | |||
draft-thubert-roll-asymlink-02 (work in progress), | draft-thubert-roll-asymlink-02 (work in progress), | |||
December 2011. | December 2011. | |||
Appendix A. ETX/RSSI Values to select S bit | Appendix A. ETX/RSSI Values to select S bit | |||
We have tested the combination of "RSSI(downstream)" and "ETX | We have tested the combination of "RSSI(downstream)" and "ETX | |||
(upstream)" to decide whether the link is symmetric or asymmetric at | (upstream)" to decide whether the link is symmetric or asymmetric at | |||
the intermediate nodes. The example of how the ETX and RSSI values | the intermediate nodes. The example of how the ETX and RSSI values | |||
are used in conjuction is explained below: | are used in conjuction is explained below: | |||
Source---------->NodeA---------->NodeB------->Destination | Source---------->NodeA---------->NodeB------->Destination | |||
Figure 8: Communication link from Source to Destination | Figure 9: Communication link from Source to Destination | |||
+-------------------------+----------------------------------------+ | +-------------------------+----------------------------------------+ | |||
| RSSI at NodeA for NodeB | Expected ETX at NodeA for nodeB->nodeA | | | RSSI at NodeA for NodeB | Expected ETX at NodeA for NodeB->NodeA | | |||
+-------------------------+----------------------------------------+ | +-------------------------+----------------------------------------+ | |||
| > -15 | 150 | | | > -15 | 150 | | |||
| -25 to -15 | 192 | | | -25 to -15 | 192 | | |||
| -35 to -25 | 226 | | | -35 to -25 | 226 | | |||
| -45 to -35 | 662 | | | -45 to -35 | 662 | | |||
| -55 to -45 | 993 | | | -55 to -45 | 993 | | |||
+-------------------------+----------------------------------------+ | +-------------------------+----------------------------------------+ | |||
Table 1: Selection of 'S' bit based on Expected ETX value | Table 1: Selection of 'S' bit based on Expected ETX value | |||
skipping to change at page 16, line 39 ¶ | skipping to change at page 22, line 39 ¶ | |||
way of knowing the value of ETX from NodeB->NodeA. Using physical | way of knowing the value of ETX from NodeB->NodeA. Using physical | |||
testbed experiments and realistic wireless channel propagation | testbed experiments and realistic wireless channel propagation | |||
models, one can determine a relationship between RSSI and ETX | models, one can determine a relationship between RSSI and ETX | |||
representable as an expression or a mapping table. Such a | representable as an expression or a mapping table. Such a | |||
relationship in turn can be used to estimate ETX value at nodeA for | relationship in turn can be used to estimate ETX value at nodeA for | |||
link NodeB--->NodeA from the received RSSI from NodeB. Whenever | link NodeB--->NodeA from the received RSSI from NodeB. Whenever | |||
nodeA determines that the link towards the nodeB is bi-directional | nodeA determines that the link towards the nodeB is bi-directional | |||
asymmetric then the "S" bit is set to "S=0". Later on, the link from | asymmetric then the "S" bit is set to "S=0". Later on, the link from | |||
NodeA to Destination is asymmetric with "S" bit remains to "0". | NodeA to Destination is asymmetric with "S" bit remains to "0". | |||
Appendix B. Changes to version 02 | ||||
o Include the support for source routing. | ||||
o Bring some features from [RFC6997], e.g., choice between hop-by- | ||||
hop and source routing, duration of residence in the DAG, MaxRank, | ||||
etc. | ||||
o Define new target option for AODV-RPL, including the Destination | ||||
Sequence Number in it. Move the TargNode address in RREQ option | ||||
and the OrigNode address in RREP option into ADOV-RPL Target | ||||
Option. | ||||
o Support route discovery for multiple targets in one RREQ-DIO. | ||||
o New InstanceID pairing mechanism. | ||||
Authors' Addresses | Authors' Addresses | |||
Satish Anamalamudi | Satish Anamalamudi | |||
Huaiyin Institute of Technology | Huaiyin Institute of Technology | |||
No.89 North Beijing Road, Qinghe District | No.89 North Beijing Road, Qinghe District | |||
Huaian 223001 | Huaian 223001 | |||
China | China | |||
Email: satishnaidu80@gmail.com | Email: satishnaidu80@gmail.com | |||
Mingui Zhang | Mingui Zhang | |||
Huawei Technologies | Huawei Technologies | |||
No. 156 Beiqing Rd. Haidian District | No. 156 Beiqing Rd. Haidian District | |||
Beijing 100095 | Beijing 100095 | |||
China | China | |||
Email: zhangmingui@huawei.com | Email: zhangmingui@huawei.com | |||
Abdur Rashid Sangi | Abdur Rashid Sangi | |||
Huawei Technologies | Huaiyin Institute of Technology | |||
No.156 Beiqing Rd. Haidian District | No.89 North Beijing Road, Qinghe District | |||
Beijing 100095 | Huaian 223001 | |||
P.R. China | P.R. China | |||
Email: sangi_bahrian@yahoo.com | Email: sangi_bahrian@yahoo.com | |||
Charles E. Perkins | Charles E. Perkins | |||
Futurewei | Futurewei | |||
2330 Central Expressway | 2330 Central Expressway | |||
Santa Clara 95050 | Santa Clara 95050 | |||
Unites States | Unites States | |||
Email: charliep@computer.org | Email: charliep@computer.org | |||
S.V.R Anand | S.V.R Anand | |||
Indian Institute of Science | Indian Institute of Science | |||
Bangalore 560012 | Bangalore 560012 | |||
India | India | |||
Email: anand@ece.iisc.ernet.in | Email: anand@ece.iisc.ernet.in | |||
Bing Liu | ||||
Huawei Technologies | ||||
No. 156 Beiqing Rd. Haidian District | ||||
Beijing 100095 | ||||
China | ||||
Email: remy.liubing@huawei.com | ||||
End of changes. 118 change blocks. | ||||
355 lines changed or deleted | 663 lines changed or added | |||
This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |