IGMP 协议详解

基本概念

1、组播地址范围


IP 组播常见模式分为 ASM(任意组播源) 与 SSM(指定组播源) 模式

2、组播 MAC 地址与单播 MAC 地址


IPv4 的组播 MAC 地址 (48bit) 前 24 位为 0x01005e,第 25 位固定为 0,剩余 23 位可任意使用

3、组播 IPv4 到 MAC 的映射

组播 IP 前 4 位默认 1110,之后 5 位映射可丢弃,低 23 位映射为组播 mac 地址的低 23 位。导致 32 个 IP 地址映射为同一个组播 mac 地址

4、什么是 IGMP

IGMP(Internet Group Management Protocol) 因特网组管理协议,是 TCP/IP 协议族中负责 IP 组播成员管理的协议,用来在接收者和与其直接相邻的组播路由器之间建立、维护组播组成员关系。

5、人工配置组播信息的缺陷

由于接收者需要声明自己要接受哪个组的数据,路由器需了解哪些组播组存在的接收者。所有人工配置会导致实时性差、灵活性差、工作量大易出错等问题。

IGMPv1

1、IGMP 作用

运行于主机与组播路由器之间
主机侧: 通过 IGMP 协议向路由器通告组成员关系
路由器侧: 通过 IGMP 协议维护组成员关系

2、IGMPv1 工作机制

2.1 查询与响应


1)普遍组查询 (General Query)
询问主机想加入哪个组 (60s/ 次)
2)普遍组响应 (Report)
告诉路由器要加入哪个网络
当同一个组主机 A 监听到同一组中的主机 B 已向路由器发送 Report 后,由于路由器只需知道有主机加入该组即可,所以主机 A 便不再发送 Report,这种情况叫响应抑制机制

2.2 成员加入(主动)


当路由器为发送 General Query 消息,且新接入主机要加入组时,新接入的主机 D 主动发送 Report 请求加入组播组

2.3 组成员离开—- 静默离开 (仅 v1 存在的特性)


当路由器查询 130s 没有收到主机 A 的响应,则路由器认为 A 主机已不存在 G1 组中,A 主机静默离开 G1 组,不发送离开 Report

2.4 查询器选举 (仅 v1 存在的特性)


由于自身没有选举机制,无法依据自身协议选举,所以要通过其他中间协议 (如 PIM) 进行选举

2.5 地址结构


未使用默认时 10s,不可该变
对应静默离开时间的计算,两个路由器查询时间加该时间,(60s×2)+10s=130s

3、IGMPv2 工作机制 (最常用)

3.1 查询与响应 (与 v1 一致)

3.2 成员加入 (与 v1 一致)

3.3 组成员离开—- 主动离开


当主机 B 要离开 G2 组,主机 B 向路由器发送离开 Report,路由器向 G2 组发送两次特定组查询,确认同组内是否还有其他主机,没有收到 Report 则认为 G2 组中已没有主机

3.4 查询器选举


当路由器 B 与路由器 A 同时发送 General Query,A、B 路由器收到对方发送的查询消息,则 Router ID 小的最优先

3.5 地址结构


这里最大响应时间为 10s,可改变

4、IGMPv3 工作机制

4.1 查询与选举 (于 v1 一致)

4.2 成员加入 (与 v1 一致)

4.3 成员离开 (与 v2 一致)

4.4 查询器选举 (与 v2 一致)

4.5 针对 SSM 模型新功能

SSM(Source Specific Multicast) 指定源组播

新加入一个字段可以指定接受或者拒绝某些组播源发送的数据,IN 表示接受

5、IGMP Snooping 工作机制

1)Snooping 机制出现原因
由于组播地址在非成员 group 被泛洪,也就是当路由器接入交换机时会导致交换机将组播地址泛洪给直连的所有主机 (组播二层泛洪),造成网络资源浪费,且存在安全隐患
2)工作原理

第一步 路由器发送 Query 给主机 B、C,交由 CPU 处理,通过交换机泛洪给了所有主机
第二部 主机 A 收到 Query 后不发 Report,B、C 正常通过交换机向 CPU 发 Report,CPU 将 Report 转发给路由器
通过以上两个步骤形成二层组播转发表,记录发送给同一个组播组 MAC 地址的端口号,当路由器再次向该 group 发送消息时,则会自动只向这个组播组 MAC 地址的端口发送消息

6、IGMP 各个版本差异