IGMP的基础

IGMP

IGMP:因特网组管理协议

  • IGMP:运行在最后一跳组播路由和组播组成员之间,用于最后一跳路由器维护组成员关系,用于接收者请求加入想要加入的组播组,或者离开想要离开的组播组

  • 组播网络感知组播组成员的方式:

    1. 手工静态配置:
      • 在接口视图下配置:
      • 工作量大,灵活性差,但是稳定,一旦创建,永不老化
    2. 动态感知:运行IGMP协议
      • 灵活性高,配置简单(常用)
  • IGMP:封装在IP之上,协议号2

    • 最后一跳组播路由器与组播组成员之间通过交互IGMP报文,生成IGMP组表项和IGMP路由表项

      • IGMP组表项

        • 用于记录和维护组成员和组播关系,由组成员发送成员关系报告报文触发创建,表项老化时间130s
      • IGMP路由表项

        • 用来扩展组播路由表项的下游接口
      • 组播路由表项

        • 最后一跳路由器的组播路由基于IGMP组表项和IGMP路由表项的信息生成,用于指导组播流量转发
      • 查询表项的命令

        • dis igmp group---------查看IGMP组表项
          dis igmp routing-------查看IGMP路由表项
          dis multi rou--------查看组播路由表项
          

IGMP版本

IGMPv1

  • 只有两种报文类型

    1. 普遍组查询报文
      • 目的IP地址为224.0.0.1(所有节点)都接收
      • 由查询器(最后一跳)周期发送(60s一次)
        • 用于检查是否存在组成员和维护组成员关系(IGMP组表项)
    2. 成员关系报告报文(report):
      • 目的IP地址为想要加入的或者所处的组播组地址
      • 当PC想要加入某个组播组时,主动组播发送report报文,请求加入该组播组;
      • 当PC接收到不变的查询报文,回复report报文

    查询器:负责发送普遍组查询报文

    • IGMPv1不支持查询器的选举,有其他组播路由协议选举的DR成为查询器
  • 报文参数:两种报文的格式一致

    1. version:4bit,版本号,此处为1
    2. type:报文的类型
      • 0x11:普遍组查询报文
      • 0x12:成员关系报告报文
    3. unsed:8bit,保留字段
    4. checksum:2B,校验和
    5. group address:4B,组地址
      • 在qurey(查询报文)中为0.0.0.0
      • 在report报文中为想要加入的组播组地址
  • 响应抑制机制:

    • 作用:减少重复协议报文泛滥,减轻查询器的负担
    • 工作机制
      • 当组播组成员接收到query报文时,启动最大响应时间计时器,时间为0~10s之间的随机值,如果该组存在其他多个组成员,计时器先超时的先发送report报文,该组中其他组成员接收到该report报文,关闭计时器,不在发送report报文
        • last-reporter:最后一个通告者,谁先发送report谁就是last report
  • 缺陷:最大响应时间不能修改,颗粒度太大

  • 静默离开

    • 接收者离开组播组,不发送任何报文通知查询器,当接收到查询器发送的query报文时,也不会响应,当查询器在130s后还没有接收到该组的report报文,则认为该组播组不存在组成员,则将对应的组播组从表项中删除
  • 总结

    • IGMPv1的缺陷:
      1. 没有查询器的选举机制,需要依赖其他组播路由协议选举
      2. 最大响应时间10s,不能修改,颗粒度太大
      3. 静默离开在130s内查询器还会不断向该接口发送组播流量,从而造成资源浪费

IGMPv2

  • IGMPv2兼容IGMPv1
  • IGMPv2对IGMPv1的改进
    1. 成员离组的改进
      • 当IGMPv2的主机想要离开某个组播组时,直接发送离组报文(leave),目的IP地址为224.0.0.2,leave报文中携带组播组地址为想要离开的组播组地址
      • 当查询器接收到leave报文后:
        • 如果该报文时last reporter发送的,则发送2个特定组查询报文,时间间隔缺省为1s,目的IP地址为接收者想要离开的组播组地址
        • 如果不是last reporter发送的,则不处罚特定组查询报文,不清除IGMP组表项
      • 新增了两种报文
        1. leave报文:离组报文,组成员朝查询器发送离组报文
        2. 特定组查询报文::查询器朝组成员发送的,目的地址为组成员想要离开的组播组地址
      • 组表项老化方式:
        1. 130s内没有接收到report报文,则自动老化
        2. last reporter发送leave报文,触发特定组查询报文,2s后清除IGMP表项
    2. 报文参数的变化
      • 去掉了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报文中,为想要离开的组播组地址
    3. 查询器的选举机制的改进
      • 作用:为了避免网络中重复的组播流量的发送,建立和维护IGMP组表项,转发组播流
      • IGMPv2依靠自身支持选举查询器:
        • 当多路访问网络中存在多个网关设备时,初期都认为主机是查询器,互相发送普遍组查询报文(224.0.0.1),当设备接收到其他路由器发送的查询报文后,开始查询器的选举,IP地址小的成为查询器,后续该网络中的组播流量以及查询报文都由查询器负责转发
    4. IGMPv2的不足:在IGMPv1与IGMPv2报文中无法携带组播源信息,无法支持SSM模型

