メインコンテンツまでスキップ

4. Extending and Amending Existing RFCs

This section preserves the RFC text for RPL DAO Projection and root-initiated routing state, including P-DAO, P-DAO-ACK, P-DAO-REQ, PDR-ACK, VIO, SIO, RPI, SRH, Storing and Non-Storing P-Routes, Tracks, IANA registrations, and normative behavior.

Original RFC Text

4.  Extending and Amending Existing RFCs

This section explains which changes are extensions and which are
amendments to existing specifications. It is expected that
extensions to existing specifications will not cause existing code on
legacy 6LRs to malfunction, as the extensions will simply be ignored.
New code is required for an extension. Those 6LRs will be unable to
function in the new mechanisms and may also make the P-DAOs
impossible to install. Amendments to existing specifications are
situations where there are semantic changes required to existing code
and where new unit tests may be required to confirm that legacy
operations will continue unaffected.

4.1. Extending RFC 6550

This specification Extends RPL [RPL] to enable the Root to install
forward routes inside a main DODAG that is operated as Non-Storing
Mode. The Root issues a P-DAO message (see Section 4.1.1) to the
Track ingress; the P-DAO message contains a new VIO that installs a
strict or a loose sequence of hops to form a Track segment or a
protection path, respectively.

The Projected DAO Request (P-DAO-REQ) is a new message detailed in
Section 5.1. As per Section 6 of [RPL], if a node receives this
message and it does not understand this new code, it discards the
message. When the Root initiates communication to a node that it has
not communicated with before and that it has not ascertained to
implement this specification (by means such as capabilities), then
the Root SHOULD request a Projected DAO Request Acknowledgment (PDR-
ACK).

A P-DAO-REQ message enables a Track ingress to request the Track from
the Root. The resulting Track is also a DODAG for which the Track
ingress is the Root, and the owner is the address that serves as the
DODAGID and is authoritative for the associated namespace from which
the TrackID is selected. In the context of this specification, the
installed route appears as a more-specific route to the Track
Targets, and the Track ingress forwards the packets toward the
Targets via the Track using normal longest match IP forwarding.

To ensure that the P-DAO-REQ and P-DAO messages can flow at most
times, it is RECOMMENDED that the nodes involved in a Track maintain
multiple parents in the main DODAG, advertise them all to the Root,
and use them in turn to retry similar packets. It is also
RECOMMENDED that the Root uses diverse source route paths to retry
similar messages to the nodes in the Track.

4.1.1. Projected DAO

Section 6 of [RPL] introduces the RPL Control Message Options (CMOs),
including the RPL Target Option (RTO) and Transit Information Option
(TIO), which can be placed in RPL messages such as the DAO. A DAO
message signals routing information to one or more Targets indicated
in the RTOs and provides one and only one via-node in the TIO, with
the via-node being the tunnel endpoint to reach the targets.

This document Amends the specification of the DAO to create the P-DAO
message. This Amended DAO is signaled with a new "Projected DAO" (P)
flag; see Figure 8.

A P-DAO is a special DAO message generated by the Root to install a
P-Route formed of multiple hops in its DODAG. This provides a RPL-
based method to install the Tracks as a collection of multiple
P-Routes as expected by the 6TiSCH architecture [RFC9030].

The Root MUST source the P-DAO message with its address that serves
as the DODAGID for the main DODAG. The receiver MUST NOT accept a
P-DAO message that is not sent by the Root of its DODAG and MUST
ignore such messages silently.

The 'P' flag is encoded in bit position 2 of the Flags field in the
DAO Base Object. The Root MUST set it to 1 in a P-DAO message.
Otherwise, it MUST be set to 0. It is set to 0 in legacy
implementations as specified, respectively, in Sections 20.11 and 6.4
of [RPL].

