IP : IP 组播

组播快速开始配置指南

2015 年 8 月 28 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 4 月 22 日) | 反馈


目录


简介

IP 多播是一种可以减少流量的带宽节约技术,因为它可以将单个数据流同时传输到数千个公司接收方和家庭。利用多播的应用程序包括视频会议、公司通信、远程教育和软件分发、股票行情和新闻。本文档讨论如何为各种联网方案配置多播的基础知识。

先决条件

要求

思科建议本文读者有网络协议(IP)组播基础知识。

注意: 有关详细信息,请参阅 Internet 协议多播文档。

使用的组件

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

规则

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

密集模式

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

注意: 本文中所有示例的“源”表示组播数据流的源,“接收方”表示组播数据流的接收方。

/image/gif/paws/9356/mcast1.gif

路由器 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 域中的所有路由器均配置相同的 ip pim rp-address 命令。您能配置多个 RP,但每个特定组中可能只能有一个 RP。

/image/gif/paws/9356/mcast2.gif

路由器 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 

多个 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 处理不同的组,则需要对所有路由器进行配置以包含 PR 将服务的组。这种类型的静态 RP 配置要求 PIM 域中的所有路由器配置有相同的 ip pim rp-addressaddress acl 命令。还可以使用自动 RP 来实现相同的设置,这样更容易进行配置。

/image/gif/paws/9356/mcast3.gif

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,宣告它们作为 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),或者一定是可及的与静态路由。

/image/gif/paws/9356/mcast4.gif

路由器 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。如果两个 RP 均通告它们能够作为同一个组的 RP,则映射代理将使用“最高 IP 地址获胜”规则来解决这些冲突。

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

mcast5.gif

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 15.255.255.255 

有关自动 RP 的详细信息,请参阅自动 RP 配置与诊断指南

DVMRP

您的互联网服务提供商可能建议您创建距离矢量组播路由协议(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 优先级高于所有其他协议(直接连接的路由除外)。

/image/gif/paws/9356/mcast6.gif

MBGP

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

/image/gif/paws/9356/mcast7.gif

路由器 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

多播源发现协议(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。

mcast8.gif

路由器 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 代理。而不是充分地参加PIM,从主机的这些终端路由器向前IGMP消息到上行组播路由器。

/image/gif/paws/9356/mcast9.gif

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 

卫星链路的 IGMP UDLR

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

mcast10.gif

上行链路 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

如果所有路由器在网络上运行 PIMv2,您可以配置 BSR 取代 Auto-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 侦听

互联网组管理协议(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 保证,组中的一台接收器可以接收传输和重发的所有数据包,或者能够检测无法恢复的数据包丢失。

没有 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 版本。

/image/gif/paws/9356/mcast11.gif

测试发送器配置
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 多播故障排除指南

相关的思科支持社区讨论

思科支持社区是您提问、解答问题、分享建议以及与工作伙伴协作的论坛。


相关信息


Document ID: 9356