问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

IGMP协议详解:IPv4组播管理核心协议

创作时间:
作者:
@小白创作中心

IGMP协议详解:IPv4组播管理核心协议

引用
CSDN
1.
https://blog.csdn.net/weixin_55299404/article/details/146347121

IGMP(Internet Group Management Protocol,互联网组管理协议)是IPv4网络中用于管理组播组成员关系的核心协议,负责在主机(接收者)和本地路由器之间传递组播组的加入/离开信息,确保路由器能够动态维护组播组的成员关系,并正确转发组播数据。

目录

  1. IGMP的核心功能
  2. IGMP版本演进
    2.1 IGMPv1(RFC 1112)
    2.2 IGMPv2(RFC 2236)
    2.3 IGMPv3(RFC 3376)
  3. IGMP工作流程
    3.1 加入组播组
    3.2 主机离开组播组
    3.3 路由器维护组成员
  4. IGMP报文格式(以IGMPv3为例)
  5. 对比总结
    5.1 IGMPv1、IGMPv2、IGMPv3 在处理主机加入的对比
    5.2 IGMPv1、IGMPv2、IGMPv3 在处理主机离开的对比
    5.3 IGMPv1、IGMPv2、IGMPv3 在成员报告抑制机制上的对比
    5.4 IGMPv1、IGMPv2、IGMPv3 在选举查询器上的对比
  6. 基本配置

1. IGMP的核心功能

  • 组播成员管理:主机通过IGMP通知路由器其希望加入或离开某个组播组。
  • 组播成员查询:路由器定期发送成员关系查询报文,确认当前活跃的组成员。
  • 组播转发控制:路由器根据组成员信息决定是否向特定网段转发组播流量。

2. IGMP版本演进

2.1 IGMPv1(RFC 1112)

  • 基本机制
  • 成员关系报告:主机发送 Membership Report 报文加入组播组。
  • 成员关系查询:路由器周期性(每60s)发送 General Query(目的地址 224.0.0.1,所有主机)查询组成员。
  • 抑制机制:主机收到其他成员向组播组发送的报告消息后,会将自己成员关系报告抑制,不发送,并且删除本地计时器随机延时响应报告(避免报文冲突)。
  • 主机离组:主机静默离开,路由器需等待超时(默认3分钟)后停止转发。仅支持组播组的加入,不支持指定特定源。

2.2 IGMPv2(RFC 2236)

  • 改进点
  • 主机离开:主机通过 Leave Group 报文(目的地址 224.0.0.2)通知路由器离开组。
  • 特定组查询:路由器可针对特定组播组发送查询(Group-Specific Query)。
  • 查询器选举:同一子网中多个路由器通过比较IP地址选出唯一查询器(Querier)。
  • 典型流程
  • 主机发送 Leave Group。路由器发送 Group-Specific Query 确认是否仍有成员。若无响应,路由器停止转发该组流量。

2.3 IGMPv3(RFC 3376)

  • 核心增强
  • 源过滤(Source Filtering):主机可指定仅接收来自特定源(Allow)或排除特定源(Block)的组播流量。
  • 支持SSM(Source-Specific Multicast):直接实现单源组播,无需依赖共享树(RPT)。
  • 报文结构优化:支持携带多个组和源的列表,提高效率。
  • 成员报告:主机报告目标IP地址为224.0.0.22 ,以方便两层交换机Snooping。
  • 报文类型
  • Membership Report:携带(组,源)的包含或排除列表。
  • General QueryGroup-Specific Query:与IGMPv2类似。

3. IGMP工作流程

3.1 加入组播组

  • 主机主动加入
  • 主机发送 Membership Report 报文(目的地址为要加入的组播地址)。
  • 路由器收到后,记录该组播组与接口的绑定关系,并开始转发数据。
  • 响应查询
  • 若路由器发送查询报文,主机需回复报告以维持组成员状态。

3.2 主机离开组播组

  • IGMPv2/v3的主机离开
  • 主机发送 Leave Group 报文(IGMPv2)或 To_Exclude{} 报告(IGMPv3)。
  • 路由器发送 Group-Specific Query 确认无其他成员后,停止转发。