IGMPv3

  • IGMPv3可以兼容IGMPv1和IGMPv2

  • 与IGMPv2比较:

    1. 查询器选举机制一致
    2. 查询报文分为三种
      1. 普遍组查询报文:与V1、v2作用一样
      2. 特定组查询报文:与V2作用一样
      3. 特定源组查询报文:新增的报文,查询该组成员是否愿意接受特定源发送的组播流量
    3. 没有报告响应抑制
      • 因为加入同一个组播组的组成员可能期望接收的组播源不同
    4. 没有专门的离组报文,但是可以使用特殊的成员关系报告报文(6种)实现离组
      1. include
      2. exclude
      3. changge to include mode
      4. change to exclude mode
      5. allow new source
      6. block old source
  • IGMPv3的报文参数

    • 查询报文

      • type:IGMPv3的报文类型
        • 0x11:普遍组查询报文/特定组查询报文/特定源组查询报文
      • max response time:最大响应时间,默认10.0s
      • checksum:校验和
      • group address:
        • 普遍查询报文中,为0.0.0.0
        • 特定组查询报文中,为想要查询的组播组地址
        • 特定组和特定源组查询报文种,为想要查询的组播组地址
      • number of source:携带的组播源地址数量
      • source address:组播源地址
    • 成员关系报告报文

      • 作用:除了报告组播组和组成员的关系,还通告组成员希望接收的组播源地址

      • 目的IP地址为224.0.0.22

      • 通告组播源的模式

        1. include:表示接收指定组播源发送的组播流量
        2. exclude:表示拒绝接收指定组播源发送的组播流量
      • 报文参数:

        • type:0x22,IGMPv3成员关系报告报文

        • 保留字段

        • checksum:头部校验和

        • number of group record:组记录的数量

        • group record(n):组记录列表,记录组播组和组播源的关系

          • 组记录的参数

            1. record type:

              ​ 当前状态报告

              1. mode is include:接收源地址列表中包含的组播源发往组播地址的组播数据,如果指定源地址列表为空,则该消息为无效消息

              2. mode is exclude:不接收源地址列表中包含的源发往组播地址的组播流量

                过滤模式改变报文

              3. change to include:

                • 模式由exclude切换到include,接收源地址列表种包含的新组播源发送到组播组地址的数据,如果指定地址列表为空,则认为主机离开该组
              4. change to exclude

                • 模式由include切换到exclude,拒绝接收源地址列表中组播源发往组的组播流量

                源列表改变

              5. allow new source

                • 表示在现有的基础上,需要接收某个源地址发送到该组播组的组播流量
                  • 如果当前关系为include,则向现有的源地址列表中添加该组播源地址
                  • 如果当前关系为exclude,则从现有的源地址列表中删除该组播源地址
              6. block old source

                • 表示在现有的基础上,不再接受从某个源地址发送到该组播组的组播流量
                  • 如果当前关系为include,则从现有的源地址列表中删除该组播源地址
                  • 如果当前关系为exclude,则从现有的源地址列表中添加该组播源地址
            2. number of source:组播源列表中源地址的数量

            3. group addess:加入的组播组地址

            4. source addess(n):跟组播组地址相关联的组播源地址列表

IGMP各版本之间的差异

  • 机制IGMPv1IGMPv2IGMPv3
    查询器选举依靠其他协议自己选举(选择IP地址小的)自己选举(选择IP地址小的)
    成员离开方式静默离开主动发送leave报文主动发送离开报文(特别的成员关系报告报文)
    特定组查询不支持支持支持
    特定源组查询不支持不支持支持
    兼容性IGMPv1IGMPv1和IGMPv2
  • 全局开启组播路由功能

    • mutilcast rou
  • 连接组播源的接口使能PIM SM

  • 连接组成员的接口 开启IGMP,再选择版本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值