HCIE-DATACOM · 第 6 章

IP 组播技术

组播地址体系 · IGMP v1/v2/v3 · PIM-DM / PIM-SM · RP 与 SPT 切换 · MSDP · IGMP Snooping —— 一份流量服务 N 个观众,IPTV / 直播 / 金融行情的底层引擎。

授课 6 学时 实验 4 学时 笔试中频 ★★★☆☆
HCIE-DataCom 全套课件第 6 章 / 共 13 章

本章学习目标

原理层

  • 组播 IP 与 MAC 的映射规则及其"坑"
  • IGMP 三版本的递进逻辑与查询器选举
  • PIM-SM 全流程:注册 → RPT → SPT 切换
  • RP 三种获取方式与 Anycast RP

实战层

  • 独立部署 PIM-SM + IGMP 组网
  • 用 display pim 定位 RPF 失败类故障
  • 交换机 IGMP Snooping 二层优化
考试定位组播在笔试约 5~8 题(RPF、SPT 切换、版本差异最热);LAB 近年真题多次出现"组播+NAT/组播+VPN"复合场景。
6.1

组播基础

地址 · MAC 映射 · 转发树思维

组播地址体系

范围用途备注
224.0.0.0/24链路本地协议预留224.0.0.1 全主机 / .2 全路由器 / .5 OSPF / .6 DR / .13 PIM / .22 IGMP
224.0.1.0/24 起全球可路由组播224.0.1.39/40 Auto-RP(思科)
232.0.0.0/8SSM 源特定组播只需 IGMPv3 + PIM-SM,免 RP
239.0.0.0/8私有(组织内)企业/园区首选段
IP 组播地址 32bit:1110 + 28bit 组ID 224.1.1.1 → 1110 0000 0000 0001 0000 0001 0000 0001 取低 23 位:0000 0001 · 0000 0001 · 0000 0001 MAC:01-00-5E + 低 23bit 01-00-5E-01-01-01 IP 高 5bit 丢失 → 32 个组共享 1 个 MAC!
IP 组播地址 → MAC 映射:前缀 01-00-5E,IP 低 23 位复制(32:1 冲突,需要上层过滤)

组播转发模型:一切皆"树"

为什么要有树

单播发 N 份浪费;广播全员打扰。组播沿最短路径树复制,"一进多出"。

两类表项

(*,G):共享树,从 RP 出发(任意源)
(S,G):源树,从源出发(特定源)

RPF 检查

Reverse Path Forwarding:收到组播的接口,必须是去往源的单播路由出接口,否则丢弃 —— 组播防环的唯一保险。

RPF 必考逆接口不符即丢包;常见故障:单播路由改了(策略/引入)而组播没跟着变 → display pim routing-table 里 RPF 接口错误。RPF 依据优先级:单播路由(含 MBGP 多拓扑)→ 静态组播路由(multicast routing-table)→ MBGP。
6.2

IGMP:主机 ↔ 末梢路由器

入网报到的三套手续

IGMP v1 / v2 / v3 对比

能力IGMPv1IGMPv2IGMPv3
加组Membership Report(131 版本类型)同左 + 类型独立Report(含源列表)
离组静默离开(等超时)Leave + 特定组查询(秒级感知)EXCLUDE 空 = 离开
查询器依托 OSPF 等选 DRIP 最小者为查询器同 v2
源过滤INCLUDE / EXCLUDE → 支撑 SSM
定时器健壮性变量可调同 v2 + 源定时器
版本兼容v2 查询器对 v1 主机自动降级;SSM 场景必须全网 v3(缺一个就退回 ASM 行为)。
v3 两模式INCLUDE {S}:只要这些源;EXCLUDE {S}:除了这些源都要。EXCLUDE 空 = 退组 —— 考试爱考这条等价。

IGMP Snooping:二层聪明起来

  • 问题:组播 MAC 在交换机默认广播泛洪 → 全端口被灌
  • 解决:交换机"偷听" IGMP,建 组播转发表(端口×组),只在成员口复制
  • 角色:路由器端口(连 PIM 路由器 / 收到查询的口)+ 成员端口(收到 Report 的口)
  • Report 抑制:同组多个主机,只向路由器端口透传一份
# 华为交换机默认开启(VLAN 视图)
igmp-snooping enable
# 全局必须先开
igmp-snooping over ... (undo ...)

配合静默路由器的兜底

  • 上游路由器长时间不发查询 → snooping 表项老化 → 流量退化为泛洪
  • 对策:静态路由器端口 / 查询器重试保护

排错三刀

  1. display l2-multicast forwarding-table vlan 10 看二层表有没有成员口
  2. display igmp-snooping port-info 看路由器口/成员口
  3. 主机抓包:Report 有没有到路由器
6.3

PIM:路由器之间的组播协议

DM 推模式(简单粗暴)→ SM 拉模式(可扩展)

PIM-DM:泛洪-剪枝的"推"