3.3 路由器维护组成员

  • 定时器机制
  • 组成员状态由 Membership Interval(默认260秒)维护。
  • 若超时未收到主机的报告,则删除该组记录。

4. IGMP报文格式(以IGMPv3为例)

  • 类型字段
  • 0x11:查询报文(General Query/Group-Specific Query)。
  • 0x22:报告报文(Membership Report)。
  • 0x17:离开报文(IGMPv2 Leave Group)。
  • 关键字段
  • 组地址(Group Address):查询或报告的目标组播地址。
  • 源地址列表(Source Address List)(仅IGMPv3):指定允许或拒绝的源IP列表。

5. 对比总结

5.1 IGMPv1、IGMPv2、IGMPv3 在处理主机加入的对比

  • IGMPv1 的加入机制是由路由器周期发送查询报文,主机接收到查询报文后,如果希望接收某组组播,则发送报告报文。路由器收到报告报文后,就会向该接口转发该组组播。
  • IGMPv2 的加入机制与 IGMPv1 一致,只是IGMPv2 的查询报文分为了普遍查询报文和指定组查询报文。加入机制中发送的是普遍查询报文,内容与IGMPv1 的查询报文一致。
  • IGMPV3 由于区分组播源,所以主机端也要维护一张组播信息表来记录本机对组播源的取舍。当路由器发送普遍查询报文后,主机会发送成员关系报告报文来上报本机组播信息表状态。路由器汇总收到的所有成员关系报告报文后,再产生相应的组播信息表。

5.2 IGMPv1、IGMPv2、IGMPv3 在处理主机离开的对比

  • IGMPv1 没有离开机制,主机默默离开
  • IGMPv2 的主机希望离开某组播组时,会发送 Leave 报文。路由器收到 leave 报文后会发送指定组查询报文,询问 Leave 报文希望离开的组。如果收到了 Report 报文,则不删除该组,如果没有收到,则删除该组。
  • IGMPv3 的主机离开分两种情况:
  • 离开某个组播源:主机不再希望接收某个组播源的组播,则发送 Report 报文,携带信息Block(组播源地址)。路由器收到后会发送指定组查询报文,询问该组播组和该组播源。如果收到了 Report 报文,则不删除该组播源;如果没有收到,则删除该组播源。
  • 离开某个组播组:主机不再希望接收某个组播组的组播,则发送 Report 报文,携带信息NULL。路由器收到后会发送指定组查询报文,询问该组播组。如果收到了 Report 报文,则不删除该组播组记录;如果没有收到,则删除该组播组记录。

5.3 IGMPv1、IGMPv2、IGMPv3 在成员报告抑制机制上的对比

  • IGMPv1 主机的报告报文以组播发送,其他主机也能收到该报文。主机收到报告报文后,启动计时器,计时器时间内,如果本机也希望接收该组组播,不再发送报告报文。
  • IGMPv2 的成员报告抑制机制与 IGMPv1 一致。
  • IGMPv3取消成员报告抑制机制。由于IGMPV3 每台主机还自行维护组播信息表,考虑到不同主机对组播源取舍情况相同的几率较低,所以取消该机制。

5.4 IGMPv1、IGMPv2、IGMPv3 在选举查询器上的对比

  • 查询器是为了防止组播被重复处理,一个网段中要选出的唯一组播转发者。
  • IGMPv1 无法选举查询器,需要依靠上层组播路由协议来选举。
  • IGMPv2 与 IGMPv3 可以自行选举查询器,IP地址小的优先。
  • PIM 协议的 DM 模式下,如果路由器运行了 IGMPv1、则 PIM 会进行查询器选举,IGMPv2 和IGMPv3 则不选举。
  • PIM 协议的 SM 模式下,无论路由器运行了什么版本的 IGMP,都由 PIM 来选举查询器。

6. 基本配置

# 思科设备配置
ip igmp version ? //启用igmp版本(默认为IGMPv2)

# 华为、华三设备配置
igmp enable          //需要手动开启
igmp version ?       //默认为v2
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号