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' 是任意有效的范围标识符 (scope identifier). 使用 [IPv6-UBM] 的术语, 所有 SSM 地址都必须具有 P=1, T=1 和 plen=0. [IPv6-MALLOC] 还要求 SSM 地址的网络前缀字段也设置为零, 因此所有 SSM 地址都落在 FF3x::/96 范围内. 未来的文档可能允许非零网络前缀字段, 例如定义了新的 IP 地址到 MAC 地址映射时. 因此, 地址分配应在 FF3x::/96 范围内进行, 但系统应将整个 FF3x::/32 都视为 SSM 地址, 以便与网络前缀字段未来可能的用途保持兼容.
FF3x::4000:0001 至 FF3x::7FFF:FFFF 范围内的地址按 [IPv6-MALLOC] 保留给 IANA 分配. FF3x::8000:0000 至 FF3x::FFFF:FFFF 范围内的地址允许由主机动态分配, 如 [IPv6-MALLOC] 所述. 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 特别适合具有一个或多个发送者且发送者身份在应用开始前已知的传播式 (dissemination-style) 应用. 例如, 一个数据传播应用若希望在主数据源发生故障时提供备用数据源, 可以为每个源使用一个信道, 并向接收者通告这两个信道. SSM 也可用于构建并非所有参与者身份都预先已知的多源应用, 但在这种情况下, 多源 "汇合" (rendezvous) 功能不会发生在网络层. 正如在以单播作为底层传输的应用中一样, 此功能可由应用本身或应用层库实现.
客户端直接向服务器所监听的 "服务位置组" (service location group) 发送组播查询这种形式的组播资源发现, 不被 SSM 直接支持.
本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" 和 "OPTIONAL" 应按 RFC 2119 [RFC2119] 中的描述解释.
本文档定义了特定源组播地址的语义, 并规定了管理其使用的策略. 具体而言, 它定义了适用于发送到 SSM 地址的数据报的互联网网络服务扩展, 并定义了支持该网络服务的主机扩展. 使用这些地址的主机, 路由器, 应用和协议 MUST 遵守本文档概述的策略. 主机若不遵守, 可能阻止该主机或同一 LAN 上的其他主机接收发送到某个 SSM 信道的流量. 路由器若不遵守, 可能导致 SSM 流量被递送到网络中不需要它的部分, 从而给网络带来不必要的负担.