内容
前言
前提条件
需求
使用的组件
惯例
密集模式
一个RP时的稀疏模式
与多个RP的稀疏模式
一个 RP 时的自动 RP
多个 RP 时的自动 RP
DVMRP
MBGP
MSDP
末节组播路由
卫星链路的 IGMP UDLR
PIMv2 BSR
CGMP
IGMP 侦听
PGM
MRM
故障排除
IP 多播是一种可以减少流量的带宽节约技术,因为它可以将单个数据流同时传输到数千个公司接收方和家庭。 利用多播的应用程序包括视频会议、公司通信、远程教育和软件分发、股票行情和新闻。 本文档讨论如何为各种联网方案配置多播的基础知识。
Cisco建议本文读者有互联网协议组播基础知识。
注意: 有关详细信息,请参阅 Internet 协议多播文档。
本文档不限于特定的软件和硬件版本。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
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
|
在本示例中,路由器 A 是 RP,通常是离源最近的路由器。 静态 RP 配置要求 PIM 域中的所有路由器均配置相同的 ip pim rp-address 命令。 您能配置多个 RP,但每个特定组中可能只能有一个 RP。
路由器 A 配置 |
ip multicast-routing
ip pim rp-address 1.1.1.1
interface ethernet0
ip address <address> <mask>
ip pim sparse-dense-mode
interface serial0
ip address 1.1.1.1 255.255.255.0
ip pim sparse-dense-mode
|
路由器 B 配置 |
ip multicast-routing
ip pim rp-address 1.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
|
在本示例中,源 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 处理不同的组,则需要对所有路由器进行配置以包含 PR 将服务的组。 这种类型的静态 RP 配置要求 PIM 域中的所有路由器配置有相同的 ip pim rp-addressaddress acl 命令。 还可以使用自动 RP 来实现相同的设置,这样更容易进行配置。
RP 1 配置 |
ip multicast-routing
ip pim RP-address 1.1.1.1 2
ip pim RP-address 2.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 1.1.1.1 2
ip pim RP-address 2.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 1.1.1.1 2
ip pim RP-address 2.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 使用 224.0.1.39 发送其通告。 RP 映射代理可监听来自 RP 的通告数据包,然后在发送到 224.0.1.40 的发现信息中发送 RP-to-group 映射。 其余的路由器使用这些发现消息来获取其 RP 到组映射。 您能够使用一个充当映射代理的 RP,或者您能配置多 RP 和多个映射代理,以提供冗余。
注意,当您选择一个接口,从该接口查找 RP 公告来源,Cisco 建议时您使用回环等接口,而不要使用物理接口。 并且,是可能的使用交换VLAN接口(SVIs)。 如果使用 VLAN 接口通告 RP 地址,则以下命令中的 interface-type 选项应包含 VLAN 接口和 VLAN 编号:ip pim [vrf vrf-name] send-rp-announce {interface-type interface-number | ip-address} scope ttl-value 命令。 例如,此命令类似于 ip pim send-rp-announce Vlan500 scope 100。 如果选择物理接口,您需要该接口始终保持连接。 但实际情况并非始终如此,一旦物理接口断开,路由器将不再作为 RP 发出通告。 使用始终保持连接且从不会断开的环回接口,可以确保 RP 继续通过所有可用的接口通告自己作为 RP。 即使其一个或多个物理接口发生故障,也是如此。 回环接口必须是支持PIM的和通告由内部网关协议(IGP),或者一定是可及的与静态路由。
路由器 A 配置 |
ip multicast-routing
ip pim send-rp-announce loopback0 scope 16
ip pim send-rp-discovery
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,则映射代理将使用“最高 IP 地址获胜”规则来解决这些冲突。
当两个 RP 均为该组进行通告时,您可以使用环回地址配置每个路由器,以便影响哪个路由器是特定组的 RP。 将更高的 IP 地址放置在首选 RP 上,然后将环回接口用作通告数据包的来源; 例如,ip pim send-RP-announce loopback0。 使用多个映射代理时,每个代理都将同一组通告到与 224.0.1.40 发现组发生映射的 RP 上。
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 15.255.255.255
|
有关自动 RP 的详细信息,请参阅自动 RP 配置与诊断指南。
您的互联网服务提供商可能建议您创建距离矢量组播路由协议(DVMRP)通道对ISP为了获得访问到组播骨干网在互联网(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 上的其他人查看的多播数据包,而不是接收多播数据包,您需要通告来源子网。 如果您的组播源主机地址是 131.108.1.1,您需要向 mbone 通告该子网的存在。 默认情况下,直连网络使用度量值 1 通告。 如果您的信息源不是使用 DVMRP 隧道直接连接到路由器,请在接口 tunnel0 下进行以下配置:
ip dvmrp metric 1 list 3
access-list 3 permit 131.108.1.0 0.0.0.255
注意: 您必须在此命令中包含访问列表,以防止将整个单播路由表通告到 mbone。
如果您的设置与此处所示的设置类似,且希望通过域传播 DVMRP 路由,请在路由器 A 和路由器 B 的 serial0 接口上配置 ip dvmrp unicast-routing 命令。 此操作提供DVMRP路由转发给然后有为反向路径转发使用的一张DVMRP路由表的PIM邻居(RPF)。 DVMRP 获知的路由的 RPF 优先级高于所有其他协议(直接连接的路由除外)。
多协议边界网关协议(MBGP)是运载二个两套路由器的一个基本方法: 一组用于单播路由,一组用于多播路由。 MBGP 提供必要的控制,决定允许流过多播数据包的位置。 PIM 使用与多播路由关联的路由,以便生成数据分布树。 MBGP 提供 RPF 路径,而不是创建多播状态。 仍然需要 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 应用不同的策略。
有关 MBGP 的详细信息,请参阅什么是 MBGP? 。
组播源发现协议(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。
路由器 A 配置 |
ip multicast-routing
ip pim send-RP-announce loopback0 scope 16
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
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 代理。 这些残域路由器将来自主机的 IGMP 消息转发到上游多播路由器,而不是完全参与 PIM。
Router1 的配置 |
int s0
ip pim sparse-dense-mode
ip pim neighbor-filter 1
access-list 1 deny 140.1.1.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 140.1.1.2
int s0
ip pim sparse-dense-mode
|
单向链路路由 (UDLR) 提供了一种方法,可在单向卫星链路上将组播数据包转发到带有反向信道的 stub 网络。 这类似于残域多播路由。 没有此功能,上行链路路由器不能动态了解哪个 IP 组播组地址会在单向链路上转发,因为下行链路路由器不能送回任何地址。
上行链路 rtr 配置 |
ip multicast-routing
interface Ethernet0
description Typical IP multicast enabled interface
ip address 12.0.0.1 255.0.0.0
ip pim sparse-dense-mode
interface Ethernet1
description Back channel which has connectivity to downlink-rtr
ip address 11.0.0.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 14.0.0.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 13.0.0.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 取代 Auto-RP。 BSR 和自动 RP 非常相似。 BSR 配置要求您配置 BSR 候选(类似于 RP-Announce in Auto-RP)和 BSR(类似于 Auto-RP Mapping Agents)。 要配置 BSR,请执行下列步骤:
-
在候选 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,路由器必须已连接且位于网络的主干区域,而不是网络的拨号区域。
-
配置候选 RP 路由器。 以下示例显示整个管理域地址范围的候选 RP(在接口 ethernet0 上):
access-list 11 permit 239.0.0.0 0.255.255.255
ip pim rp-candidate ethernet0 group-list 11
为了配置组管理协议(CGMP),请配置此在面对交换机的路由器接口:
ip pim sparse-dense-mode
ip cgmp
然后,在交换机上进行以下配置:
互联网组管理协议(IGMP)窥探用Catalyst 5000的版本4.1是可用的。 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 全局命令。 可以使用 ip pgm 命令为每个接口配置 PGM。 必须在配置了 PIM 接口的路由器上启用多播路由。
组播路由监控器(MRM)实现在一个大组播路由结构的自动故障检测。 MRM 设计用于近乎实时地向网络管理员发出多播路由问题警报。
MRM 具有两个组件: MRM Tester 和 MRM Manager。 MRM Tester 是发送器或接收器。
Cisco IOS 软件版本 12.0(5)T 及更高版本中提供 MRM。 只有 MRM Tester 和 MRM Manager 才需要运行支持 MRM 的 Cisco IOS 版本。
测试发送器配置 |
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#
运行测试时,按照默认间隔 200 毫秒,MRM 发送器开始发送 RTP 数据包到已配置的组地址。 接收器采用相同的默认间隔监控(期待)相同的数据包。 如果接收器在默认窗口检测到数据包每隔五秒会丢失,它将发送报告到 MRM 管理器。 如果在管理器上发出 show ip mrm status 命令,则可显示来自接收器的状态报告。
当您在网络中实施 IP 多播时,发现的一些最常见问题包括:由于 RPF 故障或 TTL 设置的原因,路由器无法转发多播流量。 有关这些问题及其他常见问题、症状和解决方法的详细讨论,请参阅 IP 多播故障排除指南。