| < draft-ietf-roll-mopex-01.txt | draft-ietf-roll-mopex-02.txt > | |||
|---|---|---|---|---|
| ROLL R. Jadhav, Ed. | ROLL R. Jadhav, Ed. | |||
| Internet-Draft Huawei Tech | Internet-Draft Huawei Tech | |||
| Intended status: Standards Track P. Thubert | Intended status: Standards Track P. Thubert | |||
| Expires: December 7, 2020 Cisco | Expires: April 2, 2021 Cisco | |||
| M. Richardson | M. Richardson | |||
| Sandelman Software Works | Sandelman Software Works | |||
| June 5, 2020 | September 29, 2020 | |||
| Mode of Operation extension | Mode of Operation extension | |||
| draft-ietf-roll-mopex-01 | draft-ietf-roll-mopex-02 | |||
| Abstract | Abstract | |||
| RPL allows different mode of operations which allows nodes to have a | RPL allows different mode of operations which allows nodes to have a | |||
| consensus on the basic primitives that must be supported to join the | consensus on the basic primitives that must be supported to join the | |||
| network. The MOP field in [RFC6550] is of 3 bits and is fast | network. The MOP field in [RFC6550] is of 3 bits and is fast | |||
| depleting. This document extends the MOP for future use. | depleting. This document extends the MOP for future use. | |||
| Status of This Memo | Status of This Memo | |||
| 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 December 7, 2020. | This Internet-Draft will expire on April 2, 2021. | |||
| 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 22 ¶ | skipping to change at page 2, line 22 ¶ | |||
| 3. Extended MOP Control Message Option . . . . . . . . . . . . . 4 | 3. Extended MOP Control Message Option . . . . . . . . . . . . . 4 | |||
| 3.1. Handling MOPex . . . . . . . . . . . . . . . . . . . . . 4 | 3.1. Handling MOPex . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.2. Use of values 0-6 in the MOPex option . . . . . . . . . . 4 | 3.2. Use of values 0-6 in the MOPex option . . . . . . . . . . 4 | |||
| 4. Extending RPL Control Options . . . . . . . . . . . . . . . . 4 | 4. Extending RPL Control Options . . . . . . . . . . . . . . . . 4 | |||
| 5. Implementation Considerations . . . . . . . . . . . . . . . . 6 | 5. Implementation Considerations . . . . . . . . . . . . . . . . 6 | |||
| 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 7.1. Mode of operation: MOPex . . . . . . . . . . . . . . . . 6 | 7.1. Mode of operation: MOPex . . . . . . . . . . . . . . . . 6 | |||
| 7.2. New options: MOPex and Capabilities . . . . . . . . . . . 6 | 7.2. New options: MOPex and Capabilities . . . . . . . . . . . 6 | |||
| 7.3. New Registry for Extended-MOP-value . . . . . . . . . . . 7 | 7.3. New Registry for Extended-MOP-value . . . . . . . . . . . 7 | |||
| 7.4. Change in RPL Control Option field . . . . . . . . . . . 7 | ||||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 7 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 8 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 8 | 9.2. Informative References . . . . . . . . . . . . . . . . . 8 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 8 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 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. | |||
| MOP as per [RFC6550] is a 3-bit value carried in DIO messages and is | MOP as per [RFC6550] is a 3-bit value carried in DIO messages and is | |||
| specific to the RPL Instance. The receipient of the DIO message can | specific to the RPL Instance. The recipient of the DIO message can | |||
| join the specified network as a router only when it can support the | join the specified network as a router only when it can support the | |||
| primitives as required by the mode of operation value. For example, | primitives as required by the mode of operation value. For example, | |||
| in case of MOP=3 (Storing MOP with multicast support) the nodes can | in case of MOP=3 (Storing MOP with multicast support) the nodes can | |||
| join the network as routers only when they can handle the DAO | join the network as routers only when they can handle the DAO | |||
| advertisements from the peers and manage routing tables. The 3-bit | advertisements from the peers and manage routing tables. The 3-bit | |||
| value is already exhausted and requires replenishment. This document | value is already exhausted and requires replenishment. This document | |||
| introduces a mechanism to extend mode of operation values. | introduces a mechanism to extend mode of operation values. | |||
| This document further extends the RPL Control Option syntax to handle | This document further extends the RPL Control Option syntax to handle | |||
| generic flags. The primary aim of these flags is to define the | generic flags. The primary aim of these flags is to define the | |||
| behaviour of a node not supporting the given control type. If a node | behaviour of a node not supporting the given control type. If a node | |||
| does not support a given RPL Control Option, there are three | does not support a given RPL Control Option, there are following | |||
| possibilities: | possibilities: | |||
| REQ1: Strip off the option | Strip off the option | |||
| REQ2: Copy the option as-is | Copy the option as-is | |||
| REQ3: Ignore the message containing this option | Ignore the message containing this option | |||
| REQ4: Let the node join in only as a 6LN to this parent | Let the node join in only as a 6LN to this parent | |||
| 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 mode of operation of the RPL | |||
| Instance as administratively provisioned at and distributed by the | Instance as administratively provisioned at and distributed by the | |||
| DODAG root. | DODAG root. | |||
| MOPex: Extended MOP: This document extends the MOP values over a | MOPex: Extended MOP: This document extends the MOP values over a | |||
| bigger range. This extension of MOP is called MOPex. | bigger range. This extension of MOP is called MOPex. | |||
| 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 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. | |||
| 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. | |||
| 2. Requirements for this document | 2. Requirements for this document | |||
| Following are the requirements considered for this documents: | Following are the requirements considered for this documents: | |||
| REQ1: MOP extension. Current MOP of 3-bit is fast depleting. An | REQ1: MOP extension. Current MOP of 3-bit is fast depleting. An | |||
| MOP extension needs to extend the possibility of adding new | MOP extension needs to extend the possibility of adding new | |||
| MOPs in the future. | MOPs in the future. | |||
| REQ2: Backwards compatibility. The new options and new fields in | REQ2: Backwards compatibility. The new options and new fields in | |||
| the DIO message should be backward compatible i.e. if there | the DIO message should be backward compatible i.e. if there | |||
| are nodes which support old MOPs they could still operate in | are nodes which support old MOPs they could still operate in | |||
| their own instances. | their own RPL Instances. | |||
| 3. Extended MOP Control Message Option | 3. Extended MOP Control Message Option | |||
| This document reserves existing MOP value 7 to be used as an | This document reserves existing MOP value 7 to be used as an | |||
| extender. DIO messages with MOP value of 7 may refer to the Extended | extender. DIO messages with MOP value of 7 may refer to the Extended | |||
| MOP (MOPex) option in the DIO message. | MOP (MOPex) option in the DIO message. | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--------------- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--------------- | |||
| skipping to change at page 4, line 32 ¶ | skipping to change at page 4, line 32 ¶ | |||
| 3.1. Handling MOPex | 3.1. Handling MOPex | |||
| The MOPex option MUST be used only if the base DIO MOP is 7. If the | The MOPex option MUST be used only if the base DIO MOP is 7. If the | |||
| base DIO MOP is 7 and if the MOPex option is not present then the DIO | base DIO MOP is 7 and if the MOPex option is not present then the DIO | |||
| MUST be silently ignored. If the base DIO MOP is less than 7 then | MUST be silently ignored. If the base DIO MOP is less than 7 then | |||
| MOPex MUST NOT be used. In case the base MOP is 7 and if the MOPex | MOPex MUST NOT be used. In case the base MOP is 7 and if the MOPex | |||
| option is present, then the implementation MUST use the final MOP | option is present, then the implementation MUST use the final MOP | |||
| value from the MOPex. | value from the MOPex. | |||
| Note that [RFC6550] allows the node who does not support the received | Note that [RFC6550] allows a node that does not support the received | |||
| MOP to still join the network as a leaf node. This semantic | MOP to still join the network as a leaf node. This semantics | |||
| continues to be true even in case of MOPex. | continues to be true even in case of MOPex. | |||
| 3.2. Use of values 0-6 in the MOPex option | 3.2. Use of values 0-6 in the MOPex option | |||
| The MOPex option could also be allowed to re-use the values 0-6, | The MOPex option could also be allowed to re-use the values 0-6, | |||
| which have been used for MOP so far. The use of current MOPs in | which have been used for MOP so far. The use of current MOPs in | |||
| MOPex indicates that the MOP is supported with extended set of | MOPex indicates that the MOP is supported with extended set of | |||
| semantics for e.g., the capability options | semantics for e.g., the capability options | |||
| [I-D.ietf-roll-capabilities]. | [I-D.ietf-roll-capabilities]. | |||
| 4. Extending RPL Control Options | 4. Extending RPL Control Options | |||
| Section 6.7.1 of RFC6550 explains the RPL Control Message Option | Section 6.7.1 of RFC6550 explains the RPL Control Message Option | |||
| Generic Format. This document extends this format to following: | Generic Format. This document extends this format to following: | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+----------- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+----------- | |||
| | |X| OptionType| Option Length |Opt Flags|J|I|C| Option Data | |X| OptionType| Option Length |Opt Flags|J|I|C| Option Data | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+----------- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+----------- | |||
| Figure 2: Extended RPL Option Format | Figure 2: Extended RPL Option Format | |||
| New fields in extended RPL Control Message Option Format: | New fields in extended RPL Control Message Option Format: | |||
| 'X' bit in Option Type: Value 1 indicates that this is an extended | 'X' bit in Option Type: Value 1 indicates that this is an extended | |||
| option. If the 'X' flag is set, a 1 byte Option Flags follows the | option. If the 'X' flag is set, a 1 byte Option Flags follows the | |||
| Option Length field. | Option Length field. | |||
| Option Length: 8-bit unsigned integer, representing the length in | Option Length: 8-bit unsigned integer, representing the length in | |||
| octets of the option, not including the Option Type and Length | octets of the option, not including the Option Type and Length | |||
| fields. Option Flags and variable length Option Data fields are | fields. Option Flags and variable length Option Data fields are | |||
| included in the length. | included in the length. | |||
| 'J' (Join) bit in Option Flags: A node MUST join only as a 6LN if | 'J' (Join) bit in Option Flags: A node MUST join only as a 6LN if | |||
| the Option Type is not understood. | the Option Type is not understood. | |||
| 'C' (Copy) bit in Option Flags: A node which does not understand | 'C' (Copy) bit in Option Flags: A node that does not understand | |||
| the Option Type MUST copy the Option while generating the | the Option Type MUST copy the Option while generating the | |||
| corresponding message. For e.g., if a 6LR receives a DIO message | corresponding message. For e.g., if a 6LR receives a DIO message | |||
| with an unknown Option with 'C' bit set and if the 6LR choses to | with an unknown Option with 'C' bit set and if the 6LR choses to | |||
| accept this node as the preferred parent then the node MUST copy | accept this node as the preferred parent then the node MUST copy | |||
| this option in the subsequent DIO message it generates. | this option in the subsequent DIO message it generates. | |||
| Alternatively, if the 'C' flag is unset the node MUST strip off | Alternatively, if the 'C' flag is unset the node MUST strip off | |||
| the option and process the message. | the option and process the message. | |||
| 'I' (Ignore) bit in Option Flags: A node which does not understand | 'I' (Ignore) bit in Option Flags: A node that does not understand | |||
| the Option Type MUST ignore this whole message if the 'I' bit is | the Option Type MUST ignore this whole message if the 'I' bit is | |||
| set. If 'I' bit is set than the value of 'J' and 'C' bits are | set. If 'I' bit is set than the value of 'J' and 'C' bits are | |||
| irrelevant and the message MUST be ignored. | irrelevant and the message MUST be ignored. | |||
| Note that this format does not deprecate the previous format, it | Note that this format does not deprecate the previous format, it | |||
| simply extends it and the new format is applicable only when 2nd bit | simply extends it and the new format is applicable only when 2nd bit | |||
| ('X' flag) of the Option Type is set. Option Type 0x40 to 0x7F are | ('X' flag) of the Option Type is set. Option Type 0x80 to 0xFF are | |||
| thus applicable only as extended options. | thus applicable only as extended options. | |||
| +---------+---------+-----------------------------------------------+ | +---------+---------+-----------------------------------------------+ | |||
| | 'J' bit | 'C' bit | Handling | | | 'J' bit | 'C' bit | Handling | | |||
| +---------+---------+-----------------------------------------------+ | +---------+---------+-----------------------------------------------+ | |||
| | 0 | 0 | Strip off the option, and the node can join | | | 0 | 0 | Strip off the option, and the node can join | | |||
| | | | as 6LR | | | | | as 6LR | | |||
| | 0 | 1 | Copy the option, and the node can join as 6LR | | | 0 | 1 | Copy the option, and the node can join as 6LR | | |||
| | 1 | NA | Join as 6LN | | | 1 | NA | Join as 6LN | | |||
| +---------+---------+-----------------------------------------------+ | +---------+---------+-----------------------------------------------+ | |||
| Table 1: Option Flags handling | Table 1: Option Flags handling | |||
| If a node receives an unknown Option without 'X' flag set then the | If a node receives an unknown Option without 'X' flag set then the | |||
| node MUST ignore the option and process the message. The option MUST | node MUST ignore the option and process the message. The option MUST | |||
| be treated as if J=0, C=0, I=0. | be treated as if J=0, C=0, I=0. | |||
| 5. Implementation Considerations | 5. Implementation Considerations | |||
| [RFC6550], it was possible to discard an unsupported DIO-MOP just by | In [RFC6550], it was possible to discard an unsupported DIO-MOP just | |||
| inspecting the base message. With this document, the MOPex is a | by inspecting the base message. With this document, the MOPex is a | |||
| different control message option and thus the discarding of the DIO | different control message option and thus the discarding of the DIO | |||
| message could happen after inspecting the message options. | message can only happen after inspecting the message options. | |||
| 6. Acknowledgements | 6. Acknowledgements | |||
| Using 'I' bit was Pascal Thubert's idea. | Thank you Dominique Barthel for important review/feedback on | |||
| extending Control Options. | ||||
| 7. IANA Considerations | 7. IANA Considerations | |||
| 7.1. Mode of operation: MOPex | 7.1. Mode of operation: MOPex | |||
| IANA is requested to assign a new Mode of Operation, named "MOPex" | IANA is requested to assign a new Mode of Operation, named "MOPex" | |||
| for MOP extension under the RPL registry. The value of 7 is to be | for MOP extension under the RPL registry. The value of 7 is to be | |||
| assigned from the "Mode of Operation" space [RFC6550] | assigned from the "Mode of Operation" space [RFC6550] | |||
| +-------+-------------+---------------+ | +-------+-------------+---------------+ | |||
| skipping to change at page 7, line 27 ¶ | skipping to change at page 7, line 27 ¶ | |||
| may be allocated only by an IETF review. Currently no values are | may be allocated only by an IETF review. Currently no values are | |||
| defined by this document. Each value is tracked with the following | defined by this document. Each value is tracked with the following | |||
| qualities: | qualities: | |||
| o MOPex value | o MOPex value | |||
| o Description | o Description | |||
| o Defining RFC | o Defining RFC | |||
| 7.4. Change in RPL Control Option field | ||||
| Section 4 of this document specifies MSB of the RPL Control Option to | ||||
| be used as a bit to indicate RPL Extended Control Options. | ||||
| IANA is requested to reduce the unassigned values range from 0x10 to | ||||
| 0x7f for RPL Control Options. | ||||
| IANA is requested to create a new registry for RPL Extended Control | ||||
| Options indicating values 0x80 to 0xff. New values may be allocated | ||||
| only by an IETF Review. Each value is tracked with the following | ||||
| qualities: | ||||
| o Value | ||||
| o Meaning | ||||
| o Defining RFC | ||||
| The value could be in the range of 0x80 to 0xff. | ||||
| 8. Security Considerations | 8. Security Considerations | |||
| The options defined in this document are carried in the base message | The options defined in this document are carried in the base message | |||
| objects as defined in [RFC6550]. The RPL control message options are | objects as defined in [RFC6550]. The RPL control message options are | |||
| protected by the same security mechanisms that protect the base | protected by the same security mechanisms that protect the base | |||
| messages. | messages. | |||
| Capabilities flag can reveal that the node has been upgraded or is | Capabilities flag can reveal that the node has been upgraded or is | |||
| 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 | |||
| skipping to change at page 8, line 16 ¶ | skipping to change at page 8, line 32 ¶ | |||
| 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, | |||
| DOI 10.17487/RFC6550, March 2012, | DOI 10.17487/RFC6550, March 2012, | |||
| <https://www.rfc-editor.org/info/rfc6550>. | <https://www.rfc-editor.org/info/rfc6550>. | |||
| 9.2. Informative References | 9.2. Informative References | |||
| [I-D.ietf-roll-capabilities] | [I-D.ietf-roll-capabilities] | |||
| Jadhav, R., Thubert, P., Richardson, M., and R. Sahoo, | Jadhav, R., Thubert, P., Richardson, M., and R. Sahoo, | |||
| "RPL Capabilities", draft-ietf-roll-capabilities-06 (work | "RPL Capabilities", draft-ietf-roll-capabilities-07 (work | |||
| in progress), June 2020. | in progress), September 2020. | |||
| Authors' Addresses | Authors' Addresses | |||
| Rahul Arvind Jadhav (editor) | Rahul Arvind Jadhav (editor) | |||
| Huawei Tech | Huawei Tech | |||
| Kundalahalli Village, Whitefield, | Kundalahalli Village, Whitefield, | |||
| Bangalore, Karnataka 560037 | Bangalore, Karnataka 560037 | |||
| India | India | |||
| Phone: +91-080-49160700 | Phone: +91-080-49160700 | |||
| End of changes. 24 change blocks. | ||||
| 26 lines changed or deleted | 49 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||