组播 IGMP详解

组播地址:224.0.0.0 240.255.255.255

组播地址作用:1,标识某一个组播应用/组播业务

2,代表接收这种组播业务的所有主机

组播IP报文的DIP由组播业务/组播应用事先确定

SIP就是发送该组播报文的主机IP

224.0.0.1:所有主机包括路由器

224.0.0.2:所有组播路由器

组播IP与组播MAC映射:

1,组播IP有5个bit在组播MAC地址中无法映射,导致32个组播IP共享一个组播MAC的问题

2,避免组播地址冲突,规划时应保证最后23bit不冲突即可

组播IP分类:

ASM:任意源组播地址

仅通过组地址来区分不同的组播业务,即不同的组播业务得分配不同的组播地址,组播地址利用率不高。

客户端无需维护组播的信息,客户端开发难度低

SSM:指定组播地址

如果客户端可以选择加入的组地址,也可以选择加入的源地址,则部署SSM模型

特点,不同的源可以使用相同的组地址提供不同的组播服务,提供组播地址利用率是客户端需要事先维护所有对应关系

01-00-5E-0 仅仅只是组播MAC地址中用来为IPv4组播地址做映射用的一段子集

IGMP协议运行在组播路由器和主机之间

作用:

主机侧,通告IGMP协议向路由器通告组成员关系

路由器侧,通告IGMP协议维护组成员关系

默认所有报文TTL值都为1

IGMPV1:

IGMPv1支持两种类型的报文:

@普遍组查询报文(General Query): 路由器周期性的向224.0.0.1地址发送通用组查询报文,默认60s发送一次普遍组查询

@成员关系报告报文(Membership Report): 用于主机加入某个组

如图所示,假设A要接收G1组数据,B要接收组G2数据,响应过程如下:

路由器A发送普遍组查询报文

网段内所有主机接收该查询报文,在本地启动定时器Timer-G1,B是组G2成员,在本地启动定时器Timer-G3,定时器范围是0~10s的随机值

响应抑制机制 :定时器先超时的主机向路由器A发送成员报告报文目的地址G1,同组的B接收到同组的A的成员报文报文后停止计时器,

不发送成员报告报文,

当有新PC进入需要加组时,不等待普遍组查询报文,直接发送成员报告报文

当有主机离组时,静默离开,超时130s停止发送组播流量

IGMPv1缺点:

问题一:当有PC需要离开组时,静默离开,60s+60s超时时间+10s最大等待时间,被动等待130s才停止流量下发

问题二:当同一网段有多台路由器,路由器会不知道谁是查询器。需要运行PIM协议在路由器之间发送hello包选举DR来充当IGMPv1的查询器,2

只有一台路由器时也需要运行PIM协议

问题三:路由器不能控制组成员响应时间

IGMPv2:

对于IGMPv1改进:

1,基本原理与IGMPv1相同

2,增加离组报文,当组成员离开,会主动发送离组报文,目的IP为224.0.0.2

路由器收到离组报文,有两种反馈机制

1,检查离组报文的源地址是否是last reporter地址,如果是则发送特定组查询报文

2,检查离组报文的源地址是否是last reporter地址,如果不是则不发送特定组查询报文

IGMPv2拥有独立的查询器选举机制,接口IP地址小的成为查询器

所有IGMPv2路由器初始状态下都认为自己是查询器,向本网段所有主机和路由器发送普遍组查询报文,其他路由器收到后将源IP与自己的接口IP对比。

所有非查询器上都会启用一个定时器(默认为125s),如果在该定时器超时前收到了来自查询器的查询报文,则重置该定时器,

否则就认为原查询器失效并发起新的查询器选举

报文格式:

IGMPv3的客户端是针对ASM组播模型开发的协议,成员可以对组播源进行选择,并且也支持ASM模型,但实际应用较少,因为客户端维护难度较大

没有成员报告机制

IGMPv3与IGMPv2变化:

IGMP snooping :

原因 :组播数据在二层会被泛洪转发,造成网络资源浪费。

在交换机上 IGMP监听

工作机制:查询响应仅向路由器接口转发

交换机通过IGMP监听,生成一张组播转发表,包含三个信息

G地址/组播MAC地址 VLAN 成员端口

1,交换机需要确认路由器接口(交换机连接组播路由器的接口)

@交换机收到PIM协议的报文或者收到IGMP的查询报文的接口就认为是路由器端口

@管理员手动配置路由器端口

2,交换机需要确定哪些端口存在哪些组成员,即成员端口

@监听成员发送的报告报文,报告报文中携带的组地址

@管理员手动配置

3,交换机在路由器接口收到普遍组查询报文后向其他所有端口泛洪

4,主机收到查询报文后,回复报告报文,交换机收到报告报文后向路由器端口转发,不会泛洪,并将该端口加入到相应的组播转发表

交换机要知道所有成员所属端口就必须让该组所有成员都发送报告,要屏蔽掉查询报文的抑制机制

5,主机发送离组报文,交换机收到离组报文并不会立即删除该成员接口,离组报文向路由器端口转发。

路由器收到离组报文,发送特定组查询报文,交换机向成员端口泛洪,如果该端口在2s内没有收到报告报文,则删除该成员端口

如果收到成员报告,重置成员端口的老化时间

IGMP配置:

全局下启用组播路由功能:

接口下开启igmp:

手动配置将路由器接口加入组播组命令:igmp static-group 239.1.1.100

IGMP SSM Maping

1,为IGMPv1主机和IGMPv2主机提供SSM服务

2,通过在路由器上静态配置SSM地址的映射规则,将IGMPv1和IGMPv2报告报文中的(*,G)信息转化为对应的(S,G)信息

配置了SSM Mapping规则后,当IGMP查询器收到来自成员主机的IGMPv1或IGMPv2报告报文时,

首先检查该报文中所携带的组播组地址G,然后根据检查结果的不同分别进行处理:

如果G在ASM(Any-Source Multicast)范围内,则只提供ASM服务(因为在公网中规定了ASM是运行任意组播源的)。

如果G在SSM组地址范围内(缺省情况下为232.0.0.0~232.255.255.255)。

• 如果路由器上没有G对应的SSM Mapping规则,则无法提供SSM服务,丢弃该报文。

• 如果路由器上有G对应的SSM Mapping规则,则依据规则将报告报文中所包含的(*, G)信息映射为(G, INCLUDE, (S1, S2…))信息,提供SSM服务。

配置:

igmp ssm-mapping enable

然后在igmp模式下配置ssm-mapping

igmp

ssm-mapping 232.0.0.0 255.255.255.0 172.16.1.1 //将232.0.0.0/24范围内的组播地址转换为匹配到 172.16.1.1的源。

IGMP Proxy:

出现背景:现网中一台IGMP查询器需要管理大量组成员的情况

代理设备将成员关系报告/离开报文汇聚后统一上送给IGMP查询器

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路明非z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值