示例:配置特定于源的组播
了解 PIM 源特定模式
PIM 源特定组播 (SSM) 使用 PIM 稀疏模式和 IGMP 版本 3 (IGMPv3) 的子集,以允许客户端直接从源接收组播流量。PIM SSM 使用 PIM 稀疏模式功能在接收器和源之间创建 SPT,但在没有 RP 帮助的情况下构建 SPT。
- 任何源组播 (ASM) 都是原始组播
- 稀疏模式与密集模式下的源发现
- PIM SSM 是 PIM 稀疏模式的子集
- 为什么使用 PIM SSM
- PIM 术语
- PIM SSM 的工作原理
- 使用 PIM SSM
任何源组播 (ASM) 都是原始组播
RFC 1112 是原始的组播 RFC,支持多对多和一对多模型。这些被统称为任意源组播 (ASM),因为 ASM 允许一个或多个源用于组播组的流量。但是,只要有感兴趣的侦听器,ASM 网络都必须能够确定特定组播组的所有源的位置,而不管源可能位于网络中的什么位置。在ASM中,的关键 source discovery 功能是网络本身的必要功能。
稀疏模式与密集模式下的源发现
组播源发现似乎是一个简单的过程,但在稀疏模式下并非如此。在密集模式下,将流量泛洪到整个网络中的每个路由器非常简单,以便每个路由器都学习该组播组内容的源地址。但是,泛洪会带来可扩展性和网络资源使用问题,在稀疏模式下不是一个可行的选择。
PIM 稀疏模式(与任何稀疏模式协议一样)实现了所需的源发现功能,而不会泛洪,但代价是相当复杂。必须添加 RP 路由器,并且必须知道所有组播源,并且必须为 RP 构建复杂的共享分发树。
PIM SSM 是 PIM 稀疏模式的子集
PIM SSM 比 PIM 稀疏模式更简单,因为仅支持一对多模型。初始商业组播 Internet 应用程序可能仅供来自单个源(即发出加入消息的接收方)使用 subscribers (SSM 的特殊情况涵盖了对备份源的需求)。因此,PIM SSM 构成了 PIM 稀疏模式的子集。PIM SSM 会立即构建根于源的最短路径树 (SPT),因为在 SSM 中,离相关接收方主机最近的路由器会被告知组播流量源的单播 IP 地址。也就是说,PIM SSM 通过共享分发树绕过 RP 连接阶段(如在 PIM 稀疏模式下),并直接转到基于源的分发树。
为什么使用 PIM SSM
在有许多来源来来去去的环境中,例如对于视频会议服务,ASM 是合适的。但是,如果忽略多对多模型并将注意力集中在一对多源特定组播 (SSM) 模型上,一些商业上很有前途的组播应用(例如通过 Internet 进行电视频道分发)可能会比网络需要完整的 ASM 功能时更快、更有效地引入 Internet。
与传统配置 PIM 稀疏模式网络相比,SSM 配置的网络具有明显的优势。无需共享树或 RP 映射(不需要 RP),也不需要通过 MSDP 进行 RP 到 RP 源发现。
PIM SSM 比 PIM 稀疏模式更简单,因为仅支持一对多模型。初始商业组播 Internet 应用程序可能仅供来自单个源(即发出加入消息的接收方)使用 subscribers (SSM 的特殊情况涵盖了对备份源的需求)。因此,PIM SSM 构成了 PIM 稀疏模式的子集。PIM SSM 会立即构建根于源的最短路径树 (SPT),因为在 SSM 中,离相关接收方主机最近的路由器会被告知组播流量源的单播 IP 地址。也就是说,PIM SSM 通过共享分发树绕过 RP 连接阶段(如在 PIM 稀疏模式下),并直接转到基于源的分发树。
PIM 术语
PIM SSM 为 PIM 稀疏模式中的许多概念引入了新术语。从技术上讲,PIM SSM 可用于整个 224/4 组播地址范围,但 PIM SSM 操作仅在 232/8 范围内得到保证(保留 232.0.0/24)。新的SSM术语适用于互联网视频应用,总结在 表1中。
术语 |
任意源组播 |
特定于源的组播 |
---|---|---|
地址标识符 |
G |
S,G |
地址指定 |
群 |
渠道 |
接收器操作 |
加入、离开 |
订阅、取消订阅 |
组地址范围 |
224/4 不包括 232/8 |
224/4(仅保证 232/8) |
尽管 PIM SSM 将接收方操作描述为 subscribe 和 subscriber,但两种形式的协议都使用相同的 PIM 稀疏模式加入和离开消息。术语更改将 ASM 与 SSM 区分开来,即使接收方消息相同。
PIM SSM 的工作原理
PIM 源特定组播 (SSM) 使用 PIM 稀疏模式和 IGMP 版本 3 (IGMPv3) 的子集,以允许客户端直接从源接收组播流量。PIM SSM 使用 PIM 稀疏模式功能在接收器和源之间创建 SPT,但在没有 RP 帮助的情况下构建 SPT。
默认情况下,SSM 组组播地址限制为 232.0.0.0 到 232.255.255.255 的 IP 地址范围。但是,您可以通过在 [编辑路由选项组播] 层次结构级别包含 ssm-groups 语句,将 SSM 操作扩展到另一个 D 类范围。默认 SSM 地址范围从 232.0.0.0 到 232.255.255.255 不能在 ssm-groups 语句中使用。此语句用于将其他组播地址添加到默认 SSM 组地址。此语句不会覆盖默认 SSM 组地址范围。
在 PIM SSM 配置的网络中,主机订阅 SSM 通道(通过 IGMPv3),宣布希望加入组 G 和源 S(参见 图 1)。直接连接的 PIM 稀疏模式路由器(接收方的 DR)向其源的 RPF 邻接方发送 (S,G) 加入消息。请注意,在 图 1 中,在此过程中,接收器不会像正常的 PIM 稀疏模式操作那样接触 RP。

