网络工程师进阶 · 组播专题

IP 组播从入门到高手

用最生活化的语言,把「一对多」的流量魔法讲透;以思科(Cisco)设备为实战载体,从地址、协议到 IPTV / 直播 / 点播 / CDN 全栈贯通。

16章节
PIMDM / SM / SSM
IGMPv1 / v2 / v3
Cisco完整配置实战
CDN与组播结合

1组播是什么:从「一对多」的魔法说起

先别管协议、地址、RFC,我们用一个生活场景把组播的本质说清楚。

想象你是一个公司的行政,今天要通知 200 名同事「下午 3 点开会」。

  • 单播(Unicast,一对一):你挨个给 200 个人发微信私聊。你累到手抽筋,而且同一条消息被你发了 200 遍。网络里这就是「服务器给每个用户单独发一份拷贝」。
  • 广播(Broadcast,一对全体):你在公司大群里吼一嗓子,所有人都能听见——包括正在开重要客户会的销售、正在午休的同事。广播不挑食,谁都收,而且跨不了网段(路由器默认不转发广播)。
  • 组播(Multicast,一对多/按需多):你建了一个「3 点开会通知群」,只有主动进群的同事才会收到消息。你只发一条,群里自动同步给所有人,没进群的人完全不受影响。
核心定义 IP 组播是一种「单一发送、按需复制、只发给感兴趣接收者」的网络传输技术。路由器/交换机在转发路径上按需复制报文,网络里同一份数据不会因为接收者多而线性膨胀。它是介于单播(一对一)和广播(一对全体)之间的「一对多(多对多)」通信。

为什么组播重要?看一组数字就懂了:

场景单播需要的带宽组播需要的带宽
1 路 4 Mbps 直播,1000 人观看1000 × 4 = 4 Gbps(服务器+接入全炸)≈ 4 Mbps(核心到每个分支仅复制一份)
同一份视频,源到第一跳路由器每用户一份始终一份

这就是组播的杀手锏:带宽消耗只和「内容路数」有关,和「观众人数」几乎无关。这在 IPTV、视频会议、金融行情、直播带货推流里价值连城。

组播的「三要素」心智模型

理解组播,脑子里要常驻三个角色:

① 组播源(Source)

产生流量的一方,比如电视台的编码器、直播推流服务器。它不管有多少人在看,只管往组地址发。

② 组地址(Group)

一个「频道号」,比如 239.1.1.1 代表「央视一套」。源把数据发往这个地址,接收者「订阅」这个地址。

③ 接收者(Receiver)

想看内容的主机,比如机顶盒。它通过 IGMP 告诉网络「我要看 239.1.1.1」。

中间的网络(路由器+交换机)负责把源发出的、去往组地址的数据,智能地只转发到「有接收者」的分支上——这是组播最精妙的地方。

2单播、广播、组播:一张表看明白

这是面试和方案选型的高频题,务必记牢。

维度单播 Unicast广播 Broadcast组播 Multicast
通信模型一对一一对全体(本网段)一对多 / 多对多(按需)
目标地址唯一单播 IP本网段广播地址(如 192.168.1.255)D 类组播地址(224.0.0.0/4)
是否跨网段可以不可以(路由器不转发)可以(靠组播路由协议)
带宽随接收者线性增长(人越多越炸)一次占满本网段基本不增长
接收者是否自主选择源主动发强制接收(谁都收)主动加入才收
典型应用网页、文件下载、微信私聊ARP、DHCP 发现IPTV、视频会议、行情推送、OSPF
一句话记忆 单播是「私聊」,广播是「喇叭喊全楼」,组播是「拉群按需发」。做视频分发、一对多实时推送,组播是天选之子;做个性化点播、回看,单播更合适——后面第 14 章会细讲它们如何配合使用。

3组播 IP 地址:D 类地址与「频道号」分配

组播地址就像电视频道号:224.0.0.0 ~ 239.255.255.255 这整整 2^28 个地址,都是「频道」。

3.1 地址范围总览

IPv4 地址分五类,组播用的是 D 类(224.0.0.0 ~ 239.255.255.255,即 /4)。注意:组播地址永远只能作为「目的地址」,绝不能做源地址,也没有子网掩码那种「主机位」概念——它只是一个逻辑组标识。

地址块名称 / 用途说明
224.0.0.0/24本地链路保留(Local Network Control)路由器不转发,只在直连网段用。如 224.0.0.1(所有主机)、224.0.0.2(所有路由器)、224.0.0.5/6(OSPF)、224.0.0.13(PIM)
224.0.1.0/24 ~ 224.0.1.255互联网范围组播(保留)如 224.0.1.1 是 NTP,属全局保留,公网谨慎用
232.0.0.0/8SSM(源特定组播)地址块配合 IGMPv3,指定「从哪个源看哪个组」
233.0.0.0/8GLOP 地址(AS 编号映射)早期用于根据 BGP AS 号分配,现较少用
239.0.0.0/8管理范围(私有组播 / 内网)企业最爱!约等于单播里的 10.0.0.0/8,可在内网随意用、不进公网
踩坑提醒 IPTV/企业内网组播,一律用 239.0.0.0/8。别用 224.0.0.x(那是协议保留)、别用 225~238(公网地址,运营商可能不让你播,也容易和公网组播冲突)。思科里 ip multicast boundary 可以限制哪些组能进来。

3.2 地址到底代表什么?

记住一个比喻:组播地址 = 电视频道号,不是某台电视的身份证。一台源可以同时往多个组发(多个频道),一个接收者也可以同时加入多个组(同时看多个频道)。组地址本身不携带位置信息,路由协议负责把「去往 239.1.1.1 的流量」引到「有接收者的地方」。

小知识 企业中常见规划:把 239.0.0.0/8 再细分,比如 239.1.x.x 给直播、239.2.x.x 给视频会议、239.3.x.x 给行情。配合地址管理表,运维一目了然。

4组播 MAC 地址:二层是怎么「认领」组播的

IP 包要到网卡,最终得变成 MAC 帧。组播 IP 怎么变成 MAC?这里有门「映射数学」,也有个著名的「坑」。

4.1 映射规则

以太网组播 MAC 固定以 01:00:5E 开头(十六进制)。规则:

  • 第 25 位固定为 0;
  • 把组播 IP 的后 23 位直接搬过来,填到 MAC 地址的后 23 位。

例如组 239.1.1.1:IP 后 23 位算出 MAC 为 01:00:5E:01:01:01。交换机看到目的 MAC 是 01:00:5E 开头,就知道「这是组播帧,得按组播方式转发」。

组播 IP 239.1.1.1 取后 23 位 组播 MAC 01:00:5E:01:01:01 01:00:5E + 23bit 网卡 认领
组播 IP → MAC 映射示意(取后 23 位)

4.2 那个著名的「坑」:32 位映射到 23 位

