IGMP的基础
admin
2024-03-25 15:31:03
0次
IGMP
IGMP:因特网组管理协议
IGMP版本
IGMPv1
-
只有两种报文类型
- 普遍组查询报文
- 目的IP地址为224.0.0.1(所有节点)都接收
- 由查询器(最后一跳)周期发送(60s一次)
- 用于检查是否存在组成员和维护组成员关系(IGMP组表项)
- 成员关系报告报文(report):
- 目的IP地址为想要加入的或者所处的组播组地址
- 当PC想要加入某个组播组时,主动组播发送report报文,请求加入该组播组;
- 当PC接收到不变的查询报文,回复report报文
查询器:负责发送普遍组查询报文
- IGMPv1不支持查询器的选举,有其他组播路由协议选举的DR成为查询器
-
报文参数:两种报文的格式一致
- version:4bit,版本号,此处为1
- type:报文的类型
- 0x11:普遍组查询报文
- 0x12:成员关系报告报文
- unsed:8bit,保留字段
- checksum:2B,校验和
- group address:4B,组地址
- 在qurey(查询报文)中为0.0.0.0
- 在report报文中为想要加入的组播组地址
-
响应抑制机制:
- 作用:减少重复协议报文泛滥,减轻查询器的负担
- 工作机制
- 当组播组成员接收到query报文时,启动最大响应时间计时器,时间为0~10s之间的随机值,如果该组存在其他多个组成员,计时器先超时的先发送report报文,该组中其他组成员接收到该report报文,关闭计时器,不在发送report报文
- last-reporter:最后一个通告者,谁先发送report谁就是last report
-
缺陷:最大响应时间不能修改,颗粒度太大
-
静默离开
- 接收者离开组播组,不发送任何报文通知查询器,当接收到查询器发送的query报文时,也不会响应,当查询器在130s后还没有接收到该组的report报文,则认为该组播组不存在组成员,则将对应的组播组从表项中删除
-
总结
- IGMPv1的缺陷:
- 没有查询器的选举机制,需要依赖其他组播路由协议选举
- 最大响应时间10s,不能修改,颗粒度太大
- 静默离开在130s内查询器还会不断向该接口发送组播流量,从而造成资源浪费
IGMPv2
- IGMPv2兼容IGMPv1
- IGMPv2对IGMPv1的改进
- 成员离组的改进
- 当IGMPv2的主机想要离开某个组播组时,直接发送离组报文(leave),目的IP地址为224.0.0.2,leave报文中携带组播组地址为想要离开的组播组地址
- 当查询器接收到leave报文后:
- 如果该报文时last reporter发送的,则发送2个特定组查询报文,时间间隔缺省为1s,目的IP地址为接收者想要离开的组播组地址
- 如果不是last reporter发送的,则不处罚特定组查询报文,不清除IGMP组表项
- 新增了两种报文
- leave报文:离组报文,组成员朝查询器发送离组报文
- 特定组查询报文::查询器朝组成员发送的,目的地址为组成员想要离开的组播组地址
- 组表项老化方式:
- 130s内没有接收到report报文,则自动老化
- last reporter发送leave报文,触发特定组查询报文,2s后清除IGMP表项
- 报文参数的变化
- 去掉了version;华为默认IGMP为2
- type:IGMPv2的报文类型,1B
- 0x11:普遍组查询报文/特定组查询报文
- 0x12:IGMPv1成员关系报告报文
- 0x16:IGMPv2成员关系报告报文
- 0x17:成员离开报文(leave报文)
- MAX response time:最大的响应时间,IB
- 普遍查询报文:默认10.0s,单位0.1s,最大可以修改为25.0s
- 特定组查询报文:默认1.0s
- checksum:校验和
- group address:4B,组地址
- 普遍查询报文中,为0.0.0.0
- 特定组查询报文中,为想要查询的组播组地址
- 成员关系报告报文中,为想要加入的组播组地址
- leave报文中,为想要离开的组播组地址
- 查询器的选举机制的改进
- 作用:为了避免网络中重复的组播流量的发送,建立和维护IGMP组表项,转发组播流
- IGMPv2依靠自身支持选举查询器:
- 当多路访问网络中存在多个网关设备时,初期都认为主机是查询器,互相发送普遍组查询报文(224.0.0.1),当设备接收到其他路由器发送的查询报文后,开始查询器的选举,IP地址小的成为查询器,后续该网络中的组播流量以及查询报文都由查询器负责转发
- IGMPv2的不足:在IGMPv1与IGMPv2报文中无法携带组播源信息,无法支持SSM模型
IGMPv3
-
IGMPv3可以兼容IGMPv1和IGMPv2
-
与IGMPv2比较:
- 查询器选举机制一致
- 查询报文分为三种
- 普遍组查询报文:与V1、v2作用一样
- 特定组查询报文:与V2作用一样
- 特定源组查询报文:新增的报文,查询该组成员是否愿意接受特定源发送的组播流量
- 没有报告响应抑制
- 因为加入同一个组播组的组成员可能期望接收的组播源不同
- 没有专门的离组报文,但是可以使用特殊的成员关系报告报文(6种)实现离组
- include
- exclude
- changge to include mode
- change to exclude mode
- allow new source
- block old source
-
IGMPv3的报文参数
-
查询报文
- type:IGMPv3的报文类型
- 0x11:普遍组查询报文/特定组查询报文/特定源组查询报文
- max response time:最大响应时间,默认10.0s
- checksum:校验和
- group address:
- 普遍查询报文中,为0.0.0.0
- 特定组查询报文中,为想要查询的组播组地址
- 特定组和特定源组查询报文种,为想要查询的组播组地址
- number of source:携带的组播源地址数量
- source address:组播源地址
-
成员关系报告报文
IGMP各版本之间的差异
-
| 机制 | IGMPv1 | IGMPv2 | IGMPv3 |
|---|
| 查询器选举 | 依靠其他协议 | 自己选举(选择IP地址小的) | 自己选举(选择IP地址小的) |
| 成员离开方式 | 静默离开 | 主动发送leave报文 | 主动发送离开报文(特别的成员关系报告报文) |
| 特定组查询 | 不支持 | 支持 | 支持 |
| 特定源组查询 | 不支持 | 不支持 | 支持 |
| 兼容性 | | IGMPv1 | IGMPv1和IGMPv2 |
-
全局开启组播路由功能
-
连接组播源的接口使能PIM SM
-
连接组成员的接口 开启IGMP,再选择版本
相关内容