RFC6550中文翻译(一)

刚开始学习物联网的时候,就是从contiki出发,当时就了解了RPL,现在,将之前的翻译整理一下,留作记录:
官方地址:https://datatracker.ietf.org/doc/rfc6550/
习惯用RFCreader来看:http://www.rfcreader.com/#rfc8138_line97
Internet Engineering Task Force (IETF) T. Winter, Ed.
Request for Comments: 6550
Category: Standards Track P. Thubert, Ed.
ISSN: 2070-1721 Cisco Systems
版权©归 2012 IETF Trust 和本文档撰写者(们)所有。保留所有权利

RPL:IPv6低功耗有损网络路由协议

RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks

摘要

低功耗有损网络(Low-Power and Lossy Networks, LLNs)是一类路由与连接受限的网络。LLN s路由一般在处理能力、内存和能量(电池)上受到限制。它们之间的互连具有高丢失率、低数据速率和不稳定的特点。LLNs 可由几十个到上千个路由构成。支持的数据流包括点对点(LLN 内设备间)、点对多点(从中心控制点到 LLN 内的设备子集),以及多点对点(从 LLN 内的多个设备到中心控制点)。文档规定低功耗有损网络的 IPv6 路由协议(IPv6 Routing Protocol for Low-Power and Lossy Networks, RPL),该协议提供的机制支持从 LLN 内多个设备到中心控制点的多点对点流量,以及从中心控制点到 LLN 内多个设备的点对多点通信。也可以支持点对点通信。
### 第一到第三章
目录
第1章 序言
1-1 设计原则
1-2 预期的链路层类型
第2章 术语
第3章 协议综述
3-1 拓扑结
3-1-1 构造拓扑结
3-1-2 RRL标识符
3-1-3 实例、DODAGs和DODAG版本
3-2 上行路由和DODAG架构
3-2-1 目标函数(OF)
3-2-2 DODAG修复
3-2-3 安全
3-2-4 接地DODAG和浮动DODAG
3-2-5 本地DODAGs
3-2-6 管理偏好
3-2-7 数据-路径合法性和环路检测
3-2-8 分布式算法运行

第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 实例(instance)。每个这样的实例可以适应不同、以及潜在不相容的约束或性能标准。本文档定义单个实例如何运行。
为了拓宽 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)触发器)。通常,更看重可对流量起反应的检测机制,以便尽量减小监测未使用链路的成本。
RPL 也期望在数据分组中接入和传送某些控制信息(称为“RPL Packet Information”)的
外部机制。RPL Packet Information 在第 11-2 节定义,该信息能够与带 RPL Instance 和RPL 路由状态验证的数据分组关联。RPL 选项[RFC6553]是这类机制的例子。除了使用严格的源路由 (该路由用于在第 9 章详细介绍的 Non-Storing 模式中的下行(Downward)分组)以外,该机制是所有分组需要的,该机制在性质上可阻止无限循环,减轻对 RPLPacket Information 的需要。将来的伙伴规范可能提出替代方法,以便在 IPv6 分组中携带 RPL Packet Information,以及可能扩展 RPL Packet Information 来支持附加功能。
RPL 提供在动态形成的网络拓扑上传播信息的机制。这种传播能够尽量减少节点中的
配置,使节点能够尽可能自主运行。这种机制使用 Trickle [RFC6206]优化传播,如第
8-3 节所述。
在一些应用中,RPL 集合了拥有独立前缀的路由的拓扑结构。这些前缀是否可以聚
合取决于路由器的起源。路由拥有的前缀作为 on-link 通告。
RPL 也引入一种能力,将公共前缀与子网绑在一起,在子网内路由。源可以注入有关
由 RPL传播的子网的信息,并且源是那个子网的官方。因为许多 LLN 链路有非传递性,
RPL 在子网上传播的公共前缀绝不能作为 on-link 通告。
尤其是,RPL可以传播 IPv6 Neighbor Discovery (ND)信息,诸如 Prefix Information Option 。(PIO) [RFC4861]和 Route Information Option (RIO) [RFC4191]。虽然 ND 信息不会与路由通告混淆并且它绝不会在另一个路由协议中被直接重新分配,由 RPL 传播的 ND 信息保留所有它的路由器到主机(少数情况下有路由器到路由器的扩展)的原始语义。RPL节点常常兼有主机和路由器的行为。作为主机,它处理在[RFC4191]、[RFC4861]、[RFC4862]和[RFC6275]中规定的选项。作为路由器,RPL 节点可以通告来自特定链路所要求选项的信息,例如,在 ND Router Advertisement (RA)消息中,具体操作超出本文档范围。
本规范的一组其他文档将对应用形式提供进一步指导,这些应用语句规定了适合楼
宇自动化(Building Automation)、家庭自动化(Home Automation)、工业(Industrial)和城市应用场景的一组操作要点。

