组播基础-2-IGMP协议

IGMP

运行于主机和路由器之间

因特网组管理协议,TCP/IP 协议族中负责 IP 组播成员管理的协议,用来在接收者与其他直接相邻的组播路由器之间建立、维护组播组成员关系

  • 负责组播成员管理,运行在主机和组播路由器之间
  • 主机侧:通过IGMP向路由器通告组成员关系
  • 路由器侧:通过IGMP协议维护组成员关系

- 所有IGMP版本都支持ASM模型 - IGMPv3可以直接应用于SSM模型,而 IGMPv1 和 IGMPv2 则需要 SSM-Mapping 技术的支持 - 运行 IGMP 高版本的路由器可以识别低版本的成员报告(向前兼容)



组播组管理协议工作机制:

  • 主机加入或离开组播组
  • 路由器维护组播组
  • 查询器选举
  • 成员报告抑制



IGMPv1

定义基本的组成员查询和报告过程

类型

  • 成员关系查询 0x11
  • 成员关系查询 0x12

组地址

  • 当一个成员关系报告正被发送时,组地址字段包含组播地址
  • 当用于成员关系查询时,本字段为0,并被主机忽略

路由器周期性发送成员关系查询,默认查询周期为 60s,

成员关系报告的发送可以被动发送也可主动发送
被动发送:主机收到成员关系查询消息后,发送成员关系报告
主动发送:主机主动发送成员关系报告

工作机制

  • 普遍组查询与响应
  • 响应抑制机制(当发现已经有人向自己感兴趣的组发送过数据之后,本地这边就不会再次发送报告)

每个收到查询的主机会启动一个计时器,默认0——10秒随机值,超时后发送报告

静默离开

记时130秒,即组成员关系超时时间=IGMP普遍查询消息发送间隔 x 健壮系数 + 最大查询响应时间

查询器选举

查询器依靠组播路由协议PIM,PIM中选择的DR会充当IGMPv1里面的查询器



IGMPv2

IGMPv2为默认版本,在IGMPv1的基础上添加了查询器选举和离开组机制

类型

  • 成员关系查询 0x11
    常规查询:用于确定哪些组播组有效,该组播组是否还有成员在使用,常规查询地址全零表示
    指定组查询:用于查询特定的组播组是否还有组成员,在一台设备发送离开报文后进行特定查询该组是否还有使用者两次
  • 版本2的成员关闭报告 0x16;版本1的成员关系报告 0x12
  • 离开组信息 0x17

组地址

  • 在成员查询消息中,发送一个常规查询时组地址设为0,当发送一个特定组查询时,则应设置为组的地址
  • 在成员报告或离开组的消息中,组的地址保留了要报告或要离开的地址

IGMPv2增加了最大响应时间字段,以动态地调整主机对组查询报文的响应时间

工作机制

  • 独立的查询器选举机制
  • 存在多个组播源的时候IP地址小的获胜,成为查询者,进行普遍组查询



IGMPv3

成员可以指定接受或不接受某个组播源的报文

  • 服务于 SSM 模型
  • 增加了主机的控制能力,对组播源进行过滤
  • 取消了成员报告抑制机制
  • 过滤模式包含 Include 和 Exclude

工作机制

  • 周期性地向 224.0.0.1 发送普通查询
  • 接受端发送成员报告,指出希望加入或拒绝某些组播发送的数据
  • 独立的查询器选举机制
  • 存在多个组播源的时候IP地址小的获胜,成为查询者,进行普遍组查询

IGMPv3主机发送类型

组数和地址数为1

  • Mode Is Include:接收从指定源列表发往该组播组的数据
  • Mode Is Exclude:不接收源地址列表中包含的源发往该组的组播数据
  • Change To Include Mode:表示组播组与源列表之间的对应方式由EXCLUDE转换到INCLUDE
  • Change To Exclude Mode:表示组播组与源列表之间的对应方式由INCLUDE转换到EXCLUDE
  • Allow New Source:现有基础上,还希望从某些组播源接收组播数据
  • Block Old Sources:现有基础上,不再希望从某些组播源接收组播数据

特定源组查询

无离开报文,通过这种方式进行离开

  • 针对某个源某个组进行特定组的查询,确保组还有成员在使用



IGMP总结

机制IGMPv1IGMPv2IGMPv3
查询器选举依靠其他协议自己选举自己选举
普遍组查询支持支持支持
成员报告报文支持支持支持
特定组查询报文不支持支持支持
成员离开方式静默离开主动发送离开报文未定义专门的离开报文,通过特定类型的报告报文传达
特定源、组查询报文不支持不支持支持
指定组播源不支持不支持支持
可识别协议报文IGMPv1IGMPv1 IGMPv2IGMPv1 IGMPv2 IGMPv3
ASM模型支持支持支持
SSM模型需要IGMP Mapping需要IGMP Mapping支持



IGMP Snooping

组播数据在二层被泛洪

  • 网络资源浪费
  • 存在安全隐患

IGMP Snooping概述

  • 解决组播报文在二层泛洪的问题
  • 运行在数据链路层,是二层交换机上的组播约束机制,用于管理和控制组播组
  • 通过监听 IGMP 报文,建立组播MAC地址表

端口角色

路由器端口:接受组播数据----上游接口

  • 收到源地址不为 0.0.0.0 的 IGMP 普遍组查询报文或PIM Hello 报文的接口都将被叫做动态路由器端口
  • 手工配置的路由器端口叫做静态路由器端口

成员端口:发送组播数据----下游接口

  • 收到 IGMP Report 报文的接口,叫做动态成员端口
  • 手动配置的成员叫做静态成员端口

工作原理

启用 IGMP Snooping 机制后,查询响应仅向路由器接口转发

模拟器环境会出现BUG,报告可以,但是普遍组查询和离开报文会被隔离,这种情况要想实现 IGMP 操作就需要在组管理设备上配置静态的 IGMP表项

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值