组播 IP 有 28 位可用(224.0.0.0/4),但 MAC 只塞进了后 23 位,少了 5 位。后果:每 32 个组播 IP 会映射到同一个 MAC 地址。比如 224.1.1.1、225.1.1.1、226.1.1.1 … 共 32 个地址,MAC 全是 01:00:5E:01:01:01。

这意味着交换机在二层无法靠 MAC 区分这 32 个组。怎么办?

  • 网卡收到帧后,靠 IP 层进一步过滤:看 IP 头里的目的组地址,不是自己订阅的组就丢掉(所以「误收」会被上层丢弃,只是多费点 CPU)。
  • 规划时尽量避开会冲突的地址(不同高 5 位、低 23 位相同的组)。
工程提示 这 5 位的丢失是协议历史包袱,改不了。只要你别在同网段同时用 224.1.1.1 和 225.1.1.1 这种「只差高 5 位」的组,基本无感。企业用 239.x,冲突概率极低。

5IGMP:主机如何「举手」加入一个组

源在发,组地址在飘,那接收者怎么告诉网络「我要看这个频道」?答案:IGMP(Internet Group Management Protocol,互联网组管理协议)。

IGMP 跑在主机和直连路由器(称为 IGMP Querier 查询者)之间,是「最后一跳」的协议。它干三件事:

  1. Membership Report(成员报告):主机说「我想加入 239.1.1.1」。
  2. Query(查询):路由器定时问「还有谁在看 239.1.1.1 吗?」
  3. Leave(离开):主机说「我不看了」(v2/v3 才有)。
版本关键能力是否支持 SSM
IGMPv1只有 Report 和 Query;靠超时才判断离开(慢);查询者靠组播路由协议选
IGMPv2增加 Leave 报文,响应快;自己选举查询者(IP 小者优先)
IGMPv3支持指定源(INCLUDE/EXCLUDE 源列表),是 SSM 的基石;可「只看某源」

5.1 IGMP 工作流程(v2 为例)

机顶盒 (Receiver) 最后一跳 路由器 1. Report: 加入 239.1.1.1 2. Query: 还有人看吗? 3. Report: 我在看!
IGMPv2 主机入组与保活流程
细节 多个主机在同一网段想看同一组时,Report 会有「抑制机制」:先听到的主机发了 Report,其他主机就静默(不重复发),避免刷屏。但路由器只需要知道「本网段至少有一个人看」就够了——这正是组播高效的体现。

5.2 思科路由器上的 IGMP 配置

在「连接接收者的接口(最后一跳)」上开启组播路由并启用 IGMP:

! 全局开启组播路由(思科必开,否则一切免谈)
R1(config)# ip multicast-routing

! 在面向接收者的接口上
R1(config)# interface GigabitEthernet0/1
R1(config-if)# ip pim sparse-mode        ! 接口启用 PIM-SM(同时承载 IGMP)
R1(config-if)# ip igmp version 3          ! 推荐用 v3,支持 SSM
R1(config-if)# ip igmp query-interval 60  ! 查询间隔(秒),默认125

! 查看状态
R1# show ip igmp interface g0/1
R1# show ip igmp groups                   ! 看有哪些组、哪些成员
R1# show ip igmp groups 239.1.1.1 detail
易错点 IGMP 是主机到路由器的协议,只在最后一跳路由器与接收者之间有意义。路由器之间的组播转发靠的是 PIM(下一章),不是 IGMP。别在核心链路上指望 IGMP 干活。

6IGMP Snooping:让交换机「懂组播」

二层交换机默认是个「组播文盲」:它收到目的 MAC 是 01:00:5E 开头的帧,会像广播一样洪泛到所有端口。这可不行——没看 IPTV 的电脑也会被淹。

IGMP Snooping(IGMP 侦听)是交换机的一项功能:它「偷听」主机和路由器之间的 IGMP 报文,学习到「哪个端口连着看 239.1.1.1 的主机」,然后只把该组的流量精准转发到那些端口。

状态组播帧去向结果
关闭 Snooping(或交换机不支持)洪泛到所有端口浪费带宽,非接收者也被打扰
开启 Snooping只发往有成员端口 + 路由器端口精准、省带宽

思科交换机配置

! 全局开启(多数 Catalyst 默认已开)
Switch(config)# ip igmp snooping
Switch(config)# ip igmp snooping vlan 10     ! 针对 VLAN 10 启用

! 配置 IGMP 查询者(若网段没有路由器作查询者,可让交换机顶上)
Switch(config)# ip igmp snooping querier
Switch(config)# ip igmp snooping vlan 10 querier address 192.168.10.254

! 快速离开:主机 Leave 后立刻停止转发,不必等查询超时(IPTV 切台更爽快)
Switch(config)# ip igmp snooping vlan 10 immediate-leave

! 查看
Switch# show ip igmp snooping groups
Switch# show ip igmp snooping mrouter      ! 看哪个端口连着组播路由器
IPTV 必开 做 IPTV 接入交换机,IGMP Snooping + immediate-leave 几乎是标配。否则用户切台时旧频道流量还在端口里赖着不走,既卡又占带宽。配合 IGMP Proxy / IGMP Snooping Querier 在纯二层环境也能玩转。

7为什么需要「组播路由协议」

IGMP 解决了「主机怎么告诉最后一跳路由器」。那中间那么多路由器,流量怎么从源一路流到接收者?这就得靠组播路由协议

单播路由里,每个路由器看「目的 IP」,查路由表,往下一跳扔。组播不一样:

  • 目的地址是组地址,每个人都订阅同一个组,不能按「目的 IP 找最优路径」那么简单;
  • 组播转发是反向的:从接收者「往回」建树到源;
  • 中间路由器要决定:这份组播包,该从哪些接口复制出去?

于是有了专门的组播路由协议。它们大致分两派:

密集模式(Dense)

假设「几乎人人都想看」,先把流量洪泛全网,不要的再剪掉。适合接收者密集的小网。

稀疏模式(Sparse)

假设「没几个人想看」,接收者显式申请才建树。适合大型、接收者稀疏的网络(企业、运营商)。

协议类型现状
DVMRP密集老旧,MBone 时代,现基本淘汰
MOSPF密集依赖 OSPF,部署少
PIM(DM/SM/SSM)均可事实标准,思科主推,本文重点
CBT稀疏(共享树)学术为主,少用
重点 现在企业/运营商组网,PIM 是唯一的「正解」。PIM 本身不维护自己的拓扑,而是「借」单播路由表(或 MBGP)来做转发决策——这是它的最大优点:和底层路由协议解耦。

8PIM 协议家族:DM、SM、SSM 一家三口

PIM = Protocol Independent Multicast(协议无关组播)。「无关」指它不依赖某一种单播路由协议,OSPF、EIGRP、IS-IS、BGP 都能给它当「底图」。

8.1 PIM 路由器如何「认识彼此」

PIM 路由器在直连链路上互发 Hello 报文(目的 224.0.0.13),选举指定路由器 DR(Designated Router),并建立邻居关系。DR 负责在源侧把组播注册进网络、在接收者侧代为发送 Join。

