本文翻译者:weicq2000(2014 年 4 月 5 日译完。便于对照阅读,译文与原文页数对应。)
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 路由协议
低功耗有损网络(Low-Power and Lossy Networks, LLNs)是一类网络,这类网络中路由器
和它们的互连受到限制。LLN 路由器一般在处理能力、存储器和能量(电池功率)上受到
限制。它们之间的互连具有高丢失率、低数据速率和不稳定的特点。LLNs 可由几十个
到上千个路由器构成。支持的数据流包括点对点(LLN 内设备间)、点对多点(从中心控
制点到 LLN 内的设备子集),以及多点对点(从 LLN 内的多个设备到中心控制点)。本文
档规定低功耗有损网络的 IPv6 路由协议(IPv6 Routing Protocol for Low-Power and Lossy
Networks, RPL),该协议提供的机制支持从 LLN 内多个设备到中心控制点的多点对点流
量,以及从中心控制点到 LLN 内多个设备的点对多点流量。也可以支持点对点流量。
本备忘录状态
这是Internet Standards Track文档。
本文档是Internet Engineering Task Force (IETF)的成果。它代表IETF社区的共识。它已
经经过公开审议,由Internet Engineering Steering Group (IESG)批准颁布。有关Internet
Standards的更多信息参阅RFC 5741第2章。
关于本文档目前状态、任何勘误,以及如何对本文档提供反馈意见的有关信息可在
http://www.rfc-editor.org/info/rfc6550上得到。
版权声明
版权(c)归 2012 IETF Trust 和本文档撰写者(们)所有。保留所有权利。
本文档遵从本文档颁布日有效的 BCP 78 和 IETF Trust 的 Legal Provisions Relating to
IETF Documents (http://trustee.ietf.org/license-info)规定。请仔细查阅这些文档,这些文档
解释了对于本文档来说,您享有的权利和受到的限制。从本文档摘录的 Code Components
必须包括如 Trust Legal Provisions 第 4.e 节所述的 Simplified BSD License 文本,如
Simplified BSD License 所述,对所提供的 Code Components 不做担保。
目录
第1章 序言 ………………………………………………................................................8
1-1 设计原则 ……………………………………………..........................................8
1-2 预期的链路层类型 …………………………………………............................10
第2章 术语 ………………………………………………................................................10
第3章 协议综述 …………………………………………................................................13
3-1 拓扑结 .……………………………………………….....................................13
3-1-1 构造拓扑结 ………………………………………….............................13
3-1-2 RRL标识符 ………………………………….......................................14
3-1-3 实例、DODAGs和DODAG版本 …………..………………………….14
3-2 上行路由和DODAG架构 ………………………………..……………............16
3-2-1 目标函数(OF) ……...……………………………………....................17
3-2-2 DODAG修复 ………..…………………………..................................17
3-2-3 安全 ……………………..…………………………..............................17
3-2-4 接地DODAG和浮动DODAG …..…………………………..................18
3-2-5 本地DODAGs ………………………………….....................................18
3-2-6 管理偏好 ……………………………………………............................18
3-2-7 数据-路径合法性和环路检测 ………………………………….........18
3-2-8 分布式算法运行 ………………..……………………….......................19
3-3 下行路由和目的地通告 ……………………..………………………............19
3-4 本地DODAGs路由发现 ............................................…………......................20
3-5 等级(Rank)属性 ……………………………………….....................................20
3-5-1 等级比较(DAGRank()) ………………………………........................21
3-5-2 等级关系 ………………………………………….................................22
3-6 RPL使用的路由度量和约束 ……………………………………….................23
3-7 环路避免 …………………………………………............................................24
3-7-1 贪婪和不稳定 ………………………………………..........................24
3-7-2 DODAG环路 ………………………………........................................26
3-7-3 DAO环路 …………………………………..........................................27
第4章 RPL支持的流量 …………………………………………..................................27
4-1 多点到点流量 ..…………………………………………................................27
4-2 点到多点流量 …………………………………………..................................27
4-3 点到点流量 …………………………………………......................................27
第5章 RPL实例 ……………………………………......................................................28
5-1 RPL实例ID ……………………………………….............................................29
第6章 ICMPv6 RPL控制消息 ……………………………….......................................30
6-1 RPL安全字段 ……………………………………….......................................32
6-2 DODAG信息请求(DIS) .……………….…..………………….......................38
6-2-1 DIS基本对象格式 …………………………………….........................38
6-2-2 安全DIS …………………………………….........................................38
6-2-3 DIS选项 …………………………………….........................................38
6-3 DODAG信息对象(DIO) …………………………………..............................38
6-3-1 DIO基本对象格式 ……………………………………........................39
6-3-2 安全DIO ………………...………………….........................................41
6-3-3 DIO选项 ……………………………………........................................41
6-4 目的地通告对象(DAO) ……………………………………….......................41
6-4-1 DAO 基本对象格式 …………………………………….....................42
6-4-2 安全DAO …………………………………..........................................43
6-4-3 DAO选项 …………………………………..........................................43
6-5 目的地通告对象确认(DAO-ACK) ………….................................................43
6-5-1 DAO-ACK 基本对象格式 ………………………………..................44
6-5-2 安全DAO-ACK ……………………………….....................................45
6-5-3 DAO-ACK选项 ……………………………….....................................45
6-6 一致性检验(CC) ……………………………………......................................45
6-6-1 CC基本对象格式 …………………………………….........................46
6-6-2 CC选项 ……………………………………..........................................47
6-7 RPL控制消息选项 ………………………………………...............................47
6-7-1 RPL控制消息选项通用格式 …………………………………............47
6-7-2 Pad1 ……………………………………..................................................48
6-7-3 PadN …………………………………..................................................48
6-7-4 DAG度量容器 …………………………………..................................49
6-7-5 路由信息 ………………………………………...................................50
6-7-6 DODAG配置 …………………………………….................................52
6-7-7 RPL目标 …………………………………............................................54
6-7-8 传送信息 ………………………………………...................................55
6-7-9 请求信息 …………………………………………...............................58
6-7-10 前缀信息 ……………………………………….................................59
6-7-11 RPL目标描述符 …………………………………..............................63
第7章 序列计数器 ………………………………………..............................................63
7-1 序列计数器概述 ………………………………………....................................63
7-2 序列计数器运行 ………………………………………..................................64
第8章 上行路由 ……………………………………...................................................66
8-1 DIO基本规则 …………………………………...............................................67
8-2 上行路由发现和维护 ……………………………………………....................67
8-2-1 在DODAG版本中的邻居和父代 ………………………………........67
8-2-2 跨DODAG版本的邻居和父代 …………………………………........68
8-2-3 DIO消息通信 ………………………………………............................73
8-3 DIO发送 ……………………………………….............................................74
8-3-1 Trickle参数 …………………………………….................................75
8-4 DODAG选择 ………………………………….............................................75
8-5 作为叶节点的运行 ……………………………………..................................75
8-6 管理等级 …………………………………………..........................................76
第9章 下行路由 ………………………………………..................................................77
9-1 目的地通告父代 ……………………………………………..........................77
9-2 下行路由发现和维护 ……………………………………………..................78
9-2-1 路径序列维护 ………………………………………….......................79
9-2-2 DAO消息生成 ………………………………………..........................79
9-3 DAO基本规则 ………………………………….............................................80
9-4 DAO消息结构 ………………………………………….................................80
9-5 DAO发送调度 ………………………………………….................................83
9-6 触发DAO消息 ……………………………………….....................................83
9-7 非存储模式 ………………………………………..........................................84
9-8 存储模式 ………………………………………..............................................85
9-9 路径控制 ………………………………………..............................................86
9-9-1 路径控制举例 ……………………………………...............................88
9-10 多播目的地通告消息 ……………………………………………................89
第10章 安全机制 …………………………………………............................................90
10-1 安全综述 …………………………………………........................................90
10-2 加入安全网络 ………………………………………....................................91
10-3 安装密钥 ………………………………………..........................................92
10-4 一致性检验 ………………………………………........................................93
10-5 计数器 ……………………………………....................................................93
10-6 离站分组发送 ……………………………………………............................94
10-7 入站分组接收 ……………………………………………............................95
10-7-1 时间戳密钥检验 ……………………………….................................97
10-8 完整性和保密性覆盖范围 ………………………………………................97
10-9 密码的操作模式 …………………………………………............................98
10-9-1 CCM随机数 ……………………………............................................98
10-9-2 签名 ……………………………………...........................................99
第11章 分组转发和环路避免/检测 ………………………………………..................99
11-1 分组转发建议 ………………………………………………........................99
11-2 环路避免和检测 .………………………………………...............................101
11-2-1 源节点运行 ……………………………………..............................102
11-2-2 路由器运行 …………………………………..................................102
第12章 多播运行 …………………………………………..........................................104
第13章 维护路由相邻性 …………………………………………................................105
第14章 目标函数指南 ……………………………………………............................106
14-1 目标函数行为 …………………………………………..............................106
第15章 采用邻居发现的互操作性建议 ………………………………………..........108
第16章 归纳互操作实现要求 ……………………………………………………......109
16-1 通用要求 …………………………………………......................................109
16-2 (仅)作为RPL叶节点运行 …………………………………........................110
16-3 作为RPL路由器运行 …………………………………...............................110
16-3-1 (仅)支持上行路由 ……………………………………....................110
16-3-2 采用非存储模式支持上行路由和下行路由 ….............................110
16-3-3 采用存储模式支持上行路由和下行路由 ……... ...........................111
16-4 将来规范内容 ……………………………………………............................111
第17章 RPL常数和变量 ………………………………………..................................112
第18章 可管理性考虑 ………………………………………….................................113
18-1 引言 ……………………………………………............................................114
18-2 配置管理 ……………………………………………..................................115
18-2-1 初始化模式 ……………………………………...............................115
18-2-2 DIO和DAO基本消息和选项配置 .……….....................................115
18-2-3 LLN中每个路由器上配置的协议参数 …………..........................116
18-2-4 LLN中每个非DODAG根路由器上配置的协议参数 ……..............117
18-2-5 DODAG根上配置的参数 ………………………………………....117
18-2-6 与基于DAO机制有关的RPL参数配置 …………………..............118
18-2-7 与安全机制有关的RPL参数配置 ………………………...............119
18-2-8 默认值 ………………………………………...................................119
18-3 监测RPL运行 …………………………………………...............................120
18-3-1 监测DODAG参数 ……………………………………....................120
18-3-2 监测DODAG不一致和环路检测 ………………….........................121
18-4 监测RPL数据结构 ……………………………………………...................121
18-4-1 候选邻居数据结构 ……………………………………...................121
18-4-2 目的地导向的有向无循环图(DODAG)表 ………………................122
18-4-3 路由表和DAO路由条目 ……………………………………..........122
18-5 故障管理 ………………………………………..........................................123
18-6 策略 ……………………………………....................................................124
18-7 故障隔离 ………………………………………..........................................125
18-8 对其他协议的影响 ……………………………………..............................125
18-9 性能管理 ……………………………………………..................................126
18-10 诊断 …………………………………………............................................126
第19章 安全考虑 …………………………………………….......................................126
19-1 综述 ………………………………………..................................................126
第20章 IANA考虑 ………………………………………...........................................128
20-1 RPL控制消息 ……………………………………......................................128
20-2 RPL控制代码的新注册表 …………………………………......................128
20-3 运行模式(MOP)的新注册表 ………………………………………...........129
20-4 RPL控制消息选项 ………………………………….................................130
20-5 目标代码点(OCP)注册表 ….…………………………………...................131
20-6 安全部分算法的新注册表 …………………………………………..........131
20-7 安全部分标记的新注册表 ………………………………………..............132
20-8 Per-KIM安全等级的新注册表 …………………………………................132
20-9 DODAG信息请求(DIS)标记的新注册表 ……………...............................133
20-10 DODAG信息对象(DIO)标记的新注册表 …............................................134
20-11 目的地通告对象(DAO)标记的新注册表 ……….....................................134
20-12 目的地通告对象(DAO)确认标记的新注册表 …….................................135
20-13 一致性检验(CC)标记的新注册表 …………………………………........135
20-14 DODAG配置选项标记的新注册表 ……...……………………………...136
20-15 RPL目标选项标记的新注册表 …………………………………….........136
20-16 传送信息选项标记的新注册表 ..………………………………………..137
20-17 请求信息选项标记的新注册表 …………… ...........................................137
20-18 ICMPv6:源路由首部中的错误 ……………………………..................138
20-19 本地链路范围多播地址 …………………………………......................138
第21章 致谢 …………………………………………….............................................138
第22章 撰稿人 ……………………………………….................................................139
第23章 参考文献 .…………………………………....................................................139
23-1 标准类参考文献 ..…………………………………....................................139
23-2 信息类参考文献 .…………………………………….................................140
附录A 操作举例 .……………………………………………....................................143
A-1 采用含有节点自有前缀的存储模式的运行举例 …...................................143
A-1-1 DIO消息和PIO …………………………………..............................144
A-1-2 DAO消息 ………………………………….......................................145
A-1-3 路由信息库 ………………………………………............................145
A-2 采用含有宽子网前缀的存储模式的运行举例 ……...................................146
A-2-1 DIO消息和PIO .…………………………………..............................147
A-2-2 DAO消息 ………………………………….....................................148
A-2-3 路由信息库 .………………………………………...........................148
A-3 采用含有节点自有前缀的非存储模式的运行举例 .…..............................149
A-3-1 DIO消息和PIO .………………………………….............................150
A-3-2 DAO消息 .…………………………………......................................150
A-3-3 路由信息库 ..………………………………………..........................151
A-4 采用含有宽子网前缀的非存储模式的运行举例 .……………................151
A-4-1 DIO消息和PIO ……………………………………..........................152
A-4-2 DAO消息 ……………………………………...................................153
A-4-3 路由信息库 ………………………………………............................153
A-5 采用外部前缀举例 ………………………………………...........................154
第 1 章 序言
低功耗有损网络(LLNs)由大量受限节点(它们在处理能力、存储能力上受到限制;以及
在能量上会因用电池供电或能量净化受到限制)组成。这些路由器通过有损链路互连,
一般仅支持不稳定的低速数据,分组交付率相对较低。这些网络的另一个特点是流量模
式不仅有简单的点对点,而且有点对多点或多点对点多种模式。此外,这样的网络有可
能由上千个节点构成。这些特点对路由解决方案提出了独特的挑战:IETF ROLL 工作
组针对在[RFC5867]、[RFC5826]、[RFC5673]和[RFC5548]中规定的低功耗有损网络(LLN)
路由协议,定义了特定应用路由要求。
本文档规定 LLNs 的 IPv6 路由协议(IPv6 Routing Protocol for LLNs, RPL)。注意,虽然
RPL是按照上述多个要求文档中所列要求制定的,但是 RPL的应用绝不限于这些应用。
1-1 设计原则
RPL 被设计满足在[RFC5867]、[RFC5826]、[RFC5673]和[RFC5548]中详细阐明的要求。
网络可以同时运行多个 RPL 实例。每个这样的实例可以适应不同、以及潜在不相容的
约束或性能标准。本文档定义单个实例如何运行。
为了拓宽 LLN 应用领域,RPL 把分组处理和转发从路由优化目标中分离出去。这类目
标例子包括尽量减少能量、尽量缩短延时或满足约束。本文档介绍 RPL 运行模式。其
他伙伴文档规定路由目标函数(Objective Functions)。RPL 实现在支持具体 LLN 应用时,
将根据应用要求包括必要的 Objective Function(s)。
运行 RPL 需要双向链路。在一些 LLN 环境,这些链路可能展现不对称的特性。将路由
器用作父代前需要验证路由器的可达性。RPL 期望在选择父代阶段触发外部机制,以
检验链路特性和邻居可达性。邻居不可达检测(Neighbor Unreachability Detection, NUD)
是这样的机制,但是也可以选用替代方案,包括双向转发检测(Bidirectional Forwarding
Detection, BFD) [RFC5881]以及来自较低层的提示(通过如[RFC5184]那样的第 2 层(L2)
触发器)。通常,更看重可对流量起反应的检测机制,以便尽量减小监测未使用链路的
成本。