1. 引言
Internet Protocol (IP) 组播服务模型定义于 RFC 1112 [RFC1112]. RFC 1112 规定, 发送到 IP 组播地址 (224.0.0.0 到 239.255.255.255) G 的数据报会递送给每个已请求接收发送到地址 G 的数据报的 "上层协议模块". RFC 1112 将由组播目的地址 G 标识的网络服务称为 "主机组" (host group). 该模型同时支持一对多和多对多的组通信. 本文档使用 "任意源组播" (Any-Source Multicast, ASM) 指代 RFC 1112 中定义的组播模型. RFC 3513 [RFC3513] 规定了具有 ASM 语义的 IPv6 组播地址形式.
232/8 (232.0.0.0 到 232.255.255.255) 范围内的 IPv4 地址目前被指定为源特定组播 (Source-Specific Multicast, SSM) 目的地址, 并保留给源特定应用和协议使用 [IANA-ALLOC].
对于 IPv6, [IPv6-UBM] 将地址前缀 FF3x::/32 保留给源特定组播使用, 其中 x 是任意有效的作用域标识符. 按照 [IPv6-UBM] 的术语, 所有 SSM 地址都必须具有 P=1, T=1 和 plen=0. [IPv6-MALLOC] 还要求 SSM 地址的网络前缀字段设置为零, 因此所有 SSM 地址都落在 FF3x::/96 范围内. 如果未来定义了新的 IP 地址到 MAC 地址映射, 后续文档可能允许非零网络前缀字段. 因此, 地址分配应在 FF3x::/96 范围内进行, 但系统应将整个 FF3x::/32 都视为 SSM 地址, 以便与网络前缀字段未来可能的用法保持兼容.
[IPv6-MALLOC] 将 FF3x::4000:0001 到 FF3x::7FFF:FFFF 范围内的地址保留给 IANA 分配. 如 [IPv6-MALLOC] 所述, FF3x::8000:0000 到 FF3x::FFFF:FFFF 范围内的地址允许由主机动态分配. FF3x::0000:0000 到 FF3x::3FFF:FFFF 范围内的地址是无效的 IPv6 SSM 地址. ([IPv6-MALLOC] 指出 FF3x::0000:0001 到 FF3x::3FFF:FFFF 必须设置 P=0 和 T=0, 但对于 SSM, [IPv6-UBM] 要求 P=1 和 T=1, 因此这些地址被指定为无效.) 对发送到这类无效地址的数据包如何处理未作定义, 路由器或主机可以选择丢弃这类数据包.
发送到 SSM 地址的数据报采用源特定组播递送语义. 也就是说, 源 IP 地址为 S 且 SSM 目的地址为 G 的数据报, 只会递送给那些明确请求接收由源 S 发送到地址 G 的数据报的上层 "套接字" (socket). 对于 SSM 地址 G 和源主机地址 S, 由 (S,G) 标识的网络服务称为 "信道" (channel). 与 RFC 1112 的 ASM 模型相比, SSM 只在网络层支持一对多递送.
源特定组播的优点包括:
-
当两个源同时使用相同的源特定目的地址时, 可以避免流量交叉递送. 多个源和不同应用同时使用同一个 SSM 目的地址是明确受支持的.
-
由于上述特性, 选择源特定地址时无需在主机之间进行协调.
-
可以避免许多为提供 ASM 服务模型而需要的路由器协议和算法. 例如, 支持源特定模型不需要 PIM - Sparse Mode (PIM-SM) 协议 [PIM-SM] 中的 "共享树" (shared trees) 和汇聚点 (Rendezvous Points). 支持 SSM 所需的路由器机制实际上很大程度上是支持 ASM 所用机制的一个子集. 例如, PIM-SM 协议的最短路径树机制可以调整为提供 SSM 语义.
与 ASM 一样, SSM 发送者并不知道接收者集合. SSM 源既不会获得接收者身份, 也不会获得接收者数量.
SSM 特别适合发布式应用, 这类应用有一个或多个发送者, 且发送者身份在应用开始前已知. 例如, 一个数据发布应用希望在主数据源故障转移时提供备用数据源, 可以为每个源使用一个信道, 并将两个信道都公告给接收者. SSM 也可用于构建并非所有参与者身份都预先已知的多源应用, 但在这种情况下, 多源 "汇合" (rendezvous) 功能不发生在网络层. 与使用单播作为底层传输的应用一样, 该功能可以由应用自身或应用层库实现.
SSM 不直接支持这样一种组播资源发现形式: 客户端直接向服务器监听的 "服务位置组" (service location group) 发送组播查询.
本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" 和 "OPTIONAL" 应按 RFC 2119 [RFC2119] 中的描述解释.
本文档定义源特定组播地址的语义, 并规定管理其使用的策略. 具体而言, 它定义了适用于发送到 SSM 地址的数据报的 Internet 网络服务扩展, 并定义了支持该网络服务的主机扩展. 使用这些地址的主机, 路由器, 应用和协议必须遵守本文档概述的策略. 如果主机不遵守, 可能导致该主机或同一 LAN 上的其他主机无法接收发送到某个 SSM 信道的流量. 如果路由器不遵守, 可能导致 SSM 流量被递送到网络中不需要它的部分, 从而给网络带来不必要的负担.