R1(config)# interface g0/0
R1(config-if)# ip pim sparse-mode
R1(config-if)# ip pim dr-priority 100     ! 调高 DR 优先级(越大越优先)

R1# show ip pim neighbor                ! 看 PIM 邻居
R1# show ip pim interface               ! 看哪些接口跑了 PIM、谁是 DR

8.2 三种模式一句话区分

模式建树方式是否需要 RP适用
PIM-DM泛洪 + 剪枝,自然形成源树(SPT)小型、接收密集
PIM-SM先经共享树(RPT)到 RP,再切源树(SPT)是(RP 是核心)大型、稀疏(主流)
PIM-SSM直接建源树,指定 (S,G)IPTV/直播,已知源
选型口诀 不知道用啥?PIM-SM 是万金油,企业网默认选它;源地址固定且想最简化(如 IPTV 单源直播),用 PIM-SSM 最干净;实验室小网或老设备才碰 PIM-DM。

9PIM-DM 密集模式:先泼全网再擦掉

PIM-DM 的逻辑很「粗暴」但好懂:先把组播流量泛洪到所有 PIM 接口,谁不要,谁发剪枝(Prune)把自己摘掉。

9.1 工作原理

  1. 泛洪(Flood):源一发包,从第一跳 DR 起,向所有 PIM 邻居接口转发。
  2. 剪枝(Prune):某下游路由器发现「本分支没人看这个组」,就向上游发 Prune,上游把该接口标记为「剪掉」。
  3. 状态刷新(State Refresh):周期性重新泛洪,避免剪枝状态因超时丢失(思科特性)。
  4. 嫁接(Graft):之前剪掉的分支后来有人想看了,发 Graft 重新接回树。
源 DR R2 R3 转发 Prune 转发
PIM-DM:泛洪全网,无接收者分支发 Prune 剪掉

9.2 思科配置(超简单)

R1(config)# ip multicast-routing
R1(config)# interface g0/0
R1(config-if)# ip pim dense-mode       ! 所有 PIM 接口都设 dense
R1(config-if)# interface g0/1
R1(config-if)# ip pim dense-mode

! 验证
R1# show ip mroute                     ! 看 (*,G) 与 (S,G) 条目
R1# show ip mroute 239.1.1.1           ! 看特定组
R1# show ip pim interface dense-mode
缺点 DM 在网络大、接收者少时,泛洪会浪费大量带宽(尤其源活跃但没人看时仍在泼)。所以生产环境基本不用 DM,了解其「扩散-剪枝」思想即可,真正干活的是 SM。

10PIM-SM 稀疏模式:RP 是灵魂

PIM-SM 是当今企业网和运营商的绝对主力。它的核心发明是一个叫 RP(Rendezvous Point,汇聚点)的角色。

10.1 什么是 RP?

把 RP 想成「组播交易中心」或「相亲中介」:

  • 所有先把流量「注册」给 RP(源树:源 → RP);
  • 所有接收者先向 RP 申请加入(共享树 RPT:接收者 → RP);
  • 于是在 RP 处,源和接收者「会师」,流量从源经 RP 流向接收者。
关键概念 共享树 RPT(*,G 树):以 RP 为根,指向所有接收者。「*」代表任意源。
源树 SPT(S,G 树):以具体源 S 为根,直达接收者。性能更好(路径最短)。

10.2 完整流程(SM 的「两段式」)

  1. 接收者发 IGMP 加入组 → 最后一跳路由器向 RP 发 (*,G) Join,建立 RPT(共享树)。
  2. 源开始发流 → 第一跳 DR 用 Register 单播把首包封装发给 RP;RP 解封装后沿 RPT 下发。
  3. 最后一跳路由器收到来自 RP 的、实际源 S 的流量后,发现「走共享树绕远了」,于是直接向源 S 发 (S,G) Join,建立 SPT(源树)。
  4. 随后流量改走最短的源树,最后一跳向 RP 发 (S,G) Prune,剪掉 RPT 上那段多余路径。这叫 SPT 切换(SPT Switchover)
RP 汇聚点 接收者 DR ① Register(单播) ② RPT(*,G) ③ SPT(S,G) 切换
PIM-SM:源注册到 RP → 接收者建 RPT → SPT 切换走最短路径

10.3 RP 怎么来?三种方式

方式做法优缺点
静态 RP每台路由器手动指 ip pim rp-address简单、可控;但 RP 挂了要手动改,扩展性差
Auto-RP(思科私有)用候选 RP + 映射代理自动通告自动发现;需 ip pim autorp listener 配合
BSR(Bootstrap Router,标准)BSR 收集候选 RP 信息并全网洪泛行业标准,推荐;跨厂商兼容好

配置示例 A:静态 RP(最直观)

! 在所有 PIM 路由器上指向同一个 RP(如 10.0.0.100)
R(config)# ip multicast-routing
R(config)# ip pim rp-address 10.0.0.100
! 接口启用 SM
R(config)# interface range g0/0 - 1
R(config-if-range)# ip pim sparse-mode

! 只让某些组用这个 RP(可选,地址映射)
R(config)# ip pim rp-address 10.0.0.100 239.1.0.0 255.255.0.0

配置示例 B:BSR 动态 RP(推荐生产用)

! 在 RP 候选路由器上
RP(config)# ip multicast-routing
RP(config)# ip pim rp-candidate Loopback0 priority 10
! 在 BSR 路由器上(可和 RP 同一台或分开)
BSR(config)# ip pim bsr-candidate Loopback0 30
! 其他路由器只需启用 PIM-SM,自动从 BSR 学到 RP
R(config)# interface range g0/0 - 1
R(config-if-range)# ip pim sparse-mode

! 验证 RP
R# show ip pim rp mapping         ! 看学到了哪个 RP
R# show ip pim bsr-router         ! 看 BSR 状态
R# show ip pim neighbor

配置示例 C:Auto-RP(思科私有,老网络常见)

! RP 候选
RP(config)# ip pim send-rp-announce Loopback0 scope 16
! 映射代理(把 RP 信息发到 224.0.1.39/40)
MAP(config)# ip pim send-rp-discovery scope 16
! 所有路由器需能收发 Auto-RP 组播(用稀疏-密集或 listener)
R(config)# ip pim autorp listener
R(config)# interface g0/0
R(config-if)# ip pim sparse-dense-mode
SPT 切换阈值 默认当组播速率超过 0 kbps 就切换(即一收到源流量就切 SPT)。可用 ip pim spt-threshold {kbps | infinity} 调整;设为 infinity 则永远走 RPT(适合 RP 就在中心、不想折腾切换的场景)。

11PIM-SSM 源特定组播:已知源的最简方案

很多场景源是固定的:IPTV 直播源就那几台编码器、公司直播就一个推流服务器。既然源已知,何必还绕 RP?——这就是 SSM(Source-Specific Multicast)。

11.1 SSM 的思想