The P-DAO is a part of control plane signaling and should not be
stuck behind high traffic levels. The expectation is that the P-DAO
message be sent at a high QoS level, above that of data traffic,
typically with the Network Control precedence.

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TrackID |K|D|P| Flags | Reserved | DAOSequence |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| DODAGID field is set to the |
+ IPv6 address of the Track ingress +
| used to source encapsulated packets |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option(s)...
+-+-+-+-+-+-+-+-+

Figure 8: Projected DAO Base Object

New fields:

TrackID: The Local or Global RPLInstanceID of the DODAG that serves
as the Track (see more in Section 6.3).

P: 1-bit flag.

The 'P' flag is set to 1 by the Root to signal a P-DAO; otherwise,
it is set to 0.

The 'D' flag is set to 1 to signal that the DODAGID field is present.
It may be set to 0 if and only if the destination address of the
Projected DAO Acknowledgment (P-DAO-ACK) message is set to the IPv6
address that serves as the DODAGID, and it MUST be set to one
otherwise, meaning that the DODAGID field MUST then be present.

In RPL Non-Storing Mode, the TIO and RTO are combined in a DAO
message to inform the DODAG Root of all the edges in the DODAG, which
are formed by the directed parent-child relationships. The DAO
message signals to the Root that a given parent can be used to reach
a given child. The P-DAO message generalizes the DAO to signal to
the Track ingress that a Track, for which the sender is the Root, can
be used to reach children and siblings of the Track egress. In both
cases, options may be factorized and multiple RTOs may be present to
signal a collection of children that can be reached through the
parent or the Track, respectively.

4.1.2. Projected DAO Acknowledgment

This document also Amends the DAO-ACK message. The new 'P' flag
signals the projected form.

The format of the P-DAO-ACK message is thus illustrated in Figure 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 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TrackID |D|P| Reserved | DAOSequence | Status |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| DODAGID field is set to the |
+ IPv6 address of the Track ingress +
| used to source encapsulated packets |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option(s)...
+-+-+-+-+-+-+-+-+

Figure 9: P-DAO-ACK Base Object

New fields:

TrackID: The Local or Global RPLInstanceID of the DODAG that serves
as the Track (see more in Section 6.3).

P: 1-bit flag.

The 'P' flag is set to 1 by the Root to signal a P-DAO; otherwise,
it is set to 0.

The 'D' flag is set to 1 to signal that the DODAGID field is present.
It may be set to 0 if and only if the source address of the P-DAO-ACK
message is set to the IPv6 address that serves as the DODAGID, and it
MUST be set to one otherwise, meaning that the DODAGID field MUST
then be present.

4.1.3. Via Information Option

This document Extends the CMO to create new objects called Via
Information Options (VIOs). The VIOs are the multi-hop alternative
to the TIOs (see more in Section 5.3). One VIO is the stateful
Storing Mode VIO (SM-VIO); an SM-VIO installs a strict hop-by-hop
P-Route called a Track segment. The other is the Non-Storing Mode
VIO (NSM-VIO); the NSM-VIO installs a loose source-routed P-Route
called a protection path at the Track ingress, which uses that state
to encapsulate an IP-in-IP packet with a new Routing Header (RH) to
the Track egress (see more in Section 6.7).

A P-DAO contains one or more RTOs to indicate the Target
(destinations) that can be reached via the P-Route, followed by
exactly one VIO that signals the sequence of nodes to be followed
(see more in Section 6). There are two modes of operation for the
P-Routes: Storing Mode and Non-Storing Mode (see more in Sections
6.4.2 and 6.4.3, respectively).

4.1.4. Sibling Information Option

This specification Extends the CMO to create the Sibling Information
Option (SIO). The SIO is used by a RPL-Aware Node (RAN) to advertise
a selection of its candidate neighbors as siblings to the Root (see
more in Section 5.4). The SIO is placed in DAO messages that are
sent directly to the main Root, including multicast DAO (see
Section 9.10 of [RPL]).

This specification Amends rules 1 and 2 listed in Section 9.10 of
[RPL] for the multicast DAO operation as follows:

