# 4.6 IP组播 ## 一、IP组播概述 ### 1.1 什么是IP组播 **IP组播(IP Multicast)**: - 一种一对多的通信方式 - 一个发送者向多个接收者发送数据 - 接收者是动态加入和离开的组播组 ### 1.2 组播与单播、广播的比较 | 特性 | 单播(Unicast) | 组播(Multicast) | 广播(Broadcast) | |-----|----------------|------------------|------------------| | 通信方式 | 一对一 | 一对多 | 一对所有 | | 接收者 | 特定主机 | 特定组 | 所有主机 | | 网络负载 | 高(多次复制) | 低(按需复制) | 高(全网发送) | | 安全性 | 高 | 中 | 低 | | 应用场景 | 点对点通信 | 视频会议、直播 | 局域网广播 | ### 1.3 组播的优点 - **节省带宽**:只在需要的地方复制数据 - **减少网络负载**:路由器只转发到有组播组成员的链路 - **动态组成员**:接收者可以动态加入和离开 - **适合一对多应用**:视频会议、在线直播、股票行情等 ### 1.4 组播的应用场景 - **视频会议**:多人视频会议 - **在线直播**:网络电视、直播 - **股票行情**:实时行情分发 - **软件分发**:大规模软件更新 - **网络游戏**:多人在线游戏 --- ## 二、组播地址 ### 2.1 IPv4组播地址 **范围**:224.0.0.0 ~ 239.255.255.255 **分类**: **保留组播地址(224.0.0.0 ~ 224.0.0.255)**: - 用于路由协议和其他网络协议 - 不转发到其他网络 - 例子: - 224.0.0.1:所有主机 - 224.0.0.2:所有路由器 - 224.0.0.5:OSPF路由器 - 224.0.0.6:OSPF DR - 224.0.0.9:RIP-2路由器 **全球范围组播地址(224.0.1.0 ~ 238.255.255.255)**: - 用于Internet范围的组播 - 需要组播路由协议支持 **管理范围组播地址(239.0.0.0 ~ 239.255.255.255)**: - 用于私有网络 - 类似私有IP地址 - 不在Internet上路由 ### 2.2 IPv6组播地址 **前缀**:FF00::/8 **格式**: ``` | 8位 | 4位 | 4位 | 112位 | | 11111111 | 标志 | 范围 | 组ID | ``` **标志字段**: - 000T: - T=0:永久分配的组播地址 - T=1:临时组播地址 **范围字段**: - 0:保留 - 1:节点本地范围 - 2:链路本地范围 - 5:站点本地范围 - 8:组织本地范围 - E:全球范围 ### 2.3 组播MAC地址 **IPv4组播MAC地址**: - 前缀:01-00-5E - 后23位:来自组播IP地址的低23位 **例子**: - 组播IP:224.128.64.32 - 二进制:11100000.10000000.01000000.00100000 - 取低23位:0000000.01000000.00100000 - 组播MAC:01-00-5E-00-40-20 **注意**: - 32个IP组播地址映射到同一个MAC地址 - 需要上层协议过滤 --- ## 三、IGMP(Internet Group Management Protocol) ### 3.1 IGMP概述 **IGMP**: - Internet组管理协议 - 用于主机和本地路由器之间的组播组成员关系管理 - 运行在IP层之上 ### 3.2 IGMP版本 **IGMPv1**: - 基本的组成员关系报告 - 没有离开组的消息 - 路由器使用超时机制 **IGMPv2**: - 增加离开组消息 - 增加特定组查询 - 支持组播路由器选举 **IGMPv3**: - 支持源特定组播(SSM) - 可以指定接收或不接收特定源的组播 ### 3.3 IGMPv2报文类型 **成员关系报告(Membership Report)**: - 主机加入组播组时发送 - 响应路由器查询 **离开组消息(Leave Group)**: - 主机离开组播组时发送 **通用组查询(General Query)**: - 路由器周期性发送 - 查询所有组播组 **特定组查询(Group-Specific Query)**: - 收到离开组消息后发送 - 查询特定组播组 ### 3.4 IGMPv2工作流程 **加入组播组**: 1. 主机发送IGMP成员关系报告 2. 路由器记录该接口有组成员 3. 开始转发该组播组的数据 **离开组播组**: 1. 主机发送IGMP离开组消息 2. 路由器发送特定组查询 3. 如果没有其他成员报告,停止转发 **路由器查询**: 1. 路由器周期性发送通用组查询 2. 主机响应成员关系报告 3. 路由器更新组成员信息 ### 3.5 IGMP Snooping **概念**: - 交换机监听IGMP报文 - 学习组播组成员所在的端口 - 只向有组成员的端口转发组播数据 **优点**: - 减少组播流量 - 提高网络效率 --- ## 四、组播路由协议 ### 4.1 组播路由的挑战 **问题**: - 组成员动态变化 - 需要构建组播分发树 - 避免环路 - 高效复制数据 **解决方案**: - 组播路由协议 - 构建组播分发树 ### 4.2 组播分发树 **源树(最短路径树,SPT)**: - 以组播源为根的树 - 每个源一个树 - 路径最短 - 状态多 **共享树(Rendezvous Point Tree,RPT)**: - 以RP(汇聚点)为根的树 - 多个源共享一个树 - 路径可能不是最短 - 状态少 ### 4.3 组播路由协议类型 **密集模式(Dense Mode)**: - 假设组成员密集分布 - 先泛洪,后剪枝 - 适合组成员多的场景 - 协议:DVMRP、PIM-DM **稀疏模式(Sparse Mode)**: - 假设组成员稀疏分布 - 只向有成员的方向发送 - 适合组成员少的场景 - 协议:PIM-SM、CBT ### 4.4 PIM(Protocol Independent Multicast) **PIM-DM(Dense Mode)**: - 使用源树 - 泛洪-剪枝机制 - 适合小规模、组成员多的网络 **PIM-SM(Sparse Mode)**: - 使用共享树和源树 - 需要RP - 适合大规模、组成员少的网络 **工作流程(PIM-SM)**: 1. 接收者通过IGMP加入组播组 2. 路由器向RP方向发送加入消息 3. 构建共享树(RPT) 4. 源向RP注册 5. 数据沿RPT发送到接收者 6. 接收者可以切换到源树(SPT) ### 4.5 组播路由协议比较 | 协议 | 模式 | 树类型 | 特点 | |-----|------|--------|------| | DVMRP | 密集 | 源树 | 使用隧道 | | MOSPF | 密集 | 源树 | 基于OSPF | | CBT | 稀疏 | 共享树 | 使用核心 | | PIM-DM | 密集 | 源树 | 协议无关 | | PIM-SM | 稀疏 | 共享+源树 | 协议无关,最常用 | --- ## 五、组播地址分配 ### 5.1 静态分配 - 管理员手动分配 - 适合小规模网络 ### 5.2 动态分配 **GLOP地址**: - 233.x.x.x - x.x来自AS号 **动态组播地址分配协议**: - MADCAP - 自动分配组播地址 --- ## 六、考研重点 1. **IP组播的概念**: - 什么是组播 - 与单播、广播的比较 - 优点和应用场景 2. **组播地址**: - IPv4组播地址范围 - 组播地址分类 - IPv6组播地址 - 组播MAC地址映射 3. **IGMP**: - 概念和作用 - IGMPv1、v2、v3的特点 - IGMPv2报文类型 - 工作流程 - IGMP Snooping 4. **组播路由协议**: - 组播分发树:源树、共享树 - 密集模式和稀疏模式 - PIM-DM和PIM-SM - 工作流程 5. **组播地址分配** --- *下一节:4.7 移动IP*