目录

简介

先决条件

要求

使用的组件

规则

背景信息

密集模式

一个 RP 时的稀疏模式

多个 RP 时的稀疏模式

一个 RP 时的自动 RP

多个 RP 时的自动 RP

DVMRP

MBGP

MSDP

末节组播路由

卫星链路的 IGMP UDLR

PIMv2 BSR

CGMP

IGMP 侦听

PGM

MRM

故障排除

相关信息

简介

本文档介绍如何为各种网络场景配置组播的基础知识。

先决条件

要求

Cisco 建议您了解以下主题：

- 互联网协议(IP)组播。

使用的组件

本文档不限于特定的软件和硬件版本。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

规则

有关文档规则的详细信息，请参阅 Cisco 技术提示规则。

背景信息

IP 多播是一种可以减少流量的带宽节约技术，因为它可以将单个数据流同时传输到数千个公司接收方和家庭。利用多播的应用程序包括视频会议、公司通信、远程教育和软件分发、股票行情和新闻。

密集模式

Cisco 建议您在可能的情况下（尤其是对于新部署），使用独立于协议的多播 (PIM) 稀疏模式（尤其是自动 RP）。然而，如果想要使用密集模式，则在需要处理组播数据流的每个接口上配置ip multicast-routing全局命令和ip pim sparse-dense-mode接口命令。本文中的所有配置的通用要求是配置全局组播，并在接口上配置 PIM。从 Cisco IOS® 软件版本 11.1 起开始，可以配置 ip pim dense-mode 和 ip pim sparse-mode 接口命令，同时配置 ip pim sparse-dense-mode 命令。在此模式中，如果组采用密集模式，接口则被视为密集模式。如果组处于稀疏模式（例如，如果 RP 已知），接口被视为稀疏模式。

注：本文档示例中的“源”表示组播流量的源，“接收方”表示组播流量的接收方。

如果组处于密集模式，则接口被视为密集模式

路由器 A 配置

ip multicast-routing

interface ethernet0

ip address <address> <mask>

ip pim sparse-dense-mode

interface serial0

ip address <address> <mask>

ip pim sparse-dense-mode

路由器 B 配置

ip multicast-routing

interface serial0

ip address <address> <mask>

ip pim sparse-dense-mode

interface ethernet0

ip address <address> <mask>

ip pim sparse-dense-mode

一个 RP 时的稀疏模式

在本示例中，路由器 A 是 RP，通常是离源最近的路由器。静态RP配置要求PIM域中的所有路由器都配置了samei p pim rp-address命令。您能配置多个 RP，但每个特定组中可能只能有一个 RP。

可以有多个RP，但每个特定组只能有一个RP

路由器 A 配置

ip multicast-routing

ip pim rp-address 10.1.1.1

interface ethernet0

ip address <address> <mask>

ip pim sparse-dense-mode

interface serial0

ip address 10.1.1.1 255.255.255.0

ip pim sparse-dense-mode

路由器 B 配置

ip multicast-routing

ip pim rp-address 10.1.1.1

interface serial0

ip address <address> <mask>

ip pim sparse-dense-mode

interface ethernet0

ip address <address> <mask>

ip pim sparse-dense-mode

多个 RP 时的稀疏模式

在本示例中，源 A 发送到 224.1.1.1、224.1.1.2 和 224.1.1.3。源 B 发送到 224.2.2.2、224.2.2.3 和 224.2.2.4。您可以将一个路由器（RP 1 或 RP 2）作为所有组的 RP。但是，如果您希望不同的RP处理不同的组，则需要配置所有路由器以包括RP可以服务的组。这种类型的静态RP配置要求PIM域中的所有路由器配置相同的ip pim rp-address address acl命令。还可以使用自动 RP 来实现相同的设置，这样更容易进行配置。

源A发送到224.1.1.1、224.1.1.2和224.1.1.3；源B发送到224.2.2.2、224.2.2.3和224.2.2.4。

RP 1 配置

ip multicast-routing

ip pim RP-address 10.1.1.1 2

ip pim RP-address 10.2.2.2 3

access-list 2 permit 224.1.1.1

access-list 2 permit 224.1.1.2

access-list 2 permit 224.1.1.3

access-list 3 permit 224.2.2.2

access-list 3 permit 224.2.2.3

access-list 3 permit 224.2.2.4

RP 2 配置

ip multicast-routing

ip pim RP-address 10.1.1.1 2

ip pim RP-address 10.2.2.2  3

access-list 2 permit 224.1.1.1

access-list 2 permit 224.1.1.2

access-list 2 permit 224.1.1.3