OLD:

| 1. A node MAY multicast a DAO message to the link-local scope
| all-RPL-nodes multicast address.
|
| 2. A multicast DAO message MUST be used only to advertise
| information about the node itself, i.e., prefixes directly
| connected to or owned by the node, such as a multicast group
| that the node is subscribed to or a global address owned by
| the node

NEW:

| 1. A multicast DAO message MUST be used only to advertise
| information about the node (using the Target Option) and
| direct Link Neighbors such as learned by Neighbor Discovery
| (using the SIO).
|
| 2. The multicast DAO may be used to enable direct and indirect
| (via a common neighbor) P2P communication without needing the
| DODAG to relay the packets. The multicast DAO exposes the
| sender's addresses as Targets in RTOs and the sender's
| neighbors addresses as siblings in SIOs; this tells the
| sender's neighbors that the sender is willing to act as a
| relay between those of its neighbors that are too far apart.

4.1.5. P-DAO Request

The set of RPL Control Messages is Extended to include the P-DAO-REQ
and PDR-ACK. These two new RPL Control Messages enable a RAN to
request the establishment of a Track between itself (as the Track
ingress Node) and a Track egress. The node makes its request by
sending a new P-DAO-REQ message to the Root. The Root confirms with
a new PDR-ACK message back to the requester RAN; see Section 5.1 for
more.

4.1.6. Amending the RPI

Sending a packet within a RPL Local Instance requires the presence of
the abstract RPI described in Section 11.2 of [RPL] in the outer IPv6
header chain (see [RFC9008]). The RPI carries a Local RPLInstanceID
that, in association with either the source or the destination
address in the IPv6 header, indicates the RPL Instance that the
packet follows.

This specification Amends [RPL] to create a new flag that signals
when a packet is forwarded along a P-Route.

Projected-Route 'P': 1-bit flag. It is set to 1 in the RPI that is
added in the encapsulation when a packet is sent over a Track. It
is set to 0 when a packet is forwarded along the main DODAG (as a
Track), including when the packet follows a segment that joins
loose hops of the main DODAG. The flag is not mutable en route.

The encoding of the 'P' flag in native format is shown in Section 4.2
while the compressed format is indicated in Section 4.3.

4.1.7. Additional Flag in the RPL DODAG Configuration Option

The DODAG Configuration option is defined in Section 6.7.6 of [RPL].
Its purpose is extended to distribute configuration information
affecting the construction and maintenance of the DODAG, as well as
operational parameters for RPL on the DODAG, through the DODAG. This
option was originally designed with four bit positions reserved for
future use as Flags.

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 0x04 |Opt Length = 14|D| | | |A| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
|4 bits |

Figure 10: DODAG Configuration Option (Partial View)

This specification Amends [RPL] to define the new "Projected Routes
Support" (D) flag. The 'D' flag is encoded in bit position 0 of the
reserved Flags in the DODAG Configuration option (this is the most
significant bit). It is set to 0 in legacy implementations as
specified respectively in Sections 20.14 and 6.7.6 of [RPL].

The 'D' flag is set to 1 to indicate that this specification is
enabled in the network and that the Root will install the requested
Tracks when feasible upon receiving a P-DAO-REQ message.

Section 4.1.2 of [RFC9008] Amends [RPL] to indicate that the
definition of the Flags applies to MOP values from zero (0) to six
(6) only. For a MOP value of 7, the implementation MUST consider
that the Root accepts P-DAO-REQ messages and will install P-Routes.

The RPL DODAG Configuration option is typically placed in a DIO
message. The DIO message propagates down the DODAG to form and then
maintain its structure. The DODAG Configuration option is copied
unmodified from parents to children.

[RPL] states that:

| Nodes other than the DODAG root MUST NOT modify this information
| when propagating the DODAG Configuration option.

Therefore, a legacy parent propagates the 'D' flag as set by the
Root, and when the 'D' flag is set to 1, it is transparently flooded
to all the nodes in the DODAG.