1-2 预期的链路层类型

兼容 IP 分层架构,RPL 不依赖任何特定链路层技术的具体特征。RPL 被设计能运行在
各种不同链路层上,包括受限、可能有损的链路层,或者典型的与极度受限的主机设备
或路由器设备一起使用的链路层,这样的技术包括但不限于低功耗无线技术或电力线通
信(Power Line Communication , PLC)技术。
当在 RPL 和具体链路层技术间设计链路层接口时,实施者可在[RFC3819]中获得有益帮
助。

第2章 术语

此外,本文档使用来自[ROLL-TERMS]的术语,并且引入下述术语:

  • DAG(Directed Acyclic Graph):
    有向无环图,所有边缘均以没有循环存在的方式定向。所有边缘均被包含在定向到或终结在一个或多个根节点的路径中。
  • DAG root:
    DAG 根是没有出站边缘的 DAG 内的节点。因为图形是非循环的,根据定义,所
    有 DAGs 必须至少有一个 DAG 根,并且所有路径终结在 DAG 根。
  • Destination-Oriented DAG (DODAG):
    扎根于单个目的地的 DAG,即,扎根于没有出站边缘的单个 DAG 根(DODAG 根)
    的 DAG。
  • DODAG root:
    DODAG 根是 DODAG 的 DAG 根。DODAG 根可以充当 DODAG 的边缘路由器;
    尤其是,它可以聚合 DODAG 中的路由,可以重新分配 DODAG 路由到其他路由
    协议中。
  • Virtual DODAG root:
    Virtual DODAG 根是使用两个或多个 RPL 路由器的结果,例如,6LoWPAN Border
    Routers (6LBRs)、同步 DODAG 状态的协调,以及相对于 LLN,好像它们是单个
    DODAG 根(使用多个接口)的协调一致行动。这种协调最有可能发生在可靠传输链
    路上加电设备间,方案实施细节超出本规范范围(在将来的伙伴规范中定义)。
  • Up:
    Up 指沿着 DODAG 边缘,从叶节点朝向 DODAG 根的方向。这与在图形和深度优
    先搜索(depth-first-search)中使用的通用术语意思相同,在那里,认为离根更远的端
    点“更深”或“在下”,认为更为贴近根的端点“更浅”或“在上”。
  • Down:
    Down 指从 DODAG 根朝向叶节点的方向,与 DODAG 边缘方向相反。这与在图形
    和深度优先搜索中使用的通用术语意思相同,在那里,认为离根更远的端点“更深”
    或“在下”,认为更为贴近根的端点 “更浅”或“在上”。
  • Rank:
    节点的 Rank 定义就 DODAG 根而言,节点相对其他节点的具体位置。Rank 在向
    下(Down)方向严格增加,在向上(Up)方向严格减少。计算 Rank 的精确方法取决于
    DAG 的 Objective Function (OF)。Rank 可以类似于跟踪简单的拓扑距离,可以作为
    链路度量的函数计算,可以看作是诸如约束的其他特性。
  • Objective Function (OF):
    目标函数(OF)定义路由度量(routing metrics)、优化目标和相关函数如何用于计算
    Rank。此外,OF 决定如何选择 DODAG 中的父代,从而决定 DODAG 形成。
  • Objective Code Point (OCP):
    OCP 是标识符,指出 DODAG 使用哪一个 OF。
  • RPLInstanceID:
    RPLInstanceID 是网络中唯一的标识符。有相同 RPLInstanceID 的 DODAGs 共享相
    同 OF。
  • RPL Instance:
    RPL Instance 是一组共享 RPLInstanceID 的一个或多个 DODAG。在大多数情况下,
    RPL 节点归属 RPL Instance 中的一个 DODAG。每个 RPL Instance 独立于其他 RPL
    Instances 运行。本文档介绍在单个 RPL Instance 中的运行情况。
  • DODAGID:
    DODAGID 是 DODAG 根的标识符。在 LLN 中 RPL Instance 范围内 DODAGID 唯
    一。元组(RPLInstanceID、DODAGID)唯一标识 DODAG。
  • DODAG Version:
    DODAG Version 是带有给定 DODAGID 的 DODAG 的具体迭代(Version)。
  • DODAGVersionNumber:
    DODAGVersionNumber 是计数器,它由根增加,以便形成 DODAG 的新 Version。
    DODAG Version 由(RPLInstanceID、DODAGID、DODAGVersionNumber)元组唯一
    标识。
  • Goal:
    Goal 是特定应用目标,它的定义超出 RPL 范围。任何扎根于 DODAG 的节点需要
    知道这个 Goal,以便决定是否能够满足该 Goal。典型的 Goal 按照特定 OF 构建
    DODAG,以及保持与一组主机的连接(例如,使用这样的 OF,该 OF 尽量减少度
    量并连接到用于保存所收集数据的特定数据库主机)。
  • Grounded:
    如果 DODAG 根能够满足 Goal,该 DODAG 是接地的。
  • Floating:
    如果 DODAG 没有接地,它是浮动的。浮动 DODAG 预期不会有满足目标需要的
    性能。然而,浮动 DODAG 可以提供到 DODAG 内其他节点的连接。
  • DODAG parent:
    DODAG 内节点的父代是在朝向 DODAG 根路径上节点的直接后继者之一。
    DODAG 父代的 Rank 比节点的低(参阅第 3-5-1 节)。
  • Sub-DODAG:
    节点的子 DODAG 是一组其他节点,这些节点到 DODAG 根的路径经过该节点。
    在节点的子 DODAG 中的节点有比该节点更大的 Rank(参阅第 3-5-1 节)。
  • Local DODAG:
    Local DODAGs 包含一个且只有一个根节点,Local DODAGs 使该单个根节点能够
    分配和管理由本地 RPLInstanceID 标识的 RPL Instance,不需要与其他节点协调。
    一般,这样做是为了优化到 LLN 内目的地的路由。(参阅第 5 章)。
  • Global DODAG:
    Global DODAG 使用可以在几个其他节点中协调的全局 RPLInstanceID。(参阅第 5
    章)。
  • DIO:DODAG Information Object(参阅第 6-3 节)
  • DAO:Destination Advertisement Object(参阅第 6-4 节)
  • DIS:DODAG Information Solicitation(参阅第 6-2 节)
  • CC:Consistency Check(参阅第 6-6 节)
    当它们形成网络,对比传统 IP 网络,LLN 设备常常既是主机,又是路由器。在本文档
    中,“主机”指能够生成但不能转发 RPL 流量的 LLN 设备;“路由器”指能够转发也能
    够生成 RPL 流量的 LLN 设备;“节点”指任何 RPL 设备,或者是主机或者是路由器。

