draft-ietf-6lo-routing-dispatch-01.txt | draft-ietf-6lo-routing-dispatch-02.txt | |||
---|---|---|---|---|
6lo P. Thubert, Ed. | 6lo P. Thubert, Ed. | |||
Internet-Draft Cisco | Internet-Draft Cisco | |||
Updates: 4944 (if approved) C. Bormann | Intended status: Standards Track C. Bormann | |||
Intended status: Standards Track Uni Bremen TZI | Expires: July 17, 2016 Uni Bremen TZI | |||
Expires: July 15, 2016 L. Toutain | L. Toutain | |||
IMT-TELECOM Bretagne | IMT-TELECOM Bretagne | |||
R. Cragie | R. Cragie | |||
ARM | ARM | |||
January 12, 2016 | January 14, 2016 | |||
6LoWPAN Routing Header And Paging Dispatches | 6LoWPAN Routing Header And Paging Dispatches | |||
draft-ietf-6lo-routing-dispatch-01 | draft-ietf-6lo-routing-dispatch-02 | |||
Abstract | Abstract | |||
This specification introduces a new context switch mechanism for | This specification introduces a new 6LoWPAN dispatch type for use in | |||
6LoWPAN compression, expressed in terms of Pages and signaled by a | 6LoWPAN Route-Over topologies, that initially covers the needs of RPL | |||
new Paging Dispatch. A new 6LoWPAN dispatch type is proposed in a | (RFC6550) data packets compression. Using this dispatch type, this | |||
new Page 1 for use in 6LoWPAN Route-Over topologies, that initially | ||||
covers the needs of RPL (RFC6550) data packets compression. This | ||||
specification defines a method to compress RPL Option (RFC6553) | specification defines a method to compress RPL Option (RFC6553) | |||
information and Routing Header type 3 (RFC6554), an efficient IP-in- | information and Routing Header type 3 (RFC6554), an efficient IP-in- | |||
IP technique and is extensible for more applications. | IP technique and is extensible for more applications. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on July 15, 2016. | This Internet-Draft will expire on July 17, 2016. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
3. Updating RFC 4944 . . . . . . . . . . . . . . . . . . . . . . 6 | 3. Using the Page Dispatch . . . . . . . . . . . . . . . . . . . 5 | |||
3.1. New Page 1 Paging Dispatch . . . . . . . . . . . . . . . 6 | 3.1. New Routing Header Dispatch (6LoRH) . . . . . . . . . . . 6 | |||
3.2. New Routing Header Dispatch (6LoRH) . . . . . . . . . . . 7 | 3.2. Placement Of The 6LoRH . . . . . . . . . . . . . . . . . 6 | |||
4. Placement Of The New Dispatch Types . . . . . . . . . . . . . 7 | 4. 6LoWPAN Routing Header General Format . . . . . . . . . . . . 6 | |||
4.1. Placement Of The Page 1 Paging Dispatch . . . . . . . . . 7 | 4.1. Elective Format . . . . . . . . . . . . . . . . . . . . . 7 | |||
4.2. Placement Of The 6LoRH . . . . . . . . . . . . . . . . . 8 | 4.2. Critical Format . . . . . . . . . . . . . . . . . . . . . 7 | |||
5. 6LoWPAN Routing Header General Format . . . . . . . . . . . . 8 | 5. The Routing Header Type 3 (RH3) 6LoRH . . . . . . . . . . . . 8 | |||
5.1. Elective Format . . . . . . . . . . . . . . . . . . . . . 8 | 6. The RPL Packet Information 6LoRH . . . . . . . . . . . . . . 10 | |||
5.2. Critical Format . . . . . . . . . . . . . . . . . . . . . 9 | 6.1. Compressing the RPLInstanceID . . . . . . . . . . . . . . 11 | |||
6. The Routing Header Type 3 (RH3) 6LoRH . . . . . . . . . . . . 9 | 6.2. Compressing the SenderRank . . . . . . . . . . . . . . . 11 | |||
7. The RPL Packet Information 6LoRH . . . . . . . . . . . . . . 11 | 6.3. The Overall RPI-6LoRH encoding . . . . . . . . . . . . . 12 | |||
7.1. Compressing the RPLInstanceID . . . . . . . . . . . . . . 12 | 7. The IP-in-IP 6LoRH . . . . . . . . . . . . . . . . . . . . . 14 | |||
7.2. Compressing the SenderRank . . . . . . . . . . . . . . . 13 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | |||
7.3. The Overall RPI-6LoRH encoding . . . . . . . . . . . . . 13 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 | |||
8. The IP-in-IP 6LoRH . . . . . . . . . . . . . . . . . . . . . 15 | 9.1. Reserving Space in 6LoWPAN Dispatch Page 1 . . . . . . . 15 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 17 | 9.2. Nex 6LoWPAN Routing Header Type Registry . . . . . . . . 15 | |||
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 17 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 16 | |||
12.1. Normative References . . . . . . . . . . . . . . . . . . 17 | 11.2. Informative References . . . . . . . . . . . . . . . . . 17 | |||
12.2. Informative References . . . . . . . . . . . . . . . . . 19 | Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 18 | |||
Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 19 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 20 | ||||
1. Introduction | 1. Introduction | |||
The design of Low Power and Lossy Networks (LLNs) is generally | The design of Low Power and Lossy Networks (LLNs) is generally | |||
focused on saving energy, a very constrained resource in most cases. | focused on saving energy, a very constrained resource in most cases. | |||
The other constraints, such as the memory capacity and the duty | The other constraints, such as the memory capacity and the duty | |||
cycling of the LLN devices, derive from that primary concern. Energy | cycling of the LLN devices, derive from that primary concern. Energy | |||
is often available from primary batteries that are expected to last | is often available from primary batteries that are expected to last | |||
for years, or is scavenged from the environment in very limited | for years, or is scavenged from the environment in very limited | |||
quantities. Any protocol that is intended for use in LLNs must be | quantities. Any protocol that is intended for use in LLNs must be | |||
skipping to change at page 1, line -116 | skipping to change at page 1, line 202 | |||
RH3 to go down the graph. In any fashion, whether the packet was | RH3 to go down the graph. In any fashion, whether the packet was | |||
originated in a node in the LLN or outside the LLN, and regardless of | originated in a node in the LLN or outside the LLN, and regardless of | |||
whether the packet stays within the LLN or not, as long as the source | whether the packet stays within the LLN or not, as long as the source | |||
of the packet is not the root itself, the source-routing operation | of the packet is not the root itself, the source-routing operation | |||
also implies an IP-in-IP encapsulation at the root in order to insert | also implies an IP-in-IP encapsulation at the root in order to insert | |||
the RH3. | the RH3. | |||
6TiSCH [I-D.ietf-6tisch-architecture] specifies the operation of IPv6 | 6TiSCH [I-D.ietf-6tisch-architecture] specifies the operation of IPv6 | |||
over the TimeSlotted Channel Hopping [RFC7554] (TSCH) mode of | over the TimeSlotted Channel Hopping [RFC7554] (TSCH) mode of | |||
operation of IEEE 802.15.4. The architecture requires the use of | operation of IEEE 802.15.4. The architecture requires the use of | |||
both RPL and the 6lo adaptation layer framework ([RFC4944], | both RPL and the 6lo adaptation layer over IEEE 802.15.4. Because it | |||
[RFC6282]) over IEEE 802.15.4. Because it inherits the constraints | inherits the constraints on the frame size from the MAC layer, 6TiSCH | |||
on the frame size from the MAC layer, 6TiSCH cannot afford to spend 8 | cannot afford to spend 8 bytes per packet on the RPI. Hence the | |||
bytes per packet on the RPI. Hence the requirement for a 6LoWPAN | requirement for a 6LoWPAN header compression of the RPI. | |||
header compression of the RPI. | ||||
An extensible compression technique is required that simplifies IP- | An extensible compression technique is required that simplifies IP- | |||
in-IP encapsulation when it is needed, and optimally compresses | in-IP encapsulation when it is needed, and optimally compresses | |||
existing routing artifacts found in RPL LLNs. | existing routing artifacts found in RPL LLNs. | |||
This specification extends the 6lo adaptation layer framework | This specification extends the 6lo adaptation layer framework | |||
([RFC4944],[RFC6282]) so as to carry routing information for route- | ([RFC4944],[RFC6282]) so as to carry routing information for route- | |||
over networks based on RPL. The specification includes the formats | over networks based on RPL. The specification includes the formats | |||
necessary for RPL and is extensible for additional formats. | necessary for RPL and is extensible for additional formats. | |||
skipping to change at page 1, line -83 | skipping to change at page 1, line 234 | |||
incorporates that described in `Terminology in Low power And Lossy | incorporates that described in `Terminology in Low power And Lossy | |||
Networks' [RFC7102] and [RFC6550]. | Networks' [RFC7102] and [RFC6550]. | |||
The terms Route-over and Mesh-under are defined in [RFC6775]. | The terms Route-over and Mesh-under are defined in [RFC6775]. | |||
Other terms in use in LLNs are found in [RFC7228]. | Other terms in use in LLNs are found in [RFC7228]. | |||
The term "byte" is used in its now customary sense as a synonym for | The term "byte" is used in its now customary sense as a synonym for | |||
"octet". | "octet". | |||
3. Updating RFC 4944 | 3. Using the Page Dispatch | |||
This draft adapts 6LoWPAN while maintaining backward compatibility | ||||
with IPv6 over IEEE 802.15.4 [RFC4944] by introducing a concept of | ||||
"context" in the 6LoWPAN parser, a context being identified by a Page | ||||
number. This specification defines 16 Pages. | ||||
Pages are delimited in a 6LoWPAN packet by a Paging Dispatch value | ||||
that indicates the next current Page. The Page number is encoded in | ||||
a Paging Dispatch with the Value Bit Pattern of 1111xxxx where xxxx | ||||
is the Page number, 0 to 15, as described in Figure 3: | ||||
0 | ||||
0 1 2 3 4 5 6 7 | ||||
+-+-+-+-+-+-+-+-+ | ||||
|1|1|1|1|Page Nb| | ||||
+-+-+-+-+-+-+-+-+ | ||||
Figure 3: Paging Dispatch with Page Number Encoding. | ||||
Values of the Dispatch byte defined in [RFC4944] are considered as | ||||
belonging to the Page 0 parsing context, which is the default and | ||||
does not need to be signaled explicitly at the beginning of a 6LoWPAN | ||||
packet. This ensures backward compatibility with existing | ||||
implementations of 6LoWPAN. | ||||
Note: This specification does not use the Escape Dispatch, which | ||||
extends Page 0 to more values, but rather allocates another Dispatch | ||||
Bit Pattern (1111xxxx) for a new Paging Dispatch, that is present in | ||||
all Pages, including Page 0 and Pages defined in future | ||||
specifications, to indicate the next parsing context represented by | ||||
its Page number. The rationale for avoiding that approach is that | ||||
there will be multiple occurrences of a new header indexed by this | ||||
specification in a single frame and the overhead on an octet each | ||||
time for the Escape Dispatch would be prohibitive. | ||||
3.1. New Page 1 Paging Dispatch | ||||
This draft defines a new Page 1 Paging Dispatch (Dispatch Value of | ||||
11110001), which indicates a context switch in the 6LoWPAN parser to | ||||
a Page 1. | ||||
The Dispatch bits defined in Page 0 by [RFC4944] are free to be | The6LoWPAN Paging Dispatch [I-D.ietf-paging-dispatch] specification | |||
reused in Pages 1 to 15. | extends the 6lo adaptation layer framework ([RFC4944], [RFC6282]) by | |||
introducing a concept of "context" in the 6LoWPAN parser, a context | ||||
being identified by a Page number. The specification defines 16 | ||||
Pages. | ||||
On the other hand, the Dispatch bits defined in Page 0 for the | This draft operates within the Page 1, which is indicated by a | |||
Compression Format for IPv6 Datagrams over IEEE 802.15.4-Based | Dispatch Value of binary 11110001. | |||
Networks [RFC6282] are defined with the same values in Page 1 so | ||||
there is no need to switch context back from Page 1 to Page 0 to | ||||
address LOWPAN_IPHC and LOWPAN_NHC. | ||||
3.2. New Routing Header Dispatch (6LoRH) | 3.1. New Routing Header Dispatch (6LoRH) | |||
This specification introduces a new 6LoWPAN Routing Header (6LoRH) to | This specification introduces a new 6LoWPAN Routing Header (6LoRH) to | |||
carry IPv6 routing information. The 6LoRH may contain source routing | carry IPv6 routing information. The 6LoRH may contain source routing | |||
information such as a compressed form of RH3, as well as other sorts | information such as a compressed form of RH3, as well as other sorts | |||
of routing information such as the RPL Packet Information and IP-in- | of routing information such as the RPL Packet Information and IP-in- | |||
IP encapsulation. | IP encapsulation. | |||
The 6LoRH is expressed in a 6loWPAN packet as a Type-Length-Value | The 6LoRH is expressed in a 6loWPAN packet as a Type-Length-Value | |||
(TLV) field, which is extensible for future use. | (TLV) field, which is extensible for future use. | |||
This specification uses the bit pattern 10xxxxxx in Page 1 for the | This specification uses the bit pattern 10xxxxxx in Page 1 for the | |||
new 6LoRH Dispatch and Section 5 describes how RPL artifacts in data | new 6LoRH Dispatch and Section 4 describes how RPL artifacts in data | |||
packets can be compressed as 6LoRH headers. | packets can be compressed as 6LoRH headers. | |||
4. Placement Of The New Dispatch Types | 3.2. Placement Of The 6LoRH | |||
4.1. Placement Of The Page 1 Paging Dispatch | ||||
In a zone of a packet where Page 1 is active, which means once a Page | In a zone of a packet where Page 1 is active, which means once a Page | |||
1 Paging Dispatch is parsed, and as long as no other Paging Dispatch | 1 Paging Dispatch is parsed, and as long as no other Paging Dispatch | |||
is parsed, the parsing of the packet MUST follow this specification | is parsed, the parsing of the packet MUST follow this specification | |||
if the 6LoRH Bit Pattern Section 3.2 is found. | if the 6LoRH Bit Pattern Section 3.1 is found. | |||
Mesh Headers represent Layer-2 information and are processed before | ||||
any Layer-3 information that is encoded in Page 1. If a 6LoWPAN | ||||
packet requires a Mesh header, the Mesh Header MUST always be placed | ||||
in the packet before the first Page 1 Paging Dispatch, if any. | ||||
For the same reason, Fragment Headers as defined in [RFC4944] MUST | ||||
always be placed in the packet before the first Page 1 Paging | ||||
Dispatch, if any. | ||||
The NALP Dispatch Bit Pattern as defined in [RFC4944] is only defined | ||||
for the first octet in the packet. Switching back to Page 0 for NALP | ||||
inside a 6LoWPAN packet does not make sense. | ||||
parsing context after a context was switched to Page 1, so the value | ||||
for the Page 0 Paging Dispatch of 11110000 may not actually be seen | ||||
in packets following the 6LoWPAN specifications that are available at | ||||
the time of writing. | ||||
4.2. Placement Of The 6LoRH | ||||
With this specification, the 6LoRH Dispatch is only defined in Page | With this specification, the 6LoRH Dispatch is only defined in Page | |||
context is active. | context is active. | |||
One or more 6LoRH header(s) MAY be placed in a 6LoWPAN packet. A | One or more 6LoRH header(s) MAY be placed in a 6LoWPAN packet. A | |||
6LoRH header MUST always be placed before the LOWPAN_IPHC as defined | 6LoRH header MUST always be placed before the LOWPAN_IPHC as defined | |||
in 6LoWPAN Header Compression [RFC6282]. | in 6LoWPAN Header Compression [RFC6282]. | |||
A 6LoRH header being always placed in a Page 1 context, it MUST | A 6LoRH header being always placed in a Page 1 context, it MUST | |||
always be placed after any Fragmentation Header and/or Mesh Header | always be placed after any Fragmentation Header and/or Mesh Header | |||
[RFC4944]. | [RFC4944]. | |||
5. 6LoWPAN Routing Header General Format | 4. 6LoWPAN Routing Header General Format | |||
The 6LoRH reuses in Page 1 the Dispatch Value Bit Pattern of | The 6LoRH reuses in Page 1 the Dispatch Value Bit Pattern of | |||
10xxxxxx. | 10xxxxxx. | |||
The Dispatch Value Bit Pattern is split in two forms of 6LoRH: | The Dispatch Value Bit Pattern is split in two forms of 6LoRH: | |||
Elective (6LoRHE) that may skipped if not understood | Elective (6LoRHE) that may skipped if not understood | |||
Critical (6LoRHC) that may not be ignored | Critical (6LoRHC) that may not be ignored | |||
5.1. Elective Format | 4.1. Elective Format | |||
The 6LoRHE uses the Dispatch Value Bit Pattern of 101xxxxx. A 6LoRHE | The 6LoRHE uses the Dispatch Value Bit Pattern of 101xxxxx. A 6LoRHE | |||
may be ignored and skipped in parsing. If it is ignored, the 6LoRHE | may be ignored and skipped in parsing. If it is ignored, the 6LoRHE | |||
is forwarded with no change inside the LLN. | is forwarded with no change inside the LLN. | |||
0 1 | 0 1 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+ | |||
|1|0|1| Length | Type | | | |1|0|1| Length | Type | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+ | |||
<-- Length --> | <-- Length --> | |||
Figure 4: Elective 6LoWPAN Routing Header. | Figure 3: Elective 6LoWPAN Routing Header. | |||
Length: | Length: | |||
Length of the 6LoRHE expressed in bytes, excluding the first 2 | Length of the 6LoRHE expressed in bytes, excluding the first 2 | |||
bytes. This enables a node to skip a 6LoRHE header that it does | bytes. This enables a node to skip a 6LoRHE header that it does | |||
not support and/or cannot parse, for instance if the Type is not | not support and/or cannot parse, for instance if the Type is not | |||
known. | known. | |||
Type: | Type: | |||
Type of the 6LoRHE | Type of the 6LoRHE | |||
5.2. Critical Format | 4.2. Critical Format | |||
The 6LoRHC uses the Dispatch Value Bit Pattern of 100xxxxx. | The 6LoRHC uses the Dispatch Value Bit Pattern of 100xxxxx. | |||
A node which does not support the 6LoRHC Type MUST silently discard | A node which does not support the 6LoRHC Type MUST silently discard | |||
the packet. | the packet. | |||
Note: The situation where a node receives a message with a Critical | Note: The situation where a node receives a message with a Critical | |||
6LoWPAN Routing Header that it does not understand is a critical | 6LoWPAN Routing Header that it does not understand is a critical | |||
administrative error whereby the wrong device is placed in a network. | administrative error whereby the wrong device is placed in a network. | |||
It makes no sense to overburden the constrained device with code that | It makes no sense to overburden the constrained device with code that | |||
skipping to change at page 9, line 30 | skipping to change at page 1, line 338 | |||
should be avoided by judicious use of administrative control and/or | should be avoided by judicious use of administrative control and/or | |||
capability indications by the device manufacturer. | capability indications by the device manufacturer. | |||
0 1 | 0 1 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+ | |||
|1|0|0| TSE | Type | | | |1|0|0| TSE | Type | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+ | |||
<-- Length implied by Type/TSE --> | <-- Length implied by Type/TSE --> | |||
Figure 5: Critical 6LoWPAN Routing Header. | Figure 4: Critical 6LoWPAN Routing Header. | |||
TSE: | TSE: | |||
Type Specific Extension. The meaning depends on the Type, which | Type Specific Extension. The meaning depends on the Type, which | |||
must be known in all of the nodes. The interpretation of the TSE | must be known in all of the nodes. The interpretation of the TSE | |||
depends on the Type field that follows. For instance, it may be | depends on the Type field that follows. For instance, it may be | |||
used to transport control bits, the number of elements in an | used to transport control bits, the number of elements in an | |||
array, or the length of the remainder of the 6LoRHC expressed in a | array, or the length of the remainder of the 6LoRHC expressed in a | |||
unit other than bytes. | unit other than bytes. | |||
Type: | Type: | |||
Type of the 6LoRHC | Type of the 6LoRHC | |||
6. The Routing Header Type 3 (RH3) 6LoRH | 5. The Routing Header Type 3 (RH3) 6LoRH | |||
The Routing Header type 3 (RH3) 6LoRH (RH3-6LoRH) is a Critical | The Routing Header type 3 (RH3) 6LoRH (RH3-6LoRH) is a Critical | |||
6LoWPAN Routing Header that provides a compressed form for the RH3, | 6LoWPAN Routing Header that provides a compressed form for the RH3, | |||
as defined in [RFC6554] for use by RPL routers. Routers that need to | as defined in [RFC6554] for use by RPL routers. Routers that need to | |||
forward a packet with a RH3-6LoRH are expected to be RPL routers and | forward a packet with a RH3-6LoRH are expected to be RPL routers and | |||
are expected to support this specification. If a non-RPL router | are expected to support this specification. If a non-RPL router | |||
receives a packet with a RH3-6LoRH, this means that there was a | receives a packet with a RH3-6LoRH, this means that there was a | |||
routing error and the packet should be dropped so the Type cannot be | routing error and the packet should be dropped so the Type cannot be | |||
ignored. | ignored. | |||
0 1 | 0 1 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -+- -+ ... +- -+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -+- -+ ... +- -+ | |||
|1|0|0| Size |6LoRH Type 0..4| Hop1 | Hop2 | | HopN | | |1|0|0| Size |6LoRH Type 0..4| Hop1 | Hop2 | | HopN | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -+- -+ ... +- -+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -+- -+ ... +- -+ | |||
Size indicates the number of compressed addresses | Size indicates the number of compressed addresses | |||
Figure 6: The RH3-6LoRH. | Figure 5: The RH3-6LoRH. | |||
The values for the RH3-6LoRH Type are an enumeration, 0 to 4. The | The values for the RH3-6LoRH Type are an enumeration, 0 to 4. The | |||
form of compression is indicated by the Type. The unit (as a number | form of compression is indicated by the Type. The unit (as a number | |||
of bytes) in which the Size is expressed depends on the Type as | of bytes) in which the Size is expressed depends on the Type as | |||
described in Figure 7: | described in Figure 6: | |||
+-----------+-----------+ | +-----------+-----------+ | |||
| Type | Size Unit | | | Type | Size Unit | | |||
+-----------+-----------+ | +-----------+-----------+ | |||
| 0 | 1 | | | 0 | 1 | | |||
| 1 | 2 | | | 1 | 2 | | |||
| 2 | 4 | | | 2 | 4 | | |||
| 3 | 8 | | | 3 | 8 | | |||
| 4 | 16 | | | 4 | 16 | | |||
+-----------+-----------+ | +-----------+-----------+ | |||
Figure 7: The RH3-6LoRH Types. | Figure 6: The RH3-6LoRH Types. | |||
In the case of a RH3-6LoRH, the TSE field is used as a Size, which | In the case of a RH3-6LoRH, the TSE field is used as a Size, which | |||
encodes the number of hops minus 1; so a Size of 0 means one hop, and | encodes the number of hops minus 1; so a Size of 0 means one hop, and | |||
the maximum that can be encoded is 32 hops. (If more than 32 hops | the maximum that can be encoded is 32 hops. (If more than 32 hops | |||
need to be expressed, a sequence of RH3-6LoRH can be employed.) | need to be expressed, a sequence of RH3-6LoRH can be employed.) | |||
The Next Hop is indicated in the first entry of the first RH3-6LoRH. | The Next Hop is indicated in the first entry of the first RH3-6LoRH. | |||
Upon reception, the router checks whether it owns the address | Upon reception, the router checks whether it owns the address | |||
indicated as Next Hop, which MUST be the case in a strict source | indicated as Next Hop, which MUST be the case in a strict source | |||
routing environment. If it is so, the entry is removed from the | routing environment. If it is so, the entry is removed from the | |||
skipping to change at page 11, line 16 | skipping to change at page 1, line 421 | |||
from the final destination in the LoWPAN_IPHC, then that address may | from the final destination in the LoWPAN_IPHC, then that address may | |||
be compressed, otherwise it is expressed as a full IPv6 address of | be compressed, otherwise it is expressed as a full IPv6 address of | |||
128 bits. Next addresses only need to express the delta from the | 128 bits. Next addresses only need to express the delta from the | |||
previous address. | previous address. | |||
All addresses in a given RH3-6LoRH header are compressed in a same | All addresses in a given RH3-6LoRH header are compressed in a same | |||
fashion, down to the same number of bytes per address. In order to | fashion, down to the same number of bytes per address. In order to | |||
get different forms of compression, multiple consecutive RH3-6LoRH | get different forms of compression, multiple consecutive RH3-6LoRH | |||
must be used. | must be used. | |||
7. The RPL Packet Information 6LoRH | 6. The RPL Packet Information 6LoRH | |||
[RFC6550], Section 11.2, specifies the RPL Packet Information (RPI) | [RFC6550], Section 11.2, specifies the RPL Packet Information (RPI) | |||
as a set of fields that are placed by RPL routers in IP packets for | as a set of fields that are placed by RPL routers in IP packets for | |||
the purpose of Instance Identification, as well as Loop Avoidance and | the purpose of Instance Identification, as well as Loop Avoidance and | |||
Detection. | Detection. | |||
In particular, the SenderRank, which is the scalar metric computed by | In particular, the SenderRank, which is the scalar metric computed by | |||
an specialized Objective Function such as [RFC6552], indicates the | an specialized Objective Function such as [RFC6552], indicates the | |||
Rank of the sender and is modified at each hop. The SenderRank field | Rank of the sender and is modified at each hop. The SenderRank field | |||
is used to validate that the packet progresses in the expected | is used to validate that the packet progresses in the expected | |||
skipping to change at page 12, line 7 | skipping to change at page 1, line 461 | |||
[I-D.thubert-6lo-forwarding-fragments]. | [I-D.thubert-6lo-forwarding-fragments]. | |||
An additional overhead comes from the need, in certain cases, to add | An additional overhead comes from the need, in certain cases, to add | |||
an IP-in-IP encapsulation to carry the Hop-by-Hop header. This is | an IP-in-IP encapsulation to carry the Hop-by-Hop header. This is | |||
needed when the router that inserts the Hop-by-Hop header is not the | needed when the router that inserts the Hop-by-Hop header is not the | |||
source of the packet, so that an error can be returned to the router. | source of the packet, so that an error can be returned to the router. | |||
This is also the case when a packet originated by a RPL node must be | This is also the case when a packet originated by a RPL node must be | |||
stripped from the Hop-by-Hop header to be routed outside the RPL | stripped from the Hop-by-Hop header to be routed outside the RPL | |||
domain. | domain. | |||
This specification defines an IPinIP-6LoRH in Section 8 for that | This specification defines an IPinIP-6LoRH in Section 7 for that | |||
purpose, but it must be noted that stripping a 6LoRH does not require | purpose, but it must be noted that stripping a 6LoRH does not require | |||
a manipulation of the packet in the LOWPAN_IPHC, and thus, if the | a manipulation of the packet in the LOWPAN_IPHC, and thus, if the | |||
source address in the LOWPAN_IPHC is the node that inserted the | source address in the LOWPAN_IPHC is the node that inserted the | |||
IPinIP-6LoRH then this alone does not mandate an IPinIP-6LoRH. | IPinIP-6LoRH then this alone does not mandate an IPinIP-6LoRH. | |||
Note: A typical packet in RPL non-storing mode going down the RPL | Note: A typical packet in RPL non-storing mode going down the RPL | |||
graph requires an IP-in-IP encapsulating the RH3, whereas the RPI is | graph requires an IP-in-IP encapsulating the RH3, whereas the RPI is | |||
usually (and quite illegally) omitted, unless it is important to | usually (and quite illegally) omitted, unless it is important to | |||
indicate the RPLInstanceID. To match this structure, an optimized | indicate the RPLInstanceID. To match this structure, an optimized | |||
IP-in-IP 6LoRH is defined in Section 8. | IP-in-IP 6LoRH is defined in Section 7. | |||
As a result, a RPL packet may bear only an RPI-6LoRH and no IPinIP- | As a result, a RPL packet may bear only an RPI-6LoRH and no IPinIP- | |||
6LoRH. In that case, the source and destination of the packet are | 6LoRH. In that case, the source and destination of the packet are | |||
located in the LOWPAN_IPHC. | located in the LOWPAN_IPHC. | |||
As with [RFC6553], the fields in the RPI include an 'O', an 'R', and | As with [RFC6553], the fields in the RPI include an 'O', an 'R', and | |||
an 'F' bit, an 8-bit RPLInstanceID (with some internal structure), | an 'F' bit, an 8-bit RPLInstanceID (with some internal structure), | |||
and a 16-bit SenderRank. | and a 16-bit SenderRank. | |||
The remainder of this section defines the RPI-6LoRH, a Critical | The remainder of this section defines the RPI-6LoRH, a Critical | |||
6LoWPAN Routing Header that is designed to transport the RPI in | 6LoWPAN Routing Header that is designed to transport the RPI in | |||
6LoWPAN LLNs. | 6LoWPAN LLNs. | |||
7.1. Compressing the RPLInstanceID | 6.1. Compressing the RPLInstanceID | |||
RPL Instances are discussed in [RFC6550], Section 5. A number of | RPL Instances are discussed in [RFC6550], Section 5. A number of | |||
simple use cases do not require more than one instance, and in such | simple use cases do not require more than one instance, and in such | |||
cases, the instance is expected to be the global Instance 0. A | cases, the instance is expected to be the global Instance 0. A | |||
global RPLInstanceID is encoded in a RPLInstanceID field as follows: | global RPLInstanceID is encoded in a RPLInstanceID field as follows: | |||
0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
|0| ID | Global RPLInstanceID in 0..127 | |0| ID | Global RPLInstanceID in 0..127 | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
Figure 8: RPLInstanceID Field Format for Global Instances. | Figure 7: RPLInstanceID Field Format for Global Instances. | |||
For the particular case of the global Instance 0, the RPLInstanceID | For the particular case of the global Instance 0, the RPLInstanceID | |||
field is all zeros. This specification allows to elide a | field is all zeros. This specification allows to elide a | |||
RPLInstanceID field that is all zeros, and defines a I flag that, | RPLInstanceID field that is all zeros, and defines a I flag that, | |||
when set, signals that the field is elided. | when set, signals that the field is elided. | |||
7.2. Compressing the SenderRank | 6.2. Compressing the SenderRank | |||
The SenderRank is the result of the DAGRank operation on the rank of | The SenderRank is the result of the DAGRank operation on the rank of | |||
the sender; here the DAGRank operation is defined in [RFC6550], | the sender; here the DAGRank operation is defined in [RFC6550], | |||
Section 3.5.1, as: | Section 3.5.1, as: | |||
DAGRank(rank) = floor(rank/MinHopRankIncrease) | DAGRank(rank) = floor(rank/MinHopRankIncrease) | |||
If MinHopRankIncrease is set to a multiple of 256, the least | If MinHopRankIncrease is set to a multiple of 256, the least | |||
significant 8 bits of the SenderRank will be all zeroes; by eliding | significant 8 bits of the SenderRank will be all zeroes; by eliding | |||
those, the SenderRank can be compressed into a single byte. This | those, the SenderRank can be compressed into a single byte. This | |||
idea is used in [RFC6550] by defining DEFAULT_MIN_HOP_RANK_INCREASE | idea is used in [RFC6550] by defining DEFAULT_MIN_HOP_RANK_INCREASE | |||
as 256 and in [RFC6552] that defaults MinHopRankIncrease to | as 256 and in [RFC6552] that defaults MinHopRankIncrease to | |||
DEFAULT_MIN_HOP_RANK_INCREASE. | DEFAULT_MIN_HOP_RANK_INCREASE. | |||
This specification allows to encode the SenderRank as either one or | This specification allows to encode the SenderRank as either one or | |||
two bytes, and defines a K flag that, when set, signals that a single | two bytes, and defines a K flag that, when set, signals that a single | |||
byte is used. | byte is used. | |||
7.3. The Overall RPI-6LoRH encoding | 6.3. The Overall RPI-6LoRH encoding | |||
The RPI-6LoRH provides a compressed form for the RPL RPI. Routers | The RPI-6LoRH provides a compressed form for the RPL RPI. Routers | |||
that need to forward a packet with a RPI-6LoRH are expected to be RPL | that need to forward a packet with a RPI-6LoRH are expected to be RPL | |||
routers and expected to support this specification. If a non-RPL | routers and expected to support this specification. If a non-RPL | |||
router receives a packet with a RPI-6LoRH, this means that there was | router receives a packet with a RPI-6LoRH, this means that there was | |||
a routing error and the packet should be dropped so the Type cannot | a routing error and the packet should be dropped so the Type cannot | |||
be ignored. | be ignored. | |||
Since the I flag is not set, the TSE field does not need to be a | Since the I flag is not set, the TSE field does not need to be a | |||
length expressed in bytes. The field is fully reused for control | length expressed in bytes. The field is fully reused for control | |||
skipping to change at page 14, line 11 | skipping to change at page 1, line 553 | |||
RPLInstanceID is elided and/or the SenderRank is compressed and | RPLInstanceID is elided and/or the SenderRank is compressed and | |||
depending on these bits, the Length of the RPI-6LoRH may vary as | depending on these bits, the Length of the RPI-6LoRH may vary as | |||
described hereafter. | described hereafter. | |||
0 1 2 | 0 1 2 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ... -+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ... -+-+-+ | |||
|1|0|0|O|R|F|I|K| 6LoRH Type=5 | Compressed fields | | |1|0|0|O|R|F|I|K| 6LoRH Type=5 | Compressed fields | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ... -+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ... -+-+-+ | |||
Figure 9: The Generic RPI-6LoRH Format. | Figure 8: The Generic RPI-6LoRH Format. | |||
O, R, and F bits: | O, R, and F bits: | |||
The O, R, and F bits as defined in [RFC6550], Section 11.2. | The O, R, and F bits as defined in [RFC6550], Section 11.2. | |||
I bit: | I bit: | |||
If it is set, the Instance ID is elided and the RPLInstanceID | If it is set, the Instance ID is elided and the RPLInstanceID | |||
is the Global RPLInstanceID 0. If it is not set, the octet | is the Global RPLInstanceID 0. If it is not set, the octet | |||
immediately following the type field contains the RPLInstanceID | immediately following the type field contains the RPLInstanceID | |||
as specified in [RFC6550] section 5.1. | as specified in [RFC6550] section 5.1. | |||
K bit: | K bit: | |||
If it is set, the SenderRank is be compressed into one octet, | If it is set, the SenderRank is be compressed into one octet, | |||
and the lowest significant octet is elided. If it is not set, | and the lowest significant octet is elided. If it is not set, | |||
the SenderRank, is fully inlined as 2 octets. | the SenderRank, is fully inlined as 2 octets. | |||
In Figure 10, the RPLInstanceID is the Global RPLInstanceID 0, and | In Figure 9, the RPLInstanceID is the Global RPLInstanceID 0, and the | |||
the MinHopRankIncrease is a multiple of 256 so the least significant | MinHopRankIncrease is a multiple of 256 so the least significant byte | |||
byte is all zeros and can be elided: | is all zeros and can be elided: | |||
0 1 2 | 0 1 2 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|1|0|0|O|R|F|1|1| 6LoRH Type=5 | SenderRank | | |1|0|0|O|R|F|1|1| 6LoRH Type=5 | SenderRank | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
I=1, K=1 | I=1, K=1 | |||
Figure 10: The most compressed RPI-6LoRH. | Figure 9: The most compressed RPI-6LoRH. | |||
In Figure 11, the RPLInstanceID is the Global RPLInstanceID 0, but | In Figure 10, the RPLInstanceID is the Global RPLInstanceID 0, but | |||
both bytes of the SenderRank are significant so it can not be | both bytes of the SenderRank are significant so it can not be | |||
compressed: | compressed: | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|1|0|0|O|R|F|1|0| 6LoRH Type=5 | SenderRank | | |1|0|0|O|R|F|1|0| 6LoRH Type=5 | SenderRank | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
I=1, K=0 | I=1, K=0 | |||
Figure 11: Eliding the RPLInstanceID. | Figure 10: Eliding the RPLInstanceID. | |||
In Figure 12, the RPLInstanceID is not the Global RPLInstanceID 0, | In Figure 11, the RPLInstanceID is not the Global RPLInstanceID 0, | |||
and the MinHopRankIncrease is a multiple of 256: | and the MinHopRankIncrease is a multiple of 256: | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|1|0|0|O|R|F|0|1| 6LoRH Type=5 | RPLInstanceID | SenderRank | | |1|0|0|O|R|F|0|1| 6LoRH Type=5 | RPLInstanceID | SenderRank | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
I=0, K=1 | I=0, K=1 | |||
Figure 12: Compressing SenderRank. | Figure 11: Compressing SenderRank. | |||
In Figure 13, the RPLInstanceID is not the Global RPLInstanceID 0, | In Figure 12, the RPLInstanceID is not the Global RPLInstanceID 0, | |||
and both bytes of the SenderRank are significant: | and both bytes of the SenderRank are significant: | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|1|0|0|O|R|F|0|0| 6LoRH Type=5 | RPLInstanceID | Sender-... | |1|0|0|O|R|F|0|0| 6LoRH Type=5 | RPLInstanceID | Sender-... | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
...-Rank | | ...-Rank | | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
I=0, K=0 | I=0, K=0 | |||
Figure 13: Least compressed form of RPI-6LoRH. | Figure 12: Least compressed form of RPI-6LoRH. | |||
8. The IP-in-IP 6LoRH | 7. The IP-in-IP 6LoRH | |||
The IP-in-IP 6LoRH (IPinIP-6LoRH) is an Elective 6LoWPAN Routing | The IP-in-IP 6LoRH (IPinIP-6LoRH) is an Elective 6LoWPAN Routing | |||
Header that provides a compressed form for the encapsulating IPv6 | Header that provides a compressed form for the encapsulating IPv6 | |||
Header in the case of an IP-in-IP encapsulation. | Header in the case of an IP-in-IP encapsulation. | |||
An IP-in-IP encapsulation is used to insert a field such as a Routing | An IP-in-IP encapsulation is used to insert a field such as a Routing | |||
Header or an RPI at a router that is not the source of the packet. | Header or an RPI at a router that is not the source of the packet. | |||
In order to send an error back regarding the inserted field, the | In order to send an error back regarding the inserted field, the | |||
address of the router that performs the insertion must be provided. | address of the router that performs the insertion must be provided. | |||
skipping to change at page 16, line 11 | skipping to change at page 1, line 646 | |||
This field is not critical for routing so the Type can be ignored, | This field is not critical for routing so the Type can be ignored, | |||
and the TSE field contains the Length in bytes. | and the TSE field contains the Length in bytes. | |||
0 1 2 | 0 1 2 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+ | |||
|1|0|1| Length | 6LoRH Type 6 | Hop Limit | Encaps. Address | | |1|0|1| Length | 6LoRH Type 6 | Hop Limit | Encaps. Address | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+ | |||
Figure 14: The IPinIP-6LoRH. | Figure 13: The IPinIP-6LoRH. | |||
The Length of an IPinIP-6LoRH is expressed in bytes and MUST be at | The Length of an IPinIP-6LoRH is expressed in bytes and MUST be at | |||
least 1, to indicate a Hop Limit (HL), that is decremented at each | least 1, to indicate a Hop Limit (HL), that is decremented at each | |||
hop. When the HL reaches 0, the packet is dropped per [RFC2460] | hop. When the HL reaches 0, the packet is dropped per [RFC2460] | |||
If the Length of an IPinIP-6LoRH is exactly 1, then the Encapsulator | If the Length of an IPinIP-6LoRH is exactly 1, then the Encapsulator | |||
Address is elided, which means that the Encapsulator is a well-known | Address is elided, which means that the Encapsulator is a well-known | |||
router, for instance the root in a RPL graph. | router, for instance the root in a RPL graph. | |||
If the Length of an IPinIP-6LoRH is strictly more than 1, then an | If the Length of an IPinIP-6LoRH is strictly more than 1, then an | |||
skipping to change at page 17, line 5 | skipping to change at page 1, line 683 | |||
support this specification, then the chain of 6LoRH must be stripped | support this specification, then the chain of 6LoRH must be stripped | |||
by the RPL/6LR router to which the leaf is attached. In that | by the RPL/6LR router to which the leaf is attached. In that | |||
example, the destination IP address of the IP-in-IP header cannot be | example, the destination IP address of the IP-in-IP header cannot be | |||
elided. | elided. | |||
In the special case where the 6LoRH is used to route 6LoWPAN | In the special case where the 6LoRH is used to route 6LoWPAN | |||
fragments, the destination address is not accessible in the IPHC on | fragments, the destination address is not accessible in the IPHC on | |||
all fragments and can be elided only for the first fragment and for | all fragments and can be elided only for the first fragment and for | |||
packets going upwards. | packets going upwards. | |||
9. Security Considerations | 8. Security Considerations | |||
The security considerations of [RFC4944], [RFC6282], and [RFC6553] | The security considerations of [RFC4944], [RFC6282], and [RFC6553] | |||
apply. | apply. | |||
Using a compressed format as opposed to the full in-line format is | Using a compressed format as opposed to the full in-line format is | |||
logically equivalent and does not create an opening for a new threat | logically equivalent and does not create an opening for a new threat | |||
when compared to [RFC6550], [RFC6553] and [RFC6554]. | when compared to [RFC6550], [RFC6553] and [RFC6554]. | |||
10. IANA Considerations | 9. IANA Considerations | |||
This specification reserves the Dispatch Value Bit Patterns of | ||||
10xxxxxx within the 6LoWPAN Dispatch Page 1. | ||||
9.2. Nex 6LoWPAN Routing Header Type Registry | ||||
This document creates a IANA registry for the 6LoWPAN Routing Header | This document creates a IANA registry for the 6LoWPAN Routing Header | |||
Type, and assigns the following values: | Type, and assigns the following values: | |||
0..4 : RH3-6LoRH [RFCthis] | 0..4 : RH3-6LoRH [RFCthis] | |||
5 : RPI-6LoRH [RFCthis] | 5 : RPI-6LoRH [RFCthis] | |||
6 : IPinIP-6LoRH [RFCthis] | 6 : IPinIP-6LoRH [RFCthis] | |||
11. Acknowledgments | 10. Acknowledgments | |||
The authors wish to thank Thomas Watteyne, Tengfei Chang, Martin | The authors wish to thank Thomas Watteyne, Tengfei Chang, Martin | |||
Turon, James Woodyatt, Samita Chakrabarti, Jonathan Hui, Gabriel | Turon, James Woodyatt, Samita Chakrabarti, Jonathan Hui, Gabriel | |||
Montenegro and Ralph Droms for constructive reviews to the design in | Montenegro and Ralph Droms for constructive reviews to the design in | |||
the 6lo Working Group. The overall discussion involved participants | the 6lo Working Group. The overall discussion involved participants | |||
to the 6MAN, 6TiSCH and ROLL WGs, thank you all. Special thanks to | to the 6MAN, 6TiSCH and ROLL WGs, thank you all. Special thanks to | |||
the chairs of the ROLL WG, Michael Richardson and Ines Robles, and | the chairs of the ROLL WG, Michael Richardson and Ines Robles, and | |||
Brian Haberman, Internet Area A-D, and Adrian Farrel, Routing Area | Brian Haberman, Internet Area A-D, and Adrian Farrel, Routing Area | |||
A-D, for driving this complex effort across Working Groups and Areas. | A-D, for driving this complex effort across Working Groups and Areas. | |||
12. References | 11. References | |||
12.1. Normative References | 11.1. Normative References | |||
[I-D.ietf-paging-dispatch] | ||||
Thubert, P., "6LoWPAN Paging Dispatch", draft-ietf-paging- | ||||
dispatch-00 (work in progress), January 2016. | ||||
[IEEE802154] | [IEEE802154] | |||
IEEE standard for Information Technology, "IEEE std. | IEEE standard for Information Technology, "IEEE std. | |||
802.15.4, Part. 15.4: Wireless Medium Access Control (MAC) | 802.15.4, Part. 15.4: Wireless Medium Access Control (MAC) | |||
and Physical Layer (PHY) Specifications for Low-Rate | and Physical Layer (PHY) Specifications for Low-Rate | |||
Wireless Personal Area Networks", 2015. | Wireless Personal Area Networks", 2015. | |||
[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, DOI 10.17487/ | Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ | |||
RFC2119, March 1997, | RFC2119, March 1997, | |||
skipping to change at page 19, line 5 | skipping to change at page 17, line 43 | |||
[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, <http://www.rfc-editor.org/info/rfc7102>. | 2014, <http://www.rfc-editor.org/info/rfc7102>. | |||
[RFC7228] Bormann, C., Ersue, M., and A. Keranen, "Terminology for | [RFC7228] Bormann, C., Ersue, M., and A. Keranen, "Terminology for | |||
Constrained-Node Networks", RFC 7228, DOI 10.17487/ | Constrained-Node Networks", RFC 7228, DOI 10.17487/ | |||
RFC7228, May 2014, | RFC7228, May 2014, | |||
<http://www.rfc-editor.org/info/rfc7228>. | <http://www.rfc-editor.org/info/rfc7228>. | |||
12.2. Informative References | 11.2. Informative References | |||
[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-09 (work | of IEEE 802.15.4", draft-ietf-6tisch-architecture-09 (work | |||
in progress), November 2015. | in progress), November 2015. | |||
[I-D.robles-roll-useofrplinfo] | [I-D.robles-roll-useofrplinfo] | |||
Robles, I., Richardson, M., and P. Thubert, "When to use | Robles, I., Richardson, M., and P. Thubert, "When to use | |||
RFC 6553, 6554 and IPv6-in-IPv6", draft-robles-roll- | RFC 6553, 6554 and IPv6-in-IPv6", draft-robles-roll- | |||
useofrplinfo-02 (work in progress), October 2015. | useofrplinfo-02 (work in progress), October 2015. | |||
skipping to change at page 19, line 36 | skipping to change at page 18, line 29 | |||
<http://www.rfc-editor.org/info/rfc6775>. | <http://www.rfc-editor.org/info/rfc6775>. | |||
[RFC7554] Watteyne, T., Ed., Palattella, M., and L. Grieco, "Using | [RFC7554] Watteyne, T., Ed., Palattella, M., and L. Grieco, "Using | |||
IEEE 802.15.4e Time-Slotted Channel Hopping (TSCH) in the | IEEE 802.15.4e Time-Slotted Channel Hopping (TSCH) in the | |||
Internet of Things (IoT): Problem Statement", RFC 7554, | Internet of Things (IoT): Problem Statement", RFC 7554, | |||
DOI 10.17487/RFC7554, May 2015, | DOI 10.17487/RFC7554, May 2015, | |||
<http://www.rfc-editor.org/info/rfc7554>. | <http://www.rfc-editor.org/info/rfc7554>. | |||
Appendix A. Examples | Appendix A. Examples | |||
The example in Figure 15 illustrates the 6LoRH compression of a | The example in Figure 14 illustrates the 6LoRH compression of a | |||
classical packet in Storing Mode in all directions, as well as in | classical packet in Storing Mode in all directions, as well as in | |||
non-Storing mode for a packet going up the DODAG following the | non-Storing mode for a packet going up the DODAG following the | |||
default route to the root. In this particular example, a | default route to the root. In this particular example, a | |||
fragmentation process takes place per [RFC4944], and the fragment | fragmentation process takes place per [RFC4944], and the fragment | |||
headers must be placed in Page 0 before switching to Page 1: | headers must be placed in Page 0 before switching to Page 1: | |||
+- ... -+- ... -+-+ ... -+-+ ... -+- ... +-+-+-+-+-+-+-+-+-+-+- ... | +- ... -+- ... -+-+ ... -+-+ ... -+- ... +-+-+-+-+-+-+-+-+-+-+- ... | |||
|Frag type|Frag hdr |11110001| IPinIP | RPI | Dispatch + LOWPAN_IPHC | |Frag type|Frag hdr |11110001| IPinIP | RPI | Dispatch + LOWPAN_IPHC | |||
|RFC 4944 |RFC 4944 | Page 1 | 6LoRH | 6LoRH | RFC 6282 | |RFC 4944 |RFC 4944 | Page 1 | 6LoRH | 6LoRH | RFC 6282 | |||
+- ... -+- ... -+-+ ... -+-+ ... -+- ... +-+-+-+-+-+-+-+-+-+-+- ... | +- ... -+- ... -+-+ ... -+-+ ... -+- ... +-+-+-+-+-+-+-+-+-+-+- ... | |||
<- RFC 6282 -> | <- RFC 6282 -> | |||
No RPL artifact | No RPL artifact | |||
Figure 15: Example Compressed Packet with RPI. | Figure 14: Example Compressed Packet with RPI. | |||
The example illustrated in Figure 16 is a classical packet in non- | The example illustrated in Figure 15 is a classical packet in non- | |||
Storing mode for a packet going down the DODAG following a source | Storing mode for a packet going down the DODAG following a source | |||
routed path from the root; in this particular example, addresses in | routed path from the root; in this particular example, addresses in | |||
the DODAG are assigned to share a same /112 prefix, for instance | the DODAG are assigned to share a same /112 prefix, for instance | |||
taken from a /64 subnet with the first 6 octets of the suffix set to | taken from a /64 subnet with the first 6 octets of the suffix set to | |||
a constant such as all zeroes. In that case, all addresses but the | a constant such as all zeroes. In that case, all addresses but the | |||
first can be compressed to 2 octets, which means that there will be 2 | first can be compressed to 2 octets, which means that there will be 2 | |||
RH3_6LoRH headers, one to store the first complete address and the | RH3_6LoRH headers, one to store the first complete address and the | |||
one to store the sequence of addresses compressed to 2 octets (in | one to store the sequence of addresses compressed to 2 octets (in | |||
this example, 3 of them): | this example, 3 of them): | |||
+- ... -+- ... -+-+-+- ... -+-+-+-+-+ ... -+-+-+-+-+-+-+-+-+-+-+- ... | +- ... -+- ... -+-+-+- ... -+-+-+-+-+ ... -+-+-+-+-+-+-+-+-+-+-+- ... | |||
|11110001| IPinIP | RH3(128bits)| RH3(3*16bits)| Dispatch + LOWPAN_IPHC | |11110001| IPinIP | RH3(128bits)| RH3(3*16bits)| Dispatch + LOWPAN_IPHC | |||
|Page 1 | 6LoRH | 6LoRH | 6LoRH | RFC 6282 | |Page 1 | 6LoRH | 6LoRH | 6LoRH | RFC 6282 | |||
+- ... -+- ... +-+-+-+- ... -+-+-+-+-+ ... -+-+-+-+-+-+-+-+-+-+-+- ... | +- ... -+- ... +-+-+-+- ... -+-+-+-+-+ ... -+-+-+-+-+-+-+-+-+-+-+- ... | |||
<- RFC 6282 -> | <- RFC 6282 -> | |||
No RPL artifact | No RPL artifact | |||
Figure 16: Example Compressed Packet with RH3. | Figure 15: Example Compressed Packet with RH3. | |||
Note: the RPI is not represented since most implementations actually | Note: the RPI is not represented since most implementations actually | |||
refrain from placing it in a source routed packet though [RFC6550] | refrain from placing it in a source routed packet though [RFC6550] | |||
generally expects it. | generally expects it. | |||
Authors' Addresses | Authors' Addresses | |||
Pascal Thubert (editor) | Pascal Thubert (editor) | |||
Cisco Systems | Cisco Systems | |||
Building D - Regus | Building D - Regus | |||
End of changes. 53 change blocks. | ||||
154 lines changed or deleted | 97 lines changed or added | |||
This html diff was produced by rfcdiff 1.42. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |