一个主机可以属于多个组播组_IGMPv1:“有谁想要加入组播组吗”,想要就需要回应...

在一个subnet上,当没有主机想要接收组播流量时,路由器就应该停止发送组播流量,否则就是浪费带宽。

那路由器如何知道有没有主机想要接收组播流量呢?它是通过周期性发送普通组查询来实现,如果有主机还想要获取组播流量,就需要发送report报文来回应。这种机制有一种专门名称,叫做:query-response。

周期性发送普通组查询的路由器被称为IGMP查询器(querier)。默认情况下,每隔60秒,它就会在local subnet上发送一次普通组查询,询问这个subnet上的所有主机: 有谁想要加入组播组吗? 如果有主机回复report,就表示仍然有主机想要接收组播报文。

605bdd5584bbf8f6bb655200bfe0d4d6.png

IGMPv1 查询器如何给这个subnet上的所有主机发送查询呢,它是怎么做到的?原因是这个主机发送查询报文的目的地址是224.0.0.1,这个地址就表示 all-host-multicast group。所有具有组播功能的主机(包括路由器),接收到这个报文以后,不能丢弃,都要处理。

59bf837596d2ff0d3726326139c04e41.png

​IGMPv1查询器也是从一堆路由器中选取出来的,不是一成不变的,不过IGMPv1比较特殊,它协议本身并没有选取IGMP querier的机制,它依赖于上层协议。上层协议指的PIM, DVMRP等,我们最常用的就是PIM协议,也就是说IGMP querier是通过PIM协议选取出来的。

下面以一个例子来阐述IGMP的query-response机制


IGMPv1查询器,周期性发送普通组查询

90ea84af9940decec0c75ad9d99d7665.png

三个主机收到普通组查询以后,假如主机3想要接收225.1.1.1这个组播组的流量,就需要发送report报文,目的地址为224.0.0.1,让这个subnet上的所有主机(包括路由器)都能接收到。

47de786869e38cd4979a2888e65cf551.png

这里面还有一个组播抑制功能,假设这个subnet上的的所有主机都需要接收组播报文,在收到普通组查询以后,是不是都要回复report呢?

答案是不需要的,假设已经有一个主机回复report了,其它主机收到report以后,就不会在发了,这样可以减少网络中的流量

0c84e57e8407cbb5ac1ad7371e222ea5.png

各位对query-response机制了解了吗?如果有疑问,欢迎留言讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值