access-list 3 permit 224.2.2.2

access-list 3 permit 224.2.2.3

access-list 3 permit 224.2.2.4

路由器 3 和路由器 4 的配置

ip multicast-routing

ip pim RP-address 10.1.1.1  2

ip pim RP-address 10.2.2.2  3

access-list 2 permit 224.1.1.1

access-list 2 permit 224.1.1.2

access-list 2 permit 224.1.1.3

access-list 3 permit 224.2.2.2

access-list 3 permit 224.2.2.3

access-list 3 permit 224.2.2.4

一个 RP 时的自动 RP

自动 RP 要求您配置 RP，宣告它们作为 RP 和映射代理的可用性。RP 使用 224.0.1.39 发送其通告。RP 映射代理可监听来自 RP 的通告数据包，然后在发送到 224.0.1.40 的发现信息中发送 RP-to-group 映射。这些发现消息由剩余路由器用于其RP到组映射。您能够使用一个充当映射代理的 RP，或者您能配置多 RP 和多个映射代理，以提供冗余。

注意，当您选择一个接口，从该接口查找RP公告来源，Cisco建议时您使用回环等接口，而不要使用物理接口。此外，还可以使用交换VLAN接口(SVI)。如果使用 VLAN 接口通告 RP 地址，则以下命令中的 interface-type 选项应包含 VLAN 接口和 VLAN 编号：ip pim [vrf vrf-name] send-rp-announce {interface-type interface-number | ip-address} scope ttl-value命令必须包含VLAN接口和VLAN编号。例如，该命令类似于ip pim send-rp-announceVlan500 scope 100。如果选择物理接口，您需要该接口始终保持连接。但实际情况并非始终如此，一旦物理接口断开，路由器将不再作为 RP 发出通告。使用始终保持连接且从不会断开的环回接口，可以确保 RP 继续通过所有可用的接口通告自己作为 RP。即使其一个或多个物理接口发生故障，也是如此。环回接口必须启用PIM并通过内部网关协议(IGP)进行通告，或者必须通过静态路由到达。

环回接口必须启用PIM并通过内部网关协议进行通告或通过静态路由可到达

路由器 A 配置

ip multicast-routing

ip pim send-rp-annouce loopback0 scope 16

ip pim send-rp-discover

scope 16

interface loopback0

ip address <address> <mask>

ip pim sparse-dense-mode

interface ethernet0

ip address <address> <mask>

ip pim sparse-dense-mode

interface serial0

ip address <address> <mask>

ip pim sparse-dense-mode

路由器 B 配置

ip multicast-routing

interface ethernet0

ip address <address> <mask>

ip pim sparse-dense-mode

interface serial0

ip address <address> <mask>

ip pim sparse-dense-mode

多个 RP 时的自动 RP

本示例中的访问控制列表允许 RP 只用作您想要组的 RP。如果未配置任何访问列表，则 RP 可用作所有组的 RP。如果两个RP宣布它们可用作同一组的RP，映射代理会使用“最高IP地址优先”规则解决这些冲突。

当两个 RP 均为该组进行通告时，您可以使用环回地址配置每个路由器，以便影响哪个路由器是特定组的 RP。将更高的IP地址放在首选RP上，然后使用环回接口作为通告数据包的源；例如，ip pim send-RP-announceloopback0。使用多个映射代理时，每个代理都将同一组通告到与 224.0.1.40 发现组发生映射的 RP 上。

将较高的IP地址放在首选RP上

RP 1 配置

ip multicast-routing

interface loopback0

ip address <address> <mask>

ip pim sparse-dense-mode

ip pim send-RP-announce loopback0 scope 16 group-list 1

ip pim send-RP-discovery scope 16

access-list 1 permit 239.0.0.0 0.255.255.255

RP 2 配置

ip multicast-routing

interface loopback0

ip address <address> <mask>

ip pim sparse-dense-mode

ip pim send-RP-announce loopback0 scope 16 group-list 1

ip pim send-RP-discovery scope 16

access-list 1 deny 239.0.0.0 0.255.255.255

access-list 1 permit 224.0.0.0 10.255.255.255

DVMRP

您的Internet服务提供商(ISP)可能会建议您创建到ISP的距离矢量组播路由协议(DVMRP)隧道，以便访问Internet中的组播主干(mbone)。配置 DVMRP 隧道所需的最低命令如下所示：

interface tunnel0

ip unnumbered <any pim interface>

tunnel source <address of source>

tunnel destination <address of ISPs mrouted box>

tunnel mode dvmrp

ip pim sparse-dense-mode

