组播核心知识

IGMP【因特网组管理协议】

作用:组播网络根据IGMP消息感知组播组成员所在接口,以及组成员加组信息

  • IGMP组表项是由用户主机发送的IGMP加入报文触发创建的,创建相应(*,G)表项。
  • IGMP路由表项的作用主要是用来扩展组播路由表项的出接口。
  • 在配置组播协议时,需要注意运行IGMP高版本的交换机可以识别低版本的成员报告,但是低版本的交换机不能识别高版本的成员报告。为了保证IGMP的正常运行,建议在交换机上配置和成员主机相同或高于成员主机的版本

image-20241205162202955

IGMPv1:主要基于查询和响应机制完成组播组管

报文:普遍组查询报文、成员关系报告报文

IGMPv2:增加了离开组机制、查询器选举机制。IP地址最小的路由器成为查询器。

报文:(新增)成员离开报文(Leave)【目的地址224.0.0.2】、特定组查询报文

IGMPv3:新增了特定源组查询报文(Group-and-Source-Specific Query),关系报告报文不仅包含主机想要加入的组播组,而且包含主机想要接收来自哪些组播源的数据。没有定义专门的成员离开报文,成员离开通过特定类型的报告报文来传达。

报文:普遍组查询报文、特定组查询报文、特定源组查询报文、成员关系报告报文

三个版本均支持的特性:成员报告报文普遍组查询报文

IGMP Snooping

作用:二层听三层,实现组播数据在数据链路层的转发和控制。控制组播流量在以太网的泛洪范围,避免不同组的组播流量被别组成员接收。

IGMP Snooping需要监听IGMP报文才能决定端口角色,进而指导转发。

只有收到IGMP Report报文后的接口,二层组播设备会将其标识为动态成员端口。

IGMP SSM Mapping

作用:通过静态的将组播源与组播组进行绑定,兼容SSM网络。

IGMP Proxy

作用:可减少IGMP查询器接收IGMP成员关系报告/离开报文的数量,减轻IGMP查询器压力

功能:

  1. 聚合:成员关系报告/离开报文汇聚后统一上送给IGMP查询器
  2. 代理:代理IGMP查询器向成员主机发送查询报文,维护组成员关系,基于组成员关系进行组播转发。

对于报告行为,如无此组信息,则需要上传至查询器端,否则丢弃;

对于查询行为,一般视作丢弃,因为proxy本身可以完成。

RPF【反向路径转发】

作用:用于确定设备上唯一的组播流量入接口

image-20241205162243751

检查逻辑:反向查询源IP路由,检查出入端口是否一致。

RPF路由可以从单播路由、MBGP路由、组播静态路由中选举产生。

如果这三种路由均存在,先优先自身的路由,再进行统一规则优选,规则如下:

  • 如果配置了按照最长匹配选择路由,则从这三条路由中选出最长匹配的那条路由;
  • 如果这三条路由的掩码一样,则选择优先级最高的那条路由;
  • 如果它们的优先级也相同,则按照组播静态路由、MBGP路由、单播路由的顺序进行选择。

PIM【协议无关组播】

作用:构建AS域间的组播分发树

目前常用版本是PIMv2,PIM报文直接封装在IP报文中,协议号为103。

PIMv2组播地址为224.0.0.13

PIM-DM【PIM密集模式】

报文类型如下:

image-20241205154415164

工作机制:

  • 邻居发现机制:形成组播分发树的前提(组播转发路径只能在PIM邻居之间建立)
  • 扩散机制:组播数据包向所有的PIM邻居泛洪,同时组播路由器产生组播路由表项。
  • 断言机制:当组播转发过程中存在多路访问网络,则需要选举出一个组播转发路由器,避免重复组播报文。
  • 剪枝机制:如果组播路由器下没有组成员,则将源到该组播路由器的组播转发路径剪枝。
  • 状态刷新机制:使下行接口将一直处于抑制转发状态,防止恢复转发
  • 嫁接机制:使有新组成员加入的网段快速得到组播报文

PIM-SM【PIM稀疏模式】

针对接受者主机,分成两大类组播服务模型。

报文类型如下:
image-20241205154016577

PIM-SM(ASM)模型

ASM模型要求组地址必须整个组播网络中唯一,即同一时刻一个ASM地址只能被一种组播应用使用。

PIM-SM(ASM)模型形成组播分发树的方法是:

  1. 将组成员的位置事先告知某台组播路由器(汇聚点,Rendezvous Point,RP),形成RPT(RP Tree)。
  2. 组播源在发送组播数据时,组播网络先将组播数据发送至RP,然后由RP再将组播数据转发给组成员。
  3. 对于部分次优的组播转发路径,PIM-SM(ASM)能自动优化为最优路径(SPT)。

简而言之,利用RP这个代理进行间接数据组播。


RP与BSR

RP是代理人。

在PIM-SM模式下,组播源首先将数据发送到RP,然后从RP转发这些数据到加入该组播组的接收者。

BSR用来创建RP。

BSR是自动发现和分发RP信息的工具。通过BSR机制,PIM路由器可以知道负责某个组播组的RP是哪个。

Tips:

  • 1个RP可以同时服务于多个组播组,但一个组播组只能唯一对应一个RP。
  • 1台设备可以同时充当C-RP和C-BSR。

PIM-SM(SSM)模型

SSM模型对组地址不再要求全网唯一,只需要每个组播源保持唯一。这里的“唯一”指的是同一个源上不同的组播应用必须使用不同的SSM地址来区分。不同的源之间可以使用相同的组地址,因为SSM模型中针对每一个(源,组)信息都会生成表项。

PIM-SM(SSM)模型加入组播组以后,主机只会收到指定源发送到该组的数据。

  • 用于解决IGMPv1与IGMPv2的报文中均无法携带组播源的信息的问题。不处理IGMPv3。
  • SSM组播组的地址是232.0.0.0~232.255.255.255
  • 无需维护RP、无需构建RPT、无需注册组播源,可以直接在组播源与组成员之间建立SPT。
  • PIM-SM (SSM)模型形成的组播分发树会一直存在(周期Join报文),不会因为没有组播流量而消失。
  • 工作原理:先判断组播组G在ASM或SSM范围,后判断SSM Mapping规则。

IPV4与IPV6

IPv4组播MAC地址

D类地址为IPv4组播地址,范围是从224.0.0.0到239.255.255.255【1110xxxx.】,用于标识组播组,且仅能作为组播报文的目的地址使用,不能作为源地址使用。

IANA规定,IPv4组播MAC地址:

IPv4组播MAC地址的高24bit为0x01005E,第25bit为0,低23bit为IPv4组播地址的低23bit映射

组播地址细分,记忆方法:

头路由,尾本地,232对SSM,其余ASM

image-20241205161522483


IPv6组播MAC地址

在以太网链路上发送IPv6组播数据包时,对应的MAC地址是0x3333-A-A-A-A,其中
A-A-A-A是组播IP地址的后32bit的直接映射

组播分发树

通过PIM形成的组播分发树主要分为以下两种:

SPT(Shortest Path Tree):

以组播源为根,组播组成员为叶子的组播分发树,在PIM-DM与PIM-SM中均有使用。

RPT(RP Tree):

以RP(Rendezvous Point)为根,组播组成员为叶子的组播分发树),在PIM-SM中使用。