(S,G) 联接消息启动源树,然后逐跳构建它,直到到达源。 在图 2 中,源树通过网络构建到路由器 3,路由器 3 是连接到源的最后一跃点路由器。

使用源树,组播流量将传递到订阅主机(请参阅 图 3)。

使用 PIM SSM
您可以将 Junos OS 配置为接受特定源组播 (SSM) 组的默认或配置范围内的组地址的任意源组播 (ASM) 加入消息 (*,G)。这允许您同时支持任意源和特定于源的组播组的组合。
部署 SSM 非常简单。您需要在所有路由器接口上配置 PIM 稀疏模式,并发出必要的 SSM 命令,包括在接收器的 LAN 上指定 IGMPv3。如果未在源和组成员接口上显式配置 PIM 稀疏模式,则不会转发组播数据包。IGMPv3 支持的源列表在 PIM SSM 中使用。当源变为活动状态并开始发送组播数据包时,SSM 组中感兴趣的接收方将收到组播数据包。
要配置其他 SSM 组,请在 [编辑路由选项组播] 层次结构级别包含 ssm-groups 语句。
参见
特定于源的组播组概述
特定于源的组播 (SSM) 是一种按源地址和组地址标识会话流量的服务模型。在 Junos OS 中实施的 SSM 具有协议无关组播 (PIM) 稀疏模式的高效显式加入过程,但消除了使用 (*,G) 对的即时共享树和集合点 (RP) 过程。(*) 是通配符,表示发送到组 G 的任何源,“G”表示 IP 组播组。SSM 构建由 (S,G) 对直接表示的最短路径树 (SPT)。“S”是指源的单播 IP 地址,“G”是指特定的组播组地址。SSM (S,G) 对称为通道,以区别于任意源组播 (ASM) 组。尽管 ASM 同时支持一对多和多对多通信,但 ASM 的复杂性在于其源发现方法。例如,如果单击浏览器中的链接,则接收方会收到有关组信息的通知,但不会通知源信息。使用 SSM 时,客户端可以同时接收源和组信息。
SSM 是一对多组播服务(如网络娱乐频道)的理想选择。但是,多对多组播服务可能需要 ASM。
要成功部署 SSM,您需要一个支持端到端组播的网络和使用互联网组管理协议版本 3 (IGMPv3) 或组播侦听器发现版本 2 (MLDv2) 堆栈的应用程序,或者您需要配置从 IGMPv1 或 IGMPv2 到 IGMPv3 的 SSM 映射。
SSM 映射允许运营商支持 SSM 网络,而无需所有主机都支持 IGMPv3。此支持存在于静态 (S,G) 配置中,但 SSM 映射还支持动态的每个源组状态信息,这些信息会随着主机使用 IGMP 加入和离开组而更改。
IGMPv3 和 PIM 稀疏模式的子集通常支持 SSM,称为 PIM SSM。使用 SSM,客户端可以直接从源接收组播流量。PIM SSM 使用 PIM 稀疏模式功能在客户端和源之间创建 SPT,但在没有 RP 帮助的情况下生成 SPT。
与传统配置 PIM 稀疏模式网络相比,SSM 配置的网络具有明显的优势。无需共享树或 RP 映射(不需要 RP),也无需通过组播源发现协议 (MSDP) 进行 RP 到 RP 源发现。
示例:使用任意源覆盖配置特定于源的组播组
此示例说明如何将特定于源的组播 (SSM) 组操作扩展到默认 IP 地址范围 232.0.0.0 到 232.255.255.255 之外。此示例还说明如何接受 SSM 组默认或配置范围内的组地址的任意源组播 (ASM) 加入消息 (*,G)。这允许您同时支持任意源和特定于源的组播组的组合。
要求
开始之前,请配置路由器接口。
概述
要部署 SSM,请在所有路由设备接口上配置 PIM 稀疏模式,并发出必要的 SSM 命令,包括在接收方的 LAN 上指定 IGMPv3 或 MLDv2。如果未在源成员接口和组成员接口上显式配置 PIM 稀疏模式,则不会转发组播数据包。IGMPv3 和 MLDv2 支持的源列表在 PIM SSM 中使用。只有指定的源才会将流量发送到 SSM 组。
在 PIM SSM 配置的网络中,主机订阅 SSM 通道(通过 IGMPv3 或 MLDv2)以加入组 G 和源 S(参见 图 4)。直接连接的 PIM 稀疏模式路由器(接收方的指定路由器 (DR))向其源的反向路径转发 (RPF) 邻接方发送 (S,G) 加入消息。请注意,在 图 4 中,接收器在此过程中不会像在正常的 PIM 稀疏模式操作中那样接触 RP。

