RFC 8138
RFC 8138
Abstract
Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 7
3. Using the Page Dispatch . . . . . . . . . . . . . . . . . . . 7
3.1. New Routing Header Dispatch (6LoRH) . . . . . . . . . . . 7
3.2. Placement of 6LoRH Headers . . . . . . . . . . . . . . . 8
3.2.1. Relative to Non-6LoRH Headers . . . . . . . . . . . . 8
3.2.2. Relative to Other 6LoRH Headers . . . . . . . . . . . 8
4. 6LoWPAN Routing Header General Format . . . . . . . . . . . . 9
4.1. Elective Format . . . . . . . . . . . . . . . . . . . . . 10
4.2. Critical Format . . . . . . . . . . . . . . . . . . . . . 10
4.3. Compressing Addresses . . . . . . . . . . . . . . . . . . 11
4.3.1. Coalescence . . . . . . . . . . . . . . . . . . . . . 11
4.3.2. DODAG Root Address Determination . . . . . . . . . . 12
5. The SRH-6LoRH Header . . . . . . . . . . . . . . . . . . . . 13
5.1. Encoding . . . . . . . . . . . . . . . . . . . . . . . . 13
5.2. SRH-6LoRH General Operation . . . . . . . . . . . . . . . 14
5.2.1. Uncompressed SRH Operation . . . . . . . . . . . . . 14
5.2.2. 6LoRH-Compressed SRH Operation . . . . . . . . . . . 15
5.2.3. Inner LOWPAN_IPHC Compression . . . . . . . . . . . . 15
5.3. The Design Point of Popping Entries . . . . . . . . . . . 16
5.4. Compression Reference for SRH-6LoRH Header Entries . . . 17
5.5. Popping Headers . . . . . . . . . . . . . . . . . . . . . 18
5.6. Forwarding . . . . . . . . . . . . . . . . . . . . . . . 19
6. The RPL Packet Information 6LoRH (RPI-6LoRH) . . . . . . . . 19
6.1. Compressing the RPLInstanceID . . . . . . . . . . . . . . 21
6.2. Compressing the SenderRank . . . . . . . . . . . . . . . 21
6.3. The Overall RPI-6LoRH Encoding . . . . . . . . . . . . . 21
7. The IP-in-IP 6LoRH Header . . . . . . . . . . . . . . . . . . 24
8. Management Considerations . . . . . . . . . . . . . . . . . . 26
9. Security Considerations . . . . . . . . . . . . . . . . . . . 27
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 27
10.1. Reserving Space in 6LoWPAN Dispatch Page 1 . . . . . . . 27
10.2. New Critical 6LoWPAN Routing Header Type Registry . . . 28
10.3. New Elective 6LoWPAN Routing Header Type Registry . . . 28
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 28
11.1. Normative References . . . . . . . . . . . . . . . . . . 28
11.2. Informative References . . . . . . . . . . . . . . . . . 29
Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 31
A.1. Examples Compressing the RPI . . . . . . . . . . . . . . 31
A.2. Example of a Downward Packet in Non-Storing Mode . . . . 32
A.3. Example of SRH-6LoRH Life Cycle . . . . . . . . . . . . . 34
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 36
Authors’ Addresses . . . . . . . . . . . . . . . . . . . . . . . 37
1. Introduction
For reasons such as security and the capability to send ICMPv6 errors
(see "Internet Control Message Protocol (ICMPv6) for the Internet
Protocol Version 6 (IPv6) Specification" [RFC4443]) back to the
source, an original packet must not be tampered with, and any
information that must be inserted in or removed from an IPv6 packet
must be placed in an extra IP-in-IP encapsulation.
This is also the case when some routing information must be removed
from a packet that flows outside the LLN.
"When to use RFC 6553, RFC 6554 and IPv6-in-IPv6" [RPL-INFO] details
different cases where IPv6 headers defined in the RPL Option for
Carrying RPL Information in Data-Plane Datagrams [RFC6553], Header
for Source Routes with RPL [RFC6554], and IPv6-in-IPv6 encapsulation,
are inserted or removed from packets in LLN environments operating
RPL.
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| 0 | 1 | 1 | TF |NH | HLIM |CID|SAC| SAM | M |DAC| DAM |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
"The Routing Protocol for Low-Power and Lossy Networks (RPL) Option
for Carrying RPL Information in Data-Plane Datagrams" [RFC6553]
specification indicates how the RPI can be placed in a RPL Option
(RPL-OPT) that is placed in an IPv6 Hop-by-Hop header.
in packets entering the domain and be removed from packets that leave
the domain. In both cases, this operation implies an IP-in-IP
encapsulation.
------+--------- ^
| Internet |
| | Native IPv6
+-----+ |
| | Border Router (RPL Root) + | +
| | | | |
+-----+ | | | tunneled
| | | | using
o o o o | | | IPv6-in-
o o o o o o o o o | | | IPv6 and
o o o o o o o o o o | | | RPL SRH
o o o o o o o o o | | |
o o o o o o o o | | |
o o o o + v +
LLN
With Non-Storing RPL, even if the source is a node in the same LLN,
the packet must first reach up the graph to the root so that the root
can insert the SRH 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 whether or not the packet stays within the LLN, as long
as the source 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 the SRH.
"An Architecture for IPv6 over the TSCH mode of IEEE 802.15.4"
[IPv6-ARCH] specifies the operation of IPv6 over the mode of
operation described in "Using IEEE 802.15.4e Time-Slotted Channel
Hopping (TSCH) in the Internet of Things (IoT): Problem Statement"
[RFC7554]. The architecture requires the use of both RPL and the 6lo
adaptation layer over IEEE 802.15.4. Because it inherits the
constraints on frame size from the MAC layer, 6TiSCH cannot afford to
allocate 8 bytes per packet on the RPI, hence the requirement for
6LoWPAN header compression of the RPI.
2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in RFC
2119 [RFC2119].
This document uses the terms from, and is consistent with, "Terms
Used in Routing for Low-Power and Lossy Networks" [RFC7102] and RPL
[RFC6550].
The term "byte" is used in its now customary sense as a synonym for
"octet".
This specification uses the bit pattern 10xxxxxx in Page 1 for the
new 6LoRH Dispatch. Section 4 describes how RPL artifacts in data
packets can be compressed as 6LoRH headers.
In a zone of a packet where Page 1 is active (that is, once the Page
1 Paging Dispatch is parsed, and until another Paging Dispatch is
parsed as described in the 6LoWPAN Paging Dispatch specification
[RFC8025]), the parsing of the packet MUST follow this specification
if the 6LoRH Bit Pattern (see Section 3.1) is found.
With regard to the relative placement of the SRH and the RPI in the
compressed form, it is a design point for this specification that the
SRH entries are consumed as the packet progresses down the LLN (see
Section 5.3). In order to make this operation simpler in the
compressed form, it is REQUIRED that in the compressed form, the
addresses along the source route path are encoded in the order of the
path, and that the compressed SRH are placed before the compressed
RPI.
The 6LoRH uses the Dispatch Value Bit Pattern of 10xxxxxx in Page 1.
For each form, a Type field is used to encode the type of 6LoRH.
Note that there is a different registry for the Type field of each
form of 6LoRH.
This means that a value for the Type that is defined for one form of
6LoRH may be redefined in the future for the other form.
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
is forwarded with no change inside the LLN.
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+
|1|0|1| Length | Type | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+
<-- Length -->
A node that does not support the 6LoRHC Type MUST silently discard
the packet.
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+
|1|0|0| TSE | Type | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+
<-- Length implied by Type/TSE -->
4.3.1. Coalescence
With RFC 6282 [RFC6282], the state is provided to the stack by the
6LoWPAN Neighbor Discovery Protocol (NDP) [RFC6775]. NDP exchanges
the context through the 6LoWPAN Context Option in Router
Advertisement (RA) messages. In the compressed form of the packet,
the context can be signaled in a Context Identifier Extension.
With RPL [RFC6550], the address of the DODAG root is known from the
DODAGID field of the DIO messages. For a Global Instance, the
RPLInstanceID that is present in the RPI is enough information to
identify the DODAG that this node participates with and its
associated root. But, for a Local Instance, the address of the root
MUST be explicit, either in some device configuration or signaled in
the packet, as the source or the destination address, respectively.
If the whole network is a single DODAG, then the root can be well-
known and does not need to be signaled in the packets. But, since
RPL does not expose that property, it can only be known by a
configuration applied to all nodes.
5.1. Encoding
The desired reaction for the non-RPL router is to drop the packet, as
opposed to skipping the header and forwarding the packet.
The Dispatch Value Bit Pattern for the SRH-6LoRH header indicates it
is Critical. Routers that understand the 6LoRH general format
detailed in Section 4 cannot ignore a 6LoRH header of this type and
will drop the packet if it is unknown to them.
0 1
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -+- -+ ... +- -+
Where N = Size + 1
Type 0 means that the address is compressed down to one byte, whereas
Type 4 means that the address is provided in full in the SRH-6LoRH
with no compression. The complete list of Types of SRH-6LoRH and the
corresponding compression level are provided in Figure 7:
+-----------+----------------------+
| 6LoRH | Length of compressed |
| Type | IPv6 address (bytes) |
+-----------+----------------------+
| 0 | 1 |
| 1 | 2 |
| 2 | 4 |
| 3 | 8 |
| 4 | 16 |
+-----------+----------------------+
2 + Length_of_compressed_IPv6_address * (Size + 1)
All the hops along the path, except the first one, are encoded in
order in the SRH. The last entry in the SRH is the final
destination; the destination in the IPv6 header is the first hop
along the source route path. The intermediate hops perform a swap
and the Segments Left field indicates the active entry in the Routing
Header [RFC2460].
When compressed with this specification, all the remaining hops MUST
be encoded in order in one or more consecutive SRH-6LoRH headers.
Whether or not there is an SRH-6LoRH header present, the address of
the final destination is indicated in the LOWPAN_IPHC at all times
along the path. Examples of this are provided in Appendix A.
The last entry in the last SRH-6LoRH is the last router on the way to
the final destination in the LLN. This router can be the final
destination if it is found desirable to carry a whole IP-in-IP
encapsulation all the way. Else, it is the RPL parent of the final
destination, or a router acting at 6LoWPAN Router (6LR) [RFC6775] for
the destination host, and it is advertising the host as an external
route to RPL.
With this specification, the packet can be expanded at any hop into a
valid IPv6 packet, including an SRH, and compressed back. But the
packet, as decompressed along the way, will not carry all the
consumed addresses that packet would have if it had been forwarded in
the uncompressed form.
It is noted that:
Upon reception, the router checks whether the address in the first
entry of the first SRH-6LoRH is one of its own addresses. If that is
the case, the router MUST consume that entry before forwarding, which
is an action of popping from a stack, where the stack is effectively
the sequence of entries in consecutive SRH-6LoRH headers.
5.6. Forwarding
If this router is the current segment endpoint, then the router pops
its address as described in Section 5.5 and continues processing the
packet.
The router then coalesces the Compression Reference with the first
entry of the first SRH-6LoRH header as discussed in Section 5.4.
If the SRH-6LoRH header is Type 4, then the coalescence is a full
override.
Section 11.2 of the RPL document [RFC6550] specifies the RPL Packet
Information (RPI) as a set of fields that are placed by RPL routers
in IP packets to identify the RPL Instance, detect anomalies, and
trigger corrective actions.
RPL defines the "The Routing Protocol for Low-Power and Lossy
Networks (RPL) Option for Carrying RPL Information in Data-Plane
Datagrams" [RFC6553] to transport the RPI, which is carried in an
IPv6 Hop-by-Hop Options Header [RFC2460], typically consuming 8 bytes
per packet.
With RFC 6553 [RFC6553], the RPL Option is encoded as 6 octets, which
must be placed in a Hop-by-Hop header that consumes two additional
octets for a total of 8 octets. To limit the header’s range to just
the RPL domain, the Hop-by-Hop header must be added to (or removed
from) packets that cross the border of the RPL domain.
Note: It was found that some implementations omit the RPI for packets
going down the RPL graph in Non-Storing mode, even though RPL
indicates that the RPI should be placed in the packet. With this
specification, the RPI is important to indicate the RPLInstanceID, so
the RPI should not be omitted.
As with RFC 6553 [RFC6553], the fields in the RPI include an ’O’, an
’R’, and an ’F’ bit, an 8-bit RPLInstanceID (with some internal
structure), and a 16-bit SenderRank.
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|0| ID | Global RPLInstanceID in 0..127
+-+-+-+-+-+-+-+-+
DAGRank(rank) = floor(rank/MinHopRankIncrease)
The RPI-6LoRH header provides a compressed form for the RPL RPI.
Routers that need to forward a packet with a RPI-6LoRH header are
expected to be RPL routers that support this specification.
The desired reaction for the non-RPL router is to drop the packet as
opposed to skip the header and forward the packet, which could end up
forming loops by reinjecting the packet in the wrong RPL Instance.
The Dispatch Value Bit Pattern for the SRH-6LoRH header indicates it
is Critical. Routers that understand the 6LoRH general format
detailed in Section 4 cannot ignore a 6LoRH header of this type and
will drop the packet if it is unknown to them.
Since the RPI-6LoRH header is a Critical header, the TSE field does
not need to be a length expressed in bytes. Here, the field is fully
reused for control bits that encode the O, R, and F flags from the
RPI, as well as the I and K flags that indicate the compression
format.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ... -+-+-+
|1|0|0|O|R|F|I|K| 6LoRH Type=5 | Compressed fields |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ... -+-+-+
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1|0|0|O|R|F|1|1| 6LoRH Type=5 | SenderRank |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
I=1, K=1
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1|0|0|O|R|F|1|0| 6LoRH Type=5 | SenderRank |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
I=1, K=0
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1|0|0|O|R|F|0|1| 6LoRH Type=5 | RPLInstanceID | SenderRank |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
I=0, K=1
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1|0|0|O|R|F|0|0| 6LoRH Type=5 | RPLInstanceID | Sender-...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...-Rank |
+-+-+-+-+-+-+-+-+
I=0, K=0
The encapsulation can also enable the last router prior to the
Destination to remove a field such as the RPI, but this can be done
in the compressed form by removing the RPI-6LoRH, so an IP-in-IP-
6LoRH encapsulation is not required for that sole purpose.
The Dispatch Value Bit Pattern for the SRH-6LoRH header indicates it
is Elective. This field is not Critical for routing since it does
not indicate the destination of the packet, which is either encoded
in an SRH-6LoRH header or in the inner IP header. A 6LoRH header of
this type can be skipped if not understood (per Section 4), and the
6LoRH header indicates the Length in bytes.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+
|1|0|1| Length | 6LoRH Type 6 | Hop Limit | Encaps. Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+
8. Management Considerations
When a packet is expected to carry a 6LoRH header but does not, the
node that discovers the issue is expected to send an ICMPv6 error
message to the root. It should be sent at an adapted rate-limitation
and with a type 4 (indicating a "Parameter Problem") and a code 0
(indicating an "Unrecognized Next Header field encountered"). The
relevant portion of the received packet should be embedded and the
offset therein where the 6LoRH header was expected should be pointed
out.
In both cases, the node SHOULD NOT place a 6LoRH header as defined in
this specification in the resulting message, and the node should
either omit the RPI or place it uncompressed after the IPv6 header.
9. Security Considerations
Additionally, this document creates two IANA registries: one for the
Critical 6LoWPAN Routing Header Type and one for the Elective 6LoWPAN
Routing Header Type, each with 256 possible values, from 0 to 255, as
described below.
5: RPI-6LoRH [RFC8138]
6: IP-in-IP-6LoRH [RFC8138]
11. References
[IEEE.802.15.4]
IEEE, "IEEE Standard for Low-Rate Wireless Networks",
IEEE 802.15.4-2015, DOI 10.1109/IEEESTD.2016.7460875,
<http://ieeexplore.ieee.org/document/7460875/>.
[RFC6282] Hui, J., Ed. and P. Thubert, "Compression Format for IPv6
Datagrams over IEEE 802.15.4-Based Networks", RFC 6282,
DOI 10.17487/RFC6282, September 2011,
<http://www.rfc-editor.org/info/rfc6282>.
[RFC6550] Winter, T., Ed., Thubert, P., Ed., Brandt, A., Hui, J.,
Kelsey, R., Levis, P., Pister, K., Struik, R., Vasseur,
JP., and R. Alexander, "RPL: IPv6 Routing Protocol for
Low-Power and Lossy Networks", RFC 6550,
DOI 10.17487/RFC6550, March 2012,
<http://www.rfc-editor.org/info/rfc6550>.
[RFC6552] Thubert, P., Ed., "Objective Function Zero for the Routing
Protocol for Low-Power and Lossy Networks (RPL)",
RFC 6552, DOI 10.17487/RFC6552, March 2012,
<http://www.rfc-editor.org/info/rfc6552>.
[RFC6553] Hui, J. and JP. Vasseur, "The Routing Protocol for Low-
Power and Lossy Networks (RPL) Option for Carrying RPL
Information in Data-Plane Datagrams", RFC 6553,
DOI 10.17487/RFC6553, March 2012,
<http://www.rfc-editor.org/info/rfc6553>.
[RFC6554] Hui, J., Vasseur, JP., Culler, D., and V. Manral, "An IPv6
Routing Header for Source Routes with the Routing Protocol
for Low-Power and Lossy Networks (RPL)", RFC 6554,
DOI 10.17487/RFC6554, March 2012,
<http://www.rfc-editor.org/info/rfc6554>.
[FORWARD-FRAG]
Thubert, P., Ed. and J. Hui, "LLN Fragment Forwarding and
Recovery", Work in Progress, draft-thubert-6lo-forwarding-
fragments-05, April 2017.
[IPv6-ARCH]
Thubert, P., Ed., "An Architecture for IPv6 over the TSCH
mode of IEEE 802.15.4", Work in Progress,
draft-ietf-6tisch-architecture-11, January 2017.
Appendix A. Examples
+- ... -+- ... -+-+ ... -+- ... +-+-+ ... -+-+-+-+-+-+-+-+-+-+...
|Frag type|Frag hdr |11110001| RPI- |IP-in-IP| LOWPAN_IPHC | ...
|RFC 4944 |RFC 4944 | Page 1 | 6LoRH | 6LoRH | |
+- ... -+- ... -+-+ ... -+- ... +-+-+ ... -+-+-+-+-+-+-+-+-+-+...
<- RFC 6282 ->
No RPL artifact
+- ... -+- ... -+-+ ... -+-+ ... -+- ... +-+-+-+-+-+-+-+-+-+-+...
|Frag type|Frag hdr |
|RFC 4944 |RFC 4944 | Payload (cont)
+- ... -+- ... -+-+ ... -+-+ ... -+- ... +-+-+-+-+-+-+-+-+-+-+...
+- ... -+- ... -+-+ ... -+-+ ... -+- ... +-+-+-+-+-+-+-+-+-+-+...
|Frag type|Frag hdr |
|RFC 4944 |RFC 4944 | Payload (cont)
+- ... -+- ... -+-+ ... -+-+ ... -+- ... +-+-+-+-+-+-+-+-+-+-+...
In Storing mode, if the packet stays within the RPL domain, then it
is possible to save the IP-in-IP encapsulation, in which case, only
the RPI is compressed with a 6LoRH, as illustrated in Figure 16 in
the case of a non-fragmented ICMP packet:
For a UDP packet, the transport header can be compressed with 6LoWPAN
HC [RFC6282] as illustrated in Figure 18:
If the packet is received from the Internet in Storing mode, then the
root is supposed to encapsulate the packet to insert the RPI. The
resulting format would be as represented in Figure 19:
+-+ ... -+-+-...-+-+-- ... -+-+-+-+- ... -+-+ ... -+-+-+ ... -+-+-+...
|11110001| RPI- | IP-in-IP | NH=1 |11110CPP| Compressed | UDP
|Page 1 | 6LoRH | 6LoRH | LOWPAN_IPHC | UDP | UDP header | Payld
+-+ ... -+-+-...-+-+-- ... -+-+-+-+- ... -+-+ ... -+-+-+ ... -+-+-+...
<- RFC 6282 ->
No RPL artifact
+-+ ... -+-+ ... +-+- ... -+-+- ... +-+-+-+ ... +-+-+ ... -+ ... +-...
|11110001|SRH-6LoRH| RPI- | IP-in-IP | NH=1 |11110CPP| UDP | UDP
|Page 1 |Type1 S=2| 6LoRH | 6LoRH |LOWPAN_IPHC| UDP | hdr |Payld
+-+ ... -+-+ ... +-+- ... -+-+-- ... -+-+-+ ... +-+-+ ... -+ ... +-...
<-8bytes-> <- RFC 6282 ->
No RPL artifact
One may note that the RPI is provided. This is because the address
of the root that is the source of the IP-in-IP header is elided and
inferred from the RPLInstanceID in the RPI. Once found from a local
context, that address is used as a Compression Reference to expand
addresses in the SRH-6LoRH.
But, if the root generates the packet towards a node in its DODAG,
then it should avoid the extra IP-in-IP as illustrated in Figure 21:
In Figure 21, all the nodes along the source route path share the
same /112 prefix. This is typical of IPv6 addresses derived from an
IEEE802.15.4 short address, as long as all the nodes share the same
PAN-ID. In that case, a Type 1 SRH-6LoRH header can be used for
encoding. The IPv6 address of the root is taken as reference, and
only the last 2 octets of the address of the intermediate hops are
encoded. The Size of 3 indicates 4 hops, resulting in an SRH-6LoRH
of 10 bytes.
Step 1: Popping CCCC CCCC, the first entry of the next SRH-6LoRH
Step 2: Removing the first entry and decrementing the Size (by 1)
Step 3: Recursion ended; coalescing CCCC CCCC with the first entry
Type 3 SRH-6LoRH Size = 0 AAAA AAAA CCCC CCCC
Step 1: Popping DDDD DDDD, the first entry of the next SRH-6LoRH
Step 2: The SRH-6LoRH is removed
Step 3: Recursion ended; coalescing DDDD DDDDD with the first entry
Type 3 SRH-6LoRH Size = 0 AAAA AAAA DDDD DDDD
Acknowledgements
Authors’ Addresses
Phone: +33 4 97 23 26 34
Email: [email protected]
Carsten Bormann
Universitaet Bremen TZI
Postfach 330440
Bremen D-28359
Germany
Phone: +49-421-218-63921
Email: [email protected]
Laurent Toutain
IMT Atlantique
2 rue de la Chataigneraie
CS 17607
Cesson-Sevigne Cedex 35576
France
Email: [email protected]
Robert Cragie
ARM Ltd.
110 Fulbourn Road
Cambridge CB1 9NJ
United Kingdom
Email: [email protected]