SSM 直接用 (S,G) 建源树,不需要 RP,不需要 Register,不需要 RPT。接收者通过 IGMPv3 明确说「我要看从源 S 发往组 G的流量」。

  • 地址范围默认用 232.0.0.0/8(也可自定义 SSM 范围)。
  • 主机必须支持 IGMPv3(指定源)。
  • 思科把 SSM 当作 PIM-SM 的「特例」运行,配置极简。

11.2 思科配置

! 1) 定义 SSM 地址范围(默认已是 232.0.0.0/8,可改)
R(config)# ip pim ssm default
! 或自定义:ip pim ssm range 名字(用 ACL)

! 2) 所有接口用 sparse-mode(SSM 在 SM 框架内)
R(config)# interface range g0/0 - 1
R(config-if-range)# ip pim sparse-mode
R(config-if-range)# ip igmp version 3

! 3) 接收者主机用 IGMPv3 指定源加入,例如:
!    想看 源 10.1.1.10 发往 组 232.1.1.1 的流
!    (主机侧由播放器/STB 发起,网络侧无需 RP)

R# show ip mroute 232.1.1.1        ! 直接看到 (10.1.1.10, 232.1.1.1) 源树
R# show ip igmp ssm-mapping
为什么爱用 SSM 没有 RP = 没有单点、没有 Register 开销、没有 RPT 绕路、天然防「非法源」(你只能看指定源)。IPTV 和直播CDN回源这种「源固定」场景,SSM 是首选

11.3 SSM 与「频道 = (S,G)」

在 SSM 世界里,一个「频道」不是单一组地址,而是 (源IP, 组IP) 这一对。比如卫视直播可以规划为:

央视一套 : (10.1.1.10, 232.1.1.1)
央视二套 : (10.1.1.10, 232.1.1.2)
地方台   : (10.1.1.11, 232.1.1.1)

这样同一组地址可被不同源复用,互不干扰,频道规划非常灵活。

12RPF 检查与组播转发:防环的「铁律」

组播包会被复制转发,万一形成环路,流量会指数级爆炸。PIM 靠一条铁律防止环路:RPF(Reverse Path Forwarding,反向路径转发)检查

12.1 RPF 是什么

「收到组播包的那个入接口,必须正好是回源(单播路由表里去往源 S 的出口)的那个接口,否则丢弃。」

换句话说:组播流量必须沿着「单播去往源」的反方向进来,才被认为是「合法的上游来向」。这保证了组播树是一棵无环的树。

源 S R 路由器 下游 单播去源=出 g0/0 组播转发 RPF 检查:入接口==回源接口?
RPF:组播入接口必须等于单播回源接口,否则丢弃(防环)

12.2 RPF 信息从哪来?

RPF 默认查单播路由表(哪个协议都行:OSPF/EIGRP/BGP)。但组播有时需要独立的 RPF 拓扑(比如组播用 MBGP 的 multicast 地址族),这时可配 multicast static route / mrouteMBGP

! 静态 mroute:强制指定去往源 10.1.1.0/24 的 RPF 接口/下一跳
R(config)# ip mroute 10.1.1.0 255.255.255.0 192.168.0.2
! 或指定入接口
R(config)# ip mroute 10.1.1.0 255.255.255.0 GigabitEthernet0/2

! 验证 RPF
R# show ip rpf 10.1.1.10          ! 看去往该源的 RPF 接口与路由
R# show ip mroute 239.1.1.1       ! 看 RPF 失败计数 (RPF failure)
排错第一刀 组播不通,先看 RPFshow ip mroute 里若出现 RPF failure 计数增长,99% 是「回源路径」和「组播入接口」不一致——典型原因:单播路由不对称(比如去和回走了不同链路/不同协议度量)。用 ip mroute 或调整单播路由解决。

13Cisco 实战案例:搭一套可跑的组播网络

纸上谈兵结束,来一套端到端可落地的思科配置。场景:总部有直播源,分支有 200 个机顶盒看 IPTV。

13.1 拓扑

直播源 10.1.1.10 R-CORE (RP/BSR) R-BR1 (分支1) R-BR2 (分支2) 交换机+STB 239.1.1.1 交换机+STB 239.1.1.1
总部直播源 → 核心(RP) → 两分支 → 机顶盒

13.2 核心路由器 R-CORE(兼 RP 与 BSR)

hostname R-CORE
!
ip multicast-routing
ip routing
!
! 单播路由(OSPF 举例,保证全网可达 + 提供 RPF 底图)
router ospf 1
 network 0.0.0.0 255.255.255.255 area 0
!
! 环回口作为 RP/BSR 身份
interface Loopback0
 ip address 10.0.0.1 255.255.255.255
 ip pim sparse-mode
!
interface GigabitEthernet0/0        ! 连直播源
 ip address 10.1.1.1 255.255.255.0
 ip pim sparse-mode
!
interface GigabitEthernet0/1        ! 连分支1
 ip address 172.16.1.1 255.255.255.252
 ip pim sparse-mode
!
interface GigabitEthernet0/2        ! 连分支2
 ip address 172.16.2.1 255.255.255.252
 ip pim sparse-mode
!
! 本机作为 RP 候选 + BSR
ip pim rp-candidate Loopback0
ip pim bsr-candidate Loopback0 30

13.3 分支路由器 R-BR1(最后一跳)

hostname R-BR1
!
ip multicast-routing
!
router ospf 1
 network 0.0.0.0 255.255.255.255 area 0
!
interface GigabitEthernet0/0        ! 连核心
 ip address 172.16.1.2 255.255.255.252
 ip pim sparse-mode
!
interface GigabitEthernet0/1        ! 连接入交换机/用户
 ip address 192.168.10.1 255.255.255.0
 ip pim sparse-mode
 ip igmp version 3
!
! 分支不需要手动指 RP——BSR 会自动通告 10.0.0.1
R-BR1# show ip pim rp mapping       ! 应看到 RP = 10.0.0.1

13.4 接入交换机(IPTV 关键)

hostname SW-BR1
!
! 启用 IGMP Snooping(IPTV 必开)
ip igmp snooping
ip igmp snooping vlan 10
ip igmp snooping vlan 10 querier
ip igmp snooping vlan 10 immediate-leave
!
! 上联口连路由器(mrouter 口,自动学习或手动指定)
interface GigabitEthernet1/0/24
 description TO-R-BR1
!
! 用户口接 STB
interface range GigabitEthernet1/0/1 - 20
 switchport access vlan 10
!
SW# show ip igmp snooping groups    ! 看哪些端口有 239.1.1.1 成员

13.5 端到端验证「三连击」

① 源在发吗?
R-CORE# show ip mroute 239.1.1.1
 --应看到 (10.1.1.10, 239.1.1.1) 条目,Outgoing 有接口

② 接收者入组了吗?
R-BR1# show ip igmp groups 239.1.1.1
 --应看到成员接口(如 g0/1)

③ RPF 通吗?
R-BR1# show ip rpf 10.1.1.10
 --RPF interface 应指向核心方向

