跳到主要内容

12. 组播操作 (Multicast Operation)

本节描述 IPv6 RPL 网络上的组播路由操作, 特别是单播 DAO 如何用于中继组注册. 同一个 DODAG 构造可用于转发单播和组播流量. 本节仅限于描述组注册可以如何交换以及转发基础设施如何运行. 它不提供 LLN 内组播的完整描述, 特别是不描述专门针对组播生成 DODAG 的方式, 也不描述为组播运行 RPL 的细节 -- 这些将是后续规范的主题.

组播组注册使用 DAO 消息, 除了所传输的地址类型不同之外, 这些 DAO 消息与单播 DAO 相同. 主要区别在于, 向下的组播流量会复制给所有已注册该组播组的子节点, 而单播流量只传递给一个子节点.

支持 RPL Storing 运行模式的节点 SHOULD 也支持如下所述的组播 DAO 操作. 只支持 Non-Storing 运行模式的节点预期不支持本节.

组播操作由 DIO 中的 MOP 字段控制.

  • 如果 MOP 字段要求组播支持, 则作为路由器加入 RPL 网络的节点必须按本节描述在 RPL 网络内执行组播信令和转发. 不支持 MOP 字段所要求组播操作的节点只能作为叶节点加入.

  • 如果 MOP 字段不要求组播支持, 则组播由其他方式处理, 这超出本规范范围. (示例可以包括一系列单播副本或受限作用域泛洪).

路由器可以选择只将监听方注册 DAO 消息传递给其首选父节点; 在这种情况下, 如果该链路上传输失败, 返回的组播分组可能对其所有 sub-DODAG 都丢失. 或者, 路由器可以像处理通告单播目的地的 DAO 消息那样, 选择复制给额外父节点; 在这种情况下, 可能会出现重复, 路由器需要对其进行剪枝.

因此, 组播路由状态会安装在从监听方到 DODAG 根路径上的每个路由器中, 使根能够将组播分组复制给所有曾发出包含该组播组 Target 选项的 DAO 消息的子路由器.

对于源自 DODAG 内部的组播分组, 该分组会传递给首选父节点; 如果失败, 则传递给 DODAG 中的备用父节点. 该分组也会复制给所有已注册的子节点, 但传递该分组的那个子节点除外. 最后, 如果外部基础设施中存在监听方, 则 DODAG 根还必须将该分组进一步传播到外部基础设施中.

因此, DODAG 根充当 RPL 网络的自动代理 Rendezvous Point, 并作为从 RPL 域中发起的所有组播流向非 RPL 域的源. 所以, 无论根是否实际附接到非 RPL 域, 也无论 DODAG 是 grounded 还是 floating, 根始终可以服务内部组播流.