通常，ISP让您通过隧道连接到运行“mrouted”(DVMRP)的UNIX计算机。如果 ISP 让您建立隧道到另一台 Cisco 设备，则使用默认 GRE 隧道模式。

如果想要生成可供 mbone 上的其他人查看的多播数据包，而不是接收多播数据包，您需要通告来源子网。如果您的组播源主机地址是 172.16.108.1，您需要向 mbone 通告该子网的存在。默认情况下，直连网络使用度量值 1 通告。

如果您的信息源不是使用 DVMRP 隧道直接连接到路由器，请在接口 tunnel0 下进行以下配置：

ip dvmrp metric 1 list 3

access-list 3 permit  172.16.108.0 0.0.0.255

注意：您必须在此命令中包含访问列表，以防止将整个单播路由表通告给mbone。

如果设置类似于此处所示的设置，并且您想要通过域传播DVMRP路由，请在路由器A和B的serial0接口上配置ip dvmrp unicast-routingcommand。该操作提供DVMRP路由到PIM邻居的转发，然后这些邻居具有用于反向路径转发(RPF)的DVMRP路由表。DVMRP 获知的路由的 RPF 优先级高于所有其他协议（直接连接的路由除外）。

通过域传播DVMRP路由

MBGP

多协议边界网关协议(MBGP)是传送两组路由的基本方法：一组用于单播路由，一组用于组播路由。MBGP 提供必要的控制，决定允许流过多播数据包的位置。PIM 使用与多播路由关联的路由，以便生成数据分布树。MBGP 提供 RPF 路径，而不是创建多播状态。仍然需要 PIM，以便转发多播数据包。

仍需要PIM才能转发组播数据包

路由器 A 配置

ip multicast-routing

interface loopback0

ip pim sparse-dense-mode

ip address 192.168.2.2 255.255.255.0

interface serial0

ip address 192.168.100.1 255.255.255.0

interface serial1

ip pim sparse-dense-mode

ip address 192.168.200.1 255.255.255.0

router bgp 123

network 192.168.100.0 nlri unicast

network 192.168.200.0 nlri multicast

neighbor 192.168.1.1 remote-as 321 nlri unicast multicast

neighbor 192.168.1.1 ebgp-multihop 255

neighbor 192.168.100.2 update-source loopback0

neighbor 192.168.1.1 route-map setNH out

route-map setNH permit 10

match nlri multicast

set ip next-hop 192.168.200.1

route-map setNH permit 20

路由器 B 配置

ip multicast-routing

interface loopback0

ip pim sparse-dense-mode

ip address 192.168.1.1 255.255.255.0

interface serial0

ip address 192.168.100.2 255.255.255.0

interface serial1

ip pim sparse-dense-mode

ip address 192.168.200.2 255.255.255.0

router bgp 321

network 192.168.100.0 nlri unicast

network 192.168.200.0 nlri multicast

neighbor 192.168.2.2 remote-as 123 nlri unicast multicast

neighbor 192.168.2.2 ebgp-multihop 255

neighbor 192.168.100.1 update-source loopback0

neighbor 192.168.2.2 route-map setNH out

route-map setNH permit 10

match nlri multicast

set ip next-hop 192.168.200.2

route-map set NH permit 20

如果您的单播和组播拓扑是一致的（例如，它们通过同一链路），则配置的主要区别在于nlri unicast multicast命令。示例如下所示：

network 192.168.100.0 nlri unicast multicast

为 MBGP 使用一致的拓扑结构有一个优点 - 即使流量流经相同的路径，也可为单播 BGP 和多播 BGP 应用不同的策略。

MSDP

组播源发现协议(MSDP)连接多个PIM-SM域。每个PIM-SM域使用自己的独立RP，并且不必依赖其他域中的RP。MSDP 允许域从其他域中发现多播源。如果您也与 MSDP 对等体具有 BGP 对等关系，则必须为 MSDP 和 BGP 使用相同的 IP 地址。当 MSDP 进行对等 RPF 检查时，MSDP 期望 MSDP 对等地址与 BGP/MBGP 提供的地址相同（在 SA 消息中的 RP 上进行路由表查找时）。然而，如果 MSDP 对等体之间有一条 BGP/MBGP 路径，您便不需要运行带有 MSDP 对等体的 BGP/MBGP。如果没有BGP/MBGP路径和多个MSDP对等体，您必须使用ip msdp default-peer命令。下面的示例显示 RP A 是其所在域的 RP，而 RP B 是其所在域的 RP。

组播源发现协议(MSDP)连接多个PIM-SM域

路由器 A 配置

ip multicast-routing

ip pim send-RP-announce loopback0 scope 16 group-list 1