第3章 协议综述

本章的目标是以[RFC4101]倡导的风格介绍 RPL。协议细节在后续章节介绍。

3-1 拓扑结构

本节介绍可形成的基本 RPL 拓扑结构,介绍构建这些拓扑结构的规则,即,指导 DODAG形成的规则。

3-1-1 拓扑结构构造

LLNs,如 Radio Networks,一般没有预先定义的拓扑结构,例如,由点对点导线强制
形成的拓扑结构,所以,RPL 必须发现链路,接着有节制地选择对端。
在许多情况,由于 Layer 2 范围仅部分重叠,RPL 形成非传递/Non-Broadcast Multi-Access (NBMA)网络拓扑结构,RPL 根据这些网络拓扑计算路由。
RPL 路由优化中来自一个或多个根的流量,这些根充当该拓扑结构的汇接点(sink)。
因此,RPL 如 Directed Acyclic Graph (DAG)那样安排拓扑结构,DAG 被划分成一个或
多个 Destination Oriented DAGs (DODAGs),每个汇接点一个 DODAG。如果 DAG 有多个根,那么,可以预期这些根通过公共骨干网(如传输链路)连接。

3-1-2 RRL标识符

RPL 使用 4 个值来标识和维护拓扑结构:

  • 1、RPLInstanceID。RPLInstanceID标识一组一个或多个Destination Oriented
    DAG (DODAG)。网络可以有多个RPLInstanceID,每一个定义一组独立的DODAG,
    可以针对不同目标函数应用优化这些DODAG。由RPLInstanceID标识的DODAGs集合被称作RPL Instance。在同一RPL Instance中的所有DODAGs使用相同的OF。
  • 2 、 DODAGID。DODAGID 的范围是 RPL Instance。RPLInstanceID 和 DODAGID
    结合唯一标识网络中单个 DODAG。RPL Instance 可以有多个 DODAG,每一个有唯
    一的 DODAGID。
  • 3 、 DODAGVersionNumber。DODAGVersionNumber 的范围是 DODAG。有时
    通过递增 DODAGVersionNumber ,可以根据 DODAG 根重新构建 DODAG。
    RPLInstanceID、DODAGID 和 DODAGVersionNumber 三者结合唯一标识 DODAG
    Version。
  • 4 、 Rank。Rank 的范围是 DODAG Version。Rank 在 DODAG Version 上建立部
    分顺序,定义相对 DODAG 根的单个节点位置