④ 真机顶盒能看?
--在 STB 上加入 239.1.1.1,用 VLC 等拉流测试
排错顺序 源在发 → IGMP 收到成员 → RPF 正常 → PIM 邻居/RP 正常 → mroute 有出接口。这五步任一断掉都看不了,按顺序查最快。

14落地应用:IPTV、直播、点播怎么用组播

理论和配置都讲完了,现在回答最实际的问题:这些技术到底怎么用在真实业务里?

14.1 IPTV(交互式网络电视)

IPTV 是组播最经典的舞台。运营商/酒店/校园网把上百路电视频道编码成组播流,用户切台就是「加入/离开一个组」。

  • 直播频道:每路频道 = 一个组地址(如 239.1.x.x)。机顶盒(STB)通过 IGMP 切台即换组。
  • 组播承载:核心/汇聚用 PIM-SM 或 SSM 分发;接入交换机开 IGMP Snooping + immediate-leave,保证切台秒级、不串台。
  • 带宽优势:1000 人同时看春晚,核心链路只跑 1 份 4~8 Mbps 流,而不是 1000 份。
IPTV 工程要点 ① 频道规划用 239.0.0.0/8 私有段;② 源固定优先 SSM(防非法源、免 RP);③ 接入交换机必开 Snooping + 快速离开;④ 跨子网靠 PIM,不要指望 VLAN 间靠广播;⑤ 用 ip multicast boundary 限制组范围,防私接组播源。

14.1.1 IPTV 端到端架构(一张图看全链路)

内容源/编码器 推组播流 组播骨干网 PIM-SM / SSM 按需复制 BRAS / BNG 认证+IGMP查询 组播复制点 OLT / 接入 光纤到户 家庭网关 + STB 电视/STB 组播 组播 组播 IGMP
IPTV 端到端链路:编码器 → 组播骨干 → BRAS → OLT → 家庭网关/STB

一条 IPTV 直播流的完整旅程:

  1. 内容源 / 编码:电视台信号或卫星经编码器转成 IP 组播流(如 239.1.1.1),推入运营商核心。多个频道 = 多个组地址并行。
  2. 组播骨干:城域核心网运行 PIM-SM/SSM,把组播流按需复制到各区域,没人的区域不复制。
  3. BRAS/BNG(宽带网络网关):用户接入的「大门」,负责用户认证(IPoE/PPPoE)、IGMP 查询、组播复制点,是组播从网络侧进入用户侧的边界。
  4. OLT / DSLAM(接入):光纤/铜线接入设备,把组播流送到千家万户。
  5. 家庭网关 HG + 机顶盒 STB:STB 通过 IGMP 加组收看,遥控器切台 = 离开旧组 + 加入新组(典型 <1 秒)。

14.1.2 频道规划(可直接抄作业)

频道组地址码率/清晰度备注
央视一套239.1.1.1SD 4 Mbps基础频道
央视一套 HD239.1.1.2HD 8 Mbps高清同频道
央视二套239.1.2.1SD 4 Mbps第二套
卫视合集239.1.3.1 ~ 239.1.3.504~8 Mbps按序号映射
本地/区域台239.2.x.x4 Mbps区域专属
4K 专区239.9.x.x25~50 Mbps高带宽单独规划

14.1.3 组播 VLAN(MVR)—— 接入带宽的「省流秘籍」

家庭用户各在不同 VLAN(vlan 10/11/12…),如果每份组播流在每个用户 VLAN 各复制一份,接入交换机上行带宽会被重复占用。思科接入交换机的 MVR(Multicast VLAN Registration,组播 VLAN 注册) 解决方案:把组播源放在独立的「组播 VLAN」,交换机只从组播 VLAN 拉一份流,再按需复制到各用户 VLAN

! 假设组播 VLAN = 100,用户 VLAN = 10/11/12
Switch(config)# ip igmp snooping vlan 100 mvr
Switch(config)# ip igmp snooping vlan 100 mvr mode transparent
Switch(config)# ip igmp snooping vlan 100 mvr group 239.1.0.0 255.255.0.0
! 上行口(连 BRAS 方向)作为 MVR 源
Switch(config)# interface g1/0/24
Switch(config-if)# ip igmp snooping vlan 100 mvr type source
! 用户口(连 STB 方向)作为 MVR 接收
Switch(config)# interface range g1/0/1 - 20
Switch(config-if-range)# switchport access vlan 10
Switch(config-if-range)# ip igmp snooping vlan 100 mvr type receiver
Switch# show ip igmp snooping mvr       ! 验证 MVR 状态

14.1.4 QoS 与用户侧控制

视频流是「时延敏感、丢包敏感」业务,必须在网络侧打高优先级标记并做限速/防私接:

! ① 给组播视频流打 DSCP 标记(汇聚/BRAS 上)
R(config)# ip access-list extended MCAST-VIDEO
R(config-ext-nacl)# permit ip any 239.1.0.0 0.0.255.255
R(config)# class-map match-all MCAST-VIDEO
R(config-cmap)# match access-group name MCAST-VIDEO
R(config)# policy-map MARK-VIDEO
R(config-pmap)# class MCAST-VIDEO
R(config-pmap-c)# set dscp cs4
R(config)# interface g0/1
R(config-if)# service-policy input MARK-VIDEO

! ② 限制每接口 IGMP 报文速率,防伪造 Join 攻击
R(config-if)# ip igmp limit 100
! ③ 用边界 ACL 限定允许的组范围,防私接非法组播源
R(config)# access-list 10 permit 239.1.0.0 0.0.255.255
R(config)# access-list 10 deny any
R(config)# interface g0/0
R(config-if)# ip multicast boundary 10
终端实践 机顶盒(STB)一般在出厂即内置 IGMP 客户端:开机自动加入默认频道,遥控器「上/下键」= 发 Leave 旧组 + Report 新组。接入交换机开 immediate-leave 后,Leave 立刻生效,切台体验 <1 秒。若切台卡顿,第一反应是检查 Snooping 是否开启快速离开。

14.2 直播(Live / 低时延推送)

这里要分清两种「直播」:

直播类型组播角色说明
内网直播(企业大会、赛事、监控)主角源→组播→分支大屏/电脑,省带宽、低延迟
公网直播(抖音/B站/带货)几乎不用组播公网不互通组播,靠 CDN 单播/分片分发(见第15章)
直播推流回源内部可用编码器→源站可用组播汇聚,再经 CDN 对外

一句话:组播是「内网一对多实时分发」之王;出了内网,交给 CDN。

14.3 点播 VOD(Video on Demand)

点播和组播是「天生的不同」:点播是每个人看不同内容、不同进度(个性化),这本质是单播。但组播仍能在 VOD 里发光:

  • 热门内容「近播」:当很多人同时点同一部刚上线的电影,可临时用组播「近直播」推送,到点播单播衔接(near-VOD)。
  • 组播+单播混合架构:直播频道用组播,回看/点播用单播;用户「看直播」走组播,「拖进度看回放」切单播。
  • 组播文件分发:企业向内网几千台终端同时推送同一个大文件/系统镜像,用组播(如 WF6 / UDP 组播分发)比单播快 N 倍。
