11. IP 组播
- [11. IP 组播](#11. IP 组播)
-
- [11.1 IP 组播概念](#11.1 IP 组播概念)
- [11.2 IP 组播模型](#11.2 IP 组播模型)
- [11.3 Internet 组管理协议(IGMP)](#11.3 Internet 组管理协议(IGMP))
- [11.4 组播路由协议](#11.4 组播路由协议)
-
- [11.4.1 距离向量组播路由协议(DVMRP)](#11.4.1 距离向量组播路由协议(DVMRP))
- [11.4.2 开放式组播最短路径优先协议(MOSPF)](#11.4.2 开放式组播最短路径优先协议(MOSPF))
- [11.4.3 与协议无关的组播(PIM)](#11.4.3 与协议无关的组播(PIM))
- [11.4.4 基于核心的树(CBT)](#11.4.4 基于核心的树(CBT))
- 本章要点
11. IP 组播
11.1 IP 组播概念
- IP 组播的提出
1988 年由 Deering 提出,在 IP 层引入组播功能机制,解决单点发送多点接收的问题,实现 IP 网络中点到多点的高效数据传送,又称多播。 - 传统 IP 通信方式的局限
- 单播(unicast):源主机与单个目的主机通信,若需发送给多个主机,需重复发送 IP 包,浪费带宽且增加网络设备负载。
- 广播(broadcast):源主机向网络中所有主机发送数据,会将信息发送给不需要的主机,浪费带宽,还可能因路由回环引发广播风暴。
- 结论:单播和广播均无法高效解决 "单点发送多点接收" 问题。
- IP 组播的定义
源主机只发送一份数据,目的地址为组播组地址(D 类 IP 地址),仅组播组内的目标主机可接收该数据,组内所有接收者均能获取相同数据拷贝。 - IP 组播的主要优点
- 降低主机和 CPU 负荷,增强网络效率;
- 控制网络流量,消除冗余,优化网络性能;
- 支持分布式应用(如视频会议、共享公告板、远程学习、财务数据发布等)。
11.2 IP 组播模型
- 核心:主机组(host group)
由多个主机组成,源主机构造以 D 类 IP 地址(组播组地址)为目的地址的数据包,以 "尽力而为" 方式转发到组内各主机。 - 组播组地址(D 类地址)
- 范围:224.0.0.0~239.255.255.255。
- 部分地址保留:
- 224.0.0.1:子网内所有系统组;
- 224.0.0.2:子网内所有路由组;
- 224.0.0.9:RIP v2 协议使用;
- 224.0.1.0~238.255.255.255:全球范围使用;
- 239.0.0.0~239.255.255.255:限制在一个机构内使用。
- 组播地址与底层网络的映射
- 以太网(支持组播的网络) :将 IP 组播地址的低 23 位替换以太网组播地址 "01.00.5e.00.00.00" 的低 23 位,属于 "多对一映射",映射后以太网组播地址范围为 01.00.5E.00.00.00~01.00.5E.7F.FF.FF。
例:IP 组播地址 224.66.60.89(二进制:11100000.01000010.00111100.01011001)映射为以太网地址 01.00.5e.42.3c.59。 - 不支持组播的网络:将 IP 组播地址映射为本地广播地址。
- 以太网(支持组播的网络) :将 IP 组播地址的低 23 位替换以太网组播地址 "01.00.5e.00.00.00" 的低 23 位,属于 "多对一映射",映射后以太网组播地址范围为 01.00.5E.00.00.00~01.00.5E.7F.FF.FF。
- 组播传递结构
组播路由器(负责组播数据寻路和转发控制)及链路在网络中形成树形逻辑结构,称为 "传递树",用于控制组播数据的传送。 - 组播协议分类
- 主机 - 路由器之间:组成员关系协议(如 IGMP);
- 路由器 - 路由器之间:组播路由协议,又分为域内组播路由协议和域间组播路由协议。
11.3 Internet 组管理协议(IGMP)
IGMP 是主机与本地组播路由器之间的协议,用于维护组播成员关系,分为三个版本,功能逐步增强。
- IGMP 版本演进
- IGMPv1(RFC 1112):定义基本的组成员查询和报告过程;
- IGMPv2(RFC 2236):增加特定组查询和组成员快速离开机制;
- IGMPv3(RFC 3376):增加对组播源的过滤功能,成员可指定接收 / 拒绝特定源的报文。
- IGMPv2 报文结构与字段
- 封装方式:IGMP 报文封装在 IP 数据报中,IP 首部协议字段值为 2,TTL 为 1;
- 报文长度:固定 8 字节;
- 字段说明:
- 类型:0x11(一般 / 特殊查询)、0x16(成员报告)、0x17(离开报告);
- 最大响应时间:仅用于查询报文,单位为 1/10 秒,规定响应的最大允许时间;
- 校验和:计算前需清 0;
- 组播地址:查询报文中,普通查询置 0,特定组查询置目标组地址;报告 / 离开报文中,置对应的组播地址。
- IGMPv2 工作过程
- 加入组播组:主机通过 IGMP 消息通知本地组播路由器希望加入的组,路由器通过 IGMP 维护组播成员列表(记录接口上的组播组信息),成员动态变化。
- 报告和查询:
- 路由器向本网络所有系统(地址 224.0.0.1)发送 "成员资格查询" 报文;
- 主机用 "成员资格报告" 报文回应(指明所属组);
- 采用 "消息抑制算法":同一子网内,若已有主机发送某组的报告,其他主机不再重复发送(随机延迟 0-10 秒,减少网络负荷)。
- 查询者选择:
- 连接多路由器的网络中,各路由器先假定自己是查询者并发送普通查询(源为自身接口地址);
- 路由器比较收到的查询报文源 IP 地址,最低 IP 地址的路由器成为查询者;
- 非查询路由器启动计时器(默认为查询间隔的 2 倍),若超时未收到查询者报文,重新触发选择过程。
- 快速离开机制:成员离开时发送 "离开报告",路由器收到后发送 "特定组查询",若无响应则将该组从成员列表移除,降低脱离延迟。
- IGMPv3 的增强功能
- 源过滤模式:
- INCLUDE 模式:指定接收特定源的报文(包含源地址列表);
- EXCLUDE 模式:指定拒绝特定源的报文(排除源地址列表)。
- 报文与查询:
- 兼容 v1/v2,协议值仍为 2,TTL=1;
- 成员查询报文支持 "特定源组查询",分为三种形式:普通查询(无组 / 源地址)、特定组查询(有组地址,无源码)、特定组和源查询(有组和源地址)。
- 成员报告:
- 接口状态变化或收到查询时发送,携带一个或多个组记录;
- 组记录分 6 种类型:类型 1/2(当前状态记录)、类型 3/4(过滤模式改变记录)、类型 5/6(源列表改变记录)。
- 源过滤模式:
11.4 组播路由协议
组播路由协议是路由器之间的协议,核心任务是构造组播分布树,确保组播分组高效传送到成员(无重复、无环路、路径最优)。
11.4.1 距离向量组播路由协议(DVMRP)
-
基础:基于源的路由协议,是距离向量路由协议(DVRP)在组播中的扩展,最优树在包转发过程中逐步形成。
-
核心机制:
-
反向通路转发(RPF):路由器仅转发来自 "源到本路由器最短路径" 的包,其他包丢弃(避免环路,基于 DVRP 路由表,将源地址作为目的地址判断最短路径接口)。
-
反向通路广播(RPB):解决 RPF 的重复包问题,为特定源指定唯一父路由器,确保每个网络只收到一份组播包(形成最短路径广播树)。
-
反向通路组播(RPM)
:在 RPB 基础上增加 "修剪" 和 "嫁接" 操作,适应动态成员:
- 修剪:若路由器连接的网络无组播成员,向上游发送修剪消息,从树中移除该分支;
- 嫁接:若已修剪的网络重新出现成员,发送嫁接消息,重新接入组播树。
-
11.4.2 开放式组播最短路径优先协议(MOSPF)
- 基础:基于链路状态的路由协议,是 OSPFv2 的扩展,支持 IP 组播路由。
- 路由级别:分区域内、区域间、自治系统(AS)间组播路由。
- 工作机制:
- 利用 OSPF 链路状态通告中的组播信息,使用 Dijkstra 算法构造(S,G)对的分配树(S 为源,G 为组);
- 采用 "按需计算":仅在收到组播源的第一个数据包后,才计算(S,G)树,否则利用转发缓存,减少计算量。
- 优缺点:
- 优点:路由开销小,链路利用率高,对网络拓扑变化响应快(继承 OSPF 特性);
- 缺点:Dijkstra 算法计算量大,拓扑变动会使所有路由器缓存失效,消耗 CPU 资源。
11.4.3 与协议无关的组播(PIM)
PIM 不依赖特定单播路由协议(可基于任意单播路由表),分两种模式:
- PIM 密集模式(PIM-DM)
- 适用于组播成员密集分布、带宽充足的网络(如局域网);
- 类似 DVMRP,采用 RPM 机制(泛洪 + 修剪)构建以源为根的最短路径树;
- 假设所有网络都有组播成员,先泛洪数据,再修剪无成员的分支。
- PIM 稀疏模式(PIM-SM)
- 适用于组播成员稀疏分布、带宽有限的网络(如广域网);
- 构建 "共享树":以聚合点(RP,rendezvous point)为根,所有成员共享一棵树;
- 工作流程:组播源沿最短路径向 RP 发送数据,RP 再沿最短路径转发到成员;若需更高性能,可动态切换为以源为根的最短路径树。
11.4.4 基于核心的树(CBT)
- 基础:组共享树协议,为每个组构建一棵以核心路由器为根的树。
- 树的形成:包含组播成员的路由器向核心路由器发送 "加入消息",路径上的路由器记录发送者地址和进入接口,形成从核心到成员的树(与 DVMRP 相反:DVMRP 从根到叶,CBT 从叶到根;DVMRP 先广播再修剪,CBT 通过加入消息直接建树)。
- 数据转发:源将组播包单播给核心路由器,核心去封装后沿共享树转发给成员;核心在收到加入消息前,阻塞组播分组发送。
本章要点
- IP 组播通过 D 类地址实现单点发送、多点接收,解决单播 / 广播的带宽浪费问题;
- 组播协议分主机 - 路由器间的 IGMP(维护成员关系)和路由器 - 路由器间的组播路由协议(构建组播树);
- IGMPv1/v2/v3 逐步增强功能,从基础查询到源过滤;
- 组播路由协议分基于源的树(如 DVMRP、MOSPF、PIM-DM)和组共享树(如 CBT、PIM-SM),核心是构建无环路、高效的组播分布树。