3-1-3 实例、DODAGs和DODAG版本

RPL Instance 包括一个或多个 DODAG 根。RPL Instance 可以提供到某些目的地前缀的
路由,可以通过 DODAG 根或 DODAG 内替代路径到达。这些 DODAG 根可以独立工
作,也可以在网络上协同工作,网络不局限为 LLN。
RPL Instance 可能包括:

  • 有单一根的单个 DODAG
    例如,为尽量减少 Home Automation 应用中单个集中照明控制器产生的延时而优
    化的 DODAG
  • 多个有独立根的、未经协调的 DODAG(不同 DODAGIDs)
    例如,在城市数据采集应用中的多个数据采集点,这些数据采集点没有相互协调
    的合适连接,或者这些数据采集点使用多 DODAG 结构作为动态和自主分割网
    络的方法。
  • 单个有虚拟根的 DODAG,该虚拟根在骨干网络上配合 LLN 汇接点(采用相同
    DODAGID)。
    例如,采用可靠传送链路工作的多个边界路由器,如,支持 IPv6 Low-Power
    Wireless Personal Area Network (6LoWPAN)应用,这些边界路由器能够作为到相
    同 DODAG 汇接点的逻辑等价接口。
  • 适合某些应用场景的上述组合。
    每个 RPL 分组与特定 RPLInstanceID(参阅第 11-2 节)关联,因此,与 RPL Instance 关联(参阅第 5 章)。提供或者自动发现 RPLInstanceID 和应用流量的类型或业务之间的映射超出本规范范围(在将来的伙伴规范中定义)。
    图 1 给出包括 3 个 DODAG 的 RPL Instance ,其中 DODAGs 有 DODAG 根 R1、R2 和 R3。
    这些 DODAG 根中的每一个通告相同的 RPLInstanceID。直线表示父代和子
    代间是连通的。
    图 2 显示 DODAGVersionNumber 增加如何导致新的 DODAG Version。此图演示导致不同 DODAG 拓扑的 DODAGVersionNumber 增加。注意,新 DODAG Version 并不总是暗示不同 DODAG 拓扑。采纳某些拓扑改变需要新 DODAG Version,本规范稍后将谈及此。
    虽然当连通性支持 DODAG 结构时,该 DODAG 结构允许每个节点有多个父代,请注意,在下面例子中采取类似树形结构主要为了便于介绍
    RFC6550中文翻译(一)_第1张图片
    RFC6550中文翻译(一)_第2张图片

3-2 上行路由和DODAG架构

RPL 提供向上(Up)朝向 DODAG 根的路由,形成按照 Objective Function (OF)优化的
DODAG。RPL 节点通过 DODAG Information Object (DIO)消息构建和维护这些 DODAG。

3-2-1 目标函数(OF)

目标函数(Objective Function, OF)定义RPL节点如何选择和优化 RPL Instance 中的路由。OF 由 DIO Configuration 选项中的 Objective Code Point (OCP)标识。OF 定义节点如何将一个或多个度量和约束(度量和约束在[RFC6551]中定义)转换成称作 Rank 的值,Rank近似为节点离开 DODAG 根的距离。OF 也定义节点如何选择父代。更多细节参阅第 14章、[RFC6551]、[RFC6552]和相关伙伴规范

