1. IP Multicast(组播)特征
- 组播实现在 IP 网络中点到多点的高效传输,绝大部分的组播应用,都不需要接收流量的设备对数据进行确认
- 组播是把相同的数据,在每个需要流经的链路上只发送一份
- 组播源使用目的 IP 地址为组播地址发送组播流量(确保只发送一次数据),需要接收流量的终端都会侦听一个相同组播组的组播 IP 地址(终端的共同特征)
- 组播流量通常是持续的服务
- 组播的角色分类(组播流就是组播的流量)
- 组播源:产生组播流的设备(树根)
- 组播接收者(主机)/组播组成员:需要接受到组播流量的设备[侦听组播组]
- 组播路由器:负责转发组播流量的设备
- 组播源连接的路由器称为第一跳路由器
- 组播的优势
- 降低网络流量、减轻硬件负荷[提高效率]
- 减少冗余流量、节约网络带宽、降低网络负载[优化性能]
- 可以多点应用[分布式应用]
- 组播的应用
- 多媒体
- 培训、联合作业场合的通信
- 数据仓库、金融应用
- 任何 “点到多点” 的数据发布应用
- 组播模型
- ASM(Any-Source Multicast):任意源组播[只要是组播流量,并且发送到终端所在组就接收]
- SFM(Source-Filtered Multicast):源过滤组播[在任意源组播的基础上,添加了允许或禁止来自某些组播源的报文]
- SSM(Source-Specific Multicast):特定源组播[只有特定的源发送的流量,终端才接收]
- 组播协议
- IGMP(域内):运行在组播的接收者和最后一跳路由器(叶路由器)之间
- PIM(域内):运行在组播路由器之间
- MSDP(域内/域间)
- MBGP(域间)
- 不同的组播流通过组播 IP 地址区分,「其中 D 类 IP 地址(组播地址)没有掩码」。并且不能配置在设备的 NIC 上
- 对于 IP 组播产生的数据帧,交换机有两种转发行为
- 具备 IGMP 监听能力的交换机:泛洪
- 不具备 IGMP 监听能力的交换机:按需转发
- 组播更关系数据从哪里来(更关心 “源”,因为利用 “反向路径转发检查 RPF” 防环)
- 组播路由和单播路由是相反的
组播 IP 对应需要对应组播 MAC 完成数据封装
1)组播 IP 地址
- IP 地址中的二进制前 4bit 固定为 “1110” 就是 D 类组播地址
- 11100000 = 224,组播地址的起始 IP 前缀
- 11101111 = 239,组播地址的结束 IP 前缀
| D 类组播地址范围 | 作用 | 生效范围 |
| —- | —- | —- |
| 224.0.0.0 ~ 224.0.0.255 | 协议预留的永久组播地址 | / |
| 224.0.1.0 ~ 231.255.255.255
233.0.0.0 ~ 238.255.255.255 | ASM 临时组地址 | 全网范围内有效(公网地址) | | 232.0.0.0 ~ 232.255.255.255 | SSM 临时组地址 | 全网范围内有效(公网地址) | | 239.0.0.0 ~ 239.255.255.255 | ASM 临时组地址 | 本地管理组播地址(私有地址) |
2)组播 MAC 地址和 IP 地址的映射
- 组播 MAC 是第一字节的第八位 = 1
- 组播 MAC 地址的高 24bit 为
0x01005e
,第 25bit 固定为 0,低 23bit 为组播 IP 地址的低 23bit
- IPv4 组播地址的前 4 位是固定的
1110
,对应组播 MAC 地址的高 25 位。后 28 位中只有低 23 位被映射到 MAC 地址,因此丢失了 5 位的地址信息,直接会导致有 32 个 IPv4 组播地址映射到同一 MAC 地址上。转发时候就会导致乱套(组播 MAC 地址相同就认为是相同流量了)3)IPv6 组播地址与 MAC 地址的映射关系
- 以太网环境中,IPv6 组播报文必须执行以太网封装
- IPv6 组播报文的目的 IPv6 地址和 MAC 地址都需要是组播,需要对应
- IPv6 组播 MAC 地址前缀「
**33-33**
」是为 IPv6 组播预留的,「后 32 位 MAC 地址从对应的 IPv6 组播 IP 的后 32bit 拷贝过来的」
用来描述 IP 组播报文在网络中所经过的路径(组播分发树),我们将整个组播流量流经的链路以及其中的所有节点统称为组播分发树
- 组播分发树有两种方式形成
- 从叶路由器向树根形成树形结构
- 从树根向叶路由器形成树形结构(STP)
- 分发树的基本类型
- SPT 组播路由表(组播路由器转发组播流量所需要的关键元素):
- RP(汇聚点):全网所有的组播路由器都知道该点的所在位置(RP 是共享树的树根)
- 第一跳路由器和叶路由器之间建立 SPT 后,则组播流量就可以正常转发了
- 第一跳路由器支持树根在哪
- 叶路由器知道接收者在哪
- 共享树的形成(反向形成共享树—->组播流量的反向形成的共享树)
- 接收者通过 IGMP 通知叶路由器自己需要哪些组播流量
- 叶路由器向 RP 方向做 PRF 检查(叶路由器以及知道 RP 的位置),逐跳向上游加入组播组
- RPT 组播路由表(与 SPT 相比,没有 S):
反向转发路径检查 PRF 是「组播基本防环机制和避免接收到重复的组播流」
- 依靠单播反向转发路径执行检查,以确保组播数据转发没有环路(理想状态)
- 组播路由器收到组播流后,只有确认这个组播流是从自身与上游路由器(单播路由的出接口)相连的接口收到,才进行转发,否则丢弃自身