架构心智 真实视频平台 = 组播(直播/广播式内容)+ 单播(点播/个性化)+ CDN(规模化分发) 三者组合。别迷信「全组播」或「全单播」,按内容形态选 transport。

14.4 其他组播「隐藏用例」

金融行情

交易所行情一对多秒级推送,组播是唯一能扛住「一源万客户端」的低延迟方案。

视频会议 / 庭审直播

多方音视频,配合 SSM 防止非法源混入。

数据同步

集群配置下发、缓存预热、软件批量分发。

工业/监控

摄像头多画面同时上墙、告警广播。

14.5 OTT:Over-The-Top 互联网视频是怎么「拿到」视频的

前面讲的 IPTV 走的是运营商专用网络,而你我手机上刷的抖音、智能电视上的 Netflix/爱奇艺/腾讯视频,走的是另一套——OTT(Over-The-Top,过顶内容):内容服务商绕过传统广电/电信专用网络,直接通过互联网把音视频送到你的 App。

14.5.1 OTT 获取视频的完整流程

智能电视/手机 App 选片 调度 GSLB Anycast DNS CDN 边缘节点 HLS/DASH 切片 ABR 自适应 源站集群 组播汇聚 请求 就近 回源
OTT 视频获取流程:App → 调度 → CDN 边缘(切片单播)→ 源站
  1. 用户在 App 选片,客户端向调度服务请求播放地址(含鉴权 Token)。
  2. GSLB / Anycast DNS 根据用户位置,把请求引导到最近的 CDN 边缘节点
  3. 边缘节点用 HLS(.m3u8 + .ts)或 DASH(.mpd) 把视频切成小片段(如 2~6 秒一片),以 HTTP/HTTPS 单播发给用户。
  4. 客户端 ABR(自适应码率) 实时测速,在 480p/720p/1080p/4K 间无缝切换,弱网自动降码率。
  5. DRM 对内容加密,防止盗录与非法分发。

14.5.2 OTT 与组播的关系(关键认知)

  • 公网 OTT 基本不用组播:互联网由无数自治域组成,组播路由(PIM/MSDP)跨域复杂、计费与安全难以落地,且 OTT 强调个性化单用户会话——这天然是单播的活。
  • OTT 服务商「内部」仍可用组播:源站集群之间、数据中心到 CDN 父节点,常把直播源以组播(SSM)汇聚,再在边缘「终结」成单播切片(见第 15.3 节黄金组合)。
  • 融合趋势:组播 ABR / IPTV over OTT:运营商把直播频道用组播推到家庭网关,网关再转成 HLS 单播给家庭内多个屏幕——这是 IPTV 的可靠性与 OTT 的灵活性相结合,常被称作「全 IP 视频」。

14.5.3 OTT 关键技术栈(了解即可)

HLS / DASH

把视频切片 + 清单文件,HTTP 分发,天然穿越防火墙、易缓存。

ABR 自适应

按带宽动态选码率,弱网不卡顿,是 OTT 体验核心。

LL-HLS / LL-DASH

低延迟切片(亚秒级),让 OTT 直播逼近传统直播时延。

WebRTC / SRT / RIST

超低延迟互动直播(WebRTC) 与公网可靠传输(SRT/RIST)。

14.6 IPTV vs OTT vs 广电:一张表分清

维度IPTV(运营商内网)OTT(公网视频)传统广电(有线)
承载网络运营商专用 IP 网公共互联网同轴电缆广播
传输方式组播为主单播 CDN 为主广播
是否依赖运营商强(需开户)弱(有网即可)强(需缴费)
个性化/点播中(混合单播)
直播时延极低(秒级内)低(LL-HLS 亚秒)
统计计费易(BRAS 可控)易(按请求)
典型终端专用 STB智能电视/手机/PC电视机+机顶盒
融合趋势 三者边界正在模糊:运营商把 OTT 能力搬进 IPTV(IPTV over OTT),广电也在推有线+IP 双模。记住一句话——直播/广播式内容用组播最省,个性化点播用单播 CDN 最灵活,未来是「组播 + 单播 + CDN」的全 IP 融合视频网。

15CDN 与组播:公网分发的左膀右臂

前面说「公网不通组播」,那 B 站、抖音怎么把直播送到几百万人的?答案是 CDN(内容分发网络)。本节讲清它和组播的关系与边界。

15.1 CDN 是什么

CDN 把内容缓存到离用户近的边缘节点(POP)。用户看视频,不是直连源站,而是连最近的边缘服务器。源站→边缘之间叫回源(origin pull),边缘→用户叫最后一跳分发

15.2 为什么公网不用组播,而用 CDN

  • 组播不跨公网域:运营商之间不互通组播路由(PIM/MSDP 跨域复杂、计费与安全难),互联网本质是多自治域单播网络。
  • CDN 用「单播 + 缓存 + 分片(HLS/DASH)」:把直播切成小切片,边缘节点用单播 TCP/HTTP 发给用户,天然兼容、可控、可统计、可防盗链。
  • 规模经济:CDN 用大量廉价单播连接 + 智能调度,反而比全网组播更现实。
维度组播CDN(单播分片)
适用边界内网 / 单自治域全球公网
延迟极低(无缓存)略高(切片+边缘缓存,仍可亚秒)
个性化弱(同一份)强(每用户独立会话)
跨域部署
统计/计费易(按请求)

15.3 组播 + CDN 的「黄金组合」

真正的现代视频平台,往往在内部用组播,外部用 CDN

  1. 源站内部:编码器把直播源以组播(SSM)推送到源站集群/多数据中心,省内部带宽。
  2. 源站 → CDN 边缘:CDN 回源拉流(单播/专线),把组播流在源站「终结」成单播交给 CDN。
  3. CDN 边缘 → 用户:HLS/DASH 分片单播分发。
编码器 源站(组播 SSM汇聚) CDN 源站 (转单播) 边缘节点A 边缘节点B 组播 回源单播 HLS/DASH 单播到用户
组播(内网)+ CDN(公网)混合视频分发架构
扩展知识 相关技术还可了解:HLS / DASH(自适应码率切片)、RTMP/SRT/WebRTC(低延迟推流/传输)、Anycast(用同一 IP 把用户引导到最近节点)、QUIC(UDP 上的可靠传输)。组播负责「域内一对多」,这些负责「域间/最后一公里」。

16高级主题与故障排查(高手进阶)

到了高手段位,要掌握跨域、冗余、安全与 IPv6,以及一套靠谱的排错方法论。

16.1 Anycast RP:RP 不再单点

前面 RP 是一台路由器,挂了全网组播瘫痪。Anycast RP:让多台 RP 用同一个 IP(任播地址),靠单播路由把流量引到「最近」的 RP;RP 之间用 MSDP(组播源发现协议) 互相同步「源注册信息」,保证任一 RP 都知道全网吧的源在哪。

