draft-ietf-roll-capabilities-04.txt | draft-ietf-roll-capabilities-05.txt | |||
---|---|---|---|---|
ROLL R. Jadhav, Ed. | ROLL R. Jadhav, Ed. | |||
Internet-Draft Huawei | Internet-Draft Huawei | |||
Intended status: Standards Track P. Thubert | Intended status: Standards Track P. Thubert | |||
Expires: November 17, 2020 Cisco | Expires: November 22, 2020 Cisco | |||
M. Richardson | M. Richardson | |||
Sandelman Software Works | Sandelman Software Works | |||
R. Sahoo | R. Sahoo | |||
Juniper | Juniper | |||
May 16, 2020 | May 21, 2020 | |||
RPL Capabilities | RPL Capabilities | |||
draft-ietf-roll-capabilities-04 | draft-ietf-roll-capabilities-05 | |||
Abstract | Abstract | |||
This draft enables the discovery, advertisement and query of | This draft enables the discovery, advertisement and query of | |||
capabilities for RPL nodes. | capabilities for RPL nodes. | |||
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. | |||
skipping to change at page 1, line 36 ¶ | skipping to change at page 1, line 36 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on November 17, 2020. | This Internet-Draft will expire on November 22, 2020. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 13 ¶ | skipping to change at page 2, line 13 ¶ | |||
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 | |||
1.1. Requirements Language and Terminology . . . . . . . . . . 3 | 1.1. Requirements Language and Terminology . . . . . . . . . . 3 | |||
1.2. What are Capabilities? . . . . . . . . . . . . . . . . . 3 | 1.2. What are Capabilities? . . . . . . . . . . . . . . . . . 3 | |||
2. Requirements for this document . . . . . . . . . . . . . . . 4 | 2. Requirements for this document . . . . . . . . . . . . . . . 4 | |||
2.1. How are Capabilities different from MOP or DIO | 2.1. How are Capabilities different from existing RPL | |||
Configuration Option? . . . . . . . . . . . . . . . . . . 4 | primitives? . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3. Capabilities . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Capabilities . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.1. Capability Control Message Option . . . . . . . . . . . . 5 | 3.1. Capability Control Message Option . . . . . . . . . . . . 5 | |||
3.2. Capabilities Handshake . . . . . . . . . . . . . . . . . 5 | 3.2. Capabilities Handshake . . . . . . . . . . . . . . . . . 5 | |||
4. Guidelines for defining new capabilities . . . . . . . . . . 6 | 4. Guidelines for defining new capabilities . . . . . . . . . . 6 | |||
4.1. Handling Capability flags . . . . . . . . . . . . . . . . 6 | 4.1. Handling Capability flags . . . . . . . . . . . . . . . . 6 | |||
4.1.1. Rules to handle capabilities flag . . . . . . . . . . 6 | 4.1.1. Rules to handle capabilities flag . . . . . . . . . . 6 | |||
5. Node Capabilities . . . . . . . . . . . . . . . . . . . . . . 6 | 5. Node Capabilities . . . . . . . . . . . . . . . . . . . . . . 6 | |||
5.1. Capability Indicators . . . . . . . . . . . . . . . . . . 7 | 5.1. Capability Indicators . . . . . . . . . . . . . . . . . . 7 | |||
5.1.1. Format of Capability Indicators . . . . . . . . . . . 7 | 5.1.1. Format of Capability Indicators . . . . . . . . . . . 7 | |||
5.2. Routing Resource Capability . . . . . . . . . . . . . . . 7 | 5.2. Routing Resource Capability . . . . . . . . . . . . . . . 7 | |||
skipping to change at page 2, line 46 ¶ | skipping to change at page 2, line 46 ¶ | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
1. Introduction | 1. Introduction | |||
RPL [RFC6550] specifies a proactive distance-vector based routing | RPL [RFC6550] specifies a proactive distance-vector based routing | |||
scheme. The protocol creates a DAG-like structure which operates | scheme. The protocol creates a DAG-like structure which operates | |||
with a given "Mode of Operation" (MOP) determining the minimal and | with a given "Mode of Operation" (MOP) determining the minimal and | |||
mandatory set of primitives to be supported by all the participating | mandatory set of primitives to be supported by all the participating | |||
nodes. | nodes. | |||
This document adds a notion of capabilities using which the nodes in | This document adds a notion of capabilities using which nodes in the | |||
the network could inform its peers about its additional capabilities/ | network could inform its peers about its additional capabilities. | |||
features. This document highlights the differences of capabilities | This document highlights the differences of capabilities from that of | |||
from that of Mode of operation and explains the necessity of it. | Mode of operation and explains the necessity of it. | |||
1.1. Requirements Language and Terminology | 1.1. Requirements Language and Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
MOP: Mode of Operation. Identifies the mode of operation of the RPL | MOP: Mode of Operation. Identifies the MOP of the RPL Instance as | |||
Instance as administratively provisioned at and distributed by the | administratively provisioned at and distributed by the DODAG root. | |||
DODAG root. | ||||
MOPex: Extended MOP: As defined in [I-D.ietf-roll-mopex]. | MOPex: Extended MOP: As defined in [I-D.ietf-roll-mopex]. | |||
Capabilities: Additional features or capabilities which might | Capabilities: Additional features or capabilities that are supported | |||
possibly be optional that are supported by the node. | by the node. | |||
DAO: DODAG Advertisement Object. An RPL message used to advertise | DAO: DODAG Advertisement Object. An RPL message used to advertise | |||
the target information in order to establish routing adjacencies. | the target information in order to establish routing adjacencies. | |||
DIO: DODAG Information Object. An RPL message initiated by the root | DIO: DODAG Information Object. An RPL message initiated by the root | |||
and is used to advertise the network configuration information. | and is used to advertise the network configuration information. | |||
Current parent: Parent 6LR node before switching to the new path. | Current parent: Parent 6LR node before switching to the new path. | |||
NPDAO: No-Path DAO. A DAO message which has target with lifetime 0. | NPDAO: No-Path DAO. A DAO message which has target with lifetime 0. | |||
MOPex: MOP extension as defined in this document. | ||||
Upstream path/direction: Path or direction from the node to the Root | Upstream path/direction: Path or direction from the node to the Root | |||
in a DAG. | in a DAG. | |||
Downstream path/direction: Path or direction to the node from the | Downstream path/direction: Path or direction to the node from the | |||
Root in a DAG. | Root in a DAG. | |||
This document uses terminology described in [RFC6550]. For the sake | This document uses terminology described in [RFC6550]. For the sake | |||
of readability all the known relevant terms are repeated in this | of readability all the known relevant terms are repeated in this | |||
section. | section. | |||
skipping to change at page 4, line 26 ¶ | skipping to change at page 4, line 26 ¶ | |||
and the root within an RPL Instance. | and the root within an RPL Instance. | |||
REQ3: Capabilities handshake could be optionally added with existing | REQ3: Capabilities handshake could be optionally added with existing | |||
MOPs. Capabilities been optional in nature could be put to | MOPs. Capabilities been optional in nature could be put to | |||
use with existing MOPs. Capabilities and MOP-extension is | use with existing MOPs. Capabilities and MOP-extension is | |||
mutually independent i.e. a DIO can have a capabilities | mutually independent i.e. a DIO can have a capabilities | |||
option, MOP-extension option or both in the same message. | option, MOP-extension option or both in the same message. | |||
REQ4: Capabilities could be explicitly queried. | REQ4: Capabilities could be explicitly queried. | |||
2.1. How are Capabilities different from MOP or DIO Configuration | 2.1. How are Capabilities different from existing RPL primitives? | |||
Option? | ||||
The Mode of Operation (MOP) field in RPL mandates the operational | The Mode of Operation (MOP) field in RPL mandates the operational | |||
requirement for the nodes joining as routers. MOP and DIO | requirement for the nodes joining as routers. MOP and DIO | |||
Configuration Option is strictly controlled by the Root node in RPL. | Configuration Option is strictly controlled by the Root node in RPL. | |||
Intermediate 6LRs could not modify the values. Also, the MOP never | Intermediate 6LRs cannot modify these fields. Also, the MOP never | |||
changes for the lifetime of the RPL Instance. Changes in DIO | changes for the lifetime of the RPL Instance. Changes in DIO | |||
Configuration Option are possible but are very rare. Capabilities, | Configuration Option are possible but are rare. Capabilities, on the | |||
on the other hand, might change more dynamically. | other hand, might change more dynamically. | |||
RPL DIO message also carries routing metrics and constraints as | RPL DIO message also carries routing metrics and constraints as | |||
specified in [RFC6551]. Metrics and constraints are used as part of | specified in [RFC6551]. Metrics and constraints are used as part of | |||
objective function which aids in node's rank calculation. A router | objective function which aids in node's rank calculation. A router | |||
may use capabilities carried in DIO message as additional metrics/ | may use capabilities carried in DIO message as additional metrics/ | |||
constraints. However, capabilities have a larger scope and may be | constraints. However, capabilities have a larger scope and may be | |||
carried in other messages other than DIO and can flow in both the | carried in other messages other than DIO and can flow in both the | |||
directions (upstream and downstream). | directions (upstream and downstream). | |||
3. Capabilities | 3. Capabilities | |||
skipping to change at page 6, line 21 ¶ | skipping to change at page 6, line 21 ¶ | |||
4. Guidelines for defining new capabilities | 4. Guidelines for defining new capabilities | |||
This section provides guidelines/recommendations towards defining new | This section provides guidelines/recommendations towards defining new | |||
capabilities. Note that the capabilities might be carried as part of | capabilities. Note that the capabilities might be carried as part of | |||
the multicast messaging such as DIO and hence the set should be used | the multicast messaging such as DIO and hence the set should be used | |||
in restrictive manner as far as possible. | in restrictive manner as far as possible. | |||
4.1. Handling Capability flags | 4.1. Handling Capability flags | |||
A node MUST drop or discard the message silently having an unknown | A node MUST drop or discard the message with an unknown capability | |||
capability with 'D' (discard) flag set. | with 'D' flag set. The message MUST be discarded silently. | |||
The 'I' (information) flag is set only when there is additional | ||||
information to be set in context to the capability. | ||||
The 'J' (join) flag can be set in context to a capability either by a | The 'J' (join) flag can be set in context to a capability either by a | |||
6LR or the root. The 'J' flag indicates that if the capability is | 6LR or the root. The 'J' flag indicates that if the capability is | |||
not supported by a node then it can join the instance only as a 6LN | not supported by a node then it can join the instance only as a 6LN | |||
(or do not join as 6LR). | (or do not join as 6LR). | |||
The 'C' (copy) flag is set by the node indicating that the | The 'C' (copy) flag is set by the node indicating that the | |||
capabilities MUST be copied downstream by the node. | capabilities MUST be copied downstream by the node even if the node | |||
does not understand the capability. | ||||
4.1.1. Rules to handle capabilities flag | 4.1.1. Rules to handle capabilities flag | |||
On receiving a capability it does not support, the node MUST check | On receiving a capability it does not support, the node MUST check | |||
the 'J' flag of the capability before joining the Instance. If the | the 'J' flag of the capability before joining the Instance. If the | |||
'J' flag is set then it can only join as a 6LN. | 'J' flag is set then it can only join as a 6LN. | |||
If the node is operating as 6LR and subsequently it receives a | If the node is operating as 6LR and subsequently it receives a | |||
capability which it doesn't understand with 'J' flag set, then the | capability from its preferred parent which it does not understand | |||
node has to switch itself to 6LN mode. During switching the node | with 'J' flag set, then the node has to switch itself to 6LN mode. | |||
needs to inform its downstream peers of its changed status by sending | During switching the node needs to inform its downstream peers of its | |||
a DIO with infinite rank as mentioned in [RFC6550]. | changed status by sending a DIO with infinite rank as mentioned in | |||
RFC6550. Alternatively, a node may decide to switch to another | ||||
parent with compatible and known capabilities. | ||||
Capabilities are used to indicate a feature that is supported by the | Capabilities are used to indicate a feature that is supported by the | |||
node. Capabilities are not meant for configuration management for | node. Capabilities are not meant for configuration management for | |||
e.g., setting a threshold./>. | e.g., setting a threshold. | |||
5. Node Capabilities | 5. Node Capabilities | |||
5.1. Capability Indicators | 5.1. Capability Indicators | |||
Capability Indicators indicates the capabilities supported by the | Capability Indicators indicates the capabilities supported by the | |||
node in the form of simple flags. Capabilities who do not have | node in the form of simple flags. Capabilities who do not have | |||
additional information to be specified could make use of these flags | additional information to be specified could make use of these flags | |||
to indicate their support. | to indicate their support. | |||
5.1.1. Format of Capability Indicators | 5.1.1. Format of Capability Indicators | |||
skipping to change at page 10, line 6 ¶ | skipping to change at page 10, line 6 ¶ | |||
running a old feature set. This document assumes that the base | running a old feature set. This document assumes that the base | |||
messages that carry these options are protected by RPL security | messages that carry these options are protected by RPL security | |||
mechanisms and thus are not visible to a malicious node. | mechanisms and thus are not visible to a malicious node. | |||
[TODO] implications of malicious attack involving setting the | [TODO] implications of malicious attack involving setting the | |||
capability flags. | capability flags. | |||
9. References | 9. References | |||
9.1. Normative References | 9.1. Normative References | |||
[I-D.ietf-roll-dao-projection] | [I-D.ietf-roll-mopex] | |||
Thubert, P., Jadhav, R., and M. Gillmore, "Root initiated | Jadhav, R., Thubert, P., and M. Richardson, "Mode of | |||
routing state in RPL", draft-ietf-roll-dao-projection-10 | Operation extension", draft-ietf-roll-mopex-00 (work in | |||
(work in progress), May 2020. | progress), April 2020. | |||
[I-D.thubert-roll-turnon-rfc8138] | ||||
Thubert, P. and L. Zhao, "Configuration option for RFC | ||||
8138", draft-thubert-roll-turnon-rfc8138-03 (work in | ||||
progress), July 2019. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC6550] Winter, T., Ed., Thubert, P., Ed., Brandt, A., Hui, J., | [RFC6550] Winter, T., Ed., Thubert, P., Ed., Brandt, A., Hui, J., | |||
Kelsey, R., Levis, P., Pister, K., Struik, R., Vasseur, | Kelsey, R., Levis, P., Pister, K., Struik, R., Vasseur, | |||
JP., and R. Alexander, "RPL: IPv6 Routing Protocol for | JP., and R. Alexander, "RPL: IPv6 Routing Protocol for | |||
Low-Power and Lossy Networks", RFC 6550, | Low-Power and Lossy Networks", RFC 6550, | |||
skipping to change at page 10, line 40 ¶ | skipping to change at page 10, line 35 ¶ | |||
(6LoWPAN) Routing Header", RFC 8138, DOI 10.17487/RFC8138, | (6LoWPAN) Routing Header", RFC 8138, DOI 10.17487/RFC8138, | |||
April 2017, <https://www.rfc-editor.org/info/rfc8138>. | April 2017, <https://www.rfc-editor.org/info/rfc8138>. | |||
9.2. Informative References | 9.2. Informative References | |||
[I-D.ietf-lwig-nbr-mgmt-policy] | [I-D.ietf-lwig-nbr-mgmt-policy] | |||
Jadhav, R., Sahoo, R., Duquennoy, S., and J. Eriksson, | Jadhav, R., Sahoo, R., Duquennoy, S., and J. Eriksson, | |||
"Neighbor Management Policy for 6LoWPAN", draft-ietf-lwig- | "Neighbor Management Policy for 6LoWPAN", draft-ietf-lwig- | |||
nbr-mgmt-policy-03 (work in progress), February 2019. | nbr-mgmt-policy-03 (work in progress), February 2019. | |||
[I-D.ietf-roll-mopex] | [I-D.ietf-roll-dao-projection] | |||
Jadhav, R., Thubert, P., and M. Richardson, "Mode of | Thubert, P., Jadhav, R., and M. Gillmore, "Root initiated | |||
Operation extension", draft-ietf-roll-mopex-00 (work in | routing state in RPL", draft-ietf-roll-dao-projection-10 | |||
progress), April 2020. | (work in progress), May 2020. | |||
[I-D.thubert-roll-turnon-rfc8138] | ||||
Thubert, P. and L. Zhao, "Configuration option for RFC | ||||
8138", draft-thubert-roll-turnon-rfc8138-03 (work in | ||||
progress), July 2019. | ||||
[RFC6551] Vasseur, JP., Ed., Kim, M., Ed., Pister, K., Dejean, N., | [RFC6551] Vasseur, JP., Ed., Kim, M., Ed., Pister, K., Dejean, N., | |||
and D. Barthel, "Routing Metrics Used for Path Calculation | and D. Barthel, "Routing Metrics Used for Path Calculation | |||
in Low-Power and Lossy Networks", RFC 6551, | in Low-Power and Lossy Networks", RFC 6551, | |||
DOI 10.17487/RFC6551, March 2012, | DOI 10.17487/RFC6551, March 2012, | |||
<https://www.rfc-editor.org/info/rfc6551>. | <https://www.rfc-editor.org/info/rfc6551>. | |||
Appendix A. Capability Handshake Example | Appendix A. Capability Handshake Example | |||
Root 6LR 6LN | Root 6LR 6LN | |||
End of changes. 18 change blocks. | ||||
46 lines changed or deleted | 42 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |