Internet Engineering Task Force (IETF) T. Winter, Ed. Request for Comments: 6550 Category: Standards Track P. Thubert, Ed. ISSN: 2070-1721 Cisco Systems A. Brandt Sigma Designs J. Hui Arch Rock Corporation R. Kelsey Ember Corporation P. Levis Stanford University K. Pister Dust Networks R. Struik Struik Security Consultancy JP. Vasseur Cisco Systems R. Alexander Cooper Power Systems March 2012
Internet Engineering Task Force (IETF) T. Winter, Ed. Request for Comments: 6550 Category: Standards Track P. Thubert, Ed. ISSN: 2070-1721 Cisco Systems A. Brandt Sigma Designs J. Hui Arch Rock Corporation R. Kelsey Ember Corporation P. Levis Stanford University K. Pister Dust Networks R. Struik Struik Security Consultancy JP. Vasseur Cisco Systems R. Alexander Cooper Power Systems March 2012
RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks
RPL:IPv6低功耗有损网络路由协议
Abstract
摘要
Low-Power and Lossy Networks (LLNs) are a class of network in which both the routers and their interconnect are constrained. LLN routers typically operate with constraints on processing power, memory, and energy (battery power). Their interconnects are characterized by high loss rates, low data rates, and instability. LLNs are comprised of anything from a few dozen to thousands of routers. Supported traffic flows include point-to-point (between devices inside the LLN), point-to-multipoint (from a central control point to a subset of devices inside the LLN), and multipoint-to-point (from devices inside the LLN towards a central control point). This document specifies the IPv6 Routing Protocol for Low-Power and Lossy Networks (RPL), which provides a mechanism whereby multipoint-to-point traffic from devices inside the LLN towards a central control point as well as point-to-multipoint traffic from the central control point to the devices inside the LLN are supported. Support for point-to-point traffic is also available.
低功耗有损网络(LLN)是一类路由器及其互连都受到限制的网络。LLN路由器通常在处理能力、内存和能量(电池功率)受限的情况下运行。它们的互连具有高损耗率、低数据率和不稳定性的特点。LLN由几十个到数千个路由器组成。支持的业务流包括点对点(在LLN内的设备之间)、点对多点(从中央控制点到LLN内的设备子集)和多点对点(从LLN内的设备到中央控制点)。本文件规定了低功耗和有损网络(RPL)的IPv6路由协议,该协议提供了一种机制,支持从LLN内部设备到中央控制点的多点对点流量,以及从中央控制点到LLN内部设备的点对多点流量。还提供对点到点流量的支持。
Status of This Memo
关于下段备忘
This is an Internet Standards Track document.
这是一份互联网标准跟踪文件。
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.
本文件是互联网工程任务组(IETF)的产品。它代表了IETF社区的共识。它已经接受了公众审查,并已被互联网工程指导小组(IESG)批准出版。有关互联网标准的更多信息,请参见RFC 5741第2节。
Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc6550.
有关本文件当前状态、任何勘误表以及如何提供反馈的信息,请访问http://www.rfc-editor.org/info/rfc6550.
Copyright Notice
版权公告
Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved.
版权所有(c)2012 IETF信托基金和确定为文件作者的人员。版权所有。
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
本文件受BCP 78和IETF信托有关IETF文件的法律规定的约束(http://trustee.ietf.org/license-info)自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。从本文件中提取的代码组件必须包括信托法律条款第4.e节中所述的简化BSD许可证文本,并提供简化BSD许可证中所述的无担保。
Table of Contents
目录
1. Introduction ....................................................8 1.1. Design Principles ..........................................8 1.2. Expectations of Link-Layer Type ...........................10 2. Terminology ....................................................10 3. Protocol Overview ..............................................13 3.1. Topologies ................................................13 3.1.1. Constructing Topologies ............................13 3.1.2. RPL Identifiers ....................................14 3.1.3. Instances, DODAGs, and DODAG Versions ..............14 3.2. Upward Routes and DODAG Construction ......................16 3.2.1. Objective Function (OF) ............................17 3.2.2. DODAG Repair .......................................17 3.2.3. Security ...........................................17 3.2.4. Grounded and Floating DODAGs .......................18 3.2.5. Local DODAGs .......................................18 3.2.6. Administrative Preference ..........................18 3.2.7. Data-Path Validation and Loop Detection ............18 3.2.8. Distributed Algorithm Operation ....................19 3.3. Downward Routes and Destination Advertisement .............19 3.4. Local DODAGs Route Discovery ..............................20 3.5. Rank Properties ...........................................20 3.5.1. Rank Comparison (DAGRank()) ........................21 3.5.2. Rank Relationships .................................22 3.6. Routing Metrics and Constraints Used by RPL ...............23 3.7. Loop Avoidance ............................................24 3.7.1. Greediness and Instability .........................24 3.7.2. DODAG Loops ........................................26 3.7.3. DAO Loops ..........................................27 4. Traffic Flows Supported by RPL .................................27 4.1. Multipoint-to-Point Traffic ...............................27 4.2. Point-to-Multipoint Traffic ...............................27 4.3. Point-to-Point Traffic ....................................27 5. RPL Instance ...................................................28 5.1. RPL Instance ID ...........................................29 6. ICMPv6 RPL Control Message .....................................30 6.1. RPL Security Fields .......................................32 6.2. DODAG Information Solicitation (DIS) ......................38 6.2.1. Format of the DIS Base Object ......................38 6.2.2. Secure DIS .........................................38 6.2.3. DIS Options ........................................38 6.3. DODAG Information Object (DIO) ............................38 6.3.1. Format of the DIO Base Object ......................39 6.3.2. Secure DIO .........................................41 6.3.3. DIO Options ........................................41 6.4. Destination Advertisement Object (DAO) ....................41 6.4.1. Format of the DAO Base Object ......................42
1. Introduction ....................................................8 1.1. Design Principles ..........................................8 1.2. Expectations of Link-Layer Type ...........................10 2. Terminology ....................................................10 3. Protocol Overview ..............................................13 3.1. Topologies ................................................13 3.1.1. Constructing Topologies ............................13 3.1.2. RPL Identifiers ....................................14 3.1.3. Instances, DODAGs, and DODAG Versions ..............14 3.2. Upward Routes and DODAG Construction ......................16 3.2.1. Objective Function (OF) ............................17 3.2.2. DODAG Repair .......................................17 3.2.3. Security ...........................................17 3.2.4. Grounded and Floating DODAGs .......................18 3.2.5. Local DODAGs .......................................18 3.2.6. Administrative Preference ..........................18 3.2.7. Data-Path Validation and Loop Detection ............18 3.2.8. Distributed Algorithm Operation ....................19 3.3. Downward Routes and Destination Advertisement .............19 3.4. Local DODAGs Route Discovery ..............................20 3.5. Rank Properties ...........................................20 3.5.1. Rank Comparison (DAGRank()) ........................21 3.5.2. Rank Relationships .................................22 3.6. Routing Metrics and Constraints Used by RPL ...............23 3.7. Loop Avoidance ............................................24 3.7.1. Greediness and Instability .........................24 3.7.2. DODAG Loops ........................................26 3.7.3. DAO Loops ..........................................27 4. Traffic Flows Supported by RPL .................................27 4.1. Multipoint-to-Point Traffic ...............................27 4.2. Point-to-Multipoint Traffic ...............................27 4.3. Point-to-Point Traffic ....................................27 5. RPL Instance ...................................................28 5.1. RPL Instance ID ...........................................29 6. ICMPv6 RPL Control Message .....................................30 6.1. RPL Security Fields .......................................32 6.2. DODAG Information Solicitation (DIS) ......................38 6.2.1. Format of the DIS Base Object ......................38 6.2.2. Secure DIS .........................................38 6.2.3. DIS Options ........................................38 6.3. DODAG Information Object (DIO) ............................38 6.3.1. Format of the DIO Base Object ......................39 6.3.2. Secure DIO .........................................41 6.3.3. DIO Options ........................................41 6.4. Destination Advertisement Object (DAO) ....................41 6.4.1. Format of the DAO Base Object ......................42
6.4.2. Secure DAO .........................................43 6.4.3. DAO Options ........................................43 6.5. Destination Advertisement Object Acknowledgement (DAO-ACK) .................................................43 6.5.1. Format of the DAO-ACK Base Object ..................44 6.5.2. Secure DAO-ACK .....................................45 6.5.3. DAO-ACK Options ....................................45 6.6. Consistency Check (CC) ....................................45 6.6.1. Format of the CC Base Object .......................46 6.6.2. CC Options .........................................47 6.7. RPL Control Message Options ...............................47 6.7.1. RPL Control Message Option Generic Format ..........47 6.7.2. Pad1 ...............................................48 6.7.3. PadN ...............................................48 6.7.4. DAG Metric Container ...............................49 6.7.5. Route Information ..................................50 6.7.6. DODAG Configuration ................................52 6.7.7. RPL Target .........................................54 6.7.8. Transit Information ................................55 6.7.9. Solicited Information ..............................58 6.7.10. Prefix Information ................................59 6.7.11. RPL Target Descriptor .............................63 7. Sequence Counters ..............................................63 7.1. Sequence Counter Overview .................................63 7.2. Sequence Counter Operation ................................64 8. Upward Routes ..................................................66 8.1. DIO Base Rules ............................................67 8.2. Upward Route Discovery and Maintenance ....................67 8.2.1. Neighbors and Parents within a DODAG Version .......67 8.2.2. Neighbors and Parents across DODAG Versions ........68 8.2.3. DIO Message Communication ..........................73 8.3. DIO Transmission ..........................................74 8.3.1. Trickle Parameters .................................75 8.4. DODAG Selection ...........................................75 8.5. Operation as a Leaf Node ..................................75 8.6. Administrative Rank .......................................76 9. Downward Routes ................................................77 9.1. Destination Advertisement Parents .........................77 9.2. Downward Route Discovery and Maintenance ..................78 9.2.1. Maintenance of Path Sequence .......................79 9.2.2. Generation of DAO Messages .........................79 9.3. DAO Base Rules ............................................80 9.4. Structure of DAO Messages .................................80 9.5. DAO Transmission Scheduling ...............................83 9.6. Triggering DAO Messages ...................................83 9.7. Non-Storing Mode ..........................................84 9.8. Storing Mode ..............................................85 9.9. Path Control ..............................................86
6.4.2. Secure DAO .........................................43 6.4.3. DAO Options ........................................43 6.5. Destination Advertisement Object Acknowledgement (DAO-ACK) .................................................43 6.5.1. Format of the DAO-ACK Base Object ..................44 6.5.2. Secure DAO-ACK .....................................45 6.5.3. DAO-ACK Options ....................................45 6.6. Consistency Check (CC) ....................................45 6.6.1. Format of the CC Base Object .......................46 6.6.2. CC Options .........................................47 6.7. RPL Control Message Options ...............................47 6.7.1. RPL Control Message Option Generic Format ..........47 6.7.2. Pad1 ...............................................48 6.7.3. PadN ...............................................48 6.7.4. DAG Metric Container ...............................49 6.7.5. Route Information ..................................50 6.7.6. DODAG Configuration ................................52 6.7.7. RPL Target .........................................54 6.7.8. Transit Information ................................55 6.7.9. Solicited Information ..............................58 6.7.10. Prefix Information ................................59 6.7.11. RPL Target Descriptor .............................63 7. Sequence Counters ..............................................63 7.1. Sequence Counter Overview .................................63 7.2. Sequence Counter Operation ................................64 8. Upward Routes ..................................................66 8.1. DIO Base Rules ............................................67 8.2. Upward Route Discovery and Maintenance ....................67 8.2.1. Neighbors and Parents within a DODAG Version .......67 8.2.2. Neighbors and Parents across DODAG Versions ........68 8.2.3. DIO Message Communication ..........................73 8.3. DIO Transmission ..........................................74 8.3.1. Trickle Parameters .................................75 8.4. DODAG Selection ...........................................75 8.5. Operation as a Leaf Node ..................................75 8.6. Administrative Rank .......................................76 9. Downward Routes ................................................77 9.1. Destination Advertisement Parents .........................77 9.2. Downward Route Discovery and Maintenance ..................78 9.2.1. Maintenance of Path Sequence .......................79 9.2.2. Generation of DAO Messages .........................79 9.3. DAO Base Rules ............................................80 9.4. Structure of DAO Messages .................................80 9.5. DAO Transmission Scheduling ...............................83 9.6. Triggering DAO Messages ...................................83 9.7. Non-Storing Mode ..........................................84 9.8. Storing Mode ..............................................85 9.9. Path Control ..............................................86
9.9.1. Path Control Example ...............................88 9.10. Multicast Destination Advertisement Messages .............89 10. Security Mechanisms ...........................................90 10.1. Security Overview ........................................90 10.2. Joining a Secure Network .................................91 10.3. Installing Keys ..........................................92 10.4. Consistency Checks .......................................93 10.5. Counters .................................................93 10.6. Transmission of Outgoing Packets .........................94 10.7. Reception of Incoming Packets ............................95 10.7.1. Timestamp Key Checks ..............................97 10.8. Coverage of Integrity and Confidentiality ................97 10.9. Cryptographic Mode of Operation ..........................98 10.9.1. CCM Nonce .........................................98 10.9.2. Signatures ........................................99 11. Packet Forwarding and Loop Avoidance/Detection ................99 11.1. Suggestions for Packet Forwarding ........................99 11.2. Loop Avoidance and Detection ............................101 11.2.1. Source Node Operation ............................102 11.2.2. Router Operation .................................102 12. Multicast Operation ..........................................104 13. Maintenance of Routing Adjacency .............................105 14. Guidelines for Objective Functions ...........................106 14.1. Objective Function Behavior .............................106 15. Suggestions for Interoperation with Neighbor Discovery .......108 16. Summary of Requirements for Interoperable Implementations ....109 16.1. Common Requirements .....................................109 16.2. Operation as a RPL Leaf Node (Only) .....................110 16.3. Operation as a RPL Router ...............................110 16.3.1. Support for Upward Routes (Only) .................110 16.3.2. Support for Upward Routes and Downward Routes in Non-Storing ............................110 16.3.3. Support for Upward Routes and Downward Routes in Storing Mode ...........................111 16.4. Items for Future Specification ..........................111 17. RPL Constants and Variables ..................................112 18. Manageability Considerations .................................113 18.1. Introduction ............................................114 18.2. Configuration Management ................................115 18.2.1. Initialization Mode ..............................115 18.2.2. DIO and DAO Base Message and Options Configuration ....................................115 18.2.3. Protocol Parameters to Be Configured on Every Router in the LLN ..........................116 18.2.4. Protocol Parameters to Be Configured on Every Non-DODAG-Root .............................117 18.2.5. Parameters to Be Configured on the DODAG Root ....117
9.9.1. Path Control Example ...............................88 9.10. Multicast Destination Advertisement Messages .............89 10. Security Mechanisms ...........................................90 10.1. Security Overview ........................................90 10.2. Joining a Secure Network .................................91 10.3. Installing Keys ..........................................92 10.4. Consistency Checks .......................................93 10.5. Counters .................................................93 10.6. Transmission of Outgoing Packets .........................94 10.7. Reception of Incoming Packets ............................95 10.7.1. Timestamp Key Checks ..............................97 10.8. Coverage of Integrity and Confidentiality ................97 10.9. Cryptographic Mode of Operation ..........................98 10.9.1. CCM Nonce .........................................98 10.9.2. Signatures ........................................99 11. Packet Forwarding and Loop Avoidance/Detection ................99 11.1. Suggestions for Packet Forwarding ........................99 11.2. Loop Avoidance and Detection ............................101 11.2.1. Source Node Operation ............................102 11.2.2. Router Operation .................................102 12. Multicast Operation ..........................................104 13. Maintenance of Routing Adjacency .............................105 14. Guidelines for Objective Functions ...........................106 14.1. Objective Function Behavior .............................106 15. Suggestions for Interoperation with Neighbor Discovery .......108 16. Summary of Requirements for Interoperable Implementations ....109 16.1. Common Requirements .....................................109 16.2. Operation as a RPL Leaf Node (Only) .....................110 16.3. Operation as a RPL Router ...............................110 16.3.1. Support for Upward Routes (Only) .................110 16.3.2. Support for Upward Routes and Downward Routes in Non-Storing ............................110 16.3.3. Support for Upward Routes and Downward Routes in Storing Mode ...........................111 16.4. Items for Future Specification ..........................111 17. RPL Constants and Variables ..................................112 18. Manageability Considerations .................................113 18.1. Introduction ............................................114 18.2. Configuration Management ................................115 18.2.1. Initialization Mode ..............................115 18.2.2. DIO and DAO Base Message and Options Configuration ....................................115 18.2.3. Protocol Parameters to Be Configured on Every Router in the LLN ..........................116 18.2.4. Protocol Parameters to Be Configured on Every Non-DODAG-Root .............................117 18.2.5. Parameters to Be Configured on the DODAG Root ....117
18.2.6. Configuration of RPL Parameters Related to DAO-Based Mechanisms ..........................118 18.2.7. Configuration of RPL Parameters Related to Security Mechanisms ...........................119 18.2.8. Default Values ...................................119 18.3. Monitoring of RPL Operation .............................120 18.3.1. Monitoring a DODAG Parameters ....................120 18.3.2. Monitoring a DODAG Inconsistencies and Loop Detection ...................................121 18.4. Monitoring of the RPL Data Structures ...................121 18.4.1. Candidate Neighbor Data Structure ................121 18.4.2. Destination-Oriented Directed Acyclic Graph (DODAG) Table ..............................122 18.4.3. Routing Table and DAO Routing Entries ............122 18.5. Fault Management ........................................123 18.6. Policy ..................................................124 18.7. Fault Isolation .........................................125 18.8. Impact on Other Protocols ...............................125 18.9. Performance Management ..................................126 18.10. Diagnostics ............................................126 19. Security Considerations ......................................126 19.1. Overview ................................................126 20. IANA Considerations ..........................................128 20.1. RPL Control Message .....................................128 20.2. New Registry for RPL Control Codes ......................128 20.3. New Registry for the Mode of Operation (MOP) ............129 20.4. RPL Control Message Option ..............................130 20.5. Objective Code Point (OCP) Registry .....................131 20.6. New Registry for the Security Section Algorithm .........131 20.7. New Registry for the Security Section Flags .............132 20.8. New Registry for Per-KIM Security Levels ................132 20.9. New Registry for DODAG Informational Solicitation (DIS) Flags ................................133 20.10. New Registry for the DODAG Information Object (DIO) Flags ............................................134 20.11. New Registry for the Destination Advertisement Object (DAO) Flags .....................................134 20.12. New Registry for the Destination Advertisement Object (DAO) Flags .....................................135 20.13. New Registry for the Consistency Check (CC) Flags ......135 20.14. New Registry for the DODAG Configuration Option Flags ..136 20.15. New Registry for the RPL Target Option Flags ...........136 20.16. New Registry for the Transit Information Option Flags ..137 20.17. New Registry for the Solicited Information Option Flags ...........................................137 20.18. ICMPv6: Error in Source Routing Header .................138 20.19. Link-Local Scope Multicast Address .....................138 21. Acknowledgements .............................................138
18.2.6. Configuration of RPL Parameters Related to DAO-Based Mechanisms ..........................118 18.2.7. Configuration of RPL Parameters Related to Security Mechanisms ...........................119 18.2.8. Default Values ...................................119 18.3. Monitoring of RPL Operation .............................120 18.3.1. Monitoring a DODAG Parameters ....................120 18.3.2. Monitoring a DODAG Inconsistencies and Loop Detection ...................................121 18.4. Monitoring of the RPL Data Structures ...................121 18.4.1. Candidate Neighbor Data Structure ................121 18.4.2. Destination-Oriented Directed Acyclic Graph (DODAG) Table ..............................122 18.4.3. Routing Table and DAO Routing Entries ............122 18.5. Fault Management ........................................123 18.6. Policy ..................................................124 18.7. Fault Isolation .........................................125 18.8. Impact on Other Protocols ...............................125 18.9. Performance Management ..................................126 18.10. Diagnostics ............................................126 19. Security Considerations ......................................126 19.1. Overview ................................................126 20. IANA Considerations ..........................................128 20.1. RPL Control Message .....................................128 20.2. New Registry for RPL Control Codes ......................128 20.3. New Registry for the Mode of Operation (MOP) ............129 20.4. RPL Control Message Option ..............................130 20.5. Objective Code Point (OCP) Registry .....................131 20.6. New Registry for the Security Section Algorithm .........131 20.7. New Registry for the Security Section Flags .............132 20.8. New Registry for Per-KIM Security Levels ................132 20.9. New Registry for DODAG Informational Solicitation (DIS) Flags ................................133 20.10. New Registry for the DODAG Information Object (DIO) Flags ............................................134 20.11. New Registry for the Destination Advertisement Object (DAO) Flags .....................................134 20.12. New Registry for the Destination Advertisement Object (DAO) Flags .....................................135 20.13. New Registry for the Consistency Check (CC) Flags ......135 20.14. New Registry for the DODAG Configuration Option Flags ..136 20.15. New Registry for the RPL Target Option Flags ...........136 20.16. New Registry for the Transit Information Option Flags ..137 20.17. New Registry for the Solicited Information Option Flags ...........................................137 20.18. ICMPv6: Error in Source Routing Header .................138 20.19. Link-Local Scope Multicast Address .....................138 21. Acknowledgements .............................................138
22. Contributors .................................................139 23. References ...................................................139 23.1. Normative References ....................................139 23.2. Informative References ..................................140 Appendix A. Example Operation ....................................143 A.1. Example Operation in Storing Mode with Node-Owned Prefixes .................................................143 A.1.1. DIO Messages and PIO ..............................144 A.1.2. DAO Messages ......................................145 A.1.3. Routing Information Base ..........................145 A.2. Example Operation in Storing Mode with Subnet-Wide Prefix ...................................................146 A.2.1. DIO Messages and PIO ..............................147 A.2.2. DAO Messages ......................................148 A.2.3. Routing Information Base ..........................148 A.3. Example Operation in Non-Storing Mode with Node-Owned Prefixes .................................................149 A.3.1. DIO Messages and PIO ..............................150 A.3.2. DAO Messages ......................................150 A.3.3. Routing Information Base ..........................151 A.4. Example Operation in Non-Storing Mode with Subnet-Wide Prefix .......................................151 A.4.1. DIO Messages and PIO ..............................152 A.4.2. DAO Messages ......................................153 A.4.3. Routing Information Base ..........................153 A.5. Example with External Prefixes ...........................154
22. Contributors .................................................139 23. References ...................................................139 23.1. Normative References ....................................139 23.2. Informative References ..................................140 Appendix A. Example Operation ....................................143 A.1. Example Operation in Storing Mode with Node-Owned Prefixes .................................................143 A.1.1. DIO Messages and PIO ..............................144 A.1.2. DAO Messages ......................................145 A.1.3. Routing Information Base ..........................145 A.2. Example Operation in Storing Mode with Subnet-Wide Prefix ...................................................146 A.2.1. DIO Messages and PIO ..............................147 A.2.2. DAO Messages ......................................148 A.2.3. Routing Information Base ..........................148 A.3. Example Operation in Non-Storing Mode with Node-Owned Prefixes .................................................149 A.3.1. DIO Messages and PIO ..............................150 A.3.2. DAO Messages ......................................150 A.3.3. Routing Information Base ..........................151 A.4. Example Operation in Non-Storing Mode with Subnet-Wide Prefix .......................................151 A.4.1. DIO Messages and PIO ..............................152 A.4.2. DAO Messages ......................................153 A.4.3. Routing Information Base ..........................153 A.5. Example with External Prefixes ...........................154
Low-power and Lossy Networks (LLNs) consist largely of constrained nodes (with limited processing power, memory, and sometimes energy when they are battery operated or energy scavenging). These routers are interconnected by lossy links, typically supporting only low data rates, that are usually unstable with relatively low packet delivery rates. Another characteristic of such networks is that the traffic patterns are not simply point-to-point, but in many cases point-to-multipoint or multipoint-to-point. Furthermore, such networks may potentially comprise up to thousands of nodes. These characteristics offer unique challenges to a routing solution: the IETF ROLL working group has defined application-specific routing requirements for a Low-power and Lossy Network (LLN) routing protocol, specified in [RFC5867], [RFC5826], [RFC5673], and [RFC5548].
低功耗和有损网络(LLN)主要由受限制的节点组成(处理能力、内存有限,有时电池供电或能量清除时能量有限)。这些路由器通过有损链路互连,通常只支持较低的数据速率,而数据速率相对较低时通常不稳定。这种网络的另一个特点是,流量模式不是简单的点对点,而是在许多情况下是点对多点或多点对点。此外,此类网络可能包含多达数千个节点。这些特性对路由解决方案提出了独特的挑战:IETF ROLL工作组已经为低功耗和有损网络(LLN)路由协议定义了特定于应用程序的路由要求,具体规定见[RFC5867]、[RFC5826]、[RFC5673]和[RFC5548]。
This document specifies the IPv6 Routing Protocol for LLNs (RPL). Note that although RPL was specified according to the requirements set forth in the aforementioned requirement documents, its use is in no way limited to these applications.
本文档指定了LLN的IPv6路由协议(RPL)。请注意,尽管RPL是根据上述要求文件中规定的要求指定的,但其使用并不限于这些应用。
RPL was designed with the objective to meet the requirements spelled out in [RFC5867], [RFC5826], [RFC5673], and [RFC5548].
RPL的设计目标是满足[RFC5867]、[RFC5826]、[RFC5673]和[RFC5548]中规定的要求。
A network may run multiple instances of RPL concurrently. Each such instance may serve different and potentially antagonistic constraints or performance criteria. This document defines how a single instance operates.
一个网络可以同时运行多个RPL实例。每一个这样的实例可能服务于不同的和潜在的对立约束或性能标准。本文档定义了单个实例的操作方式。
In order to be useful in a wide range of LLN application domains, RPL separates packet processing and forwarding from the routing optimization objective. Examples of such objectives include minimizing energy, minimizing latency, or satisfying constraints. This document describes the mode of operation of RPL. Other companion documents specify routing Objective Functions. A RPL implementation, in support of a particular LLN application, will include the necessary Objective Function(s) as required by the application.
为了在广泛的LLN应用领域中发挥作用,RPL将数据包处理和转发从路由优化目标中分离出来。此类目标的示例包括最小化能量、最小化延迟或满足约束。本文件描述了RPL的操作模式。其他配套文件规定了路由目标函数。支持特定LLN应用程序的RPL实现将包括应用程序所需的必要目标函数。
RPL operations require bidirectional links. In some LLN scenarios, those links may exhibit asymmetric properties. It is required that the reachability of a router be verified before the router can be used as a parent. RPL expects an external mechanism to be triggered during the parent selection phase in order to verify link properties and neighbor reachability. Neighbor Unreachability Detection (NUD) is such a mechanism, but alternates are possible, including
RPL操作需要双向链接。在某些LLN场景中,这些链路可能表现出不对称特性。在将路由器用作父路由器之前,需要验证路由器的可达性。RPL期望在父选择阶段触发外部机制,以验证链路属性和邻居可达性。邻居不可达性检测(NUD)就是这样一种机制,但也可以有替代方法,包括
Bidirectional Forwarding Detection (BFD) [RFC5881] and hints from lower layers via Layer 2 (L2) triggers like [RFC5184]. In a general fashion, a detection mechanism that is reactive to traffic is favored in order to minimize the cost of monitoring links that are not being used.
双向转发检测(BFD)[RFC5881]和通过第2层(L2)触发器(如[RFC5184])从下层发出的提示。在一般方式中,有利于对流量作出反应的检测机制,以最小化监视未被使用的链路的成本。
RPL also expects an external mechanism to access and transport some control information, referred to as the "RPL Packet Information", in data packets. The RPL Packet Information is defined in Section 11.2 and enables the association of a data packet with a RPL Instance and the validation of RPL routing states. The RPL option [RFC6553] is an example of such mechanism. The mechanism is required for all packets except when strict source routing is used (that is for packets going Downward in Non-Storing mode as detailed further in Section 9), which by nature prevents endless loops and alleviates the need for the RPL Packet Information. Future companion specifications may propose alternate ways to carry the RPL Packet Information in the IPv6 packets and may extend the RPL Packet Information to support additional features.
RPL还期望外部机制访问和传输数据包中的一些控制信息,称为“RPL包信息”。第11.2节定义了RPL数据包信息,该信息支持数据包与RPL实例的关联以及RPL路由状态的验证。RPL选项[RFC6553]就是这种机制的一个例子。除了使用严格的源路由(即第9节进一步详述的非存储模式下下行的数据包)外,所有数据包都需要该机制,该机制本质上防止了无休止的循环并减轻了对RPL数据包信息的需要。未来的配套规范可提出在IPv6分组中携带RPL分组信息的替代方法,并可扩展RPL分组信息以支持附加功能。
RPL provides a mechanism to disseminate information over the dynamically formed network topology. This dissemination enables minimal configuration in the nodes, allowing nodes to operate mostly autonomously. This mechanism uses Trickle [RFC6206] to optimize the dissemination as described in Section 8.3.
RPL提供了一种通过动态形成的网络拓扑传播信息的机制。这种传播允许在节点中进行最小配置,允许节点主要自主地操作。该机制使用涓流[RFC6206]优化传播,如第8.3节所述。
In some applications, RPL assembles topologies of routers that own independent prefixes. Those prefixes may or may not be aggregatable depending on the origin of the routers. A prefix that is owned by a router is advertised as on-link.
在某些应用中,RPL组装具有独立前缀的路由器拓扑。这些前缀可以聚合,也可以不聚合,这取决于路由器的来源。路由器拥有的前缀在链路上播发。
RPL also introduces the capability to bind a subnet together with a common prefix and to route within that subnet. A source can inject information about the subnet to be disseminated by RPL, and that source is authoritative for that subnet. Because many LLN links have non-transitive properties, a common prefix that RPL disseminates over the subnet must not be advertised as on-link.
RPL还引入了使用公共前缀将子网绑定在一起以及在该子网内路由的功能。源可以注入有关RPL要传播的子网的信息,并且该源对该子网具有权威性。因为许多LLN链路具有非传递属性,所以RPL在子网上传播的公共前缀不能作为链路上的前缀进行播发。
In particular, RPL may disseminate IPv6 Neighbor Discovery (ND) information such as the [RFC4861] Prefix Information Option (PIO) and the [RFC4191] Route Information Option (RIO). ND information that is disseminated by RPL conserves all its original semantics for router to host, with limited extensions for router to router, though it is not to be confused with routing advertisements and it is never to be directly redistributed in another routing protocol. A RPL node often combines host and router behaviors. As a host, it will process the options as specified in [RFC4191], [RFC4861], [RFC4862], and [RFC6275]. As a router, the RPL node may advertise the information
具体地,RPL可以传播IPv6邻居发现(ND)信息,例如[RFC4861]前缀信息选项(PIO)和[RFC4191]路由信息选项(RIO)。RPL传播的ND信息保留了路由器到主机的所有原始语义,对路由器到路由器的扩展有限,但不能与路由广告混淆,也不能直接在另一个路由协议中重新分发。RPL节点通常结合主机和路由器行为。作为主机,它将处理[RFC4191]、[RFC4861]、[RFC4862]和[RFC6275]中指定的选项。作为路由器,RPL节点可以通告信息
from the options as required for the specific link, for instance, in an ND Router Advertisement (RA) message, though the exact operation is out of scope.
例如,在ND路由器广告(RA)消息中,特定链路所需的选项,但具体操作超出范围。
A set of companion documents to this specification will provide further guidance in the form of applicability statements specifying a set of operating points appropriate to the Building Automation, Home Automation, Industrial, and Urban application scenarios.
本规范的一套配套文件将以适用性声明的形式提供进一步的指导,说明适用于楼宇自动化、家庭自动化、工业和城市应用场景的一组操作点。
In compliance with the layered architecture of IP, RPL does not rely on any particular features of a specific link-layer technology. RPL is designed to be able to operate over a variety of different link layers, including ones that are constrained, potentially lossy, or typically utilized in conjunction with highly constrained host or router devices, such as but not limited to, low-power wireless or PLC (Power Line Communication) technologies.
根据IP的分层体系结构,RPL不依赖于特定链路层技术的任何特定功能。RPL设计为能够在各种不同的链路层上运行,包括受约束、可能有损或通常与高度约束的主机或路由器设备结合使用的链路层,例如但不限于低功率无线或PLC(电力线通信)技术。
Implementers may find [RFC3819] a useful reference when designing a link-layer interface between RPL and a particular link-layer technology.
在设计RPL和特定链路层技术之间的链路层接口时,实现者可能会发现[RFC3819]是一个有用的参考。
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].
本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“建议”、“不建议”、“可”和“可选”应按照RFC 2119[RFC2119]中的说明进行解释。
Additionally, this document uses terminology from [ROLL-TERMS], and introduces the following terminology:
此外,本文件使用了[ROLL-TERMS]中的术语,并介绍了以下术语:
DAG: Directed Acyclic Graph. A directed graph having the property that all edges are oriented in such a way that no cycles exist. All edges are contained in paths oriented toward and terminating at one or more root nodes.
有向无环图。一种有向图,其性质是所有边的方向都不存在圈。所有边都包含在指向并终止于一个或多个根节点的路径中。
DAG root: A DAG root is a node within the DAG that has no outgoing edge. Because the graph is acyclic, by definition, all DAGs must have at least one DAG root and all paths terminate at a DAG root.
DAG根:DAG根是DAG中没有传出边的节点。因为图形是非循环的,根据定义,所有DAG必须至少有一个DAG根,并且所有路径都以DAG根终止。
Destination-Oriented DAG (DODAG): A DAG rooted at a single destination, i.e., at a single DAG root (the DODAG root) with no outgoing edges.
面向目的地的DAG(DODAG):以单个目的地为根的DAG,即在没有输出边的单个DAG根(DODAG根)上。
DODAG root: A DODAG root is the DAG root of a DODAG. The DODAG root may act as a border router for the DODAG; in particular, it may aggregate routes in the DODAG and may redistribute DODAG routes into other routing protocols.
DODAG根:DODAG根是DODAG的DAG根。DODAG根可以充当DODAG的边界路由器;特别是,它可以聚合DODAG中的路由,并可以将DODAG路由重新分配到其他路由协议中。
Virtual DODAG root: A Virtual DODAG root is the result of two or more RPL routers, for instance, 6LoWPAN Border Routers (6LBRs), coordinating to synchronize DODAG state and act in concert as if they are a single DODAG root (with multiple interfaces), with respect to the LLN. The coordination most likely occurs between powered devices over a reliable transit link, and the details of that scheme are out of scope for this specification (to be defined in future companion specifications).
虚拟DODAG根:虚拟DODAG根是两个或多个RPL路由器的结果,例如6LoWPAN Border路由器(6LBR),协调以同步DODAG状态,并就LLN协调行动,就像它们是单个DODAG根(具有多个接口)一样。协调最有可能发生在可靠传输链路上的供电设备之间,该方案的细节不在本规范的范围内(将在未来的配套规范中定义)。
Up: Up refers to the direction from leaf nodes towards DODAG roots, following DODAG edges. This follows the common terminology used in graphs and depth-first-search, where vertices further from the root are "deeper" or "down" and vertices closer to the root are "shallower" or "up".
向上:向上是指从叶节点到DODAG根的方向,沿着DODAG边。这遵循了图形和深度优先搜索中使用的常用术语,其中距离根较远的顶点为“较深”或“向下”,距离根较近的顶点为“较浅”或“向上”。
Down: Down refers to the direction from DODAG roots towards leaf nodes, in the reverse direction of DODAG edges. This follows the common terminology used in graphs and depth-first-search, where vertices further from the root are "deeper" or "down" and vertices closer to the root are "shallower" or "up".
向下:向下是指从DODAG根到叶节点的方向,与DODAG边的方向相反。这遵循了图形和深度优先搜索中使用的常用术语,其中距离根较远的顶点为“较深”或“向下”,距离根较近的顶点为“较浅”或“向上”。
Rank: A node's Rank defines the node's individual position relative to other nodes with respect to a DODAG root. Rank strictly increases in the Down direction and strictly decreases in the Up direction. The exact way Rank is computed depends on the DAG's Objective Function (OF). The Rank may analogously track a simple topological distance, may be calculated as a function of link metrics, and may consider other properties such as constraints.
秩:节点的秩定义了节点相对于DODAG根的其他节点的单独位置。等级在向下方向严格增加,在向上方向严格减少。排名的精确计算方式取决于DAG的目标函数(OF)。秩可以类似地跟踪简单的拓扑距离,可以计算为链路度量的函数,并且可以考虑其他属性,例如约束。
Objective Function (OF): An OF defines how routing metrics, optimization objectives, and related functions are used to compute Rank. Furthermore, the OF dictates how parents in the DODAG are selected and, thus, the DODAG formation.
目标函数(OF):OF定义如何使用路由度量、优化目标和相关函数来计算排名。此外,OF决定了如何选择DODAG中的双亲,从而决定了DODAG的形成。
Objective Code Point (OCP): An OCP is an identifier that indicates which Objective Function the DODAG uses.
目标代码点(OCP):OCP是一个标识符,指示DODAG使用的目标函数。
RPLInstanceID: A RPLInstanceID is a unique identifier within a network. DODAGs with the same RPLInstanceID share the same Objective Function.
RPLInstanceID:RPLInstanceID是网络中的唯一标识符。具有相同RPLInstanceID的DoDAG共享相同的目标函数。
RPL Instance: A RPL Instance is a set of one or more DODAGs that share a RPLInstanceID. At most, a RPL node can belong to one DODAG in a RPL Instance. Each RPL Instance operates independently of other RPL Instances. This document describes operation within a single RPL Instance.
RPL实例:RPL实例是一组共享一个RPLInstanceID的一个或多个DoDAG。在一个RPL实例中,一个RPL节点最多只能属于一个DODAG。每个RPL实例独立于其他RPL实例运行。本文档描述单个RPL实例中的操作。
DODAGID: A DODAGID is the identifier of a DODAG root. The DODAGID is unique within the scope of a RPL Instance in the LLN. The tuple (RPLInstanceID, DODAGID) uniquely identifies a DODAG.
DODAGID:DODAGID是DODAG根的标识符。DODAGID在LLN中的RPL实例范围内是唯一的。元组(RPLInstanceID,DODAGID)唯一标识一个DODAG。
DODAG Version: A DODAG Version is a specific iteration ("Version") of a DODAG with a given DODAGID.
DODAG版本:DODAG版本是具有给定DODAGID的DODAG的特定迭代(“版本”)。
DODAGVersionNumber: A DODAGVersionNumber is a sequential counter that is incremented by the root to form a new Version of a DODAG. A DODAG Version is identified uniquely by the (RPLInstanceID, DODAGID, DODAGVersionNumber) tuple.
DODAGVersionNumber:DODAGVersionNumber是一个按根递增的顺序计数器,以形成DODAG的新版本。DODAG版本由(RPLInstanceID、DODAGID、DODAGVersionNumber)元组唯一标识。
Goal: The Goal is an application-specific goal that is defined outside the scope of RPL. Any node that roots a DODAG will need to know about this Goal to decide whether or not the Goal can be satisfied. A typical Goal is to construct the DODAG according to a specific Objective Function and to keep connectivity to a set of hosts (e.g., to use an Objective Function that minimizes a metric and is connected to a specific database host to store the collected data).
目标:目标是在RPL范围之外定义的特定于应用程序的目标。作为DODAG根节点的任何节点都需要了解该目标,以决定是否可以满足该目标。典型的目标是根据特定的目标函数构造DODAG,并保持与一组主机的连接(例如,使用最小化度量的目标函数,并连接到特定的数据库主机以存储收集的数据)。
Grounded: A DODAG is grounded when the DODAG root can satisfy the Goal.
接地:当DODAG根可以满足目标时,DODAG被接地。
Floating: A DODAG is floating if it is not grounded. A floating DODAG is not expected to have the properties required to satisfy the goal. It may, however, provide connectivity to other nodes within the DODAG.
浮动:如果DODAG未接地,则为浮动。浮动DODAG不应具有满足目标所需的属性。但是,它可以提供到DODAG内其他节点的连接。
DODAG parent: A parent of a node within a DODAG is one of the immediate successors of the node on a path towards the DODAG root. A DODAG parent's Rank is lower than the node's. (See Section 3.5.1).
DODAG父节点:DODAG中节点的父节点是指向DODAG根的路径上节点的直接后续节点之一。DODAG父级的秩低于节点的秩。(见第3.5.1节)。
Sub-DODAG: The sub-DODAG of a node is the set of other nodes whose paths to the DODAG root pass through that node. Nodes in the sub-DODAG of a node have a greater Rank than that node. (See Section 3.5.1).
Sub-DODAG:节点的Sub-DODAG是指向DODAG根的路径通过该节点的其他节点的集合。节点的子DODAG中的节点的秩大于该节点。(见第3.5.1节)。
Local DODAG: Local DODAGs contain one and only one root node, and they allow that single root node to allocate and manage a RPL Instance, identified by a local RPLInstanceID, without
本地DODAG:本地DODAG只包含一个根节点,它们允许单个根节点分配和管理一个由本地RPLInstanceID标识的RPL实例,而无需
coordination with other nodes. Typically, this is done in order to optimize routes to a destination within the LLN. (See Section 5).
与其他节点的协调。通常,这样做是为了优化到LLN内目的地的路由。(见第5节)。
Global DODAG: A Global DODAG uses a global RPLInstanceID that may be coordinated among several other nodes. (See Section 5).
全局DODAG:全局DODAG使用可以在多个其他节点之间协调的全局RPLInstanceID。(见第5节)。
DIO: DODAG Information Object (see Section 6.3)
DIO:DODAG信息对象(见第6.3节)
DAO: Destination Advertisement Object (see Section 6.4)
DAO:目的地广告对象(见第6.4节)
DIS: DODAG Information Solicitation (see Section 6.2)
DIS:DODAG信息征集(见第6.2节)
CC: Consistency Check (see Section 6.6)
CC:一致性检查(见第6.6节)
As they form networks, LLN devices often mix the roles of host and router when compared to traditional IP networks. In this document, "host" refers to an LLN device that can generate but does not forward RPL traffic; "router" refers to an LLN device that can forward as well as generate RPL traffic; and "node" refers to any RPL device, either a host or a router.
与传统IP网络相比,LLN设备在形成网络时,常常混合了主机和路由器的角色。在本文档中,“主机”是指能够生成但不转发RPL流量的LLN设备;“路由器”是指能够转发和生成RPL流量的LLN设备;“节点”是指任何RPL设备,无论是主机还是路由器。
The aim of this section is to describe RPL in the spirit of [RFC4101]. Protocol details can be found in further sections.
本节的目的是按照[RFC4101]的精神描述RPL。协议详情可在后续章节中找到。
This section describes the basic RPL topologies that may be formed, and the rules by which these are constructed, i.e., the rules governing DODAG formation.
本节描述了可能形成的基本RPL拓扑,以及构建这些拓扑的规则,即管理DODAG形成的规则。
LLNs, such as Radio Networks, do not typically have predefined topologies, for example, those imposed by point-to-point wires, so RPL has to discover links and then select peers sparingly.
LLN(如无线网络)通常没有预定义的拓扑,例如,由点到点导线施加的拓扑,因此RPL必须发现链路,然后谨慎地选择对等点。
In many cases, because Layer 2 ranges overlap only partially, RPL forms non-transitive / Non-Broadcast Multi-Access (NBMA) network topologies upon which it computes routes.
在许多情况下,由于第2层范围仅部分重叠,RPL形成了非传递/非广播多址(NBMA)网络拓扑,并在其上计算路由。
RPL routes are optimized for traffic to or from one or more roots that act as sinks for the topology. As a result, RPL organizes a topology as a Directed Acyclic Graph (DAG) that is partitioned into
RPL路由针对往返于充当拓扑汇的一个或多个根的流量进行了优化。因此,RPL将拓扑组织为一个有向无环图(DAG),该图被划分为
one or more Destination Oriented DAGs (DODAGs), one DODAG per sink. If the DAG has multiple roots, then it is expected that the roots are federated by a common backbone, such as a transit link.
一个或多个面向目的地的DAG(DODAG),每个接收器一个DODAG。如果DAG有多个根,则期望根由公共主干(如传输链路)联合。
RPL uses four values to identify and maintain a topology:
RPL使用四个值来标识和维护拓扑:
o The first is a RPLInstanceID. A RPLInstanceID identifies a set of one or more Destination Oriented DAGs (DODAGs). A network may have multiple RPLInstanceIDs, each of which defines an independent set of DODAGs, which may be optimized for different Objective Functions (OFs) and/or applications. The set of DODAGs identified by a RPLInstanceID is called a RPL Instance. All DODAGs in the same RPL Instance use the same OF.
o 第一个是RPLInstanceID。RPLInstanceID标识一组或多个面向目的地的DAG(DoDAG)。一个网络可以有多个rplinstanceid,每个rplinstanceid定义了一组独立的dodag,这些dodag可以针对不同的目标函数(of)和/或应用进行优化。由RPLInstanceID标识的DoDAG集称为RPL实例。同一RPL实例中的所有DoDAG都使用相同的。
o The second is a DODAGID. The scope of a DODAGID is a RPL Instance. The combination of RPLInstanceID and DODAGID uniquely identifies a single DODAG in the network. A RPL Instance may have multiple DODAGs, each of which has an unique DODAGID.
o 第二种是多达吉德。DODAGID的作用域是RPL实例。RPLInstanceID和DODAGID的组合唯一地标识网络中的单个DODAG。一个RPL实例可能有多个DoDAG,每个DoDAG都有一个唯一的DODAGID。
o The third is a DODAGVersionNumber. The scope of a DODAGVersionNumber is a DODAG. A DODAG is sometimes reconstructed from the DODAG root, by incrementing the DODAGVersionNumber. The combination of RPLInstanceID, DODAGID, and DODAGVersionNumber uniquely identifies a DODAG Version.
o 第三个是DODAGVersionNumber。DODAGVersionNumber的范围是DODAG。DODAG有时通过增加DODAGVersionNumber从DODAG根重建。RPLInstanceID、DODAGID和DODAGVersionNumber的组合唯一标识DODAG版本。
o The fourth is Rank. The scope of Rank is a DODAG Version. Rank establishes a partial order over a DODAG Version, defining individual node positions with respect to the DODAG root.
o 第四是排名。Rank的范围是DODAG版本。Rank在DODAG版本上建立偏序,定义单个节点相对于DODAG根的位置。
A RPL Instance contains one or more DODAG roots. A RPL Instance may provide routes to certain destination prefixes, reachable via the DODAG roots or alternate paths within the DODAG. These roots may operate independently, or they may coordinate over a network that is not necessarily as constrained as an LLN.
RPL实例包含一个或多个DODAG根。RPL实例可以提供到特定目的地前缀的路由,可通过DODAG根或DODAG内的备用路径访问。这些根可以独立运行,也可以在不一定像LLN那样受约束的网络上进行协调。
A RPL Instance may comprise:
RPL实例可包括:
o a single DODAG with a single root
o 一根独根的独角莲
* For example, a DODAG optimized to minimize latency rooted at a single centralized lighting controller in a Home Automation application.
* 例如,在家庭自动化应用程序中,一个DODAG经过优化以最小化单个集中照明控制器的延迟。
o multiple uncoordinated DODAGs with independent roots (differing DODAGIDs)
o 具有独立根的多个非协调Dodag(不同的Dodagid)
* For example, multiple data collection points in an urban data collection application that do not have suitable connectivity to coordinate with each other or that use the formation of multiple DODAGs as a means to dynamically and autonomously partition the network.
* 例如,城市数据采集应用程序中的多个数据采集点没有适当的连接以相互协调,或者使用多个DoDAG的形成作为动态和自主划分网络的手段。
o a single DODAG with a virtual root that coordinates LLN sinks (with the same DODAGID) over a backbone network.
o 具有虚拟根的单个DODAG,用于在主干网络上协调LLN接收器(具有相同的DODAGID)。
* For example, multiple border routers operating with a reliable transit link, e.g., in support of an IPv6 Low-Power Wireless Personal Area Network (6LoWPAN) application, that are capable of acting as logically equivalent interfaces to the sink of the same DODAG.
* 例如,使用可靠传输链路运行的多个边界路由器,例如,支持IPv6低功耗无线个人区域网(6LoWPAN)应用,能够充当同一DODAG接收器的逻辑等效接口。
o a combination of the above as suited to some application scenario.
o 适合某些应用场景的上述组合。
Each RPL packet is associated with a particular RPLInstanceID (see Section 11.2) and, therefore, RPL Instance (Section 5). The provisioning or automated discovery of a mapping between a RPLInstanceID and a type or service of application traffic is out of scope for this specification (to be defined in future companion specifications).
每个RPL数据包都与一个特定的RPLINTanceID(见第11.2节)相关联,因此与RPL实例(第5节)相关联。RPLInstanceID与应用程序流量类型或服务之间映射的设置或自动发现不在本规范的范围内(将在未来的配套规范中定义)。
Figure 1 depicts an example of a RPL Instance comprising three DODAGs with DODAG roots R1, R2, and R3. Each of these DODAG roots advertises the same RPLInstanceID. The lines depict connectivity between parents and children.
图1描述了一个RPL实例的示例,该实例包含三个DODAG,其DODAG根为R1、R2和R3。这些菟丝子根中的每一个都宣传相同的RPLInstanceID。这些线条描绘了父母和孩子之间的联系。
Figure 2 depicts how a DODAGVersionNumber increment leads to a new DODAG Version. This depiction illustrates a DODAGVersionNumber increment that results in a different DODAG topology. Note that a new DODAG Version does not always imply a different DODAG topology. To accommodate certain topology changes requires a new DODAG Version, as described later in this specification.
图2描述了DODAGVersionNumber增量如何导致新的DODAG版本。此描述说明了导致不同DODAG拓扑的DODAGVersionNumber增量。请注意,新的DODAG版本并不总是意味着不同的DODAG拓扑。为了适应某些拓扑更改,需要新的DODAG版本,如本规范后面所述。
In the following examples, please note that tree-like structures are depicted for simplicity, although the DODAG structure allows for each node to have multiple parents when the connectivity supports it.
在以下示例中,请注意,为了简单起见,描述了树状结构,尽管DODAG结构允许每个节点在连接支持时具有多个父节点。
+----------------------------------------------------------------+ | | | +--------------+ | | | | | | | (R1) | (R2) (R3) | | | / \ | /| \ / | \ | | | / \ | / | \ / | \ | | | (A) (B) | (C) | (D) ... (F) (G) (H) | | | /|\ |\ | / | / |\ |\ | | | | | : : : : : | : (E) : : : `: : | | | | / \ | | +--------------+ : : | | DODAG | | | +----------------------------------------------------------------+ RPL Instance
+----------------------------------------------------------------+ | | | +--------------+ | | | | | | | (R1) | (R2) (R3) | | | / \ | /| \ / | \ | | | / \ | / | \ / | \ | | | (A) (B) | (C) | (D) ... (F) (G) (H) | | | /|\ |\ | / | / |\ |\ | | | | | : : : : : | : (E) : : : `: : | | | | / \ | | +--------------+ : : | | DODAG | | | +----------------------------------------------------------------+ RPL Instance
Figure 1: RPL Instance
图1:RPL实例
+----------------+ +----------------+ | | | | | (R1) | | (R1) | | / \ | | / | | / \ | | / | | (A) (B) | \ | (A) | | /|\ / |\ | ------\ | /|\ | | : : (C) : : | \ | : : (C) | | | / | \ | | | ------/ | \ | | | / | (B) | | | | |\ | | | | : : | | | | | +----------------+ +----------------+ Version N Version N+1
+----------------+ +----------------+ | | | | | (R1) | | (R1) | | / \ | | / | | / \ | | / | | (A) (B) | \ | (A) | | /|\ / |\ | ------\ | /|\ | | : : (C) : : | \ | : : (C) | | | / | \ | | | ------/ | \ | | | / | (B) | | | | |\ | | | | : : | | | | | +----------------+ +----------------+ Version N Version N+1
Figure 2: DODAG Version
图2:DODAG版本
RPL provisions routes Up towards DODAG roots, forming a DODAG optimized according to an Objective Function (OF). RPL nodes construct and maintain these DODAGs through DODAG Information Object (DIO) messages.
RPL规定向上走向DODAG根,形成根据目标函数(OF)优化的DODAG。RPL节点通过DODAG信息对象(DIO)消息构造和维护这些DODAG。
The Objective Function (OF) defines how RPL nodes select and optimize routes within a RPL Instance. The OF is identified by an Objective Code Point (OCP) within the DIO Configuration option. An OF defines how nodes translate one or more metrics and constraints, which are themselves defined in [RFC6551], into a value called Rank, which approximates the node's distance from a DODAG root. An OF also defines how nodes select parents. Further details may be found in Section 14, [RFC6551], [RFC6552], and related companion specifications.
目标函数(OF)定义RPL节点如何在RPL实例中选择和优化路由。OF由DIO配置选项内的目标代码点(OCP)标识。OF定义了节点如何将[RFC6551]中定义的一个或多个度量和约束转换为一个称为Rank的值,该值近似于节点到DODAG根的距离。OF还定义了节点如何选择父节点。更多详细信息见第14节[RFC6551]、[RFC6552]和相关配套规范。
A DODAG root institutes a global repair operation by incrementing the DODAGVersionNumber. This initiates a new DODAG Version. Nodes in the new DODAG Version can choose a new position whose Rank is not constrained by their Rank within the old DODAG Version.
DODAG根目录通过增加DODAGVersionNumber来执行全局修复操作。这将启动一个新的DODAG版本。新DODAG版本中的节点可以选择一个新位置,其排名不受旧DODAG版本中节点排名的约束。
RPL also supports mechanisms that may be used for local repair within the DODAG Version. The DIO message specifies the necessary parameters as configured from and controlled by policy at the DODAG root.
RPL还支持在DODAG版本中用于本地修复的机制。DIO消息指定从DODAG根目录的策略配置并由策略控制的必要参数。
RPL supports message confidentiality and integrity. It is designed such that link-layer mechanisms can be used when available and appropriate; yet, in their absence, RPL can use its own mechanisms. RPL has three basic security modes.
RPL支持消息的机密性和完整性。它的设计使得在可用和适当的情况下可以使用链路层机制;然而,如果没有它们,RPL可以使用自己的机制。RPL有三种基本的安全模式。
In the first, called "unsecured", RPL control messages are sent without any additional security mechanisms. Unsecured mode does not imply that the RPL network is unsecure: it could be using other present security primitives (e.g., link-layer security) to meet application security requirements.
在第一种称为“unsecured”的方法中,发送RPL控制消息时没有任何附加的安全机制。不安全模式并不意味着RPL网络是不安全的:它可以使用其他现有的安全原语(例如,链路层安全)来满足应用程序安全要求。
In the second, called "preinstalled", nodes joining a RPL Instance have preinstalled keys that enable them to process and generate secured RPL messages.
在第二种称为“预安装”的方法中,加入RPL实例的节点具有预安装的密钥,这些密钥使它们能够处理和生成安全的RPL消息。
The third mode is called "authenticated". In authenticated mode, nodes have preinstalled keys as in preinstalled mode, but the preinstalled key may only be used to join a RPL Instance as a leaf. Joining an authenticated RPL Instance as a router requires obtaining a key from an authentication authority. The process by which this key is obtained is out of scope for this specification. Note that this specification alone does not provide sufficient detail for a RPL
第三种模式称为“已验证”。在身份验证模式下,节点具有预安装模式下的预安装密钥,但预安装密钥只能用于将RPL实例作为叶加入。将经过身份验证的RPL实例作为路由器加入需要从身份验证机构获取密钥。获取此密钥的过程超出本规范的范围。请注意,仅此规范并不能为RPL提供足够的详细信息
implementation to securely operate in authenticated mode. For a RPL implementation to operate securely in authenticated mode, it is necessary for a future companion specification to detail the mechanisms by which a node obtains/requests the authentication material (e.g., key, certificate) and to determine from where that material should be obtained. See also Section 10.3.
实现在认证模式下安全运行。为了使RPL实现在认证模式下安全运行,未来的配套规范必须详细说明节点获取/请求认证材料(例如,密钥、证书)的机制,并确定应从何处获取该材料。另见第10.3节。
DODAGs can be grounded or floating: the DODAG root advertises which is the case. A grounded DODAG offers connectivity to hosts that are required for satisfying the application-defined goal. A floating DODAG is not expected to satisfy the goal; in most cases, it only provides routes to nodes within the DODAG. Floating DODAGs may be used, for example, to preserve interconnectivity during repair.
DODAG可以是固定的,也可以是浮动的:DODAG根广告就是这样。固定的DODAG提供与主机的连接,这些主机是满足应用程序定义的目标所必需的。浮动DODAG预计无法满足该目标;在大多数情况下,它只提供到DODAG内节点的路由。例如,可使用浮动DoDAG在维修期间保持互连。
RPL nodes can optimize routes to a destination within an LLN by forming a Local DODAG whose DODAG root is the desired destination. Unlike global DAGs, which can consist of multiple DODAGs, local DAGs have one and only one DODAG and therefore one DODAG root. Local DODAGs can be constructed on demand.
RPL节点可以通过形成本地DODAG(其DODAG根是所需目的地)来优化到LLN内目的地的路由。与可由多个DODAG组成的全局DAG不同,局部DAG只有一个DODAG,因此只有一个DODAG根。可根据需要建造本地DoDAG。
An implementation/deployment may specify that some DODAG roots should be used over others through an administrative preference. Administrative preference offers a way to control traffic and engineer DODAG formation in order to better support application requirements or needs.
实现/部署可以通过管理首选项指定某些DODAG根应优先于其他根使用。管理首选项提供了一种控制流量和工程DODAG形成的方法,以便更好地支持应用程序需求。
The low-power and lossy nature of LLNs motivates RPL's use of on-demand loop detection using data packets. Because data traffic can be infrequent, maintaining a routing topology that is constantly up to date with the physical topology can waste energy. Typical LLNs exhibit variations in physical connectivity that are transient and innocuous to traffic, but that would be costly to track closely from the control plane. Transient and infrequent changes in connectivity need not be addressed by RPL until there is data to send. This aspect of RPL's design draws from existing, highly used LLN protocols as well as extensive experimental and deployment evidence on its efficacy.
LLN的低功耗和有损特性促使RPL使用基于数据包的按需环路检测。因为数据流量可能不频繁,所以维护与物理拓扑不断更新的路由拓扑可能会浪费能源。典型的LLN在物理连接方面表现出变化,这种变化是暂时的,对流量无害,但从控制平面进行近距离跟踪的成本很高。在有数据要发送之前,RPL不需要解决连接中的瞬时和不频繁变化。RPL设计的这一方面借鉴了现有的、高度使用的LLN协议以及关于其有效性的大量实验和部署证据。
The RPL Packet Information that is transported with data packets includes the Rank of the transmitter. An inconsistency between the routing decision for a packet (Upward or Downward) and the Rank relationship between the two nodes indicates a possible loop. On receiving such a packet, a node institutes a local repair operation.
与数据分组一起传输的RPL分组信息包括发射机的秩。包的路由决定(向上或向下)与两个节点之间的秩关系之间的不一致表示可能存在循环。在接收到这样的分组时,节点发起本地修复操作。
For example, if a node receives a packet flagged as moving in the Upward direction, and if that packet records that the transmitter is of a lower (lesser) Rank than the receiving node, then the receiving node is able to conclude that the packet has not progressed in the Upward direction and that the DODAG is inconsistent.
例如,如果节点接收到标记为向上移动的分组,并且如果该分组记录发射机的秩低于(小于)接收节点的秩,则接收节点能够断定该分组没有向上移动,并且DODAG不一致。
A high-level overview of the distributed algorithm, which constructs the DODAG, is as follows:
构成DODAG的分布式算法概述如下:
o Some nodes are configured to be DODAG roots, with associated DODAG configurations.
o 一些节点配置为DODAG根,并具有相关的DODAG配置。
o Nodes advertise their presence, affiliation with a DODAG, routing cost, and related metrics by sending link-local multicast DIO messages to all-RPL-nodes.
o 节点通过向所有RPL节点发送链路本地多播DIO消息来宣传其存在、与DODAG的从属关系、路由成本和相关度量。
o Nodes listen for DIOs and use their information to join a new DODAG (thus, selecting DODAG parents), or to maintain an existing DODAG, according to the specified Objective Function and Rank of their neighbors.
o 节点侦听DIO,并根据指定的目标函数和相邻节点的等级,使用其信息加入新的DODAG(因此,选择DODAG父节点),或维护现有的DODAG。
o Nodes provision routing table entries, for the destinations specified by the DIO message, via their DODAG parents in the DODAG Version. Nodes that decide to join a DODAG can provision one or more DODAG parents as the next hop for the default route and a number of other external routes for the associated instance.
o 节点通过DODAG版本中的DODAG父节点为DIO消息指定的目的地提供路由表条目。决定加入DODAG的节点可以提供一个或多个DODAG父节点作为默认路由的下一跳,并为关联实例提供许多其他外部路由。
RPL uses Destination Advertisement Object (DAO) messages to establish Downward routes. DAO messages are an optional feature for applications that require point-to-multipoint (P2MP) or point-to-point (P2P) traffic. RPL supports two modes of Downward traffic: Storing (fully stateful) or Non-Storing (fully source routed); see Section 9. Any given RPL Instance is either storing or non-storing. In both cases, P2P packets travel Up toward a DODAG root then Down to the final destination (unless the destination is on the Upward route). In the Non-Storing case, the packet will travel all the way to a DODAG root before traveling Down. In the Storing case, the
RPL使用目标播发对象(DAO)消息建立下行路由。DAO消息是需要点对多点(P2MP)或点对点(P2P)流量的应用程序的可选功能。RPL支持两种下行流量模式:存储(完全有状态)或非存储(完全源路由);见第9节。任何给定的RPL实例要么在存储中,要么在非存储中。在这两种情况下,P2P数据包都向上移动到DODAG根,然后向下移动到最终目的地(除非目的地位于向上的路由上)。在非存储的情况下,数据包在向下移动之前将一直移动到DODAG根。在存储箱中
packet may be directed Down towards the destination by a common ancestor of the source and the destination prior to reaching a DODAG root.
在到达DODAG根之前,数据包可以由源和目的地的共同祖先向下指向目的地。
As of the writing of this specification, no implementation is expected to support both Storing and Non-Storing modes of operation. Most implementations are expected to support either no Downward routes, Non-Storing mode only, or Storing mode only. Other modes of operation, such as a hybrid mix of Storing and Non-Storing mode, are out of scope for this specification and may be described in other companion specifications.
在编写本规范时,预计没有任何实现同时支持存储和非存储操作模式。大多数实现预计将支持无下行路由、仅非存储模式或仅存储模式。其他操作模式,如存储和非存储模式的混合,不在本规范的范围内,可在其他配套规范中描述。
This specification describes a basic mode of operation in support of P2P traffic. Note that more optimized P2P solutions may be described in companion specifications.
本规范描述了支持P2P流量的基本操作模式。请注意,更多优化的P2P解决方案可能会在配套规范中描述。
Optionally, a RPL network can support on-demand discovery of DODAGs to specific destinations within an LLN. Such Local DODAGs behave slightly differently than Global DODAGs: they are uniquely defined by the combination of DODAGID and RPLInstanceID. The RPLInstanceID denotes whether a DODAG is a Local DODAG.
或者,RPL网络可以支持按需发现到LLN内特定目的地的DoDAG。这种局部DoDAG的行为与全局DoDAG稍有不同:它们是由DODAGID和RPLInstanceID的组合唯一定义的。RPLInstanceID表示DODAG是否为本地DODAG。
The Rank of a node is a scalar representation of the location of that node within a DODAG Version. The Rank is used to avoid and detect loops and, as such, must demonstrate certain properties. The exact calculation of the Rank is left to the Objective Function. Even though the specific computation of the Rank is left to the Objective Function, the Rank must implement generic properties regardless of the Objective Function.
节点的秩是该节点在DODAG版本中位置的标量表示。秩用于避免和检测循环,因此必须证明某些属性。秩的精确计算留待目标函数完成。即使秩的具体计算留待目标函数完成,但无论目标函数如何,秩都必须实现泛型属性。
In particular, the Rank of the nodes must monotonically decrease as the DODAG Version is followed towards the DODAG destination. In that regard, the Rank can be considered a scalar representation of the location or radius of a node within a DODAG Version.
特别是,随着DODAG版本向DODAG目的地移动,节点的秩必须单调降低。在这方面,秩可以被视为DODAG版本中节点位置或半径的标量表示。
The details of how the Objective Function computes Rank are out of scope for this specification, although that computation may depend, for example, on parents, link metrics, node metrics, and the node configuration and policies. See Section 14 for more information.
目标函数如何计算秩的详细信息超出了本规范的范围,尽管该计算可能取决于(例如)父级、链路度量、节点度量以及节点配置和策略。更多信息请参见第14节。
The Rank is not a path cost, although its value can be derived from and influenced by path metrics. The Rank has properties of its own that are not necessarily those of all metrics:
排名不是路径成本,尽管其值可以从路径度量中导出并受路径度量的影响。排名有自己的属性,但不一定是所有指标的属性:
Type: The Rank is an abstract numeric value.
类型:秩是一个抽象的数值。
Function: The Rank is the expression of a relative position within a DODAG Version with regard to neighbors, and it is not necessarily a good indication or a proper expression of a distance or a path cost to the root.
功能:秩是DODAG版本中相对于邻居的相对位置的表达式,不一定是距离或根路径成本的良好指示或正确表达式。
Stability: The stability of the Rank determines the stability of the routing topology. Some dampening or filtering is RECOMMENDED to keep the topology stable; thus, the Rank does not necessarily change as fast as some link or node metrics would. A new DODAG Version would be a good opportunity to reconcile the discrepancies that might form over time between metrics and Ranks within a DODAG Version.
稳定性:列组的稳定性决定路由拓扑的稳定性。建议进行一些阻尼或过滤,以保持拓扑稳定;因此,秩的变化不一定像某些链路或节点度量那样快。新的DODAG版本将是一个很好的机会来协调DODAG版本中随着时间的推移可能形成的度量和等级之间的差异。
Properties: The Rank is incremented in a strictly monotonic fashion, and it can be used to validate a progression from or towards the root. A metric, like bandwidth or jitter, does not necessarily exhibit this property.
属性:秩以严格单调的方式递增,可用于验证从根开始或向根方向的级数。带宽或抖动等指标不一定表现出这种特性。
Abstract: The Rank does not have a physical unit, but rather a range of increment per hop, where the assignment of each increment is to be determined by the Objective Function.
摘要:秩没有物理单位,而是每跳增量的范围,其中每个增量的分配由目标函数确定。
The Rank value feeds into DODAG parent selection, according to the RPL loop-avoidance strategy. Once a parent has been added, and a Rank value for the node within the DODAG has been advertised, the node's further options with regard to DODAG parent selection and movement within the DODAG are restricted in favor of loop avoidance.
根据RPL循环避免策略,秩值反馈到DODAG父选择中。一旦添加了一个父节点,并且公布了DODAG内节点的秩值,节点关于DODAG父节点选择和DODAG内移动的进一步选项将受到限制,以利于避免循环。
Rank may be thought of as a fixed-point number, where the position of the radix point between the integer part and the fractional part is determined by MinHopRankIncrease. MinHopRankIncrease is the minimum increase in Rank between a node and any of its DODAG parents. A DODAG root provisions MinHopRankIncrease. MinHopRankIncrease creates a trade-off between hop cost precision and the maximum number of hops a network can support. A very large MinHopRankIncrease, for example, allows precise characterization of a given hop's effect on Rank but cannot support many hops.
秩可以被认为是一个定点数,其中整数部分和小数部分之间的基点位置由MinHopRankIncrease确定。MinHopRankIncrease是节点与其任何DODAG父节点之间的最小秩增加。一种杜达根。MinHopRankIncrease在跃点成本精度和网络可支持的最大跃点数之间进行权衡。例如,一个非常大的MinHopRankIncrease可以精确描述给定跃点对排名的影响,但不能支持多个跃点。
When an Objective Function computes Rank, the Objective Function operates on the entire (i.e., 16-bit) Rank quantity. When Rank is compared, e.g., for determination of parent relationships or loop detection, the integer portion of the Rank is to be used. The
当目标函数计算秩时,目标函数对整个(即16位)秩数量进行操作。当比较秩时,例如,为了确定父关系或循环检测,将使用秩的整数部分。这个
integer portion of the Rank is computed by the DAGRank() macro as follows, where floor(x) is the function that evaluates to the greatest integer less than or equal to x:
秩的整数部分由DAGRank()宏计算,如下所示,其中floor(x)是计算为小于或等于x的最大整数的函数:
DAGRank(rank) = floor(rank/MinHopRankIncrease)
DAGRank(rank) = floor(rank/MinHopRankIncrease)
For example, if a 16-bit Rank quantity is decimal 27, and the MinHopRankIncrease is decimal 16, then DAGRank(27) = floor(1.6875) = 1. The integer part of the Rank is 1 and the fractional part is 11/16.
例如,如果16位秩数量为十进制27,而MinHopRankIncrease为十进制16,则DAGRank(27)=下限(1.6875)=1。秩的整数部分为1,小数部分为11/16。
Following the conventions in this document, using the macro DAGRank(node) may be interpreted as DAGRank(node.rank), where node.rank is the Rank value as maintained by the node.
按照本文档中的约定,使用宏DAGRank(节点)可以解释为DAGRank(node.rank),其中node.rank是由节点维护的秩值。
A Node A has a Rank less than the Rank of a Node B if DAGRank(A) is less than DAGRank(B).
如果DAGRank(A)小于DAGRank(B),则节点A的秩小于节点B的秩。
A Node A has a Rank equal to the Rank of a Node B if DAGRank(A) is equal to DAGRank(B).
如果DAGRank(A)等于DAGRank(B),则节点A的秩等于节点B的秩。
A Node A has a Rank greater than the Rank of a Node B if DAGRank(A) is greater than DAGRank(B).
如果DAGRank(A)大于DAGRank(B),则节点A的秩大于节点B的秩。
Rank computations maintain the following properties for any nodes M and N that are neighbors in the LLN:
秩计算为LLN中的相邻节点M和N维护以下属性:
DAGRank(M) is less than DAGRank(N):
DAGRank(M)小于DAGRank(N):
In this case, the position of M is closer to the DODAG root than the position of N. Node M may safely be a DODAG parent for Node N without risk of creating a loop. Further, for a Node N, all parents in the DODAG parent set must be of a Rank less than DAGRank(N). In other words, the Rank presented by a Node N MUST be greater than that presented by any of its parents.
在这种情况下,M的位置比N的位置更接近DODAG根。节点M可以安全地成为节点N的DODAG父节点,而不存在创建循环的风险。此外,对于节点N,DODAG父集合中的所有父节点的秩必须小于DAGRank(N)。换句话说,节点N呈现的秩必须大于其任何父节点呈现的秩。
DAGRank(M) equals DAGRank(N):
DAGRank(M)等于DAGRank(N):
In this case, the positions of M and N within the DODAG and with respect to the DODAG root are similar or identical. Routing through a node with equal Rank may cause a routing loop (i.e., if that node chooses to route through a node with equal Rank as well).
在这种情况下,M和N在DODAG内以及相对于DODAG根的位置相似或相同。通过具有相同等级的节点进行路由可能会导致路由循环(即,如果该节点选择通过具有相同等级的节点进行路由)。
DAGRank(M) is greater than DAGRank(N):
DAGRank(M)大于DAGRank(N):
In this case, the position of M is farther from the DODAG root than the position of N. Further, Node M may in fact be in the sub-DODAG of Node N. If Node N selects Node M as DODAG parent, there is a risk of creating a loop.
在这种情况下,M的位置比N的位置离DODAG根更远。此外,节点M实际上可能位于节点N的子DODAG中。如果节点N选择节点M作为DODAG父节点,则存在创建循环的风险。
As an example, the Rank could be computed in such a way so as to closely track ETX (expected transmission count, a fairly common routing metric used in LLN and defined in [RFC6551]) when the metric that an Objective Function minimizes is ETX, or latency, or in a more complicated way as appropriate to the Objective Function being used within the DODAG.
例如,当目标函数最小化的度量为ETX或延迟时,可以以这样的方式来计算秩,以便密切跟踪ETX(预期传输计数,LLN中使用并在[RFC6551]中定义的相当常见的路由度量),或以更复杂的方式,适用于DODAG中使用的目标函数。
Routing metrics are used by routing protocols to compute shortest paths. Interior Gateway Protocols (IGPs) such as IS-IS ([RFC5120]) and OSPF ([RFC4915]) use static link metrics. Such link metrics can simply reflect the bandwidth or can also be computed according to a polynomial function of several metrics defining different link characteristics. Some routing protocols support more than one metric: in the vast majority of the cases, one metric is used per (sub-)topology. Less often, a second metric may be used as a tiebreaker in the presence of Equal Cost Multiple Paths (ECMPs). The optimization of multiple metrics is known as an NP-complete problem and is sometimes supported by some centralized path computation engine.
路由协议使用路由度量来计算最短路径。内部网关协议(IGP),如IS-IS([RFC5120])和OSPF([RFC4915])使用静态链路度量。这种链路度量可以简单地反映带宽,或者也可以根据定义不同链路特性的若干度量的多项式函数来计算。一些路由协议支持多个度量:在绝大多数情况下,每个(子)拓扑使用一个度量。在存在等成本多路径(ECMPs)的情况下,第二个度量可以用作分接器。多指标的优化被称为NP完全问题,有时由一些集中式路径计算引擎支持。
In contrast, LLNs do require the support of both static and dynamic metrics. Furthermore, both link and node metrics are required. In the case of RPL, it is virtually impossible to define one metric, or even a composite metric, that will satisfy all use cases.
相比之下,LLN确实需要静态和动态指标的支持。此外,还需要链路和节点度量。在RPL的情况下,几乎不可能定义满足所有用例的一个度量,甚至一个复合度量。
In addition, RPL supports constraint-based routing where constraints may be applied to both link and nodes. If a link or a node does not satisfy a required constraint, it is "pruned" from the candidate neighbor set, thus leading to a constrained shortest path.
此外,RPL支持基于约束的路由,其中约束可应用于链路和节点。如果链接或节点不满足所需的约束,将从候选邻居集中“修剪”该链接或节点,从而生成受约束的最短路径。
An Objective Function specifies the objectives used to compute the (constrained) path. Furthermore, nodes are configured to support a set of metrics and constraints and select their parents in the DODAG according to the metrics and constraints advertised in the DIO messages. Upstream and Downstream metrics may be merged or advertised separately depending on the OF and the metrics. When they are advertised separately, it may happen that the set of DIO parents
目标函数指定用于计算(受约束)路径的目标。此外,节点被配置为支持一组度量和约束,并根据DIO消息中公布的度量和约束在DODAG中选择其父节点。上游和下游指标可以合并或单独公布,具体取决于OF和指标。当他们单独发布广告时,可能会出现DIO父母的情况
is different from the set of DAO parents (a DAO parent is a node to which unicast DAO messages are sent). Yet, all are DODAG parents with regard to the rules for Rank computation.
与DAO父级集合不同(DAO父级是向其发送单播DAO消息的节点)。然而,就排名计算规则而言,所有人都是DODAG的父母。
The Objective Function is decoupled from the routing metrics and constraints used by RPL. Whereas the OF dictates rules such as DODAG parent selection, load balancing, and so on, the set of metrics and/or constraints used, and thus those that determine the preferred path, are based on the information carried within the DAG container option in DIO messages.
目标函数与RPL使用的路由度量和约束解耦。虽然OF规定了诸如DODAG父级选择、负载平衡等规则,但所使用的一组度量和/或约束,以及由此确定首选路径的度量和/或约束,是基于DIO消息中DAG容器选项中携带的信息。
The set of supported link/node constraints and metrics is specified in [RFC6551].
[RFC6551]中规定了受支持的链路/节点约束和指标集。
Example 1: Shortest path: path offering the shortest end-to-end delay.
示例1:最短路径:提供最短端到端延迟的路径。
Example 2: Shortest Constrained path: the path that does not traverse any battery-operated node and that optimizes the path reliability.
示例2:最短约束路径:不穿过任何电池供电节点且优化路径可靠性的路径。
RPL tries to avoid creating loops when undergoing topology changes and includes Rank-based data-path validation mechanisms for detecting loops when they do occur (see Section 11 for more details). In practice, this means that RPL guarantees neither loop-free path selection nor tight delay convergence times, but it can detect and repair a loop as soon as it is used. RPL uses this loop detection to ensure that packets make forward progress within the DODAG Version and trigger repairs when necessary.
RPL试图避免在发生拓扑更改时创建循环,并包括基于秩的数据路径验证机制,用于在循环发生时检测循环(有关更多详细信息,请参阅第11节)。在实践中,这意味着RPL既不能保证无环路径选择,也不能保证严格的延迟收敛时间,但它可以在使用循环后立即检测和修复循环。RPL使用此循环检测来确保数据包在DODAG版本内向前移动,并在必要时触发修复。
A node is greedy if it attempts to move deeper (increase Rank) in the DODAG Version in order to increase the size of the parent set or improve some other metric. Once a node has joined a DODAG Version, RPL disallows certain behaviors, including greediness, in order to prevent resulting instabilities in the DODAG Version.
如果节点在DODAG版本中试图移动得更深(增加秩),以增加父集合的大小或改进某些其他度量,则节点是贪婪的。一旦节点加入了DODAG版本,RPL将禁止某些行为,包括贪婪行为,以防止在DODAG版本中产生不稳定性。
Suppose a node is willing to receive and process a DIO message from a node in its own sub-DODAG and, in general, a node deeper than itself. In this case, a possibility exists that a feedback loop is created, wherein two or more nodes continue to try and move in the DODAG Version while attempting to optimize against each other. In some cases, this will result in instability. It is for this reason that RPL limits the cases where a node may process DIO messages from deeper nodes to some form of local repair. This approach creates an
假设一个节点愿意在其自己的子DODAG中接收和处理来自一个节点的DIO消息,通常是一个比自身更深的节点。在这种情况下,可能会创建一个反馈循环,其中两个或多个节点继续尝试在DODAG版本中移动,同时尝试针对彼此进行优化。在某些情况下,这将导致不稳定。正是由于这个原因,RPL将节点可能处理来自更深节点的DIO消息的情况限制为某种形式的本地修复。这种方法创建了一个
"event horizon", whereby a node cannot be influenced beyond some limit into an instability by the action of nodes that may be in its own sub-DODAG.
“事件视界”,即一个节点不能受到其自身子DODAG中节点动作的影响,超出某个极限而进入不稳定状态。
(A) (A) (A) |\ |\ |\ | `-----. | `-----. | `-----. | \ | \ | \ (B) (C) (B) \ | (C) \ | | / `-----. | | .-----' \| |/ (C) (B)
(A) (A) (A) |\ |\ |\ | `-----. | `-----. | `-----. | \ | \ | \ (B) (C) (B) \ | (C) \ | | / `-----. | | .-----' \| |/ (C) (B)
-1- -2- -3-
-1- -2- -3-
Figure 3: Greedy DODAG Parent Selection
图3:贪婪的DODAG父选择
Figure 3 depicts a DODAG in three different configurations. A usable link between (B) and (C) exists in all three configurations. In Figure 3-1, Node (A) is a DODAG parent for Nodes (B) and (C). In Figure 3-2, Node (A) is a DODAG parent for Nodes (B) and (C), and Node (B) is also a DODAG parent for Node (C). In Figure 3-3, Node (A) is a DODAG parent for Nodes (B) and (C), and Node (C) is also a DODAG parent for Node (B).
图3描述了三种不同配置的DODAG。(B)和(C)之间的可用链接存在于所有三种配置中。在图3-1中,节点(A)是节点(B)和(C)的DODAG父节点。在图3-2中,节点(A)是节点(B)和(C)的DODAG父节点,节点(B)也是节点(C)的DODAG父节点。在图3-3中,节点(A)是节点(B)和(C)的DODAG父节点,节点(C)也是节点(B)的DODAG父节点。
If a RPL node is too greedy, in that it attempts to optimize for an additional number of parents beyond its most preferred parents, then an instability can result. Consider the DODAG illustrated in Figure 3-1. In this example, Nodes (B) and (C) may most prefer Node (A) as a DODAG parent, but we will consider the case when they are operating under the greedy condition that will try to optimize for two parents.
如果RPL节点过于贪婪,因为它试图优化其最首选的父节点之外的额外数量的父节点,那么可能会导致不稳定。考虑图3-1中所示的doDAG。在这个例子中,节点(b)和(c)可能最喜欢Node(a)作为doDAG父级,但是我们将考虑当它们在贪婪条件下操作的情况,这将尝试为两个父级优化。
o Let Figure 3-1 be the initial condition.
o 将图3-1作为初始条件。
o Suppose Node (C) first is able to leave the DODAG and rejoin at a lower Rank, taking both Nodes (A) and (B) as DODAG parents as depicted in Figure 3-2. Now Node (C) is deeper than both Nodes (A) and (B), and Node (C) is satisfied to have two DODAG parents.
o 假设节点(C)首先能够离开DODAG并以较低的秩重新加入,将节点(a)和(B)作为DODAG父节点,如图3-2所示。现在节点(C)比节点(A)和(B)都深,节点(C)满足于有两个DODAG父节点。
o Suppose Node (B), in its greediness, is willing to receive and process a DIO message from Node (C) (against the rules of RPL), and then Node (B) leaves the DODAG and rejoins at a lower Rank,
o 假设处于贪婪状态的节点(B)愿意接收并处理来自节点(C)的DIO消息(违反RPL规则),然后节点(B)离开DODAG并以较低的级别重新加入,
taking both Nodes (A) and (C) as DODAG parents. Now Node (B) is deeper than both Nodes (A) and (C) and is satisfied with two DAG parents.
将节点(A)和(C)都作为DODAG父节点。现在节点(B)比节点(A)和(C)都深,并且满足于两个DAG父节点。
o Then, Node (C), because it is also greedy, will leave and rejoin deeper, to again get two parents and have a lower Rank then both of them.
o 然后,节点(C),因为它也是贪婪的,将离开并更深地重新加入,再次得到两个父节点,并且比它们都具有更低的等级。
o Next, Node (B) will again leave and rejoin deeper, to again get two parents.
o 接下来,节点(B)将再次离开并重新加入更深的节点,以再次获得两个父节点。
o Again, Node (C) leaves and rejoins deeper.
o 同样,节点(C)离开并重新连接到更深的位置。
o The process will repeat, and the DODAG will oscillate between Figure 3-2 and Figure 3-3 until the nodes count to infinity and restart the cycle again.
o 该过程将重复,DODAG将在图3-2和图3-3之间振荡,直到节点计数到无穷大,并再次重新开始循环。
o This cycle can be averted through mechanisms in RPL:
o 可以通过RPL中的机制避免这种循环:
* Nodes (B) and (C) stay at a Rank sufficient to attach to their most preferred parent (A) and don't go for any deeper (worse) alternate parents (Nodes are not greedy).
* 节点(B)和(C)保持一个足以连接到它们最喜欢的父节点(a)的等级,并且不选择任何更深(更差)的备用父节点(节点不是贪婪的)。
* Nodes (B) and (C) do not process DIO messages from nodes deeper than themselves (because such nodes are possibly in their own sub-DODAGs).
* 节点(B)和(C)不处理来自比自身更深的节点的DIO消息(因为这样的节点可能在它们自己的子DoDAG中)。
These mechanisms are further described in Section 8.2.2.4.
第8.2.2.4节进一步描述了这些机制。
A DODAG loop may occur when a node detaches from the DODAG and reattaches to a device in its prior sub-DODAG. In particular, this may happen when DIO messages are missed. Strict use of the DODAGVersionNumber can eliminate this type of loop, but this type of loop may possibly be encountered when using some local repair mechanisms.
当节点从DODAG分离并重新连接到其先前子DODAG中的设备时,可能会发生DODAG循环。特别是,当DIO消息丢失时,可能会发生这种情况。严格使用DODAGVersionNumber可以消除这种类型的循环,但在使用某些局部修复机制时可能会遇到这种类型的循环。
For example, consider the local repair mechanism that allows a node to detach from the DODAG, advertise a Rank of INFINITE_RANK (in order to poison its routes / inform its sub-DODAG), and then reattach to the DODAG. In some of these cases, the node may reattach to its own prior-sub-DODAG, causing a DODAG loop, because the poisoning may fail if the INFINITE_RANK advertisements are lost in the LLN environment. (In this case, the Rank-based data-path validation mechanisms would eventually detect and trigger correction of the loop).
例如,考虑允许节点从DoDAG脱离的局部修复机制,为无穷小的秩做广告(以毒害其路由/通知它的子DODAG),然后重新连接到DODAG。在这些情况中的一些情况下,节点可能会重新连接到其自身先前的子DODAG,从而导致DODAG循环,因为如果无限级广告在LLN环境中丢失,中毒可能会失败。(在这种情况下,基于秩的数据路径验证机制最终将检测并触发循环修正)。
A DAO loop may occur when the parent has a route installed upon receiving and processing a DAO message from a child, but the child has subsequently cleaned up the related DAO state. This loop happens when a No-Path (a DAO message that invalidates a previously announced prefix, see Section 6.4.3) was missed and persists until all state has been cleaned up. RPL includes an optional mechanism to acknowledge DAO messages, which may mitigate the impact of a single DAO message being missed. RPL includes loop detection mechanisms that mitigate the impact of DAO loops and trigger their repair. (See Section 11.2.2.3.)
当父级在接收和处理来自子级的DAO消息时安装了路由,但子级随后清除了相关的DAO状态时,可能会发生DAO循环。当丢失No Path(使先前宣布的前缀无效的DAO消息,请参见第6.4.3节)并持续到清除所有状态时,会发生此循环。RPL包括一个可选的机制来确认DAO消息,这可以减轻单个DAO消息丢失的影响。RPL包括循环检测机制,可以减轻DAO循环的影响并触发其修复。(见第11.2.2.3节。)
RPL supports three basic traffic flows: multipoint-to-point (MP2P), point-to-multipoint (P2MP), and point-to-point (P2P).
RPL支持三种基本流量:多点对点(MP2P)、点对多点(P2MP)和点对点(P2P)。
Multipoint-to-point (MP2P) is a dominant traffic flow in many LLN applications ([RFC5867], [RFC5826], [RFC5673], and [RFC5548]). The destinations of MP2P flows are designated nodes that have some application significance, such as providing connectivity to the larger Internet or core private IP network. RPL supports MP2P traffic by allowing MP2P destinations to be reached via DODAG roots.
多点对点(MP2P)是许多LLN应用([RFC5867]、[RFC5826]、[RFC5673]和[RFC5548])中的主要流量。MP2P流的目的地是具有某些应用意义的指定节点,例如提供到更大的Internet或核心专用IP网络的连接。RPL通过允许通过DODAG根到达MP2P目的地来支持MP2P通信。
Point-to-multipoint (P2MP) is a traffic pattern required by several LLN applications ([RFC5867], [RFC5826], [RFC5673], and [RFC5548]). RPL supports P2MP traffic by using a destination advertisement mechanism that provisions Down routes toward destinations (prefixes, addresses, or multicast groups), and away from roots. Destination advertisements can update routing tables as the underlying DODAG topology changes.
点对多点(P2MP)是几种LLN应用程序([RFC5867]、[RFC5826]、[RFC5673]和[RFC5548])所需的一种通信模式。RPL通过使用目的地播发机制来支持P2MP流量,该机制提供了通向目的地(前缀、地址或多播组)并远离根的下行路由。随着基础DODAG拓扑的更改,目标播发可以更新路由表。
RPL DODAGs provide a basic structure for point-to-point (P2P) traffic. For a RPL network to support P2P traffic, a root must be able to route packets to a destination. Nodes within the network may also have routing tables to destinations. A packet flows towards a root until it reaches an ancestor that has a known route to the destination. As pointed out later in this document, in the most constrained case (when nodes cannot store routes), that common ancestor may be the DODAG root. In other cases, it may be a node closer to both the source and destination.
RPL DoDAG为点对点(P2P)流量提供了基本结构。对于支持P2P流量的RPL网络,根用户必须能够将数据包路由到目的地。网络中的节点也可以具有到目的地的路由表。数据包流向根,直到到达具有到目的地的已知路由的祖先。正如本文档后面指出的,在最受约束的情况下(当节点无法存储路由时),公共祖先可能是DODAG根。在其他情况下,它可能是更靠近源和目标的节点。
RPL also supports the case where a P2P destination is a 'one-hop' neighbor.
RPL还支持P2P目的地是“一跳”邻居的情况。
RPL neither specifies nor precludes additional mechanisms for computing and installing potentially more optimal routes to support arbitrary P2P traffic.
RPL既不指定也不排除用于计算和安装可能更优化的路由以支持任意P2P流量的附加机制。
Within a given LLN, there may be multiple, logically independent RPL Instances. A RPL node may belong to multiple RPL Instances, and it may act as a router in some and as a leaf in others. This document describes how a single instance behaves.
在给定的LLN中,可能有多个逻辑上独立的RPL实例。一个RPL节点可能属于多个RPL实例,在某些情况下它可以充当路由器,在另一些情况下它可以充当叶子。本文档描述单个实例的行为。
There are two types of RPL Instances: Local and Global. RPL divides the RPLInstanceID space between Global and Local instances to allow for both coordinated and unilateral allocation of RPLInstanceIDs. Global RPL Instances are coordinated, have one or more DODAGs, and are typically long-lived. Local RPL Instances are always a single DODAG whose singular root owns the corresponding DODAGID and allocates the local RPLInstanceID in a unilateral manner. Local RPL Instances can be used, for example, for constructing DODAGs in support of a future on-demand routing solution. The mode of operation of Local RPL Instances is out of scope for this specification and may be described in other companion specifications.
有两种类型的RPL实例:本地和全局。RPL在全局实例和本地实例之间划分RPLInstanceID空间,以允许协调和单边分配RPLInstanceID。全局RPL实例是协调的,具有一个或多个DoDAG,并且通常是长期的。本地RPL实例始终是单个DODAG,其单根拥有相应的DODAGID,并以单边方式分配本地RPLInstanceID。例如,可以使用本地RPL实例来构建DoDAG,以支持未来的按需路由解决方案。本地RPL实例的操作模式超出了本规范的范围,可能会在其他配套规范中描述。
The definition and provisioning of RPL Instances are out of scope for this specification. Guidelines may be application and implementation specific, and they are expected to be elaborated in future companion specifications. Those operations are expected to be such that data packets coming from the outside of the RPL network can unambiguously be associated to at least one RPL Instance and be safely routed over any instance that would match the packet.
RPL实例的定义和配置超出了本规范的范围。指南可能是特定于应用程序和实现的,预计将在未来的配套规范中详细阐述。预期这些操作使得来自RPL网络外部的数据分组可以明确地与至少一个RPL实例相关联,并且安全地路由到与分组匹配的任何实例上。
Control and data packets within RPL network are tagged to unambiguously identify of which RPL Instance they are a part.
RPL网络中的控制和数据包被标记,以明确标识它们是哪个RPL实例的一部分。
Every RPL control message has a RPLInstanceID field. Some RPL control messages, when referring to a local RPLInstanceID as defined below, may also include a DODAGID.
每个RPL控制消息都有一个RPLInstanceID字段。某些RPL控制消息在引用下面定义的本地RPLInstanceID时,还可能包括DODAGID。
Data packets that flow within the RPL network expose the RPLInstanceID as part of the RPL Packet Information that RPL requires, as further described in Section 11.2. For data packets coming from outside the RPL network, the ingress router determines the RPLInstanceID and places it into the resulting packet that it injects into the RPL network.
如第11.2节所述,在RPL网络中流动的数据包将RPLINTanceID公开为RPL所需的RPL包信息的一部分。对于来自RPL网络外部的数据包,入口路由器确定RPLInstanceID并将其放入其注入RPL网络的结果包中。
A global RPLInstanceID MUST be unique to the whole LLN. Mechanisms for allocating and provisioning global RPLInstanceID are out of scope for this specification. There can be up to 128 Global instance in the whole network. Local instances are always used in conjunction with a DODAGID (which is either given explicitly or implicitly in some cases), and up 64 Local instances per DODAGID can be supported. Local instances are allocated and managed by the node that owns the DODAGID, without any explicit coordination with other nodes, as further detailed below.
全局RPLInstanceID必须是整个LLN唯一的。分配和配置全局RPLInstanceID的机制超出了本规范的范围。整个网络中最多可以有128个全局实例。本地实例总是与DODAGID一起使用(在某些情况下,它是显式或隐式提供的),并且每个DODAGID最多可以支持64个本地实例。本地实例由拥有DODAGID的节点分配和管理,而无需与其他节点进行任何显式协调,如下所述。
A global RPLInstanceID is encoded in a RPLInstanceID field as follows:
全局RPLInstanceID在RPLInstanceID字段中编码如下:
0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ |0| ID | Global RPLInstanceID in 0..127 +-+-+-+-+-+-+-+-+
0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ |0| ID | Global RPLInstanceID in 0..127 +-+-+-+-+-+-+-+-+
Figure 4: RPLInstanceID Field Format for Global Instances
图4:全局实例的RPLInstanceID字段格式
A local RPLInstanceID is autoconfigured by the node that owns the DODAGID and it MUST be unique for that DODAGID. The DODAGID used to configure the local RPLInstanceID MUST be a reachable IPv6 address of the node, and it MUST be used as an endpoint of all communications within that Local instance.
本地RPLInstanceID由拥有DODAGID的节点自动配置,并且它对于该DODAGID必须是唯一的。用于配置本地RPLInstanceID的DODAGID必须是节点的可访问IPv6地址,并且必须用作该本地实例中所有通信的端点。
A local RPLInstanceID is encoded in a RPLInstanceID field as follows:
本地RPLInstanceID在RPLInstanceID字段中编码如下:
0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ |1|D| ID | Local RPLInstanceID in 0..63 +-+-+-+-+-+-+-+-+
0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ |1|D| ID | Local RPLInstanceID in 0..63 +-+-+-+-+-+-+-+-+
Figure 5: RPLInstanceID Field Format for Local Instances
图5:本地实例的RPLInstanceID字段格式
The 'D' flag in a local RPLInstanceID is always set to 0 in RPL control messages. It is used in data packets to indicate whether the DODAGID is the source or the destination of the packet. If the 'D' flag is set to 1, then the destination address of the IPv6 packet MUST be the DODAGID. If the 'D' flag is cleared, then the source address of the IPv6 packet MUST be the DODAGID.
在RPL控制消息中,本地RPLInstanceID中的“D”标志始终设置为0。它在数据包中用于指示DODAGID是数据包的源还是目标。如果“D”标志设置为1,则IPv6数据包的目标地址必须是DODAGID。如果清除了“D”标志,则IPv6数据包的源地址必须是DODAGID。
For example, consider a Node A that is the DODAG root of a Local RPL Instance, and has allocated a local RPLInstanceID. By definition, all traffic traversing that Local RPL Instance will either originate or terminate at Node A. In this case, the DODAGID will be the
例如,考虑一个节点A,它是本地RPL实例的DODAG根,并且已经分配了一个本地RPLStaseNID。根据定义,通过该本地RPL实例的所有流量将在节点A处发起或终止。在这种情况下,DODAGID将是
reachable IPv6 address of Node A. All traffic will contain the address of Node A, and thus the DODAGID, in either the source or destination address. Thus, the local RPLInstanceID may indicate that the DODAGID is equivalent to either the source address or the destination address by setting the 'D' flag appropriately.
节点A的可访问IPv6地址。所有流量都将在源地址或目标地址中包含节点A的地址,从而包含DODAGID。因此,本地RPLInstanceID可以通过适当地设置“D”标志来指示DODAGID等同于源地址或目标地址。
This document defines the RPL control message, a new ICMPv6 [RFC4443] message. A RPL control message is identified by a code and composed of a base that depends on the code (and a series of options).
本文档定义了RPL控制消息,即新的ICMPv6[RFC4443]消息。RPL控制消息由代码标识,并由依赖于代码的基(和一系列选项)组成。
Most RPL control messages have the scope of a link. The only exception is for the DAO / DAO-ACK messages in Non-Storing mode, which are exchanged using a unicast address over multiple hops and thus uses global or unique-local addresses for both the source and destination addresses. For all other RPL control messages, the source address is a link-local address, and the destination address is either the all-RPL-nodes multicast address or a link-local unicast address of the destination. The all-RPL-nodes multicast address is a new address with a value of ff02::1a.
大多数RPL控制消息都具有链接的作用域。唯一的例外是非存储模式下的DAO/DAO-ACK消息,该消息使用单播地址在多个跃点上交换,因此对源地址和目标地址都使用全局或唯一的本地地址。对于所有其他RPL控制消息,源地址是链路本地地址,目标地址是目标的所有RPL节点多播地址或链路本地单播地址。所有RPL节点多播地址是一个新地址,其值为ff02::1a。
In accordance with [RFC4443], the RPL Control Message consists of an ICMPv6 header followed by a message body. The message body is comprised of a message base and possibly a number of options as illustrated in Figure 6.
根据[RFC4443],RPL控制消息由ICMPv6报头和消息正文组成。消息体由一个消息库和一些选项组成,如图6所示。
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 | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Base . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Option(s) . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Base . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Option(s) . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 6: RPL Control Message
图6:RPL控制消息
The RPL control message is an ICMPv6 information message with a Type of 155.
RPL控制消息是类型为155的ICMPv6信息消息。
The Code field identifies the type of RPL control message. This document defines codes for the following RPL control message types (see Section 20.2)):
代码字段标识RPL控制消息的类型。本文件定义了以下RPL控制消息类型的代码(见第20.2节):
o 0x00: DODAG Information Solicitation (Section 6.2)
o 0x00:DODAG信息征集(第6.2节)
o 0x01: DODAG Information Object (Section 6.3)
o 0x01:DODAG信息对象(第6.3节)
o 0x02: Destination Advertisement Object (Section 6.4)
o 0x02:目标广告对象(第6.4节)
o 0x03: Destination Advertisement Object Acknowledgment (Section 6.5)
o 0x03:目标播发对象确认(第6.5节)
o 0x80: Secure DODAG Information Solicitation (Section 6.2.2)
o 0x80:安全DODAG信息征集(第6.2.2节)
o 0x81: Secure DODAG Information Object (Section 6.3.2)
o 0x81:安全DODAG信息对象(第6.3.2节)
o 0x82: Secure Destination Advertisement Object (Section 6.4.2)
o 0x82:安全目标播发对象(第6.4.2节)
o 0x83: Secure Destination Advertisement Object Acknowledgment (Section 6.5.2)
o 0x83:安全目标播发对象确认(第6.5.2节)
o 0x8A: Consistency Check (Section 6.6)
o 0x8A:一致性检查(第6.6节)
If a node receives a RPL control message with an unknown Code field, the node MUST discard the message without any further processing, MAY raise a management alert, and MUST NOT send any messages in response.
如果节点接收到带有未知代码字段的RPL控制消息,则该节点必须放弃该消息而不进行任何进一步处理,可能会发出管理警报,并且不得发送任何消息作为响应。
The checksum is computed as specified in [RFC4443]. It is set to zero for the RPL security operations specified below and computed once the rest of the content of the RPL message including the security fields is all set.
按照[RFC4443]中的规定计算校验和。对于下面指定的RPL安全操作,它被设置为零,并在RPL消息的其余内容(包括安全字段)全部设置后计算。
The high order bit (0x80) of the code denotes whether the RPL message has security enabled. Secure RPL messages have a format to support confidentiality and integrity, illustrated in Figure 7.
代码的高位(0x80)表示RPL消息是否启用了安全性。安全RPL消息具有支持机密性和完整性的格式,如图7所示。
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 | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Security . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Base . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Option(s) . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Security . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Base . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Option(s) . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 7: Secure RPL Control Message
图7:安全RPL控制消息
The remainder of this section describes the currently defined RPL control message Base formats followed by the currently defined RPL Control Message options.
本节的其余部分描述了当前定义的RPL控制消息基本格式,后跟当前定义的RPL控制消息选项。
Each RPL message has a secure variant. The secure variants provide integrity and replay protection as well as optional confidentiality and delay protection. Because security covers the base message as well as options, in secured messages the security information lies between the checksum and base, as shown in Figure 7.
每个RPL消息都有一个安全变量。安全变体提供完整性和重播保护,以及可选的机密性和延迟保护。因为安全性包括基本消息和选项,所以在安全消息中,安全信息位于校验和和基本消息之间,如图7所示。
The level of security and the algorithms in use are indicated in the protocol messages as described below:
协议消息中指出了使用的安全级别和算法,如下所述:
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |T| Reserved | Algorithm |KIM|Resvd| LVL | Flags | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Counter | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Key Identifier . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |T| Reserved | Algorithm |KIM|Resvd| LVL | Flags | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Counter | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Key Identifier . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 8: Security Section
图8:安全部分
Message Authentication Codes (MACs) and signatures provide authentication over the entire unsecured ICMPv6 RPL control message, including the Security section with all fields defined, but with the ICMPv6 checksum temporarily set to zero. Encryption provides confidentiality of the secured RPL ICMPv6 message starting at the first byte after the Security section and continuing to the last byte of the packet. The security transformation yields a secured ICMPv6 RPL message with the inclusion of the cryptographic fields (MAC, signature, etc.). In other words, the security transformation itself (e.g., the Signature and/or Algorithm in use) will detail how to incorporate the cryptographic fields into the secured packet. The Security section itself does not explicitly carry those cryptographic fields. Use of the Security section is further detailed in Sections 19 and 10.
消息身份验证码(MAC)和签名为整个不安全的ICMPv6 RPL控制消息提供身份验证,包括定义了所有字段的安全部分,但ICMPv6校验和暂时设置为零。加密提供安全RPL ICMPv6消息的机密性,该消息从安全部分后的第一个字节开始,一直到数据包的最后一个字节。安全转换生成一个包含加密字段(MAC、签名等)的安全ICMPv6 RPL消息。换句话说,安全转换本身(例如,使用中的签名和/或算法)将详细说明如何将加密字段合并到安全数据包中。安全部分本身并不显式地携带这些加密字段。第19节和第10节进一步详细介绍了安全部分的使用。
Counter is Time (T): If the counter's Time flag is set, then the Counter field is a timestamp. If the flag is cleared, then the counter is an incrementing counter. Section 10.5 describes the details of the 'T' flag and Counter field.
计数器是时间(T):如果设置了计数器的时间标志,则计数器字段是时间戳。如果清除该标志,则计数器为递增计数器。第10.5节描述了“T”标志和计数器字段的详细信息。
Reserved: 7-bit unused field. The field MUST be initialized to zero by the sender and MUST be ignored by the receiver.
保留:7位未使用字段。发送方必须将该字段初始化为零,接收方必须忽略该字段。
Security Algorithm (Algorithm): The Security Algorithm field specifies the encryption, MAC, and signature scheme the network uses. Supported values of this field are as follows:
安全算法(Algorithm):安全算法字段指定网络使用的加密、MAC和签名方案。此字段支持的值如下所示:
+-----------+-------------------+------------------------+ | Algorithm | Encryption/MAC | Signature | +-----------+-------------------+------------------------+ | 0 | CCM with AES-128 | RSA with SHA-256 | | 1-255 | Unassigned | Unassigned | +-----------+-------------------+------------------------+
+-----------+-------------------+------------------------+ | Algorithm | Encryption/MAC | Signature | +-----------+-------------------+------------------------+ | 0 | CCM with AES-128 | RSA with SHA-256 | | 1-255 | Unassigned | Unassigned | +-----------+-------------------+------------------------+
Figure 9: Security Algorithm (Algorithm) Encoding
图9:安全算法(算法)编码
Section 10.9 describes the algorithms in greater detail.
第10.9节更详细地描述了算法。
Key Identifier Mode (KIM): The Key Identifier Mode is a 2-bit field that indicates whether the key used for packet protection is determined implicitly or explicitly and indicates the particular representation of the Key Identifier field. The Key Identifier Mode is set one of the values from the table below:
密钥标识符模式(KIM):密钥标识符模式是一个2位字段,指示用于数据包保护的密钥是隐式还是显式确定的,并指示密钥标识符字段的特定表示形式。键标识符模式设置为下表中的一个值:
+------+-----+-----------------------------+------------+ | Mode | KIM | Meaning | Key | | | | | Identifier | | | | | Length | | | | | (octets) | +------+-----+-----------------------------+------------+ | 0 | 00 | Group key used. | 1 | | | | Key determined by Key Index | | | | | field. | | | | | | | | | | Key Source is not present. | | | | | Key Index is present. | | +------+-----+-----------------------------+------------+ | 1 | 01 | Per-pair key used. | 0 | | | | Key determined by source | | | | | and destination of packet. | | | | | | | | | | Key Source is not present. | | | | | Key Index is not present. | | +------+-----+-----------------------------+------------+ | 2 | 10 | Group key used. | 9 | | | | Key determined by Key Index | | | | | and Key Source Identifier. | | | | | | | | | | Key Source is present. | | | | | Key Index is present. | | +------+-----+-----------------------------+------------+ | 3 | 11 | Node's signature key used. | 0/9 | | | | If packet is encrypted, | | | | it uses a group key, Key | | | | | Index and Key Source | | | | | specify key. | | | | | | | | | | Key Source may be present. | | | | | Key Index may be present. | | +------+-----+-----------------------------+------------+
+------+-----+-----------------------------+------------+ | Mode | KIM | Meaning | Key | | | | | Identifier | | | | | Length | | | | | (octets) | +------+-----+-----------------------------+------------+ | 0 | 00 | Group key used. | 1 | | | | Key determined by Key Index | | | | | field. | | | | | | | | | | Key Source is not present. | | | | | Key Index is present. | | +------+-----+-----------------------------+------------+ | 1 | 01 | Per-pair key used. | 0 | | | | Key determined by source | | | | | and destination of packet. | | | | | | | | | | Key Source is not present. | | | | | Key Index is not present. | | +------+-----+-----------------------------+------------+ | 2 | 10 | Group key used. | 9 | | | | Key determined by Key Index | | | | | and Key Source Identifier. | | | | | | | | | | Key Source is present. | | | | | Key Index is present. | | +------+-----+-----------------------------+------------+ | 3 | 11 | Node's signature key used. | 0/9 | | | | If packet is encrypted, | | | | it uses a group key, Key | | | | | Index and Key Source | | | | | specify key. | | | | | | | | | | Key Source may be present. | | | | | Key Index may be present. | | +------+-----+-----------------------------+------------+
Figure 10: Key Identifier Mode (KIM) Encoding
图10:密钥标识符模式(KIM)编码
In Mode 3 (KIM=11), the presence or absence of the Key Source and Key Identifier depends on the Security Level (LVL) described below. If the Security Level indicates there is encryption, then the fields are present; if it indicates there is no encryption, then the fields are not present.
在模式3(KIM=11)中,密钥源和密钥标识符的存在与否取决于下面描述的安全级别(LVL)。如果安全级别指示存在加密,则字段存在;如果指示没有加密,则字段不存在。
Resvd: 3-bit unused field. The field MUST be initialized to zero by the sender and MUST be ignored by the receiver.
Resvd:3位未使用字段。发送方必须将该字段初始化为零,接收方必须忽略该字段。
Security Level (LVL): The Security Level is a 3-bit field that indicates the provided packet protection. This value can be adapted on a per-packet basis and allows for varying levels of data authenticity and, optionally, for data confidentiality. The KIM field indicates whether signatures are used and the meaning of the Level field. Note that the assigned values of Security Level are not necessarily ordered -- a higher value of LVL does not necessarily equate to increased security. The Security Level is set to one of the values in the tables below:
安全级别(LVL):安全级别是一个3位字段,表示提供的数据包保护。该值可根据每个数据包进行调整,并允许不同级别的数据真实性,以及可选的数据机密性。KIM字段指示是否使用签名以及级别字段的含义。请注意,安全级别的指定值不一定是有序的——LVL值越高,不一定等于安全性越高。安全级别设置为下表中的一个值:
+---------------------------+ | KIM=0,1,2 | +-------+--------------------+------+ | LVL | Attributes | MAC | | | | Len | +-------+--------------------+------+ | 0 | MAC-32 | 4 | | 1 | ENC-MAC-32 | 4 | | 2 | MAC-64 | 8 | | 3 | ENC-MAC-64 | 8 | | 4-7 | Unassigned | N/A | +-------+--------------------+------+
+---------------------------+ | KIM=0,1,2 | +-------+--------------------+------+ | LVL | Attributes | MAC | | | | Len | +-------+--------------------+------+ | 0 | MAC-32 | 4 | | 1 | ENC-MAC-32 | 4 | | 2 | MAC-64 | 8 | | 3 | ENC-MAC-64 | 8 | | 4-7 | Unassigned | N/A | +-------+--------------------+------+
+---------------------+ | KIM=3 | +-------+---------------+-----+ | LVL | Attributes | Sig | | | | Len | +-------+---------------+-----+ | 0 | Sign-3072 | 384 | | 1 | ENC-Sign-3072 | 384 | | 2 | Sign-2048 | 256 | | 3 | ENC-Sign-2048 | 256 | | 4-7 | Unassigned | N/A | +-------+---------------+-----+
+---------------------+ | KIM=3 | +-------+---------------+-----+ | LVL | Attributes | Sig | | | | Len | +-------+---------------+-----+ | 0 | Sign-3072 | 384 | | 1 | ENC-Sign-3072 | 384 | | 2 | Sign-2048 | 256 | | 3 | ENC-Sign-2048 | 256 | | 4-7 | Unassigned | N/A | +-------+---------------+-----+
Figure 11: Security Level (LVL) Encoding
图11:安全级别(LVL)编码
The MAC attribute indicates that the message has a MAC of the specified length. The ENC attribute indicates that the message is encrypted. The Sign attribute indicates that the message has a signature of the specified length.
MAC属性表示消息具有指定长度的MAC。ENC属性表示消息已加密。Sign属性表示消息具有指定长度的签名。
Flags: 8-bit unused field reserved for flags. The field MUST be initialized to zero by the sender and MUST be ignored by the receiver.
标志:为标志保留的8位未使用字段。发送方必须将该字段初始化为零,接收方必须忽略该字段。
Counter: The Counter field indicates the non-repeating 4-octet value used to construct the cryptographic mechanism that implements packet protection and allows for the provision of semantic security. See Section 10.9.1.
计数器:计数器字段表示用于构造实现数据包保护并允许提供语义安全性的加密机制的非重复的4-octet值。见第10.9.1节。
Key Identifier: The Key Identifier field indicates which key was used to protect the packet. This field provides various levels of granularity of packet protection, including peer-to-peer keys, group keys, and signature keys. This field is represented as indicated by the Key Identifier Mode field and is formatted 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Key Source . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Key Index . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Key Source . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Key Index . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 12: Key Identifier
图12:密钥标识符
Key Source: The Key Source field, when present, indicates the logical identifier of the originator of a group key. When present, this field is 8 bytes in length.
密钥源:密钥源字段(如果存在)表示组密钥的发起人的逻辑标识符。如果存在,此字段的长度为8字节。
Key Index: The Key Index field, when present, allows unique identification of different keys with the same originator. It is the responsibility of each key originator to make sure that actively used keys that it issues have distinct key indices and that all key indices have a value unequal to 0x00. Value 0x00 is reserved for a preinstalled, shared key. When present this field is 1 byte in length.
密钥索引:密钥索引字段(如果存在)允许对同一发起人的不同密钥进行唯一标识。每个密钥发起人都有责任确保其发出的主动使用的密钥具有不同的密钥索引,并且所有密钥索引的值都不等于0x00。值0x00保留给预安装的共享密钥。当存在时,该字段的长度为1字节。
Unassigned bits of the Security section are reserved. They MUST be set to zero on transmission and MUST be ignored on reception.
安全部分的未分配位是保留的。它们在传输时必须设置为零,在接收时必须忽略。
The DODAG Information Solicitation (DIS) message may be used to solicit a DODAG Information Object from a RPL node. Its use is analogous to that of a Router Solicitation as specified in IPv6 Neighbor Discovery; a node may use DIS to probe its neighborhood for nearby DODAGs. Section 8.3 describes how nodes respond to a DIS.
DODAG信息请求(DIS)消息可用于从RPL节点请求DODAG信息对象。它的使用类似于IPv6邻居发现中指定的路由器请求;节点可以使用DIS探测其附近的Dodag。第8.3节描述了节点如何响应DIS。
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Flags | Reserved | Option(s)... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Flags | Reserved | Option(s)... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 13: The DIS Base Object
图13:DIS基本对象
Flags: 8-bit unused field reserved for flags. The field MUST be initialized to zero by the sender and MUST be ignored by the receiver.
标志:为标志保留的8位未使用字段。发送方必须将该字段初始化为零,接收方必须忽略该字段。
Reserved: 8-bit unused field. The field MUST be initialized to zero by the sender and MUST be ignored by the receiver.
保留:8位未使用字段。发送方必须将该字段初始化为零,接收方必须忽略该字段。
Unassigned bits of the DIS Base are reserved. They MUST be set to zero on transmission and MUST be ignored on reception.
DIS Base的未分配位被保留。它们在传输时必须设置为零,在接收时必须忽略。
A Secure DIS message follows the format in Figure 7, where the base format is the DIS message shown in Figure 13.
安全DIS消息遵循图7中的格式,其中基本格式是图13中所示的DIS消息。
The DIS message MAY carry valid options.
DIS消息可能包含有效选项。
This specification allows for the DIS message to carry the following options:
本规范允许DIS消息包含以下选项:
0x00 Pad1 0x01 PadN 0x07 Solicited Information
0x00 Pad1 0x01 PadN 0x07请求的信息
The DODAG Information Object carries information that allows a node to discover a RPL Instance, learn its configuration parameters,
DODAG信息对象携带的信息允许节点发现RPL实例,了解其配置参数,
select a DODAG parent set, and maintain the DODAG.
选择DODAG父集,并维护DODAG。
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RPLInstanceID |Version Number | Rank | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |G|0| MOP | Prf | DTSN | Flags | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + DODAGID + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Option(s)... +-+-+-+-+-+-+-+-+
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RPLInstanceID |Version Number | Rank | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |G|0| MOP | Prf | DTSN | Flags | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + DODAGID + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Option(s)... +-+-+-+-+-+-+-+-+
Figure 14: The DIO Base Object
图14:DIO基础对象
Grounded (G): The Grounded 'G' flag indicates whether the DODAG advertised can satisfy the application-defined goal. If the flag is set, the DODAG is grounded. If the flag is cleared, the DODAG is floating.
接地(G):接地的“G”标志指示公布的DODAG是否能够满足应用程序定义的目标。如果设置了该标志,则DODAG接地。如果清除该标志,则DODAG浮动。
Mode of Operation (MOP): The Mode of Operation (MOP) field identifies the mode of operation of the RPL Instance as administratively provisioned at and distributed by the DODAG root. All nodes who join the DODAG must be able to honor the MOP in order to fully participate as a router, or else they must only join as a leaf. MOP is encoded as in the figure below:
操作模式(MOP):操作模式(MOP)字段标识RPL实例的操作模式,该RPL实例在DODAG根目录上以管理方式提供并由其分发。所有加入DODAG的节点必须能够遵守MOP,才能作为路由器完全参与,否则它们只能作为叶子加入。MOP编码如下图所示:
+-----+-----------------------------------------------------+ | MOP | Description | +-----+-----------------------------------------------------+ | 0 | No Downward routes maintained by RPL | | 1 | Non-Storing Mode of Operation | | 2 | Storing Mode of Operation with no multicast support | | 3 | Storing Mode of Operation with multicast support | | | | | | All other values are unassigned | +-----+-----------------------------------------------------+
+-----+-----------------------------------------------------+ | MOP | Description | +-----+-----------------------------------------------------+ | 0 | No Downward routes maintained by RPL | | 1 | Non-Storing Mode of Operation | | 2 | Storing Mode of Operation with no multicast support | | 3 | Storing Mode of Operation with multicast support | | | | | | All other values are unassigned | +-----+-----------------------------------------------------+
A value of 0 indicates that destination advertisement messages are disabled and the DODAG maintains only Upward routes.
值为0表示目标播发消息已禁用,并且DODAG仅维护上行路由。
Figure 15: Mode of Operation (MOP) Encoding
图15:操作模式(MOP)编码
DODAGPreference (Prf): A 3-bit unsigned integer that defines how preferable the root of this DODAG is compared to other DODAG roots within the instance. DAGPreference ranges from 0x00 (least preferred) to 0x07 (most preferred). The default is 0 (least preferred). Section 8.2 describes how DAGPreference affects DIO processing.
DODAGPreference(Prf):一个3位无符号整数,用于定义此DODAG的根与实例中其他DODAG根相比的优先级。DAG首选项范围从0x00(最低首选项)到0x07(最高首选项)。默认值为0(最低优先级)。第8.2节描述了DAG偏好如何影响DIO处理。
Version Number: 8-bit unsigned integer set by the DODAG root to the DODAGVersionNumber. Section 8.2 describes the rules for DODAGVersionNumbers and how they affect DIO processing.
版本号:由DODAG根设置为DODAGVersionNumber的8位无符号整数。第8.2节描述了DodagVersionNumber的规则以及它们如何影响DIO处理。
Rank: 16-bit unsigned integer indicating the DODAG Rank of the node sending the DIO message. Section 8.2 describes how Rank is set and how it affects DIO processing.
秩:16位无符号整数,表示发送DIO消息的节点的DODAG秩。第8.2节描述了如何设置秩及其如何影响DIO处理。
RPLInstanceID: 8-bit field set by the DODAG root that indicates of which RPL Instance the DODAG is a part.
RPLInstanceID:DODAG根设置的8位字段,指示DODAG是哪个RPL实例的一部分。
Destination Advertisement Trigger Sequence Number (DTSN): 8-bit unsigned integer set by the node issuing the DIO message. The Destination Advertisement Trigger Sequence Number (DTSN) flag is used as part of the procedure to maintain Downward routes. The details of this process are described in Section 9.
目标播发触发序列号(DTSN):由发出DIO消息的节点设置的8位无符号整数。目的地播发触发序列号(DTSN)标志用作维护下行路由过程的一部分。第9节描述了该过程的细节。
Flags: 8-bit unused field reserved for flags. The field MUST be initialized to zero by the sender and MUST be ignored by the receiver.
标志:为标志保留的8位未使用字段。发送方必须将该字段初始化为零,接收方必须忽略该字段。
Reserved: 8-bit unused field. The field MUST be initialized to zero by the sender and MUST be ignored by the receiver.
保留:8位未使用字段。发送方必须将该字段初始化为零,接收方必须忽略该字段。
DODAGID: 128-bit IPv6 address set by a DODAG root that uniquely identifies a DODAG. The DODAGID MUST be a routable IPv6 address belonging to the DODAG root.
DODAGID:由唯一标识DODAG的DODAG根设置的128位IPv6地址。DODAGID必须是属于DODAG根目录的可路由IPv6地址。
Unassigned bits of the DIO Base are reserved. They MUST be set to zero on transmission and MUST be ignored on reception.
保留DIO基址的未分配位。它们在传输时必须设置为零,在接收时必须忽略。
A Secure DIO message follows the format in Figure 7, where the base format is the DIO message shown in Figure 14.
安全DIO消息遵循图7中的格式,其中基本格式是图14中所示的DIO消息。
The DIO message MAY carry valid options.
DIO消息可能包含有效选项。
This specification allows for the DIO message to carry the following options:
本规范允许DIO消息包含以下选项:
0x00 Pad1 0x01 PadN 0x02 DAG Metric Container 0x03 Routing Information 0x04 DODAG Configuration 0x08 Prefix Information
0x00 Pad1 0x01 PadN 0x02 DAG公制容器0x03路由信息0x04 DODAG配置0x08前缀信息
The Destination Advertisement Object (DAO) is used to propagate destination information Upward along the DODAG. In Storing mode, the DAO message is unicast by the child to the selected parent(s). In Non-Storing mode, the DAO message is unicast to the DODAG root. The DAO message may optionally, upon explicit request or error, be acknowledged by its destination with a Destination Advertisement Acknowledgement (DAO-ACK) message back to the sender of the DAO.
目的地广告对象(DAO)用于沿DODAG向上传播目的地信息。在存储模式下,DAO消息由子级单播到选定的父级。在非存储模式下,DAO消息单播到DODAG根。在显式请求或错误的情况下,DAO消息可选择性地由其目的地用目的地广告确认(DAO-ACK)消息向DAO的发送者确认。
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RPLInstanceID |K|D| Flags | Reserved | DAOSequence | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + DODAGID* + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Option(s)... +-+-+-+-+-+-+-+-+
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RPLInstanceID |K|D| Flags | Reserved | DAOSequence | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + DODAGID* + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Option(s)... +-+-+-+-+-+-+-+-+
The '*' denotes that the DODAGID is not always present, as described below.
“*”表示DODAGID并不总是存在,如下所述。
Figure 16: The DAO Base Object
图16:DAO基础对象
RPLInstanceID: 8-bit field indicating the topology instance associated with the DODAG, as learned from the DIO.
RPLInstanceID:8位字段,指示与DODAG关联的拓扑实例,从DIO中学习。
K: The 'K' flag indicates that the recipient is expected to send a DAO-ACK back. (See Section 9.3.)
K:“K”标志表示收件人应发送回DAO-ACK。(见第9.3节。)
D: The 'D' flag indicates that the DODAGID field is present. This flag MUST be set when a local RPLInstanceID is used.
D:“D”标志表示存在DODAGID字段。使用本地RPLInstanceID时必须设置此标志。
Flags: The 6 bits remaining unused in the Flags field are reserved for flags. The field MUST be initialized to zero by the sender and MUST be ignored by the receiver.
标志:标志字段中剩余未使用的6位保留给标志。发送方必须将该字段初始化为零,接收方必须忽略该字段。
Reserved: 8-bit unused field. The field MUST be initialized to zero by the sender and MUST be ignored by the receiver.
保留:8位未使用字段。发送方必须将该字段初始化为零,接收方必须忽略该字段。
DAOSequence: Incremented at each unique DAO message from a node and echoed in the DAO-ACK message.
DAOSequence:在来自节点的每个唯一DAO消息处递增,并在DAO-ACK消息中回显。
DODAGID (optional): 128-bit unsigned integer set by a DODAG root that uniquely identifies a DODAG. This field is only present when the 'D' flag is set. This field is typically only present when a local RPLInstanceID is in use, in order to identify the DODAGID that is associated with the RPLInstanceID. When a global RPLInstanceID is in use, this field need not be present.
DODAGID(可选):由唯一标识DODAG的DODAG根设置的128位无符号整数。仅当设置了“D”标志时,此字段才存在。此字段通常仅在使用本地RPLInstanceID时出现,以标识与RPLInstanceID关联的DODAGID。当使用全局RPLInstanceID时,此字段不必存在。
Unassigned bits of the DAO Base are reserved. They MUST be set to zero on transmission and MUST be ignored on reception.
DAO基的未分配位是保留的。它们在传输时必须设置为零,在接收时必须忽略。
A Secure DAO message follows the format in Figure 7, where the base format is the DAO message shown in Figure 16.
安全DAO消息遵循图7中的格式,其中基本格式是图16中所示的DAO消息。
The DAO message MAY carry valid options.
DAO消息可能包含有效的选项。
This specification allows for the DAO message to carry the following options:
此规范允许DAO消息包含以下选项:
0x00 Pad1 0x01 PadN 0x05 RPL Target 0x06 Transit Information 0x09 RPL Target Descriptor
0x00 Pad1 0x01 PadN 0x05 RPL目标0x06传输信息0x09 RPL目标描述符
A special case of the DAO message, termed a No-Path, is used in Storing mode to clear Downward routing state that has been provisioned through DAO operation. The No-Path carries a Target option and an associated Transit Information option with a lifetime of 0x00000000 to indicate a loss of reachability to that Target.
DAO消息的一种特殊情况,称为No Path,在存储模式中用于清除通过DAO操作提供的向下路由状态。No Path包含一个目标选项和一个关联的传输信息选项,其生存期为0x00000000,表示无法到达该目标。
The DAO-ACK message is sent as a unicast packet by a DAO recipient (a DAO parent or DODAG root) in response to a unicast DAO message.
DAO-ACK消息作为单播数据包由DAO接收方(DAO父级或DODAG根)发送,以响应单播DAO消息。
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RPLInstanceID |D| Reserved | DAOSequence | Status | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + DODAGID* + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Option(s)... +-+-+-+-+-+-+-+-+
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RPLInstanceID |D| Reserved | DAOSequence | Status | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + DODAGID* + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Option(s)... +-+-+-+-+-+-+-+-+
The '*' denotes that the DODAGID is not always present, as described below.
“*”表示DODAGID并不总是存在,如下所述。
Figure 17: The DAO ACK Base Object
图17:DAO ACK基本对象
RPLInstanceID: 8-bit field indicating the topology instance associated with the DODAG, as learned from the DIO.
RPLInstanceID:8位字段,指示与DODAG关联的拓扑实例,从DIO中学习。
D: The 'D' flag indicates that the DODAGID field is present. This would typically only be set when a local RPLInstanceID is used.
D:“D”标志表示存在DODAGID字段。这通常仅在使用本地RPLInstanceID时设置。
Reserved: The 7-bit field, reserved for flags.
保留:7位字段,为标志保留。
DAOSequence: Incremented at each DAO message from a node, and echoed in the DAO-ACK by the recipient. The DAOSequence is used to correlate a DAO message and a DAO ACK message and is not to be confused with the Transit Information option Path Sequence that is associated to a given Target Down the DODAG.
DAOSequence:在来自节点的每个DAO消息处递增,并由收件人在DAO-ACK中回显。DAO序列用于关联DAO消息和DAO ACK消息,并且不能与与DODAG下给定目标关联的传输信息选项路径序列混淆。
Status: Indicates the completion. Status 0 is defined as unqualified acceptance in this specification. The remaining status values are reserved as rejection codes. No rejection status codes are defined in this specification, although status codes SHOULD be allocated according to the following guidelines in future specifications:
状态:表示完成。状态0在本规范中定义为不合格验收。其余状态值保留为拒绝代码。本规范中未定义拒收状态代码,但应根据未来规范中的以下指南分配状态代码:
0: Unqualified acceptance (i.e., the node receiving the DAO-ACK is not rejected).
0:不合格接受(即接收DAO-ACK的节点不被拒绝)。
1-127: Not an outright rejection; the node sending the DAO-ACK is willing to act as a parent, but the receiving node is suggested to find and use an alternate parent instead. 127-255: Rejection; the node sending the DAO-ACK is unwilling to act as a parent.
1-127:不是完全拒绝;发送DAO-ACK的节点愿意充当父节点,但建议接收节点寻找并使用备用父节点。127-255:拒绝;发送DAO-ACK的节点不愿意充当父节点。
DODAGID (optional): 128-bit unsigned integer set by a DODAG root that uniquely identifies a DODAG. This field is only present when the 'D' flag is set. Typically, this field is only present when a local RPLInstanceID is in use in order to identify the DODAGID that is associated with the RPLInstanceID. When a global RPLInstanceID is in use, this field need not be present.
DODAGID(可选):由唯一标识DODAG的DODAG根设置的128位无符号整数。仅当设置了“D”标志时,此字段才存在。通常,只有当本地RPLInstanceID用于标识与RPLInstanceID关联的DODAGID时,此字段才会出现。当使用全局RPLInstanceID时,此字段不必存在。
Unassigned bits of the DAO-ACK Base are reserved. They MUST be set to zero on transmission and MUST be ignored on reception.
DAO-ACK基的未分配位被保留。它们在传输时必须设置为零,在接收时必须忽略。
A Secure DAO-ACK message follows the format in Figure 7, where the base format is the DAO-ACK message shown in Figure 17.
安全DAO-ACK消息遵循图7中的格式,其中基本格式是图17中所示的DAO-ACK消息。
This specification does not define any options to be carried by the DAO-ACK message.
本规范未定义DAO-ACK消息要携带的任何选项。
The CC message is used to check secure message counters and issue challenge-responses. A CC message MUST be sent as a secured RPL message.
CC消息用于检查安全消息计数器并发出质询响应。CC消息必须作为安全RPL消息发送。
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RPLInstanceID |R| Flags | CC Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + DODAGID + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Counter | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Option(s)... +-+-+-+-+-+-+-+-+
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RPLInstanceID |R| Flags | CC Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + DODAGID + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Counter | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Option(s)... +-+-+-+-+-+-+-+-+
Figure 18: The CC Base Object
图18:CC基本对象
RPLInstanceID: 8-bit field indicating the topology instance associated with the DODAG, as learned from the DIO.
RPLInstanceID:8位字段,指示与DODAG关联的拓扑实例,从DIO中学习。
R: The 'R' flag indicates whether the CC message is a response. A message with the 'R' flag cleared is a request; a message with the 'R' flag set is a response.
R:“R”标志指示CC消息是否为响应。清除“R”标志的消息为请求;设置了“R”标志的消息是响应。
Flags: The 7 bits remaining unused in the Flags field are reserved for flags. The field MUST be initialized to zero by the sender and MUST be ignored by the receiver.
标志:标志字段中剩余未使用的7位保留给标志。发送方必须将该字段初始化为零,接收方必须忽略该字段。
CC Nonce: 16-bit unsigned integer set by a CC request. The corresponding CC response includes the same CC nonce value as the request.
CC Nonce:由CC请求设置的16位无符号整数。相应的CC响应包含与请求相同的CC nonce值。
DODAGID: 128-bit field, contains the identifier of the DODAG root.
DODAGID:128位字段,包含DODAG根的标识符。
Destination Counter: 32-bit unsigned integer value indicating the sender's estimate of the destination's current security counter value. If the sender does not have an estimate, it SHOULD set the Destination Counter field to zero.
目标计数器:32位无符号整数值,指示发送方对目标当前安全计数器值的估计。如果发送方没有估计值,则应将目标计数器字段设置为零。
Unassigned bits of the CC Base are reserved. They MUST be set to zero on transmission and MUST be ignored on reception.
保留CC基址的未分配位。它们在传输时必须设置为零,在接收时必须忽略。
The Destination Counter value allows new or recovered nodes to resynchronize through CC message exchanges. This is important to ensure that a Counter value is not repeated for a given security key even in the event of devices recovering from a failure that created a loss of Counter state. For example, where a CC request or other RPL message is received with an initialized counter within the message Security section, the provision of the Incoming Counter within the CC response message allows the requesting node to reset its Outgoing Counter to a value greater than the last value received by the responding node; the Incoming Counter will also be updated from the received CC response.
目标计数器值允许新的或恢复的节点通过CC消息交换重新同步。这对于确保给定安全密钥的计数器值不会重复非常重要,即使在设备从导致计数器状态丢失的故障中恢复时也是如此。例如,在使用消息安全部分内的初始化计数器接收CC请求或其他RPL消息的情况下,在CC响应消息内提供传入计数器允许请求节点将其传出计数器重置为大于响应节点接收的最后一个值的值;传入计数器也将根据收到的CC响应进行更新。
This specification allows for the CC message to carry the following options:
本规范允许CC报文携带以下选项:
0x00 Pad1 0x01 PadN
0x00焊盘1 0x01焊盘N
RPL Control Message options all follow this format:
RPL控制消息选项均采用以下格式:
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - | Option Type | Option Length | Option Data +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - -
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - | Option Type | Option Length | Option Data +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - -
Figure 19: RPL Option Generic Format
图19:RPL选项通用格式
Option Type: 8-bit identifier of the type of option. The Option Type values are assigned by IANA (see Section 20.4.)
选项类型:选项类型的8位标识符。选项类型值由IANA指定(见第20.4节)
Option Length: 8-bit unsigned integer, representing the length in octets of the option, not including the Option Type and Length fields.
选项长度:8位无符号整数,表示选项的长度(以八位字节为单位),不包括选项类型和长度字段。
Option Data: A variable length field that contains data specific to the option.
选项数据:包含特定于选项的数据的可变长度字段。
When processing a RPL message containing an option for which the Option Type value is not recognized by the receiver, the receiver MUST silently ignore the unrecognized option and continue to process the following option, correctly handling any remaining options in the message.
当处理包含接收者无法识别选项类型值的选项的RPL消息时,接收者必须默默忽略无法识别的选项,并继续处理以下选项,正确处理消息中的任何剩余选项。
RPL message options may have alignment requirements. Following the convention in IPv6, options with alignment requirements are aligned in a packet such that multi-octet values within the Option Data field of each option fall on natural boundaries (i.e., fields of width n octets are placed at an integer multiple of n octets from the start of the header, for n = 1, 2, 4, or 8).
RPL消息选项可能有对齐要求。按照IPv6中的约定,具有对齐要求的选项在数据包中对齐,以使每个选项的选项数据字段中的多个八位字节值落在自然边界上(即,宽度为n个八位字节的字段从报头开始以n个八位字节的整数倍放置,对于n=1、2、4或8)。
The Pad1 option MAY be present in DIS, DIO, DAO, DAO-ACK, and CC messages, and its format is as follows:
Pad1选项可能存在于DIS、DIO、DAO、DAO-ACK和CC消息中,其格式如下:
0 0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ | Type = 0x00 | +-+-+-+-+-+-+-+-+
0 0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ | Type = 0x00 | +-+-+-+-+-+-+-+-+
Figure 20: Format of the Pad1 Option
图20:Pad1选项的格式
The Pad1 option is used to insert a single octet of padding into the message to enable options alignment. If more than one octet of padding is required, the PadN option should be used rather than multiple Pad1 options.
Pad1选项用于在消息中插入一个八位字节的填充,以启用选项对齐。如果需要多个八位字节的填充,则应使用PadN选项,而不是多个Pad1选项。
NOTE! The format of the Pad1 option is a special case -- it has neither Option Length nor Option Data fields.
笔记Pad1选项的格式是一种特殊情况——它既没有选项长度,也没有选项数据字段。
The PadN option MAY be present in DIS, DIO, DAO, DAO-ACK, and CC messages, and its format is as follows:
PadN选项可能出现在DIS、DIO、DAO、DAO-ACK和CC消息中,其格式如下:
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - | Type = 0x01 | Option Length | 0x00 Padding... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - -
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - | Type = 0x01 | Option Length | 0x00 Padding... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - -
Figure 21: Format of the Pad N Option
图21:Pad N选项的格式
The PadN option is used to insert two or more octets of padding into the message to enable options alignment. PadN option data MUST be ignored by the receiver.
PadN选项用于在消息中插入两个或多个八位字节的填充,以启用选项对齐。接收器必须忽略PadN选项数据。
Option Type: 0x01
选项类型:0x01
Option Length: For N octets of padding, where 2 <= N <= 7, the Option Length field contains the value N-2. An Option Length of 0 indicates a total padding of 2 octets. An Option Length of 5 indicates a total padding of 7 octets, which is the maximum padding size allowed with the PadN option.
选项长度:对于N个八位字节的填充,其中2<=N<=7,选项长度字段包含值N-2。选项长度为0表示总填充为2个八位字节。选项长度为5表示总共填充7个八位字节,这是PadN选项允许的最大填充大小。
Option Data: For N (N > 1) octets of padding, the Option Data consists of N-2 zero-valued octets.
选项数据:对于N(N>1)个八位字节的填充,选项数据由N-2个零值八位字节组成。
The DAG Metric Container option MAY be present in DIO or DAO messages, and its format is as follows:
DAG公制容器选项可能出现在DIO或DAO消息中,其格式如下:
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - | Type = 0x02 | Option Length | Metric Data +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - -
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - | Type = 0x02 | Option Length | Metric Data +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - -
Figure 22: Format of the DAG Metric Container Option
图22:DAG公制容器选项的格式
The DAG Metric Container is used to report metrics along the DODAG. The DAG Metric Container may contain a number of discrete node, link, and aggregate path metrics and constraints specified in [RFC6551] as chosen by the implementer.
DAG度量容器用于沿DODAG报告度量。DAG度量容器可以包含由实现者选择的[RFC6551]中指定的许多离散节点、链路和聚合路径度量和约束。
The DAG Metric Container MAY appear more than once in the same RPL control message, for example, to accommodate a use case where the Metric Data is longer than 256 bytes. More information is in [RFC6551].
例如,DAG度量容器可能在同一RPL控制消息中出现多次,以适应度量数据长度超过256字节的用例。更多信息参见[RFC6551]。
The processing and propagation of the DAG Metric Container is governed by implementation specific policy functions.
DAG度量容器的处理和传播由特定于实现的策略函数控制。
Option Type: 0x02
选项类型:0x02
Option Length: The Option Length field contains the length in octets of the Metric Data.
选项长度:选项长度字段包含度量数据的长度(以八位字节为单位)。
Metric Data: The order, content, and coding of the DAG Metric Container data is as specified in [RFC6551].
度量数据:DAG度量容器数据的顺序、内容和编码如[RFC6551]所述。
The Route Information Option (RIO) MAY be present in DIO messages, and it carries the same information as the IPv6 Neighbor Discovery (ND) RIO as defined in [RFC4191]. The root of a DODAG is authoritative for setting that information and the information is unchanged as propagated down the DODAG. A RPL router may trivially transform it back into an ND option to advertise in its own RAs so a node attached to the RPL router will end up using the DODAG for which the root has the best preference for the destination of a packet. In addition to the existing ND semantics, it is possible for an Objective Function to use this information to favor a DODAG whose root is most preferred for a specific destination. The format of the option is modified slightly (Type, Length, Prefix) in order to be carried as a RPL option as follows:
路由信息选项(RIO)可能出现在DIO消息中,它携带与[RFC4191]中定义的IPv6邻居发现(ND)RIO相同的信息。DODAG的根是设置该信息的权威,并且该信息在向下传播时保持不变。RPL路由器可以很容易地将其转换回ND选项以在其自己的RAs中播发,因此连接到RPL路由器的节点将最终使用根对数据包的目的地具有最佳偏好的DODAG。除了现有的ND语义外,目标函数还可以使用此信息来支持根最适合特定目的地的DODAG。该选项的格式稍作修改(类型、长度、前缀),以便作为RPL选项携带,如下所示:
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 = 0x03 | Option Length | Prefix Length |Resvd|Prf|Resvd| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Route Lifetime | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Prefix (Variable Length) . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 = 0x03 | Option Length | Prefix Length |Resvd|Prf|Resvd| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Route Lifetime | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Prefix (Variable Length) . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 23: Format of the Route Information Option
图23:路由信息选项的格式
The RIO is used to indicate that connectivity to the specified destination prefix is available from the DODAG root.
RIO用于指示可以从DODAG根目录连接到指定的目标前缀。
In the event that a RPL control message may need to specify connectivity to more than one destination, the RIO may be repeated.
如果RPL控制消息可能需要指定到多个目的地的连接,则可以重复RIO。
[RFC4191] should be consulted as the authoritative reference with respect to the RIO. The field descriptions are transcribed here for convenience:
[RFC4191]应作为里约协议的权威参考咨询。为方便起见,此处转录了字段说明:
Option Type: 0x03
选项类型:0x03
Option Length: Variable, length of the option in octets excluding the Type and Length fields. Note that this length is expressed in units of single octets, unlike in IPv6 ND.
选项长度:变量,选项的长度(八位字节),不包括类型和长度字段。请注意,与IPv6 ND不同,此长度以单个八位字节为单位表示。
Prefix Length: 8-bit unsigned integer. The number of leading bits in the prefix that are valid. The value ranges from 0 to 128. The Prefix field has the number of bytes inferred from the Option Length field, that must be at least the Prefix Length. Note that in RPL, this means that the Prefix field may have lengths other than 0, 8, or 16.
前缀长度:8位无符号整数。前缀中有效的前导位数。该值的范围为0到128。Prefix字段具有从Option Length字段推断的字节数,该字节数必须至少为前缀长度。注意,在RPL中,这意味着前缀字段的长度可能不是0、8或16。
Prf: 2-bit signed integer. The Route Preference indicates whether to prefer the router associated with this prefix over others, when multiple identical prefixes (for different routers) have been received. If the Reserved (10) value is received, the RIO MUST be ignored. Per [RFC4191], the Reserved (10) value MUST NOT be sent. ([RFC4191] restricts the Preference to just three values to reinforce that it is not a metric.)
Prf:2位有符号整数。路由首选项指示当接收到多个相同的前缀(针对不同的路由器)时,是否优先选择与此前缀关联的路由器。如果收到保留(10)值,则必须忽略RIO。根据[RFC4191],不得发送保留(10)值。([RFC4191]将首选项限制为仅三个值,以强调它不是度量。)
Resvd: Two 3-bit unused fields. They MUST be initialized to zero by the sender and MUST be ignored by the receiver.
Resvd:两个3位未使用字段。发送方必须将它们初始化为零,接收方必须忽略它们。
Route Lifetime: 32-bit unsigned integer. The length of time in seconds (relative to the time the packet is sent) that the prefix is valid for route determination. A value of all one bits (0xFFFFFFFF) represents infinity.
路由生存期:32位无符号整数。前缀对路由确定有效的时间长度(相对于发送数据包的时间),以秒为单位。所有一位的值(0xFFFFFF)表示无穷大。
Prefix: Variable-length field containing an IP address or a prefix of an IPv6 address. The Prefix Length field contains the number of valid leading bits in the prefix. The bits in the prefix after the prefix length (if any) are reserved and MUST be initialized to zero by the sender and ignored by the receiver. Note that in RPL, this field may have lengths other than 0, 8, or 16.
前缀:包含IP地址或IPv6地址前缀的可变长度字段。前缀长度字段包含前缀中的有效前导位数。前缀长度(如果有)之后的前缀中的位是保留的,发送方必须将其初始化为零,接收方则忽略。请注意,在RPL中,此字段的长度可能不是0、8或16。
Unassigned bits of the RIO are reserved. They MUST be set to zero on transmission and MUST be ignored on reception.
里约热内卢未分配的部分是保留的。它们在传输时必须设置为零,在接收时必须忽略。
The DODAG Configuration option MAY be present in DIO messages, and its format is as follows:
DODAG配置选项可能出现在DIO消息中,其格式如下:
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| Flags |A| PCS | DIOIntDoubl. | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DIOIntMin. | DIORedun. | MaxRankIncrease | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MinHopRankIncrease | OCP | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved | Def. Lifetime | Lifetime Unit | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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| Flags |A| PCS | DIOIntDoubl. | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DIOIntMin. | DIORedun. | MaxRankIncrease | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MinHopRankIncrease | OCP | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved | Def. Lifetime | Lifetime Unit | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 24: Format of the DODAG Configuration Option
图24:DODAG配置选项的格式
The DODAG Configuration option is used to distribute configuration information for DODAG Operation through the DODAG.
DODAG配置选项用于通过DODAG分发DODAG操作的配置信息。
The information communicated in this option is generally static and unchanging within the DODAG, therefore it is not necessary to include in every DIO. This information is configured at the DODAG root and distributed throughout the DODAG with the DODAG Configuration option. Nodes other than the DODAG root MUST NOT modify this information when propagating the DODAG Configuration option. This option MAY be included occasionally by the DODAG root (as determined by the DODAG root), and MUST be included in response to a unicast request, e.g. a unicast DODAG Information Solicitation (DIS) message.
该选项中传达的信息通常是静态的,在DODAG中是不变的,因此没有必要包含在每个DIO中。此信息在DODAG根目录下配置,并通过DODAG配置选项分布在整个DODAG中。传播DODAG配置选项时,DODAG根以外的节点不得修改此信息。DODAG根偶尔会包括该选项(由DODAG根确定),并且必须包括该选项以响应单播请求,例如单播DODAG信息请求(DIS)消息。
Option Type: 0x04
选项类型:0x04
Option Length: 14
选项长度:14
Flags: The 4-bits remaining unused in the Flags field are reserved for flags. The field MUST be initialized to zero by the sender and MUST be ignored by the receiver.
标志:标志字段中剩余未使用的4位保留给标志。发送方必须将该字段初始化为零,接收方必须忽略该字段。
Authentication Enabled (A): 1-bit flag describing the security mode of the network. The bit describes whether a node must authenticate with a key authority before joining the network as a router. If the DIO is not a secure DIO, the 'A' bit MUST be zero.
已启用身份验证(A):描述网络安全模式的1位标志。该位描述节点在作为路由器加入网络之前是否必须向密钥颁发机构进行身份验证。如果DIO不是安全DIO,“a”位必须为零。
Path Control Size (PCS): 3-bit unsigned integer used to configure the number of bits that may be allocated to the Path Control field (see Section 9.9). Note that when PCS is consulted to determine the width of the Path Control field, a value of 1 is added, i.e., a PCS value of 0 results in 1 active bit in the Path Control field. The default value of PCS is DEFAULT_PATH_CONTROL_SIZE.
路径控制大小(PCS):3位无符号整数,用于配置可分配给路径控制字段的位数(见第9.9节)。请注意,当参考PCS以确定路径控制字段的宽度时,会添加值1,即PCS值0导致路径控制字段中有1个活动位。PCS的默认值为默认路径控制大小。
DIOIntervalDoublings: 8-bit unsigned integer used to configure Imax of the DIO Trickle timer (see Section 8.3.1). The default value of DIOIntervalDoublings is DEFAULT_DIO_INTERVAL_DOUBLINGS.
DIOIntervalDoublings:8位无符号整数,用于配置DIO涓流定时器的Imax(见第8.3.1节)。DIOIntervalDoublings的默认值为default_DIO_INTERVAL_DOUBLINGS。
DIOIntervalMin: 8-bit unsigned integer used to configure Imin of the DIO Trickle timer (see Section 8.3.1). The default value of DIOIntervalMin is DEFAULT_DIO_INTERVAL_MIN.
DIOIntervalMin:8位无符号整数,用于配置DIO涓流定时器的Imin(见第8.3.1节)。DIOIntervalMin的默认值是default_DIO_INTERVAL_MIN。
DIORedundancyConstant: 8-bit unsigned integer used to configure k of the DIO Trickle timer (see Section 8.3.1). The default value of DIORedundancyConstant is DEFAULT_DIO_REDUNDANCY_CONSTANT.
DIORedundancyConstant:8位无符号整数,用于配置DIO涓流定时器的k(见第8.3.1节)。DIORedundancyConstant的默认值是默认的DIO\u RedundancyConstant。
MaxRankIncrease: 16-bit unsigned integer used to configure DAGMaxRankIncrease, the allowable increase in Rank in support of local repair. If DAGMaxRankIncrease is 0, then this mechanism is disabled.
MaxRankIncrease:用于配置DAGMaxRankIncrease的16位无符号整数,允许增加秩以支持本地修复。如果DAGMaxRankIncrease为0,则禁用此机制。
MinHopRankIncrease: 16-bit unsigned integer used to configure MinHopRankIncrease as described in Section 3.5.1. The default value of MinHopRankInc is DEFAULT_MIN_HOP_RANK_INCREASE.
MinHopRankIncrease:用于配置MinHopRankIncrease的16位无符号整数,如第3.5.1节所述。MinHopRankInc的默认值是default\u MIN\u HOP\u RANK\u INCREASE。
Objective Code Point (OCP): 16-bit unsigned integer. The OCP field identifies the OF and is managed by the IANA.
目标码点(OCP):16位无符号整数。OCP字段标识了的,并由IANA管理。
Reserved: 7-bit unused field. The field MUST be initialized to zero by the sender and MUST be ignored by the receiver.
保留:7位未使用字段。发送方必须将该字段初始化为零,接收方必须忽略该字段。
Default Lifetime: 8-bit unsigned integer. This is the lifetime that is used as default for all RPL routes. It is expressed in units of Lifetime Units, e.g., the default lifetime in seconds is (Default Lifetime) * (Lifetime Unit).
默认生存期:8位无符号整数。这是所有RPL路由的默认生存期。它以生命周期单位表示,例如,以秒为单位的默认生命周期为(默认生命周期)*(生命周期单位)。
Lifetime Unit: 16-bit unsigned integer. Provides the unit in seconds that is used to express route lifetimes in RPL. For very stable networks, it can be hours to days.
生存期单位:16位无符号整数。提供用于在RPL中表示路由寿命的单位(秒)。对于非常稳定的网络,可能需要数小时到数天。
The RPL Target option MAY be present in DAO messages, and its format is as follows:
RPL目标选项可能出现在DAO消息中,其格式如下:
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 = 0x05 | Option Length | Flags | Prefix Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | Target Prefix (Variable Length) | . . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 = 0x05 | Option Length | Flags | Prefix Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | Target Prefix (Variable Length) | . . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 25: Format of the RPL Target Option
图25:RPL目标选项的格式
The RPL Target option is used to indicate a Target IPv6 address, prefix, or multicast group that is reachable or queried along the DODAG. In a DAO, the RPL Target option indicates reachability.
RPL Target选项用于指示可通过DODAG访问或查询的目标IPv6地址、前缀或多播组。在DAO中,RPL目标选项表示可达性。
A RPL Target option MAY optionally be paired with a RPL Target Descriptor option (Figure 30) that qualifies the target.
RPL目标选项可以选择性地与限定目标的RPL目标描述符选项(图30)配对。
A set of one or more Transit Information options (Section 6.7.8) MAY directly follow a set of one or more Target options in a DAO message (where each Target option MAY be paired with a RPL Target Descriptor option as above). The structure of the DAO message, detailing how Target options are used in conjunction with Transit Information options is further described in Section 9.4.
一组一个或多个传输信息选项(第6.7.8节)可直接跟随DAO消息中的一组一个或多个目标选项(其中每个目标选项可与如上所述的RPL目标描述符选项配对)。第9.4节进一步描述了DAO消息的结构,详细说明了如何将目标选项与公交信息选项结合使用。
The RPL Target option may be repeated as necessary to indicate multiple targets.
RPL目标选项可根据需要重复以指示多个目标。
Option Type: 0x05
选项类型:0x05
Option Length: Variable, length of the option in octets excluding the Type and Length fields.
选项长度:变量,选项的长度(八位字节),不包括类型和长度字段。
Flags: 8-bit unused field reserved for flags. The field MUST be initialized to zero by the sender and MUST be ignored by the receiver.
标志:为标志保留的8位未使用字段。发送方必须将该字段初始化为零,接收方必须忽略该字段。
Prefix Length: 8-bit unsigned integer. Number of valid leading bits in the IPv6 Prefix.
前缀长度:8位无符号整数。IPv6前缀中的有效前导位数。
Target Prefix: Variable-length field identifying an IPv6 destination address, prefix, or multicast group. The Prefix Length field contains the number of valid leading bits in the prefix. The bits in the prefix after the prefix length (if any) are reserved and MUST be set to zero on transmission and MUST be ignored on receipt.
目标前缀:标识IPv6目标地址、前缀或多播组的可变长度字段。前缀长度字段包含前缀中的有效前导位数。前缀长度(如果有)后的前缀中的位是保留的,传输时必须设置为零,接收时必须忽略。
The Transit Information option MAY be present in DAO messages, and its format is as follows:
运输信息选项可能出现在DAO消息中,其格式如下:
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 = 0x06 | Option Length |E| Flags | Path Control | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Path Sequence | Path Lifetime | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + + | | + Parent Address* + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 = 0x06 | Option Length |E| Flags | Path Control | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Path Sequence | Path Lifetime | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + + | | + Parent Address* + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The '*' denotes that the DODAG Parent Address subfield is not always present, as described below.
“*”表示DODAG父地址子字段并不总是存在,如下所述。
Figure 26: Format of the Transit Information Option
图26:公交信息选项的格式
The Transit Information option is used for a node to indicate attributes for a path to one or more destinations. The destinations are indicated by one or more Target options that immediately precede the Transit Information option(s).
“运输信息”选项用于节点指示到一个或多个目的地的路径属性。目的地由一个或多个目标选项指示,该选项紧跟在运输信息选项之前。
The Transit Information option can be used for a node to indicate its DODAG parents to an ancestor that is collecting DODAG routing information, typically, for the purpose of constructing source routes. In the Non-Storing mode of operation, this ancestor will be the DODAG root, and this option is carried by the DAO message. In the Storing mode of operation, the DODAG Parent Address subfield is not needed, since the DAO message is sent directly to the parent. The option length is used to determine whether or not the DODAG Parent Address subfield is present.
Transit Information选项可用于节点向收集DODAG路由信息的祖先指示其DODAG父节点,通常用于构建源路由。在非存储操作模式下,这个祖先将是DODAG根,这个选项由DAO消息携带。在操作的存储模式中,不需要DODAG父地址子字段,因为DAO消息直接发送到父地址。选项长度用于确定是否存在DODAG父地址子字段。
A non-storing node that has more than one DAO parent MAY include a Transit Information option for each DAO parent as part of the non-storing destination advertisement operation. The node may distribute the bits in the Path Control field among different groups of DAO parents in order to signal a preference among parents. That preference may influence the decision of the DODAG root when selecting among the alternate parents/paths for constructing Downward routes.
具有多个DAO父级的非存储节点可以包括每个DAO父级的传输信息选项,作为非存储目的地播发操作的一部分。节点可以将路径控制字段中的比特分布在不同的DAO父组之间,以便在父组之间发送偏好信号。当在备选父/路径中选择用于构建向下路径时,该偏好可能会影响DODAG根的决策。
One or more Transit Information options MUST be preceded by one or more RPL Target options. In this manner, the RPL Target option indicates the child node, and the Transit Information option(s) enumerates the DODAG parents. The structure of the DAO message, further detailing how Target options are used in conjunction with Transit Information options, is further described in Section 9.4.
一个或多个运输信息选项前面必须有一个或多个RPL目标选项。以这种方式,RPL Target选项指示子节点,而Transit Information选项枚举DODAG父节点。第9.4节进一步描述了DAO消息的结构,进一步详细说明了如何将目标选项与公交信息选项结合使用。
A typical non-storing node will use multiple Transit Information options, and it will send the DAO message thus formed directly to the root. A typical storing node will use one Transit Information option with no parent field and will send the DAO message thus formed, with additional adjustments, to Path Control as detailed later, to one or multiple parents.
一个典型的非存储节点将使用多个传输信息选项,并将这样形成的DAO消息直接发送到根节点。典型的存储节点将使用一个没有父字段的传输信息选项,并将这样形成的DAO消息(经过额外调整)发送给一个或多个父节点,路径控制将在后面详述。
For example, in a Non-Storing mode of operation let Tgt(T) denote a Target option for a Target T. Let Trnst(P) denote a Transit Information option that contains a parent address P. Consider the case of a non-storing Node N that advertises the self-owned targets N1 and N2 and has parents P1, P2, and P3. In that case, the DAO message would be expected to contain the sequence ((Tgt(N1), Tgt(N2)), (Trnst(P1), Trnst(P2), Trnst(P3))), such that the group of Target options {N1, N2} is described by the Transit Information options as having the parents {P1, P2, P3}. The non-storing node would then address that DAO message directly to the DODAG root and forward that DAO message through one of the DODAG parents: P1, P2, or P3.
例如,在非存储操作模式下,让TGT(t)表示目标T的目标选项。让TrnST(P)表示包含父地址的过境信息选项。考虑非广告节点N的情况,该广告对自有目标N1和N2进行广告,并具有父母P1、P2和P3。在这种情况下,DAO消息将被期望包含序列((Tgt(N1),Tgt(N2)),(Trnst(P1),Trnst(P2),Trnst(P3)),使得目标选项组{N1,N2}被传输信息选项描述为具有父{P1,P2,P3}。然后,非存储节点将该DAO消息直接寻址到DODAG根,并通过DODAG父节点之一(P1、P2或P3)转发该DAO消息。
Option Type: 0x06
选项类型:0x06
Option Length: Variable, depending on whether or not the DODAG Parent Address subfield is present.
选项长度:变量,取决于是否存在DODAG父地址子字段。
External (E): 1-bit flag. The 'E' flag is set to indicate that the parent router redistributes external targets into the RPL network. An external Target is a Target that has been learned through an alternate protocol. The external targets are listed in the Target options that immediately precede the Transit Information option. An external Target is not expected to support RPL messages and options.
外部(E):1位标志。设置“E”标志表示父路由器将外部目标重新分配到RPL网络中。外部目标是通过备用协议学习的目标。外部目标列在“交通信息”选项前面的目标选项中。外部目标不应支持RPL消息和选项。
Flags: The 7 bits remaining unused in the Flags field are reserved for flags. The field MUST be initialized to zero by the sender and MUST be ignored by the receiver.
标志:标志字段中剩余未使用的7位保留给标志。发送方必须将该字段初始化为零,接收方必须忽略该字段。
Path Control: 8-bit bit field. The Path Control field limits the number of DAO parents to which a DAO message advertising connectivity to a specific destination may be sent, as well as providing some indication of relative preference. The limit provides some bound on overall DAO message fan-out in the LLN. The assignment and ordering of the bits in the Path Control also serves to communicate preference. Not all of these bits may be enabled as according to the PCS in the DODAG Configuration. The Path Control field is divided into four subfields that contain two bits each: PC1, PC2, PC3, and PC4, as illustrated in Figure 27. The subfields are ordered by preference, with PC1 being the most preferred and PC4 being the least preferred. Within a subfield, there is no order of preference. By grouping the parents (as in ECMP) and ordering them, the parents may be associated with specific bits in the Path Control field in a way that communicates preference.
路径控制:8位字段。路径控制字段限制向特定目的地发送DAO消息的DAO父级的数量,并提供一些相对偏好的指示。该限制为LLN中的整个DAO消息扇出提供了一些限制。路径控制中位的分配和排序也用于通信首选项。并非所有这些位都可以根据DODAG配置中的PC启用。路径控制字段分为四个子字段,每个子字段包含两个位:PC1、PC2、PC3和PC4,如图27所示。子字段按优先顺序排列,PC1是最优先的,PC4是最不优先的。在子字段中,没有优先顺序。通过对父项进行分组(如在ECMP中)并对它们进行排序,父项可以与路径控制字段中的特定位相关联,其方式可以传达首选项。
0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ |PC1|PC2|PC3|PC4| +-+-+-+-+-+-+-+-+
0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ |PC1|PC2|PC3|PC4| +-+-+-+-+-+-+-+-+
Figure 27: Path Control Preference Subfield Encoding
图27:路径控制首选项子字段编码
Path Sequence: 8-bit unsigned integer. When a RPL Target option is issued by the node that owns the Target prefix (i.e., in a DAO message), that node sets the Path Sequence and increments the Path Sequence each time it issues a RPL Target option with updated information.
路径序列:8位无符号整数。当拥有目标前缀的节点(即,在DAO消息中)发出RPL目标选项时,该节点设置路径序列,并在每次发出带有更新信息的RPL目标选项时递增路径序列。
Path Lifetime: 8-bit unsigned integer. The length of time in Lifetime Units (obtained from the Configuration option) that the prefix is valid for route determination. The period starts when a new Path Sequence is seen. A value of all one bits (0xFF) represents infinity. A value of all zero bits (0x00) indicates a loss of reachability. A DAO message that contains a Transit Information option with a Path Lifetime of 0x00 for a Target is referred as a No-Path (for that Target) in this document.
路径生存期:8位无符号整数。前缀对路由确定有效的时间长度(以生存期为单位)(从配置选项中获得)。当看到新的路径序列时,周期开始。所有一位的值(0xFF)表示无穷大。所有零位的值(0x00)表示失去可达性。包含目标路径生存期为0x00的传输信息选项的DAO消息在本文档中称为无路径(对于该目标)。
Parent Address (optional): IPv6 address of the DODAG parent of the node originally issuing the Transit Information option. This field may not be present, as according to the DODAG Mode of Operation (Storing or Non-Storing) and indicated by the Transit Information option length.
父地址(可选):最初发出传输信息选项的节点的DODAG父节点的IPv6地址。根据DODAG操作模式(存储或非存储),该字段可能不存在,并由运输信息选项长度指示。
Unassigned bits of the Transit Information option are reserved. They MUST be set to zero on transmission and MUST be ignored on reception.
运输信息选项的未分配位被保留。它们在传输时必须设置为零,在接收时必须忽略。
The Solicited Information option MAY be present in DIS messages, and its format is as follows:
请求信息选项可能出现在DIS消息中,其格式如下:
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 = 0x07 |Opt Length = 19| RPLInstanceID |V|I|D| Flags | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + DODAGID + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version Number | +-+-+-+-+-+-+-+-+
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 = 0x07 |Opt Length = 19| RPLInstanceID |V|I|D| Flags | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + DODAGID + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version Number | +-+-+-+-+-+-+-+-+
Figure 28: Format of the Solicited Information Option
图28:请求信息选项的格式
The Solicited Information option is used for a node to request DIO messages from a subset of neighboring nodes. The Solicited Information option may specify a number of predicate criteria to be matched by a receiving node. This is used by the requester to limit the number of replies from "non-interesting" nodes. These predicates affect whether a node resets its DIO Trickle timer, as described in Section 8.3.
请求信息选项用于节点从相邻节点的子集请求DIO消息。请求信息选项可以指定接收节点要匹配的若干谓词标准。请求者使用它来限制来自“非感兴趣”节点的回复数量。这些谓词影响节点是否重置其DIO涓流计时器,如第8.3节所述。
The Solicited Information option contains flags that indicate which predicates a node should check when deciding whether to reset its Trickle timer. A node resets its Trickle timer when all predicates are true. If a flag is set, then the RPL node MUST check the associated predicate. If a flag is cleared, then the RPL node MUST NOT check the associated predicate. (If a flag is cleared, the RPL node assumes that the associated predicate is true.)
“请求的信息”选项包含指示节点在决定是否重置其涓流计时器时应检查哪些谓词的标志。当所有谓词都为true时,节点重置其涓流计时器。如果设置了标志,则RPL节点必须检查关联的谓词。如果清除标志,则RPL节点不得检查关联的谓词。(如果清除标志,则RPL节点假定关联的谓词为true。)
Option Type: 0x07
选项类型:0x07
Option Length: 19
选件长度:19
V: The 'V' flag is the Version predicate. The Version predicate is true if the receiver's DODAGVersionNumber matches the requested Version Number. If the 'V' flag is cleared, then the Version field is not valid and the Version field MUST be set to zero on transmission and ignored upon receipt.
V:“V”标志是版本谓词。如果接收方的DODAGVersionNumber与请求的版本号匹配,则版本谓词为true。如果清除“V”标志,则版本字段无效,在传输时版本字段必须设置为零,在接收时忽略。
I: The 'I' flag is the InstanceID predicate. The InstanceID predicate is true when the RPL node's current RPLInstanceID matches the requested RPLInstanceID. If the 'I' flag is cleared, then the RPLInstanceID field is not valid and the RPLInstanceID field MUST be set to zero on transmission and ignored upon receipt.
I:“I”标志是InstanceID谓词。当RPL节点的当前RPLInstanceID与请求的RPLInstanceID匹配时,InstanceID谓词为true。如果清除了“I”标志,则RPLInstanceID字段无效,在传输时必须将RPLInstanceID字段设置为零,在接收时忽略。
D: The 'D' flag is the DODAGID predicate. The DODAGID predicate is true if the RPL node's parent set has the same DODAGID as the DODAGID field. If the 'D' flag is cleared, then the DODAGID field is not valid and the DODAGID field MUST be set to zero on transmission and ignored upon receipt.
D:“D”标志是DODAGID谓词。如果RPL节点的父集合具有与DODAGID字段相同的DODAGID,则DODAGID谓词为true。如果清除了“D”标志,则DODAGID字段无效,必须在传输时将DODAGID字段设置为零,并在接收时忽略。
Flags: The 5 bits remaining unused in the Flags field are reserved for flags. The field MUST be initialized to zero by the sender and MUST be ignored by the receiver.
标志:标志字段中剩余未使用的5位保留给标志。发送方必须将该字段初始化为零,接收方必须忽略该字段。
Version Number: 8-bit unsigned integer containing the value of DODAGVersionNumber that is being solicited when valid.
版本号:8位无符号整数,包含有效时请求的DODAGVersionNumber的值。
RPLInstanceID: 8-bit unsigned integer containing the RPLInstanceID that is being solicited when valid.
RPLInstanceID:8位无符号整数,包含有效时请求的RPLInstanceID。
DODAGID: 128-bit unsigned integer containing the DODAGID that is being solicited when valid.
DODAGID:包含有效时请求的DODAGID的128位无符号整数。
Unassigned bits of the Solicited Information option are reserved. They MUST be set to zero on transmission and MUST be ignored on reception.
请求信息选项的未分配位被保留。它们在传输时必须设置为零,在接收时必须忽略。
The Prefix Information Option (PIO) MAY be present in DIO messages, and carries the information that is specified for the IPv6 ND Prefix Information option in [RFC4861], [RFC4862], and [RFC6275] for use by RPL nodes and IPv6 hosts. In particular, a RPL node may use this option for the purpose of Stateless Address Autoconfiguration (SLAAC) from a prefix advertised by a parent as specified in [RFC4862], and
前缀信息选项(PIO)可能存在于DIO消息中,并携带为[RFC4861]、[RFC4862]和[RFC6275]中的IPv6 ND前缀信息选项指定的信息,供RPL节点和IPv6主机使用。具体而言,RPL节点可以使用此选项,以便根据[RFC4862]中指定的父节点播发的前缀进行无状态地址自动配置(SLAAC),以及
advertise its own address as specified in [RFC6275]. The root of a DODAG is authoritative for setting that information. The information is propagated down the DODAG unchanged, with the exception that a RPL router may overwrite the Interface ID if the 'R' flag is set to indicate its full address in the PIO. The format of the option is modified (Type, Length, Prefix) in order to be carried as a RPL option as follows:
按照[RFC6275]中的规定公布自己的地址。DODAG的根是设置该信息的权威。信息在DODAG上传播时不会改变,但RPL路由器可能会覆盖接口ID,如果“R”标志设置为在PIO中指示其完整地址。修改选项的格式(类型、长度、前缀),以便作为RPL选项携带,如下所示:
If the only desired effect of a received PIO in a DIO is to provide the global address of the parent node to the receiving node, then the sender resets the 'A' and 'L' bits and sets the 'R' bit. Upon receipt, the RPL will not autoconfigure an address or a connected route from the prefix [RFC4862]. As in all cases, when the 'L' bit is not set, the RPL node MAY include the prefix in PIOs it sends to its children.
如果DIO中接收到的PIO的唯一期望效果是向接收节点提供父节点的全局地址,则发送方重置“a”和“L”位并设置“R”位。收到后,RPL不会从前缀[RFC4862]自动配置地址或连接的路由。与所有情况一样,当未设置“L”位时,RPL节点可能会在发送给其子节点的PIO中包含前缀。
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 = 0x08 |Opt Length = 30| Prefix Length |L|A|R|Reserved1| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Valid Lifetime | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Preferred Lifetime | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved2 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + Prefix + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 = 0x08 |Opt Length = 30| Prefix Length |L|A|R|Reserved1| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Valid Lifetime | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Preferred Lifetime | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved2 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + Prefix + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 29: Format of the Prefix Information Option
图29:前缀信息选项的格式
The PIO may be used to distribute the prefix in use inside the DODAG, e.g., for address autoconfiguration.
PIO可用于分发DODAG内部使用的前缀,例如用于地址自动配置。
[RFC4861] and [RFC6275] should be consulted as the authoritative reference with respect to the PIO. The field descriptions are transcribed here for convenience:
应参考[RFC4861]和[RFC6275]作为PIO的权威参考。为方便起见,此处转录了字段说明:
Option Type: 0x08
选项类型:0x08
Option Length: 30. Note that this length is expressed in units of single octets, unlike in IPv6 ND.
选项长度:30。请注意,与IPv6 ND不同,此长度以单个八位字节为单位表示。
Prefix Length: 8-bit unsigned integer. The number of leading bits in the Prefix field that are valid. The value ranges from 0 to 128. The Prefix Length field provides necessary information for on-link determination (when combined with the 'L' flag in the PIO). It also assists with address autoconfiguration as specified in [RFC4862], for which there may be more restrictions on the prefix length.
前缀长度:8位无符号整数。前缀字段中有效的前导位数。该值的范围为0到128。Prefix Length(前缀长度)字段为链路确定提供必要的信息(与PIO中的“L”标志结合使用时)。它还有助于地址自动配置,如[RFC4862]中所述,前缀长度可能有更多限制。
L: 1-bit on-link flag. When set, it indicates that this prefix can be used for on-link determination. When not set, the advertisement makes no statement about on-link or off-link properties of the prefix. In other words, if the 'L' flag is not set, a RPL node MUST NOT conclude that an address derived from the prefix is off-link. That is, it MUST NOT update a previous indication that the address is on-link. A RPL node acting as a router MUST NOT propagate a PIO with the 'L' flag set. A RPL node acting as a router MAY propagate a PIO with the 'L' flag not set.
L:链接标志上的1位。设置时,表示此前缀可用于链路上的确定。未设置时,播发不会对前缀的链接上或链接下属性进行任何声明。换句话说,如果未设置“L”标志,则RPL节点不得断定从前缀派生的地址是断开链接的。也就是说,它不能更新地址在链接上的先前指示。充当路由器的RPL节点不得传播设置了“L”标志的PIO。充当路由器的RPL节点可以传播未设置“L”标志的PIO。
A: 1-bit autonomous address-configuration flag. When set, it indicates that this prefix can be used for stateless address configuration as specified in [RFC4862]. When both protocols (ND RAs and RPL DIOs) are used to carry PIOs on the same link, it is possible to use either one for SLAAC by a RPL node. It is also possible to make either protocol ineligible for SLAAC operation by forcing the 'A' flag to 0 for PIOs carried in that protocol.
A:1位自治地址配置标志。设置时,表示此前缀可用于[RFC4862]中指定的无状态地址配置。当两个协议(ND RAs和RPL DIOs)都用于在同一链路上承载PIO时,RPL节点可以将其中一个用于SLAAC。对于协议中携带的PIO,通过强制将“A”标志设置为0,也可以使任一协议不符合SLAAC操作的条件。
R: 1-bit router address flag. When set, it indicates that the Prefix field contains a complete IPv6 address assigned to the sending router that can be used as parent in a target option. The indicated prefix is the first prefix length bits of the Prefix field. The router IPv6 address has the same scope and conforms to the same lifetime values as the advertised prefix. This use of the Prefix field is compatible with its use in advertising the prefix itself, since Prefix Advertisement uses only the leading bits. Interpretation of this flag bit is thus independent of the processing required for the on-link (L) and autonomous address-configuration (A) flag bits.
R:1位路由器地址标志。设置后,表示前缀字段包含分配给发送路由器的完整IPv6地址,该地址可在目标选项中用作父级。指示的前缀是前缀字段的第一个前缀长度位。路由器IPv6地址与播发的前缀具有相同的作用域并符合相同的生存期值。前缀字段的这种使用与其在前缀本身广告中的使用兼容,因为前缀广告仅使用前导位。因此,该标志位的解释与链路上(L)和自主地址配置(A)标志位所需的处理无关。
Reserved1: 5-bit unused field. It MUST be initialized to zero by the sender and MUST be ignored by the receiver.
Reserved1:5位未使用字段。发送方必须将其初始化为零,接收方必须忽略它。
Valid Lifetime: 32-bit unsigned integer. The length of time in seconds (relative to the time the packet is sent) that the prefix is valid for the purpose of on-link determination. A value of all one bits (0xFFFFFFFF) represents infinity. The Valid Lifetime is also used by [RFC4862].
有效生存期:32位无符号整数。前缀在链路确定中有效的时间长度(相对于发送数据包的时间),以秒为单位。所有一位的值(0xFFFFFF)表示无穷大。[RFC4862]也使用有效生存期。
Preferred Lifetime: 32-bit unsigned integer. The length of time in seconds (relative to the time the packet is sent) that addresses generated from the prefix via stateless address autoconfiguration remain preferred [RFC4862]. A value of all one bits (0xFFFFFFFF) represents infinity. See [RFC4862]. Note that the value of this field MUST NOT exceed the Valid Lifetime field to avoid preferring addresses that are no longer valid.
首选生存期:32位无符号整数。通过无状态地址自动配置从前缀生成的地址保持首选状态的时间长度(相对于发送数据包的时间),单位为秒[RFC4862]。所有一位的值(0xFFFFFF)表示无穷大。见[RFC4862]。请注意,此字段的值不得超过有效生存期字段,以避免首选不再有效的地址。
Reserved2: This field is unused. It MUST be initialized to zero by the sender and MUST be ignored by the receiver.
Reserved2:此字段未使用。发送方必须将其初始化为零,接收方必须忽略它。
Prefix: An IPv6 address or a prefix of an IPv6 address. The Prefix Length field contains the number of valid leading bits in the prefix. The bits in the prefix after the prefix length are reserved and MUST be initialized to zero by the sender and ignored by the receiver. A router SHOULD NOT send a prefix option for the link-local prefix, and a host SHOULD ignore such a prefix option. A non-storing node SHOULD refrain from advertising a prefix till it owns an address of that prefix, and then it SHOULD advertise its full address in this field, with the 'R' flag set. The children of a node that so advertises a full address with the 'R' flag set may then use that address to determine the content of the DODAG Parent Address subfield of the Transit Information option.
前缀:IPv6地址或IPv6地址的前缀。前缀长度字段包含前缀中的有效前导位数。前缀长度后的前缀中的位是保留的,发送方必须将其初始化为零,接收方则忽略。路由器不应为链路本地前缀发送前缀选项,主机应忽略此类前缀选项。非存储节点应在拥有前缀地址之前避免公布前缀,然后在此字段中公布其完整地址,并设置“R”标志。这样播发带有“R”标志集的完整地址的节点的子节点随后可以使用该地址来确定运输信息选项的DODAG父地址子字段的内容。
Unassigned bits of the PIO are reserved. They MUST be set to zero on transmission and MUST be ignored on reception.
PIO的未分配位被保留。它们在传输时必须设置为零,在接收时必须忽略。
The RPL Target option MAY be immediately followed by one opaque descriptor that qualifies that specific target.
RPL Target选项后面可能紧跟着一个不透明描述符,用于限定该特定目标。
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 = 0x09 |Opt Length = 4 | Descriptor +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Descriptor (cont.) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 = 0x09 |Opt Length = 4 | Descriptor +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Descriptor (cont.) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 30: Format of the RPL Target Descriptor Option
图30:RPL目标描述符选项的格式
The RPL Target Descriptor option is used to qualify a target, something that is sometimes called "tagging".
RPL目标描述符选项用于限定目标,有时称为“标记”。
At most, there can be one descriptor per target. The descriptor is set by the node that injects the Target in the RPL network. It MUST be copied but not modified by routers that propagate the Target Up the DODAG in DAO messages.
每个目标最多只能有一个描述符。描述符由在RPL网络中注入目标的节点设置。它必须被复制,但不能被在DAO消息中向上传播目标的路由器修改。
Option Type: 0x09
选项类型:0x09
Option Length: 4
选项长度:4
Descriptor: 32-bit unsigned integer. Opaque.
描述符:32位无符号整数。不透明的
This section describes the general scheme for bootstrap and operation of sequence counters in RPL, such as the DODAGVersionNumber in the DIO message, the DAOSequence in the DAO message, and the Path Sequence in the Transit Information option.
本节介绍RPL中序列计数器的引导和操作的一般方案,例如DIO消息中的DODAGVersionNumber、DAO消息中的DAOSequence以及传输信息选项中的Path序列。
This specification utilizes three different sequence numbers to validate the freshness and the synchronization of protocol information:
本规范使用三个不同的序列号来验证协议信息的新鲜度和同步性:
DODAGVersionNumber: This sequence counter is present in the DIO Base to indicate the Version of the DODAG being formed. The DODAGVersionNumber is monotonically incremented by the root each time the root decides to form a new Version of the DODAG in order to revalidate the integrity and allow a global repair to occur. The DODAGVersionNumber is propagated unchanged Down
DODAGVersionNumber:此序列计数器位于DIO基座中,用于指示正在形成的DODAG版本。每次根决定形成新版本的DODAG时,DODAGVersionNumber都会由根单调递增,以便重新验证完整性并允许进行全局修复。DODAGVersionNumber会以不变的方式向下传播
the DODAG as routers join the new DODAG Version. The DODAGVersionNumber is globally significant in a DODAG and indicates the Version of the DODAG in which a router is operating. An older (lesser) value indicates that the originating router has not migrated to the new DODAG Version and cannot be used as a parent once the receiving node has migrated to the newer DODAG Version.
DODAG as路由器加入了新的DODAG版本。DODAGVersionNumber在DODAG中具有全局重要性,并指示路由器运行的DODAG版本。较旧(较小)的值表示原始路由器尚未迁移到新的DODAG版本,并且在接收节点迁移到较新的DODAG版本后不能用作父节点。
DAOSequence: This sequence counter is present in the DAO Base to correlate a DAO message and a DAO ACK message. The DAOSequence number is locally significant to the node that issues a DAO message for its own consumption to detect the loss of a DAO message and enable retries.
DAOSequence:此序列计数器位于DAO库中,用于关联DAO消息和DAO ACK消息。DAO序列号对于发出DAO消息以供其自身使用的节点来说是本地重要的,以检测DAO消息的丢失并允许重试。
Path Sequence: This sequence counter is present in the Transit Information option in a DAO message. The purpose of this counter is to differentiate a movement where a newer route supersedes a stale one from a route redundancy scenario where multiple routes exist in parallel for the same target. The Path Sequence is globally significant in a DODAG and indicates the freshness of the route to the associated target. An older (lesser) value received from an originating router indicates that the originating router holds stale routing states and the originating router should not be considered anymore as a potential next hop for the target. The Path Sequence is computed by the node that advertises the target, that is the Target itself or a router that advertises a Target on behalf of a host, and is unchanged as the DAO content is propagated towards the root by parent routers. If a host does not pass a counter to its router, then the router is in charge of computing the Path Sequence on behalf of the host and the host can only register to one router for that purpose. If a DAO message containing the same Target is issued to multiple parents at a given point in time for the purpose of route redundancy, then the Path Sequence is the same in all the DAO messages for that same target.
路径顺序:此顺序计数器位于DAO消息的传输信息选项中。此计数器的目的是区分较新路线取代陈旧路线的移动与多条路线并行存在于同一目标的路线冗余场景。路径序列在DODAG中具有全局意义,并指示到相关目标的路由的新鲜度。从始发路由器接收的较旧(较小)值表示始发路由器持有过时的路由状态,并且不应再将始发路由器视为目标的潜在下一跳。路径序列由播发目标的节点(即目标本身或代表主机播发目标的路由器)计算,并且随着DAO内容由父路由器向根传播而保持不变。如果主机没有向其路由器传递计数器,则路由器负责代表主机计算路径序列,并且主机只能为此向一个路由器注册。如果出于路由冗余的目的,在给定的时间点向多个父级发出了包含相同目标的DAO消息,则同一目标的所有DAO消息中的路径序列都是相同的。
RPL sequence counters are subdivided in a 'lollipop' fashion [Perlman83], where the values from 128 and greater are used as a linear sequence to indicate a restart and bootstrap the counter, and the values less than or equal to 127 used as a circular sequence number space of size 128 as in [RFC1982]. Consideration is given to the mode of operation when transitioning from the linear region to the circular region. Finally, when operating in the circular region, if sequence numbers are detected to be too far apart, then they are not comparable, as detailed below.
RPL序列计数器以“棒棒糖”方式细分[Perlman83],其中128及以上的值用作线性序列,以指示计数器的重启和引导,小于或等于127的值用作大小为128的循环序列号空间,如[RFC1982]所示。考虑从线性区域过渡到圆形区域时的操作模式。最后,当在圆形区域中操作时,如果检测到序列号相距太远,则它们不可比较,如下所述。
A window of comparison, SEQUENCE_WINDOW = 16, is configured based on a value of 2^N, where N is defined to be 4 in this specification.
比较窗口SEQUENCE_window=16基于2^N的值进行配置,其中N在本规范中定义为4。
For a given sequence counter:
对于给定的序列计数器:
1. The sequence counter SHOULD be initialized to an implementation defined value, which is 128 or greater prior to use. A recommended value is 240 (256 - SEQUENCE_WINDOW).
1. 序列计数器应初始化为实现定义的值,在使用前为128或更大。建议值为240(256-序列_窗口)。
2. When a sequence counter increment would cause the sequence counter to increment beyond its maximum value, the sequence counter MUST wrap back to zero. When incrementing a sequence counter greater than or equal to 128, the maximum value is 255. When incrementing a sequence counter less than 128, the maximum value is 127.
2. 当序列计数器的增量会导致序列计数器的增量超过其最大值时,序列计数器必须回折为零。当递增大于或等于128的序列计数器时,最大值为255。当序列计数器的增量小于128时,最大值为127。
3. When comparing two sequence counters, the following rules MUST be applied:
3. 比较两个序列计数器时,必须应用以下规则:
1. When a first sequence counter A is in the interval [128..255] and a second sequence counter B is in [0..127]:
1. 当第一个序列计数器a在区间[128..255]内,而第二个序列计数器B在区间[0..127]内时:
1. If (256 + B - A) is less than or equal to SEQUENCE_WINDOW, then B is greater than A, A is less than B, and the two are not equal.
1. 如果(256+B-A)小于或等于序列_窗口,则B大于A,A小于B,且两者不相等。
2. If (256 + B - A) is greater than SEQUENCE_WINDOW, then A is greater than B, B is less than A, and the two are not equal.
2. 如果(256+B-A)大于序列_窗口,则A大于B,B小于A,且两者不相等。
For example, if A is 240, and B is 5, then (256 + 5 - 240) is 21. 21 is greater than SEQUENCE_WINDOW (16); thus, 240 is greater than 5. As another example, if A is 250 and B is 5, then (256 + 5 - 250) is 11. 11 is less than SEQUENCE_WINDOW (16); thus, 250 is less than 5.
例如,如果A是240,B是5,那么(256+5-240)是21。21大于序列_窗口(16);因此,240大于5。作为另一个例子,如果A是250,B是5,那么(256+5-250)是11。11小于序列_窗口(16);因此,250小于5。
2. In the case where both sequence counters to be compared are less than or equal to 127, and in the case where both sequence counters to be compared are greater than or equal to 128:
2. 在两个要比较的序列计数器小于或等于127的情况下,以及在两个要比较的序列计数器大于或等于128的情况下:
1. If the absolute magnitude of difference between the two sequence counters is less than or equal to SEQUENCE_WINDOW, then a comparison as described in [RFC1982] is used to determine the relationships greater than, less than, and equal.
1. 如果两个序列计数器之间差值的绝对大小小于或等于序列_窗口,则使用[RFC1982]中所述的比较来确定大于、小于和等于的关系。
2. If the absolute magnitude of difference of the two sequence counters is greater than SEQUENCE_WINDOW, then a desynchronization has occurred and the two sequence numbers are not comparable.
2. 如果两个序列计数器的差值的绝对大小大于sequence_WINDOW,则发生了去同步,并且两个序列号不可比较。
4. If two sequence numbers are determined not to be comparable, i.e., the results of the comparison are not defined, then a node should consider the comparison as if it has evaluated in such a way so as to give precedence to the sequence number that has most recently been observed to increment. Failing this, the node should consider the comparison as if it has evaluated in such a way so as to minimize the resulting changes to its own state.
4. 如果确定两个序列号不可比较,即,没有定义比较的结果,那么节点应该考虑比较,就好像它已经以这样的方式评估,以便优先考虑最近观察到的递增的序列号。如果不这样做,节点应该考虑比较,就好像它已经以这样的方式评估,以便最小化对其自身状态的结果变化。
This section describes how RPL discovers and maintains Upward routes. It describes the use of DODAG Information Objects (DIOs), the messages used to discover and maintain these routes. It specifies how RPL generates and responds to DIOs. It also describes DODAG Information Solicitation (DIS) messages, which are used to trigger DIO transmissions.
本节介绍RPL如何发现和维护上行路由。它描述了DODAG信息对象(DIO)的使用,以及用于发现和维护这些路由的消息。它指定RPL如何生成和响应DIOs。它还描述了用于触发DIO传输的DODAG信息请求(DIS)消息。
As mentioned in Section 3.2.8, nodes that decide to join a DODAG MUST provision at least one DODAG parent as a default route for the associated instance. This default route enables a packet to be forwarded Upward until it eventually hits a common ancestor from which it will be routed Downward to the destination. If the destination is not in the DODAG, then the DODAG root may be able to forward the packet using connectivity to the outside of the DODAG; if it cannot forward the packet outside, then the DODAG root has to drop it.
如第3.2.8节所述,决定加入DODAG的节点必须提供至少一个DODAG父节点作为关联实例的默认路由。此默认路由使数据包能够向上转发,直到它最终到达一个公共祖先,并从该祖先将数据包向下路由到目的地。如果目的地不在DODAG中,则DODAG根可以使用到DODAG外部的连接转发分组;如果它不能将数据包转发到外部,那么DODAG root必须丢弃它。
A DIO message can also transport explicit routing information:
DIO消息还可以传输显式路由信息:
DODAGID: The DODAGID is a Global or Unique Local IPv6 address of the root. A node that joins a DODAG SHOULD provision a host route via a DODAG parent to the address used by the root as the DODAGID.
DODAGID:DODAGID是根目录的全局或唯一本地IPv6地址。加入DODAG的节点应通过DODAG父节点提供主机路由,路由到根节点用作DODAGID的地址。
RIO Prefix: The root MAY place one or more Route Information options in a DIO message. The RIO is used to advertise an external route that is reachable via the root, associated with a preference, as presented in Section 6.7.5, which incorporates the RIO from [RFC4191]. It is interpreted as a capability of the root as opposed to a routing advertisement, and it MUST NOT be redistributed in another routing protocol though it SHOULD be used by an ingress RPL router to select a DODAG when a packet is injected in a RPL domain from a node attached to that
RIO前缀:根目录可以在DIO消息中放置一个或多个路由信息选项。RIO用于公布可通过根目录访问的外部路由,该路由与偏好相关,如第6.7.5节所示,该节包含[RFC4191]中的RIO。它被解释为根的一种能力,而不是路由播发,并且不能在另一个路由协议中重新分配它,尽管入口RPL路由器应该使用它来选择一个DODAG,当一个数据包从连接到它的节点注入RPL域时
RPL router. An Objective Function MAY use the routes advertised in RIO or the preference for those routes in order to favor a DODAG versus another one for the same instance.
RPL路由器。目标函数可以使用里约公布的路线或对这些路线的偏好,以便在同一实例中支持一个DODAG而不是另一个DODAG。
1. For the following DIO Base fields, a node that is not a DODAG root MUST advertise the same values as its preferred DODAG parent (defined in Section 8.2.1). In this way, these values will propagate Down the DODAG unchanged and advertised by every node that has a route to that DODAG root. These fields are as follows: 1. Grounded (G) 2. Mode of Operation (MOP) 3. DAGPreference (Prf) 4. Version 5. RPLInstanceID 6. DODAGID
1. 对于以下DIO基本字段,非DODAG根节点必须公布与其首选DODAG父节点相同的值(定义见第8.2.1节)。通过这种方式,这些值将沿DODAG向下传播,而不会发生变化,并由具有到该DODAG根的路由的每个节点公布。这些字段如下所示:1。接地(G)2。操作模式(MOP)3。优先权(Prf)4。第5版。RPLInstanceID 6。多达吉德
2. A node MAY update the following fields at each hop: 1. Rank 2. DTSN
2. 节点可以在每个跃点更新以下字段:1。排名2。DTSN
3. The DODAGID field each root sets MUST be unique within the RPL Instance and MUST be a routable IPv6 address belonging to the root.
3. 每个根集的DODAGID字段在RPL实例中必须是唯一的,并且必须是属于根的可路由IPv6地址。
Upward route discovery allows a node to join a DODAG by discovering neighbors that are members of the DODAG of interest and identifying a set of parents. The exact policies for selecting neighbors and parents is implementation dependent and driven by the OF. This section specifies the set of rules those policies must follow for interoperability.
上行路由发现允许节点通过发现作为感兴趣的DODAG成员的邻居并识别一组父节点来加入DODAG。选择邻居和父对象的确切策略取决于实现,并由OF驱动。本节指定这些策略必须遵循的互操作性规则集。
RPL's Upward route discovery algorithms and processing are in terms of three logical sets of link-local nodes. First, the candidate neighbor set is a subset of the nodes that can be reached via link-local multicast. The selection of this set is implementation and OF dependent. Second, the parent set is a restricted subset of the candidate neighbor set. Finally, the preferred parent is a member of the parent set that is the preferred next hop in Upward routes. Conceptually, the preferred parent is a single parent; although, it may be a set of multiple parents if those parents are equally preferred and have identical Rank.
RPL的上行路由发现算法和处理是根据链路本地节点的三个逻辑集进行的。首先,候选邻居集是可通过链路本地多播到达的节点子集。此集合的选择是实现和依赖的。其次,父集合是候选邻居集合的受限子集。最后,首选父节点是上行路由中首选下一跳的父节点集的成员。从概念上讲,首选父母是单亲;尽管如此,如果这些父母是同等优先的,并且具有相同的等级,则可能是一组多个父母。
More precisely:
更准确地说:
1. The DODAG parent set MUST be a subset of the candidate neighbor set.
1. DODAG父集合必须是候选邻居集合的子集。
2. A DODAG root MUST have a DODAG parent set of size zero.
2. DODAG根必须具有大小为零的DODAG父集合。
3. A node that is not a DODAG root MAY maintain a DODAG parent set of size greater than or equal to one.
3. 不是DODAG根的节点可以保持大小大于或等于1的DODAG父集。
4. A node's preferred DODAG parent MUST be a member of its DODAG parent set.
4. 节点的首选DODAG父节点必须是其DODAG父节点集的成员。
5. A node's Rank MUST be greater than all elements of its DODAG parent set.
5. 节点的秩必须大于其DODAG父集的所有元素。
6. When Neighbor Unreachability Detection (NUD) [RFC4861], or an equivalent mechanism, determines that a neighbor is no longer reachable, a RPL node MUST NOT consider this node in the candidate neighbor set when calculating and advertising routes until it determines that it is again reachable. Routes through an unreachable neighbor MUST be removed from the routing table.
6. 当邻居不可达性检测(NUD)[RCFC66]或等效机制确定邻居不再可到达时,RPL节点在计算和广告路由时不必考虑该候选节点中的该节点,直到它确定它是可再次到达的。必须从路由表中删除通过无法访问的邻居的路由。
These rules ensure that there is a consistent partial order on nodes within the DODAG. As long as node Ranks do not change, following the above rules ensures that every node's route to a DODAG root is loop-free, as Rank decreases on each hop to the root.
这些规则确保DODAG中的节点具有一致的偏序。只要节点等级不变,遵循上述规则可确保每个节点到DODAG根的路由都是无循环的,因为到根的每个跃点的等级都会降低。
The OF can guide candidate neighbor set and parent set selection, as discussed in [RFC6552].
OF可以指导候选邻居集和父集的选择,如[RFC6552]中所述。
The above rules govern a single DODAG Version. The rules in this section define how RPL operates when there are multiple DODAG Versions.
上述规则适用于单个DODAG版本。本节中的规则定义了存在多个DODAG版本时RPL的操作方式。
1. The tuple (RPLInstanceID, DODAGID, DODAGVersionNumber) uniquely defines a DODAG Version. Every element of a node's DODAG parent set, as conveyed by the last heard DIO message from each DODAG parent, MUST belong to the same DODAG Version. Elements of a node's candidate neighbor set MAY belong to different DODAG Versions.
1. 元组(RPLInstanceID、DODAGID、DODAGVersionNumber)唯一地定义了DODAG版本。节点的DODAG父集合的每个元素(由来自每个DODAG父集合的上次听到的DIO消息传递)必须属于同一个DODAG版本。节点候选邻居集的元素可能属于不同的DODAG版本。
2. A node is a member of a DODAG Version if every element of its DODAG parent set belongs to that DODAG Version, or if that node is the root of the corresponding DODAG.
2. 如果某个节点的DODAG父集合的每个元素都属于该DODAG版本,或者该节点是相应DODAG的根,则该节点是该DODAG版本的成员。
3. A node MUST NOT send DIOs for DODAG Versions of which it is not a member.
3. 节点不得为其不是成员的DODAG版本发送DIO。
4. DODAG roots MAY increment the DODAGVersionNumber that they advertise and thus move to a new DODAG Version. When a DODAG root increments its DODAGVersionNumber, it MUST follow the conventions of Serial Number Arithmetic as described in Section 7. Events triggering the increment of the DODAGVersionNumber are described later in this section and in Section 18.
4. DODAG根可能会增加它们发布的DODAGVersionNumber,从而移动到新的DODAG版本。当DODAG根增加其DODAGVersionNumber时,它必须遵循第7节所述的序列号算术约定。触发DODAGVersionNumber增量的事件将在本节后面和第18节中描述。
5. Within a given DODAG, a node that is a not a root MUST NOT advertise a DODAGVersionNumber higher than the highest DODAGVersionNumber it has heard. Higher is defined as the greater-than operator in Section 7.
5. 在给定的DODAG中,非根节点不得公布高于其听到的最高DODAGVersionNumber的DODAGVersionNumber。在第7节中,“高于”被定义为“大于”运算符。
6. Once a node has advertised a DODAG Version by sending a DIO, it MUST NOT be a member of a previous DODAG Version of the same DODAG (i.e., with the same RPLInstanceID, the same DODAGID, and a lower DODAGVersionNumber). Lower is defined as the less-than operator in Section 7.
6. 一旦节点通过发送DIO播发了DODAG版本,它就不能是同一DODAG的先前DODAG版本的成员(即,具有相同的RPLInstanceID、相同的DODAGID和更低的DODAGVersionNumber)。Lower在第7节中定义为小于运算符。
When the DODAG parent set becomes empty on a node that is not a root, (i.e., the last parent has been removed, causing the node no longer to be associated with that DODAG), then the DODAG information should not be suppressed until after the expiration of an implementation-specific local timer. During the interval prior to suppression of the "old" DODAG state, the node will be able to observe if the DODAGVersionNumber has been incremented should any new parents appear. This will help protect against the possibility of loops that may occur if that node were to inadvertently rejoin the old DODAG Version in its own prior sub-DODAG.
当非根节点上的DODAG父集变为空时(即,最后一个父节点已被删除,导致该节点不再与该DODAG关联),则在特定于实现的本地计时器过期之前,不应抑制DODAG信息。在抑制“旧”DODAG状态之前的间隔期间,如果出现任何新的父节点,节点将能够观察DODAGVersionNumber是否已增加。这将有助于防止可能发生的循环,如果该节点无意中在其自身先前的子DODAG中重新加入旧的DODAG版本。
As the DODAGVersionNumber is incremented, a new DODAG Version spreads outward from the DODAG root. A parent that advertises the new DODAGVersionNumber cannot belong to the sub-DODAG of a node advertising an older DODAGVersionNumber. Therefore, a node can safely add a parent of any Rank with a newer DODAGVersionNumber without forming a loop.
随着DODAGVersionNumber的增加,一个新的DODAG版本从DODAG根向外扩展。播发新DODAGVersionNumber的父级不能属于播发旧DODAGVersionNumber的节点的子DODAG。因此,节点可以安全地添加具有较新DODAGVersionNumber的任何列组的父级,而无需形成循环。
For example, suppose that a node has left a DODAG with DODAGVersionNumber N. Suppose that a node had a sub-DODAG and did attempt to poison that sub-DODAG by advertising a Rank of INFINITE_RANK, but those advertisements may have become lost in the
例如,假设一个节点留下了DODAG版本号为N的DODAG。假设一个节点有一个子DODAG,并且确实试图通过广告无限_秩的秩来毒害该子DODAG,但这些广告可能在
LLN. Then, if the node did observe a candidate neighbor advertising a position in that original DODAG at DODAGVersionNumber N, that candidate neighbor could possibly have been in the node's former sub-DODAG, and there is a possible case where adding that candidate neighbor as a parent could cause a loop. In this case, if that candidate neighbor is observed to advertise a DODAGVersionNumber N+1, then that candidate neighbor is certain to be safe, since it is certain not to be in that original node's sub-DODAG, as it has been able to increment the DODAGVersionNumber by hearing from the DODAG root while that original node was detached. For this reason, it is useful for the detached node to remember the original DODAG information, including the DODAGVersionNumber N.
LLN。然后,如果节点确实观察到候选邻居在DODAGVersionNumber N处的原始DODAG中广告位置,则该候选邻居可能已经在节点的前子DODAG中,并且存在将该候选邻居添加为父节点可能导致循环的情况。在这种情况下,如果观察到该候选邻居播发DODAGVersionNumber N+1,则该候选邻居肯定是安全的,因为它肯定不在该原始节点的子DODAG中,因为在分离该原始节点时,它能够通过从DODAG根中听到消息来增加DODAGVersionNumber。因此,分离节点记住原始DODAG信息非常有用,包括DODAGVersionNumber N。
Exactly when a DODAG root increments the DODAGVersionNumber is implementation dependent and out of scope for this specification. Examples include incrementing the DODAGVersionNumber periodically, upon administrative intervention, or on application-level detection of lost connectivity or DODAG inefficiency.
当DODAG根增加时,DODAGVersionNumber取决于实现,超出了本规范的范围。例如,在管理干预或应用程序级别检测到连接丢失或DODAG效率低下时,定期增加DODAGVersionNumber。
After a node transitions to and advertises a new DODAG Version, the rules above make it unable to advertise the previous DODAG Version (prior DODAGVersionNumber) once it has committed to advertising the new DODAG Version.
节点转换到新的DODAG版本并播发后,上述规则使其在承诺播发新的DODAG版本后无法播发以前的DODAG版本(以前的DODAGVersionNumber)。
1. A DODAG root without possibility to satisfy the application-defined goal MUST NOT set the Grounded bit.
1. 无法满足应用程序定义目标的DODAG根不能设置固定位。
2. A DODAG root MUST advertise a Rank of ROOT_RANK.
2. DODAG根必须公布根的秩。
3. A node whose DODAG parent set is empty MAY become the DODAG root of a floating DODAG. It MAY also set its DAGPreference such that it is less preferred.
3. DODAG父集为空的节点可能成为浮动DODAG的DODAG根。它还可以设置其首选项,以减少首选项。
In a deployment that uses non-LLN links to federate a number of LLN roots, it is possible to run RPL over those non-RPL links and use one router as a "backbone root". The backbone root is the virtual root of the DODAG and exposes a Rank of BASE_RANK over the backbone. All the LLN roots that are parented to that backbone root, including the backbone root if it also serves as the LLN root itself, expose a Rank of ROOT_RANK to the LLN. These virtual roots are part of the same DODAG and advertise the same DODAGID. They coordinate DODAGVersionNumbers and other DODAG parameters with the virtual root over the backbone. The method of coordination is out of scope for this specification (to be defined in future companion specifications).
在使用非LLN链路联合多个LLN根的部署中,可以在这些非RPL链路上运行RPL,并使用一个路由器作为“主干根”。主干根是DODAG的虚拟根,并在主干上公开一个基_秩的秩。作为该主干根的父级的所有LLN根,包括主干根(如果主干根本身也用作LLN根),向LLN公开一个root_秩的秩。这些虚拟根是同一DODAG的一部分,并宣传同一DODAGID。它们将DoDAGVersionNumber和其他DODAG参数与主干上的虚拟根进行协调。协调方法超出本规范的范围(将在未来的配套规范中定义)。
The Objective Function and the set of advertised routing metrics and constraints of a DAG determine how a node selects its neighbor set, parent set, and preferred parents. This selection implicitly also determines the DODAG within a DAG. Such selection can include administrative preference (Prf) as well as metrics or other considerations.
DAG的目标函数和播发路由度量和约束集决定了节点如何选择其邻居集、父集和首选父集。此选择还隐式确定DAG中的DODAG。这种选择可以包括管理偏好(Prf)以及度量或其他考虑因素。
If a node has the option to join a more preferred DODAG while still meeting other optimization objectives, then the node will generally seek to join the more preferred DODAG as determined by the OF. All else being equal, it is left to the implementation to determine which DODAG is most preferred (since, as a reminder, a node must only join one DODAG per RPL Instance).
如果一个节点在满足其他优化目标的同时可以选择加入更优选的DODAG,那么该节点通常会寻求加入由OF确定的更优选的DODAG。在所有其他条件相同的情况下,由实现来确定哪个DODAG是最优先的(因为,作为提醒,每个RPL实例一个节点只能加入一个DODAG)。
1. A node MUST NOT advertise a Rank less than or equal to any member of its parent set within the DODAG Version.
1. 在DODAG版本中,节点不得公布小于或等于其父集任何成员的秩。
2. A node MAY advertise a Rank lower than its prior advertisement within the DODAG Version.
2. 节点可以在DODAG版本中公布低于其先前公布的等级。
3. Let L be the lowest Rank within a DODAG Version that a given node has advertised. Within the same DODAG Version, that node MUST NOT advertise an effective Rank higher than L + DAGMaxRankIncrease. INFINITE_RANK is an exception to this rule: a node MAY advertise an INFINITE_RANK within a DODAG Version without restriction. If a node's Rank were to be higher than allowed by L + DAGMaxRankIncrease, when it advertises Rank, it MUST advertise its Rank as INFINITE_RANK.
3. 设L是给定节点公布的DODAG版本中的最低秩。在同一DODAG版本中,该节点不得公布高于L+DAGMaxRankIncrease的有效秩。无限秩是该规则的一个例外:节点可以在DODAG版本中无限制地公布无限秩。如果一个节点的秩要高于L+DAGMaxRankIncrease允许的值,那么当它公布秩时,它必须将其秩公布为无限秩。
4. A node MAY, at any time, choose to join a different DODAG within a RPL Instance. Such a join has no Rank restrictions, unless that different DODAG is a DODAG Version of which this node has previously been a member; in which case, the rule of the previous bullet (3) must be observed. Until a node transmits a DIO indicating its new DODAG membership, it MUST forward packets along the previous DODAG.
4. 节点可以随时选择在RPL实例中加入不同的DODAG。这样的连接没有等级限制,除非不同的DODAG是该节点以前是其成员的DODAG版本;在这种情况下,必须遵守上一个项目符号(3)的规则。在节点发送指示其新DODAG成员身份的DIO之前,它必须沿着前一个DODAG转发数据包。
5. A node MAY, at any time after hearing the next DODAGVersionNumber advertised from suitable DODAG parents, choose to migrate to the next DODAG Version within the DODAG.
5. 在听到来自合适的DODAG父节点的下一个DODAG版本号公告后,节点可以随时选择迁移到DODAG中的下一个DODAG版本。
Conceptually, an implementation is maintaining a DODAG parent set within the DODAG Version. Movement entails changes to the DODAG parent set. Moving Up does not present the risk to create a loop but moving Down might, so that operation is subject to additional constraints.
从概念上讲,实现是在DODAG版本中维护DODAG父集合。移动需要对DODAG父集合进行更改。向上移动不会带来创建循环的风险,但向下移动可能会带来风险,因此操作会受到其他约束。
When a node migrates to the next DODAG Version, the DODAG parent set needs to be rebuilt for the new Version. An implementation could defer to migrate for some reasonable amount of time, to see if some other neighbors with potentially better metrics but higher Rank announce themselves. Similarly, when a node jumps into a new DODAG, it needs to construct a new DODAG parent set for this new DODAG.
当节点迁移到下一个DODAG版本时,需要为新版本重建DODAG父集。一个实现可以推迟迁移一段合理的时间,以查看是否有其他具有更好指标但级别更高的邻居宣布他们自己。类似地,当节点跳入新的DODAG时,它需要为此新的DODAG构建一个新的DODAG父集合。
If a node needs to move Down a DODAG that it is attached to, increasing its Rank, then it MAY poison its routes and delay before moving as described in Section 8.2.2.5.
如果节点需要向下移动其所连接的DODAG,增加其等级,则其可能会破坏其路由并在移动前延迟,如第8.2.2.5节所述。
A node is allowed to join any DODAG Version that it has never been a prior member of without any restrictions, but if the node has been a prior member of the DODAG Version, then it must continue to observe the rule that it may not advertise a Rank higher than L+DAGMaxRankIncrease at any point in the life of the DODAG Version. This rule must be observed so as not to create a loophole that would allow the node to effectively increment its Rank all the way to INFINITE_RANK, which may have impact on other nodes and create a resource-wasting count-to-infinity scenario.
允许节点加入其从未作为DODAG版本的前一个成员的任何DODAG版本,而不受任何限制,但如果该节点是DODAG版本的前一个成员,则它必须继续遵守规则,即在DODAG版本的生命周期中的任何时候,它不得公布高于L+DAGMaxRankIncrease的等级。必须遵守此规则,以免造成漏洞,使节点能够有效地将其秩一直增加到无限秩,这可能会对其他节点产生影响,并造成资源浪费计数无限的情况。
1. A node poisons routes by advertising a Rank of INFINITE_RANK.
1. 节点通过广告无限_秩的秩来毒害路由。
2. A node MUST NOT have any nodes with a Rank of INFINITE_RANK in its parent set.
2. 节点的父集合中不得有任何秩为无限秩的节点。
Although an implementation may advertise INFINITE_RANK for the purposes of poisoning, doing so is not the same as setting Rank to INFINITE_RANK. For example, a node may continue to send data packets whose RPL Packet Information includes a Rank that is not INFINITE_RANK, yet still advertise INFINITE_RANK in its DIOs.
尽管一个实现可能会出于中毒的目的发布无限_秩,但这样做与将秩设置为无限_秩并不相同。例如,节点可以继续发送其RPL分组信息包括不是无限秩的秩的数据分组,但仍然在其DIOs中通告无限秩。
When a (former) parent is observed to advertise a Rank of INFINITE_RANK, that (former) parent has detached from the DODAG and is no longer able to act as a parent, nor is there any way that another node may be considered to have a Rank greater-than INFINITE_RANK. Therefore, that (former) parent cannot act as a parent any longer and is removed from the parent set.
当观察到一个(前)父节点播发无限_秩的秩时,该(前)父节点已从DODAG分离,不再能够充当父节点,也没有任何方式可以认为另一个节点的秩大于无限_秩。因此,该(以前的)父项不能再充当父项,将从父项集中删除。
1. A node unable to stay connected to a DODAG within a given DODAG Version, i.e., that cannot retain non-empty parent set without violating the rules of this specification, MAY detach from this DODAG Version. A node that detaches becomes the root of its own floating DODAG and SHOULD immediately advertise this new situation in a DIO as an alternate to poisoning.
1. 无法在给定DODAG版本内保持与DODAG连接的节点(即,无法在不违反本规范规则的情况下保留非空父集的节点)可以从此DODAG版本分离。分离的节点将成为其自身浮动DODAG的根,并应立即在DIO中公布此新情况,作为中毒的替代方案。
1. If a node receives a DIO from one of its DODAG parents, indicating that the parent has left the DODAG, that node SHOULD stay in its current DODAG through an alternative DODAG parent, if possible. It MAY follow the leaving parent.
1. 如果节点从其DODAG父节点之一接收到DIO,表明父节点已离开DODAG,则该节点应尽可能通过另一个DODAG父节点留在其当前DODAG中。它可能跟随离开的父母。
A DODAG parent may have moved, migrated to the next DODAG Version, or jumped to a different DODAG. A node ought to give some preference to remaining in the current DODAG, if possible via an alternate parent, but ought to follow the parent if there are no other options.
DODAG父级可能已移动、迁移到下一个DODAG版本或跳转到其他DODAG。如果可能的话,节点应该优先选择保留在当前DODAG中,如果没有其他选项,则应该跟随父节点。
When a DIO message is received, the receiving node must first determine whether or not the DIO message should be accepted for further processing, and subsequently present the DIO message for further processing if eligible.
当接收到DIO消息时,接收节点必须首先确定是否应接受DIO消息以进行进一步处理,然后在符合条件的情况下提供DIO消息以进行进一步处理。
1. If the DIO message is malformed, then the DIO message is not eligible for further processing and a node MUST silently discard it. (See Section 18 for error logging).
1. 如果DIO消息格式不正确,则DIO消息不符合进一步处理的条件,节点必须以静默方式放弃它。(有关错误记录,请参见第18节)。
2. If the sender of the DIO message is a member of the candidate neighbor set and the DIO message is not malformed, the node MUST process the DIO.
2. 如果DIO消息的发送者是候选邻居集的成员,并且DIO消息的格式没有错误,则节点必须处理DIO。
As DIO messages are received from candidate neighbors, the neighbors may be promoted to DODAG parents by following the rules of DODAG discovery as described in Section 8.2. When a node places a neighbor into the DODAG parent set, the node becomes attached to the DODAG through the new DODAG parent node.
当从候选邻居接收到DIO消息时,可以按照第8.2节中描述的DODAG发现规则将邻居提升为DODAG父级。当节点将邻居放入DODAG父节点集中时,该节点将通过新的DODAG父节点连接到DODAG。
The most preferred parent should be used to restrict which other nodes may become DODAG parents. Some nodes in the DODAG parent set may be of a Rank less than or equal to the most preferred DODAG parent. (This case may occur, for example, if an energy-constrained device is at a lesser Rank but should be avoided per an optimization objective, resulting in a more preferred parent at a greater Rank.)
应使用最首选的父节点来限制哪些其他节点可能成为DODAG父节点。DODAG父集合中的某些节点的秩可能小于或等于最首选的DODAG父节点。(这种情况可能发生,例如,如果能量受限设备处于较低的等级,但应根据优化目标避免,从而在较高的等级产生更优选的父级。)
RPL nodes transmit DIOs using a Trickle timer [RFC6206]. A DIO from a sender with a lesser DAGRank that causes no changes to the recipient's parent set, preferred parent, or Rank SHOULD be considered consistent with respect to the Trickle timer.
RPL节点使用涓流定时器[RFC6206]传输DIO。来自DAGRank较小的发送方的DIO不会对接收方的父集合、首选父集合或等级造成任何更改,应视为与涓流计时器一致。
The following packets and events MUST be considered inconsistencies with respect to the Trickle timer, and cause the Trickle timer to reset:
以下数据包和事件必须被视为与涓流计时器不一致,并导致涓流计时器重置:
o When a node detects an inconsistency when forwarding a packet, as detailed in Section 11.2.
o 当节点在转发数据包时检测到不一致时,如第11.2节所述。
o When a node receives a multicast DIS message without a Solicited Information option, unless a DIS flag restricts this behavior.
o 当节点接收到没有请求信息选项的多播DIS消息时,除非DIS标志限制此行为。
o When a node receives a multicast DIS with a Solicited Information option and the node matches all of the predicates in the Solicited Information option, unless a DIS flag restricts this behavior.
o 当节点接收到带有请求信息选项的多播DI,并且该节点匹配请求信息选项中的所有谓词时,除非DIS标志限制此行为。
o When a node joins a new DODAG Version (e.g., by updating its DODAGVersionNumber, joining a new RPL Instance, etc.).
o 当节点加入新的DODAG版本时(例如,通过更新其DODAGVersionNumber、加入新的RPL实例等)。
Note that this list is not exhaustive, and an implementation MAY consider other messages or events to be inconsistencies.
请注意,此列表不是穷尽的,并且实现可以考虑其他消息或事件是不一致的。
A node SHOULD NOT reset its DIO Trickle timer in response to unicast DIS messages. When a node receives a unicast DIS without a Solicited Information option, it MUST unicast a DIO to the sender in response. This DIO MUST include a DODAG Configuration option. When a node receives a unicast DIS message with a Solicited Information option and matches the predicates of that Solicited Information option, it MUST unicast a DIO to the sender in response. This unicast DIO MUST include a DODAG Configuration option. Thus, a node MAY transmit a unicast DIS message to a potential DODAG parent in order to probe for DODAG Configuration and other parameters.
节点不应重置其DIO涓流计时器以响应单播DIS消息。当节点接收到没有请求信息选项的单播DIS时,它必须将DIO单播给发送方作为响应。此DIO必须包括DODAG配置选项。当节点接收到带有请求信息选项的单播DIS消息并与该请求信息选项的谓词匹配时,它必须单播DIO给发送方作为响应。此单播DIO必须包括DODAG配置选项。因此,节点可以向潜在的DODAG父节点发送单播DIS消息,以便探测DODAG配置和其他参数。
The configuration parameters of the Trickle timer are specified as follows:
涓流定时器的配置参数规定如下:
Imin: learned from the DIO message as (2^DIOIntervalMin) ms. The default value of DIOIntervalMin is DEFAULT_DIO_INTERVAL_MIN.
Imin:以(2^DIOIntervalMin)ms的形式从DIO消息中学习。DIOIntervalMin的默认值为default_DIO_INTERVAL_MIN。
Imax: learned from the DIO message as DIOIntervalDoublings. The default value of DIOIntervalDoublings is DEFAULT_DIO_INTERVAL_DOUBLINGS.
Imax:从DIO信息中学习,称为DIOIntervalDoublings。DIOIntervalDoublings的默认值为default_DIO_INTERVAL_DOUBLINGS。
k: learned from the DIO message as DIORedundancyConstant. The default value of DIORedundancyConstant is DEFAULT_DIO_REDUNDANCY_CONSTANT. In RPL, when k has the value of 0x00, this is to be treated as a redundancy constant of infinity in RPL, i.e., Trickle never suppresses messages.
k:从DIO信息中得知,他是DIORedundancyConstant。DIORedundancyConstant的默认值是默认的DIO\u RedundancyConstant。在RPL中,当k的值为0x00时,这将被视为RPL中无穷大的冗余常数,即涓流从不抑制消息。
The DODAG selection is implementation and OF dependent. In order to limit erratic movements, and all metrics being equal, nodes SHOULD keep their previous selection. Also, nodes SHOULD provide a means to filter out a parent whose availability is detected as fluctuating, at least when more stable choices are available.
DODAG选择是实现和依赖的。为了限制不稳定的移动,并且所有度量都相等,节点应该保留其先前的选择。此外,节点应该提供一种方法来过滤出可用性被检测为波动的父节点,至少在有更稳定的选择可用时是如此。
When connection to a grounded DODAG is not possible or preferable for security or other reasons, scattered DODAGs MAY aggregate as much as possible into larger DODAGs in order to allow connectivity within the LLN.
当出于安全或其他原因无法连接到接地的DODAG时,分散的DODAG可能会尽可能多地聚集成更大的DODAG,以允许LLN内的连接。
A node SHOULD verify that bidirectional connectivity and adequate link quality is available with a candidate neighbor before it considers that candidate as a DODAG parent.
在将候选邻居视为DODAG父节点之前,节点应验证该候选邻居是否具有双向连接和足够的链路质量。
In some cases, a RPL node may attach to a DODAG as a leaf node only. One example of such a case is when a node does not understand or does not support (policy) the RPL Instance's OF or advertised metric/ constraint. As specified in Section 18.6, related to policy function, the node may either join the DODAG as a leaf node or may not join the DODAG. As mentioned in Section 18.5, it is then recommended to log a fault.
在某些情况下,RPL节点可能仅作为叶节点连接到DODAG。这种情况的一个示例是当节点不理解或不支持(策略)RPL实例的度量/约束或公布的度量/约束时。如第18.6节中与策略功能相关的规定,节点可以作为叶节点加入DODAG,也可以不加入DODAG。如第18.5节所述,建议记录故障。
A leaf node does not extend DODAG connectivity; however, in some cases, the leaf node may still need to transmit DIOs on occasion, in particular, when the leaf node may not have always been acting as a leaf node and an inconsistency is detected.
叶节点不扩展DODAG连接;然而,在某些情况下,叶节点有时可能仍然需要发送DIOs,特别是当叶节点可能并非始终充当叶节点并且检测到不一致性时。
A node operating as a leaf node must obey the following rules:
作为叶节点运行的节点必须遵守以下规则:
1. It MUST NOT transmit DIOs containing the DAG Metric Container.
1. 它不能传输包含DAG公制容器的DIOs。
2. Its DIOs MUST advertise a DAGRank of INFINITE_RANK.
2. 它的DIOs必须宣传无限级的DAGRank。
3. It MAY suppress DIO transmission, unless the DIO transmission has been triggered due to detection of inconsistency when a packet is being forwarded or in response to a unicast DIS message, in which case the DIO transmission MUST NOT be suppressed.
3. 它可以抑制DIO传输,除非在转发分组时或响应单播DIS消息时由于检测到不一致而触发了DIO传输,在这种情况下,不得抑制DIO传输。
4. It MAY transmit unicast DAOs as described in Section 9.2.
4. 它可以按照第9.2节所述发送单播DAO。
5. It MAY transmit multicast DAOs to the '1 hop' neighborhood as described in Section 9.10.
5. 如第9.10节所述,它可以将多播DAO传输到“1跳”邻居。
A particular case that requires a leaf node to send a DIO is if that leaf node was a prior member of another DODAG and another node forwards a message assuming the old topology, triggering an inconsistency. The leaf node needs to transmit a DIO in order to repair the inconsistency. Note that due to the lossy nature of LLNs, even though the leaf node may have optimistically poisoned its routes by advertising a Rank of INFINITE_RANK in the old DODAG prior to becoming a leaf node, that advertisement may have become lost and a leaf node must be capable to send a DIO later in order to repair the inconsistency.
需要叶节点发送DIO的一种特殊情况是,该叶节点是另一个DODAG的前一个成员,而另一个节点转发采用旧拓扑的消息,从而触发不一致。叶节点需要发送DIO以修复不一致性。注意,由于lln的有损性质,即使叶节点可能在成为叶节点之前通过在旧DODAG中广告无限_秩的秩来乐观地毒害其路由,该广告可能已经丢失,并且叶节点必须能够稍后发送DIO以修复不一致性。
In the general case, the leaf node MUST NOT advertise itself as a router (i.e., send DIOs).
在一般情况下,叶节点不得将自身作为路由器(即,发送DIOs)播发。
In some cases, it might be beneficial to adjust the Rank advertised by a node beyond that computed by the OF based on some implementation-specific policy and properties of the node. For example, a node that has a limited battery should be a leaf unless there is no other choice, and may then augment the Rank computation specified by the OF in order to expose an exaggerated Rank.
在某些情况下,根据节点的某些特定于实现的策略和属性,将节点公布的排名调整到OF计算的排名之外可能是有益的。例如,除非没有其他选择,否则具有有限电池的节点应该是叶,并且随后可以增加由OF指定的秩计算,以便公开夸大的秩。
This section describes how RPL discovers and maintains Downward routes. RPL constructs and maintains Downward routes with Destination Advertisement Object (DAO) messages. Downward routes support P2MP flows, from the DODAG roots toward the leaves. Downward routes also support P2P flows: P2P messages can flow toward a DODAG root (or a common ancestor) through an Upward route, then away from the DODAG root to a destination through a Downward route.
本节介绍RPL如何发现和维护下行路由。RPL使用目标广告对象(DAO)消息构造并维护下行路由。下行路径支持P2MP流,从DODAG根部流向叶片。下行路由也支持P2P流:P2P消息可以通过上行路由流向DODAG根(或共同祖先),然后通过下行路由从DODAG根流向目的地。
This specification describes the two modes a RPL Instance may choose from for maintaining Downward routes. In the first mode, called "Storing", nodes store Downward routing tables for their sub-DODAG. Each hop on a Downward route in a storing network examines its routing table to decide on the next hop. In the second mode, called "Non-Storing", nodes do not store Downward routing tables. Downward packets are routed with source routes populated by a DODAG root [RFC6554].
本规范描述了RPL实例可以选择的两种模式,用于维护下行路由。在第一种模式中,称为“存储”,节点为其子DODAG存储向下的路由表。存储网络中下行路由上的每个跃点都会检查其路由表以决定下一个跃点。在第二种模式中,称为“非存储”,节点不存储下行路由表。下行数据包通过DODAG根[RFC6554]填充的源路由进行路由。
RPL allows a simple one-hop P2P optimization for both storing and non-storing networks. A node may send a P2P packet destined to a one-hop neighbor directly to that node.
RPL允许对存储和非存储网络进行简单的单跳P2P优化。节点可以将目的地为一跳邻居的P2P分组直接发送到该节点。
To establish Downward routes, RPL nodes send DAO messages Upward. The next-hop destinations of these DAO messages are called "DAO parents". The collection of a node's DAO parents is called the "DAO parent set".
为了建立下行路由,RPL节点向上发送DAO消息。这些DAO消息的下一跳目的地称为“DAO父节点”。节点的DAO父级集合称为“DAO父级集合”。
1. A node MAY send DAO messages using the all-RPL-nodes multicast address, which is an optimization to provision one-hop routing. The 'K' bit MUST be cleared on transmission of the multicast DAO.
1. 节点可以使用all RPL节点多播地址发送DAO消息,这是提供单跳路由的优化。在传输多播DAO时,必须清除“K”位。
2. A node's DAO parent set MUST be a subset of its DODAG parent set.
2. 节点的DAO父集必须是其DODAG父集的子集。
3. In Storing mode operation, a node MUST NOT address unicast DAO messages to nodes that are not DAO parents.
3. 在存储模式操作中,节点不得将单播DAO消息寻址到非DAO父节点。
4. In Storing mode operation, the IPv6 source and destination addresses of a DAO message MUST be link-local addresses.
4. 在存储模式操作中,DAO消息的IPv6源地址和目标地址必须是链路本地地址。
5. In Non-Storing mode operation, a node MUST NOT address unicast DAO messages to nodes that are not DODAG roots.
5. 在非存储模式操作中,节点不得将单播DAO消息寻址到非DODAG根的节点。
6. In Non-Storing mode operation, the IPv6 source and destination addresses of a DAO message MUST be a unique-local or a global address.
6. 在非存储模式操作中,DAO消息的IPv6源地址和目标地址必须是唯一的本地或全局地址。
The selection of DAO parents is implementation and Objective Function specific.
DAO父级的选择是实现和目标函数特定的。
Destination Advertisement may be configured to be entirely disabled, or operate in either a Storing or Non-Storing mode, as reported in the MOP in the DIO message.
目的地广告可被配置为完全禁用,或以存储或非存储模式操作,如在DIO消息中的MOP中所报告。
1. All nodes who join a DODAG MUST abide by the MOP setting from the root. Nodes that do not have the capability to fully participate as a router, e.g., that do not match the advertised MOP, MAY join the DODAG as a leaf.
1. 所有加入DODAG的节点都必须遵守根节点的MOP设置。没有能力作为路由器完全参与的节点(例如,与公布的MOP不匹配的节点)可以作为叶子加入DODAG。
2. If the MOP is 0, indicating no Downward routing, nodes MUST NOT transmit DAO messages and MAY ignore DAO messages.
2. 如果MOP为0,表示没有向下路由,则节点不得传输DAO消息,并且可以忽略DAO消息。
3. In Non-Storing mode, the DODAG root SHOULD store source routing table entries for destinations learned from DAOs. The DODAG root MUST be able to generate source routes for those destinations learned from DAOs that were stored.
3. 在非存储模式下,DODAG根目录应该存储从DAO学习的目的地的源路由表条目。DODAG根目录必须能够为从存储的DAO中学习到的目的地生成源路由。
4. In Storing mode, all non-root, non-leaf nodes MUST store routing table entries for destinations learned from DAOs.
4. 在存储模式下,所有非根、非叶节点必须存储从DAO学习的目的地的路由表条目。
A DODAG can have one of several possible modes of operation, as defined by the MOP field. Either it does not support Downward routes, it supports Downward routes through source routing from DODAG roots, or it supports Downward routes through in-network routing tables.
根据MOP字段的定义,DODAG可以有几种可能的操作模式之一。它要么不支持下行路由,要么支持通过DODAG根的源路由的下行路由,要么支持通过网络路由表的下行路由。
When Downward routes are supported through source routing from DODAG roots, it is generally expected that the DODAG root has stored the source routing information learned from DAOs in order to construct the source routes. If the DODAG root fails to store some information, then some destinations may be unreachable.
当DODAG根通过源路由支持下行路由时,通常预期DODAG根已存储从DAO学习的源路由信息,以便构建源路由。如果DODAG根目录无法存储某些信息,则可能无法访问某些目的地。
When Downward routes are supported through in-network routing tables, the multicast operation defined in this specification may or may not be supported, also as indicated by the MOP field.
当通过网络内路由表支持下行路由时,可能支持也可能不支持本规范中定义的多播操作,如MOP字段所示。
When Downward routes are supported through in-network routing tables, as described in this specification, it is expected that nodes acting as routers have been provisioned sufficiently to hold the required routing table state. If a node acting as a router is unable to hold the full routing table state then the routing state is not complete,
如本规范所述,当通过网络内路由表支持下行路由时,作为路由器的节点被充分配置以保持所需的路由表状态。如果充当路由器的节点无法保持完整路由表状态,则路由状态不完整,
messages may be dropped as a consequence, and a fault may be logged (Section 18.5). Future extensions to RPL may elaborate on refined actions/behaviors to manage this case.
因此,可能会丢弃消息,并记录故障(第18.5节)。RPL的未来扩展可能会详细说明管理此案例的优化操作/行为。
As of the writing of this specification, RPL does not support mixed-mode operation, where some nodes source route and other store routing tables: future extensions to RPL may support this mode of operation.
在编写本规范时,RPL不支持混合模式操作,其中一些节点源路由和其他存储路由表:RPL的未来扩展可能支持这种操作模式。
For each Target that is associated with (owned by) a node, that node is responsible to emit DAO messages in order to provision the Downward routes. The Target+Transit information contained in those DAO messages subsequently propagates Up the DODAG. The Path Sequence counter in the Transit information option is used to indicate freshness and update stale Downward routing information as described in Section 7.
对于与节点关联(由节点拥有)的每个目标,该节点负责发出DAO消息以提供下行路由。这些DAO消息中包含的目标+传输信息随后向上传播到DODAG。如第7节所述,运输信息选项中的路径顺序计数器用于指示新鲜度和更新过时的下行路线信息。
For a Target that is associated with (owned by) a node, that node MUST increment the Path Sequence counter, and generate a new DAO message, when:
对于与节点关联(拥有)的目标,该节点必须增加路径序列计数器,并在以下情况下生成新的DAO消息:
1. the Path Lifetime is to be updated (e.g., a refresh or a no-Path).
1. 要更新路径生存期(例如,刷新或无路径)。
2. the DODAG Parent Address subfield list is to be changed.
2. 将更改DODAG父地址子字段列表。
For a Target that is associated with (owned by) a node, that node MAY increment the Path Sequence counter, and generate a new DAO message, on occasion in order to refresh the Downward routing information. In Storing mode, the node generates such a DAO to each of its DAO parents in order to enable multipath. All DAOs generated at the same time for the same Target MUST be sent with the same Path Sequence in the Transit Information.
对于与节点关联(由节点拥有)的目标,该节点有时可以增加路径序列计数器,并生成新的DAO消息,以便刷新下行路由信息。在存储模式下,节点向其每个DAO父节点生成这样的DAO,以便启用多路径。同时为同一目标生成的所有DAO必须在传输信息中以相同的路径序列发送。
A node might send DAO messages when it receives DAO messages, as a result of changes in its DAO parent set, or in response to another event such as the expiry of a related prefix lifetime. In the case of receiving DAOs, it matters whether the DAO message is "new" or contains new information. In Non-Storing mode, every DAO message a node receives is "new". In Storing mode, a DAO message is "new" if it satisfies any of these criteria for a contained Target:
节点在接收DAO消息时可能会发送DAO消息,这是由于其DAO父集合中的更改,或者是为了响应另一个事件,例如相关前缀生存期的到期。在接收DAO的情况下,DAO消息是“新的”还是包含新信息很重要。在非存储模式下,节点接收的每个DAO消息都是“新的”。在存储模式下,如果DAO消息满足所包含目标的以下任一条件,则它是“新的”:
1. it has a newer Path Sequence number,
1. 它有一个更新的路径序列号,
2. it has additional Path Control bits, or
2. 它有额外的路径控制位,或
3. it is a No-Path DAO message that removes the last Downward route to a prefix.
3. 它是一条无路径DAO消息,用于删除指向前缀的最后一条向下路由。
A node that receives a DAO message from its sub-DODAG MAY suppress scheduling a DAO message transmission if that DAO message is not new.
如果DAO消息不是新的,则从其子DODAG接收DAO消息的节点可以禁止调度DAO消息传输。
1. If a node sends a DAO message with newer or different information than the prior DAO message transmission, it MUST increment the DAOSequence field by at least one. A DAO message transmission that is identical to the prior DAO message transmission MAY increment the DAOSequence field.
1. 如果节点发送的DAO消息的信息比之前的DAO消息传输的信息更新或不同,则必须将DAOSequence字段至少增加一个。与先前的DAO消息传输相同的DAO消息传输可能会增加DAOSequence字段。
2. The RPLInstanceID and DODAGID fields of a DAO message MUST be the same value as the members of the node's parent set and the DIOs it transmits.
2. DAO消息的RPLInstanceID和DODAGID字段的值必须与节点父集合的成员及其传输的DIO的值相同。
3. A node MAY set the 'K' flag in a unicast DAO message to solicit a unicast DAO-ACK in response in order to confirm the attempt.
3. 节点可以在单播DAO消息中设置“K”标志,以请求单播DAO-ACK作为响应,以确认尝试。
4. A node receiving a unicast DAO message with the 'K' flag set SHOULD respond with a DAO-ACK. A node receiving a DAO message without the 'K' flag set MAY respond with a DAO-ACK, especially to report an error condition.
4. 接收设置了“K”标志的单播DAO消息的节点应使用DAO-ACK进行响应。接收到未设置“K”标志的DAO消息的节点可能会响应DAO-ACK,尤其是报告错误情况。
5. A node that sets the 'K' flag in a unicast DAO message but does not receive a DAO-ACK in response MAY reschedule the DAO message transmission for another attempt, up until an implementation-specific number of retries.
5. 在单播DAO消息中设置“K”标志但没有收到DAO-ACK响应的节点可以重新安排DAO消息传输以进行另一次尝试,直到达到特定于实现的重试次数。
6. Nodes SHOULD ignore DAOs without newer sequence numbers and MUST NOT process them further.
6. 节点应该忽略没有更新序列号的DAO,并且不能进一步处理它们。
Unlike the Version field of a DIO, which is incremented only by a DODAG root and repeated unchanged by other nodes, DAOSequence values are unique to each node. The sequence number space for unicast and multicast DAO messages can be either the same or distinct. It is RECOMMENDED to use the same sequence number space.
与DIO的版本字段不同,DIO的版本字段只增加一个DODAG根,其他节点不变地重复,DAOSequence值对每个节点都是唯一的。单播和多播DAO消息的序列号空间可以相同,也可以不同。建议使用相同的序列号空间。
DAOs follow a common structure in both storing and non-storing networks. In the most general form, a DAO message may include several groups of options, where each group consists of one or more Target options followed by one or more Transit Information options.
DAO在存储和非存储网络中都遵循一种通用结构。在最一般的形式中,DAO消息可能包括多组选项,其中每组由一个或多个目标选项和一个或多个运输信息选项组成。
The entire group of Transit Information options applies to the entire group of Target options. Later sections describe further details for each mode of operation.
整个公交信息选项组应用于整个目标选项组。后面的章节将详细介绍每种操作模式。
1. RPL nodes MUST include one or more RPL Target options in each DAO message they transmit. One RPL Target option MUST have a prefix that includes the node's IPv6 address if that node needs the DODAG to provision Downward routes to that node. The RPL Target option MAY be immediately followed by an opaque RPL Target Descriptor option that qualifies it.
1. RPL节点必须在其传输的每个DAO消息中包含一个或多个RPL目标选项。一个RPL目标选项必须具有包含节点IPv6地址的前缀,如果该节点需要DODAG来提供到该节点的下行路由。RPL目标选项后面可能紧跟着一个不透明的RPL目标描述符选项,该选项对RPL目标进行了限定。
2. When a node updates the information in a Transit Information option for a Target option that covers one of its addresses, it MUST increment the Path Sequence number in that Transit Information option. The Path Sequence number MAY be incremented occasionally to cause a refresh to the Downward routes.
2. 当节点为覆盖其一个地址的目标选项更新传输信息选项中的信息时,它必须增加该传输信息选项中的路径序列号。路径序列号可能偶尔增加,以刷新下行路由。
3. One or more RPL Target options in a unicast DAO message MUST be followed by one or more Transit Information options. All the transit options apply to all the Target options that immediately precede them.
3. 单播DAO消息中的一个或多个RPL目标选项后面必须跟一个或多个传输信息选项。所有运输选项都适用于紧跟在它们之前的所有目标选项。
4. Multicast DAOs MUST NOT include the DODAG Parent Address subfield in Transit Information options.
4. 多播DAO不得在传输信息选项中包含DODAG父地址子字段。
5. A node that receives and processes a DAO message containing information for a specific Target, and that has prior information for that Target, MUST use the Path Sequence number in the Transit Information option associated with that Target in order to determine whether or not the DAO message contains updated information per Section 7.
5. 接收和处理包含特定目标信息的DAO消息并具有该目标的先验信息的节点,必须使用与该目标相关联的传输信息选项中的路径序列号,以便根据第7节确定DAO消息是否包含更新信息。
6. If a node receives a DAO message that does not follow the above rules, it MUST discard the DAO message without further processing.
6. 如果节点接收到不符合上述规则的DAO消息,则必须丢弃DAO消息,而无需进一步处理。
In Non-Storing mode, the root builds a strict source routing header, hop-by-hop, by recursively looking up one-hop information that ties a Target (address or prefix) and a transit address together. In some cases, when a child address is derived from a prefix that is owned and advertised by a parent, that parent-child relationship may be inferred by the root for the purpose of constructing the source routing header. In all other cases, it is necessary to inform the root of the transit-Target relationship from a reachable target, so as to later enable the recursive construction of the routing header. An address that is advertised as a Target in a DAO message MUST be collocated in the same router, or reachable on-link by the router
在非存储模式下,根节点通过递归查找将目标(地址或前缀)和传输地址绑定在一起的单跳信息,逐跳构建严格的源路由头。在某些情况下,当子地址是从父地址拥有和播发的前缀派生出来时,为了构造源路由报头,该父-子关系可以由根节点推断出来。在所有其他情况下,有必要从可到达目标通知传输目标关系的根,以便以后能够递归构造路由报头。在DAO消息中作为目标播发的地址必须在同一路由器中并置,或可由路由器在链路上访问
that owns the address that is indicated in the associated Transit Information. The following additional rules apply to ensure the continuity of the end-to-end source route path:
拥有相关运输信息中指示的地址的。以下附加规则适用于确保端到端源路由路径的连续性:
1. The address of a parent used in the transit option MUST be taken from a PIO from that parent with the 'R' flag set. The 'R' flag in a PIO indicates that the prefix field actually contains the full parent address but the child SHOULD NOT assume that the parent address is on-link.
1. 传输选项中使用的父级地址必须取自设置了“R”标志的父级的PIO。PIO中的“R”标志表示前缀字段实际上包含完整的父地址,但子地址不应假定父地址位于链接上。
2. A PIO with an 'A' flag set indicates that the RPL child node may use the prefix to autoconfigure an address. A parent that advertises a prefix in a PIO with the 'A' flag set MUST ensure that the address or the whole prefix in the PIO is reachable from the root by advertising it as a DAO target. If the parent also sets the 'L' flag indicating that the prefix is on-link, then it MUST advertise the whole prefix as Target in a DAO message. If the 'L' flag is cleared and the 'R' flag is set, indicating that the parent provides its own address in the PIO, then the parent MUST advertise that address as a DAO target.
2. 设置了“A”标志的PIO表示RPL子节点可以使用前缀自动配置地址。在设置了“A”标志的PIO中播发前缀的父级必须确保通过将地址或整个前缀作为DAO目标播发,从根目录可以访问该地址或整个前缀。如果父级还设置了“L”标志,指示前缀在链接上,那么它必须在DAO消息中将整个前缀作为目标播发。如果清除了“L”标志并设置了“R”标志,表示父级在PIO中提供了自己的地址,则父级必须将该地址作为DAO目标播发。
3. An address that is advertised as Target in a DAO message MUST be collocated in the same router or reachable on-link by the router that owns the address that is indicated in the associated Transit Information.
3. 在DAO消息中作为目标播发的地址必须在同一路由器中并置,或可由拥有相关传输信息中指示的地址的路由器在链路上访问。
4. In order to enable an optimum compression of the routing header, the parent SHOULD set the 'R' flag in all PIOs with the 'A' flag set and the 'L' flag cleared, and the child SHOULD prefer to use as transit the address of the parent that is found in the PIO that is used to autoconfigure the address that is advertised as Target in the DAO message.
4. 为了实现路由报头的最佳压缩,父级应在所有PIO中设置“R”标志,并清除“A”标志和“L”标志,子级应首选使用PIO中找到的父级地址作为传输,该地址用于自动配置DAO消息中作为目标播发的地址。
5. A router might have targets that are not known to be on-link for a parent, either because they are addresses located on an alternate interface or because they belong to nodes that are external to RPL, for instance connected hosts. In order to inject such a Target in the RPL network, the router MUST advertise itself as the DODAG Parent Address subfield in the Transit Information option for that target, using an address that is on-link for that nodes DAO parent. If the Target belongs to an external node, then the router MUST set the External 'E' flag in the Transit Information.
5. 路由器的目标可能不在父级链路上,这可能是因为它们是位于备用接口上的地址,也可能是因为它们属于RPL外部的节点,例如连接的主机。为了在RPL网络中注入这样一个目标,路由器必须在该目标的传输信息选项中将自身作为DODAG父地址子字段进行公告,并使用该父节点的链接地址。如果目标属于外部节点,则路由器必须在传输信息中设置外部“E”标志。
A child node that has autoconfigured an address from a parent PIO with the 'L' flag set does not need to advertise that address as a DAO Target since the parent ensures that the whole prefix is already reachable from the root. However, if the 'L' flag is not set, then
自父PIO自动配置地址并设置“L”标志的子节点不需要将该地址作为DAO目标播发,因为父节点确保已可从根节点访问整个前缀。但是,如果未设置“L”标志,则
it is necessary, in Non-Storing mode, for the child node to inform the root of the parent-child relationship, using a reachable address of the parent, so as to enable the recursive construction of the routing header. This is done by associating an address of the parent as transit with the address of the child as Target in a DAO message.
在非存储模式下,子节点必须使用父节点的可访问地址通知根节点父子关系,以便能够递归构造路由头。这是通过在DAO消息中将父级作为传输的地址与子级作为目标的地址相关联来实现的。
Because DAOs flow Upward, receiving a unicast DAO can trigger sending a unicast DAO to a DAO parent.
因为DAO向上流动,所以接收单播DAO会触发向DAO父级发送单播DAO。
1. On receiving a unicast DAO message with updated information, such as containing a Transit Information option with a new Path Sequence, a node SHOULD send a DAO. It SHOULD NOT send this DAO message immediately. It SHOULD delay sending the DAO message in order to aggregate DAO information from other nodes for which it is a DAO parent.
1. 在接收到具有更新信息的单播DAO消息时,例如包含具有新路径序列的传输信息选项,节点应发送DAO。它不应该立即发送此DAO消息。它应该延迟发送DAO消息,以便从它是DAO父节点的其他节点聚合DAO信息。
2. A node SHOULD delay sending a DAO message with a timer (DelayDAO). Receiving a DAO message starts the DelayDAO timer. DAO messages received while the DelayDAO timer is active do not reset the timer. When the DelayDAO timer expires, the node sends a DAO.
2. 节点应使用计时器延迟发送DAO消息(DelayDAO)。接收DAO消息将启动DelayDAO计时器。DelayDAO计时器处于活动状态时收到的DAO消息不重置计时器。当DelayDAO计时器过期时,节点发送一个DAO。
3. When a node adds a node to its DAO parent set, it SHOULD schedule a DAO message transmission.
3. 当一个节点将一个节点添加到它的DAO父集合时,它应该安排一个DAO消息传输。
DelayDAO's value and calculation is implementation dependent. A default value of DEFAULT_DAO_DELAY is defined in this specification.
DelayDAO的值和计算取决于实现。默认延迟的默认值在本规范中定义。
Nodes can trigger their sub-DODAG to send DAO messages. Each node maintains a DAO Trigger Sequence Number (DTSN), which it communicates through DIO messages.
节点可以触发其子DODAG来发送DAO消息。每个节点维护一个DAO触发器序列号(DTSN),它通过DIO消息进行通信。
1. If a node hears one of its DAO parents increment its DTSN, the node MUST schedule a DAO message transmission using rules in Sections 9.3 and 9.5.
1. 如果节点听到其DAO父节点之一增加其DTSN,则该节点必须使用第9.3节和第9.5节中的规则安排DAO消息传输。
2. In Non-Storing mode, if a node hears one of its DAO parents increment its DTSN, the node MUST increment its own DTSN.
2. 在非存储模式下,如果节点听到其DAO父节点之一增加其DTSN,则该节点必须增加其自己的DTSN。
In a Storing mode of operation, as part of routine routing table updates and maintenance, a storing node MAY increment DTSN in order to reliably trigger a set of DAO updates from its immediate children.
在操作的存储模式中,作为例行路由表更新和维护的一部分,存储节点可以增加DTSN,以便从其直接子节点可靠地触发一组DAO更新。
In a Storing mode of operation, it is not necessary to trigger DAO updates from the entire sub-DODAG, since that state information will propagate hop-by-hop Up the DODAG.
在存储操作模式中,不需要从整个子DODAG触发DAO更新,因为状态信息将在DODAG上逐跳传播。
In a Non-Storing mode of operation, a DTSN increment will also cause the immediate children of a node to increment their DTSN in turn, triggering a set of DAO updates from the entire sub-DODAG. Typically, in a Non-Storing mode of operation, only the root would independently increment the DTSN when a DAO refresh is needed but a global repair (such as by incrementing DODAGVersionNumber) is not desired. Typically, in a Non-Storing mode of operation, all non-root nodes would increment their DTSN only when their parent(s) are observed to do so.
在非存储操作模式下,DTSN增量还将导致节点的直接子节点依次递增其DTSN,从而触发来自整个子DODAG的一组DAO更新。通常,在非存储操作模式下,当需要DAO刷新但不需要全局修复(例如通过增加DODAGVersionNumber)时,只有根用户会独立地增加DTSN。通常,在非存储操作模式下,所有非根节点仅在观察到其父节点增加DTSN时才会增加DTSN。
In general, a node may trigger DAO updates according to implementation-specific logic, such as based on the detection of a Downward route inconsistency or occasionally based upon an internal timer.
通常,节点可以根据特定于实现的逻辑触发DAO更新,例如基于向下路由不一致的检测,或者偶尔基于内部计时器。
In a storing network, selecting a proper DelayDAO for triggered DAOs can greatly reduce the number of DAOs transmitted. The trigger flows Down the DODAG; in the best case, the DAOs flow Up the DODAG such that leaves send DAOs first, with each node sending a DAO message only once. Such a scheduling could be approximated by setting DelayDAO inversely proportional to Rank. Note that this suggestion is intended as an optimization to allow efficient aggregation (it is not required for correct operation in the general case).
在存储网络中,为触发的DAO选择适当的延迟DAO可以大大减少传输的DAO数量。触发器沿DODAG向下流动;在最好的情况下,DAO沿着DODAG向上流动,这样离开时首先发送DAO,每个节点只发送一次DAO消息。这种调度可以通过将DelayDAO设置为与秩成反比来近似实现。请注意,此建议旨在优化以实现高效聚合(在一般情况下,正确操作不需要此建议)。
In Non-Storing mode, RPL routes messages Downward using IP source routing. The following rule applies to nodes that are in Non-Storing mode. Storing mode has a separate set of rules, described in Section 9.8.
在非存储模式下,RPL使用IP源路由向下路由消息。以下规则适用于处于非存储模式的节点。存储模式有一套单独的规则,如第9.8节所述。
1. The DODAG Parent Address subfield of a Transit Information option MUST contain one or more addresses. All of these addresses MUST be addresses of DAO parents of the sender.
1. 运输信息选项的DODAG父地址子字段必须包含一个或多个地址。所有这些地址都必须是发送方DAO父级的地址。
2. DAOs are sent directly to the root along a default route installed as part of the parent selection.
2. DAO沿着作为父选择的一部分安装的默认路由直接发送到根目录。
3. When a node removes a node from its DAO parent set, it MAY generate a new DAO message with an updated Transit Information option.
3. 当一个节点从其DAO父集合中删除一个节点时,它可能会生成一个带有更新的传输信息选项的新DAO消息。
In Non-Storing mode, a node uses DAOs to report its DAO parents to the DODAG root. The DODAG root can piece together a Downward route to a node by using DAO parent sets from each node in the route. The Path Sequence information may be used to detect stale DAO information. The purpose of this per-hop route calculation is to minimize traffic when DAO parents change. If nodes reported complete source routes, then on a DAO parent change, the entire sub-DODAG would have to send new DAOs to the DODAG root. Therefore, in Non-Storing mode, a node can send a single DAO, although it might choose to send more than one DAO message to each of multiple DAO parents.
在非存储模式下,节点使用DAO将其DAO父节点报告给DODAG根节点。通过使用路由中每个节点的DAO父集合,DODAG根可以将向下路由拼凑到一个节点。路径序列信息可用于检测过时的DAO信息。此每跳路由计算的目的是在DAO父级更改时最小化流量。如果节点报告了完整的源路由,那么在DAO父级更改时,整个子DODAG必须向DODAG根发送新的DAO。因此,在非存储模式下,节点可以发送单个DAO,尽管它可能选择向多个DAO父节点中的每一个发送多个DAO消息。
Nodes pack DAOs by sending a single DAO message with multiple RPL Target options. Each RPL Target option has its own, immediately following, Transit Information options.
节点通过发送带有多个RPL目标选项的单个DAO消息来打包DAO。每个RPL目标选项都有自己的紧跟其后的运输信息选项。
In Storing mode, RPL routes messages Downward by the IPv6 destination address. The following rules apply to nodes that are in Storing mode:
在存储模式下,RPL按IPv6目标地址向下路由消息。以下规则适用于处于存储模式的节点:
1. The DODAG Parent Address subfield of a Transmit Information option MUST be empty.
1. 传输信息选项的DODAG父地址子字段必须为空。
2. On receiving a unicast DAO, a node MUST compute if the DAO would change the set of prefixes that the node itself advertises. This computation SHOULD include consultation of the Path Sequence information in the Transit Information options associated with the DAO, to determine if the DAO message contains newer information that supersedes the information already stored at the node. If so, the node MUST generate a new DAO message and transmit it, following the rules in Section 9.5. Such a change includes receiving a No-Path DAO.
2. 在接收到单播DAO时,节点必须计算DAO是否会更改节点本身播发的前缀集。此计算应包括与DAO相关联的传输信息选项中的路径序列信息的咨询,以确定DAO消息是否包含取代节点上已存储信息的更新信息。如果是这样,节点必须生成一个新的DAO消息并按照第9.5节中的规则进行传输。这种更改包括接收无路径DAO。
3. When a node generates a new DAO, it SHOULD unicast it to each of its DAO parents. It MUST NOT unicast the DAO message to nodes that are not DAO parents.
3. 当一个节点生成一个新的DAO时,它应该单播给它的每个DAO父节点。它不能将DAO消息单播到非DAO父节点。
4. When a node removes a node from its DAO parent set, it SHOULD send a No-Path DAO message (Section 6.4.3) to that removed DAO parent to invalidate the existing route.
4. 当一个节点从其DAO父节点集中删除一个节点时,它应该向该删除的DAO父节点发送一条无路径DAO消息(第6.4.3节),以使现有路由无效。
5. If messages to an advertised Downward address suffer from a forwarding error, Neighbor Unreachable Detection (NUD), or similar failure, a node MAY mark the address as unreachable and generate an appropriate No-Path DAO.
5. 如果发送到播发下行地址的消息遇到转发错误、邻居不可到达检测(NUD)或类似故障,则节点可将该地址标记为不可到达,并生成适当的No Path DAO。
DAOs advertise to which destination addresses and prefixes a node has routes. Unlike in Non-Storing mode, these DAOs do not communicate information about the routes themselves: that information is stored within the network and is implicit from the IPv6 source address. When a storing node generates a DAO, it uses the stored state of DAOs it has received to produce a set of RPL Target options and their associated Transmit Information options.
DAO公布节点路由到的目标地址和前缀。与非存储模式不同,这些DAO不传递有关路由本身的信息:这些信息存储在网络中,并且来自IPv6源地址。当存储节点生成DAO时,它使用它接收到的DAO的存储状态来生成一组RPL目标选项及其关联的传输信息选项。
Because this information is stored within each node's routing tables, in Storing mode, DAOs are communicated directly to DAO parents, who store this information.
由于此信息存储在每个节点的路由表中,因此在存储模式下,DAO直接与存储此信息的DAO父级通信。
A DAO message from a node contains one or more Target options. Each Target option specifies either a prefix advertised by the node, a prefix of addresses reachable outside the LLN, the address of a destination in the node's sub-DODAG, or a multicast group to which a node in the sub-DODAG is listening. The Path Control field of the Transit Information option allows nodes to request or allow for multiple Downward routes. A node constructs the Path Control field of a Transit Information option as follows:
来自节点的DAO消息包含一个或多个目标选项。每个目标选项指定由节点播发的前缀、可在LLN外部访问的地址前缀、节点的子DODAG中的目的地地址或子DODAG中的节点正在侦听的多播组。公交信息选项的路径控制字段允许节点请求或允许多条下行路线。节点构造公交信息选项的路径控制字段,如下所示:
1. The bit width of the Path Control field MUST be equal to the value (PCS + 1), where PCS is specified in the control field of the DODAG Configuration option. Bits greater than or equal to the value (PCS + 1) MUST be cleared on transmission and MUST be ignored on reception. Bits below that value are considered "active" bits.
1. 路径控制字段的位宽度必须等于值(PCS+1),其中PCS在DODAG配置选项的控制字段中指定。大于或等于值(PCS+1)的位在传输时必须清除,在接收时必须忽略。低于该值的位被视为“活动”位。
2. The node MUST logically construct groupings of its DAO parents while populating the Path Control field, where each group consists of DAO parents of equal preference. Those groups MUST then be ordered according to preference, which allows for a logical mapping of DAO parents onto Path Control subfields (see Figure 27). Groups MAY be repeated in order to extend over the entire bit width of the patch control field, but the order, including repeated groups, MUST be retained so that preference is properly communicated.
2. 在填充路径控制字段时,节点必须在逻辑上构造其DAO父节点的分组,其中每个组由具有相同优先权的DAO父节点组成。然后必须根据首选项对这些组进行排序,这允许DAO父级到路径控制子字段的逻辑映射(参见图27)。组可以重复,以便扩展到贴片控制字段的整个位宽度,但必须保留顺序,包括重复组,以便正确传达偏好。
3. For a RPL Target option describing a node's own address or a prefix outside the LLN, at least one active bit of the Path Control field MUST be set. More active bits of the Path Control field MAY be set.
3. 对于描述节点自身地址或LLN外部前缀的RPL目标选项,必须至少设置路径控制字段的一个活动位。可以设置路径控制字段的更多活动位。
4. If a node receives multiple DAOs with the same RPL Target option, it MUST bitwise-OR the Path Control fields it receives. This aggregated bitwise-OR represents the number of Downward routes the prefix requests.
4. 如果节点接收到具有相同RPL目标选项的多个DAO,则它必须按位或接收到的路径控制字段。此按位聚合的OR表示前缀请求的下行路由数。
5. When a node sends a DAO message to one of its DAO parents, it MUST select one or more of the bits that are set active in the subfield that is mapped to the group containing that DAO parent from the aggregated Path Control field. A given bit can only be presented as active to one parent. The DAO message it transmits to its parent MUST have these active bits set and all other active bits cleared.
5. 当节点向其一个DAO父节点发送DAO消息时,它必须从聚合路径控制字段中选择在映射到包含该DAO父节点的组的子字段中设置为活动的一个或多个位。给定位只能作为活动位呈现给一个父级。它发送给其父级的DAO消息必须设置这些活动位,并清除所有其他活动位。
6. For the RPL Target option and DAOSequence number, the DAOs a node sends to different DAO parents MUST have disjoint sets of active Path Control bits. A node MUST NOT set the same active bit on DAOs to two different DAO parents.
6. 对于RPL目标选项和DAO序列号,节点发送到不同DAO父级的DAO必须具有不相交的活动路径控制位集。节点不能将DAO上的同一活动位设置为两个不同的DAO父级。
7. Path Control bits SHOULD be allocated according to the preference mapping of DAO parents onto Path Control subfields, such that the active Path Control bits, or groupings of bits, that belong to a particular Path Control subfield are allocated to DAO parents within the group that was mapped to that subfield.
7. 应根据DAO父级到路径控制子字段的首选映射来分配路径控制位,以便将属于特定路径控制子字段的活动路径控制位或位组分配给映射到该子字段的组内的DAO父级。
8. In a Non-Storing mode of operation, a node MAY pass DAOs through without performing any further processing on the Path Control field.
8. 在非存储操作模式下,节点可以通过DAO,而无需对路径控制字段执行任何进一步的处理。
9. A node MUST NOT unicast a DAO message that has no active bits in the Path Control field set. It is possible that, for a given Target option, a node does not have enough aggregate Path Control bits to send a DAO message containing that Target to each of its DAO parents, in which case those least preferred DAO Parents may not get a DAO message for that Target.
9. 节点不得单播路径控制字段集中没有活动位的DAO消息。对于给定的目标选项,节点可能没有足够的聚合路径控制位来将包含该目标的DAO消息发送到其每个DAO父级,在这种情况下,那些最不首选的DAO父级可能无法获得该目标的DAO消息。
The Path Control field allows a node to bound how many Downward routes will be generated to it. It sets a number of bits in the Path Control field equal to the maximum number of Downward routes it prefers. At most, each bit is sent to one DAO parent; clusters of bits can be sent to a single DAO parent for it to divide among its own DAO parents.
“路径控制”字段允许节点限制将向其生成多少条向下路由。它将路径控制字段中的位数设置为其首选的最大下行路由数。最多,每个位被发送到一个DAO父级;位簇可以发送到单个DAO父级,以便它在自己的DAO父级之间进行划分。
A node that provisions a DAO route for a Target that has an associated Path Control field SHOULD use the content of that Path Control field in order to determine an order of preference among multiple alternative DAO routes for that Target. The Path Control field assignment is derived from preference (of the DAO parents), as determined on the basis of this node's best knowledge of the "end-to-
为具有关联路径控制字段的目标提供DAO路由的节点应使用该路径控制字段的内容,以便确定该目标的多个可选DAO路由之间的优先顺序。路径控制字段分配源自(DAO父节点的)首选项,这是根据该节点对“端到端”的最佳了解确定的-
end" aggregated metrics in the Downward direction as per the Objective Function. In Non-Storing mode the root can determine the Downward route by aggregating the information from each received DAO, which includes the Path Control indications of preferred DAO parents.
end“根据目标函数向下聚合度量。在非存储模式下,根用户可以通过聚合来自每个接收到的DAO的信息来确定向下路由,其中包括首选DAO父级的路径控制指示。
Suppose that there is an LLN operating in Storing mode that contains a Node N with four parents, P1, P2, P3, and P4. Let N have three children, C1, C2, and C3 in its sub-DODAG. Let PCS be 7, such that there will be 8 active bits in the Path Control field: 11111111b. Consider the following example:
假设存在以存储模式运行的LLN,该LLN包含具有四个父节点P1、P2、P3和P4的节点N。让N在其子DODAG中有三个子元素C1、C2和C3。设PCS为7,以便路径控制字段中有8个活动位:11111111b。考虑下面的例子:
The Path Control field is split into four subfields, PC1 (11000000b), PC2 (00110000b), PC3 (00001100b), and PC4 (00000011b), such that those four subfields represent four different levels of preference per Figure 27. The implementation at Node N, in this example, groups {P1, P2} to be of equal preference to each other and the most preferred group overall. {P3} is less preferred to {P1, P2}, and more preferred to {P4}. Let Node N then perform its Path Control mapping such that:
路径控制字段分为四个子字段,即PC1(11000000b)、PC2(00110000b)、PC3(000011100b)和PC4(00000011b),因此这四个子字段表示图27所示的四种不同的偏好级别。在本例中,节点N处的实现使得组{P1,P2}彼此具有相同的优先权,并且总体上是最优先的组。{P3}不如{P1,P2}好,而比{P4}好。然后让节点N执行其路径控制映射,以便:
{P1, P2} -> PC1 (11000000b) in the Path Control field {P3} -> PC2 (00110000b) in the Path Control field {P4} -> PC3 (00001100b) in the Path Control field {P4} -> PC4 (00000011b) in the Path Control field
{P1, P2} -> PC1 (11000000b) in the Path Control field {P3} -> PC2 (00110000b) in the Path Control field {P4} -> PC3 (00001100b) in the Path Control field {P4} -> PC4 (00000011b) in the Path Control field
Note that the implementation repeated {P4} in order to get complete coverage of the Path Control field.
注意,实现重复了{P4}以获得路径控制字段的完全覆盖。
1. Let C1 send a DAO containing a Target T with a Path Control 10000000b. Node N stores an entry associating 10000000b with the Path Control field for C1 and Target T.
1. 让C1发送一个包含目标T的DAO,目标T具有路径控制10000000b。节点N存储一个将1000000b与C1和目标T的路径控制字段关联的条目。
2. Let C2 send a DAO containing a Target T with a Path Control 00010000b. Node N stores an entry associating 00010000b with the Path Control field for C1 and Target T.
2. 让C2发送一个包含目标T的DAO,目标T具有路径控制000100000B。节点N存储将000100000b与C1和目标T的路径控制字段关联的条目。
3. Let C3 send a DAO containing a Target T with a Path Control 00001100b. Node N stores an entry associating 00001100b with the Path Control field for C1 and Target T.
3. 让C3发送一个包含目标T的DAO,路径控制为000011100B。节点N存储将000011100b与C1和目标T的路径控制字段关联的条目。
4. At some later time, Node N generates a DAO for Target T. Node N will construct an aggregate Path Control field by ORing together the contribution from each of its children that have given a DAO for Target T. Thus, the aggregate Path Control field has the active bits set as: 10011100b.
4. 稍后,节点N会为目标T生成一个DAO。节点N将通过ORing将其每个为目标T提供DAO的子节点的贡献合并在一起来构造聚合路径控制字段。因此,聚合路径控制字段的活动位设置为:10011100b。
5. Node N then distributes the aggregate Path Control bits among its parents P1, P2, P3, and P4 in order to prepare the DAO messages.
5. 节点N然后在其父节点P1、P2、P3和P4之间分配聚合路径控制位,以便准备DAO消息。
6. P1 and P2 are eligible to receive active bits from the most preferred subfield (11000000b). Those bits are 10000000b in the aggregate Path Control field. Node N must set the bit to one of the two parents only. In this case, Node P1 is allocated the bit and gets the Path Control field 10000000b for its DAO. There are no bits left to allocate to Node P2; thus, Node P2 would have a Path Control field of 00000000b and a DAO cannot be generated to Node P2 since there are no active bits.
6. P1和P2有资格从最优先子字段(11000000b)接收活动位。这些位在聚合路径控制字段中为10000000b。节点N必须仅将位设置为两个父节点之一。在这种情况下,节点P1被分配该位,并为其DAO获取路径控制字段10000000b。没有剩余的比特分配给节点P2;因此,节点P2将具有00000000b的路径控制字段,并且由于没有活动位,因此无法向节点P2生成DAO。
7. The second-most preferred subfield (00110000b) has the active bits 00010000b. Node N has mapped P3 to this subfield. Node N may allocates the active bit to P3, constructing a DAO for P3 containing Target T with a Path Control of 00010000b.
7. 第二首选子字段(00110000b)具有活动位000100000B。节点N已将P3映射到此子字段。节点N可以将活动比特分配给P3,为P3构造包含路径控制为000100000b的目标T的DAO。
8. The third-most preferred subfield (00001100b) has the active bits 00001100b. Node N has mapped P4 to this subfield. Node N may allocate both bits to P4, constructing a DAO for P4 containing Target T with a Path Control of 00001100b.
8. 第三个最优选子字段(000011100b)具有活动比特000011100b。节点N已将P4映射到此子字段。节点N可以将这两个比特分配给P4,为包含路径控制为00001100b的目标T的P4构造DAO。
9. The least preferred subfield (00000011b) has no active bits. Had there been active bits, those bits would have been added to the Path Control field of the DAO constructed for P4.
9. 最小首选子字段(00000011b)没有活动位。如果存在活动位,这些位将被添加到为P4构建的DAO的路径控制字段中。
10. The process of populating the DAO messages destined for P1, P2, P3, P4 with other targets (other than T) proceeds according to the aggregate Path Control fields collected for those targets.
10. 根据为那些目标收集的聚合路径控制字段,用其他目标(T除外)填充目的地为P1、P2、P3、P4的DAO消息的过程继续进行。
A special case of DAO operation, distinct from unicast DAO operation, is multicast DAO operation that may be used to populate '1-hop' routing table entries.
与单播DAO操作不同,DAO操作的一个特例是多播DAO操作,可用于填充“1-hop”路由表条目。
1. A node MAY multicast a DAO message to the link-local scope all-RPL-nodes multicast address.
1. 节点可以将DAO消息多播到链路本地作用域所有RPL节点多播地址。
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.
2. 多播DAO消息必须仅用于公布有关节点本身的信息,即直接连接到节点或由节点拥有的前缀,例如该节点订阅的多播组或该节点拥有的全局地址。
3. A multicast DAO message MUST NOT be used to relay connectivity information learned (e.g., through unicast DAO) from another node.
3. 多播DAO消息不得用于中继从另一个节点获取的连接信息(例如,通过单播DAO)。
4. A node MUST NOT perform any other DAO-related processing on a received multicast DAO message; in particular, a node MUST NOT perform the actions of a DAO parent upon receipt of a multicast DAO.
4. 节点不得对接收到的多播DAO消息执行任何其他与DAO相关的处理;特别是,节点在收到多播DAO时不能执行DAO父节点的操作。
o The multicast DAO may be used to enable direct P2P communication, without needing the DODAG to relay the packets.
o 多播DAO可用于启用直接P2P通信,而不需要DODAG来中继分组。
This section describes the generation and processing of secure RPL messages. The high-order bit of the RPL message code identifies whether or not a RPL message is secure. In addition to secure versions of basic control messages (DIS, DIO, DAO, DAO-ACK), RPL has several messages that are relevant only in networks that are security enabled.
本节介绍安全RPL消息的生成和处理。RPL消息代码的高位标识RPL消息是否安全。除了基本控制消息(DIS、DIO、DAO、DAO-ACK)的安全版本外,RPL还有几个消息,这些消息仅与启用安全性的网络相关。
Implementation complexity and size is a core concern for LLNs such that it may be economically or physically impossible to include sophisticated security provisions in a RPL implementation. Furthermore, many deployments can utilize link-layer or other security mechanisms to meet their security requirements without requiring the use of security in RPL.
实现的复杂性和规模是LLN的核心问题,因此在RPL实现中包含复杂的安全规定在经济上或物理上都是不可能的。此外,许多部署可以利用链路层或其他安全机制来满足其安全需求,而无需在RPL中使用安全性。
Therefore, the security features described in this document are OPTIONAL to implement. A given implementation MAY support a subset (including the empty set) of the described security features, for example, it could support integrity and confidentiality, but not signatures. An implementation SHOULD clearly specify which security mechanisms are supported, and it is RECOMMENDED that implementers carefully consider security requirements and the availability of security mechanisms in their network.
因此,本文档中描述的安全功能是可选的。给定的实现可以支持所描述的安全特性的子集(包括空集),例如,它可以支持完整性和机密性,但不支持签名。一个实现应该清楚地指定支持哪些安全机制,并且建议实施者仔细考虑安全需求和它们的网络中安全机制的可用性。
RPL supports three security modes:
RPL支持三种安全模式:
o Unsecured. In this security mode, RPL uses basic DIS, DIO, DAO, and DAO-ACK messages, which do not have Security sections. As a network could be using other security mechanisms, such as link-layer security, unsecured mode does not imply all messages are sent without any protection.
o 无担保的。在这种安全模式下,RPL使用基本的DIS、DIO、DAO和DAO-ACK消息,这些消息没有安全部分。由于网络可能使用其他安全机制,如链路层安全,因此不安全模式并不意味着所有消息都在没有任何保护的情况下发送。
o Preinstalled. In this security mode, RPL uses secure messages. To join a RPL Instance, a node must have a preinstalled key. Nodes use this to provide message confidentiality, integrity, and authenticity. A node may, using this preinstalled key, join the RPL network as either a host or a router.
o 预装的。在此安全模式下,RPL使用安全消息。要加入RPL实例,节点必须具有预安装的密钥。节点使用它来提供消息的机密性、完整性和真实性。节点可以使用此预安装的密钥作为主机或路由器加入RPL网络。
o Authenticated. In this security mode, RPL uses secure messages. To join a RPL Instance, a node must have a preinstalled key. Nodes use this key to provide message confidentiality, integrity, and authenticity. Using this preinstalled key, a node may join the network as a host only. To join the network as a router, a node must obtain a second key from a key authority. This key authority can authenticate that the requester is allowed to be a router before providing it with the second key. Authenticated mode cannot be supported by symmetric algorithms. As of the writing of this specification, RPL supports only symmetric algorithms: authenticated mode is included for the benefit of potential future cryptographic primitives. See Section 10.3.
o 认证的。在此安全模式下,RPL使用安全消息。要加入RPL实例,节点必须具有预安装的密钥。节点使用此密钥提供消息机密性、完整性和真实性。使用此预安装的密钥,节点只能作为主机加入网络。要作为路由器加入网络,节点必须从密钥颁发机构获得第二个密钥。在向请求者提供第二个密钥之前,该密钥颁发机构可以验证请求者是否被允许是路由器。对称算法不支持身份验证模式。在编写本规范时,RPL仅支持对称算法:为了将来潜在的加密原语的利益,包含了身份验证模式。见第10.3节。
Whether or not the RPL Instance uses unsecured mode is signaled by whether it uses secure RPL messages. Whether a secured network uses the preinstalled or authenticated mode is signaled by the 'A' bit of the DAG Configuration option.
RPL实例是否使用非安全模式由其是否使用安全RPL消息来表示。安全网络是否使用预安装或认证模式由DAG配置选项的“a”位发出信号。
This specification specifies CCM -- Counter with CBC-MAC (Cipher Block Chaining - Message Authentication Code) -- as the cryptographic basis for RPL security [RFC3610]. In this specification, CCM uses AES-128 as its underlying cryptographic algorithm. There are bits reserved in the Security section to specify other algorithms in the future.
本规范指定CCM(带有CBC-MAC(密码块链接-消息身份验证码)的计数器)作为RPL安全的密码基础[RFC3610]。在本规范中,CCM使用AES-128作为其底层加密算法。安全部分中保留了一些位,用于将来指定其他算法。
All secured RPL messages have either a MAC or a signature. Optionally, secured RPL messages also have encryption protection for confidentiality. Secured RPL message formats support both integrated encryption/authentication schemes (e.g., CCM) as well as schemes that separately encrypt and authenticate packets.
所有受保护的RPL消息都有MAC或签名。或者,安全RPL消息还具有保密性加密保护。安全RPL消息格式既支持集成的加密/身份验证方案(如CCM),也支持单独加密和身份验证数据包的方案。
RPL security assumes that a node wishing to join a secured network has been pre-configured with a shared key for communicating with neighbors and the RPL root. To join a secure RPL network, a node either listens for secure DIOs or triggers secure DIOs by sending a secure DIS. In addition to the DIO/DIS rules in Section 8, secure DIO and DIS messages have these rules:
RPL安全性假设希望加入安全网络的节点已预先配置了用于与邻居和RPL根进行通信的共享密钥。要加入安全RPL网络,节点要么侦听安全DIOs,要么通过发送安全DIS来触发安全DIOs。除了第8节中的DIO/DIS规则外,安全DIO和DIS消息还有以下规则:
1. If sent, this initial secure DIS MUST set the Key Identifier Mode field to 0 (00) and MUST set the Security Level field to 1 (001). The key used MUST be the pre-configured group key (Key Index 0x00).
1. 如果发送,此初始安全DIS必须将密钥标识符模式字段设置为0(00),并且必须将安全级别字段设置为1(001)。使用的密钥必须是预配置的组密钥(密钥索引0x00)。
2. When a node resets its Trickle timer in response to a secure DIS (Section 8.3), the next DIO it transmits MUST be a secure DIO with the same security configuration as the secure DIS. If a
2. 当节点响应安全DIS(第8.3节)重置其涓流计时器时,其传输的下一个DIO必须是与安全DIS具有相同安全配置的安全DIO。如果
node receives multiple secure DIS messages before it transmits a DIO, the secure DIO MUST have the same security configuration as the last DIS to which it is responding.
节点在发送DIO之前接收多个安全DIS消息,安全DIO必须具有与其响应的最后一个DIS相同的安全配置。
3. When a node sends a DIO in response to a unicast secure DIS (Section 8.3), the DIO MUST be a secure DIO.
3. 当节点发送DIO以响应单播安全DIS(第8.3节)时,DIO必须是安全DIO。
The above rules allow a node to join a secured RPL Instance using the pre-configured shared key. Once a node has joined the DODAG using the pre-configured shared key, the 'A' bit of the Configuration option determines its capabilities. If the 'A' bit of the Configuration option is cleared, then nodes can use this preinstalled, shared key to exchange messages normally: it can issue DIOs, DAOs, etc.
上述规则允许节点使用预先配置的共享密钥加入受保护的RPL实例。一旦节点使用预配置的共享密钥加入DODAG,配置选项的“a”位将确定其功能。如果清除了配置选项的“A”位,则节点可以使用此预安装的共享密钥正常交换消息:它可以发出DIOs、DAOs等。
If the 'A' bit of the Configuration option is set and the RPL Instance is operating in authenticated mode:
如果设置了配置选项的“A”位,并且RPL实例正在验证模式下运行:
1. A node MUST NOT advertise a Rank besides INFINITE_RANK in secure DIOs secured with Key Index 0x00. When processing DIO messages secured with Key Index 0x00, a processing node MUST consider the advertised Rank to be INFINITE_RANK. Any other value results in the message being discarded.
1. 在密钥索引0x00保护的安全DIOs中,节点不得公布除无限_秩之外的秩。当处理带有密钥索引0x00的DIO消息时,处理节点必须考虑公告的秩为无穷小秩。任何其他值都会导致消息被丢弃。
2. Secure DAOs using a Key Index 0x00 MUST NOT have a RPL Target option with a prefix besides the node's address. If a node receives a secured DAO message using the preinstalled, shared key where the RPL Target option does not match the IPv6 source address, it MUST discard the secured DAO message without further processing.
2. 使用密钥索引0x00的安全DAO不得具有除节点地址外带有前缀的RPL目标选项。如果节点使用预安装的共享密钥接收到安全DAO消息,而RPL目标选项与IPv6源地址不匹配,则必须放弃安全DAO消息,而无需进一步处理。
The above rules mean that in RPL Instances where the 'A' bit is set, using Key Index 0x00, a node can join the RPL Instance as a host but not a router. A node must communicate with a key authority to obtain a key that will enable it to act as a router.
上述规则意味着,在设置了“A”位的RPL实例中,使用密钥索引0x00,节点可以作为主机而不是路由器加入RPL实例。节点必须与密钥颁发机构通信,以获得使其能够充当路由器的密钥。
Authenticated mode requires a would-be router to dynamically install new keys once they have joined a network as a host. Having joined as a host, the node uses standard IP messaging to communicate with an authorization server, which can provide new keys.
身份验证模式要求一个潜在的路由器在其作为主机加入网络后动态安装新密钥。作为主机加入后,节点使用标准IP消息与授权服务器通信,授权服务器可以提供新密钥。
The protocol to obtain such keys is out of scope for this specification and to be elaborated in future specifications. That elaboration is required for RPL to securely operate in authenticated mode.
获取此类密钥的协议超出本规范的范围,将在未来的规范中详细说明。为了使RPL在认证模式下安全地运行,需要进行这种细化。
RPL nodes send Consistency Check (CC) messages to protect against replay attacks and synchronize counters.
RPL节点发送一致性检查(CC)消息以防止重播攻击并同步计数器。
1. If a node receives a unicast CC message with the 'R' bit cleared, and it is a member of or is in the process of joining the associated DODAG, it SHOULD respond with a unicast CC message to the sender. This response MUST have the 'R' bit set, and it MUST have the same CC nonce, RPLInstanceID, and DODAGID fields as the message it received.
1. 如果节点接收到清除“R”位的单播CC消息,并且它是相关DODAG的成员或正在加入相关DODAG,则它应向发送方发送单播CC消息。此响应必须设置“R”位,并且必须具有与其接收的消息相同的CC nonce、RPLInstanceID和DODAGID字段。
2. If a node receives a multicast CC message, it MUST discard the message with no further processing.
2. 如果节点接收到多播CC消息,则必须丢弃该消息,而无需进一步处理。
Consistency Check messages allow nodes to issue a challenge-response to validate a node's current counter value. Because the CC nonce is generated by the challenger, an adversary replaying messages is unlikely to be able to generate a correct response. The counter in the Consistency Check response allows the challenger to validate the counter values it hears.
一致性检查消息允许节点发出质询响应以验证节点的当前计数器值。由于CC nonce是由挑战者生成的,因此重播消息的对手不太可能生成正确的响应。一致性检查响应中的计数器允许挑战者验证其听到的计数器值。
In the simplest case, the counter value is an unsigned integer that a node increments by one or more on each secured RPL transmission. The counter MAY represent a timestamp that has the following properties:
在最简单的情况下,计数器值是一个无符号整数,节点在每个安全RPL传输上递增一个或多个。计数器可以表示具有以下属性的时间戳:
1. The timestamp MUST be at least six octets long.
1. 时间戳必须至少有六个八位字节长。
2. The timestamp MUST be in 1024 Hz (binary millisecond) granularity.
2. 时间戳的粒度必须为1024 Hz(二进制毫秒)。
3. The timestamp start time MUST be January 1, 1970, 12:00:00AM UTC.
3. 时间戳开始时间必须为1970年1月1日12:00:00AM UTC。
4. If the counter represents a timestamp, the counter value MUST be a value computed as follows. Let T be the timestamp, S be the start time of the key in use, and E be the end time of the key in use. Both S and E are represented using the same three rules as the timestamp described above. If E > T < S, then the counter is invalid and a node MUST NOT generate a packet. Otherwise, the counter value is equal to T-S.
4. 如果计数器表示时间戳,则计数器值必须是按以下方式计算的值。设T为时间戳,S为使用中密钥的开始时间,E为使用中密钥的结束时间。S和E都使用与上述时间戳相同的三个规则来表示。如果E>T<S,则计数器无效,节点不得生成数据包。否则,计数器值等于T-S。
5. If the counter represents such a timestamp, a node MAY set the 'T' flag of the Security section of secured RPL packets.
5. 如果计数器表示这样的时间戳,则节点可以设置安全RPL分组的安全部分的“T”标志。
6. If the Counter field does not present such a timestamp, then a node MUST NOT set the 'T' flag.
6. 如果计数器字段不显示这样的时间戳,则节点不得设置“T”标志。
7. If a node does not have a local timestamp that satisfies the above requirements, it MUST ignore the 'T' flag.
7. 如果节点没有满足上述要求的本地时间戳,则必须忽略“T”标志。
If a node supports such timestamps and it receives a message with the 'T' flag set, it MAY apply the temporal check on the received message described in Section 10.7.1. If a node receives a message without the 'T' flag set, it MUST NOT apply this temporal check. A node's security policy MAY, for application reasons, include rejecting all messages without the 'T' flag set.
如果节点支持此类时间戳,并且接收到设置了“T”标志的消息,则可以对第10.7.1节中描述的接收到的消息应用时间检查。如果节点接收到未设置“T”标志的消息,则不得应用此临时检查。出于应用程序的原因,节点的安全策略可能包括拒绝所有未设置“T”标志的消息。
The 'T' flag is present because many LLNs today already maintain global time synchronization at sub-millisecond granularity for security, application, and other reasons. Allowing RPL to leverage this existing functionality when present greatly simplifies solutions to some security problems, such as delay protection.
之所以出现“T”标志,是因为出于安全、应用和其他原因,今天许多LLN已经将全局时间同步保持在亚毫秒的粒度。允许RPL在存在时利用此现有功能大大简化了一些安全问题的解决方案,如延迟保护。
Given an outgoing RPL control packet and the required security protection, this section describes how RPL generates the secured packet to transmit. It also describes the order of cryptographic operations to provide the required protection.
给定传出RPL控制数据包和所需的安全保护,本节描述RPL如何生成要传输的安全数据包。它还描述了提供所需保护的加密操作顺序。
The requirement for security protection and the level of security to be applied to an outgoing RPL packet shall be determined by the node's security policy database. The configuration of this security policy database for outgoing packet processing is implementation specific.
安全保护要求和应用于传出RPL数据包的安全级别应由节点的安全策略数据库确定。用于传出数据包处理的此安全策略数据库的配置是特定于实现的。
Where secured RPL messages are to be transmitted, a RPL node MUST set the Security section (T, Sec, KIM, and LVL) in the outgoing RPL packet to describe the protection level and security settings that are applied (see Section 6.1). The Security subfield bit of the RPL Message Code field MUST be set to indicate the secure RPL message.
如果要传输安全RPL消息,RPL节点必须在传出RPL数据包中设置安全部分(T、Sec、KIM和LVL),以描述应用的保护级别和安全设置(见第6.1节)。RPL消息代码字段的安全子字段位必须设置为指示安全RPL消息。
The counter value used in constructing the AES-128 CCM nonce (Figure 31) to secure the outgoing packet MUST be an increment of the last counter transmitted to the particular destination address.
用于构造AES-128 CCM nonce(图31)以保护传出数据包的计数器值必须是传输到特定目的地地址的最后一个计数器的增量。
Where security policy specifies the application of delay protection, the Timestamp counter used in constructing the CCM nonce to secure the outgoing packet MUST be incremented according to the rules in Section 10.5. Where a Timestamp counter is applied (indicated with the 'T' flag set), the locally maintained Timestamp counter MUST be included as part of the transmitted secured RPL message.
如果安全策略指定延迟保护的应用,则必须根据第10.5节中的规则增加用于构造CCM nonce以保护传出数据包的时间戳计数器。如果应用了时间戳计数器(用“T”标志集表示),则本地维护的时间戳计数器必须作为传输的安全RPL消息的一部分包括在内。
The cryptographic algorithm used in securing the outgoing packet shall be specified by the node's security policy database and MUST be indicated in the value of the Sec field set within the outgoing message.
用于保护传出数据包的加密算法应由节点的安全策略数据库指定,并且必须在传出消息中设置的Sec字段值中指示。
The security policy for the outgoing packet shall determine the applicable KIM and Key Identifier specifying the security key to be used for the cryptographic packet processing, including the optional use of signature keys (see Section 6.1). The security policy will also specify the algorithm (Algorithm) and level of protection (Level) in the form of authentication or authentication and encryption, and potential use of signatures that shall apply to the outgoing packet.
传出数据包的安全策略应确定适用的KIM和密钥标识符,指定用于加密数据包处理的安全密钥,包括签名密钥的可选使用(见第6.1节)。安全策略还将以身份验证或身份验证和加密的形式规定算法(算法)和保护级别(级别),以及适用于传出数据包的签名的潜在用途。
Where encryption is applied, a node MUST replace the original packet payload with that payload encrypted using the security protection, key, and CCM nonce specified in the Security section of the packet.
在应用加密的情况下,节点必须将原始数据包有效载荷替换为使用数据包安全部分中指定的安全保护、密钥和CCM nonce加密的有效载荷。
All secured RPL messages include integrity protection. In conjunction with the security algorithm processing, a node derives either a MAC or signature that MUST be included as part of the outgoing secured RPL packet.
所有受保护的RPL消息都包括完整性保护。结合安全算法处理,节点派生MAC或签名,该MAC或签名必须作为传出安全RPL数据包的一部分包含。
This section describes the reception and processing of a secured RPL packet. Given an incoming secured RPL packet, where the Security subfield bit of the RPL Message Code field is set, this section describes how RPL generates an unencrypted variant of the packet and validates its integrity.
本节描述安全RPL数据包的接收和处理。给定传入的安全RPL数据包,其中设置了RPL消息代码字段的安全子字段位,本节描述RPL如何生成数据包的未加密变体并验证其完整性。
The receiver uses the RPL security control fields to determine the necessary packet security processing. If the described level of security for the message type and originator is unknown or does not meet locally maintained security policies, a node MUST discard the packet without further processing, MAY raise a management alert, and MUST NOT send any messages in response. These policies can include security levels, keys used, source identifiers, or the lack of timestamp-based counters (as indicated by the 'T' flag). The configuration of the security policy database for incoming packet processing is out of scope for this specification (it may, for example, be defined through DIO Configuration or through out-of-band administrative router configuration).
接收器使用RPL安全控制字段来确定必要的数据包安全处理。如果消息类型和发起者的所述安全级别未知或不符合本地维护的安全策略,则节点必须丢弃数据包而无需进一步处理,可以发出管理警报,并且不得发送任何消息作为响应。这些策略可以包括安全级别、使用的密钥、源标识符或缺少基于时间戳的计数器(如“T”标志所示)。用于传入分组处理的安全策略数据库的配置超出本规范的范围(例如,可以通过DIO配置或带外管理路由器配置来定义)。
Where the message Security Level (LVL) indicates an encrypted RPL message, the node uses the key information identified through the KIM field as well as the CCM nonce as input to the message payload decryption processing. The CCM nonce shall be derived from the
当消息安全级别(LVL)指示加密的RPL消息时,节点使用通过KIM字段标识的密钥信息以及CCM nonce作为消息有效负载解密处理的输入。CCM nonce应根据
message Counter field and other received and locally maintained information (see Section 10.9.1). The plaintext message contents shall be obtained by invoking the inverse cryptographic mode of operation specified by the Sec field of the received packet.
消息计数器字段以及其他接收到的和本地维护的信息(见第10.9.1节)。应通过调用接收数据包的Sec字段指定的反向密码操作模式来获取明文消息内容。
The receiver shall use the CCM nonce and identified key information to check the integrity of the incoming packet. If the integrity check fails against the received MAC, a node MUST discard the packet.
接收器应使用CCM nonce和识别的密钥信息来检查传入数据包的完整性。如果对接收到的MAC进行完整性检查失败,则节点必须丢弃该数据包。
If the received message has an initialized (zero value) counter value and the receiver has an incoming counter currently maintained for the originator of the message, the receiver MUST initiate a counter resynchronization by sending a Consistency Check response message (see Section 6.6) to the message source. The Consistency Check response message shall be protected with the current full outgoing counter maintained for the particular node address. That outgoing counter will be included within the security section of the message while the incoming counter will be included within the Consistency Check message payload.
如果收到的消息有一个初始化(零值)计数器值,并且接收方有一个当前为消息发起人维护的传入计数器,则接收方必须通过向消息源发送一致性检查响应消息(见第6.6节)来启动计数器重新同步。一致性检查响应消息应使用为特定节点地址维护的当前完整传出计数器进行保护。该传出计数器将包含在消息的安全部分中,而传入计数器将包含在一致性检查消息负载中。
Based on the specified security policy, a node MAY apply replay protection for a received RPL message. The replay check SHOULD be performed before the authentication of the received packet. The counter, as obtained from the incoming packet, shall be compared against the watermark of the incoming counter maintained for the given origination node address. If the received message counter value is non-zero and less than the maintained incoming counter watermark, a potential packet replay is indicated and the node MUST discard the incoming packet.
根据指定的安全策略,节点可以对接收到的RPL消息应用重播保护。重播检查应在对接收到的数据包进行身份验证之前执行。应将从传入数据包中获得的计数器与为给定发起节点地址维护的传入计数器水印进行比较。如果接收到的消息计数器值非零且小于维护的传入计数器水印,则指示可能的数据包重播,并且节点必须丢弃传入数据包。
If delay protection is specified as part of the incoming packet security policy checks, the Timestamp counter is used to validate the timeliness of the received RPL message. If the incoming message Timestamp counter value indicates a message transmission time prior to the locally maintained transmission time counter for the originator address, a replay violation is indicated and the node MUST discard the incoming packet. If the received Timestamp counter value indicates a message transmission time that is earlier than the Current time less the acceptable packet delay, a delay violation is indicated and the node MUST discard the incoming packet.
如果将延迟保护指定为传入数据包安全策略检查的一部分,则时间戳计数器用于验证接收到的RPL消息的及时性。如果传入消息时间戳计数器值指示发端地址的本地维护的传输时间计数器之前的消息传输时间,则指示重播冲突,并且节点必须丢弃传入数据包。如果接收到的时间戳计数器值指示早于当前时间减去可接受分组延迟的消息传输时间,则指示延迟冲突,并且节点必须丢弃传入分组。
Once a message has been decrypted, where applicable, and has successfully passed its integrity check, replay check, and optionally delay-protection checks, the node can update its local security information, such as the source's expected counter value for replay comparison.
一旦消息被解密(如适用),并且成功通过了完整性检查、重播检查和可选的延迟保护检查,节点就可以更新其本地安全信息,例如用于重播比较的源的预期计数器值。
A node MUST NOT update its security information on receipt of a message that fails security policy checks or other applied integrity, replay, or delay checks.
当收到未通过安全策略检查或其他应用完整性、重播或延迟检查的消息时,节点不得更新其安全信息。
If the 'T' flag of a message is set and a node has a local timestamp that follows the requirements in Section 10.5, then a node MAY check the temporal consistency of the message. The node computes the transmit time of the message by adding the counter value to the start time of the associated key. If this transmit time is past the end time of the key, the node MAY discard the message without further processing. If the transmit time is too far in the past or future compared to the local time on the receiver, it MAY discard the message without further processing.
如果设置了消息的“T”标志,且节点具有符合第10.5节要求的本地时间戳,则节点可检查消息的时间一致性。节点通过将计数器值添加到相关密钥的开始时间来计算消息的传输时间。如果该发送时间超过密钥的结束时间,则节点可丢弃该消息而无需进一步处理。如果与接收器上的本地时间相比,发送时间在过去或将来太远,则它可以丢弃消息而无需进一步处理。
For a RPL ICMPv6 message, the entire packet is within the scope of RPL security.
对于RPL ICMPv6消息,整个数据包都在RPL安全范围内。
MACs and signatures are calculated over the entire unsecured IPv6 packet. When computing MACs and signatures, mutable IPv6 fields are considered to be filled with zeroes, following the rules in Section 3.3.3.1 of [RFC4302] (IPsec Authenticated Header). MAC and signature calculations are performed before any compression that lower layers may apply.
MAC和签名是在整个不安全的IPv6数据包上计算的。计算MAC和签名时,可变IPv6字段被视为用零填充,遵循[RFC4302](IPsec认证标头)第3.3.3.1节中的规则。MAC和签名计算在较低层可能应用的任何压缩之前执行。
When a RPL ICMPv6 message is encrypted, encryption starts at the first byte after the Security section and continues to the last byte of the packet. The IPv6 header, ICMPv6 header, and RPL message up to the end of the Security section are not encrypted, as they are needed to correctly decrypt the packet.
加密RPL ICMPv6消息时,加密从安全部分后的第一个字节开始,并继续到数据包的最后一个字节。IPv6报头、ICMPv6报头和RPL消息直到安全部分末尾都未加密,因为它们是正确解密数据包所必需的。
For example, a node sending a message with LVL=1, KIM=0, and Algorithm=0 uses the CCM algorithm [RFC3610] to create a packet with attributes ENC-MAC-32: it encrypts the packet and appends a 32-bit MAC. The block cipher key is determined by the Key Index. The CCM nonce is computed as described in Section 10.9.1; the message to authenticate and encrypt is the RPL message starting at the first byte after the Security section and ends with the last byte of the packet. The additional authentication data starts with the beginning of the IPv6 header and ends with the last byte of the RPL Security section.
例如,发送LVL=1、KIM=0和Algorithm=0的消息的节点使用CCM算法[RFC3610]创建具有属性ENC-MAC-32的数据包:它加密数据包并附加32位MAC。分组密码密钥由密钥索引确定。按照第10.9.1节所述计算CCM nonce;要验证和加密的消息是RPL消息,从安全部分后的第一个字节开始,以数据包的最后一个字节结束。附加的身份验证数据从IPv6头的开头开始,以RPL安全部分的最后一个字节结束。
The cryptographic mode of operation described in this specification (Algorithm = 0) is based on CCM and the block-cipher AES-128 [RFC3610]. This mode of operation is widely supported by existing implementations. CCM mode requires a nonce (CCM nonce).
本规范中描述的加密操作模式(算法=0)基于CCM和分组密码AES-128[RFC3610]。现有实现广泛支持这种操作模式。CCM模式需要一个nonce(CCM nonce)。
A RPL node constructs a CCM nonce as follows:
RPL节点按如下方式构造CCM nonce:
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Source Identifier + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Counter | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |KIM|Resvd| LVL | +-+-+-+-+-+-+-+-+
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Source Identifier + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Counter | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |KIM|Resvd| LVL | +-+-+-+-+-+-+-+-+
Figure 31: CCM Nonce
图31:CCM Nonce
Source Identifier: 8 bytes. Source Identifier is set to the logical identifier of the originator of the protected packet.
源标识符:8字节。源标识符设置为受保护数据包的发起方的逻辑标识符。
Counter: 4 bytes. Counter is set to the (uncompressed) value of the corresponding field in the Security option of the RPL control message.
计数器:4字节。计数器设置为RPL控制消息的安全选项中相应字段的(未压缩)值。
Key Identifier Mode (KIM): 2 bits. KIM is set to the value of the corresponding field in the Security option of the RPL control message.
密钥标识符模式(KIM):2位。KIM设置为RPL控制消息的安全选项中相应字段的值。
Security Level (LVL): 3 bits. Security Level is set to the value of the corresponding field in the Security option of the RPL control message.
安全级别(LVL):3位。安全级别设置为RPL控制消息的安全选项中相应字段的值。
Unassigned bits of the CCM nonce are reserved. They MUST be set to zero when constructing the CCM nonce.
保留CCM nonce的未分配位。在构造CCM nonce时,它们必须设置为零。
All fields of the CCM nonce are represented in most significant octet and most significant bit first order.
CCM nonce的所有字段均以最高有效位八位组和最高有效位一阶表示。
If the KIM indicates the use of signatures (a value of 3), then a node appends a signature to the data payload of the packet. The Security Level (LVL) field describes the length of this signature. The signature scheme in RPL for Security Mode 3 is an instantiation of the RSA algorithm (RSASSA-PSS) as defined in Section 8.1 of [RFC3447]. As public key, it uses the pair (n,e), where n is a 2048-bit or 3072-bit RSA modulus and where e=2^{16}+1. It uses CCM mode [RFC3610] as the encryption scheme with M=0 (as a stream-cipher). Note that although [RFC3610] disallows the CCM mode with M=0, RPL explicitly allows the CCM mode with M=0 when used in conjunction with a signature, because the signature provides sufficient data authentication. Here, the CCM mode with M=0 is specified as in [RFC3610], but where the M' field in Section 2.2 MUST be set to 0. It uses the SHA-256 hash function specified in Section 6.2 of [FIPS180]. It uses the message encoding rules of Section 8.1 of [RFC3447].
如果KIM指示使用签名(值为3),则节点将签名附加到数据包的数据有效负载。安全级别(LVL)字段描述此签名的长度。安全模式3的RPL中的签名方案是[RFC3447]第8.1节中定义的RSA算法(RSASSA-PSS)的一个实例。作为公钥,它使用对(n,e),其中n是2048位或3072位RSA模,其中e=2^{16}+1。它使用CCM模式[RFC3610]作为M=0的加密方案(作为流密码)。注意,尽管[RFC3610]不允许M=0的CCM模式,但当与签名一起使用时,RPL明确允许M=0的CCM模式,因为签名提供了充分的数据认证。此处,M=0的CCM模式如[RFC3610]中所述,但第2.2节中的M'字段必须设置为0。它使用[FIPS180]第6.2节中指定的SHA-256哈希函数。它使用[RFC3447]第8.1节中的消息编码规则。
Let 'a' be a concatenation of a 6-byte representation of counter and the message header. The packet payload is the right-concatenation of packet data 'm' and the signature 's'. This signature scheme is invoked with the right-concatenation of the message parts a and m, whereas the signature verification is invoked with the right-concatenation of the message parts a and m and with signature s.
设“a”为计数器和消息头的6字节表示形式的串联。数据包有效载荷是数据包“m”和签名“s”的正确连接。此签名方案是通过消息部分a和m的正确连接调用的,而签名验证是通过消息部分a和m的正确连接以及签名s调用的。
RSA signatures of this form provide sufficient protection for RPL networks. If needed, alternative signature schemes that produce more concise signatures is out of scope for this specification and may be the subject of a future specification.
这种形式的RSA签名为RPL网络提供了充分的保护。如果需要,生成更简洁签名的替代签名方案不在本规范的范围内,可能是未来规范的主题。
An implementation that supports RSA signing with either 2048-bit or 3072-bit signatures SHOULD support verification of both 2048-bit and 3072-bit RSA signatures. This is in consideration of providing an upgrade path for a RPL deployment.
支持2048位或3072位签名的RSA签名的实现应同时支持2048位和3072位RSA签名的验证。这是考虑为RPL部署提供升级路径。
This document specifies a routing protocol. These non-normative suggestions are provided to aid in the design of a forwarding implementation by illustrating how such an implementation could work with RPL.
本文档指定了一个路由协议。这些非规范性建议旨在通过说明转发实现如何与RPL协同工作来帮助设计转发实现。
When forwarding a packet to a destination, precedence is given to selection of a next-hop successor as follows:
将数据包转发到目的地时,优先选择下一跳后继者,如下所示:
1. This specification only covers how a successor is selected from the DODAG Version that matches the RPLInstanceID marked in the IPv6 header of the packet being forwarded. Routing outside the instance can be done as long as additional rules are put in place such as strict ordering of instances and routing protocols to protect against loops. Such rules may be defined in a separate document.
1. 本规范仅涵盖如何从DODAG版本中选择后续版本,该版本与正在转发的数据包的IPv6报头中标记的RPLInstanceID相匹配。只要有其他规则(如实例的严格排序和路由协议)到位,就可以在实例外部进行路由选择,以防止循环。此类规则可在单独的文件中定义。
2. If a local administrative preference favors a route that has been learned from a different routing protocol than RPL, then use that successor.
2. 如果本地管理首选项支持从不同于RPL的路由协议学习的路由,则使用该后继路由。
3. If the packet header specifies a source route by including an RH4 header as specified in [RFC6554], then use that route. If the node fails to forward the packet with that specified source route, then that packet should be dropped. The node MAY log an error. The node may send an ICMPv6 error in Source Routing Header message to the source of the packet (see Section 20.18).
3. 如果数据包头通过包含[RFC6554]中指定的RH4头来指定源路由,则使用该路由。如果节点无法使用指定的源路由转发数据包,则应丢弃该数据包。节点可能会记录错误。节点可将源路由报头消息中的ICMPv6错误发送到数据包的源(参见第20.18节)。
4. If there is an entry in the routing table matching the destination that has been learned from a multicast destination advertisement (e.g., the destination is a one-hop neighbor), then use that successor.
4. 如果路由表中有一个条目与从多播目的地播发中学习到的目的地相匹配(例如,目的地是一个单跳邻居),则使用该后继项。
5. If there is an entry in the routing table matching the destination that has been learned from a unicast destination advertisement (e.g., the destination is located Down the sub-DODAG), then use that successor. If there are DAO Path Control bits associated with multiple successors, then consult the Path Control bits to order the successors by preference when choosing. If, for a given DAO Path Control bit, multiple successors are recorded as having asserted that bit, precedence should be given to the successor who most recently asserted that bit.
5. 如果路由表中有一个条目与从单播目的地播发中学习到的目的地相匹配(例如,目的地位于子DODAG下方),则使用该后继项。如果存在与多个后继者关联的DAO路径控制位,则在选择时参考路径控制位以按优先顺序排列后继者。如果对于给定的DAO路径控制位,多个后继位被记录为已断言该位,则应优先于最近断言该位的后继位。
6. If there is a DODAG Version offering a route to a prefix matching the destination, then select one of those DODAG parents as a successor according to the OF and routing metrics.
6. 如果有一个DODAG版本提供到与目的地匹配的前缀的路由,则根据of和路由度量选择其中一个DODAG父级作为后续路由。
7. Any other as-yet-unattempted DODAG parent may be chosen for the next attempt to forward a unicast packet when no better match exists.
7. 当不存在更好的匹配时,可以为下一次转发单播数据包的尝试选择任何其他尚未尝试的DODAG父级。
8. Finally, the packet is dropped. ICMP Destination Unreachable MAY be invoked (an inconsistency is detected).
8. 最后,数据包被丢弃。可能会调用无法访问的ICMP目标(检测到不一致)。
Hop Limit MUST be decremented when forwarding per [RFC2460].
按照[RFC2460]进行转发时,必须减少跃点限制。
Note that the chosen successor MUST NOT be the neighbor that was the predecessor of the packet (split horizon), except in the case where it is intended for the packet to change from an Upward to a Downward direction, as determined by the routing table of the node making the change, such as switching from DIO routes to DAO routes as the destination is neared in order to continue traveling toward the destination.
注意,所选择的后继者不得是作为分组(分割视界)的前辈的邻居,除非其旨在使分组从向上方向改变为向下方向,这是由进行改变的节点的路由表确定的,例如,当目的地接近时,从DIO路由切换到DAO路由,以便继续向目的地行进。
RPL loop avoidance mechanisms are kept simple and designed to minimize churn and states. Loops may form for a number of reasons, e.g., control packet loss. RPL includes a reactive loop detection technique that protects from meltdown and triggers repair of broken paths.
RPL循环避免机制保持简单,旨在最大限度地减少搅动和状态。环路的形成可能有许多原因,例如,控制数据包丢失。RPL包括一种反应回路检测技术,可防止熔毁,并触发损坏路径的修复。
RPL loop detection uses RPL Packet Information that is transported within the data packets, relying on an external mechanism such as [RFC6553] that places in the RPL Packet Information in an IPv6 Hop-by-Hop option header.
RPL循环检测使用在数据包内传输的RPL包信息,这依赖于外部机制,例如[RFC6553],该机制将RPL包信息放置在IPv6逐跳选项报头中。
The content of RPL Packet Information is defined as follows:
RPL分组信息的内容定义如下:
Down 'O': 1-bit flag indicating whether the packet is expected to progress Up or Down. A router sets the 'O' flag when the packet is expected to progress Down (using DAO routes), and clears it when forwarding toward the DODAG root (to a node with a lower Rank). A host or RPL leaf node MUST set the 'O' flag to 0.
向下“O”:1位标志,指示数据包是向上还是向下。当数据包预期向下移动(使用DAO路由)时,路由器设置“O”标志,并在向DODAG根转发(到较低秩的节点)时清除该标志。主机或RPL叶节点必须将“O”标志设置为0。
Rank-Error 'R': 1-bit flag indicating whether a Rank error was detected. A Rank error is detected when there is a mismatch in the relative Ranks and the direction as indicated in the 'O' bit. A host or RPL leaf node MUST set the 'R' bit to 0.
秩错误“R”:1位标志,指示是否检测到秩错误。当相对秩与“O”位指示的方向不匹配时,检测到秩错误。主机或RPL叶节点必须将“R”位设置为0。
Forwarding-Error 'F': 1-bit flag indicating that this node cannot forward the packet further towards the destination. The 'F' bit might be set by a child node that does not have a route to destination for a packet with the Down 'O' bit set. A host or RPL leaf node MUST set the 'F' bit to 0.
转发错误“F”:1位标志,指示此节点无法将数据包进一步转发到目标。“F”位可能由未为设置了“O”位的数据包设置到目的地的路由的子节点设置。主机或RPL叶节点必须将“F”位设置为0。
RPLInstanceID: 8-bit field indicating the DODAG instance along which the packet is sent.
RPLInstanceID:8位字段,指示发送数据包的DODAG实例。
SenderRank: 16-bit field set to zero by the source and to DAGRank(rank) by a router that forwards inside the RPL network.
SenderRank:由源设置为零的16位字段,由在RPL网络内转发的路由器设置为DAGRank(rank)。
If the source is aware of the RPLInstanceID that is preferred for the packet, then it MUST set the RPLInstanceID field associated with the packet accordingly; otherwise, it MUST set it to the RPL_DEFAULT_INSTANCE.
如果源知道数据包首选的RPLInstanceID,那么它必须相应地设置与数据包关联的RPLInstanceID字段;否则,它必须将其设置为RPL_DEFAULT_实例。
The RPLInstanceID is associated by the source with the packet. This RPLInstanceID MUST match the RPL Instance onto which the packet is placed by any node, be it a host or router. The RPLInstanceID is part of the RPL Packet Information.
源将RPLInstanceID与数据包相关联。此RPLInstanceID必须与任何节点(无论是主机还是路由器)放置数据包的RPL实例相匹配。RPLInstanceID是RPL数据包信息的一部分。
A RPL router that forwards a packet in the RPL network MUST check if the packet includes the RPL Packet Information. If not, then the RPL router MUST insert the RPL Packet Information. If the router is an ingress router that injects the packet into the RPL network, the router MUST set the RPLInstanceID field in the RPL Packet Information. The details of how that router determines the mapping to a RPLInstanceID are out of scope for this specification and left to future specification.
在RPL网络中转发数据包的RPL路由器必须检查数据包是否包含RPL数据包信息。如果没有,则RPL路由器必须插入RPL数据包信息。如果路由器是将数据包注入RPL网络的入口路由器,则路由器必须在RPL数据包信息中设置RPLInstanceID字段。路由器如何确定到RPLInstanceID的映射的详细信息超出了本规范的范围,留待将来的规范处理。
A router that forwards a packet outside the RPL network MUST remove the RPL Packet Information.
在RPL网络外部转发数据包的路由器必须删除RPL数据包信息。
When a router receives a packet that specifies a given RPLInstanceID and the node can forward the packet along the DODAG associated to that instance, then the router MUST do so and leave the RPLInstanceID value unchanged.
当路由器接收到指定给定RPLInstanceID的数据包,并且节点可以沿着与该实例关联的DODAG转发该数据包时,路由器必须这样做,并且保持RPLInstanceID值不变。
If any node cannot forward a packet along the DODAG associated with the RPLInstanceID, then the node SHOULD discard the packet and send an ICMP error message.
如果任何节点无法沿着与RPLInstanceID关联的DODAG转发数据包,则该节点应丢弃该数据包并发送ICMP错误消息。
The DODAG is inconsistent if the direction of a packet does not match the Rank relationship. A receiver detects an inconsistency if it receives a packet with either:
如果数据包的方向与秩关系不匹配,则DODAG不一致。如果接收器接收到包含以下内容之一的数据包,则会检测到不一致:
the 'O' bit set (to Down) from a node of a higher Rank.
从较高秩的节点设置(向下)的“O”位。
the 'O' bit cleared (for Up) from a node of a lower Rank.
从较低级别的节点清除的“O”位(用于Up)。
When the DODAG root increments the DODAGVersionNumber, a temporary Rank discontinuity may form between the next DODAG Version and the prior DODAG Version, in particular, if nodes are adjusting their Rank in the next DODAG Version and deferring their migration into the next DODAG Version. A router that is still a member of the prior DODAG Version may choose to forward a packet to a (future) parent that is in the next DODAG Version. In some cases, this could cause the parent to detect an inconsistency because the Rank-ordering in the prior DODAG Version is not necessarily the same as in the next DODAG Version, and the packet may be judged not to be making forward progress. If the sending router is aware that the chosen successor has already joined the next DODAG Version, then the sending router MUST update the SenderRank to INFINITE_RANK as it forwards the packets across the discontinuity into the next DODAG Version in order to avoid a false detection of Rank inconsistency.
当DODAG根增加DODAG版本号时,下一个DODAG版本和上一个DODAG版本之间可能会形成临时秩不连续,特别是当节点在下一个DODAG版本中调整其秩并推迟迁移到下一个DODAG版本时。仍然是先前DODAG版本成员的路由器可以选择将数据包转发给下一个DODAG版本中的(未来)父级。在某些情况下,这可能导致父级检测到不一致,因为先前的DODAG版本中的秩顺序不一定与下一个DODAG版本中的秩顺序相同,并且可以判断包没有向前推进。如果发送路由器意识到所选的后继者已加入下一个DODAG版本,则发送路由器必须在将数据包跨中断转发到下一个DODAG版本时将Senderrak更新为无限秩,以避免错误检测到秩不一致。
One inconsistency along the path is not considered a critical error and the packet may continue. However, a second detection along the path of the same packet should not occur and the packet MUST be dropped.
路径上的一个不一致性不被视为严重错误,数据包可能会继续。但是,不应沿同一数据包的路径进行第二次检测,并且必须丢弃该数据包。
This process is controlled by the Rank-Error bit associated with the packet. When an inconsistency is detected on a packet, if the Rank-Error bit was not set, then the Rank-Error bit is set. If it was set the packet MUST be discarded and the Trickle timer MUST be reset.
此过程由与数据包关联的秩错误位控制。当在数据包上检测到不一致时,如果未设置秩错误位,则设置秩错误位。如果已设置,则必须丢弃数据包,并重置涓流计时器。
DAO inconsistency loop recovery is a mechanism that applies to Storing mode of operation only.
DAO不一致循环恢复是一种仅适用于存储操作模式的机制。
In Non-Storing mode, the packets are source routed to the destination, and DAO inconsistencies are not corrected locally. Instead, an ICMP error with a new code "Error in Source Routing Header" is sent back to the root. The "Error in Source Routing Header" message has the same format as the "Destination Unreachable Message", as specified in [RFC4443]. The portion of the invoking packet that is sent back in the ICMP message should record at least up to the routing header, and the routing header should be consumed by this node so that the destination in the IPv6 header is the next hop that this node could not reach.
在非存储模式下,数据包从源路由到目的地,DAO不一致不会在本地纠正。相反,带有新代码“源路由头中的错误”的ICMP错误被发送回根目录。如[RFC4443]中所述,“源路由报头中的错误”消息的格式与“目标不可访问消息”的格式相同。在ICMP消息中发回的调用数据包部分应至少记录到路由报头,并且路由报头应由该节点使用,以便IPv6报头中的目的地是该节点无法到达的下一个跃点。
A DAO inconsistency happens when a router has a Downward route that was previously learned from a DAO message via a child, but that Downward route is not longer valid in the child, e.g., because that related state in the child has been cleaned up. With DAO inconsistency loop recovery, a packet can be used to recursively explore and clean up the obsolete DAO states along a sub-DODAG.
当路由器具有先前通过子级从DAO消息学习到的下行路由,但该下行路由在子级中不再有效时,就会发生DAO不一致,例如,因为子级中的相关状态已被清除。通过DAO不一致性循环恢复,可以使用数据包沿子DODAG递归地探索和清理过时的DAO状态。
In a general manner, a packet that goes Down should never go Up again. If DAO inconsistency loop recovery is applied, then the router SHOULD send the packet back to the parent that passed it with the Forwarding-Error 'F' bit set and the 'O' bit left untouched. Otherwise, the router MUST silently discard the packet.
In a general manner, a packet that goes Down should never go Up again. If DAO inconsistency loop recovery is applied, then the router SHOULD send the packet back to the parent that passed it with the Forwarding-Error 'F' bit set and the 'O' bit left untouched. Otherwise, the router MUST silently discard the packet.translate error, please retry
Upon receiving a packet with a Forwarding-Error bit set, the node MUST remove the routing states that caused forwarding to that neighbor, clear the Forwarding-Error bit, and attempt to send the packet again. The packet may be sent to an alternate neighbor, after the expiration of a user-configurable implementation-specific timer. If that alternate neighbor still has an inconsistent DAO state via this node, the process will recurse, this node will set the Forwarding-Error 'F' bit, and the routing state in the alternate neighbor will be cleaned up as well.
在接收到设置了转发错误位的数据包时,节点必须删除导致转发到该邻居的路由状态,清除转发错误位,然后再次尝试发送该数据包。在用户可配置的实现特定计时器到期之后,可以将分组发送到备用邻居。如果该备用邻居仍然通过该节点具有不一致的DAO状态,则进程将递归,该节点将设置转发错误“F”位,并且备用邻居中的路由状态也将被清除。
This section describes a multicast routing operation over an IPv6 RPL network and, specifically, how unicast DAOs can be used to relay group registrations. The same DODAG construct can be used to forward unicast and multicast traffic. This section is limited to a description of how group registrations may be exchanged and how the forwarding infrastructure operates. It does not provide a full description of multicast within an LLN and, in particular, does not describe the generation of DODAGs specifically targeted at multicast or the details of operating RPL for multicast -- that will be the subject of further specifications.
本节介绍IPv6 RPL网络上的多播路由操作,特别是单播DAO如何用于中继组注册。相同的DODAG结构可用于转发单播和多播流量。本节仅描述如何交换组注册以及转发基础设施如何运行。它没有提供LLN内多播的完整描述,特别是没有描述专门针对多播的DoDAG的生成或为多播操作RPL的细节——这将是进一步规范的主题。
The multicast group registration uses DAO messages that are identical to unicast except for the type of address that is transported. The main difference is that the multicast traffic going down is copied to all the children that have registered with the multicast group, whereas unicast traffic is passed to one child only.
多播组注册使用与单播相同的DAO消息,但传输的地址类型不同。主要区别在于,下行的多播通信量被复制到已注册到多播组的所有子级,而单播通信量仅传递给一个子级。
Nodes that support the RPL Storing mode of operation SHOULD also support multicast DAO operations as described below. Nodes that only support the Non-Storing mode of operation are not expected to support this section.
支持RPL存储操作模式的节点还应支持多播DAO操作,如下所述。仅支持非存储操作模式的节点不支持此部分。
The multicast operation is controlled by the MOP field in the DIO.
多播操作由DIO中的MOP字段控制。
o If the MOP field requires multicast support, then a node that joins the RPL network as a router must operate as described in this section for multicast signaling and forwarding within the RPL network. A node that does not support the multicast operation required by the MOP field can only join as a leaf.
o 如果MOP字段需要多播支持,则作为路由器加入RPL网络的节点必须按照本节所述在RPL网络内进行多播信令和转发。不支持MOP字段所需的多播操作的节点只能作为叶加入。
o If the MOP field does not require multicast support, then multicast is handled by some other way that is out of scope for this specification. (Examples may include a series of unicast copies or limited-scope flooding).
o 如果MOP字段不需要多播支持,则多播由本规范范围之外的其他方式处理。(示例可能包括一系列单播副本或有限范围泛洪)。
A router might select to pass a listener registration DAO message to its preferred parent only; in which case, multicast packets coming back might be lost for all of its sub-DODAGs if the transmission fails over that link. Alternatively, the router might select copying additional parents as it would do for DAO messages advertising unicast destinations; in which case, there might be duplicates that the router will need to prune.
路由器可能选择只将侦听器注册DAO消息传递给其首选父节点;在这种情况下,如果传输在该链路上失败,返回的多播数据包可能会丢失其所有子DoDAG。或者,路由器可以选择复制额外的父级,就像它对广告单播目的地的DAO消息所做的那样;在这种情况下,路由器可能需要删除重复项。
As a result, multicast routing states are installed in each router on the way from the listeners to the DODAG root, enabling the root to copy a multicast packet to all its children routers that had issued a DAO message including a Target option for that multicast group.
因此,在从侦听器到DODAG根的过程中,多播路由状态安装在每个路由器中,使根能够将多播数据包复制到其所有已发出DAO消息(包括该多播组的目标选项)的子路由器。
For a multicast packet sourced from inside the DODAG, the packet is passed to the preferred parents, and if that fails, then to the alternates in the DODAG. The packet is also copied to all the registered children, except for the one that passed the packet. Finally, if there is a listener in the external infrastructure, then the DODAG root has to further propagate the packet into the external infrastructure.
对于来自DODAG内部的多播数据包,该数据包被传递给首选父级,如果失败,则传递给DODAG中的备用父级。数据包也会复制到所有已注册的子级,传递数据包的子级除外。最后,如果外部基础设施中有侦听器,则DODAG根必须进一步将数据包传播到外部基础设施中。
As a result, the DODAG root acts as an automatic proxy Rendezvous Point for the RPL network and as source towards the non-RPL domain for all multicast flows started in the RPL domain. So, regardless of whether the root is actually attached to a non-RPL domain, and regardless of whether the DODAG is grounded or floating, the root can serve inner multicast streams at all times.
因此,对于在RPL域中启动的所有多播流,DODAG根充当RPL网络的自动代理集合点,并充当指向非RPL域的源。因此,不管根是否实际连接到非RPL域,也不管DODAG是固定的还是浮动的,根都可以随时为内部多播流服务。
The selection of successors, along the default paths Up along the DODAG, or along the paths learned from destination advertisements Down along the DODAG, leads to the formation of routing adjacencies that require maintenance.
沿DODAG上的默认路径或沿DODAG下的目标播发学习的路径选择后续路径,会导致形成需要维护的路由邻接。
In IGPs, such as OSPF [RFC4915] or IS-IS [RFC5120], the maintenance of a routing adjacency involves the use of keepalive mechanisms (Hellos) or other protocols such as the Bidirectional Forwarding Detection (BFD) [RFC5881] and the MANET Neighborhood Discovery Protocol (NHDP) [RFC6130]. Unfortunately, such a proactive approach is often not desirable in constrained environments where it would lead to excessive control traffic in light of the data traffic with a negative impact on both link loads and nodes resources.
在诸如OSPF[RFC4915]或IS-IS[RFC5120]等IGP中,路由邻接的维护涉及使用保持机制(Hellos)或诸如双向转发检测(BFD)[RFC5881]和MANET邻域发现协议(NHDP)[RFC6130]等其他协议。不幸的是,在受限环境中,这种主动式方法通常不可取,因为在受限环境中,它会导致数据流量过大,从而对链路负载和节点资源产生负面影响。
By contrast with those routing protocols, RPL does not define any keepalive mechanisms to detect routing adjacency failures: this is because in many cases, such a mechanism would be too expensive in terms of bandwidth and, even more importantly, energy (a battery-operated device could not afford to send periodic keepalives). Still RPL requires an external mechanisms to detect that a neighbor is no longer reachable. Such a mechanism should preferably be reactive to traffic in order to minimize the overhead to maintain the routing adjacency and focus on links that are actually being used.
与这些路由协议相比,RPL没有定义任何保持机制来检测路由邻接故障:这是因为在许多情况下,这种机制在带宽和更重要的能量方面过于昂贵(电池驱动的设备无法定期发送保持机制)。RPL仍然需要一个外部机制来检测邻居不再是可到达的。这样的机制最好是对通信量作出反应,以便将维持路由邻接的开销降至最低,并将重点放在实际使用的链路上。
Example reactive mechanisms that can be used include:
可使用的示例反应机制包括:
The Neighbor Unreachability Detection [RFC4861] mechanism.
邻居不可达性检测[RFC4861]机制。
Layer 2 triggers [RFC5184] derived from events such as association states and L2 acknowledgements.
第2层触发器[RFC5184]源自关联状态和L2确认等事件。
An Objective Function (OF), in conjunction with routing metrics and constraints, allows for the selection of a DODAG to join, and a number of peers in that DODAG as parents. The OF is used to compute an ordered list of parents. The OF is also responsible to compute the Rank of the device within the DODAG Version.
目标函数(OF)结合路由度量和约束,允许选择要加入的DODAG,以及该DODAG中的多个对等方作为父节点。OF用于计算父对象的有序列表。OF还负责计算DODAG版本中设备的等级。
The Objective Function is indicated in the DIO message using an Objective Code Point (OCP), and it indicates the method that must be used to construct the DODAG. The Objective Code Points are specified in [RFC6552] and related companion specifications.
目标函数在DIO消息中使用目标代码点(OCP)表示,它表示构建DODAG必须使用的方法。[RFC6552]和相关配套规范中规定了目标代码点。
Most Objective Functions are expected to follow the same abstract behavior at a node:
大多数目标函数在节点上都应遵循相同的抽象行为:
o The parent selection is triggered each time an event indicates that a potential next-hop information is updated. This might happen upon the reception of a DIO message, a timer elapse, all DODAG parents are unavailable, or a trigger indicating that the state of a candidate neighbor has changed.
o 每次事件指示潜在下一跳信息更新时,都会触发父选择。这可能发生在接收到DIO消息、计时器超时、所有DODAG父级不可用或指示候选邻居的状态已更改的触发器时。
o An OF scans all the interfaces on the node. Although, there may typically be only one interface in most application scenarios, there might be multiple of them and an interface might be configured to be usable or not for RPL operation. An interface can also be configured with a preference or dynamically learned to be better than another by some heuristics that might be link-layer dependent and are out of scope for this specification. Finally,
o 一组扫描节点上的所有接口。尽管在大多数应用程序场景中通常只有一个接口,但可能有多个接口,并且可能会将一个接口配置为可用于或不用于RPL操作。一个接口也可以配置一个首选项,或者通过一些可能依赖于链路层且超出本规范范围的启发式方法动态学习,使其优于另一个接口。最后
an interface might or might not match a required criterion for an Objective Function, for instance, a degree of security. As a result, some interfaces might be completely excluded from the computation, for example, if those interfaces cannot satisfy some advertised constraints, while others might be more or less preferred.
接口可能与目标函数所需的标准匹配,也可能不匹配,例如,安全程度。因此,某些接口可能被完全排除在计算之外,例如,如果这些接口不能满足某些公布的约束,而其他接口可能或多或少是首选的。
o An OF scans all the candidate neighbors on the possible interfaces to check whether they can act as a router for a DODAG. There might be many of them and a candidate neighbor might need to pass some validation tests before it can be used. In particular, some link layers require experience on the activity with a router to enable the router as a next hop.
o 一组扫描可能接口上的所有候选邻居,以检查它们是否可以充当DODAG的路由器。它们可能有很多,候选邻居可能需要通过一些验证测试才能使用。特别是,一些链路层需要有路由器活动方面的经验,才能使路由器成为下一跳。
o An OF computes Rank of a node for comparison by adding to the Rank of the candidate a value representing the relative locations of the node and the candidate in the DODAG Version.
o OF通过向候选节点的秩中添加一个值来计算节点的秩以进行比较,该值表示DODAG版本中节点和候选节点的相对位置。
* The increase in Rank must be at least MinHopRankIncrease.
* 等级的增加必须至少达到MinHopRankIncrease。
* To keep loop avoidance and metric optimization in alignment, the increase in Rank should reflect any increase in the metric value. For example, with a purely additive metric, such as ETX, the increase in Rank can be made proportional to the increase in the metric.
* 为了使循环避免和度量优化保持一致,秩的增加应反映度量值的任何增加。例如,对于纯加法度量,例如ETX,秩的增加可以与度量的增加成比例。
* Candidate neighbors that would cause the Rank of the node to increase are not considered for parent selection.
* 父选择不考虑会导致节点排名增加的候选邻居。
o Candidate neighbors that advertise an OF incompatible with the set of OFs specified by the policy functions are ignored.
o 将忽略播发与策略函数指定的OF集不兼容的OF的候选邻居。
o As it scans all the candidate neighbors, the OF keeps the current best parent and compares its capabilities with the current candidate neighbor. The OF defines a number of tests that are critical to reach the objective. A test between the routers determines an order relation.
o 在扫描所有候选邻居时,OF保留当前最佳父级,并将其功能与当前候选邻居进行比较。OF定义了一些对实现目标至关重要的测试。路由器之间的测试确定顺序关系。
* If the routers are equal for that relation, then the next test is attempted between the routers,
* 如果路由器在该关系上相等,则尝试在路由器之间进行下一次测试,
* Else the best of the two routers becomes the current best parent, and the scan continues with the next candidate neighbor.
* 否则,两个路由器中的最佳路由器将成为当前的最佳父路由器,并继续扫描下一个候选邻居。
* Some OFs may include a test to compare the Ranks that would result if the node joined either router.
* 一些OF可能包括一个测试,用于比较节点加入任一路由器时产生的等级。
o When the scan is complete, the preferred parent is elected and the node's Rank is computed as the preferred parent Rank plus the step in Rank with that parent.
o 扫描完成后,将选择首选父级,并将节点的秩计算为首选父级秩加上与该父级的步进秩。
o Other rounds of scans might be necessary to elect alternate parents. In the next rounds:
o 为了选出候补父母,可能需要进行其他几轮扫描。在接下来的几轮中:
* Candidate neighbors that are not in the same DODAG are ignored.
* 不在同一DODAG中的候选邻居将被忽略。
* Candidate neighbors that are of greater Rank than the node are ignored.
* 等级高于节点的候选邻居将被忽略。
* Candidate neighbors of an equal Rank to the node are ignored for parent selection.
* 对于父选择,忽略与节点具有相同等级的候选邻居。
* Candidate neighbors of a lesser Rank than the node are preferred.
* 优先选择等级低于节点的候选邻居。
This specification directly borrows the Prefix Information Option (PIO) and the Route Information Option (RIO) from IPv6 ND. It is envisioned that, as future specifications build on this base, there may be additional cause to leverage parts of IPv6 ND. This section provides some suggestions for future specifications.
本规范直接从IPv6 ND借用前缀信息选项(PIO)和路由信息选项(RIO)。可以预见,随着未来的规范建立在这一基础上,可能还有其他原因需要利用IPv6 ND的部分功能。本节为将来的规范提供了一些建议。
First and foremost, RPL is a routing protocol. One should take great care to preserve architecture when mapping functionalities between RPL and ND. RPL is for routing only. That said, there may be persuading technical reasons to allow for sharing options between RPL and IPv6 ND in a particular implementation/deployment.
首先,RPL是一种路由协议。在RPL和ND之间映射功能时,应该非常小心地保留体系结构。RPL仅用于路由。也就是说,在特定的实现/部署中,可能有令人信服的技术原因允许RPL和IPv6 ND之间共享选项。
In general, the following guidelines apply:
一般而言,以下准则适用:
o RPL Type codes must be allocated from the RPL Control Message Options registry.
o 必须从RPL控制消息选项注册表中分配RPL类型代码。
o RPL Length fields must be expressed in units of single octets, as opposed to ND Length fields, which are expressed in units of 8 octets.
o RPL长度字段必须以单个八位字节为单位表示,而ND长度字段则以8个八位字节为单位表示。
o RPL options are generally not required to be aligned to 8-octet boundaries.
o RPL选项通常不需要与8八位字节边界对齐。
o When mapping/transposing an IPv6 ND option for redistribution as a RPL option, any padding octets should be removed when possible. For example, the Prefix Length field in the PIO is sufficient to describe the length of the Prefix field. When mapping/transposing
o 将IPv6 ND选项映射/转换为RPL选项进行重新分发时,应尽可能删除任何填充八位字节。例如,PIO中的前缀长度字段足以描述前缀字段的长度。映射/转置时
a RPL option for redistribution as an IPv6 ND option, any such padding octets should be restored. This procedure must be unambiguous.
作为IPv6 ND选项,任何此类填充八位字节都应恢复。这一程序必须明确无误。
This section summarizes basic interoperability and references normative text for RPL implementations operating in one of three major modes. Implementations are expected to support either no Downward routes, Non-Storing mode only, or Storing mode only. A fourth mode, operation as a leaf, is also possible.
本节总结了在三种主要模式之一下运行的RPL实现的基本互操作性和参考标准文本。预期实现将支持无下行路由、仅非存储模式或仅存储模式。第四种模式,作为叶操作,也是可能的。
Implementations conforming to this specification may contain different subsets of capabilities as appropriate to the application scenario. It is important for the implementer to support a level of interoperability consistent with that required by the application scenario. To this end, further guidance may be provided beyond this specification (e.g., as applicability statements), and it is understood that in some cases such further guidance may override portions of this specification.
符合本规范的实现可能包含适用于应用场景的不同功能子集。实现者必须支持与应用程序场景要求一致的互操作性级别。为此,可提供本规范以外的进一步指导(例如,作为适用性声明),并且应理解,在某些情况下,此类进一步指导可能会覆盖本规范的部分内容。
In a general case, the greatest level of interoperability may be achieved when all of the nodes in a RPL LLN are cooperating to use the same MOP, OF, metrics, and constraints, and are thus able to act as RPL routers. When a node is not capable of being a RPL router, it may be possible to interoperate in a more limited manner as a RPL leaf.
在一般情况下,当RPL LLN中的所有节点合作使用相同的MOP、of、度量和约束,并且因此能够充当RPL路由器时,可以实现最大级别的互操作性。当一个节点不能成为RPL路由器时,它可以作为RPL叶以更有限的方式进行互操作。
All RPL implementations need to support the use of RPL Packet Information transported within data packets (Section 11.2). One such mechanism is described in [RFC6553].
所有RPL实现都需要支持使用在数据包中传输的RPL包信息(第11.2节)。[RFC6553]中描述了一种这样的机制。
RPL implementations will need to support the use of Neighbor Unreachability Detection (NUD), or an equivalent mechanism, to maintain the reachability of neighboring RPL nodes (Section 8.2.1). Alternate mechanisms may be optimized to the constrained capabilities of the implementation, such as hints from the link layer.
RPL实现需要支持使用邻居不可达性检测(NUD)或等效机制,以保持相邻RPL节点的可达性(第8.2.1节)。替代机制可针对实现的受限能力进行优化,例如来自链路层的提示。
This specification provides means to obtain a PIO and thus form an IPv6 address. When that mechanism is used, it may be necessary to perform address resolution and duplicate address detection through an external process, such as IPv6 ND [RFC4861] or 6LoWPAN ND [6LOWPAN-ND].
本规范提供了获取PIO从而形成IPv6地址的方法。使用该机制时,可能需要通过外部进程(如IPv6 ND[RFC4861]或6LoWPAN ND[6LoWPAN-ND])执行地址解析和重复地址检测。
o An implementation of a leaf node (only) does not ever participate as a RPL router. Interoperable implementations of leaf nodes behave as summarized in Section 8.5.
o 叶节点(仅)的实现永远不会作为RPL路由器参与。叶节点的互操作实现如第8.5节所述。
o Support of a particular MOP encoding is not required, although if the leaf node sends DAO messages to set up Downward routes, the leaf node should do so in a manner consistent with the mode of operation indicated by the MOP.
o 不需要支持特定的MOP编码,尽管如果叶节点发送DAO消息以设置下行路由,则叶节点应以与MOP指示的操作模式一致的方式执行此操作。
o Support of a particular OF is not required.
o 不需要支持特定的of。
o In summary, a leaf node does not generally issue DIO messages, it may issue DAO and DIS messages. A leaf node accepts DIO messages though it generally ignores DAO and DIS messages.
o 总之,叶节点通常不会发出DIO消息,它可能会发出DAO和DIS消息。叶节点接受DIO消息,尽管它通常忽略DAO和DIS消息。
If further guidance is not available then a RPL router implementation MUST at least support the metric-less OF0 [RFC6552].
如果没有进一步的指导,那么RPL路由器实现必须至少支持小于0的度量[RFC6552]。
For consistent operation a RPL router implementation needs to support the MOP in use by the DODAG.
为了实现一致的操作,RPL路由器实现需要支持DODAG使用的MOP。
All RPL routers will need to implement Trickle [RFC6206].
所有RPL路由器都需要实现涓流[RFC6206]。
An implementation of a RPL router that supports only Upward routes supports the following:
仅支持上行路由的RPL路由器的实现支持以下功能:
o Upward routes (Section 8)
o 上行线路(第8节)
o MOP encoding 0 (Section 20.3)
o MOP编码0(第20.3节)
o In summary, DIO and DIS messages are issued, and DAO messages are not issued. DIO and DIS messages are accepted, and DAO messages are ignored.
o 总之,发出DIO和DIS消息,而不发出DAO消息。接受DIO和DIS消息,忽略DAO消息。
16.3.2. Support for Upward Routes and Downward Routes in Non-Storing Mode
16.3.2. 在非存储模式下支持向上路由和向下路由
An implementation of a RPL router that supports Upward routes and Downward routes in Non-Storing mode supports the following:
在非存储模式下支持上行路由和下行路由的RPL路由器的实现支持以下功能:
o Upward routes (Section 8)
o 上行线路(第8节)
o Downward routes (Non-Storing) (Section 9)
o 下行路线(非储存)(第9节)
o MOP encoding 1 (Section 20.3)
o MOP编码1(第20.3节)
o Source-routed Downward traffic ([RFC6554])
o 源路由下行通信量([RFC6554])
o In summary, DIO and DIS messages are issued, and DAO messages are issued to the DODAG root. DIO and DIS messages are accepted, and DAO messages are ignored by nodes other than DODAG roots. Multicast is not supported through the means described in this specification, though it may be supported through some alternate means.
o 总之,将发出DIO和DIS消息,并将DAO消息发送到DODAG根目录。DIO和DIS消息被接受,DAO消息被DODAG根以外的节点忽略。通过本规范中描述的方法不支持多播,尽管可以通过一些替代方法支持多播。
An implementation of a RPL router that supports Upward routes and Downward routes in Storing mode supports the following:
在存储模式下支持上行路由和下行路由的RPL路由器的实现支持以下功能:
o Upward routes (Section 8)
o 上行线路(第8节)
o Downward routes (Storing) (Section 9)
o 下行路线(储存)(第9节)
o MOP encoding 2 (Section 20.3)
o MOP编码2(第20.3节)
o In summary, DIO, DIS, and DAO messages are issued. DIO, DIS, and DAO messages are accepted. Multicast is not supported through the means described in this specification, though it may be supported through some alternate means.
o 总之,会发出DIO、DIS和DAO消息。接受DIO、DIS和DAO消息。通过本规范中描述的方法不支持多播,尽管可以通过一些替代方法支持多播。
A Storing mode implementation may be enhanced with basic multicast support through the following additions:
存储模式实现可以通过以下附加功能通过基本多播支持得到增强:
o Basic Multicast Support (Section 12)
o 基本多播支持(第12节)
o MOP encoding 3 (Section 20.3)
o MOP编码3(第20.3节)
A number of items are left to future specification, including but not limited to the following:
许多项目留待未来规范,包括但不限于以下内容:
o How to attach a non-RPL node such as an IPv6 host, e.g., to consistently distribute at least PIO material to the attached node.
o 如何连接非RPL节点(如IPv6主机),例如,一致地向连接的节点分发至少PIO材料。
o How to obtain authentication material in support if authenticated mode is used (Section 10.3).
o 如果使用认证模式,如何获取支持中的认证材料(第10.3节)。
o Details of operation over multiple simultaneous instances.
o 多个同时实例上操作的详细信息。
o Advanced configuration mechanisms, such as the provisioning of RPLInstanceIDs, parameterization of Objective Functions, and parameters to control security. (It is expected that such mechanisms might extend the DIO as a means to disseminate information across the DODAG).
o 高级配置机制,如rplinstanceid的提供、目标函数的参数化以及控制安全性的参数。(预计此类机制可能会将DIO扩展为跨DODAG传播信息的一种手段)。
The following is a summary of RPL constants and variables:
以下是RPL常量和变量的摘要:
BASE_RANK: This is the Rank for a virtual root that might be used to coordinate multiple roots. BASE_RANK has a value of 0.
基本秩:这是虚拟根的秩,可用于协调多个根。基本秩的值为0。
ROOT_RANK: This is the Rank for a DODAG root. ROOT_RANK has a value of MinHopRankIncrease (as advertised by the DODAG root), such that DAGRank(ROOT_RANK) is 1.
ROOT_RANK:这是DODAG根的级别。ROOT_-RANK的值为MinHopRankIncrease(由DODAG-ROOT公布),因此DAGRank(ROOT_-RANK)为1。
INFINITE_RANK: This is the constant maximum for the Rank. INFINITE_RANK has a value of 0xFFFF.
无限秩:这是秩的常量最大值。无限_秩的值为0xFFFF。
RPL_DEFAULT_INSTANCE: This is the RPLInstanceID that is used by this protocol by a node without any overriding policy. RPL_DEFAULT_INSTANCE has a value of 0.
RPL_DEFAULT_INSTANCE:这是此协议在没有任何覆盖策略的情况下由节点使用的RPLInstanceID。RPL_默认_实例的值为0。
DEFAULT_PATH_CONTROL_SIZE: This is the default value used to configure PCS in the DODAG Configuration option, which dictates the number of significant bits in the Path Control field of the Transit Information option. DEFAULT_PATH_CONTROL_SIZE has a value of 0. This configures the simplest case limiting the fan-out to 1 and limiting a node to send a DAO message to only one parent.
DEFAULT_PATH_CONTROL_SIZE:这是用于在DODAG配置选项中配置PC的默认值,它指示传输信息选项的路径控制字段中的有效位数。默认路径控制大小的值为0。这将配置最简单的情况,将扇出限制为1,并将节点限制为仅向一个父节点发送DAO消息。
DEFAULT_DIO_INTERVAL_MIN: This is the default value used to configure Imin for the DIO Trickle timer. DEFAULT_DIO_INTERVAL_MIN has a value of 3. This configuration results in Imin of 8 ms.
DEFAULT_DIO_INTERVAL_MIN:这是用于为DIO涓流计时器配置Imin的默认值。默认时间间隔最小值为3。此配置导致Imin为8毫秒。
DEFAULT_DIO_INTERVAL_DOUBLINGS: This is the default value used to configure Imax for the DIO Trickle timer. DEFAULT_DIO_INTERVAL_DOUBLINGS has a value of 20. This configuration results in a maximum interval of 2.3 hours.
DEFAULT_DIO_INTERVAL_DOUBLINGS:这是用于为DIO Trickle计时器配置Imax的默认值。默认值为20。此配置的最大间隔为2.3小时。
DEFAULT_DIO_REDUNDANCY_CONSTANT: This is the default value used to configure k for the DIO Trickle timer. DEFAULT_DIO_REDUNDANCY_CONSTANT has a value of 10. This configuration is a conservative value for Trickle suppression mechanism.
DEFAULT_DIO_REDUNDANCY_常量:这是用于为DIO Trickle计时器配置k的默认值。默认_DIO_冗余_常量的值为10。此配置是涓流抑制机制的保守值。
DEFAULT_MIN_HOP_RANK_INCREASE: This is the default value of MinHopRankIncrease. DEFAULT_MIN_HOP_RANK_INCREASE has a value of 256. This configuration results in an 8-bit wide integer part of Rank.
默认值\最小值\跃点\排名\增加:这是MinHopRankIncrease的默认值。默认值为256。此配置导致秩的8位宽整数部分。
DEFAULT_DAO_DELAY: This is the default value for the DelayDAO Timer. DEFAULT_DAO_DELAY has a value of 1 second. See Section 9.5.
DEFAULT\u DAO\u DELAY:这是DelayDAO计时器的默认值。默认延迟值为1秒。见第9.5节。
DIO Timer: One instance per DODAG of which a node is a member. Expiry triggers DIO message transmission. A Trickle timer with variable interval in [0, DIOIntervalMin..2^DIOIntervalDoublings]. See Section 8.3.1
DIO定时器:每个DODAG有一个实例,其中一个节点是其成员。到期触发DIO消息传输。在[0,DIOIntervalMin..2^ DIOIntervalDoublings]中具有可变间隔的涓流计时器。见第8.3.1节
DAG Version Increment Timer: Up to one instance per DODAG of which the node is acting as DODAG root. May not be supported in all implementations. Expiry triggers increment of DODAGVersionNumber, causing a new series of updated DIO message to be sent. Interval should be chosen appropriate to propagation time of DODAG and as appropriate to application requirements (e.g., response time versus overhead).
DAG版本增量计时器:每个DODAG最多有一个实例,其中节点充当DODAG根。可能并非在所有实现中都支持。到期触发DODAGVersionNumber的增量,导致发送一系列新的更新的DIO消息。应根据DODAG的传播时间和应用要求(例如,响应时间与开销)选择合适的间隔。
DelayDAO Timer: Up to one timer per DAO parent (the subset of DODAG parents chosen to receive destination advertisements) per DODAG. Expiry triggers sending of DAO message to the DAO parent. See Section 9.5
DelayDAO计时器:每个DAO父级(选择接收目标播发的DODAG父级的子集)最多有一个计时器。到期触发向DAO父级发送DAO消息。见第9.5节
RemoveTimer: Up to one timer per DAO entry per neighbor (i.e., those neighbors that have given DAO messages to this node as a DODAG parent). Expiry may trigger No-Path advertisements or immediately deallocate the DAO entry if there are no DAO parents.
RemoveTimer:每个邻居每个DAO条目最多有一个计时器(即,作为DODAG父节点向该节点提供DAO消息的邻居)。如果没有DAO父级,到期可能会触发无路径播发或立即取消分配DAO条目。
The aim of this section is to give consideration to the manageability of RPL, and how RPL will be operated in an LLN. The scope of this section is to consider the following aspects of manageability: configuration, monitoring, fault management, accounting, and performance of the protocol in light of the recommendations set forth in [RFC5706].
本节的目的是考虑RPL的可管理性,以及在LLN中如何操作RPL。本节的范围是考虑以下方面的可管理性:配置,监测,故障管理,会计和性能的协议,根据提出的建议[RCF5706]。
Most of the existing IETF management standards are MIB modules (data models based on the Structure of Management Information (SMI)) to monitor and manage networking devices.
大多数现有的IETF管理标准都是MIB模块(基于管理信息结构(SMI)的数据模型),用于监视和管理网络设备。
For a number of protocols, the IETF community has used the IETF Standard Management Framework, including the Simple Network Management Protocol [RFC3410], the Structure of Management Information [RFC2578], and MIB data models for managing new protocols.
对于许多协议,IETF社区使用了IETF标准管理框架,包括简单网络管理协议[RFC3410]、管理信息结构[RFC2578]和用于管理新协议的MIB数据模型。
As pointed out in [RFC5706], the common policy in terms of operation and management has been expanded to a policy that is more open to a set of tools and management protocols rather than strictly relying on a single protocol such as SNMP.
正如[RFC5706]中所指出的,操作和管理方面的通用策略已扩展为更开放于一组工具和管理协议的策略,而不是严格依赖单一协议(如SNMP)。
In 2003, the Internet Architecture Board (IAB) held a workshop on Network Management [RFC3535] that discussed the strengths and weaknesses of some IETF network management protocols and compared them to operational needs, especially configuration.
2003年,互联网体系结构委员会(IAB)举办了一次网络管理研讨会[RFC3535],讨论了一些IETF网络管理协议的优缺点,并将其与操作需求,特别是配置进行了比较。
One issue discussed was the user-unfriendliness of the binary format of SNMP [RFC3410]. In the case of LLNs, it must be noted that at the time of writing, the CoRE working group is actively working on resource management of devices in LLNs. Still, it is felt that this section provides important guidance on how RPL should be deployed, operated, and managed.
讨论的一个问题是SNMP[RFC3410]的二进制格式对用户不友好。就LLN而言,必须注意的是,在编写本报告时,核心工作组正在积极研究LLN中设备的资源管理。尽管如此,我们仍然认为本节提供了关于如何部署、操作和管理RPL的重要指导。
As stated in [RFC5706]:
如[RFC5706]所述:
A management information model should include a discussion of what is manageable, which aspects of the protocol need to be configured, what types of operations are allowed, what protocol-specific events might occur, which events can be counted, and for which events an operator should be notified.
管理信息模型应包括以下内容的讨论:什么是可管理的,需要配置协议的哪些方面,允许哪些类型的操作,可能发生哪些协议特定事件,哪些事件可以计数,以及应该通知操作员哪些事件。
These aspects are discussed in detail in the following sections.
以下各节将详细讨论这些方面。
RPL will be used on a variety of devices that may have resources such as memory varying from a few kilobytes to several hundreds of kilobytes and even megabytes. When memory is highly constrained, it may not be possible to satisfy all the requirements listed in this section. Still it is worth listing all of these in an exhaustive fashion, and implementers will then determine which of these requirements could be satisfied according to the available resources on the device.
RPL将在各种设备上使用,这些设备可能具有从几千字节到几百千字节甚至兆字节不等的内存资源。当内存受到高度限制时,可能无法满足本节列出的所有要求。尽管如此,还是值得以详尽的方式列出所有这些需求,然后实现者将根据设备上的可用资源确定哪些需求可以得到满足。
This section discusses the configuration management, listing the protocol parameters for which configuration management is relevant.
本节讨论配置管理,列出与配置管理相关的协议参数。
Some of the RPL parameters are optional. The requirements for configuration are only applicable for the options that are used.
一些RPL参数是可选的。配置要求仅适用于所使用的选项。
"Architectural Principles of the Internet" [RFC1958], Section 3.8, states: "Avoid options and parameters whenever possible. Any options and parameters should be configured or negotiated dynamically rather than manually". This is especially true in LLNs where the number of devices may be large and manual configuration is infeasible. This has been taken into account in the design of RPL whereby the DODAG root provides a number of parameters to the devices joining the DODAG, thus avoiding cumbersome configuration on the routers and potential sources of misconfiguration (e.g., values of Trickle timers, etc.). Still, there are additional RPL parameters that a RPL implementation should allow to be configured, which are discussed in this section.
“互联网架构原则”[RFC1958]第3.8节规定:“尽可能避免选项和参数。任何选项和参数都应动态配置或协商,而不是手动配置”。这在LLN中尤其如此,在LLN中,设备数量可能很大,手动配置不可行。在RPL的设计中已考虑到这一点,其中DODAG根向加入DODAG的设备提供许多参数,从而避免路由器上的繁琐配置和潜在的错误配置源(例如,涓流定时器的值等)。不过,RPL实现还应该允许配置其他RPL参数,本节将对此进行讨论。
When a node is first powered up:
节点首次通电时:
1. The node may decide to stay silent, waiting to receive DIO messages from DODAG of interest (advertising a supported OF and metrics/constraints) and not send any multicast DIO messages until it has joined a DODAG.
1. 节点可以决定保持静默,等待从感兴趣的DODAG接收DIO消息(公布支持的of和度量/约束),并且在加入DODAG之前不发送任何多播DIO消息。
2. The node may decide to send one or more DIS messages (optionally, requesting DIO for a specific DODAG) as an initial probe for nearby DODAGs, and in the absence of DIO messages in reply after some configurable period of time, the node may decide to root a floating DODAG and start sending multicast DIO messages.
2. 节点可以决定发送一个或多个DIS消息(可选地,请求特定DODAG的DIO)作为附近DODAG的初始探测,并且在一些可配置的时间段之后没有响应的DIO消息的情况下,节点可以决定根浮动DODAG并开始发送多播DIO消息。
A RPL implementation SHOULD allow configuring the preferred mode of operation listed above along with the required parameters (in the second mode: the number of DIS messages and related timer).
RPL实现应允许配置上面列出的首选操作模式以及所需参数(在第二种模式下:DIS消息数和相关计时器)。
RPL specifies a number of protocol parameters considering the large spectrum of applications where it will be used. That said, particular attention has been given to limiting the number of these parameters that must be configured on each RPL router. Instead, a
RPL指定了许多协议参数,考虑到将使用它的应用程序的广泛性。也就是说,特别注意限制每个RPL路由器上必须配置的这些参数的数量。取而代之的是
number of the default values can be used, and when required these parameters can be provided by the DODAG root thus allowing for dynamic parameter setting.
可以使用默认值的数量,并且当需要时,这些参数可以由DODAG根提供,从而允许动态参数设置。
A RPL implementation SHOULD allow configuring the following routing protocol parameters. As pointed out above, note that a large set of parameters is configured on the DODAG root.
RPL实现应允许配置以下路由协议参数。如上所述,请注意,在DODAG根目录上配置了大量参数。
A RPL implementation MUST allow configuring the following RPL parameters:
RPL实现必须允许配置以下RPL参数:
o RPLInstanceID [DIO message, in DIO Base message]. Although the RPLInstanceID must be configured on the DODAG root, it must also be configured as a policy on every node in order to determine whether or not the node should join a particular DODAG. Note that a second RPLInstanceID can be configured on the node, should it become root of a floating DODAG.
o RPLInstanceID[DIO消息,在DIO基本消息中]。尽管必须在DODAG根上配置RPLInstanceID,但它也必须在每个节点上配置为策略,以确定节点是否应加入特定的DODAG。请注意,如果第二个RPLInstanceID成为浮动DODAG的根,则可以在节点上配置它。
o List of supported Objective Code Points (OCPs)
o 支持的目标代码点(OCP)列表
o List of supported metrics: [RFC6551] specifies a number of metrics and constraints used for the DODAG formation. Thus, a RPL implementation should allow configuring the list of metrics that a node can accept and understand. If a DIO is received with a metric and/or constraint that is not understood or supported, as specified in Section 8.5, the node would join as a leaf node.
o 支持的指标列表:[RFC6551]指定用于DODAG形成的许多指标和约束。因此,RPL实现应该允许配置节点可以接受和理解的度量列表。如第8.5节所述,如果接收到的DIO带有无法理解或支持的度量和/或约束,则该节点将作为叶节点加入。
o Prefix Information, along with valid and preferred lifetime and the 'L' and 'A' flags. [DIO message, Prefix Information Option]. A RPL implementation SHOULD allow configuring if the Prefix Information option must be carried with the DIO message to distribute the Prefix Information for autoconfiguration. In that case, the RPL implementation MUST allow the list of prefixes to be advertised in the PIO along with the corresponding flags.
o 前缀信息,以及有效和首选的生存期以及“L”和“A”标志。[DIO消息,前缀信息选项]。RPL实现应允许配置前缀信息选项是否必须与DIO消息一起携带,以分发用于自动配置的前缀信息。在这种情况下,RPL实现必须允许在PIO中公布前缀列表以及相应的标志。
o Solicited Information [DIS message, in Solicited Information option]. Note that a RPL implementation SHOULD allow configuring when such messages should be sent and under which circumstances, along with the value of the RPLInstance ID, 'V'/'I'/'D' flags.
o 请求信息[DIS消息,在请求信息选项中]。请注意,RPL实现应允许配置何时发送此类消息以及在何种情况下发送,以及RPLINInstance ID“V'/'I'/'D”标志的值。
o 'K' flag: when a node should set the 'K' flag in a DAO message [DAO message, in DAO Base message].
o “K”标志:节点应在DAO消息中设置“K”标志的时间[DAO消息,在DAO基本消息中]。
o MOP (Mode of Operation) [DIO message, in DIO Base message].
o MOP(操作模式)[DIO消息,在DIO基本消息中]。
o Route Information (and preference) [DIO message, in Route Information option]
o 路由信息(和首选项)[DIO消息,路由信息选项中]
18.2.4. Protocol Parameters to Be Configured on Every Non-DODAG-Root Router in the LLN
18.2.4. 要在LLN中的每个非DODAG根路由器上配置的协议参数
A RPL implementation MUST allow configuring the Target prefix [DAO message, in RPL Target option].
RPL实现必须允许配置目标前缀[DAO消息,在RPL目标选项中]。
Furthermore, there are circumstances where a node may want to designate a Target to allow for specific processing of the Target (prioritization, etc.). Such processing rules are out of scope for this specification. When used, a RPL implementation SHOULD allow configuring the Target Descriptor on a per-Target basis (for example, using access lists).
此外,在某些情况下,节点可能希望指定一个目标,以允许对目标进行特定处理(优先级排序等)。此类处理规则超出本规范的范围。使用时,RPL实现应允许在每个目标的基础上配置目标描述符(例如,使用访问列表)。
A node whose DODAG parent set is empty may become the DODAG root of a floating DODAG. It may also set its DAGPreference such that it is less preferred. Thus, a RPL implementation MUST allow configuring the set of actions that the node should initiate in this case:
DODAG父集为空的节点可能成为浮动DODAG的DODAG根。它还可以设置其首选项,以减少首选项。因此,RPL实现必须允许配置节点在这种情况下应启动的操作集:
o Start its own (floating) DODAG: the new DODAGID must be configured in addition to its DAGPreference.
o 启动自己的(浮动)DODAG:除了其首选项之外,还必须配置新的DODAGID。
o Poison the broken path (see procedure in Section 8.2.2.5).
o 对断裂路径进行毒害(参见第8.2.2.5节中的程序)。
o Trigger a local repair.
o 触发局部修复。
In addition, several other parameters are configured only on the DODAG root and advertised in options carried in DIO messages.
此外,其他几个参数仅在DODAG根目录上配置,并在DIO消息中的选项中公布。
As specified in Section 8.3, a RPL implementation makes use of Trickle timers to govern the sending of DIO messages. The operation of the Trickle algorithm is determined by a set of configurable parameters, which MUST be configurable and that are then advertised by the DODAG root along the DODAG in DIO messages.
如第8.3节所述,RPL实现利用涓流定时器来控制DIO消息的发送。涓流算法的操作由一组可配置参数决定,这些参数必须是可配置的,然后由DODAG根用户在DIO消息中沿DODAG发布。
o DIOIntervalDoublings [DIO message, in DODAG Configuration option]
o DIO IntervalDoublings[DIO消息,在DODAG配置选项中]
o DIOIntervalMin [DIO message, in DODAG Configuration option]
o DIOIntervalMin[DIO消息,在DODAG配置选项中]
o DIORedundancyConstant [DIO message, in DODAG Configuration option]
o DIORedundancyConstant[DIO消息,在DODAG配置选项中]
In addition, a RPL implementation SHOULD allow for configuring the following set of RPL parameters:
此外,RPL实现应允许配置以下RPL参数集:
o Path Control Size [DIO message, in DODAG Configuration option]
o 路径控制大小[DIO消息,在DODAG配置选项中]
o MinHopRankIncrease [DIO message, in DODAG Configuration option]
o MinHopRankIncrease[DIO消息,在DODAG配置选项中]
o The DODAGPreference field [DIO message, DIO Base object]
o DODAGPreference字段[DIO消息,DIO基本对象]
o DODAGID [DIO message, in DIO Base option] and [DAO message, when the 'D' flag of the DAO message is set]
o DODAGID[DIO消息,在DIO基选项中]和[DAO消息,当设置DAO消息的'D'标志时]
DAG root behavior: in some cases, a node may not want to permanently act as a floating DODAG root if it cannot join a grounded DODAG. For example, a battery-operated node may not want to act as a floating DODAG root for a long period of time. Thus, a RPL implementation MAY support the ability to configure whether or not a node could act as a floating DODAG root for a configured period of time.
DAG根行为:在某些情况下,如果节点无法加入固定的DODAG,则可能不希望永久充当浮动DODAG根。例如,电池操作的节点可能不想长时间充当浮动DODAG根。因此,RPL实现可以支持配置节点是否可以在配置的时间段内充当浮动DODAG根的能力。
DAG Version Number Increment: a RPL implementation may allow, by configuration at the DODAG root, refreshing the DODAG states by updating the DODAGVersionNumber. A RPL implementation SHOULD allow configuring whether or not periodic or event triggered mechanisms are used by the DODAG root to control DODAGVersionNumber change (which triggers a global repair as specified in Section 3.2.2).
DAG版本号增量:RPL实现可以通过在DODAG根目录下进行配置,通过更新DODAG版本号来刷新DODAG状态。RPL实现应允许配置DODAG根用户是否使用定期或事件触发机制来控制DODAGVersionNumber更改(如第3.2.2节所述触发全局修复)。
DAO messages are optional and used in DODAGs that require Downward routing operation. This section deals with the set of parameters related to DAO messages and provides recommendations on their configuration.
DAO消息是可选的,用于需要向下路由操作的DoDAG中。本节讨论与DAO消息相关的参数集,并提供有关其配置的建议。
As stated in Section 9.5, it is recommended to delay the sending of DAO message to DAO parents in order to maximize the chances to perform route aggregation. Upon receiving a DAO message, the node should thus start a DelayDAO timer. The default value is DEFAULT_DAO_DELAY. A RPL implementation MAY allow for configuring the DelayDAO timer.
如第9.5节所述,建议延迟向DAO父级发送DAO消息,以最大限度地增加执行路由聚合的机会。一旦接收到DAO消息,节点就应该启动一个DelayDAO计时器。默认值是default\u DAO\u DELAY。RPL实现可能允许配置DelayDAO计时器。
In a Storing mode of operation, a storing node may increment DTSN in order to reliably trigger a set of DAO updates from its immediate children, as part of routine routing table updates and maintenance. A RPL implementation MAY allow for configuring a set of rules specifying the triggers for DTSN increment (manual or event-based).
在操作的存储模式中,存储节点可以增加DTSN,以便作为例行路由表更新和维护的一部分,从其直接子节点可靠地触发一组DAO更新。RPL实现可能允许配置一组规则,指定DTSN增量的触发器(手动或基于事件)。
When a DAO entry times out or is invalidated, a node SHOULD make a reasonable attempt to report a No-Path to each of the DAO parents. That number of attempts MAY be configurable.
当DAO条目超时或无效时,节点应该合理地尝试向每个DAO父节点报告No路径。该尝试次数可能是可配置的。
An implementation should support rate-limiting the sending of DAO messages. The related parameters MAY be configurable.
实现应该支持限制DAO消息的发送速率。相关参数可以配置。
As described in Section 10, the security features described in this document are optional to implement and a given implementation may support a subset (including the empty set) of the described security features.
如第10节所述,本文档中描述的安全特性是可选的,并且给定的实现可能支持所述安全特性的子集(包括空集)。
To this end, an implementation supporting described security features may conceptually implement a security policy database. In support of the security mechanisms, a RPL implementation SHOULD allow for configuring a subset of the following parameters:
为此,支持所述安全特性的实现可以在概念上实现安全策略数据库。为支持安全机制,RPL实现应允许配置以下参数的子集:
o Security Modes accepted [Unsecured mode, Preinstalled mode, Authenticated mode]
o 接受安全模式[不安全模式、预装模式、认证模式]
o KIM values accepted [Secure RPL control messages, in Security section]
o 接受KIM值[安全部分中的安全RPL控制消息]
o Level values accepted [Secure RPL control messages, in Security section]
o 接受的级别值[安全部分中的安全RPL控制消息]
o Algorithm values accepted [Secure RPL control messages, in Security section]
o 接受的算法值[安全RPL控制消息,在安全部分]
o Key material in support of Authenticated or Preinstalled key modes.
o 支持认证或预安装密钥模式的密钥材料。
In addition, a RPL implementation SHOULD allow for configuring a DODAG root with a subset of the following parameters:
此外,RPL实现应允许使用以下参数的子集配置DODAG根:
o Level values advertised [Secure DIO message, in Security section]
o 公布的级别值[安全部分中的安全DIO消息]
o KIM value advertised [Secure DIO message, in Security section]
o KIM value advertised[安全部分中的安全DIO消息]
o Algorithm value advertised [Secure DIO message, in Security section]
o 公布的算法值[安全DIO消息,在安全部分]
This document specifies default values for the following set of RPL variables: DEFAULT_PATH_CONTROL_SIZE DEFAULT_DIO_INTERVAL_MIN DEFAULT_DIO_INTERVAL_DOUBLINGS DEFAULT_DIO_REDUNDANCY_CONSTANT
本文档为以下RPL变量集指定默认值:默认值\路径\控制\大小默认值\间隔\最小值默认值\间隔\倍增默认值\冗余\常数
DEFAULT_MIN_HOP_RANK_INCREASE DEFAULT_DAO_DELAY
默认值\最小值\跃点\排名\增加默认值\到达\延迟
It is recommended to specify default values in protocols; that being said, as discussed in [RFC5706], default values may make less and less sense. RPL is a routing protocol that is expected to be used in a number of contexts where network characteristics such as the number of nodes and link and node types are expected to vary significantly. Thus, these default values are likely to change with the context and as the technology evolves. Indeed, LLNs' related technology (e.g., hardware, link layers) have been evolving dramatically over the past few years and such technologies are expected to change and evolve considerably in the coming years.
建议在协议中指定默认值;也就是说,正如[RFC5706]中所讨论的,默认值的意义可能越来越小。RPL是一种路由协议,预计将在网络特征(如节点数量、链路和节点类型)发生显著变化的许多环境中使用。因此,这些默认值可能会随着上下文和技术的发展而变化。事实上,LLN的相关技术(如硬件、链路层)在过去几年中一直在急剧发展,预计这些技术将在未来几年发生重大变化。
The proposed values are not based on extensive best current practices and are considered to be conservative.
建议值并非基于广泛的当前最佳实践,被认为是保守的。
Several RPL parameters should be monitored to verify the correct operation of the routing protocol and the network itself. This section lists the set of monitoring parameters of interest.
应监控多个RPL参数,以验证路由协议和网络本身的正确操作。本节列出了感兴趣的一组监控参数。
A RPL implementation SHOULD provide information about the following parameters:
RPL实现应提供有关以下参数的信息:
o DODAG Version number [DIO message, in DIO Base message]
o DODAG版本号[DIO消息,在DIO基本消息中]
o Status of the 'G' flag [DIO message, in DIO Base message]
o “G”标志的状态[DIO消息,在DIO基本消息中]
o Status of the MOP field [DIO message, in DIO Base message]
o MOP字段的状态[DIO消息,在DIO基本消息中]
o Value of the DTSN [DIO message, in DIO Base message]
o DTSN的值[DIO消息,在DIO基本消息中]
o Value of the Rank [DIO message, in DIO Base message]
o 秩值[DIO消息,在DIO基本消息中]
o DAOSequence: Incremented at each unique DAO message, echoed in the DAO-ACK message [DAO and DAO-ACK messages]
o DAOSequence:在每个唯一的DAO消息处递增,在DAO-ACK消息[DAO和DAO-ACK消息]中回显
o Route Information [DIO message, Route Information Option] (list of IPv6 prefixes per parent along with lifetime and preference]
o 路由信息[DIO消息,路由信息选项](每个父级的IPv6前缀列表以及生存期和首选项)
o Trickle parameters:
o 涓流参数:
* DIOIntervalDoublings [DIO message, in DODAG Configuration option]
* DIO IntervalDoublings[DIO消息,在DODAG配置选项中]
* DIOIntervalMin [DIO message, in DODAG Configuration option]
* DIOIntervalMin[DIO消息,在DODAG配置选项中]
* DIORedundancyConstant [DIO message, in DODAG Configuration option]
* DIORedundancyConstant[DIO消息,在DODAG配置选项中]
o Path Control Size [DIO message, in DODAG Configuration option]
o 路径控制大小[DIO消息,在DODAG配置选项中]
o MinHopRankIncrease [DIO message, in DODAG Configuration option]
o MinHopRankIncrease[DIO消息,在DODAG配置选项中]
Values that may be monitored only on the DODAG root:
只能在DODAG根目录上监视的值:
o Transit Information [DAO, Transit Information option]: A RPL implementation SHOULD allow configuring whether the set of received Transit Information options should be displayed on the DODAG root. In this case, the RPL database of received Transit Information should also contain the Path Sequence, Path Control, Path Lifetime, and Parent Address.
o 运输信息[DAO,运输信息选项]:RPL实现应允许配置是否应在DODAG根目录上显示接收的运输信息选项集。在这种情况下,接收到的传输信息的RPL数据库还应该包含路径序列、路径控制、路径生存期和父地址。
Detection of DODAG inconsistencies is particularly critical in RPL networks. Thus, it is recommended for a RPL implementation to provide appropriate monitoring tools. A RPL implementation SHOULD provide a counter reporting the number of a times the node has detected an inconsistency with respect to a DODAG parent, e.g., if the DODAGID has changed.
在RPL网络中,检测DODAG不一致性尤其重要。因此,建议RPL实现提供适当的监视工具。RPL实现应提供一个计数器,报告节点检测到与DODAG父节点不一致的次数,例如,如果DODAGID已更改。
When possible more granular information about inconsistency detection should be provided. A RPL implementation MAY provide counters reporting the number of following inconsistencies:
如果可能,应提供有关不一致性检测的更详细信息。RPL实现可能会提供报告以下不一致数量的计数器:
o Packets received with 'O' bit set (to Down) from a node with a higher Rank
o 从具有较高秩的节点接收设置为“O”位(向下)的数据包
o Packets received with 'O' bit cleared (to Up) from a node with a lower Rank
o 从具有较低秩的节点接收的清除了“O”位的数据包
o Number of packets with the 'F' bit set
o 设置了“F”位的数据包数
o Number of packets with the 'R' bit set
o 设置了“R”位的数据包数
A node in the candidate neighbor list is a node discovered by the same means and qualified to potentially become a parent (with high enough local confidence). A RPL implementation SHOULD provide a way
候选邻居列表中的节点是通过相同的方法发现并有资格成为父节点(具有足够高的局部置信度)的节点。RPL实现应该提供一种方法
to allow for the candidate neighbor list to be monitored with some metric reflecting local confidence (the degree of stability of the neighbors) as measured by some metrics.
允许使用反映局部置信度(邻居的稳定性程度)的某些度量来监视候选邻居列表,如某些度量所测量的。
A RPL implementation MAY provide a counter reporting the number of times a candidate neighbor has been ignored, should the number of candidate neighbors exceed the maximum authorized value.
如果候选邻居的数量超过最大授权值,RPL实现可以提供一个计数器,报告候选邻居被忽略的次数。
For each DODAG, a RPL implementation is expected to keep track of the following DODAG table values:
对于每个DODAG,RPL实现应跟踪以下DODAG表值:
o RPLInstanceID
o RPLInstanceID
o DODAGID
o 多达吉德
o DODAGVersionNumber
o DODAGVersionNumber
o Rank
o 等级
o Objective Code Point
o 目标码点
o A set of DODAG parents
o 一组DODAG父母
o A set of prefixes offered Upward along the DODAG
o 沿DODAG向上提供的一组前缀
o Trickle timers used to govern the sending of DIO messages for the DODAG
o 用于控制DODAG的DIO消息发送的涓流计时器
o List of DAO parents
o DAO父母名单
o DTSN
o DTSN
o Node status (router versus leaf)
o 节点状态(路由器与叶)
A RPL implementation SHOULD allow for monitoring the set of parameters listed above.
RPL实现应允许监控上述参数集。
A RPL implementation maintains several information elements related to the DODAG and the DAO entries (for storing nodes). In the case of a non-storing node, a limited amount of information is maintained (the routing table is mostly reduced to a set of DODAG parents along with characteristics of the DODAG as mentioned above); whereas in the case of storing nodes, this information is augmented with routing entries.
RPL实现维护几个与DODAG和DAO条目(用于存储节点)相关的信息元素。在非存储节点的情况下,维持有限的信息量(路由表主要减少为一组DODAG父节点以及如上所述的DODAG的特征);然而,在存储节点的情况下,该信息会通过路由条目进行扩充。
A RPL implementation SHOULD allow for the following parameters to be monitored:
RPL实现应允许监控以下参数:
o Next Hop (DODAG parent)
o 下一跳(DODAG父节点)
o Next Hop Interface
o 下一跳接口
o Path metrics value for each DODAG parent
o 每个DODAG父级的路径度量值
A DAO Routing Table entry conceptually contains the following elements (for storing nodes only):
DAO路由表条目在概念上包含以下元素(仅用于存储节点):
o Advertising Neighbor Information
o 广告邻居信息
o IPv6 address
o IPv6地址
o Interface ID to which DAO parents has this entry been reported
o DAO父级向其报告此项的接口ID
o Retry counter
o 重试计数器
o Logical equivalent of DAO Content:
o DAO内容的逻辑等价物:
* DAO-Sequence
* DAO序列
* Path Sequence
* 路径序列
* DAO Lifetime
* 道寿命
* DAO Path Control
* DAO路径控制
o Destination Prefix (or address or Mcast Group)
o 目标前缀(或地址或Mcast组)
A RPL implementation SHOULD provide information about the state of each DAO Routing Table entry states.
RPL实现应该提供关于每个DAO路由表条目状态的信息。
Fault management is a critical component used for troubleshooting, verification of the correct mode of operation of the protocol, and network design; also, it is a key component of network performance monitoring. A RPL implementation SHOULD allow the provision of the following information related to fault managements:
故障管理是用于故障排除、验证协议正确运行模式和网络设计的关键组件;此外,它也是网络性能监控的关键组件。RPL实施应允许提供与故障管理相关的以下信息:
o Memory overflow along with the cause (e.g., routing tables overflow, etc.)
o 内存溢出及其原因(如路由表溢出等)
o Number of times a packet could not be sent to a DODAG parent flagged as valid
o 无法将数据包发送到标记为有效的DODAG父级的次数
o Number of times a packet has been received for which the router did not have a corresponding RPLInstanceID
o 路由器没有相应RPLInstanceID的数据包被接收的次数
o Number of times a local repair procedure was triggered
o 触发本地修复程序的次数
o Number of times a global repair was triggered by the DODAG root
o DODAG根目录触发全局修复的次数
o Number of received malformed messages
o 收到的格式错误的邮件数
o Number of seconds with packets to forward and no next hop (DODAG parent)
o 数据包要转发且无下一跳的秒数(DODAG父级)
o Number of seconds without next hop (DODAG parent)
o 无下一跳的秒数(DODAG父级)
o Number of times a node has joined a DODAG as a leaf because it received a DIO with a metric/constraint that was not understood and it was configured to join as a leaf node in this case (see Section 18.6)
o 节点作为叶节点加入DODAG的次数,因为它接收到的DIO具有不可理解的度量/约束,并且在这种情况下被配置为作为叶节点加入(参见第18.6节)
It is RECOMMENDED to report faults via at least error log messages. Other protocols may be used to report such faults.
建议至少通过错误日志消息报告故障。其他协议可用于报告此类故障。
Policy rules can be used by a RPL implementation to determine whether or not the node is allowed to join a particular DODAG advertised by a neighbor by means of DIO messages.
RPL实现可以使用策略规则来确定是否允许节点加入邻居通过DIO消息发布的特定DODAG。
This document specifies operation within a single DODAG. A DODAG is characterized by the following tuple (RPLInstanceID, DODAGID). Furthermore, as pointed out above, DIO messages are used to advertise other DODAG characteristics such as the routing metrics and constraints used to build to the DODAG and the Objective Function in use (specified by OCP).
本文件规定了单个DODAG内的操作。DODAG由以下元组(RPLInstanceID,DODAGID)表示。此外,如上所述,DIO消息用于宣传其他DODAG特性,例如用于构建DODAG的路由度量和约束以及正在使用的目标函数(由OCP指定)。
The first policy rules consist of specifying the following conditions that a RPL node must satisfy to join a DODAG:
第一个策略规则包括指定RPL节点加入DODAG必须满足的以下条件:
o RPLInstanceID
o RPLInstanceID
o List of supported routing metrics and constraints
o 支持的路由度量和约束列表
o Objective Function (OCP values)
o 目标函数(OCP值)
A RPL implementation MUST allow configuring these parameters and SHOULD specify whether the node must simply ignore the DIO if the advertised DODAG is not compliant with the local policy or whether the node should join as the leaf node if only the list of supported
RPL实现必须允许配置这些参数,并应指定如果播发的DODAG不符合本地策略,该节点是否必须忽略DIO,或者如果只有受支持的列表,该节点是否应作为叶节点加入
routing metrics and constraints, and the OF is not supported. Additionally, a RPL implementation SHOULD allow for the addition of the DODAGID as part of the policy.
路由度量和约束,不支持的。此外,RPL实现应允许添加DODAGID作为策略的一部分。
A RPL implementation SHOULD allow configuring the set of acceptable or preferred Objective Functions (OFs) referenced by their Objective Code Points (OCPs) for a node to join a DODAG, and what action should be taken if none of a node's candidate neighbors advertise one of the configured allowable Objective Functions, or if the advertised metrics/constraint is not understood/supported. Two actions can be taken in this case:
RPL实现应允许为节点配置由其目标代码点(OCP)引用的一组可接受或首选目标函数(of)以加入DODAG,以及如果节点的候选邻居均未公布其中一个已配置的可允许目标函数,则应采取什么措施,或者如果不理解/不支持公布的指标/约束。在这种情况下,可以采取两种措施:
o The node joins the DODAG as a leaf node as specified in Section 8.5.
o 按照第8.5节的规定,节点作为叶节点连接DODAG。
o The node does not join the DODAG.
o 该节点未加入DODAG。
A node in an LLN may learn routing information from different routing protocols including RPL. In this case, it is desirable to control, via administrative preference, which route should be favored. An implementation SHOULD allow for the specification of an administrative preference for the routing protocol from which the route was learned.
LLN中的节点可以从包括RPL的不同路由协议学习路由信息。在这种情况下,希望通过行政偏好来控制应该选择哪条路线。一个实现应该允许为从中学习路由的路由协议指定管理首选项。
Internal Data Structures: some RPL implementations may limit the size of the candidate neighbor list in order to bound the memory usage; in which case, some otherwise viable candidate neighbors may not be considered and simply dropped from the candidate neighbor list.
内部数据结构:一些RPL实现可能会限制候选邻居列表的大小,以限制内存使用;在这种情况下,可能不会考虑其他可行的候选邻居,而只是从候选邻居列表中删除。
A RPL implementation MAY provide an indicator on the size of the candidate neighbor list.
RPL实现可以提供关于候选邻居列表的大小的指示符。
It is RECOMMENDED to quarantine neighbors that start emitting malformed messages at unacceptable rates.
建议隔离以不可接受的速率开始发送格式错误消息的邻居。
RPL has very limited impact on other protocols. Where more than one routing protocol is required on a router, such as an LBR, it is expected for the device to support routing redistribution functions between the routing protocols to allow for reachability between the two routing domains. Such redistribution SHOULD be governed by the use of user configurable policy.
RPL对其他协议的影响非常有限。当路由器(如LBR)上需要一个以上的路由协议时,期望设备支持路由协议之间的路由再分配功能,以允许两个路由域之间的可达性。这种重新分配应该由用户可配置策略的使用来管理。
With regard to the impact in terms of traffic on the network, RPL has been designed to limit the control traffic thanks to mechanisms such as Trickle timers (Section 8.3). Thus, the impact of RPL on other protocols should be extremely limited.
关于网络流量方面的影响,RPL设计用于限制控制流量,这得益于涓流计时器等机制(第8.3节)。因此,RPL对其他协议的影响应该非常有限。
Performance management is always an important aspect of a protocol, and RPL is not an exception. Several metrics of interest have been specified by the IP Performance Monitoring (IPPM) working group: that being said, they will be hardly applicable to LLN considering the cost of monitoring these metrics in terms of resources on the devices and required bandwidth. Still, RPL implementations MAY support some of these, and other parameters of interest are listed below:
性能管理始终是协议的一个重要方面,RPL也不例外。IP性能监控(IPPM)工作组已经指定了几个重要指标:也就是说,考虑到监控这些指标在设备上的资源和所需带宽方面的成本,它们几乎不适用于LLN。尽管如此,RPL实现可能支持其中一些,下面列出了其他感兴趣的参数:
o Number of repairs and time to repair in seconds (average, variance)
o 修理次数和修理时间(秒)(平均值、差异)
o Number of times and time period during which a devices could not forward a packet because of a lack of a reachable neighbor in its routing table
o 由于路由表中缺少可到达邻居,设备无法转发数据包的次数和时间段
o Monitoring of resources consumption by RPL in terms of bandwidth and required memory
o 根据带宽和所需内存监控RPL的资源消耗
o Number of RPL control messages sent and received
o 发送和接收的RPL控制消息数
There may be situations where a node should be placed in "verbose" mode to improve diagnostics. Thus, a RPL implementation SHOULD provide the ability to place a node in and out of verbose mode in order to get additional diagnostic information.
在某些情况下,可能需要将节点置于“详细”模式以改进诊断。因此,RPL实现应该提供将节点置于详细模式和脱离详细模式的能力,以便获得额外的诊断信息。
From a security perspective, RPL networks are no different from any other network. They are vulnerable to passive eavesdropping attacks and, potentially, even active tampering when physical access to a wire is not required to participate in communications. The very nature of ad hoc networks and their cost objectives impose additional security constraints, which perhaps make these networks the most difficult environments to secure. Devices are low-cost and have limited capabilities in terms of computing power, available storage, and power drain; it cannot always be assumed they have a trusted computing base or a high-quality random number generator aboard.
从安全角度来看,RPL网络与任何其他网络都没有区别。当参与通信不需要物理访问电线时,它们容易受到被动窃听攻击,甚至可能受到主动篡改。adhoc网络的本质及其成本目标施加了额外的安全约束,这可能使这些网络成为最难保护的环境。设备成本低,在计算能力、可用存储和功耗方面能力有限;不能总是假设他们拥有可信的计算基础或高质量的随机数发生器。
Communications cannot rely on the online availability of a fixed infrastructure and might involve short-term relationships between devices that may never have communicated before. These constraints might severely limit the choice of cryptographic algorithms and protocols and influence the design of the security architecture because the establishment and maintenance of trust relationships between devices need to be addressed with care. In addition, battery lifetime and cost constraints put severe limits on the security overhead these networks can tolerate, something that is of far less concern with higher bandwidth networks. Most of these security architectural elements can be implemented at higher layers and may, therefore, be considered to be out of scope for this specification. Special care, however, needs to be exercised with respect to interfaces to these higher layers.
通信不能依赖于固定基础设施的在线可用性,可能涉及设备之间的短期关系,这些设备可能以前从未进行过通信。这些限制可能会严重限制密码算法和协议的选择,并影响安全体系结构的设计,因为需要小心处理设备之间信任关系的建立和维护。此外,电池寿命和成本限制严重限制了这些网络所能承受的安全开销,而对于更高带宽的网络来说,这一点就不那么重要了。这些安全体系结构元素中的大多数可以在更高的层上实现,因此可能被认为超出了本规范的范围。但是,需要特别注意这些更高层的接口。
The security mechanisms in this standard are based on symmetric-key and public-key cryptography and use keys that are to be provided by higher-layer processes. The establishment and maintenance of these keys are out of scope for this specification. The mechanisms assume a secure implementation of cryptographic operations and secure and authentic storage of keying material.
本标准中的安全机制基于对称密钥和公钥加密,并使用高层进程提供的密钥。这些密钥的建立和维护不在本规范的范围内。这些机制假定加密操作的安全实现以及密钥材料的安全可靠存储。
The security mechanisms specified provide particular combinations of the following security services:
指定的安全机制提供以下安全服务的特定组合:
Data confidentiality: Assurance that transmitted information is only disclosed to parties for which it is intended.
数据保密性:保证传输的信息仅向其预期目的方披露。
Data authenticity: Assurance of the source of transmitted information (and, hereby, that information was not modified in transit).
数据真实性:保证传输信息的来源(因此,信息在传输过程中未被修改)。
Replay protection: Assurance that a duplicate of transmitted information is detected.
重播保护:确保检测到传输信息的重复。
Timeliness (delay protection): Assurance that transmitted information was received in a timely manner.
及时性(延迟保护):确保及时接收传输的信息。
The actual protection provided can be adapted on a per-packet basis and allows for varying levels of data authenticity (to minimize security overhead in transmitted packets where required) and for optional data confidentiality. When nontrivial protection is required, replay protection is always provided.
所提供的实际保护可基于每个数据包进行调整,并允许不同级别的数据真实性(以在需要时最小化传输数据包中的安全开销)和可选的数据保密性。当需要非平凡保护时,始终提供重播保护。
Replay protection is provided via the use of a non-repeating value (CCM nonce) in the packet protection process and storage of some status information (originating device and the CCM nonce counter last received from that device), which allows detection of whether this particular CCM nonce value was used previously by the originating
重播保护通过在分组保护过程中使用非重复值(CCM nonce)和存储一些状态信息(发起设备和上次从该设备接收的CCM nonce计数器)来提供,这允许检测发起设备之前是否使用了该特定CCM nonce值
device. In addition, so-called delay protection is provided amongst those devices that have a loosely synchronized clock on board. The acceptable time delay can be adapted on a per-packet basis and allows for varying latencies (to facilitate longer latencies in packets transmitted over a multi-hop communication path).
装置此外,在板上具有松散同步时钟的设备中提供所谓的延迟保护。可接受的时间延迟可基于每个分组进行调整,并允许不同的延迟(以促进在多跳通信路径上传输的分组中更长的延迟)。
Cryptographic protection may use a key shared between two peer devices (link key) or a key shared among a group of devices (group key), thus allowing some flexibility and application-specific trade-offs between key storage and key maintenance costs versus the cryptographic protection provided. If a group key is used for peer-to-peer communication, protection is provided only against outsider devices and not against potential malicious devices in the key-sharing group.
密码保护可以使用在两个对等设备之间共享的密钥(链路密钥)或在一组设备之间共享的密钥(组密钥),从而允许在密钥存储和密钥维护成本与所提供的密码保护之间进行某种灵活性和特定于应用程序的权衡。如果组密钥用于对等通信,则仅针对外部设备提供保护,而不针对密钥共享组中的潜在恶意设备提供保护。
Data authenticity may be provided using symmetric-key-based or public-key-based techniques. With public-key-based techniques (via signatures), one corroborates evidence as to the unique originator of transmitted information, whereas with symmetric-key-based techniques, data authenticity is only provided relative to devices in a key-sharing group. Thus, public-key-based authentication may be useful in scenarios that require a more fine-grained authentication than can be provided with symmetric-key-based authentication techniques alone, such as with group communications (broadcast, multicast) or in scenarios that require non-repudiation.
可以使用基于对称密钥或基于公钥的技术来提供数据真实性。使用基于公钥的技术(通过签名),可以证实传输信息的唯一发起人的证据,而使用基于对称密钥的技术,只能提供与密钥共享组中的设备相关的数据真实性。因此,在需要比单独使用基于对称密钥的认证技术提供的更细粒度认证的场景中,基于公钥的认证可能是有用的,例如使用组通信(广播、多播)或在需要不可否认性的场景中。
The RPL control message is an ICMP information message type that is to be used carry DODAG Information Objects, DODAG Information Solicitations, and Destination Advertisement Objects in support of RPL operation.
RPL控制消息是一种ICMP信息消息类型,用于承载DODAG信息对象、DODAG信息请求和目标广告对象,以支持RPL操作。
IANA has defined an ICMPv6 Type Number Registry. The type value for the RPL control message is 155.
IANA已定义ICMPv6类型号注册表。RPL控制消息的类型值为155。
IANA has created a registry, RPL Control Codes, for the Code field of the ICMPv6 RPL control message.
IANA已经为ICMPv6 RPL控制消息的代码字段创建了一个注册表RPL控制代码。
New codes may be allocated only by an IETF Review. Each code is tracked with the following qualities:
新代码只能通过IETF评审进行分配。每种代码都具有以下特征:
o Code
o 密码
o Description
o 描述
o Defining RFC
o 定义RFC
The following codes are currently defined:
目前定义了以下代码:
+------+----------------------------------------------+-------------+ | Code | Description | Reference | +------+----------------------------------------------+-------------+ | 0x00 | DODAG Information Solicitation | This | | | | document | | | | | | 0x01 | DODAG Information Object | This | | | | document | | | | | | 0x02 | Destination Advertisement Object | This | | | | document | | | | | | 0x03 | Destination Advertisement Object | This | | | Acknowledgment | document | | | | | | 0x80 | Secure DODAG Information Solicitation | This | | | | document | | | | | | 0x81 | Secure DODAG Information Object | This | | | | document | | | | | | 0x82 | Secure Destination Advertisement Object | This | | | | document | | | | | | 0x83 | Secure Destination Advertisement Object | This | | | Acknowledgment | document | | | | | | 0x8A | Consistency Check | This | | | | document | +------+----------------------------------------------+-------------+
+------+----------------------------------------------+-------------+ | Code | Description | Reference | +------+----------------------------------------------+-------------+ | 0x00 | DODAG Information Solicitation | This | | | | document | | | | | | 0x01 | DODAG Information Object | This | | | | document | | | | | | 0x02 | Destination Advertisement Object | This | | | | document | | | | | | 0x03 | Destination Advertisement Object | This | | | Acknowledgment | document | | | | | | 0x80 | Secure DODAG Information Solicitation | This | | | | document | | | | | | 0x81 | Secure DODAG Information Object | This | | | | document | | | | | | 0x82 | Secure Destination Advertisement Object | This | | | | document | | | | | | 0x83 | Secure Destination Advertisement Object | This | | | Acknowledgment | document | | | | | | 0x8A | Consistency Check | This | | | | document | +------+----------------------------------------------+-------------+
RPL Control Codes
RPL控制代码
IANA has created a registry for the 3-bit Mode of Operation (MOP), which is contained in the DIO Base.
IANA已经为3位操作模式(MOP)创建了一个注册表,它包含在DIO库中。
New values may be allocated only by an IETF Review. Each value is tracked with the following qualities:
新值只能通过IETF评审进行分配。每个值都具有以下特征:
o Mode of Operation Value
o 操作模式值
o Capability description
o 能力描述
o Defining RFC
o 定义RFC
Four values are currently defined:
目前定义了四个值:
+----------+------------------------------------------+-------------+ | MOP | Description | Reference | | value | | | +----------+------------------------------------------+-------------+ | 0 | No Downward routes maintained by RPL | This | | | | document | | | | | | 1 | Non-Storing Mode of Operation | This | | | | document | | | | | | 2 | Storing Mode of Operation with no | This | | | multicast support | document | | | | | | 3 | Storing Mode of Operation with multicast | This | | | support | document | +----------+------------------------------------------+-------------+
+----------+------------------------------------------+-------------+ | MOP | Description | Reference | | value | | | +----------+------------------------------------------+-------------+ | 0 | No Downward routes maintained by RPL | This | | | | document | | | | | | 1 | Non-Storing Mode of Operation | This | | | | document | | | | | | 2 | Storing Mode of Operation with no | This | | | multicast support | document | | | | | | 3 | Storing Mode of Operation with multicast | This | | | support | document | +----------+------------------------------------------+-------------+
DIO Mode of Operation
DIO操作模式
The rest of the range, decimal 4 to 7, is currently unassigned.
范围的其余部分(十进制4到7)当前未分配。
IANA has created a registry for the RPL Control Message Options.
IANA已经为RPL控制消息选项创建了一个注册表。
New values may be allocated only by an IETF Review. Each value is tracked with the following qualities:
新值只能通过IETF评审进行分配。每个值都具有以下特征:
o Value
o 价值
o Meaning
o 意思
o Defining RFC
o 定义RFC
+-------+-----------------------+---------------+ | Value | Meaning | Reference | +-------+-----------------------+---------------+ | 0x00 | Pad1 | This document | | | | | | 0x01 | PadN | This document | | | | | | 0x02 | DAG Metric Container | This Document | | | | | | 0x03 | Routing Information | This Document | | | | | | 0x04 | DODAG Configuration | This Document | | | | | | 0x05 | RPL Target | This Document | | | | | | 0x06 | Transit Information | This Document | | | | | | 0x07 | Solicited Information | This Document | | | | | | 0x08 | Prefix Information | This Document | | | | | | 0x09 | Target Descriptor | This Document | +-------+-----------------------+---------------+
+-------+-----------------------+---------------+ | Value | Meaning | Reference | +-------+-----------------------+---------------+ | 0x00 | Pad1 | This document | | | | | | 0x01 | PadN | This document | | | | | | 0x02 | DAG Metric Container | This Document | | | | | | 0x03 | Routing Information | This Document | | | | | | 0x04 | DODAG Configuration | This Document | | | | | | 0x05 | RPL Target | This Document | | | | | | 0x06 | Transit Information | This Document | | | | | | 0x07 | Solicited Information | This Document | | | | | | 0x08 | Prefix Information | This Document | | | | | | 0x09 | Target Descriptor | This Document | +-------+-----------------------+---------------+
RPL Control Message Options
RPL控制消息选项
IANA has created a registry to manage the codespace of the Objective Code Point (OCP) field.
IANA创建了一个注册表来管理目标代码点(OCP)字段的代码空间。
No OCPs are defined in this specification.
本规范中未定义OCP。
New codes may be allocated only by an IETF Review. Each code is tracked with the following qualities:
新代码只能通过IETF评审进行分配。每种代码都具有以下特征:
o Code
o 密码
o Description
o 描述
o Defining RFC
o 定义RFC
IANA has created a registry for the values of the 8-bit Algorithm field in the Security section.
IANA已经为安全部分中的8位算法字段的值创建了一个注册表。
New values may be allocated only by an IETF Review. Each value is tracked with the following qualities:
新值只能通过IETF评审进行分配。每个值都具有以下特征:
o Value
o 价值
o Encryption/MAC
o 加密/MAC
o Signature
o 签名
o Defining RFC
o 定义RFC
The following value is currently defined:
当前定义了以下值:
+-------+------------------+------------------+---------------+ | Value | Encryption/MAC | Signature | Reference | +-------+------------------+------------------+---------------+ | 0 | CCM with AES-128 | RSA with SHA-256 | This document | +-------+------------------+------------------+---------------+
+-------+------------------+------------------+---------------+ | Value | Encryption/MAC | Signature | Reference | +-------+------------------+------------------+---------------+ | 0 | CCM with AES-128 | RSA with SHA-256 | This document | +-------+------------------+------------------+---------------+
Security Section Algorithm
安全分区算法
IANA has created a registry for the 8-bit Security Section Flags field.
IANA已经为8位安全部分标志字段创建了一个注册表。
New bit numbers may be allocated only by an IETF Review. Each bit is tracked with the following qualities:
新的位号只能由IETF审查分配。每一位都具有以下品质:
o Bit number (counting from bit 0 as the most significant bit)
o 位号(从位0开始计算为最高有效位)
o Capability description
o 能力描述
o Defining RFC
o 定义RFC
No bit is currently defined for the Security Section Flags field.
安全部分标志字段当前未定义任何位。
IANA has created one registry for the 3-bit Security Level (LVL) field per allocated KIM value.
IANA已为每个分配的KIM值的3位安全级别(LVL)字段创建了一个注册表。
For a given KIM value, new levels may be allocated only by an IETF Review. Each level is tracked with the following qualities:
对于给定的KIM值,新级别只能由IETF评审分配。每一个级别都具有以下品质:
o Level
o 数量
o KIM value
o 金值
o Description
o 描述
o Defining RFC
o 定义RFC
The following levels per KIM value are currently defined:
当前定义了以下每KIM值的级别:
+-------+-----------+---------------+---------------+ | Level | KIM value | Description | Reference | +-------+-----------+---------------+---------------+ | 0 | 0 | See Figure 11 | This document | | | | | | | 1 | 0 | See Figure 11 | This document | | | | | | | 2 | 0 | See Figure 11 | This document | | | | | | | 3 | 0 | See Figure 11 | This document | | | | | | | 0 | 1 | See Figure 11 | This document | | | | | | | 1 | 1 | See Figure 11 | This document | | | | | | | 2 | 1 | See Figure 11 | This document | | | | | | | 3 | 1 | See Figure 11 | This document | | | | | | | 0 | 2 | See Figure 11 | This document | | | | | | | 1 | 2 | See Figure 11 | This document | | | | | | | 2 | 2 | See Figure 11 | This document | | | | | | | 3 | 2 | See Figure 11 | This document | | | | | | | 0 | 3 | See Figure 11 | This document | | | | | | | 1 | 3 | See Figure 11 | This document | | | | | | | 2 | 3 | See Figure 11 | This document | | | | | | | 3 | 3 | See Figure 11 | This document | +-------+-----------+---------------+---------------+
+-------+-----------+---------------+---------------+ | Level | KIM value | Description | Reference | +-------+-----------+---------------+---------------+ | 0 | 0 | See Figure 11 | This document | | | | | | | 1 | 0 | See Figure 11 | This document | | | | | | | 2 | 0 | See Figure 11 | This document | | | | | | | 3 | 0 | See Figure 11 | This document | | | | | | | 0 | 1 | See Figure 11 | This document | | | | | | | 1 | 1 | See Figure 11 | This document | | | | | | | 2 | 1 | See Figure 11 | This document | | | | | | | 3 | 1 | See Figure 11 | This document | | | | | | | 0 | 2 | See Figure 11 | This document | | | | | | | 1 | 2 | See Figure 11 | This document | | | | | | | 2 | 2 | See Figure 11 | This document | | | | | | | 3 | 2 | See Figure 11 | This document | | | | | | | 0 | 3 | See Figure 11 | This document | | | | | | | 1 | 3 | See Figure 11 | This document | | | | | | | 2 | 3 | See Figure 11 | This document | | | | | | | 3 | 3 | See Figure 11 | This document | +-------+-----------+---------------+---------------+
Per-KIM Security Levels
每金安全级别
IANA has created a registry for the DIS (DODAG Informational Solicitation) Flags field.
IANA已经为DIS(DODAG信息征集)标志字段创建了一个注册表。
New bit numbers may be allocated only by an IETF Review. Each bit is tracked with the following qualities:
新的位号只能由IETF审查分配。每一位都具有以下品质:
o Bit number (counting from bit 0 as the most significant bit)
o 位号(从位0开始计算为最高有效位)
o Capability description
o 能力描述
o Defining RFC
o 定义RFC
No bit is currently defined for the DIS (DODAG Informational Solicitation) Flags field.
当前未为DIS(DODAG信息请求)标志字段定义任何位。
IANA has created a registry for the 8-bit DODAG Information Object (DIO) Flags field.
IANA已经为8位DODAG信息对象(DIO)标志字段创建了一个注册表。
New bit numbers may be allocated only by an IETF Review. Each bit is tracked with the following qualities:
新的位号只能由IETF审查分配。每一位都具有以下品质:
o Bit number (counting from bit 0 as the most significant bit)
o 位号(从位0开始计算为最高有效位)
o Capability description
o 能力描述
o Defining RFC
o 定义RFC
No bit is currently defined for the DIS (DODAG Informational Solicitation) Flags.
目前没有为DIS(DODAG信息请求)标志定义任何位。
20.11. New Registry for the Destination Advertisement Object (DAO) Flags
20.11. 目标播发对象(DAO)标志的新注册表
IANA has created a registry for the 8-bit Destination Advertisement Object (DAO) Flags field.
IANA已经为8位目标广告对象(DAO)标志字段创建了一个注册表。
New bit numbers may be allocated only by an IETF Review. Each bit is tracked with the following qualities:
新的位号只能由IETF审查分配。每一位都具有以下品质:
o Bit number (counting from bit 0 as the most significant bit)
o 位号(从位0开始计算为最高有效位)
o Capability description
o 能力描述
o Defining RFC
o 定义RFC
The following bits are currently defined:
当前定义了以下位:
+------------+------------------------------+---------------+ | Bit number | Description | Reference | +------------+------------------------------+---------------+ | 0 | DAO-ACK request (K) | This document | | | | | | 1 | DODAGID field is present (D) | This document | +------------+------------------------------+---------------+
+------------+------------------------------+---------------+ | Bit number | Description | Reference | +------------+------------------------------+---------------+ | 0 | DAO-ACK request (K) | This document | | | | | | 1 | DODAGID field is present (D) | This document | +------------+------------------------------+---------------+
DAO Base Flags
刀基旗
20.12. New Registry for the Destination Advertisement Object (DAO) Acknowledgement Flags
20.12. 目标播发对象(DAO)确认标志的新注册表
IANA has created a registry for the 8-bit Destination Advertisement Object (DAO) Acknowledgement Flags field.
IANA已经为8位目标广告对象(DAO)确认标志字段创建了一个注册表。
New bit numbers may be allocated only by an IETF Review. Each bit is tracked with the following qualities:
新的位号只能由IETF审查分配。每一位都具有以下品质:
o Bit number (counting from bit 0 as the most significant bit)
o 位号(从位0开始计算为最高有效位)
o Capability description
o 能力描述
o Defining RFC
o 定义RFC
The following bit is currently defined:
当前定义了以下位:
+------------+------------------------------+---------------+ | Bit number | Description | Reference | +------------+------------------------------+---------------+ | 0 | DODAGID field is present (D) | This document | +------------+------------------------------+---------------+
+------------+------------------------------+---------------+ | Bit number | Description | Reference | +------------+------------------------------+---------------+ | 0 | DODAGID field is present (D) | This document | +------------+------------------------------+---------------+
DAO-ACK Base Flags
DAO-ACK基本标志
IANA has created a registry for the 8-bit Consistency Check (CC) Flags field.
IANA已经为8位一致性检查(CC)标志字段创建了一个注册表。
New bit numbers may be allocated only by an IETF Review. Each bit is tracked with the following qualities:
新的位号只能由IETF审查分配。每一位都具有以下品质:
o Bit number (counting from bit 0 as the most significant bit)
o 位号(从位0开始计算为最高有效位)
o Capability description
o 能力描述
o Defining RFC
o 定义RFC
The following bit is currently defined:
当前定义了以下位:
+------------+-----------------+---------------+ | Bit number | Description | Reference | +------------+-----------------+---------------+ | 0 | CC Response (R) | This document | +------------+-----------------+---------------+
+------------+-----------------+---------------+ | Bit number | Description | Reference | +------------+-----------------+---------------+ | 0 | CC Response (R) | This document | +------------+-----------------+---------------+
Consistency Check Base Flags
一致性检查基本标志
IANA has created a registry for the 8-bit DODAG Configuration Option Flags field.
IANA已经为8位DODAG配置选项标志字段创建了一个注册表。
New bit numbers may be allocated only by an IETF Review. Each bit is tracked with the following qualities:
新的位号只能由IETF审查分配。每一位都具有以下品质:
o Bit number (counting from bit 0 as the most significant bit)
o 位号(从位0开始计算为最高有效位)
o Capability description
o 能力描述
o Defining RFC
o 定义RFC
The following bits are currently defined:
当前定义了以下位:
+------------+----------------------------+---------------+ | Bit number | Description | Reference | +------------+----------------------------+---------------+ | 4 | Authentication Enabled (A) | This document | | 5-7 | Path Control Size (PCS) | This document | +------------+----------------------------+---------------+
+------------+----------------------------+---------------+ | Bit number | Description | Reference | +------------+----------------------------+---------------+ | 4 | Authentication Enabled (A) | This document | | 5-7 | Path Control Size (PCS) | This document | +------------+----------------------------+---------------+
DODAG Configuration Option Flags
DODAG配置选项标志
IANA has created a registry for the 8-bit RPL Target Option Flags field.
IANA已经为8位RPL目标选项标志字段创建了一个注册表。
New bit numbers may be allocated only by an IETF Review. Each bit is tracked with the following qualities:
新的位号只能由IETF审查分配。每一位都具有以下品质:
o Bit number (counting from bit 0 as the most significant bit)
o 位号(从位0开始计算为最高有效位)
o Capability description
o 能力描述
o Defining RFC
o 定义RFC
No bit is currently defined for the RPL Target Option Flags.
当前没有为RPL目标选项标志定义位。
IANA has created a registry for the 8-bit Transit Information Option (TIO) Flags field.
IANA已经为8位运输信息选项(TIO)标志字段创建了一个注册表。
New bit numbers may be allocated only by an IETF Review. Each bit is tracked with the following qualities:
新的位号只能由IETF审查分配。每一位都具有以下品质:
o Bit number (counting from bit 0 as the most significant bit)
o 位号(从位0开始计算为最高有效位)
o Capability description
o 能力描述
o Defining RFC
o 定义RFC
The following bits are currently defined:
当前定义了以下位:
+------------+--------------+---------------+ | Bit number | Description | Reference | +------------+--------------+---------------+ | 0 | External (E) | This document | +------------+--------------+---------------+
+------------+--------------+---------------+ | Bit number | Description | Reference | +------------+--------------+---------------+ | 0 | External (E) | This document | +------------+--------------+---------------+
Transit Information Option Flags
运输信息选项标志
IANA has created a registry for the 8-bit Solicited Information Option (SIO) Flags field.
IANA已经为8位请求信息选项(SIO)标志字段创建了一个注册表。
New bit numbers may be allocated only by an IETF Review. Each bit is tracked with the following qualities:
新的位号只能由IETF审查分配。每一位都具有以下品质:
o Bit number (counting from bit 0 as the most significant bit)
o 位号(从位0开始计算为最高有效位)
o Capability description
o 能力描述
o Defining RFC
o 定义RFC
The following bits are currently defined:
当前定义了以下位:
+------------+--------------------------------+---------------+ | Bit number | Description | Reference | +------------+--------------------------------+---------------+ | 0 | Version Predicate match (V) | This document | | | | | | 1 | InstanceID Predicate match (I) | This document | | | | | | 2 | DODAGID Predicate match (D) | This document | +------------+--------------------------------+---------------+
+------------+--------------------------------+---------------+ | Bit number | Description | Reference | +------------+--------------------------------+---------------+ | 0 | Version Predicate match (V) | This document | | | | | | 1 | InstanceID Predicate match (I) | This document | | | | | | 2 | DODAGID Predicate match (D) | This document | +------------+--------------------------------+---------------+
Solicited Information Option Flags
请求信息选项标志
In some cases RPL will return an ICMPv6 error message when a message cannot be delivered as specified by its source routing header. This ICMPv6 error message is "Error in Source Routing Header".
在某些情况下,当消息无法按照其源路由头指定的方式传递时,RPL将返回ICMPv6错误消息。此ICMPv6错误消息为“源路由标头中出错”。
IANA has defined an ICMPv6 "Code" Fields Registry for ICMPv6 Message Types. ICMPv6 Message Type 1 describes "Destination Unreachable" codes. The "Error in Source Routing Header" code is has been allocated from the ICMPv6 Code Fields Registry for ICMPv6 Message Type 1, with a code value of 7.
IANA为ICMPv6消息类型定义了ICMPv6“代码”字段注册表。ICMPv6消息类型1描述了“无法到达目的地”代码。已从ICMPv6代码字段注册表为ICMPv6消息类型1分配了“源路由标头错误”代码,代码值为7。
The rules for assigning new IPv6 multicast addresses are defined in [RFC3307]. This specification requires the allocation of a new permanent multicast address with a link-local scope for RPL nodes called all-RPL-nodes, with a value of ff02::1a.
[RFC3307]中定义了分配新IPv6多播地址的规则。此规范要求为RPL节点分配一个新的永久多播地址,该地址的链路本地作用域称为all RPL NOTES,其值为ff02::1a。
The authors would like to acknowledge the review, feedback, and comments from Emmanuel Baccelli, Dominique Barthel, Yusuf Bashir, Yoav Ben-Yehezkel, Phoebus Chen, Quynh Dang, Mischa Dohler, Mathilde Durvy, Joakim Eriksson, Omprakash Gnawali, Manhar Goindi, Mukul Goyal, Ulrich Herberg, Anders Jagd, JeongGil (John) Ko, Ajay Kumar, Quentin Lampin, Jerry Martocci, Matteo Paris, Alexandru Petrescu, Joseph Reddy, Michael Richardson, Don Sturek, Joydeep Tripathi, and Nicolas Tsiftes.
作者希望感谢来自伊曼纽尔·巴切利、多米尼克·巴塞尔、优素福·巴希尔、约阿夫·本·耶赫茨克尔、菲布斯·陈、昆赫·当、米莎·多勒、玛蒂尔德·杜维、约阿金·埃里克森、奥普拉卡什·纳瓦利、曼哈尔·戈因迪、穆库尔·戈亚尔、乌尔里希·赫伯格、安德斯·贾格德、郑吉尔(约翰)科、阿杰·库马尔、昆廷·兰平、卡恩·兰平的评论、反馈和评论,杰里·马托西、马泰奥·帕里斯、亚历山德罗·佩特雷斯库、约瑟夫·雷迪、迈克尔·理查森、唐·斯特雷克、乔伊迪普·特里帕西和尼古拉斯·齐夫茨。
The authors would like to acknowledge the guidance and input provided by the ROLL Chairs, David Culler and JP. Vasseur, and the Area Director, Adrian Farrel.
作者希望感谢滚动主席David Culler和JP提供的指导和意见。瓦瑟尔和地区总监阿德里安·法雷尔。
The authors would like to acknowledge prior contributions of Robert Assimiti, Mischa Dohler, Julien Abeille, Ryuji Wakikawa, Teco Boot, Patrick Wetterwald, Bryan Mclaughlin, Carlos J. Bernardos, Thomas Watteyne, Zach Shelby, Caroline Bontoux, Marco Molteni, Billy Moon, Jim Bound, Yanick Pouffary, Henning Rogge, and Arsalan Tavakoli, who have provided useful design considerations to RPL.
作者要感谢Robert Assimiti、Misha Dohler、Julien Abeille、Ryuji Wakikawa、Teco Boot、Patrick Wetterwald、Bryan Mclaughlin、Carlos J.Bernardos、Thomas Watteyne、Zach Shelby、Caroline Bontoux、Marco Molteni、Billy Moon、Jim Bound、Yanick Pouffary、Henning Rogge和Arsalan Tavakoli之前的贡献,他们为RPL提供了有用的设计考虑。
RPL Security Design, found in Section 10, Section 19, and elsewhere throughout the document, is primarily the contribution of the Security Design Team: Tzeta Tsao, Roger Alexander, Dave Ward, Philip Levis, Kris Pister, Rene Struik, and Adrian Farrel.
RPL安全设计(见第10节、第19节和本文件其他部分)主要是安全设计团队的贡献:Tzeta Tsao、Roger Alexander、Dave Ward、Philip Levis、Kris Pister、Rene Struik和Adrian Farrel。
Thanks also to Jari Arkko and Ralph Droms for their attentive reviews, especially with respect to interoperability considerations and integration with other IETF specifications.
还要感谢Jari Arkko和Ralph Droms的仔细审查,特别是在互操作性考虑和与其他IETF规范的集成方面。
Stephen Dawson-Haggerty UC Berkeley Soda Hall Berkeley, CA 94720 USA
斯蒂芬·道森·哈格蒂加州大学伯克利分校苏打厅伯克利分校,加利福尼亚州94720
EMail: stevedh@cs.berkeley.edu
EMail: stevedh@cs.berkeley.edu
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", RFC 2460, December 1998.
[RFC2460]Deering,S.和R.Hinden,“互联网协议,第6版(IPv6)规范”,RFC 2460,1998年12月。
[RFC3447] Jonsson, J. and B. Kaliski, "Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1", RFC 3447, February 2003.
[RFC3447]Jonsson,J.和B.Kaliski,“公钥密码标准(PKCS)#1:RSA密码规范版本2.1”,RFC 3447,2003年2月。
[RFC4191] Draves, R. and D. Thaler, "Default Router Preferences and More-Specific Routes", RFC 4191, November 2005.
[RFC4191]Draves,R.和D.Thaler,“默认路由器首选项和更具体的路由”,RFC 41912005年11月。
[RFC4302] Kent, S., "IP Authentication Header", RFC 4302, December 2005.
[RFC4302]Kent,S.,“IP认证头”,RFC43022005年12月。
[RFC4443] Conta, A., Deering, S., and M. Gupta, "Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification", RFC 4443, March 2006.
[RFC4443]Conta,A.,Deering,S.和M.Gupta,“互联网协议版本6(IPv6)规范的互联网控制消息协议(ICMPv6)”,RFC 4443,2006年3月。
[RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman, "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861, September 2007.
[RFC4861]Narten,T.,Nordmark,E.,Simpson,W.,和H.Soliman,“IP版本6(IPv6)的邻居发现”,RFC 48612007年9月。
[RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless Address Autoconfiguration", RFC 4862, September 2007.
[RFC4862]Thomson,S.,Narten,T.,和T.Jinmei,“IPv6无状态地址自动配置”,RFC 48622007年9月。
[RFC6206] Levis, P., Clausen, T., Hui, J., Gnawali, O., and J. Ko, "The Trickle Algorithm", RFC 6206, March 2011.
[RFC6206]Levis,P.,Clausen,T.,Hui,J.,Gnawali,O.,和J.Ko,“涓流算法”,RFC 62062011年3月。
[RFC6275] Perkins, C., Johnson, D., and J. Arkko, "Mobility Support in IPv6", RFC 6275, July 2011.
[RFC6275]Perkins,C.,Johnson,D.,和J.Arkko,“IPv6中的移动支持”,RFC 62752011年7月。
[RFC6551] Vasseur, JP., Ed., Kim, M., Ed., Pister, K., Dejean, N., and D. Barthel, "Routing Metrics Used for Path Calculation in Low-Power and Lossy Networks", RFC 6551, March 2012.
[RFC6551]Vasseur,JP.,Ed.,Kim,M.,Ed.,Pister,K.,Dejean,N.,和D.Barthel,“低功率和有损网络中用于路径计算的路由度量”,RFC 65512012年3月。
[RFC6552] Thubert, P., Ed., "Objective Function Zero for the Routing Protocol for Low-Power and Lossy Networks (RPL)", RFC 6552, March 2012.
[RFC6552]Thubert,P.,Ed.“低功耗和有损网络路由协议(RPL)的目标函数零”,RFC 6552,2012年3月。
[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, March 2012.
[RFC6553]Hui,J.和JP。Vasseur,“在数据平面数据报中承载RPL信息的低功耗和有损网络路由协议(RPL)选项”,RFC 6553,2012年3月。
[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, March 2012.
[RFC6554]Hui,J.,Vasseur,JP.,Culler,D.,和V.Manral,“低功耗和有损网络(RPL)路由协议源路由的IPv6路由头”,RFC 65542012年3月。
[6LOWPAN-ND] Shelby, Z., Ed., Chakrabarti, S., and E. Nordmark, "Neighbor Discovery Optimization for Low Power and Lossy Networks (6LoWPAN)", Work in Progress, October 2011.
[6LOWPAN-ND]Shelby,Z.,Ed.,Chakrabarti,S.,和E.Nordmark,“低功耗和有损网络的邻居发现优化(6LOWPAN)”,正在进行的工作,2011年10月。
[FIPS180] National Institute of Standards and Technology, "FIPS Pub 180-3, Secure Hash Standard (SHS)", US Department of Commerce , February 2008, <http://www.nist.gov/itl/upload/fips180-3_final.pdf>.
[FIPS180]美国国家标准与技术研究所,“FIPS Pub 180-3,安全哈希标准(SHS)”,美国商务部,2008年2月<http://www.nist.gov/itl/upload/fips180-3_final.pdf>.
[Perlman83] Perlman, R., "Fault-Tolerant Broadcast of Routing Information", North-Holland Computer Networks, Vol.7: p. 395-405, December 1983.
[Perlman 83]Perlman,R.,“路由信息的容错广播”,北荷兰计算机网络,第7卷:第页。1983年12月395-405日。
[RFC1958] Carpenter, B., "Architectural Principles of the Internet", RFC 1958, June 1996.
[RFC1958]Carpenter,B.,“互联网的建筑原理”,RFC19581996年6月。
[RFC1982] Elz, R. and R. Bush, "Serial Number Arithmetic", RFC 1982, August 1996.
[RFC1982]Elz,R.和R.Bush,“序列号算术”,RFC 1982,1996年8月。
[RFC2578] McCloghrie, K., Ed., Perkins, D., Ed., and J. Schoenwaelder, Ed., "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999.
[RFC2578]McCloghrie,K.,Ed.,Perkins,D.,Ed.,和J.Schoenwaeld,Ed.“管理信息的结构版本2(SMIv2)”,STD 58,RFC 2578,1999年4月。
[RFC3307] Haberman, B., "Allocation Guidelines for IPv6 Multicast Addresses", RFC 3307, August 2002.
[RFC3307]Haberman,B.,“IPv6多播地址的分配指南”,RFC3307,2002年8月。
[RFC3410] Case, J., Mundy, R., Partain, D., and B. Stewart, "Introduction and Applicability Statements for Internet-Standard Management Framework", RFC 3410, December 2002.
[RFC3410]Case,J.,Mundy,R.,Partain,D.,和B.Stewart,“互联网标准管理框架的介绍和适用性声明”,RFC 34102002年12月。
[RFC3535] Schoenwaelder, J., "Overview of the 2002 IAB Network Management Workshop", RFC 3535, May 2003.
[RFC3535]Schoenwaeld,J.,“2002年IAB网络管理研讨会概述”,RFC 3535,2003年5月。
[RFC3610] Whiting, D., Housley, R., and N. Ferguson, "Counter with CBC-MAC (CCM)", RFC 3610, September 2003.
[RFC3610]Whiting,D.,Housley,R.,和N.Ferguson,“CBC-MAC(CCM)计数器”,RFC 36102003年9月。
[RFC3819] Karn, P., Bormann, C., Fairhurst, G., Grossman, D., Ludwig, R., Mahdavi, J., Montenegro, G., Touch, J., and L. Wood, "Advice for Internet Subnetwork Designers", BCP 89, RFC 3819, July 2004.
[RFC3819]Karn,P.,Bormann,C.,Fairhurst,G.,Grossman,D.,路德维希,R.,Mahdavi,J.,黑山,G.,Touch,J.,和L.Wood,“互联网子网络设计师的建议”,BCP 89,RFC 3819,2004年7月。
[RFC4101] Rescorla, E. and IAB, "Writing Protocol Models", RFC 4101, June 2005.
[RFC4101]Rescorla,E.和IAB,“编写协议模型”,RFC 41012005年6月。
[RFC4915] Psenak, P., Mirtorabi, S., Roy, A., Nguyen, L., and P. Pillay-Esnault, "Multi-Topology (MT) Routing in OSPF", RFC 4915, June 2007.
[RFC4915]Psenak,P.,Mirtorabi,S.,Roy,A.,Nguyen,L.,和P.Pillay Esnault,“OSPF中的多拓扑(MT)路由”,RFC 4915,2007年6月。
[RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi Topology (MT) Routing in Intermediate System to Intermediate Systems (IS-ISs)", RFC 5120, February 2008.
[RFC5120]Przygienda,T.,Shen,N.,和N.Sheth,“M-ISIS:中间系统到中间系统(IS-ISs)的多拓扑(MT)路由”,RFC 5120,2008年2月。
[RFC5184] Teraoka, F., Gogo, K., Mitsuya, K., Shibui, R., and K. Mitani, "Unified Layer 2 (L2) Abstractions for Layer 3 (L3)-Driven Fast Handover", RFC 5184, May 2008.
[RFC5184]Teraoka,F.,Gogo,K.,Mitsuya,K.,Shibui,R.,和K.Mitani,“第3层(L3)驱动的快速切换的统一第2层(L2)抽象”,RFC 5184,2008年5月。
[RFC5548] Dohler, M., Watteyne, T., Winter, T., and D. Barthel, "Routing Requirements for Urban Low-Power and Lossy Networks", RFC 5548, May 2009.
[RFC5548]Dohler,M.,Watteyne,T.,Winter,T.,和D.Barthel,“城市低功率和有损网络的路由要求”,RFC 5548,2009年5月。
[RFC5673] Pister, K., Thubert, P., Dwars, S., and T. Phinney, "Industrial Routing Requirements in Low-Power and Lossy Networks", RFC 5673, October 2009.
[RFC5673]Pister,K.,Thubert,P.,Dwars,S.,和T.Phinney,“低功率和有损网络中的工业路由要求”,RFC 5673,2009年10月。
[RFC5706] Harrington, D., "Guidelines for Considering Operations and Management of New Protocols and Protocol Extensions", RFC 5706, November 2009.
[RFC5706]Harrington,D.,“考虑新协议和协议扩展的操作和管理指南”,RFC 5706,2009年11月。
[RFC5826] Brandt, A., Buron, J., and G. Porcu, "Home Automation Routing Requirements in Low-Power and Lossy Networks", RFC 5826, April 2010.
[RFC5826]Brandt,A.,Buron,J.,和G.Porcu,“低功率和有损网络中的家庭自动化路由要求”,RFC 5826,2010年4月。
[RFC5867] Martocci, J., De Mil, P., Riou, N., and W. Vermeylen, "Building Automation Routing Requirements in Low-Power and Lossy Networks", RFC 5867, June 2010.
[RFC5867]Martocci,J.,De Mil,P.,Riou,N.,和W.Vermeylen,“低功率和有损网络中的楼宇自动化路由要求”,RFC 58672010年6月。
[RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, June 2010.
[RFC5881]Katz,D.和D.Ward,“IPv4和IPv6(单跳)的双向转发检测(BFD)”,RFC 58812010年6月。
[RFC6130] Clausen, T., Dearlove, C., and J. Dean, "Mobile Ad Hoc Network (MANET) Neighborhood Discovery Protocol (NHDP)", RFC 6130, April 2011.
[RFC6130]Clausen,T.,Dearlove,C.,和J.Dean,“移动自组织网络(MANET)邻域发现协议(NHDP)”,RFC6130,2011年4月。
[ROLL-TERMS] Vasseur, J., "Terminology in Low power And Lossy Networks", Work in Progress, September 2011.
[ROLL-TERMS]Vasseur,J.,“低功率和有损网络中的术语”,进展中的工作,2011年9月。
This appendix provides some examples to illustrate the dissemination of addressing information and prefixes with RPL. The examples depict information being distributed with PIOs and RIOs and the use of DIO and DAO messages. Note that this appendix is not normative, and that the specific details of a RPL addressing plan and autoconfiguration may vary according to specific implementations. RPL merely provides a vehicle for disseminating information that may be built upon and used by other mechanisms.
本附录提供了一些示例来说明如何使用RPL传播寻址信息和前缀。这些示例描述了使用PIO和RIOs分发的信息以及DIO和DAO消息的使用。请注意,本附录不是规范性附录,RPL寻址计划和自动配置的具体细节可能因具体实施而有所不同。RPL仅仅提供了一种传播信息的工具,这些信息可以被其他机制建立和使用。
Note that these examples illustrate use of address autoconfiguration schemes supported by information distributed within RPL. However, if an implementation includes another address autoconfiguration scheme, RPL nodes might be configured not to set the 'A' flag in PIO options, though the PIO can still be used to distribute prefix and addressing information.
请注意,这些示例说明了由分布在RPL中的信息支持的地址自动配置方案的使用。但是,如果实现包括另一个地址自动配置方案,则RPL节点可能被配置为不在PIO选项中设置“A”标志,尽管PIO仍然可以用于分发前缀和寻址信息。
Figure 32 illustrates the logical addressing architecture of a simple RPL network operating in Storing mode. In this example, each Node, A, B, C, and D, owns its own prefix and makes that prefix available for address autoconfiguration by on-link devices. (This is conveyed by setting the 'A' flag and the 'L' flag in the PIO of the DIO messages). Node A owns the prefix A::/64, Node B owns B::/64, and so on. Node B autoconfigures an on-link address with respect to Node A, A::B. Nodes C and D similarly autoconfigure on-link addresses from Node B's prefix, B::C and B::D, respectively. Nodes have the option of setting the 'R' flag and publishing their address within the Prefix field of the PIO.
图32说明了在存储模式下运行的简单RPL网络的逻辑寻址体系结构。在本例中,每个节点A、B、C和D都拥有自己的前缀,并使该前缀可用于链路设备的地址自动配置。(这是通过在DIO消息的PIO中设置“A”标志和“L”标志来传达的)。节点A拥有前缀A::/64,节点B拥有前缀B::/64,依此类推。节点B自动配置关于节点A、A::B的链路地址。节点C和D类似地分别从节点B的前缀B::C和B::D自动配置链路地址。节点可以选择设置“R”标志并在PIO的前缀字段中发布其地址。
+-------------+ | Root | | | | Node A | | | | A::A | +------+------+ | | | +------+------+ | A::B | | | | Node B | | | | B::B | +------+------+ | | .--------------+--------------. / \ / \ +------+------+ +------+------+ | B::C | | B::D | | | | | | Node C | | Node D | | | | | | C::C | | D::D | +-------------+ +-------------+
+-------------+ | Root | | | | Node A | | | | A::A | +------+------+ | | | +------+------+ | A::B | | | | Node B | | | | B::B | +------+------+ | | .--------------+--------------. / \ / \ +------+------+ +------+------+ | B::C | | B::D | | | | | | Node C | | Node D | | | | | | C::C | | D::D | +-------------+ +-------------+
Figure 32: Storing Mode with Node-Owned Prefixes
图32:带有节点拥有前缀的存储模式
Node A, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Set 'R' flag: Clear Prefix Length: 64 Prefix: A::
例如,节点A将发送带有PIO的DIO消息,如下所示:“A”标志:设置“L”标志:设置“R”标志:清除前缀长度:64前缀:A::
Node B, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Set 'R' flag: Set Prefix Length: 64 Prefix: B::B
Node B, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Set 'R' flag: Set Prefix Length: 64 Prefix: B::B
Node C, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Set 'R' flag: Clear Prefix Length: 64 Prefix: C::
例如,节点C将发送带有PIO的DIO消息,如下所示:“a”标志:设置“L”标志:设置“R”标志:清除前缀长度:64前缀:C::
Node D, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Set 'R' flag: Set Prefix Length: 64 Prefix: D::D
Node D, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Set 'R' flag: Set Prefix Length: 64 Prefix: D::D
Node B will send DAO messages to Node A with the following information: o Target B::/64 o Target C::/64 o Target D::/64
Node B will send DAO messages to Node A with the following information: o Target B::/64 o Target C::/64 o Target D::/64
Node C will send DAO messages to Node B with the following information: o Target C::/64
节点C将向节点B发送带有以下信息的DAO消息:o目标C::/64
Node D will send DAO messages to Node B with the following information:
节点D将向节点B发送带有以下信息的DAO消息:
o Target D::/64
o 目标D::/64
Node A will conceptually collect the following information into its Routing Information Base (RIB): o A::/64 connected o B::/64 via B's link local o C::/64 via B's link local o D::/64 via B's link local
Node A will conceptually collect the following information into its Routing Information Base (RIB): o A::/64 connected o B::/64 via B's link local o C::/64 via B's link local o D::/64 via B's link local
Node B will conceptually collect the following information into its RIB: o ::/0 via A's link local o B::/64 connected o C::/64 via C's link local o D::/64 via D's link local
Node B will conceptually collect the following information into its RIB: o ::/0 via A's link local o B::/64 connected o C::/64 via C's link local o D::/64 via D's link local
Node C will conceptually collect the following information into its RIB: o ::/0 via B's link local o C::/64 connected
Node C will conceptually collect the following information into its RIB: o ::/0 via B's link local o C::/64 connected
Node D will conceptually collect the following information into its RIB: o ::/0 via B's link local o D::/64 connected
Node D will conceptually collect the following information into its RIB: o ::/0 via B's link local o D::/64 connected
Figure 33 illustrates the logical addressing architecture of a simple RPL network operating in Storing mode. In this example, the root Node A sources a prefix that is used for address autoconfiguration over the entire RPL subnet. (This is conveyed by setting the 'A' flag and clearing the 'L' flag in the PIO of the DIO messages.) Nodes A, B, C, and D all autoconfigure to the prefix A::/64. Nodes have the option of setting the 'R' flag and publishing their address within the Prefix field of the PIO.
图33说明了在存储模式下运行的简单RPL网络的逻辑寻址体系结构。在本例中,根节点A生成一个前缀,用于整个RPL子网的地址自动配置。(这是通过设置DIO消息的PIO中的“A”标志并清除“L”标志来实现的。)节点A、B、C和D都自动配置为前缀A::/64。节点可以选择设置“R”标志并在PIO的前缀字段中发布其地址。
+-------------+ | Root | | | | Node A | | A::A | | | +------+------+ | | | +------+------+ | | | Node B | | A::B | | | +------+------+ | | .--------------+--------------. / \ / \ +------+------+ +------+------+ | | | | | Node C | | Node D | | A::C | | A::D | | | | | +-------------+ +-------------+
+-------------+ | Root | | | | Node A | | A::A | | | +------+------+ | | | +------+------+ | | | Node B | | A::B | | | +------+------+ | | .--------------+--------------. / \ / \ +------+------+ +------+------+ | | | | | Node C | | Node D | | A::C | | A::D | | | | | +-------------+ +-------------+
Figure 33: Storing Mode with Subnet-Wide Prefix
图33:具有子网范围前缀的存储模式
Node A, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Clear 'R' flag: Clear Prefix Length: 64 Prefix: A::
例如,节点A将发送带有PIO的DIO消息,如下所示:“A”标志:设置“L”标志:清除“R”标志:清除前缀长度:64前缀:A::
Node B, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Clear 'R' flag: Set Prefix Length: 64 Prefix: A::B
Node B, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Clear 'R' flag: Set Prefix Length: 64 Prefix: A::B
Node C, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Clear 'R' flag: Clear Prefix Length: 64 Prefix: A::
例如,节点C将发送带有PIO的DIO消息,如下所示:“a”标志:设置“L”标志:清除“R”标志:清除前缀长度:64前缀:a::
Node D, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Clear 'R' flag: Set Prefix Length: 64 Prefix: A::D
Node D, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Clear 'R' flag: Set Prefix Length: 64 Prefix: A::D
Node B will send DAO messages to Node A with the following information: o Target A::B/128 o Target A::C/128 o Target A::D/128
Node B will send DAO messages to Node A with the following information: o Target A::B/128 o Target A::C/128 o Target A::D/128
Node C will send DAO messages to Node B with the following information: o Target A::C/128
节点C将向节点B发送带有以下信息的DAO消息:o目标A::C/128
Node D will send DAO messages to Node B with the following information: o Target A::D/128
节点D将向节点B发送带有以下信息的DAO消息:o目标A::D/128
Node A will conceptually collect the following information into its RIB: o A::A/128 connected o A::B/128 via B's link local o A::C/128 via B's link local o A::D/128 via B's link local
Node A will conceptually collect the following information into its RIB: o A::A/128 connected o A::B/128 via B's link local o A::C/128 via B's link local o A::D/128 via B's link local
Node B will conceptually collect the following information into its RIB: o ::/0 via A's link local o A::B/128 connected o A::C/128 via C's link local o A::D/128 via D's link local
Node B will conceptually collect the following information into its RIB: o ::/0 via A's link local o A::B/128 connected o A::C/128 via C's link local o A::D/128 via D's link local
Node C will conceptually collect the following information into its RIB: o ::/0 via B's link local o A::C/128 connected
Node C will conceptually collect the following information into its RIB: o ::/0 via B's link local o A::C/128 connected
Node D will conceptually collect the following information into its RIB: o ::/0 via B's link local o A::D/128 connected
Node D will conceptually collect the following information into its RIB: o ::/0 via B's link local o A::D/128 connected
Figure 34 illustrates the logical addressing architecture of a simple RPL network operating in Non-Storing mode. In this example, each Node, A, B, C, and D, owns its own prefix, and makes that prefix available for address autoconfiguration by on-link devices. (This is conveyed by setting the 'A' flag and the 'L' flag in the PIO of the DIO messages.) Node A owns the prefix A::/64, Node B owns B::/64, and so on. Node B autoconfigures an on-link address with respect to Node A, A::B. Nodes C and D similarly autoconfigure on-link addresses from Node B's prefix, B::C and B::D, respectively. Nodes have the option of setting the 'R' flag and publishing their address within the Prefix field of the PIO.
图34说明了在非存储模式下运行的简单RPL网络的逻辑寻址体系结构。在本例中,每个节点A、B、C和D都拥有自己的前缀,并使该前缀可用于链路设备的地址自动配置。(这是通过在DIO消息的PIO中设置“A”标志和“L”标志来传达的。)节点A拥有前缀A::/64,节点B拥有前缀B::/64,依此类推。节点B自动配置关于节点A、A::B的链路地址。节点C和D类似地分别从节点B的前缀B::C和B::D自动配置链路地址。节点可以选择设置“R”标志并在PIO的前缀字段中发布其地址。
+-------------+ | Root | | | | Node A | | | | A::A | +------+------+ | | | +------+------+ | A::B | | | | Node B | | | | B::B | +------+------+ | | .--------------+--------------. / \ / \ +------+------+ +------+------+ | B::C | | B::D | | | | | | Node C | | Node D | | | | | | C::C | | D::D | +-------------+ +-------------+
+-------------+ | Root | | | | Node A | | | | A::A | +------+------+ | | | +------+------+ | A::B | | | | Node B | | | | B::B | +------+------+ | | .--------------+--------------. / \ / \ +------+------+ +------+------+ | B::C | | B::D | | | | | | Node C | | Node D | | | | | | C::C | | D::D | +-------------+ +-------------+
Figure 34: Non-Storing Mode with Node-Owned Prefixes
图34:带有节点拥有前缀的非存储模式
The PIO contained in the DIO messages in the Non-Storing mode with node-owned prefixes can be considered to be identical to those in the Storing mode with node-owned prefixes case (Appendix A.1.1).
在具有节点自有前缀的非存储模式下,DIO消息中包含的PIO可被视为与具有节点自有前缀的存储模式下的PIO相同(附录A.1.1)。
Node B will send DAO messages to Node A with the following information:
节点B将向节点A发送带有以下信息的DAO消息:
o Target B::/64, Transit A::B
o 目标B::/64,运输A::B
Node C will send DAO messages to Node A with the following information: o Target C::/64, Transit B::C
Node C will send DAO messages to Node A with the following information: o Target C::/64, Transit B::C
Node D will send DAO messages to Node A with the following information: o Target D::/64, Transit B::D
Node D will send DAO messages to Node A with the following information: o Target D::/64, Transit B::D
Node A will conceptually collect the following information into its RIB. Note that Node A has enough information to construct source routes by doing recursive lookups into the RIB: o A::/64 connected o B::/64 via A::B o C::/64 via B::C o D::/64 via B::D
Node A will conceptually collect the following information into its RIB. Note that Node A has enough information to construct source routes by doing recursive lookups into the RIB: o A::/64 connected o B::/64 via A::B o C::/64 via B::C o D::/64 via B::D
Node B will conceptually collect the following information into its RIB: o ::/0 via A's link local o B::/64 connected
Node B will conceptually collect the following information into its RIB: o ::/0 via A's link local o B::/64 connected
Node C will conceptually collect the following information into its RIB: o ::/0 via B's link local o C::/64 connected
Node C will conceptually collect the following information into its RIB: o ::/0 via B's link local o C::/64 connected
Node D will conceptually collect the following information into its RIB: o ::/0 via B's link local o D::/64 connected
Node D will conceptually collect the following information into its RIB: o ::/0 via B's link local o D::/64 connected
Figure 35 illustrates the logical addressing architecture of a simple RPL network operating in Non-Storing mode. In this example, the root Node A sources a prefix that is used for address autoconfiguration over the entire RPL subnet. (This is conveyed by setting the 'A' flag and clearing the 'L' flag in the PIO of the DIO messages.) Nodes A, B, C, and D all autoconfigure to the prefix A::/64. Nodes must set the 'R' flag and publish their address within the Prefix field of the PIO, in order to inform their children which address to use in the transit option.
图35说明了在非存储模式下运行的简单RPL网络的逻辑寻址体系结构。在本例中,根节点A生成一个前缀,用于整个RPL子网的地址自动配置。(这是通过设置DIO消息的PIO中的“A”标志并清除“L”标志来实现的。)节点A、B、C和D都自动配置为前缀A::/64。节点必须设置“R”标志并在PIO的前缀字段中发布其地址,以便通知其子节点在传输选项中使用哪个地址。
+-------------+ | Root | | | | Node A | | A::A | | | +------+------+ | | | +------+------+ | | | Node B | | A::B | | | +------+------+ | | .--------------+--------------. / \ / \ +------+------+ +------+------+ | | | | | Node C | | Node D | | A::C | | A::D | | | | | +-------------+ +-------------+
+-------------+ | Root | | | | Node A | | A::A | | | +------+------+ | | | +------+------+ | | | Node B | | A::B | | | +------+------+ | | .--------------+--------------. / \ / \ +------+------+ +------+------+ | | | | | Node C | | Node D | | A::C | | A::D | | | | | +-------------+ +-------------+
Figure 35: Non-Storing Mode with Subnet-Wide Prefix
图35:具有子网范围前缀的非存储模式
Node A, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Clear 'R' flag: Set Prefix Length: 64 Prefix: A::A
Node A, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Clear 'R' flag: Set Prefix Length: 64 Prefix: A::A
Node B, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Clear 'R' flag: Set Prefix Length: 64 Prefix: A::B
Node B, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Clear 'R' flag: Set Prefix Length: 64 Prefix: A::B
Node C, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Clear 'R' flag: Set Prefix Length: 64 Prefix: A::C
Node C, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Clear 'R' flag: Set Prefix Length: 64 Prefix: A::C
Node D, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Clear 'R' flag: Set Prefix Length: 64 Prefix: A::D
Node D, for example, will send DIO messages with a PIO as follows: 'A' flag: Set 'L' flag: Clear 'R' flag: Set Prefix Length: 64 Prefix: A::D
Node B will send DAO messages to Node A with the following information: o Target A::B/128, Transit A::A
Node B will send DAO messages to Node A with the following information: o Target A::B/128, Transit A::A
Node C will send DAO messages to Node A with the following information: o Target A::C/128, Transit A::B
Node C will send DAO messages to Node A with the following information: o Target A::C/128, Transit A::B
Node D will send DAO messages to Node A with the following information: o Target A::D/128, Transit A::B
Node D will send DAO messages to Node A with the following information: o Target A::D/128, Transit A::B
Node A will conceptually collect the following information into its RIB. Note that Node A has enough information to construct source routes by doing recursive lookups into the RIB: o A::A/128 connected o A::B/128 via A::A o A::C/128 via A::B o A::D/128 via A::B
Node A will conceptually collect the following information into its RIB. Note that Node A has enough information to construct source routes by doing recursive lookups into the RIB: o A::A/128 connected o A::B/128 via A::A o A::C/128 via A::B o A::D/128 via A::B
Node B will conceptually collect the following information into its RIB: o ::/0 via A's link local o A::B/128 connected
Node B will conceptually collect the following information into its RIB: o ::/0 via A's link local o A::B/128 connected
Node C will conceptually collect the following information into its RIB: o ::/0 via B's link local o A::C/128 connected
Node C will conceptually collect the following information into its RIB: o ::/0 via B's link local o A::C/128 connected
Node D will conceptually collect the following information into its RIB: o ::/0 via B's link local o A::D/128 connected
Node D will conceptually collect the following information into its RIB: o ::/0 via B's link local o A::D/128 connected
Consider the simple network illustrated in Figure 36. In this example, there are a group of routers participating in a RPL network: a DODAG root, Nodes A, Y, and Z. The DODAG root and Node Z also have connectivity to different external network domains (i.e., external to the RPL network). Note that those external networks could be RPL networks or another type of network altogether.
考虑图36中所示的简单网络。在本例中,有一组路由器参与RPL网络:DODAG根、节点a、Y和Z。DODAG根和节点Z还可以连接到不同的外部网络域(即RPL网络外部)。请注意,这些外部网络可以是RPL网络或其他类型的网络。
RPL Network +-------------------+ RPL::/64 | | | External | [RPL::Root] (Root)----------+ Prefix | | | EXT_1::/64 | | | | | +-------------------+ [RPL::A] (A) : : : [RPL::Y] (Y) | +-------------------+ | | | | | External | [RPL::Z] (Z)------------+ Prefix | : | EXT_2::/64 | : | | : +-------------------+
RPL Network +-------------------+ RPL::/64 | | | External | [RPL::Root] (Root)----------+ Prefix | | | EXT_1::/64 | | | | | +-------------------+ [RPL::A] (A) : : : [RPL::Y] (Y) | +-------------------+ | | | | | External | [RPL::Z] (Z)------------+ Prefix | : | EXT_2::/64 | : | | : +-------------------+
Figure 36: Simple Network Example
图36:简单网络示例
In this example, the DODAG root makes a prefix available to the RPL subnet for address autoconfiguration. Here, the entire RPL subnet uses that same prefix, RPL::/64, for address autoconfiguration, though in other implementations more complex/hybrid schemes could be employed.
在本例中,DODAG根为RPL子网提供一个前缀,用于地址自动配置。在这里,整个RPL子网使用相同的前缀RPL::/64进行地址自动配置,尽管在其他实现中可以使用更复杂的/混合的方案。
The DODAG root has connectivity to an external (with respect to that RPL network) prefix EXT_1::/64. The DODAG root may have learned of connectivity to this prefix, for example, via explicit configuration or IPv6 ND on a non-RPL interface. The DODAG root is configured to announce information on the connectivity to this prefix.
DODAG根目录连接到外部(相对于该RPL网络)前缀EXT_1::/64。DODAG根用户可能已经了解到与该前缀的连接,例如,通过非RPL接口上的显式配置或IPv6 ND。DODAG根目录被配置为公布与此前缀的连接相关的信息。
Similarly, Node Z has connectivity to an external prefix EXT_2::/64. Node Z also has a sub-DODAG underneath of it.
类似地,节点Z连接到外部前缀EXT_2::/64。节点Z下面还有一个子DODAG。
1. The DODAG root adds a RIO to its DIO messages. The RIO contains the external prefix EXT_1::/64. This information may be repeated in the DIO messages emitted by the other nodes within the DODAG. Thus, the reachability to the prefix EXT_1::/64 is disseminated down the DODAG.
1. DODAG根目录在其DIO消息中添加了RIO。RIO包含外部前缀EXT_1::/64。该信息可以在DODAG内的其他节点发出的DIO消息中重复。因此,前缀EXT_1::/64的可达性沿着DODAG向下传播。
2. Node Z may advertise reachability to the Target network EXT_2::/64 by sending DAO messages using EXT_2::/64 as a Target in the Target option and itself (Node Z) as a parent in the Transit Information option. (In Storing mode, that Transit Information option does not need to contain the address of Node Z). A non-storing root then becomes aware of the 1-hop link (Node Z -- EXT_2::/64) for use in constructing source routes. Node Z may additionally advertise its reachability to EXT_2::/64 to nodes in its sub-DODAG by sending DIO messages with a PIO, with the 'A' flag cleared.
2. 节点Z可以通过使用EXT_2::/64作为目标选项中的目标并将自身(节点Z)作为传输信息选项中的父节点来发送DAO消息,从而向目标网络EXT_2::/64公布可达性。(在存储模式下,该中转信息选项不需要包含节点Z的地址)。然后,非存储根节点会意识到用于构建源路由的1跳链路(节点Z--EXT_2::/64)。节点Z还可以通过发送带有PIO的DIO消息(清除“a”标志),向其子DODAG中的节点宣传其到EXT_2::/64的可达性。
Authors' Addresses
作者地址
Tim Winter (editor)
蒂姆·温特(编辑)
EMail: wintert@acm.org
EMail: wintert@acm.org
Pascal Thubert (editor) Cisco Systems Village d'Entreprises Green Side 400, Avenue de Roumanille Batiment T3 Biot - Sophia Antipolis 06410 France
Pascal Thubert(编辑)Cisco Systems Village d'Enterprises Green Side 400,Roumanille大道Batitment T3 Biot-Sophia Antipolis 06410法国
Phone: +33 497 23 26 34 EMail: pthubert@cisco.com
Phone: +33 497 23 26 34 EMail: pthubert@cisco.com
Anders Brandt Sigma Designs Emdrupvej 26A, 1. Copenhagen DK-2100 Denmark
Anders Brandt Sigma设计Emdrupvej 26A,1。丹麦哥本哈根DK-2100
EMail: abr@sdesigns.dk
EMail: abr@sdesigns.dk
Jonathan W. Hui Arch Rock Corporation 501 2nd St., Suite 410 San Francisco, CA 94107 USA
乔纳森W辉石岩公司501第二街,套房410旧金山,CA 94107美国
EMail: jhui@archrock.com
EMail: jhui@archrock.com
Richard Kelsey Ember Corporation Boston, MA USA
Richard Kelsey Ember公司美国马萨诸塞州波士顿
Phone: +1 617 951 1225 EMail: kelsey@ember.com
Phone: +1 617 951 1225 EMail: kelsey@ember.com
Philip Levis Stanford University 358 Gates Hall, Stanford University Stanford, CA 94305-9030 USA
Philip Levis斯坦福大学358盖茨厅,斯坦福大学斯坦福,加利福尼亚州94305-9030
EMail: pal@cs.stanford.edu
EMail: pal@cs.stanford.edu
Kris Pister Dust Networks 30695 Huntwood Ave. Hayward, CA 94544 USA
美国加利福尼亚州海沃德亨特伍德大道30695号克里斯·皮斯特灰尘网络,邮编94544
EMail: kpister@dustnetworks.com
EMail: kpister@dustnetworks.com
Rene Struik Struik Security Consultancy
Rene Struik Struik安全咨询公司
EMail: rstruik.ext@gmail.com
EMail: rstruik.ext@gmail.com
JP. Vasseur Cisco Systems 11, Rue Camille Desmoulins Issy Les Moulineaux 92782 France
JP。法国卡米尔·德斯穆林斯街11号瓦瑟尔思科系统公司Issy Les Moulineaux 92782
EMail: jpv@cisco.com
EMail: jpv@cisco.com
Roger K. Alexander Cooper Power Systems 20201 Century Blvd., Suite 250 Germantown, MD 20874 USA
罗杰·K·亚历山大·库珀电力系统公司美国马里兰州日尔曼镇世纪大道20201号250室20874
Phone: +1 240 454 9817 EMail: roger.alexander@cooperindustries.com
Phone: +1 240 454 9817 EMail: roger.alexander@cooperindustries.com