(S,G) 联接消息启动源树,然后逐跳构建它,直到到达源。 在图 5 中,源树通过网络构建到路由器 3,路由器 3 是连接到源的最后一跃点路由器。

使用源树,组播流量将传送到订阅主机(请参阅 图 6)。

SSM 可以在包含模式或排除模式下运行。在排除模式下,接收方指定不希望从中接收组播组流量的源列表。路由设备将流量从排除列表中指定的源以外的任何源转发到接收方。接收方接受来自排除列表中指定的源以外的任何源的流量。
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,将命令复制并粘贴到层次结构级别的 CLI [edit]
中,然后从配置模式进入 commit
。
set protocols ospf area 0.0.0.0 interface fxp0.0 disable set protocols ospf area 0.0.0.0 interface all set protocols pim rp local address 10.255.72.46 set protocols pim rp local group-ranges 239.0.0.0/24 set protocols pim interface fe-1/0/0.0 mode sparse set protocols pim interface lo0.0 mode sparse set routing-options multicast ssm-groups 232.0.0.0/8 set routing-options multicast ssm-groups 239.0.0.0/8 set routing-options multicast asm-override-ssm
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。
要配置 RPF 策略,请执行以下操作:
配置 OSPF。
[edit protocols ospf] user@host# set area 0.0.0.0 interface fxp0.0 disable user@host# set area 0.0.0.0 interface all
配置 PIM 稀疏模式。
[edit protocols pim] user@host# set rp local address 10.255.72.46 user@host# set rp local group-ranges 239.0.0.0/24 user@host# set interface fe-1/0/0.0 mode sparse user@host# set interface lo0.0 mode sparse
配置其他 SSM 组。
[edit routing-options] user@host# set ssm-groups [ 232.0.0.0/8 239.0.0.0/8 ]
配置 RP 以接受 SSM 地址范围内组的 ASM 加入消息。
[edit routing-options] user@host# set multicast asm-override-ssm
如果完成设备配置,请提交配置。
user@host# commit
结果
输入show protocols
show routing-options
和命令确认您的配置。
user@host# show protocols ospf { area 0.0.0.0 { interface fxp0.0 { disable; } interface all; } } pim { rp { local { address 10.255.72.46; group-ranges { 239.0.0.0/24; } } } interface fe-1/0/0.0 { mode sparse; } interface lo0.0 { mode sparse; } }
user@host# show routing-options multicast { ssm-groups [ 232.0.0.0/8 239.0.0.0/8 ]; asm-override-ssm; }
验证
要验证配置,请运行以下命令:
显示 IGMP 组
显示 IGMP 统计信息
显示 PIM 加入
示例:配置仅 SSM 域
部署仅 SSM 域比部署 ASM 域简单得多,因为它只需要几个配置步骤。通过在 [编辑协议 PIM 接口全部] 层次结构级别添加 mode 语句,在所有接口上启用 PIM 稀疏模式。配置所有接口时,请通过为该接口添加 disable 语句来排除 fxp0.0 管理接口。然后在 [编辑协议 igmp 接口interface-name] 层次结构级别添加版本语句,在所有面向主机的接口上配置 IGMPv3。
在以下示例中,面向主机的接口为 fe-0/1/2:
[edit] protocols { pim { interface all { mode sparse; version 2; } interface fxp0.0 { disable; } } igmp { interface fe-0/1/2 { version 3; } } }
示例:在网络上配置 PIM SSM
以下示例显示了如何在 图 8 所示网络中的接收器和源之间配置 PIM SSM。