! 两台 RP 配相同任播地址到 Loopback,MSDP 互指
RP1(config)# interface Loopback0
RP1(config-if)# ip address 10.0.0.100 255.255.255.255   ! 任播 RP 地址
RP1(config)# ip msdp peer 10.0.0.101 connect-source Loopback0
RP1(config)# ip msdp originator-id Loopback0
! 另一端 RP2 配 10.0.0.100 同地址 + 互指 MSDP peer
R# show ip msdp peer
R# show ip msdp sa-cache             ! 看源活跃(SA)缓存
价值Anycast RP + MSDP = RP 冗余 + 负载分担 + 跨域源发现,是运营商级组播的标配。

16.2 MSDP:跨域/跨 RP 的「源黄页」

MSDP 在 RP 间传递 SA(Source Active)消息:「我这边有个源 S 在发组 G」。接收者域的 RP 收到后,就能向该源拉流。它是不同 PIM 域之间共享源信息的关键(PIM 本身不跨域)。

16.3 组播 VPN(MVPN):在 MPLS VPN 里跑组播

企业用 MPLS L3VPN 时,客户 A、B 的组播要隔离又要在各自 VPN 内互通。MVPN 用 MDT(组播分发树) 在运营商核心为每 VPN 建一棵「隧道树」,把客户的组播包封装进去跨域传输。思科支持 Rosen(GRE/IP 封装)和 MPLS 直连(mLDP)两种。

16.4 BIER:组播的「未来形态」

传统组播每台路由器都要维护每流的 (S,G) 状态,规模一大就重。BIER(Bit Index Explicit Replication) 把「复制给哪些下游」编码进报文头的 BitString,中间节点无状态转发——更适合超大规模、SDN 化网络。了解一下趋势即可。

16.5 IPv6 组播与 MLD

IPv6 里组播是一等公民(没有广播,连地址解析都用组播)。对应 IGMP 的是 MLD(Multicast Listener Discovery),PIM 同样适用。IPv6 组播地址以 FF00::/8 开头(如 FF02::1 所有节点、FF02::2 所有路由器)。

R(config)# ipv6 multicast-routing
R(config-if)# ipv6 pim sparse-mode
R(config-if)# ipv6 mld version 2

16.6 组播安全