① 扩散 Flood
源开始发包,全网洪泛(Graft 嫁接恢复)
② 剪枝 Prune
无成员的分支发 Prune 上报(210s 后回摆重泛洪)
③ 状态刷新
Assert 选举同网段唯一转发者
④ 嫁接 Graft
新成员加入立即单播 Graft 恢复

Assert 机制

同链路两台路由器都认为自己是转发者 → 互发 Assert 比拼:单播协议优先级 → 到源开销 → IP 大,败者剪枝。防止重复流量。

为何退出主流周期泛洪+回摆(3 分钟一轮)在大网开销爆炸 → DM 只适合密集小网/持续高密度场景,现网几乎全用 SM。

PIM-SM 核心:RP 的注册流程

源S RP R Host ① 单播 Register(源侧DR隧道) ② Register-Stop(RP建好SPT后停封装) ③ (*,G) 沿共享树下发到成员 ④ (S,G) SPT:成员DR向源发起切换 SPT 切换(华为默认立即) 首包沿 RPT 到达后,接收侧 DR 知道源位置 → 逐跳发 (S,G) Join → 建最短路径树
PIM-SM 三阶段:注册 → 共享树 → SPT 切换
必考细节Register 是单播(源 DR → RP 封装隧道);Register-Stop 后源 DR 每 5s 发空 Register 探测 RP 状态(保持 55s)。SPT 切换可关:undo spt-switch-threshold infinity(华为 AR 默认立即切换)。

RP 的三种获取与 BSR

方式机制特点
静态 RP全网 static-rp 1.1.1.1简单可靠、首选
BSR候选 BSR 洪泛自举;候选 RP 通告自动收敛、防过载哈希
Auto-RP思科私有(224.0.1.39/40)了解即可
# BSR 两步
pim
 c-bsr LoopBack0 priority 10
 c-rp LoopBack0 group-policy basic-acl
  • BSR 选举:候选 BSR 互发自举报文,优先级大者胜 → 再比 IP 大(与 DR 相反方向,注意混淆点:DR 是小者"更优"逻辑为大优先,实际 DR 优先级大者胜;BSR 也是优先级大者胜)
  • BSR 报文逐跳泛洪到 224.0.0.13,TTL 减一转发
  • Anycast RP:两台 RP 用同一 Loopback 地址(MSDP 对等互联),源就近注册、接收就近共享树 → RP 负载分担 + 冗余
  • 域间组播:MBGP + MSDP(SA 消息传播活动源信息)
笔试点BSR 需要全网接口 pim sm;候选 RP 宣告带 group-policy 划分服务范围;Anycast RP 的 MSDP 只在 RP 间建。

PIM-SM 邻居与 DR

  • 协议报文统一发 224.0.0.13(All-PIM-Router),TTL=1 逐跳
  • Hello(30s/105s)选 DR:源侧 DR 负责注册;接收侧 DR 发 (*,G) Join
  • DR 选举:先比优先级(大优,默认 1)→ 再比 IP 大者胜
  • Join/Prune 周期 60s 维持树枝
易混三兄弟PIM DR(大优)|OSPF DR(大优、非抢占)|IS-IS DIS(大优、可抢占)|IGMP 查询器(IP 小优)—— 四种选举一张表贴墙。

SSM(232/8):免 RP 简化版

  • 主机 IGMPv3 明确报"我要 (S,G)"
  • 路由器直接沿源建树,无 RP、无注册、无共享树
  • 要求:IGMPv3 + ssm-policy(华为默认 232/8 即 SSM)

部署检查单

  1. 全网单播先通(RPF 的地基)
  2. 接口 pim sm + 主机侧 igmp enable
  3. RP 可达 + 组策略放行
  4. 边界 pim bsr boundary 防泄漏

排错命令包 + 经典案例

display pim interface                     # 接口使能/DR/邻居计数
display pim neighbor                      # 邻居表
display pim routing-table [verbose]       # (S,G)/(*,G) 与上下游、入接口
display pim rp-info                        # RP 学习来源与优先级
display igmp interface / group            # 主机侧成员关系
display multicast routing-table          # 组播路由表(RPF核对)
display multicast forwarding-table        # 转发表(真实复制点)
display l2-multicast forwarding-table     # 二层 snooping 表

案例A:成员收不到流

① display igmp group 有没有成员;② pim routing-table 的 RPF 接口对不对(单播改了没同步);③ 转发表 olist 是否包含出接口;④ 二层 snooping 表是否老化。

案例B:收到双份流

同网段两台都转发 → Assert 未生效或 DR 选举失败(优先级/掩码不一致);查 pim neighbor 与 Assert 胜者。

核心知识要点速记 考前 10 分钟过一遍