ip pim send-RP-discovery scope 16

ip msdp peer 192.168.100.2

ip msdp sa-request 192.168.100.2

interface loopback0

ip address <address> <mask>

ip pim sparse-dense-mode

interface serial0

ip address 192.168.100.1 255.255.255.0

ip pim sparse-dense-mode

路由器 B 配置

ip multicast-routing

ip pim send-RP-announce loopback0 scope 16 group-list 1

ip pim send-RP-discovery scope 16

ip msdp peer 192.168.100.1

ip msdp sa-request 192.168.100.1

interface loopback0

ip address <address> <mask>

ip pim sparse-dense-mode

interface serial0

ip address 192.168.100.2 255.255.255.0

ip pim sparse-dense-mode

末节组播路由

残域多播路由允许您将远程/残域路由器作为 IGMP 代理。这些末节路由器不是完全参与PIM，而是将IGMP消息从主机转发到上游组播路由器。

末节路由器将IGMP消息从主机转发到上游组播路由器

路由器 1 配置

int s0

ip pim sparse-dense-mode

ip pim neighbor-filter 1

access-list 1 deny 192.168.140.1

需要 ip pim neighbor-filter 命令，以便路由器 1 不会把路由器 2 用作 PIM 邻居。如果是在稀疏模式下配置路由器 1，则无需配置相邻的过滤器。路由器 2 不能在稀疏模式下运行。当处于密集模式下时，残域多播源会充斥到主干路由器。

路由器 2 配置

ip multicast-routing

int e0

ip pim sparse-dense-mode

ip igmp helper-address 192.168.140.2

int s0

ip pim sparse-dense-mode

卫星链路的 IGMP UDLR

单向链路路由 (UDLR) 提供了一种方法，可在单向卫星链路上将组播数据包转发到带有反向信道的 stub 网络。这类似于残域多播路由。没有此功能，上行链路路由器不能动态了解哪个 IP 组播组地址会在单向链路上转发，因为下行链路路由器不能送回任何地址。

单向链路路由(UDLR)提供转发组播数据包的方法

上行链路 rtr 配置

ip multicast-routing

interface Ethernet0

description Typical IP multicast enabled interface

ip address 172.16.12.1 255.0.0.0

ip pim sparse-dense-mode

interface Ethernet1

description Back channel which has connectivity to downlink-rtr

ip address 172.16.11.1 255.0.0.0

ip pim sparse-dense-mode

interface Serial0

description Unidirectional to downlink-rtr

ip address 10.0.0.1 255.0.0.0

ip pim sparse-dense-mode

ip igmp unidirectional-link

no keepalive

下行链路 rtr 配置

ip multicast-routing

interface Ethernet0

description Typical IP multicast enabled interface

ip address 172.16.14.2 255.0.0.0

ip pim sparse-dense-mode

ip igmp helper-address udl serial0

interface Ethernet1

description Back channel which has connectivity to downlink-rtr

ip address 172.16.13.2 255.0.0.0

ip pim sparse-dense-mode

interface Serial0

description Unidirectional to uplink-rtr

ip address 10.0.0.2 255.0.0.0

ip pim sparse-dense-mode

ip igmp unidirectional-link

no keepalive

PIMv2 BSR

如果网络中的所有路由器都运行PIMv2，则可以配置BSR而不是自动RP。BSR 和自动 RP 非常相似。BSR 配置要求您配置 BSR 候选（类似于 RP-Announce in Auto-RP）和 BSR（类似于 Auto-RP Mapping Agents）。要配置BSR，请执行以下步骤：

1. 在候选 BSR 上配置：

ip pim bsr-candidate interface hash-mask-len pref

其中，interface 包含候选 BSR IP 地址。建议（但并非必需）为所有候选 BSR 使用相同的 hash-mask-Len。将选择具有最大 pref 值的候选 BSR 作为此域的 BSR。

命令用法示例如下所示：

ip pim bsr-candidate ethernet0 30 4

PIMv2 BSR 收集候选 RP 信息，并散发与每组前缀关联的 RP 设置信息。为避免单一故障点，可以在域中将多个路由器配置为候选 BSR。

根据配置的首选项值，将在候选 BSR 之间自动选择 BSR。要充当候选 BSR，路由器必须已连接且位于网络的主干区域，而不是网络的拨号区域。

2. 配置候选 RP 路由器。以下示例显示整个管理域地址范围的候选 RP（在接口 ethernet0 上）：

access-list 11 permit 239.0.0.0 0.255.255.255

ip pim rp-candidate ethernet0 group-list 11

CGMP