风险防护
非法源冒充频道SSM(只允许指定源);ip igmp access-group
私接组播源泛滥ip multicast boundary 限制组范围
非法 Join 耗尽资源IGMP 限速、接口 ACL
组播风暴RPF 检查 + TTL 阈值(ip multicast ttl-threshold

16.7 高手排错「七件套」

show ip multicast-routing          ! ① 组播路由开了没
show ip pim neighbor               ! ② PIM 邻居建起来没
show ip pim rp mapping             ! ③ RP 学到了没(SM)
show ip igmp groups                ! ④ 接收者入组没
show ip rpf <源IP>                  ! ⑤ RPF 路径对不对
show ip mroute <组>                 ! ⑥ 转发树有没有出接口
debug ip pim / debug ip igmp       ! ⑦ 必要时开 debug(生产谨慎)
常见故障速查 ① 看不到 mroute 出接口 → 检查 IGMP/RP/RPF;② RPF failure 涨 → 单播路径不对称;③ 能看到 (*,G) 但看不到 (S,G) → 源没注册/Register 被拦;④ 切台慢 → 开 Snooping immediate-leave;⑤ 跨网段看不了 → 中间设备没开 PIM。

16.8 最佳实践清单(收藏级)

  • ✅ 企业内网默认用 PIM-SM + BSR;源固定用 SSM(IGMPv3)
  • ✅ 组播地址一律 239.0.0.0/8(内网),直播可规划 232/SSM 段。
  • ✅ RP 用 Anycast RP + MSDP 做冗余(生产环境)。
  • ✅ 接入交换机必开 IGMP Snooping + immediate-leave
  • ✅ 全局开启 ip multicast-routing,所有相关接口配 PIM。
  • ✅ 用 ip multicast boundary + TTL 阈值做安全边界。
  • ✅ 组播不通先查 RPF,再查 RP/IGMP,最后查 PIM 邻居。
  • ✅ 公网分发用 CDN(HLS/DASH),组播留内网。
学习路径建议 入门:搞懂单播/广播/组播区别 + 组播地址 + IGMP。→ 进阶:PIM-SM 的 RP/RPT/SPT 三段式 + RPF。→ 实战:照第13章在 EVE-NG 上搭一套拓扑跑通(见第17章)。→ 高手:Anycast RP、MSDP、MVPN、BIER、IPv6 MLD。一步步来,组播就没那么吓人。

17EVE-NG 组播实验实战:把理论跑成真流量

光看配置不过瘾。本章带你在 EVE-NG(Emulated Virtual Environment,基于 KVM 的网络仿真平台)上,搭一套可真实跑组播流量的实验,亲眼看 IGMP 加组、PIM 建树、mroute 出接口出现。

17.1 EVE-NG 是什么,为什么选它

  • 是什么:EVE-NG 是个「网络设备的虚拟机管理器」,浏览器里就能拉出多台路由器/交换机/PC,用虚拟线缆连成拓扑,相当于一台随身的网络实验室。
  • 支持什么:Cisco IOL / CSR1000v、Juniper vMX、华为 CE/USG、Linux、VPCS 等,组播实验首选 Cisco 节点。
  • 为什么适合学组播:不用真机、不用买License 风险,随时快照、随时「故障注入」,是验证 PIM/RPF/IGMP 的最佳沙盘。

17.2 实验目标与拓扑

目标:在 EVE-NG 上复刻第 13 章拓扑,让一台 VPCS 通过组播收到另一台「源路由器」发出的流量,并实测 SSM、IGMP Snooping、RPF 故障。

R-SOURCE 源 10.1.1.10 R-CORE RP / BSR PIM-SM R-BR1 最后一跳 SW-L2 Snooping VPCS1 VPCS2 链路全部跑 PIM-SM;SW 开 IGMP Snooping;VPCS 用 igmp join 模拟机顶盒
EVE-NG 组播实验拓扑:源 → 核心(RP) → 分支 → 交换机 → 两台 VPCS 接收者

17.3 镜像准备

节点推荐镜像说明
路由器 ×3CSR1000v(最稳)完整 IOS-XE,组播特性全;资源够就用它。IOL 也可但老版本组播可能不全
交换机 ×1L2 IOU / vIOS-L2用于演示 IGMP Snooping;也可用路由器代替(关路由当二层)
接收者 ×2VPCS内置轻量 PC,支持 igmp join,做机顶盒最方便
组播源路由器 ping 组地址无需额外镜像,用 R-SOURCE 自身产生流
镜像坑组播实验强烈建议用 CSR1000v。部分老 IOL 镜像的 PIM/SSM 支持不完整,会出现「配置对了但 mroute 起不来」的玄学问题。CSR1000v 资源需求约 4 vCPU / 4 GB,实验室宿主机要留够。

17.4 搭建八步

  1. 建 Lab:浏览器登录 EVE-NG → 右键 Folder → Add Lab,命名 Multicast_Lab,设置管理网段。
  2. 加节点:分别添加 3× CSR1000v、1× L2 IOU、2× VPCS(Node 类型选对应镜像)。
  3. 启动:全选节点 → Start,等 Console 状态变绿(CSR 启动约 2~3 分钟)。
  4. 连线:按拓扑拖拽连接——R-SOURCE g0/0 ↔ R-CORE g0/0;R-CORE g0/1 ↔ R-BR1 g0/0;R-BR1 g0/1 ↔ SW g0/1;SW g0/2 ↔ VPCS1;SW g0/3 ↔ VPCS2。
  5. 基础 IP + 单播路由:给所有接口配 IP,跑 OSPF 让全网可达(RPF 的地基)。
  6. 开组播:全局 ip multicast-routing,PIM 接口配 sparse-mode,R-CORE 配 RP/BSR,接入口配 IGMP + Snooping。
  7. 起流量:R-SOURCE 持续 ping 组地址;VPCS 用 igmp join 加组。
  8. 验证:在 R-CORE / R-BR1 上 show ip mroute 看是否出现出接口。

17.5 节点配置(精简可抄版)

① R-SOURCE(组播源)

hostname R-SOURCE
ip multicast-routing
!
interface Loopback0
 ip address 10.1.1.10 255.255.255.255
 ip pim sparse-mode
!
interface GigabitEthernet0/0        ! 连 R-CORE
 ip address 10.1.1.1 255.255.255.0
 ip pim sparse-mode
 ip igmp join-group 239.1.1.1       ! 让本机也"收",便于 ping 自测
!
router ospf 1
 network 0.0.0.0 255.255.255.255 area 0
!
! 产生组播流:目的地址直接写组地址
R-SOURCE# ping 239.1.1.1 repeat 1000

② R-CORE(RP + BSR,核心)

hostname R-CORE
ip multicast-routing
!
interface Loopback0
 ip address 10.0.0.1 255.255.255.255
 ip pim sparse-mode
!
interface GigabitEthernet0/0        ! 连源
 ip address 10.1.1.2 255.255.255.0
 ip pim sparse-mode
interface GigabitEthernet0/1        ! 连分支
 ip address 172.16.1.1 255.255.255.252
 ip pim sparse-mode
!
router ospf 1
 network 0.0.0.0 255.255.255.255 area 0
!
ip pim rp-candidate Loopback0
ip pim bsr-candidate Loopback0 30   ! 动态 RP,全网自动学到

③ R-BR1(最后一跳,连接收者)

hostname R-BR1
ip multicast-routing
!
interface GigabitEthernet0/0        ! 连核心
 ip address 172.16.1.2 255.255.255.252
 ip pim sparse-mode
interface GigabitEthernet0/1        ! 连 SW/用户
 ip address 192.168.10.1 255.255.255.0
 ip pim sparse-mode
 ip igmp version 3
!
router ospf 1
 network 0.0.0.0 255.255.255.255 area 0
! 无需手动指 RP,BSR 会自动通告 10.0.0.1

④ SW-L2(接入交换机,IPTV 关键)

hostname SW
ip igmp snooping
ip igmp snooping vlan 1
ip igmp snooping vlan 1 querier
ip igmp snooping vlan 1 immediate-leave
! 上联口(连 R-BR1)自动学习为 mrouter;用户口接 VPCS
SW# show ip igmp snooping groups

⑤ VPCS(接收者,模拟机顶盒)

VPCS> ip 192.168.10.20 255.255.255.0 192.168.10.1
VPCS> ip 192.168.10.21 255.255.255.0 192.168.10.1   ! 第二台
VPCS> igmp join 239.1.1.1        ! 加入频道
VPCS> show ip igmp               ! 确认已加入
VPCS> igmp leave 239.1.1.1       ! 离开(切台)

17.6 验证命令(在 EVE 控制台逐条敲)

R-BR1# show ip igmp groups 239.1.1.1     ! ① 收到成员了吗
R-CORE# show ip pim rp mapping            ! ② RP = 10.0.0.1 ?
R-CORE# show ip pim neighbor              ! ③ PIM 邻居建起来没
R-BR1# show ip rpf 10.1.1.10              ! ④ 回源路径对不对
R-BR1# show ip mroute 239.1.1.1           ! ⑤ 转发树出接口有没有
VPCS> ping 239.1.1.1                      ! ⑥ 能通?通了就大功告成
成功标志show ip mroute 239.1.1.1 里出现 (10.1.1.10, 239.1.1.1) 条目且 Outgoing 接口列表含 GigabitEthernet0/1;VPCS ping 239.1.1.1 有回复——说明组播从源一路复制到了接收者。

17.7 五个动手实验(进阶练习)

实验做法观察点
① PIM-SM 基础按上述配置跑通VPCS ping 通 239.1.1.1;mroute 有出接口
② SSM 实验频道改 232.1.1.1,接收者用 IGMPv3 指定源;VPCS 不支持 v3 指定源时改用路由器 ip igmp join-group 232.1.1.1直接建 (S,G) 源树,不经过 RP
③ IGMP SnoopingSW 上 show ip igmp snooping groups流量只转发到 VPCS 端口,不洪泛
④ RPF 故障注入在 R-BR1 改 OSPF 度量让回源走错接口show ip rpf 失败、mroute 出现 RPF failure,流量中断;改回即恢复
⑤ SPT 切换show ip mroute 看从 (*,G) 到 (S,G);调整 ip pim spt-threshold理解共享树→源树的切换过程

17.8 组播源 / 接收者模拟技巧(必会)

让路由器发组播流

开启 ip multicast-routing 后,直接 ping 239.1.1.1 repeat 1000,目的 IP 是组地址即从 PIM 接口发出。

让路由器当接收者

接口下 ip igmp join-group 239.1.1.1(CPU 收,测试用)或 ip igmp static-group(只触发转发状态)。

VPCS 当接收者

igmp join 239.1.1.1 / igmp leave,最轻量,模拟机顶盒切台。

真实视频源

挂 Linux 节点跑 VLC/cvlc 推流,体验真实 IPTV 画面。

17.9 EVE-NG 排错清单

  • 节点起不来:宿主机 CPU/内存不足,或镜像未正确上传到 /opt/unetlab/addons/ 对应目录。
  • 组播不通但配置对:八成是 IOL 镜像组播支持不全,换 CSR1000v。
  • mroute 无出接口:先查 show ip igmp groups(接收者加组没)、show ip rpf(RPF 对不对)。
  • VPCS 收不到:确认 SW 开了 Snooping 且上联口被识别为 mrouter(show ip igmp snooping mrouter)。
  • 跨节点不通:先保证单播 OSPF 全网可达,组播 RPF 依赖单播路由。
学习闭环把第 1~16 章的理论,对照本实验逐一验证:IGMP 加组 → PIM 邻居 → RP 学习 → RPF 检查 → mroute 出接口 → 流量到达。亲手跑通一次,组播就从「概念」变成「手感」。