| < draft-ietf-roll-useofrplinfo-15.txt | draft-ietf-roll-useofrplinfo-16.txt > | |||
|---|---|---|---|---|
| ROLL Working Group M. Robles | ROLL Working Group M. Robles | |||
| Internet-Draft Ericsson | Internet-Draft Ericsson | |||
| Updates: 6553, 6550 (if approved) M. Richardson | Updates: 6553, 6550 (if approved) M. Richardson | |||
| Intended status: Standards Track SSW | Intended status: Standards Track SSW | |||
| Expires: December 31, 2017 P. Thubert | Expires: January 4, 2018 P. Thubert | |||
| Cisco | Cisco | |||
| June 29, 2017 | July 3, 2017 | |||
| When to use RFC 6553, 6554 and IPv6-in-IPv6 | When to use RFC 6553, 6554 and IPv6-in-IPv6 | |||
| draft-ietf-roll-useofrplinfo-15 | draft-ietf-roll-useofrplinfo-16 | |||
| Abstract | Abstract | |||
| This document looks at different data flows through LLN (Low-Power | This document looks at different data flows through LLN (Low-Power | |||
| and Lossy Networks) where RPL (IPv6 Routing Protocol for Low-Power | and Lossy Networks) where RPL (IPv6 Routing Protocol for Low-Power | |||
| and Lossy Networks) is used to establish routing. The document | and Lossy Networks) is used to establish routing. The document | |||
| enumerates the cases where RFC 6553, RFC 6554 and IPv6-in-IPv6 | enumerates the cases where RFC 6553, RFC 6554 and IPv6-in-IPv6 | |||
| encapsulation is required. This analysis provides the basis on which | encapsulation is required. This analysis provides the basis on which | |||
| to design efficient compression of these headers. | to design efficient compression of these headers. Additionally, this | |||
| document updates the RFC 6553 adding a change to the RPL Option Type | ||||
| and the RFC 6550 to indicate about this change. | ||||
| 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 http://datatracker.ietf.org/drafts/current/. | Drafts is at http://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 December 31, 2017. | This Internet-Draft will expire on January 4, 2018. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 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 | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://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 . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology and Requirements Language . . . . . . . . . . . . 4 | 2. Terminology and Requirements Language . . . . . . . . . . . . 4 | |||
| 2.1. hop-by-hop IPv6-in-IPv6 headers . . . . . . . . . . . . . 4 | 2.1. hop-by-hop IPv6-in-IPv6 headers . . . . . . . . . . . . . 5 | |||
| 3. Updates to RFC6553 and RFC 6550 . . . . . . . . . . . . . . . 5 | 3. Updates to RFC6553 and RFC 6550 . . . . . . . . . . . . . . . 5 | |||
| 3.1. Updates to RFC 6553 . . . . . . . . . . . . . . . . . . . 5 | 3.1. Updates to RFC 6553 . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.2. Updates to RFC 6550 . . . . . . . . . . . . . . . . . . . 6 | 3.2. Updates to RFC 6550 . . . . . . . . . . . . . . . . . . . 6 | |||
| 4. Sample/reference topology . . . . . . . . . . . . . . . . . . 6 | 4. Sample/reference topology . . . . . . . . . . . . . . . . . . 7 | |||
| 5. Use cases . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 5. Use cases . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 6. Storing mode . . . . . . . . . . . . . . . . . . . . . . . . 11 | 6. Storing mode . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 6.1. Storing Mode: Interaction between Leaf and Root . . . . . 12 | 6.1. Storing Mode: Interaction between Leaf and Root . . . . . 13 | |||
| 6.1.1. SM: Example of Flow from RPL-aware-leaf to root . . . 13 | 6.1.1. SM: Example of Flow from RPL-aware-leaf to root . . . 14 | |||
| 6.1.2. SM: Example of Flow from root to RPL-aware-leaf . . . 14 | 6.1.2. SM: Example of Flow from root to RPL-aware-leaf . . . 15 | |||
| 6.1.3. SM: Example of Flow from root to not-RPL-aware-leaf . 14 | 6.1.3. SM: Example of Flow from root to not-RPL-aware-leaf . 15 | |||
| 6.1.4. SM: Example of Flow from not-RPL-aware-leaf to root . 15 | 6.1.4. SM: Example of Flow from not-RPL-aware-leaf to root . 16 | |||
| 6.2. Storing Mode: Interaction between Leaf and Internet . . . 16 | 6.2. Storing Mode: Interaction between Leaf and Internet . . . 17 | |||
| 6.2.1. SM: Example of Flow from RPL-aware-leaf to Internet . 16 | 6.2.1. SM: Example of Flow from RPL-aware-leaf to Internet . 17 | |||
| 6.2.2. SM: Example of Flow from Internet to RPL-aware-leaf . 17 | 6.2.2. SM: Example of Flow from Internet to RPL-aware-leaf . 18 | |||
| 6.2.3. SM: Example of Flow from not-RPL-aware-leaf to | 6.2.3. SM: Example of Flow from not-RPL-aware-leaf to | |||
| Internet . . . . . . . . . . . . . . . . . . . . . . 18 | Internet . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 6.2.4. SM: Example of Flow from Internet to non-RPL-aware- | 6.2.4. SM: Example of Flow from Internet to non-RPL-aware- | |||
| leaf . . . . . . . . . . . . . . . . . . . . . . . . 19 | ||||
| 6.3. Storing Mode: Interaction between Leaf and Leaf . . . . . 20 | ||||
| 6.3.1. SM: Example of Flow from RPL-aware-leaf to RPL-aware- | ||||
| leaf . . . . . . . . . . . . . . . . . . . . . . . . 20 | leaf . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 6.3. Storing Mode: Interaction between Leaf and Leaf . . . . . 21 | ||||
| 6.3.1. SM: Example of Flow from RPL-aware-leaf to RPL-aware- | ||||
| leaf . . . . . . . . . . . . . . . . . . . . . . . . 21 | ||||
| 6.3.2. SM: Example of Flow from RPL-aware-leaf to non-RPL- | 6.3.2. SM: Example of Flow from RPL-aware-leaf to non-RPL- | |||
| aware-leaf . . . . . . . . . . . . . . . . . . . . . 21 | ||||
| 6.3.3. SM: Example of Flow from not-RPL-aware-leaf to RPL- | ||||
| aware-leaf . . . . . . . . . . . . . . . . . . . . . 22 | aware-leaf . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 6.3.3. SM: Example of Flow from not-RPL-aware-leaf to RPL- | ||||
| aware-leaf . . . . . . . . . . . . . . . . . . . . . 23 | ||||
| 6.3.4. SM: Example of Flow from not-RPL-aware-leaf to not- | 6.3.4. SM: Example of Flow from not-RPL-aware-leaf to not- | |||
| RPL-aware-leaf . . . . . . . . . . . . . . . . . . . 23 | RPL-aware-leaf . . . . . . . . . . . . . . . . . . . 24 | |||
| 7. Non Storing mode . . . . . . . . . . . . . . . . . . . . . . 25 | 7. Non Storing mode . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 7.1. Non-Storing Mode: Interaction between Leaf and Root . . . 26 | 7.1. Non-Storing Mode: Interaction between Leaf and Root . . . 27 | |||
| 7.1.1. Non-SM: Example of Flow from RPL-aware-leaf to root . 27 | 7.1.1. Non-SM: Example of Flow from RPL-aware-leaf to root . 28 | |||
| 7.1.2. on-SM: Example of Flow from root to RPL-aware-leaf . 27 | 7.1.2. on-SM: Example of Flow from root to RPL-aware-leaf . 28 | |||
| 7.1.3. Non-SM: Example of Flow from root to not-RPL-aware- | 7.1.3. Non-SM: Example of Flow from root to not-RPL-aware- | |||
| leaf . . . . . . . . . . . . . . . . . . . . . . . . 28 | leaf . . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 7.1.4. Non-SM: Example of Flow from not-RPL-aware-leaf to | 7.1.4. Non-SM: Example of Flow from not-RPL-aware-leaf to | |||
| root . . . . . . . . . . . . . . . . . . . . . . . . 29 | root . . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
| 7.2. Non-Storing Mode: Interaction between Leaf and Internet . 30 | 7.2. Non-Storing Mode: Interaction between Leaf and Internet . 31 | |||
| 7.2.1. Non-SM: Example of Flow from RPL-aware-leaf to | 7.2.1. Non-SM: Example of Flow from RPL-aware-leaf to | |||
| Internet . . . . . . . . . . . . . . . . . . . . . . 30 | Internet . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 7.2.2. Non-SM: Example of Flow from Internet to RPL-aware- | 7.2.2. Non-SM: Example of Flow from Internet to RPL-aware- | |||
| leaf . . . . . . . . . . . . . . . . . . . . . . . . 31 | leaf . . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 7.2.3. Non-SM: Example of Flow from not-RPL-aware-leaf to | 7.2.3. Non-SM: Example of Flow from not-RPL-aware-leaf to | |||
| Internet . . . . . . . . . . . . . . . . . . . . . . 32 | Internet . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 7.2.4. Non-SM: Example of Flow from Internet to not-RPL- | 7.2.4. Non-SM: Example of Flow from Internet to not-RPL- | |||
| aware-leaf . . . . . . . . . . . . . . . . . . . . . 33 | ||||
| 7.3. Non-Storing Mode: Interaction between Leafs . . . . . . . 34 | ||||
| 7.3.1. Non-SM: Example of Flow from RPL-aware-leaf to RPL- | ||||
| aware-leaf . . . . . . . . . . . . . . . . . . . . . 34 | aware-leaf . . . . . . . . . . . . . . . . . . . . . 34 | |||
| 7.3. Non-Storing Mode: Interaction between Leafs . . . . . . . 35 | ||||
| 7.3.1. Non-SM: Example of Flow from RPL-aware-leaf to RPL- | ||||
| aware-leaf . . . . . . . . . . . . . . . . . . . . . 35 | ||||
| 7.3.2. Non-SM: Example of Flow from RPL-aware-leaf to not- | 7.3.2. Non-SM: Example of Flow from RPL-aware-leaf to not- | |||
| RPL-aware-leaf . . . . . . . . . . . . . . . . . . . 36 | ||||
| 7.3.3. Non-SM: Example of Flow from not-RPL-aware-leaf to | ||||
| RPL-aware-leaf . . . . . . . . . . . . . . . . . . . 37 | RPL-aware-leaf . . . . . . . . . . . . . . . . . . . 37 | |||
| 7.3.3. Non-SM: Example of Flow from not-RPL-aware-leaf to | ||||
| RPL-aware-leaf . . . . . . . . . . . . . . . . . . . 38 | ||||
| 7.3.4. Non-SM: Example of Flow from not-RPL-aware-leaf to | 7.3.4. Non-SM: Example of Flow from not-RPL-aware-leaf to | |||
| not-RPL-aware-leaf . . . . . . . . . . . . . . . . . 38 | not-RPL-aware-leaf . . . . . . . . . . . . . . . . . 39 | |||
| 8. Observations about the cases . . . . . . . . . . . . . . . . 39 | 8. Observations about the cases . . . . . . . . . . . . . . . . 40 | |||
| 8.1. Storing mode . . . . . . . . . . . . . . . . . . . . . . 39 | 8.1. Storing mode . . . . . . . . . . . . . . . . . . . . . . 40 | |||
| 8.2. Non-Storing mode . . . . . . . . . . . . . . . . . . . . 40 | 8.2. Non-Storing mode . . . . . . . . . . . . . . . . . . . . 41 | |||
| 9. 6LoRH Compression cases . . . . . . . . . . . . . . . . . . . 40 | 9. 6LoRH Compression cases . . . . . . . . . . . . . . . . . . . 41 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 40 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 41 | |||
| 11. Security Considerations . . . . . . . . . . . . . . . . . . . 40 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 42 | |||
| 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 43 | 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 43 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 45 | |||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . 43 | 13.1. Normative References . . . . . . . . . . . . . . . . . . 45 | |||
| 13.2. Informative References . . . . . . . . . . . . . . . . . 44 | 13.2. Informative References . . . . . . . . . . . . . . . . . 46 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 46 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 48 | |||
| 1. Introduction | 1. Introduction | |||
| RPL (IPv6 Routing Protocol for Low-Power and Lossy Networks) | RPL (IPv6 Routing Protocol for Low-Power and Lossy Networks) | |||
| [RFC6550] is a routing protocol for constrained networks. RFC 6553 | [RFC6550] is a routing protocol for constrained networks. RFC 6553 | |||
| [RFC6553] defines the "RPL option" (RPI), carried within the IPv6 | [RFC6553] defines the "RPL option" (RPI), carried within the IPv6 | |||
| Hop-by-Hop header to quickly identify inconsistencies (loops) in the | Hop-by-Hop header to quickly identify inconsistencies (loops) in the | |||
| routing topology. RFC 6554 [RFC6554] defines the "RPL Source Route | routing topology. RFC 6554 [RFC6554] defines the "RPL Source Route | |||
| Header" (RH3), an IPv6 Extension Header to deliver datagrams within a | Header" (RH3), an IPv6 Extension Header to deliver datagrams within a | |||
| RPL routing domain, particularly in non-storing mode. | RPL routing domain, particularly in non-storing mode. | |||
| skipping to change at page 5, line 11 ¶ | skipping to change at page 5, line 18 ¶ | |||
| that originates from a node to an adjacent node, using the addresses | that originates from a node to an adjacent node, using the addresses | |||
| (usually the GUA or ULA, but could use the link-local addresses) of | (usually the GUA or ULA, but could use the link-local addresses) of | |||
| each node. If the packet must traverse multiple hops, then it must | each node. If the packet must traverse multiple hops, then it must | |||
| be decapsulated at each hop, and then re-encapsulated again in a | be decapsulated at each hop, and then re-encapsulated again in a | |||
| similar fashion. | similar fashion. | |||
| 3. Updates to RFC6553 and RFC 6550 | 3. Updates to RFC6553 and RFC 6550 | |||
| 3.1. Updates to RFC 6553 | 3.1. Updates to RFC 6553 | |||
| [RFC6553] states that in the Option Type field of the RPL Option | [RFC6553] states as showed below, that in the Option Type field of | |||
| header, the two high order bits MUST be set to '01' and the third bit | the RPL Option header, the two high order bits MUST be set to '01' | |||
| is equal to '1'. The first two bits indicate that the IPv6 node MUST | and the third bit is equal to '1'. The first two bits indicate that | |||
| discard the packet if it doesn't recognize the option type, and the | the IPv6 node MUST discard the packet if it doesn't recognize the | |||
| third bit indicates that the Option Data may change en route. The | option type, and the third bit indicates that the Option Data may | |||
| remaining bits serve as the option type. | change en route. The remaining bits serve as the option type. | |||
| Hex Value Binary Value | ||||
| act chg rest Description Reference | ||||
| --------- --- --- ------- ----------------- ---------- | ||||
| 0x63 01 1 00011 RPL Option [RFC6553] | ||||
| Figure 1: Option Type in RPL Option. | ||||
| Recent changes in [I-D.ietf-6man-rfc2460bis], state: "it is now | Recent changes in [I-D.ietf-6man-rfc2460bis], state: "it is now | |||
| expected that nodes along a packet's delivery path only examine and | expected that nodes along a packet's delivery path only examine and | |||
| process the Hop-by-Hop Options header if explicitly configured to do | process the Hop-by-Hop Options header if explicitly configured to do | |||
| so". That means that nodes that do not understand a particular Hop- | so". Processing of the Hop-by-Hop Options header (by IPv6 | |||
| by-Hop Option in a received packet are unlikely to be configured to | intermediate nodes) is now optional, but if they are configured to | |||
| process it. | process the header, and if such nodes encounter an option with the | |||
| first two bits set to 01, they will drop the packet (if they conform | ||||
| [I-D.ietf-6man-rfc2460bis]). The hosts should do the same, | ||||
| irrespective of the configuration. | ||||
| Thus, if an IPv6 node (RPL-not-capable) receives a packet with an RPL | Based on That, if an IPv6 (intermediate) node (RPL-not-capable) | |||
| Option, it should ignore the HBH option. To further solidify the | receives a packet with an RPL Option, it should ignore the HBH RPL | |||
| desire for the RPL options to be ignored, this document updates the | option (skip over this option and continue processing the header). | |||
| Option Type field to: the two high order bits MUST be set to '00' and | ||||
| the third bit is equal to '1'. | ||||
| These two high order bits indicate that the IPv6 node MUST skip over | Thus, this document updates the Option Type field to: the two high | |||
| this option and continue processing the header if it doesn't | order bits MUST be set to '00' and the third bit is equal to '1'. | |||
| recognize the option type. | The first two bits indicate that the IPv6 node MUST skip over this | |||
| option and continue processing the header | ||||
| (Section 4.2.[I-D.ietf-6man-rfc2460bis] ) if it doesn't recognize the | ||||
| option type, and the third bit continues to be set to indicate that | ||||
| the Option Data may change en route. The remaining bits serve as the | ||||
| option type and remain as 0x3. This ensures that a packet that | ||||
| leaves the RPL domain of an LLN (or that leaves the LLN entirely) | ||||
| will not be discarded when it contains the [RFC6553] RPL Hop-by-Hop | ||||
| option known as RPI. This is an update to [RFC6553]. | ||||
| The third bit continues to be set to indicate that the Option Data | Hex Value Binary Value | |||
| may change en route. The remaining bits serve as the option type and | act chg rest Description Reference | |||
| remain as 0x3. This an update to [RFC6553]. | --------- --- --- ------- ----------------- ---------- | |||
| 0x23 00 1 00011 RPL Option [RFCXXXX] | ||||
| Figure 2: Proposed change to the Option Type in RPL Option. | ||||
| This change creates a flag day for existing networks which are | This change creates a flag day for existing networks which are | |||
| currently using 0x63 as the RPI value. A move to 0x43 will not be | currently using 0x63 as the RPI value. A move to 0x23 will not be | |||
| understood by those networks. It is suggested that implementations | understood by those networks. It is suggested that implementations | |||
| accept both 0x63 and 0x43 when processing. When forwarding packets, | accept both 0x63 and 0x23 when processing. When forwarding packets, | |||
| implementations SHOULD use the same value as we received. When | implementations SHOULD use the same value as it was received. When | |||
| originating new packets, implementations SHOULD have an option to | originating new packets, implementations SHOULD have an option to | |||
| determine which value to originate with, this option is controlled by | determine which value to originate with, this option is controlled by | |||
| the DAO option described below. | the DIO option described below. | |||
| A network which is switching from straight 6lowpan compression | A network which is switching from straight 6lowpan compression | |||
| mechanism to those described in [I-D.ietf-roll-routing-dispatch] will | mechanism to those described in [I-D.ietf-roll-routing-dispatch] will | |||
| experience a flag day in the data compression anyway, and if possible | experience a flag day in the data compression anyway, and if possible | |||
| this change can be deployed at the same time. | this change can be deployed at the same time. | |||
| In general, any packet that leaves the RPL domain of an LLN (or | ||||
| leaves the LLN entirely) will NOT be discarded, when it has the | ||||
| [RFC6553] RPL Option Header known as the RPI or [RFC6554] SRH3 | ||||
| Extension Header (S)RH3. Because of [I-D.ietf-6man-rfc2460bis] the | ||||
| RPI Hop-by-Hop option MAY be left in place even if the end host does | ||||
| not understand it. | ||||
| 3.2. Updates to RFC 6550 | 3.2. Updates to RFC 6550 | |||
| In order to avoid a flag day caused by lack of interoperation between | In order to avoid a flag day caused by lack of interoperation between | |||
| new RPI (0x43) and old RPI (0x63) nodes, the new nodes need to be | new RPI (0x23) and old RPI (0x63) nodes, the new nodes need to be | |||
| told that there are old RPI nodes present. This can be done via a | told that there are old RPI nodes present. This can be done via a | |||
| new DIO Option which will propogate through the network. Failure to | new DIO Option which will propogate through the network. Failure to | |||
| receive this flag will cause dual mode nodes to originate traffic | receive this flag will cause dual mode nodes to originate traffic | |||
| with the old-RPI (0x63) value. | with the old-RPI (0x63) value. | |||
| DIO Option: 0x05 RPI 0x43 enable MCRXXX | DIO Option: 0x05 RPI 0x23 enable MCRXXX | |||
| Flags: 8-bit unused field reserved for flags. The field MUST be | Flags: 8-bit unused field reserved for flags. The field MUST be | |||
| initialized to zero by the sender and MUST be ignored by the | initialized to zero by the sender and MUST be ignored by the | |||
| receiver. | receiver. | |||
| We propose to use a bit flag as follows: | We propose to use a bit flag as follows: | |||
| +----+----+----+----+----+----+----+----+ | +----+----+----+----+----+----+----+----+ | |||
| | | | | | | | | | | | | | | | | | | | | |||
| | | | | | | | | FR | | | | | | | | | | FR | | |||
| | | | | | | | | | | | | | | | | | | | | |||
| +----+----+----+----+----+----+----+----+ | +----+----+----+----+----+----+----+----+ | |||
| Figure 1: A DIO Flag to indicate the RPI-flag-day. | Figure 3: A DIO Flag to indicate the RPI-flag-day. | |||
| FR(RPI-flag-day): the flag with values of 1 indicates that RPL Option | FR(RPI-flag-day): the flag with values of 1 indicates that RPL Option | |||
| field is set to "00", values of 0 indicates that RPL Option field is | field is set to "00", values of 0 indicates that RPL Option field is | |||
| set to "01" | set to "01" | |||
| 4. Sample/reference topology | 4. Sample/reference topology | |||
| A RPL network is composed of a 6LBR (6LoWPAN Border Router), Backbone | A RPL network in general is composed of a 6LBR (6LoWPAN Border | |||
| Router (6BBR), 6LR (6LoWPAN Router) and 6LN (6LoWPAN Node) as leaf | Router), Backbone Router (6BBR), 6LR (6LoWPAN Router) and 6LN | |||
| logically organized in a DODAG structure. (Destination Oriented | (6LoWPAN Node) as leaf logically organized in a DODAG structure. | |||
| Directed Acyclic Graph). | (Destination Oriented Directed Acyclic Graph). | |||
| RPL defines the RPL Control messages (control plane), a new ICMPv6 | RPL defines the RPL Control messages (control plane), a new ICMPv6 | |||
| [RFC4443] message with Type 155. DIS (DODAG Information | [RFC4443] message with Type 155. DIS (DODAG Information | |||
| Solicitation), DIO (DODAG Information Object) and DAO (Destination | Solicitation), DIO (DODAG Information Object) and DAO (Destination | |||
| Advertisement Object) messages are all RPL Control messages but with | Advertisement Object) messages are all RPL Control messages but with | |||
| different Code values. A RPL Stack is showed in Figure 1. | different Code values. A RPL Stack is showed in Figure 1. | |||
| RPL supports two modes of Downward traffic: in storing mode (RPL-SM), | RPL supports two modes of Downward traffic: in storing mode (RPL-SM), | |||
| it is fully stateful or an in non-storing (RPL-NSM), it is fully | it is fully stateful or an in non-storing (RPL-NSM), it is fully | |||
| source routed. A RPL Instance is either fully storing or fully non- | source routed. A RPL Instance is either fully storing or fully non- | |||
| skipping to change at page 7, line 38 ¶ | skipping to change at page 8, line 25 ¶ | |||
| | IPv6 | | | IPv6 | | |||
| | | | | | | |||
| +--------------+ | +--------------+ | |||
| | 6LoWPAN | | | 6LoWPAN | | |||
| | | | | | | |||
| +--------------+ | +--------------+ | |||
| | PHY-MAC | | | PHY-MAC | | |||
| | | | | | | |||
| +--------------+ | +--------------+ | |||
| Figure 2: RPL Stack. | Figure 4: RPL Stack. | |||
| +------------+ | +------------+ | |||
| | INTERNET ----------+ | | INTERNET ----------+ | |||
| | | | | | | | | |||
| +------------+ | | +------------+ | | |||
| | | | | |||
| | | | | |||
| | | | | |||
| A | | A | | |||
| +-------+ | +-------+ | |||
| skipping to change at page 8, line 46 ¶ | skipping to change at page 9, line 46 ¶ | |||
| | | +--+ | | | | | +--+ | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | | | I | J | | | | | I | J | | |||
| F | | G | H | | | F | | G | H | | | |||
| +-----+-+ +-|-----+ +---|--+ +---|---+ +---|---+ | +-----+-+ +-|-----+ +---|--+ +---|---+ +---|---+ | |||
| | Raf | | ~Raf | | Raf | | Raf | | ~Raf | | | Raf | | ~Raf | | Raf | | Raf | | ~Raf | | |||
| | 6LN | | 6LN | | 6LN | | 6LN | | 6LN | | | 6LN | | 6LN | | 6LN | | 6LN | | 6LN | | |||
| +-------+ +-------+ +------+ +-------+ +-------+ | +-------+ +-------+ +------+ +-------+ +-------+ | |||
| Figure 3: A reference RPL Topology. | Figure 5: A reference RPL Topology. | |||
| Figure 2 shows the reference RPL Topology for this document. The | Figure 2 shows the reference RPL Topology for this document. The | |||
| letters above the nodes are there so that they may be referenced in | letters above the nodes are there so that they may be referenced in | |||
| subsequent sections. In the figure, a 6LR is a router. A 6LN can be | subsequent sections. In the figure, a 6LR is a router. A 6LN can be | |||
| a router or a host. The 6LN leaves (Raf - "RPL aware leaf"-) marked | a router or a host. The 6LN leaves (Raf - "RPL aware leaf"-) marked | |||
| as (F and I) are RPL hosts that does not have forwarding capability. | as (F and I) are RPL hosts that does not have forwarding capability. | |||
| The 6LN leaf (H) is a RPL router. The leafs marked as ~Raf "not-RPL | The 6LN leaf (H) is a RPL router. The leafs marked as ~Raf "not-RPL | |||
| aware leaf" (G and J) are devices which do not speak RPL at all (not- | aware leaf" (G and J) are devices which do not speak RPL at all (not- | |||
| RPL-aware), but uses Router-Advertisements, 6LowPAN DAR/DAC and | RPL-aware), but uses Router-Advertisements, 6LowPAN DAR/DAC and | |||
| efficient-ND only to participate in the network [RFC6775]. In the | efficient-ND only to participate in the network [RFC6775]. In the | |||
| document these leafs (G and J) are often named IPv6 node. The 6LBR | document these leafs (G and J) are often named IPv6 node. The 6LBR | |||
| in the figure is the root of the Global DODAG. | in the figure is the root of the Global DODAG. | |||
| 5. Use cases | 5. Use cases | |||
| In the data plane a combination of RFC6553, RFC6554 and IPv6-in-IPv6 | In the data plane a combination of RFC6553, RFC6554 and IPv6-in-IPv6 | |||
| encapsulation is going to be analyzed for a number of representative | encapsulation is going to be analyzed for a number of representative | |||
| traffic flows. | traffic flows. | |||
| While this document assumes the HbH changes in | This document assumes that the LLN is using the no-drop RPI option | |||
| [I-D.ietf-6man-rfc2460bis] proceed, and/or that the LLN is using the | (0x23). | |||
| no-drop RPI option (0x43). | ||||
| The uses cases describe the communication between RPL-aware-nodes, | The uses cases describe the communication between RPL-aware-nodes, | |||
| with the root (6LBR), and with Internet. This document also describe | with the root (6LBR), and with Internet. This document also describe | |||
| the communication between nodes acting as leaf that does not | the communication between nodes acting as leaf that does not | |||
| understand RPL and they are part of hte LLN. We name these nodes as | understand RPL and they are part of hte LLN. We name these nodes as | |||
| not-RPL-aware-leaf.(e.g. section 5.4- Flow from not-RPL-aware-leaf to | not-RPL-aware-leaf.(e.g. section 5.4- Flow from not-RPL-aware-leaf to | |||
| root) We describe also how is the communication inside of the LLN | root) We describe also how is the communication inside of the LLN | |||
| when it has the final destination addressed outside of the LLN e.g. | when it has the final destination addressed outside of the LLN e.g. | |||
| with destination to Internet. (e.g. section 5.7- Flow from not-RPL- | with destination to Internet. (e.g. section 5.7- Flow from not-RPL- | |||
| aware-leaf to Internet) | aware-leaf to Internet) | |||
| skipping to change at page 10, line 22 ¶ | skipping to change at page 11, line 22 ¶ | |||
| not-RPL-aware-leaf to RPL-aware-leaf (storing and non-storing) | not-RPL-aware-leaf to RPL-aware-leaf (storing and non-storing) | |||
| not-RPL-aware-leaf to not-RPL-aware-leaf (non-storing) | not-RPL-aware-leaf to not-RPL-aware-leaf (non-storing) | |||
| This document assumes the rule that a Header cannot be inserted or | This document assumes the rule that a Header cannot be inserted or | |||
| removed on the fly inside an IPv6 packet that is being routed. This | removed on the fly inside an IPv6 packet that is being routed. This | |||
| is a fundamental precept of the IPv6 architecture as outlined in | is a fundamental precept of the IPv6 architecture as outlined in | |||
| [RFC2460]. Extensions may not be added or removed except by the | [RFC2460]. Extensions may not be added or removed except by the | |||
| sender or the receiver. | sender or the receiver. | |||
| But, options in the Hop-by-Hop option which are marked with option | But, options in the Hop-by-Hop Option Header whose option type has | |||
| type 01 ([RFC2460] section 4.2 and [I-D.ietf-6man-rfc2460bis]) SHOULD | the first two bits set to '00' MUST ignored when received by a host | |||
| be ignored when received by a host or router which does not | or router that does not understand that option ( Section 4.2 | |||
| understand that option. | [I-D.ietf-6man-rfc2460bis]). | |||
| This means that in general, any packet that leaves the RPL domain of | ||||
| an LLN (or leaves the LLN entirely) will NOT be discarded, when it | ||||
| has the [RFC6553] RPL Option Header known as the RPI or [RFC6554] | ||||
| SRH3 Extension Header (S)RH3. | ||||
| The recent change to the second of these rules means that the RPI | This means that when the no-drop RPI option code 0x23 is used, a | |||
| Hop-by-Hop option MAY be left in place even if the end host does not | packet that leaves the RPL domain of an LLN (or that leaves the LLN | |||
| understand it. | entirely) will not be discarded when it contains the [RFC6553] RPL | |||
| Hop-by-Hop option known as RPI. Thus, the RPI Hop-by-Hop option MAY | ||||
| be left in place even if the end host does not understand it. | ||||
| NOTE: There is some possible security risk when the RPI information | NOTE: There is some possible security risk when the RPI information | |||
| is released to the Internet. At this point this is a theoretical | is released to the Internet. At this point this is a theoretical | |||
| situation. It is clear that the RPI option would waste some network | situation. It is clear that the RPI option would waste some network | |||
| bandwidth when it escapes. | bandwidth when it escapes. | |||
| An intermediate router that needs to add an extension header (SHR3 or | An intermediate router that needs to add an extension header (SHR3 or | |||
| RPI Option) must encapsulate the packet in an (additional) outer IP | RPI Option) must encapsulate the packet in an (additional) outer IP | |||
| header. The new header can be placed is placed after this new outer | header. The new header can be placed is placed after this new outer | |||
| IP header. | IP header. | |||
| skipping to change at page 11, line 31 ¶ | skipping to change at page 12, line 28 ¶ | |||
| In the tables present in this document, the term "RPL aware leaf" is | In the tables present in this document, the term "RPL aware leaf" is | |||
| has been shortened to "Raf", and "not-RPL aware leaf" has been | has been shortened to "Raf", and "not-RPL aware leaf" has been | |||
| shortened to "~Raf" to make the table fit in available space. | shortened to "~Raf" to make the table fit in available space. | |||
| The earlier examples are more extensive to make sure that the process | The earlier examples are more extensive to make sure that the process | |||
| is clear, while later examples are more concise. | is clear, while later examples are more concise. | |||
| 6. Storing mode | 6. Storing mode | |||
| In storing mode (fully stateful), the sender cannot determine whether | In storing mode (fully stateful), the sender can determine if the | |||
| the destination is RPL-capable and thus would need an IP-in-IP | destination is inside the LLN by looking if the destination address | |||
| header. The IP-in-IP header needs to be addressed on a hop-by-hop | is matched by the DIO's PIO option. | |||
| basis so that the last 6LR can remove the RPI header. Additionally, | ||||
| The sender can determine if the destination is inside the LLN by | ||||
| looking if the destination address is matched by the DIO's PIO | ||||
| option. | ||||
| The following table summarizes what headers are needed in the | The following table summarizes what headers are needed in the | |||
| following scenarios, and indicates when the IP-in-IP header must be | following scenarios, and indicates when the IP-in-IP header must be | |||
| inserted on a hop-by-hop basis, and when it can target the | inserted on a hop-by-hop basis, and when it can target the | |||
| destination node directly. There are these possible situations: hop- | destination node directly. There are these possible situations: hop- | |||
| by-hop necessary (indicated by "hop"), or destination address | by-hop necessary (indicated by "hop"), or destination address | |||
| possible (indicated by "dst"). In all cases hop by hop can be used. | possible (indicated by "dst"). In all cases hop by hop can be used. | |||
| In cases where no IP-in-IP header is needed, the column is left | In cases where no IP-in-IP header is needed, the column is left | |||
| blank. | blank. | |||
| skipping to change at page 12, line 36 ¶ | skipping to change at page 13, line 33 ¶ | |||
| +---------------------+--------------+----------+--------------+ | +---------------------+--------------+----------+--------------+ | |||
| | | Raf to Raf | No | -- | | | | Raf to Raf | No | -- | | |||
| + +--------------+----------+--------------+ | + +--------------+----------+--------------+ | |||
| | | Raf to ~Raf | No | -- | | | | Raf to ~Raf | No | -- | | |||
| + Leaf - Leaf +--------------+----------+--------------+ | + Leaf - Leaf +--------------+----------+--------------+ | |||
| | | ~Raf to Raf | Yes | dst | | | | ~Raf to Raf | Yes | dst | | |||
| + +--------------+----------+--------------+ | + +--------------+----------+--------------+ | |||
| | | ~Raf to ~Raf | Yes | hop | | | | ~Raf to ~Raf | Yes | hop | | |||
| +---------------------+--------------+----------+--------------+ | +---------------------+--------------+----------+--------------+ | |||
| Figure 4: IP-in-IP encapsulation in Storing mode. | Figure 6: IP-in-IP encapsulation in Storing mode. | |||
| 6.1. Storing Mode: Interaction between Leaf and Root | 6.1. Storing Mode: Interaction between Leaf and Root | |||
| In this section we are going to describe the communication flow in | In this section we are going to describe the communication flow in | |||
| storing mode (SM) between, | storing mode (SM) between, | |||
| RPL-aware-leaf to root | RPL-aware-leaf to root | |||
| root to RPL-aware-leaf | root to RPL-aware-leaf | |||
| skipping to change at page 26, line 34 ¶ | skipping to change at page 27, line 34 ¶ | |||
| +-----------------+--------------+-----+-----+----------+----------+ | +-----------------+--------------+-----+-----+----------+----------+ | |||
| | | Raf to Raf | Yes | Yes | Yes | root/dst | | | | Raf to Raf | Yes | Yes | Yes | root/dst | | |||
| + +--------------+-----+-----+----------+----------+ | + +--------------+-----+-----+----------+----------+ | |||
| | | Raf to ~Raf | Yes | Yes | Yes | root/6LR | | | | Raf to ~Raf | Yes | Yes | Yes | root/6LR | | |||
| + Leaf - Leaf +--------------+-----+-----+----------+----------+ | + Leaf - Leaf +--------------+-----+-----+----------+----------+ | |||
| | | ~Raf to Raf | Yes | Yes | Yes | root/6LN | | | | ~Raf to Raf | Yes | Yes | Yes | root/6LN | | |||
| + +--------------+-----+-----+----------+----------+ | + +--------------+-----+-----+----------+----------+ | |||
| | | ~Raf to ~Raf | Yes | Yes | Yes | root/6LR | | | | ~Raf to ~Raf | Yes | Yes | Yes | root/6LR | | |||
| +-----------------+--------------+-----+-----+----------+----------+ | +-----------------+--------------+-----+-----+----------+----------+ | |||
| Figure 5: Headers needed in Non-Storing mode: RPI, RH3, IP-in-IP | Figure 7: Headers needed in Non-Storing mode: RPI, RH3, IP-in-IP | |||
| encapsulation. | encapsulation. | |||
| 7.1. Non-Storing Mode: Interaction between Leaf and Root | 7.1. Non-Storing Mode: Interaction between Leaf and Root | |||
| In this section we are going to describe the communication flow in | In this section we are going to describe the communication flow in | |||
| Non Storing Mode (Non-SM) between, | Non Storing Mode (Non-SM) between, | |||
| RPL-aware-leaf to root | RPL-aware-leaf to root | |||
| root to RPL-aware-leaf | root to RPL-aware-leaf | |||
| skipping to change at page 39, line 41 ¶ | skipping to change at page 40, line 41 ¶ | |||
| 8.1. Storing mode | 8.1. Storing mode | |||
| [I-D.ietf-roll-routing-dispatch] shows that the hop-by-hop IP-in-IP | [I-D.ietf-roll-routing-dispatch] shows that the hop-by-hop IP-in-IP | |||
| header can be compressed using IP-in-IP 6LoRH (IP-in-IP-6LoRH) header | header can be compressed using IP-in-IP 6LoRH (IP-in-IP-6LoRH) header | |||
| as described in Section 7 of the document. | as described in Section 7 of the document. | |||
| There are potential significant advantages to having a single code | There are potential significant advantages to having a single code | |||
| path that always processes IP-in-IP headers with no options. | path that always processes IP-in-IP headers with no options. | |||
| Thanks to the relaxation of the RFC2460 rule about discarding unknown | Thanks to the change of the RPI option type from 0x63 to 0x23, there | |||
| Hop-by-Hop options, there is no longer any uncertainty about when to | is no longer any uncertainty about when to use an IP-in-IP header in | |||
| use an IPIP header in the storing mode case. The RPI header SHOULD | the storing mode. A Hop-by-Hop Options Header containing the RPI | |||
| always be added when 6LRs originate packets (without IPIP headers), | option SHOULD always be added when 6LRs originate packets (without | |||
| and IPIP headers should always be added (addressed to the root when | IP-in-IP headers), and IP-in-IP headers should always be added | |||
| on the way up, to the end-host when on the way down) when a 6LR finds | (addressed to the root when on the way up, to the end-host when on | |||
| it needs to insert an RPI header. | the way down) when a 6LR find that it needs to insert a Hop-by-Hop | |||
| Options Header containing the RPI option. | ||||
| In order to support the above two cases with full generality, the | In order to support the above two cases with full generality, the | |||
| different situations (always do IP-in-IP vs never use IP-in-IP) | different situations (always do IP-in-IP vs never use IP-in-IP) | |||
| should be signaled in the RPL protocol itself. | should be signaled in the RPL protocol itself. | |||
| 8.2. Non-Storing mode | 8.2. Non-Storing mode | |||
| In the non-storing case, dealing with non-RPL aware leaf nodes is | In the non-storing case, dealing with non-RPL aware leaf nodes is | |||
| much easier as the 6LBR (DODAG root) has complete knowledge about the | much easier as the 6LBR (DODAG root) has complete knowledge about the | |||
| connectivity of all DODAG nodes, and all traffic flows through the | connectivity of all DODAG nodes, and all traffic flows through the | |||
| skipping to change at page 40, line 37 ¶ | skipping to change at page 41, line 37 ¶ | |||
| In Storing Mode, for the examples of Flow from RPL-aware-leaf to non- | In Storing Mode, for the examples of Flow from RPL-aware-leaf to non- | |||
| RPL-aware-leaf and non-RPL-aware-leaf to non-RPL-aware-leaf comprise | RPL-aware-leaf and non-RPL-aware-leaf to non-RPL-aware-leaf comprise | |||
| an IP-in-IP and RPI compression headers. The type of this case is | an IP-in-IP and RPI compression headers. The type of this case is | |||
| critical since IP-in-IP is encapsulating a RPI header. | critical since IP-in-IP is encapsulating a RPI header. | |||
| +--+-----+---+--------------+-----------+-------------+-------------+ | +--+-----+---+--------------+-----------+-------------+-------------+ | |||
| |1 | 0|0 |TSE| 6LoRH Type 6 | Hop Limit | RPI - 6LoRH | LOWPAN IPHC | | |1 | 0|0 |TSE| 6LoRH Type 6 | Hop Limit | RPI - 6LoRH | LOWPAN IPHC | | |||
| +--+-----+---+--------------+-----------+-------------+-------------+ | +--+-----+---+--------------+-----------+-------------+-------------+ | |||
| Figure 6: Critical IP-in-IP (RPI). | Figure 8: Critical IP-in-IP (RPI). | |||
| 10. IANA Considerations | 10. IANA Considerations | |||
| This document updates the registration made in [RFC6553] to the IPv6 | This document updates the registration made in [RFC6553] Destination | |||
| Hop-by-Hop Registry from 0x43 to 0x63. | Options and Hop-by-Hop Options registry from 0x63 to 0x23. | |||
| Hex Value Binary Value | ||||
| act chg rest Description Reference | ||||
| --------- --- --- ------- ----------------- ---------- | ||||
| 0x23 00 1 00011 RPL Option [RFCXXXX] | ||||
| 0x63 01 1 00011 RPL Option(DEPRECATED) [RFC6553][RFCXXXX] | ||||
| Figure 9: Option Type in RPL Option. | ||||
| Todo: Add the Updates to RFC 6550. | ||||
| 11. Security Considerations | 11. Security Considerations | |||
| The security considerations covering of [RFC6553] and [RFC6554] apply | The security considerations covering of [RFC6553] and [RFC6554] apply | |||
| when the packets get into RPL Domain. | when the packets get into RPL Domain. | |||
| The IPIP mechanism described in this document is much more limited | The IPIP mechanism described in this document is much more limited | |||
| than the general mechanism described in [RFC2473]. The willingness | than the general mechanism described in [RFC2473]. The willingness | |||
| of each node in the LLN to decapsulate packets and forward them could | of each node in the LLN to decapsulate packets and forward them could | |||
| be exploited by nodes to disguise the origin of an attack. | be exploited by nodes to disguise the origin of an attack. | |||
| End of changes. 47 change blocks. | ||||
| 126 lines changed or deleted | 142 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/ | ||||