| < draft-ietf-roll-aodv-rpl-03.txt | draft-ietf-roll-aodv-rpl-04.txt > | |||
|---|---|---|---|---|
| ROLL S. Anamalamudi | ROLL S. Anamalamudi | |||
| Internet-Draft Huaiyin Institute of Technology | Internet-Draft SRM University-AP | |||
| Intended status: Standards Track M. Zhang | Intended status: Standards Track M. Zhang | |||
| Expires: September 6, 2018 Huawei Technologies | Expires: January 3, 2019 Huawei Technologies | |||
| AR. Sangi | AR. Sangi | |||
| Huaiyin Institute of Technology | 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 | |||
| B. Liu | B. Liu | |||
| Huawei Technologies | Huawei Technologies | |||
| March 5, 2018 | July 2, 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-03 | draft-ietf-roll-aodv-rpl-04 | |||
| 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 both hop-by-hop routing and source | route discovery mechanism for both hop-by-hop routing and source | |||
| routing: Ad Hoc On-demand Distance Vector Routing (AODV) based RPL | routing: Ad Hoc On-demand Distance Vector Routing (AODV) based RPL | |||
| protocol. Paired Instances are used to construct directional paths, | protocol. Paired Instances are used to construct directional 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 | |||
| skipping to change at page 1, line 46 ¶ | skipping to change at page 1, line 46 ¶ | |||
| 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 September 6, 2018. | This Internet-Draft will expire on January 3, 2019. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2018 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 | |||
| skipping to change at page 2, line 25 ¶ | skipping to change at page 2, line 25 ¶ | |||
| 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 . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. Overview of AODV-RPL . . . . . . . . . . . . . . . . . . . . 6 | 3. Overview of AODV-RPL . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4. AODV-RPL DIO Options . . . . . . . . . . . . . . . . . . . . 6 | 4. AODV-RPL DIO Options . . . . . . . . . . . . . . . . . . . . 7 | |||
| 4.1. AODV-RPL DIO RREQ Option . . . . . . . . . . . . . . . . 6 | 4.1. AODV-RPL DIO RREQ Option . . . . . . . . . . . . . . . . 7 | |||
| 4.2. AODV-RPL DIO RREP Option . . . . . . . . . . . . . . . . 8 | 4.2. AODV-RPL DIO RREP Option . . . . . . . . . . . . . . . . 9 | |||
| 4.3. AODV-RPL DIO Target Option . . . . . . . . . . . . . . . 10 | 4.3. AODV-RPL DIO Target Option . . . . . . . . . . . . . . . 10 | |||
| 5. Symmetric and Asymmetric Routes . . . . . . . . . . . . . . . 11 | 5. Symmetric and Asymmetric Routes . . . . . . . . . . . . . . . 11 | |||
| 6. AODV-RPL Operation . . . . . . . . . . . . . . . . . . . . . 13 | 6. AODV-RPL Operation . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 6.1. Generating Route Request at OrigNode . . . . . . . . . . 13 | 6.1. Route Request Generation . . . . . . . . . . . . . . . . 13 | |||
| 6.2. Receiving and Forwarding Route Request . . . . . . . . . 14 | 6.2. Receiving and Forwarding RREQ messages . . . . . . . . . 14 | |||
| 6.3. Generating Route Reply at TargNode . . . . . . . . . . . 15 | 6.2.1. General Processing . . . . . . . . . . . . . . . . . 14 | |||
| 6.3.1. RREP-DIO for Symmetric route . . . . . . . . . . . . 15 | 6.2.2. Additional Processing for Multiple Targets . . . . . 15 | |||
| 6.3. Generating Route Reply (RREP) at TargNode . . . . . . . . 16 | ||||
| 6.3.1. RREP-DIO for Symmetric route . . . . . . . . . . . . 16 | ||||
| 6.3.2. RREP-DIO for Asymmetric Route . . . . . . . . . . . . 16 | 6.3.2. RREP-DIO for Asymmetric Route . . . . . . . . . . . . 16 | |||
| 6.3.3. RPLInstanceID Pairing . . . . . . . . . . . . . . . . 16 | 6.3.3. RPLInstanceID Pairing . . . . . . . . . . . . . . . . 16 | |||
| 6.4. Receiving and Forwarding Route Reply . . . . . . . . . . 17 | 6.4. Receiving and Forwarding Route Reply . . . . . . . . . . 17 | |||
| 7. Gratuitous RREP . . . . . . . . . . . . . . . . . . . . . . . 18 | 7. Gratuitous RREP . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 8. Operation of Trickle Timer . . . . . . . . . . . . . . . . . 19 | 8. Operation of Trickle Timer . . . . . . . . . . . . . . . . . 19 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 9.1. New Mode of Operation: AODV-RPL . . . . . . . . . . . . . 19 | 9.1. New Mode of Operation: AODV-RPL . . . . . . . . . . . . . 19 | |||
| 9.2. AODV-RPL Options: RREQ, RREP, and Target . . . . . . . . 19 | 9.2. AODV-RPL Options: RREQ, RREP, and Target . . . . . . . . 19 | |||
| 10. Security Considerations . . . . . . . . . . . . . . . . . . . 20 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 20 | |||
| 11. Future Work . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 11. Future Work . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 20 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 20 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 21 | 12.2. Informative References . . . . . . . . . . . . . . . . . 21 | |||
| Appendix A. ETX/RSSI Values to select S bit . . . . . . . . . . 21 | Appendix A. Example: ETX/RSSI Values to select S bit . . . . . . 21 | |||
| Appendix B. Changes to version 02 . . . . . . . . . . . . . . . 22 | Appendix B. Changelog . . . . . . . . . . . . . . . . . . . . . 22 | |||
| B.1. Changes to version 02 . . . . . . . . . . . . . . . . . . 22 | ||||
| B.2. Changes to version 03 . . . . . . . . . . . . . . . . . . 23 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 1. Introduction | 1. Introduction | |||
| RPL[RFC6550] is a IPv6 distance vector routing protocol for Low-power | RPL[RFC6550] is a IPv6 distance vector routing protocol for Low-power | |||
| and Lossy Networks (LLNs), and is designed to support multiple | and Lossy Networks (LLNs), and is designed to support multiple | |||
| traffic flows through a root-based Destination-Oriented Directed | traffic flows through a root-based Destination-Oriented Directed | |||
| Acyclic Graph (DODAG). Typically, a router does not have routing | Acyclic Graph (DODAG). Typically, a router does not have routing | |||
| information for most other routers. Consequently, for traffic | information for most other routers. Consequently, for traffic | |||
| between routers within the DODAG (i.e., Point-to-Point (P2P) traffic) | between routers within the DODAG (i.e., Point-to-Point (P2P) traffic) | |||
| data packets either have to traverse the root in non-storing mode, or | data packets either have to traverse the root in non-storing mode, or | |||
| traverse a common ancestor in storing mode. Such P2P traffic is | traverse a common ancestor in storing mode. Such P2P traffic is | |||
| thereby likely to traverse sub-optimal routes and may suffer severe | thereby likely to traverse longer routes and may suffer severe | |||
| congestion near the DAG root [RFC6997], [RFC6998]. | congestion near the DAG root [RFC6997], [RFC6998]. | |||
| To discover optimal paths for P2P traffic flows in RPL, P2P-RPL | To discover better paths for P2P traffic flows in RPL, P2P-RPL | |||
| [RFC6997] specifies a temporary DODAG where the source acts as a | [RFC6997] specifies a temporary DODAG where the source acts as a | |||
| temporary root. The source initiates DIOs encapsulating the P2P | temporary root. The source initiates DIOs encapsulating the P2P | |||
| Route Discovery option (P2P-RDO) with an address vector for both hop- | Route Discovery option (P2P-RDO) with an address vector for both hop- | |||
| by-hop mode (H=1) and source routing mode (H=0). Subsequently, each | by-hop mode (H=1) and source routing mode (H=0). Subsequently, each | |||
| intermediate router adds its IP address and multicasts the P2P mode | intermediate router adds its IP address and multicasts the P2P mode | |||
| DIOs, until the message reaches the target node (TargNode). TargNode | DIOs, until the message reaches the target node (TargNode), which | |||
| sends the "Discovery Reply" object. P2P-RPL is efficient for source | then sends the "Discovery Reply" object. P2P-RPL is efficient for | |||
| routing, but much less efficient for hop-by-hop routing due to the | source routing, but much less efficient for hop-by-hop routing due to | |||
| extra address vector overhead. However, for symmetric links, when | the extra address vector overhead. However, for symmetric links, | |||
| the P2P mode DIO message is being multicast from the source hop-by- | when the P2P mode DIO message is being multicast from the source hop- | |||
| hop, receiving nodes can infer a next hop towards the source. When | by-hop, receiving nodes can infer a next hop towards the source. | |||
| TargNode subsequently replies to the source along the established | When TargNode subsequently replies to the source along the | |||
| forward route, receiving nodes determine the next hop towards | established forward route, receiving nodes determine the next hop | |||
| TargNode. In other words, it is efficient to use only routing tables | towards TargNode. For hop-by-hop routes (H=1) over symmetric links, | |||
| for P2P-RDO message instead of "Address vector" for hop-by-hop routes | this would allow efficient use of routing tables for P2P-RDO messages | |||
| (H=1) over symmetric links. | instead of the "Address Vector". | |||
| 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, where the two directions of a link MUST both satisfy | symmetric links, where the two directions of a link MUST both satisfy | |||
| the constraints of the objective function. This eliminates the | the constraints of the objective function. This disallows the use of | |||
| possibility to use asymmetric links which are qualified in one | asymmetric links which are qualified in one direction. But, | |||
| direction. But, application-specific routing requirements as defined | application-specific routing requirements as defined in IETF ROLL | |||
| in IETF ROLL Working Group [RFC5548], [RFC5673], [RFC5826] and | Working Group [RFC5548], [RFC5673], [RFC5826] and [RFC5867] may be | |||
| [RFC5867] may be satisfied by routing paths using bidirectional | satisfied by routing paths using bidirectional asymmetric links. For | |||
| asymmetric links. For this purpose, [I-D.thubert-roll-asymlink] | this purpose, [I-D.thubert-roll-asymlink] described bidirectional | |||
| describes bidirectional asymmetric links for RPL [RFC6550] with | asymmetric links for RPL [RFC6550] with Paired DODAGs, for which the | |||
| Paired DODAGs, for which the DAG root (DODAGID) is common for two | DAG root (DODAGID) is common for two Instances. This can satisfy | |||
| Instances. This can satisfy application-specific routing | application-specific routing requirements for bidirectional | |||
| requirements for bidirectional asymmetric links in core RPL | asymmetric links in core RPL [RFC6550]. Using P2P-RPL twice with | |||
| [RFC6550]. Using P2P-RPL twice with Paired DODAGs, on the other | Paired DODAGs, on the other hand, requires two roots: one for the | |||
| hand, requires two roots: one for the source and another for the | source and another for the target node due to temporary DODAG | |||
| target node due to temporary DODAG formation. For networks composed | formation. For networks composed of bidirectional asymmetric links | |||
| of bidirectional asymmetric links (see Section 5), AODV-RPL specifies | (see Section 5), AODV-RPL specifies P2P route discovery, utilizing | |||
| P2P route discovery, utilizing RPL with a new MoP. AODV-RPL makes | RPL with a new MoP. AODV-RPL makes use of two multicast messages to | |||
| use of two multicast messages to discover possibly asymmetric routes, | discover possibly asymmetric routes, which can achieve higher route | |||
| which can achieve higher route diversity. AODV-RPL eliminates the | diversity. AODV-RPL eliminates the need for address vector overhead | |||
| need for address vector control overhead in hop-by-hop mode. This | in hop-by-hop mode. This significantly reduces the control packet | |||
| significantly reduces the control packet size, which is important for | size, which is important for Constrained LLN networks. Both | |||
| Constrained LLN networks. Both discovered routes (upward and | discovered routes (upward and downward) meet the application specific | |||
| downward) meet the application specific metrics and constraints that | metrics and constraints that are defined in the Objective Function | |||
| are defined in the Objective Function for each Instance [RFC6552]. | 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 | |||
| procedure specified in AODV [RFC3561]. The on-demand nature of AODV | procedure specified in AODV [RFC3561]. The on-demand nature of AODV | |||
| route discovery is natural for the needs of peer-to-peer routing in | route discovery is natural for the needs of peer-to-peer routing in | |||
| RPL-based LLNs. AODV terminology has been adapted for use with AODV- | RPL-based LLNs. AODV terminology has been adapted for use with AODV- | |||
| RPL messages, namely RREQ for Route Request, and RREP for Route | RPL messages, namely RREQ for Route Request, and RREP for Route | |||
| Reply. AODV-RPL currently omits some features compared to AODV -- in | Reply. AODV-RPL currently omits some features compared to AODV -- in | |||
| particular, flagging Route Errors, blacklisting unidirectional links, | particular, flagging Route Errors, blacklisting unidirectional links, | |||
| multihoming, and handling unnumbered interfaces. | multihoming, and handling unnumbered interfaces. | |||
| 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]. 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-RPL Instance | AODV-RPL Instance | |||
| Either the RREQ-Instance or RREP-Instance | Either the RREQ-Instance or RREP-Instance | |||
| Asymmetric Route | Asymmetric Route | |||
| The route from the OrigNode to the TargNode can traverse different | The route from the OrigNode to the TargNode can traverse different | |||
| nodes than the route from the TargNode to the OrigNode. An | nodes than the route from the TargNode to the OrigNode. An | |||
| asymmetric route may result from the asymmetry of links, such that | asymmetric route may result from the asymmetry of links, such that | |||
| only one direction of the series of links fulfills the constraints | only one direction of the series of links fulfills the constraints | |||
| in route discovery. If the OrigNode doesn't require an upward | in route discovery. | |||
| 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. | characteristics. | |||
| DIO | ||||
| DODAG Information Object | ||||
| DODAG RREQ-Instance (or simply RREQ-Instance) | DODAG RREQ-Instance (or simply RREQ-Instance) | |||
| RPL Instance built using the DIO with RREQ option; used for | RPL Instance built using the DIO with RREQ option; used for | |||
| control message transmission from OrigNode to TargNode, thus | control message transmission from OrigNode to TargNode, thus | |||
| enabling data 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) | |||
| RPL Instance built using the DIO with RREP option; used for | RPL Instance built using the DIO with RREP option; used for | |||
| control message transmission from TargNode to OrigNode thus | control message transmission from TargNode to OrigNode thus | |||
| enabling data transmission from OrigNode to TargNode. | enabling data transmission from OrigNode to TargNode. | |||
| Downward Direction | Downward Direction | |||
| The direction from the OrigNode to the TargNode. | The direction from the OrigNode to the TargNode. | |||
| Downward Route | Downward Route | |||
| A route in the downward direction. | 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. | |||
| on-demand routing | ||||
| Routing in which a route is established only when needed. | ||||
| 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 route discovery process of an application. | Two DODAGs for a single route discovery process between OrigNode | |||
| and TargNode. | ||||
| P2P | P2P | |||
| Point-to-Point -- in other words, not constrained to traverse a | Point-to-Point -- in other words, not constrained a priori to | |||
| common ancestor. | traverse a common ancestor. | |||
| reactive routing | ||||
| Same as "on-demand" routing. | ||||
| RREQ-DIO 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 | |||
| RPLInstanceID in RREQ-DIO is assigned locally by the OrigNode. | RPLInstanceID in RREQ-DIO is assigned locally by the OrigNode. | |||
| RREP-DIO 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 | |||
| RPLInstanceID in RREP-DIO is typically paired to the one in the | RPLInstanceID in RREP-DIO is typically paired to the one in the | |||
| associated RREQ-DIO message. | associated RREQ-DIO message. | |||
| Source routing | Source routing | |||
| The mechanism by which the source supplies the complete route | A mechanism by which the source supplies the complete route | |||
| towards the target node along with each data packet [RFC6550]. | towards the target node along with each data packet [RFC6550]. | |||
| Symmetric route | Symmetric route | |||
| The upstream and downstream routes traverse the same routers. | 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. | |||
| Upward Direction | Upward Direction | |||
| The direction from the TargNode to the OrigNode. | The direction from the TargNode to the OrigNode. | |||
| Upward Route | Upward Route | |||
| A route in the upward direction. | 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 not constrained to traverse a common ancestor. Unlike | |||
| constrained to traverse a common ancestor. Unlike core RPL [RFC6550] | RPL [RFC6550] and P2P-RPL [RFC6997], AODV-RPL can enable asymmetric | |||
| and P2P-RPL [RFC6997], AODV-RPL can enable asymmetric communication | communication paths in networks with bidirectional asymmetric links. | |||
| paths in networks with bidirectional asymmetric links. For this | For this purpose, AODV-RPL enables discovery of two routes: namely, | |||
| purpose, AODV-RPL enables discovery of two routes: namely, one from | one from OrigNode to TargNode, and another from TargNode to OrigNode. | |||
| OrigNode to TargNode, and another from TargNode to OrigNode. When | When possible, AODV-RPL also enables symmetric route discovery along | |||
| possible, AODV-RPL also enables symmetric route discovery along | ||||
| Paired DODAGs (see Section 5). | Paired DODAGs (see Section 5). | |||
| In AODV-RPL, route discovery is initiated by forming a temporary DAG | In AODV-RPL, routes are discovered by first 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 the 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 4). Intermediate routers join the | to OrigNode. Intermediate routers join the Paired DODAGs based on | |||
| Paired DODAGs based on the rank as calculated from the DIO message. | the rank as calculated from the DIO message. Henceforth in this | |||
| Henceforth in this document, the RREQ-DIO message means the AODV-RPL | document, the RREQ-DIO message means the AODV-RPL mode DIO message | |||
| mode DIO message from OrigNode to TargNode, containing the RREQ | from OrigNode to TargNode, containing the RREQ option (see | |||
| option. Similarly, the RREP-DIO message means the AODV-RPL mode DIO | Section 4.1). Similarly, the RREP-DIO message means the AODV-RPL | |||
| message from TargNode to OrigNode, containing the RREP option. | mode DIO message from TargNode to OrigNode, containing the RREP | |||
| Subsequently, the route discovered in the RREQ-Instance is used for | option (see Section 4.2). The route discovered in the RREQ-Instance | |||
| data transmission from TargNode to OrigNode, and the route discovered | is used for transmitting data from TargNode to OrigNode, and the | |||
| in RREP-Instance is used for Data transmission from OrigNode to | route discovered in RREP-Instance is used for transmitting data from | |||
| TargNode. | OrigNode to TargNode. | |||
| 4. AODV-RPL DIO Options | 4. AODV-RPL DIO Options | |||
| 4.1. AODV-RPL DIO RREQ Option | 4.1. AODV-RPL DIO RREQ Option | |||
| A RREQ-DIO message MUST carry exactly one RREQ option. | OrigNode sets its IPv6 address in the DODAGID field of the RREQ-DIO | |||
| message. A RREQ-DIO message MUST carry exactly one RREQ option. | ||||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type | Option Length |S|H|X| Compr | L | MaxRank | | | Type | Option Length |S|H|X| Compr | L | MaxRank | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Orig SeqNo | | | | Orig SeqNo | | | |||
| +-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+ | | |||
| | | | | | | |||
| | | | | | | |||
| | Address Vector (Optional, Variable Length) | | | Address Vector (Optional, Variable Length) | | |||
| | | | | | | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 1: DIO RREQ option format for AODV-RPL MoP | Figure 1: DIO RREQ option format for AODV-RPL MoP | |||
| OrigNode supplies the following information in the RREQ option of the | OrigNode supplies the following information in the RREQ option: | |||
| RREQ-Instance message: | ||||
| Type | Type | |||
| The type assigned to the RREQ option (see Section 9.2). | ||||
| The type of the RREQ option(see Section 9.2). | ||||
| Option Length | Option Length | |||
| The length of the option in octets, excluding the Type and Length | ||||
| Length of the option in octets excluding the Type and Length | ||||
| fields. Variable due to the presence of the address vector and | fields. Variable due to the presence of the address vector and | |||
| the number of octets elided according to the Compr value. | the number of octets elided according to the Compr value. | |||
| S | S | |||
| Symmetric bit indicating a symmetric route from the OrigNode to | 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 router transmitting this RREQ-DIO. | |||
| the RREQ-DIO when the OrigNode initiates the route discovery. | ||||
| X | ||||
| Reserved. | ||||
| H | H | |||
| Set to one for a hop-by-hop route. Set to zero for a source | ||||
| route. This flag controls both the downstream route and upstream | ||||
| route. | ||||
| The OrigNode sets this flag to one if it desires a hop-by-hop | X | |||
| route. It sets this flag to zero if it desires a source route. | Reserved. | |||
| This flag is valid to both downstream route and upstream route. | ||||
| Compr | Compr | |||
| 4-bit unsigned integer. Number of prefix octets that are elided | 4-bit unsigned integer. Number of prefix octets that are elided | |||
| from the Address Vector. The octets elided are shared with the | from the Address Vector. The octets elided are shared with the | |||
| IPv6 address in the DODAGID. | IPv6 address in the DODAGID. This field is only used in source | |||
| routing mode (H=0). In hop-by-hop mode (H=1), this field MUST be | ||||
| set to zero and ignored upon reception. | ||||
| L | 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. | 2-bit unsigned integer determining the duration that a node is | |||
| able to belong to 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 definition for the "L" bit is similar to | ||||
| that found in [RFC6997], except that the values are adjusted to | ||||
| enable arbitrarily long route lifetime. | ||||
| * 0x00: No time limit imposed. | ||||
| * 0x01: 2 seconds | * 0x01: 2 seconds | |||
| * 0x02: 16 seconds | * 0x02: 16 seconds | |||
| * 0x03: 64 seconds | * 0x03: 64 seconds | |||
| It should be indicated here that L is not the route lifetime, | L is independent from the route lifetime, which is defined in the | |||
| which is defined in the DODAG configuration option. The route | DODAG configuration option. The route entries in hop-by-hop | |||
| entries in hop-by-hop routing and states of source routing can | routing and states of source routing can still be maintained even | |||
| still be maintained even after the DAG expires. | after the DAG expires. | |||
| MaxRank | MaxRank | |||
| This field indicates the upper limit on the integer portion of the | 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 | rank (calculated using the DAGRank() macro defined in [RFC6550]). | |||
| would equal to or higher than the limit. A value of 0 in this | A value of 0 in this field indicates the limit is infinity. | |||
| field indicates the limit is infinity. For more details please | ||||
| refer to [RFC6997]. | ||||
| OrigNode Sequence Number | ||||
| Orig SeqNo | ||||
| Sequence Number of OrigNode, defined similarly as in AODV | Sequence Number of OrigNode, defined similarly as in AODV | |||
| [RFC3561]. | [RFC3561]. | |||
| Address Vector (Optional) | Address Vector | |||
| A vector of IPv6 addresses representing the route that the RREQ- | 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. | 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. | The prefix of each address is elided according to the Compr field. | |||
| 4.2. AODV-RPL DIO RREP Option | A node MUST NOT join a RREQ instance if its own rank would equal to | |||
| or higher than MaxRank. Targnode can join the RREQ instance at a | ||||
| rank whose integer portion is equal to the MaxRank. A router MUST | ||||
| discard a received RREQ if the integer part of the advertised rank | ||||
| equals or exceeds the MaxRank limit. This definition of MaxRank is | ||||
| the same as that found in [RFC6997]. | ||||
| A RREP-DIO message MUST carry exactly one RREP option. | 4.2. AODV-RPL DIO RREP Option | |||
| The TargNode supplies the following information in the RREP option: | TargNode sets its IPv6 address in the DODAGID field of the RREP-DIO | |||
| message. A RREP-DIO message MUST carry exactly one RREP option. | ||||
| TargNode supplies the following information in the RREP option: | ||||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type | Option Length |H|X| Compr | L | MaxRank | | | Type | Option Length |G|H|X| Compr | L | MaxRank | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |T|G| SHIFT | Reserved | | | | Shift |Rsv| | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+ | | |||
| | | | | | | |||
| | | | | | | |||
| | Address Vector (Optional, Variable Length) | | | Address Vector (Optional, Variable Length) | | |||
| . . | . . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 2: DIO RREP option format for AODV-RPL MoP | Figure 2: DIO RREP option format for AODV-RPL MoP | |||
| Type | Type | |||
| The type of the RREP option (see Section 9.2) | The type assigned to the RREP option (see Section 9.2) | |||
| Option Length | Option Length | |||
| Length of the option in octets excluding the Type and Length | The length of the option in octets, excluding the Type and Length | |||
| fields. Variable due to the presence of the address vector and | fields. Variable due to the presence of the address vector and | |||
| the number of octets elided according to the Compr value. | the number of octets elided according to the Compr value. | |||
| G | ||||
| Gratuitous route (see Section 7). | ||||
| H | H | |||
| This bit indicates the downstream route is source routing (H=0) or | Requests either source routing (H=0) or hop-by-hop (H=1) for the | |||
| hop-by-hop (H=1). It SHOULD be set to be the same as the 'H' bit | downstream route. It MUST be set to be the same as the 'H' bit in | |||
| in RREQ option. | RREQ option. | |||
| X | X | |||
| Reserved. | Reserved. | |||
| Compr | Compr | |||
| 4-bit unsigned integer. Same definition as in RREQ option. | 4-bit unsigned integer. Same definition as in RREQ option. | |||
| L | L | |||
| 2-bit unsigned integer with the same definition as in Section 4.1. | 2-bit unsigned integer defined as in RREQ option. | |||
| MaxRank | MaxRank | |||
| Same definition as in RREQ option. | Similarly to MaxRank in the RREQ message, this field indicates the | |||
| upper limit on the integer portion of the rank. A value of 0 in | ||||
| T | this field indicates the limit is infinity. | |||
| '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. | ||||
| G | ||||
| Gratuitous route (see Section 7). | ||||
| SHIFT | Shift | |||
| 6-bit unsigned integer. This field indicates the how many the | 6-bit unsigned integer. This field is used to recover the | |||
| original InstanceID (see Section 6.3.3) is shifted (added an | original InstanceID (see Section 6.3.3); 0 indicates that the | |||
| integer from 0 to 63). 0 indicates that the original InstanceID | original InstanceID is used. | |||
| is used. | ||||
| Reserved | Rsv | |||
| Reserved for future usage; MUST be initialized to zero and MUST be | MUST be initialized to zero and ignored upon reception. | |||
| ignored upon reception. | ||||
| Address Vector (Optional) | Address Vector | |||
| It is only present when the 'H' bit is set to 0. For an | Only present when the 'H' bit is set to 0. For an asymmetric | |||
| asymmetric route, it is a vector of IPv6 addresses representing | route, the Address Vector represents the IPv6 addresses of the | |||
| the route that the RREP-DIO has passed. For symmetric route, it | route that the RREP-DIO has passed. For a symmetric route, it is | |||
| is the accumulated vector when the RREQ-DIO arrives at the | the Address Vector when the RREQ-DIO arrives at the TargNode, | |||
| TargNode. | unchanged during the transmission to the OrigNode. | |||
| 4.3. AODV-RPL DIO Target Option | 4.3. AODV-RPL DIO Target Option | |||
| The AODV-RPL Target Option is defined based on the Target Option in | The AODV-RPL Target Option is defined based on the Target Option in | |||
| core RPL [RFC6550]: the Destination Sequence Number of the TargNode | core RPL [RFC6550]: the Destination Sequence Number of the TargNode | |||
| is added. | is added. | |||
| A RREQ-DIO message MUST carry at least one AODV-RPL Target Options. | A RREQ-DIO message MUST carry at least one AODV-RPL Target Options. | |||
| A RREP-DIO message MUST carry exactly one AODV-RPL Target Option | 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. | ||||
| If an OrigNode want to discover routes to multiple TargNodes, and | OrigNode can include multiple TargNode addresses via multiple AODV- | |||
| these routes share the same constraints, then the OrigNode can | RPL Target Options in the RREQ-DIO, for routes that share the same | |||
| include all the addresses of the TargNodes into multiple AODV-RPL | constraints. This reduces the cost to building only one DODAG. | |||
| Target Options in the RREQ-DIO, so that the cost can be reduced to | Furthermore, a single Target Option can be used for different | |||
| building only one DODAG. Different addresses of the TargNodes can | TargNode addresses if they share the same prefix; in that case the | |||
| merge if they share the same prefix. | use of the destination sequence number is not defined in this | |||
| document. | ||||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type | Option Length | Dest SeqNo | Prefix Length | | | Type | Option Length | Dest SeqNo | Prefix Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| + | | + | | |||
| | Target Prefix (Variable Length) | | | Target Prefix (Variable Length) | | |||
| . . | . . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 3: Target option format for AODV-RPL MoP | Figure 3: Target option format for AODV-RPL MoP | |||
| Type | Type | |||
| The type of the AODV-RPL Target Option (see Section 9.2) | The type assigned to the AODV-RPL Target Option | |||
| Destination Sequence Number | Dest SeqNo | |||
| In RREQ-DIO, if nonzero, it is the last known Sequence Number for | In RREQ-DIO, if nonzero, it is the last known Sequence Number for | |||
| TargNode for which a route is desired. In RREP-DIO, it is the | TargNode for which a route is desired. In RREP-DIO, it is the | |||
| destination sequence number associated to the route. | destination sequence number associated to the route. | |||
| 5. Symmetric and Asymmetric Routes | 5. Symmetric and Asymmetric Routes | |||
| In Figure 4 and Figure 5, BR is the BorderRouter, O is the OrigNode, | In Figure 4 and Figure 5, BR is the Border Router, O is the OrigNode, | |||
| R is an intermediate router, and T is the TargNode. If the RREQ-DIO | 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' | 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. | 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, | If an intermediate router sends out RREQ-DIO with the 'S' bit set to | |||
| meaning that all the one-hop links on the route from the OrigNode to | 1, then all the one-hop links on the route from the OrigNode O to | |||
| this router meet the requirements of route discovery; thus the route | this router meet the requirements of route discovery, and the route | |||
| can be used symmetrically. | can be used symmetrically. | |||
| BR | BR | |||
| / | \ | /----+----\ | |||
| / | \ | / | \ | |||
| / | \ | / | \ | |||
| R R R | R R R | |||
| / \ | / \ | _/ \ | / \ | |||
| / \ | / \ | / \ | / \ | |||
| / \ | / \ | / \ | / \ | |||
| R -------- R --- R ----- R -------- R | R -------- R --- R ----- R -------- R | |||
| / \ <--S=1--> / \ <--S=1--> / \ | / \ <--S=1--> / \ <--S=1--> / \ | |||
| <--S=1--> \ / \ / <--S=1--> | <--S=1--> \ / \ / <--S=1--> | |||
| / \ / \ / \ | / \ / \ / \ | |||
| O ---------- R ------ R------ R ----- R ----------- T | O ---------- R ------ R------ R ----- R ----------- T | |||
| / \ / \ / \ / \ | / \ / \ / \ / \ | |||
| / \ / \ / \ / \ | / \ / \ / \ / \ | |||
| / \ / \ / \ / \ | / \ / \ / \ / \ | |||
| R ----- R ----------- R ----- R ----- R ----- R ---- R----- R | R ----- R ----------- R ----- R ----- R ----- R ---- R----- R | |||
| >---- RREQ-Instance (Control: S-->D; Data: D-->S) -------> | >---- RREQ-Instance (Control: O-->T; Data: T-->O) -------> | |||
| <---- RREP-Instance (Control: D-->S; Data: S-->D) -------< | <---- RREP-Instance (Control: T-->O; Data: O-->T) -------< | |||
| Figure 4: AODV-RPL with Symmetric Paired Instances | Figure 4: AODV-RPL with Symmetric Paired Instances | |||
| Upon receiving a RREQ-DIO with the 'S' bit set to 1, a node MUST | Upon receiving a RREQ-DIO with the 'S' bit set to 1, a node | |||
| decide if this one-hop link can be used symmetrically, i.e., both the | determines whether this one-hop link can be used symmetrically, i.e., | |||
| two directions meet the requirements of data transmission. If the | both the two directions meet the requirements of data transmission. | |||
| RREQ-DIO arrives over an interface that is not known to be symmetric, | If the RREQ-DIO arrives over an interface that is not known to be | |||
| or is known to be asymmetric, the 'S' bit is set to 0. Moreover, if | symmetric, or is known to be asymmetric, the 'S' bit is set to 0. If | |||
| the 'S' bit arrives already set to be '0', it is set to be '0' on | 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 | retransmission (Figure 5). Therefore, for asymmetric route, there is | |||
| at least one hop which doesn't fulfill the constraints in the two | 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 | directions. Based on the 'S' bit received in RREQ-DIO, the TargNode | |||
| decides whether or not the route is symmetric before transmitting the | T determines whether or not the route is symmetric before | |||
| RREP-DIO message upstream towards the OrigNode. | transmitting the RREP-DIO message upstream towards the OrigNode O. | |||
| The criterion and the corresponding metric used to determine if a | The criteria used to determine whether or not each link is symmetric | |||
| one-hop link is symmetric or not is implementation specific and | is beyond the scope of the document, and may be implementation- | |||
| beyond the scope of the document. Also, the difference in the metric | specific. For instance, intermediate routers MAY use local | |||
| values for upward and downward directions of a link that can be | information (e.g., bit rate, bandwidth, number of cells used in | |||
| 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 | 6tisch), a priori knowledge (e.g. link quality according to previous | |||
| communication) or estimate the metric using averaging techniques or | communication) or use averaging techniques as appropriate to the | |||
| any other means that is appropriate to the application context. | application. | |||
| Appendix A describes an example method using the ETX and RSSI to | Appendix A describes an example method using the ETX and RSSI to | |||
| estimate whether the link is symmetric in terms of link quality is | estimate whether the link is symmetric in terms of link quality is | |||
| given in using an averaging technique. | 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--> | |||
| / \ / \ / \ | / \ / \ / \ | |||
| O ---------- R ------ R------ R ----- R ----------- T | 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: O-->T; Data: T-->O) -------> | |||
| <---- RREP-Instance (Control: D-->S; Data: S-->D) -------< | <---- RREP-Instance (Control: T-->O; Data: O-->T) -------< | |||
| Figure 5: AODV-RPL with Asymmetric Paired Instances | Figure 5: AODV-RPL with Asymmetric Paired Instances | |||
| 6. AODV-RPL Operation | 6. AODV-RPL Operation | |||
| 6.1. Generating Route Request at OrigNode | 6.1. Route Request Generation | |||
| The route discovery process is initiated on-demand when an | The route discovery process is initiated when an application at the | |||
| application at the OrigNode has data to be transmitted to the | OrigNode has data to be transmitted to the TargNode, but does not | |||
| TargNode, but no route for the target exists or the current routes | have a route for the target that fulfills the requirements of the | |||
| don't fulfill the requirements of the data transmission. In this | data transmission. In this case, the OrigNode builds a local | |||
| case, the OrigNode MUST build a local RPLInstance and a DODAG rooted | RPLInstance and a DODAG rooted at itself. Then it transmits a DIO | |||
| at itself. Then it begins to send out DIO message in AODV-RPL MoP | message containing exactly one RREQ option (see Section 4.1) via | |||
| via link-local multicast. The DIO MUST contain exactly one RREQ | link-local multicast. The DIO MUST contain at least one AODV-RPL | |||
| option as defined in Section 4.1, and at least one AODV-RPL Target | Target Option (see Section 4.3). The 'S' bit in RREQ-DIO sent out by | |||
| Option as defined in Figure 3. This DIO message is noted as RREQ- | the OrigNode is set to 1. | |||
| DIO. The 'S' bit in RREQ-DIO sent out by the OrigNode is set as 1. | ||||
| The maintenance of Originator and Destination Sequence Number in the | The OrigNode maintains its Sequence Number as defined in AODV | |||
| RREQ option is as defined in AODV [RFC3561]. | [RFC3561]. Namely, the OrigNode increments its Sequence number each | |||
| time it initiate a new route discovery operation by transmitting a | ||||
| new RREQ message. Similarly, TargNode increments its Sequence number | ||||
| each time it transmits a RREP message in response to a new RREQ | ||||
| message (one with an incremented Sequence Number for OrigNode). | ||||
| The address in the AODV-RPL Target Option can be a unicast IPv6 | The address in the AODV-RPL Target Option can be a unicast IPv6 | |||
| address, a prefix or a multicast address. The OrigNode can initiate | address, or a prefix. The OrigNode can initiate the route discovery | |||
| the route discovery process for multiple targets simultaneously by | process for multiple targets simultaneously by including multiple | |||
| including multiple AODV-RPL Target Options, and within a RREQ-DIO the | AODV-RPL Target Options, and within a RREQ-DIO the requirements for | |||
| requirements for the routes to different TargNodes MUST be the same. | the routes to different TargNodes MUST be the same. | |||
| The OrigNode can maintain different RPLInstances to discover routes | OrigNode can maintain different RPLInstances to discover routes with | |||
| with different requirements to the same targets. Due to the | different requirements to the same targets. Using the InstanceID | |||
| InstanceID pairing mechanism Section 6.3.3, route replies (RREP-DIOs) | pairing mechanism (see Section 6.3.3), route replies (RREP-DIOs) for | |||
| from different paired RPLInstances can be distinguished. | different RPLInstances can be distinguished. | |||
| The transmission of RREQ-DIO follows the Trickle timer. When the L | The transmission of RREQ-DIO obeys the Trickle timer. If the | |||
| duration has transpired, the OrigNode MUST leave the DODAG and stop | duration specified by the "L" bit has elapsed, the OrigNode MUST | |||
| sending any RREQ-DIOs in the related RPLInstance. | leave the DODAG and stop sending RREQ-DIOs in the related | |||
| RPLInstance. | ||||
| 6.2. Receiving and Forwarding Route Request | 6.2. Receiving and Forwarding RREQ messages | |||
| Upon receiving a RREQ-DIO, a router out of the RREQ-instance goes | 6.2.1. General Processing | |||
| through the following steps: | ||||
| Upon receiving a RREQ-DIO, a router which does not belong to the | ||||
| RREQ-instance goes through the following steps: | ||||
| Step 1: | Step 1: | |||
| If the 'S' bit in the received RREQ-DIO is set to 1, the router | 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- | MUST check the two directions of the link by which the RREQ-DIO is | |||
| DIO is received. In case that the downward (i.e. towards the | received. In case that the downward (i.e. towards the TargNode) | |||
| TargNode) direction of the link can't fulfill the requirements, | direction of the link can't fulfill the requirements, the link | |||
| then the link can't be used symmetrically, thus the 'S' bit of the | can't be used symmetrically, thus the 'S' bit of the RREQ-DIO to | |||
| RREQ-DIO to be send out MUST be set as 0. If the 'S' bit in the | be sent out MUST be set as 0. If the 'S' bit in the received | |||
| received RREQ-DIO is set to 0, the router MUST look only into the | RREQ-DIO is set to 0, the router only checks into the upward | |||
| upward direction (i.e. towards the OrigNode) of the link. If the | direction (towards the OrigNode) of the link. | |||
| 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 case that the constraint or the MaxRank limit is not fulfilled, | ||||
| the router MUST NOT join in the DODAG. Otherwise, go to the | ||||
| following steps 2, 3, 4 and 5. | ||||
| A router MUST discard a received RREQ-DIO if the advertised rank | If the upward direction of the link can fulfill the requirements | |||
| equals or exceeds the MaxRank limit. | indicated in the constraint option, and the router's rank would | |||
| not exceed the MaxRank limit, the router joins the DODAG of the | ||||
| RREQ-Instance. The router that transmitted the received RREQ-DIO | ||||
| is selected as the preferred parent. Later, other RREQ-DIO | ||||
| messages might be received. How to maintain the parent set, | ||||
| select the preferred parent, and update the router's rank obeys | ||||
| the core RPL and the OFs defined in ROLL WG. In case that the | ||||
| constraint or the MaxRank limit is not fulfilled, the router MUST | ||||
| discard the received RREQ-DIO and MUST NOT join the DODAG. | ||||
| Step 2: | Step 2: | |||
| Then the router checks if one of its addresses is included in one | Then the router checks if one of its addresses is included in one | |||
| of the AODV-RPL Target Options or belongs to the indicated | of the AODV-RPL Target Options. If so, this router is one of the | |||
| multicast group. If so, this router is one of the TargNodes. | TargNodes. Otherwise, it is an intermediate router. | |||
| Otherwise, it is an intermediate router. | ||||
| Step 3: | Step 3: | |||
| If the 'H' bit is set to 1, then the router (TargNode or | If the 'H' bit is set to 1, then the router (TargNode or | |||
| intermediate) MUST build route entry towards its preferred parent. | intermediate) MUST build the upward route entry accordingly. The | |||
| The route entry SHOULD be stored along with the associated | route entry MUST include at least the following items: Source | |||
| RPLInstanceID and DODAGID. If the 'H' bit is set to 0, an | Address, InstanceID, Destination Address, Next Hop and Lifetime. | |||
| intermediate router MUST include the address of the interface | The Destination Address and the InstanceID can be respectively | |||
| receiving the RREQ-DIO into the address vector. | learned from the DODAGID and the RPLInstanceID of the RREQ-DIO, | |||
| and the Source Address is copied from the AODV-RPL Target Option. | ||||
| The next hop is the preferred parent. And the lifetime is set | ||||
| according to DODAG configuration and can be extended when the | ||||
| route is actually used. | ||||
| 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. | ||||
| Step 4: | Step 4: | |||
| If there are multiple AODV-RPL Target Options in the received | An intermediate router transmits a RREQ-DIO via link-local | |||
| RREQ-DIO, a TargNode SHOULD continue sending RREQ-DIO to reach | multicast. TargNode prepares a RREP-DIO. | |||
| other targets. When preparing its own RREQ-DIO, the TargNode MUST | ||||
| 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 | ||||
| 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. | ||||
| Step 5: | 6.2.2. Additional Processing for Multiple Targets | |||
| For an intermediate router, it sends out its own RREQ-DIO via | If the OrigNode tries to reach multiple TargNodes in a single RREQ- | |||
| link-local multicast. For a TargNode, it can begin to prepare the | instance, one of the TargNodes can be an intermediate router to the | |||
| RREP-DIO. | others, therefore it SHOULD continue sending RREQ-DIO to reach other | |||
| targets. In this case, before rebroadcasting the RREQ-DIO, a | ||||
| TargNode MUST delete the Target Option encapsulating its own address, | ||||
| so that downstream routers with higher ranks do not try to create a | ||||
| route to this TargetNode. | ||||
| 6.3. Generating Route Reply at TargNode | An intermediate router could receive several RREQ-DIOs from routers | |||
| with lower ranks in the same RREQ-instance but have different lists | ||||
| of Target Options. When rebroadcasting the RREQ-DIO, the | ||||
| intersection of these lists SHOULD be included. For example, suppose | ||||
| two RREQ-DIOs are received with the same RPLInstance and OrigNode. | ||||
| Suppose further that the first RREQ has (T1, T2) as the targets, and | ||||
| the second one has (T2, T4) as targets. Then only T2 needs to be | ||||
| included in the generated RREQ-DIO. If the intersection is empty, it | ||||
| means that all the targets have been reached, and 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. | ||||
| 6.3. Generating Route Reply (RREP) at TargNode | ||||
| 6.3.1. RREP-DIO for Symmetric route | 6.3.1. RREP-DIO for Symmetric route | |||
| When a RREQ-DIO arrives at a TargNode with the 'S' bit set to 1, it | If a RREQ-DIO arrives at TargNode with the 'S' bit set to 1, there is | |||
| means there exists a symmetric route in which the two directions can | a symmetric route along which both directions can fulfill the | |||
| fulfill the requirements. Other RREQ-DIOs can bring the upward | requirements. Other RREQ-DIOs might later provide asymmetric upward | |||
| direction of asymmetric routes (i.e. S=0). How to choose between a | routes (i.e. S=0). Selection between a qualified symmetric route | |||
| qualified symmetric route and an asymmetric route hopefully having | and an asymmetric route that might have better performance is | |||
| better performance is implementation-specific and out of scope. If | implementation-specific and out of scope. If the implementation uses | |||
| the implementation choose to use the symmetric route, the TargNode | the symmetric route, the TargNode MAY delay transmitting the RREP-DIO | |||
| MAY send out the RREP-DIO after a duration RREP_WAIT_TIME to wait for | for duration RREP_WAIT_TIME to await a better symmetric route. | |||
| the convergence of RD to an optimal symmetric route. | ||||
| For symmetric route, the RREP-DIO message is sent via unicast to the | For a symmetric route, the RREP-DIO message is unicast to the next | |||
| OrigNode; therefore the DODAG in RREP-Instance doesn't need to be | hop according to the accumulated address vector (H=0) or the route | |||
| actually built. The RPLInstanceID in the RREP-Instance is paired as | entry (H=1). Thus the DODAG in RREP-Instance does not need to be | |||
| defined in Section 6.3.3. The 'S' bit in the base DIO remains as 1. | built. The RPLInstanceID in the RREP-Instance is paired as defined | |||
| In the RREP option, The 'SHIFT' field and the 'T' bit are set as | in Section 6.3.3. In case the 'H' bit is set to 0, the address | |||
| defined in Section 6.3.3. The address vector received in the RREQ- | vector received in the RREQ-DIO MUST be included in the RREP-DIO. | |||
| DIO MUST be included in this RREP option in case the 'H' bit is set | The address of the OrigNode MUST be encapsulated in an AODV-RPL | |||
| to 0 (both in RREQ-DIO and RREP-DIO). If the 'T' bit is set to 1, | Target Option and included in this RREP-DIO message, and the Dest | |||
| the address of the OrigNode MUST be encapsulated in an AODV-RPL | SeqNo is incremented, as is done in AODV [RFC3561]. | |||
| Target Option and included in this RREP-DIO message, and the | ||||
| Destination Sequence Number is set according to AODV [RFC3561]. | ||||
| 6.3.2. RREP-DIO for Asymmetric Route | 6.3.2. RREP-DIO for Asymmetric Route | |||
| When a RREQ-DIO arrives at a TargNode with the 'S' bit set to 0, the | 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 | TargNode MUST build a DODAG in the RREP-Instance rooted at itself in | |||
| order to discover the downstream route from the OrigNode to the | order to discover the downstream route from the OrigNode to the | |||
| TargNode. The RREP-DIO message MUST be send out via link-local | TargNode. The RREP-DIO message MUST be re-transmitted via link-local | |||
| multicast until the OrigNode is reached or the MaxRank limit is | multicast until the OrigNode is reached or MaxRank is exceeded. | |||
| exceeded. | ||||
| The settings of the RREP-DIO are the same as in symmetric route. | The settings of the fields in RREP option are the same as in | |||
| symmetric route except for the 'S' bit. | ||||
| 6.3.3. RPLInstanceID Pairing | 6.3.3. RPLInstanceID Pairing | |||
| Since the RPLInstanceID is assigned locally (i.e., there is no | Since the RPLInstanceID is assigned locally (i.e., there is no | |||
| coordination between routers in the assignment of RPLInstanceID) the | coordination between routers in the assignment of RPLInstanceID), the | |||
| tuple (RPLInstanceID, DODAGID, Address in the AODV-RPL Target Option) | tuple (OrigNode, TargNode, RPLInstanceID) is needed to uniquely | |||
| is needed to uniquely identify a DODAG in an AODV-RPL instance. | identify a discovered route. The upper layer applications may have | |||
| Between the OrigNode and the TargNode, there can be multiple AODV-RPL | different requirements and they can initiate the route discoveries | |||
| instances when applications upper layer have different requirements. | simultaneously. Thus between the same pair of OrigNode and TargNode, | |||
| Therefore the RREQ-Instance and the RREP-Instance in the same route | there can be multiple AODV-RPL instances. To avoid any mismatch, the | |||
| discovery MUST be paired. The way to realize this is to pair their | RREQ-Instance and the RREP-Instance in the same route discovery MUST | |||
| RPLInstance IDs. | be paired somehow, e.g. using the RPLInstanceID. | |||
| Typically, the two InstanceIDs are set as the local InstanceID in | ||||
| core RPL: | ||||
| 0 1 2 3 4 5 6 7 | ||||
| +-+-+-+-+-+-+-+-+ | ||||
| |1|D| ID | Local RPLInstanceID in 0..63 | ||||
| +-+-+-+-+-+-+-+-+ | ||||
| Figure 6: Local Instance ID | ||||
| The first bit is set to 1 indicating the RPLInstanceID is local. The | ||||
| 'D' bit here is used to distinguish the two AODV-RPL instances: D=0 | ||||
| for RREQ-Instance, D=1 for RREP-Instance. The ID of 6 bits SHOULD be | ||||
| the same for RREQ-Instance and RREP-Instance. Here, the 'D' bit is | ||||
| used slightly differently than in RPL. | ||||
| When preparing the RREP-DIO, a TargNode could find the RPLInstanceID | When preparing the RREP-DIO, a TargNode could find the RPLInstanceID | |||
| to be used for the RREP-Instance is already occupied by another | to be used for the RREP-Instance is already occupied by another RPL | |||
| instance from an earlier route discovery operation which is still | Instance from an earlier route discovery operation which is still | |||
| active. In other words, two OrigNodes need routes to the same | active. In other words, it might happen that two distinct OrigNodes | |||
| TargNode and they happen to use the same RPLInstanceID for RREQ- | need routes to the same TargNode, and they happen to use the same | |||
| Instance. In this case, the occupied RPLInstanceID MUST NOT be used | RPLInstanceID for RREQ-Instance. In this case, the occupied | |||
| again. Then this RPLInstanceID SHOULD be shifted into another | RPLInstanceID MUST NOT be used again. Then the second RPLInstanceID | |||
| integer and shifted back to the original one at the OrigNode. In | MUST be shifted into another integer so that the two RREP-instances | |||
| RREP option, the SHIFT field indicates the how many the original | can be distinguished. In RREP option, the Shift field indicates the | |||
| RPLInstanceID is shifted. When the new InstanceID after shifting | shift to be applied to original RPLInstanceID. When the new | |||
| exceeds 63, it will come back counting from 0. For example, the | InstanceID after shifting exceeds 63, it rolls over starting at 0. | |||
| original InstanceID is 60, and shifted by 6, the new InstanceID will | For example, the original InstanceID is 60, and shifted by 6, the new | |||
| be 2. The 'T' MUST be set to 1 to make sure the two RREP-DIOs can be | InstanceID will be 2. Related operations can be found in | |||
| distinguished by the address of the OrigNode in the AODV-RPL Target | Section 6.4. | |||
| Option. | ||||
| 6.4. Receiving and Forwarding Route Reply | 6.4. Receiving and Forwarding Route Reply | |||
| Upon receiving a RREP-DIO, a router out of the RREP-Instance goes | Upon receiving a RREP-DIO, a router which does not belong to the | |||
| through the following steps: | RREQ-instance goes through the following steps: | |||
| Step 1: | Step 1: | |||
| If the 'S' bit of the RREP-DIO is set to 0, the router MUST look | If the 'S' bit is set to 1, the router proceeds to step 2. | |||
| into the downward direction of the link (towards the TargNode) by | ||||
| If the 'S' bit of the RREP-DIO is set to 0, the router MUST check | ||||
| the downward direction of the link (towards the TargNode) over | ||||
| which the RREP-DIO is received. If the downward direction of the | which the RREP-DIO is received. If the downward direction of the | |||
| link can fulfill the requirements indicated in the constraint | link can fulfill the requirements indicated in the constraint | |||
| option, and the router's rank would be inferior to the MaxRank | option, and the router's rank would not exceed the MaxRank limit, | |||
| limit, the router chooses to join in the DODAG of the RREP- | the router joins the DODAG of the RREP-Instance. The router that | |||
| Instance. The router issuing the received RREP-DIO is selected as | transmitted the received RREP-DIO is selected as the preferred | |||
| the preferred parent. Afterwards, other RREQ-DIO messages can be | parent. Afterwards, other RREP-DIO messages can be received. How | |||
| received. How to maintain the parent set, select the preferred | to maintain the parent set, select the preferred parent, and | |||
| parent, and update the router's rank follows the core RPL and the | update the router's rank obeys the core RPL and the OFs defined in | |||
| OFs defined in ROLL WG. | 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. | If the constraints are not fulfilled, the router MUST NOT join the | |||
| DODAG; the router MUST discard the RREQ-DIO, and does not execute | ||||
| the remaining steps in this section. | ||||
| Step 2: | Step 2: | |||
| Then the router checks if one of its addresses is included in the | The router next checks if one of its addresses is included in the | |||
| AODV-RPL Target Option. If so, this router is the OrigNode of the | AODV-RPL Target Option. If so, this router is the OrigNode of the | |||
| route discovery. Otherwise, it is an intermediate router. | route discovery. Otherwise, it is an intermediate router. | |||
| Step 3: | Step 3: | |||
| If the 'H' bit is set to 1, then the router (OrigNode or | If the 'H' bit is set to 1, then the router (OrigNode or | |||
| intermediate) MUST build route entry including the RPLInstanceID | intermediate) MUST build a downward route entry. The route entry | |||
| of RREP-Instance and the DODAGID. For symmetric route, the route | SHOULD include at least the following items: OrigNode Address, | |||
| entry is to the router from which the RREP-DIO is received. For | InstanceID, TargNode Address as destination, Next Hop and | |||
| asymmetric route, the route entry is to the preferred parent in | Lifetime. For a symmetric route, the next hop in the route entry | |||
| the DODAG of RREQ-Instance. | is the router from which the RREP-DIO is received. For an | |||
| asymmetric route, the next hop is the preferred parent in the | ||||
| DODAG of RREQ-Instance. The InstanceID in the route entry MUST be | ||||
| the original RPLInstanceID (after subtracting the Shift field | ||||
| value). The source address is learned from the AODV-RPL Target | ||||
| Option, and the destination address is learned from the DODAGID. | ||||
| The lifetime is set according to DODAG configuration and can be | ||||
| extended when the route is actually used. | ||||
| If the 'H' bit is set to 0, for asymmetric route, an intermediate | If the 'H' bit is set to 0, for an asymmetric route, an | |||
| router MUST include the address of the interface receiving the | intermediate router MUST include the address of the interface | |||
| RREP-DIO into the address vector, and for symmetric route, there | receiving the RREP-DIO into the address vector; for a symmetric | |||
| is nothing to do in this step. | route, there is nothing to do in this step. | |||
| Step 4: | Step 4: | |||
| For an intermediate router, in case of asymmetric route, the RREP- | If the receiver is the OrigNode, it can start transmitting the | |||
| DIO is sent out via link-local multicast; in case of symmetric | application data to TargNode along the path as provided in RREP- | |||
| route, the RREP-DIO is unicasted to the OrigNode via the next hop | Instance, and processing for the RREP-DIO is complete. Otherwise, | |||
| in source routing (H=0), or via the next hop in the route entry | in case of an asymmetric route, the intermediate router transmits | |||
| built in the RREQ-Instance (H=1). For the OrigNode, it can start | the RREP-DIO via link-local multicast. In case of a symmetric | |||
| transmitting the application data to TargNode along the path as | route, the RREP-DIO message is unicast to the next hop according | |||
| discovered through RREP-Instance. | to the address vector in the RREP-DIO (H=0) or the local route | |||
| entry (H=1). The RPLInstanceID in the transmitted RREP-DIO is the | ||||
| same as the value in the received RREP-DIO. | ||||
| 7. Gratuitous RREP | 7. Gratuitous RREP | |||
| In some cases, an Intermediate router that receives a RREQ-DIO | In some cases, an Intermediate router that receives a RREQ-DIO | |||
| message MAY transmit a "Gratuitous" RREP-DIO message back to OrigNode | message MAY transmit a "Gratuitous" RREP-DIO message back to OrigNode | |||
| instead of continuing to multicast the RREQ-DIO towards TargNode. | instead of continuing to multicast the RREQ-DIO towards TargNode. | |||
| The intermediate router effectively builds the RREP-Instance on | The intermediate router effectively builds the RREP-Instance on | |||
| behalf of the actual TargNode. The 'G' bit of the RREP option is | behalf of the actual TargNode. The 'G' bit of the RREP option is | |||
| provided to distinguish the Gratuitous RREP-DIO (G=1) sent by the | provided to distinguish the Gratuitous RREP-DIO (G=1) sent by the | |||
| Intermediate node from the RREP-DIO sent by TargNode (G=0). | Intermediate node from the RREP-DIO sent by TargNode (G=0). | |||
| The gratuitous RREP-DIO can be sent out when an intermediate router R | The gratuitous RREP-DIO can be sent out when an intermediate router R | |||
| receives a RREQ-DIO for a TargNode T, and R happens to have both | receives a RREQ-DIO for a TargNode T, and R happens to have both | |||
| forward and reverse routes to T which also fulfill the requirements. | downward and upward routes to T which also fulfill the requirements. | |||
| In case of source routing, the intermediate router R MUST unicast the | In case of source routing, the intermediate router R MUST unicast the | |||
| received RREQ-DIO to TargNode T including the address vector between | received RREQ-DIO to TargNode T including the address vector between | |||
| the OrigNode O and the router R. Thus T can have a complete address | the OrigNode O and the router R. Thus T can have a complete upward | |||
| vector between O and itself. Then T MUST unicast a RREP-DIO | route address vector from itself to O. Then R MUST send out the | |||
| including the address vector between T and R. | gratuitous RREP-DIO including the address vector from R to T. | |||
| In case of hop-by-hop routing, R MUST unicast the received RREQ-DIO | 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 | to T. The routers along the route SHOULD build new route entries | |||
| with the related RPLInstanceID and DODAGID in the downward direction. | with the related RPLInstanceID and DODAGID in the downward direction. | |||
| Then T MUST unicast the RREP-DIO to R, and the routers along the | 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 | route SHOULD build new route entries in the upward direction. Upon | |||
| received the unicast RREP-DIO, R sends the gratuitous RREP-DIO to the | received the unicast RREP-DIO, R sends the gratuitous RREP-DIO to the | |||
| OrigNode as the same way defined in Section 6.3. | OrigNode as the same way defined in Section 6.3. | |||
| 8. Operation of Trickle Timer | 8. Operation of Trickle Timer | |||
| skipping to change at page 19, line 27 ¶ | skipping to change at page 19, line 27 ¶ | |||
| 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 7: Mode of Operation | Figure 6: Mode of Operation | |||
| 9.2. AODV-RPL Options: RREQ, RREP, and Target | 9.2. AODV-RPL Options: RREQ, RREP, and Target | |||
| Three entries are required for new AODV-RPL options "RREQ", "RREP" | Three entries are required for new AODV-RPL options "RREQ", "RREP" | |||
| and "AODV-RPL Target" with values of TBD2 (0x0A), TBD3 (0x0B) and | and "AODV-RPL Target" with values of TBD2 (0x0A), TBD3 (0x0B) and | |||
| TBD4 (0x0C) from the "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 | | | TBD3 (0x0C) | AODV-RPL Target Option | This document | | |||
| +-------------+------------------------+---------------+ | +-------------+------------------------+---------------+ | |||
| Figure 8: AODV-RPL Options | Figure 7: 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 | |||
| 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. | |||
| skipping to change at page 21, line 27 ¶ | skipping to change at page 21, line 27 ¶ | |||
| JP., and R. Alexander, "RPL: IPv6 Routing Protocol for | JP., and R. Alexander, "RPL: IPv6 Routing Protocol for | |||
| Low-Power and Lossy Networks", RFC 6550, | Low-Power and Lossy Networks", RFC 6550, | |||
| DOI 10.17487/RFC6550, March 2012, | DOI 10.17487/RFC6550, March 2012, | |||
| <https://www.rfc-editor.org/info/rfc6550>. | <https://www.rfc-editor.org/info/rfc6550>. | |||
| [RFC6552] Thubert, P., Ed., "Objective Function Zero for the Routing | [RFC6552] Thubert, P., Ed., "Objective Function Zero for the Routing | |||
| Protocol for Low-Power and Lossy Networks (RPL)", | Protocol for Low-Power and Lossy Networks (RPL)", | |||
| RFC 6552, DOI 10.17487/RFC6552, March 2012, | RFC 6552, DOI 10.17487/RFC6552, March 2012, | |||
| <https://www.rfc-editor.org/info/rfc6552>. | <https://www.rfc-editor.org/info/rfc6552>. | |||
| [RFC6997] Goyal, M., Ed., Baccelli, E., Philipp, M., Brandt, A., and | ||||
| J. Martocci, "Reactive Discovery of Point-to-Point Routes | ||||
| in Low-Power and Lossy Networks", RFC 6997, | ||||
| DOI 10.17487/RFC6997, August 2013, | ||||
| <https://www.rfc-editor.org/info/rfc6997>. | ||||
| [RFC6998] Goyal, M., Ed., Baccelli, E., Brandt, A., and J. Martocci, | [RFC6998] Goyal, M., Ed., Baccelli, E., Brandt, A., and J. Martocci, | |||
| "A Mechanism to Measure the Routing Metrics along a Point- | "A Mechanism to Measure the Routing Metrics along a Point- | |||
| to-Point Route in a Low-Power and Lossy Network", | to-Point Route in a Low-Power and Lossy Network", | |||
| RFC 6998, DOI 10.17487/RFC6998, August 2013, | RFC 6998, DOI 10.17487/RFC6998, August 2013, | |||
| <https://www.rfc-editor.org/info/rfc6998>. | <https://www.rfc-editor.org/info/rfc6998>. | |||
| 12.2. Informative References | 12.2. Informative References | |||
| [I-D.thubert-roll-asymlink] | [I-D.thubert-roll-asymlink] | |||
| Thubert, P., "RPL adaptation for asymmetrical links", | Thubert, P., "RPL adaptation for asymmetrical links", | |||
| 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 | [RFC6997] Goyal, M., Ed., Baccelli, E., Philipp, M., Brandt, A., and | |||
| J. Martocci, "Reactive Discovery of Point-to-Point Routes | ||||
| in Low-Power and Lossy Networks", RFC 6997, | ||||
| DOI 10.17487/RFC6997, August 2013, | ||||
| <https://www.rfc-editor.org/info/rfc6997>. | ||||
| Appendix A. Example: 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 determine whether the link is symmetric or asymmetric | |||
| the intermediate nodes. The example of how the ETX and RSSI values | at the intermediate nodes. The example of how the ETX and RSSI | |||
| are used in conjuction is explained below: | values are used in conjuction is explained below: | |||
| Source---------->NodeA---------->NodeB------->Destination | Source---------->NodeA---------->NodeB------->Destination | |||
| Figure 9: Communication link from Source to Destination | Figure 8: 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 | | |||
| +-------------------------+----------------------------------------+ | +-------------------------+----------------------------------------+ | |||
| skipping to change at page 22, 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 | Appendix B. Changelog | |||
| B.1. Changes to version 02 | ||||
| o Include the support for source routing. | o Include the support for source routing. | |||
| o Bring some features from [RFC6997], e.g., choice between hop-by- | o Import some features from [RFC6997], e.g., choice between hop-by- | |||
| hop and source routing, duration of residence in the DAG, MaxRank, | hop and source routing, the "L" bit which determines the duration | |||
| etc. | of residence in the DAG, MaxRank, etc. | |||
| o Define new target option for AODV-RPL, including the Destination | o Define new target option for AODV-RPL, including the Destination | |||
| Sequence Number in it. Move the TargNode address in RREQ option | Sequence Number in it. Move the TargNode address in RREQ option | |||
| and the OrigNode address in RREP option into ADOV-RPL Target | and the OrigNode address in RREP option into ADOV-RPL Target | |||
| Option. | Option. | |||
| o Support route discovery for multiple targets in one RREQ-DIO. | o Support route discovery for multiple targets in one RREQ-DIO. | |||
| o New InstanceID pairing mechanism. | o New InstanceID pairing mechanism. | |||
| B.2. Changes to version 03 | ||||
| o Updated RREP option format. Remove the 'T' bit in RREP option. | ||||
| o Using the same RPLInstanceID for RREQ and RREP, no need to update | ||||
| [RFC6550]. | ||||
| o Explanation of Shift field in RREP. | ||||
| o Multiple target options handling during transmission. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Satish Anamalamudi | Satish Anamalamudi | |||
| Huaiyin Institute of Technology | SRM University-AP | |||
| No.89 North Beijing Road, Qinghe District | Amaravati Campus | |||
| Huaian 223001 | Amaravati, Andhra Pradesh 522 502 | |||
| China | India | |||
| 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 | |||
| End of changes. 117 change blocks. | ||||
| 415 lines changed or deleted | 432 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||