留人不住,醉解兰舟去。一棹碧涛春水路,过尽晓莺啼处。
IGMP (Internet 组管理协议)
- Internet 组管理协议称为 IGMP 协议(Internet Group Management Protocol),是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间。IGMP 协议共有三个版本,即 IGMPv1、v2 和 v3。
- TCP/IP 协议族中负责 IP 组播成员管理的协议,用来在 IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
IGMP 功能
- 管理主机加入和离开组播组
- 维护本地组播组信息表
IGMP 工作机制
- 接收者主机向所在的共享网络报告组成员关系。
- 查询器周期性地向该共享网段发送组成员查询消息。
- 接收者主机接收到查询消息后进行响应以报告组成员关系。
- 网段中的组播路由器依据接收到的响应来刷新组成员的存在信息。
IGMPv1
- 定义了基本的组成员查询和报告过程。
- 主机加入
- 路由器向开启了 IGMP 的端口发送查询报文,询问该接口下有没有组播接收者
- 收到查询报文的主机,如果希望接收某个组的组播,则向路由器回复 report 报文,把希望加入的组播组地址通告给路由器;如果不希望接收任何组播,则不回复
- 收到 report 报文后,路由器就会在本地建立组播组信息表,记录该组的(*、G)表项,后续将会转发该组组播
- 主机离开
- 默默离开
- 当路由器在后续的查询报文中没有收到某个组的 Report 报文时,路由器将会把该组的(*、G)表项删除,不再转发该组组播
- 查询器选举
- 一个网段中只能有一个路由器负责处理组播,该路由器就是查询器
- IGMPv1 没有查询器选举机制,只能依靠上层组播路由协议选举
- 成员报告抑制机制
- 主机以组播 224.0.0.1 的地址发送 report 报文,该报文也会发送至其他主机
- 收到该 report 报文的主机会启动计时器(10 秒);在该计时器时间内,如果本机也希望加入该组播组,不会重复发送 report 报文
- 主机希望加入某个组播组,不用等到路由器发送查询报文,会直接向路由器发送 Report 报文
IGMPv2
- 在 IGMPv1 的基础上添加了组成员快速离开的机制。
- 主机加入
- 路由器会周期性向开启了 IGMP 的接口发送普遍查询报文
- 其他和 IGMPv1 一致
- 主机离开
- 主机主动向路由器发送 Leave 报文,通告希望离开的组播组地址
- 路由器收到 leave 报文后,会发送指定组查询报文,询问该网段内是否还有主机希望接收该组的组播
- 如网段内还有该组接收者,则该接收者会向路由器回复 membership-report 报文,通告路由器本机还希望接收该组播;如果不希望接收该组播,则不回复
- 如接收到 membership-report 报文,则不对组播组信息表做任何操作;如没有接收到任何报文,则删除该组播组信息
- 查询器选举
- 自动选举
- IP 地址小的优先
- 成员报告抑制机制
- 与 IGMPv1 一致
IGMPv3
- 主要功能是成员可以指定接收或指定不接收某些组播源的报文。
- 主机加入
- 路由器发送普遍查询报文
- 收到普遍查询报文的主机,如果希望加入某个组播组,就会发送 membership-report 报文;报文格式会包含组地址、源过滤模式、源列表
- 路由器收到 report 报文后,会根据报文的汇总信息,生成相应的组播信息表项
- 主机离开
- 离开某个组播源
- 主动向路由器发送 membership-report 报文、报文会包含希望变更的组播组地址、离开的源地址
- 路由器收到该报文后,会发送指定组查询报文,询问是否还有其他主机希望继续接受该组播源在该组播地址发送的组播
- 如果未收到回复,路由器则在组状态中删除该组播源;如果收到,则不做任何操作
- 离开某个组播组
主动向路由器发送 membership-report 报文;报文包含希望离开的组播组和 TO_IN(NULL)消息
路由器收到该报文,会发送指定组查询报文,询问是否还有其他主机希望继续接收该组播
如果未收到回复,路由器则删除该组播组的信息记录;如果收到,则不做任何操作
取消成员报告抑制机制