3-2-2 DODAG修复

通过增加 DODAGVersionNumber,DODAG 根发起全局修复操作。这将启动新的
DODAG Version。在新 DODAG Version 中的节点可以选择新位置,节点的 Rank 不受
在旧 DODAG Version 中它们的 Rank 的限制。
RPL 也支持可以用于该 DODAG Version 内本地修复的机制。当根据 DODAG 根进行配
置和由 DODAG 根中的策略进行控制时,DIO 消息规定必要的参数。

3-2-3 安全

RPL 支持消息保密性和完整性。它的设计使得当可获得且适合时,可以使用链路层机
制;然而,如果没有链路层机制,RPL 可以使用它自己的机制。RPL 有 3 种基本安全
模式。
第一种称作“无安全的”,发送 RPL 控制消息但不使用任何附加安全机制。无安全模式
不是说 RPL 网络是不安全的:RPL 网络可以使用其他已有的安全基元(例如,链路层安
全),满足应用安全需要。

3-2-4 接地DODAG和浮动DODAG

DODAGs 可以接地或浮动:DODAG 根通告是哪一种情况。接地 DODAG 提供到主机
的连接,这些主机被要求满足限定的应用目标。不预期浮动 DODAG 能够满足此目标;
在大多数情况,浮动DODAG仅提供去DODAG内节点的路由。举例来讲,浮动 DODAGs
可用于修复期间保持互连。

3-2-5 本地DODAGs

通过形成 Local DODAG (它的 DODAG 根是预期的目的地),RPL 节点能够优化去 LLN
内目的地的路由。与全局 DAGs 不同,全局 DAGs 可由多个 DODAG 组成,本地 DAGs
有一个且仅有一个 DODAG,因此,仅有一个 DODAG 根。可根据需要构建 Local
DODAGs。

3-2-6 管理偏好

实现/部署可以通过管理偏好,规定某些 DODAG 根应当先于其他 DODAG 根使用。管
理偏好提供控制流量和工程 DODAG 形成的方法,以便更好地支持应用要求或需要。

3-2-7 数据-路径合法性和环路检测

LLNs 的低功耗和有损性质促使 RPL 使用按需(on demand)环路检测(使用数据分组)。因
为数据流量可能是偶发的,维持始终随物理拓扑结构变动而更新的路由拓扑会浪费能源。
在物理连接中 LLNs 一般呈现瞬间的、无碍流量的变化,但是,从控制平面密切跟踪这
些变化代价高昂。直到有数据发送前,连接中出现的瞬态和偶发变化不需要 RPL 处理。
RPL 这方面的设计汲取自现有的、高频率使用的 LLN 协议,以及关于 RPL 效用的大量
实验和部署证据
与数据分组一起传送的 RPL Packet Information 包括发射机的 Rank。分组的路由决定(上行或下行(Upward or Downward))和两个节点间 Rank 关系之间的不一致指出可能有环路。一旦收到这样的分组,节点发起本地修复操作。
例如,如果节点收到标记为上行(Upward)方向移动的分组,并且如果那个分组记载发射
机有比接收节点更低的(更小的)Rank,那么,接收节点能够断定该分组不是沿上行
(Upward)方向传播,以及断定 DODAG 不一致。

3-2-8 分布式算法运行

构建 DODAG 的分布式算法的高层概述如下:

  • 一些节点被配置为 DODAG 根,采用关联的 DODAG 配置。
  • 节点通告它们的存在、与 DODAG 的隶属关系、路由开销,以及将本地链路多播 DIO消息发送到 all-RPL-nodes 的相关度量。
  • 节点侦听 DIOs 并使用这些 DIOs 的信息,按照规定的 Objective Function 和节点邻居的 Rank,加入新的 DODAG (从而,选择 DODAG 父代),或维持现有的DODAG。
  • 节点通过在 DODAG Version 中它们的 DODAG 父代,为由该 DIO 消息规定的目的地提供路由表条目。决定加入 DODAG 的节点,可以提供一个或多个 DODAG 父代,作为默认路由的下一跳,以及作为大量其他关联实例的外部路由

你可能感兴趣的:(物联网基础)