考点必背细节频度
地址体系224~239;224.0.0.x 本地保留(TTL=1 不转发);组播 MAC = 01:00:5E + 0 + IP 低 23 位 → 32:1 映射冲突,网卡须二次过滤★★★★
IGMP 三版本v1:无离开、查询器由组播路由协议(DR)兼任;v2:离开报文 + 特定组查询 + 查询器 IP 小者当选;v3:include/exclude 源过滤(SSM 基础)★★★★★
IGMP Snooping无它 = 组播当广播泛洪;识别路由器端口(收 PIM/IGMP 查询的口)与成员口;快速离开立即剪枝★★★★
PIM-DM推模式,适合密集小网;泛洪-剪枝(3 分钟周期)+ 嫁接 + 状态刷新;断言 Assert:单播优先级小者胜 → 开销小者胜 → IP 大者胜★★★★
PIM-SM 流程拉模式;成员侧 (*,G) 加入 RPT → DR 封装 Register 到 RP → RP 沿 SPT 拉源 → 末跳 DR 默认立即 SPT 切换(阈值 0 kbps);Register-stop 后抑制 60s★★★★★
RP 获取静态 / BSR 动态;C-BSR 竞选:优先级大 → IP 大;C-RP 向 BSR 宣告;RP 冗余要播 anycast-RP 或手工双静态★★★★
RPF 检查每个 (S,G) 选唯一上游接口;单播改道 → RPF 失败 → 组播断流(排错头号根因);组播静态路由可强行修 RPF★★★★★
跨域与二层MSDP(TCP 639)跨域共享源信息(SA 消息);Snooping/MLD Snooping 优化二层转发★★
易错陷阱① IGMPv2 查询器看 IP 小者、PIM DR 看优先级→IP 大者,两套规则别混;② SPT 切换的发起者是最后一跳路由器(DR),不是 RP;③ 组播不通先查单播——display multicast rpf-info 十有八九见分晓。

练习重点 笔试 × LAB 双线

笔试刷题方向

  1. MAC 映射计算:给组播 IP 写出二层 MAC(并指出 32 个 IP 共享同一 MAC)
  2. IGMP 版本对比:离开机制/查询器选举/源过滤逐版本判断
  3. DM vs SM 流程排序:给动作卡片(泛洪/剪枝/注册/SPT 切换)排出正确次序
  4. Assert / RPF 判定:给两条等价链路算赢家
  5. BSR 选举示例:优先级相同比 IP 大小,方向别和 IGMP 查询器记反
达标线PIM-SM 从成员加入到 SPT 切换的完整流程 2 分钟口述不断线。

实验强化清单

  1. PIM-SM 组网(实验 6 全量复刻):静态 RP 与 BSR 各做一遍
  2. 抓包验证三段:Register → Register-stop → (S,G) Join(SPT 切换)
  3. 故障注入:改单播 metric 制造 RPF 失败 → 用组播静态路由修复
  4. 关掉 Snooping 观察泛洪,再开启对比流量变化
验证命令自查display pim routing-table(区分 (*,G)/(S,G)、olist/upstream)、display igmp groupdisplay multicast rpf-info —— 每个字段都能解释。

本章小结

地址D 类 224/4;01-00-5E + 低 23bit(32:1 冲突);232/8 专属 SSM、239/8 私有。
RPF逆向路径检查是组播防环唯一机制;依据单播/组播静态/MBGP;排错第一查。
IGMPv1 静默离组 → v2 Leave+特定组查询+小 IP 查询器 → v3 源过滤(INCLUDE/EXCLUDE,空集=退组)。
PIM-DM泛洪-剪枝-状态刷新-Graft,适合小密网;Assert 同段唯一转发者。
PIM-SM注册(单播隧道)→ RPT → SPT 立即切换;RP 静态/BSR/Anycast+MSDP。
二层IGMP Snooping 建端口×组表防泛洪;路由器端口靠查询报文识别。

课后思考

组播 IP-MAC 映射 32:1 冲突在实践中如何被消化?交换机和主机各做什么?
RPF 失败的流量会怎样?列举三种导致 RPF 接口错误的单播侧变更。
为什么 PIM-SM 的 Register 采用单播封装而不是直接组播发?Register-Stop 的作用时机是什么?
IGMPv3 的 EXCLUDE 空 报文等价于 v2 的什么行为?SSM 为什么天然免疫某些攻击?
Anycast RP 中两台 RP 的 Loopback 相同,BGP/IGP 怎么处理这种地址?MSDP 在其中解决什么问题?

实验 6:PIM-SM 组网 LAB · 2 学时

eNSP · 4 路由器 + 交换机源—RP—接收 + 二层 snooping

任务书

  1. 四台路由器 OSPF 全互通(RPF 地基)
  2. R2 为静态 RP(组策略 239.1.1.0/24)
  3. R4 下挂接收者(igmp v3),R1 源发流
  4. 观察 (*,G)→(S,G) 切换:display pim routing-table 前后对比
  5. 改 BSR 模式重复部署(c-bsr + c-rp)
  6. 故障注入:改一条 metric 让 RPF 接口变化,观察断流并修复
验证点预期
display pim rp-info静态/BSR 来源正确
pim routing-table先 (*,G) 后 (S,G) 出现
multicast forwarding-table出接口=成员方向
RPF 故障后丢包 → 修复恢复
测试工具eNSP 用 ping -g 239.1.1.1 x.x.x.x 模拟组播源;PC 抓包看 IGMP v3 Report 与流量复制。