4.2. Extending RFC 6553

"The Routing Protocol for Low-Power and Lossy Networks (RPL) Option
for Carrying RPL Information in Data-Plane Datagrams" [RFC6553]
describes the RPL Option for use among RPL routers to include the
abstract RPI described in Section 11.2 of [RPL] in data packets.

The RPL Option is commonly referred to as the RPI even though the RPI
is really the abstract information that is transported in the RPL
Option. [RFC9008] updated the Option Type from 0x63 to 0x23.

This specification Extends the RPL Option to encode the 'P' flag as
follows:

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Type | Opt Data Len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|O|R|F|P|0|0|0|0| RPLInstanceID | SenderRank |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| (sub-TLVs) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 11: Amended RPL Option Format

Option Type: 0x23 or 0x63; see [RFC9008].

Opt Data Len: See [RFC6553].

'O', 'R', and 'F' flags: See [RFC6553]. These flags MUST be set to
0 by the sender and MUST be ignored by the receiver if the 'P'
flag is set.

Projected-Route 'P': 1-bit flag as defined in Section 4.1.6.

RPLInstanceID: See [RFC6553]. Indicates the TrackID if the 'P' flag
is set, as discussed in Section 4.1.1.

SenderRank: See [RFC6553]. This field MUST be set to 0 by the
sender and MUST be ignored by the receiver if the 'P' flag is set.

4.3. Extending RFC 8138

The 6LoWPAN Routing Header specification [RFC8138] introduces a new
6LoWPAN [RFC6282] dispatch type for use in 6LoWPAN route-over
topologies, which initially covers the needs of RPL data packet
compression.

Section 4 of [RFC8138] presents the generic formats of the 6LoRH in
two forms: Elective, which can be ignored and skipped when the router
does not understand it, and Critical, which causes the packet to be
dropped when the router cannot process it. The 'E' flag in the 6LoRH
indicates its form. In order to skip the Elective 6LoRHs, their
format imposes a fixed expression of the size, whereas the size of a
Critical 6LoRH may be signaled in variable forms to enable additional
optimizations.

When compression as described in [RFC8138] is used, the Root of the
main DODAG that sets up the Track also constructs the compressed
Routing Header (SRH-6LoRH) on behalf of the Track ingress, which
avoids the complexities of optimizing SRH-6LoRH encoding in
constrained code. In that case, the SRH-6LoRH is signaled in the
NSM-VIO, and it is expressed in a fashion that can be placed as is in
the packet encapsulation by the Track ingress.

Section 6.3 of [RFC8138] presents the formats of the 6LoWPAN RH of
type 5 (RPI-6LoRH) that compresses the RPI for normal RPL operation.
The format of the RPI-6LoRH is not suited for P-Routes since the 'O',
'R', and 'F' flags are not used and the Rank is unknown and ignored.

This specification Extends [RFC8138] to introduce a new 6LoRH, the P-
RPI-6LoRH, that can be used in either Elective or Critical 6LoRH
form; see Tables 22 and 23, respectively. The new 6LoRH MUST be used
as a Critical 6LoRH, unless an SRH-6LoRH is present and controls the
routing decision, in which case it MAY be used in Elective form.

The P-RPI-6LoRH is designed to compress the RPI along RPL P-Routes.
Its format is as follows:

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|E| Length | 6LoRH Type | RPLInstanceID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 12: P-RPI-6LoRH Format

6LoRH Type: IANA has defined the value 8 for both the Elective and
Critical forms.

Elective 'E': See [RFC8138]. The 'E' flag is set to 1 to indicate
an Elective 6LoRH, meaning that it can be ignored when forwarding.

RPLInstanceID : In the context of this specification, the
RPLInstanceID field signals the TrackID; see Sections 3.4 and 6.3.

Section 6.8 details how a Track ingress leverages the P-RPI-6LoRH
header as part of the encapsulation of a packet to place it into a
Track.