| < draft-ietf-roll-useofrplinfo-17.txt | draft-ietf-roll-useofrplinfo-18.txt > | |||
|---|---|---|---|---|
| ROLL Working Group M. Robles | ROLL Working Group M. Robles | |||
| Internet-Draft Ericsson | Internet-Draft Ericsson | |||
| Updates: 6553, 6550, 8138 (if approved) M. Richardson | Updates: 6553, 6550, 8138 (if approved) M. Richardson | |||
| Intended status: Standards Track SSW | Intended status: Standards Track SSW | |||
| Expires: April 30, 2018 P. Thubert | Expires: May 2, 2018 P. Thubert | |||
| Cisco | Cisco | |||
| October 27, 2017 | October 29, 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-17 | draft-ietf-roll-useofrplinfo-18 | |||
| 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. Additionally, this | to design efficient compression of these headers. Additionally, this | |||
| document updates the RFC 6553 adding a change to the RPL Option Type | document updates the RFC 6553 adding a change to the RPL Option Type | |||
| skipping to change at page 1, line 40 ¶ | skipping to change at page 1, line 40 ¶ | |||
| 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 April 30, 2018. | This Internet-Draft will expire on May 2, 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 | |||
| (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 31 ¶ | skipping to change at page 2, line 31 ¶ | |||
| 4. Sample/reference topology . . . . . . . . . . . . . . . . . . 8 | 4. Sample/reference topology . . . . . . . . . . . . . . . . . . 8 | |||
| 5. Use cases . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 5. Use cases . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 6. Storing mode . . . . . . . . . . . . . . . . . . . . . . . . 12 | 6. Storing mode . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 6.1. Storing Mode: Interaction between Leaf and Root . . . . . 13 | 6.1. Storing Mode: Interaction between Leaf and Root . . . . . 13 | |||
| 6.1.1. SM: Example of Flow from RPL-aware-leaf to root . . . 14 | 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 . . . 15 | 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 . 15 | 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 . 16 | 6.1.4. SM: Example of Flow from not-RPL-aware-leaf to root . 16 | |||
| 6.2. Storing Mode: Interaction between Leaf and Internet . . . 17 | 6.2. Storing Mode: Interaction between Leaf and Internet . . . 17 | |||
| 6.2.1. SM: Example of Flow from RPL-aware-leaf to Internet . 17 | 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 . 18 | 6.2.2. SM: Example of Flow from Internet to RPL-aware-leaf . 17 | |||
| 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 . . . . . . . . . . . . . . . . . . . . . . 19 | Internet . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 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 . . . . . . . . . . . . . . . . . . . . . . . . 20 | leaf . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 6.3. Storing Mode: Interaction between Leaf and Leaf . . . . . 21 | 6.3. Storing Mode: Interaction between Leaf and Leaf . . . . . 20 | |||
| 6.3.1. SM: Example of Flow from RPL-aware-leaf to RPL-aware- | 6.3.1. SM: Example of Flow from RPL-aware-leaf to RPL-aware- | |||
| leaf . . . . . . . . . . . . . . . . . . . . . . . . 21 | leaf . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 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 . . . . . . . . . . . . . . . . . . . . . 22 | aware-leaf . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 6.3.3. SM: Example of Flow from not-RPL-aware-leaf to RPL- | 6.3.3. SM: Example of Flow from not-RPL-aware-leaf to RPL- | |||
| aware-leaf . . . . . . . . . . . . . . . . . . . . . 23 | aware-leaf . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 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 . . . . . . . . . . . . . . . . . . . 24 | RPL-aware-leaf . . . . . . . . . . . . . . . . . . . 23 | |||
| 7. Non Storing mode . . . . . . . . . . . . . . . . . . . . . . 26 | 7. Non Storing mode . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 7.1. Non-Storing Mode: Interaction between Leaf and Root . . . 27 | 7.1. Non-Storing Mode: Interaction between Leaf and Root . . . 25 | |||
| 7.1.1. Non-SM: Example of Flow from RPL-aware-leaf to root . 28 | 7.1.1. Non-SM: Example of Flow from RPL-aware-leaf to root . 26 | |||
| 7.1.2. on-SM: Example of Flow from root to RPL-aware-leaf . 28 | 7.1.2. on-SM: Example of Flow from root to RPL-aware-leaf . 26 | |||
| 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 . . . . . . . . . . . . . . . . . . . . . . . . 29 | leaf . . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 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 . . . . . . . . . . . . . . . . . . . . . . . . 30 | root . . . . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 7.2. Non-Storing Mode: Interaction between Leaf and Internet . 31 | 7.2. Non-Storing Mode: Interaction between Leaf and Internet . 29 | |||
| 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 . . . . . . . . . . . . . . . . . . . . . . 31 | Internet . . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 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 . . . . . . . . . . . . . . . . . . . . . . . . 32 | leaf . . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
| 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 . . . . . . . . . . . . . . . . . . . . . . 33 | Internet . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 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 . . . . . . . . . . . . . . . . . . . . . 34 | aware-leaf . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 7.3. Non-Storing Mode: Interaction between Leafs . . . . . . . 35 | 7.3. Non-Storing Mode: Interaction between Leafs . . . . . . . 33 | |||
| 7.3.1. Non-SM: Example of Flow from RPL-aware-leaf to RPL- | 7.3.1. Non-SM: Example of Flow from RPL-aware-leaf to RPL- | |||
| aware-leaf . . . . . . . . . . . . . . . . . . . . . 35 | aware-leaf . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 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 . . . . . . . . . . . . . . . . . . . 37 | RPL-aware-leaf . . . . . . . . . . . . . . . . . . . 35 | |||
| 7.3.3. Non-SM: Example of Flow from not-RPL-aware-leaf to | 7.3.3. Non-SM: Example of Flow from not-RPL-aware-leaf to | |||
| RPL-aware-leaf . . . . . . . . . . . . . . . . . . . 38 | RPL-aware-leaf . . . . . . . . . . . . . . . . . . . 36 | |||
| 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 . . . . . . . . . . . . . . . . . 39 | not-RPL-aware-leaf . . . . . . . . . . . . . . . . . 37 | |||
| 8. Observations about the cases . . . . . . . . . . . . . . . . 40 | 8. Observations about the cases . . . . . . . . . . . . . . . . 37 | |||
| 8.1. Storing mode . . . . . . . . . . . . . . . . . . . . . . 40 | 8.1. Storing mode . . . . . . . . . . . . . . . . . . . . . . 37 | |||
| 8.2. Non-Storing mode . . . . . . . . . . . . . . . . . . . . 41 | 8.2. Non-Storing mode . . . . . . . . . . . . . . . . . . . . 38 | |||
| 9. 6LoRH Compression cases . . . . . . . . . . . . . . . . . . . 41 | 9. 6LoRH Compression cases . . . . . . . . . . . . . . . . . . . 38 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 41 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 39 | |||
| 11. Security Considerations . . . . . . . . . . . . . . . . . . . 42 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 39 | |||
| 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 45 | 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 45 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . 45 | 13.1. Normative References . . . . . . . . . . . . . . . . . . 42 | |||
| 13.2. Informative References . . . . . . . . . . . . . . . . . 46 | 13.2. Informative References . . . . . . . . . . . . . . . . . 43 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 48 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 45 | |||
| 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 4, line 16 ¶ | skipping to change at page 4, line 16 ¶ | |||
| interoperability, and from a desire to compress as many of the above | interoperability, and from a desire to compress as many of the above | |||
| artifacts as possible that not all implementors agree when artifacts | artifacts as possible that not all implementors agree when artifacts | |||
| are necessary, or when they can be safely omitted, or removed. | are necessary, or when they can be safely omitted, or removed. | |||
| An interim meeting went through the 24 cases defined here to discover | An interim meeting went through the 24 cases defined here to discover | |||
| if there were any shortcuts, and this document is the result of that | if there were any shortcuts, and this document is the result of that | |||
| discussion. This document clarifies what is the correct and the | discussion. This document clarifies what is the correct and the | |||
| incorrect behaviour. | incorrect behaviour. | |||
| The related document A Routing Header Dispatch for 6LoWPAN (6LoRH) | The related document A Routing Header Dispatch for 6LoWPAN (6LoRH) | |||
| [I-D.ietf-roll-routing-dispatch] defines a method to compress RPL | [RFC8138] defines a method to compress RPL Option information and | |||
| Option information and Routing Header type 3 [RFC6554], an efficient | Routing Header type 3 [RFC6554], an efficient IP-in-IP technique, and | |||
| IP-in-IP technique, and use cases proposed for the | use cases proposed for the [Second6TischPlugtest] involving 6loRH. | |||
| [Second6TischPlugtest] involving 6loRH. | ||||
| 2. Terminology and Requirements Language | 2. Terminology and Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
| Terminology defined in [RFC7102] applies to this document: LBR, LLN, | Terminology defined in [RFC7102] applies to this document: LBR, LLN, | |||
| RPL, RPL Domain and ROLL. | RPL, RPL Domain and ROLL. | |||
| RPL-node: It is device which implements RPL, thus we can say that the | RPL-node: A device which implements RPL, thus we can say that the | |||
| device is RPL-capable or RPL-aware. Please note that the device can | device is RPL-capable or RPL-aware. Please note that the device can | |||
| be found inside the LLN or outside LLN. In this document a RPL-node | be found inside the LLN or outside LLN. In this document a RPL-node | |||
| which is a leaf of a DODAG is called RPL-aware-leaf. | which is a leaf of a DODAG is called RPL-aware-leaf. | |||
| RPL-not-capable: It is device which does not implement RPL, thus we | RPL-not-capable: A device which does not implement RPL, thus we can | |||
| can say that the device is not-RPL-aware. Please note that the | say that the device is not-RPL-aware. Please note that the device | |||
| device can be found inside the LLN. In this document a not-RPL-aware | can be found inside the LLN. In this document a not-RPL-aware node | |||
| node which is a leaf of a DODAG is called not-RPL-aware-leaf. | which is a leaf of a DODAG is called not-RPL-aware-leaf. | |||
| pledge: a new device which seeks admission to a network. (from | pledge: a new device which seeks admission to a network. (from | |||
| [I-D.ietf-anima-bootstrapping-keyinfra]) | [I-D.ietf-anima-bootstrapping-keyinfra]) | |||
| Join Registrar and Coordinator (JRC): a device which brings new nodes | Join Registrar and Coordinator (JRC): a device which brings new nodes | |||
| (pledges) into a network. (from | (pledges) into a network. (from | |||
| [I-D.ietf-anima-bootstrapping-keyinfra]) | [I-D.ietf-anima-bootstrapping-keyinfra]) | |||
| Flag day: A "flag day" is a procedure in which the network, or a part | Flag day: A "flag day" is a procedure in which the network, or a part | |||
| of it, is changed during a planned outage, or suddenly, causing an | of it, is changed during a planned outage, or suddenly, causing an | |||
| skipping to change at page 5, line 32 ¶ | skipping to change at page 5, line 32 ¶ | |||
| option type, and the third bit indicates that the Option Data may | option type, and the third bit indicates that the Option Data may | |||
| change en route. The remaining bits serve as the option type. | change en route. The remaining bits serve as the option type. | |||
| Hex Value Binary Value | Hex Value Binary Value | |||
| act chg rest Description Reference | act chg rest Description Reference | |||
| --------- --- --- ------- ----------------- ---------- | --------- --- --- ------- ----------------- ---------- | |||
| 0x63 01 1 00011 RPL Option [RFC6553] | 0x63 01 1 00011 RPL Option [RFC6553] | |||
| Figure 1: Option Type in RPL Option. | Figure 1: Option Type in RPL Option. | |||
| Recent changes in [I-D.ietf-6man-rfc2460bis], state: "it is now | Recent changes in [RFC8200] (section 4, page 8), states: "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". Processing of the Hop-by-Hop Options header (by IPv6 | so". Processing of the Hop-by-Hop Options header (by IPv6 | |||
| intermediate nodes) is now optional, but if they are configured to | intermediate nodes) is now optional, but if they are configured to | |||
| process the header, and if such nodes encounter an option with the | 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 | 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, | to [RFC8200]). Host systems should do the same, irrespective of the | |||
| irrespective of the configuration. | configuration. | |||
| Based on That, if an IPv6 (intermediate) node (RPL-not-capable) | Based on That, if an IPv6 (intermediate) node (RPL-not-capable) | |||
| receives a packet with an RPL Option, it should ignore the HBH RPL | receives a packet with an RPL Option, it should ignore the HBH RPL | |||
| option (skip over this option and continue processing the header). | option (skip over this option and continue processing the header). | |||
| Thus, this document updates the Option Type field to: the two high | Thus, this document updates the Option Type field to: the two high | |||
| order bits MUST be set to '00' and the third bit is equal to '1'. | order bits MUST be set to '00' and the third bit is equal to '1'. | |||
| The first two bits indicate that the IPv6 node MUST skip over this | The first two bits indicate that the IPv6 node MUST skip over this | |||
| option and continue processing the header | option and continue processing the header ([RFC8200] Section 4.2) if | |||
| (Section 4.2.[I-D.ietf-6man-rfc2460bis] ) if it doesn't recognize the | it doesn't recognize the option type, and the third bit continues to | |||
| option type, and the third bit continues to be set to indicate that | be set to indicate that the Option Data may change en route. The | |||
| the Option Data may change en route. The remaining bits serve as the | remaining bits serve as the option type and remain as 0x3. This | |||
| option type and remain as 0x3. This ensures that a packet that | ensures that a packet that leaves the RPL domain of an LLN (or that | |||
| leaves the RPL domain of an LLN (or that leaves the LLN entirely) | leaves the LLN entirely) will not be discarded when it contains the | |||
| will not be discarded when it contains the [RFC6553] RPL Hop-by-Hop | [RFC6553] RPL Hop-by-Hop option known as RPI. | |||
| option known as RPI. This is an update to [RFC6553]. | ||||
| This is a significant update to [RFC6553]. | ||||
| Hex Value Binary Value | Hex Value Binary Value | |||
| act chg rest Description Reference | act chg rest Description Reference | |||
| --------- --- --- ------- ----------------- ---------- | --------- --- --- ------- ----------------- ---------- | |||
| 0x23 00 1 00011 RPL Option [RFCXXXX] | 0x23 00 1 00011 RPL Option [RFCXXXX] | |||
| Figure 2: Proposed change to the Option Type in RPL Option. | Figure 2: Revised 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 0x23 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 0x23 when processing. When forwarding packets, | accept both 0x63 and 0x23 when processing. When forwarding packets, | |||
| implementations SHOULD use the same value as it was 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 DIO 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 [RFC8183] will experience a flag day | |||
| experience a flag day in the data compression anyway, and if possible | in the data compression anyway, and if possible this change can be | |||
| this change can be deployed at the same time. | deployed at the same time. | |||
| 3.2. Updates to RFC 8138 | 3.2. Updates to RFC 8138 | |||
| RPI-6LoRH header provides a compressed form for the RPL RPI | RPI-6LoRH header provides a compressed form for the RPL RPI | |||
| [RFC8138]. It should be considered when the Option Type in RPL | [RFC8138]. It should be considered when the Option Type in RPL | |||
| Option is decompressed, should take the value of 0x23 instead of | Option is decompressed, should take the value of 0x23 instead of | |||
| 0x63. | 0x63. | |||
| 3.3. Updates to RFC 6550: Indicating the new RPI in the DODAG | 3.3. Updates to RFC 6550: Indicating the new RPI in the DODAG | |||
| Configuration Option Flag. | Configuration Option Flag. | |||
| 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 (0x23) and old RPI (0x63) nodes, the new nodes need to be | new RPI (0x23) and old RPI (0x63) nodes, when there is a mix of new | |||
| told that there are old RPI nodes present. This can be done via the | nodes and old nodes, the new nodes may be put into a compatibilit | |||
| DODAG Configuration Option flag which will propogate through the | mode until all of the old nodes are replaced or upgraded. | |||
| network. Failure to receive this information will cause dual mode | ||||
| nodes to originate traffic with the old-RPI (0x63) value. | ||||
| As states in [RFC6550] the DODAG Configuration option is present in | This can be done via a DODAG Configuration Option flag which will | |||
| DIO messages. the DODAG Configuration option distribute | propogate through the network. Failure to receive this information | |||
| configuration information which is generally static and unchanging | will cause new nodes to remain in compatibility mode, and originate | |||
| within the DODAG. This information is configured at the DODAG root | traffic with the old-RPI (0x63) value. | |||
| and distributed throughout the DODAG with the DODAG Configuration | ||||
| option. Nodes other than the DODAG root must not modify this | ||||
| information when propagating the DODAG Configuration option. | ||||
| The DODAG Configuration Option is as follow. We are interested in | As stated in [RFC6550] the DODAG Configuration option is present in | |||
| the Flag field. The remaining fields states as defined in [RFC6550]. | DIO messages. The DODAG Configuration option distributes | |||
| configuration information. It is generally static, and does not | ||||
| change within the DODAG. This information is configured at the DODAG | ||||
| root and distributed throughout the DODAG with the DODAG | ||||
| Configuration option. Nodes other than the DODAG root do not modify | ||||
| this information when propagating the DODAG Configuration option. | ||||
| The DODAG Configuration Option is as follows. The Flag field is the | ||||
| interesting field. The remaining fields states as defined in | ||||
| [RFC6550]. | ||||
| Flags: The 4-bits remaining unused in the Flags field are reserved | Flags: The 4-bits remaining unused in the Flags field are reserved | |||
| for flags. The field MUST be initialized to zero by the sender and | for flags. The field MUST be initialized to zero by the sender and | |||
| MUST be ignored by the receiver. | MUST be ignored by the receiver. | |||
| 0 1 2 3 | 0 1 2 3 | |||
| +-----------------+---------------------------------------------------+ | +-----------------+---------------------------------------------------+ | |||
| | Type = 0x04 | Opt Length = 14| Flags | A | PCS| DIOIntDoubl. | | | Type = 0x04 | Opt Length = 14| Flags | A | PCS| DIOIntDoubl. | | |||
| +---------------------------------------------------------------------+ | +---------------------------------------------------------------------+ | |||
| | DIOIntMin. | DIORedund. | MaxRankIncrease | | | DIOIntMin. | DIORedund. | MaxRankIncrease | | |||
| +-----------------+---------------------------------------------------+ | +-----------------+---------------------------------------------------+ | |||
| | MinHopRankIncrease | OCP | | | MinHopRankIncrease | OCP | | |||
| +-----------------+---------------------------------------------------+ | +-----------------+---------------------------------------------------+ | |||
| |Reserved | Def. Lifetime | Lifetime Unit | | |Reserved | Def. Lifetime | Lifetime Unit | | |||
| +-----------------+-----------------+---------------------------------+ | +-----------------+-----------------+---------------------------------+ | |||
| Figure 3: DODAG Configuration Option. | Figure 3: DODAG Configuration Option. | |||
| We propose to use the flag in the DODAG Configuration option as | Bit number three of flag field in the DODAG Configuration option is | |||
| follows: | to be used as follows: | |||
| +------------+-----------------+---------------+ | +------------+-----------------+---------------+ | |||
| | Bit number | Description | Reference | | | Bit number | Description | Reference | | |||
| +------------+-----------------+---------------+ | +------------+-----------------+---------------+ | |||
| | 3 | RPI 0x23 enable | This document | | | 3 | RPI 0x23 enable | This document | | |||
| +------------+-----------------+---------------+ | +------------+-----------------+---------------+ | |||
| Figure 4: DODAG Configuration Option Flag to indicate the RPI-flag- | Figure 4: DODAG Configuration Option Flag to indicate the RPI-flag- | |||
| day. | day. | |||
| skipping to change at page 8, line 19 ¶ | skipping to change at page 8, line 22 ¶ | |||
| (6LoWPAN Node) as leaf logically organized in a DODAG structure. | (6LoWPAN Node) as leaf logically organized in a DODAG structure. | |||
| (Destination Oriented 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; in non-storing (RPL-NSM), it is fully source | |||
| source routed. A RPL Instance is either fully storing or fully non- | routed. A RPL Instance is either fully storing or fully non-storing, | |||
| storing, i.e. a RPL Instance with a combination of storing and non- | i.e. a RPL Instance with a combination of storing and non-storing | |||
| storing nodes is not supported with the current specifications at the | nodes is not supported with the current specifications at the time of | |||
| time of writing this document. | writing this document. | |||
| +--------------+ | +--------------+ | |||
| | Upper Layers | | | Upper Layers | | |||
| | | | | | | |||
| +--------------+ | +--------------+ | |||
| | RPL | | | RPL | | |||
| | | | | | | |||
| +--------------+ | +--------------+ | |||
| | ICMPv6 | | | ICMPv6 | | |||
| | | | | | | |||
| skipping to change at page 9, line 50 ¶ | skipping to change at page 10, line 4 ¶ | |||
| 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 6: A reference RPL Topology. | Figure 6: 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, 6LR represents a full router | |||
| a router or a host. The 6LN leaves (Raf - "RPL aware leaf"-) marked | node. The 6LN is a RPL aware router, or host. | |||
| 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 | But, the 6LN leaves (Raf - "RPL aware leaf"-) marked as (F, H and I) | |||
| aware leaf" (G and J) are devices which do not speak RPL at all (not- | are RPL nodes with no children hosts. | |||
| RPL-aware), but uses Router-Advertisements, 6LowPAN DAR/DAC and | ||||
| efficient-ND only to participate in the network [RFC6775]. In the | The leafs marked as ~Raf "not-RPL aware leaf" (G and J) are devices | |||
| document these leafs (G and J) are often named IPv6 node. The 6LBR | which do not speak RPL at all (not-RPL-aware), but uses Router- | |||
| in the figure is the root of the Global DODAG. | Advertisements, 6LowPAN DAR/DAC and efficient-ND only to participate | |||
| in the network [RFC6775]. In the document these leafs (G and J) are | ||||
| also refered to as an IPv6 node. | ||||
| The 6LBR ("A") 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 are going to be analyzed for a number of representative | |||
| traffic flows. | traffic flows. | |||
| This document assumes that the LLN is using the no-drop RPI option | This document assumes that the LLN is using the no-drop RPI option | |||
| (0x23). | (0x23). | |||
| 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 leaves that do not | |||
| understand RPL and they are part of hte LLN. We name these nodes as | understand RPL, but are part of the LLN. We name these nodes as not- | |||
| not-RPL-aware-leaf.(e.g. section 5.4- Flow from not-RPL-aware-leaf to | RPL-aware-leaf. (e.g. Section 6.1.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 6.2.3 Flow from not- | |||
| aware-leaf to Internet) | RPL-aware-leaf to Internet) | |||
| The uses cases comprise as follow: | The uses cases comprise as follow: | |||
| Interaction between Leaf and Root: | Interaction between Leaf and Root: | |||
| RPL-aware-leaf to root | RPL-aware-leaf to root | |||
| root to RPL-aware-leaf | root to RPL-aware-leaf | |||
| not-RPL-aware-leaf to root | not-RPL-aware-leaf to root | |||
| skipping to change at page 10, line 47 ¶ | skipping to change at page 11, line 4 ¶ | |||
| root to RPL-aware-leaf | root to RPL-aware-leaf | |||
| not-RPL-aware-leaf to root | not-RPL-aware-leaf to root | |||
| root to not-RPL-aware-leaf | root to not-RPL-aware-leaf | |||
| Interaction between Leaf and Internet: | Interaction between Leaf and Internet: | |||
| RPL-aware-leaf to Internet | RPL-aware-leaf to Internet | |||
| Internet to RPL-aware-leaf | Internet to RPL-aware-leaf | |||
| not-RPL-aware-leaf to Internet | not-RPL-aware-leaf to Internet | |||
| Internet to not-RPL-aware-leaf | Internet to not-RPL-aware-leaf | |||
| Interaction between Leafs: | Interaction between Leafs: | |||
| RPL-aware-leaf to RPL-aware-leaf (storing and non-storing) | RPL-aware-leaf to RPL-aware-leaf (storing and non-storing) | |||
| RPL-aware-leaf to not-RPL-aware-leaf (non-storing) | RPL-aware-leaf to not-RPL-aware-leaf (non-storing) | |||
| 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 is consistent with the rule that a Header cannot be | |||
| removed on the fly inside an IPv6 packet that is being routed. This | inserted or removed on the fly inside an IPv6 packet that is being | |||
| is a fundamental precept of the IPv6 architecture as outlined in | routed. This is a fundamental precept of the IPv6 architecture as | |||
| [RFC2460]. Extensions may not be added or removed except by the | outlined in [RFC2460]. Extensions may not be added or removed except | |||
| sender or the receiver. | by the sender or the receiver. | |||
| But, options in the Hop-by-Hop Option Header whose option type has | However, unlike [RFC6553], the Hop-by-Hop Option Header used for the | |||
| the first two bits set to '00' MUST ignored when received by a host | RPI artifact has the first two bits set to '00'. This means that the | |||
| or router that does not understand that option ( Section 4.2 | RPI artifact will be ignored when received by a host or router that | |||
| [I-D.ietf-6man-rfc2460bis]). | does not understand that option ( Section 4.2 [RFC8200]). | |||
| This means that when the no-drop RPI option code 0x23 is used, a | This means that when the no-drop RPI option code 0x23 is used, a | |||
| packet that leaves the RPL domain of an LLN (or that leaves the LLN | 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 | 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 | 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. | 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; no clear attack has been described. At worst, it is clear | |||
| bandwidth when it escapes. | that the RPI option would waste some network bandwidth when it | |||
| escapes. This is traded off against the savings in the LLN by not | ||||
| having to encapsulate the packet in order to remove the artifact. | ||||
| An intermediate router that needs to add an extension header (SHR3 or | Despite being legal to leave the RPI artifact in place, an | |||
| RPI Option) must encapsulate the packet in an (additional) outer IP | intermediate router that needs to add an extension header (SHR3 or | |||
| header. The new header can be placed is placed after this new outer | RPI Option) MUST still encapsulate the packet in an (additional) | |||
| IP header. | outer IP header. The new header is placed after this new outer IP | |||
| header. | ||||
| A corollory is that an SHR3 or RPI Option can only be removed by an | A corollory is that an SHR3 or RPI Option can only be removed by an | |||
| intermediate router if it is placed in an encapsulating IPv6 Header, | intermediate router if it is placed in an encapsulating IPv6 Header, | |||
| which is addressed to the intermediate router. When it does so, the | which is addressed TO the intermediate router. When it does so, the | |||
| whole encapsulating header must be removed. (A replacement may be | whole encapsulating header must be removed. (A replacement may be | |||
| added). This sometimes can result in outer IP headers being | added). This sometimes can result in outer IP headers being | |||
| addressed to the next hop router using link-local addresses. | addressed to the next hop router using link-local addresses. | |||
| Both RPI and RH3 headers may be modified in very specific ways by | Both RPI and RH3 headers may be modified in very specific ways by | |||
| routers on the path of the packet without the need to add to remove | routers on the path of the packet without the need to add to remove | |||
| an encapsulating header. Both headers were designed with this | an encapsulating header. Both headers were designed with this | |||
| modification in mind, and both the RPL RH and the RPL option are | modification in mind, and both the RPL RH and the RPL option are | |||
| marked mutable but recoverable: so an IPsec AH security header can be | marked mutable but recoverable: so an IPsec AH security header can be | |||
| applied across these headers, but it can not secure the values which | applied across these headers, but it can not secure the values which | |||
| mutate. | mutate. | |||
| RPI should be present in every single RPL data packet. There is one | RPI should be present in every single RPL data packet. There is one | |||
| exception in non-storing mode: when a packet is going down from the | exception in non-storing mode: when a packet is going down from the | |||
| root. In a downward non-storing mode, the entire route is written, | root. In a downward non-storing mode, the entire route is written, | |||
| so there can be no loops by construction, nor any confusion about | so there can be no loops by construction, nor any confusion about | |||
| which forwarding table to use (as the root has already made all | which forwarding table to use (as the root has already made all | |||
| routing decisions). There still may be cases (such as in 6tisch) | routing decisions). However, there are still cases, such as in | |||
| where the instanceID portion of the RPI header may still be needed to | 6tisch, where the instanceID portion of the RPI header may still be | |||
| pick an appropriate priority or channel at each hop. | needed to pick an appropriate priority or channel at each hop. | |||
| 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 can determine if the | In storing mode (fully stateful), the sender can determine if the | |||
| destination is inside the LLN by looking if the destination address | destination is inside the LLN by looking if the destination address | |||
| is matched by the DIO's PIO option. | is matched by the DIO's PIO option. | |||
| The following table summarizes what headers are needed in the | The following table itemizes which headers are needed in the | |||
| following scenarios, and indicates when the IP-in-IP header must be | following scenarios, and indicates if 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, or when it can target the destination | |||
| destination node directly. There are these possible situations: hop- | node directly. There are these possible situations: hop-by-hop | |||
| by-hop necessary (indicated by "hop"), or destination address | necessary (indicated by "hop"), or destination address possible | |||
| possible (indicated by "dst"). In all cases hop by hop can be used. | (indicated by "dst"). In all cases hop by hop MAY 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. | |||
| In all cases the RPI headers are needed, since it identifies | In all cases the RPI headers are needed, since it identifies | |||
| inconsistencies (loops) in the routing topology. In all cases the | inconsistencies (loops) in the routing topology. In all cases the | |||
| RH3 is not need because we do not indicate the route in storing mode. | RH3 is not need because we do not indicate the route in storing mode. | |||
| The leaf can be a router 6LR or a host, both indicated as 6LN | In each case, 6LR_i are the intermediate routers from source to | |||
| (Figure 2). | destination. "1 <= i >= n", n is the number of routers (6LR) that | |||
| the packet go through from source (6LN) to destination. | ||||
| +---------------------+--------------+----------+--------------+ | The leaf can be a router 6LR or a host, both indicated as 6LN (see | |||
| | Interaction between | Use Case | IP-in-IP | IP-in-IP dst | | Figure 6). | |||
| +---------------------+--------------+----------+--------------+ | ||||
| | | Raf to root | No | -- | | +---------------------+--------------+----------+--------------+ | |||
| + +--------------+----------+--------------+ | | Interaction between | Use Case | IP-in-IP | IP-in-IP dst | | |||
| | Leaf - Root | root to Raf | No | -- | | +---------------------+--------------+----------+--------------+ | |||
| + +--------------+----------+--------------+ | | | Raf to root | No | -- | | |||
| | | root to ~Raf | No | -- | | + +--------------+----------+--------------+ | |||
| + +--------------+----------+--------------+ | | Leaf - Root | root to Raf | No | -- | | |||
| | | ~Raf to root | Yes | root | | + +--------------+----------+--------------+ | |||
| +---------------------+--------------+----------+--------------+ | | | root to ~Raf | No | -- | | |||
| | | Raf to Int | No | -- | | + +--------------+----------+--------------+ | |||
| + +--------------+----------+--------------+ | | | ~Raf to root | Yes | root | | |||
| | Leaf - Internet | Int to Raf | Yes | Raf | | +---------------------+--------------+----------+--------------+ | |||
| + +--------------+----------+--------------+ | | | Raf to Int | No | -- | | |||
| | | ~Raf to Int | Yes | root | | + +--------------+----------+--------------+ | |||
| + +--------------+----------+--------------+ | | Leaf - Internet | Int to Raf | Yes | Raf | | |||
| | | Int to ~Raf | Yes | hop | | + +--------------+----------+--------------+ | |||
| +---------------------+--------------+----------+--------------+ | | | ~Raf to Int | Yes | root | | |||
| | | Raf to Raf | No | -- | | + +--------------+----------+--------------+ | |||
| + +--------------+----------+--------------+ | | | Int to ~Raf | Yes | hop | | |||
| | | Raf to ~Raf | No | -- | | +---------------------+--------------+----------+--------------+ | |||
| + Leaf - Leaf +--------------+----------+--------------+ | | | Raf to Raf | No | -- | | |||
| | | ~Raf to Raf | Yes | dst | | + +--------------+----------+--------------+ | |||
| + +--------------+----------+--------------+ | | | Raf to ~Raf | No | -- | | |||
| | | ~Raf to ~Raf | Yes | hop | | + Leaf - Leaf +--------------+----------+--------------+ | |||
| +---------------------+--------------+----------+--------------+ | | | ~Raf to Raf | Yes | dst | | |||
| + +--------------+----------+--------------+ | ||||
| | | ~Raf to ~Raf | Yes | hop | | ||||
| +---------------------+--------------+----------+--------------+ | ||||
| Figure 7: IP-in-IP encapsulation in Storing mode. | Figure 7: 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 | |||
| skipping to change at page 13, line 43 ¶ | skipping to change at page 14, line 4 ¶ | |||
| Figure 7: IP-in-IP encapsulation in Storing mode. | Figure 7: 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 | |||
| not-RPL-aware-leaf to root | not-RPL-aware-leaf to root | |||
| root to not-RPL-aware-leaf | root to not-RPL-aware-leaf | |||
| 6.1.1. SM: Example of Flow from RPL-aware-leaf to root | 6.1.1. SM: Example of Flow from RPL-aware-leaf to root | |||
| In storing mode, RFC 6553 (RPI) is used to send RPL Information | In storing mode, RFC 6553 (RPI) is used to send RPL Information | |||
| instanceID and rank information. | instanceID and rank information. | |||
| As stated in Section 16.2 of [RFC6550] a RPL-aware-leaf node does | As stated in Section 16.2 of [RFC6550] an RPL-aware-leaf node does | |||
| not generally issue DIO messages; a leaf node accepts DIO messages | not generally issue DIO messages; a leaf node accepts DIO messages | |||
| from upstream. (When the inconsistency in routing occurs, a leaf | from upstream. (When the inconsistency in routing occurs, a leaf | |||
| node will generate a DIO with an infinite rank, to fix it). It may | node will generate a DIO with an infinite rank, to fix it). It may | |||
| issue DAO and DIS messages though it generally ignores DAO and DIS | issue DAO and DIS messages though it generally ignores DAO and DIS | |||
| messages. | messages. | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| RPL-aware-leaf (6LN) --> 6LR_i --> root(6LBR) | RPL-aware-leaf (6LN) --> 6LR_i --> root(6LBR) | |||
| For example, the communication flow would be: Node F --> Node E --> | For example, a communication flow could be: Node F --> Node E --> | |||
| Node B --> Node A root(6LBR) | Node B --> Node A root(6LBR) | |||
| 6LR_i (Node E and Node B) are the intermediate routers from source to | As it was mentioned in this document 6LRs, 6LBR are always full- | |||
| destination. In this case, "1 <= i >= n", n is the number of routers | fledged RPL routers. | |||
| (6LR) that the packet go through from source (6LN) to destination | ||||
| (6LBR). | ||||
| As it was mentioned In this document 6LRs, 6LBR are always full- | ||||
| fledge RPL routers. | ||||
| The 6LN (Node F) inserts the RPI header, and sends the packet to 6LR | The 6LN (Node F) inserts the RPI header, and sends the packet to 6LR | |||
| (Node E) which decrements the rank in RPI and sends the packet up. | (Node E) which decrements the rank in RPI and sends the packet up. | |||
| When the packet arrives at 6LBR (Node A), the RPI is removed and the | When the packet arrives at 6LBR (Node A), the RPI is removed and the | |||
| packet is processed. | packet is processed. | |||
| No IP-in-IP header is required. | No IP-in-IP header is required. | |||
| The RPI header can be removed by the 6LBR because the packet is | The RPI header can be removed by the 6LBR because the packet is | |||
| addressed to the 6LBR. The 6LN must know that it is communicating | addressed to the 6LBR. The 6LN must know that it is communicating | |||
| skipping to change at page 15, line 23 ¶ | skipping to change at page 15, line 23 ¶ | |||
| +-------------------+-----+-------+------+ | +-------------------+-----+-------+------+ | |||
| Storing: Summary of the use of headers from RPL-aware-leaf to root | Storing: Summary of the use of headers from RPL-aware-leaf to root | |||
| 6.1.2. SM: Example of Flow from root to RPL-aware-leaf | 6.1.2. SM: Example of Flow from root to RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| root (6LBR) --> 6LR_i --> RPL-aware-leaf (6LN) | root (6LBR) --> 6LR_i --> RPL-aware-leaf (6LN) | |||
| For example, the communication flow would be: Node A root(6LBR) --> | For example, a communication flow could be: Node A root(6LBR) --> | |||
| Node B --> Node D --> Node F | Node B --> Node D --> Node F | |||
| 6LR_i are the intermediate routers from source to destination. In | ||||
| this case, "1 <= i >= n", n is the number of routers (6LR) that the | ||||
| packet go through from source (6LBR) to destination (6LN). | ||||
| In this case the 6LBR inserts RPI header and sends the packet down, | In this case the 6LBR inserts RPI header and sends the packet down, | |||
| the 6LR is going to increment the rank in RPI (examines instanceID | the 6LR is going to increment the rank in RPI (it examines the | |||
| for multiple tables), the packet is processed in 6LN and RPI removed. | instanceID to identify the right forwarding table), the packet is | |||
| processed in the 6LN and the RPI removed. | ||||
| No IP-in-IP header is required. | No IP-in-IP header is required. | |||
| +-------------------+------+-------+------+ | +-------------------+------+-------+------+ | |||
| | Header | 6LBR | 6LR_i | 6LN | | | Header | 6LBR | 6LR_i | 6LN | | |||
| +-------------------+------+-------+------+ | +-------------------+------+-------+------+ | |||
| | Inserted headers | RPI | -- | -- | | | Inserted headers | RPI | -- | -- | | |||
| | Removed headers | -- | -- | RPI | | | Removed headers | -- | -- | RPI | | |||
| | Re-added headers | -- | -- | -- | | | Re-added headers | -- | -- | -- | | |||
| | Modified headers | -- | RPI | -- | | | Modified headers | -- | RPI | -- | | |||
| | Untouched headers | -- | -- | -- | | | Untouched headers | -- | -- | -- | | |||
| +-------------------+------+-------+------+ | +-------------------+------+-------+------+ | |||
| Storing: Summary of the use of headers from root to RPL-aware-leaf | Storing: Summary of the use of headers from root to RPL-aware-leaf | |||
| 6.1.3. SM: Example of Flow from root to not-RPL-aware-leaf | 6.1.3. SM: Example of Flow from root to not-RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| root (6LBR) --> 6LR_i --> not-RPL-aware-leaf (IPv6) | root (6LBR) --> 6LR_i --> not-RPL-aware-leaf (IPv6) | |||
| For example, the communication flow would be: Node A root(6LBR) --> | ||||
| Node B --> Node E --> Node G | ||||
| 6LR_i are the intermediate routers from source to destination. In | ||||
| this case, "1 <= i >= n", n is the number of routers (6LR) that the | ||||
| packet go through from source (6LBR) to destination (IPv6). | ||||
| For example, a communication flow could be: Node A root(6LBR) --> | ||||
| Node B --> Node E --> Node G | ||||
| As the RPI extension can be ignored by the not-RPL-aware leaf, this | As the RPI extension can be ignored by the not-RPL-aware leaf, this | |||
| situation is identical to the previous scenario. | situation is identical to the previous scenario. | |||
| +-------------------+------+-------+----------------+ | +-------------------+------+-------+----------------+ | |||
| | Header | 6LBR | 6LR_i | IPv6 | | | Header | 6LBR | 6LR_i | IPv6 | | |||
| +-------------------+------+-------+----------------+ | +-------------------+------+-------+----------------+ | |||
| | Inserted headers | RPI | -- | -- | | | Inserted headers | RPI | -- | -- | | |||
| | Removed headers | -- | -- | -- | | | Removed headers | -- | -- | -- | | |||
| | Re-added headers | -- | -- | -- | | | Re-added headers | -- | -- | -- | | |||
| | Modified headers | -- | RPI | -- | | | Modified headers | -- | RPI | -- | | |||
| skipping to change at page 16, line 33 ¶ | skipping to change at page 16, line 26 ¶ | |||
| Storing: Summary of the use of headers from root to not-RPL-aware- | Storing: Summary of the use of headers from root to not-RPL-aware- | |||
| leaf | leaf | |||
| 6.1.4. SM: Example of Flow from not-RPL-aware-leaf to root | 6.1.4. SM: Example of Flow from not-RPL-aware-leaf to root | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| not-RPL-aware-leaf (IPv6) --> 6LR_1 --> 6LR_i --> root (6LBR) | not-RPL-aware-leaf (IPv6) --> 6LR_1 --> 6LR_i --> root (6LBR) | |||
| For example, the communication flow would be: Node G --> Node E --> | For example, a communication flow could be: Node G --> Node E --> | |||
| Node B --> Node A root(6LBR) | Node B --> Node A root(6LBR) | |||
| 6LR_i are the intermediate routers from source to destination. In | ||||
| this case, "1 < i >= n", n is the number of routers (6LR) that the | ||||
| packet go through from source (IPv6) to destination (6LBR). For | ||||
| example, 6LR_1 (i=1) is the router that receives the packets from the | ||||
| IPv6 node (Node G). | ||||
| When the packet arrives from IPv6 node (Node G) to 6LR_1 (Node E), | When the packet arrives from IPv6 node (Node G) to 6LR_1 (Node E), | |||
| the 6LR_1 will insert a RPI header, encapsuladed in a IPv6-in-IPv6 | the 6LR_1 will insert a RPI header, encapsuladed in a IPv6-in-IPv6 | |||
| header. The IPv6-in-IPv6 header can be addressed to the next hop | header. The IPv6-in-IPv6 header can be addressed to the next hop | |||
| (Node B), or to the root (Node A). The root removes the header and | (Node B), or to the root (Node A). The root removes the header and | |||
| processes the packet. | processes the packet. | |||
| +------------+------+---------------+---------------+---------------+ | +------------+------+---------------+---------------+---------------+ | |||
| | Header | IPv6 | 6LR_1 | 6LR_i | 6LBR | | | Header | IPv6 | 6LR_1 | 6LR_i | 6LBR | | |||
| +------------+------+---------------+---------------+---------------+ | +------------+------+---------------+---------------+---------------+ | |||
| | Inserted | -- | IP-in-IP(RPI) | -- | -- | | | Inserted | -- | IP-in-IP(RPI) | -- | -- | | |||
| skipping to change at page 17, line 48 ¶ | skipping to change at page 17, line 30 ¶ | |||
| RPL information from RFC 6553 MAY go out to Internet as it will be | RPL information from RFC 6553 MAY go out to Internet as it will be | |||
| ignored by nodes which have not been configured to be RPI aware. | ignored by nodes which have not been configured to be RPI aware. | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| RPL-aware-leaf (6LN) --> 6LR_i --> root (6LBR) --> Internet | RPL-aware-leaf (6LN) --> 6LR_i --> root (6LBR) --> Internet | |||
| For example, the communication flow could be: Node F --> Node D --> | For example, the communication flow could be: Node F --> Node D --> | |||
| Node B --> Node A root(6LBR) --> Internet | Node B --> Node A root(6LBR) --> Internet | |||
| 6LR_i are the intermediate routers from source to destination. In | ||||
| this case, "1 <= i >= n", n is the number of routers (6LR) that the | ||||
| packet go through from source (6LN) to 6LBR. | ||||
| No IP-in-IP header is required. | No IP-in-IP header is required. | |||
| Note: In this use case we use a node as leaf, but this use case can | Note: In this use case we use a node as leaf, but this use case can | |||
| be also applicable to any RPL-node type (e.g. 6LR) | be also applicable to any RPL-node type (e.g. 6LR) | |||
| +-------------------+------+-------+------+----------------+ | +-------------------+------+-------+------+----------------+ | |||
| | Header | 6LN | 6LR_i | 6LBR | Internet | | | Header | 6LN | 6LR_i | 6LBR | Internet | | |||
| +-------------------+------+-------+------+----------------+ | +-------------------+------+-------+------+----------------+ | |||
| | Inserted headers | RPI | -- | -- | -- | | | Inserted headers | RPI | -- | -- | -- | | |||
| | Removed headers | -- | -- | -- | -- | | | Removed headers | -- | -- | -- | -- | | |||
| skipping to change at page 18, line 26 ¶ | skipping to change at page 18, line 4 ¶ | |||
| +-------------------+------+-------+------+----------------+ | +-------------------+------+-------+------+----------------+ | |||
| Storing: Summary of the use of headers from RPL-aware-leaf to | Storing: Summary of the use of headers from RPL-aware-leaf to | |||
| Internet | Internet | |||
| 6.2.2. SM: Example of Flow from Internet to RPL-aware-leaf | 6.2.2. SM: Example of Flow from Internet to RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| Internet --> root (6LBR) --> 6LR_i --> RPL-aware-leaf (6LN) | Internet --> root (6LBR) --> 6LR_i --> RPL-aware-leaf (6LN) | |||
| For example, a communication flow could be: Internet --> Node A | ||||
| For example, the communication flow could be: Internet --> Node A | ||||
| root(6LBR) --> Node B --> Node D --> Node F | root(6LBR) --> Node B --> Node D --> Node F | |||
| 6LR_i are the intermediate routers from source to destination. In | ||||
| this case, "1 <= i >= n", n is the number of routers (6LR) that the | ||||
| packet go through from 6LBR to destination(6LN). | ||||
| When the packet arrives from Internet to 6LBR the RPI header is added | When the packet arrives from Internet to 6LBR the RPI header is added | |||
| in a outer IPv6-in-IPv6 header and sent to 6LR, which modifies the | in a outer IPv6-in-IPv6 header and sent to 6LR, which modifies the | |||
| rank in the RPI. When the packet arrives at 6LN the RPI header is | rank in the RPI. When the packet arrives at 6LN the RPI header is | |||
| removed and the packet processed. | removed and the packet processed. | |||
| +----------+---------+--------------+---------------+---------------+ | +----------+---------+--------------+---------------+---------------+ | |||
| | Header | Interne | 6LBR | 6LR_i | 6LN | | | Header | Interne | 6LBR | 6LR_i | 6LN | | |||
| | | t | | | | | | | t | | | | | |||
| +----------+---------+--------------+---------------+---------------+ | +----------+---------+--------------+---------------+---------------+ | |||
| | Inserted | -- | IP-in- | -- | -- | | | Inserted | -- | IP-in- | -- | -- | | |||
| skipping to change at page 19, line 32 ¶ | skipping to change at page 18, line 39 ¶ | |||
| Storing: Summary of the use of headers from Internet to RPL-aware- | Storing: Summary of the use of headers from Internet to RPL-aware- | |||
| leaf | leaf | |||
| 6.2.3. SM: Example of Flow from not-RPL-aware-leaf to Internet | 6.2.3. SM: Example of Flow from not-RPL-aware-leaf to Internet | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| not-RPL-aware-leaf (IPv6) --> 6LR_1 --> 6LR_i -->root (6LBR) --> | not-RPL-aware-leaf (IPv6) --> 6LR_1 --> 6LR_i -->root (6LBR) --> | |||
| Internet | Internet | |||
| For example, the communication flow could be: Node G --> Node E --> | For example, a communication flow could be: Node G --> Node E --> | |||
| Node B --> Node A root(6LBR) --> Internet | Node B --> Node A root(6LBR) --> Internet | |||
| 6LR_i are the intermediate routers from source to destination. In | ||||
| this case, "1 < i >= n", n is the number of routers (6LR) that the | ||||
| packet go through from source(IPv6) to 6LBR. | ||||
| The 6LR_1 (i=1) node will add an IP-in-IP(RPI) header addressed | The 6LR_1 (i=1) node will add an IP-in-IP(RPI) header addressed | |||
| either to the root, or hop-by-hop such that the root can remove the | either to the root, or hop-by-hop such that the root can remove the | |||
| RPI header before passing upwards. | RPI header before passing upwards. (EDNOTE: we SHOULD recommend one | |||
| or the other) | ||||
| The originating node will ideally leave the IPv6 flow label as zero | The originating node will ideally leave the IPv6 flow label as zero | |||
| so that the packet can be better compressed through the LLN. The | so that the packet can be better compressed through the LLN. The | |||
| 6LBR will set the flow label of the packet to a non-zero value when | 6LBR will set the flow label of the packet to a non-zero value when | |||
| sending to the Internet. | sending to the Internet. | |||
| +---------+-----+-------------+-------------+-------------+---------+ | +---------+-----+-------------+-------------+-------------+---------+ | |||
| | Header | IPv | 6LR_1 | 6LR_i | 6LBR | Interne | | | Header | IPv | 6LR_1 | 6LR_i | 6LBR | Interne | | |||
| | | 6 | | [i=2,..,n]_ | | t | | | | 6 | | [i=2,..,n]_ | | t | | |||
| +---------+-----+-------------+-------------+-------------+---------+ | +---------+-----+-------------+-------------+-------------+---------+ | |||
| skipping to change at page 20, line 34 ¶ | skipping to change at page 19, line 34 ¶ | |||
| Storing: Summary of the use of headers from not-RPL-aware-leaf to | Storing: Summary of the use of headers from not-RPL-aware-leaf to | |||
| Internet | Internet | |||
| 6.2.4. SM: Example of Flow from Internet to non-RPL-aware-leaf | 6.2.4. SM: Example of Flow from Internet to non-RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| Internet --> root (6LBR) --> 6LR_i --> not-RPL-aware-leaf (IPv6) | Internet --> root (6LBR) --> 6LR_i --> not-RPL-aware-leaf (IPv6) | |||
| For example, the communication flow could be: Internet --> Node A | For example, a communication flow could be: Internet --> Node A | |||
| root(6LBR) --> Node B --> Node E --> Node G | root(6LBR) --> Node B --> Node E --> Node G | |||
| 6LR_i are the intermediate routers from source to destination. In | ||||
| this case, "1 < i >= n", n is the number of routers (6LR) that the | ||||
| packet go through from 6LBR to not-RPL-aware-leaf (IPv6). 6LR_i | ||||
| updates the rank in the RPI. | ||||
| The 6LBR will have to add an RPI header within an IP-in-IP header. | The 6LBR will have to add an RPI header within an IP-in-IP header. | |||
| The IP-in-IP can be addressed to the not-RPL-aware-leaf, leaving the | The IP-in-IP is addressed to the not-RPL-aware-leaf, leaving the RPI | |||
| RPI inside. | inside. | |||
| Note that there is a requirement that the final node be able to | ||||
| remove one or more IPIP headers which are all addressed to it. | ||||
| (EDNOTE: this should go into [I-D.ietf-6man-rfc6434-bis]) | ||||
| The 6LBR MAY set the flow label on the inner IP-in-IP header to zero | The 6LBR MAY set the flow label on the inner IP-in-IP header to zero | |||
| in order to aid in compression. | in order to aid in compression. | |||
| +-----------+----------+---------------+---------------+------------+ | +-----------+----------+---------------+---------------+------------+ | |||
| | Header | Internet | 6LBR | 6LR_i | IPv6 | | | Header | Internet | 6LBR | 6LR_i | IPv6 | | |||
| +-----------+----------+---------------+---------------+------------+ | +-----------+----------+---------------+---------------+------------+ | |||
| | Inserted | -- | IP-in-IP(RPI) | -- | -- | | | Inserted | -- | IP-in-IP(RPI) | -- | -- | | |||
| | headers | | | | | | | headers | | | | | | |||
| | Removed | -- | -- | -- | -- | | | Removed | -- | -- | -- | -- | | |||
| skipping to change at page 21, line 40 ¶ | skipping to change at page 20, line 40 ¶ | |||
| RPL-aware-leaf to not-RPL-aware-leaf | RPL-aware-leaf to not-RPL-aware-leaf | |||
| not-RPL-aware-leaf to RPL-aware-leaf | not-RPL-aware-leaf to RPL-aware-leaf | |||
| not-RPL-aware-leaf to not-RPL-aware-leaf | not-RPL-aware-leaf to not-RPL-aware-leaf | |||
| 6.3.1. SM: Example of Flow from RPL-aware-leaf to RPL-aware-leaf | 6.3.1. SM: Example of Flow from RPL-aware-leaf to RPL-aware-leaf | |||
| In [RFC6550] RPL allows a simple one-hop optimization for both | In [RFC6550] RPL allows a simple one-hop optimization for both | |||
| storing and non-storing networks. A node may send a packet destined | storing and non-storing networks. A node may send a packet destined | |||
| to a one-hop neighbor directly to that node. Section 9 in [RFC6550]. | to a one-hop neighbor directly to that node. See section 9 in | |||
| [RFC6550]. | ||||
| In this case the flow comprises: | When the nodes are not directly connected, then in storing mode, the | |||
| flow comprises: | ||||
| 6LN --> 6LR_ia --> common parent (6LR_x) --> 6LR_id --> 6LN | 6LN --> 6LR_ia --> common parent (6LR_x) --> 6LR_id --> 6LN | |||
| For example, the communication flow could be: Node F --> Node D --> | For example, a communication flow could be: Node F --> Node D --> | |||
| Node B --> Node E --> Node H | Node B --> Node E --> Node H | |||
| 6LR_ia (Node D) are the intermediate routers from source to the | 6LR_ia (Node D) are the intermediate routers from source to the | |||
| common parent (6LR_x) (Node B) In this case, "1 <= ia >= n", n is the | common parent (6LR_x) (Node B) In this case, "1 <= ia >= n", n is the | |||
| number of routers (6LR) that the packet go through from 6LN (Node F) | number of routers (6LR) that the packet go through from 6LN (Node F) | |||
| to the common parent (6LR_x). | to the common parent (6LR_x). | |||
| 6LR_id (Node E) are the intermediate routers from the common parent | 6LR_id (Node E) are the intermediate routers from the common parent | |||
| (6LR_x) (Node B) to destination 6LN (Node H). In this case, "1 <= id | (6LR_x) (Node B) to destination 6LN (Node H). In this case, "1 <= id | |||
| >= m", m is the number of routers (6LR) that the packet go through | >= m", m is the number of routers (6LR) that the packet go through | |||
| from the common parent (6LR_x) to destination 6LN. | from the common parent (6LR_x) to destination 6LN. | |||
| This case is assumed in the same RPL Domain. In the common parent | It is assume that the two nodes are in the same RPL Domain (that they | |||
| (Node B), the direction of RPI is changed (from increasing to | share the same DODAG root). At the common parent (Node B), the | |||
| decreasing the rank). | direction of RPI is changed (from increasing to decreasing the rank). | |||
| While the 6LR nodes will update the RPI, no node needs to add or | While the 6LR nodes will update the RPI, no node needs to add or | |||
| remove the RPI, so no IP-in-IP headers are necessary. This may be | remove the RPI, so no IP-in-IP headers are necessary. This may be | |||
| done regardless of where the destination is, as the included RPI will | done regardless of where the destination is, as the included RPI will | |||
| be ignored by the receiver. | be ignored by the receiver. | |||
| +---------------+--------+--------+---------------+--------+--------+ | +---------------+--------+--------+---------------+--------+--------+ | |||
| | Header | 6LN | 6LR_ia | 6LR_x (common | 6LR_id | 6LN | | | Header | 6LN | 6LR_ia | 6LR_x (common | 6LR_id | 6LN | | |||
| | | src | | parent) | | dst | | | | src | | parent) | | dst | | |||
| +---------------+--------+--------+---------------+--------+--------+ | +---------------+--------+--------+---------------+--------+--------+ | |||
| skipping to change at page 22, line 45 ¶ | skipping to change at page 21, line 47 ¶ | |||
| Storing: Summary of the use of headers for RPL-aware-leaf to RPL- | Storing: Summary of the use of headers for RPL-aware-leaf to RPL- | |||
| aware-leaf | aware-leaf | |||
| 6.3.2. SM: Example of Flow from RPL-aware-leaf to non-RPL-aware-leaf | 6.3.2. SM: Example of Flow from RPL-aware-leaf to non-RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| 6LN --> 6LR_ia --> common parent (6LR_x) --> 6LR_id --> not-RPL-aware | 6LN --> 6LR_ia --> common parent (6LR_x) --> 6LR_id --> not-RPL-aware | |||
| 6LN (IPv6) | 6LN (IPv6) | |||
| For example, the communication flow could be: Node F --> Node D --> | For example, a communication flow could be: Node F --> Node D --> | |||
| Node B --> Node E --> Node G | Node B --> Node E --> Node G | |||
| 6LR_ia are the intermediate routers from source (6LN) to the common | 6LR_ia are the intermediate routers from source (6LN) to the common | |||
| parent (6LR_x) In this case, "1 <= ia >= n", n is the number of | parent (6LR_x) In this case, "1 <= ia >= n", n is the number of | |||
| routers (6LR) that the packet go through from 6LN to the common | routers (6LR) that the packet go through from 6LN to the common | |||
| parent (6LR_x). | parent (6LR_x). | |||
| 6LR_id (Node E) are the intermediate routers from the common parent | 6LR_id (Node E) are the intermediate routers from the common parent | |||
| (6LR_x) (Node B) to destination not-RPL-aware 6LN (IPv6) (Node G). | (6LR_x) (Node B) to destination not-RPL-aware 6LN (IPv6) (Node G). | |||
| In this case, "1 <= id >= m", m is the number of routers (6LR) that | In this case, "1 <= id >= m", m is the number of routers (6LR) that | |||
| skipping to change at page 23, line 39 ¶ | skipping to change at page 22, line 41 ¶ | |||
| Storing: Summary of the use of headers for RPL-aware-leaf to non-RPL- | Storing: Summary of the use of headers for RPL-aware-leaf to non-RPL- | |||
| aware-leaf | aware-leaf | |||
| 6.3.3. SM: Example of Flow from not-RPL-aware-leaf to RPL-aware-leaf | 6.3.3. SM: Example of Flow from not-RPL-aware-leaf to RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| not-RPL-aware 6LN (IPv6) --> 6LR_ia --> common parent (6LR_x) --> | not-RPL-aware 6LN (IPv6) --> 6LR_ia --> common parent (6LR_x) --> | |||
| 6LR_id --> 6LN | 6LR_id --> 6LN | |||
| For example, the communication flow could be: Node G --> Node E --> | For example, a communication flow could be: Node G --> Node E --> | |||
| Node B --> Node D --> Node F | Node B --> Node D --> Node F | |||
| 6LR_ia (Node E) are the intermediate routers from source (not-RPL- | 6LR_ia (Node E) are the intermediate routers from source (not-RPL- | |||
| aware 6LN (IPv6)) (Node G) to the common parent (6LR_x) (Node B) In | aware 6LN (IPv6)) (Node G) to the common parent (6LR_x) (Node B). In | |||
| this case, "1 <= ia >= n", n is the number of routers (6LR) that the | this case, "1 <= ia >= n", n is the number of routers (6LR) that the | |||
| packet go through from source to the common parent. | packet go through from source to the common parent. | |||
| 6LR_id (Node D) are the intermediate routers from the common parent | 6LR_id (Node D) are the intermediate routers from the common parent | |||
| (6LR_x) (Node B) to destination 6LN (Node F). In this case, "1 <= id | (6LR_x) (Node B) to destination 6LN (Node F). In this case, "1 <= id | |||
| >= m", m is the number of routers (6LR) that the packet go through | >= m", m is the number of routers (6LR) that the packet go through | |||
| from the common parent (6LR_x) to destination 6LN. | from the common parent (6LR_x) to destination 6LN. | |||
| The 6LR_ia (ia=1) (Node E) receives the packet from the the IPv6 node | The 6LR_ia (ia=1) (Node E) receives the packet from the the IPv6 node | |||
| (Node G) and inserts and the RPI header encapsulated in IPv6-in-IPv6 | (Node G) and inserts and the RPI header encapsulated in IPv6-in-IPv6 | |||
| skipping to change at page 24, line 41 ¶ | skipping to change at page 23, line 43 ¶ | |||
| +--------+------+------------+------------+------------+------------+ | +--------+------+------------+------------+------------+------------+ | |||
| Storing: Summary of the use of headers from not-RPL-aware-leaf to | Storing: Summary of the use of headers from not-RPL-aware-leaf to | |||
| RPL-aware-leaf | RPL-aware-leaf | |||
| 6.3.4. SM: Example of Flow from not-RPL-aware-leaf to not-RPL-aware- | 6.3.4. SM: Example of Flow from not-RPL-aware-leaf to not-RPL-aware- | |||
| leaf | leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| not-RPL-aware 6LN (IPv6 src)--> 6LR_1--> 6LR_ia --> root (6LBR) --> | not-RPL-aware 6LN (IPv6 src)--> 6LR_1--> 6LR_ia --> 6LR_id --> not- | |||
| 6LR_id --> not-RPL-aware 6LN (IPv6 dst) | RPL-aware 6LN (IPv6 dst) | |||
| For example, the communication flow could be: Node G --> Node E --> | For example, a communication flow could be: Node G --> Node E --> | |||
| Node B --> Node A (root) --> Node C --> Node J | Node B --> Node A (root) --> Node C --> Node J | |||
| Internet 6LR_ia (Node E and Node B) are the intermediate routers from | Internal nodes 6LR_ia (e.g: Node E or Node B) are the intermediate | |||
| source (not-RPL-aware 6LN (IPv6 src))(Node G) to the root (6LBR) | routers from the not-RPL-aware source (Node G) to the root (6LBR) | |||
| (Node A) In this case, "1 < ia >= n", n is the number of routers | (Node A). In this case, "1 < ia >= n", n is the number of routers | |||
| (6LR) that the packet go through from IPv6 src to the root. | (6LR) that the packet go through from IPv6 src to the root. | |||
| 6LR_id (C) are the intermediate routers from the root (Node A) to | 6LR_id (C) are the intermediate routers from the root (Node A) to the | |||
| destination (IPv6 dst) (Node J). In this case, "1 <= id >= m", m is | destination Node J. In this case, "1 <= id >= m", m is the number of | |||
| the number of routers (6LR) that the packet go through from the root | routers (6LR) that the packet go through from the root to destination | |||
| to destination (IPv6 dst). | (IPv6 dst). | |||
| This flow is identical to Section 6.3.3 | Note that this flow is identical to Section 6.3.3, except for where | |||
| the IPIP header is inserted. | ||||
| The 6LR_1 (Node E) receives the packet from the the IPv6 node (Node | The 6LR_1 (Node E) receives the packet from the the IPv6 node (Node | |||
| G) and inserts the RPI header (RPIa) encapsulated in IPv6-in-IPv6 | G) and inserts the RPI header (RPIa), encapsulated in an IPv6-in-IPv6 | |||
| header. The IPv6-in-IPv6 header is addressed to the 6LBR. The 6LBR | header. The IPv6-in-IPv6 header is addressed to the final | |||
| remove the IPv6-in-IPv6 header and insert another one (RPIb) with | destination. | |||
| destination to 6LR_m (Node C) node. | ||||
| One of the side-effects of inserting IP-in-IP RPI header at 6LR_1, is | ||||
| that now all the packets will go through the 6LBR, even though there | ||||
| exists a shorter P2P path to the destination 6LN in storing mode. | ||||
| One possible solution is given by the work in | ||||
| [I-D.ietf-roll-dao-projection]. Once we have route projection, the | ||||
| root can find that this traffic deserves optimization (based on | ||||
| volume and path length, or additional knowledge on that particular | ||||
| flow) and project a DAO into 6LR_1. | ||||
| +-------+-----+-----------+-----------+-----------+-----------+-----+ | +----------+-----+-------------+--------------+--------------+------+ | |||
| | Heade | IPv | 6LR_1 | 6LR_ia | 6LBR | 6LR_m | IPv | | | Header | IPv | 6LR_1 | 6LR_ia | 6LR_m | IPv6 | | |||
| | r | 6 | | | | | 6 | | | | 6 | | | | dst | | |||
| | | src | | | | | dst | | | | src | | | | | | |||
| +-------+-----+-----------+-----------+-----------+-----------+-----+ | +----------+-----+-------------+--------------+--------------+------+ | |||
| | Inser | -- | IP-in- | -- | IP-in- | -- | -- | | | Inserted | -- | IP-in- | -- | -- | -- | | |||
| | ted h | | IP(RPI_a) | | IP(RPI_b) | | | | | headers | | IP(RPI) | | | | | |||
| | eader | | | | | | | | | Removed | -- | -- | -- | -- | -- | | |||
| | s | | | | | | | | | headers | | | | | | | |||
| | Remov | -- | -- | -- | -- | -- | -- | | | Re-added | -- | -- | -- | -- | -- | | |||
| | ed he | | | | | | | | | headers | | | | | | | |||
| | aders | | | | | | | | | Modified | -- | -- | IP-in- | IP-in- | -- | | |||
| | Re- | -- | -- | -- | -- | IP-in- | -- | | | headers | | | IP(RPI) | IP(RPI) | | | |||
| | added | | | | | IP(RPI_b) | | | | Untouche | -- | -- | -- | -- | -- | | |||
| | heade | | | | | | | | | d | | | | | | | |||
| | rs | | | | | | | | | headers | | | | | | | |||
| | Modif | -- | -- | IP-in- | -- | IP-in- | -- | | +----------+-----+-------------+--------------+--------------+------+ | |||
| | ied h | | | IP(RPI_a) | | IP(RPI_b) | | | ||||
| | eader | | | | | | | | ||||
| | s | | | | | | | | ||||
| | Untou | -- | -- | -- | -- | -- | -- | | ||||
| | ched | | | | | | | | ||||
| | heade | | | | | | | | ||||
| | rs | | | | | | | | ||||
| +-------+-----+-----------+-----------+-----------+-----------+-----+ | ||||
| Storing: Summary of the use of headers from not-RPL-aware-leaf to | Storing: Summary of the use of headers from not-RPL-aware-leaf to | |||
| non-RPL-aware-leaf | non-RPL-aware-leaf | |||
| 7. Non Storing mode | 7. Non Storing mode | |||
| In Non Storing Mode (Non SM) (fully source routed), the 6LBR (DODAG | In Non Storing Mode (Non SM) (fully source routed), the 6LBR (DODAG | |||
| root) has complete knowledge about the connectivity of all DODAG | root) has complete knowledge about the connectivity of all DODAG | |||
| nodes, and all traffic flows through the root node. Thus, there is | nodes, and all traffic flows through the root node. Thus, there is | |||
| no need for all nodes to know about the existence of non-RPL aware | no need for all nodes to know about the existence of non-RPL aware | |||
| nodes. Only the 6LBR needs to change when there are non-RPL aware | nodes. Only the 6LBR needs to act if compensation is necessary for | |||
| nodes. | non-RPL aware receivers. | |||
| 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 RPI, RH3 and IP-in-IP | following scenarios, and indicates when the RPI, RH3 and IP-in-IP | |||
| header must be inserted. There are these possible situations: | header must be inserted. There are these possible situations: | |||
| destination address possible (indicated by "dst"), to a 6LR, to a 6LN | destination address possible (indicated by "dst"), to a 6LR, to a 6LN | |||
| or to the root. In cases where no IP-in-IP header is needed, the | or to the root. In cases where no IP-in-IP header is needed, the | |||
| column is left blank. | column is left blank. | |||
| The leaf can be a router 6LR or a host, both indicated as 6LN | The leaf can be a router 6LR or a host, both indicated as 6LN | |||
| (Figure 3). | (Figure 3). | |||
| +-----------------+--------------+-----+-----+----------+----------+ | +-----------------+--------------+-----+-----+----------+----------+ | |||
| | Interaction | Use Case | RPI | RH3 | IP-in-IP | IP-in-IP | | | Interaction | Use Case | RPI | RH3 | IP-in-IP | IP-in-IP | | |||
| | between | | | | | dst | | | between | | | | | dst | | |||
| +-----------------+--------------+-----+-----+----------+----------+ | +-----------------+--------------+-----+-----+----------+----------+ | |||
| | | Raf to root | Yes | No | No | -- | | | | Raf to root | Yes | No | No | -- | | |||
| + +--------------+-----+-----+----------+----------+ | + +--------------+-----+-----+----------+----------+ | |||
| | Leaf - Root | root to Raf | Opt | Yes | No | -- | | | Leaf - Root | root to Raf | Opt | Yes | No | -- | | |||
| + +--------------+-----+-----+----------+----------+ | + +--------------+-----+-----+----------+----------+ | |||
| | | root to ~Raf | No | Yes | Yes | 6LR | | | | root to ~Raf |no(1)| Yes | Yes | 6LR | | |||
| + +--------------+-----+-----+----------+----------+ | + +--------------+-----+-----+----------+----------+ | |||
| | | ~Raf to root | Yes | No | Yes | root | | | | ~Raf to root | Yes | No | Yes | root | | |||
| +-----------------+--------------+-----+-----+----------+----------+ | +-----------------+--------------+-----+-----+----------+----------+ | |||
| | | Raf to Int | Yes | No | Yes | root | | | | Raf to Int | Yes | No | Yes | root | | |||
| + +--------------+-----+-----+----------+----------+ | + +--------------+-----+-----+----------+----------+ | |||
| | Leaf - Internet | Int to Raf | Opt | Yes | Yes | dst | | | Leaf - Internet | Int to Raf |no(1)| Yes | Yes | dst | | |||
| + +--------------+-----+-----+----------+----------+ | + +--------------+-----+-----+----------+----------+ | |||
| | | ~Raf to Int | Yes | No | Yes | root | | | | ~Raf to Int | Yes | No | Yes | root | | |||
| + +--------------+-----+-----+----------+----------+ | + +--------------+-----+-----+----------+----------+ | |||
| | | Int to ~Raf | Opt | Yes | Yes | 6LR | | | | Int to ~Raf |no(1)| Yes | Yes | 6LR | | |||
| +-----------------+--------------+-----+-----+----------+----------+ | +-----------------+--------------+-----+-----+----------+----------+ | |||
| | | 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 | | |||
| +-----------------+--------------+-----+-----+----------+----------+ | +-----------------+--------------+-----+-----+----------+----------+ | |||
| (1)-6tisch networks may need the RPI information. | ||||
| Figure 8: Headers needed in Non-Storing mode: RPI, RH3, IP-in-IP | Figure 8: 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 | |||
| not-RPL-aware-leaf to root | not-RPL-aware-leaf to root | |||
| root to not-RPL-aware-leaf | root to not-RPL-aware-leaf | |||
| 7.1.1. Non-SM: Example of Flow from RPL-aware-leaf to root | 7.1.1. Non-SM: Example of Flow from RPL-aware-leaf to root | |||
| In non-storing mode the leaf node uses default routing to send | In non-storing mode the leaf node uses default routing to send | |||
| traffic to the root. The RPI header must be included to avoid/detect | traffic to the root. The RPI header must be included to avoid/detect | |||
| loops. | loops. | |||
| RPL-aware-leaf (6LN) --> 6LR_i --> root(6LBR) | RPL-aware-leaf (6LN) --> 6LR_i --> root(6LBR) | |||
| For example, the communication flow could be: Node F --> Node D --> | For example, a communication flow could be: Node F --> Node D --> | |||
| Node B --> Node A (root) | Node B --> Node A (root) | |||
| 6LR_i are the intermediate routers from source to destination. In | 6LR_i are the intermediate routers from source to destination. In | |||
| this case, "1 <= i >= n", n is the number of routers (6LR) that the | this case, "1 <= i >= n", n is the number of routers (6LR) that the | |||
| packet go through from source (6LN) to destination (6LBR). | packet go through from source (6LN) to destination (6LBR). | |||
| This situation is the same case as storing mode. | This situation is the same case as storing mode. | |||
| +-------------------+-----+-------+------+ | +-------------------+-----+-------+------+ | |||
| | Header | 6LN | 6LR_i | 6LBR | | | Header | 6LN | 6LR_i | 6LBR | | |||
| skipping to change at page 28, line 41 ¶ | skipping to change at page 26, line 48 ¶ | |||
| Non Storing: Summary of the use of headers from RPL-aware-leaf to | Non Storing: Summary of the use of headers from RPL-aware-leaf to | |||
| root | root | |||
| 7.1.2. on-SM: Example of Flow from root to RPL-aware-leaf | 7.1.2. on-SM: Example of Flow from root to RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| root (6LBR) --> 6LR_i --> RPL-aware-leaf (6LN) | root (6LBR) --> 6LR_i --> RPL-aware-leaf (6LN) | |||
| For example, the communication flow could be: Node A (root) --> Node | For example, a communication flow could be: Node A (root) --> Node B | |||
| B --> Node D --> Node F | --> Node D --> Node F | |||
| 6LR_i are the intermediate routers from source to destination. In | 6LR_i are the intermediate routers from source to destination. In | |||
| this case, "1 <= i >= n", n is the number of routers (6LR) that the | this case, "1 <= i >= n", n is the number of routers (6LR) that the | |||
| packet go through from source (6LBR) to destination (6LN). | packet go through from source (6LBR) to destination (6LN). | |||
| The 6LBR will insert an RH3, and may optionally insert an RPI header. | The 6LBR will insert an RH3, and may optionally insert an RPI header. | |||
| No IP-in-IP header is necessary as the traffic originates with an RPL | No IP-in-IP header is necessary as the traffic originates with an RPL | |||
| aware node, the 6LBR. The destination is known to RPL-aware because, | aware node, the 6LBR. The destination is known to RPL-aware because, | |||
| the root knows the whole topology in non-storing mode. | the root knows the whole topology in non-storing mode. | |||
| +-------------------+-----------------+-------+----------+ | +-------------------+-----------------+-------+----------+ | |||
| skipping to change at page 29, line 24 ¶ | skipping to change at page 27, line 32 ¶ | |||
| Non Storing: Summary of the use of headers from root to RPL-aware- | Non Storing: Summary of the use of headers from root to RPL-aware- | |||
| leaf | leaf | |||
| 7.1.3. Non-SM: Example of Flow from root to not-RPL-aware-leaf | 7.1.3. Non-SM: Example of Flow from root to not-RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| root (6LBR) --> 6LR_i --> not-RPL-aware-leaf (IPv6) | root (6LBR) --> 6LR_i --> not-RPL-aware-leaf (IPv6) | |||
| For example, the communication flow could be: Node A (root) --> Node | For example, a communication flow could be: Node A (root) --> Node B | |||
| B --> Node E --> Node G | --> Node E --> Node G | |||
| 6LR_i are the intermediate routers from source to destination. In | 6LR_i are the intermediate routers from source to destination. In | |||
| this case, "1 <= i >= n", n is the number of routers (6LR) that the | this case, "1 <= i >= n", n is the number of routers (6LR) that the | |||
| packet go through from source (6LBR) to destination (IPv6). | packet go through from source (6LBR) to destination (IPv6). | |||
| In 6LBR the RH3 is added, modified in each intermediate 6LR (6LR_1 | In 6LBR the RH3 is added, it is modified at each intermediate 6LR | |||
| and so on) and it is fully consumed in the last 6LR (6LR_n), but left | (6LR_1 and so on) and it is fully consumed in the last 6LR (6LR_n), | |||
| there. If RPI is left present, the IPv6 node which does not | but left there. If RPI is left present, the IPv6 node which does not | |||
| understand it will ignore it (following 2460bis), thus encapsulation | understand it will ignore it (following 2460bis), thus encapsulation | |||
| is not necesary. Due the complete knowledge of the topology at the | is not necesary. Due the complete knowledge of the topology at the | |||
| root, the 6LBR is able to address the IP-in-IP header to the last | root, the 6LBR may optionally address the IP-in-IP header to the last | |||
| 6LR. | 6LR, such that it is removed prior to the IPv6 node. | |||
| +---------------+-------------+---------------+--------------+------+ | +---------------+-------------+---------------+--------------+------+ | |||
| | Header | 6LBR | 6LR_i(i=1) | 6LR_n(i=n) | IPv6 | | | Header | 6LBR | 6LR_i(i=1) | 6LR_n(i=n) | IPv6 | | |||
| +---------------+-------------+---------------+--------------+------+ | +---------------+-------------+---------------+--------------+------+ | |||
| | Inserted | (opt: RPI), | -- | -- | -- | | | Inserted | (opt: RPI), | -- | -- | -- | | |||
| | headers | RH3 | | | | | | headers | RH3 | | | | | |||
| | Removed | -- | RH3 | -- | -- | | | Removed | -- | RH3 | -- | -- | | |||
| | headers | | | | | | | headers | | | | | | |||
| | Re-added | -- | -- | -- | -- | | | Re-added | -- | -- | -- | -- | | |||
| | headers | | | | | | | headers | | | | | | |||
| skipping to change at page 30, line 29 ¶ | skipping to change at page 28, line 29 ¶ | |||
| Non Storing: Summary of the use of headers from root to not-RPL- | Non Storing: Summary of the use of headers from root to not-RPL- | |||
| aware-leaf | aware-leaf | |||
| 7.1.4. Non-SM: Example of Flow from not-RPL-aware-leaf to root | 7.1.4. Non-SM: Example of Flow from not-RPL-aware-leaf to root | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| not-RPL-aware-leaf (IPv6) --> 6LR_1 --> 6LR_i --> root (6LBR) | not-RPL-aware-leaf (IPv6) --> 6LR_1 --> 6LR_i --> root (6LBR) | |||
| For example, the communication flow could be: Node G --> Node E --> | For example, a communication flow could be: Node G --> Node E --> | |||
| Node B --> Node A (root) | Node B --> Node A (root) | |||
| 6LR_i are the intermediate routers from source to destination. In | 6LR_i are the intermediate routers from source to destination. In | |||
| this case, "1 < i >= n", n is the number of routers (6LR) that the | this case, "1 < i >= n", n is the number of routers (6LR) that the | |||
| packet go through from source (IPv6) to destination (6LBR). For | packet go through from source (IPv6) to destination (6LBR). For | |||
| example, 6LR_1 (i=1) is the router that receives the packets from the | example, 6LR_1 (i=1) is the router that receives the packets from the | |||
| IPv6 node. | IPv6 node. | |||
| In this case the RPI is added by the first 6LR (6LR1) (Node E), | In this case the RPI is added by the first 6LR (6LR1) (Node E), | |||
| encapsulated in an IP-in-IP header, and is modified in the followings | encapsulated in an IP-in-IP header, and is modified in the following | |||
| 6LRs. The RPI and entire packet is consumed by the root. | 6LRs. The RPI and entire packet is consumed by the root. | |||
| +------------+------+---------------+---------------+---------------+ | +------------+------+---------------+---------------+---------------+ | |||
| | Header | IPv6 | 6LR_1 | 6LR_i | 6LBR | | | Header | IPv6 | 6LR_1 | 6LR_i | 6LBR | | |||
| +------------+------+---------------+---------------+---------------+ | +------------+------+---------------+---------------+---------------+ | |||
| | Inserted | -- | IP-in-IP(RPI) | -- | -- | | | Inserted | -- | IP-in-IP(RPI) | -- | -- | | |||
| | headers | | | | | | | headers | | | | | | |||
| | Removed | -- | -- | -- | IP-in-IP(RPI) | | | Removed | -- | -- | -- | IP-in-IP(RPI) | | |||
| | headers | | | | | | | headers | | | | | | |||
| | Re-added | -- | -- | -- | -- | | | Re-added | -- | -- | -- | -- | | |||
| skipping to change at page 31, line 25 ¶ | skipping to change at page 29, line 25 ¶ | |||
| | headers | | | | | | | headers | | | | | | |||
| | Untouched | -- | -- | -- | -- | | | Untouched | -- | -- | -- | -- | | |||
| | headers | | | | | | | headers | | | | | | |||
| +------------+------+---------------+---------------+---------------+ | +------------+------+---------------+---------------+---------------+ | |||
| Non Storing: Summary of the use of headers from not-RPL-aware-leaf to | Non Storing: Summary of the use of headers from not-RPL-aware-leaf to | |||
| root | root | |||
| 7.2. Non-Storing Mode: Interaction between Leaf and Internet | 7.2. Non-Storing Mode: Interaction between Leaf and Internet | |||
| In this section we are going to describe the communication flow in | This section will describe the communication flow in Non Storing Mode | |||
| Non Storing Mode (Non-SM) between, | (Non-SM) between: | |||
| RPL-aware-leaf to Internet | RPL-aware-leaf to Internet | |||
| Internet to RPL-aware-leaf | Internet to RPL-aware-leaf | |||
| not-RPL-aware-leaf to Internet | not-RPL-aware-leaf to Internet | |||
| Internet to not-RPL-aware-leaf | Internet to not-RPL-aware-leaf | |||
| 7.2.1. Non-SM: Example of Flow from RPL-aware-leaf to Internet | 7.2.1. Non-SM: Example of Flow from RPL-aware-leaf to Internet | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| RPL-aware-leaf (6LN) --> 6LR_i --> root (6LBR) --> Internet | RPL-aware-leaf (6LN) --> 6LR_i --> root (6LBR) --> Internet | |||
| For example, the communication flow could be: Node F --> Node D --> | For example, a communication flow could be: Node F --> Node D --> | |||
| Node B --> Node A --> Internet | Node B --> Node A --> Internet | |||
| 6LR_i are the intermediate routers from source to destination. In | 6LR_i are the intermediate routers from source to destination. In | |||
| this case, "1 <= i >= n", n is the number of routers (6LR) that the | this case, "1 <= i >= n", n is the number of routers (6LR) that the | |||
| packet go through from source (6LN) to 6LBR. | packet go through from source (6LN) to 6LBR. | |||
| This case is identical to storing-mode case. | This case is identical to storing-mode case. | |||
| The IPv6 flow label should be set to zero to aid in compression, and | The IPv6 flow label should be set to zero to aid in compression, and | |||
| the 6LBR will set it to a non-zero value when sending towards the | the 6LBR will set it to a non-zero value when sending towards the | |||
| skipping to change at page 32, line 28 ¶ | skipping to change at page 30, line 28 ¶ | |||
| Non Storing: Summary of the use of headers from RPL-aware-leaf to | Non Storing: Summary of the use of headers from RPL-aware-leaf to | |||
| Internet | Internet | |||
| 7.2.2. Non-SM: Example of Flow from Internet to RPL-aware-leaf | 7.2.2. Non-SM: Example of Flow from Internet to RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| Internet --> root (6LBR) --> 6LR_i --> RPL-aware-leaf (6LN) | Internet --> root (6LBR) --> 6LR_i --> RPL-aware-leaf (6LN) | |||
| For example, the communication flow could be: Internet --> Node A | For example, a communication flow could be: Internet --> Node A | |||
| (root) --> Node B --> Node D --> Node F | (root) --> Node B --> Node D --> Node F | |||
| 6LR_i are the intermediate routers from source to destination. In | 6LR_i are the intermediate routers from source to destination. In | |||
| this case, "1 <= i >= n", n is the number of routers (6LR) that the | this case, "1 <= i >= n", n is the number of routers (6LR) that the | |||
| packet go through from 6LBR to destination(6LN). | packet go through from 6LBR to destination(6LN). | |||
| The 6LBR must add an RH3 header. As the 6LBR will know the path and | The 6LBR must add an RH3 header. As the 6LBR will know the path and | |||
| address of the target node, it can address the IP-in-IP header to | address of the target node, it can address the IP-in-IP header to | |||
| that node. The 6LBR will zero the flow label upon entry in order to | that node. The 6LBR will zero the flow label upon entry in order to | |||
| aid compression. | aid compression. | |||
| The RPI may be added or not, it is optional. | The RPI may be added or not as required by networks such as 6tisch. | |||
| The RPI is unnecessary for loop detection. | ||||
| +--------+-------+----------------+----------------+----------------+ | +----------+---------+--------------+---------------+---------------+ | |||
| | Header | Inter | 6LBR | 6LR_i | 6LN | | | Header | Interne | 6LBR | 6LR_i | 6LN | | |||
| | | net | | | | | | | t | | | | | |||
| +--------+-------+----------------+----------------+----------------+ | +----------+---------+--------------+---------------+---------------+ | |||
| | Insert | -- | IP-in-IP(RH3,o | -- | -- | | | Inserted | -- | IP-in-IP (RH | -- | -- | | |||
| | ed hea | | pt:RPI) | | | | | headers | | 3,opt:RPI) | | | | |||
| | ders | | | | | | | Removed | -- | -- | -- | IP-in-IP | | |||
| | Remove | -- | -- | -- | IP-in-IP(RH3,o | | | headers | | | | (RH3,opt:RPI) | | |||
| | d head | | | | pt:RPI) | | | Re-added | -- | -- | -- | -- | | |||
| | ers | | | | | | | headers | | | | | | |||
| | Re- | -- | -- | -- | -- | | | Modified | -- | -- | IP-in-IP | -- | | |||
| | added | | | | | | | headers | | | (RH3,opt:RPI) | | | |||
| | header | | | | | | | Untouche | -- | -- | -- | -- | | |||
| | s | | | | | | | d | | | | | | |||
| | Modifi | -- | -- | IP-in-IP(RH3,o | -- | | | headers | | | | | | |||
| | ed hea | | | pt:RPI) | | | +----------+---------+--------------+---------------+---------------+ | |||
| | ders | | | | | | ||||
| | Untouc | -- | -- | -- | -- | | ||||
| | hed he | | | | | | ||||
| | aders | | | | | | ||||
| +--------+-------+----------------+----------------+----------------+ | ||||
| Non Storing: Summary of the use of headers from Internet to RPL- | Non Storing: Summary of the use of headers from Internet to RPL- | |||
| aware-leaf | aware-leaf | |||
| 7.2.3. Non-SM: Example of Flow from not-RPL-aware-leaf to Internet | 7.2.3. Non-SM: Example of Flow from not-RPL-aware-leaf to Internet | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| not-RPL-aware-leaf (IPv6) --> 6LR_1 --> 6LR_i -->root (6LBR) --> | not-RPL-aware-leaf (IPv6) --> 6LR_1 --> 6LR_i -->root (6LBR) --> | |||
| Internet | Internet | |||
| For example, the communication flow could be: Node G --> Node E --> | For example, a communication flow could be: Node G --> Node E --> | |||
| Node B --> Node A --> Internet | Node B --> Node A --> Internet | |||
| 6LR_i are the intermediate routers from source to destination. In | 6LR_i are the intermediate routers from source to destination. In | |||
| this case, "1 < i >= n", n is the number of routers (6LR) that the | this case, "1 < i >= n", n is the number of routers (6LR) that the | |||
| packet go through from source(IPv6) to 6LBR. e.g 6LR_1 (i=1). | packet go through from source(IPv6) to 6LBR. e.g 6LR_1 (i=1). | |||
| In this case the flow label is recommended to be zero in the IPv6 | In this case the flow label is recommended to be zero in the IPv6 | |||
| node. As RPL headers are added in the IPv6 node, the first 6LR | node. As RPL headers are added in the IPv6 node, the first 6LR | |||
| (6LR_1) will add an RPI header inside a new IP-in-IP header. The IP- | (6LR_1) will add an RPI header inside a new IP-in-IP header. The IP- | |||
| in-IP header will be addressed to the root. This case is identical | in-IP header will be addressed to the root. This case is identical | |||
| to the storing-mode case (Section 5.7). | to the storing-mode case (see Section 6.2.3). | |||
| +---------+-----+-------------+-------------+-------------+---------+ | +-----------+------+-----------+-------------+-----------+----------+ | |||
| | Header | IPv | 6LR_1 | 6LR_i | 6LBR | Interne | | | Header | IPv6 | 6LR_1 | 6LR_i | 6LBR | Internet | | |||
| | | 6 | | [i=2,..,n]_ | | t | | | | | | [i=2,..,n]_ | | | | |||
| +---------+-----+-------------+-------------+-------------+---------+ | +-----------+------+-----------+-------------+-----------+----------+ | |||
| | Inserte | -- | IP-in- | -- | -- | -- | | | Inserted | -- | IP-in-IP | -- | -- | -- | | |||
| | d | | IP(RPI) | | | | | | headers | | (RPI) | | | | | |||
| | headers | | | | | | | | Removed | -- | -- | -- | IP-in-IP | -- | | |||
| | Removed | -- | -- | -- | IP-in- | -- | | | headers | | | | (RPI) | | | |||
| | headers | | | | IP(RPI) | | | | Re-added | -- | -- | -- | -- | -- | | |||
| | Re- | -- | -- | -- | -- | -- | | | headers | | | | | | | |||
| | added | | | | | | | | Modified | -- | -- | IP-in-IP | -- | -- | | |||
| | headers | | | | | | | | headers | | | (RPI) | | | | |||
| | Modifie | -- | -- | IP-in- | -- | -- | | | Untouched | -- | -- | -- | -- | -- | | |||
| | d | | | IP(RPI) | | | | | headers | | | | | | | |||
| | headers | | | | | | | +-----------+------+-----------+-------------+-----------+----------+ | |||
| | Untouch | -- | -- | -- | -- | -- | | ||||
| | ed | | | | | | | ||||
| | headers | | | | | | | ||||
| +---------+-----+-------------+-------------+-------------+---------+ | ||||
| Non Storing: Summary of the use of headers from not-RPL-aware-leaf to | Non Storing: Summary of the use of headers from not-RPL-aware-leaf to | |||
| Internet | Internet | |||
| 7.2.4. Non-SM: Example of Flow from Internet to not-RPL-aware-leaf | 7.2.4. Non-SM: Example of Flow from Internet to not-RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| Internet --> root (6LBR) --> 6LR_i --> not-RPL-aware-leaf (IPv6) | Internet --> root (6LBR) --> 6LR_i --> not-RPL-aware-leaf (IPv6) | |||
| For example, the communication flow could be: Internet --> Node A | For example, a communication flow could be: Internet --> Node A | |||
| (root) --> Node B --> Node E --> Node G | (root) --> Node B --> Node E --> Node G | |||
| 6LR_i are the intermediate routers from source to destination. In | 6LR_i are the intermediate routers from source to destination. In | |||
| this case, "1 < i >= n", n is the number of routers (6LR) that the | this case, "1 < i >= n", n is the number of routers (6LR) that the | |||
| packet go through from 6LBR to not-RPL-aware-leaf (IPv6). | packet go through from 6LBR to not-RPL-aware-leaf (IPv6). | |||
| The 6LBR must add an RH3 header inside an IP-in-IP header. The 6LBR | The 6LBR must add an RH3 header inside an IP-in-IP header. The 6LBR | |||
| will know the path, and will recognize that the final node is not an | will know the path, and will recognize that the final node is not an | |||
| RPL capable node as it will have received the connectivity DAO from | RPL capable node as it will have received the connectivity DAO from | |||
| the nearest 6LR. The 6LBR can therefore make the IP-in-IP header | the nearest 6LR. The 6LBR can therefore make the IP-in-IP header | |||
| destination be the last 6LR. The 6LBR will set to zero the flow | destination be the last 6LR. The 6LBR will set to zero the flow | |||
| label upon entry in order to aid compression. | label upon entry in order to aid compression. | |||
| +--------+-------+----------------+------------+-------------+------+ | +----------+---------+---------+-----------+-----------------+------+ | |||
| | Header | Inter | 6LBR | 6LR_1 | 6LR_i(i=2,. | IPv6 | | | Header | Interne | 6LBR | 6LR_1 | 6LR_i(i=2,..,n) | IPv6 | | |||
| | | net | | | .,n) | | | | | t | | | | | | |||
| +--------+-------+----------------+------------+-------------+------+ | +----------+---------+---------+-----------+-----------------+------+ | |||
| | Insert | -- | IP-in-IP(RH3,o | -- | -- | -- | | | Inserted | -- | IP-in- | -- | -- | -- | | |||
| | ed hea | | pt:RPI) | | | | | | headers | | IP | | | | | |||
| | ders | | | | | | | | | | (RH3, o | | | | | |||
| | Remove | -- | -- | -- | IP-in- | -- | | | | | pt:RPI) | | | | | |||
| | d head | | | | IP(RH3, | | | | Removed | -- | -- | -- | IP-in-IP | -- | | |||
| | ers | | | | RPI) | | | | headers | | | | (RH3,RPI) | | | |||
| | Re- | -- | -- | -- | -- | -- | | | Re-added | -- | -- | -- | -- | -- | | |||
| | added | | | | | | | | headers | | | | | | | |||
| | header | | | | | | | | Modified | -- | -- | IP-in-IP | IP-in-IP | -- | | |||
| | s | | | | | | | | headers | | | (RH3,RPI) | (RH3,RPI) | | | |||
| | Modifi | -- | -- | IP-in- | IP-in- | -- | | | Untouche | -- | -- | -- | -- | RPI | | |||
| | ed hea | | | IP(RH3, | IP(RH3, | | | | d | | | | | | | |||
| | ders | | | RPI) | RPI) | | | | headers | | | | | | | |||
| | Untouc | -- | -- | -- | -- | RPI | | +----------+---------+---------+-----------+-----------------+------+ | |||
| | hed he | | | | | | | ||||
| | aders | | | | | | | ||||
| +--------+-------+----------------+------------+-------------+------+ | ||||
| NonStoring: Summary of the use of headers from Internet to non-RPL- | NonStoring: Summary of the use of headers from Internet to non-RPL- | |||
| aware-leaf | aware-leaf | |||
| 7.3. Non-Storing Mode: Interaction between Leafs | 7.3. Non-Storing Mode: Interaction between Leafs | |||
| 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 RPL-aware-leaf | RPL-aware-leaf to RPL-aware-leaf | |||
| skipping to change at page 35, line 49 ¶ | skipping to change at page 33, line 46 ¶ | |||
| not-RPL-aware-leaf to RPL-aware-leaf | not-RPL-aware-leaf to RPL-aware-leaf | |||
| not-RPL-aware-leaf to not-RPL-aware-leaf | not-RPL-aware-leaf to not-RPL-aware-leaf | |||
| 7.3.1. Non-SM: Example of Flow from RPL-aware-leaf to RPL-aware-leaf | 7.3.1. Non-SM: Example of Flow from RPL-aware-leaf to RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| 6LN src --> 6LR_ia --> root (6LBR) --> 6LR_id --> 6LN dst | 6LN src --> 6LR_ia --> root (6LBR) --> 6LR_id --> 6LN dst | |||
| For example, the communication flow could be: Node F --> Node D --> | For example, a communication flow could be: Node F --> Node D --> | |||
| Node B --> Node A (root) --> Node B --> Node E --> Node H | Node B --> Node A (root) --> Node B --> Node E --> Node H | |||
| 6LR_ia are the intermediate routers from source to the root In this | 6LR_ia are the intermediate routers from source to the root In this | |||
| case, "1 <= ia >= n", n is the number of routers (6LR) that the | case, "1 <= ia >= n", n is the number of routers (6LR) that the | |||
| packet go through from 6LN to the root. | packet go through from 6LN to the root. | |||
| 6LR_id are the intermediate routers from the root to the destination. | 6LR_id are the intermediate routers from the root to the destination. | |||
| In this case, "1 <= ia >= m", m is the number of the intermediate | In this case, "1 <= ia >= m", m is the number of the intermediate | |||
| routers (6LR). | routers (6LR). | |||
| This case involves only nodes in same RPL Domain. The originating | This case involves only nodes in same RPL Domain. The originating | |||
| node will add an RPI header to the original packet, and send the | node will add an RPI header to the original packet, and send the | |||
| skipping to change at page 37, line 5 ¶ | skipping to change at page 34, line 28 ¶ | |||
| The 6LBR will need to insert an RH3 header, which requires that it | The 6LBR will need to insert an RH3 header, which requires that it | |||
| add an IP-in-IP header. It SHOULD be able to remove the RPI, as it | add an IP-in-IP header. It SHOULD be able to remove the RPI, as it | |||
| was contained in an IP-in-IP header addressed to it. Otherwise, | was contained in an IP-in-IP header addressed to it. Otherwise, | |||
| there MAY be an RPI header buried inside the inner IP header, which | there MAY be an RPI header buried inside the inner IP header, which | |||
| should get ignored. | should get ignored. | |||
| Networks that use the RPL P2P extension [RFC6997] are essentially | Networks that use the RPL P2P extension [RFC6997] are essentially | |||
| non-storing DODAGs and fall into this scenario or scenario | non-storing DODAGs and fall into this scenario or scenario | |||
| Section 7.1.2, with the originating node acting as 6LBR. | Section 7.1.2, with the originating node acting as 6LBR. | |||
| +---------+-------------+------+--------------+-------+-------------+ | +-----------+----------+--------+-------------+--------+------------+ | |||
| | Header | 6LN src | 6LR_ | 6LBR | 6LR_i | 6LN dst | | | Header | 6LN src | 6LR_ia | 6LBR | 6LR_id | 6LN dst | | |||
| | | | ia | | d | | | +-----------+----------+--------+-------------+--------+------------+ | |||
| +---------+-------------+------+--------------+-------+-------------+ | | Inserted | IP-in-IP | -- | IP-in-IP | -- | -- | | |||
| | Inserte | IP-in- | -- | IP-in-IP(RH3 | -- | -- | | | headers | (RPI1) | | (RH3->6LN, | | | | |||
| | d | IP(RPI1) | | to 6LN, opt | | | | | | | | opt RPI2) | | | | |||
| | headers | | | RPI2) | | | | | Removed | -- | -- | IP-in-IP | -- | IP-in-IP | | |||
| | Removed | -- | -- | IP-in- | -- | IP-in- | | | headers | | | (RPI1) | | (RH3, opt | | |||
| | headers | | | IP(RPI1) | | IP(RH3, opt | | | | | | | | RPI2) | | |||
| | | | | | | RPI2) | | | Re-added | -- | -- | -- | -- | -- | | |||
| | Re- | -- | -- | -- | -- | -- | | | headers | | | | | | | |||
| | added | | | | | | | | Modified | -- | RPI1 | -- | RPI2 | -- | | |||
| | headers | | | | | | | | headers | | | | | | | |||
| | Modifie | -- | RPI1 | -- | RPI2 | -- | | | Untouched | -- | -- | -- | -- | -- | | |||
| | d | | | | | | | | headers | | | | | | | |||
| | headers | | | | | | | +-----------+----------+--------+-------------+--------+------------+ | |||
| | Untouch | -- | -- | -- | -- | -- | | ||||
| | ed | | | | | | | ||||
| | headers | | | | | | | ||||
| +---------+-------------+------+--------------+-------+-------------+ | ||||
| Non Storing: Summary of the use of headers for RPL-aware-leaf to RPL- | Non Storing: Summary of the use of headers for RPL-aware-leaf to RPL- | |||
| aware-leaf | aware-leaf | |||
| 7.3.2. Non-SM: Example of Flow from RPL-aware-leaf to not-RPL-aware- | 7.3.2. Non-SM: Example of Flow from RPL-aware-leaf to not-RPL-aware- | |||
| leaf | leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| 6LN --> 6LR_ia --> root (6LBR) --> 6LR_id --> not-RPL-aware (IPv6) | 6LN --> 6LR_ia --> root (6LBR) --> 6LR_id --> not-RPL-aware (IPv6) | |||
| For example, the communication flow could be: Node F --> Node D --> | For example, a communication flow could be: Node F --> Node D --> | |||
| Node B --> Node A (root) --> Node B --> Node E --> Node G | Node B --> Node A (root) --> Node B --> Node E --> Node G | |||
| 6LR_ia are the intermediate routers from source to the root In this | 6LR_ia are the intermediate routers from source to the root In this | |||
| case, "1 <= ia >= n", n is the number of intermediate routers (6LR) | case, "1 <= ia >= n", n is the number of intermediate routers (6LR) | |||
| 6LR_id are the intermediate routers from the root to the destination. | 6LR_id are the intermediate routers from the root to the destination. | |||
| In this case, "1 <= ia >= m", m is the number of the intermediate | In this case, "1 <= ia >= m", m is the number of the intermediate | |||
| routers (6LR). | routers (6LR). | |||
| As in the previous case, the 6LN will insert an RPI (RPI_1) header | As in the previous case, the 6LN will insert an RPI (RPI_1) header | |||
| which MUST be in an IP-in-IP header addressed to the root so that the | which MUST be in an IP-in-IP header addressed to the root so that the | |||
| 6LBR can remove this RPI. The 6LBR will then insert an RH3 inside a | 6LBR can remove this RPI. The 6LBR will then insert an RH3 inside a | |||
| new IP-in-IP header addressed to the 6LN destination node. The RPI | new IP-in-IP header addressed to the 6LN destination node. The RPI | |||
| is optional from 6LBR to 6LR_id (RPI_2). | is optional from 6LBR to 6LR_id (RPI_2). | |||
| +--------+-----------+------------+-------------+------------+------+ | +-----------+----------+----------+------------+------------+-------+ | |||
| | Header | 6LN | 6LR_1 | 6LBR | 6LR_id | IPv6 | | | Header | 6LN | 6LR_1 | 6LBR | 6LR_id | IPv6 | | |||
| +--------+-----------+------------+-------------+------------+------+ | +-----------+----------+----------+------------+------------+-------+ | |||
| | Insert | IP-in- | -- | IP-in- | -- | -- | | | Inserted | IP-in-IP | -- | IP-in-IP | -- | -- | | |||
| | ed hea | IP(RPI1) | | IP(RH3, opt | | | | | headers | (RPI1) | | (RH3, opt | | | | |||
| | ders | | | RPI_2) | | | | | | | | RPI_2) | | | | |||
| | Remove | -- | -- | IP-in- | IP-in- | -- | | | Removed | -- | -- | IP-in-IP | IP-in-IP | -- | | |||
| | d head | | | IP(RPI_1) | IP(RH3, | | | | headers | | | (RPI_1) | (RH3, opt | | | |||
| | ers | | | | opt RPI_2) | | | | | | | | RPI_2) | | | |||
| | Re- | -- | -- | -- | -- | -- | | | Re-added | -- | -- | -- | -- | -- | | |||
| | added | | | | | | | | headers | | | | | | | |||
| | header | | | | | | | | Modified | -- | IP-in-IP | -- | IP-in-IP | -- | | |||
| | s | | | | | | | | headers | | (RPI_1) | | (RH3, opt | | | |||
| | Modifi | -- | IP-in- | -- | IP-in- | -- | | | | | | | RPI_2) | | | |||
| | ed hea | | IP(RPI_1) | | IP(RH3, | | | | Untouched | -- | -- | -- | -- | opt | | |||
| | ders | | | | opt RPI_2) | | | | headers | | | | | RPI_2 | | |||
| | Untouc | -- | -- | -- | -- | opt | | +-----------+----------+----------+------------+------------+-------+ | |||
| | hed he | | | | | RPI_ | | ||||
| | aders | | | | | 2 | | ||||
| +--------+-----------+------------+-------------+------------+------+ | ||||
| Non Storing: Summary of the use of headers from RPL-aware-leaf to | Non Storing: Summary of the use of headers from RPL-aware-leaf to | |||
| not-RPL-aware-leaf | not-RPL-aware-leaf | |||
| 7.3.3. Non-SM: Example of Flow from not-RPL-aware-leaf to RPL-aware- | 7.3.3. Non-SM: Example of Flow from not-RPL-aware-leaf to RPL-aware- | |||
| leaf | leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| not-RPL-aware 6LN (IPv6) --> 6LR_ia --> root (6LBR) --> 6LR_id --> | not-RPL-aware 6LN (IPv6) --> 6LR_ia --> root (6LBR) --> 6LR_id --> | |||
| 6LN | 6LN | |||
| For example, the communication flow could be: Node G --> Node E --> | For example, a communication flow could be: Node G --> Node E --> | |||
| Node B --> Node A (root) --> Node B --> Node E --> Node H | Node B --> Node A (root) --> Node B --> Node E --> Node H | |||
| 6LR_ia are the intermediate routers from source to the root In this | 6LR_ia are the intermediate routers from source to the root. In this | |||
| case, "1 <= ia >= n", n is the number of intermediate routers (6LR) | case, "1 <= ia >= n", n is the number of intermediate routers (6LR) | |||
| 6LR_id are the intermediate routers from the root to the destination. | 6LR_id are the intermediate routers from the root to the destination. | |||
| In this case, "1 <= ia >= m", m is the number of the intermediate | In this case, "1 <= ia >= m", m is the number of the intermediate | |||
| routers (6LR). | routers (6LR). | |||
| This scenario is mostly identical to the previous one. The RPI is | This scenario is mostly identical to the previous one. The RPI is | |||
| added by the first 6LR (6LR_1) inside an IP-in-IP header addressed to | added by the first 6LR (6LR_1) inside an IP-in-IP header addressed to | |||
| the root. The 6LBR will remove this RPI, and add it's own IP-in-IP | the root. The 6LBR will remove this RPI, and add it's own IP-in-IP | |||
| header containing an RH3 header and optional RPI (RPI_2). | header containing an RH3 header and optional RPI (RPI_2). | |||
| +--------+-----+------------+-------------+------------+------------+ | +-----------+------+----------+-----------+------------+------------+ | |||
| | Header | IPv | 6LR_1 | 6LBR | 6LR_id | 6LN | | | Header | IPv6 | 6LR_1 | 6LBR | 6LR_id | 6LN | | |||
| | | 6 | | | | | | +-----------+------+----------+-----------+------------+------------+ | |||
| +--------+-----+------------+-------------+------------+------------+ | | Inserted | -- | IP-in-IP | IP-in-IP | -- | -- | | |||
| | Insert | -- | IP-in- | IP-in- | -- | -- | | | headers | | (RPI_1) | (RH3, opt | | | | |||
| | ed hea | | IP(RPI_1) | IP(RH3, opt | | | | | | | | RPI_2) | | | | |||
| | ders | | | RPI_2) | | | | | Removed | -- | -- | IP-in-IP | -- | IP-in-IP | | |||
| | Remove | -- | -- | IP-in- | -- | IP-in- | | | headers | | | (RPI_1) | | (RH3, opt | | |||
| | d head | | | IP(RPI_1) | | IP(RH3, | | | | | | | | RPI_2) | | |||
| | ers | | | | | opt RPI_2) | | | Re-added | -- | -- | -- | -- | -- | | |||
| | Re- | -- | -- | -- | -- | -- | | | headers | | | | | | | |||
| | added | | | | | | | | Modified | -- | -- | -- | IP-in-IP | -- | | |||
| | header | | | | | | | | headers | | | | (RH3, opt | | | |||
| | s | | | | | | | | | | | | RPI_2) | | | |||
| | Modifi | -- | -- | -- | IP-in- | -- | | | Untouched | -- | -- | -- | -- | -- | | |||
| | ed hea | | | | IP(RH3, | | | | headers | | | | | | | |||
| | ders | | | | opt RPI_2) | | | +-----------+------+----------+-----------+------------+------------+ | |||
| | Untouc | -- | -- | -- | -- | -- | | ||||
| | hed he | | | | | | | ||||
| | aders | | | | | | | ||||
| +--------+-----+------------+-------------+------------+------------+ | ||||
| Non Storing: Summary of the use of headers from not-RPL-aware-leaf to | Non Storing: Summary of the use of headers from not-RPL-aware-leaf to | |||
| RPL-aware-leaf | RPL-aware-leaf | |||
| 7.3.4. Non-SM: Example of Flow from not-RPL-aware-leaf to not-RPL- | 7.3.4. Non-SM: Example of Flow from not-RPL-aware-leaf to not-RPL- | |||
| aware-leaf | aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| not-RPL-aware 6LN (IPv6 src)--> 6LR_ia --> root (6LBR) --> 6LR_id --> | not-RPL-aware 6LN (IPv6 src)--> 6LR_ia --> root (6LBR) --> 6LR_id --> | |||
| not-RPL-aware (IPv6 dst) | not-RPL-aware (IPv6 dst) | |||
| For example, the communication flow could be: Node G --> Node E --> | For example, a communication flow could be: Node G --> Node E --> | |||
| Node B --> Node A (root) --> Node C --> Node J | Node B --> Node A (root) --> Node C --> Node J | |||
| 6LR_ia are the intermediate routers from source to the root In this | 6LR_ia are the intermediate routers from source to the root. In this | |||
| case, "1 <= ia >= n", n is the number of intermediate routers (6LR) | case, "1 <= ia >= n", n is the number of intermediate routers (6LR) | |||
| 6LR_id are the intermediate routers from the root to the destination. | 6LR_id are the intermediate routers from the root to the destination. | |||
| In this case, "1 <= ia >= m", m is the number of the intermediate | In this case, "1 <= ia >= m", m is the number of the intermediate | |||
| routers (6LR). | routers (6LR). | |||
| This scenario is the combination of the previous two cases. | This scenario is the combination of the previous two cases. | |||
| +---------+-----+--------------+---------------+-------------+------+ | +------------+-------+-----------+------------+-------------+-------+ | |||
| | Header | IPv | 6LR_1 | 6LBR | 6LR_id | IPv6 | | | Header | IPv6 | 6LR_1 | 6LBR | 6LR_id | IPv6 | | |||
| | | 6 | | | | dst | | | | src | | | | dst | | |||
| | | src | | | | | | +------------+-------+-----------+------------+-------------+-------+ | |||
| +---------+-----+--------------+---------------+-------------+------+ | | Inserted | -- | IP-in-IP | IP-in-IP | -- | -- | | |||
| | Inserte | -- | IP-in- | IP-in-IP(RH3) | -- | -- | | | headers | | (RPI_1) | (RH3) | | | | |||
| | d | | IP(RPI_1) | | | | | | Removed | -- | -- | IP-in-IP | IP-in-IP | -- | | |||
| | headers | | | | | | | | headers | | | (RPI_1) | (RH3, opt | | | |||
| | Removed | -- | -- | IP-in- | IP-in- | -- | | | | | | | RPI_2) | | | |||
| | headers | | | IP(RPI_1) | IP(RH3, opt | | | | Re-added | -- | -- | -- | -- | -- | | |||
| | | | | | RPI_2) | | | | headers | | | | | | | |||
| | Re- | -- | -- | -- | -- | -- | | | Modified | -- | -- | -- | -- | -- | | |||
| | added | | | | | | | | headers | | | | | | | |||
| | headers | | | | | | | | Untouched | -- | -- | -- | -- | -- | | |||
| | Modifie | -- | -- | -- | -- | -- | | | headers | | | | | | | |||
| | d | | | | | | | +------------+-------+-----------+------------+-------------+-------+ | |||
| | headers | | | | | | | ||||
| | Untouch | -- | -- | -- | -- | -- | | ||||
| | ed | | | | | | | ||||
| | headers | | | | | | | ||||
| +---------+-----+--------------+---------------+-------------+------+ | ||||
| Non Storing: Summary of the use of headers from not-RPL-aware-leaf to | Non Storing: Summary of the use of headers from not-RPL-aware-leaf to | |||
| not-RPL-aware-leaf | not-RPL-aware-leaf | |||
| 8. Observations about the cases | 8. Observations about the cases | |||
| 8.1. Storing mode | 8.1. Storing mode | |||
| [I-D.ietf-roll-routing-dispatch] shows that the hop-by-hop IP-in-IP | [RFC8183] shows that the hop-by-hop IP-in-IP header can be compressed | |||
| header can be compressed using IP-in-IP 6LoRH (IP-in-IP-6LoRH) header | using IP-in-IP 6LoRH (IP-in-IP-6LoRH) header as described in | |||
| as described in Section 7 of the document. | 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 change of the RPI option type from 0x63 to 0x23, there | Thanks to the change of the RPI option type from 0x63 to 0x23, there | |||
| is no longer any uncertainty about when to use an IP-in-IP header in | is no longer any uncertainty about when to use an IP-in-IP header in | |||
| the storing mode. A Hop-by-Hop Options Header containing the RPI | the storing mode. A Hop-by-Hop Options Header containing the RPI | |||
| option SHOULD always be added when 6LRs originate packets (without | option SHOULD always be added when 6LRs originate packets (without | |||
| IP-in-IP headers), and IP-in-IP headers should always be added | IP-in-IP headers), and IP-in-IP headers should always be added | |||
| (addressed to the root when on the way up, to the end-host when on | (addressed to the root when on the way up, to the end-host when on | |||
| the way down) when a 6LR find that it needs to insert a Hop-by-Hop | the way down) when a 6LR find that it needs to insert a Hop-by-Hop | |||
| Options Header containing the RPI option. | Options Header containing the RPI option. | |||
| 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) | ||||
| 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 | |||
| root node. | root node. | |||
| The 6LBR can recognize non-RPL aware leaf nodes because it will | The 6LBR can recognize non-RPL aware leaf nodes because it will | |||
| receive a DAO about that node from the 6LN immediately above that | receive a DAO about that node from the 6LN immediately above that | |||
| node. This means that the non-storing mode case can avoid ever using | node. This means that the non-storing mode case can avoid ever using | |||
| hop-by-hop IP-in-IP headers. | hop-by-hop IP-in-IP headers for traffic originating from the root to | |||
| leafs. | ||||
| Unlike in the storing mode case, there is no need for all nodes to | The non-storing mode case does not require the type change from 0x63 | |||
| know about the existence of non-RPL aware nodes. Only the 6LBR needs | to 0x23, as the root can always create the right packet. The type | |||
| to change when there are non-RPL aware nodes. Further, in the non- | change does not adversely affect the non-storing case. | |||
| storing case, the 6LBR is informed by the DAOs when there are non-RPL | ||||
| aware nodes. | ||||
| 9. 6LoRH Compression cases | 9. 6LoRH Compression cases | |||
| The [I-D.ietf-roll-routing-dispatch] proposes a compression method | The [RFC8183] proposes a compression method for RPI, RH3 and IPv6-in- | |||
| for RPI, RH3 and IPv6-in-IPv6. | IPv6. | |||
| 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 | | |||
| +--+-----+---+--------------+-----------+-------------+-------------+ | +--+-----+---+--------------+-----------+-------------+-------------+ | |||
| skipping to change at page 42, line 13 ¶ | skipping to change at page 39, line 18 ¶ | |||
| Options and Hop-by-Hop Options registry from 0x63 to 0x23. | Options and Hop-by-Hop Options registry from 0x63 to 0x23. | |||
| Hex Value Binary Value | Hex Value Binary Value | |||
| act chg rest Description Reference | act chg rest Description Reference | |||
| --------- --- --- ------- ----------------- ---------- | --------- --- --- ------- ----------------- ---------- | |||
| 0x23 00 1 00011 RPL Option [RFCXXXX] | 0x23 00 1 00011 RPL Option [RFCXXXX] | |||
| 0x63 01 1 00011 RPL Option(DEPRECATED) [RFC6553][RFCXXXX] | 0x63 01 1 00011 RPL Option(DEPRECATED) [RFC6553][RFCXXXX] | |||
| Figure 10: Option Type in RPL Option. | Figure 10: Option Type in RPL Option. | |||
| We propose to use DODAG Configuration Option Flags in the DODAG | The DODAG Configuration Option Flags in the DODAG Configuration | |||
| Configuration option as follows: | option is updated as follows: | |||
| +------------+-----------------+---------------+ | +------------+-----------------+---------------+ | |||
| | Bit number | Description | Reference | | | Bit number | Description | Reference | | |||
| +------------+-----------------+---------------+ | +------------+-----------------+---------------+ | |||
| | 3 | RPI 0x23 enable | This document | | | 3 | RPI 0x23 enable | This document | | |||
| +------------+-----------------+---------------+ | +------------+-----------------+---------------+ | |||
| Figure 11: DODAG Configuration Option Flag to indicate the RPI-flag- | Figure 11: DODAG Configuration Option Flag to indicate the RPI-flag- | |||
| day. | day. | |||
| skipping to change at page 44, line 16 ¶ | skipping to change at page 41, line 22 ¶ | |||
| would be cheaper should RPL be run in an environment where hostile | would be cheaper should RPL be run in an environment where hostile | |||
| nodes are likely to be a part of the LLN. | nodes are likely to be a part of the LLN. | |||
| The RH3 header usage described here can be abused in equivalent ways | The RH3 header usage described here can be abused in equivalent ways | |||
| with an IPIP header to add the needed RH3 header. As such, the | with an IPIP header to add the needed RH3 header. As such, the | |||
| attacker's RH3 header will not be seen by the network until it | attacker's RH3 header will not be seen by the network until it | |||
| reaches the end host, which will decapsulate it. An end-host SHOULD | reaches the end host, which will decapsulate it. An end-host SHOULD | |||
| be suspicious about a RH3 header which has additional hops which have | be suspicious about a RH3 header which has additional hops which have | |||
| not yet been processed, and SHOULD ignore such a second RH3 header. | not yet been processed, and SHOULD ignore such a second RH3 header. | |||
| In addition, the LLN will likely use [I-D.ietf-roll-routing-dispatch] | In addition, the LLN will likely use [RFC8183] to compress the IPIP | |||
| to compress the IPIP and RH3 headers. As such, the compressor at the | and RH3 headers. As such, the compressor at the RPL-root will see | |||
| RPL-root will see the second RH3 header and MAY choose to discard the | the second RH3 header and MAY choose to discard the packet if the RH3 | |||
| packet if the RH3 header has not been completely consumed. A | header has not been completely consumed. A consumed (inert) RH3 | |||
| consumed (inert) RH3 header could be present in a packet that flows | header could be present in a packet that flows from one LLN, crosses | |||
| from one LLN, crosses the Internet, and enters another LLN. As per | the Internet, and enters another LLN. As per the discussion in this | |||
| the discussion in this document, such headers do not need to be | document, such headers do not need to be removed. However, there is | |||
| removed. However, there is no case described in this document where | no case described in this document where an RH3 is inserted in a non- | |||
| an RH3 is inserted in a non-storing network on traffic that is | storing network on traffic that is leaving the LLN, but this document | |||
| leaving the LLN, but this document SHOULD NOT preclude such a future | SHOULD NOT preclude such a future innovation. It should just be | |||
| innovation. It should just be noted that an incoming RH3 must be | noted that an incoming RH3 must be fully consumed, or very carefully | |||
| fully consumed, or very carefully inspected. | inspected. | |||
| The RPI header, if permitted to enter the LLN, could be used by an | The RPI header, if permitted to enter the LLN, could be used by an | |||
| attacker to change the priority of a packet by selecting a different | attacker to change the priority of a packet by selecting a different | |||
| RPL instanceID, perhaps one with a higher energy cost, for instance. | RPL instanceID, perhaps one with a higher energy cost, for instance. | |||
| It could also be that not all nodes are reachable in an LLN using the | It could also be that not all nodes are reachable in an LLN using the | |||
| default instanceID, but a change of instanceID would permit an | default instanceID, but a change of instanceID would permit an | |||
| attacker to bypass such filtering. Like the RH3, an RPI header is to | attacker to bypass such filtering. Like the RH3, an RPI header is to | |||
| be inserted by the RPL root on traffic entering the LLN by first | be inserted by the RPL root on traffic entering the LLN by first | |||
| inserting an IPIP header. The attacker's RPI header therefore will | inserting an IPIP header. The attacker's RPI header therefore will | |||
| not be seen by the network. Upon reaching the destination node the | not be seen by the network. Upon reaching the destination node the | |||
| skipping to change at page 45, line 19 ¶ | skipping to change at page 42, line 23 ¶ | |||
| The authors would like to acknowledge the review, feedback, and | The authors would like to acknowledge the review, feedback, and | |||
| comments of (alphabetical order): Robert Cragie, Simon Duquennoy, | comments of (alphabetical order): Robert Cragie, Simon Duquennoy, | |||
| Ralph Droms, Cenk Guendogan, C. M. Heard, Rahul Jadhav, Matthias | Ralph Droms, Cenk Guendogan, C. M. Heard, Rahul Jadhav, Matthias | |||
| Kovatsch, Peter van der Stok, Xavier Vilajosana and Thomas Watteyne. | Kovatsch, Peter van der Stok, Xavier Vilajosana and Thomas Watteyne. | |||
| 13. References | 13. References | |||
| 13.1. Normative References | 13.1. Normative References | |||
| [I-D.ietf-6man-rfc2460bis] | ||||
| Deering, S. and R. Hinden, "Internet Protocol, Version 6 | ||||
| (IPv6) Specification", draft-ietf-6man-rfc2460bis-13 (work | ||||
| in progress), May 2017. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
| (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, | (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, | |||
| December 1998, <https://www.rfc-editor.org/info/rfc2460>. | December 1998, <https://www.rfc-editor.org/info/rfc2460>. | |||
| [RFC2473] Conta, A. and S. Deering, "Generic Packet Tunneling in | [RFC2473] Conta, A. and S. Deering, "Generic Packet Tunneling in | |||
| skipping to change at page 46, line 33 ¶ | skipping to change at page 43, line 33 ¶ | |||
| and M. Richardson, Ed., "A Security Threat Analysis for | and M. Richardson, Ed., "A Security Threat Analysis for | |||
| the Routing Protocol for Low-Power and Lossy Networks | the Routing Protocol for Low-Power and Lossy Networks | |||
| (RPLs)", RFC 7416, DOI 10.17487/RFC7416, January 2015, | (RPLs)", RFC 7416, DOI 10.17487/RFC7416, January 2015, | |||
| <https://www.rfc-editor.org/info/rfc7416>. | <https://www.rfc-editor.org/info/rfc7416>. | |||
| [RFC8138] Thubert, P., Ed., Bormann, C., Toutain, L., and R. Cragie, | [RFC8138] Thubert, P., Ed., Bormann, C., Toutain, L., and R. Cragie, | |||
| "IPv6 over Low-Power Wireless Personal Area Network | "IPv6 over Low-Power Wireless Personal Area Network | |||
| (6LoWPAN) Routing Header", RFC 8138, DOI 10.17487/RFC8138, | (6LoWPAN) Routing Header", RFC 8138, DOI 10.17487/RFC8138, | |||
| April 2017, <https://www.rfc-editor.org/info/rfc8138>. | April 2017, <https://www.rfc-editor.org/info/rfc8138>. | |||
| [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | ||||
| (IPv6) Specification", STD 86, RFC 8200, | ||||
| DOI 10.17487/RFC8200, July 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8200>. | ||||
| 13.2. Informative References | 13.2. Informative References | |||
| [DDOS-KREBS] | [DDOS-KREBS] | |||
| Goodin, D., "Record-breaking DDoS reportedly delivered by | Goodin, D., "Record-breaking DDoS reportedly delivered by | |||
| >145k hacked cameras", September 2016, | >145k hacked cameras", September 2016, | |||
| <http://arstechnica.com/security/2016/09/botnet-of-145k- | <http://arstechnica.com/security/2016/09/botnet-of-145k- | |||
| cameras-reportedly-deliver-internets-biggest-ddos-ever/>. | cameras-reportedly-deliver-internets-biggest-ddos-ever/>. | |||
| [I-D.ietf-6lo-backbone-router] | [I-D.ietf-6lo-backbone-router] | |||
| Thubert, P., "IPv6 Backbone Router", draft-ietf-6lo- | Thubert, P., "IPv6 Backbone Router", draft-ietf-6lo- | |||
| backbone-router-04 (work in progress), July 2017. | backbone-router-04 (work in progress), July 2017. | |||
| [I-D.ietf-6man-rfc6434-bis] | ||||
| Chown, T., Loughney, J., and T. Winters, "IPv6 Node | ||||
| Requirements", draft-ietf-6man-rfc6434-bis-02 (work in | ||||
| progress), October 2017. | ||||
| [I-D.ietf-6tisch-architecture] | [I-D.ietf-6tisch-architecture] | |||
| Thubert, P., "An Architecture for IPv6 over the TSCH mode | Thubert, P., "An Architecture for IPv6 over the TSCH mode | |||
| of IEEE 802.15.4", draft-ietf-6tisch-architecture-12 (work | of IEEE 802.15.4", draft-ietf-6tisch-architecture-12 (work | |||
| in progress), August 2017. | in progress), August 2017. | |||
| [I-D.ietf-6tisch-dtsecurity-secure-join] | [I-D.ietf-6tisch-dtsecurity-secure-join] | |||
| Richardson, M., "6tisch Secure Join protocol", draft-ietf- | Richardson, M., "6tisch Secure Join protocol", draft-ietf- | |||
| 6tisch-dtsecurity-secure-join-01 (work in progress), | 6tisch-dtsecurity-secure-join-01 (work in progress), | |||
| February 2017. | February 2017. | |||
| skipping to change at page 47, line 26 ¶ | skipping to change at page 44, line 36 ¶ | |||
| Pritikin, M., Richardson, M., Behringer, M., Bjarnason, | Pritikin, M., Richardson, M., Behringer, M., Bjarnason, | |||
| S., and K. Watsen, "Bootstrapping Remote Secure Key | S., and K. Watsen, "Bootstrapping Remote Secure Key | |||
| Infrastructures (BRSKI)", draft-ietf-anima-bootstrapping- | Infrastructures (BRSKI)", draft-ietf-anima-bootstrapping- | |||
| keyinfra-08 (work in progress), October 2017. | keyinfra-08 (work in progress), October 2017. | |||
| [I-D.ietf-roll-dao-projection] | [I-D.ietf-roll-dao-projection] | |||
| Thubert, P. and J. Pylakutty, "Root initiated routing | Thubert, P. and J. Pylakutty, "Root initiated routing | |||
| state in RPL", draft-ietf-roll-dao-projection-02 (work in | state in RPL", draft-ietf-roll-dao-projection-02 (work in | |||
| progress), September 2017. | progress), September 2017. | |||
| [I-D.ietf-roll-routing-dispatch] | ||||
| Thubert, P., Bormann, C., Toutain, L., and R. Cragie, | ||||
| "6LoWPAN Routing Header", draft-ietf-roll-routing- | ||||
| dispatch-05 (work in progress), October 2016. | ||||
| [RFC4192] Baker, F., Lear, E., and R. Droms, "Procedures for | [RFC4192] Baker, F., Lear, E., and R. Droms, "Procedures for | |||
| Renumbering an IPv6 Network without a Flag Day", RFC 4192, | Renumbering an IPv6 Network without a Flag Day", RFC 4192, | |||
| DOI 10.17487/RFC4192, September 2005, | DOI 10.17487/RFC4192, September 2005, | |||
| <https://www.rfc-editor.org/info/rfc4192>. | <https://www.rfc-editor.org/info/rfc4192>. | |||
| [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet | [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet | |||
| Control Message Protocol (ICMPv6) for the Internet | Control Message Protocol (ICMPv6) for the Internet | |||
| Protocol Version 6 (IPv6) Specification", STD 89, | Protocol Version 6 (IPv6) Specification", STD 89, | |||
| RFC 4443, DOI 10.17487/RFC4443, March 2006, | RFC 4443, DOI 10.17487/RFC4443, March 2006, | |||
| <https://www.rfc-editor.org/info/rfc4443>. | <https://www.rfc-editor.org/info/rfc4443>. | |||
| skipping to change at page 48, line 9 ¶ | skipping to change at page 45, line 15 ¶ | |||
| [RFC6997] Goyal, M., Ed., Baccelli, E., Philipp, M., Brandt, A., and | [RFC6997] Goyal, M., Ed., Baccelli, E., Philipp, M., Brandt, A., and | |||
| J. Martocci, "Reactive Discovery of Point-to-Point Routes | J. Martocci, "Reactive Discovery of Point-to-Point Routes | |||
| in Low-Power and Lossy Networks", RFC 6997, | in Low-Power and Lossy Networks", RFC 6997, | |||
| DOI 10.17487/RFC6997, August 2013, | DOI 10.17487/RFC6997, August 2013, | |||
| <https://www.rfc-editor.org/info/rfc6997>. | <https://www.rfc-editor.org/info/rfc6997>. | |||
| [RFC7102] Vasseur, JP., "Terms Used in Routing for Low-Power and | [RFC7102] Vasseur, JP., "Terms Used in Routing for Low-Power and | |||
| Lossy Networks", RFC 7102, DOI 10.17487/RFC7102, January | Lossy Networks", RFC 7102, DOI 10.17487/RFC7102, January | |||
| 2014, <https://www.rfc-editor.org/info/rfc7102>. | 2014, <https://www.rfc-editor.org/info/rfc7102>. | |||
| [RFC8183] Austein, R., "An Out-of-Band Setup Protocol for Resource | ||||
| Public Key Infrastructure (RPKI) Production Services", | ||||
| RFC 8183, DOI 10.17487/RFC8183, July 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8183>. | ||||
| [Second6TischPlugtest] | [Second6TischPlugtest] | |||
| "2nd 6Tisch Plugtest", <http://www.ietf.org/mail- | "2nd 6Tisch Plugtest", <http://www.ietf.org/mail- | |||
| archive/web/6tisch/current/pdfgDMQcdCkRz.pdf>. | archive/web/6tisch/current/pdfgDMQcdCkRz.pdf>. | |||
| Authors' Addresses | Authors' Addresses | |||
| Maria Ines Robles | Maria Ines Robles | |||
| Ericsson | Ericsson | |||
| Hirsalantie 11 | Hirsalantie 11 | |||
| Jorvas 02420 | Jorvas 02420 | |||
| End of changes. 130 change blocks. | ||||
| 491 lines changed or deleted | 434 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/ | ||||