要配置组管理协议(CGMP)，请在面向交换机的路由器接口上配置以下内容：

ip pim sparse-dense-mode

ip cgmp

然后，在交换机上进行以下配置：

set cgmp enable

IGMP 侦听

Catalyst 5000版本4.1提供互联网组管理协议(IGMP)监听。IGMP 监听需要 Supervisor III 卡。除配置 PIM 外，在路由器上配置 IGMP 监听无需进行其他配置。IGMP 监听仍然需要使用路由器才能提供 IGMP 查询。

下面的示例显示如何在交换机上启用 IGMP 监听：

Console> (enable) set igmp enable

IGMP Snooping is enabled.

CGMP is disabled.

如果您尝试启用IGMP，但CGMP已启用，您将看到以下内容：

Console> (enable) set igmp enable

Disable CGMP to enable IGMP Snooping feature.

PGM

实际通用组播(PGM)是应用程序的一种可靠组播传输协议，要求把自由复制的有序组播数据从多个源传输到多个接收器。PGM 保证，组中的一台接收器可以接收传输和重发的所有数据包，或者能够检测无法恢复的数据包丢失。

没有 PGM 全局命令。可以使用 ip pgm 命令为每个接口配置 PGM。必须在配置了 PIM 接口的路由器上启用多播路由。

MRM

组播路由监控器(MRM)有助于在大型组播路由基础设施中自动检测故障。MRM 设计用于近乎实时地向网络管理员发出多播路由问题警报。

MRM有两个组件：MRM测试器和MRM管理器。MRM Tester 是发送器或接收器。

Cisco IOS 软件版本 12.0(5)T 及更高版本中提供 MRM。只有MRM测试程序和管理程序需要运行支持MRM的Cisco IOS版本。

组播路由监控器(MRM)有助于在大型组播路由基础设施中自动检测故障

测试发送器配置

interface Ethernet0

ip mrm test-sender

测试接收器配置

interface Ethernet0

ip mrm test-receiver

Test Manager 配置

ip mrm manager test1

manager e0 group 239.1.1.1

senders 1

receivers 2 sender-list 1

access-list 1 permit 10.1.1.2

access-list 2 permit 10.1.4.2

Test Manager 上的 show ip mrm manager 命令的输出如下所示：

Test_Manager# show ip mrm manager

Manager:test1/10.1.2.2 is not running  Beacon interval/holdtime/ttl:60/86400/32 Group:239.1.1.1, UDP port test-packet/status-report:16384/65535 Test sender: 10.1.1.2 Test receiver: 10.1.4.2

使用下面显示的命令启动测试。测试管理器将控制消息发送到测试发送器和测试接收器上，详见测试参数配置。测试接收器加入组并监控从测试发送器发送的测试数据包。

Test_Manager# mrm start test1

*Feb  4 10:29:51.798: IP MRM test test1 starts ......

Test_Manager#

要显示 Test Manager 的状态报告，请输入以下命令：

Test_Manager# show ip mrm status

IP MRM status report cache:

Timestamp        Manager          Test Receiver   Pkt Loss/Dup (%)       Ehsr

*Feb  4 14:12:46 10.1.2.2         10.1.4.2        1            (4%)      29

*Feb  4 18:29:54 10.1.2.2         10.1.4.2        1            (4%)      15

Test_Manager#

输出显示，接收方在特定时间发送了二个状态报告（每条线路各一个）。每个报告都包含时间间隔窗口内（默认间隔为一秒钟）的一次丢包。“Ehsr”值显示来自测试发送器的下一个估计序列号值。如果测试接收器看到重复的数据包，则将在“Pkt Loss/Dup”列中显示负数。

要停止测试，请输入以下命令：

Test_Manager# mrm stop test1

*Feb  4 10:30:12.018: IP MRM test test1 stops

Test_Manager#

在测试运行时，MRM发送方以默认间隔200毫秒将RTP数据包发送到配置的组地址。接收器采用相同的默认间隔监控（期待）相同的数据包。如果接收器在默认窗口检测到数据包每隔五秒会丢失，它将发送报告到 MRM 管理器。如果在管理器上发出 show ip mrm status 命令，则可显示来自接收器的状态报告。

故障排除

当您在网络中实施 IP 多播时，发现的一些最常见问题包括：由于 RPF 故障或 TTL 设置的原因，路由器无法转发多播流量。有关这些问题及其他常见问题、症状和解决方法的详细讨论，请参阅 IP 多播故障排除指南。

相关信息

- IP 组播故障排除指南

- 使用CLI工具排除组播网络故障

- IP组播支持

- 思科技术支持和下载