IGMP原理与配置
IGMP:因特网组管理协议,运行在成员端网络,最后一跳设备到组播组成员之间,用来感知组成员状态,以及建立维护组成员表项
工作在网络层,IP协议为2
现网IGMP存在三个版本:IGMPv1,IGMPv2,IGMPv3
目前常用IGMPv2版本,华为设备默认IGMPv2版本
IGMP协议能够建立IGMP组成员表项和IGMP组成员表项(*,G)协助PIM生成组播路由表项
—————————————————————————————IGMPv1
报文:
普遍组查询报文:IGMP查询器周期性(60s)发送该报文,用来查询该接口是否存在组成员,以及成员加入的组播组信息
成员关系报告报文:组成员通过发送该报文来通知查询器自己加入组播组,并且携带加入的组播组信息
字段:
Version:IGMP版本
Type:报文类型
Unused:未使用,保留字段
Checksum:校验和字段
Group address:组播组地址字段
如果是普遍组查询报文该字段固定为0.0.0.0
如果是成员关系报告报文,该字段为成员加入的组播组地址
普遍组查询报文原理:
1、 IGMP查询器会周期性(60S)朝224.0.0.1发送普遍组查询报文
其中组地址字段为0.0.0.0,用来查询该接口下是否存在组成员
2、 组成员收到查询报文后,会朝224.0.0.1回应成员关系报告报文
其中组播组地址字段为自己加入的组播组,用来通告自己加入的组播组信息
3、 IGMP查询器收到成员关系报告报文后,建立对应的IGMP组成员表项(组播组地址和接口),表项老化时间默认为130s
IGMP组成员表项老化定时器=周期性查询时间(60s)x健壮系数(2)+最大报告响应时间(10s)
成员关系报告抑制:问题:
如果一个网段下存在多台相同组播组的成员,那么查询器在查询时会收到该组播组多个组成员的报告报文
但是实际上查询器并不关心该组播组成员数量,只关心是否存在组播组成员,无论组播组存在多少成员
IGMP查询器都是正常发送组播流量,收到多个报告报文,反而浪费资源
作用:
通过成员关系抑制机制,让一个组播组只由一个组成员进行报告报文的响应,节约网络资源
原理:
组播组成员收到查询报文后,会启动最大响应时间定时器,0-10S随机值,定时器超时后会朝224.0.0.1发送成员关系报告报文进行响应
携带加入的组播组地址,由于组播发送给224.0.0.1,所以网络中其他组播组成员也能收到该报文,收到后检查该报文加入的组播组和本设备加入的组播组是否相同
相同则说明其它成员已经进行响应,取消最大响应时间定时器,不再进行响应
不同则和自己没有关系,继续等待定时器老化进行报告响应
成员加组主动发送报告:
成员加入组播组时,会立即主动发送成员关系报告报文,无需等待查询器的周期查询,加快组成员接收组播流量的时间
IGMP查询器选举:
问题:
如果网络中存在多台运行IGMP的设备,每台设备都会周期性发送查询报文,浪费网络资源
作用:
通过在网络中进行IGMP查询器选举,选举出唯一一台设备来进行查询报文的发送,该设备就叫IGMP查询器
选举:
IGMPv1自身并不支持IGMP查询器的选举,直接将PIM的DR充当IGMPv1查询器
备注:
IGMP查询器负责周期性发送查询报文,但是网络中所有 IGMP设备,设备都会建立对应的IGMP组成员表项
组成员离开机制:静默离开
IGMPv1没有专门的离开报文和离开机制,成员离开采取静默离开,不发送任何报文
IGMP查询器只能等待表项130s老化才能感知到成员的离开,在该时间内组播组流量还在正常转发,造成资源浪费
查询器需要检测机制发现组成员的离组:普遍组查询间隔时间60S x 健壮系数(2)+最大响应时间10S=130S
查询器在130S内未收到关于组播组成员的报告报文,则认为该组不存在接收者,则删除IGMP组成员表,IGMP路由表