此示例说明如何在所有接收主机接口上将 IGMP 版本配置为 IGMPv3。
在所有面向主机的接口上启用 IGMPv3,并在路由器 1 上的 fxp0.0 接口上禁用 IGMP。
user@router1# set protocols igmp interface all version 3 user@router1# set protocols igmp interface fxp0.0 disable
注意:在路由器上配置 IGMPv3 时,使用 IGMPv2 配置的接口上的主机无法加入源树。
提交配置后,使用
show configuration protocol igmp
命令验证 IGMP 协议配置。user@router1> show configuration protocol igmp
[edit protocols igmp] interface all { version 3; } interface fxp0.0 { disable; }
使用命令验证
show igmp interface
是否已配置 IGMP 接口。user@router1> show igmp interface Interface State Querier Timeout Version Groups fe-0/0/0.0 Up 198.51.100.245 213 3 0 fe-0/0/1.0 Up 198.51.100.241 220 3 0 fe-0/0/2.0 Up 198.51.100.237 218 3 0 Configured Parameters: IGMP Query Interval (1/10 secs): 1250 IGMP Query Response Interval (1/10 secs): 100 IGMP Last Member Query Interval (1/10 secs): 10 IGMP Robustness Count: 2 Derived Parameters: IGMP Membership Timeout (1/10 secs): 2600 IGMP Other Querier Present Timeout (1/10 secs): 2550
使用命令验证
show pim join extensive
路由器 2 和路由器 3(上游路由器)上的 PIM 加入状态。user@router2> show pim join extensive 232.1.1.1 10.4.1.2 sparse Upstream interface: fe-1/1/3.0 Upstream State: Local Source Keepalive timeout: 209 Downstream Neighbors: Interface: so-1/0/2.0 10.10.71.1 State: Join Flags: S Timeout: 209
使用
show pim join extensive
命令验证路由器 1(连接到接收器的路由器)上的 PIM 加入状态。user@router1> show pim join extensive 232.1.1.1 10.4.1.2 sparse Upstream interface: so-1/0/2.0 Upstream State: Join to Source Keepalive timeout: 209 Downstream Neighbors: Interface: fe-0/2/3.0 10.3.1.1 State: Join Flags: S Timeout: Infinity
IP 版本 6 (IPv6) 组播路由器使用组播侦听器发现 (MLD) 协议来管理组播组中主机和路由器的成员身份,并了解对于每个连接的物理网络,哪些组具有感兴趣的侦听器。每个路由设备都维护一个主机组播地址列表,其中包含每个子网的侦听器,以及每个地址的计时器。但是,路由设备不需要知道每个侦听器的地址,只需要知道每个主机的地址。路由设备为其使用的组播路由协议提供地址,从而确保组播数据包传递到存在相关侦听器的所有子网。这样,MLD 被用作协议无关组播 (PIM) 协议的传输。MLD 是 IPv6 不可或缺的一部分,必须在需要接收 IP 组播流量的所有 IPv6 路由设备和主机上启用。Junos OS 支持 MLD 版本 1 和 2。特定于源的组播 (SSM) 包含和排除模式支持版本 2。
参见
示例:配置 SSM 映射
SSM 映射不要求所有主机都支持 IGMPv3。SSM 映射将 IGMPv1 或 IGMPv2 成员身份报告转换为 IGMPv3 报告。这使运行 IGMPv1 或 IGMPv2 的主机能够参与 SSM,直到主机转换为 IGMPv3。
SSM 映射适用于所有与策略匹配的组地址,而不仅仅是符合 SSM 寻址约定(IPv4 为 232/8,IPv6 为 ff30::/32 至 ff3F::/32)的组地址。
如果 IPv4 和 IPv6 地址族都需要 SSM 支持,我们建议这两个地址族使用单独的 SSM 映射。如果将同时包含 IPv4 和 IPv6 地址的 SSM 映射应用于 IPv4 上下文中的接口(使用 IGMP),则仅使用列表中的 IPv4 地址。如果没有此类地址,则不执行任何操作。同样,如果将同时包含 IPv4 和 IPv6 地址的 SSM 映射应用于 IPv6 情景中的接口(使用 MLD),则仅使用列表中的 IPv6 地址。如果没有此类地址,则不执行任何操作。
在此示例中,您将创建一个策略来匹配要转换为 IGMPv3 的组地址。然后,定义将策略与找到这些组地址的源地址相关联的 SSM 映射。最后,您将 SSM 映射应用于一个或多个 IGMP(适用于 IPv4)或 MLD(适用于 IPv6)接口。
创建名为 ssm-policy-example 的 SSM 策略。策略条款与 IPv4 SSM 组地址 232.1.1.1/32 和 IPv6 SSM 组地址 ff35::1/128 匹配。所有其他地址都将被拒绝。
user@router1# set policy-options policy-statement ssm-policy-example term A from route-filter 232.1.1.1/32 exact user@router1# set policy-options policy-statement ssm-policy-example term A then accept user@router1# set policy-options policy-statement ssm-policy-example term B from route-filter ff35::1/128 exact user@router1# set policy-options policy-statement ssm-policy-example term B then accept
提交配置后,使用 show configuration-options 命令验证策略配置。
user@host> show configuration policy-options
[edit policy-options] policy-statement ssm-policy-example { term A { from { route-filter 232.1.1.1/32 exact; } then accept; } term B { from { route-filter ff35::1/128 exact; } then accept; } then reject; }
组地址必须与配置的策略匹配,才能进行 SSM 映射。
通过应用策略并将源地址配置为组播路由选项,定义两个 SSM 映射,一个称为 ssm-map-ipv6-example ,另一个称为 ssm-map-ipv4-example。
user@host# set routing-options multicast ssm-map ssm-map-ipv6-example policy ssm-policy-example user@host# set routing-options multicast ssm-map ssm-map-ipv6-example source fec0::1 fec0::12 user@host# set routing-options multicast ssm-map ssm-map-ipv4-example policy ssm-policy-example user@host# set routing-options multicast ssm-map ssm-map-ipv4-example source 10.10.10.4 user@host# set routing-options multicast ssm-map ssm-map-ipv4-example source 192.168.43.66
提交配置后,使用 show configuration routing-options 命令验证策略配置。
user@host> show configuration routing-options
[edit routing-options] multicast { ssm-map ssm-map-ipv6-example { policy ssm-policy-example; source [ fec0::1 fec0::12 ]; } ssm-map ssm-map-ipv4-example { policy ssm-policy-example; source [ 10.10.10.4 192.168.43.66 ]; } }
我们建议为 IPv4 和 IPv6 使用单独的 SSM 映射。
将 SSM 映射应用于 IPv4 到 IGMP 接口,将 SSM 映射应用于 IPv6 到 MLD 接口:
user@host# set protocols igmp interface fe-0/1/0.0 ssm-map ssm-map-ipv4-example user@host# set protocols mld interface fe-0/1/1.0 ssm-map ssm-map-ipv6-example
提交配置后,使用 show configuration protocol 命令验证 IGMP 和 MLD 协议配置。
user@router1> show configuration protocol
[edit protocols] igmp { interface fe-0/1/0.0 { ssm-map ssm-map-ipv4-example; } } mld { interface fe-/0/1/1.0 { ssm-map ssm-map-ipv6-example; } }
使用 show igmp 接口 和 show mld 接口 命令验证 SSM 映射是否已应用于接口。
user@host> show igmp interface fe-0/1/0.0 Interface: fe-0/1/0.0 Querier: 192.168.224.28 State: Up Timeout: None Version: 2 Groups: 2 SSM Map: ssm-map-ipv4-example
user@host> show mld interface fe-0/1/1.0 Interface: fe-0/1/1.0 Querier: fec0:0:0:0:1::12 State: Up Timeout: None Version: 2 Groups: 2 SSM Map: ssm-map-ipv6-example